diff options
Diffstat (limited to 'macros/luatex')
173 files changed, 41103 insertions, 20786 deletions
diff --git a/macros/luatex/generic/luaaddplot/README.md b/macros/luatex/generic/luaaddplot/README.md index ce4f4448e3..f89acae2ae 100644 --- a/macros/luatex/generic/luaaddplot/README.md +++ b/macros/luatex/generic/luaaddplot/README.md @@ -3,7 +3,7 @@ luaaddeplot Version ------- -1.0 +1.0a Author ------ diff --git a/macros/luatex/generic/luaaddplot/luaaddplot.dtx b/macros/luatex/generic/luaaddplot/luaaddplot.dtx index 7d3e4bf8c2..d6387dfbef 100644 --- a/macros/luatex/generic/luaaddplot/luaaddplot.dtx +++ b/macros/luatex/generic/luaaddplot/luaaddplot.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% $Id: luaaddplot.dtx 3 2022-03-19 23:12:51Z reinhard $ +% $Id: luaaddplot.dtx 6 2024-09-22 00:02:45Z reinhard $ % %<*driver> \documentclass[a4paper,11pt]{ltxdoc} @@ -17,6 +17,7 @@ \author{Reinhard Kotucha} \title{\textsf{luaaddplot}} +\date{Version 1.0a\\[.5ex]\today} \begin{document} \maketitle \vspace*{1cm} @@ -70,8 +71,8 @@ ignored. Different devices use different column delimiters. Therefore tabs, colons, semicolons, and commas are replaced by a space. With other -words, various datafile formats are converted to a format specified by -\textsc{Matlab}. +words, various datafile formats are converted to a to a \textsc{Matlab} +compatible format. \subsection{\texorpdfstring{$\lambda$}{lambda}-Expressions} @@ -118,7 +119,7 @@ Frequencies are in \si{\hertz} but for the plot we prefer \si{\mega\hertz}. The solution is \begin{verbatim} \luaaddplot[blue] file "spectrum.data", function (col) - return col[1]/1e6, col2 + return col[1]/1e6, col[2] end; \end{verbatim} @@ -203,7 +204,7 @@ The solution is % \end{macrocode} % \subsection{luaaddplot.sty} % \begin{macrocode} -%<*sty> \ProvidesPackage{luaaddplot}[2022/03/18/ v1.0] +%<*sty> \ProvidesPackage{luaaddplot}[2024/09/22 v1.0a] \input luaaddplot.tex %</sty> % \end{macrocode} diff --git a/macros/luatex/generic/luaaddplot/luaaddplot.pdf b/macros/luatex/generic/luaaddplot/luaaddplot.pdf Binary files differindex 875fac1157..732135e6d8 100644 --- a/macros/luatex/generic/luaaddplot/luaaddplot.pdf +++ b/macros/luatex/generic/luaaddplot/luaaddplot.pdf diff --git a/macros/luatex/generic/luakeys/luakeys-debug.sty b/macros/luatex/generic/luakeys/luakeys-debug.sty index 57e1bae7f8..c52171cbe8 100644 --- a/macros/luatex/generic/luakeys/luakeys-debug.sty +++ b/macros/luatex/generic/luakeys/luakeys-debug.sty @@ -17,6 +17,6 @@ % luakeys-debug.sty and luakeys-debug.tex. \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luakeys-debug}[2024/04/09 v0.14.0 Debug package for luakeys.] +\ProvidesPackage{luakeys-debug}[2024/09/29 v0.15.0 Debug package for luakeys.] \input luakeys-debug.tex diff --git a/macros/luatex/generic/luakeys/luakeys-doc.tex b/macros/luatex/generic/luakeys/luakeys-doc.tex index e14569b459..0d5bba1aad 100644 --- a/macros/luatex/generic/luakeys/luakeys-doc.tex +++ b/macros/luatex/generic/luakeys/luakeys-doc.tex @@ -64,7 +64,7 @@ The default value of the option “\texttt{#1}” is: \href{https://github.com/Josef-Friedrich/luakeys} {github.com/Josef-Friedrich/luakeys}% } -\date{v0.14.0 from 2024/04/09} +\date{v0.15.0 from 2024/09/29} \maketitle diff --git a/macros/luatex/generic/luakeys/luakeys.lua b/macros/luatex/generic/luakeys/luakeys.lua index 224c77ed72..b47d2d47f2 100644 --- a/macros/luatex/generic/luakeys/luakeys.lua +++ b/macros/luatex/generic/luakeys/luakeys.lua @@ -1621,6 +1621,8 @@ local function main() local picked_value = nil if is[pick_type](v) then picked_value = v + elseif pick_type == 'string' and is.number(v) then + picked_value = tostring(v) end if picked_value ~= nil then @@ -2061,7 +2063,7 @@ local function main() return { new = main, - version = { 0, 14, 0 }, + version = { 0, 15, 0 }, parse = parse, diff --git a/macros/luatex/generic/luakeys/luakeys.pdf b/macros/luatex/generic/luakeys/luakeys.pdf Binary files differindex 2ab59e561c..7f10f1f50d 100644 --- a/macros/luatex/generic/luakeys/luakeys.pdf +++ b/macros/luatex/generic/luakeys/luakeys.pdf diff --git a/macros/luatex/generic/luakeys/luakeys.sty b/macros/luatex/generic/luakeys/luakeys.sty index 6369cff49f..69a44f1261 100644 --- a/macros/luatex/generic/luakeys/luakeys.sty +++ b/macros/luatex/generic/luakeys/luakeys.sty @@ -17,7 +17,7 @@ % luakeys-debug.sty and luakeys-debug.tex. \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luakeys}[2024/04/09 v0.14.0 Parsing key-value options using Lua.] +\ProvidesPackage{luakeys}[2024/09/29 v0.15.0 Parsing key-value options using Lua.] \directlua{ if luakeys == nil then luakeys = require('luakeys')() diff --git a/macros/luatex/generic/luamplib/Makefile b/macros/luatex/generic/luamplib/Makefile index 87f04f727e..a0a2282675 100644 --- a/macros/luatex/generic/luamplib/Makefile +++ b/macros/luatex/generic/luamplib/Makefile @@ -40,6 +40,7 @@ world: all ctan %.pdf: %.dtx @$(DOLATEX) @if( grep rerunfilecheck $(NAME).log |grep 'has changed' > /dev/null ); then $(DOLATEX); fi + @if( grep 'Rerun to get' $(NAME).log > /dev/null ); then $(DOLATEX); fi $(UNPACKED): $(DTX) luatex -interaction=batchmode $< >/dev/null diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS index 81f07ac38f..f53e2b3602 100644 --- a/macros/luatex/generic/luamplib/NEWS +++ b/macros/luatex/generic/luamplib/NEWS @@ -1,5 +1,71 @@ History of the luamplib package +2024/11/12 2.35.0 + * even under \mplibtextextlabel{true}, the original 'infont' operator will + be used when the character slot of the text argument is less than 32, or is + equal to 35, 36, 37, 38, 92, 94, 95, 123, 125, 126 or 127. + + * \mplibforcehmode will have effects on \usemplibgroup as well as ordinary + metapost figures. + + * support tagged PDF when tagpdf package is activated. The related code is + currently in experimental stage. See the documentation for details. + +2024/08/03 2.34.5 + * provide 'withgroupbbox' macro for transparency group to enable users to + control the bounding box + + * write down the width/height/depth values of mplibgroup to the log file + +2024/07/31 2.34.4 + * 'withpattern' operator accepts a <textual picture> as well as a <path> + for its operand. Thus users can give pattern effect to the result of btex + command or infont operator. + + * fix regarding line width in mplibgraphictext + +2024/07/27 2.34.3 + * in DVI mode, use LaTeX's shipout hooks to generate new XObjects + or to put resources to pageresources. (in plain, load atbegshi.sty) + + * fix shading to allow the even-odd rule + +2024/07/24 2.34.2 + * With the newly introduced macros, \mplibgroup ... \endmplibgroup, users + can define a transparency group or a normal form XObject from TeX side. + The LaTeX environment 'mplibgroup' is identical to this pair of macros. + See the document for details. + + * document: be more precise about the color effect of a transparency group + + * remove trailing zeros from numeric objects to get smaller PDF + +2024/07/19 2.34.1 + * transparency group is available with plain format as well. + * transparency group once used is reusable in the TeX code or + in other MetaPost code chunks. see the document for details. + +2024/07/17 2.34.0 + * support transparency group with metafun format + * fix regarding default value in circular fading mode + * fix regarging the scope of graphics state + +2024/07/14 2.33.1 + * refactor the manual, including some minor items undocumented so far + * improve fading routine to get possibly smaller pdf file + +2024/07/08 2.33.0 + * provide a new metapost operator 'withfademethod' and related macros, + which make the color of an object gradiently transparent. see luamplib + document for details. + + * fix spot-color shading routine to support user-defined colorspace + +2024/07/03 2.32.4 + * make the variable 'patterns' local + * 'math.randomseed' on plain TeX + * remove redundant code 'fullcircle scaled 0' + 2024/06/21 2.32.3 * 'coloured' is a synonym of the option 'colored' in pattern definition. diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx index fd6afd4e65..0510b15120 100644 --- a/macros/luatex/generic/luamplib/luamplib.dtx +++ b/macros/luatex/generic/luamplib/luamplib.dtx @@ -2,8 +2,8 @@ % % Copyright (C) 2008-2024 by Hans Hagen, Taco Hoekwater, Elie Roux, % Manuel Pégourié-Gonnard, Philipp Gesang and Kim Dohyun. -% Currently maintained by the LuaLaTeX development team. -% Support: <lualatex-dev@tug.org> +% Currently maintained by Kim Dohyun. +% Support: <https://github.com/lualatex/luamplib> % % This work is under the GPL v2.0 license. % @@ -85,9 +85,9 @@ See source file '\inFileName' for licencing and contact information. %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{luamplib.drv}% - [2024/06/21 v2.32.3 Interface for using the mplib library]% + [2024/11/12 v2.35.0 Interface for using the mplib library]% \documentclass{ltxdoc} -\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace} +\usepackage{metalogo,multicol,xspace} \usepackage[x11names]{xcolor} % \def\primarycolor{DodgerBlue4} %%-> rgb 16 78 139 | #104e8b @@ -114,7 +114,7 @@ See source file '\inFileName' for licencing and contact information. ]{Linux Libertine O} \setmonofont[Scale=MatchLowercase]{InconsolataN} %setsansfont[Ligatures=TeX]{Linux Biolinum O} -\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{Iwona Medium} +\setsansfont[UprightFont=*Medium,BoldFont=*Heavy,Ligatures=TeX,Scale=MatchLowercase]{Iwona} %setmathfont{XITS Math} \usepackage{hologo} @@ -123,7 +123,9 @@ See source file '\inFileName' for licencing and contact information. \newcommand*\email [1] {<\href{mailto:#1}{#1}>} \newcommand \file {\nolinkurl} -\newcommand \pk {\textsf} + +\newcommand*\metapost {\textsc{metapost}\xspace} +\newcommand*\mplib {\pkg{mplib}\xspace} \begin{document} \DocInput{luamplib.dtx}% @@ -149,125 +151,164 @@ See source file '\inFileName' for licencing and contact information. % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % -% \title{The \textsf{luamplib} package} +% \title{The \pkg{luamplib} package} % \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\ -% Maintainer: LuaLaTeX Maintainers --- -% Support: \email{lualatex-dev@tug.org}} -% \date{2024/06/21 v2.32.3} +% Current Maintainer: Kim Dohyun\\ +% Support: \url{https://github.com/lualatex/luamplib}} +% \date{2024/11/12 v2.35.0} % % \maketitle % % \begin{abstract} -% Package to have metapost code typeset directly in a document with \LuaTeX. +% Package to have \metapost code typeset directly in a document with \LuaTeX. % \end{abstract} % % \section{Documentation} % -% This packages aims at providing a simple way to typeset directly metapost -% code in a document with \LuaTeX. \LuaTeX\ is built with the lua -% \texttt{mplib} library, that runs metapost code. This package is basically a -% wrapper (in Lua) for the Lua \texttt{mplib} functions and some \TeX\ -% functions to have the output of the \texttt{mplib} functions in the pdf. -% -% In the past, -% the package required PDF mode in order to output something. -% Starting with version 2.7 it works in DVI mode as well, though -% DVIPDFMx is the only DVI tool currently supported. -% -% The metapost figures are put in a \TeX\ \texttt{hbox} with dimensions -% adjusted to the metapost code. +% This package aims at providing a simple way to typeset directly \metapost +% code in a document with \LuaTeX. \LuaTeX\ is built with the Lua +% \mplib library, that runs \metapost code. This package is basically a +% wrapper for the Lua \mplib functions and some \TeX\ +% functions to have the output of the \mplib functions in the pdf. % -% Using this package is easy: in Plain, type your metapost code between the +% Using this package is easy: in Plain, type your \metapost code between the % macros \cs{mplibcode} and \cs{endmplibcode}, and in \LaTeX\ in the -% \texttt{mplibcode} environment. +% |mplibcode| environment. % -% The code is from the \texttt{luatex-mplib.lua} and \texttt{luatex-mplib.tex} files -% from \ConTeXt, they have been adapted to \LaTeX\ and Plain by Elie Roux and -% Philipp Gesang, new functionalities have been added by Kim Dohyun. -% The changes are: +% The resulting \metapost figures are put in a \TeX\ |hbox| with dimensions +% adjusted to the \metapost code. +% +% The code of luamplib is basically from the |luatex-mplib.lua| and |luatex-mplib.tex| files +% from \ConTeXt. They have been adapted to \LaTeX\ and Plain by Elie Roux and +% Philipp Gesang and new functionalities have been added by Kim Dohyun. +% The most notable changes are: % % \begin{itemize} -% \item a \LaTeX\ environment -% \item all \TeX\ macros start by |mplib| -% \item use of our own function for errors, warnings and informations % \item possibility to use |btex ... etex| to typeset \TeX\ code. -% |textext()| is a more versatile macro equivalent to |TEX()| from TEX.mp. -% |TEX()| is also allowed and is a synomym of |textext()|.\par\smallskip -% \textsc{n.b.} Since v2.5, |btex ... etex| input from external |mp| files -% will also be processed by \textsf{luamplib}.\par\smallskip -% \textsc{n.b.} Since v2.20, |verbatimtex ... etex| from external |mp| files -% will be also processed by \textsf{luamplib}. Warning: This is a change -% from previous version. +% |textext()| is a more versatile macro equivalent to |TEX()| from \pkg{TEX.mp}. +% |TEX()| is also allowed and is a synonym of |textext()|. +% The argument of +% \mplib's primitive |maketext| will also be processed by the same routine. +% +% \item possibility to use |verbatimtex ... etex|, though it's behavior cannot +% be the same as the stand-alone \pkg{mpost}. +% Of course you cannot include \cs{documentclass}, \cs{usepackage} etc. +% When these \TeX\ commands are found in |verbatimtex ... etex|, the entire code will be +% ignored. +% The treatment of |verbatimtex| command has changed a lot since v2.20: +% see \hyperlink{mpliblegacybehavior}{below \S\,1.1}. +% +% \item in the past, +% the package required PDF mode in order to have some output. +% Starting with version 2.7 it works in DVI mode as well, though +% DVIPDFMx is the only DVI tool currently supported. % \end{itemize} % -% Some more changes and cautions are: +% It seems to be convenient to divide the explanations of some more changes and cautions +% into three parts: \TeX, \textsc{MetaPost}, and Lua interfaces. +% +% \subsection{\TeX} % % \paragraph{\cs{mplibforcehmode}} -% When this macro is declared, every mplibcode figure box will be +% When this macro is declared, every \metapost figure box will be % typeset in horizontal mode, so \cs{centering}, \cs{raggedleft} etc -% will have effects. |\mplibnoforcehmode|, being default, reverts this -% setting. (Actually these commands redefine |\prependtomplibbox|. You -% can define this command with anything suitable before a box.) +% will have effects. \cs{mplibnoforcehmode}, being default, reverts this +% setting. (Actually these commands redefine \cs{prependtomplibbox}; you +% can redefine this command with anything suitable before a box.) % -% \paragraph{\cs{mpfig} \ldots\ \cs{endmpfig}} -% Since v2.29 we provide unexpandable \TeX\ macros |\mpfig ... \endmpfig| and its starred version -% |\mpfig* ... \endmpfig| to save typing toil. -% The first is roughly the same as follows: -% \begin{verbatim} -% \begin{mplibcode}[@mpfig] -% beginfig(0) -% token list declared by \everymplib[@mpfig] -% ... -% token list declared by \everyendmplib[@mpfig] -% endfig; -% \end{mplibcode} -% \end{verbatim} -% and the starred version is roughly the same as follows: -% \begin{verbatim} -% \begin{mplibcode}[@mpfig] -% ... +% \paragraph{\cs{everymplib\{...\}}, \cs{everyendmplib\{...\}}} +% \cs{everymplib} and \cs{everyendmplib} redefine +% the lua table containing \metapost code +% which will +% be automatically inserted at the beginning and ending of each \metapost code chunk. +%\begin{verbatim} +% \everymplib{ beginfig(0); } +% \everyendmplib{ endfig; } +% \begin{mplibcode} +% % beginfig/endfig not needed +% draw fullcircle scaled 1cm; % \end{mplibcode} -% \end{verbatim} -% In these macros |\mpliblegacybehavior{disable}| (see below) -% is forcibly declared. -% And as both share the same instance name, metapost codes are inherited among them. -% A simple example: -% \begin{verbatim} -% \mpfig* input boxes \endmpfig -% \everymplib[@mpfig]{ drawoptions(withcolor .5[red,white]); } -% \mpfig circleit.a(btex Box 1 etex); drawboxed(a); \endmpfig -% \end{verbatim} -% The instance name (default: |@mpfig|) can be changed by redefining -% \cs{mpfiginstancename}, after which a new MPlib instance will start and -% code inheritance too will begin anew. |\let\mpfiginstancename\empty| will -% prevent code inheritance if |\mplibcodeinherit{true}| (see below) is not declared.\footnote{% -% As for user setting values, |enable|, |true|, |yes| are identical, and -% |disable|, |false|, |no| are identical.} -% -% \paragraph{\cs{mpliblegacybehavior\{enable\}}} -% By default, |\mpliblegacybehavior{enable}| is already declared, -% in which case -% a |verbatimtex ... etex| that comes just before |beginfig()| -% is not ignored, but the \TeX\ code will be inserted before the -% following mplib hbox. Using this command, -% each mplib box can be freely moved horizontally and/or vertically. -% Also, a box number might be assigned to mplib box, allowing it to be -% reused later (see test files). -% \begin{verbatim} +%\end{verbatim} +% +% \paragraph{\cs{mplibsetformat\{plain\textbar metafun\}}} +% There are (basically) two formats for \metapost: \emph{plain} and +% \emph{metafun}. By default, the \emph{plain} format is used, but you can set +% the format to be used by future figures at any time using +% \cs{mplibsetformat\{<format name>\}}. +% +% \textsc{n.b.} As \emph{metafun} is such a complicated format, +% we cannot support all the functionalities producing special effects provided by \emph{metafun}. +% At least, however, transparency (actually opacity), shading (gradient colors) and transparency group +% are fully supported, +% and outlinetext is supported by our own alternative |mpliboutlinetext| +% (see \hyperlink{mpliboutlinetext}{below \S\,1.2}). +% +% \leavevmode\llap{\textcolor{red}{☞}\kern1.2\parindent}\relax +% Among these, transparency (|texdoc metafun| \S\,8.2) is so simple that you can apply it to an object, +% with \emph{plain} format as well, +% just by appending |withprescript| |"tr_transparency=|\hskip0pt\relax|<number>"| to the sentence. +% ($0 \le \hbox{\emph{<number>}} \le 1$) +% +% One thing worth mentioning about shading (|texdoc metafun| \S\,8.3) is: +% when a color expression is given in string type, +% it is regarded by luamplib as +% a color expression of \TeX\ side. +% For instance, when |withshadecolors("orange", 2/3red)| is given, the first color |"orange"| will be +% interpreted as a \pkg{color}, \pkg{xcolor} or \pkg{l3color}'s expression. +% +% \hypertarget{metafunformat}{}\relax +% As for transparency group, the current \emph{metafun} document \S\,8.8 is not correct. +% The true syntax is: +%\begin{verbatim} +% draw <picture>|<path> asgroup <string> +%\end{verbatim} +% where \emph{<string>} should be |""| (empty), |"isolated"|, |"knockout"|, or |"isolated,knockout"|. +% Beware that currently many of the PDF rendering applications, except Adobe Acrobat Reader, +% cannot properly render the isolated or knockout effect. +% Transparency group is available with \emph{plain} format as well, with extended functionality. +% See \hyperlink{transparencygroup}{below \S\,1.2}. +% +% \paragraph{\cs{mplibnumbersystem\{scaled\textbar double\textbar decimal\}}} +% Users can choose |numbersystem| option. +% The default value is |scaled|, which can be changed +% by declaring \cs{mplibnumbersystem\{double\}} or +% \cs{mplibnumbersystem\{decimal\}}. +% +% \paragraph{\cs{mplibshowlog\{enable\textbar disable\}}} +% Default: |disable|. +% When \cs{mplibshowlog\{enable\}}\footnote{As for user's setting, +% |enable|, |true| and |yes| are identical; +% |disable|, |false| and |no| are identical.} is declared, log messages returned by +% the \metapost process will be printed to the |.log| file. +% This is the \TeX{} side interface for |luamplib.showlog|. +% +% \paragraph{\cs{mpliblegacybehavior\{enable\textbar disable\}}} +% \hypertarget{mpliblegacybehavior}{}\relax +% By default, \cs{mpliblegacybehavior\{enable\}} +% is already declared for backward compatibility, +% in which case \TeX\ code in +% |verbatimtex| |...| |etex| that comes just before |beginfig()| +% will be inserted before the +% following \metapost figure box. In this way, +% each figure box can be freely moved horizontally or vertically. +% Also, a box number can be assigned to a figure box, allowing it to be +% reused later. +%\begin{verbatim} % \mplibcode % verbatimtex \moveright 3cm etex; beginfig(0); ... endfig; % verbatimtex \leavevmode etex; beginfig(1); ... endfig; % verbatimtex \leavevmode\lower 1ex etex; beginfig(2); ... endfig; % verbatimtex \endgraf\moveright 1cm etex; beginfig(3); ... endfig; % \endmplibcode -% \end{verbatim} +%\end{verbatim} % \textsc{n.b.} \cs{endgraf} should be used instead of \cs{par} inside % |verbatimtex ... etex|. % -% By contrast, \TeX\ code in |VerbatimTeX(...)| or |verbatimtex ... etex| +% On the other hand, \TeX\ code in |verbatimtex ... etex| % between |beginfig()| and |endfig| will be inserted -% after flushing out the mplib figure. -% \begin{verbatim} +% after flushing out the \metapost figure. +% As shown in the example below, |VerbatimTeX()| is a synonym of |verbatimtex| |...| |etex|. +%\begin{verbatim} % \mplibcode % D := sqrt(2)**7; % beginfig(0); @@ -276,15 +317,15 @@ See source file '\inFileName' for licencing and contact information. % endfig; % \endmplibcode % diameter: \Dia bp. -% \end{verbatim} +%\end{verbatim} % -% \paragraph{\cs{mpliblegacybehavior\{disable\}}} -% If |\mpliblegacybehavior{disabled}| is declared by user, any -% |verbatimtex ... etex| will be executed, along with |btex ... etex|, +% By contrast, +% when \cs{mpliblegacybehavior\{disable\}} is declared, any +% |verbatimtex| |...| |etex| will be executed, along with |btex| |...| |etex|, % sequentially one by one. % So, some \TeX\ code in |verbatimtex ... etex| will have effects on -% |btex ... etex| codes that follows. -% \begin{verbatim} +% following |btex| |...| |etex| codes. +%\begin{verbatim} % \begin{mplibcode} % beginfig(0); % draw btex ABC etex; @@ -293,114 +334,80 @@ See source file '\inFileName' for licencing and contact information. % draw btex GHI etex shifted (2cm,0); % bold face % endfig; % \end{mplibcode} -% \end{verbatim} -% -% \paragraph{\cs{everymplib}, \cs{everyendmplib}} -% Since v2.3, new macros \cs{everymplib} and \cs{everyendmplib} redefine -% the lua table containing MetaPost code -% which will -% be automatically inserted at the beginning and ending of each |mplibcode|. -% \begin{verbatim} -% \everymplib{ beginfig(0); } -% \everyendmplib{ endfig; } -% \mplibcode % beginfig/endfig not needed -% draw fullcircle scaled 1cm; -% \endmplibcode -% \end{verbatim} -% -% \paragraph{\cs{mpdim}} -% Since v2.3, \cs{mpdim} and other raw \TeX\ commands are allowed -% inside mplib code. This feature is inpired by gmp.sty authored by -% Enrico Gregorio. Please refer the manual of gmp package for details. -% \begin{verbatim} -% \begin{mplibcode} -% draw origin--(.6\mpdim{\linewidth},0) withpen pencircle scaled 4 -% dashed evenly scaled 4 withcolor \mpcolor{orange}; -% \end{mplibcode} -% \end{verbatim} -% \textsc{n.b.} Users should not use the protected variant of -% |btex ... etex| as provided by gmp package. As \textsf{luamplib} -% automatically protects \TeX\ code inbetween, \cs{btex} is not supported -% here. -% -% \paragraph{\cs{mpcolor}} -% With \cs{mpcolor} command, color names or expressions of -% \textsf{color}/\textsf{xcolor} packages can be used inside mplibcode -% enviroment (after |withcolor| operator), -% though \textsf{luamplib} does not automatically load these -% packages. See the example code above. For spot colors, -% \textsf{colorspace}, \textsf{spotcolor} -% (in PDF mode) and \textsf{xespotcolor} (in DVI mode) packages are supported -% as well. -% -% From v2.26.1, \textsf{l3color} is also supported by the command -% \cs{mpcolor\{color expression\}}, including spot colors. -% -% \paragraph{\cs{mplibnumbersystem}} -% Users can choose |numbersystem| option since v2.4. -% The default value |scaled| can be changed to |double| or |decimal| -% by declaring |\mplibnumbersystem{double}| or |\mplibnumbersystem{decimal}|. -% For details see -% \url{http://github.com/lualatex/luamplib/issues/21}. +%\end{verbatim} % -% \paragraph{\cs{mplibtextextlabel}} -% Starting with v2.6, |\mplibtextextlabel{enable}| enables -% string labels typeset via |textext()| instead of |infont| operator. +% \paragraph{\cs{mplibtextextlabel\{enable\textbar disable\}}} +% Default: |disable|. +% \cs{mplibtextextlabel\{enable\}} enables +% the labels typeset via |textext| instead of |infont| operator. % So, |label("my text",origin)| thereafter is exactly the same as -% |label(textext("my text"),origin)|. \textsc{n.b.} In the background, -% \textsf{luamplib} redefines |infont| operator so that the right side -% argument (the font part) is totally ignored. Every string label -% therefore will be typeset with current \TeX\ font. -% Also take care of |char| operator in the left side argument, +% |label(textext("my text"),origin)|. +% +% \textsc{n.b.} In the background, +% luamplib redefines |infont| operator so that the right side +% argument (the font part) is totally ignored. Therefore the left side arguemnt (the text part) +% will be typeset with the current \TeX\ font. +% +% From v2.35, however, the redefinition of |infont| operator has been revised: +% when the character slot of the text argument is less than $32$~(control characters), +% or is equal to $35$~(|#|), $36$~(|$|), \iffalse |$|\fi +% $37$~(|%|), $38$~(|&|), $92$~(|\|), $94$~(|^|), +% $95$~(|_|), $123$~(|{|), $125$~(|}|), $126$~(|~|) or $127$~(DEL), +% the original |infont| operator will be used instead of |textext| operator +% so that the font part will be honored. +% Despite the revision, please take care of |char| operator in the text argument, % as this might bring unpermitted characters into \TeX. % -% \paragraph{\cs{mplibcodeinherit}} -% Starting with v2.9, |\mplibcodeinherit{enable}| enables the inheritance -% of variables, constants, and macros defined by previous |mplibcode| chunks. -% On the contrary, the default value |\mplibcodeinherit{disable}| will make -% each code chunks being treated as an independent instance, and never +% \paragraph{\cs{mplibcodeinherit\{enable\textbar disable\}}} +% Default: |disable|. +% \cs{mplibcodeinherit\{enable\}} enables the inheritance +% of variables, constants, and macros defined by previous \metapost code chunks. +% On the contrary, \cs{mplibcodeinherit\{disable\}} will make +% each code chunk being treated as an independent instance, never % affected by previous code chunks. % -% \paragraph{Separate instances for \LaTeX{} and plain \TeX} -% v2.22 has added the support for several named MetaPost instances +% \paragraph{Separate \metapost instances} +% luamplib v2.22 has added the support for several named \metapost instances % in \LaTeX{} |mplibcode| environment. -% (And since v2.29 plain \TeX\ users can use this functionality as well.) -% Syntax is like so: -% \begin{verbatim} +% Plain \TeX\ users also can use this functionality. +% The syntax for \LaTeX\ is: +%\begin{verbatim} % \begin{mplibcode}[instanceName] % % some mp code % \end{mplibcode} -% \end{verbatim} -% Behaviour is as follows. +%\end{verbatim} +% The behavior is as follows. % \begin{itemize} % \item All the variables and functions are shared % only among all the environments belonging to the same instance. -% \item |\mplibcodeinherit| only affects environments +% \item \cs{mplibcodeinherit} only affects environments % with no instance name set (since if a name is set, % the code is intended to be reused at some point). -% \item From v2.27, |btex ... etex| boxes are also shared and do not -% require |\mplibglobaltextext|. +% \item |btex ... etex| boxes are also shared and do not +% require \cs{mplibglobaltextext}. % \item When an instance names is set, -% respective |\currentmpinstancename| is set. +% respective \cs{currentmpinstancename} is set as well. % \end{itemize} -% In parellel with this functionality, v2.23 and after supports +% In parellel with this functionality, we support % optional argument of instance name for \cs{everymplib} and % \cs{everyendmplib}, affecting only those |mplibcode| environments % of the same name. % Unnamed \cs{everymplib} affects not only those instances with no name, % but also those with name but with no corresponding \cs{everymplib}. -% Syntax is: -% \begin{verbatim} +% The syntax is: +%\begin{verbatim} % \everymplib[instanceName]{...} % \everyendmplib[instanceName]{...} -% \end{verbatim} +%\end{verbatim} % -% \paragraph{\cs{mplibglobaltextext}} -% Formerly, to inherit |btex ... etex| boxes as well as metapost variables, +% \paragraph{\cs{mplibglobaltextext\{enable\textbar disable\}}} +% Default: |disable|. +% Formerly, to inherit |btex| |...| |etex| boxes as well as other \metapost macros, variables and constants, % it was necessary to declare \cs{mplibglobaltextext\{enable\}} in advance. % But from v2.27, this is implicitly enabled when \cs{mplibcodeinherit} -% is |true|. -% \begin{verbatim} +% is enabled. +% This optional command still remains mostly for backward compatibility. +%\begin{verbatim} % \mplibcodeinherit{enable} % %\mplibglobaltextext{enable} % \everymplib{ beginfig(0);} \everyendmplib{ endfig;} @@ -412,38 +419,92 @@ See source file '\inFileName' for licencing and contact information. % \mplibcode % currentpicture := pic scaled 2; % \endmplibcode -% \end{verbatim} -% Generally speaking, it is recommended to turn |mplibglobaltextext| -% always on, because it has the advantage of reusing metapost pictures -% among code chunks. -% But everything has its downside: it will waste more memory resources. -% -% \paragraph{\cs{mplibverbatim}} -% Starting with v2.11, users can issue |\mplibverbatim{enable}|, after which +%\end{verbatim} +% +% \paragraph{\cs{mplibverbatim\{enable\textbar disable\}}} +% Default: |disable|. +% Users can issue \cs{mplibverbatim\{enable\}}, after which % the contents of mplibcode environment will be read verbatim. As a result, -% except for |\mpdim| and |\mpcolor|, all other \TeX\ commands outside -% |btex ... etex| or |verbatimtex ... etex| are not expanded and will be fed -% literally into the mplib process. +% except for \cs{mpdim} and \cs{mpcolor} (see \hyperlink{mpdim}{below}), +% all other \TeX\ commands outside of the +% |btex| or |verbatimtex| |...| |etex| are not expanded and will be fed +% literally to the \mplib library. +% +% \paragraph{\cs{mpdim\{...\}}} +% \hypertarget{mpdim}{}\relax +% Besides other \TeX\ commands, \cs{mpdim} is specially allowed +% in the mplibcode environment. This feature is inpired by \pkg{gmp} package authored by +% Enrico Gregorio. Please refer to the manual of \pkg{gmp} package for details. +%\begin{verbatim} +% \begin{mplibcode} +% beginfig(1) +% draw origin--(.6\mpdim{\linewidth},0) withpen pencircle scaled 4 +% dashed evenly scaled 4 withcolor \mpcolor{orange}; +% endfig; +% \end{mplibcode} +%\end{verbatim} % -% \paragraph{\cs{mplibshowlog}} -% When |\mplibshowlog{enable}| is declared, log messages returned by -% |mplib| instance will be printed into the |.log| file. -% |\mplibshowlog{disable}| will revert this functionality. -% This is a \TeX{} side interface for |luamplib.showlog|. (v2.20.8) +% \paragraph{\cs{mpcolor[...]\{...\}}} +% With \cs{mpcolor} command, color names or expressions of +% \pkg{color}, \pkg{xcolor} and \pkg{l3color} module/packages can be used in the mplibcode +% environment (after |withcolor| operator). +% See the example \hyperlink{mpdim}{above}. +% The optional |[...]| denotes the option of \pkg{xcolor}'s \cs{color} command. +% For spot colors, \pkg{l3color} (in PDF/DVI mode), +% \pkg{colorspace}, \pkg{spotcolor} +% (in PDF mode) and \pkg{xespotcolor} (in DVI mode) packages are supported +% as well. +% +% \paragraph{\cs{mpfig} \ldots\ \cs{endmpfig}} +% Besides the |mplibcode| environment (for \LaTeX) and +% \cs{mplibcode ...} \cs{endmplibcode} (for Plain), +% we also provide unexpandable \TeX\ macros \cs{mpfig} |...| \cs{endmpfig} and its starred version +% \cs{mpfig*} |...| \cs{endmpfig} to save typing toil. +% The former is roughly the same as follows: +%\begin{verbatim} +% \begin{mplibcode}[@mpfig] +% beginfig(0) +% token list declared by \everymplib[@mpfig] +% ... +% token list declared by \everyendmplib[@mpfig] +% endfig; +% \end{mplibcode} +%\end{verbatim} +% and the starred version is roughly the same as follows: +%\begin{verbatim} +% \begin{mplibcode}[@mpfig] +% ... +% \end{mplibcode} +%\end{verbatim} +% In these macros \cs{mpliblegacybehavior\{disable\}} +% is forcibly declared. +% Again, as both share the same instance name, \metapost codes are inherited among them. +% A simple example: +%\begin{verbatim} +% \everymplib[@mpfig]{ drawoptions(withcolor .5[red,white]); } +% \mpfig* input boxes \endmpfig +% \mpfig +% circleit.a(btex Box 1 etex); drawboxed(a); +% \endmpfig +%\end{verbatim} +% The instance name (default: |@mpfig|) can be changed by redefining +% \cs{mpfiginstancename}, after which a new \mplib instance will start and +% code inheritance too will begin anew. \cs{let}\cs{mpfiginstancename}\cs{empty} will +% prevent code inheritance if \cs{mplibcodeinherit\{true\}} is not declared. % % \paragraph{About cache files} -% To support |btex ... etex| in external |.mp| files, \textsf{luamplib} -% inspects the content of each and every |.mp| input files and makes caches -% if nececcsary, before returning their paths to \LuaTeX's mplib library. -% This would make the compilation time longer wastefully, as most |.mp| files -% do not contain |btex ... etex| command. So \textsf{luamplib} provides -% macros as follows, so that users can give instruction about files +% To support |btex ... etex| in external |.mp| files, luamplib +% inspects the content of each and every |.mp| file and makes caches +% if nececcsary, before returning their paths to \LuaTeX's \mplib library. +% This could waste the compilation time, as most |.mp| files +% do not contain |btex ... etex| commands. So luamplib provides +% macros as follows, so that users can give instructions about files % that do not require this functionality. % \begin{itemize} -% \item |\mplibmakenocache{<filename>[,<filename>,...]}| -% \item |\mplibcancelnocache{<filename>[,<filename>,...]}| +% \item \cs{mplibmakenocache\{<filename>[,<filename>,...]\}} +% \item \cs{mplibcancelnocache\{<filename>[,<filename>,...]\}} % \end{itemize} -% where |<filename>| is a file name excluding |.mp| extension. +% where |<filename>| is a filename excluding |.mp| extension. % Note that |.mp| files under |$TEXMFMAIN/metapost/base| and % |$TEXMFMAIN/metapost/context/base| are already registered by default. % @@ -451,64 +512,152 @@ See source file '\inFileName' for licencing and contact information. % if it's not available (mostly not writable), % in the directory where output files are saved: % to be specific, |$TEXMF_OUTPUT_DIRECTORY/luamplib_cache|, -% |./luamplib_cache|, |$TEXMFOUTPUT/luamplib_cache|, and |.| in this order. -% (|$TEXMF_OUTPUT_DIRECTORY| is normally the value of |--output-directory| -% command-line option.) -% This behavior however can be changed by the command -% |\mplibcachedir{<directory path>}|, where tilde (|~|) is interpreted +% |./luamplib_cache|, |$TEXMFOUTPUT/luamplib_cache|, and |.|, in this order. +% |$TEXMF_OUTPUT_DIRECTORY| is normally the value of |--output-directory| +% command-line option. +% +% Users can change this behavior by the command +% \cs{mplibcachedir\{<directory path>\}}, where tilde (|~|) is interpreted % as the user's home directory (on a windows machine as well). -% As backslashes (|\|) should be escaped by users, it would be easier to use +% As backslashes (\cs{}) should be escaped by users, it would be easier to use % slashes (|/|) instead. % -% \paragraph{\texttt{mplibtexcolor}, \texttt{mplibrgbtexcolor}} -% |mplibtexcolor| is a metapost operator that converts a \TeX\ color expression -% to a MetaPost color expression. For instance: -% \begin{verbatim} +% \paragraph{About figure box metric} +% Notice that, after each figure is processed, the macro \cs{MPwidth} stores +% the width value of the latest figure; \cs{MPheight}, the height value. +% Incidentally, also note that \cs{MPllx}, \cs{MPlly}, \cs{MPurx}, and +% \cs{MPury} store the bounding box information of the latest figure +% without the unit |bp|. +% +% \paragraph{luamplib.cfg} +% At the end of package loading, luamplib searches +% |luamplib.cfg| and, if found, reads the file in automatically. +% Frequently used settings such as \cs{everymplib}, \cs{mplibforcehmode} +% or \cs{mplibcodeinherit} are suitable for going into this file. +% +% \paragraph{Tagged PDF} +% When \pkg{tagpdf} package is loaded and activated, |mplibcode| environment accepts additional options for tagged PDF\@. +% The code related to this functionality is currently in experimental stage, not guaranteeing backward compatibility. +% Like the \LaTeX's |picture| environment, +% available optional keys are |tag|, |alt|, |actualtext|, |artifact|, |debug| and |correct-BBox| +% (|texdoc| |latex-lab-graphic|). +% Additionally, luamplib provides its own |text| key. +% \begin{description} +% \item[|tag=...|] You can choose a tag name, default value being |Figure|. +% BBox info will be added automatically to the PDF +% unless the value is |artifact|, |text|, or |false|. +% When the value is |false|, tagging is deactivated. +% \item[|debug|] draws bounding box of the figure for checking, which you can correct +% by |correct-BBox| key with space-separated four dimen values. +% \item[|alt=...|] sets an alternative text of the figure as given. +% This key is needed for ordinary \metapost figures. +% You can give alternative text within \metapost code as well: +% |verbatimtex| |\mplibalttext{...}| |etex;| +% \item[|artifact|] starts an |artifact| MC (marked content). +% BBox info will not be added. +% This key is intended for decorative figures which have no semantic quality. +% \item[|actualtext=...|] starts a |Span| tag implicitly and sets an actual text as given. +% Horizontal mode is forced by \cs{noindent} command. BBox info will not be added. +% This key is intended for figures which can be represented by a character or +% a small sequence of characters. +% You can give actual text within \metapost code as well: +% |verbatimtex| |\mplibactualtext{...}| |etex;| +% \item[|text|] starts an |artifact| MC and enables tagging on textext +% (the same as |btex| |...| |etex|) boxes. +% Horizontal mode is forced by \cs{noindent} command. BBox info will not be added. +% This key is intended for figures made mostly of textext boxes. +% Inside text-keyed figures, reusing textext boxes is strongly discouraged. +% \end{description} +% These keys are provided also for \cs{mpfig} and \cs{usemplibgroup} (see \hyperlink{usemplibgroup}{below}) commands. +%\begin{verbatim} +% \begin{mplibcode}[myInstanceName, alt=figure drawing a circle] +% ... +% \end{mplibcode} +% +% \mpfig[alt=figure drawing a square box] +% ... +% \endmpfig +% +% \usemplibgroup[alt=figure drawing a triangle]{...} +% +% \mppattern{...} % see below +% \mpfig[tag=false] % do not tag this figure +% ... +% \endmpfig +% \endmppattern +%\end{verbatim} +% As for the instance name of |mplibcode| environment, +% |instance=...| or |instancename=...| is also allowed +% in addition to the raw instance name as shown above. +% +% +% \subsection{\textsc{MetaPost}} +% +% \paragraph{\texttt{mplibdimen(...)}, \texttt{mplibcolor(...)}} +% These are \metapost interfaces for the \TeX\ commands +% \cs{mpdim} and \cs{mpcolor} (see \hyperlink{mpdim}{above}). For example, +% |mplibdimen("\linewidth")| is basically the same as \cs{mpdim\{\cs{linewidth}\}}, and +% |mplibcolor("red!50")| is basically the same as \cs{mpcolor\{red!50\}}. +% The difference is that these \metapost operators can also be used in external |.mp| files, +% which cannot have \TeX\ commands outside of the |btex| or |verbatimtex| |...| |etex|. +% +% \paragraph{\texttt{mplibtexcolor ...}, \texttt{mplibrgbtexcolor ...}} +% |mplibtexcolor|, which accepts a string argument, is a \metapost operator that converts a \TeX\ color expression +% to a \metapost color expression, that can be used anywhere color expression is expected +% as well as after the |withcolor| operator. +% For instance: +%\begin{verbatim} % color col; % col := mplibtexcolor "olive!50"; -% \end{verbatim} -% The result may vary in its color model (gray/rgb/cmyk) +%\end{verbatim} +% But the result may vary in its color model (gray/rgb/cmyk) % according to the given \TeX\ color. (Spot colors are forced to % cmyk model, so this operator is not recommended for spot colors.) -% Therefore the example shown above would raise a metapost error: +% Therefore the example shown above would raise a \metapost error: % |cmykcolor col;| should have been declared. -% By contrast, |mplibrgbtexcolor| always returns rgb model expressions. -% -% \paragraph{\texttt{mplibgraphictext}} -% For some amusement, luamplib provides its own metapost operator -% |mplibgraphictext|, the effect of which is similar to that of -% \ConTeXt's |graphictext|. However syntax is somewhat different. -% \begin{verbatim} +% By contrast, |mplibrgbtexcolor| \emph{<string>} always returns rgb model expressions. +% +% \paragraph{\texttt{mplibgraphictext ...}} +% |mplibgraphictext| is a \metapost operator, the effect of which is similar to that of +% \ConTeXt's |graphictext| or our own |mpliboutlinetext| +% (see \hyperlink{mpliboutlinetext}{below}). +% However the syntax is somewhat different. +%\begin{verbatim} % mplibgraphictext "Funny" % fakebold 2.3 % fontspec option % drawcolor .7blue fillcolor "red!50" % color expressions -% \end{verbatim} +%\end{verbatim} % |fakebold|, |drawcolor| and |fillcolor| are optional; % default values are |2|, |"black"| and |"white"| respectively. -% When color expressions are given as string, they are regarded as -% xcolor's or l3color's expressions (this is the same with shading colors). -% From v2.30, |scale| option is deprecated and is now a synonym of |scaled|. +% When the color expressions are given in string type, they are regarded as +% \pkg{color}, \pkg{xcolor} or \pkg{l3color}'s expressions. % All from |mplibgraphictext| to the end of sentence will compose an % anonymous |picture|, which can be drawn or assigned to a variable. % Incidentally, |withdrawcolor| and |withfillcolor| are synonyms of % |drawcolor| and |fillcolor|, hopefully to be compatible with |graphictext|. -% \textsc{n.b.} Because luamplib's current implementation is quite different -% from the \ConTeXt's, there are some limitations such that you can't -% apply shading (gradient colors) to the text (But see below). -% In DVI mode, |unicode-math| package is needed for math formula graphictext, +% +% \textsc{n.b.} +% In some cases, |mplibgraphictext| will produce better results than \ConTeXt\ +% or even than our own |mpliboutlinetext|, +% especially when processing complicated \TeX\ code +% such as the vertical writing in Chinese or Japanese. +% However, because the implementation is quite different from others, +% there are some limitations such that you can't +% apply shading (gradient colors) to the text. Again, +% in DVI mode, \pkg{unicode-math} package is needed for math formula, % as we cannot embolden type1 fonts in DVI mode. % -% \paragraph{\texttt{mplibglyph}, \texttt{mplibdrawglyph}} -% From v2.30, we provide a new metapost operator |mplibglyph|, which returns a metapost picture +% \paragraph{\texttt{mplibglyph ... of ...}} +% From v2.30, we provide a new \metapost operator |mplibglyph|, which returns a \metapost picture % containing outline paths of a glyph in opentype, truetype or type1 fonts. -% When a type1 font is specified, metapost primitive |glyph| will be called. -% \begin{verbatim} +% When a type1 font is specified, \metapost primitive |glyph| will be called. +%\begin{verbatim} % mplibglyph 50 of \fontid\font % slot 50 of current font % mplibglyph "Q" of "TU/TeXGyrePagella(0)/m/n/10" % font csname % mplibglyph "Q" of "texgyrepagella-regular.otf" % raw filename % mplibglyph "Q" of "Times.ttc(2)" % subfont number % mplibglyph "Q" of "SourceHanSansK-VF.otf[Regular]" % instance name -% \end{verbatim} +%\end{verbatim} % Both arguments before and after of ``|of|'' can be either a number or a string. % Number arguments are regarded as a glyph slot (GID) and a font id number, repectively. % String argument at the left side is regarded as a glyph name in the font or a unicode character. @@ -518,76 +667,108 @@ See source file '\inFileName' for licencing and contact information. % subfont number (starting from zero) of a TTC font; a string within brackets denotes % an instance name of a variable font. % -% The returned picture will be quite similar to the result of |glyph| primitive in its structure. -% So, metapost's |draw| command will fill the inner path of the picture with background color. -% In contrast, |mplibdrawglyph| command fills the paths according to the Nonzero Winding -% Number Rule. As a result, for instance, the area surrounded by inner path of ``O'' +% \paragraph{\texttt{mplibdrawglyph ...}} +% The picture returned by |mplibglyph| will be quite similar to the result of |glyph| primitive in its structure. +% So, \metapost's |draw| command will fill the inner path of the picture with the background color. +% In contrast, |mplibdrawglyph| \emph{<picture>} command fills the paths according to the nonzero winding +% number rule. As a result, for instance, the area surrounded by inner path of ``O'' % will remain transparent. % -% \paragraph{\texttt{mpliboutlinetext}} -% From v2.31, we provide a new metapost operator |mpliboutlinetext|, which mimicks -% metafun's |outlinetext|. So the syntax is the same as metafun's. See the metafun -% manual \textsection\,8.7 (|texdoc metafun|). A simple example: -% \begin{verbatim} +% \leavevmode\llap{\textcolor{red}{☞}\kern1.2\parindent}\relax +% To apply the nonzero winding number rule to a picture containing paths, +% luamplib appends |withpostscript| |"collect"| +% to the paths except the last one in the picture. +% If you want the even-odd rule instead, you can, with \emph{plain} format as well, +% additionally declare |withpostscript| |"evenodd"| to the last path in the picture. +% +% \paragraph{\texttt{mpliboutlinetext (...)}} +% \hypertarget{mpliboutlinetext}{}\relax +% From v2.31, a new \metapost operator |mpliboutlinetext| is available, which mimicks +% \emph{metafun}'s |outlinetext|. So the syntax is the same: see the \emph{metafun} +% manual \S\,8.7 (|texdoc metafun|). A simple example: +%\begin{verbatim} % draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$") % (withcolor \mpcolor{red!50}) % (withpen pencircle scaled .2 withcolor red) % scaled 2 ; -% \end{verbatim} -% After the process of |mpliboutlinetext|, |mpliboutlinepic[]| +%\end{verbatim} +% After the process, |mpliboutlinepic[]| % and |mpliboutlinenum| will be preserved as global variables; -% |mpliboutlinepic[1]| \ldots{} |mpliboutlinepic[mpliboutlinenum]| +% |mpliboutlinepic[1]| |...| |mpliboutlinepic[mpliboutlinenum]| % will be an array of images each of which containing a glyph or a rule. +% % \textsc{n.b.} As Unicode grapheme cluster is not considered in the array, a unit that must be % a single cluster might be separated apart. % -% \paragraph{\cs{mppattern} \ldots\ \cs{endmppattern}, \texttt{withpattern}} -% |\mppattern{<name>}| \ldots\ |\endmppattern| defines a tiling pattern +% \paragraph{\cs{mppattern\{...\} ...} \cs{endmppattern}, \texttt{... withpattern ...}} +% \hypertarget{mppattern}{}\relax +% \TeX\ macros +% \cs{mppattern\{<name>\}} |...| \cs{endmppattern} define a tiling pattern % associated with the |<name>|. -% MetaPost operator |withpattern|, the syntax being -% \textit{path} |withpattern| \textit{string}, will return a metapost picture which fills -% the given path with a tiling pattern of the |<name>|. -% \begin{verbatim} -% \mppattern{mypatt} % or \begin{mppattern}{mypatt} -% [ % options: see below -% xstep = 10, ystep = 12, -% matrix = {0,1,-1,0}, % or "0 1 -1 0" -% ] -% \mpfig % or any other TeX code, -% picture q; -% q := btex Q etex; -% fill bbox q withcolor .8[red,white]; -% draw q withcolor .8red; -% \endmpfig -% \endmppattern % or \end{mppattern} +% \metapost operator |withpattern|, the syntax being +% \emph{<path>}\,\textbar\,\emph{<textual picture>} |withpattern| \emph{<string>}, +% will return a \metapost picture which fills +% the given path or text with a tiling pattern of the |<name>| +% by replicating it horizontally and vertically. +% The \emph{textual picture} here means any text typeset by \TeX, mostly the result +% of the |btex| command (though technically this is not a true textual picture) +% or the |infont| operator. % -% \mpfig -% fill fullcircle scaled 100 withpostscript "collect"; -% draw unitsquare shifted - center unitsquare scaled 45 -% withpattern "mypatt" -% withpostscript "evenodd" ; -% \endmpfig -% \end{verbatim} -% The available options are: -% \begin{center} +% An example: +%\begin{verbatim} +% \mppattern{mypatt} % or \begin{mppattern}{mypatt} +% [ % options: see below +% xstep = 10, +% ystep = 12, +% matrix = {0, 1, -1, 0}, % or "0 1 -1 0" +% ] +% \mpfig % or any other TeX code, +% draw (origin--(1,1)) +% scaled 10 +% withcolor 1/3[blue,white] +% ; +% draw (up--right) +% scaled 10 +% withcolor 1/3[red,white] +% ; +% \endmpfig +% \endmppattern % or \end{mppattern} +% +% \mpfig +% draw fullcircle scaled 90 +% withpostscript "collect" +% ; +% draw fullcircle scaled 200 +% withpattern "mypatt" +% withpen pencircle scaled 1 +% withcolor \mpcolor{red!50!blue!50} +% withpostscript "evenodd" +% ; +% \endmpfig +%\end{verbatim} +% +% The available options are listed in Table~\ref{tab:mppatternoptions}. +% \begin{table} +% \centering +% \caption{options for \cs{mppattern}}\label{tab:mppatternoptions} % \begin{tabular}{lll}\hline % Key & Value Type & Explanation\\\hline -% |xstep| &\textit{number} & horizontal spacing between pattern cells\\ -% |ystep| &\textit{number} & vertical spacing between pattern cells\\ -% |xshift| &\textit{number} & horizontal shifting of pattern cells\\ -% |yshift| &\textit{number} & vertical shifting of pattern cells\\ -% |matrix| &\textit{table} or \textit{string} & |xx|, |yx|, |xy|, |yy| values\kern1pt* or MP transform code\\ -% |bbox| &\textit{table} or \textit{string} & |llx|, |lly|, |urx|, |ury| values\kern1pt*\\ -% |resources|&\textit{string} & PDF resources if needed\\ -% |colored| or |coloured| &\textit{boolean}& |false| for uncolored pattern. default: |true|\\\hline +% |xstep| &\emph{number} & horizontal spacing between pattern cells\\ +% |ystep| &\emph{number} & vertical spacing between pattern cells\\ +% |xshift| &\emph{number} & horizontal shifting of pattern cells\\ +% |yshift| &\emph{number} & vertical shifting of pattern cells\\ +% |bbox| &\emph{table} or \emph{string} & |llx|, |lly|, |urx|, |ury| values\kern1pt*\\ +% |matrix| &\emph{table} or \emph{string} & |xx|, |yx|, |xy|, |yy| values\kern1pt* or MP transform code\\ +% |resources|&\emph{string} & PDF resources if needed\\ +% |colored| or |coloured| &\emph{boolean}& |false| for uncolored pattern. default: |true|\\\hline % & & \small *\,in string type, numbers are separated by spaces\\ % \end{tabular} -% \end{center} +% \end{table} % -% For the sake of convenience, width and height values of tiling patterns will be written down +% For the sake of convenience, the width and height values of tiling patterns will be written down % into the log file. (depth is always zero.) Users can refer to them for option setting. % -% As for |matrix| option, metapost code such as `|rotated 30 slanted .2|' is allowed as well +% As for |matrix| option, \metapost code such as `|rotated 30 slanted .2|' is allowed as well % as string or table of four numbers. You can also set |xshift| and |yshift| % values by using `|shifted|' operator. But when |xshift| or |yshift| option is explicitly % given, they have precedence over the effect of `|shifted|' operator. @@ -598,45 +779,257 @@ See source file '\inFileName' for licencing and contact information. % is not needed in most cases. % % Option |colored=false| (|coloured| is a synonym of |colored|) will generate an uncolored pattern which shall have no color at all. -% Uncolored pattern will be painted later by the color of a metapost object. +% Uncolored pattern will be painted later by the color of a \metapost object. % An example: -% \begin{verbatim} -% \begin{mppattern}{pattuncolored} +%\begin{verbatim} +% \begin{mppattern}{pattnocolor} % [ % colored = false, -% matrix = "rotated 30", +% matrix = "slanted .3 rotated 30", % ] % \tiny\TeX % \end{mppattern} % % \begin{mplibcode} % beginfig(1) -% picture tex; tex := mpliboutlinetext.p ("\bfseries \TeX"); -% i:=0; -% for item within tex: -% i:=i+1; -% if i < length tex: -% fill pathpart item scaled 10 -% withpostscript "collect"; -% else: +% picture tex; +% tex = mpliboutlinetext.p ("\bfseries \TeX"); +% for i=1 upto mpliboutlinenum: +% j:=0; +% for item within mpliboutlinepic[i]: +% j:=j+1; % draw pathpart item scaled 10 -% withpattern "pattuncolored" -% withpen pencircle scaled 0.5 -% withcolor 0.7 blue % paints the pattern -% ; -% fi +% if j < length mpliboutlinepic[i]: +% withpostscript "collect" +% else: +% withpattern "pattnocolor" +% withpen pencircle scaled 1/2 +% withcolor (i/4)[red,blue] % paints the pattern +% fi; +% endfor % endfor % endfig; % \end{mplibcode} -% \end{verbatim} +%\end{verbatim} +% A much simpler and efficient way to obtain a similar result +% (without colorful characters in this example) +% is to give a \emph{textual picture} as the operand of |withpattern|: +%\begin{verbatim} +% \begin{mplibcode} +% beginfig(2) +% picture pic; +% pic = mplibgraphictext "\bfseries\TeX" +% fakebold 1/2 +% fillcolor 1/3[red,blue] % paints the pattern +% drawcolor 2/3[red,blue] +% scaled 10 ; +% draw pic withpattern "pattnocolor" ; +% endfig; +% \end{mplibcode} +%\end{verbatim} +% +% \paragraph{\texttt{... withfademethod ...}} +% This is a \metapost operator which makes the color of an object gradiently transparent. +% The syntax is \emph{<path>}\texttt{\textbar}\emph{<picture>} |withfademethod| \emph{<string>}, +% the latter being either |"linear"| or |"circular"|. +% Though it is similar to the |withshademethod| from \emph{metafun}, +% the differences are: (1) the operand of |withfademethod| can be a picture as well as a path; +% (2) you cannot make gradient colors, but can only make gradient opacity. +% +% Related macros to control optional values are: +% \begin{description} +% \let\bfseries\relax +% \item [|withfadeopacity (|\emph{number, number}|)|] +% sets the starting opacity and the ending opacity, default value being |(1,0)|. +% `|1|' denotes full color; `|0|' full transparency. +% \item [|withfadevector (|\emph{pair, pair}|)|] +% sets the starting and ending points. Default value in the linear mode is +% |(llcorner p, lrcorner p)|, where |p| is the operand, +% meaning that fading starts from the left edge and ends at the right edge. +% Default value in the circular mode is |(center p, center p)|, which means +% centers of both starting and ending circles are the center of the bounding box. +% \item [|withfadecenter|] is a synonym of |withfadevector|. +% \item [|withfaderadius (|\emph{number, number}|)|] +% sets the radii of starting and ending circles. This is no-op in the linear mode. +% Default value is |(0, abs(center p - urcorner p))|, meaning that fading starts from the +% center and ends at the four corners of the bounding box. +% \item [|withfadebbox (|\emph{pair, pair}|)|] +% sets the bounding box of the fading area, default value being |(llcorner p, urcorner p)|. +% Though this option is not needed in most cases, there could be cases when users want to +% explicitly control the bounding box. +% Particularly, see the description \hyperlink{withgroupbbox}{below} +% on the analogous macro |withgroupbbox|. +% \end{description} +% An example: +%\begin{verbatim} +% \mpfig +% picture mill; +% mill = btex \includegraphics[width=100bp]{mill} etex; +% draw mill +% withfademethod "circular" +% withfadecenter (center mill, center mill) +% withfaderadius (20, 50) +% withfadeopacity (1, 0) +% ; +% \endmpfig +%\end{verbatim} +% +% \paragraph{\texttt{... asgroup ...}} +% \hypertarget{transparencygroup}{}\relax +% As said \hyperlink{metafunformat}{before}, +% transparency group is available with \emph{plain} as well as \emph{metafun} format. +% The syntax is exactly the same: +% \emph{<picture>} \textbar\ \emph{<path>} |asgroup| +% |""| \textbar\ |"isolated"| \textbar\ |"knockout"| \textbar\ |"isolated,knockout"|, +% which will return a \metapost picture. +% It is called \emph{Transparency Group} because the objects contained in the group are composited +% to produce a single object, so that outer transparency effect, if any, +% will be applied to the group as a whole, not to the individual objects cumulatively. +% +% The additional feature provided by luamplib is that +% you can reuse the group as many times as you want +% in the \TeX{} code or in other \metapost code chunks, +% with infinitesimal increase in the size of PDF file. +% For this functionality we provide \TeX{} and \metapost macros as follows: +% \begin{description} +% \let\bfseries\relax +% \item[|withgroupname| \emph{<string>}] associates a transparency group with the given name. +% When this is not appended to the sentence with |asgroup| operator, +% the default group name `|lastmplibgroup|' will be used. +% +% \item[\cs{usemplibgroup\{...\}}] +% \hypertarget{usemplibgroup}{}\relax +% is a \TeX\ command to reuse a transparency group of the name +% once used. +% Note that the position of the group will be origin-based: +% in other words, lower-left corner of the group will be shifted to the origin. +% +% \item[|usemplibgroup| \emph{<string>}] is a \metapost command which will add +% a transparency group of the name to the |currentpicture|. +% Contrary to the \TeX\ command just mentioned, +% the position of the group is the same as the original transparency group. +% +% \item[|withgroupbbox (|\emph{pair}|,|\emph{pair}|)|] +% \hypertarget{withgroupbbox}{}\relax +% sets the bounding box of the transparency group, +% default value being |(llcorner p, urcorner p)|. +% This option might be needed especially when you draw with a thick pen +% a path that touches the boundary; +% you would probably want to append to the sentence +% `|withgroupbbox| |(bot| |lft| |llcorner| |p,| |top| |rt| |urcorner| |p)|', +% supposing that the pen was selected by the |pickup| command. +% +% \end{description} +% An example showing the difference between the \TeX\ and \metapost commands: +%\begin{verbatim} +% \mpfig +% draw image( +% fill fullcircle scaled 100 shifted 25right withcolor blue; +% fill fullcircle scaled 100 withcolor red ; +% ) asgroup "" +% withgroupname "mygroup"; +% draw (left--right) scaled 10; +% draw (up--down) scaled 10; +% \endmpfig +% +% \noindent +% \clap{\vrule width 20pt height .25pt depth .25pt}% +% \clap{\vrule width .5pt height 10pt depth 10pt}% +% \usemplibgroup{mygroup} +% +% \mpfig +% usemplibgroup "mygroup" rotated 15 +% withprescript "tr_transparency=0.5"; +% draw (left--right) scaled 10; +% draw (up--down) scaled 10; +% \endmpfig +%\end{verbatim} +% +% Also note that normally the reused transparency groups are not affected by outer color commands. +% However, if you have made the original transparency group using |withoutcolor| command, +% colors will have effects on the uncolored objects in the group. +% +% \paragraph{\cs{mplibgroup\{...\} ...} \cs{endmplibgroup}} +% These \TeX\ macros are described here in this subsection, as they are +% deeply related to the |asgroup| operator. +% Users can define a transparency group or a normal \emph{form XObject} +% with these macros from \TeX\ side. +% The syntax is similar to the \cs{mppattern} command (see \hyperlink{mppattern}{above}). +% An example: +%\begin{verbatim} +% \mplibgroup{mygrx} % or \begin{mplibgroup}{mygrx} +% [ % options: see below +% asgroup="", +% ] +% \mpfig % or any other TeX code +% pickup pencircle scaled 10; +% draw (left--right) scaled 30 rotated 45 ; +% draw (left--right) scaled 30 rotated -45 ; +% \endmpfig +% \endmplibgroup % or \end{mplibgroup} +% +% \usemplibgroup{mygrx} +% +% \mpfig +% usemplibgroup "mygrx" scaled 1.5 +% withprescript "tr_transparency=0.5" ; +% \endmpfig +%\end{verbatim} +% +% Availabe options, much fewer than those for \cs{mppattern}, +% are listed in Table~\ref{tab:mplibgroupoptions}. +% Again, the width/height/depth values of the mplibgroup will be written down into the log file. +% \begin{table} +% \centering +% \caption{options for \cs{mplibgroup}}\label{tab:mplibgroupoptions} +% \begin{tabular}{lll} +% \hline +% Key & Value Type & Explanation\\ +% \hline +% |asgroup| &\emph{string} & |""|, |"isolated"|, |"knockout"|, or |"isolated,knockout"|\\ +% |bbox| &\emph{table} or \emph{string} & |llx|, |lly|, |urx|, |ury| values\kern1pt*\\ +% |matrix| &\emph{table} or \emph{string} & |xx|, |yx|, |xy|, |yy| values\kern1pt* +% or MP transform code\\ +% |resources| &\emph{string} & PDF resources if needed\\ +% \hline +% & & \small *\,in string type, numbers are separated by spaces\\ +% \end{tabular} +% \end{table} +% +% When |asgroup| option, including empty string, is not given, +% a normal form XObject will be generated rather than a transparency group. +% Thus the individual objects, not the XObject as a whole, will be affected +% by outer transparency command. +% +% As shown in the example, you can reuse the mplibgroup once defined +% using the \TeX\ command \cs{usemplibgroup} or +% the \metapost command |usemplibgroup|. +% The behavior of these commands is the same as that described \hyperlink{usemplibgroup}{above}. +% +% +% \subsection{Lua} +% +% \paragraph{\texttt{runscript ...}} +% Using the primitive |runscript| \emph{<string>}, you can run a Lua code chunk from \metapost side +% and get some \metapost code returned by Lua if you want. +% As the functionality is provided by the \mplib library itself, +% luamplib does not have much to say about it. +% +% One thing is worth mentioning, however: +% if you return a Lua \emph{table} to the \metapost process, +% it is automatically converted to a relevant \metapost value type +% such as pair, color, cmykcolor or transform. +% So users can save some extra toil of converting a table to a string, though it's not a big deal. +% For instance, |runscript "return {1,0,0}"| will give you the \metapost color expression |(1,0,0)| +% automatically. % % \paragraph{Lua table \texttt{luamplib.instances}} -% Users can access the Lua table containing mplib instances, |luamplib.instances|, -% through which metapost variables are also easily accessible -% as documented in Lua\TeX{} manual \textsection\,11.2.8.4 (|texdoc luatex|). +% Users can access the Lua table containing \mplib instances, |luamplib.instances|, +% through which \metapost variables are also easily accessible from Lua side, +% as documented in Lua\TeX{} manual \S\,11.2.8.4 (|texdoc luatex|). % The following will print |false|, |3.0|, |MetaPost| and -% the points and the cyclicity of the path |unitsquare|, consecutively. -% \begin{verbatim} +% the knots and the cyclicity of the path |unitsquare|, consecutively. +%\begin{verbatim} % \begin{mplibcode}[instance1] % boolean b; b = 1 > 2; % numeric n; n = 3; @@ -646,37 +1039,46 @@ See source file '\inFileName' for licencing and contact information. % % \directlua{ % local instance1 = luamplib.instances.instance1 -% print( instance1:get_boolean"b" ) -% print( instance1:get_number"n" ) -% print( instance1:get_string"s" ) -% local t = instance1:get_path"p" +% print( instance1:get_boolean "b" ) +% print( instance1:get_number "n" ) +% print( instance1:get_string "s" ) +% local t = instance1:get_path "p" % for k,v in pairs(t) do % print(k, type(v)=='table' and table.concat(v,' ') or v) % end % } -% \end{verbatim} -% In this way, it would not be difficult to define a paragraph shape -% (using \cs{parshape} \TeX\ primitive) which follows an arbitrary metapost path. -% -% \paragraph{About figure box metrics} -% Notice that, after each figure is processed, macro \cs{MPwidth} stores -% the width value of latest figure; \cs{MPheight}, the height value. -% Incidentally, also note that \cs{MPllx}, \cs{MPlly}, \cs{MPurx}, and -% \cs{MPury} store the bounding box information of latest figure -% without the unit |bp|. -% -% \paragraph{luamplib.cfg} -% At the end of package loading, \textsf{luamplib} searches -% |luamplib.cfg| and, if found, reads the file in automatically. -% Frequently used settings such as \cs{everymplib}, \cs{mplibforcehmode} -% or \cs{mplibcodeinherit} are suitable for going into this file. -% -% \bigskip +%\end{verbatim} +% +% \paragraph{Lua function \texttt{luamplib.process\_mplibcode}} +% Users can execute a \metapost code chunk from Lua side by using this function: +%\begin{verbatim} +% luamplib.process_mplibcode (<string> metapost code, <string> instance name) +%\end{verbatim} +% The second argument cannot be absent, but can be an empty string (|""|) which +% means that it has no instance name. +% +% Some other elements in the |luamplib| namespace, listed in Table~\ref{tab:elementsinluamplib}, +% can have effects on the process of |process_mplibcode|. +% \begin{table} +% \centering +% \caption{elements in \texttt{luamplib} table (partial)}\label{tab:elementsinluamplib} +% \begin{tabular}{lll}\hline +% Key & Type & Related \TeX\ macro \\\hline +% |codeinherit| & \emph{boolean} & \cs{mplibcodeinherit}\\ +% |everyendmplib| & \emph{table} & \cs{everyendmplib}\\ +% |everymplib| & \emph{table} & \cs{everymplib}\\ +% |getcachedir| & \emph{function} (\emph{<string>}) & \cs{mplibcachedir}\\ +% |globaltextext| & \emph{boolean} & \cs{mplibglobaltextext}\\ +% |legacyverbatimtex| & \emph{boolean} & \cs{mpliblegacybehavior}\\ +% |noneedtoreplace| & \emph{table} & \cs{mplibmakenocache}\\ +% |numbersystem| & \emph{string} & \cs{mplibnumbersystem}\\ +% |setformat| & \emph{function} (\emph{<string>}) & \cs{mplibsetformat}\\ +% |showlog| & \emph{boolean} & \cs{mplibshowlog}\\ +% |textextlabel| & \emph{boolean} & \cs{mplibtextextlabel}\\ +% |verbatiminput| & \emph{boolean} & \cs{mplibverbatim}\\\hline +% \end{tabular} +% \end{table} % -% There are (basically) two formats for metapost: \emph{plain} and -% \emph{metafun}. By default, the \emph{plain} format is used, but you can set -% the format to be used by future figures at any time using -% \cs{mplibsetformat}\marg{format name}. % % \section{Implementation} % @@ -690,14 +1092,14 @@ See source file '\inFileName' for licencing and contact information. luatexbase.provides_module { name = "luamplib", - version = "2.32.3", - date = "2024/06/21", + version = "2.35.0", + date = "2024/11/12", description = "Lua package to typeset Metapost with LuaTeX's MPLib.", } % \end{macrocode} % -% Use the |luamplib| namespace, since |mplib| is for the metapost library +% Use the |luamplib| namespace, since |mplib| is for the \metapost library % itself. \ConTeXt{} uses |metapost|. % \begin{macrocode} luamplib = luamplib or { } @@ -733,7 +1135,6 @@ local function termorlog (target, text, kind) if kind == "Error" then error() end end end - local function warn (...) -- beware '%' symbol termorlog("term and log", select("#",...) > 1 and format(...) or ...) end @@ -749,33 +1150,23 @@ luamplib.showlog = luamplib.showlog or false % \end{macrocode} % % This module is a stripped down version of libraries that are used by -% \ConTeXt. Provide a few ``shortcuts'' expected by the imported code. +% \ConTeXt. Provide a few ``shortcuts'' expected by the code. % \begin{macrocode} local tableconcat = table.concat local tableinsert = table.insert +local tableunpack = table.unpack local texsprint = tex.sprint local texgettoks = tex.gettoks local texgetbox = tex.getbox local texruntoks = tex.runtoks -% \end{macrocode} -% -% We don't use |tex.scantoks| anymore. See below reagrding |tex.runtoks|. -% \begin{verbatim} -% local texscantoks = tex.scantoks -% \end{verbatim} -% \begin{macrocode} - if not texruntoks then err("Your LuaTeX version is too old. Please upgrade it to the latest") end - local is_defined = token.is_defined local get_macro = token.get_macro - local mplib = require ('mplib') local kpse = require ('kpse') local lfs = require ('lfs') - local lfsattributes = lfs.attributes local lfsisdir = lfs.isdir local lfsmkdir = lfs.mkdir @@ -791,7 +1182,6 @@ local file = file or { } local replacesuffix = file.replacesuffix or function(filename, suffix) return (filename:gsub("%.[%a%d]+$","")) .. "." .. suffix end - local is_writable = file.is_writable or function(name) if lfsisdir(name) then name = name .. "/_luam_plib_temp_file_" @@ -813,14 +1203,11 @@ end % \end{macrocode} % % |btex ... etex| in input |.mp| files will be replaced in finder. -% Because of the limitation of MPLib regarding |make_text|, +% Because of the limitation of \mplib regarding |make_text|, % we might have to make cache files modified from input files. % \begin{macrocode} -local luamplibtime = kpse.find_file("luamplib.lua") -luamplibtime = luamplibtime and lfsattributes(luamplibtime,"modification") - +local luamplibtime = lfsattributes(kpse.find_file"luamplib.lua", "modification") local currenttime = os.time() - local outputdir, cachedir if lfstouch then for i,v in ipairs{'TEXMFVAR','TEXMF_OUTPUT_DIRECTORY','.','TEXMFOUTPUT'} do @@ -857,10 +1244,9 @@ function luamplib.getcachedir(dir) end end end - % \end{macrocode} % -% Some basic MetaPost files not necessary to make cache files. +% Some basic \metapost files not necessary to make cache files. % \begin{macrocode} local noneedtoreplace = { ["boxes.mp"] = true, -- ["format.mp"] = true, @@ -879,7 +1265,6 @@ local noneedtoreplace = { ["mp-tool.mpiv"] = true, ["mp-cont.mpiv"] = true, } luamplib.noneedtoreplace = noneedtoreplace - % \end{macrocode} % % |format.mp| is much complicated, so specially treated. @@ -901,7 +1286,6 @@ local function replaceformatmp(file,newfile,ofmodify) lfstouch(newfile,currenttime,ofmodify) return newfile end - % \end{macrocode} % % Replace |btex ... etex| and |verbatimtex ... etex| in input files, @@ -911,7 +1295,6 @@ local name_b = "%f[%a_]" local name_e = "%f[^%a_]" local btex_etex = name_b.."btex"..name_e.."%s*(.-)%s*"..name_b.."etex"..name_e local verbatimtex_etex = name_b.."verbatimtex"..name_e.."%s*(.-)%s*"..name_b.."etex"..name_e - local function replaceinputmpfile (name,file) local ofmodify = lfsattributes(file,"modification") if not ofmodify then return file end @@ -924,23 +1307,19 @@ local function replaceinputmpfile (name,file) return nf.size == 0 and file or newfile end end - if name == "format.mp" then return replaceformatmp(file,newfile,ofmodify) end - local fh = ioopen(file,"r") if not fh then return file end local data = fh:read("*all"); fh:close() - % \end{macrocode} -% ``|etex|'' must be followed by a space or semicolon as specified in -% \LuaTeX\ manual, which is not the case of standalone MetaPost though. +% ``|etex|'' must be preceded by a space and followed by a space or semicolon as specified in +% \LuaTeX\ manual, which is not the case of standalone \metapost though. % \begin{macrocode} local count,cnt = 0,0 data, cnt = data:gsub(btex_etex, "btex %1 etex ") -- space count = count + cnt data, cnt = data:gsub(verbatimtex_etex, "verbatimtex %1 etex;") -- semicolon count = count + cnt - if count == 0 then noneedtoreplace[name] = true fh = ioopen(newfile,"w"); @@ -950,7 +1329,6 @@ local function replaceinputmpfile (name,file) end return file end - fh = ioopen(newfile,"w") if not fh then return file end fh:write(data); fh:close() @@ -960,8 +1338,8 @@ end % \end{macrocode} % -% As the finder function for MPLib, use the |kpse| library and -% make it behave like as if MetaPost was used. And replace it with +% As the finder function for \mplib, use the |kpse| library and +% make it behave like as if \metapost was used. And replace |.mp| files with % cache files if needed. % See also \#74, \#97. % \begin{macrocode} @@ -973,12 +1351,10 @@ do end mpkpse = kpse.new(arg[exe], "mpost") end - local special_ftype = { pfb = "type1 fonts", enc = "enc files", } - function luamplib.finder (name, mode, ftype) if mode == "w" then if name and name ~= "mpout.log" then @@ -1004,9 +1380,9 @@ end % \end{macrocode} % -% Create and load MPLib instances. -% We do not support ancient version of MPLib any more. -% (Don't know which version of MPLib started to support +% Create and load \mplib instances. +% We do not support ancient version of \mplib any more. +% (Don't know which version of \mplib started to support % |make_text| and |run_script|; let the users find it.) % \begin{macrocode} local preamble = [[ @@ -1015,17 +1391,15 @@ local preamble = [[ let normalfontsize = fontsize; input %s ; ]] - % \end{macrocode} % -% |plain| or |metafun|, -% though we cannot support |metafun| format fully. +% \emph{plain} or \emph{metafun}, +% though we cannot support \emph{metafun} format fully. % \begin{macrocode} local currentformat = "plain" function luamplib.setformat (name) currentformat = name end - % \end{macrocode} % % v2.9 has introduced the concept of ``code inherit'' @@ -1034,7 +1408,6 @@ luamplib.codeinherit = false local mplibinstances = {} luamplib.instances = mplibinstances local has_instancename = false - local function reporterror (result, prevlog) if not result then err("no result object returned") @@ -1061,7 +1434,7 @@ local function reporterror (result, prevlog) % \end{macrocode} % v2.6.1: now luamplib does not disregard |show| command, % even when |luamplib.showlog| is false. Incidentally, -% it does not raise error but just prints an info, +% it does not raise error nor prints an info, % even if output has no figure. % \begin{macrocode} local show = log:match"\n>>? .+" @@ -1075,17 +1448,20 @@ local function reporterror (result, prevlog) return log end end - +% \end{macrocode} +% +% |lualibs-os.lua| installs a randomseed. When this file is not loaded, +% we should explicitly seed a unique integer to get random randomseed for each run. +% \begin{macrocode} +if not math.initialseed then math.randomseed(currenttime) end local function luamplibload (name) local mpx = mplib.new { ini_version = true, find_file = luamplib.finder, % \end{macrocode} % Make use of |make_text| and |run_script|, which will co-operate -% with \LuaTeX's |tex.runtoks|. And we -% provide |numbersystem| option since v2.4. Default value ``|scaled|'' -% can be changed by declaring |\mplibnumbersystem{double}| -% or |\mplibnumbersystem{decimal}|. +% with \LuaTeX's |tex.runtoks| or other Lua functions. And we +% provide |numbersystem| option since v2.4. % See \url{https://github.com/lualatex/luamplib/issues/21}. % \begin{macrocode} make_text = luamplib.maketext, @@ -1096,12 +1472,12 @@ local function luamplibload (name) extensions = 1, } % \end{macrocode} -% Append our own MetaPost preamble to the preamble above. +% Append our own \metapost preamble to the preamble above. % \begin{macrocode} local preamble = tableconcat{ format(preamble, replacesuffix(name,"mp")), luamplib.preambles.mplibcode, - luamplib.legacy_verbatimtex and luamplib.preambles.legacyverbatimtex or "", + luamplib.legacyverbatimtex and luamplib.preambles.legacyverbatimtex or "", luamplib.textextlabel and luamplib.preambles.textextlabel or "", } local result, log @@ -1113,22 +1489,12 @@ local function luamplibload (name) log = reporterror(result) return mpx, result, log end - % \end{macrocode} % % Here, excute each |mplibcode| data, % ie |\begin{mplibcode} ... \end{mplibcode}|. % \begin{macrocode} local function process (data, instancename) -% \end{macrocode} -% The workaround of issue \#70 seems to be unnecessary, as we use -% |make_text| now. -% \begin{verbatim} -% if not data:find(name_b.."beginfig%s*%([%+%-%s]*%d[%.%d%s]*%)") then -% data = data .. "beginfig(-1);endfig;" -% end -% \end{verbatim} -% \begin{macrocode} local currfmt if instancename and instancename ~= "" then currfmt = instancename @@ -1138,7 +1504,7 @@ local function process (data, instancename) currentformat, luamplib.numbersystem or "scaled", tostring(luamplib.textextlabel), - tostring(luamplib.legacy_verbatimtex), + tostring(luamplib.legacyverbatimtex), } has_instancename = false end @@ -1172,40 +1538,30 @@ end % |dvipdfmx| is supported, though nobody seems to use it. % \begin{macrocode} local pdfmode = tex.outputmode > 0 + % \end{macrocode} % -% |make_text| and some |run_script| uses \LuaTeX's |tex.runtoks|, -% which made possible running \TeX\ code snippets inside |\directlua|. +% |make_text| and some |run_script| uses \LuaTeX's |tex.runtoks|. % \begin{macrocode} local catlatex = luatexbase.registernumber("catcodetable@latex") local catat11 = luatexbase.registernumber("catcodetable@atletter") - % \end{macrocode} % % |tex.scantoks| sometimes fail to read catcode properly, especially % |\#|, |\&|, or |\%|. After some experiment, we dropped using it. -% Instead, a function containing |tex.script| seems to work nicely. -% \begin{verbatim} -% local function run_tex_code_no_use (str, cat) -% cat = cat or catlatex -% texscantoks("mplibtmptoks", cat, str) -% texruntoks("mplibtmptoks") -% end -% \end{verbatim} +% Instead, a function containing |tex.sprint| seems to work nicely. % \begin{macrocode} local function run_tex_code (str, cat) texruntoks(function() texsprint(cat or catlatex, str) end) end - % \end{macrocode} % -% Prepare textext box number containers, -% locals, globals and possibly instances. +% Prepare textext box number containers, locals and globals. % |localid| can be any number. They are local anyway. % The number will be reset at the start of a new code chunk. % Global boxes will use |\newbox| command in |tex.runtoks| process. -% This is the same when |codeinherit| is declared as true. -% Boxes of an instance will also be global, so that +% This is the same when |codeinherit| is true. +% Boxes in instances with name will also be global, so that % their tex boxes can be shared among instances of the same name. % \begin{macrocode} local texboxes = { globalid = 0, localid = 4096 } @@ -1213,11 +1569,9 @@ local texboxes = { globalid = 0, localid = 4096 } % For conversion of |sp| to |bp|. % \begin{macrocode} local factor = 65536*(7227/7200) - local textext_fmt = 'image(addto currentpicture doublepath unitsquare \z -xscaled %f yscaled %f shifted (0,-%f) \z -withprescript "mplibtexboxid=%i:%f:%f")' - + xscaled %f yscaled %f shifted (0,-%f) \z + withprescript "mplibtexboxid=%i:%f:%f")' local function process_tex_text (str) if str then local global = (has_instancename or luamplib.globaltextext or luamplib.codeinherit) @@ -1232,7 +1586,7 @@ local function process_tex_text (str) run_tex_code(format([[\expandafter\newbox\csname luamplib.box.%s\endcsname]], boxid)) tex_box_id = tex.getcount'allocationnumber' end - run_tex_code(format("%s\\setbox%i\\hbox{%s}", global, tex_box_id, str)) + run_tex_code(format("\\luamplibtagtextbegin{%i}%s\\setbox%i\\hbox{%s}\\luamplibtagtextend", tex_box_id, global, tex_box_id, str)) local box = texgetbox(tex_box_id) local wd = box.width / factor local ht = box.height / factor @@ -1247,7 +1601,6 @@ end % Make |color| or |xcolor|'s color expressions usable, % with \cs{mpcolor} or |mplibcolor|. These commands should be used % with graphical objects. -% % Attempt to support l3color as well. % \begin{macrocode} local mplibcolorfmt = { @@ -1263,7 +1616,6 @@ local mplibcolorfmt = { [[\color_select:n%s\endgroup]], }, } - local colfmt = is_defined'color_select:n' and "l3color" or "xcolor" if colfmt == "l3color" then run_tex_code{ @@ -1277,7 +1629,6 @@ if colfmt == "l3color" then } end local ccexplat = luatexbase.registernumber"luamplibcctabexplat" - local function process_color (str) if str then if not str:find("%b{}") then @@ -1338,20 +1689,18 @@ end % % For legacy verbatimtex process. % |verbatimtex ... etex| before |beginfig()| is not ignored, -% but the \TeX\ code is inserted just before the mplib box. And -% \TeX\ code inside |beginfig() ... endfig| is inserted after the mplib box. +% but the \TeX\ code is inserted just before the \mplib box. And +% \TeX\ code inside |beginfig() ... endfig| is inserted after the \mplib box. % \begin{macrocode} local tex_code_pre_mplib = {} luamplib.figid = 1 luamplib.in_the_fig = false - local function process_verbatimtex_prefig (str) if str then tex_code_pre_mplib[luamplib.figid] = str end return "" end - local function process_verbatimtex_infig (str) if str then return format('special "postmplibverbtex=%s";', str) @@ -1370,17 +1719,16 @@ local runscript_funcs = { % \end{macrocode} % -% For |metafun| format. see issue \#79. +% For \emph{metafun} format. see issue \#79. % \begin{macrocode} mp = mp or {} local mp = mp mp.mf_path_reset = mp.mf_path_reset or function() end mp.mf_finish_saving_data = mp.mf_finish_saving_data or function() end mp.report = mp.report or info - % \end{macrocode} % -% metafun 2021-03-09 changes crashes luamplib. +% \emph{metafun} 2021-03-09 changes crashes luamplib. % \begin{macrocode} catcodes = catcodes or {} local catcodes = catcodes @@ -1414,7 +1762,6 @@ local function mpprint(buffer,...) end end end - function luamplib.runscript (code) local id, str = code:match("(.-){(.*)}") if id and str then @@ -1436,7 +1783,7 @@ function luamplib.runscript (code) return buffer end buffer = {} - mpprint(buffer, table.unpack(res)) + mpprint(buffer, tableunpack(res)) return tableconcat(buffer) end return "" @@ -1453,9 +1800,7 @@ local function protecttexcontents (str) :gsub("%zPerCent%z", "\\%%") :gsub("%s+", " ") end - -luamplib.legacy_verbatimtex = true - +luamplib.legacyverbatimtex = true function luamplib.maketext (str, what) if str and str ~= "" then str = protecttexcontents(str) @@ -1464,7 +1809,7 @@ function luamplib.maketext (str, what) not str:find("\\begin%s*{document}") and not str:find("\\documentstyle"..name_e) and not str:find("\\usepackage"..name_e) then - if luamplib.legacy_verbatimtex then + if luamplib.legacyverbatimtex then if luamplib.in_the_fig then return process_verbatimtex_infig(str) else @@ -1483,13 +1828,13 @@ end % \end{macrocode} % -% luamplib's metapost color operators +% luamplib's \metapost color operators % \begin{macrocode} local function colorsplit (res) - local t, tt = { }, res:gsub("[%[%]]",""):explode() + local t, tt = { }, res:gsub("[%[%]]","",2):explode() local be = tt[1]:find"^%d" and 1 or 2 for i=be, #tt do - if tt[i]:find"^%a" then break end + if not tonumber(tt[i]) then break end t[#t+1] = tt[i] end return t @@ -1523,7 +1868,7 @@ luamplib.shadecolor = function (str) if res:find" cs " or res:find"@pdf.obj" then -- spot color shade: l3 only % \end{macrocode} % An example of spot color shading: -% \begin{verbatim} +%\begin{verbatim} % \documentclass{article} % \usepackage{luamplib} % \mplibsetformat{metafun} @@ -1569,29 +1914,64 @@ luamplib.shadecolor = function (str) % endfig; % \end{mplibcode} % \end{document} -% \end{verbatim} +%\end{verbatim} +% another one: user-defined DeviceN colorspace +%\begin{verbatim} +% \DocumentMetadata{ } +% \documentclass{article} +% \usepackage{luamplib} +% \mplibsetformat{metafun} +% \ExplSyntaxOn +% \color_model_new:nnn { pantone1215 } +% { Separation } +% { name = PANTONE~1215~U , +% alternative-model = cmyk , +% alternative-values = {0, 0.15, 0.51, 0} +% } +% \color_model_new:nnn { pantone+black } +% { DeviceN } +% { +% names = {pantone1215,black} +% } +% \color_set:nnn{purepantone}{pantone+black}{1,0} +% \color_set:nnn{pureblack} {pantone+black}{0,1} +% \ExplSyntaxOff +% \begin{document} +% \mpfig +% fill unitsquare xscaled \mpdim{\textwidth} yscaled 30 +% withshademethod "linear" +% withshadecolors ("purepantone","pureblack") +% ; +% \endmpfig +% \end{document} +%\end{verbatim} % \begin{macrocode} run_tex_code({ [[\color_export:nnN{]], str, [[}{backend}\mplib_@tempa]], },ccexplat) - local name = get_macro'mplib_@tempa':match'{(.-)}{.+}' + local name, value = get_macro'mplib_@tempa':match'{(.-)}{(.-)}' local t, obj = res:explode() if pdfmode then obj = format("%s 0 R", ltx.pdf.object_id( t[1]:sub(2,-1) )) else obj = t[2] end - local value = t[3]:match"%[(.-)%]" or t[3] - return format('(%s) withprescript"mplib_spotcolor=%s:%s"', value,obj,name) + return format('(1) withprescript"mplib_spotcolor=%s:%s:%s"', value,obj,name) end return colorsplit(res) end % \end{macrocode} % +% Remove trailing zeros for smaller PDF +% \begin{macrocode} +local decimals = "%.%d+" +local function rmzeros(str) return str:gsub("%.?0+$","") end + +% \end{macrocode} +% % luamplib's mplibgraphictext operator % \begin{macrocode} -local running = -1073741824 local emboldenfonts = { } local function getemboldenwidth (curr, fakebold) local width = emboldenfonts.width @@ -1624,13 +2004,14 @@ local function getrulewhatsit (line, wd, ht, dp) fmt = "pdf:content "..fmt pl = node.new("whatsit","special") end - pl.data = fmt:format(line, 0, -dp, wd, ht+dp, "B") + pl.data = fmt:format(line, 0, -dp, wd, ht+dp, "B") :gsub(decimals,rmzeros) local ss = node.new"glue" node.setglue(ss, 0, 65536, 65536, 2, 2) pl.next = ss return pl end local function getrulemetric (box, curr, bp) + local running = -1073741824 local wd,ht,dp = curr.width, curr.height, curr.depth wd = wd == running and box.width or wd ht = ht == running and box.height or ht @@ -1682,7 +2063,8 @@ local function embolden (box, curr, fakebold) head, curr = node.remove(head, curr) elseif curr.id == node.id"glyph" and curr.font > 0 then local f = curr.font - local i = emboldenfonts[f] + local key = format("%s:%s",f,fakebold) + local i = emboldenfonts[key] if not i then local ft = font.getfont(f) or font.getcopy(f) if pdfmode then @@ -1698,7 +2080,7 @@ local function embolden (box, curr, fakebold) name = format('%s;embolden=%s;',name,fakebold) _, i = fonts.constructors.readanddefine(name,ft.size) end - emboldenfonts[f] = i + emboldenfonts[key] = i end curr.font = i end @@ -1710,6 +2092,9 @@ end local function graphictextcolor (col, filldraw) if col:find"^[%d%.:]+$" then col = col:explode":" + for i=1,#col do + col[i] = format("%.3f", col[i]) + end if pdfmode then local op = #col == 4 and "k" or #col == 3 and "rg" or "g" col[#col+1] = filldraw == "fill" and op or op:upper() @@ -1888,7 +2273,7 @@ function luamplib.glyph (f, c) if not gid then return mperr"cannot get GID (glyph id)" end local fac = 1000 / (shapedata.units or 1000) local t = shapedata.glyphs[gid].segments - if not t then return "image(fill fullcircle scaled 0;)" end + if not t then return "image()" end for i,v in ipairs(t) do if type(v) == "table" then for ii,vv in ipairs(v) do @@ -1907,7 +2292,7 @@ end % mpliboutlinetext : based on mkiv's font-mps.lua % \begin{macrocode} local rulefmt = "mpliboutlinepic[%i]:=image(addto currentpicture contour \z -unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);" + unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);" local outline_horz, outline_vert function outline_vert (res, box, curr, xshift, yshift) local b2u = box.dir == "LTL" @@ -2142,13 +2527,13 @@ function luamplib.outlinetext (text) local id = tonumber(fmt:match"mplibtexboxid=(%d+):") local box = texgetbox(id) local res = outline_horz({ }, box, box.head, 0, 0) - if #res == 0 then res = { "mpliboutlinepic[1]:=image(fill fullcircle scaled 0;);" } end + if #res == 0 then res = { "mpliboutlinepic[1]:=image();" } end return tableconcat(res) .. format("mpliboutlinenum:=%i;", #res) end % \end{macrocode} % -% Our MetaPost preambles +% Our \metapost preambles % \begin{macrocode} luamplib.preambles = { mplibcode = [[ @@ -2333,7 +2718,13 @@ vardef mpliboutlinetext@# (expr t) text rest = ) mplib_do_outline_options_r; ) enddef ; primarydef t withpattern p = - image( fill t withprescript "mplibpattern=" & if numeric p: decimal fi p; ) + image( + if cycle t: + fill + else: + draw + fi + t withprescript "mplibpattern=" & if numeric p: decimal fi p; ) enddef; vardef mplibtransformmatrix (text e) = save t; transform t; @@ -2347,6 +2738,75 @@ vardef mplibtransformmatrix (text e) = & decimal ypart t & "," & "}"); enddef; +primarydef p withfademethod s = + if picture p: + image( + draw p; + draw center p withprescript "mplibfadestate=stop"; + ) + else: + p withprescript "mplibfadestate=stop" + fi + withprescript "mplibfadetype=" & s + withprescript "mplibfadebbox=" & + decimal (xpart llcorner p -1/4) & ":" & + decimal (ypart llcorner p -1/4) & ":" & + decimal (xpart urcorner p +1/4) & ":" & + decimal (ypart urcorner p +1/4) +enddef; +def withfadeopacity (expr a,b) = + withprescript "mplibfadeopacity=" & + decimal a & ":" & + decimal b +enddef; +def withfadevector (expr a,b) = + withprescript "mplibfadevector=" & + decimal xpart a & ":" & + decimal ypart a & ":" & + decimal xpart b & ":" & + decimal ypart b +enddef; +let withfadecenter = withfadevector; +def withfaderadius (expr a,b) = + withprescript "mplibfaderadius=" & + decimal a & ":" & + decimal b +enddef; +def withfadebbox (expr a,b) = + withprescript "mplibfadebbox=" & + decimal xpart a & ":" & + decimal ypart a & ":" & + decimal xpart b & ":" & + decimal ypart b +enddef; +primarydef p asgroup s = + image( + draw center p + withprescript "mplibgroupbbox=" & + decimal (xpart llcorner p -1/4) & ":" & + decimal (ypart llcorner p -1/4) & ":" & + decimal (xpart urcorner p +1/4) & ":" & + decimal (ypart urcorner p +1/4) + withprescript "gr_state=start" + withprescript "gr_type=" & s; + draw p; + draw center p withprescript "gr_state=stop"; + ) +enddef; +def withgroupbbox (expr a,b) = + withprescript "mplibgroupbbox=" & + decimal xpart a & ":" & + decimal ypart a & ":" & + decimal xpart b & ":" & + decimal ypart b +enddef; +def withgroupname expr s = + withprescript "mplibgroupname=" & s +enddef; +def usemplibgroup primary s = + draw maketext("\mplibnoforcehmode\csname luamplib.group." & s & "\endcsname") + shifted runscript("return luamplib.trgroupshifts['" & s & "']") +enddef; ]], legacyverbatimtex = [[ def specialVerbatimTeX (text t) = runscript("luamplibprefig{"&t&"}") enddef; @@ -2360,7 +2820,25 @@ extra_endfig := extra_endfig & " let VerbatimTeX = specialVerbatimTeX;"& "luamplib.in_the_fig=false" &ditto& ");"; ]], textextlabel = [[ -primarydef s infont f = rawtextext(s) enddef; +let luampliboriginalinfont = infont; +primarydef s infont f = + if (s < char 32) + or (s = char 35) % # + or (s = char 36) % $ + or (s = char 37) % % + or (s = char 38) % & + or (s = char 92) % \ + or (s = char 94) % ^ + or (s = char 95) % _ + or (s = char 123) % { + or (s = char 125) % } + or (s = char 126) % ~ + or (s = char 127) : + s luampliboriginalinfont f + else : + rawtextext(s) + fi +enddef; def fontsize expr f = begingroup save size; numeric size; @@ -2376,7 +2854,6 @@ enddef; % When \cs{mplibverbatim} is enabled, do not expand |mplibcode| data. % \begin{macrocode} luamplib.verbatiminput = false - % \end{macrocode} % % Do not expand |btex ... etex|, |verbatimtex ... etex|, and @@ -2392,7 +2869,6 @@ local function protect_expansion (str) return format("\\unexpanded{%s}",str) end end - local function unprotect_expansion (str) if str then return str:gsub("!!!Control!!!", "\\") @@ -2402,25 +2878,20 @@ local function unprotect_expansion (str) :gsub("!!!RBrace!!!", "}") end end - luamplib.everymplib = setmetatable({ [""] = "" },{ __index = function(t) return t[""] end }) luamplib.everyendmplib = setmetatable({ [""] = "" },{ __index = function(t) return t[""] end }) - function luamplib.process_mplibcode (data, instancename) texboxes.localid = 4096 - % \end{macrocode} % This is needed for legacy behavior % \begin{macrocode} - if luamplib.legacy_verbatimtex then + if luamplib.legacyverbatimtex then luamplib.figid, tex_code_pre_mplib = 1, {} end - local everymplib = luamplib.everymplib[instancename] local everyendmplib = luamplib.everyendmplib[instancename] data = format("\n%s\n%s\n%s\n",everymplib, data, everyendmplib) :gsub("\r","\n") - % \end{macrocode} % These five lines are needed for |mplibverbatim| mode. % \begin{macrocode} @@ -2460,7 +2931,6 @@ function luamplib.process_mplibcode (data, instancename) return format("verbatimtex %s etex", unprotect_expansion(str)) end) end - process(data, instancename) end @@ -2468,21 +2938,12 @@ end % % For parsing |prescript| materials. % \begin{macrocode} -local further_split_keys = { - mplibtexboxid = true, - sh_color_a = true, - sh_color_b = true, -} local function script2table(s) local t = {} for _,i in ipairs(s:explode("\13+")) do local k,v = i:match("(.-)=(.*)") -- v may contain = or empty. if k and v and k ~= "" and not t[k] then - if further_split_keys[k] or further_split_keys[k:sub(1,10)] then - t[k] = v:explode(":") - else - t[k] = v - end + t[k] = v end end return t @@ -2490,144 +2951,34 @@ end % \end{macrocode} % -% Codes below for inserting PDF lieterals are mostly from ConTeXt general, -% with small changes when needed. +% pdfliterals will be stored in |figcontents| table, and written to pdf in one go +% at the end of the flushing figure. +% Subtable |post| is for the legacy behavior. % \begin{macrocode} -local function getobjects(result,figure,f) - return figure:objects() -end - -function luamplib.convert (result, flusher) - luamplib.flush(result, flusher) - return true -- done -end - local figcontents = { post = { } } local function put2output(a,...) figcontents[#figcontents+1] = type(a) == "string" and format(a,...) or a end - local function pdf_startfigure(n,llx,lly,urx,ury) put2output("\\mplibstarttoPDF{%f}{%f}{%f}{%f}",llx,lly,urx,ury) end - local function pdf_stopfigure() put2output("\\mplibstoptoPDF") end - % \end{macrocode} % % |tex.sprint| with catcode regime -2, as sometimes |#| gets doubled % in the argument of pdfliteral. % \begin{macrocode} -local function pdf_literalcode (fmt,...) - put2output{-2, format(fmt,...)} -end - -local function pdf_textfigure(font,size,text,width,height,depth) - text = text:gsub(".",function(c) - return format("\\hbox{\\char%i}",string.byte(c)) -- kerning happens in metapost : false - end) - put2output("\\mplibtextext{%s}{%f}{%s}{%s}{%s}",font,size,text,0,0) -end - -local bend_tolerance = 131/65536 - -local rx, sx, sy, ry, tx, ty, divider = 1, 0, 0, 1, 0, 0, 1 - -local function pen_characteristics(object) - local t = mplib.pen_info(object) - rx, ry, sx, sy, tx, ty = t.rx, t.ry, t.sx, t.sy, t.tx, t.ty - divider = sx*sy - rx*ry - return not (sx==1 and rx==0 and ry==0 and sy==1 and tx==0 and ty==0), t.width -end - -local function concat(px, py) -- no tx, ty here - return (sy*px-ry*py)/divider,(sx*py-rx*px)/divider -end - -local function curved(ith,pth) - local d = pth.left_x - ith.right_x - if abs(ith.right_x - ith.x_coord - d) <= bend_tolerance and abs(pth.x_coord - pth.left_x - d) <= bend_tolerance then - d = pth.left_y - ith.right_y - if abs(ith.right_y - ith.y_coord - d) <= bend_tolerance and abs(pth.y_coord - pth.left_y - d) <= bend_tolerance then - return false - end - end - return true -end - -local function flushnormalpath(path,open) - local pth, ith - for i=1,#path do - pth = path[i] - if not ith then - pdf_literalcode("%f %f m",pth.x_coord,pth.y_coord) - elseif curved(ith,pth) then - pdf_literalcode("%f %f %f %f %f %f c",ith.right_x,ith.right_y,pth.left_x,pth.left_y,pth.x_coord,pth.y_coord) - else - pdf_literalcode("%f %f l",pth.x_coord,pth.y_coord) - end - ith = pth - end - if not open then - local one = path[1] - if curved(pth,one) then - pdf_literalcode("%f %f %f %f %f %f c",pth.right_x,pth.right_y,one.left_x,one.left_y,one.x_coord,one.y_coord ) - else - pdf_literalcode("%f %f l",one.x_coord,one.y_coord) - end - elseif #path == 1 then -- special case .. draw point - local one = path[1] - pdf_literalcode("%f %f l",one.x_coord,one.y_coord) - end -end - -local function flushconcatpath(path,open) - pdf_literalcode("%f %f %f %f %f %f cm", sx, rx, ry, sy, tx ,ty) - local pth, ith - for i=1,#path do - pth = path[i] - if not ith then - pdf_literalcode("%f %f m",concat(pth.x_coord,pth.y_coord)) - elseif curved(ith,pth) then - local a, b = concat(ith.right_x,ith.right_y) - local c, d = concat(pth.left_x,pth.left_y) - pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(pth.x_coord, pth.y_coord)) - else - pdf_literalcode("%f %f l",concat(pth.x_coord, pth.y_coord)) - end - ith = pth - end - if not open then - local one = path[1] - if curved(pth,one) then - local a, b = concat(pth.right_x,pth.right_y) - local c, d = concat(one.left_x,one.left_y) - pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(one.x_coord, one.y_coord)) - else - pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord)) - end - elseif #path == 1 then -- special case .. draw point - local one = path[1] - pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord)) - end -end - -local function start_pdf_code() - if pdfmode then - pdf_literalcode("q") - else - put2output"\\special{pdf:bcontent}" - end -end -local function stop_pdf_code() - if pdfmode then - pdf_literalcode("Q") - else - put2output"\\special{pdf:econtent}" - end +local function pdf_literalcode (...) + put2output{ -2, format(...) :gsub(decimals,rmzeros) } end +local start_pdf_code = pdfmode + and function() pdf_literalcode"q" end + or function() put2output"\\special{pdf:bcontent}" end +local stop_pdf_code = pdfmode + and function() pdf_literalcode"Q" end + or function() put2output"\\special{pdf:econtent}" end % \end{macrocode} % @@ -2635,7 +2986,7 @@ end % |textext(...)| or |TEX(...)|, all being the same internally. % \begin{macrocode} local function put_tex_boxes (object,prescript) - local box = prescript.mplibtexboxid + local box = prescript.mplibtexboxid:explode":" local n,tw,th = box[1],tonumber(box[2]),tonumber(box[3]) if n and tw and th then local op = object.path @@ -2699,32 +3050,42 @@ local pdfobjs, pdfetcs = {}, {} pdfetcs.pgfextgs = "pgf@sys@addpdfresource@extgs@plain" pdfetcs.pgfpattern = "pgf@sys@addpdfresource@patterns@plain" pdfetcs.pgfcolorspace = "pgf@sys@addpdfresource@colorspaces@plain" - -local function update_pdfobjs (os) - local on = pdfobjs[os] +local function update_pdfobjs (os, stream) + local key = os + if stream then key = key..stream end + local on = pdfobjs[key] if on then return on,false end if pdfmode then - on = pdf.immediateobj(os) + if stream then + on = pdf.immediateobj("stream",stream,os) + else + on = pdf.immediateobj(os) + end else on = pdfetcs.cnt or 1 - texsprint(format("\\special{pdf:obj @mplibpdfobj%s %s}",on,os)) + if stream then + texsprint(format("\\special{pdf:stream @mplibpdfobj%s (%s) <<%s>>}",on,stream,os)) + else + texsprint(format("\\special{pdf:obj @mplibpdfobj%s %s}",on,os)) + end pdfetcs.cnt = on + 1 end - pdfobjs[os] = on + pdfobjs[key] = on return on,true end - +pdfetcs.resfmt = pdfmode and "%s 0 R" or "@mplibpdfobj%s" if pdfmode then pdfetcs.getpageres = pdf.getpageresources or function() return pdf.pageresources end - pdfetcs.setpageres = pdf.setpageresources or function(s) pdf.pageresources = s end - pdfetcs.initialize_resources = function (name) + local getpageres = pdfetcs.getpageres + local setpageres = pdf.setpageresources or function(s) pdf.pageresources = s end + local initialize_resources = function (name) local tabname = format("%s_res",name) pdfetcs[tabname] = { } if luatexbase.callbacktypes.finish_pdffile then -- ltluatex local obj = pdf.reserveobj() - pdfetcs.setpageres(format("%s/%s %i 0 R", pdfetcs.getpageres() or "", name, obj)) + setpageres(format("%s/%s %i 0 R", getpageres() or "", name, obj)) luatexbase.add_to_callback("finish_pdffile", function() pdf.immediateobj(obj, format("<<%s>>", tableconcat(pdfetcs[tabname]))) end, @@ -2734,27 +3095,36 @@ if pdfmode then pdfetcs.fallback_update_resources = function (name, res) local tabname = format("%s_res",name) if not pdfetcs[tabname] then - pdfetcs.initialize_resources(name) + initialize_resources(name) end if luatexbase.callbacktypes.finish_pdffile then local t = pdfetcs[tabname] t[#t+1] = res else - local tpr, n = pdfetcs.getpageres() or "", 0 + local tpr, n = getpageres() or "", 0 tpr, n = tpr:gsub(format("/%s<<",name), "%1"..res) if n == 0 then tpr = format("%s/%s<<%s>>", tpr, name, res) end - pdfetcs.setpageres(tpr) + setpageres(tpr) end end else texsprint { + "\\luamplibatfirstshipout{", "\\special{pdf:obj @MPlibTr<<>>}", "\\special{pdf:obj @MPlibSh<<>>}", "\\special{pdf:obj @MPlibCS<<>>}", - "\\special{pdf:obj @MPlibPt<<>>}", + "\\special{pdf:obj @MPlibPt<<>>}}", } + pdfetcs.resadded = { } + pdfetcs.fallback_update_resources = function (name,res,obj) + texsprint{"\\special{pdf:put ", obj, " <<", res, ">>}"} + if not pdfetcs.resadded[name] then + texsprint{"\\luamplibateveryshipout{\\special{pdf:put @resources <</", name, " ", obj, ">>}}"} + pdfetcs.resadded[name] = obj + end + end end % \end{macrocode} @@ -2768,13 +3138,10 @@ local transparancy_modes = { [0] = "Normal", "Hue", "Saturation", "Color", "Luminosity", "Compatible", } - -local function update_tr_res(mode,opaq) - local os = format("<</BM /%s/ca %.3f/CA %.3f/AIS false>>",mode,opaq,opaq) - local on, new = update_pdfobjs(os) +local function add_extgs_resources (on, new) + local key = format("MPlibTr%s", on) if new then - local key = format("MPlibTr%s", on) - local val = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s", on) + local val = format(pdfetcs.resfmt, on) if pdfmanagement then texsprint { "\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/ExtGState}{", key, "}{", val, "}" @@ -2783,103 +3150,102 @@ local function update_tr_res(mode,opaq) local tr = format("/%s %s", key, val) if is_defined(pdfetcs.pgfextgs) then texsprint { "\\csname ", pdfetcs.pgfextgs, "\\endcsname{", tr, "}" } - elseif pdfmode then - if is_defined"TRP@list" then - texsprint(catat11,{ - [[\if@filesw\immediate\write\@auxout{]], - [[\string\g@addto@macro\string\TRP@list{]], - tr, - [[}}\fi]], - }) - if not get_macro"TRP@list":find(tr) then - texsprint(catat11,[[\global\TRP@reruntrue]]) - end - else - pdfetcs.fallback_update_resources("ExtGState", tr) + elseif is_defined"TRP@list" then + texsprint(catat11,{ + [[\if@filesw\immediate\write\@auxout{]], + [[\string\g@addto@macro\string\TRP@list{]], + tr, + [[}}\fi]], + }) + if not get_macro"TRP@list":find(tr) then + texsprint(catat11,[[\global\TRP@reruntrue]]) end else - texsprint { "\\special{pdf:put @MPlibTr<<", tr, ">>}" } + pdfetcs.fallback_update_resources("ExtGState",tr,"@MPlibTr") end end end - if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfextgs) then - texsprint"\\special{pdf:put @resources <</ExtGState @MPlibTr>>}" - end - return on + return key end - local function do_preobj_TR(object,prescript) if object.postscript == "collect" then return end local opaq = prescript and prescript.tr_transparency - local tron_no if opaq then + local key, on, os, new local mode = prescript.tr_alternative or 1 - mode = transparancy_modes[tonumber(mode)] - tron_no = update_tr_res(mode, opaq) - start_pdf_code() - pdf_literalcode("/MPlibTr%i gs",tron_no) + mode = transparancy_modes[tonumber(mode)] or mode + opaq = format("%.3f", opaq) :gsub(decimals,rmzeros) + for i,v in ipairs{ {mode,opaq},{"Normal",1} } do + os = format("<</BM/%s/ca %s/CA %s/AIS false>>",v[1],v[2],v[2]) + on, new = update_pdfobjs(os) + key = add_extgs_resources(on,new) + if i == 1 then + pdf_literalcode("/%s gs",key) + else + return format("/%s gs",key) + end + end end - return tron_no end % \end{macrocode} % -% Shading with |metafun| format. +% Shading with \emph{metafun} format. % \begin{macrocode} local function sh_pdfpageresources(shtype,domain,colorspace,ca,cb,coordinates,steps,fractions) - local fun2fmt,os = "<</FunctionType 2/Domain [%s]/C0 [%s]/C1 [%s]/N 1>>" + for _,v in ipairs{ca,cb} do + for i,vv in ipairs(v) do + for ii,vvv in ipairs(vv) do + v[i][ii] = tonumber(vvv) and format("%.3f",vvv) or vvv + end + end + end + local fun2fmt,os = "<</FunctionType 2/Domain[%s]/C0[%s]/C1[%s]/N 1>>" if steps > 1 then local list,bounds,encode = { },{ },{ } for i=1,steps do if i < steps then - bounds[i] = fractions[i] or 1 + bounds[i] = format("%.3f", fractions[i] or 1) end encode[2*i-1] = 0 encode[2*i] = 1 os = fun2fmt:format(domain,tableconcat(ca[i],' '),tableconcat(cb[i],' ')) - list[i] = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s",update_pdfobjs(os)) + :gsub(decimals,rmzeros) + list[i] = format(pdfetcs.resfmt, update_pdfobjs(os)) end os = tableconcat { "<</FunctionType 3", - format("/Bounds [%s]", tableconcat(bounds,' ')), - format("/Encode [%s]", tableconcat(encode,' ')), - format("/Functions [%s]", tableconcat(list, ' ')), - format("/Domain [%s]>>", domain), - } + format("/Bounds[%s]", tableconcat(bounds,' ')), + format("/Encode[%s]", tableconcat(encode,' ')), + format("/Functions[%s]", tableconcat(list, ' ')), + format("/Domain[%s]>>", domain), + } :gsub(decimals,rmzeros) else os = fun2fmt:format(domain,tableconcat(ca[1],' '),tableconcat(cb[1],' ')) + :gsub(decimals,rmzeros) end - local objref = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s",update_pdfobjs(os)) + local objref = format(pdfetcs.resfmt, update_pdfobjs(os)) os = tableconcat { format("<</ShadingType %i", shtype), format("/ColorSpace %s", colorspace), format("/Function %s", objref), - format("/Coords [%s]", coordinates), - "/Extend [true true]/AntiAlias true>>", - } + format("/Coords[%s]", coordinates), + "/Extend[true true]/AntiAlias true>>", + } :gsub(decimals,rmzeros) local on, new = update_pdfobjs(os) if new then - local key = format("MPlibSh%s", on) - local val = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s", on) + local key, val = format("MPlibSh%s", on), format(pdfetcs.resfmt, on) if pdfmanagement then texsprint { "\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/Shading}{", key, "}{", val, "}" } else local res = format("/%s %s", key, val) - if pdfmode then - pdfetcs.fallback_update_resources("Shading", res) - else - texsprint { "\\special{pdf:put @MPlibSh<<", res, ">>}" } - end + pdfetcs.fallback_update_resources("Shading",res,"@MPlibSh") end end - if not pdfmode and not pdfmanagement then - texsprint"\\special{pdf:put @resources <</Shading @MPlibSh>>}" - end return on end - local function color_normalize(ca,cb) if #cb == 1 then if #ca == 4 then @@ -2891,7 +3257,6 @@ local function color_normalize(ca,cb) cb[1], cb[2], cb[3], cb[4] = 1-cb[1], 1-cb[2], 1-cb[3], 0 end end - pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names) run_tex_code({ [[\color_model_new:nnn]], @@ -2903,7 +3268,6 @@ pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names) t[names] = colorspace return colorspace end }) - local function do_preobj_SH(object,prescript) local shade_no local sh_type = prescript and prescript.sh_type @@ -2911,14 +3275,14 @@ local function do_preobj_SH(object,prescript) return else local domain = prescript.sh_domain or "0 1" - local centera = prescript.sh_center_a or "0 0"; centera = centera:explode() - local centerb = prescript.sh_center_b or "0 0"; centerb = centerb:explode() + local centera = (prescript.sh_center_a or "0 0"):explode() + local centerb = (prescript.sh_center_b or "0 0"):explode() local transform = prescript.sh_transform == "yes" local sx,sy,sr,dx,dy = 1,1,1,0,0 if transform then - local first = prescript.sh_first or "0 0"; first = first:explode() - local setx = prescript.sh_set_x or "0 0"; setx = setx:explode() - local sety = prescript.sh_set_y or "0 0"; sety = sety:explode() + local first = (prescript.sh_first or "0 0"):explode() + local setx = (prescript.sh_set_x or "0 0"):explode() + local sety = (prescript.sh_set_y or "0 0"):explode() local x,y = tonumber(setx[1]) or 0, tonumber(sety[1]) or 0 if x ~= 0 and y ~= 0 then local path = object.path @@ -2940,15 +3304,15 @@ local function do_preobj_SH(object,prescript) end end local ca, cb, colorspace, steps, fractions - ca = { prescript.sh_color_a_1 or prescript.sh_color_a or {0} } - cb = { prescript.sh_color_b_1 or prescript.sh_color_b or {1} } + ca = { (prescript.sh_color_a_1 or prescript.sh_color_a or "0"):explode":" } + cb = { (prescript.sh_color_b_1 or prescript.sh_color_b or "1"):explode":" } steps = tonumber(prescript.sh_step) or 1 if steps > 1 then fractions = { prescript.sh_fraction_1 or 0 } for i=2,steps do fractions[i] = prescript[format("sh_fraction_%i",i)] or (i/steps) - ca[i] = prescript[format("sh_color_a_%i",i)] or {0} - cb[i] = prescript[format("sh_color_b_%i",i)] or {1} + ca[i] = (prescript[format("sh_color_a_%i",i)] or "0"):explode":" + cb[i] = (prescript[format("sh_color_b_%i",i)] or "1"):explode":" end end if prescript.mplib_spotcolor then @@ -2957,15 +3321,14 @@ local function do_preobj_SH(object,prescript) local script = object.prescript:explode"\13+" for i=#script,1,-1 do if script[i]:find"mplib_spotcolor" then - local name, value - objref, name = script[i]:match"=(.-):(.+)" - value = script[i+1]:match"=(.+)" + local t, name, value = script[i]:explode"="[2]:explode":" + value, objref, name = t[1], t[2], t[3] if not names[name] then pos = pos+1 names[name] = pos names[#names+1] = name end - local t = { } + t = { } for j=1,names[name] do t[#t+1] = 0 end t[#t+1] = value tableinsert(#ca == #cb and ca or cb, t) @@ -3016,7 +3379,6 @@ local function do_preobj_SH(object,prescript) else err"unknown shading type" end - pdf_literalcode("q /Pattern cs") end return shade_no end @@ -3025,43 +3387,16 @@ end % % Patterns % \begin{macrocode} -patterns = { } -function luamplib.registerpattern ( boxid, name, opts ) - local box = texgetbox(boxid) - local wd = format("%.3f",box.width/factor) - local hd = format("%.3f",(box.height+box.depth)/factor) - info("w/h/d of '%s': %s %s 0.0", name, wd, hd) - if opts.xstep == 0 then opts.xstep = nil end - if opts.ystep == 0 then opts.ystep = nil end - if opts.colored == nil then - opts.colored = opts.coloured - if opts.colored == nil then - opts.colored = true - end - end - if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end - if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end - if opts.matrix and opts.matrix:find"%a" then - local data = format("mplibtransformmatrix(%s);",opts.matrix) - process(data,"@mplibtransformmatrix") - local t = luamplib.transformmatrix - opts.matrix = format("%s %s %s %s", t[1], t[2], t[3], t[4]) - opts.xshift = opts.xshift or t[5] - opts.yshift = opts.yshift or t[6] +pdfetcs.patterns = { } +local function gather_resources (optres) + local t, do_pattern = { }, not optres + local names = {"ExtGState","ColorSpace","Shading"} + if do_pattern then + names[#names+1] = "Pattern" end - local attr = { - "/Type/Pattern", - "/PatternType 1", - format("/PaintType %i", opts.colored and 1 or 2), - "/TilingType 2", - format("/XStep %s", opts.xstep or wd), - format("/YStep %s", opts.ystep or hd), - format("/Matrix [%s %s %s]", opts.matrix or "1 0 0 1", opts.xshift or 0, opts.yshift or 0), - } if pdfmode then - local optres, t = opts.resources or "", { } if pdfmanagement then - for _,v in ipairs{"ExtGState","ColorSpace","Shading"} do + for _,v in ipairs(names) do local pp = get_macro(format("g__pdfdict_/g__pdf_Core/Page/Resources/%s_prop",v)) if pp and pp:find"__prop_pair" then t[#t+1] = format("/%s %s 0 R", v, ltx.pdf.object_id("__pdf/Page/Resources/"..v)) @@ -3070,26 +3405,19 @@ function luamplib.registerpattern ( boxid, name, opts ) else local res = pdfetcs.getpageres() or "" run_tex_code[[\mplibtmptoks\expandafter{\the\pdfvariable pageresources}]] - res = (res .. texgettoks'mplibtmptoks'):explode() - res = tableconcat(res," "):explode"/+" + res = res .. texgettoks'mplibtmptoks' + if do_pattern then return res end + res = res:explode"/+" for _,v in ipairs(res) do + v = v:match"^%s*(.-)%s*$" if not v:find"Pattern" and not optres:find(v) then t[#t+1] = "/" .. v end end end - optres = optres .. tableconcat(t) - if opts.bbox then - attr[#attr+1] = format("/BBox [%s]", opts.bbox) - end - local index = tex.saveboxresource(boxid, tableconcat(attr), optres, true, opts.bbox and 4 or 1) - patterns[name] = { id = index, colored = opts.colored } else - local objname = "@mplibpattern"..name - local metric = format("bbox %s", opts.bbox or format("0 0 %s %s",wd,hd)) - local optres, t = opts.resources or "", { } if pdfmanagement then - for _,v in ipairs{"ExtGState","ColorSpace","Shading"} do + for _,v in ipairs(names) do local pp = get_macro(format("g__pdfdict_/g__pdf_Core/Page/Resources/%s_prop",v)) if pp and pp:find"__prop_pair" then run_tex_code { @@ -3105,31 +3433,87 @@ function luamplib.registerpattern ( boxid, name, opts ) "\\mplibtmptoks\\expanded{{", "\\ifpgf@sys@pdf@extgs@exists /ExtGState @pgfextgs\\fi", "\\ifpgf@sys@pdf@colorspaces@exists /ColorSpace @pgfcolorspaces\\fi", + do_pattern and "\\ifpgf@sys@pdf@patterns@exists /Pattern @pgfpatterns \\fi" or "", "}}", }, catat11) t[#t+1] = texgettoks'mplibtmptoks' + else + for _,v in ipairs(names) do + local vv = pdfetcs.resadded[v] + if vv then + t[#t+1] = format("/%s %s", v, vv) + end + end end - optres = optres .. tableconcat(t) + end + return tableconcat(t) +end +function luamplib.registerpattern ( boxid, name, opts ) + local box = texgetbox(boxid) + local wd = format("%.3f",box.width/factor) + local hd = format("%.3f",(box.height+box.depth)/factor) + info("w/h/d of pattern '%s': %s 0", name, format("%s %s",wd, hd):gsub(decimals,rmzeros)) + if opts.xstep == 0 then opts.xstep = nil end + if opts.ystep == 0 then opts.ystep = nil end + if opts.colored == nil then + opts.colored = opts.coloured + if opts.colored == nil then + opts.colored = true + end + end + if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end + if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end + if opts.matrix and opts.matrix:find"%a" then + local data = format("mplibtransformmatrix(%s);",opts.matrix) + process(data,"@mplibtransformmatrix") + local t = luamplib.transformmatrix + opts.matrix = format("%f %f %f %f", t[1], t[2], t[3], t[4]) + opts.xshift = opts.xshift or format("%f",t[5]) + opts.yshift = opts.yshift or format("%f",t[6]) + end + local attr = { + "/Type/Pattern", + "/PatternType 1", + format("/PaintType %i", opts.colored and 1 or 2), + "/TilingType 2", + format("/XStep %s", opts.xstep or wd), + format("/YStep %s", opts.ystep or hd), + format("/Matrix[%s %s %s]", opts.matrix or "1 0 0 1", opts.xshift or 0, opts.yshift or 0), + } + local optres = opts.resources or "" + optres = optres .. gather_resources(optres) + local patterns = pdfetcs.patterns + if pdfmode then + if opts.bbox then + attr[#attr+1] = format("/BBox[%s]", opts.bbox) + end + attr = tableconcat(attr) :gsub(decimals,rmzeros) + local index = tex.saveboxresource(boxid, attr, optres, true, opts.bbox and 4 or 1) + patterns[name] = { id = index, colored = opts.colored } + else + local cnt = #patterns + 1 + local objname = "@mplibpattern" .. cnt + local metric = format("bbox %s", opts.bbox or format("0 0 %s %s",wd,hd)) texsprint { - [[\ifvmode\nointerlineskip\fi]], - format([[\hbox to0pt{\vbox to0pt{\hsize=\wd %i\vss\noindent]], boxid), -- force horiz mode? - [[\special{pdf:bcontent}]], - [[\special{pdf:bxobj ]], objname, format(" %s}", metric), - format([[\raise\dp %i\box %i]], boxid, boxid), - format([[\special{pdf:put @resources <<%s>>}]], optres), - [[\special{pdf:exobj <<]], tableconcat(attr), ">>}", - [[\special{pdf:econtent}]], - [[\par}\hss}]], + "\\expandafter\\newbox\\csname luamplib.patternbox.", cnt, "\\endcsname", + "\\global\\setbox\\csname luamplib.patternbox.", cnt, "\\endcsname", + "\\hbox{\\unhbox ", boxid, "}\\luamplibatnextshipout{", + "\\special{pdf:bcontent}", + "\\special{pdf:bxobj ", objname, " ", metric, "}", + "\\raise\\dp\\csname luamplib.patternbox.", cnt, "\\endcsname", + "\\box\\csname luamplib.patternbox.", cnt, "\\endcsname", + "\\special{pdf:put @resources <<", optres, ">>}", + "\\special{pdf:exobj <<", tableconcat(attr), ">>}", + "\\special{pdf:econtent}}", } - patterns[#patterns+1] = objname - patterns[name] = { id = #patterns, colored = opts.colored } + patterns[cnt] = objname + patterns[name] = { id = cnt, colored = opts.colored } end end local function pattern_colorspace (cs) local on, new = update_pdfobjs(format("[/Pattern %s]", cs)) if new then - local key = format("MPlibCS%i",on) - local val = pdfmode and format("%i 0 R",on) or format("@mplibpdfobj%i",on) + local key, val = format("MPlibCS%i",on), format(pdfetcs.resfmt,on) if pdfmanagement then texsprint { "\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/ColorSpace}{", key, "}{", val, "}" @@ -3138,21 +3522,17 @@ local function pattern_colorspace (cs) local res = format("/%s %s", key, val) if is_defined(pdfetcs.pgfcolorspace) then texsprint { "\\csname ", pdfetcs.pgfcolorspace, "\\endcsname{", res, "}" } - elseif pdfmode then - pdfetcs.fallback_update_resources("ColorSpace", res) else - texsprint { "\\special{pdf:put @MPlibCS<<", res, ">>}" } + pdfetcs.fallback_update_resources("ColorSpace",res,"@MPlibCS") end end end - if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfcolorspace) then - texsprint"\\special{pdf:put @resources <</ColorSpace @MPlibCS>>}" - end return on end local function do_preobj_PAT(object, prescript) local name = prescript and prescript.mplibpattern if not name then return end + local patterns = pdfetcs.patterns local patt = patterns[name] local index = patt and patt.id or err("cannot get pattern object '%s'", name) local key = format("MPlibPt%s",index) @@ -3192,21 +3572,327 @@ local function do_preobj_PAT(object, prescript) local res = format("/%s %s", key, val) if is_defined(pdfetcs.pgfpattern) then texsprint { "\\csname ", pdfetcs.pgfpattern, "\\endcsname{", res, "}" } - elseif pdfmode then - pdfetcs.fallback_update_resources("Pattern", res) else - texsprint { "\\special{pdf:put @MPlibPt<<", res, ">>}" } + pdfetcs.fallback_update_resources("Pattern",res,"@MPlibPt") end end end - if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfpattern) then - texsprint"\\special{pdf:put @resources <</Pattern @MPlibPt>>}" - end patt.done = true end % \end{macrocode} % +% Fading +% \begin{macrocode} +pdfetcs.fading = { } +local function do_preobj_FADE (object, prescript) + local fd_type = prescript and prescript.mplibfadetype + local fd_stop = prescript and prescript.mplibfadestate + if not fd_type then + return fd_stop -- returns "stop" (if picture) or nil + end + local bbox = prescript.mplibfadebbox:explode":" + local dx, dy = -bbox[1], -bbox[2] + local vec = prescript.mplibfadevector; vec = vec and vec:explode":" + if not vec then + if fd_type == "linear" then + vec = {bbox[1], bbox[2], bbox[3], bbox[2]} -- left to right + else + local centerx, centery = (bbox[1]+bbox[3])/2, (bbox[2]+bbox[4])/2 + vec = {centerx, centery, centerx, centery} -- center for both circles + end + end + local coords = { vec[1]+dx, vec[2]+dy, vec[3]+dx, vec[4]+dy } + if fd_type == "linear" then + coords = format("%f %f %f %f", tableunpack(coords)) + elseif fd_type == "circular" then + local width, height = bbox[3]-bbox[1], bbox[4]-bbox[2] + local radius = (prescript.mplibfaderadius or "0:"..math.sqrt(width^2+height^2)/2):explode":" + tableinsert(coords, 3, radius[1]) + tableinsert(coords, radius[2]) + coords = format("%f %f %f %f %f %f", tableunpack(coords)) + else + err("unknown fading method '%s'", fd_type) + end + fd_type = fd_type == "linear" and 2 or 3 + local opaq = (prescript.mplibfadeopacity or "1:0"):explode":" + local on, os, new + on = sh_pdfpageresources(fd_type, "0 1", "/DeviceGray", {{opaq[1]}}, {{opaq[2]}}, coords, 1) + os = format("<</PatternType 2/Shading %s>>", format(pdfetcs.resfmt, on)) + on = update_pdfobjs(os) + bbox = format("0 0 %f %f", bbox[3]+dx, bbox[4]+dy) + local streamtext = format("q /Pattern cs/MPlibFd%s scn %s re f Q", on, bbox) + :gsub(decimals,rmzeros) + os = format("<</Pattern<</MPlibFd%s %s>>>>", on, format(pdfetcs.resfmt, on)) + on = update_pdfobjs(os) + local resources = format(pdfetcs.resfmt, on) + on = update_pdfobjs"<</S/Transparency/CS/DeviceGray>>" + local attr = tableconcat{ + "/Subtype/Form", + "/BBox[", bbox, "]", + "/Matrix[1 0 0 1 ", format("%f %f", -dx,-dy), "]", + "/Resources ", resources, + "/Group ", format(pdfetcs.resfmt, on), + } :gsub(decimals,rmzeros) + on = update_pdfobjs(attr, streamtext) + os = "<</SMask<</S/Luminosity/G " .. format(pdfetcs.resfmt, on) .. ">>>>" + on, new = update_pdfobjs(os) + local key = add_extgs_resources(on,new) + start_pdf_code() + pdf_literalcode("/%s gs", key) + if fd_stop then return "standalone" end + return "start" +end + +% \end{macrocode} +% +% Transparency Group +% \begin{macrocode} +pdfetcs.tr_group = { shifts = { } } +luamplib.trgroupshifts = pdfetcs.tr_group.shifts +local function do_preobj_GRP (object, prescript) + local grstate = prescript and prescript.gr_state + if not grstate then return end + local trgroup = pdfetcs.tr_group + if grstate == "start" then + trgroup.name = prescript.mplibgroupname or "lastmplibgroup" + trgroup.isolated, trgroup.knockout = false, false + for _,v in ipairs(prescript.gr_type:explode",+") do + trgroup[v] = true + end + trgroup.bbox = prescript.mplibgroupbbox:explode":" + put2output[[\begingroup\setbox\mplibscratchbox\hbox\bgroup]] + elseif grstate == "stop" then + local llx,lly,urx,ury = tableunpack(trgroup.bbox) + put2output(tableconcat{ + "\\egroup", + format("\\wd\\mplibscratchbox %fbp", urx-llx), + format("\\ht\\mplibscratchbox %fbp", ury-lly), + "\\dp\\mplibscratchbox 0pt", + }) + local grattr = format("/Group<</S/Transparency/I %s/K %s>>",trgroup.isolated,trgroup.knockout) + local res = gather_resources() + local bbox = format("%f %f %f %f", llx,lly,urx,ury) :gsub(decimals,rmzeros) + if pdfmode then + put2output(tableconcat{ + "\\saveboxresource type 2 attr{/Type/XObject/Subtype/Form/FormType 1", + "/BBox[", bbox, "]", grattr, "} resources{", res, "}\\mplibscratchbox", + [[\setbox\mplibscratchbox\hbox{\useboxresource\lastsavedboxresourceindex}]], + [[\wd\mplibscratchbox 0pt\ht\mplibscratchbox 0pt\dp\mplibscratchbox 0pt]], + [[\box\mplibscratchbox\endgroup]], + "\\expandafter\\xdef\\csname luamplib.group.", trgroup.name, "\\endcsname{", + "\\noexpand\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}", + "\\useboxresource \\the\\lastsavedboxresourceindex\\noexpand\\mplibstoptoPDF}", + }) + else + trgroup.cnt = (trgroup.cnt or 0) + 1 + local objname = format("@mplibtrgr%s", trgroup.cnt) + put2output(tableconcat{ + "\\special{pdf:bxobj ", objname, " bbox ", bbox, "}", + "\\unhbox\\mplibscratchbox", + "\\special{pdf:put @resources <<", res, ">>}", + "\\special{pdf:exobj <<", grattr, ">>}", + "\\special{pdf:uxobj ", objname, "}\\endgroup", + }) + token.set_macro("luamplib.group."..trgroup.name, tableconcat{ + "\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}", + "\\special{pdf:uxobj ", objname, "}\\mplibstoptoPDF", + }, "global") + end + trgroup.shifts[trgroup.name] = { llx, lly } + end + return grstate +end +function luamplib.registergroup (boxid, name, opts) + local box = texgetbox(boxid) + local wd, ht, dp = node.getwhd(box) + local res = (opts.resources or "") .. gather_resources() + local attr = { "/Type/XObject/Subtype/Form/FormType 1" } + if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end + if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end + if opts.matrix and opts.matrix:find"%a" then + local data = format("mplibtransformmatrix(%s);",opts.matrix) + process(data,"@mplibtransformmatrix") + opts.matrix = format("%f %f %f %f %f %f",tableunpack(luamplib.transformmatrix)) + end + local grtype = 3 + if opts.bbox then + attr[#attr+1] = format("/BBox[%s]", opts.bbox) + grtype = 2 + end + if opts.matrix then + attr[#attr+1] = format("/Matrix[%s]", opts.matrix) + grtype = opts.bbox and 4 or 1 + end + if opts.asgroup then + local t = { isolated = false, knockout = false } + for _,v in ipairs(opts.asgroup:explode",+") do t[v] = true end + attr[#attr+1] = format("/Group<</S/Transparency/I %s/K %s>>", t.isolated, t.knockout) + end + local trgroup = pdfetcs.tr_group + trgroup.shifts[name] = { get_macro'MPllx', get_macro'MPlly' } + local whd + local tagpdf = is_defined'picture@tag@bbox@attribute' + if pdfmode then + attr = tableconcat(attr) :gsub(decimals,rmzeros) + local index = tex.saveboxresource(boxid, attr, res, true, grtype) + token.set_macro("luamplib.group."..name, tableconcat{ + "\\prependtomplibbox\\hbox\\bgroup", + tagpdf and "\\luamplibtaggingbegin\\setbox\\mplibscratchbox\\hbox\\bgroup" or "", + "\\useboxresource ", index, + tagpdf and "\\egroup\\luamplibtaggingBBox\\unhbox\\mplibscratchbox\\luamplibtaggingend" or "", + "\\egroup", + }, "global") + whd = format("%.3f %.3f 0", wd/factor, (ht+dp)/factor) :gsub(decimals,rmzeros) + else + trgroup.cnt = (trgroup.cnt or 0) + 1 + local objname = format("@mplibtrgr%s", trgroup.cnt) + texsprint { + "\\expandafter\\newbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname", + "\\global\\setbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname", + "\\hbox{\\unhbox ", boxid, "}\\luamplibatnextshipout{", + "\\special{pdf:bcontent}", + "\\special{pdf:bxobj ", objname, " width ", wd, "sp height ", ht, "sp depth ", dp, "sp}", + "\\unhbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname", + "\\special{pdf:put @resources <<", res, ">>}", + "\\special{pdf:exobj <<", tableconcat(attr), ">>}", + "\\special{pdf:econtent}}", + } + token.set_macro("luamplib.group."..name, tableconcat{ + "\\prependtomplibbox\\hbox\\bgroup", + tagpdf and "\\luamplibtaggingbegin" or "", + "\\setbox\\mplibscratchbox\\hbox{\\special{pdf:uxobj ", objname, "}}", + "\\wd\\mplibscratchbox ", wd, "sp", + "\\ht\\mplibscratchbox ", ht, "sp", + "\\dp\\mplibscratchbox ", dp, "sp", + tagpdf and "\\luamplibtaggingBBox" or "", + "\\box\\mplibscratchbox", + tagpdf and "\\luamplibtaggingend" or "", + "\\egroup", + }, "global") + whd = format("%.3f %.3f %.3f", wd/factor, ht/factor, dp/factor) :gsub(decimals,rmzeros) + end + info("w/h/d of group '%s': %s", name, whd) +end + +local function stop_special_effects(fade,opaq,over) + if fade then -- fading + stop_pdf_code() + end + if opaq then -- opacity + pdf_literalcode(opaq) + end + if over then -- color + put2output"\\special{pdf:ec}" + end +end + +% \end{macrocode} +% +% Codes below for inserting PDF lieterals are mostly from ConTeXt general, +% with small changes when needed. +% \begin{macrocode} +local function getobjects(result,figure,f) + return figure:objects() +end + +function luamplib.convert (result, flusher) + luamplib.flush(result, flusher) + return true -- done +end + +local function pdf_textfigure(font,size,text,width,height,depth) + text = text:gsub(".",function(c) + return format("\\hbox{\\char%i}",string.byte(c)) -- kerning happens in metapost : false + end) + put2output("\\mplibtextext{%s}{%f}{%s}{%s}{%s}",font,size,text,0,0) +end + +local bend_tolerance = 131/65536 + +local rx, sx, sy, ry, tx, ty, divider = 1, 0, 0, 1, 0, 0, 1 + +local function pen_characteristics(object) + local t = mplib.pen_info(object) + rx, ry, sx, sy, tx, ty = t.rx, t.ry, t.sx, t.sy, t.tx, t.ty + divider = sx*sy - rx*ry + return not (sx==1 and rx==0 and ry==0 and sy==1 and tx==0 and ty==0), t.width +end + +local function concat(px, py) -- no tx, ty here + return (sy*px-ry*py)/divider,(sx*py-rx*px)/divider +end + +local function curved(ith,pth) + local d = pth.left_x - ith.right_x + if abs(ith.right_x - ith.x_coord - d) <= bend_tolerance and abs(pth.x_coord - pth.left_x - d) <= bend_tolerance then + d = pth.left_y - ith.right_y + if abs(ith.right_y - ith.y_coord - d) <= bend_tolerance and abs(pth.y_coord - pth.left_y - d) <= bend_tolerance then + return false + end + end + return true +end + +local function flushnormalpath(path,open) + local pth, ith + for i=1,#path do + pth = path[i] + if not ith then + pdf_literalcode("%f %f m",pth.x_coord,pth.y_coord) + elseif curved(ith,pth) then + pdf_literalcode("%f %f %f %f %f %f c",ith.right_x,ith.right_y,pth.left_x,pth.left_y,pth.x_coord,pth.y_coord) + else + pdf_literalcode("%f %f l",pth.x_coord,pth.y_coord) + end + ith = pth + end + if not open then + local one = path[1] + if curved(pth,one) then + pdf_literalcode("%f %f %f %f %f %f c",pth.right_x,pth.right_y,one.left_x,one.left_y,one.x_coord,one.y_coord ) + else + pdf_literalcode("%f %f l",one.x_coord,one.y_coord) + end + elseif #path == 1 then -- special case .. draw point + local one = path[1] + pdf_literalcode("%f %f l",one.x_coord,one.y_coord) + end +end + +local function flushconcatpath(path,open) + pdf_literalcode("%f %f %f %f %f %f cm", sx, rx, ry, sy, tx ,ty) + local pth, ith + for i=1,#path do + pth = path[i] + if not ith then + pdf_literalcode("%f %f m",concat(pth.x_coord,pth.y_coord)) + elseif curved(ith,pth) then + local a, b = concat(ith.right_x,ith.right_y) + local c, d = concat(pth.left_x,pth.left_y) + pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(pth.x_coord, pth.y_coord)) + else + pdf_literalcode("%f %f l",concat(pth.x_coord, pth.y_coord)) + end + ith = pth + end + if not open then + local one = path[1] + if curved(pth,one) then + local a, b = concat(pth.right_x,pth.right_y) + local c, d = concat(one.left_x,one.left_y) + pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(one.x_coord, one.y_coord)) + else + pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord)) + end + elseif #path == 1 then -- special case .. draw point + local one = path[1] + pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord)) + end +end + +% \end{macrocode} +% % Finally, flush figures by inserting PDF literals. % \begin{macrocode} function luamplib.flush (result,flusher) @@ -3226,11 +3912,11 @@ function luamplib.flush (result,flusher) % luamplib silently ignores this invalid figure for those % that do not contain |beginfig ... endfig|. (issue \#70) % Original code of ConTeXt general was: -% \begin{verbatim} +%\begin{verbatim} % -- invalid % pdf_startfigure(fignum,0,0,0,0) % pdf_stopfigure() -% \end{verbatim} +%\end{verbatim} % \begin{macrocode} else % \end{macrocode} @@ -3248,13 +3934,16 @@ function luamplib.flush (result,flusher) local object = objects[o] local objecttype = object.type % \end{macrocode} -% The following 6 lines are part of |btex...etex| patch. +% The following 9 lines are part of |btex...etex| patch. % Again, colors are processed at this stage. % \begin{macrocode} local prescript = object.prescript prescript = prescript and script2table(prescript) -- prescript is now a table local cr_over = do_preobj_CR(object,prescript) -- color local tr_opaq = do_preobj_TR(object,prescript) -- opacity + local fading_ = do_preobj_FADE(object,prescript) -- fading + local trgroup = do_preobj_GRP(object,prescript) -- transparency group + local pattern_ = do_preobj_PAT(object,prescript) -- pattern if prescript and prescript.mplibtexboxid then put_tex_boxes(object,prescript) elseif objecttype == "start_bounds" or objecttype == "stop_bounds" then --skip @@ -3280,7 +3969,7 @@ function luamplib.flush (result,flusher) pdf_literalcode("%f %f %f %f %f %f cm",ot[3],ot[4],ot[5],ot[6],ot[1],ot[2]) pdf_textfigure(object.font,object.dsize,object.text,object.width,object.height,object.depth) stop_pdf_code() - else + elseif not trgroup and fading_ ~= "stop" then local evenodd, collect, both = false, false, false local postscript = object.postscript if not object.istext then @@ -3306,10 +3995,7 @@ function luamplib.flush (result,flusher) else % \end{macrocode} % Removed from ConTeXt general: color stuff. -% Added instead : shading stuff % \begin{macrocode} - local shade_no = do_preobj_SH(object,prescript) -- shading - local pattern_ = do_preobj_PAT(object,prescript) -- pattern local ml = object.miterlimit if ml and ml ~= miterlimit then miterlimit = ml @@ -3351,6 +4037,14 @@ function luamplib.flush (result,flusher) objecttype = 'fill' end end +% \end{macrocode} +% Added : shading +% \begin{macrocode} + local shade_no = do_preobj_SH(object,prescript) -- shading + if shade_no then + pdf_literalcode"q /Pattern cs" + objecttype = false + end if transformed then start_pdf_code() end @@ -3371,27 +4065,25 @@ function luamplib.flush (result,flusher) else flushnormalpath(path,open) end -% \end{macrocode} -% Shading seems to conflict with these ops -% \begin{macrocode} - if not shade_no then -- conflict with shading - if objecttype == "fill" then - pdf_literalcode(evenodd and "h f*" or "h f") - elseif objecttype == "outline" then - if both then - pdf_literalcode(evenodd and "h B*" or "h B") - else - pdf_literalcode(open and "S" or "h S") - end - elseif objecttype == "both" then + if objecttype == "fill" then + pdf_literalcode(evenodd and "h f*" or "h f") + elseif objecttype == "outline" then + if both then pdf_literalcode(evenodd and "h B*" or "h B") + else + pdf_literalcode(open and "S" or "h S") end + elseif objecttype == "both" then + pdf_literalcode(evenodd and "h B*" or "h B") end end if transformed then stop_pdf_code() end local path = object.htap +% \end{macrocode} +% How can we generate an |htap| object? Please let us know if you have succeeded. +% \begin{macrocode} if path then if transformed then start_pdf_code() @@ -3425,18 +4117,29 @@ function luamplib.flush (result,flusher) end end % \end{macrocode} -% Added to ConTeXt general: post-object color and shading stuff. +% Added to ConTeXt general: post-object colors and shading stuff. +% We should beware the |q ... Q| scope. % \begin{macrocode} if shade_no then -- shading - pdf_literalcode("W n /MPlibSh%s sh Q",shade_no) + pdf_literalcode("W%s n /MPlibSh%s sh Q",evenodd and "*" or "",shade_no) end end end - if tr_opaq then -- opacity - stop_pdf_code() + if fading_ == "start" then + pdfetcs.fading.specialeffects = {fading_, tr_opaq, cr_over} + elseif trgroup == "start" then + pdfetcs.tr_group.specialeffects = {fading_, tr_opaq, cr_over} + elseif fading_ == "stop" then + local se = pdfetcs.fading.specialeffects + if se then stop_special_effects(se[1], se[2], se[3]) end + elseif trgroup == "stop" then + local se = pdfetcs.tr_group.specialeffects + if se then stop_special_effects(se[1], se[2], se[3]) end + else + stop_special_effects(fading_, tr_opaq, cr_over) end - if cr_over then -- color - put2output"\\special{pdf:ec}" + if fading_ or trgroup then -- extgs resetted + miterlimit, linecap, linejoin, dashed = -1, -1, -1, false end end end @@ -3489,15 +4192,34 @@ end % First we need to load some packages. % % \begin{macrocode} -\bgroup\expandafter\expandafter\expandafter\egroup -\expandafter\ifx\csname selectfont\endcsname\relax - \input ltluatex -\else +\ifcsname ProvidesPackage\endcsname +% \end{macrocode} +% We need \LaTeX\ 2024-06-01 as we use |ltx.pdf.object_id| when pdfmanagement is loaded. +% But as \pkg{fp} package does not accept an option, we do not append the date option. +% \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luamplib} - [2024/06/21 v2.32.3 mplib package for LuaTeX] - \ifx\newluafunction\@undefined + [2024/11/12 v2.35.0 mplib package for LuaTeX] +\fi +\ifdefined\newluafunction\else \input ltluatex +\fi +% \end{macrocode} +% +% In DVI mode, a new XObject (mppattern, mplibgroup) must be encapsulated in an \cs{hbox}. +% But this should not affect typesetting. So we use Hook mechanism provided by \LaTeX\ kernel. +% In Plain, \pkg{atbegshi.sty} is loaded. +% \begin{macrocode} +\ifnum\outputmode=0 + \ifdefined\AddToHookNext + \def\luamplibatnextshipout{\AddToHookNext{shipout/background}} + \def\luamplibatfirstshipout{\AddToHook{shipout/firstpage}} + \def\luamplibateveryshipout{\AddToHook{shipout/background}} + \else + \input atbegshi.sty + \def\luamplibatnextshipout#1{\AtBeginShipoutNext{\AtBeginShipoutAddToBox{#1}}} + \let\luamplibatfirstshipout\AtBeginShipoutFirst + \def\luamplibateveryshipout#1{\AtBeginShipout{\AtBeginShipoutAddToBox{#1}}} \fi \fi % \end{macrocode} @@ -3517,7 +4239,7 @@ end \fi % \end{macrocode} % -% Set the format for metapost. +% Set the format for \metapost. % \begin{macrocode} \def\mplibsetformat#1{\directlua{luamplib.setformat("#1")}} % \end{macrocode} @@ -3559,6 +4281,40 @@ end \def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\copy#1\hss}}} % \end{macrocode} % +% use Transparency Group +% \begin{macrocode} +\protected\def\usemplibgroup#1#{\usemplibgroupmain} +\def\usemplibgroupmain#1{\csname luamplib.group.#1\endcsname} +\protected\def\mplibgroup#1{% + \begingroup + \def\MPllx{0}\def\MPlly{0}% + \def\mplibgroupname{#1}% + \mplibgroupgetnexttok +} +\def\mplibgroupgetnexttok{\futurelet\nexttok\mplibgroupbranch} +\def\mplibgroupskipspace{\afterassignment\mplibgroupgetnexttok\let\nexttok= } +\def\mplibgroupbranch{% + \ifx [\nexttok + \expandafter\mplibgroupopts + \else + \ifx\mplibsptoken\nexttok + \expandafter\expandafter\expandafter\mplibgroupskipspace + \else + \let\mplibgroupoptions\empty + \expandafter\expandafter\expandafter\mplibgroupmain + \fi + \fi +} +\def\mplibgroupopts[#1]{\def\mplibgroupoptions{#1}\mplibgroupmain} +\def\mplibgroupmain{\setbox\mplibscratchbox\hbox\bgroup\ignorespaces} +\protected\def\endmplibgroup{\egroup + \directlua{ luamplib.registergroup( + \the\mplibscratchbox, '\mplibgroupname', {\mplibgroupoptions} + )}% + \endgroup +} +% \end{macrocode} +% % Patterns % \begin{macrocode} {\def\:{\global\let\mplibsptoken= } \: } @@ -3597,7 +4353,7 @@ end } % \end{macrocode} % -% simple way to use mplib: +% simple way to use \mplib: % |\mpfig draw fullcircle scaled 10; \endmpfig| % \begin{macrocode} \def\mpfiginstancename{@mpfig} @@ -3609,9 +4365,14 @@ end \ifx *\nexttok \expandafter\mplibprempfig \else - \expandafter\mplibmainmpfig + \ifx [\nexttok + \expandafter\expandafter\expandafter\mplibgobbleoptsmpfig + \else + \expandafter\expandafter\expandafter\mplibmainmpfig + \fi \fi } +\def\mplibgobbleoptsmpfig[#1]{\mplibmainmpfig} \def\mplibmainmpfig{% \begingroup \mplibsetupcatcodes @@ -3620,16 +4381,16 @@ end \long\def\mplibdomainmpfig#1\endmpfig{% \endgroup \directlua{ - local legacy = luamplib.legacy_verbatimtex + local legacy = luamplib.legacyverbatimtex local everympfig = luamplib.everymplib["\mpfiginstancename"] or "" local everyendmpfig = luamplib.everyendmplib["\mpfiginstancename"] or "" - luamplib.legacy_verbatimtex = false + luamplib.legacyverbatimtex = false luamplib.everymplib["\mpfiginstancename"] = "" luamplib.everyendmplib["\mpfiginstancename"] = "" luamplib.process_mplibcode( "beginfig(0) "..everympfig.." "..[===[\unexpanded{#1}]===].." "..everyendmpfig.." endfig;", "\mpfiginstancename") - luamplib.legacy_verbatimtex = legacy + luamplib.legacyverbatimtex = legacy luamplib.everymplib["\mpfiginstancename"] = everympfig luamplib.everyendmplib["\mpfiginstancename"] = everyendmpfig }% @@ -3643,14 +4404,14 @@ end \long\def\mplibdoprempfig#1\endmpfig{% \endgroup \directlua{ - local legacy = luamplib.legacy_verbatimtex + local legacy = luamplib.legacyverbatimtex local everympfig = luamplib.everymplib["\mpfiginstancename"] local everyendmpfig = luamplib.everyendmplib["\mpfiginstancename"] - luamplib.legacy_verbatimtex = false + luamplib.legacyverbatimtex = false luamplib.everymplib["\mpfiginstancename"] = "" luamplib.everyendmplib["\mpfiginstancename"] = "" luamplib.process_mplibcode([===[\unexpanded{#1}]===],"\mpfiginstancename") - luamplib.legacy_verbatimtex = legacy + luamplib.legacyverbatimtex = legacy luamplib.everymplib["\mpfiginstancename"] = everympfig luamplib.everyendmplib["\mpfiginstancename"] = everyendmpfig }% @@ -3729,9 +4490,9 @@ end \def\mpliblegacybehavior#1{\directlua{ local s = string.lower("#1") if s == "enable" or s == "true" or s == "yes" then - luamplib.legacy_verbatimtex = true + luamplib.legacyverbatimtex = true else - luamplib.legacy_verbatimtex = false + luamplib.legacyverbatimtex = false end }} \def\mplibverbatim#1{\directlua{ @@ -3803,14 +4564,13 @@ end % % Allow \TeX\ dimen/color macros. Now |runscript| does the job, % so the following lines are not needed for most cases. -% But the macros will be expanded when they are used in another macro. % \begin{macrocode} \def\mpdim#1{ runscript("luamplibdimen{#1}") } \def\mpcolor#1#{\domplibcolor{#1}} \def\domplibcolor#1#2{ runscript("luamplibcolor{#1{#2}}") } % \end{macrocode} % -% MPLib's number system. Now |binary| has gone away. +% \mplib's number system. Now |binary| has gone away. % \begin{macrocode} \def\mplibnumbersystem#1{\directlua{ local t = "#1" @@ -3875,12 +4635,13 @@ end % \end{macrocode} % % The followings are from ConTeXt general, mostly. -% % We use a dedicated scratchbox. +% +% We use a dedicated scratchbox. % \begin{macrocode} \ifx\mplibscratchbox\undefined \newbox\mplibscratchbox \fi % \end{macrocode} % -% We encapsulate the litterals. +% We encapsulate the literals. % \begin{macrocode} \def\mplibstarttoPDF#1#2#3#4{% \prependtomplibbox @@ -3946,6 +4707,343 @@ end \fi % \end{macrocode} % +% Code for \pkg{tagpdf} +% \begin{macrocode} +\def\luamplibtagtextbegin#1{} +\let\luamplibtagtextend\relax +\ifcsname SuspendTagging\endcsname\else\endinput\fi +\ifcsname picture@tag@bbox@attribute\endcsname \else + \ExplSyntaxOn + \keys_define:nn{luamplib/notag} + { + ,alt .code:n = { } + ,actualtext .code:n = { } + ,artifact .code:n = { } + ,text .code:n = { } + ,correct-BBox .code:n = { } + ,tag .code:n = { } + ,debug .code:n = { } + ,instance .code:n = { \tl_gset:Nn \currentmpinstancename {#1} } + ,instancename .meta:n = { instance = {#1} } + ,unknown .code:n = { \tl_gset:Ne \currentmpinstancename {\l_keys_key_str} } + } + \RenewDocumentCommand\mplibcode{O{}} + { + \tl_gset_eq:NN \currentmpinstancename \c_empty_tl + \keys_set:nn{luamplib/notag}{#1} + \mplibtmptoks{}\ltxdomplibcode + } + \ExplSyntaxOff + \let\mplibalttext \luamplibtagtextbegin + \let\mplibactualtext \mplibalttext + \endinput\fi +\let\mplibstarttoPDForiginal\mplibstarttoPDF +\let\mplibstoptoPDForiginal\mplibstoptoPDF +\let\mplibputtextboxoriginal\mplibputtextbox +\ExplSyntaxOn +\tl_new:N \l__tag_luamplib_alt_tl +\tl_new:N \l__tag_luamplib_alt_dflt_tl +\tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure} +\tl_new:N \l__tag_luamplib_actual_tl +\tl_new:N \l__tag_luamplib_struct_tl +\tl_set:Nn\l__tag_luamplib_struct_tl {Figure} +\bool_new:N \l__tag_luamplib_usetext_bool +\bool_set_false:N \l__tag_luamplib_usetext_bool +\cs_set_nopar:Npn \luamplibtagtextbegin #1 +{ + \bool_if:NTF \l__tag_luamplib_usetext_bool + { + \tag_mc_end_push: + \tag_struct_begin:n{tag=NonStruct,stash} + \tag_if_active:T { + \expandafter\xdef\csname luamplib.tagbox.#1\endcsname{\tag_get:n{struct_num}} + } + \tag_mc_begin:n{} + } + { + \tag_if_active:TF + { \chardef\mplibtmpnum\@ne } + { \chardef\mplibtmpnum\z@ } + \SuspendTagging{luamplib.textext} + } +} +\cs_set_nopar:Npn \luamplibtagtextend +{ + \bool_if:NTF \l__tag_luamplib_usetext_bool + { + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin_pop:n{} + } + { + \ifnum\mplibtmpnum=\@ne + \ResumeTagging{luamplib.textext} + \fi + } +} +\msg_new:nnn {luamplib}{figure-text-reuse} +{ + textext~box~#1~probably~is~incorrectly~tagged.\\ + Reusing~a~box~in~text-keyed~figures~is~strongly~discouraged. +} +\cs_set_nopar:Npn \mplibputtextbox #1 +{ + \vbox to 0pt{\vss\hbox to 0pt{% + \bool_if:NTF \l__tag_luamplib_usetext_bool + { + \ResumeTagging{luamplib.puttextbox} + \tag_mc_end: + \cs_if_exist:cTF {luamplib.tagbox.#1} + { + \tag_struct_use_num:n {\csname luamplib.tagbox.#1\endcsname} + \raise\dp#1\copy#1\hss + } + { + \msg_warning:nnn{luamplib}{figure-text-reuse}{#1} + \tag_mc_begin:n{} + \chardef\mplibtmpnum=#1\relax + \tag_mc_reset_box:N \mplibtmpnum + \raise\dp#1\copy#1\hss + \tag_mc_end: + } + \tag_mc_begin:n{artifact} + } + { + \chardef\mplibtmpnum=#1\relax + \tag_mc_reset_box:N \mplibtmpnum + \raise\dp#1\copy#1\hss + } + }} +} +\cs_new_nopar:Npn \__luamplib_tagging_begin_figure: +{ + \tag_if_active:T + { + \tag_mc_end_push: + \tl_if_empty:NT\l__tag_luamplib_alt_tl + { + \msg_warning:nne{luamplib}{alt-text-missing}{\l__tag_luamplib_alt_dflt_tl} + \tl_set:Ne\l__tag_luamplib_alt_tl {\l__tag_luamplib_alt_dflt_tl} + } + \tag_struct_begin:n + { + tag=\l__tag_luamplib_struct_tl, + alt=\l__tag_luamplib_alt_tl, + } + \tag_mc_begin:n{} + } +} +\cs_new_nopar:Npn \__luamplib_tagging_end_figure: +{ + \tag_if_active:T + { + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin_pop:n{} + } +} +\cs_new_nopar:Npn \__luamplib_tagging_begin_actualtext: +{ + \tag_if_active:T + { + \tag_mc_end_push: + \tag_struct_begin:n + { + tag=Span, + actualtext=\l__tag_luamplib_actual_tl, + } + \tag_mc_begin:n{} + } +} +\cs_set_eq:NN \__luamplib_tagging_end_actualtext: \__luamplib_tagging_end_figure: +\cs_new_nopar:Npn \__luamplib_tagging_begin_artifact: +{ + \tag_if_active:T + { + \tag_mc_end_push: + \tag_mc_begin:n{artifact} + } +} +\cs_new_nopar:Npn \__luamplib_tagging_end_artifact: +{ + \tag_if_active:T + { + \tag_mc_end: + \tag_mc_begin_pop:n{} + } +} +\cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_figure: +\cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_figure: +\keys_define:nn{luamplib/tag} + { + ,alt .code:n = + { + \bool_set_true:N \l__tag_graphic_BBox_bool + \bool_set_false:N \l__tag_luamplib_usetext_bool + \tl_set:Ne\l__tag_luamplib_alt_tl{\text_purify:n{#1}} + } + ,actualtext .code:n = + { + \bool_set_false:N \l__tag_graphic_BBox_bool + \bool_set_false:N \l__tag_luamplib_usetext_bool + \tl_set:Ne\l__tag_luamplib_actual_tl{\text_purify:n{#1}} + \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_actualtext: + \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_actualtext: + \tag_if_active:T {\noindent} + } + ,artifact .code:n = + { + \bool_set_false:N \l__tag_graphic_BBox_bool + \bool_set_false:N \l__tag_luamplib_usetext_bool + \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact: + \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact: + } + ,text .code:n = + { + \bool_set_false:N \l__tag_graphic_BBox_bool + \bool_set_true:N \l__tag_luamplib_usetext_bool + \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact: + \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact: + \tag_if_active:T {\noindent} + } + ,correct-BBox .code:n = + { + \bool_set_true:N \l__tag_graphic_bboxcorr_bool + \seq_set_split:Nnn\l__tag_graphic_bboxcorr_seq{~}{#1~0pt~0pt~0pt~0pt} + } + ,tag .code:n = + { + \str_case:nnF {#1} + { + {artifact} + { + \bool_set_false:N \l__tag_graphic_BBox_bool + \bool_set_false:N \l__tag_luamplib_usetext_bool + \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact: + \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact: + } + {text} + { + \bool_set_false:N \l__tag_graphic_BBox_bool + \bool_set_true:N \l__tag_luamplib_usetext_bool + \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact: + \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact: + \tag_if_active:T {\noindent} + } + {false} + { + \SuspendTagging{luamplib.tagfalse} + } + } + { + \tl_set:Nn\l__tag_luamplib_struct_tl{#1} + } + } + ,debug .code:n = + { \bool_set_true:N \l__tag_graphic_debug_bool } + ,instance .code:n = + { \tl_gset:Nn \currentmpinstancename {#1} } + ,instancename .meta:n = { instance = {#1} } + ,unknown .code:n = + { \tl_gset:Ne \currentmpinstancename {\l_keys_key_str} } + } +\cs_new_nopar:Npn \luamplibtaggingBBox +{ + \let\@picbox\mplibscratchbox \picture@tag@bbox@attribute +} +\cs_set_nopar:Npn \mplibstarttoPDF #1 #2 #3 #4 + { + \prependtomplibbox + \hbox dir TLT\bgroup + \luamplibtaggingbegin % begin tagging + \xdef\MPllx{#1}\xdef\MPlly{#2}% + \xdef\MPurx{#3}\xdef\MPury{#4}% + \xdef\MPwidth{\the\dimexpr#3bp-#1bp\relax}% + \xdef\MPheight{\the\dimexpr#4bp-#2bp\relax}% + \parskip0pt + \leftskip0pt + \parindent0pt + \everypar{}% + \setbox\mplibscratchbox\vbox\bgroup + \SuspendTagging{luamplib.mplibtopdf}% stop tag inside figure + \noindent + } +\cs_set_nopar:Npn \mplibstoptoPDF + { + \par + \egroup + \setbox\mplibscratchbox\hbox + {\hskip-\MPllx bp + \raise-\MPlly bp + \box\mplibscratchbox}% + \setbox\mplibscratchbox\vbox to \MPheight + {\vfill + \hsize\MPwidth + \wd\mplibscratchbox0pt + \ht\mplibscratchbox0pt + \dp\mplibscratchbox0pt + \box\mplibscratchbox}% + \wd\mplibscratchbox\MPwidth + \ht\mplibscratchbox\MPheight + \luamplibtaggingBBox % BBox + \box\mplibscratchbox + \luamplibtaggingend % end tagging + \egroup + } +\RenewDocumentCommand\mplibcode{O{}} + { + \msg_set:nnn {luamplib}{alt-text-missing} + { + Alternative~text~for~mplibcode~is~missing.\\ + Using~the~default~value~'##1'~instead. + } + \tl_gset_eq:NN \currentmpinstancename \c_empty_tl + \keys_set:nn{luamplib/tag}{#1} + \tl_if_empty:NF \currentmpinstancename + { \tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure~\currentmpinstancename} } + \mplibtmptoks{}\ltxdomplibcode + } +\RenewDocumentCommand\mpfig{s O{}} + { + \begingroup + \IfBooleanTF{#1} + {\mplibprempfig *} + { + \msg_set:nnn {luamplib}{alt-text-missing} + { + Alternative~text~for~mpfig~is~missing.\\ + Using~the~default~value~'##1'~instead. + } + \keys_set:nn{luamplib/tag}{#2} + \tl_if_empty:NF \mpfiginstancename + { \tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure~\mpfiginstancename} } + \mplibmainmpfig + } + } +\RenewDocumentCommand\usemplibgroup{O{} m} + { + \begingroup + \msg_set:nnn {luamplib}{alt-text-missing} + { + Alternative~text~for~usemplibgroup~is~missing.\\ + Using~the~default~value~'##1'~instead. + } + \keys_set:nn{luamplib/tag}{#1} + \tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure~#2} + \csname luamplib.group.#2\endcsname + \endgroup + } +\cs_new_nopar:Npn \mplibalttext #1 +{ + \tl_set:Ne \l__tag_luamplib_alt_tl {\text_purify:n{#1}} +} +\cs_new_nopar:Npn \mplibactualtext #1 +{ + \tl_set:Ne \l__tag_luamplib_actual_tl {\text_purify:n{#1}} +} +\ExplSyntaxOff +% \end{macrocode} +% % That's all folks! % % \iffalse diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf Binary files differindex e51324ffe4..a6f7e5c362 100644 --- a/macros/luatex/generic/luamplib/luamplib.pdf +++ b/macros/luatex/generic/luamplib/luamplib.pdf diff --git a/macros/luatex/generic/luamplib/test-luamplib-latex.tex b/macros/luatex/generic/luamplib/test-luamplib-latex.tex index c2d8cb498b..8435ee070c 100644 --- a/macros/luatex/generic/luamplib/test-luamplib-latex.tex +++ b/macros/luatex/generic/luamplib/test-luamplib-latex.tex @@ -7,7 +7,7 @@ \usepackage{fontspec} \setmainfont{latin modern roman} \usepackage{luamplib} -\usepackage{xcolor} +\usepackage{graphicx,xcolor} \everymplib{ beginfig(0); } \everyendmplib{ endfig; } \mpliblegacybehavior{true}% @@ -246,19 +246,19 @@ draw mpliboutlinetext.b ("$\displaystyle\frac{1}{1-x^2}$") \endmpfig \par\leavevmode \mppattern{mypatt} - \mpfig - picture q; - q := btex Q etex; - fill bbox q withcolor .8[red,white]; - draw q withcolor .8red; - \endmpfig +[ + xstep = 5, ystep = 6, + matrix = "rotated 90 scaled .75", +] +\mpfig +draw (origin--right+up) scaled 5 withcolor 1/3[blue,white] ; +draw (up--right) scaled 5 withcolor 1/3[red,white] ; +\endmpfig \endmppattern \mpfig - fill fullcircle scaled 100 withpostscript "collect"; - draw unitsquare shifted - center unitsquare scaled 45 - withpattern "mypatt" - withpostscript "evenodd" - ; +draw unitsquare shifted -center unitsquare scaled 45 withpostscript "collect" ; +draw fullcircle scaled 100 withpattern "mypatt" withpen pencircle scaled 1 + withcolor \mpcolor{red!50!blue!50} withpostscript "evenodd" ; \endmpfig \begin{mppattern}{pattuncolored} [ @@ -268,19 +268,81 @@ draw mpliboutlinetext.b ("$\displaystyle\frac{1}{1-x^2}$") \tiny\TeX \end{mppattern}\relax \mpfig - picture tex; tex := mpliboutlinetext.p ("\bfseries \TeX"); - i:=0; - for item within tex: - i:=i+1; - if i < length tex: - fill pathpart item scaled 10 withpostscript "collect"; - else: - draw pathpart item scaled 10 withpattern "pattuncolored" - withpen pencircle scaled 1/2 - withcolor 0.7 blue; - fi + picture tex; + tex = mpliboutlinetext.p ("\bfseries \TeX"); + for i=1 upto mpliboutlinenum: + draw image( + j:=0; + for item within mpliboutlinepic[i]: + j:=j+1; + draw pathpart item scaled 10 + if j < length mpliboutlinepic[i]: + withpostscript "collect" + else: + withpattern "pattuncolored" + withpen pencircle scaled 1/2 + withcolor (i/4)[red,blue] + fi; + endfor + ) + withfademethod "linear" + ; endfor \endmpfig +\par\leavevmode +\mpfig + picture mill; mill = btex \includegraphics[width=100bp]{mill} etex; + draw mill; + mill := mill shifted 125right; + draw mill + withfademethod "circular" + withfadecenter (center mill, center mill) + withfaderadius (30, abs(lrcorner mill - llcorner mill)/2) + withfadeopacity (1, 0) + ; +\endmpfig +\par +\def\test#1{% + \mpfig + fill unitsquare shifted -center unitsquare scaled 200 + withshademethod "linear" + withshadecolors (.3[red,white], .3[blue,white]) + ; + label( btex MetaPost etex scaled 3, origin) ; + draw image( + fill fullcircle scaled 100 shifted 25left + withcolor .8white + withtransparency (2,1) + ; + fill fullcircle scaled 100 shifted 25right + withcolor .8white + withtransparency (2,1) + ; + ) + asgroup "#1" + withgroupname "test:#1" + withtransparency (1,.5) + ; + currentpicture := currentpicture scaled 2/3; + \endmpfig +}% +\hbox{\test{isolated,knockout}\,\test{isolated}\vbox to\MPheight{\vss\hbox{~isolated}\vss}}% +\hbox{\test{knockout}\,\test{}}% +\hbox to\MPwidth{\hss knockout\hss}% +\leavevmode +\mpfig usemplibgroup "test:isolated,knockout" scaled 2/3 rotated 15 ; \endmpfig +\usemplibgroup{test:isolated,knockout}% +\begin{mplibgroup}{mytex}[matrix="rotated 15"] \TeX \end{mplibgroup}% +\hbox to0pt{\hss\vrule width.5pt height5pt depth5pt\hss}% +\hbox to0pt{\hss\vrule width10pt height.25pt depth.25pt\hss}% +\usemplibgroup{mytex}% +\mpfig usemplibgroup "mytex"; draw (left--right) scaled 5; draw (up--down) scaled 5; \endmpfig +\par +\mpfig + picture test; test = mplibgraphictext "\textbf{MPLIB}" + fakebold 1 fillcolor "red!70" drawcolor .7red scaled 7; + draw test withpattern "mypatt" ; +\endmpfig \tracingcommands0 \vskip 2\baselineskip diff --git a/macros/luatex/generic/luamplib/test-luamplib-plain.tex b/macros/luatex/generic/luamplib/test-luamplib-plain.tex index c178acb31a..05c2f8138d 100644 --- a/macros/luatex/generic/luamplib/test-luamplib-plain.tex +++ b/macros/luatex/generic/luamplib/test-luamplib-plain.tex @@ -1,4 +1,4 @@ -\input luaotfload.sty +%\input luaotfload.sty \input miniltx \input color \definecolor{orange}{cmyk}{0,.5,1,0} @@ -261,18 +261,62 @@ draw mpliboutlinetext.b ("$\overbrace{x+\cdots+x}^k$") \fiverm\TeX \endmppattern \mpfig - picture tex; tex := mpliboutlinetext.p ("\bf \TeX"); - i:=0; - for item within tex: - i:=i+1; - if i < length tex: - fill pathpart item scaled 10 withpostscript "collect"; - else: - draw pathpart item scaled 10 withpattern "pattuncolored" - withpen pencircle scaled 1/2 - withcolor 0.7 blue; - fi + picture tex; + tex = mpliboutlinetext.p ("\bf \TeX"); + draw image( + for i=1 upto mpliboutlinenum: + j:=0; + for item within mpliboutlinepic[i]: + j:=j+1; + draw pathpart item scaled 10 + if j < length mpliboutlinepic[i]: + withpostscript "collect" + else: + withpattern "pattuncolored" + withpen pencircle scaled 1/2 + withcolor (i/4)[red,blue] + fi; + endfor endfor + ) + withfademethod "linear" + ; +\endmpfig +\par\leavevmode +\mpfig +fill fullcircle scaled 125 withcolor 2/3[blue,white]; +fill fullcircle scaled 80 withcolor 2/3[red,white]; +draw image( + draw (left--right) rotated 45 scaled 50 + withpen pencircle scaled 20 + ; + draw (left--right) rotated -45 scaled 50 + withpen pencircle scaled 20 + ; + ) + asgroup "" + withgroupname "testTRgroup" + withprescript "tr_transparency=.3" + ; +\endmpfig +\mpfig +fill fullcircle scaled 125 withcolor 2/3[red,white]; +fill fullcircle scaled 80 withcolor 2/3[blue,white]; +usemplibgroup "testTRgroup" + withfademethod "circular" + withfaderadius (0,60) + ; +\endmpfig +\mplibgroup{mytex}[matrix="rotated 15"] \TeX \endmplibgroup +\hbox to0pt{\hss\vrule width.5pt height5pt depth5pt\hss}% +\hbox to0pt{\hss\vrule width10pt height.25pt depth.25pt\hss}% +\usemplibgroup{mytex}% +\mpfig usemplibgroup "mytex"; draw (left--right) scaled 5; draw (up--down) scaled 5; \endmpfig +\par +\mpfig + picture test; test = mplibgraphictext "\bf MPLIB" + fakebold 1 fillcolor .7[white,blue] drawcolor .7blue scaled 7; + draw test withpattern "pattuncolored" ; \endmpfig \tracingcommands0 diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README index 9224c83b0b..b70a6c36fb 100644 --- a/macros/luatex/generic/luatexja/README +++ b/macros/luatex/generic/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20240514.0 +The LuaTeX-ja Package 20241014.0 -------------------------------- Copyright (c) 2011--2024 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -42,7 +42,7 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20240514.0 in the Git repository by + or tagged as 20241014.0 in the Git repository by <https://github.com/luatexja/luatexja/archive/refs/tags/$VER.zip> b. Extract the archive and process following three files by LuaLaTeX @@ -92,4 +92,4 @@ Notes This file and ltj-kinsoku.lua are not used anymore. (Do not remove ltj-kinsoku.tex.) -Last commit date: Tue May 14 19:12:05 2024 +0900 +Last commit date: Mon Oct 14 10:29:57 2024 +0900 diff --git a/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf b/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf Binary files differindex 786e01afa5..1c20815985 100644 --- a/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf +++ b/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf Binary files differindex de28e1d279..4a64b591fa 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf +++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf Binary files differindex 49a8a6feef..981d4ddf93 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf +++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf Binary files differindex 06cf336b44..0914351b11 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf +++ b/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex b/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex index c7e05e8c51..8a12307e70 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex +++ b/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex @@ -1,7 +1,7 @@ %#! lualatex %%% a test of ruby. \documentclass[a4paper,10ptj]{ltjsarticle} -\usepackage[rgb]{xcolor} +\usepackage[cmyk]{xcolor} \usepackage{enumitem,mleftright,pict2e} \usepackage{luatexja-otf,amsmath,bxghost} \usepackage[no-math]{fontspec} @@ -17,15 +17,21 @@ \def\cs#1{\eghostguarded{\texttt{\textbackslash#1}}} \usepackage[textwidth=45\zw, lines=45, footskip=2\zh]{geometry} \advance\leftmargini-1\zw\advance\leftmarginii-1\zw -\protected\def\Param#1{\eghostguarded{\underline{\smash{\textsf{\mdseries #1}}}}} +\protected\def\Param#1{\texorpdfstring{\eghostguarded{\underline{\smash{\textsf{\mdseries #1}}}}}{#1}} +\def\Pkg#1{\texorpdfstring{\textsf{#1}}{#1}} % packages/classes \usepackage{luatexja-ruby,showexpl,booktabs} -\definecolor{mygreen}{rgb}{0,0.5,0} +\usepackage{luacolor,lua-ul} +\definecolor{green}{cmyk}{.75,0,.65,0} +\definecolor{blue}{cmyk}{1,.45,0,0} +\definecolor{b_blue}{cmyk}{.3,0,0,0} \lstset{ preset=\normalsize, basicstyle=\small\ttfamily, basewidth=0.5em, explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed}, - morecomment=[l]{\%}, commentstyle=\color{mygreen} + morecomment=[l]{\%}, commentstyle=\color{green} } +\newunderlinetype\beginActIntr{\color{blue}\leaders\vrule height -.16\zh depth .24\zh} +\NewDocumentCommand\ActIntr{+m}{{\beginActIntr#1}} \makeatletter\let\SX@Info=\relax\makeatother \fboxsep=0mm @@ -37,41 +43,23 @@ allcolors=blue, pdftitle={luatexja-ruby.sty} } -\def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr - #1\mathstrut\cr\noalign{\smallskip\hrule height.4pt\smallskip}\strut\<#2\cr}}}}}\,} +\makeatletter +\def\Node{\@ifstar{\@Node[b_blue]}{\@Node[white]}} +\def\@Node[#1]#2#3{\,\vcenter{\hbox{\fboxsep=1pt\fcolorbox{black}{#1}{% + \vbox{\small\halign{\hfil##\hfil\cr + #2\mathstrut\cr\noalign{\smallskip\hrule height.4pt\smallskip}\strut\<#3\cr}}}}}\,} \def\LuaTeX{Lua\TeX} % 三分ルビ用 \DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487] HaranoAjiMincho-Regular:extend=0.67;jfm=ujisc33}{} -%%%% \ltjruby 内に \texorpdfstring + | 除去を仕込む -\RequirePackage{xparse} -\makeatletter -\def\removevert#1{\if\noexpand#1|% - \expandafter\expandafter\expandafter\@firstofone\expandafter{% - \else\ifnum0=1}\fi#1% - \ifx#1\relax\expandafter\@gobble% - \else\expandafter\@firstofone - \fi{\expandafter\@firstofone - \fi - \removevert}} -\makeatother -\ExplSyntaxOn -\cs_set_eq:NN \myorigltjruby \ltjruby -\DeclareExpandableDocumentCommand {\ltjruby} { O{} m m } {% - \texorpdfstring { - \exp_not:n { \myorigltjruby[#1]{#2}{#3} } - } { - \removevert #2 \relax - } -} -\cs_set_eq:NN \ruby \ltjruby -\ExplSyntaxOff -%%%% - \makeatletter +\let\origunderscore=\_ +\def\_{\ifx\f@family\ttdefault\origunderscore\else + \leavevmode \kern .06em\vbox {\hrule \@width .333em}\fi} \def\figureautorefname{図} +\def\tableautorefname{表} \def\HyRef@autoref#1#2{% \begingroup \Hy@safe@activestrue @@ -79,14 +67,29 @@ \endgroup\eghostguarded{}%" 欧文ゴースト } -\title{\textsf{luatexja-ruby}パッケージ} +\title{\Pkg{luatexja-ruby}パッケージ} \author{\LuaTeX-jaプロジェクトチーム} \date{\texttt{\csname ver@luatexja-ruby.sty\endcsname}(\today)} \makeatletter -\def\mybox#1{\unskip\ {\Large \fboxrule=0.1mm\fboxsep=0mm\fcolorbox{cyan}{white}{\hbox{\<\ltjjachar#1\<}}}\ } - +\def\mybox{\@ifnextchar({\mybox@@{2}{0}}{% + \@ifnextchar){\mybox@@{0}{2}}{\@ifnextchar={\mybox@@{1}{1}}{\mybox@@{0}{0}.}}}} +\def\mybox@@#1#2#3#4{\unskip\ {\Large \fboxrule=0.1mm\fboxsep=0mm% + \ifnum#1>0\fcolorbox{blue}{b_blue}{\vrule width 0pt height .88\zh depth .12\zh\kern#1\dimexpr.25\zw}\kern-\fboxrule\fi% + \fcolorbox{blue}{white}{\hbox{\<\ltjjachar#4\<}}% + \ifnum#2>0\kern-\fboxrule\fcolorbox{blue}{b_blue}{\vrule width 0pt height .88\zh depth .12\zh\kern#2\dimexpr.25\zw}\fi% +}\ } + +\def\RULER#1#2{% + \noindent + \rlap{\smash{\phantom{#1}\ \color{cyan}% + \@tempcnta=0 + \loop\ifnum\@tempcnta<20 + \kern-.05mm\vrule height \dimexpr-\baselineskip+0.88\zh depth \dimexpr #2\baselineskip+0.12\zh width0.1mm\kern-.05mm% + \kern\zw\advance\@tempcnta 1 + \repeat + }}\ignorespaces +} \begin{document} - \catcode`\<=13 \def<#1>{{\rmfamily\mdseries\itshape$\langle$#1\/$\rangle$}} %\fontsize{13.19873}{15}\selectfont% @@ -94,7 +97,7 @@ \maketitle \begin{abstract} -\textsf{luatexja-ruby}パッケージは,\LuaTeX-jaの機能を利用してルビの組版処理を行う追加パッケージである. +\Pkg{luatexja-ruby}パッケージは,\LuaTeX-jaの機能を利用してルビの組版処理を行う追加パッケージである. \LuaTeX, \LuaTeX-jaの内部処理に割り込むことにより,熟語ルビ中の行分割や, 行頭形・行中形・行末形の自動検出,また進入許容量の自動設定などを可能とした. @@ -105,15 +108,15 @@ v0.3より前とは親文字の高さの扱いが変わっている(\texttt{ba \tableofcontents \newpage -\section{\ltjruby{利|用|方|法}{り|よう|ほう|ほう}} +\section[利用方法]{\ltjruby{利|用|方|法}{り|よう|ほう|ほう}} パッケージ読み込みは,\verb+\usepackage{luatexja-ruby}+ で良く, 必要ならば自動的に\LuaTeX-ja本体を読み込む. plain \LuaTeX でのロードはまだサポートしておらず, \LaTeXe のみサポートしている. -\subsection{\ltjruby{用|語}{よう|ご}} +\subsection[用語]{\ltjruby{用|語}{よう|ご}} 「進入(intrusion)」「突出(protrusion)」という用語は, -\href{http://zrbabbler.sp.land.to/pxrubrica.html}{\textsf{pxrubrica}パッケージ}% +\href{http://zrbabbler.sp.land.to/pxrubrica.html}{\Pkg{pxrubrica}パッケージ}% での用法に準ずる. \begin{quote} @@ -125,15 +128,15 @@ plain \LuaTeX でのロードはまだサポートしておらず, なお,本パッケージでは親文字と直前・直後の文字の間に0でない和文処理グルー \footnote{JFMで指定されたグルーや,標準の和文間空白(\Param{kanjiskip}),標準の和欧文間空白(\Param{xkanjiskip}).}% -がくることも考慮しているため,「\emph{前後の文字への}\underline{進入(許容)量}」と「進入(許容)量」とは異なる可能性がある. +がくることも考慮しているため,「\emph{前後の文字への}\ActIntr{進入(許容)量}」と「進入(許容)量」とは異なる可能性がある. この文書では次のように称する: \begin{description} - \item[\underline{文字進入量}] 前後の文字へルビ文字が実際にかかる長さ.常に下線を引くことにする. + \item[\ActIntr{文字進入量}] 前後の文字へルビ文字が実際にかかる長さ.常に下線を引くことにする. \item[進入量] 前後の文字,およびそれとルビの間の和文処理グルーにかかる長さ \end{description} -多くの場合,和文処理グルーは0以上の長さのため,進入量は\underline{文字進入量}以上である. +多くの場合,和文処理グルーは0以上の長さのため,進入量は\ActIntr{文字進入量}以上である. -例えば次の例では,直前の文字「来」への\underline{前文字進入量}は0であるが, +例えば次の例では,直前の文字「来」への\ActIntr{前文字進入量}は0であるが, 前進入量は(和欧文間空白にかかる分まで含めるので)正である. \begin{quote} \Large @@ -145,15 +148,15 @@ plain \LuaTeX でのロードはまだサポートしておらず, \cs{zw},~\cs{zh}命令で取得できる値を表す.多くの場合は両者は同じ値であるが,いつでもそうであるという保証はない. 「ルビ全角幅」「ルビ全角高さ」についても同様である. -\subsection{\ruby{命|令}{めい|れい}} +\subsection[命令]{\ruby{命|令}{めい|れい}} \label{ssec:ltjruby} \paragraph{\cs{ltjruby}} -ルビ出力用命令の本体.\verb+\ruby+ という別名を定義している. +ルビ出力用命令の本体.\cs{ruby}という別名を定義している. \begin{quote} \ttfamily \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\} \end{quote} のように親文字→ルビの順序で指定する. -第2・第3引数内の「\verb+|+」はグループの区切りを表す.詳細は\ref{ssec:grp}\nobreak 小節を参照. +第2・第3引数内の「\texttt{|}」はグループの区切りを表す.詳細は\ref{ssec:grp}\nobreak 小節を参照. \medskip <option>には以下の内容をkey-valueリストで指定可能である. @@ -162,16 +165,16 @@ plain \LuaTeX でのロードはまだサポートしておらず, \begin{description} \def\makelabel#1{\ttfamily\bfseries #1} -\item[pre=<real>] \underline{前文字進入許容量}をルビ全角単位で指定. +\item[pre=<real>] \ActIntr{前文字進入許容量}をルビ全角単位で指定. 負の長さを指定した場合は,ルビの状況や直前の文字に応じた自動指定を意味する. 既定値は負(つまり,自動指定). -\item[post=<real>] 同様に,\underline{後文字進入許容量}を指定する.既定値は負(自動指定). +\item[post=<real>] 同様に,\ActIntr{後文字進入許容量}を指定する.既定値は負(自動指定). \item[mode] 進入処理のモードを表すbit vector.下位2\,bitは,\texttt{pre}や \texttt{post}が負である場合にしか効力を発揮しない.既定値は$(00001)_2 = 1$. \begin{description} - \item[bit 0] 前後の\underline{文字への進入}を無効にするならば0,有効にするならば1. + \item[bit 0] 前後の\ActIntr{文字への進入}を無効にするならば0,有効にするならば1. \item[bit 1] 前進入許容量$B$と後進入許容量$A$が異なった場合, そのまま処理する場合は0,小さい方に揃えるならば1. \item[bit 2--4] ルビ文字の突出量から実際の前・後進入量の計算方法を指定する. @@ -186,44 +189,41 @@ plain \LuaTeX でのロードはまだサポートしておらず, \item[stretchruby=\{<left>\}\{<middle>\}\{<right>\}] 親文字の合計長が ルビ文字の合計長より長い時に,ルビ文字の前・間・後に入れる空白の割合であり, それぞれ0--7の自然数で指定する. -既定値は\ \verb+{1}{2}{1}+ である. +既定値は\>\verb+{1}{2}{1}+\>である. <left>はルビ文字の先頭までの空き量,<middle>はルビ文字間の空き量,<right>はルビ文字の末尾からの 空き量(の比)を表す.以下が例である. -\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] \ltjruby[stretchruby=123,maxmargin=2]% {◯◯◯◯}{◆◆} \end{LTXexample} \item[stretch=\{<left>\}\{<middle>\}\{<right>\}] 行中形でルビ文字の方が長い場合,親文字の前・中・後に入れる空白の割合. -既定値は\ \verb+{1}{2}{1}+ である.それ以外の代表的な値としては,例えば次のようなものがある. +既定値は\>\verb+{1}{2}{1}+\>である.それ以外の代表的な値としては,例えば次のようなものがある. \begin{description} -\item[親文字均等割禁止] \verb+{1}{0}{1}+\ など<middle>を0にした値 +\item[親文字均等割禁止] \verb+{1}{0}{1}+\>など<middle>を0にした値 \item[前突出禁止] \verb+{0}{1}{1}+ \item[後突出禁止] \verb+{1}{1}{0}+ \end{description} \item[stretchbol=\{<left>\}\{<middle>\}\{<right>\}] 行頭形に対する\texttt{stretch}と同様の指定. -既定値は\ \verb+{0}{1}{1}+ である. +既定値は\>\verb+{0}{1}{1}+\>である. \item[stretcheol=\{<left>\}\{<middle>\}\{<right>\}] 行末形に対する\texttt{stretch}と同様の指定. -既定値は\ \verb+{1}{1}{0}+ である. +既定値は\>\verb+{1}{1}{0}+\>である. \item[maxmargin=<real>] 親文字の方がルビより長い時に,ルビの先頭と親文字の先頭,及び -ルビ末尾と親文字の末尾の間に許される最大の空白量.\textbf{親文字全角幅単位}で指定し,既定値は0.5. +ルビ末尾と親文字の末尾の間に許される最大の空白量.\emph{親文字全角幅単位}で指定し,既定値は0.5. \medskip \item[size=<real>] ルビ文字の親文字に対する大きさ.既定値は0.5. \item[intergap=<real>] ルビ文字と親文字との空きを親文字全角高さ単位で指定.既定値は0. \item[rubysmash=<bool>] ルビの高さを0にするか.既定値は偽.次が例である. -\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] \ \vrule width 0pt height 2\zw depth 1\zw \frame{\ltjruby[rubysmash=false]{本}{ほん}}\ \frame{\ltjruby[rubysmash=true]{本}{ほん}}\ -\frame{\ltjruby[rubysmash=false,intergap=0.2] - {本}{ほん}}\ -\frame{\ltjruby[rubysmash=true,intergap=0.2] - {本}{ほん}}\ -\frame{\ltjruby[rubysmash=false,intergap=-1.5] - {本}{ほん}} +\frame{\ltjruby[rubysmash=false,intergap=0.2]{本}{ほん}}\ +\frame{\ltjruby[rubysmash=true,intergap=0.2]{本}{ほん}}\ +\frame{\ltjruby[rubysmash=false,intergap=-1.5]{本}{ほん}} \end{LTXexample} \item[ybaseheight=<real>] 非負の値が指定された場合, \emph{縦組以外での}親文字の高さを親文字全角高さの<real>倍と強制的に固定する. @@ -233,7 +233,7 @@ plain \LuaTeX でのロードはまだサポートしておらず, 既定値は$0.5$. \item[baseheight=<real>] \texttt{ybaseheight},\texttt{tbaseheight}を同時に指定したことと同義. 次の例や\autoref{fig:ruby_vertical}を参照. -\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] \noindent \ltjruby[baseheight=0.88]{本}{ほん}\ \ltjruby[baseheight=0.88]{dvi}{ディーヴィーアイ}\\ @@ -252,7 +252,7 @@ plain \LuaTeX でのロードはまだサポートしておらず, 既定値は$0.5$. \item[rubydepth=<real>] \texttt{yrubydepth},\texttt{trubydepth}を同時に指定したことと同義. 次の例や\autoref{fig:ruby_vertical}を参照. -\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] \noindent \ltjruby[rubydepth=0.12]{◆}{ほん}\ \ltjruby[rubydepth=0.12]{◆}{pdf}\ @@ -305,20 +305,43 @@ plain \LuaTeX でのロードはまだサポートしておらず, \item[kenten=<command>]各文字につく圏点の出力命令を指定する. - 既定値は「\verb+\textbullet+」である. + 既定値は「\cs{textbullet}」である. \item[fontcmd=<command>]ルビ用のフォント切り替え命令を指定する. このキーの内容が実行された後に\ \verb+\fontsize...\selectfont+\ が実行されるので, -このキーの指定では最後に\ \verb+\selectfont+ を加える必要はない. +このキーの指定では最後に\cs{selectfont}を加える必要はない. -この \texttt{fontcmd} キーの内容は多くの回数実行される. -例えば,\textsf{luatexja-fontspec}パッケージを用いてOpenTypeフォントを用いる場合, +この \texttt{fontcmd}キーの内容は多くの回数実行される. +例えば,\Pkg{luatexja-fontspec}パッケージを用いてOpenTypeフォントを用いる場合, \begin{lstlisting} fontcmd=\addjfontfeatures{Style=Ruby} \end{lstlisting} のようにしてルビ用字形を用いることが可能だが,現在の実装ではタイプセットに時間がかかるようになる. + \item[always\_highlight\_protrusion=<bool>] この\cs{ltjruby}命令が\Pkg{lua-ul}パッケージの提供する「下線」命令 + \footnote{\cs{underLine}, \cs{highLight},およびそのほか.}の引数に含まれていた場合, + ルビの突出部(ただし\ActIntr{文字進入部分}は除く)に「下線」がいつでも引かれるか否か. + + 既定値は偽.この場合は,突出部に「下線」が引かれるのは,ルビの前後の文字も同じ「下線」命令の有効範囲になっているときに + 限られる.\autoref{fig:always-highlight-protrusion}を参照. \end{description} +\begin{figure}[t] +\begin{LTXexample}[width=13.2\zw, preset=\large] + \ltjsetruby{stretchbol=121,stretcheol=121} + あ\highLight{\ruby{◆}{□□□□□□□□}}あ + い\highLight{\ruby{◆}{□□□□□□□□}い}\\ + \highLight{う\ruby{◆}{□□□□□□□□}}う\\\kern7\zw + あ\highLight{\ruby{◆|◆}{□□□□□|□□□□□}}あ + + \ltjsetruby{always_highlight_protrusion} + あ\highLight{\ruby{◆}{□□□□□□□□}}あ + い\highLight{\ruby{◆}{□□□□□□□□}い}\\ + \highLight{う\ruby{◆}{□□□□□□□□}}う\\\kern7\zw + あ\highLight{\ruby{◆|◆}{□□□□□|□□□□□}}あ +\end{LTXexample} + \caption{\texttt{always\_highlight\_protrusion}キー有無による組版結果の違い} + \label{fig:always-highlight-protrusion} +\end{figure} \medskip 次の2つは,以上で説明した複数のオプションを一度に設定するためのものである. @@ -337,7 +360,7 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} \end{description} \paragraph{\cs{ltjsetruby}\{<option>\}} -<option>の既定値を指定する.\textsf{luatexja-ruby}読み込み時の値は +<option>の既定値を指定する.\Pkg{luatexja-ruby}読み込み時の値は 各項目の所で既に説明してあるが,次のようになっている. \begin{verbatim} pre=-1, post=-1, mode=1, @@ -346,24 +369,51 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} maxmargin=0.5, size=0.5, intergap=0, rubysmash=false, kenten=\textbullet, fontcmd=\relax, ybaseheight=0.88, tbaseheight=0.5, yrubydepth=0.12, trubydepth=0.5, - intrude_jfmgk, intrude_kanjiskip, intrude_xkanjiskip + intrude_jfmgk, intrude_kanjiskip, intrude_xkanjiskip, + always_highlight_protrusion=false \end{verbatim} \paragraph{\cs{ltjsetparamater} に追加されるキー} \begin{description} \item[\Param{rubypreintrusion}\ttfamily =\{<chr\_code>, <pre\_int>\}] - 文字<chr\_code> に,その\textbf{直後}のルビによって掛けられるルビ文字列の最大長 - (つまり,\underline{前文字進入許容量})をルビ全角幅単位で指定. - - \textbf{v0.5以降での変更点}:もし$-a$~($a>0$)を指定した場合は,実際の\underline{前文字進入許容量}は$a$となるが, - 文字<chr\_code>の前のJFMグルーに進入が発生した場合には,\underline{前文字進入許容量}が0でなかった場合は,の後のJFMグルーにはルビの進入は発生しない. - + 文字<chr\_code> に,その\emph{直後}のルビによって掛けられるルビ文字列の最大長 + (つまり,\ActIntr{前文字進入許容量})をルビ全角幅単位で指定. + + \emph{v0.5以降での変更点}:もし$-a$~($a>0$)を指定した場合は,次のようになる. + \begin{itemize} + \item 実際の\ActIntr{前文字進入許容量}は$a$となる. + \item ただし,文字<chr\_code>の直前のルビによって + 文字の前のJFMグルーに進入が発生した場合,文字<chr\_code>の直後のルビの前進入は発生しない. + \end{itemize} + 後者の状況の例を以下に載せる. +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] +\ltjsetparameter{rubypreintrusion={`\【,-1}} +\ruby{鴎}{かもめ}【\ruby{隼}{はやぶさ} +% 「\ruby{鴎}{かもめ}」は,「【」直前のJFMグルーに +% ルビ半角だけ進入している +% →「\ruby{隼}{はやぶさ}」の「【」への進入はない. +\end{LTXexample} + + \item[\Param{rubypostintrusion}\ttfamily =\{<chr\_code>, <post\_int>\}] - 文字<chr\_code> に,その\textbf{直前}のルビによって掛けられるルビ文字列の最大長 - (つまり,\underline{後文字進入許容量})をルビ全角幅単位で指定. - - \textbf{v0.5以降での変更点}:もし$-a$~($a>0$)を指定した場合は,実際の\underline{後文字進入許容量}は$a$となるが, - 実際の\underline{後文字進入量}が0でなかった場合は,文字<chr\_code>の後のJFMグルーにはルビの進入は発生しない. + 文字<chr\_code>に,その\emph{直前}のルビによって掛けられるルビ文字列の最大長 + (つまり,\ActIntr{後文字進入許容量})をルビ全角幅単位で指定. + + \emph{v0.5以降での変更点}:もし$-a$~($a>0$)を指定した場合は,次のようになる. + \begin{itemize} + \item 実際の\ActIntr{後文字進入許容量}は$a$となる. + \item ただし,文字<chr\_code>の直前のルビによってこの文字への実際の\ActIntr{後文字進入}が + 発生した場合,文字<chr\_code>の直後のJFMグルーにはルビの前進入は発生しない. + \end{itemize} + 今回も後者の状況の例を以下に載せる. +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] +\ltjsetparameter{rubypostintrusion={`\】,-1}} +\ruby{鴎}{かもめ}】\ruby{隼}{はやぶさ}\\ +\hskip.25\zw 鴎】隼\\% 比較用 +% 「\ruby{鴎}{かもめ}」は,「】」にルビ半角だけ進入 +% →「\ruby{隼}{はやぶさ}」は「】」直前のJFMグルー +% には進入しない. +\end{LTXexample} \end{description} 以下の文字は\Param{rubypreintrusion},~\Param{rubypostintrusion}とも初期値は1である: \begin{quote} @@ -374,51 +424,51 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} \end{quote} 次に,以下の文字は\Param{rubypreintrusion},~\Param{rubypostintrusion}とも初期値は0.5である: \begin{quote} - 中点類\@for\@tmp:=`\・,`\:,`\; \do{\mybox{\@tmp}} + 中点類\@for\@tmp:=`\・,`\:,`\; \do{\mybox={\@tmp}} \end{quote} また,以下の文字は\Param{rubypreintrusion}のみ初期値は$-1$である: -\begin{quote} +\begin{itemize} + \item 始め括弧類 - \@for\@tmp:=`\‘,`\“,`\〈,`\《,`\「,`\『,`\【,`\〔,`\〖,`\〘,`\〝,`\(,`\[,`\{,`\⦅ \do{\mybox{\@tmp}}\unskip, - 「文字コード$-1$の文字 - \footnote{段落開始の\ \cs{parindent}分インデントを表す. + \@for\@tmp:=`\‘,`\“,`\〈,`\《,`\「,`\『,`\【,`\〔,`\〖,`\〘,`\〝,`\(,`\[,`\{,`\⦅ \do{\mybox({\@tmp}}\unskip + \item 「文字コード$-1$の文字 + \footnote{ここでは段落開始の\ \cs{parindent}分インデントを表す. 通常の\LuaTeX-jaにおける指定では「文字コード$-1$」は文中数式境界を表していることに注意.}」 -\end{quote} +\end{itemize} さらに,以下の文字は\Param{rubypostintrusion}のみ初期値は$-1$である: -\begin{quote} - 閉じ括弧類 - \@for\@tmp:=`\’,`\”,`\〉,`\》,`\」,`\』,`\】,`\〕,`\〗,`\〙,`\〟,`\),`\],`\},`\⦆ \do{\mybox{\@tmp}}\unskip, - 句読点類\@for\@tmp:=`\、,`\,,`\。,`\. \do{\mybox{\@tmp}} -\end{quote} +\begin{itemize} + \item 閉じ括弧類 + \@for\@tmp:=`\’,`\”,`\〉,`\》,`\」,`\』,`\】,`\〕,`\〗,`\〙,`\〟,`\),`\],`\},`\⦆ \do{\mybox){\@tmp}} + \item 句読点類\@for\@tmp:=`\、,`\,,`\。,`\. \do{\mybox){\@tmp}} +\end{itemize} \makeatother 以上で記述されていない\Param{rubypreintrusion},~\Param{rubypostintrusion}の初期値はすべて0である. - \paragraph{\cs{ltjkenten}} 圏点を出力する命令であり, \begin{quote} \ttfamily\cs{ltjkenten}[<option>]\{親文字\} \end{quote} -のように使用する.複数文字に圏点をつける場合でも,\verb+\ltjruby+ のように「\texttt{|}」を使って -文字を区切る\textbf{必要はない}(\verb+\kenten+内では「\texttt{|}」は特別な意味を持たない) +のように使用する.複数文字に圏点をつける場合でも,\cs{ltjruby}のように「\texttt{|}」を使って +文字を区切る\emph{必要はない}(\cs{kenten}内では「\texttt{|}」は特別な意味を持たない) ことに注意してほしい. 圏点として出力される文字は\texttt{kenten}キーによって指定し, 圏点自身の大きさは(ルビと同様に)\texttt{size}キーで指定する. -\subsection{グループの\ruby{指|定}{し|てい}} +\subsection[グループの指定]{グループの\ruby{指|定}{し|てい}} \label{ssec:grp} \begin{quote} \ttfamily\cs{ltjruby}[<option>]\{親|文|字\}\{おや|も|じ\} \end{quote} -のように,\verb+\ltjruby+\ の第2・第3引数内の「\verb+|+」はグループの区切りを表す. +のように,\cs{ltjruby}の第2・第3引数内の「\texttt{|}」はグループの区切りを表す. グループの数は両者で一致しなければならず, \verb+\ltjruby{紋章}{もん|しよう}+ のようには\emph{できない}. 1グループのみのルビ(単純グループルビ)はグループルビとして組まれる.そのため, もしモノルビを使いたければ,面倒でも -\begin{LTXexample}[width=0.4\textwidth, preset=\Large] +\begin{LTXexample}[width=0.25\textwidth, preset=\Large] の\ltjruby{紋}{もん}\ltjruby{章}{しよう}が \end{LTXexample} のように,複数回使用すること. @@ -427,7 +477,7 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} 実際には\TeX での長さの計算誤差($2^{-16}$~ptの整数倍として計算していることによる)を考慮し, 親文字全角の$1/1000$だけルビ文字列が長くなることを許容している. }であれば, -単純グループルビの並びとして扱われる.すなわち,次ページ冒頭の2行は全くの等価となる. +単純グループルビの並びとして扱われる.すなわち,次の2行は全くの等価となる. \begin{verbatim} \ltjruby{普|通|車}{ふ|つう|しや} \ltjruby{普}{ふ}\ltjruby{通}{つう}\ltjruby{車}{しや} @@ -439,20 +489,23 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} \begin{verbatim} …の\ltjruby{表|現|力}{ひよう|げん|りよく}は… \end{verbatim} -という入力からは得られる組版結果は,次のいずれかになる. -\begin{center} - \begin{tabular}{ll} +という入力からは得られる組版結果は,\autoref{tab:group_ruby}のいずれかになる. +\begin{table}[t] +\centering\small + \begin{tabular}{lll} \toprule 改行なし(行中形)&\Large …の\ltjruby{表|現|力}{ひよう|げん|りよく}は…\\ 直前で改行&\Large \vrule \ltjruby[stretch=011]{表|現|力}{ひよう|げん|りよく}は…\\ -&\Large …の\ltjruby[stretch=110]{表}{ひよう} - \vrule\ltjruby[stretch=011]{現|力}{げん|りよく}は…\\ -&\Large …の\ltjruby[stretch=110]{表|現}{ひよう|げん} - \vrule\ltjruby[stretch=011]{力}{りよく}は…\\ + 途中で改行&\Large …の\ltjruby[stretch=110]{表}{ひよう} + \vrule\ltjruby[stretch=011]{現|力}{げん|りよく}は… + &\Large …の\ltjruby[stretch=110]{表|現}{ひよう|げん} + \vrule\ltjruby[stretch=011]{力}{りよく}は…\\ 直後に改行&\Large …の\ltjruby[stretch=110]{表|現|力}{ひよう|げん|りよく}\vrule\\ \bottomrule \end{tabular} -\end{center} + \caption{可動グループルビの組まれ方(縦線は行の境目)} + \label{tab:group_ruby} +\end{table} \begin{itemize} \item これらの行分割によってペナルティは発生しない. \item 上記の例で見られるように, @@ -481,44 +534,44 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} \item \cs{kenten}がすでに定義されていない場合に限り,\cs{kenten}が\cs{ltjkenten}の別名として定義される. \end{itemize} -\section{\ruby{注|意|点}{ちゆう|い|てん}} +\section[注意点]{\ruby{注|意|点}{ちゆう|い|てん}} \paragraph{前後からのルビ文字のはみ出し1} 「日本語組版処理の要件」の図117\footnote{2020-08-11版での番号.2012-04-03版では図3.82.}のように, 前後からのルビ文字のはみ出しが繋がらないようにする処理が組み込まれている. 例えば, -\begin{LTXexample}[preset=\Large,width=0.3\textwidth] +\begin{LTXexample}[preset=\Large,width=0.25\textwidth] \ltjruby{陵}{りよう}と\ltjruby{陵}{みささぎ}\\ \ltjruby{陵}{りよう}と\ltjruby[pre=1]{陵}{みささぎ} \end{LTXexample} において,1行目右側の「\ltjruby{陵}{みささぎ}」のルビが前の「と」にかかる量は次のように決まる: \begin{enumerate} -\item 1回目の実行では,行分割前に「\ltjruby{陵}{りよう}」の\underline{後文字進入量}は前もって知ることはでき +\item 1回目の実行では,行分割前に「\ltjruby{陵}{りよう}」の\ActIntr{後文字進入量}は前もって知ることはでき ない.そのため,「\ltjruby{陵}{りよう}」は行中形で組まれるものと想定し, 「\ltjruby{陵}{みささぎ}」の前文字進入許容量は \[ \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}} --\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの\underline{後文字進入量}(行中形)}}=0.25\,\mathrm{zw} +-\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの\ActIntr{後文字進入量}(行中形)}}=0.25\,\mathrm{zw} \] -となる.行分割後,「\ltjruby{陵}{りよう}」の実際の\underline{後文字進入量}は +となる.行分割後,「\ltjruby{陵}{りよう}」の実際の\ActIntr{後文字進入量}は <jobname>\texttt{.ltjruby}ファイルに記述される. -\item 2回目以降の実行では,<jobname>\texttt{.ltjruby}ファイルに保存された「\ltjruby{陵}{りよう}」の\underline{後文字進入量} -を用いて,「\ltjruby{陵}{みささぎ}」の\underline{前文字進入許容量}を次のように計算する: +\item 2回目以降の実行では,<jobname>\texttt{.ltjruby}ファイルに保存された「\ltjruby{陵}{りよう}」の\ActIntr{後文字進入量} +を用いて,「\ltjruby{陵}{みささぎ}」の\ActIntr{前文字進入許容量}を次のように計算する: \[ \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}} --\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの\underline{後文字進入量}(from \texttt{.ltjruby})}}=0.25\,\mathrm{zw}. +-\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの\ActIntr{後文字進入量}(from \texttt{.ltjruby})}}=0.25\,\mathrm{zw}. \] \end{enumerate} -<jobname>\texttt{.ltjruby}ファイルに保存する際,各 \verb+\ltjruby+ 命令の呼び出しを識別するキーが必要になるが, -そのキーとしては単純に「何個目の \verb+\ltjruby+ 命令か」である. +<jobname>\texttt{.ltjruby}ファイルに保存する際,各\cs{ltjruby}命令の呼び出しを識別するキーが必要になるが, +そのキーとしては単純に「何個目の\cs{ltjruby}命令か」である. なお,以上の処理は,1行目と2行目を比較すれば分かるように, -「\ltjruby{陵}{みささぎ}」の\emph{\underline{前文字進入許容量}指定(\texttt{pre})が自動}になっている場合のみ -実施される. - +「\ltjruby{陵}{みささぎ}」の\emph{\ActIntr{前文字進入許容量}指定が自動(\texttt{pre}の値が負)}に +なっている場合のみ実施される. +\newpage \paragraph{前後からのルビ文字のはみ出し2} -また,本パッケージのv0.**以降では,「日本語組版処理の要件」にある +また,本パッケージでは,「日本語組版処理の要件」にある \begin{quote} 後ろにくる終わり括弧類,句点類若しくは読点類,又は前にくる始め括弧類には, 最大でルビ文字サイズの全角までルビ文字を掛けてもよい. @@ -533,17 +586,17 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} これは,段落の「本当の」末尾には \verb+\penalty10000\parfillskip+ があるためで, ルビ処理用に作った最後のグルー(\ref{ssec:impl}\nobreak 小節の説明では$g_2$)が消去されないことによる. -\verb+\parfillskip+ の長さ(や,場合によっては \verb+\rightskip+)を実測し, +\cs{parfillskip}(や,場合によっては\cs{rightskip})の長さを実測し, それによって処理を変えるのも可能だが,そのようなことはしなかった. -段落がルビで終わることは普通ない(最低でも句点が続くだろう)と思うからである. +段落がルビで終わることは普通ない(最低でも句点が続くだろう)と考えられるからである. \paragraph{段落先頭のルビ} 同様に,段落先頭のルビは行頭形にはならない. -\texttt{pre}が負(つまり,自動指定)のとき,段落最初の \verb+\parindent+ 分への -進入は可能である.ここ\verb+\parindent+ 分のインデントへの\underline{進入許容量}は +\texttt{pre}が負(つまり,自動指定)のとき,段落最初の\cs{parindent}分への +進入は可能である.この\cs{parindent}分のインデントへの\ActIntr{進入許容量}は 「文字$-1$」に対する\Param{rubypreintrusion}(既定値は1,ルビ全角単位)と -\ \verb+\parindent+ の長さのうち小さい方である. -\begin{LTXexample}[preset=\Large,width=0.4\textwidth] +\cs{parindent}の長さのうち小さい方である. +\begin{LTXexample}[preset=\Large,width=0.25\textwidth] \parindent1\zw\noindent 012345\par \ltjruby{陵}{みささぎ}は……\par \ltjruby{承}{うけたまわ}り……\par @@ -561,54 +614,52 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} 例えば,標準設定での中黒「・」の直後のルビからの中黒への進入許容量は \begin{quote} - 中黒「・」への\underline{前進入許容量}はルビ全角の半分で, + 中黒「・」への\ActIntr{前進入許容量}はルビ全角の半分で, 中黒本体の後の四分空きには進入可能 \end{quote} となっている.そのため,下の例の1, 2行目ともルビの前進入量は0.5\,zwとなる. しかし,2行目では詰め量の0.5\,zwがほとんど中黒周囲の四分空きで負担されるため, 実際には「中黒本体にほぼ0.5\,zwが進入する」という望ましくない結果が得られている. + \typeout{===========} \begin{LTXexample}[preset=\Large,width=0.4\textwidth] \leavevmode\hbox{あ・\ltjruby{◆}{◆◆◆◆}漢字}\\ \hbox spread-0.5\zw{あ・\ltjruby{◆}{◆◆◆◆}漢字} \end{LTXexample} -また,次の例では2行目では前後の\underline{文字進入量}がルビ1字分と等しくなっているが, -3行目のように1全角伸ばすという調整が行われた後は\underline{文字進入量}が不揃いになってしまっている. +また,次の例では2行目では前後の\ActIntr{文字進入量}がルビ1字分と等しくなっているが, +3行目のように1全角伸ばすという調整が行われた後は\ActIntr{文字進入量}が不揃いになってしまっている. これはもともと「\texttt{;}」には後側にのみ和欧文間空白が入ることと,3行目ではこの和欧文間空白が 伸びているためである. -\begin{LTXexample}[preset=\Large,width=0.4\textwidth] -\leavevmode\hbox{……に% - \ltjruby{\texttt{;}}{セミコロン}という……}\\ -\hbox spread\zw{……に% - \ltjruby{\texttt{;}}{セミコロン}という……} +\begin{LTXexample}[preset=\Large,width=0.25\textwidth] +\leavevmode\hbox{に\ltjruby{\texttt{;}}{セミコロン}という}\\ +\hbox spread\zw{に\ltjruby{\texttt{;}}{セミコロン}という} \end{LTXexample} -\newpage -\section{\ruby{実|装}{じつ|そう}について} +\section[実装について]{\ruby{実|装}{じつ|そう}について} \subsection{進入量の計算} \label{ssec:calc_intrusion} ルビ文字を自然に組んだときの幅が親文字のそれより多い場合, ルビの前後への進入量は次のように決定される. \begin{enumerate}[label=\emph{Step~\arabic*},labelindent=0pt,itemindent=*,itemsep=\medskipamount] - \item \underline{前文字進入許容量}$B_0$,\underline{後進入文字許容量}$A_0$の算出. + \item \ActIntr{前文字進入許容量}$B_0$,\ActIntr{後進入文字許容量}$A_0$の算出. ルビ全角の長さを$r$とする. \begin{enumerate} - \item \texttt{pre}の指定値が非負であった場合は,それに$r$を掛けたものを$B_0$とする.\\ + \item \texttt{pre}の指定値が非負であった場合は,それに$r$を掛けたものを$B_0$とする. + そうでなかった場合は,「ルビの直前の文字」に対する - \Param{rubypreintrusion}の値に$r$を掛けたものを$B_0$とする + \Param{rubypreintrusion}の絶対値に$r$を掛けたものを$B_0$とする \footnote{% なお,「ルビの直前の文字」が段落最初の\cs{parindent}分のインデントであった場合, $B_0$を,「文字コード$-1$の文字」\Param{rubypreintrusion}の値に$r$を掛けた値と\cs{parindent}のうち 小さい方とする. - }. + }.ここで,もし2つ前の文字がルビで,その直後(つまりいま処理しているルビから見れば直前) + の文字へ$a'$だけの進入があった場合,現在のルビについて$B_0←\min(0,B_0-a')$とする. \item \texttt{post}の指定値が非負であった場合は,それに$r$を掛けたものを$A_0$とする.\\ そうでなかった場合は,「ルビの直後の文字」に対する - \Param{rubypostintrusion}の値にルビ全角の値を掛けたものを$A_0$とする. - \item \texttt{mode}の最下位ビット(bit~0)が0であった場合は,$B_0\leftarrow 0$, $A\leftarrow 0$とする. - \item もし2つ前の文字がルビで,その直後(つまりいま処理しているルビから見れば直前) - の文字へ$a'$だけの進入があった場合,現在のルビについて$B_0←\min(0,B_0-a')$とする. + \Param{rubypostintrusion}の絶対値にルビ全角の値を掛けたものを$A_0$とする. + \item \texttt{mode}の最下位ビット(bit~0)が0であった場合は,$B_0\leftarrow 0$, $A_0\leftarrow 0$とする. \end{enumerate} \item 前進入許容量$B$,後進入許容量$A$の算出. \begin{enumerate} @@ -624,8 +675,8 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} それぞれ$g$の自然長を$B$に加算する. ルビとその直後の文字との間に和文処理グルーが挿入された場合も同様である. - - \item \texttt{mode}の2番目のビット(bit~1)が0であった場合は,$B$,~$A\leftarrow \min(B,A)$とする. + + \item \texttt{mode}の2番目のビット(bit~1)が1であった場合は,$B$,~$A\leftarrow \min(B,A)$とする. \end{enumerate} \item 実際の前進入量$b$,後進入量$a$の計算. @@ -704,21 +755,28 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} \end{LTXexample} \begin{enumerate} -\item \verb|\ltjruby|コマンド自体は,一旦次のnode listを値とするwhatsit~$W$を作って, -現在の水平リストへと挿入する(必要ならば\verb|\leavevmode|も実行): +\item \cs{ltjruby}命令自体は,一旦次のnode listを値とするwhatsit~$W$を作って, +現在の水平リストへと挿入する(必要ならば\cs{leavevmode}も実行): \[ \Node{whatsit $w$}{value: 2}\longrightarrow \Node{hlist $s_1$}{「りゆう」}\longrightarrow \Node{hlist $p_1$}{「流」}\longrightarrow \Node{hlist $s_2$}{「ちよう」}\longrightarrow - \Node{hlist $p_2$}{「暢」} + \Node{hlist $p_2$}{「暢」}\longrightarrow + \Node{kern $k_b$}{}\longrightarrow + \Node{kern $k_a$}{} \] ここで,最初の$w$の値2は,ルビが2つのパーツ「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」からなっていることを 表している.この値を$\mathit{cmp}$とおこう. $s_i$達の中の文字は既にルビの大きさである. + +また,$k_b$,~$k_a$は\texttt{always\_highlight\_protrusion}キーが偽の場合にのみ生成されるが, +実際に使われるのは行分割後になってからである.\Pkg{lua-ul}対応のためには,和文処理グルーの挿入処理で +「前・後のクラスタそれぞれとのattributeの共通部分」を保存する必要があり,この段階でノードとして$k_b$,~$k_a$を +準備している. \item \LuaTeX-jaの和文処理グルー挿入処理において, このwhatsit~$W$はまとめて -「先頭が『流』,最後が『暢』であるようなhboxを \verb|\unhbox| で展開したもの」と扱われる. +「先頭が『流』,最後が『暢』であるようなhboxを\cs{unhbox}で展開したもの」と扱われる. 言い換えれば,ルビ部分を無視した単なる「流暢」という和文文字の並びとして扱われる\footnote{「流」「暢」の間のグルーは既に入っている,と扱われる.}. 次のサンプルを参照 \begin{LTXexample}[preset=\Large] @@ -729,7 +787,10 @@ $s_i$達の中の文字は既にルビの大きさである. \end{LTXexample} \item 和文処理グルーの挿入が終わった後で,可動グループルビのためのノードの挿入に入る. \begin{enumerate} -\item $W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入され,$W$の周辺は次のようなノード列になる. +\item $W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入され,$W$の周辺は次のようなノード列になる + \footnote{% + $r_2$と$g_2$の間には,ルビと直後の文字の間にある禁則処理のためのペナルティなどが入っているかもしれない. + }. \begin{align*} (\text{other nodes})&\longrightarrow \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{} @@ -743,14 +804,14 @@ $s_i$達の中の文字は既にルビの大きさである. \begin{gather*} (\text{other nodes})\longrightarrow \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}\\ -\noalign{\hrulefill 行の境目\hrulefill} +\noalign{\leavevmode\hskip 2\zw\hrulefill 行の境目\hrulefill\kern 2\zw\null} \Node{rule $r_2$}{}\longrightarrow \Node{glue $g_2$}{}\longrightarrow (\text{other nodes}) \end{gather*} のようになったとしたら,「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり, $g_i$,~$r_i$達のノードを適切に置き換えればよい(後で詳しく説明する). -\begin{figure}\centering\small +\begin{table}\centering\small \begin{tabular}{cllll} \toprule \multicolumn{1}{c}{\bf ノード}&\multicolumn{1}{c}{\bf 組み方}&\multicolumn{1}{c}{\bf サンプル}% @@ -766,16 +827,16 @@ $n_2$&行末2グループ& \fbox{を}{\color{blue!50!black}\gt\ltjruby[pre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule & $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2$\\ -$n_3$&行頭1グループ& -\Large -\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に} -& -$r_2\rightarrow g_2$\\ -$n_4$&行頭2グループ& +$n_3$&行頭2グループ& \Large \vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に} & $W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\ +$n_4$&行頭1グループ& +\Large +\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に} +& +$r_2\rightarrow g_2$\\ $n_5$&行中& \Large \fbox{を}{\color{blue!50!black}\gt\ltjruby[post=0.5,pre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に} @@ -785,32 +846,31 @@ $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\ \bottomrule \end{tabular} \caption{ルビの組み方と対応するノード並び} -\label{fig:node} -\end{figure} +\label{tab:node} +\end{table} \item なお,$r_i$達の高さ・深さは組み上がった後のそれである. -$g_i$,~$r_i$達の幅は,図\nobreak\ref{fig:node}に示したような対応に沿って算出する. -例えばこの場合,行中形$n_5$に対して +$g_i$,~$r_i$達の幅は,\autoref{tab:node}に示したような対応に沿って算出する. +例えば,行中形$n_5$に対して,記号は乱用気味であるが, \[ g_0+r_1+g_2+r_2+g_2 = (3-0.25\times 2)\,\mathrm{zw}=2.5\,\mathrm{zw} \] -という方程式が立つ(zwは親文字全角の幅,進入量込). -$n_1$から$n_5$まで計5本の方程式が立つが,これらはGau\ss の消去法で解くことができて -$g_i$,~$r_i$達の幅が求まる. +という方程式が立つ(zwは親文字全角の幅,引き算は進入量の分). +方程式と未知数($g_i$,~$r_i$達の幅)はどちらも$2\mathit{cmp}+1$であるので, +Gau\ss の消去法により$g_i$,~$r_i$達の幅が求まる. \item また,ルビ処理を統括しているwhatsit~$W$の値も -\[ - \Node{whatsit $w$}{value: 2}\longrightarrow - \Node{vlist $n_1$}{末1}\longrightarrow - \Node{vlist $n_2$}{末2}\longrightarrow - \Node{vlist $n_3$}{頭1}\longrightarrow - \Node{vlist $n_4$}{頭2}\longrightarrow - \Node{vlist $n_5$}{中} -\] +\begin{align*} + \Node{whatsit $w$}{value: 2} + &\longrightarrow\Node{vlist $n_1$}{末1}\longrightarrow\Node{vlist $n_2$}{末2} + \longrightarrow\Node{vlist $n_3$}{頭2}\longrightarrow\Node{vlist $n_4$}{頭1} + \longrightarrow\Node{vlist $n_5$}{中}\\ + &\longrightarrow\Node{kern $k_b$}{}\longrightarrow\Node{kern $k_a$}{} +\end{align*} に置き換えておく. \end{enumerate} -\item \LuaTeX の行分割処理を普通に行う. +\item \LuaTeX の行分割処理を通常通りに行う. \item 行分割の結果に従って,$g_i$,~$r_i$達を適切に置換する. 例えば行分割の結果 @@ -818,7 +878,7 @@ $g_i$,~$r_i$達の幅が求まる. (\text{other nodes})\longrightarrow \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{} \tag{行A}\\ -\noalign{\hrulefill 行の境目\hrulefill} +\noalign{\leavevmode\hskip 2\zw\hrulefill 行の境目\hrulefill\kern 2\zw\null} \Node{rule $r_2$}{}\longrightarrow \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})\tag{行B} \end{gather*} @@ -833,25 +893,32 @@ $g_i$,~$r_i$達の幅が求まる. $g_0$,~($W$,)~$r_1$というノードの並びは,「行末1グループ」$n_1$に対応しているので, $g_0$,~$r_1$を行Aから除去・メモリ解放し,代わりに$n_1$を行Aの中身に追加する. +\item +\texttt{always\_highlight\_protrusion}キーが偽であり,かつルビの前への突出量から\ActIntr{前文字進入量}を引いた値 + $\mathit{prot\_b}$が0でない場合は,$n_1$の直前にkern~$k_b$(長さ$\mathit{prot\_b}$)と,それを打ち消すkern(長さ$-\mathit{prot\_b}$)を挿入する. + \item 次に行Bの処理にうつる.行Aでルビの処理は完了していない(2グループのルビなのにまだ1グループしか使っていない)ので, 「whatsit~$W$由来」のノードがいくつか行B内に残っているはずである. -案の定,$r_2$,~$g_2$というノード列が見つかった.これは「行頭1グループ」$n_3$に対応しているので, -$r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行Bの中身に挿入する. - +案の定,$r_2$,~$g_2$というノード列が見つかった.これは「行頭1グループ」$n_4$に対応しているので, +$r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_4$を行Bの中身に挿入する. +\texttt{always\_highlight\_protrusion}キーが偽であったときは,行Aのときと同様にkernを2つ挿入する. + \item これで2グループとも使い切ったことになるので, 隔離しておいた$W$を,(使われなかった$n_2$,~$n_4$,~$n_5$などと共に)メモリ解放する.結果として -次のようになった: +次のようになる. \begin{gather*} - (\text{other nodes})\longrightarrow - \Node{vlist $n_1$}{末1}\tag{行A}\\ -\noalign{\hrulefill 行の境目\hrulefill} -\Node{vlist $n_3$}{頭1}\longrightarrow (\text{other nodes})\tag{行B} + (\text{other nodes})\longrightarrow \Node{kern~$k_b$}{$\mathit{prot\_b}$} + \longrightarrow \Node*{kern}{$-\mathit{prot\_b}$}\longrightarrow \Node*{vlist $n_1$}{末1}\tag{行A}\\ +\noalign{\leavevmode\hskip 2\zw\hrulefill 行の境目\hrulefill\kern 2\zw\null} +\Node*{vlist $n_4$}{頭1}\longrightarrow \Node*{kern}{$-\mathit{prot\_a}$} + \longrightarrow \Node{kern~$k_a$}{$\mathit{prot\_a}$}\longrightarrow (\text{other nodes})\tag{行B} \end{gather*} + ここで,色付きの4ノードは,\Pkg{lua-ul}パッケージの提供する「下線」命令が + \cs{ltjruby}のみを有効範囲として発行された場合の,「下線」がかかってくるノードたちである. \end{enumerate} \end{enumerate} -\newpage \section{いくつかの例} \def\rubytest{\ruby{黄金橋}{ゴールデンゲートブリッジ}\relax} @@ -949,7 +1016,6 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B \item[肩つき] {\ltjsetruby{kata}\sample} \end{description} -\newpage \begin{LTXexample}[pos=t] {\ltjsetruby{stretch=101}% 親文字均等割り禁止 \ruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ruby{視|聴|中}{し|ちよう|ちゆう}% @@ -961,7 +1027,6 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B \end{LTXexample} -\typeout{AAAAAA} \setbox0=\vbox{\hsize20\zw \ltjsetparameter{rubypreintrusion={`◆,1}} \ltjsetparameter{rubypostintrusion={`◆,1}} @@ -1005,6 +1070,18 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B } \fbox{\box0} +\medskip +\begin{LTXexample}[pos=t] +% lua-ul +たとえば\strikeThrough{\ruby{取|消|線}{とりけしの|いちじゆう|せん}を}引いてみる. +\strikeThrough{\ruby{取|消|線}{とりけしの|いちじゆう|せん}}だとどうかな + +\ltjsetparameter{prebreakpenalty={`な,2893}}% デバッグ用.あっても正常動作を確認. +\highLight{周囲が}\ruby{aaaaaaaaaaa}{全く}\highLight{ない} +ああああああああああああああああああああああああああ +周囲が\highLight{\ruby{あ|い|う|え}{おそらく|きっと|たぶん|maybe}}ないと思う +\end{LTXexample} + \newpage \section{『日本語組版処理の要件』20120403の例} @@ -1053,7 +1130,6 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B \obeylines 3.62 の\ruby{葯}{やく}に 3.63 版面の\ruby{地}{ち}に\quad 版面の\ruby[kata]{地}{ち}に -% 横組肩つきはしないが,現状では縦組未サポートだし,仕方ないね 3.65 の\ruby{砦}{とりで}に {\ltjsetruby{kata}% 3.66上 の\ruby{旬}{しゆん}に\quad 後\ruby{旬}{しゆん}に @@ -1094,29 +1170,32 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B の\ruby{成|就}{じよう|じゆ}を\quad の\ruby{紋|章}{もん|しよう}を\quad% の\ruby{象|徴}{しよう|ちよう}を} % モノルビ配置.望ましくない -3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を\quad% - -3.77 {\ltjsetruby{stretchbol=121, stretcheol=121}% 行頭・行末揃えず - \hbox{\vrule\vbox{\hsize=10\zw\noindent\kern.75\zw - あああああああの\ruby{流|儀}{りゆう|ぎ}がある.}\vrule}\quad% +3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を +3.77 {\ltjsetruby{stretchbol=121, stretcheol=121}% 行頭・行末揃えず + \hbox{\vrule\vbox{\hsize=5.25\zw ……等を\ruby{流|儀}{りゆう|ぎ}が}\vrule}\quad% \hbox{\vrule\vbox{\hsize=5\zw ……等の\ruby{無|常}{む|じよう}を}\vrule}} \end{LTXexample} \paragraph{3.3.8節 ルビはみ出し}\ \begin{LTXexample}[pos=t] -\obeylines +\obeylines\RULER{3.78}{4} 3.78 \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す 3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・% \ruby{旁}{つくり}がある +3.79 {\ltjsetparameter{rubypreintrusion={`\,,1}}% +漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},% +\ruby{旁}{つくり}がある} +% 上が『要件』にある例.標準(下)では句読点の直前にはルビがかからない. 3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},% - \ruby{旁}{つくり}がある +\ruby{旁}{つくり}がある \end{LTXexample} \begin{LTXexample}[pos=t] -\obeylines +\obeylines\RULER{3.79}{9} 3.79 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を 3.80 漢字の部首には「\ruby{偏}{へん}」「\ruby{冠}{かんむり}」「\ruby{脚}{きやく}」% 「\ruby{旁}{つくり}」がある -3.80 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を +3.80 {\ltjsetparameter{rubypreintrusion={`\,,1}}% +この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を} 3.81× に\ruby{暁}{あかつき}の\kern-1\zw の\ruby{趣}{おもむき}を(良くない例) 3.82 に\ruby{暁}{あかつき}の\ruby{趣}{おもむき}を diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx index b550dc58d4..5b46c260fc 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja.dtx +++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx @@ -1467,14 +1467,19 @@ Alphabetic fonts &\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule Japanese fonts -&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\ +&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}&\cs{providejfontfamily}\\ Alphabetic fonts -&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\ +&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}&\cs{providefontfamily}\\ \midrule Japanese fonts -&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +&\cs{newjfontface}&\cs{renewjfontface}&\cs{setjfontface}&\cs{providejfontface}\\ Alphabetic fonts -&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ +&\cs{newfontface}&\cs{renewfontface}&\cs{setfontface}&\cs{providefontface}\\ +\midrule +Japanese fonts +&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +Alphabetic fonts +&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ \bottomrule \end{tabular}\par} \end{table} @@ -1492,14 +1497,19 @@ Alphabetic fonts &\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule \emph{和文} -&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\ +&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}&\cs{providejfontfamily}\\ +\emph{欧文} +&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}&\cs{providefontfamily}\\ +\midrule +\emph{和文} +&\cs{newjfontface}&\cs{renewjfontface}&\cs{setjfontface}&\cs{providejfontface}\\ \emph{欧文} -&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\ +&\cs{newfontface}&\cs{renewfontface}&\cs{setfontface}&\cs{providefontface}\\ \midrule \emph{和文} -&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ \emph{欧文} -&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ +&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ \bottomrule \end{tabular}\par} \end{table} @@ -3752,9 +3762,9 @@ This means the following two lines have the same meaning: \jfont\hoge=hogem:jfm=ujis;-kern at 3.5mm % ==> kern 無効(明示) \jfont\hoge=hogem:jfm=ujis at 3.5mm % ==> kern 有効(暗黙) \jfont\hoge=hogem:jfm=ujis;+kern at 3.5mm % ==> kern 有効(明示) -\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=-ujis}{} % ==> kern 無効(明示) -\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=ujis}{} % ==> kern 有効(暗黙) -\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=ujis+kern}{}% ==> kern 有効(明示) +\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=ujis;-kern}{} % ==> kern 無効(明示) +\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=ujis}{} % ==> kern 有効(暗黙) +\DeclareFontShape{JY3}{fuga}{m}{n}{<-> s*hogem:jfm=ujis;+kern}{} % ==> kern 有効(明示) \end{lstlisting} \item バージョン20220411.0以降では,\LuaTeX-ja読み込み時や,\Pkg{ltjclasses}, \Pkg{ltjsclasses}において @@ -3765,7 +3775,7 @@ This means the following two lines have the same meaning: \ltj@stdmcfont:-kern;jfm=\ltj@stdyokojfm}{} \end{lstlisting} とOpenType機能\texttt{kern}を明示的に無効化した状態で定義する. - これは標準JFM(\texttt{jfm-ujis.lua}, \texttt{jfm-ujisv.lua})が + これは標準JFM\ (\texttt{jfm-ujis.lua}, \texttt{jfm-ujisv.lua})が フォント由来のカーニングが入ることを期待していないためである. \item @@ -4852,7 +4862,7 @@ Hence we have the following result: %<*ja> (任意,バージョン2以降) -優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が + 行末文字の位置調整が有効であり,かつ現在の文字クラスの文字が 行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが 挿入される(\autoref{ssec:adj}参照). @@ -7619,7 +7629,7 @@ for making the difference obvious.} \item[「中身までみた」行送り計算] 複数行に渡る文章を組版するときには行間に空きが入ることが普通である. \TeX では各行が一つずつの水平ボックスをなしていることを思い出すと,隣り合った - 2つの行(つまり水平ボックス)の間の空きは次のようにして決まるのだった: + 2\nobreak つの行(つまり水平ボックス)の間の空きは次のようにして決まるのだった: \begin{itemize} \item 「通常に組んだときの行間」$d$を,\cs{baselineskip}から 「前の行」の深さと「次の行」の高さを加えたものを引いた値とする. @@ -7833,7 +7843,7 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} さらに,バージョン20220211.0以降では次の命令が提供される. \begin{cslist} - \item[\cs{ltjghostbeginjachar}] + \item[\cs{ltjghostbeforejachar}] \LuaTeX-ja本体が提供している\cs{ltjfakeparbegin}, \cs{ltjfakeboxbdd}と類似の命令である. 実行された箇所が(限定・非限定を問わず)水平モードであった場合に,実行された箇所は 「文字クラス0の\textbf{JAchar}」の直前であると, @@ -7850,7 +7860,7 @@ A\LG 字 \par% ==> ALchar--(xkanjiskip)--\LG \end{LTXexample} \item[\cs{ltjghostafterjachar}] - \cs{ltjghostbeginjachar}と対を成す命令で,実行された箇所は + \cs{ltjghostbeforejachar}と対を成す命令で,実行された箇所は 「文字クラス0の\textbf{JAchar}」の直後であると, \LuaTeX-jaの和文処理グルー挿入処理に認識させる.以下の実行例を参照. @@ -11286,7 +11296,16 @@ $n$個あるペナルティの箇所が改行可能箇所である.いずれ なお,段落の末尾には\cs{penalty10000}と\cs{parfillskip}由来のグルーが自動的に入るが, これらとの兼ね合いのため\emph{最後のクラスタについては上記のノード挿入処理は行われない}. -段落最終行の行末文字の位置調整は,すでに述べた「行分割後の場合」における最終行の処理をそのまま用いている. +段落最終行の行末文字の位置調整は,すでに述べた「行分割後の場合」における最終行の処理を流用しているが, +そのままでは「段落末尾をぶら下げ組($a_1=-0.5$)にする」ことができない +\footnote{通常時は\cs{parfillskip}の内容は\texttt{0pt plus 1fil}であるため, + 負の長さになることはない.これに伴って,「段落末尾はぶら下げ組が望ましい」状況であっても, + 実際には末尾の句点(とその前の数文字)がまとめて次の行に追い出されてしまう.}ため, +\begin{itemize} + \item 段落末尾の\cs{penalty10000}\cs{parfillskip}の直前に,$a_1\text{\cs{zw}}$のカーンを挿入する + \item 行分割後,行末文字の位置調整を行う前に,そのカーンを削除する +\end{itemize} +という前処理を追加している. \subsection{グルーの調整} $|\textit{total}|$の分だけが,行中のグルーの伸び量,あるいは縮み量に応じて負担されることになる. diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty index 76ebf8716c..6ef3ff1751 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-fontspec-27c}[2024-02-19 fontspec support of LuaTeX-ja] +\ProvidesPackage{luatexja-fontspec-27c}[2024-05-27 fontspec support of LuaTeX-ja] \RequirePackage{l3keys2e} \ExplSyntaxOn @@ -359,10 +359,24 @@ \setfontfamily #1 [#2,#4] {#3} \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn } +\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } { + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn + \providefontfamily #1 [#2,#4] {#3} + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn +} \DeclareDocumentCommand \newjfontface { m O{} m O{} } { \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} } +\DeclareDocumentCommand \renewjfontface { m O{} m O{} } { + \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \setjfontface { m O{} m O{} } { + \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \providejfontface { m O{} m O{} } { + \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} \prop_new:N \l__ltj_fontspec_tmp_prop \prop_new:N \g__ltj_fontspec_fontopts_prop diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29c.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29c.sty index 1415cee127..51af33447c 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29c.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29c.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-fontspec-29c}[2024-05-05 fontspec support of LuaTeX-ja] +\ProvidesPackage{luatexja-fontspec-29c}[2024-05-27 fontspec support of LuaTeX-ja] \RequirePackage{l3keys2e} \ExplSyntaxOn @@ -359,10 +359,24 @@ \setfontfamily #1 [#2,#4] {#3} \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn } +\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } { + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn + \providefontfamily #1 [#2,#4] {#3} + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn +} \DeclareDocumentCommand \newjfontface { m O{} m O{} } { \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} } +\DeclareDocumentCommand \renewjfontface { m O{} m O{} } { + \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \setjfontface { m O{} m O{} } { + \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \providejfontface { m O{} m O{} } { + \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} \prop_new:N \l__ltj_fontspec_tmp_prop \prop_new:N \g__ltj_fontspec_fontopts_prop diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29e.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29e.sty index e763d91ad7..02a79ad6ca 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29e.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-29e.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-fontspec-29e}[2024-05-14 fontspec support of LuaTeX-ja] +\ProvidesPackage{luatexja-fontspec-29e}[2024-05-27 fontspec support of LuaTeX-ja] \RequirePackage{l3keys2e} \ExplSyntaxOn @@ -359,10 +359,24 @@ \setfontfamily #1 [#2,#4] {#3} \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn } +\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } { + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn + \providefontfamily #1 [#2,#4] {#3} + \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn +} \DeclareDocumentCommand \newjfontface { m O{} m O{} } { \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} } +\DeclareDocumentCommand \renewjfontface { m O{} m O{} } { + \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \setjfontface { m O{} m O{} } { + \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} +\DeclareDocumentCommand \providejfontface { m O{} m O{} } { + \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} +} \prop_new:N \l__ltj_fontspec_tmp_prop \prop_new:N \g__ltj_fontspec_fontopts_prop diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty index d0d8e5488d..4c64b27d14 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty @@ -4,7 +4,7 @@ % LaTeX only! \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{luatexja-ruby}[2023-10-08 v0.62] +\ProvidesPackage{luatexja-ruby}[2024-09-09 v0.7] \RequirePackage{luatexja} %%------------------ @@ -18,9 +18,9 @@ %% 引数:ルビ全角を単位とした実数 %% この文字への pre-, post-intrusion の許容量 \define@key[ltj]{japaram}{rubypreintrusion}{% - \ltj@@set@stack@real{RIPRE}{-0x7FFFFFFF}{0x7FFFFFFF}#1 } + \ltj@@set@stack@real{RIPRE}{-0x7FFFFFFF}{0x7FFFFFFF}#1\relax} \define@key[ltj]{japaram}{rubypostintrusion}{% - \ltj@@set@stack@real{RIPOST}{-0x7FFFFFFF}{0x7FFFFFFF}#1 } + \ltj@@set@stack@real{RIPOST}{-0x7FFFFFFF}{0x7FFFFFFF}#1\relax} \def\ltj@@set@stack@real#1#2#3{% \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.#1, #2, #3, token.scan_word)}} @@ -29,7 +29,6 @@ \def\ltj@@rkeydef#1{ \define@key[ltj]{ruby}{#1}{\expandafter\def\csname ltj@@rubyip@#1\endcsname{##1}} } -%% attr_ruby_mode %% bit 0: intrusion を有効にするか(1: 有効) %% bit 1: 前後の intrusion 許容量を小さい方に揃える (1: yes) %% bit 2--4: intrusion をどう使って親文字を配置するか @@ -42,10 +41,10 @@ %% ※ 01--100 で,intrusion で賄えきれなかった場合はいつものように伸長する. %% bit 5: 熟語ルビの際の処理方法(0: 常にグループ,1: 可能な限りブロックごとに) %% ↑bit 5 は今は無効 +%% bit 6: 突出部分について lua-ul 有効範囲から除外する処理するか \ltj@@rkeydef{mode} %% intrusion 量強制固定(bit 0, bit 1 より優先,負数で「自動」) %% attr は sp 単位だが,ユーザーはルビ全角単位で指定する -%% attr_ruby_maxprep, attr_ruby_maxpostp \ltj@@rkeydef{pre} \ltj@@rkeydef{post} %% 親文字伸長の際の比,{0}{1}{1} などと0--7 の数 3 つで指定 @@ -54,14 +53,11 @@ \ltj@@rkeydef{stretcheol} % 行末形 \ltj@@rkeydef{stretch} % 行中形 %% ルビが伸長するときの比 {1}{2}{1} などと0--7 の数 3 つで指定 -%% attr_ruby_mode 上位部分 \ltj@@rkeydef{stretchruby} %% ルビ<親のとき,ルビと親文字の端の最大値 -%% attr_ruby_maxmargin %% attr は sp 単位だが,ユーザーは親文字全角単位で指定 \ltj@@rkeydef{maxmargin} %% ルビと親文字の垂直方向の空き -%% attr_ruby_intergap %% attr は sp 単位だが,ユーザーは親文字全角単位で指定 \ltj@@rkeydef{intergap} @@ -92,6 +88,7 @@ \define@boolkey[ltj]{ruby}{intrude_xkanjiskip}[true]{} \define@boolkey[ltj]{ruby}{intrude_kanjiskip}[true]{} +\define@boolkey[ltj]{ruby}{always_highlight_protrusion}[true]{} %%%%%%%% setkeys の別名 \protected\def\ltjsetruby{\setkeys[ltj]{ruby}} @@ -141,7 +138,8 @@ [luatexja.icflag_table.XKANJI_SKIP]=true, [luatexja.icflag_table.XKANJI_SKIP_JFM]=true, \fi - \string} + \string}, + quirk_protrusion = \ifltj@ruby@always_highlight_protrusion false \else true \fi \string} } \egroup @@ -264,7 +262,7 @@ kenten=\textbullet, fontcmd=\relax, ybaseheight=0.88, tbaseheight=0.5, yrubydepth=0.12, trubydepth=0.5, intrude_jfmgk, intrude_kanjiskip, intrude_xkanjiskip, - epsilon=0.0001, + epsilon=0.0001, always_highlight_protrusion=false, } \endinput diff --git a/macros/luatex/generic/luatexja/src/lltjext.sty b/macros/luatex/generic/luatexja/src/lltjext.sty index a83c9305c9..aebdc3987c 100644 --- a/macros/luatex/generic/luatexja/src/lltjext.sty +++ b/macros/luatex/generic/luatexja/src/lltjext.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjext}[2022-08-24 v1.2k-ltj-14 Macros for vertical writing] +\ProvidesPackage{lltjext}[2024-07-23 v1.2k-ltj-16 Macros for vertical writing] \RequirePackage{luatexja} \newcount\ltj@ext@dir \let\ltj@lltjext@orig@tabular=\tabular @@ -27,7 +27,7 @@ \def\p@stabular<#1>#2{% \setlength\dimen@{#2}% \edef\@halignto{to\the\dimen@}\p@tabular<#1>} -\def\p@tabular<#1>{\leavevmode \hbox \bgroup +\def\p@tabular<#1>{\leavevmode\null \hbox \bgroup % fixed for unwanted xkanjiskip \ltj@ext@dir=\ltjgetparameter{direction}\relax $\let\@acol\@tabacol \let\@classz\@tabclassz @@ -78,7 +78,7 @@ \ifhmode \@preamerr\z@ \@@par\fi \@preamble} \def\endarray{\crcr\egroup\egroup\@end@alignbox} -\def\endtabular{\endarray$\egroup} +\def\endtabular{\endarray$\egroup\null} \expandafter \let \csname endtabular*\endcsname = \endtabular % ↓中身\周囲→ yoko tate utod dtou % yoko A* B* B B @@ -541,17 +541,11 @@ \else \let\box@dir\utod \fi \fi -\ifltj@ltfilehook@avail % LaTeX2e >= 2020-10-01 \@defaultunitsset\@picht{#3}\unitlength \@defaultunitsset\@picwd{#2}\unitlength \setbox\@picbox\hbox to\@picwd\bgroup\box@dir \@defaultunitsset\@tempdimc{#4}\unitlength\hskip-\@tempdimc \@defaultunitsset\@tempdimc{#5}\unitlength\lower\@tempdimc\hbox\bgroup -\else % <= 2020-02-02 - \@picwd=#2\unitlength \@picht=#3\unitlength - \setbox\@picbox\hbox to\@picwd\bgroup\box@dir - \hskip-#4\unitlength\lower#5\unitlength\hbox\bgroup -\fi \ltj@@pic@reset@blshift \ignorespaces} \def\endpicture{% @@ -675,6 +669,7 @@ %% Compatibility with array package +\ExplSyntaxOn \def\ltj@lltjext@patch@array{% \patchcmd{\@tabular}{\hbox\bgroup}{% \hbox\bgroup\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{} @@ -682,10 +677,6 @@ {\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{} \expandafter\let\csname tabular*\endcsname=\ltj@lltjext@orig@tabularS \patchcmd{\p@stabular}{\p@tabular}{\@tabular}{}{} - \@ifpackagelater{array}{2018/09/13} - {\expandafter\@firstoftwo} - {\expandafter\@secondoftwo} - {% = for 2018/09/13 v2.4i or newer \def\@startpbox##1{\bgroup \color@begingroup \box@dir\adjustbaseline%%% これを追加 @@ -694,16 +685,8 @@ \vrule \@height \ltjgetht\@arstrutbox \@width \z@ \everypar{}}% }% - }{ % = for 2018/04/30 v2.4h or older - \def\@startpbox##1{\bgroup - \box@dir\adjustbaseline%%% これを追加 - \setlength\hsize{##1}\@arrayparboxrestore - \everypar{% - \vrule \@height \ltjgetht\@arstrutbox \@width \z@ - \everypar{}}% - }% - }% \def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}} +\ifcsname tbl_save_outer_table_cols:\endcsname %%%%%% >=2024-06-01 \def\p@array<##1>[##2]##3{% \ifnum\ltj@ext@dir=0 \ltj@ext@dir=\ltjgetparameter{direction}\relax\fi \let\box@dir\relax @@ -736,20 +719,98 @@ \@depth \arraystretch \ltjgetdp \@tempcnta \@width \z@}% \fork@array@option<##1>[##2]% + \tbl_save_outer_table_cols: \begingroup \@mkpream{##3}% - \xdef\@preamble{\noexpand\ialign \noexpand \@halignto - \bgroup \tabskip \z@skip \@arstrut \@preamble - \tabskip \z@ \cr}% + \tbl_count_table_cols: + \xdef\@preamble{ + \noexpand\ar@ialign + \@halignto + \bgroup \@arstrut + \UseTaggingSocket{tbl/row/begin} + \tbl_init_cell_data_for_row: + \@preamble + \tabskip \z@ \cr}% \endgroup \@arrayleft - \@begin@alignbox\bgroup\box@dir\adjustbaseline - \let\par\@empty - \let\@sharp####\let\protect\relax - \let\\\@arraycr\let\tabularnewline\\\let\par\@empty - \lineskip\z@skip\baselineskip\z@skip\@preamble} - \def\endarray{\crcr\egroup\egroup\@end@alignbox\@arrayright} + \@begin@alignbox + \bgroup + \box@dir\adjustbaseline + \let\@sharp####\let\protect\relax + \lineskip \z@ + \baselineskip \z@ + \mathsurround \z@ + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty + \UseTaggingSocket{tbl/init} + \@preamble + } + \def\endtabular{\endarray$\egroup + \UseTaggingSocket {tbl/hmode/end}\null} + \def\endarray{ + \tbl_crcr:n{endarray} \egroup + \UseTaggingSocket{tbl/finalize} + \tbl_restore_outer_cell_data: + \egroup\@end@alignbox + \@arrayright \gdef\@preamble{}% + } +\else %%%%%% <2024-06-01 + \def\p@array<##1>[##2]##3{% + \ifnum\ltj@ext@dir=0 \ltj@ext@dir=\ltjgetparameter{direction}\relax\fi + \let\box@dir\relax + \if ##1z\relax + \ifnum\ltj@ext@dir=3\relax + \let\box@dir\utod\@tempcnta=\zstrutbox + \fi + \else + \if ##1y\relax + \let\box@dir\yoko\@tempcnta=\ystrutbox + \else\if ##1t\relax + \let\box@dir\tate\@tempcnta=\tstrutbox + \else\if ##1d\relax + \let\box@dir\dtou\@tempcnta=\dstrutbox + \else\if ##1u\relax + \let\box@dir\utod\@tempcnta=\zstrutbox + \fi\fi\fi\fi + \fi + \ifx\box@dir\relax + \ifcase\ltj@ext@dir + \or \let\box@dir\dtou\@tempcnta=\dstrutbox% dtou + \or\or\let\box@dir\tate\@tempcnta=\tstrutbox% tate + \or \let\box@dir\yoko\@tempcnta=\ystrutbox% yoko + \else \let\box@dir\utod\@tempcnta=\zstrutbox% utod + \fi + \fi + \setbox \@arstrutbox \hbox{\box@dir\vrule + \@height \arraystretch + \dimexpr \ltjgetht\@tempcnta+\extrarowheight\relax + \@depth \arraystretch \ltjgetdp \@tempcnta + \@width \z@}% + \fork@array@option<##1>[##2]% + \begingroup + \@mkpream{##3}% + \xdef\@preamble{\noexpand\ialign \@halignto + \bgroup \@arstrut\@preamble \tabskip \z@ \cr}% + \endgroup + \@arrayleft + \@begin@alignbox + \bgroup + \box@dir\adjustbaseline + \let\@sharp####\let\protect\relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty + \@preamble + } + \def\endtabular{\endarray\m@th$\egroup\null} + \def\endarray{ + \crcr\egroup\egroup\@end@alignbox + \@arrayright \gdef\@preamble{}% + } +\fi + \expandafter \let \csname endtabular*\endcsname = \endtabular } +\ExplSyntaxOff \@ifpackageloaded{array}{% \let\tabular=\ltj@lltjext@orig@tabular \let\array=\ltj@lltjext@orig@array @@ -760,9 +821,4 @@ \ltj@ExecuteAfterPackage{array}{\ltj@lltjext@patch@array} } -%%%%%%%%%%%%%%%% LuaTeX-ja original - -%%\define@key[ltj]{japaram}{autouprightnum}{% %COUNT -%% \ltj@@set@stack{AURN}{0}{10000}\z@#1 } - \endinput diff --git a/macros/luatex/generic/luatexja/src/ltj-adjust.lua b/macros/luatex/generic/luatexja/src/ltj-adjust.lua index 89ad7816d2..2214f1907c 100644 --- a/macros/luatex/generic/luatexja/src/ltj-adjust.lua +++ b/macros/luatex/generic/luatexja/src/ltj-adjust.lua @@ -37,6 +37,7 @@ local node_tail = node.direct.tail local get_attr = node.direct.get_attribute local set_attr = node.direct.set_attribute local insert_after = node.direct.insert_after +local node_remove = node.direct.remove local id_glyph = node.id 'glyph' local id_kern = node.id 'kern' @@ -205,7 +206,7 @@ end -- step 1 最終行用 local min, max = math.min, math.max local setsubtype = node.direct.setsubtype -local function aw_step1_last(p, total) +local function aw_step1_last(p, total, removed_le) local head = getlist(p) local x = node_tail(head); if not x then return total, false end -- x: \rightskip @@ -246,6 +247,7 @@ local function aw_step1_last(p, total) -- 続行条件2: min(eadt[1], 0)<= \parfillskip <= max(eadt[#eadt], 0) local pfw = getwidth(pf) + (total>0 and getfield(pf, 'stretch') or -getfield(pf, 'shrink')) *getfield(p, 'glue_set') + + removed_le if pfw<min(0,eadt[1]) or max(0,eadt[#eadt])<pfw then return total, false end -- \parfillskip を 0 にする total = total + getwidth(pf) @@ -393,6 +395,21 @@ do end end end +local insert_lineend_kern_tail +do + local insert_before = node.direct.insert_before + local KINSOKU = luatexja.icflag_table.KINSOKU + insert_lineend_kern_tail = function (head, nq, last) + if nq.met then + local eadt = nq.met.char_type[nq.class].end_adjust + if eadt and eadt[1]<0 then + local x = node_new(id_kern, 1) + setkern(x, eadt[1]); set_attr(x, attr_icflag, LINEEND) + insert_before(head, node_prev(last), x) + end + end + end +end local adjust_width do @@ -408,7 +425,15 @@ do last_p = p end if last_p then - myaw_step2(last_p, myaw_step1_last(last_p, get_total_stretched(last_p))) + local removed_le = 0 + local p = getlist(last_p); local pf = node_prev(node_tail(p)) + if getid(pf) == id_glue and getsubtype(pf) == 15 then + pf = node_prev(node_prev(pf)) + if getid(pf) == id_kern and get_attr_icflag(pf)==LINEEND then + removed_le = getwidth(pf); node_remove(p, pf); node_free(pf) + end + end + myaw_step2(last_p, myaw_step1_last(last_p, get_total_stretched(last_p), removed_le)) end return to_node(head) end @@ -426,6 +451,7 @@ do if status_le==2 then if not luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then ltjb.add_to_callback('luatexja.adjust_jfmglue', insert_lineend_kern, 'luatexja.adjust') + ltjb.add_to_callback('luatexja.adjust_jfmglue_tail', insert_lineend_kern_tail, 'luatexja.adjust') end myaw_step1, myaw_step1_last = dummy, aw_step1_last else @@ -435,7 +461,8 @@ do myaw_step1, myaw_step1_last = aw_step1, aw_step1_last end if luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then - luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') + luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') + luatexbase.remove_from_callback('luatexja.adjust_jfmglue_tail', 'luatexja.adjust') end end myaw_step2 = (status_pr>0) and aw_step2 or aw_step2_dummy @@ -560,7 +587,6 @@ end do local ltja = luatexja.adjust local sid_user = node.subtype 'user_defined' - local node_remove = node.direct.remove local node_write = node.direct.write local getvalue = node.direct.getdata local setvalue = node.direct.setdata diff --git a/macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua b/macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua index de18150d79..bb265c7e54 100644 --- a/macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua +++ b/macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua @@ -6,6 +6,9 @@ table_ivd_aj1 = { -- # -- # History: -- # +-- # 2022-09-13 Registration of additional sequences in the Adobe-Japan1 +-- # collection. +-- # -- # 2020-11-06 Registration of additional sequences in the MSARG -- # collection. -- # @@ -36,7 +39,7 @@ table_ivd_aj1 = { -- # For more details on the IVD, see UTS #37: -- # https://www.unicode.org/reports/tr37/ -- # --- # Copyright 2006-2020 Unicode, Inc. +-- # Copyright 2006-2022 Unicode, Inc. -- # For terms of use, see: https://www.unicode.org/copyright.html#8 -- # -- # EOF @@ -1952,7 +1955,7 @@ table_ivd_aj1 = { 0x209dbf,0x209db5,0x209db9,0x209dbd,0x209dc9,0x209dda,0x209de0,0x209de3,0x204d07,0x209e0a, 0x209e02,0x209e0d,0x209e1c,0x209e7b,0x222218,0x209e80,0x209e85,0x209e9b,0x22a38c,0x209ebd, 0x22a437,0x209edf,0x209eff,0x209f02,0x204d77,0x209f03,0x209f3a,0x209f3d,0x209f46,0x209f53, - 0x209f55,0x209f58,0x22a5f1,0x209f5d,0x22a602,0x209f69,0x209f6d,0x209f70,0x22a6b2,0x20793a, + 0x209f55,0x209f58,0x22a5f1,0x209f5d,0x22a602,0x209f69,0x209f6d,0x209f70,0x22a6b2,0x231350, 0x203614,0x2038ad,0x203dcc,0x203fdc,0x2045be,0x204610,0x204b7e,0x204c38,0x204ce1,0x204e0c, 0x204e23,0x204e24,0x204e79,0x204ef3,0x204f0c,0x204f19,0x204f2b,0x204f2e,0x204f31,0x204f84, 0x204f9e,0x204fb7,0x205004,0x20500c,0x20504c,0x20505f,0x205062,0x205077,0x20508e,0x20509e, diff --git a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua index ed7ab6daa8..38d9a72d52 100644 --- a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua +++ b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.jfmglue', - date = '2022-08-29', + date = '2024-10-12', description = 'Insertion process of JFM glues, [x]kanjiskip and others', }) luatexja.jfmglue = luatexja.jfmglue or {} @@ -587,7 +587,7 @@ function calc_np(last, lp) if k then return lp end end end - Np=nil + Np = nil end end -- 001 ----------------------------------------------- @@ -693,6 +693,7 @@ end -------------------- 最下層の処理 luatexbase.create_callback('luatexja.adjust_jfmglue', 'simple', function(n) return n end) +luatexbase.create_callback('luatexja.adjust_jfmglue_tail', 'simple', function(n) return n end) -- change penalties (or create a new penalty, if needed) local function handle_penalty_normal(post, pre, g) @@ -741,7 +742,7 @@ local function handle_penalty_jwp() local a = table_current_stack[luatexja.stack_table_index.JWP] if #widow_Bp == 0 then if a~=0 then - local p = node_new(id_penalty, widow_Np.nuc) + local p = node_new(id_penalty, nil, widow_Np.nuc) if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end setpenalty(p, a); head = insert_before(head, widow_Np.first, p) widow_Bp[1]=p; set_attr(p, attr_icflag, KINSOKU) @@ -1059,7 +1060,7 @@ local function handle_np_jachar(mode) real_insert(g) end if mode and Np.kcat%2~=1 then - widow_Np.first, widow_Bp, Bp = Np.first, Bp, widow_Bp + widow_Np.nuc, widow_Np.first, widow_Bp, Bp = Np.nuc, Np.first, Bp, widow_Bp end end @@ -1138,6 +1139,7 @@ local function handle_list_tail(mode, last) adjust_nq() if mode then -- the current list is to be line-breaked. + call_callback('luatexja.adjust_jfmglue_tail', head, Nq, last) -- Insert \jcharwidowpenalty if widow_Np.first then handle_penalty_jwp() end else diff --git a/macros/luatex/generic/luatexja/src/ltj-jfont.lua b/macros/luatex/generic/luatexja/src/ltj-jfont.lua index 26c76d88a1..3e685c0b41 100644 --- a/macros/luatex/generic/luatexja/src/ltj-jfont.lua +++ b/macros/luatex/generic/luatexja/src/ltj-jfont.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.jfont', - date = '2023-04-06', + date = '2024-07-25', description = 'Loader for Japanese fonts', }) @@ -434,17 +434,18 @@ do end -- extract jfm_name, jfm_spec and jfm_var -- normalize position of 'jfm=' and 'jfmvar=' keys + local match, sub = string.match, string.sub local function extract_jfm_spec(name) - name = (name:match '^{(.*)}$') or (name:match '^"(.*)"$') or name + name = (match(name,'^{(.*)}$')) or (match(name,'^"(.*)"$')) or name jfm_spec, jfm_var = '', '' - local tmp, index = name:sub(1, 5), 1 + local tmp, index = sub(name,1, 5), 1 if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then index = 6 end name = lpegmatch(jf_remainder, name) if jfm_name~='' then if luatexja.jfont.jfm_feature then - local l, t2 = name:sub(-1), {} + local l, t2 = sub(name,-1), {} for i,v in pairs(luatexja.jfont.jfm_feature) do -- print(i,type(v),v) t2[#t2+1] = (v==true) and i @@ -454,7 +455,7 @@ do else jfm_spec = jfm_name end - l = name:sub(-1) + l = sub(name,-1) name = name .. ((l==':' or l==';') and '' or ';') .. 'jfm=' .. jfm_spec if jfm_var~='' then name = name .. ';jfmvar=' .. jfm_var @@ -806,9 +807,9 @@ local list_rotate_glyphs do local ceil = math.ceil -- output of function_uax50.lua - -- UAX#50 for Unicode 14.0.0 + -- UAX#50 for Unicode 15.1.0 -- t[0] = true - local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2160, 2191, 2192, 2194, 2200, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2901, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3132, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3165, 3166, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3293, 3295, 3296, 3300, 3302, 3312, 3313, 3315, 3328, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3457, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3790, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5910, 5919, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6863, 6912, 6989, 6992, 7039, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8385, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 11858, 11870, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42955, 42960, 42962, 42963, 42964, 42965, 42970, 42994, 43053, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43884, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64451, 64467, 64912, 64914, 64968, 64975, 64976, 65008, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65949, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66939, 66940, 66955, 66956, 66963, 66964, 66966, 66967, 66978, 66979, 66994, 66995, 67002, 67003, 67005, 67072, 67383, 67392, 67414, 67424, 67432, 67456, 67462, 67463, 67505, 67506, 67515, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69248, 69290, 69291, 69294, 69296, 69298, 69376, 69416, 69424, 69466, 69488, 69514, 69552, 69580, 69600, 69623, 69632, 69710, 69714, 69750, 69759, 69827, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69960, 69968, 70007, 70016, 70112, 70113, 70133, 70144, 70162, 70163, 70207, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70748, 70749, 70754, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71354, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71495, 71680, 71740, 71840, 71923, 71935, 71943, 71945, 71946, 71948, 71956, 71957, 71959, 71960, 71990, 71991, 71993, 71995, 72007, 72016, 72026, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73648, 73649, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 77712, 77811, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92863, 92864, 92874, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122624, 122655, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123536, 123567, 123584, 123642, 123647, 123648, 124896, 124903, 124904, 124908, 124909, 124911, 124912, 124927, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 129200, 129202, 129792, 129939, 129940, 129995, 130032, 130042, 917505, 917506, 917536, 917632, 917760, 918000 } + local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2160, 2191, 2192, 2194, 2200, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2901, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3132, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3165, 3166, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3293, 3295, 3296, 3300, 3302, 3312, 3313, 3316, 3328, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3457, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3791, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5910, 5919, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6863, 6912, 6989, 6992, 7039, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8385, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 11858, 11870, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42955, 42960, 42962, 42963, 42964, 42965, 42970, 42994, 43053, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43884, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64451, 64467, 64912, 64914, 64968, 64975, 64976, 65008, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65949, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66939, 66940, 66955, 66956, 66963, 66964, 66966, 66967, 66978, 66979, 66994, 66995, 67002, 67003, 67005, 67072, 67383, 67392, 67414, 67424, 67432, 67456, 67462, 67463, 67505, 67506, 67515, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69248, 69290, 69291, 69294, 69296, 69298, 69373, 69416, 69424, 69466, 69488, 69514, 69552, 69580, 69600, 69623, 69632, 69710, 69714, 69750, 69759, 69827, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69960, 69968, 70007, 70016, 70112, 70113, 70133, 70144, 70162, 70163, 70210, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70748, 70749, 70754, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71354, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71495, 71680, 71740, 71840, 71923, 71935, 71943, 71945, 71946, 71948, 71956, 71957, 71959, 71960, 71990, 71991, 71993, 71995, 72007, 72016, 72026, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72448, 72458, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73472, 73489, 73490, 73531, 73534, 73562, 73648, 73649, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 77712, 77811, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92863, 92864, 92874, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119488, 119508, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122624, 122655, 122661, 122667, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 122928, 122990, 123023, 123024, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123536, 123567, 123584, 123642, 123647, 123648, 124112, 124154, 124896, 124903, 124904, 124908, 124909, 124911, 124912, 124927, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 129200, 129202, 129792, 129939, 129940, 129995, 130032, 130042, 917505, 917506, 917536, 917632, 917760, 918000 } local function rotate_in_uax50(i) local lo, hi = 1, #t while lo < hi do @@ -902,9 +903,10 @@ do end end + local sub = string.sub local function prepare_extra_data_font(id, res, name) if type(res)=='table' and (res.psname or res.filename) then - if (res.embedding=='no') and (type(name)=='string') and (name:sub(1,5)=='psft:') then + if (res.embedding=='no') and (type(name)=='string') and (sub(name,1,5)=='psft:') then font_extra_info[id] = res.resources.ltj_extra else local bname = res.psname or nameonly(res.filename) diff --git a/macros/luatex/generic/luatexja/src/ltj-latex.sty b/macros/luatex/generic/luatexja/src/ltj-latex.sty index 7e091d161d..9f6e4d0a36 100644 --- a/macros/luatex/generic/luatexja/src/ltj-latex.sty +++ b/macros/luatex/generic/luatexja/src/ltj-latex.sty @@ -12,45 +12,14 @@ \def\luatexjalatexLoaded{\endinput} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ltj-latex}[2022-10-15 LaTeX support of LuaTeX-ja] +\ProvidesPackage{ltj-latex}[2024-05-16 LaTeX support of LuaTeX-ja] \endlinechar=13 %%% LaTeX version detection -\newif\ifltj@ltfilehook@avail -\@ifl@t@r\fmtversion{2020-10-01}{% - \@ifl@t@r\fmtversion{2020-10-02}% - {\ltj@ltfilehook@availtrue} - {% - \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi - \else\ltj@ltfilehook@availtrue\fi - }% -}{} -\@ifl@t@r\fmtversion{2021-05-01}{\count@=1 }{\count@=0 } -\ifnum \count@<1 -%%%% \shipout - \newluafunction\ltj@@lua@shipout@inner - \directlua{ - local t = lua.get_functions_table() - local getbox, setbox = tex.getbox, tex.setbox - local shipout_lthook = luatexja.direction.shipout_lthook - t[\the\ltj@@lua@shipout@inner]=function () - local a = shipout_lthook(getbox(\the\ltj@afbox)) - if a then setbox(\the\ltj@afbox, a) end - end - } - \protected\luadef\ltj@@lua@shipout\ltj@@lua@shipout@inner - \def\ltj@shipout@{\ltj@@lua@shipout\primitive\shipout\box\ltj@afbox}% - \protected\def\ltj@shipout{\ltj@afterbox\ltj@shipout@} - \ifprimitive\shipout\let\shipout\ltj@shipout\fi - \ifcsname tex_shipout:D\endcsname - \expandafter\let\csname tex_shipout:D\endcsname\ltj@shipout - \fi -\else - \directlua{% - luatexbase.add_to_callback('pre_shipout_filter',luatexja.direction.shipout_lthook, 'ltj.direction', 1) - } -\fi +\directlua{% + luatexbase.add_to_callback('pre_shipout_filter',luatexja.direction.shipout_lthook, 'ltj.direction', 1) +} %%% patch for LaTeX \usepackage{lltjfont} @@ -59,36 +28,30 @@ \RequirePackage{lltjp-atbegshi} %%% patching commands -\ifltj@ltfilehook@avail - %% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code> - %% no-starred version: do nothing if the <package> is loaded - %% starred version: do <code> right away if the <package> is loaded - \def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage} - \def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage} - \@ifl@t@r\fmtversion{2021-11-15}{% 2021-11-15 - \def\@@ltj@ExecuteAfterPackage@star#1{\AddToHook{package/#1/after}} - \def\@@ltj@ExecuteBeforePackage@star#1{\AddToHook{package/#1/before}} - \long\def\@@ltj@ExecuteAfterPackage#1#2{% - \@ifpackageloaded{#1}{}{\AddToHook{package/#1/after}{#2}}% - } - \long\def\@@ltj@ExecuteBeforePackage#1#2{% - \@ifpackageloaded{#1}{}{\AddToHook{package/#1/before}{#2}}% - } - }{ - \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} - \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} - \long\def\@@ltj@ExecuteAfterPackage@star#1#2{% - \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}% - } - \long\def\@@ltj@ExecuteBeforePackage@star#1#2{% - \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}% - } +%% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code> +%% no-starred version: do nothing if the <package> is loaded +%% starred version: do <code> right away if the <package> is loaded +\def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage} +\def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage} +\@ifl@t@r\fmtversion{2021-11-15}{% 2021-11-15 + \def\@@ltj@ExecuteAfterPackage@star#1{\AddToHook{package/#1/after}} + \def\@@ltj@ExecuteBeforePackage@star#1{\AddToHook{package/#1/before}} + \long\def\@@ltj@ExecuteAfterPackage#1#2{% + \@ifpackageloaded{#1}{}{\AddToHook{package/#1/after}{#2}}% } -\else - \RequirePackage{filehook} - \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile - \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile -\fi + \long\def\@@ltj@ExecuteBeforePackage#1#2{% + \@ifpackageloaded{#1}{}{\AddToHook{package/#1/before}{#2}}% + } +}{ + \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} + \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} + \long\def\@@ltj@ExecuteAfterPackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}% + } + \long\def\@@ltj@ExecuteBeforePackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}% + } +} \def\ltj@pkgpatch@im#1{\@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%] \def\ltj@pkgpatch@im@#1[#2]{\ltj@ExecuteAfterPackage*{#1}{\ltj@pkgpatch@im@@{#2}}} \def\ltj@pkgpatch@im@@#1{% @@ -101,11 +64,7 @@ } \def\ltj@pkgpatch#1{\@ifnextchar[{\ltj@pkgpatch@{#1}}{\ltj@pkgpatch@{#1}[lltjp-#1]}}%] -\ifltj@ltfilehook@avail - \def\ltj@pkgpatch@@{\AddToHook{begindocument/before}[luatexja.autopatch]} -\else - \def\ltj@pkgpatch@@{\gpreto\@begindocumenthook} -\fi +\def\ltj@pkgpatch@@{\AddToHook{begindocument/before}[luatexja.autopatch]} \def\ltj@pkgpatch@#1[#2]{% \ltj@pkgpatch@@{% \@ifpackageloaded{#1}{\@ifpackageloaded{#2}{}{\RequirePackage{#2}}}{}% @@ -121,18 +80,12 @@ \ltj@pkgpatch{tascmac} \ltj@pkgpatch{ascmac}[lltjp-tascmac] \ltj@pkgpatch@im{stfloats} -\ifltj@ltfilehook@avail\else - \ltj@pkgpatch{preview} %% at \begin{document} - % (preview package has delayed option) -\fi \ltj@pkgpatch{array} %% at \begin{document} \ltj@pkgpatch{collcell} %% at \begin{document} \ltj@pkgpatch@im{unicode-math} \ltj@pkgpatch@im{siunitx} \ltj@pkgpatch@im{microtype} -\ifltj@ltfilehook@avail\else\ltj@pkgpatch@im{everyshi}\fi - \RequirePackage{lltjp-geometry} \ltj@ExecuteBeforePackage{breqn}{% diff --git a/macros/luatex/generic/luatexja/src/ltj-pretreat.lua b/macros/luatex/generic/luatexja/src/ltj-pretreat.lua index 43ecac806c..8f5632be4e 100644 --- a/macros/luatex/generic/luatexja/src/ltj-pretreat.lua +++ b/macros/luatex/generic/luatexja/src/ltj-pretreat.lua @@ -156,16 +156,17 @@ function set_box_stack_level(head, mode) if ltjs.list_dir == dir_tate then for p in traverse_glyph(to_direct(head)) do if getlang(p)==lang_ja and has_attr(p, attr_icflag, 0) then - local pf = ltjf_replace_altfont(attr_curtfnt, getchar(p), p) + local pc = ltjs_orig_char_table[p] or getchar(p) + local pf = ltjf_replace_altfont(attr_curtfnt, pc, p) if ltjf_font_metric_table[pf].vert_activated then - local pc = ltjf_font_metric_table[pf].vform[pc]; if pc then setchar(p, pc) end + pc = ltjf_font_metric_table[pf].vform[pc]; if pc then setchar(p, pc) end end end end else for p in traverse_glyph(to_direct(head)) do if getlang(p)==lang_ja and has_attr(p, attr_icflag, 0) then - ltjf_replace_altfont(attr_curjfnt, getchar(p), p) + ltjf_replace_altfont(attr_curjfnt, ltjs_orig_char_table[p] or getchar(p), p) end end end diff --git a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua index 88352dd5b2..23d20be3f3 100644 --- a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua +++ b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua @@ -15,7 +15,8 @@ do end local cidfont_data = {} local cache_chars = {} -local cache_ver = 13 +local cache_ver = 14 +local sub = string.sub local identifiers = fonts.hashes.identifiers local cid_reg, cid_order, cid_supp, cid_name @@ -147,7 +148,7 @@ do descender = 655360*0.12, }, embedding = "no", cache = "yes", factor = 0, hfactor = 0, vfactor = 0, - tounicode = 1, + tounicode = 1, filename="", properties = { language = "dflt", script = "dflt" }, } cidfont_data[cid_name] = k @@ -300,7 +301,6 @@ local function prepare_cid_font(reg, ord) return cidfont_data[cid_name] or read_cid_font() end - local definers = fonts.definers local function mk_rml(name, size, id) local specification = definers.analyze(name,size) @@ -308,8 +308,8 @@ local function mk_rml(name, size, id) specification.detail = specification.detail or '' do local n = specification.name - if n:sub(1,1)=="{" then n=n:sub(2) end - if n:sub(-1)=="}" then n=n:sub(1,-2) end + if sub(n,1,1)=="{" then n=sub(n,2) end + if sub(n,-1)=="}" then n=sub(n,1,-2) end specification.name=n end local fontdata = {} @@ -382,11 +382,11 @@ local function mk_rml(name, size, id) end local function font_callback(name, size, id, fallback) - if name:sub(1,1)=="{" and name:sub(-1)=="}" then name = name:sub(2,-2) end + if sub(name,1,1)=="{" and sub(name,-1)=="}" then name = sub(name,2,-2) end local p = name:find(":") or 0 - if name:sub(1, p-1) == 'psft' then + if sub(name,1, p-1) == 'psft' then local s = "Adobe-Japan1-7" - local basename = name:sub(p+1) + local basename = sub(name,p+1) local p = basename:find(":") local q = basename:find("/[BI][BI]?") if q and p and q<=p then @@ -394,12 +394,12 @@ local function font_callback(name, size, id, fallback) p = basename:find(":") end if p then - local xname = basename:sub(p+1) + local xname = sub(basename,p+1) p = 1 while p do local q = xname:find(";", p+1) or xname:len()+1 - if xname:sub(p, p+3)=='cid=' and q>p+4 then - s = xname:sub(p+4, q-1) + if sub(xname,p, p+3)=='cid=' and q>p+4 then + s = sub(xname,p+4, q-1) end if xname:len()+1==q then p = nil else p = q + 1 end end diff --git a/macros/luatex/generic/luatexja/src/ltj-ruby.lua b/macros/luatex/generic/luatexja/src/ltj-ruby.lua index 29b6fe1998..2ff41be947 100644 --- a/macros/luatex/generic/luatexja/src/ltj-ruby.lua +++ b/macros/luatex/generic/luatexja/src/ltj-ruby.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.ruby', - date = '2022-12-31', + date = '2024-09-06', description = 'Ruby annotation', }) luatexja.ruby = {} @@ -37,7 +37,7 @@ local setwhd = node.direct.setwhd local setlist = node.direct.setlist local setvalue = node.direct.setdata -local node_new = node.direct.new +local node_new = luatexja.dnode_new local node_remove = node.direct.remove local node_next = node.direct.getnext local node_copy, node_tail = node.direct.copy, node.direct.tail @@ -45,6 +45,7 @@ local node_free = node.direct.flush_node or node.direct.free local get_attr, set_attr = node.direct.get_attribute, node.direct.set_attribute local insert_before, insert_after = node.direct.insert_before, node.direct.insert_after local hpack = node.direct.hpack +local node_inherit_attr = luatexja.node_inherit_attr local id_hlist = node.id 'hlist' local id_vlist = node.id 'vlist' @@ -175,10 +176,10 @@ do set_attr(nh, attr_icflag, get_attr_icflag(nh) + PROCESSED_BEGIN_FLAG) setnext(node_tail(h), nh) - setlist(f, nil); node_free(f) + setlist(f, nil) setlist(b, nil); node_free(b) local g = luatexja.jfmglue.main(h,false) - return hpack(g) + g = node_inherit_attr(hpack(g),f); node_free(f); return g else return f end @@ -207,6 +208,7 @@ end -- box の中身のノードは再利用される local enlarge do + local dimensions = node.direct.dimensions local FROM_JFM = luatexja.icflag_table.FROM_JFM local PROCESSED = luatexja.icflag_table.PROCESSED local KANJI_SKIP = luatexja.icflag_table.KANJI_SKIP @@ -239,18 +241,22 @@ do hx = node_next(hx) end -- 先頭の空白を挿入 - local k = node_new(id_glue); - setglue(k, prenw, round(pre*65536), 0, 2, 0) - h = insert_before(h, h, k); + local k1 = node_new(id_glue); + setglue(k1, prenw, round(pre*65536), 0, 2, 0) + h = insert_before(h, h, k1); -- 末尾の空白を挿入 - local k = node_new(id_glue); - setglue(k, postnw, round(post*65536), 0, 2, 0) - insert_after(h, node_tail(h), k); + local k2 = node_new(id_glue); + setglue(k2, postnw, round(post*65536), 0, 2, 0) + insert_after(h, node_tail(h), k2); -- hpack - setlist(box, nil); node_free(box) - box = hpack(h, new_width, 'exactly') - setheight(box, hh); setdepth(box, hd) - return box + setlist(box, nil); + local new_box = node_inherit_attr(hpack(h, new_width, 'exactly'), box) + setheight(new_box, hh); setdepth(new_box, hd) + node_free(box); + local gset, gsign, go + = getfield(new_box,'glue_set'), getfield(new_box,'glue_sign'), getfield(new_box,'glue_order') + return new_box, (dimensions(gset, gsign, go, k1, node_next(k1))), (dimensions(gset, gsign, go, k2)) + -- return value: (enlarged box), (width of left glue), (width of right glue) end end @@ -307,15 +313,18 @@ function luatexja.ruby.texiface(rst, rtlr, rtlp) end ---------------------------------------------------------------- --- pre_line_break +-- pre_linebreak ---------------------------------------------------------------- -- r, p の中身のノードは再利用される local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end) -- r: ルビ部分の格納された box,p: 同,親文字 + -- no_begin: 行頭形ではないか + -- no_end: 行末形ではないか local rwidth = getwidth(r) local sumprot = rwidth - getwidth(p) -- >0 local pre_intrusion, post_intrusion + local pre_protrusion, post_protrusion local ppre, pmid, ppost = tmp_tbl.ppre, tmp_tbl.pmid, tmp_tbl.ppost local mapre, mapost = tmp_tbl.mapre, tmp_tbl.mapost local intmode = (tmp_tbl.mode//4)%8 @@ -325,17 +334,17 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end) mapre = min(mapre,mapost); mapost = mapre end if intmode == 0 then -- とりあえず組んでから決める - p = enlarge(p, rwidth, ppre, pmid, ppost, 0, 0) + p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, 0, 0) pre_intrusion = min(mapre, round(ppre*getfield(p, 'glue_set')*65536)) post_intrusion = min(mapost, round(ppost*getfield(p, 'glue_set')*65536)) elseif intmode == 1 then pre_intrusion = min(mapre, sumprot); post_intrusion = min(mapost, max(sumprot-pre_intrusion, 0)) - p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) + p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) elseif intmode == 2 then post_intrusion = min(mapost, sumprot); pre_intrusion = min(mapre, max(sumprot-post_intrusion, 0)) - p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) + p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) elseif intmode==3 then local n = min(mapre, mapost)*2 if n < sumprot then @@ -343,7 +352,7 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end) else pre_intrusion = sumprot//2; post_intrusion = sumprot - pre_intrusion end - p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) + p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) pre_intrusion = min(mapre, pre_intrusion + round(ppre*getfield(p, 'glue_set')*65536)) post_intrusion = min(mapost, post_intrusion + round(ppost*getfield(p, 'glue_set')*65536)) else -- intmode == 4 @@ -354,7 +363,7 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end) else pre_intrusion, post_intrusion = mapre, min(mapost, sumprot-mapre) end - p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) + p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) end setshift(r, -pre_intrusion) local rwidth = rwidth - pre_intrusion - post_intrusion @@ -371,24 +380,29 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end) post_jfmgk = (post_intrusion > 0) end end - return r, p, orig_post_intrusion, post_jfmgk + return r, p, orig_post_intrusion, post_jfmgk, + pre_protrusion - pre_intrusion, post_protrusion - post_intrusion end -- ルビボックスの生成(単一グループ) -- returned value: <new box>, <ruby width>, <post_intrusion> local max_margin -local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end) +local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end, w) + -- no_begin: 行頭形ではないか + -- no_end: 行末形ではないか local post_intrusion, post_jfmgk = 0, false local imode local ppre, pmid, ppost = tmp_tbl.ppre, tmp_tbl.pmid, tmp_tbl.ppost local mapre, mapost = tmp_tbl.mapre, tmp_tbl.mapost local rpre, rmid, rpost, rsmash + local protrusion = {0, 0}; tmp_tbl[tmp_tbl.index] = protrusion imode = tmp_tbl.mode//0x100000; rsmash = (imode%2 ==1) imode = imode//2; rpost = imode%8; imode = (imode-rpost)/8; rmid = imode%8; imode = (imode-rmid)/8; rpre = imode%8 if getwidth(r) > getwidth(p) then -- change the width of p - r, p, post_intrusion, post_jfmgk = enlarge_parent(r, p, tmp_tbl, no_begin, no_end) + r, p, post_intrusion, post_jfmgk, protrusion[1], protrusion[2] + = enlarge_parent(r, p, tmp_tbl, no_begin, no_end) elseif getwidth(r) < getwidth(p) then -- change the width of r r = enlarge(r, getwidth(p), rpre, rmid, rpost, 0, 0) post_intrusion = 0 @@ -406,7 +420,7 @@ local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end) end if need_repack then local rt = r - r = hpack(getlist(r), getwidth(r), 'exactly') + r = node_inherit_attr(hpack(getlist(r), getwidth(r), 'exactly'), r) setlist(rt, nil); node_free(rt); end end @@ -416,7 +430,8 @@ local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end) insert_after(r, k, p); setnext(p, nil) if tmp_tbl.rubydepth >= 0 then setdepth(r, tmp_tbl.rubydepth) end if tmp_tbl.baseheight >= 0 then setheight(p, tmp_tbl.baseheight) end - a = node.direct.vpack(r); setshift(a, 0) + a = node_inherit_attr(node.direct.vpack(r), p) + setshift(a, 0) set_attr(a, attr_ruby, post_intrusion) set_attr(a, attr_ruby_post_jfmgk, post_jfmgk and 1 or 0) if rsmash or getheight(a)<getheight(p) then @@ -437,7 +452,10 @@ local max_allow_pre, max_allow_post local flush_list = node.direct.flush_list -- 中付き熟語ルビ,cmp containers -- 「文字の構成を考えた」やつはどうしよう -local function pre_low_cal_box(w, cmp) +local pre_low_cal_box +do + local node_prev = node.direct.getprev +pre_low_cal_box = function (w, cmp) local rb = {} local pb = {} local kf = {} @@ -450,18 +468,24 @@ local function pre_low_cal_box(w, cmp) local coef = {} -- 連立一次方程式の拡大係数行列 local rtb = expand_3bits(rst.stretch) + local kb, ka + if rst.quirk_protrusion then + kb = node_prev(node_tail(wv)); ka = node_next(kb) + node_remove(wv, kb); node_remove(wv, ka) + end -- node list 展開・行末形の計算 local nt, nta, ntb = wv, nil, nil -- nt*: node temp rst.ppre, rst.pmid, rst.ppost = rtb[6], rtb[5], rtb[4] rst.mapre, rst.mapost = max_allow_pre, 0 - for i = 1, cmp do + for i = 1, cmp do nt = node_next(nt); rb[i] = nt; nta = concat(nta, node_copy(nt)) nt = node_next(nt); pb[i] = nt; ntb = concat(ntb, node_copy(nt)) coef[i] = {} for j = 1, 2*i do coef[i][j] = 1 end for j = 2*i+1, 2*cmp+1 do coef[i][j] = 0 end + rst.index = i kf[i], coef[i][2*cmp+2] - = new_ruby_box(node_copy(nta), node_copy(ntb), rst, true, false) + = new_ruby_box(node_copy(nta), node_copy(ntb), rst, true, false, w) end node_free(nta); node_free(ntb) @@ -474,8 +498,9 @@ local function pre_low_cal_box(w, cmp) for j = 1, 2*i-1 do coef[cmp+i][j] = 0 end for j = 2*i, 2*cmp+1 do coef[cmp+i][j] = 1 end nta = concat(node_copy(rb[i]), nta); ntb = concat(node_copy(pb[i]), ntb) + rst.index = 2*cmp+1-i kf[cmp+i], coef[cmp+i][2*cmp+2] - = new_ruby_box(node_copy(nta), node_copy(ntb), rst, false, true) + = new_ruby_box(node_copy(nta), node_copy(ntb), rst, false, true, w) end -- ここで,nta, ntb には全 container を連結した box が入っているので @@ -484,13 +509,17 @@ local function pre_low_cal_box(w, cmp) for j = 1, 2*cmp+1 do coef[2*cmp+1][j] = 1 end rst.ppre, rst.pmid, rst.ppost = rtb[3], rtb[2], rtb[1] rst.mapre, rst.mapost = max_allow_pre, max_allow_post + rst.index = 2*cmp+1 kf[2*cmp+1], coef[2*cmp+1][2*cmp+2], post_intrusion_backup, post_jfmgk_backup - = new_ruby_box(nta, ntb, rst, true, true) + = new_ruby_box(nta, ntb, rst, true, true, w) -- w.value の node list 更新. local nt = wv flush_list(node_next(wv)) for i = 1, 2*cmp+1 do setnext(nt, kf[i]); nt = kf[i] end + if rst.quirk_protrusion then + insert_after(wv, nt, kb); insert_after(wv, kb, ka); + end if cmp==1 then solve_1(coef) elseif cmp==2 then solve_2(coef) @@ -499,6 +528,7 @@ local function pre_low_cal_box(w, cmp) end return coef end +end local first_whatsit do @@ -512,25 +542,40 @@ do end local next_cluster_array = {} +local pre_high -- ノード追加 -local function pre_low_app_node(head, w, cmp, coef, ht, dp) +do + local node_prev = node.direct.getprev + local KINSOKU = luatexja.icflag_table.KINSOKU + local function pre_low_app_node (head, w, cmp, coef, ht, dp) -- メインの node list 更新 - local nt = node_new(id_glue) + local nt = node_new(id_glue, nil, w) -- INHERIT ATTRIBUTES OF w setglue(nt, coef[1][2*cmp+2], 0, 0, 0, 0) set_attr(nt, attr_ruby, 1); set_attr(w, attr_ruby, 2) head = insert_before(head, w, nt) nt = w for i = 1, cmp do -- rule - local nta = node_new(id_rule, 0); + local nta = node_new(id_rule, 0, w); -- INHERIT ATTRIBUTES OF w setwhd(nta, coef[i*2][2*cmp+2], ht, dp) insert_after(head, nt, nta) set_attr(nta, attr_ruby, 2*i+1) -- glue if i~=cmp or not next_cluster_array[w] then - nt = node_new(id_glue); insert_after(head, nta, nt) + nt = node_new(id_glue, nil, w); -- INHERIT ATTRIBUTE OF w + insert_after(head, nta, nt) else - nt = next_cluster_array[w] + nt = next_cluster_array[w]; local f = node_next(nta) + while f and f~=nt do + if getid(f)==id_glue then + node_remove(head, nt); insert_before(head, f, nt); f = nil + else if getid(f)==id_penalty and get_attr_icflag(f)==KINSOKU then + node_inherit_attr(f, w) -- INHERIT ATTRIBUTE OF w; for lua-ul + set_attr(f, attr_icflag, KINSOKU) + end + f = node_next(f) + end + end end setglue(nt, coef[i*2+1][2*cmp+2], 0, 0, 0, 0) set_attr(nt, attr_ruby, 2*i+2) @@ -540,14 +585,13 @@ local function pre_low_app_node(head, w, cmp, coef, ht, dp) next_cluster_array[w]=nil return head, first_whatsit(node_next(nt)) end - -local function pre_high(ahead) +pre_high = function (ahead) if not ahead then return ahead end local head = to_direct(ahead) post_intrusion_backup, post_jfmgk_backup = 0, false local n = first_whatsit(head) while n do - if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then + if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then local nv = getvalue(n) local rst = getvalue(nv) max_allow_pre = rst.pre or 0 @@ -567,13 +611,13 @@ local function pre_high(ahead) if rst.exclude_pre_jfmgk_from_prev_ruby and atr>0 and ((old_break_info[atr] or post_intrusion_backup) > 0) then -- 「直前のルビが文字に進入→現在のルビの和文処理グルーへの進入はなし」という状況 - rst.before_jfmgk = 0 + max_allow_pre = 0;rst.before_jfmgk = 0 end post_intrusion_backup, post_jfmgk_backup = 0, false max_allow_post = rst.post or 0 max_margin = rst.maxmargin or 0 local coef = pre_low_cal_box(n, rst.count) - local s = node_tail(nv) --ルビ文字 + local s = node_tail(nv); if rst.quirk_protrusion then s = node_prev(node_prev(s)) end --ルビ文字 head, n = pre_low_app_node( head, n, rst.count, coef, getheight(s), getdepth(s) ) @@ -583,11 +627,11 @@ local function pre_high(ahead) end return to_node(head) end +end luatexbase.add_to_callback('pre_linebreak_filter', pre_high, 'ltj.ruby.pre', 100) -luatexbase.add_to_callback('hpack_filter', pre_high, 'ltj.ruby.pre', 100) ---------------------------------------------------------------- --- post_line_break +-- post_linebreak ---------------------------------------------------------------- local post_lown do @@ -595,47 +639,110 @@ do local id = get_attr(wv, attr_ruby_id) or 0 if id>0 and cache_handle then cache_handle:write( - 'lrob[' .. tostring(id) .. ']=' .. num .. '\nlrob[' .. tostring(-id) .. ']=' .. tostring(bool) .. '\n') + 'lrob[' .. tostring(id) .. ']=' .. tostring(num) .. '\nlrob[' .. tostring(-id) .. ']=' .. tostring(bool) .. '\n') end end - + local node_prev = node.direct.getprev + local function new_kern(inherit, num) + local k = node_new(id_kern, 1, inherit); setkern(k, num); set_attr(kt, attr_icflag, PROCESSED); + return k; + end post_lown = function (rs, rw, cmp, ch) -- ch: the head of `current' hlist if #rs ==0 or not rw then return ch end local hn = get_attr(rs[1], attr_ruby) local fn = get_attr(rs[#rs], attr_ruby) - local wv = getvalue(rw) + local wv = getvalue(rw); local rst = getvalue(wv) if hn==1 then if fn==2*cmp+2 then - local hn = node_tail(wv) - node_remove(wv, hn) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) - write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk))-- 行中形 + -- 行中形 + local nn = node_tail(wv); + if rst.quirk_protrusion then + local prot_b,prot_a = rst[fn-1][1], rst[fn-1][2] + local ka=nn; local kb = node_prev(nn); nn = node_prev(kb) + node_remove(wv, nn); node_remove(wv, kb); node_remove(wv, ka) + if prot_b~=0 then + setkern(kb, prot_b); insert_after(ch, rs[1], kb); + local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt); + insert_after(ch, kt, nn); + else + node_free(kb); insert_after(ch, rs[1], nn) + end + if prot_a~=0 then + local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt); + setkern(ka, prot_a); insert_after(ch, kt, ka); + else node_free(ka) + end + else + node_remove(wv, nn); insert_after(ch, rs[1], nn) + end + set_attr(nn, attr_icflag, PROCESSED) + write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk)) else - local deg, hn = (fn-1)/2, wv - for i = 1, deg do hn = node_next(hn) end; - node_remove(wv, hn) - setnext(hn, nil) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) - write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk)) + -- 行末形 + local deg, nn = (fn-1)/2, wv; for i = 1, deg do nn = node_next(nn) end + if rst.quirk_protrusion then + local prot_b = rst[deg][1] + local ka = node_tail(wv); local kb = node_prev(ka); + node_remove(wv, nn); setnext(nn, nil); node_remove(wv, kb); + if prot_b~=0 then + setkern(kb, prot_b); insert_after(ch, rs[1], kb); + local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt); + insert_after(ch, kt, nn); + else + node_free(kb); insert_after(ch, rs[1], nn) + end + if deg==cmp then + local prot_a = rst[deg][2]; node_remove(wv,ka) + if prot_a~=0 then + local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt); + setkern(ka, prot_a); insert_after(ch, kt, ka); + else node_free(ka) + end + end + else + node_remove(wv, nn); setnext(nn, nil); insert_after(ch, rs[1], nn) + end + + set_attr(nn, attr_icflag, PROCESSED) + write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk)) end else - local deg, hn = max((hn-1)/2,2), wv - for i = 1, cmp+deg-1 do hn = node_next(hn) end + -- 行頭形 + local nn = wv; for i = 1, cmp+max((hn-1)/2,2)-1 do nn = node_next(nn) end -- -1 is needed except the case hn = 3, -- because a ending-line form is removed already from the list - node_remove(wv, hn); setnext(hn, nil) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) + if rst.quirk_protrusion then + local deg=(hn-1)/2; local prot_b = rst[2*cmp+1-deg][1] + local ka = node_tail(wv); node_remove(wv, nn); setnext(nn, nil); + if deg==1 then + local kb = node_prev(ka); node_remove(wv, kb); + if prot_b~=0 then + setkern(kb, prot_b); insert_after(ch, rs[1], kb); + local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt); + insert_after(ch, kt, nn); + else + node_free(kb); insert_after(ch, rs[1], nn) + end + else insert_after(ch, rs[1], nn) + end + local prot_a = rst[2*cmp+1-deg][2]; node_remove(wv,ka) + if prot_a~=0 then + local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt); + setkern(ka, prot_a); insert_after(ch, kt, ka); + else node_free(ka) + end + else + node_remove(wv, nn); setnext(nn, nil); insert_after(ch, rs[1], nn) + end + + set_attr(nn, attr_icflag, PROCESSED) if fn == 2*cmp-1 then - write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk)) + write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk)) end end for i = 1,#rs do - local ri = rs[i] - ch = node_remove(ch, ri); node_free(ri); + local ri = rs[i]; ch = node_remove(ch, ri); node_free(ri) end -- cleanup if fn >= 2*cmp+1 then node_free(rw) end @@ -644,73 +751,86 @@ do end local traverse_id = node.direct.traverse_id -local function post_high_break(head) - local rs = {} -- rs: sequence of ruby_nodes, - local rw = nil -- rw: main whatsit - local cmp = -2 -- dummy - for h in traverse_id(id_hlist, to_direct(head)) do - for i = 1, #rs do rs[i] = nil end - local ha = getlist(h) +local post_high_hbox, post_high_break +do + local rs, rw = {}, nil -- rs: sequence of ruby_nodes, rw: main whatsit + local cmp + post_high_break = function (head) + for h in traverse_id(id_hlist, to_direct(head)) do + for i = 1, #rs do rs[i] = nil end + local ha = getlist(h); + while ha do + local hai = getid(ha) + local i = ((hai == id_glue and getsubtype(ha)==0) + or (hai == id_rule and getsubtype(ha)==0) + or (hai == id_whatsit and getsubtype(ha)==sid_user + and getfield(ha, 'user_id', RUBY_POST))) + and get_attr(ha, attr_ruby) or 0 + if i==0 then + ha = node_next(ha) + elseif i==1 then + setlist(h, post_lown(rs, rw, cmp, getlist(h))) + for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement + rs[1], rw = ha, nil; ha = node_next(ha) + elseif i==2 then + rw = ha + cmp = getvalue(getvalue(rw)).count + local hb, hc = node_remove(getlist(h), rw) + setlist(h, hb); ha = hc + else -- i>=3 + rs[#rs+1] = ha; ha = node_next(ha) + end + end + setlist(h, post_lown(rs, rw, cmp, getlist(h))) + end + return head + end + post_high_hbox = function (ahead) + for i = 1, #rs do rs[i] = nil end; rw = nil + local ha = to_direct(ahead); local head = ha while ha do local hai = getid(ha) local i = ((hai == id_glue and getsubtype(ha)==0) - or (hai == id_rule and getsubtype(ha)==0) - or (hai == id_whatsit and getsubtype(ha)==sid_user - and getfield(ha, 'user_id', RUBY_POST))) - and get_attr(ha, attr_ruby) or 0 + or (hai == id_rule and getsubtype(ha)==0) + or (hai == id_whatsit and getsubtype(ha)==sid_user + and getfield(ha, 'user_id', RUBY_POST))) + and get_attr(ha, attr_ruby) or 0 if i==0 then ha = node_next(ha) elseif i==1 then - setlist(h, post_lown(rs, rw, cmp, getlist(h))) + head = post_lown(rs, rw, cmp, head) for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement rs[1], rw = ha, nil; ha = node_next(ha) elseif i==2 then rw = ha cmp = getvalue(getvalue(rw)).count - local hb, hc = node_remove(getlist(h), rw) - setlist(h, hb); ha = hc - else -- i>=3 + head, ha = node_remove(head, rw) + else -- i >= 3 rs[#rs+1] = ha; ha = node_next(ha) end end - setlist(h, post_lown(rs, rw, cmp, getlist(h))) + return to_node(post_lown(rs, rw, cmp, head)) end - return head end - -local function post_high_hbox(ahead) - local ha = to_direct(ahead); local head = ha - local rs = {}; -- rs: sequence of ruby_nodes, - local rw = nil; -- rw: main whatsit - local cmp - while ha do - local hai = getid(ha) - local i = ((hai == id_glue and getsubtype(ha)==0) - or (hai == id_rule and getsubtype(ha)==0) - or (hai == id_whatsit and getsubtype(ha)==sid_user - and getfield(ha, 'user_id', RUBY_POST))) - and get_attr(ha, attr_ruby) or 0 - if i==0 then - ha = node_next(ha) - elseif i==1 then - head = post_lown(rs, rw, cmp, head) - for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement - rs[1], rw = ha, nil; ha = node_next(ha) - elseif i==2 then - rw = ha - cmp = getvalue(getvalue(rw)).count - head, ha = node_remove(head, rw) - else -- i >= 3 - rs[#rs+1] = ha; ha = node_next(ha) - end +do + -- pre_append_to_vlist_filter.lua: distributed with lua-ul + local found = kpse.find_file('pre_append_to_vlist_filter.lua', 'lua') + if not found then + luatexbase.add_to_callback('post_linebreak_filter', post_high_break, 'ltj.ruby.post_break') + else + require 'pre_append_to_vlist_filter' + luatexbase.add_to_callback('pre_append_to_vlist_filter', + function(head, loc) + return (loc~='post_linebreak') and head or post_high_break(head) + end, + 'ltj.ruby.post_break', + (luatexbase.priority_in_callback('pre_append_to_vlist_filter', 'add underlines to list') or 1)) end - return to_node(post_lown(rs, rw, cmp, head)) + luatexbase.add_to_callback('hpack_filter', + function(head) return post_high_hbox(pre_high(head)) end, 'ltj.ruby', + luatexbase.priority_in_callback('hpack_filter', 'add underlines to list') or nil) end -luatexbase.add_to_callback('post_linebreak_filter', post_high_break, 'ltj.ruby.post_break', 100) -luatexbase.add_to_callback('hpack_filter', post_high_hbox, 'ltj.ruby.post_hbox', 101) - - ---------------------------------------------------------------- -- for jfmglue callbacks ---------------------------------------------------------------- @@ -736,7 +856,7 @@ do p = 0 end rst.pre = -p; rst.exclude_pre_from_prev_ruby = (s<0); - rst.exclude_pre_jfmgk_from_prev_ruby = (ltjs.table_current_stack[RIPOST +Nq.char] or 0)<0; + rst.exclude_pre_jfmgk_from_prev_ruby = (ltjs.table_current_stack[RIPOST +Nq.char] or 0)<0; end if Nq.prev_ruby then set_attr(lp, attr_ruby, Nq.prev_ruby) @@ -758,6 +878,11 @@ do elseif rst.pre < 0 then -- auto rst.pre = 0 end + if rst.quirk_protrusion then + local lk = node_new(id_kern, 1, Nq.nuc, lp); set_attr(lk, attr_icflag, PROCESSED) + insert_after(lpv, node_tail(lpv), lk) + insert_after(lpv, node_tail(lpv), node_new(id_kern, 1)) + end return Np else return Np @@ -780,10 +905,12 @@ do end local RIPOST = luatexja.stack_table_index.RIPOST local abs = math.abs + local ltjj_after_hlist=luatexja.jfmglue.after_hlist + local ltjj_check_box_high=luatexja.jfmglue.check_box_high local function whatsit_after_callback(s, Nq, Np, head) if not s and getfield(Nq.nuc, 'user_id') == RUBY_PRE then if Np then - local last_glue = node_new(id_glue) + local last_glue = node_new(id_glue, nil, Nq.nuc) -- INHERIT ATTRIBUTE OF Nq.nuc set_attr(last_glue, attr_icflag, 0) insert_before(Nq.nuc, Np.first, last_glue) Np.first = last_glue @@ -798,8 +925,8 @@ do end local x = node_next(node_next(nqnv)) for i = 2, rst.count do x = node_next(node_next(x)) end - Nq.last_char = luatexja.jfmglue.check_box_high(Nq, getlist(x), nil) - luatexja.jfmglue.after_hlist(Nq) + Nq.last_char = ltjj_check_box_high(Nq, getlist(x), nil) + ltjj_after_hlist(Nq) if Np and Np.id ~=id_pbox_w and type(Np.char)=='number' then -- Np is a JAchar if rst.post < 0 then -- auto @@ -812,12 +939,15 @@ do Np.prev_ruby = get_attr(getvalue(Nq.nuc), attr_ruby_id) -- 前のクラスタがルビであったことのフラグ else -- 直前が文字以外 - local nqnv = getvalue(Nq.nuc) - local rst = getvalue(nqnv) if rst.post < 0 then -- auto rst.post = 0 end end + if rst.quirk_protrusion then + local lk = node_tail(nqnv); + node_inherit_attr(lk, Nq.nuc, Np and Np.nuc) + set_attr(lk, attr_icflag, PROCESSED) + end return head else return s diff --git a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx index a151210339..19f54e35a1 100644 --- a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx +++ b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx @@ -44,7 +44,7 @@ %<*driver> \ProvidesFile{ltjsclasses.dtx} %</driver> - [2022/09/12 ltjsclasses ] + [2023/07/26 ltjsclasses ] %<*driver> \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} \documentclass[disablejfam]{ltjsarticle} @@ -5139,6 +5139,13 @@ % % [2018-03-11] |\next|などいくつかの内部命令を |\jsc@...| 付きの % ユニークな名前にしました。 +% +% [2022-09-13] \LaTeXe~2021-11-15 (ltfloat.dtx 2021/10/14 v1.2g)で +% |\@currentcounter|が追加されましたので,追随します。 +% なお,\LaTeXe~2021-06-01 (ltfloat.dtx 2021/02/10 v1.2e)で +% parhook対応として\cs{par}が追加されていますが, +% 実は同時に\cs{color@endgroup}も\cs{endgraf}するように変更 +% されていますので,不要だと思います。というわけで追加しません。 % \begin{macrocode} \long\def\@footnotetext{% \insert\footins\bgroup diff --git a/macros/luatex/generic/luatexja/src/luatexja-core.sty b/macros/luatex/generic/luatexja/src/luatexja-core.sty index a5801ed386..341c7aa37d 100644 --- a/macros/luatex/generic/luatexja/src/luatexja-core.sty +++ b/macros/luatex/generic/luatexja/src/luatexja-core.sty @@ -68,7 +68,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2023-04-06 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2023-10-07 Core of LuaTeX-ja] \endlinechar=13 % \RequirePackage{infwarerr} \endlinechar=-1 % @@ -774,10 +774,9 @@ %%------------------ Load module for the format - \directlua{luatexja.load_kinsoku()} \ifltj@in@latex %<*LaTeX> - \RequirePackage{ltj-latex} + \usepackage{ltj-latex} \else\ifltj@in@plain %<*plain> \input ltj-plain.sty % \fi\fi %</LaTeX|plain> diff --git a/macros/luatex/generic/luatexja/src/luatexja.lua b/macros/luatex/generic/luatexja/src/luatexja.lua index 1013684496..e815ba3d68 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.lua +++ b/macros/luatex/generic/luatexja/src/luatexja.lua @@ -423,9 +423,10 @@ local utfchar = utf.char local function debug_show_node_X(p,print_fn, limit, inner_depth) local k = prefix local s - local pt, pic = node_type(p.id), (get_attr(p, attr_icflag) or 0) % icflag_table.PROCESSED_BEGIN_FLAG - local base = prefix .. '[' .. string.format('%7d', node.direct.todirect(p)) .. '] ' .. - string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' + local pt, pic = node_type(p.id), (get_attr(p, attr_icflag) or 0) --% icflag_table.PROCESSED_BEGIN_FLAG + local base = prefix .. '[' .. string.format('%7d', node.direct.todirect(p)) + .. ', ' .. tostring(get_attr(p, 27)) .. '] ' + .. string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' if pt == 'glyph' then s = base .. ' ' .. (p.char<0xF0000 and utfchar(p.char) or '') diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty index a54ede6758..8b05af3cc9 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.sty +++ b/macros/luatex/generic/luatexja/src/luatexja.sty @@ -27,7 +27,7 @@ \newif\ifltj@disablejfam %%%% VERSION -\def\LuaTeXjaversion{20240514.0} +\def\LuaTeXjaversion{20241014.0} %% Check if LaTeX is used. \begingroup\expandafter\expandafter\expandafter\endgroup diff --git a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty index 1c8f9cba4e..121a45ba0b 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty @@ -219,10 +219,6 @@ \@latex@error{Direction change inside float!?\MessageBreak Use \noexpand\layoutcaption provided in \string\usepackage{lltjext}}\@ehc} %%% Remove extra xkanjiskip -\renewcommand\@makefnmark{% - \unless\ifnum\ltjgetparameter{direction}=3 - \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}% - \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi} \begingroup \@ifpackageloaded{hyperref} {\ifdefined\real@setref\def\ltj@setrefprefix{real}\else\def\ltj@setrefprefix{}\fi} @@ -250,6 +246,11 @@ \gdef\@stopfield{% \inhibitglue\@tempskipa\lastskip\unskip \hskip\@tempskipa\color@endgroup\egroup} +%%%%%% footnote +\renewcommand\@makefnmark{% + \unless\ifnum\ltjgetparameter{direction}=3 + \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}% + \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi} \pretocmd{\footnote}{\inhibitglue}{}{} \pretocmd{\footnotemark}{\inhibitglue}{}{} \def\@ltj@process@makefnmark#1{% diff --git a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty index bb63ac6877..00c858e349 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjdefs}[2022-01-23 Default font settings of LuaTeX-ja] +\ProvidesPackage{lltjdefs}[2024-05-16 Default font settings of LuaTeX-ja] \ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi \ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi @@ -18,13 +18,8 @@ \DeclareKanjiEncodingDefaults{}{} \DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10} \kanjifamily{mc} -\ifnum\ltj@@latex@plv<1500 % <=2020-10-01 - \kanjiseries{m} - \kanjishape{n} -\else % >=2021-06-01 - \def\k@series{m} - \def\k@shape{n} -\fi +\def\k@series{m} +\def\k@shape{n} \fontsize{10}{10} \DeclareYokoKanjiEncoding{JY3}{}{} \DeclareKanjiSubstitution{JY3}{mc}{m}{n} @@ -37,12 +32,7 @@ \newcommand\kanjiencodingdefault{JY3} \newcommand\kanjifamilydefault{\mcdefault} \newcommand\kanjiseriesdefault{\mddefault} -\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0 - %% LaTeX 2020-02-02 - \newcommand\kanjishapedefault{\shapedefault} -\else%% LaTeX 2019-10-01 - \newcommand\kanjishapedefault{\updefault} -\fi +\newcommand\kanjishapedefault{\shapedefault} \DeclareKanjiFamily{JY3}{mc}{} \DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] @@ -90,57 +80,36 @@ \DeclareMathAlphabet{\mathgt}{JY3}{gt}{m}{n} \fi -\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0 -%%%% LaTeX >= 2020-02-02 \edef\bfseries@mc{\bfdefault} \edef\bfseries@gt{\bfdefault} \def\bfseries@jtt{\bfseries@mc} \edef\mdseries@mc{\mddefault} \edef\mdseries@gt{\mddefault} \def\mdseries@jtt{\mdseries@mc} -\fi \newif\if@ltj@match@family \@ltj@match@familyfalse \def\verbatim@font{\normalfont\ttfamily\kanjifamily\jttdefault\selectfont} -\def\@ltj@hook@family#1#2{% #1: csname #2: contents - \ifltj@ltfilehook@avail % LaTeX 2020-10-01 - \AddToHook{#1}{#2}% - \else\ifcsname @#1hook\endcsname % LaTeX 2020-02-02 - \csappto{@#1hook}{#2}% - \else % LaTeX 2019-10-01 - \ifcsname #1 \endcsname - \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}% - \else - \PackageWarningNoLine{luatexja}{% - Patching to \expandafter\string\csname #1\endcsname\space failed% - }% - \fi - \fi\fi -} -\@ltj@hook@family{rmfamily}{% +\AddToHook{rmfamily}{% \if@ltj@match@family \prepare@family@series@update@kanji{mc}\mcdefault \fi } -\@ltj@hook@family{sffamily}{% +\AddToHook{sffamily}{% \if@ltj@match@family \prepare@family@series@update@kanji{gt}\gtdefault \fi } -\@ltj@hook@family{ttfamily}{% +\AddToHook{ttfamily}{% \if@ltj@match@family \prepare@family@series@update@kanji{jtt}\jttdefault \fi } -\let\@ltj@hook@family\@undefined -\ifltj@ltfilehook@avail % 2020-10-01 - \expandafter\def\expandafter\kanjiseriesdefault - \expandafter{\kanjiseriesdefault\@empty} - \let\kanjiseriesdefault@kernel\kanjiseriesdefault -\fi +\expandafter\def\expandafter\kanjiseriesdefault + \expandafter{\kanjiseriesdefault\@empty} +\let\kanjiseriesdefault@kernel\kanjiseriesdefault %%% \eminnershape \expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{} diff --git a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty index 2efc9435ab..52ac44d5cc 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty @@ -3,31 +3,10 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjfont}[2023-04-13 Patch to NFSS2 for LuaTeX-ja] +\ProvidesPackage{lltjfont}[2023-05-16 Patch to NFSS2 for LuaTeX-ja] %%%%%%%% LaTeX2e version detection -\newcount\ltj@@latex@plv \ltj@@latex@plv=-1 -\ifltj@ltfilehook@avail -\ExplSyntaxOn - \cs_if_exist:NTF \__shipout_execute_main_cont:Nnnn - {\ltj@@latex@plv=1500}% 2021-06-01 - {\ifnum\patch@level>2\relax \ltj@@latex@plv=1300\else \ltj@@latex@plv=1000\fi}% 2020-10-01 -\ExplSyntaxOff -\else\ifdefined\@rmfamilyhook % 2020-02-02 - \ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2 - \@latex@error - {Please update LaTeX2e!^^J\space\space - At least LaTeX2e 2020-02-02 patch level 3 is required}% - {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.} - \else - \ltj@@latex@plv=300 - \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop - \ltj@@latex@plv=501 - \else\unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5 - \ltj@@latex@plv=500 - \fi\fi - \fi -\fi\fi +\newcount\ltj@@latex@plv \ltj@@latex@plv=1500 %% patching \DeclareTextComposite \def\ltj@chardef@text@cmd#1{% @@ -400,59 +379,7 @@ \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}% }% \fi} -\ifnum\ltj@@latex@plv<1500 % <=2020-10-01 -\protected\def\ltj@selectfont@patch{% - \ltj@@start@time@measure{selectfont}% - \let\tmp@error@fontshape\error@fontshape - \let\error@fontshape\error@kfontshape - \ltj@@is@kyenc{\k@encoding}\ifin@% - \let\cy@encoding\k@encoding - \ensure@KanjiEncodingPair{t}% - \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}% - \else - \ltj@@is@ktenc{\k@encoding}\ifin@% - \let\ct@encoding\k@encoding - \ensure@KanjiEncodingPair{y}% - \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}% - \else - \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha - \fi - \fi - \global\let\ltj@afont@name=\font@name - \ltj@selectfont@tate\ltj@selectfont@yoko -% - \edef\tmp@item{{\k@encoding}}\expandafter\def\expandafter\k@encoding\tmp@item - \kenc@update - \global\let\font@name=\ltj@afont@name - \let\error@fontshape\tmp@error@fontshape - \if@knjcmd \@knjcmdfalse - \expandafter\ifx - \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\relax - \expandafter\ifx - \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\relax - \else - \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\selectfont - % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり - \fi - \else - \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\selectfont - % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり - \fi - \fi - \global\let\font@name=\ltj@afont@name - \ltj@@stop@time@measure{selectfont}% -} -\RequirePackage{everysel} -\let\ltj@@EverySelectfont@Init=\@EverySelectfont@Init -\expandafter\expandafter\expandafter\let -\expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname -\@EverySelectfont@Init% for LaTeX2e <=2020-10-01 -\def\@EverySelectfont@Init{% - \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont - \ltj@@EverySelectfont@Init -} -\EverySelectfont{\ltj@selectfont@patch} -\else % LaTeX2e >=2021-06-01 + \AddToHook{selectfont}[luatexja]{% \ltj@@start@time@measure{selectfont}% \ifx\delayed@k@adjustment\@empty @@ -514,7 +441,6 @@ \global\let\font@name=\ltj@afont@name \ltj@@stop@time@measure{selectfont}% } -\fi \bgroup \def\ltj@@dir@patch#1#2#3{% @@ -721,8 +647,6 @@ } %%%%%% -\ifnum\ltj@@latex@plv>0 -%%%% LaTeX >= 2020-02-02 \newif\if@shape@roman@kanji \def\merge@kanji@series#1{% @@ -740,76 +664,11 @@ \@nil } -\ifnum\ltj@@latex@plv>500 % !!! pl5 + develop \def\set@target@series@kanji#1{% \edef\k@series{#1}% \series@maybe@drop@one@m\k@series\k@series } -\else\ifnum\ltj@@latex@plv>300 % !!! pl5 - \def\set@target@series@kanji#1{% - \edef\k@series{#1}% - \expandafter\series@maybe@drop@one@m\expandafter{\k@series}\k@series - } -\else % !!! pl 3, 4 - \def\set@target@series@kanji#1{% - \edef\k@series{#1}% - \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}% - } -\fi\fi -\ifnum\ltj@@latex@plv<1500% <=2020-10-01 -\def\merge@kanji@series@#1#2#3\@nil{% - \def\reserved@a{#3}% - \ifx\reserved@a\@empty - \set@target@series@kanji{#2}% - \else - \begingroup\let\f@encoding\k@encoding\let\f@family\k@family - \maybe@load@fontshape\endgroup - \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}% - \ifcsname \reserved@a \endcsname - \set@target@series@kanji{#1}% - \else - \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname - \set@target@series@kanji{#2}% - {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% - \else - \set@target@series@kanji{#3}% - {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% - \fi - \fi - \fi -} -\def\merge@kanji@shape@#1#2#3\@nil{% - \def\reserved@a{#3}% - \ifx\reserved@a\@empty - \if@shape@roman@kanji - \set@safe@kanji@shape{#2}{}% - \else - \edef\k@shape{#2}% - \fi - \else - \begingroup\let\f@encoding\k@encoding\let\f@family\k@family - \maybe@load@fontshape\endgroup - \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}% - \ifcsname \reserved@a\endcsname - \edef\k@shape{#1}% - \else - \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname - \edef\k@shape{#2}% - {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% - \else - \if@shape@roman@kanji - \set@safe@kanji@shape{#3}% - {{\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}}% - \else - \edef\k@shape{#3}% - {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% - \fi - \fi - \fi - \fi -} -\else % >=2021-06-01 \def\merge@kanji@series@#1#2#3\@nil{% \def\reserved@a{#3}% \ifx\reserved@a\@empty @@ -892,20 +751,8 @@ \fi } \let\delayed@merge@kanji@shape\merge@kanji@shape@without@substitution -\fi \newif\if@forced@series@kanji -\ifnum\ltj@@latex@plv=300 % 2020-02-02 pl3, 4 - \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}} - \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}} - \DeclareRobustCommand\romanseriesforce[1]{\edef\f@series{#1}} - \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}} -\else\ifnum\ltj@@latex@plv<1500% >=2020-02-02 pl5 and <=2020-10-01 - \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}} - \DeclareRobustCommand\kanjiseries[1]{\@forced@series@kanjifalse\merge@kanji@series{#1}} - \DeclareRobustCommand\romanseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} - \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@series@kanjitrue\edef\k@series{#1}} -\else% >=2021-06-01 \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse \expandafter\def\expandafter\delayed@f@adjustment\expandafter {\delayed@f@adjustment\delayed@merge@font@series{#1}}} @@ -919,22 +766,9 @@ \expandafter\def\expandafter\delayed@k@adjustment\expandafter {\delayed@k@adjustment\edef\k@series{#1}}} \let\delayed@k@adjustment\@empty -\fi\fi \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}% \DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}% -\ifnum\ltj@@latex@plv<1500% <=2020-10-01 - \DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}} - \DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}} - \DeclareRobustCommand\fontshape[1]{% - \@shape@roman@kanjitrue - \merge@font@shape{#1}\merge@kanji@shape{#1}% - \@shape@roman@kanjifalse - } - \DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}} - \DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}} - \DeclareRobustCommand\fontshapeforce[1]{\set@safe@kanji@shape{#1}{}\romanshapeforce{#1}} -\else% >=2021-06-01 \DeclareRobustCommand\romanshape[1]{% \expandafter\def\expandafter\delayed@f@adjustment\expandafter {\delayed@f@adjustment\delayed@merge@font@shape{#1}}} @@ -956,9 +790,6 @@ \romanshapeforce{#1}% \expandafter\def\expandafter\delayed@k@adjustment\expandafter {\delayed@k@adjustment\set@safe@kanji@shape{#1}{}}} -\fi -\ifnum\ltj@@latex@plv>1499 -%%%% LaTeX >= 2021-06-01 \DeclareRobustCommand\usekanji[4]{% \kanjiencoding{#1}\edef\k@family{#2}% \set@target@series@kanji{#3}\edef\k@shape{#4}% @@ -969,42 +800,6 @@ \set@target@series{#3}\edef\f@shape{#4}% \let\delayed@f@adjustment\@empty \selectfont\ignorespaces} -\else\ifnum\ltj@@latex@plv>1000 -%%%% 2021-10-01 PL3 <= LaTeX < 2021-06-01 -\DeclareRobustCommand\usekanji[4]{% - \kanjiencoding{#1}\edef\k@family{#2}% - \set@target@series@kanji{#3}\edef\k@shape{#4}% - \selectfont\ignorespaces} -\DeclareRobustCommand\useroman[4]{% - \romanencoding{#1}\edef\f@family{#2}% - \set@target@series{#3}\edef\f@shape{#4}% - \selectfont\ignorespaces} -\else -%%%% 2020-10-01 <= LaTeX < 2020-10-01 PL3 -\DeclareRobustCommand\usekanji[4]{% - \kanjiencoding{#1}\edef\k@family{#2}\edef\k@series{#3}\edef\k@shape{#4}% - \selectfont\ignorespaces} -\DeclareRobustCommand\useroman[4]{% - \romanencoding{#1}\edef\f@family{#2}\edef\f@series{#3}\edef\f@shape{#4}% - \selectfont\ignorespaces} -\fi\fi -%%%% LaTeX >= 2020-02-02 END -\else -%%%% LaTeX 2019-10-01 -\DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}} -\DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}} -\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}} -\DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}} -\DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}} -\DeclareRobustCommand\fontshape[1]{\set@safe@kanji@shape{#1}{}\romanshape{#1}} -\DeclareRobustCommand\usekanji[4]{% - \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}% - \selectfont\ignorespaces} -\DeclareRobustCommand\useroman[4]{% - \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}% - \selectfont\ignorespaces} -%%%% LaTeX 2019-10-01 END -\fi %%%% \def\set@safe@kanji@shape#1#2{% @@ -1026,8 +821,6 @@ \else\useroman{#1}{#2}{#3}{#4}% \fi} -\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0 -%%%% LaTeX >= 2020-02-02 \let\prepare@family@series@update@kanji=\prepare@family@series@update \patchcmd\prepare@family@series@update{\fontfamily}{\romanfamily}{}{} \patchcmd\prepare@family@series@update@kanji{\if@forced@series}{\if@forced@series@kanji}{}{} @@ -1049,34 +842,16 @@ \patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} \def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}\@elt{jtt}} -\def\@ltj@hook@series@default#1#2#3{% - \ifltj@ltfilehook@avail % 2020-10-01 - \AddToHook{#1/defaults}{#2}% - \else\ifcsname @set#1defaultshook\endcsname %after 2020-04-07 - \expandafter\g@addto@macro\csname @set#1defaultshook\endcsname{#2}% - \else % 2020-02-02 - \expandafter\patchcmd\csname #1 \endcsname{#3}{#3#2}{}{}% - \fi\fi -} -\@ltj@hook@series@default{bfseries}{% +\AddToHook{bfseries/defaults}{% \let\bfseries@mc\bfdef@ult \let\bfseries@gt\bfdef@ult \let\bfseries@jtt\bfdef@ult -}{% - \let\bfseries@rm\bfdef@ult - \let\bfseries@sf\bfdef@ult - \let\bfseries@tt\bfdef@ult } -\@ltj@hook@series@default{mdseries}{% +\AddToHook{mdseries/defaults}{% \let\mdseries@mc\mddef@ult \let\mdseries@gt\mddef@ult \let\mdseries@jtt\mddef@ult -}{% - \let\mdseries@rm\mddef@ult - \let\mdseries@sf\mddef@ult - \let\mdseries@tt\mddef@ult } -\let\@ltj@hook@series@default\@undefined \expandafter\patchcmd\csname bfseries \endcsname{% \ifx\f@family\rmdef@ult \fontseries\bfseries@rm @@ -1105,105 +880,41 @@ \fi\fi\fi }{}{} -\def\@ltj@hook@series#1#2{% - \ifltj@ltfilehook@avail % 2020-10-01 - \AddToHook{#1}{#2}% - \else % 2020-02-02 - \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}% - \fi -} -\@ltj@hook@series{bfseries}{% +\AddToHook{bfseries}{% \ifx\k@family\mcdef@ult \kanjiseries\bfseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt \else\ifx\k@family\jttdef@ult\kanjiseries\bfseries@jtt \else \kanjiseries\bfdefault \fi\fi\fi } -\@ltj@hook@series{mdseries}{% +\AddToHook{mdseries}{% \ifx\k@family\mcdef@ult \kanjiseries\mdseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt \else\ifx\k@family\jttdef@ult\kanjiseries\mdseries@jtt \else \kanjiseries\mddefault \fi\fi\fi } -\let\@ltj@hook@series\@undefined -\def\@ltj@hook@efd#1#2{% - \ifltj@ltfilehook@avail % 2020-10-01 - \AddToHook{expand@font@defaults}{#1}% - \else\ifdefined\@expandfontdefaultshook %after 2020-04-07 - \g@addto@macro\@expandfontdefaultshook{#1#2}% - \else % 2020-02-02 - \appto\expand@font@defaults{#1#2}% - \fi\fi -} -\@ltj@hook@efd{% +\AddToHook{expand@font@defaults}{% \edef\mcdef@ult{\mcdefault}% \edef\gtdef@ult{\gtdefault}% \edef\jttdef@ult{\jttdefault}% -}{\edef\kanjidef@ult{\kanjifamilydefault}} -\let\@ltj@hook@efd\@undefined + \edef\kanjidef@ult{\kanjifamilydefault}} -\ifltj@ltfilehook@avail % 2020-10-01 - \appto\init@series@setup{% - \ifx\kanjiseriesdefault\kanjiseriesdefault@kernel - \mdseries - \let\kanjiseriesdefault\k@series - \fi - } -\else - \appto\init@series@setup{% - \ifx\kanjidef@ult\mcdef@ult \mcfamily - \else\ifx\kanjidef@ult\gtdef@ult \gtfamily - \else\ifx\kanjidef@ult\jttdef@ult \jttfamily - \fi\fi\fi - } -\fi - -\def\@ltj@hook@dfh#1{% - \ifltj@ltfilehook@avail % 2020-10-01 - \AddToHook{normalfont}{#1}% - \else\ifdefined\@defaultfamilyhook - \g@addto@macro\@defaultfamilyhook{#1}% - \else % 2020-02-02 - \expandafter\patchcmd\csname normalfont \endcsname{\selectfont}{#1\selectfont}{}{}% - \let\reset@font\normalfont - \fi\fi +\appto\init@series@setup{% + \ifx\kanjiseriesdefault\kanjiseriesdefault@kernel + \mdseries + \let\kanjiseriesdefault\k@series + \fi } -\ifnum\ltj@@latex@plv>1499 -\@ltj@hook@dfh{% +\AddToHook{normalfont}{% \kanjiencoding{\kanjiencodingdefault}% \edef\k@family{\kanjifamilydefault}% \edef\k@series{\kanjiseriesdefault}% \edef\k@shape{\kanjishapedefault}% \let\delayed@k@adjustment\empty } -\else -\@ltj@hook@dfh{% - \kanjiencoding{\kanjiencodingdefault}% - \edef\k@family{\kanjifamilydefault}% - \edef\k@series{\kanjiseriesdefault}% - \edef\k@shape{\kanjishapedefault}% -} -\fi -\let\@ltj@hook@dfh\@undefined -%%%% LaTeX >= 2020-02-02 END -\else -%%%% LaTeX 2019-10-01 -\DeclareRobustCommand\normalfont{% - \useroman\encodingdefault\familydefault\seriesdefault\shapedefault - \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault} -\let\reset@font\normalfont -%%%% LaTeX 2019-10-01 END -\fi - - - -\ifdefined\prepare@family@series@update@kanji\else -%%%% LaTeX 2019-10-01 -\def\prepare@family@series@update@kanji#1{\kanjifamily} -\fi \DeclareRobustCommand\mcfamily{% \unless\ifltj@disablejfam\not@math@alphabet\mcfamily\mathmc\fi diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-array.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-array.sty index 9575dc3c04..fa5fe7b933 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-array.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-array.sty @@ -3,7 +3,9 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjp-array}[2019-07-18 Patch to array for LuaTeX-ja] +\ProvidesPackage{lltjp-array}[2024-07-21 Patch to array for LuaTeX-ja] + +\@ifpackageloaded{array}{\def\lltjp@array@array@loaded{1}}{\let\lltjp@array@array@loaded\relax} \RequirePackage{etoolbox,array} @@ -11,16 +13,23 @@ \ignorespaces\@sharp\unskip }{% \ltj@sharp -}{}{} +}{}{% >=2024-06-01 + \def\ltj@sharp{\relax\pltx@next@inhibitglue\ltjfakeboxbdd\ignorespaces\@sharp\textonly@unskip\ltjfakeboxbdd} + \patchcmd\insert@column{% + \ignorespaces\@sharp\textonly@unskip + }{% + \ltj@sharp + }{}{} +} \@ifpackageloaded{lltjext}{}{% %% remove extra \xkanjiskip (pLaTeX2e 2016/04/17) -\def\@tabular{% - \leavevmode \null - \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup - \let\d@llarend\endgroup - \@tabarray} -\def\endtabular{\endarray $\egroup\null} +\ifnum0<0\lltjp@array@array@loaded + \patchcmd{\@tabular}{\leavevmode}{\leavevmode\null}{}{} + \patchcmd{\@tabular}{\leavevmode\null\null}{\leavevmode\null}{}{} + \apptocmd{\endtabular}{\null}{}{} + \let\lltjp@array@array@loaded\undefined +\fi \expandafter \let \csname endtabular*\endcsname = \endtabular } \endinput diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty index edde267d3c..5ee7d407ce 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty @@ -3,63 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjp-footmisc}[2022-02-19 Patch to footmisc for LuaTeX-ja] +\ProvidesPackage{lltjp-footmisc}[2024-07-22 Patch to footmisc for LuaTeX-ja] -\@ifpackagelater{footmisc}{2022-02-10}{%% v6.0a or later - \patchcmd{\@makenormalcolbox}{\vskip -\@outputbox@depth\@textbottom}% - {\pltx@adjust@wd@outputbox\vskip -\@outputbox@depth\@textbottom}{}{}% - \let\ltj@next\endinput -}{\let\ltj@next\relax} -\ltj@next - -% old (v5.5) -\let \if@tempswa \ifFN@bottom -\ifFN@para \@tempswatrue \fi -\if@tempswa - \ifFN@bottom - \toks@{\setbox\@outputbox \box\@cclv - \xdef\@freelist{\@freelist\@midlist}% - \global\let\@midlist\@empty - \@combinefloats - \ifvoid\footins - \else - \setbox\@outputbox \vbox\bgroup - \boxmaxdepth\@maxdepth - \unvbox\@outputbox - \vfill\relax - } - \the\FN@temptoken - \toks@\expandafter{\the\toks@\egroup\fi} - \else - \toks@{\ifvoid\footins - \setbox\@outputbox\box\@cclv - \else - \setbox\@outputbox \vbox\bgroup - \boxmaxdepth\@maxdepth - \unvbox\@cclv - } - \the\FN@temptoken - \toks@\expandafter{\the\toks@ - \egroup - \fi - \xdef\@freelist{\@freelist\@midlist}% - \global\let\@midlist\@empty - \@combinefloats - }% - \fi - \toks@\expandafter{\the\toks@ - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \setbox\@outputbox \vbox to\@colht{% - \@texttop \dimen@\dp\@outputbox - \unvbox\@outputbox - \pltx@adjust@wd@outputbox - \vskip -\dimen@\@textbottom - }% - \fi - \global\maxdepth\@maxdepth - } - \edef\@makecol{\the\toks@} -\fi -\endinput +\patchcmd{\@makenormalcolbox}{\vskip -\@outputbox@depth\@textbottom}% + {\pltx@adjust@wd@outputbox\vskip -\@outputbox@depth\@textbottom}{}{}% diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty index 67b0f5de7f..641fa4a34d 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjp-geometry}[2021-10-24 Patch to geometry for LuaTeX-ja with vertical writing mode] +\ProvidesPackage{lltjp-geometry}[2024-05-16 Patch to geometry for LuaTeX-ja with vertical writing mode] \RequirePackage{expl3} \ifdefined\if@ltj@@geometry@tate\expandafter\endinput\fi \newif\if@ltj@@geometry@tate @@ -31,15 +31,6 @@ %============================================ \unless\ifdefined\ltj@ExecuteAfterPackage -\expandafter\newif\csname ifltj@ltfilehook@avail\endcsname -\@ifl@t@r\fmtversion{2020-10-01}{% - \@ifl@t@r\fmtversion{2020-10-02}{\ltj@ltfilehook@availtrue} - {% - \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi - \else\ltj@ltfilehook@availtrue\fi - }% -}{} -\ifltj@ltfilehook@avail %% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code> %% no-starred version: do nothing if the <package> is loaded %% starred version: do <code> right away if the <package> is loaded @@ -64,11 +55,6 @@ \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}% } } -\else - \RequirePackage{filehook} - \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile - \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile -\fi \fi %============================================ @@ -89,12 +75,8 @@ \else \@gobble\iftrue\csname iftdir\endcsname \bool_set_true:N \l_tmpa_bool \fi \fi -\ifltj@ltfilehook@avail - \prop_map_inline:Nn \g__hook_begindocument_code_prop - { \tl_if_in:nnT {#2} {\tate} {\bool_set_true:N \l_tmpa_bool} } -\else - \tl_if_in:NnT \@begindocumenthook {\tate} {\bool_set_true:N \l_tmpa_bool} -\fi +\prop_map_inline:Nn \g__hook_begindocument_code_prop + { \tl_if_in:nnT {#2} {\tate} {\bool_set_true:N \l_tmpa_bool} } \bool_if:NT \l_tmpa_bool { \if@ltj@@geometry@forceoff \@ltj@@geometry@tatefalse diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty index 9c4526c3fd..292cbf00bf 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty @@ -1,5 +1,5 @@ % -% lltjp-siunitx.sty 2022-12-14 +% lltjp-siunitx.sty 2024-06-10 % \NeedsTeXFormat{LaTeX2e} @@ -7,7 +7,6 @@ \RequirePackage{siunitx} \makeatletter \ExplSyntaxOn -\cs_if_exist:NTF \siunitx_print_text:n {% siunitx v3.00 \cs_set_protected:Npn \siunitx_print_text:n #1 { \text @@ -32,104 +31,26 @@ } } \cs_set_eq:NN \ltj_orig__siunitx_table_collect_begin:w \__siunitx_table_collect_begin:w -\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 \relax - { \ltj_orig__siunitx_table_collect_begin:w } -\RenewDocumentCommand \tablenum { O { } m } - { - \mode_leave_vertical: - \group_begin: - \keys_set:nn { siunitx } {#1} - \siunitx_cell_begin:w - \relax \ignorespaces #2 - \siunitx_cell_end: - \group_end: - } -}% siunitx v3.00 end -{% siunitx v2.xx -\cs_generate_variant:Nn \tl_if_in:NnT { coT } -\cs_new:Nn \__ltj_siunix_patch_inner:n { - \cs_if_exist:cT { #1_tl } { - \tl_if_in:coT { #1_tl } { \tex_char:D } { - \tl_replace_all:cnn { #1_tl } { \tex_char:D } { \ltjalchar } - } +\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 { + \token_if_eq_meaning:NNTF #1 \relax + {\ltj_orig__siunitx_table_collect_begin:w } + {\ltj_orig__siunitx_table_collect_begin:w #1 } } -} -\cs_new:Nn \__ltj_siunix_patch_inner_math:n { - \__ltj_siunix_patch_inner:n { l__siunitx_#1_math } - \__ltj_siunix_patch_inner:n { l__siunitx_#1_text } -} -\AtBeginDocument { - \__ltj_siunix_patch_inner:n { c__siunitx_minus } - \__ltj_siunix_patch_inner:n { c__siunitx_mu } - \__ltj_siunix_patch_inner_math:n { angstrom } - \__ltj_siunix_patch_inner_math:n { arcminute } - \__ltj_siunix_patch_inner_math:n { arcsecond } - \__ltj_siunix_patch_inner_math:n { ohm } -} - -%%%% new table column: S and s -\bool_new:N \l__ltj_siunitx_table_collect_relax_bool -\cs_set_protected:Npn \__siunitx_table_collect_begin_s: { - \bool_set_false:N \l__ltj_siunitx_table_collect_relax_bool - \cs_set_eq:NN \__siunitx_table_collect_token:N - \__siunitx_table_collect_token_s:N - \cs_set_eq:NN \__siunitx_table_print: \__siunitx_table_print_s: - \__siunitx_table_collect_init_s: - \__siunitx_table_collect_get: -} - -\cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1 +\cs_set_protected:Npn \__siunitx_table_collect_token:N #1 { - \token_if_eq_meaning:NNTF #1 \tex_relax:D { - \bool_if:NTF \l__ltj_siunitx_table_collect_relax_bool { - \__siunitx_table_collect_not_braced_aux_i:N #1 - } { - \bool_set_true:N \l__ltj_siunitx_table_collect_relax_bool - } - } { - \token_if_eq_meaning:NNF #1 \ltjfakeboxbdd { - \token_if_eq_meaning:NNF #1 \pltx@next@inhibitglue { - \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D + \__siunitx_table_collect_search:NnF #1 { - \token_if_eq_meaning:NNF #1 \tex_unskip:D - { \__siunitx_table_collect_not_braced_aux_i:N #1 } + \ignorespaces { \__siunitx_table_collect_ignore_spaces:N #1} + \pltx@next@inhibitglue { \__siunitx_table_collect_loop:} + \ltjfakeboxbdd { \__siunitx_table_collect_loop:} + \textonly@unskip { \__siunitx_table_collect_loop:} + \unskip { \__siunitx_table_collect_loop:} + \end { \tabularnewline \end } + \relax { \__siunitx_table_collect_relax:N #1 } + \tabularnewline { \tabularnewline } + \siunitx_cell_end: { \siunitx_cell_end:} } - }}} - \__siunitx_table_collect_next: - } - -\AtBeginDocument - { - \@ifpackageloaded { mdwtab } - { - \cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1 - { - \token_if_eq_meaning:NNTF #1 \tex_relax:D { - \bool_if:NTF \l__ltj_siunitx_table_collect_relax_bool { - \__siunitx_table_collect_not_braced_aux_i:N #1 - } { - \bool_set_true:N \l__ltj_siunitx_table_collect_relax_bool - } - } { - \token_if_eq_meaning:NNF #1 \ltjfakeboxbdd { - \token_if_eq_meaning:NNF #1 \pltx@next@inhibitglue { - \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D - { - \token_if_eq_meaning:NNF #1 \tex_unskip:D - { - \token_if_eq_meaning:NNF #1 \tab@setcr - { - \token_if_eq_meaning:NNF #1 \@maybe@unskip - { \__siunitx_table_collect_not_braced_aux_i:N #1 } - } - } - } - }}} - \__siunitx_table_collect_next: - } - } - { } - } + { \__siunitx_table_collect_token_aux:N #1 } } \ExplSyntaxOff \endinput diff --git a/macros/luatex/generic/luaxml/README b/macros/luatex/generic/luaxml/README index 5df074c453..79dec41f2c 100644 --- a/macros/luatex/generic/luaxml/README +++ b/macros/luatex/generic/luaxml/README @@ -32,7 +32,7 @@ Author ------ Michal Hoftich Email: michal.h21@gmail.com -Version: v0.1r, 2024-02-23 +Version: v0.2a, 2024-10-17 Original authors: Paul Chakravarti and Manoel Campos (http://manoelcampos.com) diff --git a/macros/luatex/generic/luaxml/luaxml-cssquery.lua b/macros/luatex/generic/luaxml/luaxml-cssquery.lua index ebb29abb15..452656845c 100644 --- a/macros/luatex/generic/luaxml/luaxml-cssquery.lua +++ b/macros/luatex/generic/luaxml/luaxml-cssquery.lua @@ -156,7 +156,7 @@ local function cssquery() -- make sure we deal with a string value = tostring(value) -- make the search string safe for pattern matching - local escaped_search = search:gsub("([%(%)%.%%%+%–%*%?%[%^%$])", "%%%1") + local escaped_search = search:gsub("([%(%)%.%%%+%-%#%*%?%[%^%$])", "%%%1") if modifier == "" then return value == search elseif modifier == "|" then @@ -434,6 +434,18 @@ local function cssquery() return querylist end + --- Remove selector from the CSS list object. + -- All actions that literaly match the given selector will be removed. + function CssQuery:remove_selector( + selector -- CSS selector to be removed + ) + for pos, obj in ipairs(self.querylist) do + if obj.source == selector then + table.remove(self.querylist, pos) + end + end + end + --- It tests list of queries agaings a DOM element and executes the --- coresponding function that is saved for the matched query. -- @return nothing diff --git a/macros/luatex/generic/luaxml/luaxml-domobject.lua b/macros/luatex/generic/luaxml/luaxml-domobject.lua index 73689add5a..d60b1a291e 100644 --- a/macros/luatex/generic/luaxml/luaxml-domobject.lua +++ b/macros/luatex/generic/luaxml/luaxml-domobject.lua @@ -6,16 +6,20 @@ local dom = {} local xml local handler local css_query +local html if kpse then xml = require("luaxml-mod-xml") handler = require("luaxml-mod-handler") css_query = require("luaxml-cssquery") + html = require("luaxml-mod-html") else xml = require("luaxml.mod-xml") handler = require("luaxml.mod-handler") css_query = require("luaxml.cssquery") + html = require("luaxml.mod-html") end +local HtmlParser = html.HtmlParser local void = {area = true, base = true, br = true, col = true, hr = true, img = true, input = true, link = true, meta = true, param = true} @@ -31,6 +35,13 @@ local escapes = { ["`"] = "`" } +-- declarations of local functions +local html_to_dom +local html_parse +local parse + + + local function escape(search, text) return text:gsub(search, function(ch) return escapes[ch] or "" @@ -91,9 +102,14 @@ local function serialize_dom(parser, current,level, output) local format = get_action(typ, "start") insert(format, el, prepare_attributes(attr)) end - local function text(typ, text) + local function text(typ, text, parent) + local parent = parent or {} local format = get_action(typ, "text") - insert(format, escape_element(text)) + if parent.verbatim then + insert(format, text) + else + insert(format, escape_element(text)) + end end local function stop(typ, el) local format = get_action(typ, "stop") @@ -141,7 +157,7 @@ local function serialize_dom(parser, current,level, output) end start(xtype, name, attributes) - text(xtype,text_content) + text(xtype,text_content, (current or {})._parent) local children = root._children or {} for _, child in ipairs(children) do output = serialize_dom(parser,child, level + 1, output) @@ -153,7 +169,7 @@ end --- XML parsing function -- Parse the XML text and create the DOM object. -- @return DOM_Object -local parse = function( +parse = function( xmltext --- String to be parsed ,voidElements --- hash table with void elements ) @@ -411,8 +427,8 @@ local parse = function( return strings end - --- Get table with the inner text of an element -- leading and trailing spaces are removed and elements that contain only white space are ignored. - --- @return table + --- Get table with the inner text of an element - leading and trailing spaces are removed and elements that contain only white space are ignored. + -- @return table function DOM_Object:stripped_strings( current --- [optional] element to be selected ) @@ -608,15 +624,169 @@ local parse = function( return el:get_sibling_node(-1) end + --- parse string as HTML or XML and return created elements + --- @return table elements + function DOM_Object:create_template( + str, + is_xml + ) + -- <> is a dummy element, we just need to wrap everything in some element + str = "<>" .. (str or "") .. "</>" + local template = is_xml and parse(str) or parse(str) + local root = template:root_node()._children[1] + return root + end + + --- parse string as HTML or XML and insert it as a child of the current node + function DOM_Object:inner_html( + str, --- HTML or XML to be inserted + is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML + ) + local el = self + local root = self:create_template(str, is_xml) + -- replace original children of the current element with children of the dummy element created by parsing + el._children = root._children + return el + end + + + --- parse string as HTML or XML and insert it before current the element + function DOM_Object:insert_before_begin( + str, --- HTML or XML to be inserted + is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML + ) + local el = self + local root = self:create_template(str, is_xml) + local parent = el:get_parent() + local current_pos = el:find_element_pos() + local children = root:get_children() + for i = 1, #children do + parent:add_child_node(children[i], current_pos + i - 1) + end + end + + --- parse string as HTML or XML and insert it at the beginning of the current the element + function DOM_Object:insert_after_begin( + str, --- HTML or XML to be inserted + is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML + ) + local el = self + local root = self:create_template(str, is_xml) + local children = root:get_children() + for i = 1, #children do + el:add_child_node(children[i], i) + end + end + + --- parse string as HTML or XML and insert it at the end of the current the element + function DOM_Object:insert_before_end( + str, --- HTML or XML to be inserted + is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML + ) + local el = self + local root = self:create_template(str, is_xml) + local children = root:get_children() + for i = 1, #children do + el:add_child_node(children[i]) + end + end + + --- parse string as HTML or XML and insert it after current the element + function DOM_Object:insert_after_end( + str, --- HTML or XML to be inserted + is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML + ) + local el = self + local root = self:create_template(str, is_xml) + local parent = el:get_parent() + local current_pos = el:find_element_pos() + local children = root:get_children() + for i = 1, #children do + parent:add_child_node(children[i], current_pos + i) + end + end + -- include the methods to all xml nodes save_methods(parser._handler.root) -- parser: - return parser + return parser, DOM_Object +end + +-- table of elements that should be kept without XML escaping in the DOM serialization +local verbatim_elements = {script=true, style=true} + +function html_to_dom(html_object) + -- convert parsed HTML DOM to the XML DOM + local dom, DOM_Object = parse("") -- use empty text to just initialize the DOM object + -- use root of the DOM object as the original parent + local current_parent = dom._handler.root + + local function create_node(tbl) + -- create node suitable for LuaXML DOM object + tbl._children = {} + -- this should copy methods from the DOM object to the newly created object + tbl.__index = DOM_Object + return setmetatable(tbl, DOM_Object) + end + + local function build_tree(object) + -- convert tree produced by the HTML parser to LuaXML DOM + local typ = object._type + -- process particular node types from the HTML parser + if typ == "doctype" then + current_parent:add_child_node(create_node {_name=object.name, _type="DTD"}) + elseif typ == "comment" then + current_parent:add_child_node(create_node {_text=object.text, _type="COMMENT"}) + elseif typ == "element" then + local attributes = {} + -- convert attributes to the form expected by the DOM object + for _, attr in ipairs(object.attr) do + attributes[attr.name] = attr.value + end + local element = current_parent:create_element(object.tag, attributes) + -- disable escaping of text in dom:serialize() for <script> or <style> elements + if verbatim_elements[string.lower(object.tag)] then element.verbatim = true end + current_parent:add_child_node(element) + -- set the current element as parent for the processing of children + local old_parent = current_parent + current_parent = element + -- process children + for k,v in ipairs(object.children) do + build_tree(v) + end + -- restore original parent + current_parent = old_parent + elseif typ == "text" then + local text = current_parent:create_text_node(object.text) + current_parent:add_child_node(text) + else + -- for other node types, just process the children + for k,v in ipairs(object.children) do + build_tree(v) + end + end + + end + build_tree(html_object) + return dom end +--- Parse HTML text as a DOM object. +-- It supports all methods as the object returned by the parse() function. +-- @param html_str string with the HTML code to be parsed +-- @return DOM_Object +function html_parse(html_str) + local html_obj = HtmlParser:init(html_str) + local html_dom = html_obj:parse() + return html_to_dom(html_dom) +end + + + --- @export return { parse = parse, - serialize_dom= serialize_dom + serialize_dom= serialize_dom, + html_parse = html_parse } diff --git a/macros/luatex/generic/luaxml/luaxml-encodings.lua b/macros/luatex/generic/luaxml/luaxml-encodings.lua new file mode 100644 index 0000000000..9369f494a5 --- /dev/null +++ b/macros/luatex/generic/luaxml/luaxml-encodings.lua @@ -0,0 +1,89 @@ +--- Convert 8-bit encodings to UTF-8 +--- @module luaxml-encodings + +-- this table is generated automatically by this command: +-- texlua encodings/make_encodings.lua +local encodings = { + ['ibm866'] = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ', + ['iso-8859-5'] = '�������������������������������� ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ', + ['macintosh'] = 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ', + ['windows-1251'] = 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя', + ['iso-8859-13'] = '�������������������������������� ”¢£¤„¦§Ø©Ŗ«¬®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’', + ['iso-8859-6'] = '�������������������������������� ���¤�������،�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ', + ['iso-8859-8'] = '�������������������������������� �¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��', + ['iso-8859-4'] = '�������������������������������� ĄĸŖ¤ĨĻ§¨ŠĒĢŦŽ¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙', + ['koi8-r'] = '─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ', + ['iso-8859-7'] = '�������������������������������� ‘’£€₯¦§¨©ͺ«¬�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ', + ['iso-8859-3'] = '�������������������������������� Ħ˘£¤�Ĥ§¨İŞĞĴ�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙', + ['windows-1256'] = '€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے', + ['windows-1258'] = '€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ', + ['iso-8859-14'] = '�������������������������������� Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ', + ['windows-1252'] = '€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ', + ['iso-8859-15'] = '�������������������������������� ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ', + ['x-mac-cyrillic'] = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю€', + ['windows-1254'] = '€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ', + ['windows-1255'] = '€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��', + ['windows-1250'] = '€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙', + ['koi8-u'] = '─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ', + ['iso-8859-10'] = '�������������������������������� ĄĒĢĪĨĶ§ĻĐŠŦŽŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ', + ['windows-1257'] = '€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙', + ['windows-1253'] = '€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ', + ['iso-8859-2'] = '�������������������������������� Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙', + ['windows-874'] = '€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛', + ['iso-8859-16'] = '�������������������������������� ĄąŁ€„Š§š©Ș«ŹźŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ', +} + + +local utfchar = utf8.char + +--- Try to find an encoding in HTML string +---@param str string HTML document +---@param len number count of characters from the start of the string where it should search for the encoding metadata +---@return string encoding identifier, or nil and message if no encoding was found +local function find_html_encoding(str, len) + -- try to find encoding in the html document + -- we limit search length, because encoding should be in the document head, ideally near the start + local len = len or 4096 + local sub = str:sub(1, len) + for meta in sub:gmatch("<meta (.-)>") do + local charset = meta:match("charset%s*=%s*[\"']?(.-)[\"']") + if charset then return string.lower(charset) end + end + return nil, "Cannot find the document encoding" +end + +local function load_mapping(enc_name) + local enc_name = enc_name or "" + local enc = encodings[enc_name] + if not enc then return nil, "Cannot load encoding " .. enc_name end + local mapping,i = {}, 128 + for pos, codepoint in utf8.codes(enc) do + mapping[i] = utfchar(codepoint) + i = i + 1 + end + return mapping +end + +--- Convert string to utf-8 +---@param text string for converting +---@param mapping table +---@return string converted string +local function recode(text, mapping) + return text:gsub("(.)", function(char) + local charpoint = string.byte(char) + if charpoint > 127 then + return mapping[charpoint] + else + return false + end + end) +end + + +return { + encodings = encodings, + find_html_encoding = find_html_encoding, + load_mapping = load_mapping, + recode = recode +} + diff --git a/macros/luatex/generic/luaxml/luaxml-mod-html.lua b/macros/luatex/generic/luaxml/luaxml-mod-html.lua index 69e32b16e2..9f99cc3bc4 100644 --- a/macros/luatex/generic/luaxml/luaxml-mod-html.lua +++ b/macros/luatex/generic/luaxml/luaxml-mod-html.lua @@ -1,3 +1,6 @@ +--- HTML parsing module for LuaXML +-- @module luaxml-mod-html +-- @author Michal Hoftich <michal.h21@gmail.com -- Copyright Michal Hoftich, 2022 -- HTML parser inspired by https://browser.engineering/html.html -- but then redone using https://html.spec.whatwg.org/multipage/parsing.html @@ -1540,9 +1543,14 @@ local function is_formatting_element(name) return formatting_element_names[name] end -local special_elements = {} +local function hash_from_array(tbl) + local t = {} + for _, v in ipairs(tbl) do t[v] = true end + return t +end + -local special_elements_list = {"address", "applet", "area", "article", "aside", +local special_elements_list = hash_from_array {"address", "applet", "area", "article", "aside", "base", "basefont", "bgsound", "blockquote", "body", "br", "button", "caption", "center", "col", "colgroup", "dd", "details", "dir", "div", "dl", "dt", "embed", "fieldset", "figcaption", "figure", "footer", "form", "frame", @@ -1555,13 +1563,9 @@ local special_elements_list = {"address", "applet", "area", "article", "aside", "mi","mo","mn","ms","mtext", "annotation-xml","foreignObject","desc", "title" } -for k,v in ipairs(special_elements_list) do - special_elements[v] = true -end - local function is_special(name) - return special_elements[name] + return special_elements_list[name] end -- these lists are used in HtmlParser:generate_implied_endtags() @@ -1649,8 +1653,12 @@ local HtmlTreeStates = {} +--- @type HtmlParser local HtmlParser = {} +--- Initialize the HTML Object +---@param body string HTML to be parsed +---@return table initialized object function HtmlParser:init(body) local o ={} setmetatable(o, self) @@ -1686,10 +1694,11 @@ for _,v in ipairs(self_closing_tags_list) do self_closing_tags[v] = true end - +--- Execute the HTML parser +--- @return table Root node of the HTML DOM function HtmlParser:parse() -- we assume utf8 input, you must convert it yourself if the source is - -- in a different encoding + -- in a different encoding. for example using luaxml-encodings library self.text = {} self.state = self.default_state -- this should enable us to pass over some characters that we want to ignore @@ -1791,6 +1800,7 @@ function HtmlParser:emit(token) elseif token_type == "start_tag" then self:add_text() -- self:start_attribute() + self:reset_insertion_mode() self:start_tag() -- print("Emit start tag", table.concat(token.name)) -- save last attribute @@ -1882,8 +1892,142 @@ function HtmlParser:set_xmlns(node, parent) end end +function HtmlParser:pop_element() + -- close the current element and add it to the DOM + local el = self:close_element() + local parent = self:get_parent() + parent:add_child(el) + return el +end + +local close_p_at_start = hash_from_array {"address", "article", "aside", "blockquote", "center", "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p", "search", "section", "summary", "ul", "pre", "listing", "form", "table", "xmp", "hr"} + +local close_headers = hash_from_array {"h1", "h2", "h3", "h4", "h5", "h6"} + +local body_modes = hash_from_array {"in_body", "in_cell", "in_row", "in_select", "in_table", "in_table_body", "in_frameset"} + +local list_items = hash_from_array {"li", "dt", "dd"} + +local close_address_at_end = hash_from_array{"address", "article", "aside", "blockquote", "button", "center", "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", "search", "section", "summary", "ul", "form"} + + +function HtmlParser:close_unfinished(name) + -- close all unfinished elements until the element with the given name is found + for i = #self.unfinished, 1, -1 do + local el = self:pop_element() + if el.tag == name then + break + end + end +end + + +function HtmlParser:close_paragraph() + -- close currently open <p> elements + self:close_unfinished("p") +end + +function HtmlParser:current_element_name() + -- return name of the current element + return self:get_parent().tag +end + +local not_specials = hash_from_array { "address", "div", "p"} + +local function handle_list_item(self, name) + -- we handle li, dt and dd. dt and dd should close each other, li closes only itself + local names = {dt = true, dd = true} + if name == "li" then names = {li=true} end + for i = #self.unfinished, 1, -1 do + local current = self.unfinished[i] + local current_tag = current.tag + if names[current_tag] then + self:generate_implied_endtags(nil, {current.tag}) + for j = #self.unfinished, i, -1 do + self:pop_element() + end + break + elseif is_special(current_tag) and not not_specials[name] then + break + end + end +end + +local close_paragraph = function(self) + if is_in_button_scope(self, "p") then + self:close_paragraph() + end +end + +function HtmlParser:handle_insertion_mode(token) + -- simple handling of https://html.spec.whatwg.org/multipage/parsing.html#tree-construction + -- we don't support most rules, just the most important for avoiding mismatched tags + + if body_modes[self.insertion_mode] then + if token.type == "start_tag" then + local name = table.concat(token.name) + if close_p_at_start[name] then close_paragraph(self) end + if close_headers[name] then + close_paragraph(self) + -- close current element if it is already header + if close_headers[self:current_element_name()] then + self:pop_element() + end + elseif name == "pre" or name == "listing" then + -- we should ignore next "\n" char token + elseif name == "image" then + -- image tag is an error, change to <img> + token.name = {"img"} + elseif list_items[name] then + handle_list_item(self, name) + close_paragraph(self) + end + elseif token.type == "end_tag" then + local name = table.concat(token.name) + if close_address_at_end[name] then + if is_in_scope(self, name, {}) then + self:generate_implied_endtags() + self:close_unfinished(name) + return false + else + token.type = "ignore" + end + elseif name == "p" then + if not is_in_button_scope(self, "p") then + local parent = self:get_parent() + local node = Element:init("p", parent) + table.insert(self.unfinished, node) + end + -- use self:close_paragraph() instead of close_paragraph() because we don't need to check scope at this point + self:close_paragraph() + elseif name == "br" then + token.type = "start_tag" + elseif close_headers[name] then + local header_in_scope = false + -- detect, if there are any open h1-h6 tag and close it + for el, _ in pairs(close_headers) do + if is_in_scope(self, el, {}) then + header_in_scope = el + break + end + end + if not header_in_scope then + token.type = "ignore" + else + self:close_unfinished(header_in_scope) + end + end + end + end + return true +end + +local rawtext_elements = hash_from_array {"style", "textarea", "xmp"} + + function HtmlParser:start_tag() local token = self.current_token + self:handle_insertion_mode(token) if token.type == "start_tag" then -- close all currently opened attributes self:start_attribute() @@ -1894,18 +2038,18 @@ function HtmlParser:start_tag() node.attr = token.attr node.self_closing = token.self_closing self:set_xmlns(node) - -- + -- in this handler we should close <p> or <li> elements without explicit closing tags if token.self_closing -- <img /> or self_closing_tags[name] -- void elements then - parent:add_child(node) + parent:add_child(node, node.tag) else -- add to the unfinished list table.insert(self.unfinished, node) end if name == "title" then self.element_state = "rcdata" - elseif name == "style" then + elseif rawtext_elements[name] then self.element_state = "rawtext" elseif name == "script" then self.element_state = "script_data" @@ -1916,11 +2060,16 @@ end function HtmlParser:end_tag() -- close current opened element local token = self.current_token + local should_pop = self:handle_insertion_mode(token) if token.type == "end_tag" then if #self.unfinished==0 then return nil end - local node = self:close_element() - local parent = self:get_parent() - parent:add_child(node) + -- we shouldn't close elements if handle_insertion_mode() already closed them + if should_pop then + -- close the current element only if the token is in the current scope + if is_in_scope(self, table.concat(token.name), {}) then + self:pop_element() + end + end end end @@ -1964,6 +2113,21 @@ function HtmlParser:adjusted_current_node() end +local simple_modes = { + body = "in_body", + td = "in_cell", + th = "in_cell", + tr = "in_row", + tbody = "in_table_body", + thead = "in_table_body", + tfoot = "in_table_body", + caption = "in_caption", + colgroup = "in_column_group", + table = "in_table", + template = "current_template_insertion_mode", + frameset = "in_frameset" +} + function HtmlParser:reset_insertion_mode() -- https://html.spec.whatwg.org/multipage/parsing.html#reset-the-insertion-mode-appropriately local last = false @@ -1977,16 +2141,33 @@ function HtmlParser:reset_insertion_mode() if name == "head" and last == true then self:switch_insertion("in_head") return - elseif name == "body" then - self:switch_insertion("in_body") - return elseif name == "html" then - if self.head_pointer then + if not self.head_pointer then self:switch_insertion("before_head") return else self:switch_insertion("after_head") + return + end + elseif name == "select" then + if not last then + for x = position -1, 1, -1 do + if x == 1 then break end + local ancestor = self.unfinished[x] + local ancestor_name = ancestor.tag + if ancestor_name == "template" then + break + elseif ancestor_name == "table" then + self:switch_insertion("in_select_in_table") + return + end + end end + self:switch_insertion("in_select") + return + elseif simple_modes[name] then + self:switch_insertion(simple_modes[name]) + return elseif last == true then self:switch_insertion("in_body") return @@ -2006,8 +2187,8 @@ function HtmlParser:generate_implied_endtags(included, ignored) local current = self:current_node() or {} -- keep removing elements while they are in the "included" list if included[current.tag] then - table.remove(self.unfinished) - self:generate_implied_endtags(ignored) + self:pop_element() + self:generate_implied_endtags(included, ignored) end end @@ -2023,9 +2204,7 @@ function HtmlParser:finish() self:start_tag("html") end while #self.unfinished > 0 do - local node = self:close_element() - local parent = self:get_parent() - parent:add_child(node) + self:pop_element() end -- return root element return self.Document -- self:close_element() diff --git a/macros/luatex/generic/luaxml/luaxml-sty.lua b/macros/luatex/generic/luaxml/luaxml-sty.lua new file mode 100644 index 0000000000..35548688ce --- /dev/null +++ b/macros/luatex/generic/luaxml/luaxml-sty.lua @@ -0,0 +1,155 @@ +--- Helper functions for the luaxml.sty package +--- @module luaxml-sty +--- @author Michal Hoftich <michal.h21@gmail.com +-- provide global object with all variables we will use +luaxml_sty = { + current = { + transformation = "default", + parameters = {}, -- "parameters" argument for transform:add_action + }, + packages = {}, + -- we want to support multiple transformation objects, they will be stored here + transformations = {}, +} +luaxml_sty.packages.transform = require "luaxml-transform" +luaxml_sty.packages.domobject = require "luaxml-domobject" + +-- declare default transformer, used if no explicit transformer is used in LuaXML LaTeX commands +luaxml_sty.transformations.default = luaxml_sty.packages.transform.new() + +-- debuggind functions +function luaxml_sty.error(...) + local arg = {...} + print("LuaXML error: " .. table.concat(arg, " ")) +end + +luaxml_sty.do_debug = false + +function luaxml_sty.debug(...) + if luaxml_sty.do_debug then + local arg = {...} + print("LuaXML: " .. table.concat(arg, " ")) + end +end + +--- Declare new transformer +---@param name string transformer name +---@return table transformer object +function luaxml_sty.declare_transformer(name) + luaxml_sty.transformations[name] = luaxml_sty.packages.transform.new() + return luaxml_sty.transformations[name] +end + + +--- Add luaxml-transform rule +--- @param current string transformer name, empty for the default object +--- @param selector string CSS selector to be used +--- @param rule string luaxml-transform rule +function luaxml_sty.add_rule(current, selector, rule) + if current == "" then + current = luaxml_sty.current.transformation + end + -- the +v parameter type in LaTeX replaces newlines with \obeyedline. we need to replace it back to newlines + rule = rule:gsub("\\obeyedline", "\n") + luaxml_sty.debug("************* luaxml_sty rule: " .. selector, rule, current, (luaxml_sty.current.parameters.verbatim and "verbatim" or "not verbatim")) + local transform = luaxml_sty.transformations[current] or luaxml_sty.declare_transformer(current) + if not transform then + luaxml_sty.error("Cannot find LuaXML transform object: " .. (current or "")) + return nil, "Cannot find LuaXML transform object: " .. (current or "") + end + transform:add_action(selector, rule, luaxml_sty.current.parameters) +end + +-- by default, we will use XML parser, so use_xml is set to true +luaxml_sty.use_xml = true + +--- Use XML parser for parsing of next snippets +function luaxml_sty.set_xml() + luaxml_sty.use_xml = true +end + + +--- Use HTML parser for parsing of next snippets +function luaxml_sty.set_html() + luaxml_sty.use_xml = false +end + +--- transform XML string and print it to the output +---@param current string transformer name, empty for the default object +---@param xml_string string to be transformed +function luaxml_sty.parse_snippet(current, xml_string) + local domobject = luaxml_sty.packages.domobject + -- get the current transformer object + if current == "" then + current = luaxml_sty.current.transformation + end + local transform = luaxml_sty.transformations[current] + if not transform then + luaxml_sty.error("Cannot load transformer: " .. current) + return nil, "Cannot load transformer: " .. current + end + local dom + -- decide if we should use XML or HTML parser + if luaxml_sty.use_xml then + dom = domobject.parse(xml_string) + else + dom = domobject.html_parse(xml_string) + end + luaxml_sty.debug(dom:serialize()) + local result = transform:process_dom(dom) + luaxml_sty.debug(result) + luaxml_sty.packages.transform.print_tex(result) +end + +--- Transform file +---@param current string transformer name, empty for the default object +---@param filename string file to be transformed +function luaxml_sty.parse_file(current, filename) + local f = io.open(filename, "r") + if not f then + luaxml_sty.packages.transform.print_tex("\\textbf{LuaXML error}: cannot find file " .. filename) + return nil, "Cannot find file " .. filename + end + local content = f:read("*a") + f:close() + luaxml_sty.parse_snippet(current, content) +end + +--- parse environment contents using Lua +---@param env_name string environment name +---@param callback_name string name which will be used in the callback registration +---@return function +-- idea from https://tex.stackexchange.com/a/574323/2891 +function luaxml_sty.store_lines(env_name, callback_name) + return function(str) + luaxml_sty.debug("str", str) + local env_str = [[\end{]] .. env_name .. "}" + if string.find (str , env_str:gsub("%*", "%%*")) then + luaxml_sty.debug("end of environment") + luatexbase.remove_from_callback ( "process_input_buffer" , callback_name) + return env_str -- str + else + table.insert(luaxml_sty.verb_table, str) + end + return "" + end +end + +--- require line grabbing for an environment +---@param env_name string environment name +function luaxml_sty.register_verbatim(env_name) + luaxml_sty.verb_table = {} + local callback_name = "luaxml_store_lines_".. env_name + local fn = luaxml_sty.store_lines(env_name, callback_name) + luatexbase.add_to_callback( + "process_input_buffer" , fn , callback_name) +end + +--- parse content of the previous environment registered using luaxml_sty.register_verbatim() +--- and print the transformed content +---@param transformer string transformer name, empty for the default object +function luaxml_sty.print_verbatim(transformer) + luaxml_sty.parse_snippet(transformer, table.concat(luaxml_sty.verb_table, "\n")) +end + +return luaxml_sty diff --git a/macros/luatex/generic/luaxml/luaxml-transform.lua b/macros/luatex/generic/luaxml/luaxml-transform.lua index b6841fea5f..34930df844 100644 --- a/macros/luatex/generic/luaxml/luaxml-transform.lua +++ b/macros/luatex/generic/luaxml/luaxml-transform.lua @@ -1,5 +1,5 @@ --- XML transformation module for LuaXML --- @module luaxml-tranform +-- @module luaxml-transform -- @author Michal Hoftich <michal.h21@gmail.com -- code originaly comes from from https://github.com/michal-h21/luaxml-mathml @@ -198,6 +198,13 @@ local function add_action(selector, template, parameters, csspar) end +--- Remove actions for a given selector +-- @param selector CSS selector for the matching element +-- @param csspar cssquery object. Default is set by the library, so it is not necessary to use. +local function reset_actions(selector, csspar) + local css = csspar or css + css:remove_selector(selector) +end --- Transform XML string @@ -234,7 +241,7 @@ end local function print_tex(content) -- we need to replace "\n" characters with calls to tex.sprint for s in content:gmatch("([^\n]*)") do - tex.sprint(s) + tex.print(s) end end @@ -243,7 +250,7 @@ end local Transformer --- Make new Transformer object --- @return Tranformer object +-- @return Transformer object local function new() local self = setmetatable({}, Transformer) self.css = cssquery() @@ -289,6 +296,12 @@ function Transformer:add_custom_action(selector, fn ) add_custom_action(selector, fn, self.css) end +--- Remove all actions that match the given selector +---@param selector string +function Transformer:reset_actions(selector) + reset_actions(selector, self.css) +end + -- all methods that use transformation functions must -- correctly handle the cssquery object that this library uses @@ -338,6 +351,7 @@ local M = { print_tex = print_tex, add_action = add_action, add_custom_action = add_custom_action, + reset_actions = reset_actions, simple_content = simple_content, load_file = load_file, process_dom = process_dom, diff --git a/macros/luatex/generic/luaxml/luaxml.pdf b/macros/luatex/generic/luaxml/luaxml.pdf Binary files differindex f574a0a528..0a254c8935 100644 --- a/macros/luatex/generic/luaxml/luaxml.pdf +++ b/macros/luatex/generic/luaxml/luaxml.pdf diff --git a/macros/luatex/generic/luaxml/luaxml.sty b/macros/luatex/generic/luaxml/luaxml.sty new file mode 100644 index 0000000000..686de122d1 --- /dev/null +++ b/macros/luatex/generic/luaxml/luaxml.sty @@ -0,0 +1,123 @@ +\ProvidesPackage{luaxml}[2024-10-17 LuaXML package] + +\RequirePackage{luacode} + +% ToDo: add support for use of transformation rules for other XML syntaxes -- using LaTeX command? + + +\begin{luacode*} +luaxml_sty = require "luaxml-sty" +\end{luacode*} + + +\ExplSyntaxOn + +\bool_new:N\l_luaxml_verbatim +\tl_new:N \l_luaxml_transformer + +\keys_define:nn{luaxml}{ + verbatim .bool_set:N = \l_luaxml_verbatim , + verbatim .initial:n = false, + unknown .code:n = \tl_set_eq:NN\l_luaxml_transformer\l_keys_key_str, + transformer .tl_set:N = \l_luaxml_transformer +} + + +% select current transformer object +\NewDocumentCommand\LXMLUseTransformer{m}{ + \directlua{ +luaxml_sty.current.transformation = "#1", +}} + +% declare new transformer object +\NewDocumentCommand\LXMLDeclareTransformer{m}{ + \directlua{ + % luaxml_sty.transformations["#1"] = luaxml_sty.packages.transform.new() + luaxml_sty.declare_transformer("#1") + } +} + +% add transformer rule +% #1 options (verbatim, transformer, unknown key = transformer) +% #2 CSS selector +% #3 transformer rule +\NewDocumentCommand\LXMLRule{O{} m +v}{ + % handle keyval options + \group_begin: + \keys_set:nn {luaxml} { #1 } + \directlua{luaxml_sty.current.parameters = {}} + \bool_if:NT \l_luaxml_verbatim {\directlua{luaxml_sty.current.parameters.verbatim = true}} + \directlua{ + luaxml_sty.add_rule("\l_luaxml_transformer", "#2", "\luaescapestring{#3}") + } + \group_end: +} + + +% Transform code snippet +% \LXMLSnippet* - parse using XML parser +% \LXMLSnippet - parse using HTML parser +% #2 transformer object name -- empty = default +% #3 XML string +\NewDocumentCommand\LXMLSnippet{s O{} m}{ + \IfBooleanTF{#1}{ + \directlua{luaxml_sty.set_html()} + }{ + \directlua{luaxml_sty.set_xml()} + } + \directlua{ + luaxml_sty.parse_snippet("\luaescapestring{#2}", [[\detokenize{#3}]]) + } +} + +% Transform file +% \LXMLInputFile* - parse using XML parser +% \LXMLInputFile - parse using HTML parser +% #2 transformer object name -- empty = default +% #3 XML string +\NewDocumentCommand\LXMLInputFile{s O{} m}{ + \IfBooleanTF{#1}{ + \directlua{luaxml_sty.set_html()} + }{ + \directlua{luaxml_sty.set_xml()} + } + \directlua{ + luaxml_sty.parse_file("\luaescapestring{#2}", "\luaescapestring{#3}") + } +} + + +% Transform XML contained in the environment +% #1 transformer object name -- empty = default +\newenvironment{LXMLCode}[1]{ + \directlua{ + luaxml_sty.set_xml() + luaxml_sty.register_verbatim("LXMLCode") + } + \tl_set:Nn\l_luaxml_transformer{#1} +}{ + \directlua{ + luaxml_sty.print_verbatim("\l_luaxml_transformer") + } +} + +% Transform HTML contained in the environment +% #1 transformer object name -- empty = default +% +% I couldn't process the first line in the environment using the Lua callback with \NewDocumentEnvironment, +% so \newenvironment is used instead. +\newenvironment{LXMLCode*}[1]{ + \directlua{ + luaxml_sty.set_html() + luaxml_sty.register_verbatim("LXMLCode*") + } + \tl_set:Nn\l_luaxml_transformer{#1} +}{ + \directlua{ + luaxml_sty.print_verbatim("\l_luaxml_transformer") + } +} + + +\ExplSyntaxOff +\endinput diff --git a/macros/luatex/generic/luaxml/luaxml.tex b/macros/luatex/generic/luaxml/luaxml.tex index 5031a0468e..d475516f8b 100644 --- a/macros/luatex/generic/luaxml/luaxml.tex +++ b/macros/luatex/generic/luaxml/luaxml.tex @@ -7,7 +7,7 @@ \usepackage{framed} % Version is defined in the makefile, use default values when compiled directly \ifdefined\version\else -\def\version{v0.1r} +\def\version{v0.2a} \let\gitdate\date \fi \newcommand\modulename[1]{\subsection{#1}\label{sec:#1}} @@ -17,6 +17,7 @@ \newcommand\functionsummary[1]{#1\\\textbf{Parameters:}\\} \newcommand\functionparam[2]{\texttt{#1}: #2\\} \newcommand\functionreturn[1]{\textbf{Return: }\\#1\\} +\usepackage{luaxml} \begin{document} \title{The \textsc{LuaXML} library} @@ -99,6 +100,67 @@ end \end{luacode*} \end{framed} +\subsection{HTML parsing} + +You can parse HTML documents using the \verb|DOM_Object.html_parse| function. This parser is slower +than the default XML parser, but it can load files that would cause errors in the XML mode. +It can handle wrongly nested HTML tags, inline JavaScript and CSS styles, and other HTML features +that would cause XML errors. + +\begin{verbatim} +dom = require "luaxml-domobject" +local document = [[ +<html> +<head><title>sample</title></head> +<body> +<h1>test</h1> +<p>hello +<p>another paragraph +<ul> +<li>first +<li>second +</ul> +</body> +</html> + ]] + +-- dom.html_parse returns the DOM_Object +obj = dom.html_parse(document) +-- print names of all elements contained in body +for _, x in ipairs(obj:query_selector("body *")) do + tex.print(x:get_element_name().. "\\par") +end +\end{verbatim} + + +\begin{framed} +\begin{luacode*} +dom = require "luaxml-domobject" +local document = [[ +<html> +<head><title>sample</title></head> +<body> +<h1>test</h1> +<p>hello +<p>another paragraph +<ul> +<li>first +<li>second +</ul> +</body> +</html> + ]] + +-- dom.html_parse returns the DOM_Object +obj = dom.html_parse(document) +-- print names of all elements contained in body +for _, x in ipairs(obj:query_selector("body *")) do + tex.print(x:get_element_name().. "\\par") +end +\end{luacode*} +\end{framed} + + \subsection{Void elements} The \verb|DOM_Object.parse| function tries to support the HTML void elements, @@ -295,6 +357,52 @@ body:replace_node(oldbody) \end{framed} +\subsubsection{Adding raw XML and HTML string} + +You can also set XML or HTML markup from a string to an element using the \texttt{DOM\_Object:inner\_html} function. +Pass true as the second argument to parse string as XML, it is parsed as HTML otherwise. + + +\begin{verbatim} +local document = [[ +<html><p>hello</p> +</html> +]] +local tree = dom.html_parse(document) +local p = tree:query_selector("p")[1] +-- insert inner_html as XML +p:inner_html("hello <b>this</b> should be the new content") +print(tree:serialize()) +\end{verbatim} + +In this example, we replace contents of the first \verb|<p>| element by new content. + +\begin{framed} + \ttfamily + \begin{luacode*} +local document = [[ +<html><p>hello</p> +</html> +]] +local tree = dom.html_parse(document) +local p = tree:query_selector("p")[1] +-- insert inner_html as XML +p:inner_html("hello <b>this</b> should be the new content") +tex.print(tree:serialize()) + \end{luacode*} +\end{framed} + +There are more variants of raw string methods that add the new content at specific places in the element instead of replacing contents +of the element: + +\begin{description} + \item[\texttt{DOM\_Object:insert\_before\_begin}] -- before element. + \item[\texttt{DOM\_Object:insert\_after\_begin}] -- just inside the element, before its first child. + \item[\texttt{DOM\_Object:insert\_before\_end}] -- just inside the element, after its last child. + \item[\texttt{DOM\_Object:insert\_after\_end}] -- after the element. +\end{description} + + \section{The \texttt{CssQuery} library} \label{sec:cssquery_library} @@ -436,7 +544,7 @@ is placed to the output string. There are two methods for action specification, \verb|add_action| for text templates, and \verb|add_custom_action| for Lua functions. -\subsubsection{Transforming using templates} +\subsubsection{Transforming using templates}\label{sec:transform-templates} Template actions can be added using the \verb|add_action| method: @@ -456,6 +564,7 @@ attributes. \begin{description} \item[\verb|@\{attribute name\}|] insert value of an attribute \item[\verb|@<.>|] insert transformed content of the element + \item[\texttt{\%s}] insert transformed content of the element. Shortcut for \verb|@<.>|. \item[\verb|@<number>|] insert transformed content of the child element selected by it's number in the list of children \item[\verb|@<element name>|] insert transformed content of the named child element @@ -641,7 +750,234 @@ transform.print_tex("\\verb|" .. result .. "|") \end{luacode*} \end{framed} +\section{Character sets handling} + +The \texttt{luaxml-encodings} library provides functions to convert texts in legacy 8-bit encodings such as WINDOWS-1250 +or ISO-8859-2 to UTF-8. This can be useful in fixing document encoding before HTML parsing using the \texttt{luaxml-mod-html} +library. +\subsection{Example} + + +\begin{verbatim} +kpse.set_program_name "luatex" +local encodings = require "luaxml-encodings" + +--read HTML page from the standard input +local text = io.read("*all") +-- find the character encoding in HTML metadata +local enc = encodings.find_html_encoding(text) +if enc then + -- local conversion table for the found encoding + local mapping = encodings.load_mapping(enc) + if mapping then + -- if the mapping exists, recode the HTML input and print it + local converted = encodings.recode(text, mapping) + print(converted) + end +end +\end{verbatim} + +\section{The \texttt{luaxml.sty} Package} + +The \texttt{luaxml.sty} package is designed to provide an interface for defining +transformation rules for XML and HTML documents using Lua and \LaTeX\ commands. +It allows users to declare transformation objects, apply transformation rules +based on CSS selectors, and process XML or HTML from files or code snippets +within \LaTeX\ documents. + +XML and HTML documents can be inserted from files or directly via commands and environments. +All commands and environments intended for code input have two variants: with +an asterisk for inputting HTML documents and without an asterisk for inputting +XML documents. + +\subsection{Example of transformation using \LaTeX\ commands} + +\begin{verbatim} +\LXMLRule[sample]{h1}|\par\noindent{\large\bfseries %s\par}| +\LXMLRule[sample]{p}|%s\par| +\LXMLRule[sample]{a[href]}|\href{@{href}}{%s}| + %% process HTML code +\begin{LXMLCode*}{sample} +<html> +<h1>Hello</h1> +<p>Here is a link to <a href="https://tex.stackexchange.com/">TeX.sx</a> +</p> +</html> +\end{LXMLCode*} +\end{verbatim} +\begin{framed} + +\LXMLRule[sample]{h1}|\par\noindent{\large\bfseries %s\par}| +\LXMLRule[sample]{p}|%s\par| +\LXMLRule[sample]{a[href]}|\href{@{href}}{%s}| +% process HTML code +\begin{LXMLCode*}{sample} +<html> +<h1>Hello</h1> +<p>Here is a link to <a href="https://tex.stackexchange.com/">TeX.sx</a> +</p> +</html> +\end{LXMLCode*} +\end{framed} + + +\subsection{Declaring Transformation Rules} + + + +\begin{verbatim} +\LXMLRule[<options>]\{<CSS selector>\}|<transformation rule>| +\end{verbatim} + +\noindent Defines a transformation rule for the current transformer. The transformation +is applied to elements matching the given CSS selector. You can define multiple transformers, +for example if you want to support multiple XML syntaxes and HTML at the same time. + +\medskip + +\noindent The \texttt{<options>} parameter can include: + +\begin{itemize} + \item \texttt{verbatim}: Whether to process the rule in verbatim mode. + \item \texttt{transformer}: Specifies a transformer. +\end{itemize} + +Any unknown key acts as a name of the transformer. In the following code, both +examples add a rule to a transformer named \texttt{sample}. + +\begin{verbatim} +\LXMLRule[transformer=sample]{b}|\textbf{%s}| +\LXMLRule[sample]{i}|\textit{%s}| +\end{verbatim} + +If you want to support only one syntax though, you don't need to specify the transformer name at all, +a default object will be used. + +By default, spaces are collapsed. If you want to support elements where white spaces +should be preserved, such as HTML \verb|<pre>| element, use the \verb|verbatim| option: + +\begin{verbatim} +\LXMLRule[verbatim]{pre}|\begin{verbatim} + %s +\end{verbatim} +% trick to print \end{verbatim}| +\verb+\end{verbatim}|+ + +\bigskip + +The \texttt{transformation rule} must be delimited by a pair of characters that are not used in the +text of the rule. We use \verb+|+ in our examples, but you can use other characters if you like. +This is similar to how the \verb|\verb| command works. You can use the syntax +shown in the section~\ref{sec:transform-templates} (page~\pageref{sec:transform-templates}). + +The following code defines rule that transforms the \verb|<h1>| element to a \verb|\section| command, +and \verb|<a>| element which has a \verb|href| attribute to \verb|\href|. URL of the link is used +thanks to the \verb|@{href}| rule. + +\begin{verbatim} +\LXMLRule{h1}|{\section{%s}| +\LXMLRule{a[href]}|\href{@{href}}{%s}| +\end{verbatim} + +\subsection{Content Transformation} + +\begin{verbatim} +\LXMLSnippet[<transformer name>]{<XML code>} +\LXMLSnippet*[<transformer name>]{<HTML code>} +\end{verbatim} + +\noindent The \verb|\LXMLSnippet| command processes a code snippet as XML or HTML. +Use the starred variant for HTML +input. The \texttt{<transformer name>} argument specifies the transformer object to apply +(default is used if empty). The code to be transformed is passed in the second +argument. + +\medskip + +\noindent{XML snippet transformation:} +\begin{verbatim} +\LXMLRule[xmlsnippet]{title}|title: %s| +\LXMLSnippet{<root><title>Hello</title></root>} +\end{verbatim} + +\begin{framed} +\LXMLRule[xmlsnippet]{title}|title: %s| +\LXMLSnippet[xmlsnippet]{<root><title>Hello</title></root>} +\end{framed} + +\noindent{HTML snippet transformation:} +\begin{verbatim} +\LXMLRule[htmlsnippet]{h1}|title: %s| +\LXMLSnippet*[htmlsnippet]{<div><h1>Header</h1></div>} +\end{verbatim} + +\begin{framed} +\LXMLRule[htmlsnippet]{h1}|title: %s| +\LXMLSnippet*[htmlsnippet]{<div><h1>Header</h1></div>} +\end{framed} + +\vtop\bgroup +\begin{verbatim} +\LXMLInputFile[<transformer>]{<XML file path>} +\LXMLInputFile*[<transformer>]{<HTML file path>} +\end{verbatim} + +\noindent Processes a file as XML or HTML. Use the starred variant for HTML input. The \texttt{<transformer>} specifies the transformer object to apply (default is used if empty). The file path is passed in the second argument. +\egroup + +\noindent\textbf{Environments} + +\medskip +\noindent \textbf{\texttt{\textbackslash begin\{LXMLCode\}\{<transformer>\}} ... \texttt{\textbackslash end\{LXMLCode\}}} + + +\noindent Processes XML code inside the environment. The \texttt{<transformer>} specifies the transformer object to apply (default is used if empty). + +\begin{verbatim} +\LXMLRule[xmlenv]{element}|hello: %s| +\begin{LXMLCode}{xmlenv} +<root> + <element>Some content</element> +</root> +\end{LXMLCode} +\end{verbatim} + +\begin{framed} +\LXMLRule[xmlenv]{element}|hello: %s| +\begin{LXMLCode}{xmlenv} +<root> + <element>Some content</element> +</root> +\end{LXMLCode} +\end{framed} + +\medskip +\noindent\textbf{\texttt{\textbackslash begin\{LXMLCode*\}\{<transformer>\}} ... \texttt{\textbackslash end\{LXMLCode*\}}} + +\noindent Processes HTML code inside the environment. The \texttt{<transformer>} specifies the transformer object to apply (default is used if empty). + +\begin{verbatim} +\LXMLRule[htmlenv]{p}|paragraph: %s| +\begin{LXMLCode*}{htmlenv} +<div> + <p>Some HTML content</p> +</div> +\end{LXMLCode*} +\end{verbatim} + +\begin{framed} +\LXMLRule[htmlenv]{p}|paragraph: %s| +\begin{LXMLCode*}{htmlenv} +<div> + <p>Some HTML content</p> +</div> +\end{LXMLCode*} +\end{framed} + + + +\clearpage \section{The API documentation} \input{doc/api.tex} diff --git a/macros/luatex/generic/nodetree/README.md b/macros/luatex/generic/nodetree/README.md index f9fdb53fff..71297fb7f1 100644 --- a/macros/luatex/generic/nodetree/README.md +++ b/macros/luatex/generic/nodetree/README.md @@ -18,7 +18,7 @@ terminal to generate the document. # License -Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> ------------------------------------------------------------------------ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license @@ -150,8 +150,8 @@ if not modules then modules = { } end modules ['nodetree'] = { ### Update the copyright year: ``` -sed -i 's/(C) 2016-2023/(C) 2016-2021/g' nodetree.ins -sed -i 's/(C) 2016-2023/(C) 2016-2021/g' nodetree.dtx +sed -i 's/(C) 2016-2024/(C) 2016-2021/g' nodetree.ins +sed -i 's/(C) 2016-2024/(C) 2016-2021/g' nodetree.dtx ``` ### Command line tasks: diff --git a/macros/luatex/generic/nodetree/nodetree-doc.tex b/macros/luatex/generic/nodetree/nodetree-doc.tex index d9531ad9f2..c992d70246 100644 --- a/macros/luatex/generic/nodetree/nodetree-doc.tex +++ b/macros/luatex/generic/nodetree/nodetree-doc.tex @@ -107,7 +107,7 @@ \href{https://github.com/Josef-Friedrich/nodetree}{github.com/Josef-Friedrich/nodetree}\\% with contributions by Werner Lemberg } -\date{v2.3.0 from 2023/09/10} +\date{v2.4.0 from 2024/09/17} \maketitle diff --git a/macros/luatex/generic/nodetree/nodetree.dtx b/macros/luatex/generic/nodetree/nodetree.dtx index 0b3668a8ce..6c274899d3 100644 --- a/macros/luatex/generic/nodetree/nodetree.dtx +++ b/macros/luatex/generic/nodetree/nodetree.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license @@ -28,7 +28,7 @@ %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\ProvidesPackage{nodetree} %<*package> - [2023/09/10 v2.3.0 Visualize node lists in a tree view] + [2024/09/17 v2.4.0 Visualize node lists in a tree view] %</package> % \fi % @@ -218,7 +218,7 @@ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{nodetree-embed} - [2023/09/10 v2.3.0 Embed node trees into a LaTeX document] + [2024/09/17 v2.4.0 Embed node trees into a LaTeX document] % \end{macrocode} % % \begin{macrocode} diff --git a/macros/luatex/generic/nodetree/nodetree.ins b/macros/luatex/generic/nodetree/nodetree.ins index e1ded5bb1b..fce0ba7c8d 100644 --- a/macros/luatex/generic/nodetree/nodetree.ins +++ b/macros/luatex/generic/nodetree/nodetree.ins @@ -1,4 +1,4 @@ -% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license @@ -21,7 +21,7 @@ This is a generated file. -Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> ---------------------------------------------------------------------- This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license diff --git a/macros/luatex/generic/nodetree/nodetree.lua b/macros/luatex/generic/nodetree/nodetree.lua index 18a1f204c3..82a3e294d3 100644 --- a/macros/luatex/generic/nodetree/nodetree.lua +++ b/macros/luatex/generic/nodetree/nodetree.lua @@ -30,7 +30,7 @@ --- be either `continue` or `stop`. if not modules then modules = {} end modules ['nodetree'] = { - version = '2.3.0', + version = '2.4.0', comment = 'nodetree', author = 'Josef Friedrich', copyright = 'Josef Friedrich', @@ -649,30 +649,37 @@ end --- Convert a Lua table into a format string. --- ----@param table table # A table to generate an inline view of. +---@param tbl table # A table to generate an inline view of. --- ---@return string -function template.table_inline(table) +function template.table_inline(tbl) local tex_escape = '' if options.channel == 'tex' then tex_escape = '\\' end - if type(table) == 'table' then - table = get_all_table_data(table) + if type(tbl) == 'table' then + tbl = get_all_table_data(tbl) local output = tex_escape .. '{' local kv_list = '' - for key, value in pairs(table) do - if type(key) ~= 'numbers' then - key = '\'' .. - template.colored_string(key, 'cyan', 'dim') .. '\'' - end - kv_list = kv_list .. '[' .. key .. '] = ' .. - template.table_inline(value) .. ', ' + local keys = {} + for key in pairs(tbl) do + keys[#keys + 1] = key + end + table.sort(keys) + for i = 1, #keys do + local key = keys[i] + local value = tbl[key] + if type(key) ~= 'numbers' then + key = '\'' .. + template.colored_string(key, 'cyan', 'dim') .. '\'' + end + kv_list = kv_list .. '[' .. key .. '] = ' .. + template.table_inline(value) .. ', ' end output = output .. kv_list:gsub(', $', '') return output .. tex_escape .. '}' else - return tostring(table) + return tostring(tbl) end end diff --git a/macros/luatex/generic/nodetree/nodetree.pdf b/macros/luatex/generic/nodetree/nodetree.pdf Binary files differindex c15b1e5c17..6c228dbe58 100644 --- a/macros/luatex/generic/nodetree/nodetree.pdf +++ b/macros/luatex/generic/nodetree/nodetree.pdf diff --git a/macros/luatex/generic/penlight/README.md b/macros/luatex/generic/penlight/README.md index a80a51c22e..18427f1141 100644 --- a/macros/luatex/generic/penlight/README.md +++ b/macros/luatex/generic/penlight/README.md @@ -5,7 +5,7 @@ This LuaLaTeX package provides a wrapper to use the [penlight](https://github.co # License -Copyright (C) 2021-2023 Kale Ewasiuk +Copyright (C) 2021-2024 Kale Ewasiuk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/macros/luatex/generic/penlight/penlight.lua b/macros/luatex/generic/penlight/penlight.lua index 6ffcaf49b7..e104886a83 100644 --- a/macros/luatex/generic/penlight/penlight.lua +++ b/macros/luatex/generic/penlight/penlight.lua @@ -275,7 +275,7 @@ function Doc:reset() end ---- Append a child to the currrent Node (ignoring current position). +--- Append a child to the current Node (ignoring current position). -- @param child a child node (either text or a document) -- @return the current node (`self`) -- @usage @@ -311,7 +311,7 @@ end --- Set attributes of a document node. --- Will add/overwite values, but will not remove existing ones. +-- Will add/overwrite values, but will not remove existing ones. -- Operates on the Node itself, will not take position into account. -- @tparam table t a table containing attribute/value pairs -- @return the current node (`self`) @@ -447,7 +447,7 @@ do -- @param self document node to traverse -- @param tag tag-name to look for -- @param list array table to add the matching ones to - -- @param recurse if truthy, recursivly search the node + -- @param recurse if truthy, recursively search the node local function _children_with_name(self, tag, list, recurse) -- TODO: protect against recursion for _, child in ipairs(self) do @@ -942,7 +942,7 @@ local html_empty_elements = { --lists all HTML empty (void) elements } --- Parse a well-formed HTML file as a string. --- Tags are case-insenstive, DOCTYPE is ignored, and empty elements can be .. empty. +-- Tags are case-insensitive, DOCTYPE is ignored, and empty elements can be .. empty. -- @param s the HTML function _M.parsehtml(s) return _M.basic_parse(s,false,true) @@ -1335,7 +1335,7 @@ end -- Multiple short args can be combined like so: ( `-abcd`). -- -- When specifying the `flags_valid` parameter, its contents can also contain --- aliasses, to convert short/long flags to the same output name. See the +-- aliases, to convert short/long flags to the same output name. See the -- example below. -- -- Note: if a flag is repeated, the last value wins. @@ -1354,7 +1354,7 @@ end -- { "hello", "world" }, -- list of flags taking values -- { "l", "a", "b"}) -- list of allowed flags (value ones will be added) -- --- -- More complex example using aliasses: +-- -- More complex example using aliases: -- local valid = { -- long = "l", -- if 'l' is specified, it is reported as 'long' -- new = { "n", "old" }, -- here both 'n' and 'old' will go into 'new' @@ -1397,16 +1397,16 @@ function app.parse_args (args,flags_with_values, flags_valid) valid = setmetatable({},{ __index = function(_, key) return key end }) else valid = {} - for k,aliasses in pairs(flags_valid) do + for k,aliases in pairs(flags_valid) do if type(k) == "number" then -- array/list entry - k = aliasses + k = aliases end - if type(aliasses) == "string" then -- single alias - aliasses = { aliasses } + if type(aliases) == "string" then -- single alias + aliases = { aliases } end - if type(aliasses) == "table" then -- list of aliasses + if type(aliases) == "table" then -- list of aliases -- it's the alternate name, so add the proper mappings - for i, alias in ipairs(aliasses) do + for i, alias in ipairs(aliases) do valid[alias] = k end end @@ -1427,7 +1427,7 @@ function app.parse_args (args,flags_with_values, flags_valid) end -- now check that all flags with values are reported as such under all - -- of their aliasses + -- of their aliases for k, main_alias in pairs(valid) do if with_values[main_alias] then with_values[k] = true @@ -1696,7 +1696,7 @@ function array2d.flatten (t) return makelist(res) end ---- reshape a 2D array. Reshape the aray by specifying a new nr of rows. +--- reshape a 2D array. Reshape the array by specifying a new nr of rows. -- @array2d t 2d array -- @int nrows new number of rows -- @bool co use column-order (Fortran-style) (default false) @@ -1773,7 +1773,7 @@ end --- extract the specified columns. -- @array2d t 2d array -- @tparam {int} cidx a table of column indices --- @return a new 2d array with the extracted colums +-- @return a new 2d array with the extracted columns function array2d.extract_cols (t,cidx) assert_arg(1,t,'table') local res = {} @@ -2097,7 +2097,7 @@ end, -------------------- -- Module: 'pl.class' -------------------- ---- Provides a reuseable and convenient framework for creating classes in Lua. +--- Provides a reusable and convenient framework for creating classes in Lua. -- Two possible notations: -- -- B = class(A) @@ -2124,7 +2124,7 @@ local function call_ctor (c,obj,...) init = rawget(parent_with_init, '_init') parent_with_init = rawget(parent_with_init, '_parent_with_init') end - if parent_with_init then -- super() points to one above whereever _init came from + if parent_with_init then -- super() points to one above wherever _init came from rawset(obj,'super',function(obj,...) call_ctor(parent_with_init,obj,...) end) @@ -2970,9 +2970,9 @@ end local config = {} ---- like `io.lines`, but allows for lines to be continued with '`\`'. +--- like `io.lines`, but allows for lines to be continued with '`\\`'. -- @param file a file-like object (anything where read() returns the next line) or a filename. --- Defaults to stardard input. +-- Defaults to standard input. -- @return an iterator over the lines, or nil -- @return error 'not a file-like object' or 'file is nil' function config.lines(file) @@ -3353,7 +3353,7 @@ function data.read(file,cnfg) -- note that using dot as the thousands separator (@thousands_dot) -- requires a special conversion function! For CSV, _empty fields_ are - -- considered to default to numerial zeroes. + -- considered to default to numerical zeroes. local tonumber = tonumber local function try_number(x) if thousands_dot then x = x:gsub('%.(...)','%1') end @@ -5327,7 +5327,7 @@ function repr (e,lastpred) end func.repr = repr --- collect all the non-PE values in this PE into vlist, and replace each occurence +-- collect all the non-PE values in this PE into vlist, and replace each occurrence -- with a constant PH (_C1, etc). Return the maximum placeholder index found. local collect_values function collect_values (e,vlist) @@ -5411,13 +5411,20 @@ utils.add_function_factory(_PEMT,func.I) func.bind1 = utils.bind1 func.curry = func.bind1 ---- create a function which chains two functions. +--- create a function which chains multiple functions. -- @func f a function of at least one argument -- @func g a function of at least one argument +-- @param ... additional functions to compose -- @return a function --- @usage printf = compose(io.write,string.format) -function func.compose (f,g) - return function(...) return f(g(...)) end +-- @usage printf = compose(io.write, string.format) +-- @usage printf = compose(io.write, string.lower, string.format) +function func.compose (...) + local args = pack(...) + return tablex.reduce(function(f, g) + return function(...) + return f(g(...)) + end + end, args) end --- bind the arguments of a function to given values. @@ -5475,7 +5482,7 @@ end, -------------------- -------------- -- PL loader, for loading all PL libraries, only on demand. --- Whenever a module is implicitly accesssed, the table will have the module automatically injected. +-- Whenever a module is implicitly accessed, the table will have the module automatically injected. -- (e.g. `_ENV.tablex`) -- then that module is dynamically loaded. The submodules are all brought into -- the table that is provided as the argument, or returned in a new table. @@ -5573,7 +5580,7 @@ end, -------------------- -------------- -- Entry point for loading all PL libraries only on demand, into the global space. --- Requiring 'pl' means that whenever a module is implicitly accesssed +-- Requiring 'pl' means that whenever a module is implicitly accessed -- (e.g. `utils.split`) -- then that module is dynamically loaded. The submodules are all brought into -- the global space. @@ -6872,7 +6879,7 @@ function List:insert(i, x) return self end ---- Insert an item at the begining of the list. +--- Insert an item at the beginning of the list. -- @param x a data item -- @return the list function List:put (x) @@ -7282,7 +7289,7 @@ function List:iter () return iter(self) end ---- Create an iterator over a seqence. +--- Create an iterator over a sequence. -- This captures the Python concept of 'sequence'. -- For tables, iterates over all values with integer indices. -- @param seq a sequence; a string (over characters), a table, a file object (over lines) or an iterator function @@ -7637,10 +7644,14 @@ local function makelist(t) return setmetatable(t, require('pl.List')) end ---- list of keys. +--- return a List of all keys. +-- @class function +-- @name Map:keys Map.keys = tablex.keys ---- list of values. +--- return a List of all values. +-- @class function +-- @name Map:values Map.values = tablex.values --- return an iterator over all key-value pairs. @@ -7648,7 +7659,7 @@ function Map:iter () return pairs(self) end ---- return a List of all key-value pairs, sorted by the keys. +--- return a List of all key-value pairs, sorted by the keys in ascending order. function Map:items() local ls = makelist(tablex.pairmap (function (k,v) return makelist {k,v} end, self)) ls:sort(function(t1,t2) return t1[1] < t2[1] end) @@ -8223,12 +8234,12 @@ local function err_func(name, param, err, code) end --- Lua iterator over the entries of a given directory. --- Implicit link to [`luafilesystem.dir`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.dir`](https://lunarmodules.github.io/luafilesystem/manual.html#dir) -- @function dir path.dir = lfs.dir --- Creates a directory. --- Implicit link to [`luafilesystem.mkdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.mkdir`](https://lunarmodules.github.io/luafilesystem/manual.html#mkdir) -- @function mkdir path.mkdir = function(d) local ok, err, code = lfs.mkdir(d) @@ -8239,7 +8250,7 @@ path.mkdir = function(d) end --- Removes a directory. --- Implicit link to [`luafilesystem.rmdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.rmdir`](https://lunarmodules.github.io/luafilesystem/manual.html#rmdir) -- @function rmdir path.rmdir = function(d) local ok, err, code = lfs.rmdir(d) @@ -8250,7 +8261,7 @@ path.rmdir = function(d) end --- Gets attributes. --- Implicit link to [`luafilesystem.attributes`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.attributes`](https://lunarmodules.github.io/luafilesystem/manual.html#attributes) -- @function attrib path.attrib = function(d, r) local ok, err, code = attrib(d, r) @@ -8261,7 +8272,7 @@ path.attrib = function(d, r) end --- Get the working directory. --- Implicit link to [`luafilesystem.currentdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.currentdir`](https://lunarmodules.github.io/luafilesystem/manual.html#currentdir) -- @function currentdir path.currentdir = function() local ok, err, code = currentdir() @@ -8272,7 +8283,7 @@ path.currentdir = function() end --- Gets symlink attributes. --- Implicit link to [`luafilesystem.symlinkattributes`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.symlinkattributes`](https://lunarmodules.github.io/luafilesystem/manual.html#symlinkattributes) -- @function link_attrib path.link_attrib = function(d, r) local ok, err, code = link_attrib(d, r) @@ -8285,7 +8296,7 @@ end --- Changes the working directory. -- On Windows, if a drive is specified, it also changes the current drive. If -- only specifying the drive, it will only switch drive, but not modify the path. --- Implicit link to [`luafilesystem.chdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference) +-- Implicit link to [`luafilesystem.chdir`](https://lunarmodules.github.io/luafilesystem/manual.html#chdir) -- @function chdir path.chdir = function(d) local ok, err, code = lfs.chdir(d) @@ -8329,7 +8340,7 @@ end --- does a path exist? -- @string P A file path --- @return the file path if it exists (either as file, directory, socket, etc), nil otherwise +-- @return the file path if it exists (either as file, directory, socket, etc), false otherwise function path.exists(P) assert_string(1,P) return attrib(P,'mode') ~= nil and P @@ -8426,8 +8437,8 @@ end -- @string[opt] pwd optional start path to use (default is current dir) function path.abspath(P,pwd) assert_string(1,P) - if pwd then assert_string(2,pwd) end local use_pwd = pwd ~= nil + if use_pwd then assert_string(2,pwd) end if not use_pwd and not currentdir() then return P end P = P:gsub('[\\/]$','') pwd = pwd or currentdir() @@ -8671,17 +8682,35 @@ end -- In windows, if HOME isn't set, then USERPROFILE is used in preference to -- HOMEDRIVE HOMEPATH. This is guaranteed to be writeable on all versions of Windows. -- @string P A file path +-- @treturn[1] string The file path with the `~` prefix substituted, or the input path if it had no prefix. +-- @treturn[2] nil +-- @treturn[2] string Error message if the environment variables were unavailable. function path.expanduser(P) assert_string(1,P) - if at(P,1) == '~' then - local home = getenv('HOME') - if not home then -- has to be Windows - home = getenv 'USERPROFILE' or (getenv 'HOMEDRIVE' .. getenv 'HOMEPATH') - end - return home..sub(P,2) - else + if P:sub(1,1) ~= '~' then return P end + + local home = getenv('HOME') + if (not home) and (not path.is_windows) then + -- no more options to try on Nix + return nil, "failed to expand '~' (HOME not set)" + end + + if (not home) then + -- try alternatives on Windows + home = getenv 'USERPROFILE' + if not home then + local hd = getenv 'HOMEDRIVE' + local hp = getenv 'HOMEPATH' + if not (hd and hp) then + return nil, "failed to expand '~' (HOME, USERPROFILE, and HOMEDRIVE and/or HOMEPATH not set)" + end + home = hd..hp + end + end + + return home..sub(P,2) end @@ -8839,7 +8868,7 @@ end --- an iterator over all permutations of the elements of the given lists. -- @param ... list-like tables, they are nil-safe if a length-field `n` is provided (see `utils.pack`) --- @return an iterator which provides the next permutation as return values in the same order as the provided lists, preceeded by an index +-- @return an iterator which provides the next permutation as return values in the same order as the provided lists, preceded by an index -- @usage -- local strs = utils.pack("one", nil, "three") -- adds an 'n' field for nil-safety -- local bools = utils.pack(true, false) @@ -8977,6 +9006,42 @@ local assert_arg = utils.assert_arg local original_tostring = tostring +-- Calculate min and max integer supported by lua_Number +-- Assumptions: +-- 1. max_int = 2 ^ n - 1 +-- 2. min_int = -max_int +-- 3. if n > max_int versions with integer support will have +-- integer overflow and versions without integers will lose least significant bit +-- Note: if lua_Integer is smaller than lua_Number mantissa string.format('%d') +-- can throw runtime error +local max_int, min_int +local next_cand = 1 +while next_cand > 0 and next_cand % 2 == 1 do + max_int = next_cand + min_int = -next_cand + next_cand = next_cand * 2 + 1 +end + +local function is_integer(value) + if _VERSION == "Lua 5.3" or _VERSION == "Lua 5.4" then + return mtype(value) == "integer" + end + if value < min_int or value > max_int then + return false + end + return math.floor(value) == value +end + +local function is_float(value) + if _VERSION == "Lua 5.3" or _VERSION == "Lua 5.4" then + return mtype(value) == "float" + end + if value < min_int or value > max_int then + return true + end + return mfloor(value) == value +end + -- Patch tostring to format numbers with better precision -- and to produce cross-platform results for -- infinite values and NaN. @@ -8989,11 +9054,11 @@ local function tostring(value) return "Inf" elseif value == -mhuge then return "-Inf" - elseif (_VERSION ~= "Lua 5.3" or mtype(value) == "integer") and mfloor(value) == value then + elseif is_integer(value) then return ("%d"):format(value) else local res = ("%.14g"):format(value) - if _VERSION == "Lua 5.3" and mtype(value) == "float" and not res:find("%.") then + if is_float(value) and not res:find("%.") then -- Number is internally a float but looks like an integer. -- Insert ".0" after first run of digits. res = res:gsub("%d+", "%0.0", 1) @@ -11289,7 +11354,7 @@ local function _partition(p,delim,fn) end end ---- partition the string using first occurance of a delimiter +--- partition the string using first occurrence of a delimiter -- @string s the string -- @string ch delimiter (match as plain string, no patterns) -- @return part before ch @@ -11303,7 +11368,7 @@ function stringx.partition(s,ch) return _partition(s,ch,stringx.lfind) end ---- partition the string p using last occurance of a delimiter +--- partition the string p using last occurrence of a delimiter -- @string s the string -- @string ch delimiter (match as plain string, no patterns) -- @return part before ch @@ -11575,7 +11640,7 @@ end ---- Miscelaneous +--- Miscellaneous -- @section misc --- return an iterator over all lines in a string @@ -11593,7 +11658,7 @@ function stringx.lines(s) return s:gmatch('([^\n]*)\n') end ---- inital word letters uppercase ('title case'). +--- initial word letters uppercase ('title case'). -- Here 'words' mean chunks of non-space characters. -- @string s the string -- @return a string with each word's first letter uppercase @@ -11614,7 +11679,7 @@ do --- Return a shortened version of a string. -- Fits string within w characters. Removed characters are marked with ellipsis. -- @string s the string - -- @int w the maxinum size allowed + -- @int w the maximum size allowed -- @bool tail true if we want to show the end of the string (head otherwise) -- @usage ('1234567890'):shorten(8) == '12345...' -- @usage ('1234567890'):shorten(8, true) == '...67890' @@ -11688,7 +11753,7 @@ end --- Python-style formatting operator. -- Calling `text.format_operator()` overloads the % operator for strings to give --- Python/Ruby style formated output. +-- Python/Ruby style formatted output. -- This is extended to also do template-like substitution for map-like data. -- -- Note this goes further than the original, and will allow these cases: @@ -11698,7 +11763,7 @@ end -- 3. a map of var=value pairs -- 4. a function, as in gsub -- --- For the second two cases, it uses $-variable substituion. +-- For the second two cases, it uses $-variable substitution. -- -- When called, this function will monkey-patch the global `string` metatable by -- adding a `__mod` method. @@ -12799,59 +12864,72 @@ end, local utils = require 'pl.utils' -local append,format,strsub,strfind,strgsub = table.insert,string.format,string.sub,string.find,string.gsub +local append, concat = table.insert, table.concat +local format, strsub, strfind, strgsub, strrep = string.format, string.sub, string.find, string.gsub, string.rep -local APPENDER = "\n__R_size = __R_size + 1; __R_table[__R_size] = " +local APPENDER = " __R_size = __R_size + 1; __R_table[__R_size] = " +-- When this function returns, `pieces` is guaranteed to hold a complete Lua +-- statement, meaning that new statements can be appended without creating +-- invalid Lua code. local function parseDollarParen(pieces, chunk, exec_pat, newline) local s = 1 for term, executed, e in chunk:gmatch(exec_pat) do - executed = '('..strsub(executed,2,-2)..')' - append(pieces, APPENDER..format("%q", strsub(chunk,s, term - 1))) - append(pieces, APPENDER..format("__tostring(%s or '')", executed)) + executed = '(' .. strsub(executed, 2, -2) .. ')' + append(pieces, APPENDER .. format("%q;", strsub(chunk, s, term - 1))) + append(pieces, APPENDER .. format("__tostring(%s or '');", executed)) s = e end - local r + local remainder, newlines_removed if newline then - r = format("%q", strgsub(strsub(chunk,s),"\n","")) + remainder, newlines_removed = strgsub(strsub(chunk, s), "\n", "") else - r = format("%q", strsub(chunk,s)) + remainder, newlines_removed = strsub(chunk, s), 0 end - if r ~= '""' then - append(pieces, APPENDER..r) + if remainder ~= "" then + append(pieces, APPENDER .. format("%q;", remainder)) + end + if newlines_removed > 0 then + append(pieces, strrep("\n", newlines_removed)) end end -local function parseHashLines(chunk,inline_escape,brackets,esc,newline) - local exec_pat = "()"..inline_escape.."(%b"..brackets..")()" +local function parseHashLines(chunk, inline_escape, brackets, esc, newline) + -- Escape special characters to avoid invalid expressions + inline_escape = utils.escape(inline_escape) + esc = utils.escape(esc) + + local exec_pat = "()" .. inline_escape .. "(%b" .. brackets .. ")()" - local esc_pat = esc.."+([^\n]*\n?)" - local esc_pat1, esc_pat2 = "^"..esc_pat, "\n"..esc_pat - local pieces, s = {"return function()\nlocal __R_size, __R_table, __tostring = 0, {}, __tostring", n = 1}, 1 + local esc_pat = esc .. "+([^\n]*\n?)" + local esc_pat1, esc_pat2 = "^" .. esc_pat, "\n" .. esc_pat + local pieces, s = {"return function() local __R_size, __R_table, __tostring = 0, {}, __tostring; "}, 1 while true do - local _, e, lua = strfind(chunk,esc_pat1, s) + local _, e, lua = strfind(chunk, esc_pat1, s) if not e then local ss - ss, e, lua = strfind(chunk,esc_pat2, s) - parseDollarParen(pieces, strsub(chunk,s, ss), exec_pat, newline) + ss, e, lua = strfind(chunk, esc_pat2, s) + parseDollarParen(pieces, strsub(chunk, s, ss), exec_pat, newline) if not e then break end end - if strsub(lua, -1, -1) == "\n" then lua = strsub(lua, 1, -2) end - append(pieces, "\n"..lua) + if strsub(lua, -1, -1) ~= "\n" then lua = lua .. "\n" end -- Ensure trailing newline + append(pieces, lua) + -- since `lua` ends with a newline, there is no danger of subsequent + -- statements being gobbled up by comments or being altered s = e + 1 end - append(pieces, "\nreturn __R_table\nend") + append(pieces, "return __R_table; end") -- let's check for a special case where there is nothing to template, but it's -- just a single static string local short = false - if (#pieces == 3) and (pieces[2]:find(APPENDER, 1, true) == 1) then - pieces = { "return " .. pieces[2]:sub(#APPENDER+1,-1) } + if (#pieces == 3) and (strfind(pieces[2], APPENDER, 1, true) == 1) then + pieces = { "return " .. strsub(pieces[2], #APPENDER + 1, -1) } short = true end -- if short == true, the generated function will not return a table of strings, -- but a single string - return table.concat(pieces), short + return concat(pieces), short end local template = {} @@ -12859,33 +12937,34 @@ local template = {} --- expand the template using the specified environment. -- This function will compile and render the template. For more performant -- recurring usage use the two step approach by using `compile` and `ct:render`. --- There are six special fields in the environment table `env` --- --- * `_parent`: continue looking up in this table (e.g. `_parent=_G`). --- * `_brackets`: bracket pair that wraps inline Lua expressions, default is '()'. --- * `_escape`: character marking Lua lines, default is '#' --- * `_inline_escape`: character marking inline Lua expression, default is '$'. --- * `_chunk_name`: chunk name for loaded templates, used if there --- is an error in Lua code. Default is 'TMP'. --- * `_debug`: if truthy, the generated code will be printed upon a render error --- -- @string str the template string --- @tab[opt] env the environment --- @return `rendered template + nil + source_code`, or `nil + error + source_code`. The last --- return value (`source_code`) is only returned if the debug option is used. -function template.substitute(str,env) +-- @tparam[opt] table env the environment. This table has the following special fields: +-- @tparam[opt=nil] table env._parent continue looking up in this table (e.g. `_parent=_G`). +-- @tparam[opt="()"] string env._brackets bracket pair that wraps inline Lua expressions. +-- @tparam[opt="#"] string env._escape character marking Lua lines. +-- @tparam[opt="$"] string env._inline_escape character marking inline Lua expression. +-- @tparam[opt="TMP"] string env._chunk_name chunk name for loaded templates, used if there +-- is an error in Lua code. +-- @tparam[opt=false] boolean env._debug if truthy, the generated code will be printed upon a render error. +-- @treturn[1] string render result +-- @treturn[1] nil +-- @treturn[1] string source_code (only if '`env._debug`' was truthy). +-- @treturn[2] nil +-- @treturn[2] string error message +-- @treturn[2] string source_code (only if '`env._debug`' was truthy). +function template.substitute(str, env) env = env or {} local t, err = template.compile(str, { - chunk_name = rawget(env,"_chunk_name"), - escape = rawget(env,"_escape"), - inline_escape = rawget(env,"_inline_escape"), - inline_brackets = rawget(env,"_brackets"), - newline = nil, - debug = rawget(env,"_debug") + chunk_name = rawget(env, "_chunk_name"), + escape = rawget(env, "_escape"), + inline_escape = rawget(env, "_inline_escape"), + inline_brackets = rawget(env, "_brackets"), + newline = false, + debug = rawget(env, "_debug") }) if not t then return t, err end - return t:render(env, rawget(env,"_parent"), rawget(env,"_debug")) + return t:render(env, rawget(env, "_parent"), rawget(env, "_debug")) end --- executes the previously compiled template and renders it. @@ -12894,12 +12973,16 @@ end -- @tab[opt] parent continue looking up in this table (e.g. `parent=_G`). -- @bool[opt] db if thruthy, it will print the code upon a render error -- (provided the template was compiled with the debug option). --- @return `rendered template + nil + source_code`, or `nil + error + source_code`. The last return value --- (`source_code`) is only returned if the template was compiled with the debug option. +-- @treturn[1] string render result +-- @treturn[1] nil +-- @treturn[1] string source_code (only if '`env._debug`' was truthy). +-- @treturn[2] nil +-- @treturn[2] string error message +-- @treturn[2] string source_code (only if '`env._debug`' was truthy). -- @usage -- local ct, err = template.compile(my_template) -- local rendered , err = ct:render(my_env, parent) -local render = function(self, env, parent, db) +local function render(self, env, parent, db) env = env or {} if parent then -- parent is a bit silly, but for backward compatibility retained setmetatable(env, {__index = parent}) @@ -12911,25 +12994,27 @@ local render = function(self, env, parent, db) if self.code and db then print(self.code) end return nil, out, self.code end - return table.concat(out), nil, self.code + return concat(out), nil, self.code end --- compiles the template. -- Returns an object that can repeatedly be rendered without parsing/compiling --- the template again. --- The options passed in the `opts` table support the following options: --- --- * `chunk_name`: chunk name for loaded templates, used if there --- is an error in Lua code. Default is 'TMP'. --- * `escape`: character marking Lua lines, default is '#' --- * `inline_escape`: character marking inline Lua expression, default is '$'. --- * `inline_brackets`: bracket pair that wraps inline Lua expressions, default is '()'. --- * `newline`: string to replace newline characters, default is `nil` (not replacing newlines). --- * `debug`: if truthy, the generated source code will be retained within the compiled template object, default is `nil`. --- --- @string str the template string --- @tab[opt] opts the compilation options to use --- @return template object, or `nil + error + source_code` +-- the template again. Preserves the line layout of the template so that line +-- numbers in error messages should point to the correct lines in the source +-- string. +-- @tparam string str the template string +-- @tparam[opt] table opts the compilation options to use. This table supports the following options: +-- @tparam[opt="TMP"] string opts.chunk_name chunk name for loaded templates, used if there +-- is an error in Lua code. +-- @tparam[opt="#"] string opts.escape character marking Lua lines. +-- @tparam[opt="$"] string opts.inline_escape character marking inline Lua expression. +-- @tparam[opt="()"] string opts.inline_brackets bracket pair that wraps inline Lua expressions. +-- @tparam[opt=false] boolean opts.newline if truthy, newlines will be stripped from text in the template. +-- @tparam[opt=false] boolean opts.debug if truthy, the generated code will be printed upon a render error. +-- @treturn[1] ct compiled template object +-- @treturn[2] nil +-- @treturn[2] string error message +-- @treturn[2] string source_code -- @usage -- local ct, err = template.compile(my_template) -- local rendered , err = ct:render(my_env, parent) @@ -12940,9 +13025,9 @@ function template.compile(str, opts) local inline_escape = opts.inline_escape or '$' local inline_brackets = opts.inline_brackets or '()' - local code, short = parseHashLines(str,inline_escape,inline_brackets,escape,opts.newline) + local code, short = parseHashLines(str, inline_escape, inline_brackets, escape, opts.newline) local env = { __tostring = tostring } - local fn, err = utils.load(code, chunk_name,'t',env) + local fn, err = utils.load(code, chunk_name, 't', env) if not fn then return nil, err, code end if short then @@ -13453,7 +13538,8 @@ local operators local _function_factories = {} -local utils = { _VERSION = "1.13.1" } +local utils = { _VERSION = "1.14.0" } + for k, v in pairs(compat) do utils[k] = v end --- Some standard patterns @@ -13571,7 +13657,11 @@ end -- @param value1 Value returned if cond is truthy -- @param value2 Value returned if cond is falsy function utils.choose(cond, value1, value2) - return cond and value1 or value2 + if cond then + return value1 + else + return value2 + end end --- convert an array of values to strings. @@ -13727,7 +13817,7 @@ end -- non-existing values, and/or converting strings/identifiers to other values. -- -- Calling on the object does the same, but returns a soft error; `nil + err`, if --- the call is succesful (the key exists), it will return the value. +-- the call is successful (the key exists), it will return the value. -- -- When calling with varargs or an array the values will be equal to the keys. -- The enum object is read-only. @@ -13755,7 +13845,7 @@ end -- }, -- -- some_method = function(self) --- return self.ERR.OUT_OF_BOUNDS +-- return nil, self.ERR.OUT_OF_BOUNDS -- end, -- } -- @@ -14011,6 +14101,11 @@ end --- OS functions -- @section OS-functions +--- Execute a shell command. +-- This function is a copy of `compat.execute`. +-- @class function +-- @name utils.execute + --- execute a shell command and return the output. -- This function redirects the output to tempfiles and returns the content of those files. -- @param cmd a shell command @@ -14121,7 +14216,7 @@ end -- @param s The input string -- @param re optional A Lua string pattern; defaults to '%s+' -- @param plain optional If truthy don't use Lua patterns --- @param n optional maximum number of elements (if there are more, the last will remian un-split) +-- @param n optional maximum number of elements (if there are more, the last will remain un-split) -- @return a list-like table -- @raise error if s is not a string -- @see splitv @@ -14175,8 +14270,8 @@ end -- This is useful if you have a function which is relatively expensive, -- but you don't know in advance what values will be required, so -- building a table upfront is wasteful/impossible. --- @param func a function of at least one argument --- @return a function with at least one argument, which is used as the key. +-- @param func a function that takes exactly one argument (which later serves as the cache key) and returns a single value +-- @return a function taking one argument and returning a single value either from the cache or by running the original input function function utils.memoize(func) local cache = {} return function(k) diff --git a/macros/luatex/generic/penlight/penlight.pdf b/macros/luatex/generic/penlight/penlight.pdf Binary files differindex 3932e74389..928e356b85 100644 --- a/macros/luatex/generic/penlight/penlight.pdf +++ b/macros/luatex/generic/penlight/penlight.pdf diff --git a/macros/luatex/generic/penlight/penlight.sty b/macros/luatex/generic/penlight/penlight.sty index 7a7c94b6a7..8a0bb2c8f0 100644 --- a/macros/luatex/generic/penlight/penlight.sty +++ b/macros/luatex/generic/penlight/penlight.sty @@ -1,6 +1,6 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2023-07-22 -% Copyright (C) 2021-2023 Kale Ewasiuk +% 2024-09-15 +% Copyright (C) 2021-2024 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the "Software"), to deal @@ -22,7 +22,7 @@ % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE % OR OTHER DEALINGS IN THE SOFTWARE. -\ProvidesPackage{penlight}[2023-07-22] +\ProvidesPackage{penlight}[2024-09-15] \directlua{penlight = require'penlight'} diff --git a/macros/luatex/generic/penlight/penlight.tex b/macros/luatex/generic/penlight/penlight.tex index 93d7bdbfc3..c3f141bcbe 100644 --- a/macros/luatex/generic/penlight/penlight.tex +++ b/macros/luatex/generic/penlight/penlight.tex @@ -1,6 +1,6 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2023-07-22 -% Copyright (C) 2021-2023 Kale Ewasiuk +% 2024-09-15 +% Copyright (C) 2021-2024 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the "Software"), to deal @@ -64,7 +64,7 @@ Documentation for Penlight can be found here:\\ \mbox{\url{https://lunarmodules.github.io/Penlight}} -\\\\ This package uses version \cmd{1.13.1} +\\\\ This package uses version \cmd{1.14.0} (2024-04-15) \subsection*{Importing Penlight from within LaTeX} Loading this package runs the Lua code: \texttt{penlight = require'penlight'} @@ -95,8 +95,7 @@ Instead of using penlight.sty, you can simply:\\ \newpage \section*{} -This package used to contain \cmd{penlightextras.lua}. -That functionality now belongs to a standalone package named \cmd{penlightplus}. +Additional functionality is provided in the \cmd{penlightplus} package. \section*{} Disclaimer: I am not the author of the Lua Penlight library. diff --git a/macros/luatex/generic/penlightplus/penlightplus.lua b/macros/luatex/generic/penlightplus/penlightplus.lua index e51b01c14b..9bfc57605a 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.lua +++ b/macros/luatex/generic/penlightplus/penlightplus.lua @@ -1,5 +1,5 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2024-03-14 +--% 2024-09-30 --% Copyright (C) 2021-2024 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy @@ -295,7 +295,7 @@ function penlight.tex.aliasluastring(s, d) s = s:delspace():upper():tolist() d = d:delspace():upper():tolist() for i, S in penlight.seq.enum(d:slice_assign(1,#s,s)) do - if (S == 'E') or (S == 'F') then S = '' end -- E or F is fully expanded + if (S == 'F') then S = '' end -- F is fully expanded penlight.tex.prtn('\\let\\plluastring'..penlight.Char(i)..'\\luastring'..S) end end @@ -495,6 +495,85 @@ end + + + + + + + +-- -- -- -- -- -- -- -- -- -- -- -- functions below extend the seq module + + +function penlight.seq.check_neg_index(i, len, fallback) +i = tostring(i):delspace() +if i == '' then return fallback end +i = tonumber(i) +if i == nil then + local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"' + return fallback -- fallback is the number to fall back on if i isn't provided +end +len = tonumber(len) +if i < 0 then + if len == nil then + local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"' + return pl.utils.raise("Attempted to use seqstr indexing with negative number, but length of list not provided") + end + i = len + 1 + i -- negative index +end +return i +end + +penlight.seq.train_element_sep = ',' +penlight.seq.train_range_sep = ':' + +function penlight.seq.train(s, len) + -- parse a range given a string indexer + -- syntax is: s = 'i1, i2, r1:r2' where i1 and i2 are individual indexes. + -- r1:r2 is a range (inclusive). + -- a 'stride' can be given to ranges, eg. ::2 is 1,3,5,..., or 2::3 is 2,5,8,... + -- negative numbers can be used to index relative to the length of the table, eg, -1 -> len + -- if length is not given, negative indeing cannot be used + -- returns a penlight list of numbers + + local t = penlight.List() -- list of indexes + local check_neg = penlight.seq.check_neg_index + for _, r in ipairs(s:split(penlight.seq.train_element_sep)) do + if r:find(penlight.seq.train_range_sep) then + r = r:split(penlight.seq.train_range_sep) -- if it's a range + t:extend(penlight.List.range(check_neg(r[1], len, 1), + check_neg(r[2], len, len), + tonumber(r[3]))) + else + t:append(check_neg(r, len)) + end + end + return t +end + +function penlight.seq.itrain(s, len) +-- iterator version of sequence-string + local t = penlight.seq.train(s, len) + local i = 0 + return function () + i = i + 1 + if i <= #t then return t[i] end + end +end + + + + + + + + + + + + + + -- -- -- -- -- -- -- -- -- -- -- -- functions below extend the operator module function penlight.operator.strgt(a,b) return tostring(a) > tostring(b) end @@ -517,8 +596,6 @@ end - - -- table stuff below function penlight.tablex.strinds(t) -- convert indices that are numbers to string indices @@ -772,37 +849,49 @@ __PDFmetadata__ = {} penlight.tex.add_xspace_intext = true -function penlight.tex.updatePDFtable(k, v, o) -- key val overwrite - k = k:upfirst() - if penlight.hasval(o) or (__PDFmetadata__[k] == nil) then - __PDFmetadata__[k] = v +function penlight.tex.checkPDFkey(k) + k = k:delspace():upfirst() + local keys_allowed = 'Title Author Subject Date Language Keywords Publisher Copyright CopyrightURL Copyrighted Owner CertificateURL Coverage PublicationType Relation Source Doi ISBN URLlink Journaltitle Journalnumber Volume Issue Firstpage Lastpage CoverDisplayDate CoverDate Advisory BaseURL Identifier Nickname Thumbnails ' + if not keys_allowed:find(k ..' ') then + penlight.tex.pkgerror('penlightplus', 'invalid PDF metadata key assigned "'..k..'"') end + return k +end + +function penlight.tex.makePDFtablekv(kv) + local t_new = {} + for k, v in pairs(penlight.luakeys.parse(kv)) do + k = penlight.tex.checkPDFkey(k) + v = penlight.tex.makePDFvarstr(v) + t_new[k] = v + end + return t_new end + penlight.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file t = t or __PDFmetadata__ local str = '' for k, v in pairs(t) do - k = k:upfirst() str = str..'\\'..k..'{'..v..'}'..'\n' end penlight.utils.writefile(tex.jobname..'.xmpdata', str) end - -function penlight.tex.clear_cmds_str(s) - return s:gsub('%s+', ' '):gsub('\\\\',' '):gsub('\\%a+',''):gsub('{',' '):gsub('}',' '):gsub('%s+',' '):strip() -end - function penlight.tex.makePDFvarstr(s) s = s:gsub('%s*\\sep%s+','\0'):gsub('%s*\\and%s+','\0') -- turn \and into \sep + -- todo preserve \%, \{, \}, \backslash, and \copyright s = penlight.tex.clear_cmds_str(s) s = s:gsub('\0','\\sep ') --penlight.tex.help_wrt(s,'PDF var string') return s end +function penlight.tex.clear_cmds_str(s) + return s:gsub('%s+', ' '):gsub('\\\\',' '):gsub('\\%a+',''):gsub('{',' '):gsub('}',' '):gsub('%s+',' '):strip() +end + function penlight.tex.makeInTextstr(s) local s, c_and = s:gsub('%s*\\and%s+','\0') s = penlight.tex.clear_cmds_str(s) @@ -857,12 +946,32 @@ end +function penlight.caseswitch(s, c, kv) + local kvtbl = penlight.luakeys.parse(kv) + local sw = kvtbl[c] -- the returned switch + if sw == nil then -- if switch not found + if s == penlight.tex.xTrue then -- if star, throw error + pl.tex.pkgerror('penlight', 'case: "'..c..'" not found in key-vals: "'..kv..'"') + sw = '' + else + sw = kvtbl['__'] or '' -- use __ as not found case + end + end + tex.sprint(sw) +end + + penlight.tbls = {} penlight.rec_tbl = '' penlight.rec_tbl_opts = {} + +function penlight.tbl(s) + return penlight.get_tbl_item(s) +end + function penlight.get_tbl_name(s) if s == '' then return penlight.rec_tbl @@ -1027,116 +1136,3 @@ if penlight.hasval(__PL_GLOBALS__) then end - - --- graveyard - - --_xTrue = penlight.tex._xTrue - --_xFalse = penlight.tex._xFalse - --_xNoValue = penlight.tex._xNoValue - -- - --prt = penlight.tex.prt - --prtn = penlight.tex.prtn - --wrt = penlight.tex.wrt - --wrtn = penlight.tex.wrtn - -- - --prtl = penlight.tex.prtl - --prtt = penlight.tex.prtt - -- - --help_wrt = penlight.tex.help_wrt - --prt_array2d = penlight.tex.prt_array2d - -- - --pkgwarn = penlight.tex.pkgwarn - --pkgerror = penlight.tex.pkgerror - -- - --defcmd = penlight.tex.defcmd - --prvcmd = penlight.tex.prvcmd - --newcmd = penlight.tex.newcmd - --renewcmd = penlight.tex.renewcmd - --deccmd = penlight.tex.deccmd - -- - --_NumBkts = penlight.tex._NumBkts - --opencmd = penlight.tex.opencmd - --reset_bkt_cnt = penlight.tex.reset_bkt_cnt - --add_bkt_cnt = penlight.tex.add_bkt_cnt - --close_bkt_cnt = penlight.tex.close_bkt_cnt - - --- graveyard - - --- luakeys parses individual keys as ipairs, this changes the list to a pure map ---function penlight.luakeystomap(t) --- local t_new = {} --- for k, v in pairs(t) do --- if type(k) == 'number' then --- t_new[v] = true --- else --- t_new[k] = v --- end --- end --- return t_new ---end ---if luakeys then -- if luakeys is already loaded --- function luakeys.parseN(s, ...) --- local t = luakeys.parse(s,...) --- t = penlight.luakeystomap(t) --- return t --- end ---end --- might not be needed - - - --local func = check_func(func) ---local function check_func(func) -- check if a function is a PE, if so, make it a function --- if type(func) ~= 'function' then --- return I(func) --- end --- return func ---end - --- -- -- -- -- -- -- --- -- -- -- functions below extend the array2d module - - ---function penlight.array2d.map_slice1(func, L, i1, i2) -- map a function to a slice of an array, can use PlcExpr --- i2 = i2 or i1 --- local len = #L --- i1 = check_index(i1, len) --- i2 = check_index(i2, len) --- func = check_func(func) --- for i in penlight.seq.range(i1,i2) do --- L[i] = func(L[i]) --- end --- return L ---end - - -- used this below when iter was not working.. - --i1, j1, i2, j2 = check_slice(M, i1, j1, i2, j2) - --for i in penlight.seq.range(i1,i2) do - -- for j in penlight.seq.range(j1,j2) do - --end - -- penlight may have fixed this ---local function check_index(ij, rc) -- converts array index to positive value if negative --- if type(ij) ~= 'number' then --- return 1 --- else --- if ij < 0 then --- ij = rc + ij + 1 --- elseif ij > rc then --- ij = rc --- elseif ij == 0 then --- ij = 1 --- end --- return ij --- end ---end ---local function check_slice(M, i1, j1, i2, j2) -- ensure a slice is valid; i.e. all positive numbers --- r, c = penlight.array2d.size(M) --- i1 = check_index(i1 or 1, r) --- i2 = check_index(i2 or r, r) --- j1 = check_index(j1 or 1, c) --- j2 = check_index(j2 or c, c) --- return i1, j1, i2, j2 ---end - diff --git a/macros/luatex/generic/penlightplus/penlightplus.pdf b/macros/luatex/generic/penlightplus/penlightplus.pdf Binary files differindex 2e37875101..bb9b8027ff 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.pdf +++ b/macros/luatex/generic/penlightplus/penlightplus.pdf diff --git a/macros/luatex/generic/penlightplus/penlightplus.sty b/macros/luatex/generic/penlightplus/penlightplus.sty index 3c411d227a..cc37b096b1 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.sty +++ b/macros/luatex/generic/penlightplus/penlightplus.sty @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2024-03-14 +% 2024-09-30 % Copyright (C) 2021-2024 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -22,12 +22,14 @@ % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE % OR OTHER DEALINGS IN THE SOFTWARE. -\ProvidesPackage{penlightplus}[2024-03-14] +\ProvidesPackage{penlightplus}[2024-09-30] \RequirePackage{luacode} \RequirePackage{luakeys} \RequirePackage[import]{penlight} \RequirePackage{etoolbox} +\RequirePackage{tokcycle} + \DeclareOption{globals}{\luadirect{__PL_GLOBALS__ = true}} \DeclareOption{pl}{\directlua{pl = penlight}} @@ -40,23 +42,37 @@ \global\newcommand{\writePDFmetadata}{\luadirect{penlight.tex.writePDFmetadata()}} -\NewDocumentCommand{\writePDFmetadatakv}{ s m }{ +\NewDocumentCommand{\writePDFmetadatakv}{ s O{f} m }{% +\MakeluastringCommands[f]{#2}% \IfBooleanTF{#1}{% if *, overwrite everything \luadirect{ - __PDFmetadata__ = penlight.luakeys.parse(\luastring{#2}) - penlight.tex.writePDFmetadata() + __PDFmetadata__ = penlight.tex.makePDFtablekv(\plluastringA{#3}) }}{ \luadirect{ __PDFmetadata__ = __PDFmetadata__ or {} - penlight.tablex.update(__PDFmetadata__, penlight.luakeys.parse(\luastring{#2})) - penlight.tex.writePDFmetadata() - }} + penlight.tablex.update(__PDFmetadata__, penlight.tex.makePDFtablekv(\plluastringA{#3})) + }}% + \writePDFmetadata{}% } \gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice \global\let\luastringF\luastring % fully expanded luastring + +\xtokcycleenvironment\luastringeenv + {\addcytoks{##1}} + {\processtoks{##1}} + {\addcytoks[1]{##1}} + {\addcytoks{##1}} + {} + {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}} + +\def\luastringE#1{\luastringeenv#1\endluastringeenv} +%\gdef\luastringE#1{\begin{luastringeenv#1\endluastringeenv} + + + % allow control over expansion of arguments to a latex function \NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults \luadirect{penlight.tex.aliasluastring(\luastring{#2},\luastring{#1})}% @@ -97,6 +113,18 @@ + + + +\NewDocumentCommand{\caseswitch}{s m +m}{\ignorespaces\luadirect{penlight.caseswitch(\luastring{#1},\luastring{#2},\luastringN{#3})}\unskip} +% argument 1 is star option, which throws an error if case is not found +% argument 2 is the case, fully expanded +% argument 3 is a luakeys table of options, not expanded + + + + + %%% tbls below \NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set blank @@ -134,6 +162,13 @@ table.insert(penlight.tbls[__tbl__], \luastring{#2}) }} + +\NewDocumentCommand{\tblappN}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) # todo option for string or number + __tbl__ = penlight.get_tbl_name(\luastring{#1}) + table.insert(penlight.tbls[__tbl__], \luastringN{#2}) +}} + + \NewDocumentCommand{\tblcon}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # __tbl__ = penlight.get_tbl_name(\luastring{#1}) for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do @@ -141,6 +176,14 @@ end }} + +\NewDocumentCommand{\tblconN}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # + __tbl__ = penlight.get_tbl_name(\luastring{#1}) + for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastringN{#2}), {naked_as_value=true})) do + table.insert(penlight.tbls[__tbl__], v) + end +}} + \NewDocumentCommand{\tbladd}{m m}{\luadirect{% add a kv pair to a table __tbl__, __key__ = penlight.get_tbl_index(\luastring{#1}, true) penlight.tbls[__tbl__][__key__] = \luastring{#2} @@ -167,6 +210,10 @@ penlight.set_tbl_item(\luastring{#1}, \luastring{#2}) }} +\NewDocumentCommand{\tblsetN}{m m}{\luadirect{% set item with {value} + penlight.set_tbl_item(\luastring{#1}, \luastringN{#2}) +}} + \NewDocumentCommand{\tbldef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2})}} @@ -199,11 +246,3 @@ penlight.tbls[__tbl__][\luastring{#2}] = \luastringN{#3} }} -\let\chgtbl\tblchg -\let\newtbl\tblnew -\let\gettbl\tblget -\let\settbl\tblset -\let\deftbl\tbldef -\let\gdeftbl\tblgdef -\let\iftbl\tblif -\let\iftblv\tblifv
\ No newline at end of file diff --git a/macros/luatex/generic/penlightplus/penlightplus.tex b/macros/luatex/generic/penlightplus/penlightplus.tex index 015dac98ef..bc719dcd9c 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.tex +++ b/macros/luatex/generic/penlightplus/penlightplus.tex @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2024-03-14 +% 2024-09-30 % Copyright (C) 2021-2024 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -59,18 +59,36 @@ \subtitle{Additions to the Penlight Lua Libraries} - \begin{document} % \maketitle -This package first loads the \cmd{[import]penlight} package.\\ +\section*{Package Options and Set-Up} + +This package first loads the \cmd{[import]penlight} package---see the documentation here \url{https://lunarmodules.github.io/Penlight/index.html}.\\ The \texttt{pl} option may be passed to this package to create an alias for \cmd{penlight}.\\ -\texttt{globals} option may be used to make several of the functions global (as discussed below). + +The following global Lua variables are defined: + +\cmd{__SKIP_TEX__} If using the \cmd{penlightplus} package with \cmd{texlua} (good for troubleshooting), set this global before loading \cmd{penlight}\\ +\cmd{__PL_GLOBALS__} If using this package with \cmd{texlua} and you want to set some functions as globals (described in next sections), set this variable to \cmd{true} before loading \cmd{penlight}\\ +\cmd{__PL_NO_HYPERREF__} a flag used to change the behaviour of some functions, depending on if you don't use the hyperref package\\ +\cmd{__PDFmetadata__} a table used to store PDF meta-data for pdfx package. + + +\subsubsection*{globals option} +If the package option \cmd{globals} is used, many additional globals are set for easier scripting. +\cmd{pl.hasval}, \cmd{pl.COMP}, \cmd{pl.utils.kpairs}, \cmd{pl.utils.npairs} become globals. +\cmd{pl.tablex} is aliased as \cmd{pl.tbx and tbx} (which also includes all native Lua table functions), and +\cmd{pl.array2d} is aliased as \cmd{pl.a2d and a2d}. Since this package uses the penlight \cmd{import} option, +all \cmd{stringx} functions are injected into the \cmd{string} meta-table and you can use them like so: \cmd{'first name':upfirst()}. + +If you want global \cmd{pl.tex} functions and variables, call \cmd{pl.make_tex_global()}.\\ + \subsection*{texlua usage} -If you want to use penlightplus.lua with the \texttt{texlua} interpreter +If you want to use \cmd{penlightplus.lua} with the \texttt{texlua} interpreter (no document is made, but useful for testing your Lua code), you can access it by setting \cmd{__SKIP_TEX__ = true} before loading. For example: \begin{verbatim} @@ -88,29 +106,12 @@ require'penlightplus' - -The following global Lua variables are defined: - -\cmd{__SKIP_TEX__} If using the \cmd{penlightplus} package with \cmd{texlua} (good for troubleshooting), set this global before loading \cmd{penlight}\\ -The gloals flags below are taken care of in the package options:\\ -\cmd{__PL_GLOBALS__} If using package with \cmd{texlua} and you don't want to set some globals (described in next sections), set this global before to \cmd{true} loading \cmd{penlight}\\ -\cmd{__PL_NO_HYPERREF__} a flag used to change the behaviour of a function, depending on if you don't use the hyperref package\\ -\cmd{__PDFmetadata__} a table used to store PDF meta-data - - -\subsubsection*{global extras} -If the package option \cmd{globals} is used, many additional globals are set for easier scripting. -\cmd{pl.hasval}, \cmd{pl.COMP}, \cmd{pl.utils.kpairs}, \cmd{pl.utils.npairs} become globals. -\cmd{pl.tablex} is aliased as \cmd{pl.tbx and tbx} (which also includes all native Lua table functions), and -\cmd{pl.array2d} is aliased as \cmd{pl.a2d and a2d}. - -If you want global \cmd{pl.tex} funcs and vars, call \cmd{pl.make_tex_global()}\\ - - -\subsubsection*{penlight additions} +\section*{penlight additions} Some functionality is added to penlight and Lua. +\subsection*{General Additions} + \llcmd{pl.hasval(x)} Python-like boolean testing\\ \llcmd{COMP'xyz'()} Python-like comprehensions:\\\url{https://lunarmodules.github.io/Penlight/libraries/pl.comprehension.html}\\ @@ -120,6 +121,16 @@ Some functionality is added to penlight and Lua. \llcmd{math.mod(n,d)}, \cmd{math.mod2(n)} math modulous\\ +\llcmd{pl.utils.}\cmd{filterfiles}\cmd{(dir,filt,rec)} Get files from dir and apply glob-like filters. Set rec to \cmd{true} to include sub directories\\ + + +\llcmd{pl.}\cmd{char(n)} return letter corresponding to 1=a, 2=b, etc.\\ +\llcmd{pl.}\cmd{Char(n)} return letter corresponding to 1=A, 2=B, etc.\\ + + + +\subsection*{string additions} + \llcmd{string.}\cmd{upfirst(s)} uppercase first letter\\ \llcmd{string.}\cmd{delspace(s)} delete all spaces\\ \llcmd{string.}\cmd{trimfl(s)}remove first and last chars\\ @@ -139,6 +150,7 @@ and \cmd{fmt} can be a table of formats (keys correspond to those in \cmd{t}), o is processed by luakeys.\\ \llcmd{string.}\cmd{parsekv(s, opts)} parse a string using \cmd{penlight.luakeys}. A string or table can be used for opts. +\subsection*{tablex additions} \llcmd{tablex.}\cmd{fmt(t, f)} format a table with table or key-value string f\\ \llcmd{tablex.}\cmd{strinds(t)} convert integer indexes to string indices (1 -> '1')\\ \llcmd{tablex.}\cmd{filterstr(t,e,case)} keep only values in table t that contain expression e, case insensitive by default.\\ @@ -146,15 +158,32 @@ is processed by luakeys.\\ \llcmd{tablex.}\cmd{listcontains(t,v)} checks if a value is in a array-style list \\ +\subsubsection*{seq additions} +A syntax to produce sequences or a 'train' of numbers is provided. This may be useful for including pages from a pdf, or selecting rows of a table with a concise syntax. +\cmd{seq.train(trn, len)} produces a pl.List according to the arguments (like choo-choo train)\\ +\cmd{seq.itrain(trn, len)} produces an iterator according to the arguments. +An example syntax for \cmd{trn} is \cmd{'i1, i2, r1:r2', etc.} where \cmd{i1} and \cmd{i2} are individual indexes/elements, separated by \cmd{,} and +\cmd{r1:r2} is a range (inclusive of end-point) denoted with a \cmd{:}. The range format follows python's numpy indexing, and +a 'stride' can be given by including a second colon like \cmd{::2 -> is 1,3,5,...}, or \cmd{2::3 -> 2,5,8,...}. +Negative numbers can be used to index relative to the length of the table, eg, \cmd{-1 -> len}, but +if length is not given, negative indexing cannot be used and a number after the first colon must be provided. +A missing left-number on the colon assumes \cmd{1}, and missing right number assumes \cmd{len}. A missing 'stride' (number after the optional second colon) assumes a value of 1. -\llcmd{pl.}\cmd{char(n)} return letter corresponding to 1=a, 2=b, etc.\\ -\llcmd{pl.}\cmd{Char(n)} return letter corresponding to 1=A, 2=B, etc.\\ +The default colon and comma separators for ranges and elements can be set with \cmd{seq.train_range_sep} and \cmd{seq.train_element_sep}, respectively. +\begin{LTXexample}[width=0.5\linewidth] +\begin{luacode*} + for i in + pl.seq.itrain('1, :, 6, 0::2, -3 ', + 5) do + tex.print(i..',') + end +\end{luacode*} +\end{LTXexample} -\llcmd{pl.utils.}\cmd{filterfiles}\cmd{(dir,filt,rec)} Get files from dir and apply glob-like filters. Set rec to \cmd{true} to include sub directories\\ -\subsubsection*{A \cmd{pl.tex.} module is added} +\subsection*{A \cmd{pl.tex.} module is added} \llcmd{add_bkt}\cmd{_cnt(n), }\cmd{close_bkt_cnt(n), reset_bkt_cnt} functions to keep track of adding curly brackets as strings. \cmd{add} will return \cmd{n} (default 1) \{'s and increment a counter. \cmd{close} will return \cmd{n} \}'s (default will close all brackets) and decrement.\\ \llcmd{_NumBkts} internal integer for tracking the number of brackets\\ \llcmd{opencmd(cs)} prints \cmd{\cs}\{ and adds to the bracket counters.\\ @@ -164,7 +193,7 @@ is processed by luakeys.\\ \llcmd{prt(x),prtn(x)} print without or with a newline at end. Tries to help with special characters or numbers printing.\\ \llcmd{prtl(l),prtt(t)} print a literal string, or table\\ \llcmd{wrt(x), wrtn(x)} write to log\\ -\llcmd{wrh}\cmd{(s1, s2)} pretty-print something to console. S2 is a flag to help you find., alias is \cmd{help_wrt}, also in \cmd{pl.wrth}\\ +\llcmd{wrth}\cmd{(s1, s2)} pretty-print something to console. S2 is a flag to help you find., alias is \cmd{help_wrt}, also in \cmd{pl.wrth}\\ \llcmd{prt_array2d(tt)} pretty print a 2d array\\ \\ \llcmd{pkgwarn}\cmd{(pkg, msg1, msg2)} throw a package warning\\ @@ -180,27 +209,42 @@ to a package warning saying \cmd{'cs' was declared and used in document, but nev is true, it will overwrite an existing command (using \cmd{defcmd}), otherwise, it will throw error like \cmd{newcmd}.\\ \llcmd{get_ref_info(l)}accesses the \cmd{\r@label} and returns a table\\ -\subsubsection*{Recording latex input} + + + +\subsection*{Recording LaTeX input as a lua variable} \cmd{penlight.tex.startrecording()} start recording input buffer without printing to latex\\ \cmd{penlight.tex.stoprecording()} stop recording input buffer\\ \cmd{penlight.tex.readbuf()} internal-use function that interprets the buffer. This will ignore an environment ending (eg. \cmd{end{envir}})\\\\ \cmd{penlight.tex.recordedbuf} the string variable where the recorded buffer is stored\\ +\section*{penlightplus LaTeX Macros} \subsection*{Macro helpers} \cmd{\MakeluastringCommands[def]{spec}} will let \cmd{\plluastring(A|B|C..)} be \cmd{\luastring(N|O|T|F)} -based on the letters that \cmd{spec} is set to (or \cmd{def} if nothing is provided) +based on the letters that \cmd{spec} is set to (or \cmd{def}(ault) if nothing is provided) This is useful if you want to write a command with flexibility on argument expansion. The user can specify \cmd{n}, \cmd{o}, \cmd{t}, and \cmd{f} (case insensitve) if they want -no, once, twice, or full expansion. For example, we can control the expansion of args 2 and 3 with arg 1: +none, once, twice, or full expansion. + +%\cmd{e} expansion expands every token in the argument only once. +%\cmd{\luastringE{m}}, expands each token once (note that \cmd{\luastringO} only expands the first token once) + + + +Variants of luastring are added:\\ +\cmd{\luastringF{m}} = \cmd{\luastring{m}} \\ +\cmd{\luastringT{m}}, expand the first token of m twice\\ + +For example, we can control the expansion of args 2 and 3 with arg 1: \begin{verbatim} \NewDocumentCommand{\splittocomma}{ O{nn} m m }{% - \MakeluastringCommands[nn]{#1}% - \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}% -} + \MakeluastringCommands[nn]{#1}% + \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}% + } \end{verbatim} % BELOW IS FOR TROUBLESHOOTING ABOVE @@ -222,7 +266,7 @@ no, once, twice, or full expansion. For example, we can control the expansion of %\luastringExpTest{ n o t f }{\NOTexp} -\subsection*{Lua boolean expressions for LaTeX conditionals} +\subsection*{Lua boolean expressions} \cmd{\ifluax{<Lua expr>}{<do if true>}[<do if false>]} and\\ \cmd{\ifluax{<Lua expr>}{<do if true>}[<do if false>]} for truthy (uses \cmd{penlight.hasval}) @@ -234,39 +278,68 @@ no, once, twice, or full expansion. For example, we can control the expansion of \ifluaxv{''}{true}[false]\\ \end{LTXexample} -\subsection*{Creating and using Lua tables in LaTeX} +\subsection*{Case-switch for Conditionals} + +\cmd{\caseswitch{case}{kev-val choices}} The starred version will throw an error if the case is not found. +Use \_\_ as a placeholder for a case that isn't matched. + +\begin{LTXexample}[width=0.3\linewidth] +\def\caseswitchexample{\caseswitch{\mycase}{dog=DOG, cat=CAT, __=INVALID}} +\def\mycase{dog} \caseswitchexample \\ +\def\mycase{human} \caseswitchexample +\end{LTXexample} +%\caseswitch*{\mycase}{dog=DOG, cat=CAT, __=INVALID} + + +\subsection*{Creating and using Lua tables in LaTeX - tbl interace} + \cmd{penlightplus} provides a Lua-table interface. Tables are stored in the \cmd{penlight.tbls} table. +You can access a table item within lua by using: +\cmd{penlight.tbl'i'}. %%% \cmd{\tblnew{t}} declares a new table with name \cmd{t}\\ \cmd{\tblchg{t}} changes the 'recent' table\\ +\\ \cmd{\tblfrkv{t}{key-val string}[luakeys opts]} new table from key-vals using \cmd{luakeys} \\ \cmd{\tblfrkvN{t}{key-val string}[luakeys opts]} does not expand key-val string \cmd{luakeys} \\ \cmd{\tblfrkvCD{t}{key-val string}[luakeys opts]} define tbl from key-val, check if any were not defined as defaults (see below), and then push all to definitions\\ +\\ \cmd{\tblkvundefcheck} will throw an error if you use define a table from key-values -and use a key that was not specified in the luakeys parse options via \cmd{opts.defaults} or \cmd{opts.defs}. +and use a key that was not specified in the luakeys parse options via \cmd{opts.defaults} or \cmd{opts.defs}.\\ +\\ \cmd{\tblfrcsv{t}{csv}} a shorthand \cmd{\tblfrkv{t}{csv}[naked_as_value=true,opts]}, a good way to convert a comma-separated list to an array\\ - \cmd{\tblfrcsvN{t}{csv}} same as above, but the csv is not expanded. + \cmd{\tblfrcsvN{t}{csv}} same as above, but the csv is not expanded.\\ +\\ \cmd{\tblset{i}{v}} sets a value of the table/index \cmd{i} to \cmd{v}\\ +\cmd{\tblsetN{i}{v}} same as above, but the value is not expanded.\\ +\\ \cmd{\tblget{i}} gets the value and \cmd{tex.sprint()}s it\\ +\\ \cmd{\tbladd{i}{v}} add a new value to a table using index method\\ \cmd{\tbladdN{i}{v}} above, but don't expand the value argument\\ +\\ \cmd{\tblcon{t}{csv}} concatenate an array-style csv\\ +\cmd{\tblconN{t}{csv}}\\ +\\ \cmd{\tblapp{t}{v}} append a value (integer-wise) to a table\\ +\cmd{\tblappN{t}{v}}\\ +\\ \cmd{\tbldef{i}{d}} pushes the value to macro \cmd{d}\\ \cmd{\tbldefall{t}{d}} define all item in table \cmd{t} (use recent if blank) with format \cmd{d<key>} where d is your prefix. If d is blank, keys will be defined as \cmd{\dtbl<t><k>} \cmd{\tblgdef{i}{d}} pushes the defined value to a global\\ \cmd{\tbldefxy{i}{d}} splits the value of item by spaces creates two definitions \cmd{\dx} and \cmd{\dy}. Useful for pasing tikz coordinates like \cmd{xy=0 5}\\ For definiting tables, if \cmd{d} is blank, commands are defined as \cmd{dtbl<t><k>}\\ +\\ \cmd{\iftbl{i}{tr}[fa]} runs code \cmd{ta} if the item is true else \cmd{fr}\\ -\cmd{\iftblv{i}{tr}[fa]} runs code \cmd{ta} if the item is truthy else \cmd{fr}\\ +\cmd{\iftblv{i}{tr}[fa]} runs code \cmd{ta} if the item is truthy (using \cmd{pl.hasval}) else \cmd{fr}\\ \cmd{\tblprt{t}} print the table in console -There are 3 ways to use the index (placeholder \cmd{{i}} above). +There are 3 ways to use the index (placeholder \cmd{{i}} above, note that this argument is fully expanded). \cmd{t.key} where \cmd{t} is the table name and \cmd{key} is a string key, \cmd{t/int} where \cmd{int} is an integer index (ie. uses \cmd{t[int]}, note that negative indexes are allowered where -1 is the last element), or simply use \cmd{ind} without the table name, where the assumed table is the last one that was created or changed to, (passing a number will used as an integer index). @@ -323,8 +396,6 @@ or simply use \cmd{ind} without the table name, where the assumed table is the l %\tblget{Bonjour} -Note: for this versions: all latex tbl commands are now prefixed with \cmd{tbl}, eg., \cmd{tblget}, \cmd{tblset}. -Old-style commands eg. \cmd{gettbl} will be kept as aliases for a few more releases then removed. \subsubsection*{A practical tbl example} @@ -359,6 +430,7 @@ C: \tblget{c} \end{LTXexample} + \subsection*{Splitting strings} Splitting text (or a cmd) into oxford comma format via: \cmd{\splittocomma[expansion level]{text}{text to split on}}: @@ -386,12 +458,66 @@ You can do a similar string split but to \cmd{\item} instead of commas with \cmd -\subsubsection*{PDF meta data (for pdfx package)} -\cmd{\writePDFmetadatakv*{m}} Take a key-value string (eg. \cmd{title=whatever, author=me}) and writes to the \cmd{jobname.xmpdata} file, to be used by pdfx. \cmd{*} will first clear the data\\ +\subsection*{PDF meta data (for pdfx package)} +\cmd{\writePDFmetadatakv*[x]{kv}} Take a key-value string (eg. \cmd{title=whatever, author=me}) and then writes to the \cmd{jobname.xmpdata} file, which is used by pdfx. \cmd{*} will first clear \cmd{__PDFmetadata__} which contains the metadata. The un-starred version updates that table. +You can control the expansion of the key-val argument with \cmd{[x]}, which is fully expanded by default. +Command sequences are ultimately stripped from the values, except for \cmd{\and} is converted to \cmd{\sep} for pdfx usage (\url{https://texdoc.org/serve/pdfx/0}). +\\ + \cmd{\writePDFmetadata} runs the lua function \cmd{penlight.tex.writePDFmetadata()}, which pushes the lua variable \cmd{__PDFmetadata__} (a table) to the xmpdata file. +This might be useful if you're updating \cmd{__PDFmetadata__} by some other means. + +\def\thekeywords{A\and B\and C} +\def\thekeywords{ABC} +\begin{LTXexample} +\writePDFmetadatakv{author=Some One} % +\writePDFmetadatakv*[n]{author=Kale \and You\xspace} % Overwrites above. Does not expant kv +\writePDFmetadatakv{date=2024-02-01} +\end{LTXexample} + +%\writePDFmetadatakv{datxe=2024-02-01} % would throw error, invalid key +%\writePDFmetadatakv[E]{keywords=\thekeywords} % + +%\luadirect{texio.write_nl(\luastringE{keywords=\thekeywords})} + + + + +%%%%% SAND BOX +% +%\xtokcycleenvironment\luastringAenv +% {\addcytoks{##1}} +% {\processtoks{##1}} +% {\addcytoks[1]{##1}} +% {\addcytoks{##1}} +% {} +% {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}} +% +%\def\luastringA#1{\luastringAenv#1\endluastringAenv} +%\def\zzz{Hi Mom} +%\NewDocumentCommand{\testcommand}{m}{% +% \luastringA{#1} % this works as requested :) +%% \luadirect{texio.write_nl(\luastringA{#1}..' <<<')} +% } +% +%\luastringA{Hmmm. \zzz.} +%\testcommand{Hmmm. \zzz.} + + + + + + + + +% todo why isnt this working??? + + + +% %\pyth{} % erro @@ -421,25 +547,27 @@ which pushes the lua variable \cmd{__PDFmetadata__} (a table) to the xmpdata fil % % \THINg[color=blue,size=tiny]{Kale} % -\begin{luacode*} -function prttol() - local dec = penlight.tbls.tol[4] or 1 - penlight.wrth(dec,'??') - penlight.tbls.tol[3] = penlight.tbls.tol[3] or 3 - penlight.tbls.tol[4] = penlight.tbls.tol[1]*(1.0-penlight.tbls.tol[3]/100.0) + 0.0 - penlight.tbls.tol[5] = penlight.tbls.tol[1]*(1.0+penlight.tbls.tol[3]/100.0) + 0.0 - --penlight.tbls.tol['k'] = 'fuckboi' - --ttt = pl.tbx.fmt(penlight.tbls.tol, '.3f') - penlight.wrth(('$1\\$2 (\\pmpct{$3} tolerance, $4\\ndash$5\\$2)'):fmt(penlight.tbls.tol, '4=.'..dec..'f, 5=.'..dec..'f'), 'XYZ') -end -\end{luacode*} -\NewDocumentCommand{\prttol}{ m }{\tblfrcsv{tol}{#1}\luadirect{prttol()}}% {50.0,kV,3,P} % 50\us (\pmpct{20} tolerance, 40=--60\us), P is optional and precision of the range (number of decimals) - -\prttol{50,kV,3} -\begin{luacode*} - pl.wrth(pl.filterfiles('.',true,'.*%.tex'), 'FF') -\end{luacode*} +% +%\begin{luacode*} +%function prttol() +% local dec = penlight.tbls.tol[4] or 1 +% penlight.wrth(dec,'??') +% penlight.tbls.tol[3] = penlight.tbls.tol[3] or 3 +% penlight.tbls.tol[4] = penlight.tbls.tol[1]*(1.0-penlight.tbls.tol[3]/100.0) + 0.0 +% penlight.tbls.tol[5] = penlight.tbls.tol[1]*(1.0+penlight.tbls.tol[3]/100.0) + 0.0 +% --penlight.tbls.tol['k'] = 'fuckboi' +% --ttt = pl.tbx.fmt(penlight.tbls.tol, '.3f') +% penlight.wrth(('$1\\$2 (\\pmpct{$3} tolerance, $4\\ndash$5\\$2)'):fmt(penlight.tbls.tol, '4=.'..dec..'f, 5=.'..dec..'f'), 'XYZ') +%end +%\end{luacode*} +%\NewDocumentCommand{\prttol}{ m }{\tblfrcsv{tol}{#1}\luadirect{prttol()}}% {50.0,kV,3,P} % 50\us (\pmpct{20} tolerance, 40=--60\us), P is optional and precision of the range (number of decimals) +% +%\prttol{50,kV,3} +% +%\begin{luacode*} +% pl.wrth(pl.filterfiles('.',true,'.*%.tex'), 'FF') +%\end{luacode*} \end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/bezierplot/README b/macros/luatex/latex/bezierplot/README index c472443d7a..92d669a9b6 100644 --- a/macros/luatex/latex/bezierplot/README +++ b/macros/luatex/latex/bezierplot/README @@ -8,7 +8,7 @@ points such as extreme points and inflection points and reduces the number of used points. VERSION: -1.5 2024-03-21 +1.6 2024-11-02 LICENSE: The package and the program are distributed on CTAN under the terms of diff --git a/macros/luatex/latex/bezierplot/bezierplot-doc.pdf b/macros/luatex/latex/bezierplot/bezierplot-doc.pdf Binary files differindex 7ebb1dbcdd..5beb4d7196 100644 --- a/macros/luatex/latex/bezierplot/bezierplot-doc.pdf +++ b/macros/luatex/latex/bezierplot/bezierplot-doc.pdf diff --git a/macros/luatex/latex/bezierplot/bezierplot-doc.tex b/macros/luatex/latex/bezierplot/bezierplot-doc.tex index a1239b6e57..b23f919cca 100644 --- a/macros/luatex/latex/bezierplot/bezierplot-doc.tex +++ b/macros/luatex/latex/bezierplot/bezierplot-doc.tex @@ -134,18 +134,6 @@ will set $0\leq x\leq 1$ and leave the default $-5\leq y\leq 5$. The variables \ \begin{verbatim} lua bezierplot.lua "sin(x)" -pi pi \end{verbatim} -You may use \verb|huge| for $\infty$: -\begin{verbatim} -lua bezierplot "1/x" 0 1 0 huge -\end{verbatim} -As \verb|huge| is very huge and \verb|bezierplot| uses recursive calls for nontrivial functions and non--fixed samples, this can last very long: -\begin{verbatim} -lua bezierplot "1/x" -5 5 -huge huge -\end{verbatim} -But if you set fixed samples, it will be fast again (as this does not use recursive calls): -\begin{verbatim} -lua bezierplot "1/x" -5 5 -huge huge 100 -\end{verbatim} \subsection{Notation Of Functions} The function term given to \verb|bezierplot| must contain at most one variable: $x$. E.g. \verb|"2.3*(x-1)^2-3"|. You must not omit \verb|*| operators: \begin{center} @@ -164,15 +152,20 @@ The following functions and constants are possible: \verb|atan| & $\tan^{-1}$ inverse function of tangent in radians\\ \verb|cbrt| & cube root $\sqrt[3]{\quad}$ that works for negative numbers, too\\ \verb|cos| & cosine for angles in radians\\ + \verb|cosh| & hyperbolic cosine\\ + \verb|deg| & converts from radians to degrees\\ \verb|exp| & the exponential function $e^{(\;)}$\\ \verb|huge| & the numerical $\infty$\\ \verb|e| & the euler constant $e=\mathrm{exp}(1)$\\ \verb|log| & the natural logarithm $\mathrm{log}_e(\;)$\\ \verb|pi| & Archimedes’ constant $\pi\approx 3.14$\\ + \verb|rad| & converts from degrees to radians\\ \verb|sgn| & sign function\\ \verb|sin| & sine for angles in radians\\ + \verb|sinh| & hyperbolic sine\\ \verb|sqrt| & square root $\sqrt{\quad}$\\ - \verb|tan| & tangent for angles in radians + \verb|tan| & tangent for angles in radians\\ + \verb|tanh| & hyperbolic tangent \end{tabular} \end{center} % diff --git a/macros/luatex/latex/bezierplot/bezierplot.lua b/macros/luatex/latex/bezierplot/bezierplot.lua index d023923d45..d8d1844140 100755..100644 --- a/macros/luatex/latex/bezierplot/bezierplot.lua +++ b/macros/luatex/latex/bezierplot/bezierplot.lua @@ -1,19 +1,24 @@ #!/usr/bin/env lua -- Linus Romer, published 2018 under LPPL Version 1.3c --- version 1.5 2024-03-31 +-- version 1.6 2024-11-02 abs = math.abs acos = math.acos asin = math.asin atan = math.atan cos = math.cos +cosh = math.cosh +deg = math.deg exp = math.exp e = math.exp(1) +huge = math.huge log = math.log pi = math.pi +rad = math.rad sin = math.sin +sinh = math.sinh sqrt = math.sqrt tan = math.tan -huge = math.huge +tanh = math.tanh -- just a helper for debugging: local function printdifftable(t) @@ -54,8 +59,8 @@ end local function round(num, decimals) local result = tonumber(string.format("%." .. (decimals or 0) .. "f", num)) - if abs(result) == 0 then - return 0 + if math.floor(result) == result then + return math.floor(result) else return result end @@ -275,7 +280,7 @@ local function do_parameters_fit(a,b,c,d,funcstring,funcgraph,maxerror,isinverse return true end --- f(x)=a*x^3+b*x+c +-- f(x)=a*x^3+b*x^2+c*x +d local function parameters_cubic(xp,yp,xq,yq,xr,yr,xs,ys) return (((xq-xp)*xr^2+(xp^2-xq^2)*xr+xp*xq^2-xp^2*xq)*ys+((xp-xq) *xs^2+(xq^2-xp^2)*xs-xp*xq^2+xp^2*xq)*yr+((xr-xp)*xs^2+(xp^2-xr^2) @@ -437,7 +442,7 @@ end -- and try to approximate it with a cubic bezier curve -- (round to rndx and rndy when printing) -- if maxerror <= 0, the function will not be recursive anymore -local function graphtobezierapprox(f,g,starti,endi,maxerror) +local function graphtobezierapprox(f,g,starti,endi,maxerror,recursiondepth) local px = g[starti][1] local py = g[starti][2] local dp = g[starti][3] @@ -496,7 +501,7 @@ local function graphtobezierapprox(f,g,starti,endi,maxerror) end end end - if maxerror > 0 then + if maxerror > 0 and recursiondepth > 0 then -- check if it is close enough: (recycling err, xa, ya) err = 0 for t = .1, .9, .1 do @@ -526,8 +531,8 @@ local function graphtobezierapprox(f,g,starti,endi,maxerror) interindex = i end end - local left = graphtobezierapprox(f,g,starti,interindex,maxerror) - local right = graphtobezierapprox(f,g,interindex,endi,maxerror) + local left = graphtobezierapprox(f,g,starti,interindex,maxerror,recursiondepth-1) + local right = graphtobezierapprox(f,g,interindex,endi,maxerror,recursiondepth-1) for i=1, #right do --now append the right to the left: left[#left+1] = right[i] end @@ -803,7 +808,12 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s else ---------- generic case (no special function) ---------------- if arbitrary_samples then - -- go through the connected parts + -- go through the connected parts... + -- due to numerical errors we have to use a maximal + -- recursion depth, which is hard wired here + -- (a small number should suffice since there are + -- no extrema nor inflection points inbetween) + local maxrecursiondepth = 2 for part = 1, #graphs do local dg = diffgraph(f,graphs[part],xstep) --printdifftable(dg) -- for debugging @@ -812,9 +822,9 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s for k = 2, #dg do if dg[k][5] or dg[k][6] then -- extrema and inflection points local tobeadded = graphtobezierapprox( - f,dg,startindex,k,10*yerror) + f,dg,startindex,k,10*yerror,maxrecursiondepth) -- tobeadded may contain a multiple of 6 entries - -- e.g. {1,2,3,4,5,6,7,8,9,10,11,12} + -- e.g. {1,2,3,4,5,6,7,8,9,10,11,12} for i = 1, math.floor(#tobeadded/6) do bezierpoints[#bezierpoints+1] = {} for j = 1, 6 do @@ -826,7 +836,7 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s end if startindex ~= #dg then -- if no special points inbetween local tobeadded = graphtobezierapprox(f,dg, - startindex,#dg,10*yerror) + startindex,#dg,10*yerror,maxrecursiondepth) -- tobeadded may contain a multiple of 6 entries -- e.g. {1,2,3,4,5,6,7,8,9,10,11,12} for i = 1, math.floor(#tobeadded/6) do diff --git a/macros/luatex/latex/bezierplot/bezierplot.sty b/macros/luatex/latex/bezierplot/bezierplot.sty index c3d0963de2..86eb49e524 100644 --- a/macros/luatex/latex/bezierplot/bezierplot.sty +++ b/macros/luatex/latex/bezierplot/bezierplot.sty @@ -1,7 +1,7 @@ % Linus Romer, published 2018 under LPPL Version 1.3c -% version 1.5 2024-03-31 +% version 1.6 2024-11-02 \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bezierplot}[2024/03/21 bezierplot] +\ProvidesPackage{bezierplot}[2024/11/02 bezierplot] \RequirePackage{xparse} \RequirePackage{iftex} \ifLuaTeX diff --git a/macros/luatex/latex/domaincoloring/Changes b/macros/luatex/latex/domaincoloring/Changes new file mode 100644 index 0000000000..0f357dc758 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/Changes @@ -0,0 +1,11 @@ +0.05 2024-09-02 - added Rmax for circled images + - modified bgcolor option +0.04 2024-08-29 - bugfix for phi (was [0,2pi], bust must be [0,1]) +0.03 2024-08-26 - use \jobname for temporary file + - added option force for not creating already existing pdf's + - allow different x|y resolutions + - updated documentation +0.02 2024-08-22 - edit option bgcolor + - reduced header for the intermediate eps + - renamed complex-numbers.lua +0.01 2024-08-18 - first CTAN version diff --git a/macros/luatex/latex/domaincoloring/README.md b/macros/luatex/latex/domaincoloring/README.md new file mode 100644 index 0000000000..9cff64e2f1 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/README.md @@ -0,0 +1,12 @@ +# README # +Package domaincoloring creates a colored +representation of the domain of complex function. + +The package needs lualatex and does not work with pdflatex or xelatex! + +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt + +hvoss@tug.org
\ No newline at end of file diff --git a/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.bib b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.bib new file mode 100644 index 0000000000..5529a63a48 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.bib @@ -0,0 +1,38 @@ +@online{wikipedia, + author = {{\WikipediA}}, + sortlabel = {Wikipedia}, + sortname = {Wikipedia}, + title = {DOmain Coloring}, + date = {2024-08-18}, + urldate = {2024-08-18}, + url = {https://en.wikipedia.org/wiki/Domain_coloring}, +} + +@online{features, + author = {{vismath}}, + title = {Thema Domain Coloring}, + date = {2024-08-18}, + urldate = {2024-08-18}, + url = {https://www.vismath.eu/de/blog/domain-coloring/}, +} + + +@online{fu, + author = {Konstantin Poelke and Konrad Polthier}, + title = {Domain Coloring of Complex Functions}, + url = {https://www.mi.fu-berlin.de/en/math/groups/ag-geom/publications/db/ieee_article_old_low_v3_1.pdf}, + urldate = {2024-08-18}, + date = {2024-08-18}, +} + +@online{dm, + author = {Juan Carlos Ponce Campuzano}, + title = {Dynamic Mathematics}, + subtitle = {Domain Coloring -- Visualizing Complex Functions}, + date = {2018-07-15}, + urldate = {2024-08-23}, + url ={https://www.dynamicmath.xyz/domain-coloring/}, +} + + +
\ No newline at end of file diff --git a/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.pdf b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.pdf Binary files differnew file mode 100644 index 0000000000..4a59a83dee --- /dev/null +++ b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.pdf diff --git a/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.tex b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.tex new file mode 100644 index 0000000000..bbfbfb0abb --- /dev/null +++ b/macros/luatex/latex/domaincoloring/doc/domaincoloring-doc.tex @@ -0,0 +1,378 @@ +%% $Id: domaincoloring-doc.tex 979 2024-09-02 16:07:29Z herbert $ +% +\listfiles + +\def\header{Complex Functions} + +\DocumentMetadata{} +\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, + headinclude=false,footinclude=false,oneside]{pst-doc} +\listfiles + +\usepackage{biblatex} +\addbibresource{\jobname.bib} + +\usepackage{booktabs} % for examples +\usepackage{xltabular} % for examples +\usepackage{enumitem} +\setlist{noitemsep,nosep} + +\usepackage{makeidx} +\makeindex + +\usepackage{domaincoloring} +\let\DColFV\fileversion +\setDColkeys{force=false}% only for this documentation relevant + +\usepackage{hvlogos} + +\usepackage{listings} +\lstset{columns=fixed,basicstyle=\ttfamily\small} + +\def\bgImage{\hspace{-2cm}*\includegraphics[width=14cm]{titleImg.png}} + +\title{Domain Coloring of complex functions\\version \DColFV} +\author{Herbert Voß} +\begin{document} +\settitle +\tableofcontents + + +\section{Introduction} + +This package works only with \texttt{lualatex} and the option \Loption{shell-escape}! +It creates an intermediate external EPS-file, which is automatically converted with +\LFile{epstopdf}. The pdf is in the end imported by the macro \Lcs{includegraphics}. + +\subsection{Loading the package} +The package \texttt{domaincoloring} creates acolored interpretation of the +domain of a complex function. The package itself has no options and should be loaded as +usual: + +\begin{verbatim} +\usepackage{domaincoloring} +\end{verbatim} + +The package needs the following Lua modules: + +\begin{itemize} +\item \texttt{domaincoloring.lua} the main module +\item \texttt{domaincoloring-complex-numbers.lua} for complex math operations +\item \texttt{domaincoloring-functions.lua} for predefined complex functions +\end{itemize} + +The function module has to be managed by the user himself, if needed. + + + +\subsection{Using the macro} + +There is only one macro which does the external call of the Lua program \verb|domaincoloring.lua|. +This program creates the image which is then included into the document. The \LaTeX-run needs +the \verb|--shell-escape| option to allow the external run of the program to convert the created +eps-file into a pdf file, which is then included by the command \Lcs{includegraphics} into +the document. + + +\begin{verbatim} +\DomainColoring[options]{complex function in Lua notation} +\end{verbatim} + +Every math function has to be preceeded by \texttt{cmath} if it has a complex argument. +The following complex functions are supported: + +\begin{verbatim} +complex(re,im) creates a complex number from real and imaginary components. +re(z) real part of z +im(z) imaginary part of z +arg(z) argument of z +abs(z) absolute value of z +sqrt(z) z^0.5 +pow(x,y) x^y +exp(z) e^z +ln(z) e^? = z +log(b,z) ln(z)/ln(b) +sin(z) +cos(z) +tan(z) +sinh(z) +cosh(z) +tanh(z) +asin(z) +acos(z) +atan(z) +atan2(y,x) +asinh(z) +acosh(z) +atanh(z) +polar(z) returns r,phi = cmath.abs(z),cmath.arg(z) +rect(r,phi) returns a complex number from polar = r*e^(i*phi) +diff(z) returns re(z)^2-im(z)^2 +zeta(z[,accuracy=1e4]) riemann zeta function +lintegrate(f,H,[L=0,n=sensible for H]) +cx(string) creates a complex number from a string (e.g. "1.1-i" -> 1.1+-1i) +cx(re,im) same as complex(re,im) +\end{verbatim} + +The default trigonometrical functions can be used without a preceeding \verb|math|: + +\begin{verbatim} +e=math.exp(1) +pi=math.pi +abs=math.abs +exp=math.exp +log=math.log +cos=math.cos +sin=math.sin +cosh=math.cosh +sinh=math.sinh +sqrt=math.sqrt +atan2=math.atan2 +\end{verbatim} + + + +\subsection{Options} + +\noindent +\begin{xltabular}{\linewidth}{@{} >{\ttfamily}l l X @{}}\\\toprule +\emph{name} & \emph{value} &\emph{meaning}\\\midrule +\Lkeyword{domain} & {-2,2,-2,2} & the (re,im)-coordinates for the complex system\\ +\Lkeyword{resolution} & 500 & the number of steps for the re,im interval. One value will be for +both axes. Two values like \verb|{500,600}| for real axis and imaginary axis,\\ +\Lkeyword{Rmax} & 0 & forces a circle output if $\text{Rmax}>0$ \\ +\Lkeyword{funcName} & \texttt{\{\}} & corresponding to external file\\ +\Lkeyword{grfOptions} &scale=0.5 & optional arguments for \Lcs{includegraphics}\\ +\Lkeyword{hsvrgb} & {phi+pi,1,r} & for the conversion into rgb\\ +\Lkeyword{bgcolor} & \texttt{\{0,0,0\}} & change color to value as background\\ +\Lkeyword{invers} & false & inverted colors with $color=|color-255|$\\ +\Lkeyword{force} & true & With \texttt{force=false} an existing pdf file will be used +without calculating a new one.\\ +\Lkeyword{grid} & false & draw a grid with one dashed subgrid at 0.5\\ +\bottomrule +\end{xltabular} + + + + +\section{Examples} + +\subsection{The default with function $f(z)=z$ and $f(z)=1/z$} +\begin{lstlisting} +\DomainColoring{z} % default filename \jobname-tmp0.png +\end{lstlisting} + +\noindent +\DomainColoring{z}%\qquad + + + +\subsection{Defining domain, color mode, resolution and Rmax} + +\begin{align} + f(z) &= \cos(z)/\sin(z^4-1) +\end{align} + +in Lua-notation: \verb|cmath.cos(z)/cmath.sin(z^4-1)|. All complex functions +must be preceeded by \texttt{cmath.}. For real functions the prefix \texttt{math.} +can be omitted. + + +The backgroundcolor can be set with \Lkeyword{bgcolor}\texttt{=\{R,G,B\}} (values between 0 and 255). +This color will replace the default backgroundcolor \texttt{\{0,0,0\}}. With a negative value +for R, eg. -10, it replaces all colors which have a sum of $R+G+B <10$ with the color defined by +the value for G, eg. 255. A setting of \Lkeyword{bgcolor}\texttt{\{=-8,255,255\}} is the same as +\Lkeyword{bgcolor}\texttt{\{=-8,255,0\}}, becaus the last value is not used. A given color +\texttt{\{=3,3,1\}} will be replaced by \texttt{\{=255,255,255\}}, because $3+3+1<8$ and a color +\texttt{\{=6,2,3\}} will be unchanged, it is greater than 8. + + +\begin{lstlisting} +\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)} +\hfill +\frame{\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,bgcolor={-8,255,255}, + hsvrgb={phi,1,r},grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)}} +\hfill +\frame{\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,invers, + hsvrgb={phi,1,r}, grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)}} +\end{lstlisting} + +\noindent +\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)} +\hfill +\frame{\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,bgcolor={-8,255,255},hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)}} +\hfill +\frame{\DomainColoring[domain={-2.5,2.5,-2.5,2.5},resolution=500,invers,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)}} + + + + + + + +The optional argument \Lkeyword{Rmax} allows to crop everything around the circle with radius +\Lkeyword{Rmax}: + +\begin{lstlisting} +\DomainColoring[domain={-1,1,-1,1},resolution=500,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}, Rmax=1, bgcolor={1,1,1}]{cmath.cos(z)/cmath.sin(z^4-1)} +\hfill +\frame{\DomainColoring[domain={-1,1,-1,1},resolution=500,bgcolor={-8,255,1},hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth},Rmax=1]{cmath.cos(z)/cmath.sin(z^4-1)}} +\hfill +\frame{\DomainColoring[domain={-1,1,-1,1},resolution=500,invers=true,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth},Rmax=1]{cmath.cos(z)/cmath.sin(z^4-1)}} +\end{lstlisting} + +\DomainColoring[domain={-1,1,-1,1},resolution=500,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}, Rmax=1]{cmath.cos(z)/cmath.sin(z^4-1)} +\hfill +\frame{\DomainColoring[domain={-1,1,-1,1},resolution=500,bgcolor={-8,255,1},hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth},Rmax=1]{cmath.cos(z)/cmath.sin(z^4-1)}} +\hfill +\frame{\DomainColoring[domain={-1,1,-1,1},resolution=500,Rmax=1,invers,hsvrgb={phi,1,r}, +grfOptions={width=0.32\linewidth}]{cmath.cos(z)/cmath.sin(z^4-1)}} + + +\subsection{Option for \Lcs{includegraphics}} +With \Lkeyword{grfOptions} one can define optional arguments for \Lcs{includegraphics}: + +\begin{lstlisting} +\DomainColoring[grfOptions={width=0.49\linewidth}]{cmath.sin(z)}\hfill +\hfill +\DomainColoring[grfOptions={width=0.49\linewidth}]{cmath.sin(0.9*z)*cmath.sin(z)} +\end{lstlisting} + +\noindent +\DomainColoring[grfOptions={width=0.49\linewidth}]{cmath.sin(z)} +\hfill +\DomainColoring[grfOptions={width=0.49\linewidth}]{cmath.sin(0.9*z)*cmath.sin(z)} + + +\subsection{Higher resolution} + +The resolution is more or less the number of pixels for the given domain. +It is possible to have different values +for the two coordinates. Is only one value for \Lkeyword{resolution} given, then it is +for both axes. + + +\begin{lstlisting} +\DomainColoring[resolution=1000,grfOptions={width=0.49\linewidth}]{z^3-1} +\hfill +\DomainColoring[resolution=1000, + grfOptions={width=0.49\linewidth}]{(z+1)^2*(z-1)/((z+i)*(z-i)^2)} +\end{lstlisting} + +\noindent +\DomainColoring[resolution=1000,grfOptions={width=0.49\linewidth}]{z^3-1} +\hfill +\DomainColoring[resolution=1000, + grfOptions={width=0.49\linewidth}]{cmath.sin(z)*cmath.cos(z)} + + +\subsection{hsv to rgb conversion} + +The color model (Wikipedia): + +\begin{center} +\includegraphics[width=0.5\linewidth]{hsv} + +\url{http://en.wikipedia.org/wiki/File:HSV_color_solid_cylinder_alpha_lowgamma.png} +\end{center} + + +The complex number $z=x+iy$ is converted into its trogonometrical representation $x=r\cdot \cos\phi$ +and $y=r\cdot \sin\phi$ with $r=\sqrt{x^2+y^2}$. The values $r$ and $\phi$ are now taken as values +for the hsv color model with a constant second value for saturation. $\phi$ is used +for hue. For example: \verb|hsvrgb=phi,1,r|, which gives + +\begin{lstlisting} +\DomainColoring[resolution=1000,grfOptions={width=0.49\linewidth},domain={-2,2,-2,2}, + funcName=f10,hsvrgb={phi,1,r}]{} +\hfill +\DomainColoring[resolution=1000,hsvrgb={phi,1,r^2/(1+r^2)},Rmax=2,domain={-2,2,-2,2}, + grfOptions={width=0.49\linewidth}]{cmath.sin(z)*cmath.sin(0.99*z)} +\end{lstlisting} + +\noindent +\DomainColoring[resolution=1000,grfOptions={width=0.49\linewidth},domain={-2,2,-2,2}, + funcName=f10,hsvrgb={phi,1,r}]{} % the default +\hfill +\DomainColoring[resolution=1000,hsvrgb={phi,1,r^2/(1+r^2)},Rmax=2,domain={-2,2,-2,2}, + grfOptions={width=0.49\linewidth}]{cmath.sin(z)*cmath.sin(0.99*z)} + +%For $r$ and $\phi$ we have to use $r$ and $phi$. +The optional argument \Lkeyword{hsvrgb} must define three values which can use the arguments +phi and r in any mathematical combination. It must only be compatible to the Lua math conventions, +e.g. \texttt{hsvrgb=\{phi+2,0.5,2/r\}} + +\begin{lstlisting} +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={0.5,r/5,5-r},funcName=f16]{} +\hfill +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={0.5,5-r,5/r},funcName=f16]{} +\hfill +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={phi,r/5,5-r},funcName=f16]{} +\end{lstlisting} + +\noindent +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={0.5,r/5,5-r},funcName=f16]{} +\hfill +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={0.5,5-r,5/r},funcName=f16]{} +\hfill +\DomainColoring[resolution={1000,1000}, + domain={-5,5,-5,5}, grfOptions={width=0.32\linewidth}, + hsvrgb={phi,r/5,5-r},funcName=f16]{} + + + +\subsection{External function definition} +The already existing file \LFile{domaincoloring-functions.lua} collects sone +definitions of complex functions $f(z)$, which can be used from inside \LaTeX\ +with the optional argument \Lkeyword{funcName}\texttt{<Lua function name>}. +In this case the mandatory argument +of \Lcs{DomainColoring} has no meaning and can be empty. + +\begin{lstlisting} +\DomainColoring[domain={-1.5,1.5,-1.5,1.5},resolution={1001,1001},hsvrgb={phi,1,1/r}, + grfOptions={width=0.49\linewidth},funcName=f12,bgcolor={1,1,1}]{} +\hfill +\DomainColoring[domain={-2.5,1.5,-2,2},resolution={1001,1001},hsvrgb={phi,1,1/r}, + grfOptions={width=0.49\linewidth},funcName=f13,bgcolor={1,1,1}]{} +\end{lstlisting} + + +\noindent +\DomainColoring[domain={-1.5,1.5,-1.5,1.5},resolution={1001,1001},hsvrgb={phi,1,1/r}, + grfOptions={width=0.49\linewidth},funcName=f12,bgcolor={1,1,1}]{} +\hfill +\DomainColoring[domain={-2.5,1.5,-2,2},resolution={1001,1001},hsvrgb={phi,1,1/r}, + grfOptions={width=0.49\linewidth},funcName=f13,bgcolor={1,1,1}]{} + + + +The contents of the function file of the current version of \LPack{domaincoloring} is:: + +\lstinputlisting[language={[5.3]Lua},basicstyle=\small\ttfamily]{domaincoloring-functions.lua} + + + +\nocite{*} +\printbibliography + +\printindex +\end{document} diff --git a/macros/luatex/latex/domaincoloring/doc/hsv.png b/macros/luatex/latex/domaincoloring/doc/hsv.png Binary files differnew file mode 100644 index 0000000000..4595b284ab --- /dev/null +++ b/macros/luatex/latex/domaincoloring/doc/hsv.png diff --git a/macros/luatex/latex/domaincoloring/doc/titleImg.png b/macros/luatex/latex/domaincoloring/doc/titleImg.png Binary files differnew file mode 100644 index 0000000000..bf61e6f0d2 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/doc/titleImg.png diff --git a/macros/luatex/latex/domaincoloring/latex/domaincoloring.sty b/macros/luatex/latex/domaincoloring/latex/domaincoloring.sty new file mode 100644 index 0000000000..253edbc5fb --- /dev/null +++ b/macros/luatex/latex/domaincoloring/latex/domaincoloring.sty @@ -0,0 +1,107 @@ +%% $Id: domaincoloring.sty 979 2024-09-02 16:07:29Z herbert $ +%% This is file `domaincoloring.sty', +%% +%% Copyright (C) 2024- Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt + +\NeedsTeXFormat{LaTeX2e} + +\RequirePackage{xkeyval} +\RequirePackage{graphicx} +\RequirePackage{shellesc} + +\def\fileversion{0.05} +\def\filedate{2024/09/02} +\message{`DCol' v\fileversion, \filedate} +\ProvidesPackage{domaincoloring} + [\filedate\ \fileversion\ package for domain coloring of complex functions] + +\ifnum\ShellEscapeStatus < 1 + \PackageError{shellesc}{ShellEscape not enabled! Use --shell-escape}% +\fi + +\define@key{DCol}{domain}{\def\@domaincoloring@domain{#1}} +\define@key{DCol}{resolution}{\@domaincoloring@res@i#1,\@nil} +\def\@domaincoloring@res@i#1,#2\@nil{% + \ifx\relax#2\relax % only one value + \def\@domaincoloring@res{#1,#1}% + \else + \def\@domaincoloring@res{#1,#2}% + \fi} +\define@key{DCol}{Rmax}{\def\@domaincoloring@Rmax{#1}} +\define@key{DCol}{bgcolor}{\def\@domaincoloring@bgcolor{#1}} +\define@key{DCol}{hsvrgb}{\def\@domaincoloring@hsvrgb{#1}} +\define@key{DCol}{funcName}{\def\@domaincoloring@funcName{#1}} +\define@key{DCol}{grfOptions}{\def\@domaincoloring@grf{#1}} +\define@boolkey{DCol}[DCol@]{invers}[true]{} +\define@boolkey{DCol}[DCol@]{force}[true]{} +\define@boolkey{DCol}[DCol@]{grid}[true]{} + +\newcounter{DCol@imageCTR} +\setcounter{DCol@imageCTR}{0} +\def\@domaincoloring@filename{\jobname-tmp\theDCol@imageCTR} + + +\def\setDColkeys#1{\edef\x{\noexpand\setkeys{DCol}{#1}}\x} + +\setDColkeys{ + funcName={}, % corresponding to external file + hsvrgb={phi,1,1}, % given (r,phi) of the complex value +% filename=\jobname-tmp, % the external image filename + resolution=500, % pixel per (x|y) interval + domain={-2,2,-2,2}, % x|y domain + Rmax=0, % max value vor |z|. 0 is same as inactive + bgcolor={0,0,0}, % R+G+B value, changes only 1,1,1 -> 255,255,255 + invers=false, % 0 or 1 vor inverted colors + grfOptions={scale=0.5}, % LaTeX options for the included image + force=true, % only valid for the documentation + grid=false, % draw a grid into the image +}% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\DomainColoring{\@ifnextchar[\DomainColoring@i{\DomainColoring@i[]}} + +\begingroup +% Change ^ to normal character to describe functions with lua +\catcode`\^=11\relax % for power symbol in Lua + +\gdef\DomainColoring@i[#1]#2{% + \begingroup + \setDColkeys{#1}% + \ifDCol@force\else + \IfFileExists{\@domaincoloring@filename.pdf}{}{\DCol@forcetrue}% + \fi + \ifDCol@force + \directlua{% + require("domaincoloring-complex-numbers") + require ("domaincoloring") + createData("\jobname", + "#2", + "\@domaincoloring@funcName", % user defined, function number from file + % domaincoloring-functions.lua + {\@domaincoloring@domain},{\@domaincoloring@res},\@domaincoloring@Rmax, + "\@domaincoloring@hsvrgb", + {\@domaincoloring@bgcolor}, + \ifDCol@invers "true" \else "false" \fi, + \ifDCol@grid "true" \else "false" \fi) + }% + \typeout{Convert \jobname-domain.eps file to \@domaincoloring@filename.pdf}% + \ShellEscape{epstopdf \jobname-domain.eps \@domaincoloring@filename.pdf}% + \fi + % + \expandafter\includegraphics\expandafter[\@domaincoloring@grf]{\@domaincoloring@filename.pdf}% + \stepcounter{DCol@imageCTR}% + \gdef\@domaincoloring@filename{\jobname-tmp\theDCol@imageCTR}% + \endgroup + \ignorespaces +} + +\catcode`\^=7\relax +\endgroup + +\endinput diff --git a/macros/luatex/latex/domaincoloring/lua/domaincoloring-complex-numbers.lua b/macros/luatex/latex/domaincoloring/lua/domaincoloring-complex-numbers.lua new file mode 100644 index 0000000000..7630433984 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/lua/domaincoloring-complex-numbers.lua @@ -0,0 +1,357 @@ +--Complex Number Library by xXxMoNkEyMaNxXx (_G.cmath) +--[[ +In pure Lua, use: +num=complex(re,im) +or +num=cx'6+2.5i' + +In LuaJIT: +num=6+2.5i + +Functions and constants available in cmath: +Constants +-e=2.718281828459 +-i=sqrt(-1) +-pi=math.pi + +Complex creation and extraction functions +-complex(re,im) creates a complex number from real and imaginary components. +-re(z) real part of z +-im(z) imaginary part of z +-arg(z) argument of z + +-abs(z) absolute value of z +-sqrt(z) = z^0.5 +-pow(x,y) = x^y +-exp(z) = e^z +-ln(z) = e^? = z +-log(b,z) = ln(z)/ln(b) + +Trig functions +-sin(z) +-cos(z) +-tan(z) + +-sinh(z) +-cosh(z) +-tanh(z) + +-asin(z) +-acos(z) +-atan(z) +-atan2(y,x) + +-asinh(z) +-acosh(z) +-atanh(z) + +Miscellaneous functions +-polar(z) returns r,phi = cmath.abs(z),cmath.arg(z) +-rect(r,phi) returns a complex number from polar = r*e^(i*phi) +-diff(z) = re(z)^2-im(z)^2 +-zeta(z[,accuracy=1e4]) riemann zeta function +-lintegrate(f,H,[L=0,n=sensible for H]) +-cx(string) creates a complex number from a string (e.g. "1.1-i" -> 1.1+-1i) +-cx(re,im) = complex(re,im) + +]] + +local type=type +local select=select +local tonumber=tonumber +local tostring=tostring +local setmetatable=setmetatable + +e=math.exp(1) +pi=math.pi +abs=math.abs +exp=math.exp +log=math.log +cos=math.cos +sin=math.sin +cosh=math.cosh +sinh=math.sinh +sqrt=math.sqrt +atan2=math.atan2 + +forget=1e-14--Forget ridiculously small values. Remove if you want to keep all values. (Not recommended for sanity, shouldn't make a difference in performance or output.) +--The reason that this is here is because i^2 yields -1+0.0000000000000001i, and (-1)^0.5 yields 0.00000000000000006+i. (Should be just -1 and i) + +function istype(c) + local t=type(c) + return t=="table" and c.type or t +end + +local complex_mt +--Locally used and desirable functions-- +function re(n) + local t=type(n) + return t=="table" and (n.re or 0) or t=="number" and n or 0 +end + +function im(n) + return type(n)=="table" and n.im or 0 +end + +function complex(re,im) + if forget then + if re and abs(re)<=forget then + re=0 + end + if im and abs(im)<=forget then + im=0 + end + end + return setmetatable({re=re or 0,im=im or 0,type="complex"},complex_mt) +end + +function rect(r,phi)--r*e^(i*phi) -> x+iy + return complex(r*cos(phi),r*sin(phi)) +end + +function arg(z)--Lol, no documentation + return atan2(im(z),re(z)) +end + +function ln(c)--Natural logarithm + local r1,i1=re(c),im(c) + return complex(log(r1^2+i1^2)/2,atan2(i1,r1)) +end + +----------------------------------------- + +--Complex number metatable-- +complex_mt={ + __add=function(c1,c2) + return complex(re(c1)+re(c2),im(c1)+im(c2)) + end, + __sub=function(c1,c2) + return complex(re(c1)-re(c2),im(c1)-im(c2)) + end, + __mul=function(c1,c2) + local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2) + return complex(r1*r2-i1*i2,r1*i2+r2*i1) + end, + __div=function(c1,c2) + local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2) + local rsq=r2^2+i2^2 + return complex((r1*r2+i1*i2)/rsq,(r2*i1-r1*i2)/rsq) + end, + __pow=function(c1,c2)--Aww ye + local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2) + local rsq=r1^2+i1^2 + if rsq==0 then--Things work better like this. + if r2==0 and i2==0 then + return 1 + end + return 0 + end + local phi=atan2(i1,r1) + return rect(rsq^(r2/2)*exp(-i2*phi),i2*log(rsq)/2+r2*phi) + end, + __unm=function(c) + return complex(-re(c),-im(c)) + end, + __tostring=function(c) + local iChar = "i" + local r,i=re(c),im(c) + if i==0 then + return tostring(r).." +0"..iChar + elseif r==0 then + if i==1 then + return iChar + elseif i==-1 then + return "-"..iChar + end + return i..iChar + elseif i<0 then + if i==-1 then + return r.."-"..iChar + end + return r.." -"..-i..iChar + else + if i==1 then + return r.."+"..iChar + end + return r.." +"..i..iChar + end + end +} +---------------------------- + +--Allow complex arguments for regular math functions with cmath namespace-- +--Note that all these functions still work for regular numbers! +--The added bonus is that they can handle things like (-1)^0.5. (=i) + +i=complex(0,1) +cmath={e=e,i=i,pi=pi,re=re,im=im,complex=complex,arg=arg,rect=rect,ln=ln} +_G.cmath=cmath + +function cmath.abs(c)--This always returns a pure real value + return sqrt(re(c)^2+im(c)^2) +end + +function cmath.diff(c) + return re(c)^2-im(c)^2 +end + +function cmath.exp(c) + return e^c +end + +function cmath.sqrt(c) + local num=istype(c)=="complex" and c^0.5 or complex(c)^0.5 + if im(num)==0 then + return re(num) + end + return num +end + +--Trig functions +function cmath.sin(c) + local r,i=re(c),im(c) + return complex(sin(r)*cosh(i),cos(r)*sinh(i)) +end +function cmath.cos(c) + local r,i=re(c),im(c) + return complex(cos(r)*cosh(i),sin(r)*sinh(i)) +end +function cmath.tan(c) + local r,i=2*re(c),2*im(c) + local div=cos(r)+cosh(i) + return complex(sin(r)/div,sinh(i)/div) +end + +--Hyperbolic trig functions +function cmath.sinh(c) + local r,i=re(c),im(c) + return complex(cos(i)*sinh(r),sin(i)*cosh(r)) +end +function cmath.cosh(c) + local r,i=re(c),im(c) + return complex(cos(i)*cosh(r),sin(i)*sinh(r)) +end +function cmath.tanh(c) + local r,i=2*re(c),2*im(c) + local div=cos(i)+cosh(r) + return complex(sinh(r)/div,sin(i)/div) +end + +--Caution! Mathematical laziness beyond this point! + +--Inverse trig functions +function cmath.asin(c) + return -i*ln(i*c+(1-c^2)^0.5) +end +function cmath.acos(c) + return pi/2+i*ln(i*c+(1-c^2)^0.5) +end +function cmath.atan(c) + local r2,i2=re(c),im(c) + local c3,c4=complex(1-i2,r2),complex(1+r2^2-i2^2,2*r2*i2) + return complex(arg(c3/c4^0.5),-ln(cmath.abs(c3)/cmath.abs(c4)^0.5)) +end +function cmath.atan2(c2,c1)--y,x + local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2) + if r1==0 and i1==0 and r2==0 and i2==0 then--Indeterminate + return 0 + end + local c3,c4=complex(r1-i2,i1+r2),complex(r1^2-i1^2+r2^2-i2^2,2*(r1*i1+r2*i2)) + return complex(arg(c3/c4^0.5),-ln(cmath.abs(c3)/cmath.abs(c4)^0.5)) +end + +--Inverse hyperbolic trig functions. Why do they all look different but give correct results!? e.e +function cmath.asinh(c) + return ln(c+(1+c^2)^0.5) +end +function cmath.acosh(c) + return 2*ln((c-1)^0.5+(c+1)^0.5)-log(2) +end +function cmath.atanh(c) + return (ln(1+c)-ln(1-c))/2 +end + +--Miscellaneous functions +function cmath.zeta(s,a) + local sum=0 + for n=a,accuracy or 10000 do + sum=sum+n^-s + end + return sum +end + +--End of non-optimized terrors. + +--Linear integration, evenly spaced slices +--f=function(x),low=0,high=100,slices=10000 +function cmath.lintegrate(f,H,L,n) + n=n or floor(10*sqrt(H)) + L=L or 0 + local LH=H-L + local A=(f(L)+f(H))/2 + for x=1,n-1 do + A=A+f(L+LH*x/n) + end + return A/n +end + +--cmath.log: Complex base logarithm! One argument (z=c1) gives log(z). Two arguments (b=c1,z=c2) gives log_b(z), which is identical to log(c2)/log(c1). +function cmath.log(c2,c1) + local r1,i1=re(c1),im(c1) + local r2,i2=re(c2),im(c2) + local r3,i3=log(r1^2+i1^2)/2,atan2(i1,r1) + local r4,i4=log(r2^2+i2^2)/2,atan2(i2,r2) + local rsq=r4^2+i4^2 + return complex((r3*r4+i3*i4)/rsq,(r4*i3-r3*i4)/rsq) +end + +cmath.pow=complex_mt.__pow +--------------------------------------------------------------------------- + +--These are just some useful tools when working with complex numbers.-- + +--cmath.polar: x+iy -> r*e^(i*phi) One complex argument, or two real arguments can be given. +--This is basically return cmath.abs(z),cmath.arg(z) +function cmath.polar(cx,oy) + local x,y + if oy then + x,y=cx,oy + else + x,y=re(cx),im(cx) + end + return sqrt(x^2+y^2),atan2(y,x) +end + +--cmath.cx: Define complex numbers from a string. +function cmath.cx(a,b) + local r,i=0,0 + if type(a)=="string" and type(b)=="nil" then + local query=a:gsub("[^%d.+-i]","") + if #query>0 then + for sgn,im in query:gmatch'([+-]*)(%d*%.?%d*)i' do + i=i+(-1)^select(2,sgn:gsub("-",""))*(tonumber(im) or 1) + end + for sgn,re in query:gsub("[+-]*%d*%.?%d*i",""):gmatch'([+-]*)(%d*%.?%d*)()' do + r=r+(-1)^select(2,sgn:gsub("-",""))*(tonumber(re) or #sgn>0 and 1 or 0) + end + end + else + r,i=tonumber(a) or 0,tonumber(b) or 0 + end + if forget then + if abs(r)<=forget then + r=0 + end + if abs(i)<=forget then + i=0 + end + end + return complex(r,i) +end +----------------------------------------------------------------------- + +--Globalize. +_G.cmath=cmath + +-- print(cmath.e^(cmath.i*cmath.pi)+1) + diff --git a/macros/luatex/latex/domaincoloring/lua/domaincoloring-functions.lua b/macros/luatex/latex/domaincoloring/lua/domaincoloring-functions.lua new file mode 100644 index 0000000000..bb0ca0c5b0 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/lua/domaincoloring-functions.lua @@ -0,0 +1,110 @@ +-- $Id: domaincoloring-functions.lua 978 2024-09-02 15:27:30Z herbert $ + +kpse.set_program_name("luatex") + +function f0(z) + return cmath.sin(1/z)*cmath.cos(1/z)/z^3+1/z +end + +function f1(z) + return cmath.cos(z)/cmath.sin(z^4-1) +end + +function f2(z) + local c = complex(1,-1) + local d = complex(0,0.28) + return cmath.cos(c^2*z^2)/cmath.cos(c*(z-d)) +end + +function f3(z) + return z*(z+i)^2/(z-i)^2 +end + +function f4(z) + if abs(z) < 0.1 then + return complex(0.001,0.001) + else + return cmath.sin(1/(z*z)) + end +end + +function f5(z) + return cmath.sqrt(1-1/(z*z)+z^3) +end + +function f9(z) + local c = complex(1,-1) + local d = complex(1,1) + return z^2*c^2*(z*c-1-i)/(z*c-2*d) +end + +function f10(z) + local sum = complex(0,0) + for n=1,20 do + sum = sum + z^n/(1-z^n) + end + return sum +end + +function f11(z) + local iterateNo = 3 + for n=1,iterateNo do + z = z^2 + end + return z +end + +function f12(z) -- julia + local iterateNo = 15 + for n=1,iterateNo do + z = z^2 + complex(0.25,-0.5) + end + return z +end + +function f13(z) -- mandelbrot + local iterateNo = 15 + local c = z + z = complex(0,0) + for n=1,iterateNo do + z = z^2 + c + end + return z +end + +function f14(z) + local iterateNo = 5 +-- local c = z +-- z = complex(0,0) + for n=1,iterateNo do + z = cmath.sin(z)*cmath.sin(0.8*z) -- + c + end + return z +end + +function f15(z) + local alpha = 4 + local C0 = complex(1,0) + local C1 = 2 * alpha * z + for n = 2,20 do + C = (2*z*(n+alpha-1)*C1 - (n+2*alpha-2)*C0)/n + C0 = C1 + C1 = C + end + return C +end + +function f16(z) + local A = z^2 - z -2 + local B = z^2 + complex(1,1) + return A/B +end + +function f17(z) + return e^(z^cmath.sin(z^cmath.tan(z^cmath.cos(z)))) +end + +function f18(z) + return (z+0.5)*(z-0.5)/z +end + diff --git a/macros/luatex/latex/domaincoloring/lua/domaincoloring.lua b/macros/luatex/latex/domaincoloring/lua/domaincoloring.lua new file mode 100644 index 0000000000..3eb5496df5 --- /dev/null +++ b/macros/luatex/latex/domaincoloring/lua/domaincoloring.lua @@ -0,0 +1,336 @@ +-- $Id: domaincoloring.lua 978 2024-09-02 15:27:30Z herbert $ + +----------------------------------------------------------------------- +-- FILE: domaincoloring.lua +-- DESCRIPTION: create a visual reprensation of a complex function +-- REQUIREMENTS: +-- AUTHOR: Herbert Voß +-- LICENSE: LPPL 1.3 +-- +----------------------------------------------------------------------- + +local version = 0.05 + +kpse.set_program_name("luatex") + +require("domaincoloring-complex-numbers") + +local func = io.open("domaincoloring-functions.lua","r") +if func~=nil then + io.close(func) + dofile("domaincoloring-functions.lua") +end + +local function HSVtoRGB(h, s, v) +-- if h == 1 then h = 0 end + local i = math.floor(h * 6) + local f = h * 6 - i + local p = v * (1 - s) + local q = v * (1 - s * f) + local t = v * (1 - s * (1 - f)) + v = math.floor(255*v) % 256 + p = math.floor(255*p) % 256 + q = math.floor(255*q) % 256 + t = math.floor(255*t) % 256 + if i == 0 then return v,t,p + elseif i == 1 then return q,v,p + elseif i == 2 then return p,v,t + elseif i == 3 then return p,q,v + elseif i == 4 then return t,p,v + elseif i == 5 then return v,p,q + else return v,v,v + end +end + +--[[ +local function HSVtoRGB(h, s, v) + h = math.floor(h * 360) + local k1 = v*(1-s) + local k2 = v - k1 + local r = math.min (math.max (3*math.abs (((h )/180)%2-1)-1, 0), 1) + local g = math.min (math.max (3*math.abs (((h -120)/180)%2-1)-1, 0), 1) + local b = math.min (math.max (3*math.abs (((h +120)/180)%2-1)-1, 0), 1) + return k1 + k2 * r * 255, k1 + k2 * g * 255, k1 + k2 * b * 255 +end +]] + + +function my_color_scheme(z,hsvrgb) + r, phi = cmath.polar(z) +-- print(r,tostring(phi)) +-- phi is in -pi,+pi; change it to [0;2pi] and normalize it to [0;1] + phi = (phi+pi)/(2*pi) +-- phi = (phi+pi)*180/pi + h_str,s_str,v_str = hsvrgb:match("([^,]+),([^,]+),([^,]+)") + --print(h_str,s_str,v_str) +-- print(load("return "..h_str)(),load("return "..s_str)(),load("return "..v_str)()) + R,G,B = HSVtoRGB(load("return "..h_str)(),load("return "..s_str)(),load("return "..v_str)()) -- h,s,v) -- (phi+3.14,1,r) +-- print(R,G,B) + return {math.floor(R+0.5),math.floor(G+0.5),math.floor(B+0.5)} +end + + +--[[ +A raster of Height rows, in order from top to bottom. +Each row consists of Width pixels, in order from left to +right. Each pixel is a triplet of red, green, and blue samples, +in that order. Each sample is represented in pure binary by +either 1 or 2 bytes. If the Maxval is less than 256, it is +1 byte. Otherwise, it is 2 bytes. The most significant byte is first. +A row of an image is horizontal. A column is vertical. +The pixels in the image are square and contiguous. +]] + +function write_eps_data(name,data,domain,res,grid) + print("Lua: writing data file "..name.." ...") +-- print(data) + outFile = io.open(name,"w+") -- Dateiname + outFile:write([[ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (Herbert Voss) +%%Title: (domain.eps) +%%CreationDate: (]]) + outFile:write(os.date("%Y-%m-%d-%H.%M.%S")..")\n") + outFile:write("%%BoundingBox: -0 -0 "..res[1].." "..res[2].."\n") + outFile:write("%%HiResBoundingBox: 0 0 "..res[1].." "..res[2].."\n") + outFile:write([[ +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%EndComments +%%BeginDefaults +%%EndDefaults +%%BeginProlog +/DirectClassPacket { + currentfile color_packet readhexstring pop pop + /number_pixels 3 def + 0 3 number_pixels 1 sub { pixels exch color_packet putinterval } for + pixels 0 number_pixels getinterval +} bind def +/DirectClassImage{ + columns rows 8 [ columns 0 0 rows neg 0 rows ] + { DirectClassPacket } false 3 colorimage +} bind def +/DisplayImage { + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + DirectClassImage + grestore +} bind def +%%EndProlog +%%Page: 1 1 +]]) + outFile:write("%%PageBoundingBox: 0 0 "..res[1].." "..res[2].."\n") + outFile:write([[userdict begin +DisplayImage +0 0 +]]) + outFile:write(res[1].." "..res[2].."\n") + outFile:write("12\n") + outFile:write(res[1].." "..res[2].."\n") + outFile:write([[0 +0 +]]) + local i = 0 + for row = 1, res[2] do -- alle Zeilen + for col = 1, res[1] do -- alle Spalten + for k = 1,3 do + if data[row][col][k] ~= data[row][col][k] then -- check for nan + outFile:write("FF") + else + num = data[row][col][k] + if num < 16 then + hex = string.format("0%X", num) + else + hex = string.format("%X", num) + end + outFile:write(hex) + end + i = i + 1 + if i == 39 then + outFile:write("\n") -- neue Zeile + i = 0 + end + end + end + end + outFile:write("\n") -- neue Zeile + if grid == "true" then + outFile:write("gsave \n /xMin "..domain[1].." def\n") + outFile:write("/xMax "..domain[2].." def\n") + outFile:write("/yMin "..domain[3].." def\n") + outFile:write("/yMax "..domain[4].." def\n") + outFile:write(res[1].." xMax xMin sub div dup /xScale exch def \n") + outFile:write(res[2].." yMax yMin sub div dup /yScale exch def \n") + outFile:write("scale\n") + outFile:write([[ +xMin neg yMin neg translate % the new origin\n" +gsave +xMin floor 0.5 yScale div sub + 0.5 xMax 0.5 add round { % loop variable on stack\n" + dup yMin moveto yMax lineto +} for +2 ]]) + outFile:write(res[2]) + outFile:write([[ div setlinewidth 0.4 setgray [5 5 ] { ]]) + outFile:write(res[2]..[[ div } forall 2 array astore 0 setdash +stroke +grestore +gsave +yMin floor 0.5 yScale div add % startValue + % with shift 0.5 to be in the middle of the pixel + 0.5 % step + yMax 0.5 add round { % loop variable on stack + dup xMin exch moveto xMax exch lineto +} for +2 ]]) + outFile:write(res[1]) + outFile:write([[ div setlinewidth 0.4 setgray [5 5 ] { ]]) + outFile:write(res[1]..[[ div } forall 2 array astore 0 setdash +stroke +grestore +gsave +xMin floor 0.5 yScale div sub + 1 xMax 0.5 add round { % loop variable on stack\n" + dup yMin moveto yMax lineto +} for +2 ]]) + outFile:write(res[2]) + outFile:write([[ div setlinewidth 0.3 setgray stroke +grestore +gsave +yMin floor 0.5 yScale div add + 1 yMax 0.5 add round { % loop variable on stack + dup xMin exch moveto xMax exch lineto +} for +2 ]]) + outFile:write(res[1]) + outFile:write([[ div setlinewidth 0.3 setgray stroke +grestore +]]) + end + outFile:write([[ +end % of userdict +%%PageTrailer +%%Trailer +%%EOF + ]]) + outFile:close() -- Datei schließen + --os.execute("pnmtopng apfel.ppm >"..fileName..".png") -- ppm -> png Format +end + +function write_data(name,data,domain,res) -- only valid for writing ppm files + print("Lua: writing data to file "..name.." ...") +-- print(data) + outFile = io.open(name,"w+") -- Dateiname + outFile:write("P3 ") -- Grafictype R G B + outFile:write(res[1].." "..res[2].." ") -- Anzahl Pixel: Breite x Höhe (cols x rows) + outFile:write("255\n") -- Höchster Zahlenwert (0..255) + for row = 1, res[2] do -- alle Zeilen + for col = 1, res[1] do -- alle Spalten + for k = 1,3 do + if data[row][col][k] ~= data[row][col][k] then -- check for nan + outFile:write("255 ") + else + outFile:write(data[row][col][k].." " ) + end + end + end + outFile:write("\n") -- neue Zeile + end + outFile:close() -- Datei schließen + --os.execute("pnmtopng apfel.ppm >"..fileName..".png") -- ppm -> png Format +end + +function plot(fString, domain, res, maxR, funcName, hsvrgb, bgColor, invers) + print("\nLua: calculating data with "..tostring(fString).." ... ") + local colorBGsum = bgColor[1] -- {-30, 255, 255} + if colorBGsum < 0 then -- color[1]+... < 30 will be {255,255,255} + for i=1,3 do + bgColor[i] = bgColor[2] + end + end + local left = domain[1] + local right = domain[2] + local bottom = domain[3] + local top = domain[4] + local dx = (right-left)/res[1] + local dy = (top-bottom)/res[2] + local img = {} -- mxn-Matrix (rows x colums) img[row][col] + for row = 1,res[2] do + img[row] = {} + for col = 1,res[1] do + img[row][col] = 0 + end + end + for row = 1, res[2] do + y = top-dy*row + for col = 1,res[1] do +-- print(j,i) + x = left+dx*col + z = complex(x, y) + if funcName then + fz = fString(z) -- use func number from external file + else + fz = load("return "..fString)() -- for example: cmath.cos(z)/cmath.sin(z^4-1) + end +-- if fz == complex(nan,nani) then +-- color = { 0, 0, 0} +-- print("Complex division by zero!!") +-- else + color = my_color_scheme(fz,hsvrgb) +-- end + if maxR > 0 and cmath.abs(z) > maxR then color = { 0, 0, 0 } end + if invers == "true" then + for c=1,#color do + color[c] = math.abs(color[c]-255) + end + end + local colorSum = color[1]+color[2]+color[3] + if color == {0, 0, 0} then color = bgColor end -- only one color + if colorBGsum < 0 and colorSum < math.abs(colorBGsum) then color = {255,255,255} end + img[row][col] = color + end + end + return img +end + +--[[ + f: function as string if funcName is False + as funcName from external file if funcName is TRUE + Domain: xMin,xMax,yMin,yMax + Resolution: (points per Interval) xRes,yRes + funcName: true/false (see f) +]] + +function createData(jobname,f,funcName,Domain,Resolution,maxR,hsvrgb,bgColor,invers,grid) + print("Lua:createData: ",jobname,f,funcName,Domain,Resolution,maxR,hsvrgb,bgColor,invers,grid) + if funcName == "" then + img = plot(f,Domain,Resolution,maxR,false,hsvrgb,bgColor,invers) + else + img = plot(load("return "..funcName)(),Domain,Resolution,maxR,true,hsvrgb,bgColor,invers) + end +-- write_data("domain.ppm",img,Resolution) + write_eps_data(jobname.."-domain.eps",img,Domain,Resolution,grid) +end + diff --git a/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.pdf b/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.pdf Binary files differindex c3d5652315..886799591b 100644 --- a/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.pdf +++ b/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.pdf diff --git a/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.tex b/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.tex index a865389e0c..4fe3cf498d 100644 --- a/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.tex +++ b/macros/luatex/latex/gitinfo-lua/doc/gitinfo-lua.tex @@ -157,6 +157,9 @@ $lualatex = "lualatex --lua=gitinfo-lua-init.lua %O %S"; When the version is dirty it will be post fixed with \texttt{-<commit count>-<short ref>}. For example, when this paragraph was written, the version was displaying 0.0.1-14-gcc2bc30.\\ + \DescribeMacro{\ifgitdirty} To test whether there are any pending changes in the local Git repository, use the \cmd{\ifgitdirty}\marg{true code}\marg{false code} macro. + For this macro to work properly, be sure to add a \texttt{.gitignore}\footnote{A proper example of a \texttt{.gitignore} file for \LaTeX: \url{https://raw.githubusercontent.com/github/gitignore/main/TeX.gitignore}} file and include all \TeX\ based generated files.\\ + The \DescribeMacro{\gitdate}\cmd{\gitdate} macro gets the most recent date from the git log. Meaning, the last `short date' variant is picked from the last commit. This short date is formatted ISO based and is already suitable for use in packages like \texttt{isodate} for more advanced date formatting.\\ @@ -201,7 +204,6 @@ $lualatex = "lualatex --lua=gitinfo-lua-init.lua %O %S"; For this section the git project of this document is used due to the fact that there are references to revisions. The test project's revisions change for every user, since they get recreated every time \texttt{test-scenario.sh} is executed (see section~\ref{sec:project}).\\ - \clearpage \noindent \DescribeMacro{\gitcommit}\oarg{format}\marg{csname}\marg{revision}\\ For displaying commit data \cmd{\gitcommit} can be used. diff --git a/macros/luatex/latex/gitinfo-lua/scripts/gitinfo-lua.lua b/macros/luatex/latex/gitinfo-lua/scripts/gitinfo-lua.lua index 8c346ec3be..1c4b7b1dcb 100644 --- a/macros/luatex/latex/gitinfo-lua/scripts/gitinfo-lua.lua +++ b/macros/luatex/latex/gitinfo-lua/scripts/gitinfo-lua.lua @@ -23,8 +23,8 @@ end local module = { name = 'gitinfo-lua', info = { - version = '1.1.0', --TAGVERSION - date = '2024/04/11', --TAGDATE + version = '1.2.0', --TAGVERSION + date = '2024/09/14', --TAGDATE comment = "Git info Lua — Git integration with LaTeX", author = "Erik Nijenhuis", license = "free" @@ -109,10 +109,23 @@ function api:write_version() end end +function api:is_dirty() + local files_changed, _ = self.cmd:exec('status --porcelain=1', true) + return files_changed and #files_changed > 0 +end + +function api:write_is_dirty() + if self:is_dirty() then + tex.write('1') + else + tex.write('0') + end +end + -- todo: prevent output to stderr -- todo: add write variant -- experimental -function api:is_dirty() +function api:is_tag() local ok, _ = self.cmd:exec('describe --tags --exact-match') return ok == nil end diff --git a/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty b/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty index 779f246ed4..f1ee5575a7 100644 --- a/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty +++ b/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty @@ -16,7 +16,7 @@ % This work consists of the files gitinfo-lua.sty gitinfo-lua.pdf % gitinfo-lua-cmd.lua, gitinfo-lua-recorder.lua and gitinfo-lua.lua \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{gitinfo-lua}[2024/04/11 1.1.0 Xerdi's Git Package] +\ProvidesPackage{gitinfo-lua}[2024/09/14 1.2.0 Xerdi's Git Package] \directlua{git = require('gitinfo-lua')} @@ -53,6 +53,15 @@ \newcommand*\gitdate{\directlua{git:cs_last_commit('git@single@arg', 'cs')}} \newcommand*\gitdirectory[1]{\directlua{git:dir('#1')}} \newcommand*\gitunsetdirectory{\directlua{git:dir(nil)}} +\newcommand*\ifgitdirty[2]{% + \def\@dirtytrue{1}% + \edef\@dirty{\directlua{git:write_is_dirty()}}% + \ifx\@dirty\@dirtytrue + #1% + \else + #2% + \fi +} \newcommand\git@format@author[2]{% #1 diff --git a/macros/luatex/latex/ideavault/ideavault-doc.pdf b/macros/luatex/latex/ideavault/ideavault-doc.pdf Binary files differindex fc48b1384e..0a641014ab 100644 --- a/macros/luatex/latex/ideavault/ideavault-doc.pdf +++ b/macros/luatex/latex/ideavault/ideavault-doc.pdf diff --git a/macros/luatex/latex/ideavault/ideavault-doc.tex b/macros/luatex/latex/ideavault/ideavault-doc.tex index 0bea7622c6..5b2f2ff4a5 100644 --- a/macros/luatex/latex/ideavault/ideavault-doc.tex +++ b/macros/luatex/latex/ideavault/ideavault-doc.tex @@ -13,7 +13,8 @@ \par This is what the Idea Vault is used for. \section{Dependencies} -\par Idea Vault requires some packages (most of them for styling the printed idea). +\par Lua\LaTeX --- this is Lua\LaTeX package and will not work without Lua. +\par Additionally, Idea Vault requires some packages (most of them for styling the printed idea). \begin{itemize} \item \texttt{bookmark} \item \texttt{xargs} @@ -33,7 +34,7 @@ \subsection{\textbackslash{}createIdea} \begin{verbatim} -\printIdea[prefix]{name}{content}[dependencies][tags][weight] +\createIdea[prefix]{name}{content}[dependencies][tags][weight] \end{verbatim} \begin{itemize} \item \texttt{prefix}: prefix to locate the idea in. By default, equals to \texttt{default}. @@ -84,7 +85,7 @@ \par Example: \begin{verbatim} -\printIdeaAllWithPrefix[somePrefix][lcbf] +\printAllWithPrefix[somePrefix][lcbf] \end{verbatim} \subsection{\textbackslash{}printAllWithTag} @@ -100,7 +101,7 @@ \par Example: \begin{verbatim} -\printIdeaAllWithTag[somePrefix][lcbf]{tag1} +\printAllWithTag[somePrefix][lcbf]{tag1} \end{verbatim} \section{Style} @@ -109,15 +110,32 @@ \item \texttt{f}: Frame whole idea \item \texttt{c}: Center whole idea \item \texttt{b}: Create bookmark leading to the idea -\item \texttt{l}: Use large font for the name +\item \texttt{l}: Use Large font for the name +\item \texttt{L}: Use LARGE font for the name +\item \texttt{h}: Use huge font for the name +\item \texttt{H}: Use Huge font for the name \item \texttt{s}: Reserve some space using needspace to avoid awkward pagebreaks \item \texttt{e}: emph the name -\item \texttt{q}: do not print the name +\item \texttt{q}: Do not print the name \item \texttt{p}: New page before printing the idea (useful when doing serial printing, for example via \texttt{printAllWithTag}) \item \texttt{P}: New page after printing the idea (useful when doing serial printing, for example via \texttt{printAllWithTag}) \end{itemize} +\section{Debugging} +\par By default, this package avoids spamming too much to stdout, but sometimes it would be useful to see what idea creation/printing is triggering some problems. +\subsection{\textbackslash{}debugEnable} +\begin{verbatim} +\debugEnable +\end{verbatim} +\par Enables debug output --- remember, it may be quite overwhelming if there are a lot of ideas. +\subsection{\textbackslash{}debugDisable} +\begin{verbatim} +\debugDisable +\end{verbatim} +\par Disables debug output. Debug output is disabled by default, so it's only use is to revert the effect of enabling it. + \section{Example} +\par This is short example of code, and it's result. Extended example can be found in file \texttt{example.tex}. \subsection{Code} \begin{verbatim} \createIdea[somePrefix]{Not So Great Idea}{ diff --git a/macros/luatex/latex/ideavault/ideavault-lua.lua b/macros/luatex/latex/ideavault/ideavault-lua.lua index 09bade82a2..c39a964f64 100644 --- a/macros/luatex/latex/ideavault/ideavault-lua.lua +++ b/macros/luatex/latex/ideavault/ideavault-lua.lua @@ -15,6 +15,29 @@ -- -- This work consists of the files ideavault.sty and ideavault-lua.lua + +logErrorEnabled = true +logWarnEnabled = true +logDebugEnabled = false + +function logError(message) + if (logErrorEnabled) then + texio.write_nl("[ERROR] " .. message) + end +end + +function logWarn(message) + if (logWarnEnabled) then + texio.write_nl("[WARN] " .. message) + end +end + +function logDebug(message) + if (logDebugEnabled) then + texio.write_nl("[DEBUG] " .. message) + end +end + IdeaVaultClass = {} IdeaVaultClass.__index = IdeaVaultClass @@ -186,12 +209,15 @@ bookmark_counter = 0 function IdeaClass:printSelf(style) style = style or "" - texio.write("Printing idea. Title: '" .. self:getTitle() .. "', style: '" .. style .. "'.\n") + logDebug("Printing idea. Title: '" .. self:getTitle() .. "', style: '" .. style .. "'.\n") local frame = false local center = false local bookmark = false local large = false + local Large = false + local huge = false + local Huge = false local needSpace = false local emph = false local quiet = false @@ -206,7 +232,13 @@ function IdeaClass:printSelf(style) elseif (c == "b") then bookmark = true elseif (c == "l") then - large = true + large = true + elseif (c == "L") then + Large = true + elseif (c == "h") then + huge = true + elseif (c == "H") then + Huge = true elseif (c == "s") then needSpace = true elseif (c == "e") then @@ -247,23 +279,34 @@ function IdeaClass:printSelf(style) end if (not quiet) then + tex.sprint("{%") if (large) then - tex.sprint("{\\Large%") + tex.sprint("\\Large%") + end + if (Large) + then + tex.sprint("\\LARGE%") + end + if (huge) + then + tex.sprint("\\huge%") + end + if (Huge) + then + tex.sprint("\\Huge%") end if (emph) then tex.sprint("\\emph{,,") end tex.sprint(self:getTitle()) + tex.sprint("\\nopagebreak%") if (emph) then tex.sprint("''}%") end - if (large) - then - tex.sprint("}%") - end + tex.sprint("}%") end if (center) then @@ -344,7 +387,7 @@ function createIdea(prefix, key, content, dependencies, tags, value) t = t .. a .. ", " end t = t .. "]" - texio.write("Creating idea. Title: '" .. key .. "'. Prefix: '" .. prefix .. "', tags: " .. t .. ".\n") + logDebug("Creating idea. Title: '" .. key .. "'. Prefix: '" .. prefix .. "', tags: " .. t .. ".\n") deps = {} for _, val in pairs(dependencies) do @@ -360,7 +403,7 @@ end function die(reason) reason = reason or "nil" - texio.write_nl("Critical error: " .. reason) + logError("Critical error: " .. reason) tex.error("Critical error: " .. reason) end diff --git a/macros/luatex/latex/ideavault/ideavault.sty b/macros/luatex/latex/ideavault/ideavault.sty index 4b5c72a351..8b73929eaf 100644 --- a/macros/luatex/latex/ideavault/ideavault.sty +++ b/macros/luatex/latex/ideavault/ideavault.sty @@ -17,7 +17,7 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ideavault}[1.0.3] +\ProvidesPackage{ideavault}[1.0.4] \RequirePackage[open,openlevel=2,atend]{bookmark} \RequirePackage{xargs} \RequirePackage{luacode} @@ -57,6 +57,10 @@ % #3: tag \newcommandx{\printAllWithTag}[3][1=default, 2=lcf]{\luadirect{ideaVault:printAllWithTag(\luastringN{#1}, \luastringN{#3}, \luastringN{#2})}} +% Commands for managing debug output +\newcommandx{\debugEnable}{\luadirect{logDebugEnabled = true}} +\newcommandx{\debugDisable}{\luadirect{logDebugEnabled = false}} + % Internal commands for managing bookmark depth \newcounter{bookmarkDepth} \newcommand{\bookDown}{\stepcounter{bookmarkDepth}} diff --git a/macros/luatex/latex/innerscript/README.txt b/macros/luatex/latex/innerscript/README.txt index 72c48e3e15..0c42f529e0 100644 --- a/macros/luatex/latex/innerscript/README.txt +++ b/macros/luatex/latex/innerscript/README.txt @@ -1,11 +1,11 @@ - LaTeX Package innerscript v. 1.2 + LaTeX Package innerscript v. 1.3 Installation Guide/README Conrad Kosowsky -This file is README.txt from version 1.2 of the free and -open-source LaTeX package "innerscript," released November -2023, to be used with the LuaTeX engine. The innerscript +This file is README.txt from version 1.3 of the free and +open-source LaTeX package "innerscript," released January +2024, to be used with the LuaTeX engine. The innerscript package optionally modifies four aspects of TeX's automatic math formatting rules to improve typesetting. See the user guide for more information. See below for installation and @@ -55,7 +55,7 @@ produces the user guide in point (3) above. ********************************************************* -Copyright 2021,2023 by Conrad Kosowsky +Copyright 2021, 2023, 2024 Conrad Kosowsky This file may be distributed and modified under the terms of the LaTeX Public Project License, version 1.3c or any @@ -70,7 +70,7 @@ be reached at kosowsky.latex@gmail.com. The Work consists of the following items: (1) the base file: - innerscript.dtx + innerscript_code.dtx (2) the package file: innerscript.sty diff --git a/macros/luatex/latex/innerscript/innerscript_code.dtx b/macros/luatex/latex/innerscript/innerscript_code.dtx index 6c900172b6..196a228514 100644 --- a/macros/luatex/latex/innerscript/innerscript_code.dtx +++ b/macros/luatex/latex/innerscript/innerscript_code.dtx @@ -1,9 +1,9 @@ % \iffalse ---!!! FIRST META-COMMENT !!!--- % % -% This file is innerscript_code.dtx from version 1.2 +% This file is innerscript_code.dtx from version 1.3 % of the free and open-source LaTeX package "innerscript," -% released November 2023, to be used with the LuaTeX engine. +% released August 2024, to be used with the LuaTeX engine. % % Running Plain TeX on innerscript_code.dtx will % produce the following files: @@ -37,11 +37,11 @@ % \iffalse ---!!! SECOND META-COMMENT !!!--- % % -% This file is from version 1.2 of the free and open-source -% LaTeX package "innerscript," released November 2023, to be +% This file is from version 1.3 of the free and open-source +% LaTeX package "innerscript," released August 2024, to be % used with the LuaTeX engine. % -% Copyright 2021, 2023 by Conrad Kosowsky +% Copyright 2021, 2023, 2024 Conrad Kosowsky % % This file may be distributed and modified under the terms % of the LaTeX Public Project License, version 1.3c or any @@ -122,11 +122,11 @@ \askforoverwritefalse \preamble -This file is from version 1.2 of the free and open-source -LaTeX package "innerscript," released November 2023, to be +This file is from version 1.3 of the free and open-source +LaTeX package "innerscript," released August 2024, to be used with the LuaTeX engine. -Copyright 2021, 2023 by Conrad Kosowsky +Copyright 2021, 2023, 2024 Conrad Kosowsky This file may be distributed and modified under the terms of the LaTeX Public Project License, version 1.3c or any @@ -249,7 +249,7 @@ Happy TeXing! % We begin the implementation by declaring the package. The counts |\IS@script| and |\IS@scriptscript| and the conditionals |\ifIS@inner|, |\ifIS@close|, and |\ifIS@cover| encode package option information. For the counts, a value of 0 means no changes, a value of 1 means default spacing, and a value of 2 means legacy spacing. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{innerscript}[2023/11/06 v. 1.2 Package innerscript] +\ProvidesPackage{innerscript}[2024/08/19 v. 1.3 Package innerscript] \newcount\IS@script \newcount\IS@scriptscript \newif\ifIS@inner @@ -284,7 +284,7 @@ Happy TeXing! % \begin{macrocode} \ifx\Umathordordspacing\@undefined \bgroup -\catcode`\+=12\relax +\catcode`\ =12\relax \def\IS@LuaTeXError{\GenericError{}% {\MessageBreak\MessageBreak Package innerscript error:% @@ -364,8 +364,8 @@ press return.}}% % \end{figure} % \begin{macrocode} \ifcase\IS@script % Case 0: No changes - \IS@info{No changes to space for \string\scriptstyle\space atoms.} - \IS@info{No changes to space for \string\crampedscriptstyle\space atoms.} + \IS@info{No space changes for \string\scriptstyle\space atoms.} + \IS@info{No space changes for \string\crampedscriptstyle\space atoms.} \or % Case 1: Default changes \IS@info{Adjusting space for \string\scriptstyle\space atoms.} \IS@info{Adjusting space for \string\crampedscriptstyle\space atoms.} @@ -575,8 +575,8 @@ press return.}}% % \end{figure} % \begin{macrocode} \ifcase\IS@scriptscript % Case 0: No changes - \IS@info{No changes to space for \string\scriptscriptstyle\space atoms.} - \IS@info{No changes to space for + \IS@info{No space changes for \string\scriptscriptstyle\space atoms.} + \IS@info{No space changes for \string\crampedscriptscriptstyle\space atoms.} \or % Case 1: Default changes \IS@info{Adjusting space for \string\scriptscriptstyle\space atoms.} @@ -788,7 +788,7 @@ press return.}}% % or the same with the \meta{atom} appearing after the |inner| or |ord|. The \meta{style} is one of the eight math style commands: |\displaystyle|, |\textstyle|, |\scriptstyle|, |\scriptscriptstyle|, and the cramped versions. Section~4 comes after Sections~2 and 3 because we make sure to capture all spacing changes in superscripts and subscripts. % \begin{macrocode} \ifIS@inner - \IS@info{Adjusting space for \string\mathinner\space subformulas.} + \IS@info{Adjusting space around \string\mathinner\space subformulas.} % \end{macrocode} % First, we handle the cases where the first subformula is not |\mathinner| and the second subformula is |\mathinner|. We start with |\displaystyle|. % \begin{macrocode} @@ -1111,7 +1111,7 @@ press return.}}% \IS@info{Adding space after closing delimiters.} \Umathcloseordspacing\displaystyle=\scalemu{\thinmuskip}{0.5} \Umathcloseordspacing\textstyle=\scalemu{\thinmuskip}{0.5} - \Umathcloseordspacing\crampedisplaystyle=\scalemu{\thinmuskip}{0.5} + \Umathcloseordspacing\crampeddisplaystyle=\scalemu{\thinmuskip}{0.5} \Umathcloseordspacing\crampedtextstyle=\scalemu{\thinmuskip}{0.5} \ifnum\IS@script>0 \Umathcloseordspacing\scriptstyle=\scalemu{\thinmuskip}{0.3} @@ -1130,7 +1130,7 @@ press return.}}% % % \section{Delimiter Heights} % -% Finally, filling out the delimiter heights is easy. We simply set |\delimiterfactor| to 1000. +% Finally, filling out the delimiter heights is easy. We set |\delimiterfactor| to 1000. % \begin{macrocode} \ifIS@cover \IS@info{Setting delimiters to full height.} @@ -1144,7 +1144,8 @@ press return.}}% % \vfil\eject % \section*{Version History} % \begin{multicols*}{2} -% \bgroup\raggedright\parskip\z@\parindent\z@\leftskip1em\obeylines +% +% \raggedright\parskip\z@\parindent\z@\leftskip1em\obeylines % \setbox0\hbox{\hskip 1pt.\hskip 1pt} % \def\version#1#2{\bigskip\hbox to \hsize{\textbf{#1} \cleaders\copy0\hfill\ #2}\par} % \def\item{---\kern0.2ex\relax} @@ -1163,7 +1164,9 @@ press return.}}% % \item added option |cover| % \item separated implementation and user guide % -% \egroup +% \version{1.3}{August 2024} +% \item bug fix involving |\cramedisplaystyle| typo +% % \end{multicols*} % % @@ -1266,7 +1269,7 @@ Package Option & Meaning\\ \begin{figure}[t!] -\centerline{\bfseries\strut Table~3: Space Inserted by \textsf{innerscript}} +\centerline{\bfseries\strut Table~3: Space Inserted by \textsf{innerscript} bewteen Math-Mode Characters} \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule Consecutive Atom Types & Option |script| & Option |scriptscript|\\\midrule |\mathord||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ @@ -1306,7 +1309,7 @@ Consecutive Atom Types & Option |script| & Option |scriptscript|\\\midrule \end{tabular*} \end{figure} -\iffalse % ignore +\iffalse %%% ignore %%% \begin{figure}[t!] \centerline{\bfseries\strut Table~4: Legacy Space Inserted by \textsf{innerscript}} \begin{tabularx}{\hsize}{p{2in}Xl}\toprule @@ -1365,10 +1368,9 @@ Skip Used in Current Version & For Option |script| & For Option |scriptscript|\\ -The |inner|, |close|, and |cover| options are straightforward, but the options |script| and |scriptscript| warrant more explanation. With its usual math formatting, \TeX\ adds small amounts of space between different math-mode characters depending on what types of symbols they represent, and \TeX's fine-tuned math spacing is part of what makes it a great program for typesetting equations.\footnote{\TeX\ classifies math symbols into eight categories: \vrb\mathord\ (ordinary), \vrb\mathop\ (big operator), \vrb\mathbin\ (binary operation), \vrb\mathrel\ (relation), \vrb\mathopen\ (opening delimiter), \vrb\mathclose\ (closing delimiter), \vrb\mathpunct\ (punctuation), and \vrb\mathinner\ (``inner'' subformula). As part of its definition, every math-mode character is assigned a math class.\vadjust{\bigskip} See Donald Knuth, \textit{The \TeX book} (Addison Wesley, 1986), 170; David Salomon, \textit{The Advanced \TeX book} (Springer, 1995), 256--258.} However, some spacing additions from inline and display math don't appear inside superscripts and subscripts. The |script| and |scriptscript| options address this situation by changing the space in superscripts and subscripts to scaled-down versions of the standard spacing rules.\footnote{Technically, \textsf{innerscript} scales down the standard spacing twice. The exact length of a \vrb\muskip\ register varries proportionally with the surrounding font size, so, for example, a \vrb\thinmuskip\ inside a superscript or subscript will be about two-thirds the size of a \vrb\thinmuskip\ in regular inline math. If \textsf{innerscript} always inserted the same amounts of muglue between math characters as with inline math, the spacing in superscripts and subscripts would be proportional to inline and display spacing. However, doing so produces math where the symbols appear too far apart, so \textsf{innerscript} scales the muglue by a factor of 0.6 in superscripts and subscripts and by a factor of 0.4 in second-order superscripts and subscripts.} Table~3 lists the spacing that \textsf{innerscript} adds under both options. - -Finally, in version 1.2, I redesigned the extra space amounts in the |script| and |scriptscript| options, and for backwards compatibility, the |legacy-| options implement the old spacing. In legacy spacing, all space additions are multiples of |\thinmuskip|, and Table~4 lists the factors of |\thinmuskip| from version 1.1. The factors correspond to whether a given row of Table~3 uses |\thinmuskip|, |\medmuskip|, or |\thickmuskip|. For example, the current version of \textsf{innerscript} adds a multiple of |\thinmuskip| between an ordinary math symbol and a large operator, so under legacy spacing, \textsf{innerscript} inserts 0.6|\thinmuskip| in superscripts and subscripts and 0.4|\thinmuskip| in second-order superscripts and subscripts. I changed the package this way so that superscripts and subscripts will parallel inline and display spacing. Now if you set the value of |\thinmuskip|, |\medmuskip|, or |\thickmuskip| before loading \textsf{innerscript}, the adjustment will have the same effect in all parts of your equation. +The |inner|, |close|, and |cover| options are straightforward, but the options |script| and |scriptscript| warrant more explanation. With its usual math formatting, \TeX\ adds small amounts of space between different math-mode characters depending on what types of symbols they represent, and \TeX's fine-tuned math spacing is part of what makes it a great program for typesetting equations.\footnote{\TeX\ classifies math symbols into eight categories: \vrb\mathord\ (ordinary), \vrb\mathop\ (big operator), \vrb\mathbin\ (binary operation), \vrb\mathrel\ (relation), \vrb\mathopen\ (opening delimiter), \vrb\mathclose\ (closing delimiter), \vrb\mathpunct\ (punctuation), and \vrb\mathinner\ (``inner'' subformula). As part of its definition, every math-mode character is assigned a math class. See Donald Knuth, \textit{The \TeX book} (Addison Wesley, 1986), 170; David Salomon, \textit{The Advanced \TeX book} (Springer, 1995), 256--258.} However, some spacing additions from inline and display math don't appear inside superscripts and subscripts. The |script| and |scriptscript| options address this situation by changing the space in superscripts and subscripts to scaled-down versions of the standard spacing rules.\footnote{Technically, \textsf{innerscript} scales down the standard spacing twice. The exact length of a \vrb\muskip\ register varries proportionally with the surrounding font size, so, for example, a \vrb\thinmuskip\ inside a superscript or subscript will be about two-thirds the size of a \vrb\thinmuskip\ in regular inline math. If \textsf{innerscript} always inserted the same amounts of muglue between math characters as with inline math, the spacing in superscripts and subscripts would be proportional to inline and display spacing. However, doing so produces math where the symbols appear too far apart, so \textsf{innerscript} scales the muglue by a factor of 0.6 in superscripts and subscripts and by a factor of 0.4 in second-order superscripts and subscripts.} Table~3 lists the spacing that \textsf{innerscript} adds under both options. +Finally, in version 1.2, I redesigned the extra space amounts in the |script| and |scriptscript| options, and for backwards compatibility, the |legacy-| options implement the old spacing. In legacy spacing, all space additions are multiples of |\thinmuskip|, and Table~4 lists the factors of |\thinmuskip| from version 1.1. The factors correspond to whether a given row of Table~3 uses |\thinmuskip|, |\medmuskip|, or |\thickmuskip|. For example, the current version of \textsf{innerscript} adds a multiple of |\thinmuskip| between an ordinary math symbol and a large operator, so under legacy spacing, \textsf{innerscript} inserts 0.6|\thinmuskip| in superscripts and subscripts and 0.4|\thinmuskip| in second-order superscripts and subscripts. I changed the package this way so that superscripts and subscripts will parallel inline and display spacing. If you set the value of |\thinmuskip|, |\medmuskip|, or |\thickmuskip| before loading \textsf{innerscript}, the adjustment will have the same effect in all parts of your equation. Changing these three internal quantities after you load \textsf{innerscript} will have no effect on the default spacing between math-mode characters. @@ -1382,8 +1384,8 @@ Finally, in version 1.2, I redesigned the extra space amounts in the |script| an \makeatletter % identifying macros -\def\packageversion{1.2} -\def\packagedate{November 2023} +\def\packageversion{1.3} +\def\packagedate{August 2024} % general macros \MacroIndent=1.3em @@ -1449,7 +1451,7 @@ Finally, in version 1.2, I redesigned the extra space amounts in the |script| an \leftskip=0pt plus 1 fil \rightskip=0pt plus 1fil \parfillskip=0pt -{\strut\Large Package \textsf{innerscript} v.\ 1.2 \documentname}\par +{\strut\Large Package \textsf{innerscript} v.\ \packageversion\ \documentname}\par \strut Conrad Kosowsky\par \strut \packagedate\par \strut\texttt{kosowsky.latex@gmail.com}\par} diff --git a/macros/luatex/latex/innerscript/innerscript_code.pdf b/macros/luatex/latex/innerscript/innerscript_code.pdf Binary files differindex f05e92dd31..b08fa7cc67 100644 --- a/macros/luatex/latex/innerscript/innerscript_code.pdf +++ b/macros/luatex/latex/innerscript/innerscript_code.pdf diff --git a/macros/luatex/latex/innerscript/innerscript_user_guide.pdf b/macros/luatex/latex/innerscript/innerscript_user_guide.pdf Binary files differindex 86ea58d448..42cb8bceb8 100644 --- a/macros/luatex/latex/innerscript/innerscript_user_guide.pdf +++ b/macros/luatex/latex/innerscript/innerscript_user_guide.pdf diff --git a/macros/luatex/latex/letgut/README.md b/macros/luatex/latex/letgut/README.md index 1dbce82b4a..7f3c256082 100644 --- a/macros/luatex/latex/letgut/README.md +++ b/macros/luatex/latex/letgut/README.md @@ -2,15 +2,20 @@ letgut - Support for the newsletter “La Lettre GUTenberg” ========================================================= About -------- +----- This bundle includes a LaTeX class, a `.sty` file and an acronym file dedicated to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Group. Release ------- -2024-03-07 v0.9.9 +2024-10-30 v0.9.12 Development ----------- Follow development, submit issues and suggest improvements at https://framagit.org/gutenberg/letgut. + +License +------- +Released under the LaTeX Project Public License v1.3c or later. See +https://www.latex-project.org/lppl.txt#+end_src. diff --git a/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf b/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf Binary files differindex 3c9499367d..993691a4ab 100644 --- a/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf +++ b/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf diff --git a/macros/luatex/latex/letgut/doc/letgut-code.pdf b/macros/luatex/latex/letgut/doc/letgut-code.pdf Binary files differindex fb88b947ba..45630275e5 100644 --- a/macros/luatex/latex/letgut/doc/letgut-code.pdf +++ b/macros/luatex/latex/letgut/doc/letgut-code.pdf diff --git a/macros/luatex/latex/letgut/doc/letgut.pdf b/macros/luatex/latex/letgut/doc/letgut.pdf Binary files differindex 7b9adbc8e2..87fdfba9fe 100644 --- a/macros/luatex/latex/letgut/doc/letgut.pdf +++ b/macros/luatex/latex/letgut/doc/letgut.pdf diff --git a/macros/luatex/latex/letgut/doc/letgut.tex b/macros/luatex/latex/letgut/doc/letgut.tex index 14f005d8d7..f6bad71fce 100644 --- a/macros/luatex/latex/letgut/doc/letgut.tex +++ b/macros/luatex/latex/letgut/doc/letgut.tex @@ -68,7 +68,7 @@ } \author{Association GUTenberg} \date{% - Version 0.9.9 en date du \today% + Version 0.9.12 en date du \today% \texorpdfstring{% \\ \url{https://framagit.org/gutenberg/letgut}% @@ -338,30 +338,31 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : page. \end{docKey} -\tcbset{before lower=\vspace*{.5\baselineskip}\par} -% -\begin{docKey}[][doc updated={2023-01-19}]{detailedtoc}{=\docValue{section}\textbar\docValue{subsection}\textbar\docValue{subsubsection}\textbar\docValue{paragraph}\textbar\docValue{subparagraph}}{\valinitdef[\docValue*{title}][\docValue*{all}]} - Par défaut, une table des matières est automatiquement insérée en début de - document, avec comme niveau de profondeur celui des titres des articles - (saisis via la \refCom{title}), et seulement eux. La clé \refKey{detailedtoc} - permet de modifier le \enquote{niveau de profondeur} de cette table des - matières, respectivement jusqu'aux sections, sous-sections, - sous-sous-sections, paragraphes, sous-paragraphes. Sont également acceptées - les valeurs spéciales : - \begin{itemize} - \item \docValue{all} (alias de \docValue{subparagraph}) ; - \item \docValue{none} qui inhibe l'affichage de la table des matières. - \end{itemize} +{\tcbset{before lower=\vspace*{\baselineskip}\par} + % + \begin{docKey}[][doc updated={2023-01-19}]{detailedtoc}{=\docValue{section}\textbar\docValue{subsection}\textbar\docValue{subsubsection}\textbar\docValue{paragraph}\textbar\docValue{subparagraph}}{\valinitdef[\docValue*{title}][\docValue*{all}]} + Par défaut, une table des matières est automatiquement insérée en début de + document, avec comme niveau de profondeur celui des titres des articles + (saisis via la \refCom{title}), et seulement eux. La clé \refKey{detailedtoc} + permet de modifier le \enquote{niveau de profondeur} de cette table des + matières, respectivement jusqu'aux sections, sous-sections, + sous-sous-sections, paragraphes, sous-paragraphes. Sont également acceptées + les valeurs spéciales : + \begin{itemize} + \item \docValue{all} (alias de \docValue{subparagraph}) ; + \item \docValue{none} qui inhibe l'affichage de la table des matières. + \end{itemize} - \begin{dbremark}{Tables des matières locales}{} - Chaque article peut contenir une table des matières locale, affichée au - moyen de la commande \docAuxCommand{localtableofcontents} (fournie par le - \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de - profondeur est par défaut celui des sections mais cela peut être modifié en - la faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont - l'argument est l'une des valeurs possibles de la clé \refKey{detailedtoc}). - \end{dbremark} -\end{docKey} + \begin{dbremark}{Tables des matières locales}{} + Chaque article peut contenir une table des matières locale, affichée au + moyen de la commande \docAuxCommand{localtableofcontents} (fournie par le + \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de + profondeur est par défaut celui des sections mais cela peut être modifié en + la faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont + l'argument est l'une des valeurs possibles de la clé \refKey{detailedtoc}). + \end{dbremark} + \end{docKey} +} \begin{docKey}[][doc new={2023-01-14}]{reverse-files-attachement}{}{\valinitdef[pas de valeur]} Si, et seulement si, la \lettre{} est à la fois en version pour les lecteurs @@ -377,6 +378,28 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : défaut. \end{docKey} +\begin{docKeys}[doc new={2024-10-07}] + { + { + doc name = watermark letter, + doc description = {\valinitdef[g]}, + }, + { + doc name = watermark scale, + doc description = {\valinitdef[1]}, + }, + }% + La première page de la \lettre{} comporte, en filigrane et en gris clair, + (entre autre) un (très grand) \enquote{g}, composé avec la fonte + \enquote{normale}. + \begin{itemize} + \item La clé \refKey{watermark letter} permet de spécifier une lettre autre + qu'un \enquote{g} et/ou composé avec une fonte autre que \enquote{normale}. + \item La clé \refKey{watermark scale} permet de spécifier échelle autre que~1 + pour cette lettre (par exemple si celle-ci s'avère par défaut trop grande). + \end{itemize} +\end{docKeys} + \subsection{Options autres} \label{sec:options-autres} @@ -716,7 +739,7 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}. { doc name = gut }, { doc name = assogut, doc new={2023-01-14} }, { doc name = Assogut, doc new={2023-01-14} }, - { doc name = lettresn doc new={2023-01-14} }, + { doc name = lettres, doc new={2023-01-14} }, { doc name = lettresgut, doc new={2023-01-14} }, { doc name = cahier }, { doc name = cahiers }, @@ -1109,54 +1132,21 @@ fournit la commande à arguments \enquote{verbatim} suivante. Ainsi le code suivant : \begingroup -\lstset{basicstyle=\ttfamily\scriptsize} -\begin{ltx-code}[listing options app={% - deletekeywords={[3]{latex,width,height,string,label,by,example,system,tex}},% - deletetexcs={edef,rlap,smash,expandafter,string}% -}] -\terminal{time rg foobar -g "*.sty" "/home/bitouze/texlive/2022"}{ -/home/bitouze/texlive/2022/texmf-dist/tex/latex/skeyval/skeyval.sty -445:% \usepackage[option1,option2]{foobar} -447:% \expandafter\show\csname foobar.sty.poxkeys\endcsname - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/thmtools/thm-restate.sty -197:%%% support for keyval-style: restate=foobar - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/pinlabel/pinlabel.sty -284:\edef\foobar{[width=\@p@swidth sp,height=\@p@sheight sp]{\@p@dffile}}% -286:\@message{\string\@includegraphics@\foobar}% -287:\rlap{\smash{\expandafter\@includegraphics@\foobar}}% - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/theoremref/theoremref.sty -129: its label by ``\thlabel{foobar}''. For example, - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/qrbill/qrbill.sty -12:%% Marei Peischl (peiTeX) and Alex Antener (foobar LLC). -rg -g 0,25s user 0,23s system 320% cpu 0,150 total +% \lstset{basicstyle=\ttfamily\scriptsize} +\begin{ltx-code} +\terminal{lualatex}{ +This is LuaHBTeX, Version 1.18.0 (TeX Live 2024) + restricted system commands enabled. +** } \end{ltx-code} donne-t-il : -\terminal{time rg foobar -g "*.sty" "/home/bitouze/texlive/2022"}{ -/home/bitouze/texlive/2022/texmf-dist/tex/latex/skeyval/skeyval.sty -445:% \usepackage[option1,option2]{foobar} -447:% \expandafter\show\csname foobar.sty.poxkeys\endcsname - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/thmtools/thm-restate.sty -197:%%% support for keyval-style: restate=foobar - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/pinlabel/pinlabel.sty -284:\edef\foobar{[width=\@p@swidth sp,height=\@p@sheight sp]{\@p@dffile}}% -286:\@message{\string\@includegraphics@\foobar}% -287:\rlap{\smash{\expandafter\@includegraphics@\foobar}}% - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/theoremref/theoremref.sty -129: its label by ``\thlabel{foobar}''. For example, - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/qrbill/qrbill.sty -12:%% Marei Peischl (peiTeX) and Alex Antener (foobar LLC). -rg -g 0,25s user 0,23s system 320% cpu 0,150 total +\terminal{lualatex}{ +This is LuaHBTeX, Version 1.18.0 (TeX Live 2024) + restricted system commands enabled. +** } \endgroup @@ -1206,8 +1196,7 @@ s'obtient : \begin{itemize} \item sous \linux{} : \LKeyShiftAltGrX{8}\footnote{Touche \LKey{8} du clavier principal.} ; -\item sous \macos{} : à l'aide du visualiseur de caractères\footnote{Et - possiblement de raccourcis claviers personnels.} ; +\item sous \macos{} : \LKeyShift+\LKeyOptionKey+\LKey{T} ; \item sous \windows{} : \LKeyAltX{0}+\LKey{1}+\LKey{5}+\LKey{3}. \end{itemize} \end{dbremark} @@ -1290,7 +1279,7 @@ Les fiches de lecture d'un livre sont créées au moyen de l'environnement fichier local de configuration, cf. \vpageref{sec:fichier-local-de}) au moyen de la commande : \begin{ltx-code} -\addbibressource{£\meta{bibliographie}£.bib} +\addbibresource{£\meta{bibliographie}£.bib} \end{ltx-code} \end{dbwarning} \end{docKey} diff --git a/macros/luatex/latex/letgut/source/letgut-banner.org b/macros/luatex/latex/letgut/source/letgut-banner.org index b9c59dcee8..f618599196 100644 --- a/macros/luatex/latex/letgut/source/letgut-banner.org +++ b/macros/luatex/latex/letgut/source/letgut-banner.org @@ -2,7 +2,7 @@ #+TITLE: Support for the banner of the newsletter "La Lettre de GUTenberg" #+AUTHOR: Association GUTenberg -#+EMAIL: secretariat@gutenberg.eu.org +#+EMAIL: secretariat@gutenberg-asso.fr #+DESCRIPTION: ... #+KEYWORDS: ... #+LANGUAGE: en @@ -23,6 +23,9 @@ #+export_file_name: ../../../doc/lualatex/letgut/letgut-banner-code * Readme file +:PROPERTIES: +:CUSTOM_ID: Readmefile-dlkgxqt0fck0 +:END: #+begin_src markdown :tangle no :exports none letgut-banner - Support for the banner of the newsletter @@ -31,12 +34,12 @@ About ------- - This package automatically draw the banner of the newsletter "La Lettre de + This package automatically draws the banner of the newsletter "La Lettre de GUTenberg" with the current main font. Release ------- - 2022-03-17 v0.9 + 2024-10-07 v0.10 Development ----------- @@ -50,13 +53,13 @@ letgut:| Package for the banner of the newsletter | "La Lettre de GUTenberg" Author:| Association GUTenberg - E-mail:| secretariat@gutenberg.eu.org + E-mail:| secretariat@gutenberg-asso.fr License:| Released under the LaTeX Project Public License | v1.3c or later See:| http://www.latex-project.org/lppl.txt -Copyright (C) 1994-2022 by Association GUTenberg - <secretariat@gutenberg.eu.org> +Copyright (C) 1994-2024 by Association GUTenberg + <secretariat@gutenberg-asso.fr> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either @@ -70,8 +73,14 @@ by Association GUTenberg. #+end_src * Implementation +:PROPERTIES: +:CUSTOM_ID: Implementation-ckogxqt0fck0 +:END: ** Identification +:PROPERTIES: +:CUSTOM_ID: ImplementationIdentification-gwqgxqt0fck0 +:END: #+begin_src This is file `letgut-banner.sty, @@ -93,21 +102,17 @@ Now, we can announce the package name and its version: #+begin_src latex \ProvidesExplPackage{letgut-banner} -{2022-03-17} -{0.9} +{2024-10-07} +{0.10} { Package for the banner of the newsletter "La Lettre de GUTenberg" } #+end_src ** Packages loaded - -In order to provide class options, we load the \package{l3keys2e} which provides -\LaTeXe{} option processing using \LaTeX3 keys: - - #+begin_src latex -\RequirePackage{l3keys2e} - #+end_src +:PROPERTIES: +:CUSTOM_ID: ImplementationPackagesloaded-etvgxqt0fck0 +:END: Till the Lua-based color will be added to the core \package{l3color} approach, we have to rely on \package{xcolor} @@ -123,32 +128,19 @@ reader who wants to copy the interesting text be able to select it (see below). \RequirePackage{accsupp} #+end_src -What follows has to be done at this end of the preamble, otherwise the font set -with ~\setmainfont~ in the preamble isn't taken in account in the banner. - -We define an option for the color of the text in the "L" (that has to be the -same as the page color of the document). - -#+begin_src latex - \keys_define:nn { letgut-banner } - { - , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist - , pagecolor .initial:n = { 1,1,1 } - } - \ProcessKeysOptions { letgut-banner } -#+end_src - -#+begin_src latex -\AddToHook{begindocument}{ -#+end_src - #+begin_src latex \cs_generate_variant:Nn \color_fill:nn { nV } #+end_src ** Declarations +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarations-u0ygxqt0fck0 +:END: *** Dimensions +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsDimensions-9t0hxqt0fck0 +:END: #+begin_src latex \dim_new:N \g__letgutbanner_area_height_dim @@ -163,6 +155,7 @@ same as the page color of the document). \dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim { \dim_new:N \g__letgutbanner_first_page_shrink_dim } + \dim_new:N \g__letgutbanner_textwidth_dim #+end_src - Dimensions of the page. If the present package is used with the @@ -179,11 +172,9 @@ same as the page color of the document). { 25cm } } \dim_if_exist:NTF \c__letgut_textwidth_dim { - \dim_const:NV \c__letgutbanner_textwidth_dim - \c__letgut_textwidth_dim + \dim_gset_eq:NN \g__letgutbanner_textwidth_dim \c__letgut_textwidth_dim }{ - \dim_const:Nn \c__letgutbanner_textwidth_dim - { 14cm } + \dim_gset:Nn \g__letgutbanner_textwidth_dim { 14cm } } \dim_if_exist:NTF \c__letgut_lmargin_dim { \dim_const:NV \c__letgutbanner_lmargin_dim @@ -260,7 +251,7 @@ same as the page color of the document). margin and the width ($d$) of the "L": $=w+l-(l-d)/2=w+(l+d)/2$). #+begin_src latex \dim_const:Nn \c__letgutbanner_banner_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim + ( \c__letgutbanner_banner_thickness_dim @@ -285,7 +276,7 @@ same as the page color of the document). #+begin_src latex \dim_const:Nn \c__letgutbanner_banner_horizontal_contents_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim - ( \c__letgutbanner_banner_thickness_dim - @@ -297,6 +288,9 @@ same as the page color of the document). #+end_src *** Boxes +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsBoxes-s83hxqt0fck0 +:END: New boxes, for each of the letters in the word "LETTRE" (!), and then for the rest of the content listed in the banner. @@ -312,6 +306,9 @@ rest of the content listed in the banner. #+end_src *** Floating point numbers +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsFloatingpointnumbers-e75hxqt0fck0 +:END: - Minimum percentage of the common height of the letters of the word "LETTRE" that their line spacing must represent. @@ -324,13 +321,16 @@ rest of the content listed in the banner. \fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 } #+end_src -** Application des dimensions de la page +** Applying the page dimensions +:PROPERTIES: +:CUSTOM_ID: ImplementationApplyingthepagedimensions-187hxqt0fck0 +:END: #+begin_src latex \geometry{ asymmetric, textheight = \c__letgutbanner_textheight_dim, - textwidth = \c__letgutbanner_textwidth_dim, + textwidth = \g__letgutbanner_textwidth_dim, lmargin = \c__letgutbanner_lmargin_dim, tmargin = \c__letgutbanner_tmargin_dim, head = \c__letgutbanner_head_dim, @@ -342,6 +342,9 @@ rest of the content listed in the banner. #+end_src ** Filling of the boxes +:PROPERTIES: +:CUSTOM_ID: ImplementationFillingoftheboxes-q49hxqt0fck0 +:END: #+begin_src latex \hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} } \hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} } @@ -354,7 +357,43 @@ rest of the content listed in the banner. \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} } #+end_src +** Options of the package +:PROPERTIES: +:CUSTOM_ID: ImplementationOptionsofthepackage-21ri36v0fck0 +:END: + +We define: + +- an option for the color of the text in the "L" (that has to be the same as the + page color of the document), +- an option that let us choose another letter than “g” as the watermark letter. + +#+begin_src latex + \keys_define:nn { letgut-banner } + { + , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist + , pagecolor .initial:n = { 1,1,1 } + , watermark~ letter .code:n = { + \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{#1} } + } + , watermark~ scale .tl_gset:N = \g__letgutbanner_watermark_scale_tl + , watermark~ scale .initial:n = 1 + } + \ProcessKeyOptions [ letgut-banner ] +#+end_src + +What follows has to be done at this end of the preamble, otherwise the font set +with ~\setmainfont~ in the preamble isn't taken in account in the banner. + +#+begin_src latex +\AddToHook{begindocument}{ +#+end_src + + ** Computations +:PROPERTIES: +:CUSTOM_ID: ImplementationComputations-r7bhxqt0fck0 +:END: Determination of the widths of each of the letter boxes of the word "LETTRE". #+begin_src latex @@ -622,9 +661,13 @@ as well. #+end_src Resize the box containing "g" to the width of the text. #+begin_src latex - \box_gresize_to_wd:Nn \g__letgutbanner_g_box { - \c__letgutbanner_textwidth_dim + \box_gresize_to_wd:Nn \g__letgutbanner_g_box { + \fp_to_dim:n { + \g__letgutbanner_watermark_scale_tl + * + \g__letgutbanner_textwidth_dim } + } #+end_src Calculates the size by which the height of the text box on the 1st page must be reduced so that the banner does not encroach on the text. Relative to the top of @@ -647,6 +690,7 @@ the page: .5\baselineskip } #+end_src + Automatic addition on the 1st page (only) of the banner. #+begin_src latex \AddToHookNext{shipout/background}{ @@ -681,85 +725,91 @@ We put now the big "L" at the right place. The color should not be systematically white, but should be identical to the one chosen for the page background. #+begin_src latex - % \color_fill:nV {rgb}{ \g__letgutbanner_pagecolor_clist } - \color[rgb]{ \g__letgutbanner_pagecolor_clist } - \put( - \g__letgutbanner_banner_padding_dim - , - \g__letgutbanner_La_yoffset_dim - ){ - \box_use:N \g__letgutbanner_La_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -0\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_L_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -1\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_E_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -2\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_T_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -3\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_T_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -4\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_R_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -5\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_E_box - } - \put( - \c__letgutbanner_banner_thickness_dim - , - \c__letgutbanner_GUTenberg_yoffset_dim - ){ - \box_use:N \g__letgutbanner_GUTenberg_box - } - % \color_fill:n {black!10} - \color{ black!10 } - \put( - .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim - , - .5\paperheight - + - .5\c__letgutbanner_banner_height_dim - - - \c__letgutbanner_tmargin_dim - ){ - \box_move_down:nn {.5\c__letgutbanner_textheight_dim} - {\box_use:N \g__letgutbanner_g_box} + % \color_fill:nV {rgb}{ \g__letgutbanner_pagecolor_clist } + \color[rgb]{ \g__letgutbanner_pagecolor_clist } + \put( + \g__letgutbanner_banner_padding_dim + , + \g__letgutbanner_La_yoffset_dim + ){ + \box_use:N \g__letgutbanner_La_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -0\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_L_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -1\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -2\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -3\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -4\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_R_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -5\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \c__letgutbanner_banner_thickness_dim + , + \c__letgutbanner_GUTenberg_yoffset_dim + ){ + \box_use:N \g__letgutbanner_GUTenberg_box + } + % \color_fill:n {black!10} + \color{ black!10 } + \put( + .5\c__letgutbanner_lmargin_dim + + + .5\c__letgutbanner_banner_thickness_dim + + + \fp_to_dim:n { + (1-\g__letgutbanner_watermark_scale_tl)/2*\g__letgutbanner_textwidth_dim + } + , + .5\paperheight + + + .5\c__letgutbanner_banner_height_dim + - + \c__letgutbanner_tmargin_dim + ){ + \box_move_down:nn {.5\c__letgutbanner_textheight_dim} + {\box_use:N \g__letgutbanner_g_box} + } } -} #+end_src We end the part which isn't selectable. #+begin_src latex @@ -789,6 +839,9 @@ textheight of the first page of the height of the horizontal bar of the "L". #+end_src * Example file (=letgut-banner-example.tex=) +:PROPERTIES: +:CUSTOM_ID: Examplefileletgutbannerexampletex-heehxqt0fck0 +:END: #+begin_src latex :tangle ../../../doc/lualatex/letgut/letgut-banner-example.tex :exports none \documentclass[twoside]{article} diff --git a/macros/luatex/latex/letgut/source/letgut.org b/macros/luatex/latex/letgut/source/letgut.org index 2a96939cd7..573e21c3ea 100644 --- a/macros/luatex/latex/letgut/source/letgut.org +++ b/macros/luatex/latex/letgut/source/letgut.org @@ -2,7 +2,7 @@ #+TITLE: Support for the newsletter “La Lettre GUTenberg” #+AUTHOR: Association GUTenberg -#+EMAIL: secretariat@gutenberg.eu.org +#+EMAIL: secretariat@gutenberg-asso.fr #+DESCRIPTION: ... #+KEYWORDS: ... #+LANGUAGE: en @@ -54,7 +54,7 @@ new versions of the class on CTAN. % This field contains the version of the package. % The value is optional. % The value is restricted to 32 characters. - \version{0.9.9 2024-03-07} + \version{0.9.12 2024-10-30} % ------------------------------------------------------------------------- % This field contains the name of the author(s). % The value is optional. @@ -64,7 +64,7 @@ new versions of the class on CTAN. % This field contains the email address of the uploader. % The value is an email address. % The value is restricted to 255 characters. - \email{secretariat@gutenberg.eu.org} + \email{secretariat@gutenberg-asso.fr} % ------------------------------------------------------------------------- % This field contains the name of the uploader. % The value is restricted to 255 characters. @@ -132,7 +132,7 @@ new versions of the class on CTAN. % The value is restricted to 8192 characters. \begin{announcement} ### Fixed - Private scratch variables not declared. + Fatal error in case of to be attached files not found \end{announcement} % ------------------------------------------------------------------------- % This field contains the one-liner for the package. @@ -202,6 +202,34 @@ new versions of the class on CTAN. ## [Unreleased] + ## [0.9.12] - 2024-10-30 + + ### Fixed + Fatal error in case of to be attached files not found + + ### Added + License in the README file + + ## [0.9.11] - 2024-10-23 + + ### Fixed + - Bibliographic files not attached to the PDF + + ## [0.9.10] - 2024-10-07 + + ### Changed + - Multiple rebuses handled + - Paper clips (links to source files of the articles) not in the magin anymore and separated by spaces + - Watermark letter and scale can now be specified + + ### Fixed + - Wrong output with \terminal + - Title of publication in small capitals + - Options of `letgut-banner` never taken in account + - Not all included graphics attached to the PDF + - Variables wrongly local or not reset + - `\citeauthor` displayed family name in small caps + ## [0.9.9] - 2024-03-07 ### Fixed @@ -319,18 +347,23 @@ letgut - Support for the newsletter “La Lettre GUTenberg” ========================================================= About -------- +----- This bundle includes a LaTeX class, a `.sty` file and an acronym file dedicated to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Group. Release ------- -2024-03-07 v0.9.9 +2024-10-30 v0.9.12 Development ----------- Follow development, submit issues and suggest improvements at https://framagit.org/gutenberg/letgut. + +License +------- +Released under the LaTeX Project Public License v1.3c or later. See +https://www.latex-project.org/lppl.txt#+end_src. #+end_src * How to :noexport: @@ -399,13 +432,13 @@ the corresponding `.tex` file (which doesn't derive from an Org Mode file). % -------:| ---------------------------------------------------- % letgut:| Class for the newsletter “La Lettre GUTenberg” % Author:| Association GUTenberg -% E-mail:| secretariat@gutenberg.eu.org +% E-mail:| secretariat@gutenberg-asso.fr % License:| Released under the LaTeX Project Public License % | v1.3c or later % See:| http://www.latex-project.org/lppl.txt % % Copyright (C) 1994-2024 by Association GUTenberg -% <secretariat@gutenberg.eu.org> +% <secretariat@gutenberg-asso.fr> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License (LPPL), either @@ -449,15 +482,22 @@ We define some constant token lists immediately useful. #+begin_src latex \ExplSyntaxOn - \tl_const:Nn \c__letgut_Lettre_tl { \emph{ Lettre } } + \tl_const:Nn \c__letgut_Lettre_plain_tl { Lettre } + \tl_const:Nn \c__letgut_Lettre_tl { \emph{ \c__letgut_Lettre_plain_tl } } \tl_const:Nn \c__letgut_Lettres_tl { \c__letgut_Lettre_tl \emph{ s } } \tl_const:Nn \c__letgut_gutenberg_tl { GUTenberg } \tl_const:Nn \c__letgut_association_tl { association } + \tl_const:Nn \c__letgut_Lettre_gutenberg_plain_tl { + \c__letgut_Lettre_plain_tl~\c_space_tl \c__letgut_gutenberg_tl + } \tl_const:Nn \c__letgut_Lettre_gutenberg_tl { \c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl } + \tl_const:Nn \c__letgut_la_lettre_gutenberg_plain_tl { + la~ \c__letgut_Lettre_gutenberg_plain_tl + } \tl_const:Nn \c__letgut_la_lettre_gutenberg_tl { la~ \c__letgut_Lettre_gutenberg_tl } @@ -471,8 +511,8 @@ Now, we can announce the class name and its version: #+begin_src latex \ProvidesExplClass{letgut} - {2024-03-07} - {0.9.9} + {2024-10-30} + {0.9.12} { Class for the newsletter “The GUTenberg Letter” } @@ -1379,7 +1419,20 @@ We close the ~\AddToHook{begindocument/before}~ argument. \phantomsection \__letgut_old_printbibliography[#1] \bool_if:NT \g__letgut_included_files_attached_bool { - \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {#1}} + \seq_map_inline:Nn \g__letgut_added_bib_resources_seq { + \file_if_exist:nTF {##1}{ + \seq_gput_right:Nn \g__letgut_included_files_seq { + \attachfile[ + description={ + Fichier~ bibliographique~ utilisé~ dans~ le~ + présent~ article~ (fichier~ `\tl_to_str:n{##1}`) + }, + mimetype=application/x-bib + ] + {\tl_to_str:n{##1}} + } + } + } } } #+end_src @@ -1578,7 +1631,10 @@ We now define the options of the class: - ~date~ for the date of the issue, either empty (hence the current (month) date) or at the format ~YYYY-MM~ or as free input, - ~pagecolor~ (relevant only with the (default) ~screen~ load time option) for - a color of the page other than the default one, + a color of the page other than the default one (used behind the scene by the + ~letgut-banner~ package), +- ~watermark letter~ for another letter than the “g” in watermark, +- ~watermark scale~ for the case the letter in watermark is too big, - ~allcolorslinks~ for the color of (all) the links, - ~membership-reminder~ that typesets a membership reminder on the first page, - ~editorial~ depending on the editorial is wanted or not, @@ -1587,7 +1643,7 @@ We now define the options of the class: subparagraphs) detailed or not. #+begin_src latex - \DeclareKeys[ letgut ] + \keys_define:nn { letgut } { , for-readers .bool_gset:N = \g__letgut_for_readers_bool , for-readers .initial:n = { true } @@ -1624,6 +1680,10 @@ We now define the options of the class: } } } + , watermark~ letter .tl_gset:N = \g__letgut_watermark_letter_tl + , watermark~ letter .initial:n = g + , watermark~ scale .tl_gset:N = \g__letgut_watermark_scale_tl + , watermark~ scale .initial:n = 1 , allcolorslinks .code:n = { \colorlet{letgut_allcolors_links}{#1}} , allcolorslinks .initial:V @@ -1688,7 +1748,7 @@ We now define the headers. #+begin_src latex \fancyhf{} \fancyhead[RO,LE]{\thepage} - \fancyhead[RE,LO]{\g__letgut_mark_tl} + \fancyhead[RE,LO]{\scshape \g__letgut_mark_tl} #+end_src - The headers are left offset #+begin_src latex @@ -1889,6 +1949,7 @@ We now define the headers. :END: #+begin_src latex + \int_new:N \g__letgut_rebus_int \NewDocumentCommand{\solution}{}{\tcblower} \NewDocumentCommand{\displaysolutions}{}{% \tcbstoprecording\tcbinputrecords% @@ -1923,25 +1984,27 @@ We now define the headers. }, } } - \NewTColorBox[auto~ counter]{rebus}{+!O{}}{% + \NewTColorBox{rebus}{+!O{}}{% + before~ title~ pre = {\int_gincr:N \g__letgut_rebus_int}, rebus~ style, fonttitle=\bfseries, title={Rébus}, - label={rebus@\thetcbcounter}, - after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}}, + label={rebus@\int_use:N\g__letgut_rebus_int}, + after~ upper={\vpageref[ci-dessous]{solution@\int_use:N\g__letgut_rebus_int}}, after~ upper~ pre={ \par\bigskip\hfill\scriptsize\itshape Solution\c_space_tl }, lowerbox=ignored, - savelowerto=rebus-\thetcbcounter.tex, - record={\string\rebussolution*[\thetcbcounter][][]}, + savelowerto=rebus-\int_use:N\g__letgut_rebus_int.tex, + record={\string\rebussolution*[\int_use:N\g__letgut_rebus_int][][]}, #1 } \NewDocumentCommand{\rebussolution}{s +o o O{}}{% \IfValueTF{#2}{ \begin{tcolorbox}[ rebus~ style, + label=solution@\int_use:N\g__letgut_rebus_int, halign=justify, before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl}, title={ @@ -2014,23 +2077,23 @@ $>0$. # detection of my editor.) #+begin_src latex - > \c_zero_int - {numéro~ \int_use:N\g__letgut_number_int{}~ --~ } - \g__letgut_date_tl - } - \str_if_empty:NTF \g__letgut_@title_str { - \tl_gset:Nn \g__letgut_mark_tl { - \textit{\c__letgut_La_lettre_gutenberg_tl} - } - }{ - \tl_gset:Nn \g__letgut_mark_tl { - \g__letgut_@title_str + > \c_zero_int + {numéro~ \int_use:N\g__letgut_number_int{}~ --~ } + \g__letgut_date_tl + } + \str_if_empty:NTF \g__letgut_@title_str { + \tl_gset:Nn \g__letgut_mark_tl { + \c__letgut_la_lettre_gutenberg_plain_tl + } + }{ + \tl_gset:Nn \g__letgut_mark_tl { + \g__letgut_@title_str + } + } + \tl_gput_right:Nn \g__letgut_mark_tl { + ,~\g__letgut_title_tl + } } - } - \tl_gput_right:Nn \g__letgut_mark_tl { - ,~\g__letgut_title_tl - } - } #+end_src ** First page handling @@ -2059,7 +2122,7 @@ Lettre. { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics*[scale=0.96]{ + \__letgut_orig_includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -2074,11 +2137,13 @@ following code has to be postponed after the former (hence here ~\AddToHook{begindocument}~ and with ~\AddToHook{begindocument/before}~). #+begin_src latex - \msg_term:nn{letgut}{Banner~file~not~provided} - \RequirePackage[pagecolor={\g__letgut_pagecolor_clist}]{ - letgut-banner + \msg_term:nn{letgut}{Banner~file~not~provided} + \RequirePackage[ + , pagecolor = { \g__letgut_pagecolor_clist } + , watermark~ letter = { \g__letgut_watermark_letter_tl } + , watermark~ scale = { \g__letgut_watermark_scale_tl } + ]{letgut-banner} } - } #+end_src Here starts what is automatically added at the beginning of the document. @@ -2595,7 +2660,7 @@ We define the command that lets us specify the newsletter setup. #+begin_src latex \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics*[width=\f@size pt]{ + \__letgut_orig_includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } @@ -3385,7 +3450,11 @@ full name of the authors. \citeauthor } \RenewDocumentCommand {\citeauthor} { O{} O{} m } { - \AtNextCite{\DeclareNameAlias{labelname}{given-family}} + \AtNextCite{ + \DeclareNameAlias{labelname}{given-family} + \protected\def\mkbibnamefamily#1{% + \textnohyphenation{#1}}% + } \__letgut_old_citeauthor[#1][#2]{#3} } #+end_src @@ -3396,7 +3465,7 @@ full name of the authors. :END: #+begin_src latex - \tl_new:N \g__letgut_bookreview_frontcover_tl + \tl_new:N \l__letgut_bookreview_frontcover_tl \tl_new:N \g__letgut_bookreview_bibkey_tl #+end_src The keys options are created. @@ -3404,7 +3473,7 @@ The keys options are created. \keys_define:nn { letgut/bookreview } { title .tl_gset:N = \g__letgut_bookreview_title_tl, - frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl, + frontcover .tl_set:N = \l__letgut_bookreview_frontcover_tl, bibkey .tl_gset:N = \g__letgut_bookreview_bibkey_tl, reviewer .tl_gset:N = \g__letgut_bookreview_reviewer_tl, price .tl_gset:N = \g__letgut_bookreview_price_tl, @@ -3423,59 +3492,73 @@ All these options, when used, must receive a value. We create the new environment for the book reviews. #+begin_src latex - \cs_generate_variant:Nn \msg_warning:nnn { nnV } - \cs_generate_variant:Nn \msg_error:nnnn { nnVV } - \NewDocumentEnvironment{bookreview}{ m } - { - \keys_set:nn { letgut/bookreview } { #1 } - \section{\g__letgut_bookreview_title_tl} - \tl_if_empty:NTF \g__letgut_bookreview_frontcover_tl { - \msg_warning:nnV{letgut}{frontcover-missing}{ - \g__letgut_bookreview_title_tl - } - }{ + \cs_generate_variant:Nn \msg_warning:nnn { nnV } + \cs_generate_variant:Nn \msg_error:nnnn { nnVV } + \NewDocumentEnvironment{bookreview}{ m } + { + \tl_gclear:N \g__letgut_bookreview_price_tl + \keys_set:nn { letgut/bookreview } { #1 } + \section{\g__letgut_bookreview_title_tl} + \tl_if_empty:NTF \l__letgut_bookreview_frontcover_tl { + \msg_warning:nnV{letgut}{frontcover-missing}{ + \g__letgut_bookreview_title_tl + } + }{ #+end_src We check if the front cover file is available against the list of accepted extensions of the ~graphicx~ package. #+begin_src latex - \clist_map_inline:Nn \Gin@extensions { - \file_if_exist:nT{\g__letgut_bookreview_frontcover_tl##1}{ - \bool_set_true:N \l__letgut_tmpa_bool - \clist_map_break: - } - } - \bool_if:NTF \l__letgut_tmpa_bool { - \marginpar{ - \hspace*{\c__letgut_bookreview_frontcover_margin_sep_dim} - % \raggedleft - \raisebox{-\totalheight}{ - \fbox{ - \includegraphics[width=-\c__letgut_title_hoffset_dim]{ - \g__letgut_bookreview_frontcover_tl - } - } + \clist_map_inline:Nn \Gin@extensions { + \file_if_exist:nT{\l__letgut_bookreview_frontcover_tl##1}{ + \bool_set_true:N \l__letgut_tmpa_bool + \clist_map_break: + } + } + \bool_if:NTF \l__letgut_tmpa_bool { + \marginpar{ + \hspace*{\c__letgut_bookreview_frontcover_margin_sep_dim} + % \raggedleft + \raisebox{-\totalheight}{ + \fbox{ + \includegraphics*[width=-\c__letgut_title_hoffset_dim]{ + \l__letgut_bookreview_frontcover_tl } } - }{ - \msg_error:nnVV - {letgut} - {frontcover-file-not-found} - {\g__letgut_bookreview_title_tl} - {\g__letgut_bookreview_frontcover_tl} } } - \noindent - \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}} - \tl_if_empty:NF \g__letgut_bookreview_price_tl{ - .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl € - } - \par + }{ + \msg_error:nnVV + {letgut} + {frontcover-file-not-found} + {\g__letgut_bookreview_title_tl} + {\l__letgut_bookreview_frontcover_tl} + } + } + \noindent + \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}} + \tl_if_empty:NF \g__letgut_bookreview_price_tl{ + .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl € + } + \par }{ \exp_args:NV \author{\g__letgut_bookreview_reviewer_tl} \bool_if:NT \g__letgut_included_files_attached_bool { - \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {##1}} + \seq_map_inline:Nn \g__letgut_added_bib_resources_seq { + \file_if_exist:nTF {##1}{ + \seq_gput_right:Nn \g__letgut_included_files_seq { + \attachfile[ + description={ + Fichier~ bibliographique~ utilisé~ dans~ le~ + présent~ article~ (fichier~ `\tl_to_str:n{##1}`) + }, + mimetype=application/x-bib + ] + {\tl_to_str:n{##1}} + } + } + } } } #+end_src @@ -3628,14 +3711,16 @@ the current directory and is non empty. This will be applied to both the #+begin_src latex \cs_new_protected:Npn \__letgut_attach_non_empty_existing_file:n #1 { - \file_get_size:nN {./#1} \tmpa_tl - \quark_if_no_value:NF \tmpa_tl { - \tl_if_eq:NnF \tmpa_tl {0} { - \seq_gput_left:Nn \g__letgut_included_files_seq { - \attachfile[ - description={Source~ nécessaire~ (fichier~ `#1.tex`)}, - mimetype=application/x-tex] - {#1.tex} + \file_get_size:nN {./#1.tex} \l__letgut_tmpa_tl + \quark_if_no_value:NF \l__letgut_tmpa_tl { + \tl_if_eq:NnF \l__letgut_tmpa_tl {0} { + \file_if_exist:nTF {##1}{ + \seq_gput_left:Nn \g__letgut_included_files_seq { + \attachfile[ + description={Source~ nécessaire~ (fichier~ `#1.tex`)}, + mimetype=application/x-tex] + {#1.tex} + } } } } @@ -3648,7 +3733,9 @@ the current directory and is non empty. This will be applied to both the \FloatBarrier \lstset{ style=__letgut_reset_listings_styles } \acresetall% - \input{#2}% + \begin{refsection} + \input{#2}% + \end{refsection} \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ \__letgut_attach_non_empty_existing_file:n { @@ -3674,7 +3761,7 @@ the current directory and is non empty. This will be applied to both the } } \seq_remove_duplicates:N \g__letgut_included_files_seq - \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } } + \seq_use:Nn \g__letgut_included_files_seq { \c_space_tl } \seq_clear:N \g__letgut_included_files_seq \bool_gset_false:N \g__letgut_acronyms_file_attached_bool \bool_gset_false:N \g__letgut_lstlanguage_file_attached_bool @@ -3699,7 +3786,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \clist_set:Nx \l__letgut_tmpa_clist {\Gin@extensions} \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3 { - \file_if_exist:nTF {#3} { + \file_if_exist:nTF {./#3} { \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ \seq_gput_left:Nn \g__letgut_included_files_seq { @@ -3709,16 +3796,15 @@ to the \pdf{} (if desired, otherwise, use the starred version). présent~ article~ (fichier~ `#3`) }, mimetype=image - ] - {#3} + ]{./#3} } } } - \__letgut_orig_includegraphics[#2]{#3} + \__letgut_orig_includegraphics[#2]{./#3} }{ \bool_gset_false:N \g__letgut_tmpa_bool \clist_map_inline:Nn \l__letgut_tmpa_clist {% - \file_if_exist:nTF {#3##1} { + \file_if_exist:nT {./#3##1} { \clist_map_break:n { \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ @@ -3726,8 +3812,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \attachfile[ description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)}, mimetype=image/##1 - ] - {#3##1} + ]{./#3##1} } } } @@ -3736,11 +3821,11 @@ to the \pdf{} (if desired, otherwise, use the starred version). } } } - \bool_if:NF \g__letgut_tmpa_bool { - \@latex@error{File~ `#3'~ not~ found}% - {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% - \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% - } + % \bool_if:NF \g__letgut_tmpa_bool { + % \@latex@error{File~ `#3'~ not~ found}% + % {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% + % \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% + % } } } \RenewDocumentCommand {\includegraphics} {s O{} m } { @@ -3754,31 +3839,42 @@ to the \pdf{} (if desired, otherwise, use the starred version). :END: We hack the ~\addbibresource~ command in order to attach the bibliographic -ressources to the \pdf{} (if desired, otherwise, use the starred version). +ressources to the \pdf{}. #+begin_src latex - \NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource} - \cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3 + \cs_new:Nn \__letgut_extract_file_for:nn { - \file_if_exist:nT {#3} { - \IfBooleanF {#1}{ - \seq_gput_left:Nn \g__letgut_added_bib_resources_seq { - \attachfile[ - description={ - Source~ du~ fichier~ bibliographique~ utilisé~ - dans~ le~ présent~ article~ (fichier~ `#3`) - }, - mimetype=application/x-bibtex - ]% - {#3}% + \seq_clear:N \g__letgut_added_bib_resources_seq + \regex_extract_all:nnNT + { + \c{ #1 } \[?.*?\]? \{ ( .*? ) \} + } + { + #2 + } + \g__letgut_added_bib_resources_seq + { + \seq_map_indexed_inline:Nn \g__letgut_added_bib_resources_seq { + \int_if_odd:nT {##1} + { + \seq_gset_item:Nnn \g__letgut_added_bib_resources_seq {##1} {} } } + \seq_gremove_duplicates:N \g__letgut_added_bib_resources_seq + \seq_gpop:NN \g__letgut_added_bib_resources_seq \l_tmpa_tl } + } + \NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource} + \cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3 + { \__letgut_orig_addbibresource[#2]{#3} } \RenewDocumentCommand {\addbibresource} { s O{} m } { \__letgut_addbibresource:nnn {#1} {#2} {#3} } + \AddToHookWithArguments{cmd/sa@gobble/before}{ + \__letgut_extract_file_for:nn { addbibresource }{ #1 } + } #+end_src *** Added acronym definitions file attached to the PDF @@ -3792,14 +3888,16 @@ file to the \pdf{}. #+begin_src latex \bool_if:NT \g__letgut_included_files_attached_bool { \tl_const:Nn \c__letgut_acronyms_file_attached_tl { - \attachfile[ - description={ - Source~ du~ fichier~ d'acronymes~ utilisé~ dans~ - le~ présent~ article~ - (fichier~ `\c__letgut_acronyms_file_tl.tex`) - }, - mimetype=application/x-tex]% - {\g__letgut_effective_acronyms_file_tl}% + \file_if_exist:nTF {\g__letgut_effective_acronyms_file_t}{ + \attachfile[ + description={ + Source~ du~ fichier~ d'acronymes~ utilisé~ dans~ + le~ présent~ article~ + (fichier~ `\c__letgut_acronyms_file_tl.tex`) + }, + mimetype=application/x-tex]% + {\g__letgut_effective_acronyms_file_tl}% + } } \AddToHook{cmd/ac/before}{ \bool_gset_true:N \g__letgut_acronyms_file_attached_bool @@ -3820,15 +3918,19 @@ file to the \pdf{}. #+begin_src latex \bool_if:NT \g__letgut_included_files_attached_bool { - \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl { - \attachfile[ - description={ - Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~ - dans~ le~ présent~ article~ - (fichier~ `\c__letgut_lstlanguage_file_tl`) - }, - mimetype=application/x-tex]% - {../\c__letgut_lstlanguage_file_tl}% + \file_if_exist:nTF {../\c__letgut_lstlanguage_file_tl}{ + \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl { + \attachfile[ + description={ + Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~ + dans~ le~ présent~ article~ + (fichier~ `\c__letgut_lstlanguage_file_tl`) + }, + mimetype=application/x-tex]% + {../\c__letgut_lstlanguage_file_tl}% + } + }{ + \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl {} } \AddToHook{env/ltx-code/before}{ \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool @@ -4044,7 +4146,7 @@ The functions: } \cs_new_protected:Npn \__letgut_title_code_result_box:n #1 { - Exemple~ \thetcbcounter + Exemple\nobreakspace\thetcbcounter \tl_if_empty:NF {#1} { \hypersetup{hidelinks} \c_space_tl :~#1 } } \cs_new_protected:Nn \__letgut_on_callout_page:nn @@ -4478,41 +4580,18 @@ We define some colors used in the terminal listings. style=__letgut_terminal_listings_style, language=terminal, }, - every~ listing~ line={% - \textcolor{__letgut_terminal_prompt}{% - \ttfamily% - \bfseries% - \__letgut_unselectable:n {#1\c_space_tl} - } - }, + fontupper=\ttfamily, + fontlower=\ttfamily, }, } #+end_src - We define now the command + We now define the command. #+begin_src latex \cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4 { \bool_set_false:N \l__letgut_tmpa_bool - \tl_if_empty:nF {#3}{ - \tcbset{tempfile=\jobname-stdin.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #3 - \token_to_str:N\end{tcbwritetemp} - } - } - \tl_if_empty:nF {#4}{ - \tcbset{tempfile=\jobname-stdout.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #4 - \token_to_str:N\end{tcbwritetemp} - } - } \tl_if_empty:nTF {#3}{ \tl_if_empty:nTF {#4}{ \bool_set_true:N \l__letgut_tmpa_bool @@ -4521,24 +4600,25 @@ We define some colors used in the terminal listings. } }{ \tcbset{colback=__letgut_background_terminal_stdin} - \tl_if_empty:nTF {#4}{ - }{ + \tl_if_empty:nF {#4}{ \tcbset{ bicolor, - middle=0mm, - boxsep=0mm, colbacklower=__letgut_background_terminal_stdout, } } } \bool_if:NF \l__letgut_tmpa_bool { - \begin{tcolorbox}[terminal={#1},#2] + \begin{tcolorbox}[terminal,#2] \lstset{aboveskip=0pt} \tl_if_empty:nF {#3}{ - \tcbset{ - tempfile=\jobname-stdin.tex, + \tl_if_empty:nF {#1}{ + \textcolor{__letgut_terminal_prompt}{% + \ttfamily% + \bfseries% + \__letgut_unselectable:n {#1\c_space_tl} + } } - \tcbusetemplisting + #3 \tl_if_empty:nF {#4}{ \tcblower } @@ -4548,13 +4628,12 @@ We define some colors used in the terminal listings. \lstset{aboveskip=0pt} } \tcbset{ - tempfile=\jobname-stdout.tex, every~ listing~ line={}, listing~ options~ app={ language={} } } - \tcbusetemplisting + #4 } \end{tcolorbox} } @@ -4575,14 +4654,14 @@ We define some colors used in the terminal listings. :CUSTOM_ID: ImplementationListingsUnicodecharacterswithpositionsabove256-4l6h55h0jlj0 :END: -Unicode characters with positions above 256 causes troubles in +Unicode characters with positions above 256 cause troubles in listings. Here is a workaround for some of them (see https://tex.stackexchange.com/a/25396). #+begin_src latex \lst@InputCatcodes \def\lst@DefEC{% - \lst@CCECUse \lst@ProcessLetter + \lst@CCECUse \lst@ProcessLetter ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% @@ -4591,11 +4670,16 @@ https://tex.stackexchange.com/a/25396). ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% - ^^^^201c^^^^201d% for “ and ” + ^^^^201c% for “ + ^^^^201d% for ” ^^^^215b% for ⅛ ^^^^2122% for ™ ^^^^2019% for ’ ^^^^0153% for œ + ^^^^0152% for Œ + ^^^^20ac% for € + ^^^^27e8% for ⟨ + ^^^^27e9% for ⟩ ^^00% } \lst@RestoreCatcodes @@ -4646,7 +4730,7 @@ several purposes: - the books advertisements. #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.lbx :exports both -\ProvidesFile{letgut.lbx}[2024-03-07 v0.9.9 letgut localization] +\ProvidesFile{letgut.lbx}[2024-10-30 v0.9.12 letgut localization] \InheritBibliographyExtras{french} \DeclareBibliographyStrings{ inherit = {french}, @@ -4660,7 +4744,7 @@ several purposes: create the corresponding new entry). #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.dbx :exports both - \ProvidesFile{letgut.dbx}[2024-03-07 v0.9.9 letgut data model macros] + \ProvidesFile{letgut.dbx}[2024-10-30 v0.9.12 letgut data model macros] \DeclareBibliographyDriver{bookreview}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -4715,7 +4799,7 @@ several purposes: We provide a specific ~biblatex~ citation style . #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both - \ProvidesFile{letgut.cbx}[2024-03-07 v0.9.9 letgut base citation style] + \ProvidesFile{letgut.cbx}[2024-10-30 v0.9.12 letgut base citation style] \RequireCitationStyle{numeric} #+end_src @@ -4879,162 +4963,166 @@ well... :CUSTOM_ID: ProvidedfilesInformationsabout\gutenberg-hqah55h0jlj0 :END: - #+begin_src latex :tangle ../../../tex/lualatex/letgut/informations-gut.tex :exports both - % Hey, Emacs! This is a -*- mode: latex -*- file! +#+begin_src latex :tangle ../../../tex/lualatex/letgut/informations-gut.tex :exports both + % Hey, Emacs! This is a -*- mode: latex -*- file! - \enlargethispage{1.5cm} - \small - \vspace*{-1cm} - \hspace*{-1.5cm}% - \raisebox{-\height+0.7\baselineskip}{% - \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% - \includegraphics*[width=\linewidth]{logo-gut.pdf} - \end{minipage}% - }% - \hfill% - \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% - \footnotesize\raggedleft% - Association \gut{}\\ - 15 rue des Halles -- \textsc{bp} 74\\ - 75001 Paris\\ - France\\ - \url{secretariat[at]gutenberg[dot]eu[dot]org} - \end{minipage}% - - \begin{description} - \item[Site Internet :] \url{https://www.gutenberg-asso.fr/} - \item[\Cahiers{} :] \url{http://www.numdam.org/journals/CG/} - \item[Problèmes techniques :] - \leavevmode - \begin{description} - \item[la liste \texttt{gut} :] - \url{https://www.gutenberg-asso.fr/-Listes-de-diffusion-} - \item[le site \hologo{TeX}nique de questions et réponses :] - \url{https://texnique.fr/} - \item[la foire aux questions :] - \url{https://faq.gutenberg-asso.fr/} - \end{description} - \end{description} - % - \alertbox{% - Cette association est la vôtre : faites-nous part de - vos idées, de vos envies, de vos préoccupations - à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.% - } + \enlargethispage{1.5cm} + \scriptsize + \vspace*{-1cm} + \hspace*{-1.5cm}% + \ExplSyntaxOn + \raisebox{-\height+0.7\baselineskip}{% + \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% + \__letgut_orig_includegraphics*[width=\linewidth]{logo-gut.pdf} + \end{minipage}% + }% + \ExplSyntaxOff + \hfill% + \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% + \footnotesize\raggedleft% + Association \gut{}\\ + 15 rue des Halles -- \textsc{bp} 74\\ + 75001 Paris\\ + France\\ + \url{secretariat[at]gutenberg-asso[dot]fr} + \end{minipage}% - % \section[Association GUTenberg (tout sur l')] - % {Adhésion à l'association} - \title{Adhésion à l'association} - \label{letgut_label_adhesions} - - \begin{itemize} - \item % Adhésions et abonnements - Les adhésions sont à renouveler en début d'année - pour l'année civile. - % \item Il n'y a pas de lettre de rappel, chaque membre - % doit faire son renouvellement annuel; %\hspace*{1em} - % merci de renvoyer spontanément le bulletin ci-dessous - % en début d'année. - \item Les administrations peuvent joindre un bon de commande - revêtu de la signature de la personne responsable ; - les étudiants doivent joindre un justificatif. - % \item Si vous souhaitez que vos coordonnées restent - % confidentielles, merci de le signaler. - \end{itemize} - - \vspace*{-0.7cm} - \section{Tarifs \the\year} - - Les membres de \gut\ peuvent adhérer à l'association - internationale, le \acf{tug}, et recevoir son bulletin - \tugboat{} à un tarif préférentiel : - \begin{description} - \item[tarif normal :] 65~€ (au lieu de 85~\$) - \item[tarif étudiant :] 40~€ (au lieu de 55~\$) - \end{description} - % (49~€50}, étudiants et demandeurs d'emploi : - % 29~€, au lieu de 85\$ et % 65\$). Voir - % \url{% - % https://www.gutenberg-asso.fr/?Adherer-en-ligne% - % }. - - \footnotesize - \begin{center} - \begin{tabular}{lr} - \toprule - \textbf{Type d'adhésion} & \textbf{Prix} \\ - \midrule - Membre individuel & 30~€ \\ - Membre individuel + adhésion \acs{tug} & 95~€ \\ - Membre individuel étudiant/demandeur d'emploi & 15~€ \\ - Membre individuel étudiant + adhésion \acs{tug} & 55~€ \\ - Association d'étudiants & 65~€ \\ - Organisme à but non lucratif & 130~€ \\ - Organisme à but lucratif & 229~€ \\ - \bottomrule - \end{tabular} - \end{center} - - \section{Règlements} - - Les règlements peuvent s'effectuer par : - \begin{itemize} - \item \textbf{virement bancaire}% - \footnote{Nous vous remercions de \textbf{privilégier} - le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : - FR76 1870 7000 3003 0191 3568 475)% - \leavevmode - - \alertbox{% - Veillez à bien \emph{indiquer vos nom et prénom} - dans les références du virement !% - } - \item Paypal\footnotemark[\value{footnote}] : - \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne} - \item bulletin et chèque\footnotemark[\value{footnote}] : - \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association} - \end{itemize} + \begin{description} + \item[Site Internet :] \url{https://www.gutenberg-asso.fr/} + \item[\Cahiers{} :] \url{http://www.numdam.org/journals/CG/} + \item[Problèmes techniques :] + \leavevmode + \begin{description} + \item[la liste \texttt{gut} :] + \url{https://www.gutenberg-asso.fr/-Listes-de-diffusion-} + \item[le site \hologo{TeX}nique de questions et réponses :] + \url{https://texnique.fr/} + \item[la foire aux questions :] + \url{https://faq.gutenberg-asso.fr/} + \end{description} + \end{description} + % + \alertbox{% + Cette association est la vôtre : faites-nous part de + vos idées, de vos envies, de vos préoccupations + à l'adresse \url{secretariat[at]gutenberg-asso[dot]fr}.% + } + + % \section[Association GUTenberg (tout sur l')] + % {Adhésion à l'association} + \title{Adhésion à l'association} + \label{letgut_label_adhesions} + + \begin{itemize} + \item % Adhésions et abonnements + Les adhésions sont à renouveler en début d'année + pour l'année civile. + % \item Il n'y a pas de lettre de rappel, chaque membre + % doit faire son renouvellement annuel; %\hspace*{1em} + % merci de renvoyer spontanément le bulletin ci-dessous + % en début d'année. + \item Les administrations peuvent joindre un bon de commande + revêtu de la signature de la personne responsable ; + les étudiants doivent joindre un justificatif. + % \item Si vous souhaitez que vos coordonnées restent + % confidentielles, merci de le signaler. + \end{itemize} + + \vspace*{-0.7cm} + \section{Tarifs \the\year} + + Les membres de \gut\ peuvent adhérer à l'association + internationale, le \acf{tug}, et recevoir son bulletin + \tugboat{} à un tarif préférentiel : + \begin{description} + \item[tarif normal :] 65~€ (au lieu de 85~\$) + \item[tarif étudiant :] 40~€ (au lieu de 55~\$) + \end{description} + % (49~€50}, étudiants et demandeurs d'emploi : + % 29~€, au lieu de 85\$ et % 65\$). Voir + % \url{% + % https://www.gutenberg-asso.fr/?Adherer-en-ligne% + % }. + + \footnotesize + \begin{center} + \begin{tabular}{lr} + \toprule + \textbf{Type d'adhésion} & \textbf{Prix} \\ + \midrule + Membre individuel & 30~€ \\ + Membre individuel + adhésion \acs{tug} & 95~€ \\ + Membre individuel étudiant/demandeur d'emploi & 15~€ \\ + Membre individuel étudiant + adhésion \acs{tug} & 55~€ \\ + Association d'étudiants & 65~€ \\ + Organisme à but non lucratif & 130~€ \\ + Organisme à but lucratif & 229~€ \\ + \bottomrule + \end{tabular} + \end{center} + + \section{Règlements} + + Les règlements peuvent s'effectuer par : + \begin{itemize} + \item \textbf{virement bancaire}% + \footnote{Nous vous remercions de \textbf{privilégier} + le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : + FR76 3000 3001 0900 0372 6086 280)% + \leavevmode + + \alertbox{% + Veillez à bien \emph{indiquer vos nom et prénom} + dans les références du virement !% + } + \item Paypal\footnotemark[\value{footnote}] : + \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne} + \item bulletin et chèque\footnotemark[\value{footnote}] : + \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association} + \end{itemize} - \vfill + \vfill - \begin{center} - \begin{tblr}{ - width=.75\linewidth, - colspec={ - % < (Just not to disturb the parentheses - % balancing detection of my editor.) - >{\bfseries}r@{ }X - }, - vline{1,3}={solid}, - hline{1,7}={solid}, - rowsep=0mm, - row{1} = {abovesep+=.25cm}, - row{2} = {belowsep+=.125cm}, - row{6} = {belowsep+=.25cm}, - % colsep=2.5mm, - } - \SetCell[c=2]{c} \emph{La \lettregut}\\ - \SetCell[c=2]{c} \mdseries Bulletin irrégulomestriel - de l'association \gut\\ - Directeur de la publication : - & \person{Bideault, Patrick} \\ - Comité de rédaction : - & {Patrick Bideault, Denis Bitouzé, \\ - Céline Chevalier \& Maxime Chupin} \\ - Adresse de la rédaction : & - { - Association \gut\\ - 15 rue des Halles -- \textsc{bp} 74\\ - 75001 Paris - } - \\ - \acs{issn} : & \letgutissn - \end{tblr} - \end{center} - \vfill - \mbox{} - \clearpage - #+end_src + \mbox{} + + \vfill{} + + \begin{center} + \begin{tblr}{ + width=.9\linewidth, + colspec={ + % < (Just not to disturb the parentheses + % balancing detection of my editor.) + >{\bfseries}r@{ }X + }, + vline{1,3}={solid}, + hline{1,7}={solid}, + rowsep=0mm, + row{1} = {abovesep+=.25cm}, + row{2} = {belowsep+=.125cm}, + row{6} = {belowsep+=.25cm}, + % colsep=2.5mm, + } + \SetCell[c=2]{c} \emph{La \lettregut}\\ + \SetCell[c=2]{c} \mdseries Bulletin irrégulomestriel + de l'association \gut\\ + Directeur de la publication : + & \person{Bideault, Patrick} \\ + Comité de rédaction : + & {Patrick Bideault, Denis Bitouzé, \\ + Céline Chevalier, Maxime Chupin \& Bastien Dumont} \\ + Adresse de la rédaction : & + { + Association \gut\\ + 15 rue des Halles -- \textsc{bp} 74\\ + 75001 Paris + } + \\ + \acs{issn} : & \letgutissn + \end{tblr} + \end{center} + \clearpage +#+end_src ** Acronyms :PROPERTIES: diff --git a/macros/luatex/latex/longmath/README b/macros/luatex/latex/longmath/README index da1e522891..5699c68b84 100644 --- a/macros/luatex/latex/longmath/README +++ b/macros/luatex/latex/longmath/README @@ -23,16 +23,12 @@ A special environment is provided as well, which allows multi line expressions to be placed inside a displayed equation and make TeX do the line splitting and alignment. -This is the first and in parts still experimental version. If anyone -actually uses it, the author would be happy to receive bug reports, -critics and suggestions. - (c) 2024 Hans-Jürgen Matschull [ hjm.tex@matschull.net ] This work may be distributed and/or modified under the conditions of the LaTeX Project Public License version 1.3 or later. -The following files belong to the longmath package version 0.1: +The following files belong to the longmath package version 1.0: package and documentation: longmath.sty longmath.lua longmath-doc.pdf diff --git a/macros/luatex/latex/longmath/longmath-doc.cls b/macros/luatex/latex/longmath/longmath-doc.cls index 04ce8b2e3d..6ff03fc094 100644 --- a/macros/luatex/latex/longmath/longmath-doc.cls +++ b/macros/luatex/latex/longmath/longmath-doc.cls @@ -1,5 +1,5 @@ %% -%% longmath-doc.cls is part of longmath version 0.1. +%% longmath-doc.cls is part of longmath version 1.0. %% %% (c) 2024 Hans-Jürgen Matschull %% @@ -18,7 +18,7 @@ %% see README for a list of files belonging to longmath. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{longmath-doc}[2024/03/25] +\ProvidesClass{longmath-doc}[2024/07/04] \LoadClass[a4paper,10pt]{scrartcl} \RequirePackage{geometry} \geometry{hmargin=20mm,vmargin={20mm,30mm}} diff --git a/macros/luatex/latex/longmath/longmath-doc.lua b/macros/luatex/latex/longmath/longmath-doc.lua index e334cc2e57..56da1ef4d0 100644 --- a/macros/luatex/latex/longmath/longmath-doc.lua +++ b/macros/luatex/latex/longmath/longmath-doc.lua @@ -1,5 +1,5 @@ -- --- longmath-doc.lua is part of longmath version 0.1. +-- longmath-doc.lua is part of longmath version 1.0. -- -- (c) 2024 Hans-Jürgen Matschull -- diff --git a/macros/luatex/latex/longmath/longmath-doc.pdf b/macros/luatex/latex/longmath/longmath-doc.pdf Binary files differindex 2d82bd0a3f..84093de436 100644 --- a/macros/luatex/latex/longmath/longmath-doc.pdf +++ b/macros/luatex/latex/longmath/longmath-doc.pdf diff --git a/macros/luatex/latex/longmath/longmath-doc.tex b/macros/luatex/latex/longmath/longmath-doc.tex index 8e64064d87..516e1d22cf 100644 --- a/macros/luatex/latex/longmath/longmath-doc.tex +++ b/macros/luatex/latex/longmath/longmath-doc.tex @@ -1,5 +1,5 @@ %% -%% longmath-doc.tex is part of longmath version 0.1. +%% longmath-doc.tex is part of longmath version 1.0. %% %% (c) 2024 Hans-Jürgen Matschull %% @@ -46,10 +46,6 @@ or across the whole document. A special environment is provided as well, which allows multi line expressions to be placed inside a displayed equation and make \TeX\ do the line splitting and alignment. - -This is the first and in parts still experimental version. If anyone -actually uses it, the author would be happy to receive bug reports, -critics and suggestions. } \newcommand{\icol}[1]{% inline column vector @@ -116,10 +112,10 @@ critics and suggestions. \node[color=yellow!85!black,rotate=-17,scale=1.8] at (-0.7,0) {$\displaystyle \mathcal{L} = \begin{longmath}[t]{110mm+30mm} \lagrange \end{longmath}$}; \node[txt,scale=1.8] at (0,7.2) {\Huge\textbf{\p{longmath}}}; - \node[txt,scale=1.2] at (0,5.4) {\Large Documentation for Version 0.1}; + \node[txt,scale=1.2] at (0,5.4) {\Large Documentation for Version 1.0}; \node[txt,scale=1.2] at (0,4.0) {\large Hans-Jürgen Matschull}; \node[txt,scale=1.2] at (0,3.3) {\texttt{hjm.tex@matschull.net}}; - \node[txt,scale=1.2] at (0,1.7) {\texttt{2024/03/25}}; + \node[txt,scale=1.2] at (0,1.7) {\texttt{2024/07/04}}; \node[txt,scale=1.0] at (0,-3) {\begin{minipage}{130mm}\parskip 1.3ex \intro\end{minipage}}; \end{tikzpicture} \end{center} @@ -130,7 +126,7 @@ critics and suggestions. \lineskip 2pt plus 1pt \lineskiplimit 2pt -\newpage +\newpage \section{Delimiters} \label{delims} @@ -142,6 +138,8 @@ The \p{longmath} package provides ``long'' versions of the "\left" and "\right" \comm{"\rright" [°scale°] °delimiter°} marks the end of a delimiter group and inserts a closing °delimiter°. The optional °scale° argument will be explained below. The °delimiter° can be anything that is also accepted by "\left" and "\right", including a dot representing an invisible or null delimiter, any character with a "\delcode", or an explicit "\delimiter" or "\Udelimiter". If you want to use the \p{longmath} package with existing documents, or just stick to the familiar notation, and provided that this does not cause conflicts with other packages manipulating the original primitives, it is even save to say "\let\left\lleft" and "\let\right\rright". + +Here is a simple example. Of course, as \LaTeX\ authors, we should better use some math environment instead of "$$", but let's stick to them here just to save some space, and indicate that everything should work regardless of what environment we use. \begin{code} The Sellmann-Yokuzi contribution to the Johansson Entropy is given by @@ -667,61 +665,51 @@ If the nesting level exceeds the number of sample pairs provided, the outermost D + \frac{ \lleft* X + Y \rright* × Z }{ W } \rright* · E \rright* · F \rright* · G \rright* $$ \end{exec} -If variable delimiters are mixed with explicit delimiters, there is an interaction between them. If you use one of the pairs from the collection, it is treated as if it was inserted automatically. Any enclosing bracket will be the next one from the collection. Let's define a larger collection to demonstrate this. +Automatic delimiters can be mixed with explicit delimiters. When the nesting level is determined, only the "*" delimiters are taken into account. To demonstrate this, let's choose a different collection and set a negative value for "\delimitershortfall". This makes the bracket size increase linearly with the nesting level. \autodelimiters{ < \lceil \lfloor [ \{ ( * ) \} ] \rfloor \rceil > } \begin{code*} - \autodelimiters{ < \lceil \lfloor [ \{ ( * ) \} ] \rfloor \rceil > } + \delimitershortfall -2pt + \autodelimiters{ < \lceil \lfloor [ \{ ( * ) \} ] \rfloor \rceil > } \end{code*} -This is what we get with automatic brackets only. The numbers indicate the actually used level. A negative value for "\delimitershortfall" makes the bracket size increase linearly with the nesting level. +This is what we get with automatic brackets only. The numbers indicate the actually used level. \begin{code} - \delimitershortfall -2pt $$ \lleft* 5 + \lleft* 4 + \lleft* 3 + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* + C \rright* + D \rright* + E \rright* $$ \end{code} -\begin{exec} +\begin{exec}\: \delimitershortfall -2pt $$ \lleft* 5 + \lleft* 4 + \lleft* 3 + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* + C \rright* + D \rright* + E \rright* $$ \end{exec} -If we replace the second level by explicit square brackets, these are identified as the third level, and the counting continues from there. +If we replace the second level by explicit square brackets, the counting continues at the third level. \begin{code} - $$ \lleft* 6 + \lleft* 5 + \lleft* 4 - + \lleft[ 3 + \lleft* 1 + A \rright* + B \rright] + $$ \lleft* 4 + \lleft* 3 + \lleft* 2 + + \lleft[ 0 + \lleft* 1 + A \rright* + B \rright] + C \rright* + D \rright* + E \rright* $$ \end{code} \begin{exec}\: \delimitershortfall -2pt - $$ \lleft* 6 + \lleft* 5 + \lleft* 4 - + \lleft[ 3 + \lleft* 1 + A \rright* + B \rright] + $$ \lleft* 4 + \lleft* 3 + \lleft* 2 + + \lleft[ 0 + \lleft* 1 + A \rright* + B \rright] + C \rright* + D \rright* + E \rright* $$ \end{exec} -And here the counting restarts further out. -\begin{code} - $$ \lleft* 2 + \lleft( 1 + \lleft* 3 - + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* - + C \rright* + D \rright) + E \rright* $$ -\end{code} -\begin{exec}\: - \delimitershortfall -2pt - $$ \lleft* 2 + \lleft( 1 + \lleft* 3 - + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* - + C \rright* + D \rright) + E \rright* $$ -\end{exec} -A pair that is not in the collection is ignored and the counting continues at the next level. +And here two levels are skipped. \begin{code} - $$ \lleft* 4 + \lleft* 3 + \lleft\uparrow 0 - + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* - + C \rright\downarrow + D \rright* + E \rright* $$ + $$ \lleft* 3 + \lleft| 0 + \lleft* 2 + + \lleft[ 0 + \lleft* 1 + A \rright* + B \rright] + + C \rright* + D \rright| + E \rright* $$ \end{code} \begin{exec}\: \delimitershortfall -2pt - $$ \lleft* 4 + \lleft* 3 + \lleft\uparrow 0 - + \lleft* 2 + \lleft* 1 + A \rright* + B \rright* - + C \rright\downarrow + D \rright* + E \rright* $$ + $$ \lleft* 3 + \lleft| 0 + \lleft* 2 + + \lleft[ 0 + \lleft* 1 + A \rright* + B \rright] + + C \rright* + D \rright| + E \rright* $$ \end{exec} -If variable delimiters are tagged and aligned, this also applies to the chosen delimiter from the collection. Here is a typical example. Without tagging, we get this. +In the first experimental version of this packages, there was an interaction between automatic and explicit brackets. This has been removed. It didn't work well with linked groups, and it caused problems with bracktes used for purposes other than grouping, like function arguments, binomial coeffiecients etc. + +If automatic delimiters are tagged and aligned, this also applies to the chosen delimiter from the collection. Here is a typical example. Without tagging, we get this. \begin{code} $$ \lleft * \frac{ n+1 }{ n^2 } \rright * ^2 + \lleft * \frac{ n }{ \lleft * n - 1 \rright *^2 } %%% @@ -743,7 +731,7 @@ If the outer brackets are aligned, both become second level brackets. + \lleft {qx} * \frac{ n }{ \lleft * n - 1 \rright *^2} \rright * ^2 $$ \end{exec} -As a last challenge, let's consider the array from the previous section with a slight modification. If we replace all brackets with variable delimiters, but do not link the cells, we get this. +As a last challenge, let's consider the array from the previous section with a slight modification. If we replace all brackets with automatic delimiters, but do not link the cells, we get this. \begin{code} $$ \begin{array}{dsdsdsd} \lleft * Z & - & \sum_k A & × & @@ -882,7 +870,7 @@ To make this look a bit nicer, you can add some extra space to the width of the $$ \lleft[ \begin{longmath}[c]{0.33+0.07} \polyA \end{longmath} \rright] = - \lleft[ \begin{longmath}[c]{0.33+0.0.7} + \lleft[ \begin{longmath}[c]{0.33+0.07} \lleft( \polyB \rright) \cdot %%% \lleft( \polyC \rright) \end{longmath} \rright] $$ diff --git a/macros/luatex/latex/longmath/longmath.lua b/macros/luatex/latex/longmath/longmath.lua index 56c64c8cdb..05524096ca 100644 --- a/macros/luatex/latex/longmath/longmath.lua +++ b/macros/luatex/latex/longmath/longmath.lua @@ -1,5 +1,5 @@ -- --- longmath.lua is part of longmath version 0.1. +-- longmath.lua is part of longmath version 1.0. -- -- (c) 2024 Hans-Jürgen Matschull -- @@ -141,15 +141,16 @@ local function set_delim( head, level, ht, dp ) if brks then brks = brks[type] end if type and auto and brks then delim_set( delim, brks[level] ) - elseif type and brks then - level = nil - for l = 1, #brks do if delim_eq( brks[l], delim ) then level = l break end end else level = nil end local scale = node.get_attribute( hbox, attr_info ) - hbox.height, hbox.depth = ht * scale // 1000, dp * scale // 1000 - if delim_eq( delim, delim_null ) then hbox.width = hbox.width * 2 end + hbox.height, hbox.depth = ht * scale // 1000, dp * scale // 1000 + if delim_eq( delim, delim_null ) then + hbox.width = -2 * tex.dimen.nulldelimiterspace + else + hbox.width = -tex.dimen.nulldelimiterspace + end return level end diff --git a/macros/luatex/latex/longmath/longmath.sty b/macros/luatex/latex/longmath/longmath.sty index 2b4848db3c..47a99ce8fa 100644 --- a/macros/luatex/latex/longmath/longmath.sty +++ b/macros/luatex/latex/longmath/longmath.sty @@ -1,5 +1,5 @@ %% -%% longmath.sty is part of longmath version 0.1. +%% longmath.sty is part of longmath version 1.0. %% %% (c) 2024 Hans-Jürgen Matschull %% @@ -18,7 +18,7 @@ %% see README for a list of files belonging to longmath. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{longmath}[2024/03/25] +\ProvidesPackage{longmath}[2024/07/04] \RequirePackage{luatexbase} @@ -89,8 +89,7 @@ \setattribute\longmath@info{\mathstyle} \special{\longmath@comm} \longmath@type\bgroup \longmath@left . \aftergroup\egroup \aftergroup\endgroup \begingroup \setattribute\longmath@info{\ifnum \longmath@yscale < 1 \longmath@xscale \else \longmath@yscale \fi} - \hbox to -\nulldelimiterspace{} \endgroup - \longmath@right } + \hbox{} \endgroup \longmath@right } % magic number to identify the variable delimiter. @@ -174,13 +173,13 @@ } % End of longmath environment. -% If the width of the box is smaller than the requsted width, just use it as is. +% If the width of the box is smaller than the requested width, just use it as is. % Otherwise, modify the requested width if the * version was used. % Then \unhbox the content into a paragraph with the requested width. % \box0 and \box1 are used to adapt the baselineskip to the math style. % \leftskip and \rightskip are set such that lines are centered but not justified. % The glue is removed from the beginning of the first line with \hskip, -% and from the end of the last line with \parfilskip. +% and from the end of the last line with \parfilskip. % If \longmath@extra is non-zero, Lua will stack the lines of the paragraph. \def\longmath@end{$\egroup \ifdim \wd\longmath@box < \dimexpr \longmath@width + \longmath@extra \relax diff --git a/macros/luatex/latex/luamml/README.md b/macros/luatex/latex/luamml/README.md new file mode 100644 index 0000000000..afdf86e6f0 --- /dev/null +++ b/macros/luatex/latex/luamml/README.md @@ -0,0 +1,14 @@ +# LuaMML: Automated LuaLaTeX math to MathML conversion +This is an attempt to implement automatic conversion of LuaLaTeX inline and display math expressions into MathML code to aid with tagging. +It works best with `unicode-math`, but it can also be used with traditional math fonts if mappings to Unicode are provided. + +## Installation +Run `l3build install` to install `luamml` into your local `texmf` tree. + +## Usage +Add `\usepackage[tracing]{luamml-demo}` to print MathML to the terminal or `\usepackage[files]{luamml-demo}` to generate separate files with MathML output. +Alternatively it can be used with latex-lab to automatically integrate with tagging infrastucture. + +<!-- Also see a [`tagpdf` experiment using this to tag PDF formulas](https://github.com/u-fischer/tagpdf/blob/develop/experiments/exp-mathml-lua.tex). --> + +<!-- If you are very brave you can also try running `pdflatex test_pdf` and afterwards run `./pdfmml.lua test_pdf.lua` to get pdflatex formulas converted. --> diff --git a/macros/luatex/latex/luamml/luamml-amsmath.lua b/macros/luatex/latex/luamml/luamml-amsmath.lua new file mode 100644 index 0000000000..2b74265501 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-amsmath.lua @@ -0,0 +1,133 @@ +local write_xml = require'luamml-xmlwriter' +local make_root = require'luamml-convert'.make_root +local save_result = require'luamml-tex'.save_result +local store_column = require'luamml-table'.store_column +local store_tag = require'luamml-table'.store_tag +local get_table = require'luamml-table'.get_table +local set_row_attribute = require'luamml-table'.set_row_attribute +local to_text = require'luamml-lr' + +local properties = node.get_properties_table() + +local math_t = node.id'math' + +local funcid = luatexbase.new_luafunction'__luamml_amsmath_add_last_to_row:' +token.set_lua('__luamml_amsmath_add_last_to_row:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + -- local box = token.scan_int() + local nest = tex.nest.top + local head, startmath = nest.head, nest.tail + repeat + startmath = startmath.prev + until startmath == head or (startmath.id == math_t and startmath.subtype == 0) + if startmath == head then return end + assert(startmath.id == node.id"math") + store_column(startmath) +end + +local funcid = luatexbase.new_luafunction'__luamml_amsmath_add_box_to_row:' +token.set_lua('__luamml_amsmath_add_box_to_row:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + -- local box = token.scan_int() + local boxnum = 0 + local startmath = tex.box[boxnum].list + assert(startmath.id == math_t) + store_column(startmath) +end + +local funcid = luatexbase.new_luafunction'__luamml_amsmath_set_row_columnalign:n' +token.set_lua('__luamml_amsmath_set_row_columnalign:n', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + set_row_attribute('columnalign', token.scan_argument()) +end + +do + local saved + funcid = luatexbase.new_luafunction'__luamml_amsmath_save_inner_table:n' + token.set_lua('__luamml_amsmath_save_inner_table:n', funcid) + lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + local kind = token.scan_argument() + local mml_table = get_table() + if not mml_table then return end + mml_table.displaystyle = true + local columns = node.count(node.id'align_record', tex.lists.align_head)//2 + mml_table.columnalign = kind == 'gathered' and 'center' or string.rep('right left', columns, ' ') + local spacing = {} + for n in node.traverse_id(node.id'glue', tex.lists.align_head) do + spacing[#spacing+1] = n.width == 0 and '0' or string.format('%.3fpt', n.width/65781.76) + end + mml_table.columnspacing = #spacing > 3 and table.concat(spacing, ' ', 2, #spacing-2) or nil + saved = mml_table + end + + funcid = luatexbase.new_luafunction'__luamml_amsmath_save_smallmatrix:' + token.set_lua('__luamml_amsmath_save_smallmatrix:', funcid) + lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + local mml_table = get_table() + mml_table.align = 'axis' + mml_table.columnalign = 'center' + mml_table.columnspacing = '0.278em' + mml_table.rowspacing = string.format('%.3fpt', tex.lineskip.width/65781.76) + saved = {[0] = 'mpadded', width = '+0.333em', lspace = '0.167em', mml_table} + saved = mml_table + end + + funcid = luatexbase.new_luafunction'__luamml_amsmath_finalize_inner_table:' + token.set_lua('__luamml_amsmath_finalize_inner_table:', funcid) + lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + local vcenter = tex.nest.top.tail.nucleus + local props = properties[vcenter] + if not props then + props = {} + properties[vcenter] = props + end + props.mathml_table = assert(saved) + saved = nil + end +end + +funcid = luatexbase.new_luafunction'__luamml_amsmath_finalize_table:n' +token.set_lua('__luamml_amsmath_finalize_table:n', funcid) +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + local kind = token.scan_argument() + local mml_table = get_table() + if not mml_table then return end + mml_table.displaystyle = true + local columns = node.count(node.id'align_record', tex.lists.align_head)//2 + mml_table.columnalign = kind == 'align' and string.rep('right left', columns, ' ') or nil + mml_table.width = kind == 'multline' and '100%' or nil + -- mml_table.side = kind == 'multline' and 'rightoverlap' or nil + local spacing = {} + for n in node.traverse_id(node.id'glue', tex.lists.align_head) do + spacing[#spacing+1] = n.width == 0 and '0' or '.8em' + end + mml_table.columnspacing = #spacing > 3 and table.concat(spacing, ' ', 2, #spacing-2) or nil + save_result(mml_table, true) +end + +local last_tag + +funcid = luatexbase.new_luafunction'__luamml_amsmath_save_tag:' +token.set_lua('__luamml_amsmath_save_tag:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local nest = tex.nest.top + local chars = {} + last_tag = to_text(nest.head) +end + +funcid = luatexbase.new_luafunction'__luamml_amsmath_set_tag:' +token.set_lua('__luamml_amsmath_set_tag:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + if not last_tag then + texio.write_nl'WARNING: Tag extraction failed' + return + end + store_tag({[0] = 'mtd', last_tag}) + last_tag = nil +end diff --git a/macros/luatex/latex/luamml/luamml-array.lua b/macros/luatex/latex/luamml/luamml-array.lua new file mode 100644 index 0000000000..9a7b3581f2 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-array.lua @@ -0,0 +1,84 @@ +local write_xml = require'luamml-xmlwriter' +local make_root = require'luamml-convert'.make_root +local save_result = require'luamml-tex'.save_result +local store_column = require'luamml-table'.store_column +local store_column_xml = require'luamml-table'.store_column_xml +local store_tag = require'luamml-table'.store_tag +local get_table = require'luamml-table'.get_table +local to_text = require'luamml-lr' + +local properties = node.get_properties_table() + +local funcid = luatexbase.new_luafunction'__luamml_array_init_col:' +token.set_lua('__luamml_array_init_col:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc + local nest = tex.nest[tex.nest.ptr-1] + -- The special will be deleted again, it just marks the right math list since the start math node is not there yet + local special = node.new('whatsit', 'special') + node.insert_after(nest.tail, nest.tail, special) + nest.tail = special + local temp = nest.head + local props = properties[temp] + if not props then + props = {} + properties[temp] = props + end + props.luamml_array_startmath = special +end + +local funcid = luatexbase.new_luafunction'__luamml_array_finalize_col:w' +token.set_lua('__luamml_array_finalize_col:w', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local alignment = token.scan_int() -- Do it first to consume number even if we end early + -- TODO: Error handling etc + local temp = tex.nest.top.head + local props = properties[temp] + local special = props and props.luamml_array_startmath + if not special then return end + node.remove(tex.nest.top.head, special) + local startmath = node.free(special) + props.luamml_array_startmath = nil + + alignment = alignment == 1 and 'left' or alignment == 2 and 'right' or nil + + if node.end_of_math(startmath) == tex.nest.top.tail then + if startmath.next == tex.nest.top.tail then return end + store_column(startmath).columnalign = alignment + else + -- Oh no, we got text. Let't complain to the user, it's probably their fault + print'We are mathematicians, don\'t bother us with text' + store_column_xml(to_text(startmath, tex.nest.top.tail)).columnalign = alignment + end +end + +local saved_array + +funcid = luatexbase.new_luafunction'__luamml_array_finalize_array:' +token.set_lua('__luamml_array_save_array:', funcid) +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc. + local colsep = tex.dimen['col@sep'] + saved_array = get_table() + if colsep ~= 0 then + saved_array = {[0] = 'mpadded', + width = string.format('%+.3fpt', 2*colsep/65781.76), + lspace = string.format('%+.3fpt', colsep/65781.76), + saved_array + } + end +end + +funcid = luatexbase.new_luafunction'__luamml_array_finalize_array:' +token.set_lua('__luamml_array_finalize_array:', funcid) +lua.get_functions_table()[funcid] = function() + -- TODO: Error handling etc. + local nucl = tex.nest.top.tail.nucleus + local props = properties[nucl] + if not props then + props = {} + properties[nucl] = props + end + props.mathml_table = saved_array + saved_array = nil +end diff --git a/macros/luatex/latex/luamml/luamml-convert.lua b/macros/luatex/latex/luamml/luamml-convert.lua new file mode 100644 index 0000000000..fe529debc0 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-convert.lua @@ -0,0 +1,662 @@ +local remap_comb = require'luamml-data-combining' +local stretchy = require'luamml-data-stretchy' +local to_text = require'luamml-lr' + +local properties = node.get_properties_table() + +local hlist_t, kern_t, glue_t, rule_t = node.id'hlist', node.id'kern', node.id'glue', node.id'rule' + +local noad_t, accent_t, style_t, choice_t = node.id'noad', node.id'accent', node.id'style', node.id'choice' +local radical_t, fraction_t, fence_t = node.id'radical', node.id'fraction', node.id'fence' + +local math_char_t, sub_box_t, sub_mlist_t = node.id'math_char', node.id'sub_box', node.id'sub_mlist' + +local function invert_table(t) + local t_inv = {} + for k, v in next, t do + t_inv[v] = k + end + return t_inv +end + +local noad_names = node.subtypes'noad' + +--[[ We could determine the noad subtypes dynamically: +local noad_sub = invert_table(noad_names) +local noad_ord = noad_sub.ord +local noad_op = noad_sub.opdisplaylimits +local noad_oplimits = noad_sub.oplimits +local noad_opnolimits = noad_sub.opnolimits +local noad_bin = noad_sub.bin +local noad_rel = noad_sub.rel +local noad_open = noad_sub.open +local noad_close = noad_sub.close +local noad_punct = noad_sub.punct +local noad_inner = noad_sub.inner +local noad_under = noad_sub.under +local noad_over = noad_sub.over +local noad_vcenter = noad_sub.vcenter +-- But the spacing table depends on their specific values anyway, so we just verify the values +]] +local noad_ord, noad_op, noad_oplimits, noad_opnolimits = 0, 1, 2, 3 +local noad_bin, noad_rel, noad_open, noad_close, noad_punct = 4, 5, 6, 7, 8 +local noad_inner, noad_under, noad_over, noad_vcenter = 9, 10, 11, 12 + +for i, n in ipairs{'ord', 'opdisplaylimits', 'oplimits', 'opnolimits', 'bin', + 'rel', 'open', 'close', 'punct', 'inner', 'under', 'over', 'vcenter'} do + assert(noad_names[i-1] == n) +end +-- Attention, the spacing_table is indexed by subtype+1 since 1-based tables are faster in Lua +local spacing_table = { + {0 , '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', 0 , 0 , 0 , '0.167em', 0 , 0 , 0 , }, + {'0.167em', '0.167em', '0.167em', '0.167em', nil , '0.278em', 0 , 0 , 0 , '0.167em', '0.167em', '0.167em', '0.167em', }, + nil, + nil, + {'0.222em', '0.222em', '0.222em', '0.222em', nil , nil , '0.222em', nil , nil , '0.222em', '0.222em', '0.222em', '0.222em', }, + {'0.278em', '0.278em', '0.278em', '0.278em', nil , 0 , '0.278em', 0 , 0 , '0.278em', '0.278em', '0.278em', '0.278em', }, + {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {0 , '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', 0 , 0 , 0 , '0.167em', 0 , 0 , 0 , }, + {'0.167em', '0.167em', '0.167em', '0.167em', nil , '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', }, + {'0.167em', '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', '0.167em', 0 , '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', }, + nil, + nil, + nil, +} +local spacing_table_script = { + {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {'0.167em', '0.167em', '0.167em', '0.167em', nil , 0 , 0 , 0 , 0 , 0 , '0.167em', '0.167em', '0.167em', }, + nil, + nil, + {0 , 0 , 0 , 0 , nil , nil , 0 , nil , nil , 0 , 0 , 0 , 0 , }, + {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , }, + nil, + nil, + nil, +} +do -- Fill the blanks + local st, sts = spacing_table, spacing_table_script + + local st_op, sts_op = st[noad_op+1], sts[noad_op+1] + st[noad_oplimits+1], sts[noad_oplimits+1] = st_op, sts_op + st[noad_opnolimits+1], sts[noad_opnolimits+1] = st_op, sts_op + + local st_ord, sts_ord = st[noad_ord+1], sts[noad_ord+1] + st[noad_under+1], sts[noad_under+1] = st_ord, sts_ord + st[noad_over+1], sts[noad_over+1] = st_ord, sts_ord + st[noad_vcenter+1], sts[noad_vcenter+1] = st_ord, sts_ord +end + + +local radical_sub = node.subtypes'radical' +local fence_sub = node.subtypes'fence' + +local remap_lookup = setmetatable({}, {__index = function(t, k) + local ch = utf8.char(k & 0x1FFFFF) + t[k] = ch + return ch +end}) +local digit_map = {["0"] = true, ["1"] = true, + ["2"] = true, ["3"] = true, ["4"] = true, + ["5"] = true, ["6"] = true, ["7"] = true, + ["8"] = true, ["9"] = true,} + +local always_mo = {["%"] = true, ["&"] = true, ["."] = true, ["/"] = true, + ["\\"] = true, ["¬"] = true, ["′"] = true, ["″"] = true, ["‴"] = true, + ["⁗"] = true, ["‵"] = true, ["‶"] = true, ["‷"] = true, ["|"] = true, + ["∀"] = true, ["∁"] = true, ["∃"] = true, ["∂"] = true, ["∄"] = true,} + +-- Marker tables replacing the core operator for space like elements +local space_like = {} + +local nodes_to_table + +local function sub_style(s) return s//4*2+5 end +local function sup_style(s) return s//4*2+4+s%2 end + +-- The _to_table functions generally return a second argument which is +-- could be (if it were a <mo>) a core operator of the embellishe operator +-- or space_like +-- acc_to_table is special since it's return value should +-- always be considered a core operator + +-- We ignore large_... since they aren't used for modern fonts +local function delim_to_table(delim) + if not delim then return end + local props = properties[delim] + local mathml_core = props and props.mathml_core + local mathml_table = props and (props.mathml_table or mathml_core) + if mathml_table ~= nil then return mathml_table, mathml_core end + local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency + local char = delim.small_char + if char == 0 then + local result = {[0] = 'mspace', width = string.format("%.3fpt", tex.nulldelimiterspace/65781.76)} + if mathml_filter then + return mathml_filter(result, space_like) + else + return result, space_like + end + else + local fam = delim.small_fam + char = remap_lookup[fam << 21 | char] + local result = {[0] = 'mo', char, ['tex:family'] = fam ~= 0 and fam or nil, stretchy = not stretchy[char] or nil, lspace = 0, rspace = 0, [':nodes'] = {delim}, [':actual'] = char} + if mathml_filter then + return mathml_filter(result, result) + else + return result, result + end + end +end + +-- Like kernel_to_table but always a math_char_t. Also creating a mo and potentially remapping to handle combining chars. +-- No lspace or space is set here since these never appear as core operators in an mrow. +local function acc_to_table(acc, cur_style, stretch) + if not acc then return end + local props = properties[acc] + local mathml_core = props and props.mathml_core + local mathml_table = props and (props.mathml_table or mathml_core) + if mathml_table ~= nil then return mathml_table, mathml_core end + if acc.id ~= math_char_t then + error'confusion' + end + local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency + local fam = acc.fam + local char = remap_lookup[fam << 21 | acc.char] + char = remap_comb[char] or char + if stretch ~= not stretchy[char] then -- Handle nil gracefully in stretchy + stretch = nil + end + local result = {[0] = 'mo', char, ['tex:family'] = fam ~= 0 and fam or nil, stretchy = stretch, [':nodes'] = {acc}, [':actual'] = stretch and char or nil} + if mathml_filter then + return mathml_filter(result) + else + return result + end +end + +local function kernel_to_table(kernel, cur_style, text_families) + if not kernel then return end + local props = properties[kernel] + local mathml_core = props and props.mathml_core + local mathml_table = props and (props.mathml_table or mathml_core) + if mathml_table ~= nil then return mathml_table, mathml_core end + local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency + local id = kernel.id + if id == math_char_t then + local fam = kernel.fam + local char = remap_lookup[fam << 21 | kernel.char] + local elem = digit_map[char] and 'mn' or 'mi' + local result = {[0] = elem, + char, + ['tex:family'] = fam ~= 0 and fam or nil, + mathvariant = utf8.len(char) == 1 and elem == 'mi' and utf8.codepoint(char) < 0x10000 and 'normal' or nil, + [':nodes'] = {kernel}, + } + if mathml_filter then + return mathml_filter(result, result) + else + return result, result + end + elseif id == sub_box_t then + local result + if kernel.list.id == hlist_t then -- We directly give up for vlists + result = to_text(kernel.list.head) + else + result = {[0] = 'mi', {[0] = 'mglyph', ['tex:box'] = kernel.list, [':nodes'] = {kernel}}} + end + if mathml_filter then + return mathml_filter(result, result) + else + return result, result + end + elseif id == sub_mlist_t then + if mathml_filter then + return mathml_filter(nodes_to_table(kernel.list, cur_style, text_families)) + else + return nodes_to_table(kernel.list, cur_style, text_families) + end + else + error'confusion' + end +end + +local function do_sub_sup(t, core, n, cur_style, text_families) + local sub = kernel_to_table(n.sub, sub_style(cur_style), text_families) + local sup = kernel_to_table(n.sup, sup_style(cur_style), text_families) + if sub then + if sup then + return {[0] = 'msubsup', t, sub, sup}, core + else + return {[0] = 'msub', t, sub}, core + end + elseif sup then + return {[0] = 'msup', t, sup}, core + else + return t, core + end +end + + +-- If we encounter a . or , after a number, test if it's followed by another number and in that case convert it into a mn +local function maybe_to_mn(noad, core) + if noad.sub or noad.sup then return end + local after = noad.next + if not after then return end + if after.id ~= noad_t then return end + if after.subtype ~= noad_ord then return end + after = after.nucleus + if not after then return end + if after.id ~= math_char_t then return end + if not digit_map[remap_lookup[after.fam << 21 | after.char]] then return end + core[0] = 'mn' +end + +local function noad_to_table(noad, sub, cur_style, joining, bin_replacements, text_families) + local nucleus, core = kernel_to_table(noad.nucleus, sub == noad_over and cur_style//2*2+1 or cur_style, text_families) + if not nucleus then return end + if core and core[0] == 'mo' and core.minsize and not core.maxsize then + core.maxsize = core.minsize -- This happens when a half-specified delimiter appears alone in a list. + -- If it has a minimal size, it should be fixed to that size (since there is nothing bigger in it's list) + end + if sub == noad_ord and not (bin_replacements[node.direct.todirect(noad)] or (nucleus == core and #core == 1 and always_mo[core[1]])) then + if core and core[0] == 'mo' then + core['tex:class'] = nil + if not core.minsize and not core.movablelimits then + core[0] = 'mi' + core.movablelimits = nil + core.mathvariant = #core == 1 and type(core[1]) == 'string' and utf8.len(core[1]) == 1 and utf8.codepoint(core[1]) < 0x10000 and 'normal' or nil + core.stretchy, core.lspace, core.rspace = nil + end + end + if nucleus == core and #core == 1 then + if joining and joining[0] == 'mn' and core[0] == 'mi' and (core[1] == '.' or core[1] == ',') and maybe_to_mn(noad, core) + or core[0] == 'mn' or text_families[core['tex:family'] or 0] then + if joining and core[0] == joining[0] and core['tex:family'] == joining['tex:family'] then + joining[#joining+1] = core[1] + local cnodes = core[':nodes'] + if cnodes then -- very likely + local jnodes = joining[':nodes'] + if jnodes then -- very likely + table.move(cnodes, 1, #cnodes, #jnodes+1, jnodes) + else + joining[':nodes'] = cnodes + end + end + nucleus = do_sub_sup(joining, joining, noad, cur_style, text_families) + if nucleus == joining then + return nil, joining, joining + else + return nucleus, joining, false + end + elseif not noad.sub and not noad.sup then + return core, core, core + end + end + end + elseif sub == noad_op or sub == noad_oplimits or sub == noad_opnolimits or sub == noad_bin or sub == noad_rel or sub == noad_open + or sub == noad_close or sub == noad_punct or sub == noad_inner or sub == noad_ord then + if not core or not core[0] then + -- TODO + else + core[0] = 'mo' + if not core.minsize then + if stretchy[core[1]] then core.stretchy = false end + end + if core.mathvariant == 'normal' then core.mathvariant = nil end + core.lspace, core.rspace = 0, 0 + end + nucleus['tex:class'] = noad_names[sub] + + if (noad.sup or noad.sub) and (sub == noad_op or sub == noad_oplimits) then + if core and core[0] == 'mo' then core.movablelimits = sub == noad_op end + local sub = kernel_to_table(noad.sub, sub_style(cur_style), text_families) + local sup = kernel_to_table(noad.sup, sup_style(cur_style), text_families) + return {[0] = sup and (sub and 'munderover' or 'mover') or 'munder', + nucleus, + sub or sup, + sub and sup, + }, core + end + elseif sub == noad_under then + return {[0] = 'munder', + nucleus, + {[0] = 'mo', '_',}, + }, core + elseif sub == noad_over then + return {[0] = 'mover', + nucleus, + {[0] = 'mo', '\u{203E}',}, + }, core + elseif sub == noad_vcenter then -- Ignored. Nucleus will need special handling anyway + else + error[[confusion]] + end + return do_sub_sup(nucleus, core, noad, cur_style, text_families) +end + +local function accent_to_table(accent, sub, cur_style, text_families) + local nucleus, core = kernel_to_table(accent.nucleus, cur_style//2*2+1, text_families) + local top_acc = acc_to_table(accent.accent, cur_style, sub & 1 == 1) + local bot_acc = acc_to_table(accent.bot_accent, cur_style, sub & 2 == 2) + return {[0] = top_acc and (bot_acc and 'munderover' or 'mover') or 'munder', + nucleus, + bot_acc or top_acc, + bot_acc and top_acc, + }, core +end + +local style_table = { + display = {displaystyle = "true", scriptlevel = "0"}, + text = {displaystyle = "false", scriptlevel = "0"}, + script = {displaystyle = "false", scriptlevel = "1"}, + scriptscript = {displaystyle = "false", scriptlevel = "2"}, +} + +style_table.crampeddisplay, style_table.crampedtext, +style_table.crampedscript, style_table.crampedscriptscript = + style_table.display, style_table.text, + style_table.script, style_table.scriptscript + +local function radical_to_table(radical, sub, cur_style, text_families) + local kind = radical_sub[sub] + local nucleus, core = kernel_to_table(radical.nucleus, cur_style//2*2+1, text_families) + local left = delim_to_table(radical.left) + local elem + if kind == 'radical' or kind == 'uradical' then + -- FIXME: Check that this is really a square root + elem, core = {[0] = 'msqrt', nucleus, }, nil + elseif kind == 'uroot' then + -- FIXME: Check that this is really a root + elem, core = {[0] = 'msqrt', nucleus, kernel_to_table(radical.degree, 7, text_families)}, nil + elseif kind == 'uunderdelimiter' then + elem, core = {[0] = 'munder', left, nucleus}, left + elseif kind == 'uoverdelimiter' then + elem, core = {[0] = 'mover', left, nucleus}, left + elseif kind == 'udelimiterunder' then + elem = {[0] = 'munder', nucleus, left} + elseif kind == 'udelimiterover' then + elem = {[0] = 'mover', nucleus, left} + else + error[[confusion]] + end + return do_sub_sup(elem, core, radical, cur_style, text_families) +end + +local function fraction_to_table(fraction, sub, cur_style, text_families) + local num, core = kernel_to_table(fraction.num, cur_style + 2 - cur_style//6*2, text_families) + local denom = kernel_to_table(fraction.denom, cur_style//2*2 + 3 - cur_style//6*2, text_families) + local left = delim_to_table(fraction.left) + local right = delim_to_table(fraction.right) + local mfrac = {[0] = 'mfrac', + linethickness = fraction.width and fraction.width == 0 and 0 or nil, + bevelled = fraction.middle and "true" or nil, + num, + denom, + } + if left then + return {[0] = 'mrow', + left, + mfrac, + right, -- might be nil + } + elseif right then + return {[0] = 'mrow', + mfrac, + right, + } + else + return mfrac, core + end +end + +local function fence_to_table(fence, sub, cur_style) + local delim, core = delim_to_table(fence.delim) + if core[0] ~= 'mo' then + return delim, core + end + core.fence, core.symmetric = 'true', 'true' + local options = fence.options + local axis + if fence.height ~= 0 or fence.depth ~= 0 then + axis = 0xA == options & 0xA + local exact = 0x18 == options & 0x18 + -- We treat them always as exact. mpadded would allow us to support + -- non-exact ones too and I will implement that if I ever encounter + -- someone who does that intentionally. Until then, we warn people + -- since such fences are absurd. + if not exact then + texio.write_nl'luamml: The document uses a fence with \z + explicit dimensions but without the "exact" option. \z + This is probably a mistake.' + end + core.minsize = string.format("%.3fpt", (fence.height + fence.depth)/65781.76) + core.maxsize = core.minsize + else + axis = 0xC ~= options & 0xC + end + if not axis then + texio.write_nl'luamml: Baseline centered fence will be centered around math axis instead' + end + return delim, core +end + +local function space_to_table(amount, sub, cur_style) + if amount == 0 then return end + if sub == 99 then -- TODO magic number + -- 18*2^16=1179648 + return {[0] = 'mspace', width = string.format("%.3fem", amount/1179648)}, space_like + else + -- 65781.76=tex.sp'100bp'/100 + return {[0] = 'mspace', width = string.format("%.3fpt", amount/65781.76)}, space_like + end +end + +local running_length = -1073741824 +local function rule_to_table(rule, sub, cur_style) + local width = string.format("%.3fpt", rule.width/65781.76) + local height = rule.height + if height == running_length then + height = '0.8em' + else + height = string.format("%.3fpt", height/65781.76) + end + local depth = rule.depth + if depth == running_length then + depth = '0.2em' + else + depth = string.format("%.3fpt", depth/65781.76) + end + return {[0] = 'mspace', mathbackground = 'currentColor', width = width, height = height, depth = depth}, space_like +end + +-- The only part which changes the nodelist, we are converting bin into ord +-- nodes in the same way TeX would do it later anyway. +local function cleanup_mathbin(head) + local replacements = {} + local last = 'open' -- last sub if id was noad_t, left fence acts fakes being a open noad, bin are themselves. Every other noad is ord + for n, id, sub in node.traverse(head) do + if id == noad_t then + if sub == noad_bin then + if node.is_node(last) or last == noad_opdisplaylimits + or last == noad_oplimits or last == noad_opnolimits + or last == noad_rel or last == noad_open or last == noad_punct then + replacements[node.direct.todirect(n)] = true + n.subtype, last = noad_ord, noad_ord + else + last = n + end + else + if (sub == noad_rel or sub == noad_close or sub == noad_punct) + and node.is_node(last) then + replacements[node.direct.todirect(last)] = true + last.subtype = noad_ord + end + last = sub + end + elseif id == fence_t then + if sub == fence_sub.left then + last = noad_open + else + if node.is_node(last) then + replacements[node.direct.todirect(last)] = true + last.subtype = noad_ord, noad_ord + end + last = noad_ord + end + elseif id == fraction_t or id == radical_t or id == accent_t then + last = noad_ord + end + end + if node.is_node(last) then + replacements[node.direct.todirect(last)] = true + last.subtype = noad_ord + end + return replacements +end + +function nodes_to_table(head, cur_style, text_families) + local bin_replacements = cleanup_mathbin(head) + local t = {[0] = 'mrow'} + local result = t + local nonscript + local core, last_noad, last_core, joining = space_like, nil, nil, nil + for n, id, sub in node.traverse(head) do + local new_core, new_joining, new_node, new_noad + local props = properties[n] + local mathml_core = props and props.mathml_core + local mathml_table = props and (props.mathml_table or mathml_core) + if mathml_table ~= nil then + new_node, new_core = mathml_table, mathml_core + elseif id == noad_t then + local new_n + new_n, new_core, new_joining = noad_to_table(n, sub, cur_style, joining, bin_replacements, text_families) + if new_joining == false then + t[#t], new_joining = new_n, nil + else + new_node = new_n -- might be nil + end + new_noad = sub + elseif id == accent_t then + new_node, new_core = accent_to_table(n, sub, cur_style, text_families) + new_noad = noad_ord + elseif id == style_t then + if sub ~= cur_style then + if #t == 0 then + t[0] = 'mstyle' + else + local new_t = {[0] = 'mstyle'} + t[#t+1] = new_t + t = new_t + end + if sub < 2 then + t.displaystyle, t.scriptlevel = true, 0 + else + t.displaystyle, t.scriptlevel = false, sub//2 - 1 + end + cur_style = sub + end + new_core = space_like + elseif id == choice_t then + local size = cur_style//2 + new_node, new_core = nodes_to_table(n[size == 0 and 'display' + or size == 1 and 'text' + or size == 2 and 'script' + or size == 3 and 'scriptscript' + or assert(false)], 2*size, text_families), space_like + elseif id == radical_t then + new_node, new_core = radical_to_table(n, sub, cur_style, text_families) + new_noad = noad_ord + elseif id == fraction_t then + new_node, new_core = fraction_to_table(n, sub, cur_style, text_families) + new_noad = noad_inner + elseif id == fence_t then + new_node, new_core = fence_to_table(n, sub, cur_style) + local class = n.class + new_noad = class >= 0 and class or sub == fence_sub.left and noad_open or noad_close + elseif id == kern_t then + if not nonscript then + new_node, new_core = space_to_table(n.kern, sub, cur_style) + end + elseif id == glue_t then + if cur_style >= 4 or not nonscript then + if sub == 98 then -- TODO magic number + nonscript = true + else + new_node, new_core = space_to_table(n.width, sub, cur_style) + end + end + elseif id == rule_t then + new_node, new_core = rule_to_table(n, sub, cur_style) + -- elseif id == disc_t then -- Uncommon, does not play nicely with math mode and no sensible mapping anyway + end -- The other possible ids are whatsit, penalty, adjust, ins, mark. Ignore them. + nonscript = nil + if core and new_core ~= space_like then + core = core == space_like and new_core or nil + end + if new_node then + if new_noad then + local space = last_noad and (cur_style >= 4 and spacing_table_script or spacing_table)[last_noad + 1][new_noad + 1] or 0 + if assert(space) ~= 0 then + if new_core and new_core[0] == 'mo' then + new_core.lspace = space + elseif last_core and last_core[0] == 'mo' then + last_core.rspace = space + else + t[#t+1] = {[0] = 'mspace', width = space} -- TODO Move into operators whenever possible + end + end + last_noad, last_core = new_noad, new_core + elseif new_node[0] ~= 'mspace' or new_node.mathbackground then + last_core = nil + end + t[#t+1] = new_node + end + joining = new_joining + end + -- In TeX, groups are never space like, so we insert an artificial node instead. + -- This node should be ignored for most purposes + if core == space_like then + core = {[0] = 'mi', ['tex:ignore'] = 'true'} + result[#result+1] = core + end + if t[0] == 'mrow' and #t == 1 then + assert(t == result) + result = t[1] + end + local mathml_filter = props and props.mathml_filter + if mathml_filter then + return mathml_filter(result, core) + else + return result, core + end +end + +local function register_remap(family, mapping) + family = family << 21 + for from, to in next, mapping do + remap_lookup[family | from] = utf8.char(to) + end +end + +local function to_math(root, style) + if root[0] == 'mrow' then + root[0] = 'math' + else + root = {[0] = 'math', root} + end + root.xmlns = 'http://www.w3.org/1998/Math/MathML' + root['xmlns:tex'] = 'http://typesetting.eu/2021/LuaMathML' + if style < 2 then + root.display = 'block' + end + return root +end + +return { + register_family = register_remap, + process = function(head, style, families) return nodes_to_table(head, style or 2, families) end, + make_root = to_math, +} diff --git a/macros/luatex/latex/luamml/luamml-data-combining.lua b/macros/luatex/latex/luamml/luamml-data-combining.lua new file mode 100644 index 0000000000..2083a3f654 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-data-combining.lua @@ -0,0 +1,27 @@ +return { + ["\u{0332}"] = "\u{2212}", + ["\u{0330}"] = "\u{02DC}", + ["\u{0328}"] = "\u{02DB}", + ["\u{20EF}"] = "\u{2192}", + ["\u{032C}"] = "\u{02C7}", + ["\u{032E}"] = "\u{02D8}", + ["\u{0306}"] = "\u{02D8}", + ["\u{030B}"] = "\u{02DD}", + ["\u{0302}"] = "\u{02C6}", + ["\u{0324}"] = "\u{00A8}", + ["\u{0317}"] = "\u{00B4}", + ["\u{031F}"] = "\u{002B}", + ["\u{0307}"] = "\u{002E}", + ["\u{0305}"] = "\u{2212}", + ["\u{0303}"] = "\u{02DC}", + ["\u{0316}"] = "\u{0060}", + ["\u{0301}"] = "\u{00B4}", + ["\u{030C}"] = "\u{02C7}", + ["\u{0327}"] = "\u{00B8}", + ["\u{0308}"] = "\u{00A8}", + ["\u{0300}"] = "\u{0060}", + ["\u{0323}"] = "\u{002E}", + ["\u{0304}"] = "\u{00AF}", + ["\u{032D}"] = "\u{005E}", + ["\u{20D7}"] = "\u{2192}", +} diff --git a/macros/luatex/latex/luamml/luamml-data-stretchy.lua b/macros/luatex/latex/luamml/luamml-data-stretchy.lua new file mode 100644 index 0000000000..72f84065c0 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-data-stretchy.lua @@ -0,0 +1,500 @@ +return { + -- The following is + -- xq -r '.unicode.charlist.character[] | select(.["operator-dictionary"] | if type == "array" then .[] else . end | .["@stretchy"]) | .["@id"] | sub("U"; "") | "[\"\\u{\(.)}\"] = true," ' < unicode.xml +["\u{00028}"] = true, +["\u{00029}"] = true, +["\u{0005B}"] = true, +["\u{0005D}"] = true, +["\u{0005E}"] = true, +["\u{0005F}"] = true, +["\u{0007B}"] = true, +["\u{0007C}"] = true, +["\u{0007C}"] = true, +["\u{0007D}"] = true, +["\u{0007E}"] = true, +["\u{000AF}"] = true, +["\u{002C6}"] = true, +["\u{002C7}"] = true, +["\u{002C9}"] = true, +["\u{002CD}"] = true, +["\u{002DC}"] = true, +["\u{002F7}"] = true, +["\u{00302}"] = true, +["\u{02016}"] = true, +["\u{02016}"] = true, +["\u{0203E}"] = true, +["\u{02190}"] = true, +["\u{02191}"] = true, +["\u{02192}"] = true, +["\u{02193}"] = true, +["\u{02194}"] = true, +["\u{02195}"] = true, +["\u{0219A}"] = true, +["\u{0219B}"] = true, +["\u{0219C}"] = true, +["\u{0219D}"] = true, +["\u{0219E}"] = true, +["\u{0219F}"] = true, +["\u{021A0}"] = true, +["\u{021A1}"] = true, +["\u{021A2}"] = true, +["\u{021A3}"] = true, +["\u{021A4}"] = true, +["\u{021A5}"] = true, +["\u{021A6}"] = true, +["\u{021A7}"] = true, +["\u{021A8}"] = true, +["\u{021A9}"] = true, +["\u{021AA}"] = true, +["\u{021AB}"] = true, +["\u{021AC}"] = true, +["\u{021AD}"] = true, +["\u{021AE}"] = true, +["\u{021B0}"] = true, +["\u{021B1}"] = true, +["\u{021B2}"] = true, +["\u{021B3}"] = true, +["\u{021B4}"] = true, +["\u{021B5}"] = true, +["\u{021B9}"] = true, +["\u{021BC}"] = true, +["\u{021BD}"] = true, +["\u{021BE}"] = true, +["\u{021BF}"] = true, +["\u{021C0}"] = true, +["\u{021C1}"] = true, +["\u{021C2}"] = true, +["\u{021C3}"] = true, +["\u{021C4}"] = true, +["\u{021C5}"] = true, +["\u{021C6}"] = true, +["\u{021C7}"] = true, +["\u{021C8}"] = true, +["\u{021C9}"] = true, +["\u{021CA}"] = true, +["\u{021CB}"] = true, +["\u{021CC}"] = true, +["\u{021CD}"] = true, +["\u{021CE}"] = true, +["\u{021CF}"] = true, +["\u{021D0}"] = true, +["\u{021D1}"] = true, +["\u{021D2}"] = true, +["\u{021D3}"] = true, +["\u{021D4}"] = true, +["\u{021D5}"] = true, +["\u{021DA}"] = true, +["\u{021DB}"] = true, +["\u{021DC}"] = true, +["\u{021DD}"] = true, +["\u{021DE}"] = true, +["\u{021DF}"] = true, +["\u{021E0}"] = true, +["\u{021E1}"] = true, +["\u{021E2}"] = true, +["\u{021E3}"] = true, +["\u{021E4}"] = true, +["\u{021E5}"] = true, +["\u{021E6}"] = true, +["\u{021E7}"] = true, +["\u{021E8}"] = true, +["\u{021E9}"] = true, +["\u{021EA}"] = true, +["\u{021EB}"] = true, +["\u{021EC}"] = true, +["\u{021ED}"] = true, +["\u{021EE}"] = true, +["\u{021EF}"] = true, +["\u{021F0}"] = true, +["\u{021F3}"] = true, +["\u{021F4}"] = true, +["\u{021F5}"] = true, +["\u{021F6}"] = true, +["\u{021F7}"] = true, +["\u{021F8}"] = true, +["\u{021F9}"] = true, +["\u{021FA}"] = true, +["\u{021FB}"] = true, +["\u{021FC}"] = true, +["\u{021FD}"] = true, +["\u{021FE}"] = true, +["\u{021FF}"] = true, +["\u{02308}"] = true, +["\u{02309}"] = true, +["\u{0230A}"] = true, +["\u{0230B}"] = true, +["\u{02322}"] = true, +["\u{02323}"] = true, +["\u{02329}"] = true, +["\u{0232A}"] = true, +["\u{023B4}"] = true, +["\u{023B5}"] = true, +["\u{023DC}"] = true, +["\u{023DD}"] = true, +["\u{023DE}"] = true, +["\u{023DF}"] = true, +["\u{023E0}"] = true, +["\u{023E1}"] = true, +["\u{02772}"] = true, +["\u{02773}"] = true, +["\u{02794}"] = true, +["\u{02799}"] = true, +["\u{0279B}"] = true, +["\u{0279C}"] = true, +["\u{0279D}"] = true, +["\u{0279E}"] = true, +["\u{0279F}"] = true, +["\u{027A0}"] = true, +["\u{027A1}"] = true, +["\u{027A5}"] = true, +["\u{027A6}"] = true, +["\u{027A8}"] = true, +["\u{027A9}"] = true, +["\u{027AA}"] = true, +["\u{027AB}"] = true, +["\u{027AC}"] = true, +["\u{027AD}"] = true, +["\u{027AE}"] = true, +["\u{027AF}"] = true, +["\u{027B1}"] = true, +["\u{027B3}"] = true, +["\u{027B5}"] = true, +["\u{027B8}"] = true, +["\u{027BA}"] = true, +["\u{027BB}"] = true, +["\u{027BC}"] = true, +["\u{027BD}"] = true, +["\u{027BE}"] = true, +["\u{027E6}"] = true, +["\u{027E7}"] = true, +["\u{027E8}"] = true, +["\u{027E9}"] = true, +["\u{027EA}"] = true, +["\u{027EB}"] = true, +["\u{027EC}"] = true, +["\u{027ED}"] = true, +["\u{027EE}"] = true, +["\u{027EF}"] = true, +["\u{027F0}"] = true, +["\u{027F1}"] = true, +["\u{027F4}"] = true, +["\u{027F5}"] = true, +["\u{027F6}"] = true, +["\u{027F7}"] = true, +["\u{027F8}"] = true, +["\u{027F9}"] = true, +["\u{027FA}"] = true, +["\u{027FB}"] = true, +["\u{027FC}"] = true, +["\u{027FD}"] = true, +["\u{027FE}"] = true, +["\u{027FF}"] = true, +["\u{02900}"] = true, +["\u{02901}"] = true, +["\u{02902}"] = true, +["\u{02903}"] = true, +["\u{02904}"] = true, +["\u{02905}"] = true, +["\u{02906}"] = true, +["\u{02907}"] = true, +["\u{02908}"] = true, +["\u{02909}"] = true, +["\u{0290A}"] = true, +["\u{0290B}"] = true, +["\u{0290C}"] = true, +["\u{0290D}"] = true, +["\u{0290E}"] = true, +["\u{0290F}"] = true, +["\u{02910}"] = true, +["\u{02911}"] = true, +["\u{02912}"] = true, +["\u{02913}"] = true, +["\u{02914}"] = true, +["\u{02915}"] = true, +["\u{02916}"] = true, +["\u{02917}"] = true, +["\u{02918}"] = true, +["\u{02919}"] = true, +["\u{0291A}"] = true, +["\u{0291B}"] = true, +["\u{0291C}"] = true, +["\u{0291D}"] = true, +["\u{0291E}"] = true, +["\u{0291F}"] = true, +["\u{02920}"] = true, +["\u{02934}"] = true, +["\u{02935}"] = true, +["\u{02936}"] = true, +["\u{02937}"] = true, +["\u{02942}"] = true, +["\u{02943}"] = true, +["\u{02944}"] = true, +["\u{02945}"] = true, +["\u{02946}"] = true, +["\u{02947}"] = true, +["\u{02948}"] = true, +["\u{02949}"] = true, +["\u{0294A}"] = true, +["\u{0294B}"] = true, +["\u{0294C}"] = true, +["\u{0294D}"] = true, +["\u{0294E}"] = true, +["\u{0294F}"] = true, +["\u{02950}"] = true, +["\u{02951}"] = true, +["\u{02952}"] = true, +["\u{02953}"] = true, +["\u{02954}"] = true, +["\u{02955}"] = true, +["\u{02956}"] = true, +["\u{02957}"] = true, +["\u{02958}"] = true, +["\u{02959}"] = true, +["\u{0295A}"] = true, +["\u{0295B}"] = true, +["\u{0295C}"] = true, +["\u{0295D}"] = true, +["\u{0295E}"] = true, +["\u{0295F}"] = true, +["\u{02960}"] = true, +["\u{02961}"] = true, +["\u{02962}"] = true, +["\u{02963}"] = true, +["\u{02964}"] = true, +["\u{02965}"] = true, +["\u{02966}"] = true, +["\u{02967}"] = true, +["\u{02968}"] = true, +["\u{02969}"] = true, +["\u{0296A}"] = true, +["\u{0296B}"] = true, +["\u{0296C}"] = true, +["\u{0296D}"] = true, +["\u{0296E}"] = true, +["\u{0296F}"] = true, +["\u{02970}"] = true, +["\u{02971}"] = true, +["\u{02972}"] = true, +["\u{02973}"] = true, +["\u{02974}"] = true, +["\u{02975}"] = true, +["\u{0297C}"] = true, +["\u{0297D}"] = true, +["\u{0297E}"] = true, +["\u{0297F}"] = true, +["\u{02980}"] = true, +["\u{02980}"] = true, +["\u{02983}"] = true, +["\u{02984}"] = true, +["\u{02985}"] = true, +["\u{02986}"] = true, +["\u{02987}"] = true, +["\u{02988}"] = true, +["\u{02989}"] = true, +["\u{0298A}"] = true, +["\u{0298B}"] = true, +["\u{0298C}"] = true, +["\u{0298D}"] = true, +["\u{0298E}"] = true, +["\u{0298F}"] = true, +["\u{02990}"] = true, +["\u{02991}"] = true, +["\u{02992}"] = true, +["\u{02993}"] = true, +["\u{02994}"] = true, +["\u{02995}"] = true, +["\u{02996}"] = true, +["\u{02997}"] = true, +["\u{02998}"] = true, +["\u{02999}"] = true, +["\u{02999}"] = true, +["\u{029D8}"] = true, +["\u{029D9}"] = true, +["\u{029DA}"] = true, +["\u{029DB}"] = true, +["\u{029FC}"] = true, +["\u{029FD}"] = true, +["\u{02B04}"] = true, +["\u{02B05}"] = true, +["\u{02B06}"] = true, +["\u{02B07}"] = true, +["\u{02B0C}"] = true, +["\u{02B0D}"] = true, +["\u{02B0E}"] = true, +["\u{02B0F}"] = true, +["\u{02B10}"] = true, +["\u{02B11}"] = true, +["\u{02B30}"] = true, +["\u{02B31}"] = true, +["\u{02B32}"] = true, +["\u{02B33}"] = true, +["\u{02B34}"] = true, +["\u{02B35}"] = true, +["\u{02B36}"] = true, +["\u{02B37}"] = true, +["\u{02B38}"] = true, +["\u{02B39}"] = true, +["\u{02B3A}"] = true, +["\u{02B3B}"] = true, +["\u{02B3C}"] = true, +["\u{02B3D}"] = true, +["\u{02B3E}"] = true, +["\u{02B40}"] = true, +["\u{02B41}"] = true, +["\u{02B42}"] = true, +["\u{02B43}"] = true, +["\u{02B44}"] = true, +["\u{02B45}"] = true, +["\u{02B46}"] = true, +["\u{02B47}"] = true, +["\u{02B48}"] = true, +["\u{02B49}"] = true, +["\u{02B4A}"] = true, +["\u{02B4B}"] = true, +["\u{02B4C}"] = true, +["\u{02B60}"] = true, +["\u{02B61}"] = true, +["\u{02B62}"] = true, +["\u{02B63}"] = true, +["\u{02B64}"] = true, +["\u{02B65}"] = true, +["\u{02B6A}"] = true, +["\u{02B6B}"] = true, +["\u{02B6C}"] = true, +["\u{02B6D}"] = true, +["\u{02B70}"] = true, +["\u{02B71}"] = true, +["\u{02B72}"] = true, +["\u{02B73}"] = true, +["\u{02B7A}"] = true, +["\u{02B7B}"] = true, +["\u{02B7C}"] = true, +["\u{02B7D}"] = true, +["\u{02B80}"] = true, +["\u{02B81}"] = true, +["\u{02B82}"] = true, +["\u{02B83}"] = true, +["\u{02B84}"] = true, +["\u{02B85}"] = true, +["\u{02B86}"] = true, +["\u{02B87}"] = true, +["\u{02B95}"] = true, +["\u{02BA0}"] = true, +["\u{02BA1}"] = true, +["\u{02BA2}"] = true, +["\u{02BA3}"] = true, +["\u{02BA4}"] = true, +["\u{02BA5}"] = true, +["\u{02BA6}"] = true, +["\u{02BA7}"] = true, +["\u{02BA8}"] = true, +["\u{02BA9}"] = true, +["\u{02BAA}"] = true, +["\u{02BAB}"] = true, +["\u{02BAC}"] = true, +["\u{02BAD}"] = true, +["\u{02BAE}"] = true, +["\u{02BAF}"] = true, +["\u{02BB8}"] = true, +["\u{1EEF0}"] = true, +["\u{1EEF1}"] = true, +["\u{1F800}"] = true, +["\u{1F801}"] = true, +["\u{1F802}"] = true, +["\u{1F803}"] = true, +["\u{1F804}"] = true, +["\u{1F805}"] = true, +["\u{1F806}"] = true, +["\u{1F807}"] = true, +["\u{1F808}"] = true, +["\u{1F809}"] = true, +["\u{1F80A}"] = true, +["\u{1F80B}"] = true, +["\u{1F810}"] = true, +["\u{1F811}"] = true, +["\u{1F812}"] = true, +["\u{1F813}"] = true, +["\u{1F814}"] = true, +["\u{1F815}"] = true, +["\u{1F816}"] = true, +["\u{1F817}"] = true, +["\u{1F818}"] = true, +["\u{1F819}"] = true, +["\u{1F81A}"] = true, +["\u{1F81B}"] = true, +["\u{1F81C}"] = true, +["\u{1F81D}"] = true, +["\u{1F81E}"] = true, +["\u{1F81F}"] = true, +["\u{1F820}"] = true, +["\u{1F821}"] = true, +["\u{1F822}"] = true, +["\u{1F823}"] = true, +["\u{1F824}"] = true, +["\u{1F825}"] = true, +["\u{1F826}"] = true, +["\u{1F827}"] = true, +["\u{1F828}"] = true, +["\u{1F829}"] = true, +["\u{1F82A}"] = true, +["\u{1F82B}"] = true, +["\u{1F82C}"] = true, +["\u{1F82D}"] = true, +["\u{1F82E}"] = true, +["\u{1F82F}"] = true, +["\u{1F830}"] = true, +["\u{1F831}"] = true, +["\u{1F832}"] = true, +["\u{1F833}"] = true, +["\u{1F834}"] = true, +["\u{1F835}"] = true, +["\u{1F836}"] = true, +["\u{1F837}"] = true, +["\u{1F844}"] = true, +["\u{1F845}"] = true, +["\u{1F846}"] = true, +["\u{1F847}"] = true, +["\u{1F850}"] = true, +["\u{1F851}"] = true, +["\u{1F852}"] = true, +["\u{1F853}"] = true, +["\u{1F858}"] = true, +["\u{1F859}"] = true, +["\u{1F860}"] = true, +["\u{1F861}"] = true, +["\u{1F862}"] = true, +["\u{1F863}"] = true, +["\u{1F868}"] = true, +["\u{1F869}"] = true, +["\u{1F86A}"] = true, +["\u{1F86B}"] = true, +["\u{1F870}"] = true, +["\u{1F871}"] = true, +["\u{1F872}"] = true, +["\u{1F873}"] = true, +["\u{1F878}"] = true, +["\u{1F879}"] = true, +["\u{1F87A}"] = true, +["\u{1F87B}"] = true, +["\u{1F880}"] = true, +["\u{1F881}"] = true, +["\u{1F882}"] = true, +["\u{1F883}"] = true, +["\u{1F898}"] = true, +["\u{1F899}"] = true, +["\u{1F89A}"] = true, +["\u{1F89B}"] = true, +["\u{1F8A0}"] = true, +["\u{1F8A1}"] = true, +["\u{1F8A2}"] = true, +["\u{1F8A3}"] = true, +["\u{1F8A4}"] = true, +["\u{1F8A5}"] = true, +["\u{1F8A6}"] = true, +["\u{1F8A7}"] = true, +["\u{1F8A8}"] = true, +["\u{1F8A9}"] = true, +["\u{1F8AA}"] = true, +["\u{1F8AB}"] = true, +-- till here +} diff --git a/macros/luatex/latex/luamml/luamml-demo.sty b/macros/luatex/latex/luamml/luamml-demo.sty new file mode 100644 index 0000000000..9aabb38719 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-demo.sty @@ -0,0 +1,82 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesExplPackage{luamml-demo}{2024-10-30}{0.2.0}{Reasonable default definitions for luamml} + +\sys_if_engine_luatex:F { + \msg_new:nnn {luamml-demo} {pdftex-option-ignored} {Option~`#1'~is~being~ignored~in~pdfTeX~mode.} + \DeclareOption*{\msg_warning:nnx {luamml-demo} {pdftex-option-ignored} {\CurrentOption}} + \ProcessOptions\relax + \RequirePackage{luamml-pdf-demo} + \endinput +} + +\RequirePackage{luamml}% Loading luamml is pretty much the point +\RequirePackage{amsmath,array}% These are more or less expected in luamml especially for advanced constructs + +\AtBeginDocument{% + \@ifpackageloaded{unicode-math}{}{% + \RegisterFamilyMapping\symsymbols{oms}% + \RegisterFamilyMapping\symletters{oml}% + \RegisterFamilyMapping\symlargesymbols{omx}% + } +} + +\bool_new:N \l__luamml_demo_structelem_bool + +\DeclareOption{tracing}{ + \tracingmathml=2 +} +\DeclareOption{structelem}{ + \bool_set_true:N \l__luamml_demo_structelem_bool + \luamml_structelem: +} +\DeclareOption{files}{ + \int_new:N \g__luamml_demo_mathml_int + \luamml_set_filename:n { + \immediateassignment \int_gincr:N \g__luamml_demo_mathml_int + \jobname -formula- \int_use:N \g__luamml_demo_mathml_int .xml + } +} +\DeclareOption{l3build}{ + \luamml_set_filename:n { + \jobname .mml + } + \luamml_begin_single_file: +} +\ProcessOptions\relax + +\cs_new_eq:NN \LuaMMLSetFilename \luamml_set_filename:n + +\cs_generate_variant:Nn \pdffile_filespec:nnn {ene} +\int_new:N \g__luamml_demo_af_int +\cs_new_protected:Npn \LuaMMLTagAF #1#2 { + \tag_mc_end_push: + \int_gincr:N \g__luamml_demo_af_int + \exp_args:Ne \pdf_object_new:nn{__luamml_demo_\int_use:N \g__luamml_demo_af_int}{dict} + \exp_args:Ne \tag_struct_begin:n{tag=Formula,AF=__luamml_demo_\int_use:N \g__luamml_demo_af_int,#1} + \bool_if:NF \l__luamml_demo_structelem_bool { + \tag_mc_begin:n{tag=Formula} + } + #2 + \group_begin: + \pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Supplement} + \pdffile_filespec:ene + { __luamml_demo_ \int_use:N \g__luamml_demo_af_int } + { test.xml } + { \luamml_get_last_mathml_stream:e{}\c_space_tl 0~R} + \group_end: + \bool_if:NF \l__luamml_demo_structelem_bool { + \tag_mc_end: + } + \tag_struct_end: + \tag_mc_begin_pop:n{} +} + +\NewDocumentCommand\AnnotateFormula{ o m m }{% + \IfValueTF{#1}{% + \luamml_annotate:nen{#1}% + }{ + \luamml_annotate:en + }{#2}{#3} +} + +\cs_set_eq:NN \WriteoutFormula \luamml_pdf_write: diff --git a/macros/luatex/latex/luamml/luamml-legacy-mappings.lua b/macros/luatex/latex/luamml/luamml-legacy-mappings.lua new file mode 100644 index 0000000000..6a56b70dbd --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-legacy-mappings.lua @@ -0,0 +1,73 @@ +-- local remap_ot1 = { + -- 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x03A3, 0x03A5, + -- 0x03A6, 0x03A8, 0x03A9, nil, nil, nil, nil, nil, +-- } + +local remap_oml = { [0] = + -- Greek italic + 0x1D6E4, 0x1D6E5, 0x1D6E9, 0x1D6EC, 0x1D6EF, 0x1D6F1, 0x1D6F4, 0x1D6F6, + 0x1D6F7, 0x1D6F9, 0x1D6FA, 0x1D6FC, 0x1D6FD, 0x1D6FE, 0x1D6FF, 0x1D716, + 0x1D701, 0x1D702, 0x1D703, 0x1D704, 0x1D705, 0x1D706, 0x1D707, 0x1D708, + 0x1D709, 0x1D70B, 0x1D70C, 0x1D70E, 0x1D70F, 0x1D710, 0x1D719, 0x1D712, + 0x1D713, 0x1D714, 0x1D700, 0x1D717, 0x1D71B, 0x1D71A, 0x1D70D, 0x1D711, + -- Symbols. (The nils are hook parts) + 0x21BC, 0x21BD, 0x21C0, 0x21C1, nil, nil, 0x22BB, 0x22BC, + -- old style numerals (nobody should ever use these in math) and some punctuation + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 0x2E, 0x2C, 0x3C, 0x2F, 0x3E, 0x226D, + -- letters filled up with symbols + 0x2202, 0x1D434, 0x1D435, 0x1D436, 0x1D437, 0x1D438, 0x1D439, 0x1D43A, + 0x1D43B, 0x1D43C, 0x1D43D, 0x1D43E, 0x1D43F, 0x1D440, 0x1D441, 0x1D442, + 0x1D443, 0x1D444, 0x1D445, 0x1D446, 0x1D447, 0x1D448, 0x1D449, 0x1D44A, + 0x1D44B, 0x1D44C, 0x1D44D, 0x266D, 0x266E, 0x266F, 0x2323, 0x2322, + 0x2113, 0x1D44E, 0x1D44F, 0x1D450, 0x1D451, 0x1D452, 0x1D453, 0x1D454, + 0x210E, 0x1D456, 0x1D457, 0x1D458, 0x1D459, 0x1D45A, 0x1D45B, 0x1D45C, + 0x1D45D, 0x1D45E, 0x1D45F, 0x1D460, 0x1D461, 0x1D462, 0x1D463, 0x1D464, + 0x1D465, 0x1D466, 0x1D467, 0x1D6A4, 0x1D6A5, 0x2118, 0x2192, nil, +} + +-- Something fishy here. Starting with "3D the entries seem wrong +local remap_oms = { [0] = + 0x2212, 0x22C5, 0xD7, 0x2A, 0xF7, 0x22C4, 0xB1, 0x2213, + 0x2295, 0x2296, 0x2297, 0x2298, 0x2299, 0x25CB, 0x2218, 0x2219, + 0x224D, 0x2261, 0x2286, 0x2287, 0x2264, 0x2265, 0x2AAF, 0x2AB0, + 0x223C, 0x2248, 0x2282, 0x2283, 0x226A, 0x226B, 0x227A, 0x227B, + 0x2190, 0x2192, 0x2191, 0x2193, 0x2194, 0x2197, 0x2198, 0x2243, + 0x21D0, 0x21D2, 0x21D1, 0x21D3, 0x21D4, 0x2196, 0x2199, 0x221D, + 0x2032, 0x221E, 0x2208, 0x220B, 0x25B3, 0x25BD, 0x0338, 0x21A6, + 0x2200, 0x2203, 0xAC, 0x2205, 0x211C, 0x2111, 0x22A4, 0x22A5, + 0x2135, 0x1D49C, 0x212C, 0x1D49E, 0x1D49F, 0x2130, 0x2131, 0x1D4A2, + 0x210B, 0x2110, 0x1D4A5, 0x1D4A6, 0x2112, 0x2133, 0x1D4A9, 0x1D4AA, + 0x1D4AB, 0x1D4AC, 0x211B, 0x1D4AE, 0x1D4AF, 0x1D4B0, 0x1D4B1, 0x1D4B2, + 0x1D4B3, 0x1D4B4, 0x1D4B5, 0x222A, 0x2229, 0x228E, 0x2227, 0x2228, + 0x22A2, 0x22A3, 0x230A, 0x230B, 0x2308, 0x2309, 0x7B, 0x7D, + 0x27E8, 0x27E9, 0x7C, 0x2016, 0x2195, 0x21D5, 0x5C, 0x2240, + 0x221A, 0x2A3F, 0x2207, 0x222B, 0x2294, 0x2293, 0x2291, 0x2292, + 0xA7, 0x2020, 0x2021, 0xB6, 0x2663, 0x2662, 0x2661, 0x2660, +} + +-- We are not remapping symbols which are only used as large variants +local remap_omx = { [0] = + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 0x27EE, 0x27EF, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 0x2A06, nil, + 0x222E, nil, 0x2A00, nil, 0x2A01, nil, 0x2A02, nil, + 0x2211, 0x220F, 0x222B, 0x22C3, 0x22C2, 0x2A04, 0x22C0, 0x22C1, + nil, nil, nil, nil, nil, nil, nil, nil, + 0x2210, nil, 0x5E, 0x5E, 0x5E, 0x7E, 0x7E, 0x7E, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 0x23B0, 0x23B1, nil, nil, nil, nil, +} + +return { + oml = remap_oml, + oms = remap_oms, + omx = remap_omx, +} diff --git a/macros/luatex/latex/luamml/luamml-lr.lua b/macros/luatex/latex/luamml/luamml-lr.lua new file mode 100644 index 0000000000..b78a7c3803 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-lr.lua @@ -0,0 +1,71 @@ +local properties = node.get_properties_table() + +local function to_unicode(head, tail) + local result, subresult, i = {[0] = 'mtext'}, {}, 0 + local characters, last_fid + local iter, state, n = node.traverse(head) + while true do + local id, sub n, id, sub = iter(state, n) + if not n or n == tail then break end + local props = properties[n] + if props and props.glyph_info then + i = i+1 + result[i] = glyph_info + else + local char, fid = node.is_glyph(n) + if char then + if fid ~= last_fid then + local fontdir = font.getfont(fid) + characters, last_fid = fontdir.characters, fid + end + local uni = characters[char] + local uni = uni and uni.unicode + i = i+1 + if uni then + if type(uni) == 'number' then + result[i] = utf.char(uni) + else + result[i] = utf.char(table.unpack(uni)) + end + else + if char < 0x110000 then + result[i] = utf.char(char) + else + result[i] = '\u{FFFD}' + end + end + elseif node.id'math' == id then + if props then + local mml = props.saved_mathml_table or props.saved_mathml_core + if mml then + i = i+1 + result[i] = mml + n = node.end_of_math(n) + end + end + -- elseif node.id'whatsit' == id then + -- TODO(?) + elseif node.id'glue' == id then + if n.width > 1000 then -- FIXME: Coordinate constant with tagpdf + i = i+1 + result[i] = '\u{00A0}' -- non breaking space... There is no real reason why it has to be non breaking, except that MathML often ignore other spaces + end + elseif node.id'hlist' == id then + local nested = to_unicode(n.head) + table.move(nested, 1, #nested, i+1, result) + i = i+#nested + elseif node.id'vlist' == id then + i = i+1 + result[i] = '\u{FFFD}' + elseif node.id'rule' == id then + if n.width ~= 0 then + i = i+1 + result[i] = '\u{FFFD}' + end + end -- CHECK: Everything else can probably be ignored, otherwise shout at me + end + end + return result +end + +return to_unicode diff --git a/macros/luatex/latex/luamml/luamml-patches-amsmath.sty b/macros/luatex/latex/luamml/luamml-patches-amsmath.sty new file mode 100644 index 0000000000..0b09bc7843 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-amsmath.sty @@ -0,0 +1,417 @@ +\ProvidesExplPackage {luamml-patches-amsmath} {2024-10-30} {0.2.0} + {Feel free to add a description here} + +\lua_now:n { require'luamml-amsmath' } + +% For all of these changes, the redefinitions appear huge. +% But they are almost identical to the original and only +% add luamml commands in appropriate places, so they would +% mostly disappear if there were enough hooks in amsmath. + +% aligned and friends +\cs_set:Npn \start@aligned #1#2 { + \RIfM@ + \else + \nonmatherr@ { \begin { \@currenvir } } + \fi + \savecolumn@ % Assumption: called inside a group + \luamml_annotate:en { + core = false + } { + \alignedspace@left + } + \ams@start@box {#1} \bgroup + \maxfields@ #2 \relax + \ifnum \maxfields@ > \m@ne + \multiply \maxfields@ \tw@ + \let \math@cr@@@ \math@cr@@@alignedat + \alignsep@ \z@skip + \else + \let \math@cr@@@ \math@cr@@@aligned + \alignsep@ \minalignsep + \fi + \Let@ \chardef \dspbrk@context \@ne + \default@tag + \spread@equation % no-op if already called + \global \column@ \z@ + \ialign \bgroup + & \column@plus + \hfil + \strut@ + $ + \m@th + \displaystyle + {##} + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: + \tabskip \z@skip + & \column@plus + $ + \m@th + \displaystyle + { + {} + ## + } + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: + \hfil + \tabskip\alignsep@ + \crcr + \ams@return@opt@arg +} + +\renewcommand \gathered [1] [c] { + \RIfM@ + \else + \nonmatherr@ { \begin {gathered} } + \fi + \luamml_annotate:en { + core = false + } { + \alignedspace@left + } + \ams@start@box {#1} \bgroup + \Let@ + \chardef \dspbrk@context \@ne + \restore@math@cr + \spread@equation + \ialign \bgroup + \hfil + \strut@ + $ + \m@th + \displaystyle + ## + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: + \hfil + \crcr + \ams@return@opt@arg +} + +\cs_set:Npn \endaligned { + \crcr + \__luamml_amsmath_save_inner_table:n \@currenvir + \egroup + \restorecolumn@ + \egroup + \__luamml_amsmath_finalize_inner_table: +} + +% gather +\cs_set:Npn \gather@ #1 { + \ingather@true + \let \split \insplit@ + \let \tag \tag@in@align + \let \label \label@in@display + \chardef \dspbrk@context \z@ + \intertext@ \displ@y@ \Let@ + \let \math@cr@@@ \math@cr@@@gather + \gmeasure@ {#1} + \global \shifttag@false + \tabskip \z@skip + \global \row@ \@ne + \halign to \displaywidth \bgroup + \strut@ + \setboxz@h { + $ + \m@th + \displaystyle + {##} + \luamml_save:nNn {} \displaystyle {mtd} + $ + } + \__luamml_amsmath_add_box_to_row: + \calc@shift@gather + \set@gather@field + \tabskip\@centering + & + \setboxz@h { + \strut@ + {##} + } + \dim_compare:nNnF {0pt} = { + \box_wd:N \c_zero_int + } { + \__luamml_amsmath_set_tag: + } + \place@tag@gather + \tabskip \iftagsleft@ + \gdisplaywidth@ + \else + \z@skip + \span \fi + \crcr + #1 +} + +\cs_new_eq:NN \__luamml_amsmath_original_gmeasure:n \gmeasure@ +\cs_set:Npn \gmeasure@ #1 { + \exp_last_unbraced:Nno + \use_ii_i:nn + { \luamml_ignore: } + { \__luamml_amsmath_original_gmeasure:n {#1} } +} + +\cs_set:Npn \endgather { + \math@cr + \black@ \totwidth@ + \__luamml_amsmath_finalize_table:n {gather} + \egroup + $$ + \ignorespacesafterend +} + +% align and friends +\cs_set:Npn \align@preamble { + & + \hfil + \strut@ + \setboxz@h { + \@lign + $ + \m@th + \displaystyle + {##} + \ifmeasuring@ + \luamml_ignore: + \else + \luamml_save:nNn {} \displaystyle {mtd} + \fi + $ + } + \ifmeasuring@ + \savefieldlength@ + \else + \__luamml_amsmath_add_box_to_row: + \fi + \set@field + \tabskip\z@skip + & + \setboxz@h { + \@lign + $ + \m@th + \displaystyle + { + {} + ## + } + \ifmeasuring@ + \luamml_ignore: + \else + \luamml_save:nNn {} \displaystyle {mtd} + \fi + $ + } + \ifmeasuring@ + \savefieldlength@ + \else + \__luamml_amsmath_add_box_to_row: + \fi + \set@field + \hfil + \tabskip\alignsep@ +} + +\cs_set:Npn \math@cr@@@align { + \ifst@rred + \nonumber + \fi + \if@eqnsw + \global \tag@true + \fi + \global \advance \row@ \@ne + \add@amps \maxfields@ + \omit + \kern -\alignsep@ + \iftag@ + \setboxz@h { + \@lign + \strut@ + { \make@display@tag } + } + \place@tag + \__luamml_amsmath_set_tag: + \fi + \ifst@rred + \else + \global \@eqnswtrue + \fi + \global \lineht@ \z@ + \cr +} + +\cs_set:Npn \maketag@@@ #1 { + \hbox { + \m@th + \normalfont + #1 + \__luamml_amsmath_save_tag: + } +} + +\cs_set:Npn \endalign { + \math@cr + \black@ \totwidth@ + \__luamml_amsmath_finalize_table:n {align} + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$ + \fi + \ignorespacesafterend +} + +% For a more interesting one, let's consider multline: +\cs_new_eq:NN \__luamml_amsmath_original_multline:n \multline@ +\cs_set:Npn \multline@ #1 { + \__luamml_amsmath_original_multline:n { + \ifmeasuring@ \else + \__luamml_amsmath_set_row_columnalign:n {left} + \fi + #1 + \ifmeasuring@ \else + \__luamml_amsmath_set_row_columnalign:n {right} + \fi + } +} + +\cs_new_eq:NN \__luamml_amsmath_original_mmeasure:n \mmeasure@ +\cs_set:Npn \mmeasure@ #1 { + \exp_last_unbraced:Nno + \use_ii_i:nn + { \luamml_ignore: } + { \__luamml_amsmath_original_mmeasure:n {#1} } +} + +% Luckily, {multline} uses \endmultline@math in exactly +% the spot where we have to set the flag. +% Less luckily, \endmultline@math sometimes get overwritten for the last line. +% But that isn't a problem since we want special behavior there anyway. +\cs_set:Npn \endmultline@math { + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: +} + +\cs_set:Npn \rendmultline@ { + \iftag@ + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: + \let \endmultline@math \relax + \ifshifttag@ + \hskip \multlinegap + \llap { + \vtop { + \raise@tag + \normalbaselines + \setbox \@ne \null + \dp \@ne \lineht@ + \box \@ne + \hbox { + \strut@ + \make@display@tag + } + } + } + \else + \hskip \multlinetaggap + \make@display@tag + \fi + \__luamml_amsmath_set_tag: + \else + \hskip \multlinegap + \fi + \hfilneg + \math@cr + \__luamml_amsmath_finalize_table:n {multline} + \egroup + $$ +} + +\cs_set:Npn \lendmultline@ { + \hfilneg + \hskip\multlinegap + \math@cr + \__luamml_amsmath_finalize_table:n {multline} + \egroup + $$ +} + +% Finally some slightly different stuff. +% While {matrix} is covered by {array}, we still have {smallmatrix}: +\renewenvironment {smallmatrix} { + \luamml_annotate:en { + core = false + } { + \null + \, + } + \vcenter \bgroup + \Let@ + \restore@math@cr + \default@tag + \baselineskip 6 \ex@ + \lineskip 1.5 \ex@ + \lineskiplimit \lineskip + \ialign \bgroup + \hfil + $ + \m@th + \scriptstyle + ## + \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes + $ + \__luamml_amsmath_add_last_to_row: + \hfil + && + \thickspace + \hfil + $ + \m@th + \scriptstyle + ## + \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes + $ + \__luamml_amsmath_add_last_to_row: + \hfil + \crcr +}{% + \crcr + \__luamml_amsmath_save_smallmatrix: + \egroup + \egroup + \__luamml_amsmath_finalize_inner_table: + \luamml_annotate:en { + core = false + } { + \, + } +} + +% {cases} is defined by the kernel, but we patch the overwritten version by amsmath. +\cs_set:Npn \env@cases { + \let \@ifnextchar \new@ifnextchar + \left \lbrace + \def \arraystretch {1.2} + \array {@{}l@{\quad \luamml_ignore:}l@{}} +} + + +\cs_set:Npn \bBigg@ #1 #2 { + { + \ensuremath { + \Uvextensible height~#1 \big@size axis~exact~#2 + } + } +} diff --git a/macros/luatex/latex/luamml/luamml-patches-amstext.sty b/macros/luatex/latex/luamml/luamml-patches-amstext.sty new file mode 100644 index 0000000000..97b1b1f176 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-amstext.sty @@ -0,0 +1,37 @@ +\ProvidesExplPackage {luamml-patches-amstext} {2024-10-30} {0.2.0} + {Feel free to add a description here} + +\int_new:N \g__luamml_amsmath_text_struct_int +\cs_set:Npn \textdef@ #1 #2 #3 { + \int_if_odd:nTF { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { + \int_gincr:N \g__luamml_amsmath_text_struct_int + \tag_struct_begin:n { + tag = mtext/mathml, + stash, + label = __luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int + } + \tag_mc_begin:n { + tag = mtext + } + \AnnotateFormula { + nucleus = true, + struct = "__luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int" + } + } { + \use:n + } + { + \hbox { + { + \everymath {#1} + \let \f@size #2 + \selectfont + #3 + } + } + } + \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { + \tag_mc_end: + \tag_struct_end: + } +} diff --git a/macros/luatex/latex/luamml/luamml-patches-array.sty b/macros/luatex/latex/luamml/luamml-patches-array.sty new file mode 100644 index 0000000000..b08d5615e4 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-array.sty @@ -0,0 +1,101 @@ +\ProvidesExplPackage {luamml-patches-array} {2024-10-30} {0.2.0} + {Feel free to add a description here} + +\lua_now:n { require'luamml-array' } + +\cs_set:Npn \@classz { + \@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble { + \ifcase \@chnum + \hfil + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 0~ + } + \do@row@strut + \hfil + \or + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 1~ + } + \do@row@strut + \hfil + \or + \hfil + \hskip 1sp + \d@llarbegin + \cs_if_eq:NNTF \d@llarbegin \begingroup { + \insert@column + \d@llarend + } { + \__luamml_array_init_col: + \insert@column + \luamml_save:nn {} {mtd} + \d@llarend + \__luamml_array_finalize_col:w 2~ + } + \do@row@strut + \or + \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \ar@align@mcell + \do@row@strut + \or + \vtop \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \do@row@strut + \or + \vbox \@startpbox { \@nextchar } + \insert@pcolumn + \@endpbox + \do@row@strut + \fi + } + \prepnext@tok +} + +\IfPackageAtLeastTF {array} {2023/12/11} { + \cs_set:Npn \endarray { + \tbl_crcr:n{endarray} + \__luamml_array_save_array: + \egroup + \UseTaggingSocket{tbl/finalize} + \tbl_restore_outer_cell_data: + \egroup + \mode_if_math:T { \__luamml_array_finalize_array: } + \@arrayright + \gdef \@preamble {} + } +} { + \cs_new_eq:NN \insert@pcolumn \insert@column + \cs_set:Npn \endarray { + \crcr + \__luamml_array_save_array: + \egroup + \egroup + \mode_if_math:T { \__luamml_array_finalize_array: } + \@arrayright + \gdef \@preamble {} + } +} diff --git a/macros/luatex/latex/luamml/luamml-patches-kernel.sty b/macros/luatex/latex/luamml/luamml-patches-kernel.sty new file mode 100644 index 0000000000..38eb28bd5f --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-kernel.sty @@ -0,0 +1,76 @@ +\ProvidesExplPackage {luamml-patches-kernel} {2024-10-30} {0.2.0} + {Feel free to add a description here} + +\cs_set:Npn \mathsm@sh #1 #2 { + \setbox \z@ \hbox { + $ + \m@th #1 { + #2 + } + \luamml_save:nNn {mathsmash} #1 {mpadded} + \luamml_pdf_write: + $ + } + \luamml_annotate:nen {2} { + nucleus = true, + core = consume_label('mathsmash', function(padded) + padded.height, padded.depth = 0, 0~ + end), + } { + {} + \finsm@sh + } +} + +\cs_set:Npn \mathph@nt #1 #2 { + \setbox \z@ = \hbox { + $ + \m@th + #1 + {#2} + \luamml_save:nNn {mathphant} #1 {mphantom} + $ + } + \luamml_annotate:nen {1} { + nucleus = true, + core = {[0] = 'mpadded', + \ifh@\else + width = 0, + \fi + \ifv@\else + height = 0, depth = 0, + \fi + consume_label'mathphant', + } + } { + \finph@nt + } +} + +\@ifpackageloaded {unicode-math} {} { + \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 { + \cs_set:cpx { \cs_to_str:N #1 ~ } { + \luamml_annotate:nen {#2} { + nucleus = true, core = {[0] = 'mi', '\string\u{#3}'}, + } { + \exp_not:v { \cs_to_str:N #1 ~ } + } + } + } + + \__luamml_kernel_define_character:Nnn \models {3} {22a7} + \__luamml_kernel_define_character:Nnn \hookrightarrow {3} {21aa} + \__luamml_kernel_define_character:Nnn \hookleftarrow {3} {21a9} + \__luamml_kernel_define_character:Nnn \bowtie {3} {22c8} + \__luamml_kernel_define_character:Nnn \Longrightarrow {3} {27f9} + \__luamml_kernel_define_character:Nnn \longrightarrow {3} {27f6} + \__luamml_kernel_define_character:Nnn \Longleftarrow {3} {27f8} + \__luamml_kernel_define_character:Nnn \longleftarrow {3} {27f5} + \__luamml_kernel_define_character:Nnn \Longleftrightarrow {3} {27fa} + \__luamml_kernel_define_character:Nnn \longleftrightarrow {3} {27f7} + \__luamml_kernel_define_character:Nnn \longmapsto {4} {27fc} +} + +\IfFileLoadedT {latex-lab-math.ltx} { + \RequirePackage{luamml-patches-lab-math} +} diff --git a/macros/luatex/latex/luamml/luamml-patches-lab-math.sty b/macros/luatex/latex/luamml/luamml-patches-lab-math.sty new file mode 100644 index 0000000000..7776576536 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-lab-math.sty @@ -0,0 +1,20 @@ +\ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0} + {Feel free to add a description here} + +\AddToHook{begindocument} { + \cs_set:Npn \common@align@ending { + \math@cr + \black@ \totwidth@ + \__luamml_amsmath_finalize_table:n {align} + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$ + \fi + \ignorespacesafterend + } +} diff --git a/macros/luatex/latex/luamml/luamml-patches-mathtools.sty b/macros/luatex/latex/luamml/luamml-patches-mathtools.sty new file mode 100644 index 0000000000..3dc1570b02 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-patches-mathtools.sty @@ -0,0 +1,35 @@ +\ProvidesExplPackage {luamml-patches-mathtools} {2024-10-26} {0.2.0} + {Feel free to add a description here} + +\RequirePackage{luamml-patches-amsmath} +% see https://github.com/latex3/tagging-project/issues/734 +\renewcommand*\MT_mult_internal:n [1]{ + \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05 + \MT_next: + \bgroup + \Let@ + \def\l_MT_multline_lastline_fint{0 } + \chardef\dspbrk@context\@ne \restore@math@cr + \MH_let:NwN \math@cr@@\MT_mult_mathcr_atat:w + \MH_let:NwN \shoveleft\MT_shoveleft:wn + \MH_let:NwN \shoveright\MT_shoveright:wn + \spread@equation + \MH_set_boolean_F:n {mult_firstline} + \MT_measure_mult:n {#1} + \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim + \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim} + \fi + \MH_set_boolean_T:n {mult_firstline} + \MH_if_num:w \l_MT_multline_lastline_fint=\@ne + \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w + \MH_fi: + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle{}## + \luamml_save:nNn {} \displaystyle {mtd} + $ + \__luamml_amsmath_add_last_to_row: + \hfil + \crcr + \hfilneg + #1 +} diff --git a/macros/luatex/latex/luamml/luamml-pdf-demo.sty b/macros/luatex/latex/luamml/luamml-pdf-demo.sty new file mode 100644 index 0000000000..73c93f076c --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-pdf-demo.sty @@ -0,0 +1,50 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesExplPackage{luamml-pdf-demo}{2024-10-30}{0.2.0}{Reasonable default definitions for luamml-pdf} + +\RequirePackage{luamml-pdf}% Loading luamml-pdf is pretty much the point +% \RequirePackage{amsmath,array}% May come back if the patches get ported + +% Delay family mappings to allow for replacements +\AddToHook{begindocument/before}{% + \@ifpackageloaded{unicode-math}{}{% + \RegisterFamilyMapping\symsymbols{oms}% + \RegisterFamilyMapping\symletters{oml}% + \RegisterFamilyMapping\symlargesymbols{omx}% + } +} + +\cs_new_protected:Npn \LuaMMLSetFilename #1 {} + +% TODO. +% \cs_generate_variant:Nn \pdffile_filespec:nnn {ene} +% \int_new:N \g__luamml_demo_af_int +% \cs_new_protected:Npn \LuaMMLTagAF #1#2 { +% \int_gincr:N \g__luamml_demo_af_int +% \exp_args:Ne \pdf_object_new:nn{__luamml_demo_\int_use:N \g__luamml_demo_af_int}{dict} +% \exp_args:Ne \tagstructbegin{tag=Formula,AF=__luamml_demo_\int_use:N \g__luamml_demo_af_int,#1} +% \bool_if:NF \l__luamml_demo_structelem_bool { +% \tagmcbegin{tag=Formula} +% } +% #2 +% \group_begin: +% \pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Supplement} +% \pdffile_filespec:ene +% { __luamml_demo_ \int_use:N \g__luamml_demo_af_int } +% { test.xml } +% { \luamml_get_last_mathml_stream:e{}\c_space_tl 0~R} +% \group_end: +% \bool_if:NF \l__luamml_demo_structelem_bool { +% \tagmcend +% } +% \tagstructend +% } + +\NewDocumentCommand\AnnotateFormula{ o m m }{% + \IfValueTF{#1}{% + \luamml_annotate:nen{#1}% + }{ + \luamml_annotate:en + }{#2}{#3} +} + +\cs_set_eq:NN \WriteoutFormula \luamml_pdf_write: diff --git a/macros/luatex/latex/luamml/luamml-structelemwriter.lua b/macros/luatex/latex/luamml/luamml-structelemwriter.lua new file mode 100644 index 0000000000..97a90acedb --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-structelemwriter.lua @@ -0,0 +1,123 @@ +local struct_begin = token.create'tag_struct_begin:n' +local struct_use = token.create'tag_struct_use:n' +local struct_end = token.create'tag_struct_end:' + +local mc_begin = token.create'tag_mc_begin:n' +local mc_end = token.create'tag_mc_end:' + +local function escape_name(name) + return name +end + +local function escape_string(str) + return str +end + +local ltx +local function get_ltx() + if not ltx then + ltx = _ENV.ltx + if not ltx then + tex.error("LaTeX PDF support not loaded", {"Maybe try adding \\DocumentMetadata."}) + ltx = {pdf = {object_id = function() return 0 end}} + end + end + return ltx +end + +local mathml_ns_obj +local function get_mathml_ns_obj() + if not mathml_ns_obj then + mathml_ns_obj = get_ltx().pdf.object_id'tag/NS/mathml' + if not mathml_ns_obj then + tex.error("Failed to find MathML namespace", {"The PDF support does not know the mathml namespace"}) + mathml_ns_obj = 0 + end + end + return mathml_ns_obj +end + +local attribute_counter = 0 +local attributes = setmetatable({}, {__index = function(t, k) + attribute_counter = attribute_counter + 1 + local attr_name = string.format('luamml_attr_%i', attribute_counter) + t[k] = attr_name + tex.runtoks(function() + tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/NSO/NS %i 0 R', + attr_name, mathml_ns_obj or get_mathml_ns_obj())) + -- tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/MathML-3', + -- attr_name)) + tex.cprint(12, k) + tex.sprint'}}' + end) + return attr_name +end}) + +local mc_type = luatexbase.attributes.g__tag_mc_type_attr +local mc_cnt = luatexbase.attributes.g__tag_mc_cnt_attr +-- print('!!!', mc_type, mc_cnt) + +local stash_cnt = 0 +local attrs = {} +local function write_elem(tree, stash) + if tree[':struct'] then + return tex.runtoks(function() + return tex.sprint(struct_use, '{', tree[':struct'], '}') + end) + end + if not tree[0] then print('ERR', require'inspect'(tree)) end + local i = 0 + for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then + -- for attr, val in next, tree do if type(attr) == 'string' and string.byte(attr) ~= 0x3A then + i = i + 1 + attrs[i] = string.format('/%s(%s)', escape_name(attr), escape_string(val)) + end end + table.sort(attrs) + + if stash then + stash_cnt = stash_cnt + 1 + stash = '__luamml_stashed_' .. stash_cnt + tree[':struct'] = stash + stash = ', stash, label = ' .. stash + end + + local attr_flag = i ~= 0 and ', attribute=' .. attributes[table.concat(attrs)] + tex.sprint(struct_begin, '{tag=' .. tree[0] .. '/mathml') + if stash then tex.sprint(stash) end + if attr_flag then tex.sprint(attr_flag) end + if tree[':actual'] then + tex.sprint(', actualtext = {') + tex.cprint(12, tree[':actual']) + tex.sprint'}' + end + tex.sprint'}' + for j = 1, i do attrs[j] = nil end + + if tree[':nodes'] then + local n = tree[':nodes'] + tex.runtoks(function() + tex.sprint{mc_begin, string.format('{tag=%s}', tree[0])} + -- NOTE: This will also flush all previous sprint's... That's often annoying, but in this case actually intentional. + end) + local mct, mcc = tex.attribute[mc_type], tex.attribute[mc_cnt] + for i = 1, #n do + node.set_attribute(n[i], mc_type, mct) + node.set_attribute(n[i], mc_cnt, mcc) + end + tex.runtoks(function() + tex.sprint(mc_end) + end) + end + for _, elem in ipairs(tree) do + if type(elem) ~= 'string' then + write_elem(elem) + end + end + tex.runtoks(function() + tex.sprint(struct_end) + end) +end + +return function(element, stash) + return write_elem(element, stash) +end diff --git a/macros/luatex/latex/luamml/luamml-table.lua b/macros/luatex/latex/luamml/luamml-table.lua new file mode 100644 index 0000000000..4fb553af28 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-table.lua @@ -0,0 +1,110 @@ +local write_xml = require'luamml-xmlwriter' +local make_root = require'luamml-convert'.make_root +local save_result = require'luamml-tex'.save_result + +local properties = node.get_properties_table() + +local glue_id = node.id'glue' +local tabskip_sub = 12 +assert(node.subtypes'glue'[tabskip_sub] == 'tabskip') + +local function store_get_row() + local row_temp + for i=tex.nest.ptr-1, 0, -1 do + local head = tex.nest[i].head + local glue = head.next + if glue and glue.id == glue_id and glue.subtype == tabskip_sub then + row_temp = head + break + end + end + if not row_temp then + error[[luamml_table's store function called outside of table]] + end + local props = properties[row_temp] + if not props then + props = {} + properties[row_temp] = props + end + local mml_row = props.mathml_row + if not mml_row then + mml_row = {[0] = 'mtr'} + props.mathml_row = mml_row + end + return mml_row +end + +local function store_column_xml(mml, display) + if mml[0] ~= 'mtd' then + if display and mml[0] == 'mstyle' and mml.displaystyle == true then + mml[0], mml.displaystyle, mml.scriptlevel = 'mtd', nil, nil + else + if display and mml[0] ~= 'mstyle' then + mml = {[0] = 'mstyle', displaystyle = false, mml} + end + mml = {[0] = 'mtd', mml} + end + end + table.insert(store_get_row(), mml) + return mml +end + +local function store_column(startmath) + local props = properties[startmath] + if not props then return end + local mml = props.saved_mathml_table or props.saved_mathml_core + if mml then return store_column_xml(mml) end +end + +local function store_tag(xml) + local mml_row = store_get_row() + xml.intent = ':equationlabel' + table.insert(mml_row, 1, xml) + last_tag = nil +end + +local function set_row_attribute(name, value) + local mml_row = store_get_row() + mml_row[name] = value +end + +luatexbase.add_to_callback('hpack_filter', function(_, group) + if group ~= 'fin_row' then return true end + + local temp = tex.nest.top.head + local props = properties[temp] + if not props then return true end + local mml_row = props.mathml_row + if not mml_row then return true end + props.mathml_row = nil + + props = properties[tex.lists.align_head] + if not props then + props = {} + properties[tex.lists.align_head] = props + end + local mml_table = props.mathml_table_node_table + if not mml_table then + mml_table = {[0] = 'mtable'} + props.mathml_table_node_table = mml_table + end + table.insert(mml_table, mml_row) + return true +end, 'mathml amsmath processing') + +local function get_table() + -- TODO: Error handling etc + local props = properties[tex.lists.align_head] + if not props then return end + local mml_table = props.mathml_table_node_table + props.mathml_table_node_table = nil + return mml_table +end + +return { + store_column = store_column, + store_column_xml = store_column_xml, + store_tag = store_tag, + set_row_attribute = set_row_attribute, + get_table = get_table, +} diff --git a/macros/luatex/latex/luamml/luamml-tex-annotate.lua b/macros/luatex/latex/luamml/luamml-tex-annotate.lua new file mode 100644 index 0000000000..050a00a90e --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-tex-annotate.lua @@ -0,0 +1,128 @@ +local nest = tex.nest + +local properties = node.get_properties_table() + +local mark_environment = { + data = { + }, +} +do + local _ENV = mark_environment + function consume_label(label, fn) + local mathml = data.mathml[label] + data.mathml[label] = nil + if fn then fn(mathml) end + return mathml + end +end + +local function annotate() + local annotation, err = load( 'return {' + .. token.scan_argument() + .. '}', nil, 't', mark_environment) + if not annotation then + tex.error('Error while parsing LuaMML annotation', {err}) + return 0 + end + annotation = annotation() + local nesting = nest.top + local props = properties[nesting.head] + local current = props and props.luamml__annotate_context + if current then + current, props.luamml__annotate_context = current.head, current.prev + else + tex.error('Mismatched LuaMML annotation', + {'Something odd happened. Maybe you forgot braces around an annotated symbol in a subscript or superscript?'}) + return 0 + end + local after = nesting.tail + local count, offset = 0, annotation.offset + local marked + if current == after then + tex.error'Empty LuaMML annotation' + else + repeat + current = current.next + count = count + 1 + if count == offset then + marked = current + elseif offset or current ~= after then + local props = properties[current] + if not props then + props = {} + properties[current] = props + end + props.mathml_table, props.mathml_core = nil, false + end + until current == after + if offset and not marked then + tex.error'Invalid offset in LuaMML annotation' + end + marked = marked or current + if annotation.nucleus then + marked = marked.nucleus + end + if marked then + local props = properties[marked] + if not props then + props = {} + properties[marked] = props + end + if annotation.core ~= nil then + props.mathml_core = annotation.core + end + if annotation.struct ~= nil then + local saved = props.mathml_filter + local struct = annotation.struct + function props.mathml_filter(mml, core) + mml[':struct'] = struct + if saved then + return saved(mml, core) + else + return mml, core + end + end + end + else + tex.error'Unable to annotate nucleus of node without nucleus' + end + end + return count +end + +local funcid = luatexbase.new_luafunction'__luamml_annotate_begin:' +token.set_lua('__luamml_annotate_begin:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local top = nest.top + local temp = top.head + local props = properties[temp] + if not props then + props = {} + properties[temp] = props + end + props.luamml__annotate_context = { + prev = props.luamml__annotate_context, + head = top.tail, + } +end + +funcid = luatexbase.new_luafunction'__luamml_annotate_end:we' +token.set_lua('__luamml_annotate_end:we', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local count = token.scan_int() + local real_count = annotate() + if count ~= real_count then + tex.error('Incorrect count in LuaMML annotation', { + 'A LuaMML annotation was discovered with an explicit count \z + which was not the same as the number of top-level nodes annotated.', + string.format('This can be fixed by changing the supplied count from %i to %i \z + or by omitting the count value entirely.', count, real_count) + }) + end +end + +funcid = luatexbase.new_luafunction'__luamml_annotate_end:e' +token.set_lua('__luamml_annotate_end:e', funcid, 'protected') +lua.get_functions_table()[funcid] = annotate + +return mark_environment diff --git a/macros/luatex/latex/luamml/luamml-tex.lua b/macros/luatex/latex/luamml/luamml-tex.lua new file mode 100644 index 0000000000..4182fbb801 --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-tex.lua @@ -0,0 +1,232 @@ +local mlist_to_mml = require'luamml-convert' +local process_mlist = mlist_to_mml.process +local make_root = mlist_to_mml.make_root +local register_family = mlist_to_mml.register_family + +local mappings = require'luamml-legacy-mappings' +local write_xml = require'luamml-xmlwriter' +local write_struct = require'luamml-structelemwriter' + +local filename_token = token.create'l__luamml_filename_tl' +local label_token = token.create'l__luamml_label_tl' +local left_brace = token.new(string.byte'{', 1) +local right_brace = token.new(string.byte'}', 2) + +local output_hook_token +local global_text_families = {} +local text_families_meta = {__index = function(t, fam) + if fam == nil then return nil end + local assignment = global_text_families[fam] + if assignment == nil then + local fid = node.family_font(fam) + local fontdir = font.getfont(fid) + if not fontdir then + -- FIXME(?): If there is no font... + error'Please load your fonts?!?' + end + assignment = not (fontdir.MathConstants and next(fontdir.MathConstants)) + end + t[fam] = assignment + return assignment +end} + +local properties = node.get_properties_table() +local mmode, hmode, vmode do + local result, input = {}, tex.getmodevalues() + for k,v in next, tex.getmodevalues() do + if v == 'math' then mmode = k + elseif v == 'horizontal' then hmode = k + elseif v == 'vertical' then vmode = k + else assert(v == 'unset') + end + end + assert(mmode and hmode and vmode) +end + +local funcid = luatexbase.new_luafunction'RegisterFamilyMapping' +token.set_lua('RegisterFamilyMapping', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local fam = token.scan_int() + local mapping = token.scan_string() + if mappings[mapping] then + register_family(fam, mappings[mapping]) + if global_text_families[fam] == nil then + global_text_families[fam] = false + end + else + tex.error(string.format('Unknown font mapping %q', mapping)) + end +end + +local funcid = luatexbase.new_luafunction'RegisterFamilyMapping' +token.set_lua('RegisterTextFamily', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + local fam = token.scan_int() + local _kind = token.scan_string() + global_text_families[fam] = true +end + +local function shallow_copy(t) + local tt = {} + for k,v in next, t do + tt[k] = v + end + return tt +end + +-- Possible flag values: +-- 0: Skip +-- 1: Generate MathML, but only save it for later usage in startmath node +-- 3: Normal (This is the only supported one in display mode) +-- 11: Generate MathML structure elements +-- +-- More generally, flags is a bitfield with the defined bits: +-- Bit 5-7: See Bit 4 +-- Bit 4: Overwrite mathstyle with bit 9-11 +-- Bit 3: Generate MathML structure elements +-- Bit 2: Change root element name for saved element +-- Bit 1: Save MathML as a fully converted formula +-- Bit 0: Save MathML for later usage in startmath node. Ignored for display math. + +local out_file + +local mlist_result + +local undefined_cmd = token.command_id'undefined_cs' +local call_cmd = token.command_id'call' + +local labelled_mathml = {} + +local function save_result(xml, display, structelem) + mlist_result = make_root(xml, display and 0 or 2) + if out_file then + out_file:write(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 1 == 1):sub(2) .. '\n') + else + token.put_next(filename_token) + local filename = token.scan_argument() + if filename ~= '' then + assert(io.open(filename, 'w')) + :write(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 1 == 1):sub(2) .. '\n') + :close() + end + end + local tracing = tex.count.tracingmathml > 1 + if tracing then + texio.write_nl(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 2 == 2) .. '\n') + end + if output_hook_token then + tex.runtoks(function() + tex.sprint(-2, output_hook_token, left_brace, write_xml(mlist_result, tex.count.l__luamml_pretty_int & 4 == 4), right_brace) + end) + end + if tex.count.l__luamml_flag_int & 8 == 8 then + write_struct(mlist_result) + end + return mlist_result +end + +luatexbase.add_to_callback('pre_mlist_to_hlist_filter', function(mlist, style) + if tex.nest.top.mode == mmode then -- This is a equation label generated with \eqno + return true + end + local flag = tex.count.l__luamml_flag_int + if flag & 3 == 0 then + return true + end + local display = style == 'display' + local startmath = tex.nest.top.tail -- Must come before any write_struct calls which adds nodes + style = flag & 16 == 16 and flag>>5 & 0x7 or display and 0 or 2 + local xml, core = process_mlist(mlist, style, setmetatable({}, text_families_meta)) + if flag & 2 == 2 then + xml = save_result(shallow_copy(xml), display) + end + if flag & 4 == 4 then + local element_type = token.get_macro'l__luamml_root_tl' + if element_type ~= 'mrow' then + if xml[0] == 'mrow' then + xml[0] = element_type + else + xml = {[0] = element_type, xml} + end + end + end + if not display and flag & 1 == 1 then + local props = properties[startmath] + if not props then + props = {} + properties[startmath] = props + end + props.saved_mathml_table, props.saved_mathml_core = xml, core + token.put_next(label_token) + local label = token.scan_argument() + if label ~= '' then + if labelled_mathml[label] then + tex.error('MathML Label already in use', { + 'A MathML expression has a label which is already used by another \z + formula. If you do not want to label this formula with a unique \z + label, set a empty label instead.'}) + else + labelled_mathml[label] = xml + end + end + if flag & 10 == 8 then + write_struct(xml, true) -- This modifies xml in-place to reference the struture element + end + end + return true +end, 'dump_list') + +funcid = luatexbase.new_luafunction'luamml_get_last_mathml_stream:e' +token.set_lua('luamml_get_last_mathml_stream:e', funcid) +lua.get_functions_table()[funcid] = function() + if not mlist_result then + tex.error('No current MathML data', { + "I was asked to provide MathML code for the last formula, but there weren't any new formulas since you last asked." + }) + end + local mml = write_xml(mlist_result, tex.count.l__luamml_pretty_int & 8 == 8) + if tex.count.tracingmathml == 1 then + texio.write_nl(mml .. '\n') + end + tex.sprint(-2, tostring(pdf.immediateobj('stream', mml, '/Subtype/application#2Fmathml+xml' .. token.scan_argument(true)))) + mlist_result = nil +end + +funcid = luatexbase.new_luafunction'luamml_begin_single_file:' +token.set_lua('luamml_begin_single_file:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + token.put_next(filename_token) + local filename = token.scan_argument() + if filename ~= '' then + out_file = assert(io.open(filename, 'w')) + end +end + +funcid = luatexbase.new_luafunction'luamml_end_single_file:' +token.set_lua('luamml_end_single_file:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + if out_file then + out_file:close() + out_file = nil + end +end + +funcid = luatexbase.new_luafunction'luamml_register_output_hook:N' +token.set_lua('__luamml_register_output_hook:N', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + output_hook_token = token.get_next() +end + +funcid = luatexbase.new_luafunction'luamml_disable_output_hook:' +token.set_lua('__luamml_disable_output_hook:', funcid, 'protected') +lua.get_functions_table()[funcid] = function() + output_hook_token = nil +end + +local annotate_context = require'luamml-tex-annotate' +annotate_context.data.mathml = labelled_mathml + +return { + save_result = save_result, + labelled = labelled_mathml, +} diff --git a/macros/luatex/latex/luamml/luamml-xmlwriter.lua b/macros/luatex/latex/luamml/luamml-xmlwriter.lua new file mode 100644 index 0000000000..a2b5abefbf --- /dev/null +++ b/macros/luatex/latex/luamml/luamml-xmlwriter.lua @@ -0,0 +1,58 @@ +-- FIXME: Not sure yet if this will be needed +local function escape_name(name) + return name +end + +local escapes = { + ['"'] = """, + ['<'] = "<", + ['>'] = ">", + ['&'] = "&", +} +local function escape_text(text) + return string.gsub(string.gsub(tostring(text), '["<>&]', escapes), '[\x00-\x08\x0B\x0C\x0E-\x1F]', function(x) + return string.format('^^%02x', string.byte(x)) + end) +end + +local attrs = {} +local function write_elem(tree, indent) + if not tree[0] then print('ERR', require'inspect'(tree)) end + local escaped_name = escape_name(assert(tree[0])) + local i = 0 + for attr, val in next, tree do if type(attr) == 'string' then + if not string.find(attr, ':', 1, true) then + -- if string.byte(attr) ~= 0x3A then + i = i + 1 + attrs[i] = string.format(' %s="%s"', escape_name(attr), escape_text(val)) + end + end end + table.sort(attrs) + local out = string.format('%s<%s%s', indent or '', escaped_name, table.concat(attrs)) + for j = 1, i do attrs[j] = nil end + if not tree[1] then + return out .. '/>' + end + out = out .. '>' + local inner_indent = indent and indent .. ' ' + local is_string + for _, elem in ipairs(tree) do + if type(elem) == 'string' then + if inner_indent and not is_string then + out = out .. inner_indent + end + out = out .. escape_text(elem) + is_string = true + else + out = out .. write_elem(elem, inner_indent) + is_string = nil + end + end + if indent then out = out .. indent end + return out .. '</' .. escaped_name .. '>' +end + +return function(element, indent, version) + return (version == '11' and '<?xml version="1.1"?>' or '') .. + write_elem(element, indent and '\n' or nil) +end diff --git a/macros/luatex/latex/luamml/luamml.dtx b/macros/luatex/latex/luamml/luamml.dtx new file mode 100644 index 0000000000..651185af9b --- /dev/null +++ b/macros/luatex/latex/luamml/luamml.dtx @@ -0,0 +1,552 @@ +% \iffalse meta-comment +% +%% Copyright (C) 2020-2024 by Marcel Krueger +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +% +%<*batch> +%<*gobble> +\ifx\jobname\relax\let\documentclass\undefined\fi +\ifx\documentclass\undefined +\csname fi\endcsname +%</gobble> +\input docstrip.tex +\keepsilent +\generate{ + \file{luamml.sty}{\from{luamml.dtx}{package,luatex}} + \file{luamml-pdf.sty}{\from{luamml.dtx}{package,pdftex}} +} +\endbatchfile +%</batch> +%<*gobble> +\fi +\expandafter\ifx\csname @currname\endcsname\empty +\csname fi\endcsname +%</gobble> +%<*driver> +\documentclass{l3doc} +\usepackage{luamml} +\usepackage{csquotes,luacolor} +\MakeShortVerb{\|} +\RecordChanges +\begin{document} +\tracingmathml2 +\DocInput{luamml.dtx} +\PrintIndex +\PrintChanges +\end{document} +%</driver> +%<*gobble> +\fi +%</gobble> +% \fi +% +% \GetFileInfo{luamml.sty} +% \title{The \pkg{luamml} package% +% \thanks{This document corresponds to \pkg{luamml}~\fileversion, dated~\filedate.}% +% } +% \author{Marcel Krüger} +% +% \maketitle +% +% \begin{documentation} +% \section{Use case} +% When generating output for the web or tagged output, mathematical content should often be represented as MathML. +% This uses Lua\TeX~callbacks to automatically attempt to convert Lua\TeX~math mode output into MathML. +% +% \section{Usage} +% The \pkg{luamml} package is designed to be used in automated ways by other packages and usually should not be invoked directly by the end user. +% For experiments, \texttt{luamml-demo} is included which provides easier to use interfaces. +% +% Add in your preamble +% \begin{verbatim} +% \usepackage[files]{luamml-demo} +% \end{verbatim} +% This will trigger the output of individual files for each block of math output containing corresponding MathML. +% +% Alternatively +% \begin{verbatim} +% \usepackage[l3build]{luamml-demo} +% \end{verbatim} +% will generate a single file with a concatenation of all MathML blocks. +% +% For automated use, the \pkg{luamml} package can be included directly, followed by enclosing blocks which should generate files with \cmd{luamml_begin_single_file:} and \cmd{luamml_end_single_file:}. +% The filename can be set with \cmd{luamml_set_filename:n}. +% +% \section{Improving MathML conversion} +% When using constructs which do not automatically get converted in acceptable form, conversion hints can be provided with \cmd{luamml_annotate:en}. +% This allows to provide a replacement MathML structure in Lua table form, for example +% \begin{verbatim} +% \luamml_annotate:en { +% nucleus = true, +% core = {[0] = 'mi', 'TeX'}, +% }{ +% \hbox{\TeX} +% } +% \end{verbatim} +% produces a |<mi>TeX</mi>| element in the output instead of trying to import \TeX~as a mathematical expression. +% The table structure is explained in an appendix. +% +% \section{Features \& Limitations} +% Currently all mathematical expressions which purely contain Unicode encoded math mode material without embedded non-math should get converted successfully. +% Usage with non-Unicode math (\TeX's 8-bit math fonts) is highly experimental and undocumented. +% Any attempt to build complicated structures by embedding arbitrary \TeX\ code in the middle of math mode needs to have a MathML replacement specified. +% We try to automate more cases in the future. +% +% \appendix +% \input{luamml-algorithm} +% \end{documentation} +% +% \begin{implementation} +% \section{Package Implementation} +% \subsection{Initialization} +% \iffalse +%<*package> +% \fi +% \begin{macrocode} +%<@@=luamml> +%<*luatex> +\ProvidesExplPackage {luamml} {2024-10-30} {0.2.0} + {Automatically generate presentational MathML from LuaTeX math expressions} +%</luatex> +%<*pdftex> +\ProvidesExplPackage {luamml-pdf} {2024-10-30} {0.2.0} + {MathML generation for L̶u̶a̶pdfLaTeX} +%</pdftex> +% \end{macrocode} +% +% \subsection{Initialization} +% These variable have to appear before the Lua module is loaded and will be used to +% communicate information to the callback. +% +% Here \cs{tracingmathml} does not use a expl3 name since it is not intended for +% programming use but only as a debugging helper for the user. +% The other variables are internal, but we provide public interfaces for setting +% them later. +% \begin{macrocode} +\int_new:N \l__luamml_flag_int +\int_new:N \l__luamml_pretty_int +%<luatex>\tl_new:N \l__luamml_filename_tl +\tl_new:N \l__luamml_root_tl +\tl_set:Nn \l__luamml_root_tl { mrow } +\tl_new:N \l__luamml_label_tl +%<pdftex>\int_new:N \g__luamml_formula_id_int +%<luatex>\int_new:N \tracingmathml + +\int_set:Nn \l__luamml_pretty_int { 1 } +% \end{macrocode} +% +% Now we can load the Lua module which defines the callback. +% Of course until pdf\TeX starts implementing \cs{directlua} this is only +% done in Lua\TeX. +% \begin{macrocode} +%<luatex>\lua_now:n { require'luamml-tex' } +% \end{macrocode} +% +% \subsection{Hook} +% We also call a hook with arguments at the end of every MathML conversion with the result. +% Currently only implemented in Lua\TeX{} since it immediately provides the output. +% \begin{macrocode} +%<*luatex> +\hook_new_with_args:nn { luamml / converted } { 1 } + +\cs_new_protected:Npn \__luamml_output_hook:n { + \hook_use:nnw { luamml / converted } { 1 } +} +\__luamml_register_output_hook:N \__luamml_output_hook:n +%</luatex> +% \end{macrocode} + +% +% \subsection{Flags} +% The most important interface is for setting the flag which controls how the +% formulas should be converted. +% +% \begin{macro}{\luamml_process:} +% Consider the current formula to be a complete, free-standing mathematical +% expression which should be converted to MathML. Additionally, the formula +% is also saved in the \texttt{start\_math} node as with +% \cs{luamml_save:}. +% \begin{macrocode} +\cs_new_protected:Npn \luamml_process: { + \tl_set:Nn \l__luamml_label_tl {} + \int_set:Nn \l__luamml_flag_int { 3 } +} +% \end{macrocode} +% Temporarly for compatibility +% \begin{macrocode} +\cs_set_eq:NN \luamml_flag_process: \luamml_process: +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\__luamml_maybe_structelem:} +% A internal helper which can be added to a tag to preserve the external state +% of the structelem flag. +% \begin{macrocode} +\cs_new:Npn \__luamml_maybe_structelem: { + ( + 8 * \int_mod:nn { + \int_div_truncate:nn { \l__luamml_flag_int } {8} + } {2} + ) + +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\__luamml_style_to_num:N} +% \begin{macrocode} +\cs_new:Npn \__luamml_style_to_num:N #1 { +%<luatex> 32 * #1 +%<*pdftex> + \token_case_meaning:NnF #1 { + \displaystyle {0} + \textstyle {32} + \scriptstyle {64} + \scriptscriptstyle {96} + } { + \Invalid_mathstyle + } +%</pdftex> +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\luamml_save:n, +% \luamml_save:nN, +% \luamml_save:nn, +% \luamml_save:nNn} +% Convert the current formula but only save it's representation in the math +% node without emitting it as a complete formula. This is useful when the +% expression forms part of a bigger formula and will be integrated into it's +% MathML tables later by special code. +% It optionally accepts three parameters: A label, one math style command +% (\cs{displaystyle}, \cs{textstyle}, etc.) which is the implicit math style +% (so the style which the surrounding code expects this style to have) and a +% name for the root element (defaults to \texttt{mrow}). +% If the root element name is \texttt{mrow}, it will get suppressed in some +% cases. +% \begin{macrocode} +\cs_new_protected:Npn \luamml_save:n #1 { + \tl_set:Nn \l__luamml_label_tl {#1} + \int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 1 } +} +\cs_new_protected:Npn \luamml_save:nN #1#2 { + \tl_set:Nn \l__luamml_label_tl {#1} + \int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 17 + \__luamml_style_to_num:N #2 } +} +\cs_new_protected:Npn \luamml_save:nn #1 { + \tl_set:Nn \l__luamml_label_tl {#1} + \int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 5 } + \tl_set:Nn \l__luamml_root_tl +} +\cs_new_protected:Npn \luamml_save:nNn #1#2 { + \tl_set:Nn \l__luamml_label_tl {#1} + \int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 21 + \__luamml_style_to_num:N #2 } + \tl_set:Nn \l__luamml_root_tl +} +% \end{macrocode} +% Temporarly for compatibility +% \begin{macrocode} +\cs_set_eq:NN \luamml_flag_save:n \luamml_save:n +\cs_set_eq:NN \luamml_flag_save:nN \luamml_save:nN +\cs_set_eq:NN \luamml_flag_save:nn \luamml_save:nn +\cs_set_eq:NN \luamml_flag_save:nNn \luamml_save:nNn +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\luamml_ignore:} +% Completely ignore the math mode material. +% \begin{macrocode} +\cs_new_protected:Npn \luamml_ignore: { + \int_set:Nn \l__luamml_flag_int { 0 } +} +% \end{macrocode} +% Temporarly for compatibility +% \begin{macrocode} +\cs_set_eq:NN \luamml_flag_ignore: \luamml_ignore: +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\luamml_structelem:} +% Like \cs{luamml_process:}, but additionally adds PDF structure +% elements. This only works in Lua\TeX\ and requires that the \pkg{tagpdf} package +% has been loaded \emph{before} \texttt{luamml}. +% \begin{macrocode} +%<*luatex> +\cs_new_protected:Npn \luamml_structelem: { + \tl_set:Nn \l__luamml_label_tl {} + \int_set:Nn \l__luamml_flag_int { 11 } +} +% \end{macrocode} +% Temporarly for compatibility +% \begin{macrocode} +\cs_set_eq:NN \luamml_flag_structelem: \luamml_structelem: +%</luatex> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\luamml_set_filename:n} +% Allows to set a filename to which the generated MathML gets written. +% Previous content from the file will get overwritten. This includes results +% written by a previous formula. Therefore this has to be called separately +% for every formula or it must expand to different values to be useful. +% The value is fully expanded when the file is written. +% +% Only complete formulas get written into files (so formulas where +% \cs{luamml_process:} or \cs{luamml_structelem:} are in effect). +% +% Only implemented in Lua\TeX, in pdf\TeX\ the arguments for \texttt{pdfmml} +% determine the output location. +% \begin{macrocode} +%<*luatex> +\cs_new_protected:Npn \luamml_set_filename:n { + \tl_set:Nn \l__luamml_filename_tl +} +%</luatex> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\luamml_begin_single_file:, \luamml_end_single_file:} +% Everything between these two commands gets written into the same XML file. +% The filename is expanded when \cs{luamml_begin_single_file:} gets executed. +% +% (Implemented in Lua) +% \end{macro} +% +% By default, the flag is set to assume complete formulas. +% \begin{macrocode} +\luamml_process: +% \end{macrocode} +% +% \subsection{Annotations} +% These are implemented very differently depending on the engine, but the interface +% should be the same. +% \subsubsection{Lua\TeX} +% \begin{macrocode} +%<*luatex> +% \end{macrocode} +% \begin{macro}{\luamml_annotate:nen, \luamml_annotate:en} +% A simple annotation scheme: The first argument is the number of top level +% noads to be annotated, the second parameter the annotation and the third +% parameter the actual list of math tokens. The first argument can be omitted to +% let Lua\TeX determine the number itself. +% +% Passing the first parameter explicitly is useful for any annotations which +% should be compatible with future pdf\TeX versions of this functionality. +% \begin{macrocode} +\cs_new_protected:Npn \luamml_annotate:nen #1#2#3 { + \__luamml_annotate_begin: + #3 + \__luamml_annotate_end:we \tex_numexpr:D #1 \scan_stop: {#2} +} + +\cs_new_protected:Npn \luamml_annotate:en #1#2 { + \__luamml_annotate_begin: + #2 + \__luamml_annotate_end:e {#1} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</luatex> +% \end{macrocode} + +% \subsubsection{pdf\TeX} +% \begin{macrocode} +%<*pdftex> +% \end{macrocode} +% \begin{macro}{\__luamml_pdf_showlists:} +% Here and in many other locations the \pdfTeX{} implementation is based on \cs{showlists}, +% so we define a internal wrapper which sets all relevant parameters. +% \begin{macrocode} +\cs_if_exist:NTF \showstream { + \iow_new:N \l__luamml_pdf_stream + \iow_open:Nn \l__luamml_pdf_stream { \jobname .tml } + \cs_new_protected:Npn \__luamml_pdf_showlists: { + \group_begin: + \int_set:Nn \tex_showboxdepth:D { \c_max_int } + \int_set:Nn \tex_showboxbreadth:D { \c_max_int } + \showstream = \l__luamml_pdf_stream + \tex_showlists:D + \group_end: + } +} { + \cs_set_eq:NN \l__luamml_pdf_stream \c_log_iow + \cs_set_eq:NN \__luamml_pdf_set_showstream: \scan_stop: + \cs_new_protected:Npn \__luamml_pdf_showlists: { + \group_begin: + \int_set:Nn \l_tmpa_int { \tex_interactionmode:D } + \int_set:Nn \tex_interactionmode:D { 0 } + \int_set:Nn \tex_showboxdepth:D { \c_max_int } + \int_set:Nn \tex_showboxbreadth:D { \c_max_int } + \tex_showlists:D + \int_set:Nn \tex_interactionmode:D { \l_tmpa_int } + \group_end: + } +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\luamml_annotate:nen, \luamml_annotate:en} +% Now we can define the annotation commands for pdf\TeX. +% \begin{macrocode} +\cs_generate_variant:Nn \tl_to_str:n { e } +\int_new:N \g__luamml_annotation_id_int +\cs_new_protected:Npn \luamml_annotate:nen #1#2#3 { + \int_gincr:N \g__luamml_annotation_id_int + \iow_shipout_x:Nx \l__luamml_pdf_stream { + LUAMML_MARK_REF: + \int_use:N \g__luamml_annotation_id_int + : + } + \iow_now:Nx \l__luamml_pdf_stream { + LUAMML_MARK: + \int_use:N \g__luamml_annotation_id_int + : + count = \int_eval:n {#1}, + #2 + \iow_newline: + LUAMML_MARK_END + } + #3 +} +\cs_new_protected:Npn \luamml_annotate:en #1#2 { + \int_gincr:N \g__luamml_annotation_id_int + \iow_shipout_x:Nx \l__luamml_pdf_stream { + LUAMML_MARK_REF: + \int_use:N \g__luamml_annotation_id_int + : + } + \iow_now:Nx \l__luamml_pdf_stream { + LUAMML_MARK: + \int_use:N \g__luamml_annotation_id_int + : + count = data.count[\int_use:N \g__luamml_annotation_id_int], + #1 + \iow_newline: + LUAMML_MARK_END + } + \use:x { + \iow_now:Nn \l__luamml_pdf_stream { + LUAMML_COUNT: + \int_use:N \g__luamml_annotation_id_int + } + \__luamml_pdf_showlists: + \exp_not:n {#2} + \iow_now:Nn \l__luamml_pdf_stream { + LUAMML_COUNT_END: + \int_use:N \g__luamml_annotation_id_int + } + \__luamml_pdf_showlists: + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</pdftex> +% \end{macrocode} +% +% \subsection{Trigger for specific formula} +% This only applies for pdf\TeX\ since in Lua\TeX\ everything is controlled by the callback, +% but for compatibility the function is defined anyway. +% +% \begin{macro}{\luamml_pdf_write:} +% We could accept parameters for the flag and tag here, but for compatibility +% with Lua\TeX they are passed in macros instead. +% \begin{macrocode} +%<*pdftex> +\cs_new_protected:Npn \luamml_pdf_write: { + \int_gincr:N \g__luamml_formula_id_int + \iow_now:Nx \l__luamml_pdf_stream { + LUAMML_FORMULA_BEGIN: + \int_use:N \g__luamml_formula_id_int + : + \int_use:N \l__luamml_flag_int + : + \l__luamml_root_tl + : + \l__luamml_label_tl + } + \__luamml_pdf_showlists: + \iow_now:Nx \l__luamml_pdf_stream { + LUAMML_FORMULA_END + } +} +%</pdftex> +%<luatex>\cs_new_eq:NN \luamml_pdf_write: \scan_stop: +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% \end{macrocode} +% +% \subsection{Further helpers} +% +% \begin{macro}{\RegisterFamilyMapping} +% The Lua version of this is defined in the Lua module. +% \begin{macrocode} +%<*pdftex> +\NewDocumentCommand \RegisterFamilyMapping {m m} { + \iow_now:Nx \l__luamml_pdf_stream { + LUAMML_INSTRUCTION:REGISTER_MAPPING: \int_use:N #1 : #2 + } +} +%</pdftex> +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Patching} +% For some packages, we ship with patches to make them more compatible and to +% demonstrate how other code can be patched to work with \texttt{luamml}. +% +% These are either loaded directly if the packages are loaded or delayed using +% \LaTeX's hook system otherwise. +% \begin{macro}{\__luamml_patch_package:nn, \__luamml_patch_package:n} +% For this, we use two helpers: First a wrapper which runs arbitrary code either +% now (if the package is already loaded) or as soon as the package loads, second +% an application of the first one to load packages following \texttt{luamml}'s +% naming scheme for these patch packages. +% \begin{macrocode} +\cs_new_protected:Npn \__luamml_patch_package:nn #1 #2 { + \@ifpackageloaded {#1} {#2} { + \hook_gput_code:nnn {package/#1/after} {luamml} {#2} + } +} +\cs_new_protected:Npn \__luamml_patch_package:n #1 { + \__luamml_patch_package:nn {#1} { + \RequirePackage { luamml-patches-#1 } + } +} +% \end{macrocode} +% \end{macro} +% +% We currently provide minimal patching for the kernel, \pkg{amsmath} and \pkg{array}. +% Currently only the kernel code supports pdf\TeX, but it's planned to extend this. +% \begin{macrocode} +\RequirePackage { luamml-patches-kernel } +%<*luatex> +\__luamml_patch_package:n {amstext} +\__luamml_patch_package:n {amsmath} +\__luamml_patch_package:n {mathtools} +\__luamml_patch_package:n {array} +%</luatex> +% \end{macrocode} + +% \iffalse +%</package> +% \fi +% \end{implementation} +% \Finale diff --git a/macros/luatex/latex/luamml/luamml.pdf b/macros/luatex/latex/luamml/luamml.pdf Binary files differnew file mode 100644 index 0000000000..3684db701f --- /dev/null +++ b/macros/luatex/latex/luamml/luamml.pdf diff --git a/macros/luatex/latex/odsfile/odsfile.lua b/macros/luatex/latex/odsfile/odsfile.lua index 8fdf30abee..a32e370566 100644 --- a/macros/luatex/latex/odsfile/odsfile.lua +++ b/macros/luatex/latex/odsfile/odsfile.lua @@ -162,8 +162,15 @@ function tableValues(tbl,x1,y1,x2,y2) return t end +function join(tbl1, tbl2) + for _, x in ipairs(tbl2) do + tbl1[#tbl1+1] = x + end + return tbl1 +end + function getRange(range) - if range == nil then return {nil,nil,nil,nil} end + if range == nil then return {{nil,nil,nil,nil}} end local range = namedRanges[range] or range local r = range:lower() local function getNumber(s) @@ -175,10 +182,12 @@ function getRange(range) end return f end + local ranges = {} for x1,y1,x2,y2 in r:gmatch("(%a*)(%d*):*(%a*)(%d*)") do - return {getNumber(x1),tonumber(y1),getNumber(x2),tonumber(y2)} + ranges[#ranges+1] = {getNumber(x1),tonumber(y1),getNumber(x2),tonumber(y2)} --print(string.format("%s, %s, %s, %s",getNumber(x1),y1,getNumber(x2),y2)) end + return ranges end function table_slice (values,i1,i2) @@ -329,6 +338,12 @@ function updateZip(zipfile, updatefile) print ("Updating an ods file.\n" ..command .."\n Return code: ", os.execute(command)) end +function save(filename, content) + local f = io.open(filename, "w") + f:write(content) + f:close() +end + M.load= load M.loadContent = loadContent M.getTable= getTable @@ -336,6 +351,7 @@ M.getTable0= getTable0 M.getColumnCount= getColumnCount M.loadNameRanges= loadNameRanges M.tableValues= tableValues +M.join = join M.getRange= getRange M.getNumber= getNumber M.table_slice = table_slice @@ -352,5 +368,6 @@ M.findLastRow = findLastRow M.insert = insert -- for updateing the archive. Depends on external zip utility M.updateZip= updateZip +M.save = save return M diff --git a/macros/luatex/latex/odsfile/odsfile.pdf b/macros/luatex/latex/odsfile/odsfile.pdf Binary files differindex 20e61a2d0f..7d6c14e872 100644 --- a/macros/luatex/latex/odsfile/odsfile.pdf +++ b/macros/luatex/latex/odsfile/odsfile.pdf diff --git a/macros/luatex/latex/odsfile/odsfile.sty b/macros/luatex/latex/odsfile/odsfile.sty index 59b8cfa760..5b0ffcaeb9 100644 --- a/macros/luatex/latex/odsfile/odsfile.sty +++ b/macros/luatex/latex/odsfile/odsfile.sty @@ -1,6 +1,6 @@ % Package odsfile. Author Michal Hoftich <michal.h21@gmail.com> % This package is subject of LPPL license, version 1.3c -\ProvidesPackage{odsfile}[2023/09/07 v0.8 odsfile package to select cells from ODS sheets and +\ProvidesPackage{odsfile}[2024/10/10 v0.9 odsfile package to select cells from ODS sheets and typeset them as LaTeX tables] \RequirePackage{luacode,xkeyval,xparse} @@ -35,6 +35,15 @@ rowseparator=[[\\n]] \define@key{includespread}{columnbreak}{% \luaexec{columnbreak="\luatexluaescapestring{\unexpanded{#1}}{}"}% } + +\define@key{includespread}{save}{% + \luaexec{odssave="\luatexluaescapestring{#1}"}% +} + +\define@key{includespread}{debug}{% use either true or false + \luaexec{odsdebug=\luatexluaescapestring{#1}}% +} + \define@key{includespread}{coltypes}{% \luaexec{coltypes="\luatexluaescapestring{\unexpanded{#1}}"}% } @@ -57,6 +66,15 @@ columns = split(s,",") }% }{}% +\define@key{includespread}{newline}{% + \luaexec{odsnl="\luatexluaescapestring{\unexpanded{#1}}"}% +} + +\define@key{includespread}{lastnewline}{% + \luaexec{odslastnl="\luatexluaescapestring{\unexpanded{#1}}"}% +} + + % Variable initialization and helper functions \begin{luacode*} @@ -67,6 +85,8 @@ range = {nil,nil,nil,nil} columns = nil templates = {} row = {} +odssave = nil +odsdebug = nil body = nil odsfilename = "" currenttemplate = nil @@ -74,6 +94,8 @@ rowtemplate = nil celltpl = "-{value}" multicoltpl = "\\multicolumn{-{count}}{l}{-{value}}" latexescape = "true" +odsnl = "\\OdsNl" +odslastnl = "\\OdsLastNl" \end{luacode*} \newcommand\loadodsfile[2][]{% @@ -110,6 +132,8 @@ latexescape = "true" rowseparator = "" columns=nil currenttemplate = nil + odssave = nil + odsdebug = false rowtemplate = nil celltpl = "-{value}" columnbreak = "\\linebreak{}" @@ -119,8 +143,11 @@ latexescape = "true" \setkeys{includespread}{#1}% \luaexec{% body = odsreader.getTable(odsfile,sheetname) - local real_range = odsreader.getRange(range) - local values = odsreader.tableValues(body,real_range[1],real_range[2],real_range[3],real_range[4]) + local ranges = odsreader.getRange(range) + local values = {} + for _, real_range in ipairs(ranges) do + values = odsreader.join(values, odsreader.tableValues(body,real_range[1],real_range[2],real_range[3],real_range[4])) + end %-- Conversion of odsfile table values to LaTeX tabular local concatParagraphs = function(column) % -- second returned value signalize whether cell contain paragraph, or not @@ -189,10 +216,13 @@ latexescape = "true" columns = rowValues(values[1]) content = odsreader.table_slice(content,2,nil) elseif type(columns) == "number" and columns == 2 then - local t = odsreader.tableValues(body,real_range[1],1,real_range[3],2) + local t = {} + for _, real_range in ipairs(ranges) do + t = odsreader.join(t, odsreader.tableValues(body,real_range[1],1,real_range[3],2)) + end columns = rowValues(t[1]) end - if type(columns) == "table" then colheading = table.concat(columns," & ") .. "\\OdsNl " end + if type(columns) == "table" then colheading = table.concat(columns," & ") .. odsnl .. " " end % coltypes = "" if type(content)== "table" then % coltypes= string.rep("l",\#content[1]) @@ -200,10 +230,16 @@ latexescape = "true" coltypes = makeColtypes(headings) end end - content = table.concat(content, "\\OdsNl "..rowseparator) .. "\\OdsLastNl" + content = table.concat(content, odsnl .. " " ..rowseparator) .. odslastnl local result = odsreader.interp(templates[currenttemplate],{content=content,coltypes=coltypes,colheading=colheading,rowsep=rowseparator}) - print(result) - tex.print(result) + if odsdebug then + print(result) + end + if odssave then + odsreader.save(odssave, result) + else + tex.sprint(result) + end else local content = {} currenttemplate = currenttemplate or "empty" @@ -212,8 +248,14 @@ latexescape = "true" end content = table.concat(content,rowseparator) local result = odsreader.interp(templates[currenttemplate],{content=content,coltypes=coltypes,colheading=colheading,rowsep=rowseparator}) - print(result) - tex.sprint(result) + if odsdebug then + print(result) + end + if odssave then + odsreader.save(odssave, result) + else + tex.sprint(result) + end end }% }% diff --git a/macros/luatex/latex/odsfile/odsfile.tex b/macros/luatex/latex/odsfile/odsfile.tex index e3b5fcda78..9c0506328d 100644 --- a/macros/luatex/latex/odsfile/odsfile.tex +++ b/macros/luatex/latex/odsfile/odsfile.tex @@ -8,7 +8,7 @@ \author{Michal Hoftich (\url{michal.h21@gmail.com})} \title{The \textsf{odsfile} package:\\ accessing of the \textsf{opendocument spreadsheet} from \LaTeX{} -documents\thanks{Version 0.8, last revisited 2023-09-07.} +documents\thanks{Version 0.9, last revisited 2024-10-10.} } \usepackage[english]{babel} \lstloadlanguages{[LaTeX]Tex} @@ -84,7 +84,8 @@ Options are: format similar to spreadsheet processors, like |a2:c4|, selecting cells starting at first column, second row and ending and third column, fourth row. Other variant of supported ranges are \textit{named ranges}, which can be - saved in the |ods file|. + saved in the |ods file|. You can specify multiple ranges to be included, separated + by comma, but in this case the range specification must be surrounded by braces: |{a1:b1,a3:b3}|. \begin{LTXexample} \begin{tabular}{lll} @@ -111,6 +112,12 @@ You can omit some or both of the numbers: \end{LTXexample} \begin{LTXexample} +\begin{tabular}{ll} +\includespread[range={b1:c1,b3:c}] +\end{tabular} +\end{LTXexample} + +\begin{LTXexample} \begin{tabular}{lll} \includespread[range=newrangetest] \end{tabular} @@ -163,6 +170,9 @@ as plaintext or input for plotting functions. \end{tabular} \end{LTXexample} +\item[newline] Code that will be inserted instead of |\\| between rows. Default value is |\OdsNl|. +\item[lastnewline] Code inserted after the last row. Default value is |\OdsLastNl|. + \item[template] Templates are simple mechanism to insert whole tabular environment with column specification. All columns are aligned to the left, if you want to do more advanced stuff with column specifications, you must enter them manually as in all previous examples. \begin{LTXexample} \includespread[columns=top,template=booktabs,range=a3] @@ -225,6 +235,20 @@ spreadsheet contains the \verb|\textbf{bold}| command. \end{tabular} \end{LTXexample} +\subsection{Saving the generated table to a file} + +Use the \texttt{save} option to save the generated table to a file instead of including it directly into the document. + +\begin{LTXexample} +There should be no table listed +\includespread[sheet=List1,columns=head,escape=false,save=save-test.tex,debug=true] +\end{LTXexample} + +\subsection{Debugging} + +You can print the generated table to the terminal output of \LaTeX\ using the \texttt{debug} option. Possible values are +\texttt{true} and \texttt{false}. + \section{Templates}\label{sec:tpl} @@ -401,6 +425,12 @@ CC & 5 & 7 \section{Changes} \begin{description} + \item [v0.9] + \begin{itemize} + \item added the \texttt{save} and \texttt{debug} options + \item added support for multiple ranges in the \texttt{range} option + \item added \texttt{newline} and \texttt{lastnewline} options + \end{itemize} \item[v0.8] \begin{itemize} \item added the escape option for enabling or disabling of the character escaping diff --git a/macros/luatex/latex/piton/piton-french.pdf b/macros/luatex/latex/piton/piton-french.pdf index 8ad40b754c..a2b93712a4 100644 --- a/macros/luatex/latex/piton/piton-french.pdf +++ b/macros/luatex/latex/piton/piton-french.pdf @@ -116,172 +116,172 @@ endobj << /S /GoTo /D (subsection.6.1) >> endobj 71 0 obj -(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000p\000a\000g\000e\000s\000\040\000e\000t\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) +(\376\377\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000d\000'\000u\000n\000\040\000f\000i\000c\000h\000i\000e\000r) endobj 72 0 obj << /S /GoTo /D (subsubsection.6.1.1) >> endobj 75 0 obj -(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000p\000a\000g\000e\000s) +(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 76 0 obj << /S /GoTo /D (subsubsection.6.1.2) >> endobj 79 0 obj -(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) +(\376\377\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000d\000'\000u\000n\000e\000\040\000p\000a\000r\000t\000i\000e\000\040\000d\000'\000u\000n\000\040\000f\000i\000c\000h\000i\000e\000r) endobj 80 0 obj << /S /GoTo /D (subsection.6.2) >> endobj 83 0 obj -(\376\377\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000d\000'\000u\000n\000e\000\040\000p\000a\000r\000t\000i\000e\000\040\000d\000'\000u\000n\000\040\000f\000i\000c\000h\000i\000e\000r) +(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000p\000a\000g\000e\000s\000\040\000e\000t\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) endobj 84 0 obj << /S /GoTo /D (subsubsection.6.2.1) >> endobj 87 0 obj -(\376\377\000A\000v\000e\000c\000\040\000l\000e\000s\000\040\000n\000u\000m\000\351\000r\000o\000s\000\040\000d\000e\000\040\000l\000i\000g\000n\000e\000s\000\040\000a\000b\000s\000o\000l\000u\000s) +(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) endobj 88 0 obj << /S /GoTo /D (subsubsection.6.2.2) >> endobj 91 0 obj -(\376\377\000A\000v\000e\000c\000\040\000d\000e\000s\000\040\000m\000a\000r\000q\000u\000e\000u\000r\000s\000\040\000t\000e\000x\000t\000u\000e\000l\000s) +(\376\377\000C\000o\000u\000p\000u\000r\000e\000\040\000d\000e\000s\000\040\000p\000a\000g\000e\000s) endobj 92 0 obj << /S /GoTo /D (subsection.6.3) >> endobj 95 0 obj -(\376\377\000M\000i\000s\000e\000\040\000e\000n\000\040\000\351\000v\000i\000d\000e\000n\000c\000e\000\040\000d\000'\000i\000d\000e\000n\000t\000i\000f\000i\000c\000a\000t\000e\000u\000r\000s) +(\376\377\000D\000\351\000c\000o\000u\000p\000e\000\040\000d\000'\000u\000n\000\040\000l\000i\000s\000t\000i\000n\000g\000\040\000e\000n\000\040\000s\000o\000u\000s\000-\000l\000i\000s\000t\000i\000n\000g\000s) endobj 96 0 obj << /S /GoTo /D (subsection.6.4) >> endobj 99 0 obj -(\376\377\000L\000e\000s\000\040\000\351\000c\000h\000a\000p\000p\000e\000m\000e\000n\000t\000s\000\040\000v\000e\000r\000s\000\040\000L\000a\000T\000e\000X) +(\376\377\000M\000i\000s\000e\000\040\000e\000n\000\040\000\351\000v\000i\000d\000e\000n\000c\000e\000\040\000d\000'\000i\000d\000e\000n\000t\000i\000f\000i\000c\000a\000t\000e\000u\000r\000s) endobj 100 0 obj -<< /S /GoTo /D (subsubsection.6.4.1) >> +<< /S /GoTo /D (subsection.6.5) >> endobj 103 0 obj -(\376\377\000L\000e\000s\000\040\000\253\000c\000o\000m\000m\000e\000n\000t\000a\000i\000r\000e\000s\000\040\000L\000a\000T\000e\000X\000\273) +(\376\377\000L\000e\000s\000\040\000\351\000c\000h\000a\000p\000p\000e\000m\000e\000n\000t\000s\000\040\000v\000e\000r\000s\000\040\000L\000a\000T\000e\000X) endobj 104 0 obj -<< /S /GoTo /D (subsubsection.6.4.2) >> +<< /S /GoTo /D (subsubsection.6.5.1) >> endobj 107 0 obj -(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000\253\000m\000a\000t\000h\000-\000c\000o\000m\000m\000e\000n\000t\000s\000\273) +(\376\377\000L\000e\000s\000\040\000\253\000c\000o\000m\000m\000e\000n\000t\000a\000i\000r\000e\000s\000\040\000L\000a\000T\000e\000X\000\273) endobj 108 0 obj -<< /S /GoTo /D (subsubsection.6.4.3) >> +<< /S /GoTo /D (subsubsection.6.5.2) >> endobj 111 0 obj -(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000\253\000d\000e\000t\000e\000c\000t\000e\000d\000-\000c\000o\000m\000m\000a\000n\000d\000s\000\273) +(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000\253\000m\000a\000t\000h\000-\000c\000o\000m\000m\000e\000n\000t\000s\000\273) endobj 112 0 obj -<< /S /GoTo /D (subsubsection.6.4.4) >> +<< /S /GoTo /D (subsubsection.6.5.3) >> endobj 115 0 obj -(\376\377\000L\000e\000\040\000m\000\351\000c\000a\000n\000i\000s\000m\000e\000\040\000\253\000e\000s\000c\000a\000p\000e\000\273) +(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000\253\000d\000e\000t\000e\000c\000t\000e\000d\000-\000c\000o\000m\000m\000a\000n\000d\000s\000\273) endobj 116 0 obj -<< /S /GoTo /D (subsubsection.6.4.5) >> +<< /S /GoTo /D (subsubsection.6.5.4) >> endobj 119 0 obj -(\376\377\000L\000e\000\040\000m\000\351\000c\000a\000n\000i\000s\000m\000e\000\040\000\253\000e\000s\000c\000a\000p\000e\000-\000m\000a\000t\000h\000\273) +(\376\377\000L\000e\000\040\000m\000\351\000c\000a\000n\000i\000s\000m\000e\000\040\000\253\000e\000s\000c\000a\000p\000e\000\273) endobj 120 0 obj -<< /S /GoTo /D (subsection.6.5) >> +<< /S /GoTo /D (subsubsection.6.5.5) >> endobj 123 0 obj -(\376\377\000C\000o\000m\000p\000o\000r\000t\000e\000m\000e\000n\000t\000\040\000d\000a\000n\000s\000\040\000l\000a\000\040\000c\000l\000a\000s\000s\000e\000\040\000B\000e\000a\000m\000e\000r) +(\376\377\000L\000e\000\040\000m\000\351\000c\000a\000n\000i\000s\000m\000e\000\040\000\253\000e\000s\000c\000a\000p\000e\000-\000m\000a\000t\000h\000\273) endobj 124 0 obj -<< /S /GoTo /D (subsubsection.6.5.1) >> +<< /S /GoTo /D (subsection.6.6) >> endobj 127 0 obj -(\376\377\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e\000\040\000s\000o\000n\000t\000\040\000`\000`\000o\000v\000e\000r\000l\000a\000y\000-\000a\000w\000a\000r\000e\000'\000') +(\376\377\000C\000o\000m\000p\000o\000r\000t\000e\000m\000e\000n\000t\000\040\000d\000a\000n\000s\000\040\000l\000a\000\040\000c\000l\000a\000s\000s\000e\000\040\000B\000e\000a\000m\000e\000r) endobj 128 0 obj -<< /S /GoTo /D (subsubsection.6.5.2) >> +<< /S /GoTo /D (subsubsection.6.6.1) >> endobj 131 0 obj -(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000d\000e\000\040\000B\000e\000a\000m\000e\000r\000\040\000r\000e\000c\000o\000n\000n\000u\000e\000s\000\040\000d\000a\000n\000s\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) +(\376\377\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e\000\040\000s\000o\000n\000t\000\040\000`\000`\000o\000v\000e\000r\000l\000a\000y\000-\000a\000w\000a\000r\000e\000'\000') endobj 132 0 obj -<< /S /GoTo /D (subsubsection.6.5.3) >> +<< /S /GoTo /D (subsubsection.6.6.2) >> endobj 135 0 obj -(\376\377\000E\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000B\000e\000a\000m\000e\000r\000\040\000r\000e\000c\000o\000n\000n\000u\000s\000\040\000d\000a\000n\000s\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) +(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000d\000e\000\040\000B\000e\000a\000m\000e\000r\000\040\000r\000e\000c\000o\000n\000n\000u\000e\000s\000\040\000d\000a\000n\000s\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 136 0 obj -<< /S /GoTo /D (subsection.6.6) >> +<< /S /GoTo /D (subsubsection.6.6.3) >> endobj 139 0 obj -(\376\377\000N\000o\000t\000e\000s\000\040\000d\000e\000\040\000p\000i\000e\000d\000\040\000d\000e\000\040\000p\000a\000g\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000p\000i\000t\000o\000n) +(\376\377\000E\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000B\000e\000a\000m\000e\000r\000\040\000r\000e\000c\000o\000n\000n\000u\000s\000\040\000d\000a\000n\000s\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 140 0 obj << /S /GoTo /D (subsection.6.7) >> endobj 143 0 obj -(\376\377\000T\000a\000b\000u\000l\000a\000t\000i\000o\000n\000s) +(\376\377\000N\000o\000t\000e\000s\000\040\000d\000e\000\040\000p\000i\000e\000d\000\040\000d\000e\000\040\000p\000a\000g\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000p\000i\000t\000o\000n) endobj 144 0 obj -<< /S /GoTo /D (section.7) >> +<< /S /GoTo /D (subsection.6.8) >> endobj 147 0 obj -(\376\377\000A\000P\000I\000\040\000p\000o\000u\000r\000\040\000l\000e\000s\000\040\000d\000\351\000v\000e\000l\000o\000p\000p\000e\000u\000r\000s) +(\376\377\000T\000a\000b\000u\000l\000a\000t\000i\000o\000n\000s) endobj 148 0 obj -<< /S /GoTo /D (section.8) >> +<< /S /GoTo /D (section.7) >> endobj 151 0 obj -(\376\377\000E\000x\000e\000m\000p\000l\000e\000s) +(\376\377\000A\000P\000I\000\040\000p\000o\000u\000r\000\040\000l\000e\000s\000\040\000d\000\351\000v\000e\000l\000o\000p\000p\000e\000u\000r\000s) endobj 152 0 obj -<< /S /GoTo /D (subsection.8.1) >> +<< /S /GoTo /D (section.8) >> endobj 155 0 obj -(\376\377\000N\000u\000m\000\351\000r\000o\000t\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) +(\376\377\000E\000x\000e\000m\000p\000l\000e\000s) endobj 156 0 obj -<< /S /GoTo /D (subsection.8.2) >> +<< /S /GoTo /D (subsection.8.1) >> endobj 159 0 obj -(\376\377\000F\000o\000r\000m\000a\000t\000a\000g\000e\000\040\000d\000e\000s\000\040\000c\000o\000m\000m\000e\000n\000t\000a\000i\000r\000e\000s\000\040\000L\000a\000T\000e\000X) +(\376\377\000N\000u\000m\000\351\000r\000o\000t\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s) endobj 160 0 obj -<< /S /GoTo /D (subsection.8.3) >> +<< /S /GoTo /D (subsection.8.2) >> endobj 163 0 obj -(\376\377\000N\000o\000t\000e\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000l\000i\000s\000t\000i\000n\000g\000s) +(\376\377\000F\000o\000r\000m\000a\000t\000a\000g\000e\000\040\000d\000e\000s\000\040\000c\000o\000m\000m\000e\000n\000t\000a\000i\000r\000e\000s\000\040\000L\000a\000T\000e\000X) endobj 164 0 obj -<< /S /GoTo /D (subsection.8.4) >> +<< /S /GoTo /D (subsection.8.3) >> endobj 167 0 obj (\376\377\000U\000n\000\040\000e\000x\000e\000m\000p\000l\000e\000\040\000d\000e\000\040\000r\000\351\000g\000l\000a\000g\000e\000\040\000d\000e\000s\000\040\000s\000t\000y\000l\000e\000s) @@ -347,1999 +347,1897 @@ endobj << /S /GoTo /D (subsection.10.5) >> endobj 203 0 obj -(\376\377\000L\000e\000\040\000l\000a\000n\000g\000a\000g\000e\000\040\000\253\000m\000i\000n\000i\000m\000a\000l\000\273) +(\376\377\000L\000e\000s\000\040\000l\000a\000n\000g\000a\000g\000e\000s\000\040\000d\000\351\000f\000i\000n\000i\000s\000\040\000p\000a\000r\000\040\000l\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000N\000e\000w\000P\000i\000t\000o\000n\000L\000a\000n\000g\000u\000a\000g\000e) endobj 204 0 obj << /S /GoTo /D (subsection.10.6) >> endobj 207 0 obj -(\376\377\000L\000e\000s\000\040\000l\000a\000n\000g\000a\000g\000e\000s\000\040\000d\000\351\000f\000i\000n\000i\000s\000\040\000p\000a\000r\000\040\000l\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000N\000e\000w\000P\000i\000t\000o\000n\000L\000a\000n\000g\000u\000a\000g\000e) +(\376\377\000L\000e\000\040\000l\000a\000n\000g\000a\000g\000e\000\040\000\253\000m\000i\000n\000i\000m\000a\000l\000\273) endobj 208 0 obj -<< /S /GoTo /D (section*.1) >> +<< /S /GoTo /D (subsection.10.7) >> endobj 211 0 obj -(\376\377\000I\000n\000d\000e\000x) +(\376\377\000L\000e\000\040\000l\000a\000n\000g\000a\000g\000e\000\040\000\253\000v\000e\000r\000b\000a\000t\000i\000m\000\273) endobj 212 0 obj -<< /S /GoTo /D [ 213 0 R /Fit ] >> +<< /S /GoTo /D (section*.1) >> +endobj +215 0 obj +(\376\377\000I\000n\000d\000e\000x) + endobj 216 0 obj -<< /Filter /FlateDecode /Length 3586 >> -stream -xڽ\K[
WEIp/ -',եp)ku!MO>V.AD +( -FhLG&4+)"zG -+#,oˮLo%?p]V4jz4pApS}H/y$GhMJ:Qם *Gvhe?h=}?n3n<6kG0vN21-U~$!Pa}= -lMcLs0ZYL꜆eDrhcɮzQ86AYeޭip1<'{YXÍ PYU -iu+f
fM1
?mn -d -ӧd`^9@y*;9ۢئܺ
s}PQqPW_BdlrU}L8SMQp{5!
U4W0TF@L_\:4 -ToJ4^'hP+=;g)06Hg{(u5 2Js$ -\٣5 -^l< %&ۈi-dǣ 76ZTd
reAG1fOR)8uE -Sq&t*ͶޞGVZ\+vp2LҊ&FL('9҈WLZu=t%]aZqp!z՜8 -]T>j⛠D)Y!{_s<ܩx0s{;Ggxn53ؓDi'`Ϛ{^|vk<諦붾|l 3=$ \_Acyhvt3t;zZ!Qh0O0ƅEXKqs_+t~<*p^U'L -%;hdUA(OV/ޞe6?\F:Oxt})i7l0?V}</ lZ
{Ckmr㬏Pc]t+opqP!35D3RDxv`AbWr'Dmrvb!Hi;H9:T?%*eܴ~=[}5S={ռmSUFTɪƵz9]d^@y8M5ۼ#M4dN`}+8_̎)fe.-<d?c;xNMLYH暯e5v;j)śG:%;Y3L~7`NvH0T,&puTރHgN08exơYybfI<}''֣.8dXhFge־6 rgmqyޱ)9?(z9DK{JR{ _:ܦW95zQ^;jqgKjy7'z:q.g$0Hz^J5;w`ϗf9z?asΡz^mN1&+v5ݏ{ -%!h>\Yʍeٹ99?q*O~r㈞Nsw>_R)?ҥ0˱Mx&E`n,/֦y`#! +<< /S /GoTo /D [ 217 0 R /Fit ] >> +endobj +222 0 obj +<< /Filter /FlateDecode /Length 3616 >> +stream +xڽ$-߯j%
؞>26;_d×x;?ԃzWM骒Ho~n2Z??|7LhY۾~~p,wùέ[wfpoݓu<S>-Ke0"*!H3oHӂq ) gˤeHp`fX@EF^3k2E +4'n&mYiq :pr LmP
dYxmx
3WV1oL`I)7(X5i5k' bQLePELXBGe +_W5$΅Э'Z&/Q*)Uyy0] +
S/A~ڥ#; +hUڶ(r~p)1)|ʨӢ`U~ߒ|i(v>h
M̊0KtmIU6TV +xZ@Wqh({#{4WtE{?x-
,YX&Da4hBPePxÓM@h! +5B*渊j'LV+c'bul + j 澆8?+tiU +!ʚӺȨ +ӫ0STܖhRNXZ +s{b6.W݄ZfQiЪRU؇(ܵQz 䥆Ի)|0ɵݩwwtӫVKU:)WG״W6k/F#+MrGꥑhz'u +/^&W8~("]u9DmdlLU4չiU֗-5;2L)u1n\<\ `_PM1$_'7̖dJjiO^F0u(#v# +&r#>w +4F?4=)IdvT +gWit֝TM0MJX +sJ{hh(g;f9輙ꕔh"p`(.GGgyGj>:갈ptK9跐&^HZQ' +emhqSql|سs?+|p`PL*WG۫6K!.g8qQ-2Inq6u q6CB<gލUAp?+)< +{n89MAdםyND3y2fN~ى2+hkR̡@r?E}!߉tetθ93mu͡`Rd7~ZvU}=Gx%N=
8
wB3OP_`VH endstream endobj -213 0 obj -<< /Type /Page /Contents 216 0 R /Resources 215 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 241 0 R >> +217 0 obj +<< /Type /Page /Contents 222 0 R /Resources 221 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 247 0 R >> endobj -241 0 obj -[ 214 0 R ] +247 0 obj +[ 218 0 R 219 0 R 220 0 R ] endobj -214 0 obj -<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 222.163 76.495 393.939 87.952 ] +218 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.182 525.203 178.907 536.271 ]/A << /S /GoTo /D (subsection.6.1) >> >> +endobj +219 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.628 525.203 206.583 536.271 ]/A << /S /GoTo /D (subsection.6.1) >> >> +endobj +220 0 obj +<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 222.163 76.61 393.939 88.067 ] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.inf.puc-rio.br/~roberto/lpeg/)>> >> endobj -217 0 obj -<< /D [ 213 0 R /XYZ 78.37 808.885 null ] >> +223 0 obj +<< /D [ 217 0 R /XYZ 78.37 808.885 null ] >> endobj -218 0 obj -<< /D [ 213 0 R /XYZ 79.37 771.024 null ] >> +224 0 obj +<< /D [ 217 0 R /XYZ 79.37 771.024 null ] >> endobj 5 0 obj -<< /D [ 213 0 R /XYZ 79.37 545.899 null ] >> +<< /D [ 217 0 R /XYZ 79.37 498.288 null ] >> endobj -215 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F17 219 0 R /F18 220 0 R /F19 221 0 R /F42 222 0 R /F50 223 0 R /F49 224 0 R /F51 225 0 R /F53 226 0 R /F15 227 0 R /F54 228 0 R /F55 229 0 R /F62 230 0 R /F63 231 0 R /F65 232 0 R /F31 233 0 R /F22 234 0 R /F33 235 0 R /F32 236 0 R /F48 237 0 R /F60 238 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +221 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F17 225 0 R /F18 226 0 R /F19 227 0 R /F42 228 0 R /F50 229 0 R /F49 230 0 R /F51 231 0 R /F15 232 0 R /F52 233 0 R /F54 234 0 R /F55 235 0 R /F56 236 0 R /F63 237 0 R /F65 238 0 R /F31 239 0 R /F22 240 0 R /F33 241 0 R /F32 242 0 R /F48 243 0 R /F61 244 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -248 0 obj -<< /Filter /FlateDecode /Length 3540 >> -stream -xڵ\K#
ϯXGTF+Wdo.8! d[A><dyE^~z~{ݙX/~QB^%$a%(lPo/Jo_>ZkoHÿ$;ǽgXJKkoKi/K
Rݽh[gZsCme0ԝ- "
k-<Ň -bqTkSߵ*>13p|WZݾWyn -TQ.0`O#_tc`#Hg47T#aakIU$IZT -w32-aq%u*^v -܈kCèjQuL3 i^e*Cص.yOc#1М%,ˠW|gsѨ(],Қ v#1U -L+$akg\rLh1yxB~U5x{]&:{KƃI%RUMwOR6-Fˀ2!<^_%r`Ƣ{n+:YLF>}\p=>%!Fg -v_!
3w)q5a:Gm&D8J*Gu9DH$FX
f*\}eޱe(`LXU!|mwÑ.P#5? -"Y5_cݳA,<Ξirf1#,ru&AeݸD=G)NuUs>:h+*n
Vc]7
`+ayo9*d[OY?ȻkaE<+Rƥ^(H{0"sҟ_f5Jf/F>q@!jԔBFث1 VV08 1:[S806ie\>sU^U,̏{ʊa -#)r&RKԼ6醛?WqOudϔVHJnʰ*MS=HND^+Y5PjCmְ>YK}fC?<W'AXj^mjwrJ6ml=>o/am3Qmֈx/LEtJWx~b> 9reGk],ʰqYF];2j(M7ܽU]ٹ>V&.2ONDאaΡcboq,Z#NVR_KFS.-UAڀvxF%7*xV[GpS#9F-ӗӤ9oz_D_wdur/ur;w#+~l(~xhfVJ'wQx٣<;'OǀP9SJ>cZXy=[bҴYr)=F8? -X뇎Dm be?o#[lo7kHBvjB}f%²nɺw,İ{ e* +254 0 obj +<< /Filter /FlateDecode /Length 3599 >> +stream +xڽ\Kc
ϯUp18@vmgd64fӿ_R%q頋ɵϑ(ȏG^y>]}ًX/~KHKpQؠ.~&~_{G%)|~g<˯~$vBDK KiF~5nK[%L3ugYB)YOÿC|WC`
KO
I~(ۢ$c^G'E +bqTkSߵ*>13p|WZݾWyn +TQn0`/3_tc`#3310P^%U=,*'yhkQ)5ȴ +ԩxcs_8 +܈kSèjQuL3 iQe*cصzH4g"EI:2:?g4j$ʬfW&f=$m$&vJ2n3g.9&lf<<!?*FAng={K^ƃI*k')mODx#Re@X[ߐLk{Ffe0cQ
\,&#\վx^.A 3 +)z3h6* +ܠY82 +,ܺ[+Gsԩf|gblmjBj?ΕKN~T2ڏ +^t-sF=I0̲h2_3 e(`LU!|mwÑL0"$5? +o֪XW9ccժQ˦p jM~Bu.c- XFP|UlMqjkMe*zpkó56ckε- +0zJuf\xT!g(G'5
Wy}+; 0؊0zgAu}e;5)˷P[sZ2[VPRUޣ`%{Rlˌ9NHfj'Te~%פsЮHFE*pnw+gT,lt~ L"\qsj]ɧr +CI&H6Mn ƦWY#
7JNypcPiwX:V./ZuzVkB\틯AԞ-[ۺ]BЦ95tH-GR +0Y +
i*Z5SiNUZ8a[ΝzU?ߊ'<M:r +oe"w«6Ů+q%BRA3%^kjGȓ"ɘwNkf}o;v-3lWlr?UsFͫMTQN #$T?,A".RN+Au(_(AbK2r=*[ەk-ʰ)(㤩G6h
}zNx<rM$.歼1ONDpa|cboq,R#M +s4rٲ|;LzcY\ +N/#o]kur;\Ẹ8③MUJ'wQx٣<;'/x+x{Th@4 HSngǰ~z0ƗC'|h0+x.Ol:G>':҈64?:}m̂ahܐgp1h5_~??OE+i|in "PH[،a߮Vq"`~}ґ(1r~wVKȖDv5$!Sk\GT+i²κ#${;,#`T/J endstream endobj -247 0 obj -<< /Type /Page /Contents 248 0 R /Resources 246 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 252 0 R >> +253 0 obj +<< /Type /Page /Contents 254 0 R /Resources 252 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 258 0 R >> endobj -252 0 obj -[ 243 0 R 242 0 R ] +258 0 obj +[ 249 0 R 248 0 R ] endobj -243 0 obj +249 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 490.557 488.192 497.531 500.147 ]/A << /S /GoTo /D (section.5) >> >> endobj -242 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.563 75.592 369.02 87.049 ]/A << /S /GoTo /D (subsection.10.5) >> >> +248 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.563 75.592 369.02 87.049 ]/A << /S /GoTo /D (subsection.10.6) >> >> endobj -249 0 obj -<< /D [ 247 0 R /XYZ 78.37 808.885 null ] >> +255 0 obj +<< /D [ 253 0 R /XYZ 78.37 808.885 null ] >> endobj 9 0 obj -<< /D [ 247 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 253 0 R /XYZ 79.37 771.024 null ] >> endobj 13 0 obj -<< /D [ 247 0 R /XYZ 79.37 650.318 null ] >> +<< /D [ 253 0 R /XYZ 79.37 650.318 null ] >> endobj 17 0 obj -<< /D [ 247 0 R /XYZ 79.37 566.415 null ] >> +<< /D [ 253 0 R /XYZ 79.37 566.415 null ] >> endobj 21 0 obj -<< /D [ 247 0 R /XYZ 79.37 317.43 null ] >> +<< /D [ 253 0 R /XYZ 79.37 317.43 null ] >> endobj 25 0 obj -<< /D [ 247 0 R /XYZ 79.37 214.75 null ] >> +<< /D [ 253 0 R /XYZ 79.37 214.75 null ] >> endobj -246 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F54 228 0 R /F62 230 0 R /F67 250 0 R /F55 229 0 R /F16 251 0 R /F63 231 0 R /F32 236 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +252 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F67 256 0 R /F56 236 0 R /F16 257 0 R /F63 237 0 R /F32 242 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -257 0 obj -<< /Filter /FlateDecode /Length 4386 >> -stream -xn$0Cqj -Na❺썮T٢R˷[y2xbѴ. CEN%.ZV}FPanε秲[EIOܳ_*ҐrVґV@*Ai)O`[=Q!$/`R3u!Xsภ24m3*pv<`H!x3Dl+ -Z~m3 -=bRlRJU pq`_6:2'-sz<Eҁ0c8I1d!;JH;Tx݊^*4.ƿM:iɄfq4mEG-=t4*:(<[+hKyN8h@237pWWo\$GJb - -I -Dz>Au[fPg<dF̄` -Ɖ'79+@LaNNXy.<(3ږq/2#%"VYi6 -F;|(j/W)'\JHr !)Ղj_.O -b6q<ÔDWjv5#xQx;(`{Gwggqk%B[b:PBجL -Tҵ=bLr`~Ӂi3͒^:1h8KeslrTRreI.IsL?ش3~!Px@l8^<3[=bsNK-"˴Cl:
tlHu+b3{=)KUߊUoS#ax?Bt++e - ~u ii --L+$82]~P_pL:QU[hb-Wi_(krWuj>OFș#y#)Ixwô%X9寄X`qqk!
QP% -?1ΠIGQMxj+|L0":Uvsю7v4k'F>YY^ѷ*YtS%({ۨ`l-3t -3v{..|띋sZìzN'Kޭxg|6ys8ĜG7N0L맅/VgvRT, - r).?J)HwSH#y~:EYުHyFBbp#aG =H2<ԹHXtbS^3^= 3|T32{
,z[$3Ow,fڙR9}`P˞7Vk7r֝9mNw8oN<|z=3ƓȷE\L6γ}0ӋVsqùP;XP|EŷuP -[&.˄0=ʦ-)z^ |_022{_UJ5B_z|vlWiy$<ZjP5Gkznx/s"}*J=^/tJ8QZjpr6X:ۅѺ.bl> +263 0 obj +<< /Filter /FlateDecode /Length 4277 >> +stream +xɎd_Q?`E2-)}H|/P;E-UhO{IQ)=~/߿\.%`x/SJ][q?qw˹q܈<1q
g!ח6Q>\ L*o/HS.j\Fx@
Y@QЉ.)S:LB;,K#SO]\-?c/s~-[T:Y^+&3P[hJO8LZW23_f2[^PW}NuE\3xq:0mcjPmU)rKwڄev8O<oe5Cuȉu*KP%[EeaHM,n +>KI +{CKo<Ul!d;^~8R˨YiG&f>.s$a,$7tk+0!c"h0inXU(sy +؛vZ`|H..|OPHM̕]m+ +1MO%8e)-˒4#-6/1~_}m)Wׂf"?kh:Ťn|\PpYcB +"R\6I3o@VE|l ֱ=z=S\wx@];wOlvLG-ҫlBN6H%.M^*nKQ`*;OjvPsW-jw+Ly-Fb4F6N.> [r-3<1nMp#Y y|gdt+#Rd3q5#PEԠng(f=LsUWDe.1 ǻ2Z@uAzm97m?Aqc)IDG<1)Hfȶ4n6sߣ%{w8IQYYNZ2ֻ"Tuhԧm̘Ʋ>gַ4B[LGO6ko/A-gN|]B|9gub2/]PJw-l@(CVy~BmXҜ;,1*Ҕeq(I&NUOg{yXJKQgXGmJ(dO9:+eUan28YP Ɣr6#a5݅G|nہ`Rz +gS_OgJ +!*E32e}Yϣ4گZAA{o6RD[&֍YRg +Ӑ-c>nǚa%p+*AI/)a77l--5ݬUrKer-/n6U?QdaUYp>o:$G<Xʭ'5
֓ +-_e)FCJ+&L5*֍AM*fbt-,@i:ףq ֜fl*7ITx 9d#d|j,+p SwjK#*O5}U"AtV ;ē@DEV}%\XhzLT2@R".5k_}u͊y.Q#D3e*Au,i8Oߺj䭾3NH9bF +Q2PG?5$FGqp3:SYTv=3lzGv%yTz'{b[Y +6D@+6SjE@=shK,PN.ӘT@!7z,¿E +ȿF7J<02`lNʼ0]vT'eʵ="Qt +:wdZCp4s`qah0"LYgؤ
X4@O,^PRyVu~G
,gh$_.Wb)S,FO"gh7jtW13l5!#6BAj]aGq,uӯY%Q +mK ++bJdoo='Y<W\|%\EoVz>RFK8䍳g0tҜܕx6$}tKDѨcTQ%n}G[0݈G~ޖ퉘ƴ#ٍ~fZio{Xs8UN)kl3!H]CyY:֘k:eNNr[
'xeLyOd+%y$z8哎ZE!ls}QЃDvA68x]]Pna()g,PnJWS#~Ts,s"c&ILDP<d>!KN'6νXX<+mn;/77V[X%̛5th:Ōi+B!"$LôuX1i)[g'G1n/9'rwf'%<yu𨸗 +=p ZO b)tf0PC68;'ukMth|8mQ["|(%OvFÊ2dgtU惺tOuE d]Q:tUN|(#]QJGvE 쇻d]Q@¡ 6vEMطӄMЏ)2kM=ٟj>e'Wzg۾ԍ{П"O'StoOQS3:O^gOOQlEӈ O ??D4pي8??ťB}92`\ip?$\(w[VSo-llUw9lthsR1~ёc`Tְ@ݯ@vŪ8^VKK ͑-FF~Է
'2K`UѴ!_X|J>A>TBάӰO
w|h{,+Zb#v+k ݲ֑m}DpsOٗsU3W1]OOڷ:6N"6u_p
im &l8(No%3薟|V2gp|
êAp2b endstream endobj -256 0 obj -<< /Type /Page /Contents 257 0 R /Resources 255 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 260 0 R >> +262 0 obj +<< /Type /Page /Contents 263 0 R /Resources 261 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 266 0 R >> endobj -260 0 obj -[ 244 0 R 245 0 R 253 0 R 254 0 R ] +266 0 obj +[ 250 0 R 251 0 R 259 0 R 260 0 R ] endobj -244 0 obj +250 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.657 708.966 276.381 722.147 ]/A << /S /GoTo /D (subsection.4.3) >> >> endobj -245 0 obj +251 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 289.333 708.966 296.307 722.147 ]/A << /S /GoTo /D (subsection.4.3) >> >> endobj -253 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.516 681.248 399.241 692.197 ]/A << /S /GoTo /D (subsection.6.2) >> >> +259 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.652 683.58 160.376 694.529 ]/A << /S /GoTo /D (subsection.6.1) >> >> endobj -254 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.962 681.248 426.917 692.197 ]/A << /S /GoTo /D (subsection.6.2) >> >> +260 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.097 683.58 188.053 694.529 ]/A << /S /GoTo /D (subsection.6.1) >> >> endobj -258 0 obj -<< /D [ 256 0 R /XYZ 78.37 808.885 null ] >> +264 0 obj +<< /D [ 262 0 R /XYZ 78.37 808.885 null ] >> endobj 29 0 obj -<< /D [ 256 0 R /XYZ 79.37 599.153 null ] >> +<< /D [ 262 0 R /XYZ 79.37 665.561 null ] >> endobj -255 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R /F53 226 0 R /F55 229 0 R /F63 231 0 R /F65 232 0 R /F32 236 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +261 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F54 234 0 R /F55 235 0 R /F68 265 0 R /F56 236 0 R /F63 237 0 R /F65 238 0 R /F32 242 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -267 0 obj -<< /Filter /FlateDecode /Length 5225 >> -stream -xڵ<ɮ丑<%s n^Vvm<ukd2m`2?=̬W
TD7J\~_\]KU.Eq)`S]Mp7!UBUkjq"6ױj2pqFl麎2w7o\nxu7^o}OҨ<F#F-_<g|~aADF84+3W.{7#4_ߜF7H<.pdZ^դFLq5L):QPMHFAT3} c8xm6qS2kէiûBW /oGGW]8][iJ,TI? ST;"mAo|zs@oiԀ;zMhx3Y!&dȼ8W9k7e3rr0͝ؼ܂˅XMSlBQ9^=}y{ǑY+T&NtkKe^znU*Ue- j6+2-ʢ"ͦsGhҜ7jÞgfS{/
|b}yLjfMvێ
ctdmW=}>+hJ|\w+H[eg11GlDn`NT}^
&V=Uc33szj^ݧS鵮kW苄M364rH - +|Ejw-ߊ؋w_@˯ÇF6@ ֻ+@exÊʽexqc;VǪ겋x'mtQWBKß~f*JGEu\]ӗ604o Fm^8cP.-$Ӭi
l0`MHmVdgu*5yJM]uyTf -:d4Q-P+oF/WշTa8:9r~s<I-Qs<zLnŞbNp<У.Q&FwʺNx5גNaU9{⎿bl|FUd.@Ugi#G13fQPE'<UTܕl5D=i^$tTxӸ[#nʫqR=-ݍ`T=\%]E$mY2A6c7ǵs|H7O1= -Mb"h%=.ė6Q-c@X,r 1`Qz^_d`\3N_9!]q"^Md&\@Ni!孇!OT(*pVUzO`J^0G{6FĚ_saf -3ýs3Р@P̠NKfMPvrlVLS]rm,4DF5 '@FoV6E֜E+ma?dMU
^5ѶgGN~M4_$x}Ն4 FUQ#WÃ -dHGT^vl+-9ݔ~yv`(ʩ>0rb6v,0t1ˤuP埲L - -d>fJv9y)ߔ}WbjVgJxx,7H_I#Cr:6UK^R> MO*8,i*SŞ_Zً pI$7b{L<!Kq^XM b4RYF(<]+ -#H}v\p`do,=,3)ϓK&\Y58Ƣ^ xKg -ip+${SCc=1qCoLς{n`Ҫ4ϠkGTkUKLL -c;Q3/0CIQ( -&Bp/HN1f0q - -Nm
_>V{]LvzU40iq/]cw,9AHћ6R5VD+CcNuI譠DzGZrm1Ee'2+"(0+F +Ji.6j"l>%Uf4 yV)'Q5j ߱ޏCtWI@Ӓ<mSQ)J-m:BW;zL(F:䧳7&R?j\+NBE"#.#?fivquRkv('!R8qubڹvp]Tf2Kj"!t֔`mMR/Rqa9?sP!o2-I;=eWMlj[me47)ΡVWy7PL_1jOlr~3SuOAⳐc{)JifUxMIo -Sts?&Iݛ7p>KT=kZ\Ji!=r2jdN+h]Ze1LvǓC|ȿkE4S[5kX3
5 -Z]PSh1|VO(竝앧.zڀ$)iV!EL}˴N(3] jYWng|mgm۾I>8Hjje<*gײr[{Uor)6]~gד!-j,W ݎ}d֪MJ@B.4} -+߉9ondx"=O c}+)CYkAkoԝUO-M3wѺ@u)Z</>RT);Ӣ!0ʑh)oЖ~s+kp~>#V\V>9#T}`J2+1{<(3spFΒNl pvzH*qɚneq5zlMR +275 0 obj +<< /Filter /FlateDecode /Length 5059 >> +stream +xڵ]I$9nׯȣ}hYv/;
0>`Ncv/J˫:TWeB(H-/q?}O\87/E]|_
xu/oRR?~*=)>rwVK],Ks^hA|?N-4:4#->k:<LWz~_dO6&ͺ(Z$Ěyvy2Ce/QDl&(`hi6.c}*`2N(@ጚG=ɲ.^QyBLvineD
tUj'\
_鑇DWKv-yn[s<1^Z,|4Qy
[,$LnEγz__i#mu]*QNNcm[%e'@=ž06kE'̠/jeNo{hSe}hmv8vwF2>eTًΪmS+dߝtjVZPGJ)OG"ok_ď{+тR[6Ans]>S`Z{a#,s{t`@o?vDwfBͺpp6EbkF$/U +fK*&w"EL&o|nFMRk#/[zaЬjwQ__G{
v3SٴH^*A] `3H0 %VTC`$`\LI5w畔)L"Bآ{ݔڛTnTx囦T[[f,jT,s7% +ճc+\WcE7<;VD8HZ8)'4Ss +QmO,R +xj6Bvԅ<s<# +r e8b7$hQ+@
a݁-Ie&e~qiFc +z^+<KA`AG0ڍV/N'<w8=jOf~5H
Q.\af,yjy!XG`1Gb:qvg !y?_h0 Gx +.g<ړFQP[y%2
qSѲ4uHi0LO7(^C[*<5tr|E5ݖkj ffLuhibE]&h4Ro! eJe#forɒV]y*R1N_I>Z(҉/sOVC2o~~ȼv3,yL2̭g,k=1 \,m":0u,uQX/X'z4 bõw,`S3e?OqyԞ +e
G:[@n|Zd<1c*yӖF*H59kcC !$/o"Q-R?RWi{yJH_qJb 4<j4xAx. +dn*iEI!W*q2F>y&lr2Ig&8FS+Vd/ɝޭ'Dv0F}}Qs T? +kej#'GzVH'`'<O^Ak*ZҬ&Ee>a\RN+ovQ17hm*{ׅ`3(^:?A[ I7ܵu1mȪўY)q5.{ҙJj2ݒX^BZ +ɕ'0Äp!T7P:bя4Ǒ8uY?g6AhΠ*kWOj +6Shh5qvϫW!cSaOk)!֩*Ԓ'UF=in|g +lSD<9+Gs6r_SwzB!ƙJ[K +W@Qs]{S\$=̐Tjzck#zٳ'~@yvp +9B|3/);_ +fJUa- GTIg8ow_@u\u87{ì]:ŋ6A^utҙCAP)`3,]=̜ܷNE@gf3o2nWo2 +{K)K`n/zs4B-{VcٍY=]ZhE[˚NBjUZWnW毆ɆY>~rB藼(eUao,yIs[3Zv&Ƕ{䎔MmD!ࡑlrsylrvkˬhM'SrTPUoAoiv[.t+o[hP1kjWwۛ9 + (s +lK +"+{*i8rA`7
ظsNjgx:r2qpٖ2wa֝z+Ѹqv.B~SN6#wEwB-U}_A{w$`U4;3}3RI怑EQ!?d2M߅쿧4Yq *L endstream endobj -266 0 obj -<< /Type /Page /Contents 267 0 R /Resources 265 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 270 0 R >> -endobj -270 0 obj -[ 261 0 R 262 0 R ] +274 0 obj +<< /Type /Page /Contents 275 0 R /Resources 273 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 278 0 R >> endobj -261 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.636 85.96 481.861 97.417 ]/A << /S /GoTo /D (section.7) >> >> +278 0 obj +[ 267 0 R 268 0 R 269 0 R 270 0 R ] endobj -262 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.916 85.96 505.373 97.417 ]/A << /S /GoTo /D (section.7) >> >> +267 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 507.158 634.909 514.132 646.864 ]/A << /S /GoTo /D (section.5) >> >> endobj 268 0 obj -<< /D [ 266 0 R /XYZ 78.37 808.885 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 114.907 622.954 121.881 634.909 ]/A << /S /GoTo /D (section.5) >> >> +endobj +269 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.636 88.232 481.861 99.689 ]/A << /S /GoTo /D (section.7) >> >> +endobj +270 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.916 88.232 505.373 99.689 ]/A << /S /GoTo /D (section.7) >> >> +endobj +276 0 obj +<< /D [ 274 0 R /XYZ 78.37 808.885 null ] >> endobj 33 0 obj -<< /D [ 266 0 R /XYZ 79.37 684.154 null ] >> +<< /D [ 274 0 R /XYZ 79.37 771.024 null ] >> endobj 37 0 obj -<< /D [ 266 0 R /XYZ 79.37 593.56 null ] >> +<< /D [ 274 0 R /XYZ 79.37 734.627 null ] >> endobj -265 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F63 231 0 R /F65 232 0 R /F53 226 0 R /F54 228 0 R /F69 269 0 R /F55 229 0 R /F22 234 0 R /F68 259 0 R /F32 236 0 R /F61 239 0 R /F60 238 0 R >> /ProcSet [ /PDF /Text ] >> +273 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F69 277 0 R /F56 236 0 R /F16 257 0 R /F55 235 0 R /F22 240 0 R /F68 265 0 R /F63 237 0 R /F32 242 0 R /F62 245 0 R /F61 244 0 R >> /ProcSet [ /PDF /Text ] >> endobj -283 0 obj -<< /Filter /FlateDecode /Length 4917 >> -stream -xɲC{ԫR{4-n.ؗ_ 3$%9<FE^~}𧻲(g._~RJUN]~*>Z)R/#xO }{Oi|Wk0>~`AA -?.~3~aX:Xbi0&,3&&NALA-}zH]Lm3UGѷ=a@Fe<LjLe##rV_zoKMdއpBؚF.luE$Vn%qU$C.Z{.r6MJ:je2&h51v) dV[1'y -d}.К4A!RCkXח;N>)߄ݱO2@xޤP)t7jo#iƑ<vd`+̦a=Se|Jc<7eQlT3p͚p_$. hEFF# -Rso[fiðR_XΖ||jgS[݊> -(s0T۾"0~mW:/=~ȩi1W-^96ieRz:{Qr0hN@53C54i+Llot.l~/Q3/`Ko9 -e#$pVǍh7rGBl,=`TZL8c -OLnK;K{I5hR -W|RWr(Yj[\y#!~jC6aX%h6:Z+hW@( -<D۪ nX%
ʬ^:}r`w<vƢEsN#Lh+a]ۜp]ﳤmVŵ>L>),>OZ\`^[ڽ[,HQ}>9Vx1w -F<a^JX6\{֫'֦Q77 -7R%{PG\Cai3}~'u)5@ߩ -0zvRȲ=w^EM"Xݎu"D[YS_QʟY<yy[HGHqh1OZ8=gَ~|\ӯk -7^P**=s1p.&N_HUVgs: ?2}؇8(߉]VCkFX, -nWV3<uʪZ 3cG<[mJ -K͞ߓ~T-z;XTẻdkw0o6s;<2:(m4 1LU6T09̬.b1gdqA,T%`Zݖ:.Ͻ^ފ*Zk@#g4^{j>T -5Xlj-*)PPMp;B9T!dNUfwTq36@8k!dG(z-'PPJڷXvPhtCwJ&dA!.rCƸStWסH@/YkҔ\0>x%3Aow;yeQkko%c%ڪ)~;JOXܷdl`Q}u-co9,Q; eη)Jj/OT9SD:}*W~HYҲΑ5rQ{Ԏ - -^T申! Oe6QVu] -;i]aVcU+';ɰ_ʰ:\jb+2 ХzO#83arVpneM-ÞT+tD_gl`5AAtN^[eY0kGFMwUM0$^ԗ;}Nf"Fv䴨dU.\ݨiD|ʌf䊚|:9meT]`#sc,|A.8};HmnQS8.;?.h6z;dZ̈98bS/98Ksi/VU- -<A_N+Bה픏efp=Lo,!kBCBfAbm.`{0c3]*^0!L Zsuۯ<>F.'C-%o`Aãyp.% +L?6ËW?,OU^;ϝ%1`&<[cxpc>P`P}M<;LvvTd)3e/ND2
tR/`t*U74@`fB7Ϟqy_"D&EzR0#qR.i31 s5N9\,j}(ێi|p+``Th׀(|Z`0XPMYe!5=J =>.3ιW
GX5q~#^sVx`3l_| J>8ޅL -NUVL庴]2 6mzz̝93}KXK}jP8Ms*T9X}䵛B0 {~YCtRҰ`C{}|}G%Sxsg:7ַq8x)2GWܰx?v,z =L1@lAQc -94Qedqr26nx -Ԝ! - Q^wZ9-7z1 -lC;Bw:P$epYʤdw;sR!I -g(hdif%h=d
`kgW1ZƚS,kE?-MbZT{,yB1H;YF+7D6qhDk -)y(WA՝mckn^8lj=T2L}2ONJG5v:VJXTl5 eٵIJ&]w,_]$AKhtԘެ$NX'zWG6t$kRH'ChO$|TíJ*j&oxLXa[pGukR+搆v;YV a*O<,mxYMDٳ8M.NT`~AWhP,wpOtIY^Vۺ=[yQE +289 0 obj +<< /Filter /FlateDecode /Length 4397 >> +stream +xɮ"Q; +n2cb +a{m]X8[9WwhJ\o'ToP({-sVꝏwo] +5ylơ$KSX<]d}.К4A!҈CkX9.>%߄ݱO2IwR>h'L63$a6=^(SWD|P֦̑4`kmՔT}%ӮFXl^}#[?%3Wm]-Φ]^2HPK:<CK +6uF6jwR뺮M)w8oc*cfo'Kj˾f蚜Mt986BB%*0CwnOll]6-mD0~B%]me:7耸dl R6a; 1+WXߘ LJn\RAΗ@Wʳ&LE18kV ^[W
^Fٳe>QP\ÊWNEaZwd +<f7E?L +p_܈:o?+R/9w}9}7mE"3Ni꽔7=b(9dO4Y'{ ԙ!HkAIJJF;ξ_|IN~NgLmϒa aҖ'T%2Ffw.Gϳ
Bs5*4j$_ij +.Oo%AIU3ܣD=<^5=ɕ*8lEHD)b&A^e0C9Z~9
UD8QNr+5{Mi^ [Ꙝ%ws[)n3WO7E6j? ߮TL4+ +%'e+ztt(Bsek9L +4nVVYdfA,\,ZzzRY)Pu/ +HU
ڌuJZċED?B΄ ꥅ4g-$Rdp%=)ׄwJ>v蘈+f*-UF2w +#@!dp^(,`x%qg+dl3-"J^=/͡A0g6?DO6'96Nͩrڂ/[w;=Zȍ&KTOB-xecgFN+^7BPcبT +;E/H-L3n3=6;~L3P)P6IW(iz}+KCjq_ޛ +g \.Cʈx0W/XsLZh4 Ǧ}Hf[;[{KgU8<R]zuJ&#ҦlyJi>:Z+A/lڣ`۷'v8O#6.hr<@B4mGӫh6$ܡ<( B38$3Q".<Rp.q@թ+=ɂ;&3Ͽh +4ÔLYd)<W:ܭHǬg13Tj=+p5q\p5&8^? + +o7zSdU=3OgSn +(,WZlvu +coYBq7;<h,(Oa,fޖ;ծJjr6Uѷ=>=XӦCVnFzoAA3:dqgF?BM&u%r8yۀ>ă]sRn:^Na>VfrN`IDNA,%bFlCOx?Jk靐>*d< +v7ᨽ,tMYm|l,#aR}cX2rjsڃ|cw;yE3}$![q!#+?ur`ɱ~0%Ȼ*GU<~9CwCdɛ~y8C*0
nx=-`z +p\?mOWU;揝~-1e`&<Um{d1D-WPj&{]eeP/Io4DLaW"vGr^kwy-B㶼Ԃ=#8)@L31^W:zrg 4D>sV?
?1P1\G{jx\밴M_y*],Rj9+2-m)Uh]ien=A=6Qo' +yMx7ͲڮQozj,-oWf"- endstream endobj -282 0 obj -<< /Type /Page /Contents 283 0 R /Resources 281 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 286 0 R >> -endobj -286 0 obj -[ 263 0 R 264 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R ] -endobj -263 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 437.011 733.664 451.736 745.619 ]/A << /S /GoTo /D (subsection.6.2) >> >> +288 0 obj +<< /Type /Page /Contents 289 0 R /Resources 287 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 292 0 R >> endobj -264 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 468.149 733.664 480.104 745.619 ]/A << /S /GoTo /D (subsection.6.2) >> >> +292 0 obj +[ 271 0 R 272 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R ] endobj 271 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 262.513 427.854 277.238 438.734 ]/A << /S /GoTo /D (subsection.8.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 431.085 733.664 453.561 745.619 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> endobj 272 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 290.19 427.854 302.145 438.734 ]/A << /S /GoTo /D (subsection.8.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 469.061 733.664 481.017 745.619 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> endobj -273 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.51 297.516 489.234 309.471 ]/A << /S /GoTo /D (subsection.9.2) >> >> -endobj -274 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 502.177 297.516 514.132 309.471 ]/A << /S /GoTo /D (subsection.9.2) >> >> +279 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 262.513 358.941 277.238 369.82 ]/A << /S /GoTo /D (subsection.8.1) >> >> endobj -275 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.781 259.072 424.257 271.027 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> +280 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 290.19 358.941 302.145 369.82 ]/A << /S /GoTo /D (subsection.8.1) >> >> endobj -276 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.978 259.072 451.933 271.027 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> +281 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.51 225.538 489.234 237.493 ]/A << /S /GoTo /D (subsection.9.2) >> >> endobj -277 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 362.08 209.23 376.805 220.069 ]/A << /S /GoTo /D (subsection.8.2) >> >> +282 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 502.177 225.538 514.132 237.493 ]/A << /S /GoTo /D (subsection.9.2) >> >> endobj -278 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.03 209.23 477.985 220.069 ]/A << /S /GoTo /D (subsection.8.2) >> >> +283 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.781 186.237 424.257 198.192 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> endobj 284 0 obj -<< /D [ 282 0 R /XYZ 78.37 808.885 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.978 186.237 451.933 198.192 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> endobj -281 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R /F70 285 0 R /F55 229 0 R /F32 236 0 R /F61 239 0 R /F60 238 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +285 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 362.08 135.539 376.805 146.379 ]/A << /S /GoTo /D (subsection.8.2) >> >> +endobj +286 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.03 135.539 477.985 146.379 ]/A << /S /GoTo /D (subsection.8.2) >> >> endobj 290 0 obj -<< /Filter /FlateDecode /Length 3196 >> -stream -xڽɮB?04 -v2S_).]{_K"kHow7ϼFm~{obsf`܈/>h?rO_K|;pȏt'_ӓ_Ж +63-&8$n_4<AhDŽ p\+ihNnIH -Ìw#ty#O8-j$'n I>I!7:@{Ms;6ȋY2:c$¸%@ew#aRr-ZIZR nHZ}P+"Db菉U@y
4"aʢMV#eܧԐ\$P1BTkiyZ5U.SgIAk-8BGcxTɬ,ƯFo,qU2 :4֪Q#M][-=>'gFN~ãYeu٬t~<2BڻqqUTƓG_Ϧx.Q$'l*jpL*9":T }+ p'K KY㝫IJ4wA4?bJ/M@VFҧ!NK3tԴcOuɟ%9[wfh2Z
Yfpd}J9jQ(K2~t]1ݲ^_+~)Q vƇ<6!dB?{C2̏QZDʯ<?NpY:VIwLn&%[^Õ2̑#̼n%#I)gpMmz!31 -cQ} -mDB5k}D2Pd P(Ӯv&ۊv.}KR0%KA=ZIiU)AaRjlh,m*?ڷtʇTaj3gj$4:$1
%>P=21AyWxAh%H -1PFMFXbvhʌFFGXk̅稒J0i`EU*fÏ3 -XKÛ5ɿv<am3:'+=ӹDI-X5ȯ
1&>0"q -/7VJ䕸tMvI;$Z!b\|Qgpōg=&g2EmHEvrM#ETffb -Efkwx ?rRNjXH>n"F}OJT -)I -n(5ޚ*-
[&4Ywݩ -_ɬ3=3+LzAk!|W6K<u)Zyr'wQfյ*ԹuJ$šSq̇ŹPCɦ&/iO~{?Z<H
P#:A;w&71Au4W2h79KB;"t:ȝ;Ӱ_R6W)V+j3`%RwntAk^ -+Cj\(\o4Y)ħ]ՈOUѭfe/O@IUI=a`_Y3*1Q!VOS64jPaM§j H -I|kSwZJ2z+ܵU= -{IbI\]bߪ{"n~/Ϻ?u - v*5_v/2v -&iF36:.=Fw1yb`aJ4>qX})y;=dۈ6lM)}|BzfV'JnCĕ0EX<54Ңv۱BkClR-ZXe"v:hn8@'7 +<< /D [ 288 0 R /XYZ 78.37 808.885 null ] >> +endobj +287 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F68 265 0 R /F55 235 0 R /F70 291 0 R /F56 236 0 R /F32 242 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +298 0 obj +<< /Filter /FlateDecode /Length 3758 >> +stream +xڽˎ>_Xd vo/)}H|/TMRK3Z[Yw)/o/yx4j| +[Rdf/MxABl:fmü[3Lr4+f4ki[[EnH+&]L2ʔxR*9-qC72
-9RO${W4ӷ\b/Yf)$ `Λ۪}` +.]MF^Yb+rN^A^=N 1Z/ r`EW;JPT]L:}on]Od;ܫ0EYimW +$~ql֭[].t:ჵ`tJ,|6o֭Vnp` +!1+%v&+ӏD ԟm=qhZi"KRjXGu%D <iZI)w:1`B椑:nQ;vL;q"nF"դ4I_9#flً Rl.JwD"Ǥ>hS+LIzqSG{g&!wE^2,SQUZGfllUeP{
"S86*6t RhMy1GУn2V9XcR~ɠ
l%Iɩk恤LiLP`^@>'ehheW!O +E%!N!@(fMϳN>n5Jx+kV<,g":Y$=kkn>}31X\w*G% 6\B%GY#o?WL5W8`;]iU\75sՀlfAwE|<oK֫|'i~~Y3chi/1cn3Ȣ.g^˿ҪTŌTEYLJè +Jy}``3d`yQXc&LJƉ^ts>QEk}eCu"E ZҚ5|6ywaF,4ho704S./>V:%A_
$ZM29ACoCGOA-qUηjs2Еe5<>!P0e[<syF[RMF`,T8Փ^Kz[﹫F&y3SNn!`ĬpCyr}y@F.@6ۼ{ +K#+Q:, +-TW [1LO؝?}\f9L+AAyM$ƑFD$I櫱ǂ#C?H'lXSa8 әa
iȇ4$y +Ob%Xa;#h K8nk݆}sFY{xτ.U?bLӗX(Q8aY; #\mnSϸkEphGb51>`sC72y +af|=>XĈQSt9lg$k7h) {J0c_Jh?] +kBDiY{59%+-0XY
^N+&;|5Fx$jᮨ8dьv?g:Z+$Z>%a$\gsf@%!;y>gmkt>
wyy^10<WaÈX#0T@b*$>AW#4DZɌZ +Ԝ5:r6+ ր-烵LkEkP0؞L;:rڢ +i057rhf=9+X67Vc,;{w|qڎ4_jF>8eFsf4{K,bTzMד<GdP\)<ypSTxQ<ᙼϚ}9y3g{\-p0`=8 +Wiѩ=nx"d{pˁ3eSIM}%1dHgw`#|:5;yJk4~$p'<oȕTnjIJ +M*I<q[+lSS +*)@χUn
yF+<yR 3˥*Yûc}IK$UGSy}^V@V~lka*xU祮'Z(\}Ⱦ|*PhzfXO1,"
JC3!rj4\I6u~PGhL<IL:W +P4>hy4: w3IpR0`Ͱ֕HV_*sUYQħG\a(WwHƇʪJ0+纇}d)29GH?Ǯns˥knIܕ<c*J֒Wnݠk=c*WApYOVZ7֦d9Il'~~ڻUH3;| Z_76";b97ڴo4iJ]{mZǽ}3굩Г49o;#ľE%N~r[FkZK/])0R# Z2K&=%r>BDP:Of_(<wQ/i*.j}w>- <WG;E4K/+NOx])RRHɠi)21PXaN=y NTwhwChl=ף{qYֻՒUڿV ++ +|Xu_kwEAvkb} endstream endobj -289 0 obj -<< /Type /Page /Contents 290 0 R /Resources 288 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 293 0 R >> +297 0 obj +<< /Type /Page /Contents 298 0 R /Resources 296 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 301 0 R >> endobj -293 0 obj -[ 287 0 R 279 0 R 280 0 R ] +301 0 obj +[ 295 0 R 293 0 R 294 0 R ] endobj -287 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.659 258.922 251.614 270.877 ]/A << /S /GoTo /D (subsection.6.1) >> >> +295 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.659 222.862 251.614 234.817 ]/A << /S /GoTo /D (subsection.6.2) >> >> endobj -279 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 111.179 92.406 130.57 103.863 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> +293 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 111.179 67.03 130.57 78.488 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> endobj -280 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 141.274 92.406 151.731 103.863 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> +294 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 141.274 67.03 151.731 78.488 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> endobj -291 0 obj -<< /D [ 289 0 R /XYZ 78.37 808.885 null ] >> +299 0 obj +<< /D [ 297 0 R /XYZ 78.37 808.885 null ] >> endobj 41 0 obj -<< /D [ 289 0 R /XYZ 79.37 240.596 null ] >> +<< /D [ 297 0 R /XYZ 79.37 205.257 null ] >> endobj 45 0 obj -<< /D [ 289 0 R /XYZ 79.37 216.366 null ] >> +<< /D [ 297 0 R /XYZ 79.37 181.028 null ] >> endobj -288 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F55 229 0 R /F54 228 0 R /F71 292 0 R /F61 239 0 R /F63 231 0 R /F53 226 0 R /F16 251 0 R /F69 269 0 R /F32 236 0 R >> /ProcSet [ /PDF /Text ] >> +296 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F56 236 0 R /F70 291 0 R /F55 235 0 R /F71 300 0 R /F62 245 0 R /F63 237 0 R /F54 234 0 R /F16 257 0 R /F32 242 0 R /F61 244 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -298 0 obj -<< /Filter /FlateDecode /Length 3781 >> -stream -x[K$
?R
8''{|JK~)U3b=VDQI"/?|~rC^{{'/E]!L_^oR-ׯTBvzQAJר_ -`[f1|աW_S4!i|RB[&>iV\
[m^Aξ~&ۏp^ª(=ð3dYS_z'9/A }/+/1βխpe;ivZ2icpp#i'pV*\1=Թ2+^K\$1BZ{Vq+[Lk-iHy KlliݵBf,VaK\"D3ngބWC%e@_Rzy<ı͂[Z;v!UL3o2CYh`<足܀䖽6iFKrK7qd
eb2iN%7|Gw}O<l4_f츌i3NBީЮ\3Uq- -9S+kCqEӏ(ܮE;#իJ)WuAGD_yiꫳ"gY-\
ʥ>UQfmɩH$7T.e++Q.t(
-"9h]
qP-tvGfi98 -,.
Bc`7w:L'D^bG ;c)9Q\RfP<oFuBS%i"_9);GCq8x4vqFXX"\I4GrHEM7zRq0k<$uSzSi6W[J._+NnXU/['GR+K=J7D}:alRRw&UWVJσf{ONBl88rL -WPIInx=91LCҎh3ΎS -YZf1g|
iG4kv"=^ mLc+@<)A}c/FjF-橻+֚ngI|rT[b:2(*f2fLz9w$AYH-kq -#&sg^:=bɳE*wB;Eۅ&}s[NKqK4D!s!dF|fyO 7k8!hLɗ?)5DGK704o,t[q=Z_QH5g;s An=Ҫ}2Gwg -c٧ic CTŸX]]'aΆ2y'vylސ{iR%leeu-~ݢOϿ. kpL
2vlCrI}knJSܺ" -=VZYҫ9/',p& -?Lqn)fRPiLẅ́/NnlW(\ݺ z{T1+}g~'h m -5:hɥeG2l]O -]" l{p̴:SRY
2ib9LӖ>rkpֻSsqv~ -4sh ձN)Zo5@7սfE*1smȫ j!tlEcyDtk,Cz`BѤ>6"c\*Ķ<nǴu,
Rwbz`: mczr_!߫Ҹ]rEax>:TJ)}^+}S%;U&+\&w^Zv8VU]g'9ze2} +306 0 obj +<< /Filter /FlateDecode /Length 4053 >> +stream +x\ˎ\
+ +
t\LVx7U""GDz[ݶ|JEQ!)5/?}}0V_A"..0. +ƭ|zʹ/-ƹ/R&>;"o=[t"E|"nc"r'ֿۨ4uj +C{2zRrG2c[6{_)-"/w,-K+ +?GplP16fbl쮀lhsaFKh9diո&TEvNaamNGAB}B9c&'HץOrAuoh6nW͟9:,8pצ{Z66g[J*cV$:c]T\掏&뤞&{oàCqT鹽.;I*~ +<'#JRKK<h5?cL'r2~y/MkG7@f +Qo:lI{֛1Xi49>Ҳ8R:gRynڟkks9S)pVFWCYjkzȓT5D}2 g35E5VgBmО}{}|tH~(L|rTXf1:<[& $ܿid:>l +x5 aMۡ犓*J=j1K=c_j(^{
k$.j|-Z{]=a}[z/zt1gYJer7|M/*Ze1ilaz&8hv2|#x_Owd9s __Z}Hyꂑ4gyԙC{iq|ZT6'fIOت[Ti5zx[#-'~Cn-Db i-vÝPJ=bIEkK3W+{'ךּDS}ͮs[G!Fs4tr
R&N0ގmDN%JR
kÙ3juLzpNLfS&yT +Pu3 7)gHgϐkJ`P]Ѫ$5.ܡC9ZN&)Ej;jmp + +wvcrA&wkQ {Z6#$fgohc +B dwLSP +2e5_4=_99M:Zhץ)̵%ˊje:Lڕ(rP + tжJ +%V.l|BjsYU鶺٠ݔw+ +U>6c0(^
kۓ L
)߇q<l>N`gMqpv]z[ޱH0Ҙ]jsZbdz[(WI+ZT:j08}w<rhDD endstream endobj -297 0 obj -<< /Type /Page /Contents 298 0 R /Resources 296 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 301 0 R >> +305 0 obj +<< /Type /Page /Contents 306 0 R /Resources 304 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 309 0 R >> endobj -301 0 obj -[ 294 0 R 295 0 R ] +309 0 obj +[ 302 0 R 303 0 R ] endobj -294 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 493.753 564.737 505.708 575.806 ]/A << /S /GoTo /D (section.10) >> >> +302 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 493.753 518.061 505.708 529.13 ]/A << /S /GoTo /D (section.10) >> >> endobj -295 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.259 552.782 166.214 563.741 ]/A << /S /GoTo /D (section.10) >> >> +303 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.259 506.106 166.214 517.065 ]/A << /S /GoTo /D (section.10) >> >> endobj -299 0 obj -<< /D [ 297 0 R /XYZ 78.37 808.885 null ] >> +307 0 obj +<< /D [ 305 0 R /XYZ 78.37 808.885 null ] >> endobj 49 0 obj -<< /D [ 297 0 R /XYZ 79.37 449.94 null ] >> +<< /D [ 305 0 R /XYZ 79.37 406.475 null ] >> endobj -296 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R /F72 300 0 R /F63 231 0 R /F16 251 0 R /F55 229 0 R /F32 236 0 R /F48 237 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +304 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F56 236 0 R /F52 233 0 R /F69 277 0 R /F68 265 0 R /F55 235 0 R /F72 308 0 R /F63 237 0 R /F16 257 0 R /F32 242 0 R /F48 243 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -305 0 obj -<< /Filter /FlateDecode /Length 3986 >> -stream -xr$XU*Ui$k|rb=ė~HjW5=
-NP8\[~{O U{*&be%oʌOmTp?}}k'HӾ]iZBIk]+ V$ -]M MP$"4r -% fh#,Dk^UյI4,deuKeuZ9ޛk7~od%Z:v3y y>0.hL?mO{ΡzdjB
)<I#\yAVWd, |@D6Z74RBQtF,c#ۤkáH~Cp=*[PhIV'֜Wix\9t)ByqH*±XMVM̡jZ eu -ah
(;,$V͑*` Et<+rˏkꤻ˪()=,auW);|N)0@Y-b}TFr@~쩞Q $QA&dVKlّ撛a3|ȷ:^;C?q;a(R) ̧U='لFy -d:Y2mn84(2_)(s<A2$|ہƽڑ'ê#;T[yaA*z{k.45W#Z!e0NXHe1Rq,nį,ET sݚ͆[5v!DEF6v76F)dPQG9? P(LS=puBjPv|?R ؆Wk$"ՆH9w[HPM(ԹsIDO#7
rN(؟܈y`TX?i"ܷyu=O6зwkU]oQsc/DbH#-E<b4f<ݟت[fu36}dBI\,BJկt 0hFFA<[r[|vjTyYi.~QovS<¼ƒ:'_+|53iPV
?:p3GVy´agJnRguڷb;sҕvtѢߦ$w4EMpľitU]4c9~'!=9HR?r+A`?IZM;yjլ.WCU&"(ast-+z3オ$i6}B^'Drn):FǙǡutM -P ̪vnvk6)sn:y=cXrxFI+;pnuN)D5RpM{JY5xu'Z{`Zʍ%zэWqJ]gPC˥q:u Nqt_K.Ѧ$cZ5*Eњ/oxŬA9{F
add[,Jx*)όJVů<ydK@[OzOS+z]ȓi|f6]O&.a(ʟʐ{EE -7{¦"c});h.X9G]+*Ն)ڡKi`Y-$E1(s_{0)'i( o[15TRAo#enhīVb=;;[AO"֑Db0qKs-Əbd6IT"^lj0FϳZ^X"*x1P}?ItLԏ3{e߫\bkQԫL4;&y!
9/Xrp'巯2kܔ}~n>BnDK2039e+W97d;13v큸lH뿎W{RKNU$cd,+}x:UF<7Bo[PAס~YPw։=C.voyMF7[5_y"o\Se6&A\nKMkd^Iv+y$턪(^rRe֡՞IompGT!Ji5֫(,p%?`OU0KkoÜ_OP)D`hcv92n.K"pvۡ28P>5n
7!%Gg[D,emcqxĈ0r9oʨyt]\Hw2/cr *;pICX0Mr['dHi:ۗx8hTϡ=
}.Vs8wFLmW9yʛ=o>6a)칶)H˅-⍸A[X>"\chѩR:ɢ(yźvhw -aKN+5Q%o3$\c0ptzCqBe -PQ -AN_M-(:q@]-o|7(u;e[5#&fYyǣ2ٛH):5|c(ƇyF+Zzwt_y)t+~rXU!Z -Ju91Y<,;&yON61ވ62=\_#E0,J6ϧ -L>`_>\J|.{RatѻQhǴsmN[YֳY\ -t=:)o-~*1܋DBju1$1MTE9S+P)5<:7YζT]b36Y{ҐCfåPkXXJOkSc`p9.Υ3y3iU-ǂ
<8t)42{OQ/};2V(YS|<J9ruݜStU`v4_Ex*SUz}GI6M{r5Hx5J>MJÜo,}\ +313 0 obj +<< /Filter /FlateDecode /Length 3917 >> +stream +xɎc_,@ִ5s37ç$!!S\;zzrq}cq|y~}&3oߞqI{F0n_9s87+e5|N |뺷Fti^ H5^˯_ +P%g@4z6*-@x_-O t#Z|`
ˊϴaX$`!1а ++Lz
J# ="7diIBǔZ#&hhy할,\$n]wymGh5(ZP{qB,x
^+UوKKK+֙d"ʃ%yf:kUKtMGxā)˿1Tb- +Q/6qufg-/HnS֢fėFV{>{-sEkUl]X?:m|%w1}CB8*z"zu27x!/݈{CVqގIdU5[!ǥuwVx.F/4:goj +nZ#PEY7
혷UH?'nP,"Ji2.<ޤ%.!=LCI5ɻG=msdU[֚Uk+6Y3q}O=tPⶎ"6+kj-\Ŗm=x&VTHHӱ0hwZ1B}V)Mi \?s\b=yW$qh 렼ʬ)!DSwtf~`fޭ!vīoħD>/M!di\IwAq*MoMk/U~VG|Kc!ۣ|ȃ)*p-B&(x>%Mhf}2OUl^rP-)=0!ZI6R/2C }S3tL5H$`J*|]@cWB`8n%Э +^%DZL'Ҍ?+J9vbίm]qV&Gr\$3FG1>3*/h4SpvёCrA&JpS ϻp'qׄiXKAt9ג:@_b|0 +`MA@"lKl!Zq P'v NX>)ȵ{ %"F׳HߓiE"40>zo(bFqTA4*»w(Q^q|\n%usy +:gnM*nGaa?N +fZAZS;0N}a7Cj;OO2/sKǪJfgUݫ& (v#$d_8HYs%
4s5=i`r\Lku̪ZÆaw$nkz'it NSOw%_hЅQ$ +j_XO~ƒEN,4Mq܂SP_&h\qe_/a}"d8-H^^ylYSpmR<rsژ<3ŐƔ:ǯOSc
REa_\2 +8ZS3ˠھS*;JHnm;EđPbu8(:(^INd -3v)j⨗$DV2gx-(@W&WA!e۪ +D ͙0wkoasލǑ[a ˅Fg3Q@UZ]gquLBG +_́kRl + +c@MbyN =7A2na49)FS%(LY7ؖ S#iNTBRm%ƞcpiX}p61XӢQjlr +o'=Ҷ^Ʈjh6fw&Bxtݿ
?? +U+_XurޭN1 endstream endobj -304 0 obj -<< /Type /Page /Contents 305 0 R /Resources 303 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R /Annots 309 0 R >> +312 0 obj +<< /Type /Page /Contents 313 0 R /Resources 311 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R /Annots 317 0 R >> endobj -309 0 obj -[ 302 0 R ] +317 0 obj +[ 310 0 R ] endobj -302 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 141.139 417.517 190.205 431.465 ]/A << /S /GoTo /D (piton:transpose) >> >> +310 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 141.139 392.378 190.205 406.326 ]/A << /S /GoTo /D (piton:transpose) >> >> endobj -306 0 obj -<< /D [ 304 0 R /XYZ 78.37 808.885 null ] >> +314 0 obj +<< /D [ 312 0 R /XYZ 78.37 808.885 null ] >> endobj 53 0 obj -<< /D [ 304 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 312 0 R /XYZ 79.37 771.024 null ] >> endobj -307 0 obj -<< /D [ 304 0 R /XYZ 100.292 517.741 null ] >> +315 0 obj +<< /D [ 312 0 R /XYZ 100.292 492.603 null ] >> endobj -308 0 obj -<< /D [ 304 0 R /XYZ 100.292 457.965 null ] >> +316 0 obj +<< /D [ 312 0 R /XYZ 100.292 432.827 null ] >> endobj 57 0 obj -<< /D [ 304 0 R /XYZ 79.37 298.517 null ] >> +<< /D [ 312 0 R /XYZ 79.37 270.445 null ] >> endobj -303 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 251 0 R /F15 227 0 R /F62 230 0 R /F63 231 0 R /F54 228 0 R /F70 285 0 R /F49 224 0 R /F51 225 0 R /F71 292 0 R /F33 235 0 R /F53 226 0 R /F55 229 0 R /F32 236 0 R /F48 237 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +311 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 257 0 R /F15 232 0 R /F52 233 0 R /F63 237 0 R /F55 235 0 R /F70 291 0 R /F49 230 0 R /F51 231 0 R /F71 300 0 R /F33 241 0 R /F54 234 0 R /F56 236 0 R /F32 242 0 R /F48 243 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -312 0 obj -<< /Filter /FlateDecode /Length 3183 >> -stream -xڽˎ_?Y|E<$C @ V;~"lvHVlc4d^R&.lQDl>=MjQhytjeˋ`4o Ǐ.o~{Y\;WpxW_ރ?7BA#y& -%]#@,UpCN7ubeռqoZD&5ܔ=р|U) -gKY^=%2q 4P,vc.X3GJL+Ƶ0ZUa'O{2ύ]^.ELEonGb^ӝ=-sdwd!NpQi߿>[\juM -91kc2,kDW7wõͮ,-ɫӰXa!iVhVk
(J$:r6vaBmή㗧_7"y:w`?}zXn_/jf>;uaS"JkP1 -Yt%Dc(! --OE aU -Iew)GWZ"b;aAZ2'MqOkM -EyqkX@ݵ
xXS"mnn̾kM&}z_ysj([þ8r]SrkIe-HRG{RGB@2RjQHn2*P_AiXsOT3uxPa^U` -\;F¤x)wI-gcLXm9:4ZYO8owJ`%ISpey3vn~"V;^ElZ" -eϵwm̪Ƶ8͏{RP)۹U~3zt[srU3 g.:|އsFs''kj6LNz2X[46'7
Frs~a` -`AX2N
xk.hw$i9^Lk-ey1. -;J/zOW^rz('*nAr,*Uz.>}֬=NGylb<Q<fwk4h=|@WW"?@b* BS]O{""T}ENvב{+,kn ^nY0+`a_jԔ$*CHAUv)95W7 -7/3.kރ7n,%ZSނV!ܦO<xz5li6Bƒ{a&.ss)m ѡuA=e7 R>/jk=}5ah3-η!Z;?+ +320 0 obj +<< /Filter /FlateDecode /Length 3325 >> +stream +xڽˎ>_Q?0Zz n@r·`{DTc{{(oR*}[с3ۇO +Mm> +7Nmn%زuRꛔM6'=s4xe/ r1>6$(E-pB8cj\Un}%AKP\*m3*`oIu0܆PѻIi5'^鎉~I]Rt㍈jGm9]a)Bic5ϚDk| AY,Ib2"=] +ZCh|u-"Y6ۢ˓*wYjxn;+Siǫ<!{DVf\9a)ϵB/rrsumo|)l2XݡW@W!4ݛ7PH<{i.r)ϫ%!BA#z +К\@b`u2QNlZb\cYƹp. +#-.OJ)& p% +#ǛRth{ +8kG9CVelVoQAb^mh8 ̑X!i
mָUт@,}J8ɠumasr\^W*5$m]kw^/5J ݃Y5P6;z6F\70'ǯo8ݖ"z:wK鉀$?|R>R1l_K:atzRAtؔR:)2mb=
BK4i|vg]BHIH%H@4)5Ӈi(u{=+)aG+hH]/ܼ@k6o +GG:Q !.,$Ǥ6 6kNF
tT- +8-M,7'<1[J|LKDHzA"u9V1-Q +ОQWIF /a1ۏh&GRU$*(1@Fɩ*a.MNO͓t+ǝyR +evG@Zr#H%UI~ a!KSX`;SRD0O +v+Tk*u>1/2i=~rF9TC+i{W
Lamw}zqn䣄kMsRP=٥te43 +aw#`Pe/DrWZI a
ޱ +q< m +T$J"0!q{E + Ze3C'wʍeB2iݴo3%&MxvzԆJD<v{i% +p{rdt%)-+Y}a)OUNd_P>LJI;$WjwNLᢰ`^,/!N\ssBAqBcBT~Dzspع*րr`}zv_G
ךZo3ssXRcT.sjѱj <ᑝF zvj\kis^RÌ-w~ywfiᢛWRԩBuW: .=E7B9+ϨXםYBTIhtڳQy) ++ּG' ,'DzZ;;]%Ծ]|\{$Vod5l~ǟJmS(xӢQMף(Ua
kVg&W&zp'4=)1̜Pw̌4ZEϳ9d2<gדrߪ^Kᴛԃ }ǭ/w066z}a%-۸sqNH;5\,ʵV,YWo|$-k9^#$!-!`(
?"5P:Wʍ;b/ox.ϔG-Ju҈Ij1c;˵5yQ:-7<`Oo,FANzxx9[E(ܣU[f4V endstream endobj -311 0 obj -<< /Type /Page /Contents 312 0 R /Resources 310 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R >> +319 0 obj +<< /Type /Page /Contents 320 0 R /Resources 318 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R >> endobj -313 0 obj -<< /D [ 311 0 R /XYZ 78.37 808.885 null ] >> +321 0 obj +<< /D [ 319 0 R /XYZ 78.37 808.885 null ] >> endobj 61 0 obj -<< /D [ 311 0 R /XYZ 79.37 535.196 null ] >> +<< /D [ 319 0 R /XYZ 79.37 498.832 null ] >> endobj -310 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F15 227 0 R /F63 231 0 R /F65 232 0 R /F53 226 0 R /F16 251 0 R /F54 228 0 R /F68 259 0 R /F67 250 0 R /F71 292 0 R >> /ProcSet [ /PDF /Text ] >> +318 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F55 235 0 R /F63 237 0 R /F65 238 0 R /F54 234 0 R /F68 265 0 R /F71 300 0 R /F16 257 0 R >> /ProcSet [ /PDF /Text ] >> endobj -316 0 obj -<< /Filter /FlateDecode /Length 3727 >> -stream -xˎ>_Q?Zz]]6lS!Cɢ$K\
AM۲ER$ŇL3/_o_Yqq#߾H\g^q7Aq>8şxkWYz-|v]õ3}%OhDu $B@/vY5gæle&
!={~\!_{C8t¥sMi,-;ͯVu|K[`a.Vz&̜Z -'RFw RI:`78Ge -V2#更A$Oj'= -\m½ -ε'ʲT2)pIB}osqPViJQlD[/ZġV8'I$6$*AWI/ێ<rڹ1^3-qiԻLVYv66hZY5\m2n#)Wh|k\W6Ko&ۢaxY_eDulsO,Q;_2Aq'dPCȧ|ÀgZgK<9|1(p͜}u4I)ay[5Joʶ艹nfj-UIFo`=Rd6zkMwfj?U^W>=doj_{%pQ7@f8JIMp2r롸rQ-6[eu(]Ao]`ў*QUz[jDŶw Gbhmsbe%(ߖNR4yD'Qtwbx+ѯ -[֑;3c|k4MǣD,ŒTZ7D+et^HQ|&Ǚ;XA1C#N^PGVy'4}>$@ϽC_qV<k5r^9`^vSa/%ҪDY?O"_4teͳ{P1h?|`R'Q0Q´2 -b62R^\(T.1ဢa[T60Hb\*ස?>p3q9d) |c*f]LzBk4*f1'E)WprVQKpRL% Ji]̡&ϴ`_7W̢z#)a`Ҝ5E"9&reQ*nx\q#]Xb2|Է֊"LtYiXQbٌ;\)8 -̀%Nqhd˳TQ9cjO U1!@sUITƃhs#I{;971WύJsrw-ѣD1t7rբ?ala.ާJd#glGsfz~I S@F#30)iϙL1r+LKf33`53[5333ỪN{8J0Gۻ'Zt&7j5i/V@V!CjlP&U9aIkDKyBnȑFF''mWYcs}-ʞb,|K28gw{}4U_u "WԸ~jo=^"^WG=aw>))ocVog;Dzc\|Wbƹ3\Mx<UjVZZ9>kf^z(TأR7C{ ->luBaߘl4[|]]jg"b&-|Io{:Ҡ\L6Dž\ޜ^GH&]7s|1au'fZ20k\wFcMCƶZR<Rhf{TRͺ9vj@,T?K:eȶCz)u(HrcKC/o%\7-h{F 8dYug:j!ؓsO*Sg.N<_NN|XWt\HIZt(Z)dQ؎ڑƛzSl(,av -zyGf/9q<I!ՉnXD#Ҝ@ϟI-wLgkPnEqbL.:_ˡ
`pqu8"pI#%6.v|处(^bJuhۗ5 _/?wg/ZOpߢ%$ڡ -b{huMx+sj -Dݎvl̇e$hȂ5 -1#xL6ZF7uO.=YMEL13ʹ`OP?vxE=`Fgdm3 +324 0 obj +<< /Filter /FlateDecode /Length 3713 >> +stream +x\K$
ϯ?`Yb +7<oFe +W2"HdON~݊}+:2tN~m +ej)DxB:okƐ"ʫU(D{sѦ-IC,tO]#H1$S~PUڞGM=hQ[3k&%-Zה eɛ~ F#RϪkjAJu;LyT>w2E+ĬI0n`|a"N[482e))a-22I[8^֞LYX| OзM& +C
!f9eBiX!(Q5FYkdn#<'/IhEsS;7-볍{wmtwXV
|q}-\æ߯$F;pQw=2SVS},-gF*q?4:cN~ +jt
L"6QUz +gGRh=K(iDd0Sļ@J+2,IwtMU"WȽ_Vsْ[IH]M6D.\e3ürM+Ѝ=9R* 8S3tjȪyKQHGCLth](R3Fx4V=0H) = +QZ<+<Cq7Cq) By֖\fD֒`"uV~Z;=gSJ>|R 1Л& +$Lk./(&1UG3BpɈy
0"7Rܽ&^^ +&10,f3`fIkb5bueva]1'*nbmWI\줍8~nnȾ`f|r^n=?+Jܘe6GFzDTw^PZ鴌C=GKbnƞ2ߙ21{8!#t)go18ٌS)S|F3`QV1h`~>/ +G׃v>70e+lhPp@[v"KUUtV3:Mvc_QH%*uizqwBFouZBGq= +'0
p2LG4J1@/s>m{<w3i_MRJ\{R"PoJh1樰2mk%-9
`_ԖZݟnymߞ8LFÁSeؐ8Łl8%:P8*~sؒNGPj[$0.̫4PL4 +LE$`J|($MrÎk{<l-̣*sqjlÆp,,'ڪk9zҢMܴIx<UvvdnU6yf'K$L7hNt|ҹ-W)/CD*>ץ.Nrc|TlWa'șEܳJ0B>ŒTLJ}QAm +gJٔWXG9m[.koTknOV49@s潛`d}[,7,.5PX=@7gs +gF^ +*laTX4,J2-cߖ'n&b |4n@L[ ->jgJv1C6/Ԛ,h߷#mtCn3t`~|hTls)5;dtr{l/~)fvK3_Jq0vB
Qm~rm_JʐF5f_Jxr/%\l#hx{c,p5*wB2ؓ䂙&lEhI߈or¼1TSv1fas`R H!G3ϧ6Vz^X<k@e6OLf<#tRo%?JRX-zms=Qz|H{2YͶ<8l=ٕg^6ޖs%dN({Y9BUr߬Dkg[:9㼵O +n$)[ﮥ +ח|!)
m,M֝ D=&բ/J\kM>(o"Be7tW-sW:~1".|[X};$76#XِnݾLli[6Fd#n[.QA͍v>1TMe{jBiJi߃+!'A9{~N-# g>;=dخ*>:AÕo%.xNwVҡ\#NP>.;0`Tloi>aآZMVQb0kޯ'ٍ|K Ӛ(܈2_K +%bss#}:ŜU;mD@YOrpJAPVlfʪvPO&o[TU!TO^>m WWrTxB='^#jS[Ҥ̈́UOskWxk*uı>rl_ὗҗx':?_0dYfO˗$\0÷<(Uiu(ҹ_1h_ʘZ^uU^ϳK FU`^4jsH[0*jop +D߶ײ3C?sɨ9Sg-2yXkU2ǻ֞Y* ]n^^?Ô_˱3_Pz8qe<`FDn$n=<| endstream endobj -315 0 obj -<< /Type /Page /Contents 316 0 R /Resources 314 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 240 0 R >> +323 0 obj +<< /Type /Page /Contents 324 0 R /Resources 322 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 246 0 R >> endobj -317 0 obj -<< /D [ 315 0 R /XYZ 78.37 808.885 null ] >> +325 0 obj +<< /D [ 323 0 R /XYZ 78.37 808.885 null ] >> endobj -314 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 292 0 R /F15 227 0 R /F54 228 0 R /F62 230 0 R /F55 229 0 R /F63 231 0 R /F65 232 0 R /F32 236 0 R /F48 237 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +322 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 300 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F56 236 0 R /F63 237 0 R /F65 238 0 R /F32 242 0 R /F48 243 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -320 0 obj -<< /Filter /FlateDecode /Length 4358 >> +328 0 obj +<< /Filter /FlateDecode /Length 3548 >> stream -xڽ\9dWthKVPfx3Al9؉wzofw9b/O///kyIeE\g^vLYqW~$84o^_ՍscC.K߇>I_7)oFyRBl뗟3y]P -9cHNRe*5<Q{1u|?}ϲ3[0ϼY9z,֓){LJUH
\+qd\ql~rK
"pR#8ᑁ&;WEFb6)N -Vn6 -[{Qmm81c Q?Y&QX[*4XyGyAstS5*bLi-jV(MtdCѲ*xT2n"䥁t$:̢=SPW~Hc֨22G[W{%`f_3o@exH0KSVh= YآmlAj:n꽀Ǜ[/}f\҂q#G -ʾpxӋ3PoAYX)>HƅԖYY:S^wb7Gə&S-퓎G٬w2|zHy1`/{nLq?.' -Qޔ@D<V18E1yu`3`#*Z{WK|M{Pt'B:zq/^'5wc#d&(+onhEjӍF`g3JRIu߿pr$7UjK|>5g@ցnſ4~0NkV4ܭUQ=-pyk^ks"a%kk)nv#[o#ffߢRnJSZ_ D6̸ũ_<&G,oڔ8KpjFhyka9͡6%`S(7ڦ3uglSܠ6!l| '=:te@HQ -t[z! -S5RpEƑN3f4\(Bw_;FÌ;k
-(O'!ֺS=@t-sxdC*W"a狊DftEZD;{%aǍ^"yO06s2|*Em}rCsvHF!9]lV luD-훲gKVGimB# -p;$_a feW\PʐL=[UU
QjG(/wk0K˃u*fӿ|xda;5r++h>" o7LBުiFf -\wJWy5[*KG_J!Iserh(7
1'N1
rѵ^˂AXS;~-`ªa.YgC0MJY4Z2`Հu7TEsnw%}Tk11xD(kyưUl -"c6,'C!JLH||[`8s0Nv Kj6%)24mյkO^TVn(9w2@-۵bf+SʑNGghk5c en+ R-so$_-Y+e1/;6 ~T|gd=>7] -O(,Nzhu{TQ\h -g87.Dӣg -DdbS 8*?dUq!X'(>b<friyu-
XݠEԛvqf$G9*F n3?p2Lg~b素3'68+Ѻ`a Qf<Gn1A8mOɸRy7*g*&WW"թf{!"2Rk?J3Aߨ8z`WUA`j1+]?Ԓx̔ڼQׯ,3Lzs$]횔9&7q?)XǓ~oP
7',U xT,(U2 X1K%Y*L)=} -'̮~eR6',UC:j->xOh1K|U_<YwOG˜sӌቾ -veXu}rueq
zlݮD}{*]@ɉ֤rO[6Qվp\mܲaѨehB4 - Xaډq9[2 RGW/{a^/%W[;%YE[unAH`(f'p@f^ui_}I렿^S^<_ݽzSZ?ںbZwzMOSڏ;Ӂi -9ؤ@)} - -a -֖1*g@R@`B鋰$44
Qc*"*hCiߓ5>fzsFќf8{'m'Y֤+9-=~P.:)z8XV5h7TIbd -\x
8RExm9a*Ӝ# J|Db])ϕ%Rk;>sUDX-kzPROG^Ǫyb5٥+A>v,_)>Lk^TQJ)i1~?NJ8#YW;nXJX~FM][OBu*ZT0 -U4shnYk5ÛZ
fCzֻV}:@rTG[">y57:c/ΙjDVRÞH>:I
tҟҍ$`$"t4SL20鵬 '$:|l T^?(^BfꀃIu}eMޭ1I5p}K8yʭ -;e8U/yd|Z֙%ƵG5LVsI0aM8QėIWn_.g z$dڜPoy[-ց~Kl[<Kց:%Id}|Kly/"ѽnqè̴}\+yqݻKh5`TNqb`\YY>ΠHW`? ʶئo#HaqZD4=gl絻bWoJx -ykĸ]43ٶkɓANyZlɜ1_ɀ~ֶmb@̄bhtm= ->?,`] +x\I\
WFvр 9-)C0B-(= rui(.)>7y_ܔ8}n> +oa})}v!%qĿߡ^?ko_WW_j:[!TB*wJ\BTyL1QO=xtz+TE8 O*->s{4<ڭ^~[SiW3Ye)wA
41Io?M*(\@ +i~J1! +n>+jB
?7 +ct[!WEW!:f!i/9ڮ;kpme'hf'a7SlGR}ji#gV3Taf舣氘ʷDD3%m$cܷԫVWXX}q$
ܻ,6?H|&[ -ߢ7yð~y'4yaHlt&NM،q=R0ț9ci!쥳L=uui<~#[4KZHs
m$ +Ӛ!l}{W^q!NDF%F^esJLٖmN]?%RҫmsoS=ywѯD3Q,1c$:"8QÃ{!6HѣA@(ЃXEbD&J ez#+$Nޑ.t +K2px^gv,i.ֵUoHvsug<`nF39|t+'W2E_>[o'p`/ʓ-KX +#0*L~aHB#-b=Sq 'iI'ц)T*Ȅ-l{=0Xph =E \ЕYyVVkj^'o6M4]B4By; +єKoN0o%AT5s,V ~Bv)MoO6iEdu߾FXY9S=_jN:_2k{lJ#gS/{p\տ,*|4╕*um<?.vhwXa{kmq#Kqz6BV#p(~my?sbZx45Ƞ\BU05K:_V9&sШ)_[R\*@Td[o`,ybǫgI3rmڥ9١ՌZ"pƺ\9|ۡ6nNGXv ;̋_ Rwa3 .D\y|qb +`4qRT{uIe|^P1Q.)G]T,+T\O֍x)O%_slEVF_9;=7n ʱp:Tg_zy~5fW5g7h$gQCOya2C =Hέ{Ue_xmP +yT^#^+*GÃʑޠ*T}dlrAj=ˣKFZb{B`I&H!QeI˧ZaN|,);@:=q2%Qv#mJy̼)u"f;Kf&A endstream endobj -319 0 obj -<< /Type /Page /Contents 320 0 R /Resources 318 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +327 0 obj +<< /Type /Page /Contents 328 0 R /Resources 326 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -321 0 obj -<< /D [ 319 0 R /XYZ 78.37 808.885 null ] >> +329 0 obj +<< /D [ 327 0 R /XYZ 78.37 808.885 null ] >> endobj 65 0 obj -<< /D [ 319 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 327 0 R /XYZ 79.37 771.024 null ] >> endobj 69 0 obj -<< /D [ 319 0 R /XYZ 79.37 734.627 null ] >> +<< /D [ 327 0 R /XYZ 79.37 734.627 null ] >> endobj 73 0 obj -<< /D [ 319 0 R /XYZ 79.37 711.095 null ] >> +<< /D [ 327 0 R /XYZ 79.37 711.095 null ] >> endobj 77 0 obj -<< /D [ 319 0 R /XYZ 79.37 350.645 null ] >> +<< /D [ 327 0 R /XYZ 79.37 444.272 null ] >> endobj -318 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F16 251 0 R /F15 227 0 R /F62 230 0 R /F55 229 0 R /F54 228 0 R /F22 234 0 R /F68 259 0 R /F32 236 0 R /F61 239 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +326 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F16 257 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R /F68 265 0 R /F71 300 0 R >> /ProcSet [ /PDF /Text ] >> endobj -325 0 obj -<< /Filter /FlateDecode /Length 3798 >> +333 0 obj +<< /Filter /FlateDecode /Length 2985 >> stream -xˮ$;m?_yJGGFb+X/pNT<#鮪qiyE^˯we/QDE]B -P.LXflBnR~%=c$k;P=i#nou'ݚׯ:eȗUGUp!A֔; @Z_|78{-(P2Vd+Z6џ -?Szrظ&_BIGtKτz"R -nBMTruf}_eI]"v型tGRIRϻ -tp,Sfm$,HƯrE2GU"0q;pVxpΑ~i%FWM+Kjƌ{W4Ҧ" к,\ȦܾMi(6@h6G{QB8F<JEklY)XhOl<kЕA,OA,ߎbY~ .VV[ܱ:*rEVmVALr -\uw+;-):YA!quoj9͍NU&SA[3zOb4'Iw$?ϒ"m%Դ8 KhEF2j<!>@AFK8;>5؈a^}2h\1`tA -ot -]N51@Е͏Ύ{ea(<زC nOG^%zGrc,z=WjڀxB.V3;;v龮#+VOd<մ8~9ldZ+ÿvC,$8K-{=p!}xq-Ťc?atE,@0kҏ>א'o,0Tq? -WeFfBMP\LLql"L;Q&_4Ch!wKo]<r/] 1(wdOՙhY$Y
Z'i#NѦ:IDa@G,c@APZȒ:K'?R08w4X -.&s1XqOʎ\IaS(W!ʯѿݐvJ0{'P"@<Ф_vc0FF!H.g^n.l)sYZe63V9;nCgJ> ]<9a{LF@ʰɦ(I^huLc\6+hI?3z9C4^(P|^q -asIB{}e*
>ݱnxv)%5B>J(7no땢$oGX V(Y[i045ƾ7b,wc'ԡy6`+s"Y<0=LyÙu=rM -dKo*QB:Y5vܒxԅϱ -Z{* -ѧ
ڨ7:W܌n]jJ*6XG -OOB*yk;" -MQO
&qgy4"q`J -`L9sw%OR0y_0Lk}'#>xfo̔V[)/ڷij. -
6+[]5Ҁ.8r u8v&aDZ9,oȝʘRN:t7@}J-
jcǠMJա>6D&eƙZGO
~ՐauZR#onzXN3n3M*;0mBC¼&{ۢQFgx77ɵ-+B]d6u>ְ^vp.˕nbVdvZB2±VGUV{ͨ8xZ)/=6#<[ mM4ZmWhgݶ%3ul'N/t6 ڠpR70}~`,F.,rN3֘vufcY6K}{Fa4̳>GFU) -T/Nk6
<Ej]1ktX͖ʾғ4oYrE'{So0韱s'"{Ő^E3}Z.sY/nCnL`¶SLn? -aOW(>F4İ1<nW`ád.4'BൟCe+{Ctrf+C|6jTsKr.mr&Aod=2:L([;5B|gλĤ7y+)5\9⪕q%7DzULh@-}Ln xq@B_OTƟHv(fkS{=n9<c,qռM<\
2yRO_xW -|64d.> z}
g$ٱbVb#FRޅPM~ - f"hYv<
.&LaR7BGnTJG<!_;\=0`$e}=N*9G!GWxKdiڂ7{zب%y &\k#4͛Q]#7~oDB& kFpѮ_PJ=ǓAkRwe7c,8`9`f`[d:<NO*zOS&l0u:09Ӝ5ȼ?|.id=cFCTe8Z71q.FFV T±I7`(#9rl4?[xÏ"g}<*:x.nZ'@̾uػTinqld(,d$TK1Rן/f~s #7Q^1%\F!7v&1QTzyH \<ohGHt0 0fR7~~~>c]H*1|x\dCSUbjwvַ5ܦýAD~+&+S\28R~=zuyYf;rgUE4}uF(j"5^ 9U)i.u*W]pT}~? t}G=
aOIFtY7ly:yP}s8j`jTr\7)7uԂ~.&7q݆B0//RpN{[ԧ>nlZwLE-uCzn뿦 +x[ˎW.M` +}i9ؓPIθ+ M c\v6Xw+&Ea4r4\B8֍ttWKa%Բ-ϲE#mfV[R#^ύb5 +]U +fl Doxi҅LP PA6tnC3SϮp0QFWRhMtɅ:`RWW&Qe0(Ma/U$%UQ>E~yD5q(; +W0EbKW\0'a2J99ɸ#I~)rfjEgs>7".FڑPr5&;Z3O-ϻv"ɥ-g{$%܍Nk[Mڛ֯#M:2hl;ڷ,=D <,9})ȚB՞U5r&[Z@ݡ&\ٛ/==Dā:Ҏ)eB5.JW9$ݠF@.krzDq74Lk~ &&YHoUv)OsXdjqNzz9 +,{D!P4%4p{1BZqY%^*^RѠb +nF^k+A,z~X+ӝ- #=]9}O8&#Av<RmuE<9_jkj]M<t>t_WɇID돗 @Jǰ'NK
>'`Q"SRԄ
6~'>:nT +U,M5
1@frߣ|t-mX@F21#`M/S.ˊ/\&}>]:dz|%J^V"]O>ne-S1?
FȝQDŽ
A9VJkټo"&wf.6 +ߪH<}d\[!JO{FsB V)OtԈ@[oB!¼t +nhoRʼn
g_ +f[,=Z×8Hyq=d;= 6%xie!=2 1xa +Ӏ1. ^'>cWÞ* >PWőN(15yX:
L{3M}e,d1Tzَq<Lu^1;OJRwx%6Sƛ+Da뛙Qho֒Y;VW?%N/Jm%bj[cRGWڻ疽gZrð}ث幥,]2ƌG^زM[[ggۮ\Ba
oN;QQkg5+(3mK@k-V +-J}Ov\>ӯ?:M% Ԅa T&[Vsü7kdtCs5D;U/l8&yr"tzMGvaL4;0Ηu$Ē䘹 61s%o +>Ľ%DV8iVR!5 endstream endobj -324 0 obj -<< /Type /Page /Contents 325 0 R /Resources 323 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +332 0 obj +<< /Type /Page /Contents 333 0 R /Resources 331 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -326 0 obj -<< /D [ 324 0 R /XYZ 78.37 808.885 null ] >> +334 0 obj +<< /D [ 332 0 R /XYZ 78.37 808.885 null ] >> endobj -81 0 obj -<< /D [ 324 0 R /XYZ 79.37 435.417 null ] >> +331 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 300 0 R /F15 232 0 R /F52 233 0 R /F68 265 0 R /F55 235 0 R /F72 308 0 R /F63 237 0 R /F65 238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -85 0 obj -<< /D [ 324 0 R /XYZ 79.37 319.251 null ] >> +337 0 obj +<< /Filter /FlateDecode /Length 4075 >> +stream +xɎܺ>_ѹ1C0vHN1|r +r!C*4[7/˷돧?^`N)a.?~}t_8&h]̹V+KחOsN3]F?5ݒIG/Zq]w/$IDcN"28#?Cpe,pf|9.mZIe<¯_ 9Wg"3^<gHSP@%jPÄ9= =v;9[!J@nj}NUp
d: .%<)H$43JFYeC=}/d% +(^8q˔-<NZD:]i^-[dbWD&ĮXkcZ= + +7{Z</<i,\p`viQh/2A#[n͐MCbWu-[,x{5>)xLgC$E嫐SPtώPdu⨤&+x?SN5n9eSR^$V A.TC߄ve) |p;Ukp/=}߲P.sIק6)Jdj@!{v&@^M6tA^利0 TܫڳiT:Ko!=wkbYw1 zל] +pEqSrAhr(كpf{oij?y=8.
RO2*J<|c`%K0ޕy@3V+xmK$NXѭTE3ͦJl +oTRDĀNm͡gSV*[QZ"yëTgmsd7/zŇl^v b.Gص?ܗz2`l_kGlYu,XdP#&&<?e$"JVN`, +
W1!IJiqj2hZ9l$Y+xG}dBArIF(OX}m\CY1^}Z7FwM-rL<~DV* J"m䬷ua] }4YJ$;["Tzt9<=(zw4&%j1*cZZo[q˝5Nt 4/F9cQ/c=e0L`֖QM>4b# +hU`l
g+FĀD]55|t++Jq2f铀ќ&qWN,KuHktU͆l6m~L-5e?BSʴGEi*31,D-8Ƨ`_% k.kEc[UaKQP˙a|d-lp +|fnjPp!dPRTM!=YwYש֓zb2I*gFe +X̏ +?'=e?Nxuyv<=IikEL6'u:soA$)0 +>tF +PWTLwKO&5D;[n%>&;aMĞ %H$ZkhfKzd]HGKQ%7yɜ:7BM7 +k.3ŇM*uaiKSSc +4M'@;iR~ؼ]$@aU|)闑4qƍa'M8X>ԄgQv_HyJ^breeSFb@`NkC0ArsS +$;2I8ڗj.Qɟ&z +,p Y={ +?QDy; y7 +#x^ak3(=A +_Ƨz7y
4^LZ._u=k"%H0.M+˺핱ZSIۣ.f~-BhWw|G]I]|D|`<WCk*:0lf1;V12ъyGsC'RQ0GA/1@1ኢ@JNZ3~ +~[ +endstream endobj -89 0 obj -<< /D [ 324 0 R /XYZ 79.37 225.461 null ] >> +336 0 obj +<< /Type /Page /Contents 337 0 R /Resources 335 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -323 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F63 231 0 R /F65 232 0 R /F32 236 0 R /F22 234 0 R /F25 327 0 R /F53 226 0 R /F16 251 0 R /F71 292 0 R >> /ProcSet [ /PDF /Text ] >> +338 0 obj +<< /D [ 336 0 R /XYZ 78.37 808.885 null ] >> endobj -330 0 obj -<< /Filter /FlateDecode /Length 3065 >> -stream -x[KϯX, -9{C[j.ڣ&bk3}ωy9t7F_ĉ$eʹp.ֿ_֚3Z[ZkX %Z O_x] ]%<^g!?|J͜v' TR>h -hs25do%@>B<Nf4Ӿȫl9bٷjS[5I"wWl2s;.PHv[dtg $>RnΩFCS`OW+Il!zdr'q%V>CzǸ4#mʻdFF-G)Iʅj,c`H^MwV2ZvYwOl!bHArQ,&)VrzB*`p8:H$&3^jBy\.d%H -ڶg&wZ|v$2d^\[9̸2J$>p)쥊*ʧH:9۾͚jQvh-QLe9 T,ͱtϡ$Hƽ4HK0L0{T3-:p1JՎ21i \)^@ˮ4qr;buvEJGRI~ݏZR1HLNPLy۹z-IDMMWꑦycj<GOtC+srڳx`d}KbkK -
F}X/Ez䓗d,rﶱ}g rj2$zJt87uosq;}HWISzJon!Mo+aV>8}/S+ -ycMJ.A4bMƒ$xYj+)+snlu:˙0'סLb6n*AaLO0vJ<qf~~ Hr~MEvY^4t[yþ~_&R<&ɭV^T_P~{I⧎
K@'`#>p #<YUqPT`jdio4.`vt[ڰ)ʭ1XwC)̲8RWIw_JOWY25CR֗~UHC_dl^gx@7QWa1r,ֲy?%DL\l?Uӣx#ɸB 9υτYUcn>ʜhVP0/`%[NhokG\HJA@~`á\<45|ys;Zh.X{$iy:T`1Ӧ/Y<C -ڏx&9l4`}{%y떎tyӱaOGO:>W=fS]Ie8&ϵ:{'\JK&y!@^S,X`9N|bO -lw!`Hcb' 8)s !a9iP=@2@c`=HP(6p-$?Y'>>]Ʒy] -fJ R鞊H
#RC)h#R R#{Li1~"5PZ!Dj}{%<Dj}LǾ."b?rx=H-$>H
R1DjtDjDjmo -#/H
V?@K&h/H
ܲ,Zp/H
r~H 홵?&ޏH-B-aˡvP;tXS -qR8C -endstream +81 0 obj +<< /D [ 336 0 R /XYZ 79.37 771.024 null ] >> endobj -329 0 obj -<< /Type /Page /Contents 330 0 R /Resources 328 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +85 0 obj +<< /D [ 336 0 R /XYZ 79.37 748.289 null ] >> endobj -331 0 obj -<< /D [ 329 0 R /XYZ 78.37 808.885 null ] >> +89 0 obj +<< /D [ 336 0 R /XYZ 79.37 146.483 null ] >> endobj -328 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 292 0 R /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R /F72 300 0 R /F63 231 0 R /F65 232 0 R >> /ProcSet [ /PDF /Text ] >> +335 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F16 257 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F63 237 0 R /F65 238 0 R /F32 242 0 R /F22 240 0 R /F25 339 0 R >> /ProcSet [ /PDF /Text ] >> endobj -336 0 obj -<< /Filter /FlateDecode /Length 2971 >> -stream -xɎ6^_(x\@rJnANY0Ӈe~U,Nn$(kW-!Zo"뙴5q#/ovxtzs|>$^o/|zw3疧qpos;߈G}zni.=c>iH闏#ϼ&I8)`!R%RX"3Pa//-JX8ˏB)GzA!F${Urt
@9jFZ^eIH"+zJU\HQʵs?:\幃>t*+Rw̸G
)>U$Fi7"'I:ެ:DZYvF1AsEC'hV@&FkZ8 >'u([)+Ӹ$ -q>ulY?AG#ua%)II-y~@b2PU=]1+ Df3=bs,Ld]l;=b$d`bc^%{xV"=V,Z=p@UH@gjAe5bq#w2bos;1bGY7 |_.J\Y+r$ͥZޭnY3{ZC<.=J@^939JI_ϝ&h^$E4azbJ -O[f46tfc1rԁrUOI%^FNV032$ (wP = -M['BӓBӛVYyɐf -q\eS<P~w̱-XӖj%5]eY*&Cڈ04mC.#S
kTJ!
XH1Ahht:S*41qyegJHD]Rʮ& -{Q -jԚOAx_iL[ތ7H;"ܨf=V]u<ˎrtpͣ!ʒ_Sf8G/;BM%a?,-O1tK<W3jSpIeV"dhai~s2I^dZQ-{[ZRD װAkaֵnFeC&
3F@̵V]&(c0 -.;j}廱Ȇ$+noF|Fq8~r4UumI/0f#ӂ}D@HVEAwXvgKLȂN!ldy V3+U -ϐ sЖ4{
O7
p+fjIj3s"'~ay! -FMXΜSSKhZP N۽fFv
0;ߴp@`siB#%s?$jilP#NOaRgH1Gȩ56zUȍGBb}ٌJn?bТyPaI\>h;9I]!t$V6ILx\>q`bq&lf_o>(ϻqL -˝0?O/?oq1j9hb:"YM5k3կD)_( +344 0 obj +<< /Filter /FlateDecode /Length 4769 >> +stream +x$-FD= +Ṕ<Ymupק +%+f)%+=zV0twTmp{mAAE+WlFHy 6# +1>I4̃\-ɕ粍`3X +ìW6[1RaKHcKqT͙}<5bq@%r`Bu_# 8`pRbPI^B$rݦ(ٴR,hSPuVƍt'LwʈJF<-q7']Ia*T0
-K(VďVH)I SA,,,qƓnA0edޖĎ7#zL'G';%l9"&%J̘&DCI!+j(hx +9XWWj]JH6"FZ&0Z&̢?;]FF'nbӕ.Vzc>.$3}v 5R*TaqoGMQd0JA~ϏBh(`#b33Mq, >vnx4;;k<IPqڝA(TfYm'&ܸg`Ok}5X-fsy%ϋJIU5Yzg<q<kG#nt|ػbC9XTeE܈o؋T&9'gib۷G:$]ԸbQIG;\"Y3vj4hjz`in`Q/nC>ETjoeE/bZp9G)hkȘƛهZl61t#31&ZAR0!/HXT(M@ҁDBxDE?/2dJ%,Y.(CT:+0:+̏&wb0K%j>˳xh/O;M +nҺ!-R_η{^CLl*3`~8\zb(:F=i WmcPY7t2*X{mJ.s^Zq +6*MO&HAV*{WVҼk2&!=;GB0>^.8tG14FՐ+hq'3\nuUBk7mT\zNʠP5z.R$l\J +HX8'Q*#y.wzyK8 -['+WVwW";wDxm\͙v
?5oy;tnt5S"2ʾ(8ii{"2rϔF tM=YMp̀lE?N5e'+xD]yw{jIThs0uDB滌iA5?h7`n'Z~JmS'0s}Gg
jiJUQ]mCiDzm#Ǝ~}Ҍ0}lЂi0b
;n)i[cς**)=˧+Ya]ҝoNԮ撙IWTFUsɕFڝЭP +dMC]4xu(?C*i665%D0!}4,{!;I6ɱ EW\w-c
{x<
TfՊ.㴔^Z2N|z&7Q+㡛?^Fbޚ49R4*RG/ۄTZz943i53(R㚭fUIw% +Ľj6G$E܄W$iR0˾OFlCy#s6wvm,(]#&יۘ,BuMYk0 ;%3p啠/;RK]m*/Y!ϸsa}#3)V/bXFk2OoSU%H1+2w-2kB +.K<X/<TSA@t%'M@3~;IɅ.AOIH\H,YIy=%[/çw @$H'}pnE>4vʢ
'DEw&!oH Jcj|' +K6i.;;㡬ڳ[y"ܥ:2|?9F%:ESGS4*NOK͕nulꩳ~boࡇJǡ
F/:"HY +M_PU.UIeKTxZPF\c-**M(2blZ8zvncרܥU +F4~0q.z:C*äwf0U>cgp\߉#G=H}n;3֏+]BӮ;e<<h#jЧjieXf:qc}J|<s=-ZZej{r }<S1Gvh*V<v9rrBdIlҞxš͡'~aa'!h&B+ +9F.ܖ?9!tL0EX3vӴp;ſ1S^De"İ7Y4he:d7X_kG1N'@:U5zSM(Ӕj%-DEکkGK]h^!Ont\K )(g?wƑ_Y#{<
_NcPX!%͜>`IK:=AxmTOӧ\._^ZJ~&ÈԾXLO֗upt**lïsWh7%>s ۄK.{d5TݾE?'Ao`
wW%y|StBf+eapq\^e952|O(Tz]=?,F5y {a$U x;,{nPYK%?Rv7 +?pxgџ~cO ̓u.q[ endstream endobj -335 0 obj -<< /Type /Page /Contents 336 0 R /Resources 334 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R /Annots 338 0 R >> +343 0 obj +<< /Type /Page /Contents 344 0 R /Resources 342 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R /Annots 346 0 R >> endobj -338 0 obj -[ 332 0 R 333 0 R ] +346 0 obj +[ 340 0 R 341 0 R ] endobj -332 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 324.092 644.205 338.817 656.16 ]/A << /S /GoTo /D (subsection.4.2) >> >> +340 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 360.765 265.39 375.49 277.345 ]/A << /S /GoTo /D (subsection.4.3) >> >> endobj -333 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.538 644.205 361.512 656.16 ]/A << /S /GoTo /D (subsection.4.2) >> >> +341 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.211 265.39 398.185 277.345 ]/A << /S /GoTo /D (subsection.4.3) >> >> endobj -337 0 obj -<< /D [ 335 0 R /XYZ 78.37 808.885 null ] >> +345 0 obj +<< /D [ 343 0 R /XYZ 78.37 808.885 null ] >> endobj 93 0 obj -<< /D [ 335 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 343 0 R /XYZ 79.37 533.565 null ] >> endobj -334 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F55 229 0 R /F68 259 0 R /F63 231 0 R /F65 232 0 R /F54 228 0 R /F32 236 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +342 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F55 235 0 R /F22 240 0 R /F56 236 0 R /F68 265 0 R /F54 234 0 R /F70 291 0 R /F16 257 0 R /F32 242 0 R /F62 245 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -345 0 obj -<< /Filter /FlateDecode /Length 3773 >> +351 0 obj +<< /Filter /FlateDecode /Length 2642 >> stream -xɎc_
F -'q$´{Nnjԛ6%@%y`$i֎4PzD=[SЏ|lyEd(n(0 t -3`EǧӛQVTf$W|Whnuq(4LBqI.68漬J&b%{˚G9^2Ϛgy5>+q >Y2
t֬H0JqDb -1tL8+YƄJO'/yK93 -l7#c*j@XKc"ME>-5,5 -EMȰiKLe5j<:O,!5R R2ņ&OHǤӖK!a[mw^2Ognre5jnA8z*=9 -4'pkmȞC}TF3͈Kܣ6"'7v- -Dҍ'3usL5bBBrk+ҍtdɞwfŲT
) k/U8=%cȭHT
U˩j*SR&3QS2Y:M?؟ZvRbS/\nZx)٣.^k5F!czeaI +xˎ$>_Q?0N/)sH\(g좧JߤHIRĿ_oO?\ޢN;ؾ6զ:;%S۷ۯR:)s)pybQR ~Ga6LZ0O^pjSF--?w +-ᴗѯR1Fi^SXs^uRTB&.9(-Uug\RD]읾>ӿ'iaO-'}'9;CIEDwB7rPYEVzkBkV@t -s CK03Gz +*T"C}&I.>W7pf% +HۮMU=/mha M+&M&u+ QMh5Jaҿm~A(7rV~n +Jmʊ`yt<:q0.KhY%ʡ6FiI#30cLUc3
)H56*~,uΓ:gܟOn:'o 1X/rlgpEڬ謰*w\R]jm½Eu3vU_3%3|RQG\K"9z/<BB8e7YYÿzuo4S'V)K^ X'rM(* A >XhYA&D?MM<KyǮZ\CO@%b:2s[$~"UN=(DfC#a0yͳ."{[ +w@np67*O&CEWaYJ:Ysj&N- +U^uQnڦr'QǤ9f֔ LpaejkWq҂ŗmٯ9Sd=ط=M6 +"3p-t-4B%.Ŵl
)|4gϰ-$P)48[`ÂaK
x&Ԥ[\S +{֎_lI9$E9}#^bث3hE@1E^R6'"n\}Dxp\,'6[?y4oR*E7gn {
HuK$e@^<yrUow&IeX;KXn:r&Lu$ɑp^vx
Mcw9{7 FmNDoI6".64EE~Yr`t2JAy.->f8̪juGUK":bTyn᭑7N 1AJ[o*N|1h
Zp7+nR]zoƗ7פ\xi֛Q7;jSL*rit;c-bc8
e+#L-*PE7FAN~?kںJT9<</,2罌AD7:locM:&9UP_(JGvOr\J={~4Ҙ[gƿ7A᪰ >#rv/IS8Q䘽m\%ݴwcR$o\e-qN﨔9gZuu+Ja|KO߽b;C +)prjw4VHp <ep^6oz$nߒG!{<NR /cVkuwݮg7{$TBrYwЈSc -P/ne)/n+z&] DdfƝ-];.A0JrO(VB+i^5q|R;CB,D:?>uqDyؽj[mKq(vh1ER]#̅S9BEo2&5w_u"VxRn)TP;+~rK^x>x%|uBrՖܦy֍Zϳ[5R%qss5OSe++U7ZJ>rW+PYxE[N:,C]by4sWVu,;щ**H'`m{GӢ:@cG)I<ʟ(]O>q凴侖U!too)6;jSiڿ<\N~UHW6,q'e/%XxWMʮ.rijo`~Jg endstream endobj -344 0 obj -<< /Type /Page /Contents 345 0 R /Resources 343 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R /Annots 347 0 R >> +350 0 obj +<< /Type /Page /Contents 351 0 R /Resources 349 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R /Annots 353 0 R >> +endobj +353 0 obj +[ 347 0 R 348 0 R ] endobj 347 0 obj -[ 339 0 R 340 0 R 341 0 R 342 0 R ] +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 324.092 372.545 338.817 384.5 ]/A << /S /GoTo /D (subsection.4.2) >> >> endobj -339 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.333 609.828 424.058 620.668 ]/A << /S /GoTo /D (subsection.6.5) >> >> +348 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.538 372.545 361.512 384.5 ]/A << /S /GoTo /D (subsection.4.2) >> >> endobj -340 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.779 609.828 451.734 620.668 ]/A << /S /GoTo /D (subsection.6.5) >> >> +352 0 obj +<< /D [ 350 0 R /XYZ 78.37 808.885 null ] >> endobj -341 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 470.992 301.652 485.716 312.491 ]/A << /S /GoTo /D (subsection.8.2) >> >> +97 0 obj +<< /D [ 350 0 R /XYZ 79.37 508.304 null ] >> endobj -342 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.668 301.652 510.623 312.491 ]/A << /S /GoTo /D (subsection.8.2) >> >> +349 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 233 0 R /F62 245 0 R /F63 237 0 R /F65 238 0 R /F16 257 0 R /F15 232 0 R /F55 235 0 R /F54 234 0 R /F56 236 0 R /F68 265 0 R /F32 242 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -346 0 obj -<< /D [ 344 0 R /XYZ 78.37 808.885 null ] >> +358 0 obj +<< /Filter /FlateDecode /Length 3282 >> +stream +xڵ[n$+Cw@Хj>f2dfeIԥ닅"/?^?_~[D8sۋJ/E]|_SB:uR://i0]5^a^[&uk2hT(=yĉBId;BJ7Λymh'4+jQ633R@-ݼ6!dPV!_蜨$ݍk"vdS%9S%ZrӒ]B3₀N=NEaE程Q87C[?e +Kw4BBgjr#),CB7;y̤<% u)0?oj_NZ +$k{v鄇fCT
窱nP㻂`)h
+n]ٯ}3o4dʽWԀW* +ʮɴ3I^9˛ײnU@:m[j\ɴ#OJay +YW}:KPzZߪH-GO:zA?" +&y/>8ҫ?}qwUwfx~E Lw(LQ*huqF4:Z-تS/424kOupMqH7p%̨muCSx.f +4~M" & \&Ta7u9 +'ɴ8ǀcM|@u~?2<L>g/oUQ9q^k߆V낵uT%%ɳZcF+ƺ\tX(*ne`)ohTo5[4X2N奺RS>^4 + +PtC[,ˇnTo} ͺ3howN~釫.ET@q~:]0{^CvyȽ.|B,r +@ +?6w~1j(7|<'>u·PzDTryf`5
4,+K:T9q9̙n)ˮԭ-Kz{UJ
wD + Na]%xH@<\1<J~ŶW$ :Zf=UQ܍"c淪I
z]sƦ]AU*b7d@t +H*y&^MV*v h)M~>2z#G~m'j55Cc^mD[^\*Aϗ2_Rc_Y%Oo/kgC2eJ͜Y"ODKBzua=LofݻTkZfӳLڣg̜m9+Ú7[*BeӔZd)ZX٘iJynZ}^6w7݊S@VHb#]ahW3ͣ+K:igV-EO˖gy + +endstream endobj -97 0 obj -<< /D [ 344 0 R /XYZ 79.37 771.024 null ] >> +357 0 obj +<< /Type /Page /Contents 358 0 R /Resources 356 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R /Annots 360 0 R >> +endobj +360 0 obj +[ 354 0 R 355 0 R ] +endobj +354 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.333 274.032 424.058 284.872 ]/A << /S /GoTo /D (subsection.6.6) >> >> +endobj +355 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.779 274.032 451.734 284.872 ]/A << /S /GoTo /D (subsection.6.6) >> >> +endobj +359 0 obj +<< /D [ 357 0 R /XYZ 78.37 808.885 null ] >> endobj 101 0 obj -<< /D [ 344 0 R /XYZ 79.37 596.869 null ] >> +<< /D [ 357 0 R /XYZ 79.37 436.025 null ] >> endobj 105 0 obj -<< /D [ 344 0 R /XYZ 79.37 247.555 null ] >> +<< /D [ 357 0 R /XYZ 79.37 261.074 null ] >> endobj -343 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F54 228 0 R /F62 230 0 R /F16 251 0 R /F68 259 0 R /F70 285 0 R /F55 229 0 R /F32 236 0 R /F61 239 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +356 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 233 0 R /F63 237 0 R /F15 232 0 R /F55 235 0 R /F54 234 0 R /F16 257 0 R /F68 265 0 R >> /ProcSet [ /PDF /Text ] >> endobj -350 0 obj -<< /Filter /FlateDecode /Length 3177 >> -stream -x$1߯P -"xxΎ -ȟQݯbݬIa.Hϟ?tp "Xx'uO]\]UBZu')飥@Hx{VJ
[4 sϟ
x I=B7R:o:@82R|-_!}/^)pP1~CA}zE'yP#/LF!@˿
Qr@rRp~IbزXRD$t6u@+q^} L
Jhi);=HdV3lUZ p-)b歎]Bi35:gH2KEfUKD -I}V媄H'\C_?2b?^5Gz~-w&l0*N%\'{BYإO#YB:OlzT@@OIH=~ӟ+cN%p:̸gDڵ;gzD|/>/@
.Φ$lb$UZ -ݢHnq_!SO&qe. ODzJxʅk^Q_],+sv\
w,4Fe?gJ4 #굌Y^unu~0NG\m7Xgc-?pևxH\,yC84RItg]뭃5hBncfBqsd_&Y;%!KzּU|ӆA&,FI+ -1Q]Sa!hah¶]m4pζZgY0Y*I>{Z`aD5JnRoGXGӯPtm>=PjgQ23&z0~=4^0)A -xOȡd.5[k5Wb\\9Rز5wlF -~6ku5kg|U -*jiN*[u
uk3\9.6^xӱQaWhiOygvt(e,4f7q%;D2m;:v5ql\0]\RZIvմ·i(U,0
W -e)W[#]vo,IxMtth儓=F -iw9.f(:Q3Tcq&,p "#(p$ROgGf{h Q}3+ImZob2JAH_tS($ -)k\p~g[U7>N0y.@a7pb8;]ksc!L*Ft%at{}=A -ӎ-y`H -^ ? -淘?S֧1yM2d5#EwXhj-X+
~ \TFWF,ȖWb1ӱh??9{u%Ax?|dtl2kQ^m1{d(FKƮݟelʴ +365 0 obj +<< /Filter /FlateDecode /Length 3549 >> +stream +xˎ_1G d ,h48D|~"lvOJ,`3d/?/we/QD|IyQ +/ +0D~MO*E.ơӸx)Β]+^.M!l(7GefޭokMiJʇLX)>9[=Y8Q\yA\8!AKCH@1]8}v)L)r˷y|¦d +q#Zi?SPsPB2W} +"l5
5ݍ?qrxjeTLa( FH2t+/b9SJEf +a#k3!Ae*ޝ|^L(a7c1)$MX`c^ Y2;A妮),t*xłt~ +rʝO7cg.^kbh~C~ iK:Լ,g +|]cÊd鄬IERV~2̕_~~˛;|P"j|B5E5nf,JmD +u]k[,IA)C7e驞i[:< Ff`n'#Eqd:1B3B3b)_)=p!`$ +Ds^
ZO'&
,Aٯs+G#^$usњʎ"5?)x}ZN{rb؛W@CaJo[̺'deUP-/JdwUa_ȗr}]FJNr]cTzxޚ2yF!ϴ*b."7jYKG*RZU LVnlwF15Ԯ{JMsSW +VTSSZ3r,_S^e>nR%?9(}k}ɥcr-h"E وcB`#~ +r} B. S'D{Xgت +dU?E+e__;Ԩ?h@/v)Oi
Hm5~'fE͞ +apr[hc(<ik)!wahD`Z6?&}ąxf鉇Z͖u|FA8gzwvt&-p']Ǝ v
8
3]MjV<b`MZ>Lv^|~DM1G:~m|ZnVm3bhlT͵8l]Rb1E-\k]E53Rش3Nzs\~84TM0"R2k߱*HZp5 +OGQ^E7+&l*A*˨Sʖan]Cֳw'm3|IwUsWXxب0~J4]7ѽ +g~;Bmoxދg}8\Cm7{Nu.sx欫?u5y-Dm-DBzμា@KXY]P=r}yO`P4R4?D=aV-tY`3pIllco箙&f.ИCV晷<,@Vn;C{?~~,$7aLl>h^/)56`#J=i1t4=!}%^mE-Vt_ZxB$ SW
?QXG)[]VH~&ev *ǁ_uj< +k\2~A71Y0̧햪`R,eŐܯS's\M'1m<uG/۰qQmRmJ!)249+es_eEy#J}ϥՉC:d<_2§зvԮ7}:F3%xR|捭0x] kEhxd5 rc9哔v|d-1,q{2Fr61Cqr<j A(h^vUŃ!-#JDLhD扔c;o}Puڽ +5O݆
Dir0u",[LM9uPEǾ 6u+t^gf4@%Wi&ky5݊_C&KZA z)L-KGc +R +|a#P/*oU" 2,Zo͢{FuPmsd", endstream endobj -349 0 obj -<< /Type /Page /Contents 350 0 R /Resources 348 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +364 0 obj +<< /Type /Page /Contents 365 0 R /Resources 363 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R /Annots 368 0 R >> endobj -351 0 obj -<< /D [ 349 0 R /XYZ 78.37 808.885 null ] >> +368 0 obj +[ 361 0 R 362 0 R ] +endobj +361 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 470.992 656.17 485.716 667.01 ]/A << /S /GoTo /D (subsection.8.2) >> >> +endobj +362 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.668 656.17 510.623 667.01 ]/A << /S /GoTo /D (subsection.8.2) >> >> +endobj +366 0 obj +<< /D [ 364 0 R /XYZ 78.37 808.885 null ] >> endobj 109 0 obj -<< /D [ 349 0 R /XYZ 79.37 672.535 null ] >> +<< /D [ 364 0 R /XYZ 79.37 602.074 null ] >> endobj 113 0 obj -<< /D [ 349 0 R /XYZ 79.37 281.041 null ] >> +<< /D [ 364 0 R /XYZ 79.37 377.155 null ] >> endobj -348 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F63 231 0 R /F65 232 0 R /F22 234 0 R /F59 352 0 R /F16 251 0 R /F15 227 0 R /F54 228 0 R /F68 259 0 R >> /ProcSet [ /PDF /Text ] >> +363 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F55 235 0 R /F52 233 0 R /F70 291 0 R /F56 236 0 R /F16 257 0 R /F68 265 0 R /F63 237 0 R /F65 238 0 R /F22 240 0 R /F60 367 0 R /F32 242 0 R /F62 245 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -355 0 obj -<< /Filter /FlateDecode /Length 3179 >> -stream -xڽn$5Wt8 -&o@<Pf;2x#ǫXURw:}H<-Ox
uyI\8/.3i/ƍvOr.+>3kkyĩ<Ͼ~ՠ_Y26iuq.VZ&tSuT5XLxM8pHW\ӽN
s:dE -fԡ&)eR9V?R`4^ -fjaF4T4tioFʏH`za)Xk$A1cCl< @+ [COY#ØpoA6PKcߎN`Ik<d G^kfy5̧O+
_Zq9rvV2YKV9\prr+܌ G4_w/,7 -%GA Zׯa|!"@L&\YZF4@oT֨q+i5*W AB˘`.i -Gti1bdBpHv;ldej`;\ w>}ɂ.OZOHK]ni2UEF4T2x%
@~D] -(|Zʦfd4,ҭʹ3J+ȑ|˄dK {zäl|6iWR0`g>־++bZ$"e%"=LN -[BnFA"NG8)i?tKF6ʝ5i{2KS+ir|2E8/P]5>MFyVAwuu!'_w(
ٍQNIIJSQi0MMCa).WMo
vfd)4q-뒻t+jڤT %XRȶ/FJJ -*e|KbGҾҾLQP>T~*rJ/ܓuϬ嵂ZX -k^fʠ0#QjeI1 0־偺aAf -:~i9V&zgb0c\#J(U)ߴ{".&-%&2ÆP&eИ4k - >{,Iw:bߩU6SՍ>{3Xxw_*lT㼟LIx67LI4L+6{q1Swi[Wi7d)GrXq~0~U)!Ӛ;u&0.ڌ~U(5Sra -$ZGnfA$1R hޥflB?l -]+*Zh1/R(/fjW] -"LIkVmF)`[Ap{鰧}go<v1AX
x*T*߷`7bOGv mOqDcU^Ir͠5)F|k}*̳ʮ5"G}F%L,K:NW43I )λ;:V AN(M3&k7.#)0(hPI߮xi}ڋM:w.eSOm(m U%6>1o@
5b{@k%A+SA=]<hC~9X "-6mF`\+N~TπԱv7#'`Js=sXeQyGcrm1Bqf|y{rH0G+QH[v +371 0 obj +<< /Filter /FlateDecode /Length 3153 >> +stream +xˎkm?_D +jt
2m?R>)AdaV愧C"J3i`K
EFsе&ZG&"NmE1kO17dIoG&$J{DbIQ M<d}U5MDj+u(ݸlY +,bکV;w!:XB;tzC3-<nc'9FCTȖGPPK_]/:X.d +FF\jPYsIH\zfKĽk7F2DX1{?5%d{#M.7d) *aň邋>A%¬bʸbp,ִ\+T7ycgwbݣK3 }m\ZVAŠ)ۣjM_@U";: +S&-6[ Gk8VAL\ pYcƉߣb/[:G_хiai*!<dЏ^lCt0k] l +#掦5Xh c9"NX=boR"rF|':# +HP(xZkƾjAZoMV]ZH9Od8ϭb!n|ѰnE>2Z3ї9%i
һhL&œ3=*=
M6aqEH5`'dЄ%MIp]Z݀<:SwMćj)aN<h+` 5;`8FmW2'r[kFj";$}
uą~h--c^1 +#PmGڡ:}Lt fT]YJJ)e6 +:&~sF)N6z +KiSsg҅7̻ + +n03_ͅ\ؚt[aIsʦӽd0
Elu֥e4
_;jj*|e`s<N ;]kr[V#!ΈIЭZkcY(ѕu{>-d^WuPmDhs}b\k'vէë<Sc5GjNJ^ui\w^AlA|wU*u~AjuwRiDŬg}ώ%UXLzdM?o2i|XnJ3ajBĆ>5="8#XHy]&P7nT9p/m6P +
Үp[:ɢ"Z~wg6wB%%Fk<IhLW2EA +n)ddBƮbT˶OZ6WUa+SZp7 +nR+dU;+'"-q6ؚ(5E2&XKYhU1f&"Ent]d{B4ܸ5Uz]c}27KwnK[Ee=ܭ-e>rhJIysGu>ۺvkkT|8-E9\mls8I= +<0I;7荌(pY endstream endobj -354 0 obj -<< /Type /Page /Contents 355 0 R /Resources 353 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +370 0 obj +<< /Type /Page /Contents 371 0 R /Resources 369 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -356 0 obj -<< /D [ 354 0 R /XYZ 78.37 808.885 null ] >> +372 0 obj +<< /D [ 370 0 R /XYZ 78.37 808.885 null ] >> endobj 117 0 obj -<< /D [ 354 0 R /XYZ 79.37 545.032 null ] >> +<< /D [ 370 0 R /XYZ 79.37 600.306 null ] >> endobj -353 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F63 231 0 R /F68 259 0 R /F15 227 0 R /F16 251 0 R /F61 239 0 R /F22 234 0 R /F31 233 0 R /F25 327 0 R >> /ProcSet [ /PDF /Text ] >> +121 0 obj +<< /D [ 370 0 R /XYZ 79.37 173.026 null ] >> endobj -359 0 obj -<< /Filter /FlateDecode /Length 4080 >> -stream -x\\)jA`Y@Wkj&%Y%H`<PwrNUmF\B,"pݪI._A]$.eZ|7) ԟ:%`.֝}ʸR }qLz7%@e.I}o=E2 L+;r?J~{ieD>`}Ry&)K/婗yUf^߅OG4~H7gp ){@kRMfdH1%myEDk`;j,zߟ֪HWYP;¢{:;2-^+aBiﭭr];Uw 6C -F`}1&9e)>7ì?p0:a.|Eevl|duh/cV++18e[ꎽ9gmрr)kATX&Ѩ|tj+a ]1o
Tio5!^K!uU8AvLn\ƓiRi}#^Ph5B{Z<Z<_~u)M?7"3D)R([ }Bz?!_0o9bpw4J
1BBd^ɂ?vyo2]~:*!$ЗW|qo -I>5VoejL~輦H*O# S?6[cQ<wW<-fug[ܔR?Y[[fPk,އ -4F}\F3n*"퉋n,3';N3
|۩A AiM`3wp)¾#(yʉA]"SY1R[`珉pUyP] -&!%O*@;=`#`$Q,EʖԿB}OLkJSo"k&ObrfƗ0R`8_|E8
[BOޯG?%q
=1!vR:1bj;S\e}lU
-' 98ֺE%=߲[B/ -7O -TLs ( I:Po++!w}^QܫLNJn*kn.hLVM~AfCf7?anSӞ~LjULG`c:-L[,OO[G7Lt<0S8L=ێ.lKQ#oY)y[=i&|+DOcҹ_wsnCM5'%͊StIpXR#8VS}4S@l"80mNtCu`M61$z̬L> %czik=08I_I_?
lYpq{<sKrffi/CAdü4C 3v+!T,Sdjjۯ5W^{[ (r=ېLSZ*\S9^b0BKZ*k?uc93Eʠ5QYpݍl`cE$!oiS~-{)nSa*/5s1fΙcv{pTM>f$KUO&/tk~T<2'F B/ң)8Raˎf|Y -{y1E`u1%8uh(NqİQP7xuKZlt^[x8~ =m)z?P>lGxח{
ζ[0 -xGgF ~٨e7,hM`7σVQ8Kg^_CȻn_czO]$ykySidI5UJOf,K66U&<1-2Y76;_s{NveW<^vg}u5A}!syw6mbET8} -x ^XdLUdiƪڱ"8KġݠkIMTQ~R;yw4kZ5 -i)}+g*m|ܞ~b:ٱԁAaºV$%U']+H%ϓ+*z_liuURyiO[m% =iV<@zBO5VM&HJmώ6]6U{h܌^zlMrW
tղoD
8UrGn`{N:O -W唙fBv6!h瑲Rt -|~ζ/|*ԂD53k 4ǷXɶX?f ->̣ak5t:D3=&W/<e.O)L d'4XcbS82SGCF -@a`uk9G6#q(72\@azo^{3ӑ-6zZ5 OUbgKjc 5-c#g u/q$nk-`Uh<Zk~3qgJ(cP^vk7RwQ9eUT+pM4eg<A -endstream +369 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 233 0 R /F63 237 0 R /F16 257 0 R /F15 232 0 R /F55 235 0 R /F68 265 0 R >> /ProcSet [ /PDF /Text ] >> endobj -358 0 obj -<< /Type /Page /Contents 359 0 R /Resources 357 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +375 0 obj +<< /Filter /FlateDecode /Length 3602 >> +stream +xڽ\KWQ!,_bFc9)Arp $??wYI1Gz~.J^~\pWD`oo=uqAhwqV i_īꓔ6HRޯ=)
]=>'U|f!w]lW˸
el:#
2W߃7tk|yp'8
ٹ
;P8w:uu)Fney2rӖp/KT8L +Y
_i;E~b:5SD%ٍY6}1":`#j![ti.ڬʀ0nY1$7e=mCR"FȱIPYT# +YWiͽ{W5$ g1e+_x%a,*Gj*MǃPƳ~9p~#$|6c,fAIo)2SrfB(K`dAm6e4]2g- +* + +Jj 4GC;D +{wQ/~}T12$bdKϋ +-s +"Xq?P}0 _g:^R¼W/p>"p NQ3.D34@My,B|W89gu'?Wa5 +ܮ +{DmߊЏw sr09*މpYۉv ;RivHۙFYpH˟̘7;>k%@>15.P+;U:*Ӥ,踵®Ѱpy!sڛ! +" kB+*SxZJݙPTKO{EZОEm7.P+=+?IKA^qӛ?.=j4kJ&o^pZޏ$ +I~PI!5p3 Q$i^wKHro2n$?<@sI#\ +XK{-Y/MsWg7? +/R[qrT3L\ff۶KՐ(;b_*y5kL$Tn9 +h*g +rKZk؆d!kt4_S+=vC~I619+%<EmR%r(RcQ%O83F{S:24"ۇ1XɿЍ`"۸q
+P!ۏ%,WF ռSx܌t݁xp@ +?PRcMGH4?Ϸhy +[Jq%s.T>ޘ'
GNLU'V42<5={oHP[pmUǨDUN(O*e;y5|siBoZtt%E;C=]ЯA0vڊbXFJWv(Gr8Ț&# Gpd'wAp*Ըf]+*z9HgxڞAVP[˂RgKcn-;p^7,*oJ"mqxE9jbNҐ%(+Y[vn2t-nuJLNT=n
B_-;0 p:?R2ү}Qy(WzMa`܁rkg#P<R6.Y Ju?
S=~QZ=ӡs=j8X]AO%
c_vJR X JgyjA +endstream endobj -360 0 obj -<< /D [ 358 0 R /XYZ 78.37 808.885 null ] >> +374 0 obj +<< /Type /Page /Contents 375 0 R /Resources 373 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -121 0 obj -<< /D [ 358 0 R /XYZ 79.37 689.086 null ] >> +376 0 obj +<< /D [ 374 0 R /XYZ 78.37 808.885 null ] >> endobj 125 0 obj -<< /D [ 358 0 R /XYZ 79.37 576.152 null ] >> +<< /D [ 374 0 R /XYZ 79.37 288.09 null ] >> endobj -129 0 obj -<< /D [ 358 0 R /XYZ 79.37 417.923 null ] >> -endobj -357 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F61 239 0 R /F62 230 0 R /F63 231 0 R /F22 234 0 R /F31 233 0 R /F25 327 0 R /F15 227 0 R /F59 352 0 R /F57 361 0 R /F44 362 0 R /F56 363 0 R /F53 226 0 R /F68 259 0 R /F55 229 0 R /F54 228 0 R /F16 251 0 R /F32 236 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +373 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F52 233 0 R /F68 265 0 R /F62 245 0 R /F63 237 0 R /F22 240 0 R /F31 239 0 R /F25 339 0 R /F60 367 0 R /F58 377 0 R /F44 378 0 R /F57 379 0 R /F54 234 0 R /F56 236 0 R /F55 235 0 R /F32 242 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -366 0 obj -<< /Filter /FlateDecode /Length 2801 >> -stream -xڽɎ>_Y,.ڭk߂\CRDv?#[jgl)IŋZ/_.[vgV]UJ@lREכv骁.>z)KօݖBIh\Vx`q]gWx x"ꎿLgH=%yVy2ë -`S5|g$>IukqKBHfPۢa1@KwdQ -gh.]Qh\Zm2Ӂ Ga{l .k!ar2$Xֽd~>u=u:++Tb'P#>-d'=^.r>ƹn-zC2_Tݓb@Wd1%{KJE:>-lEg>nKyasA,Hp6e.9sUi\pdj cn92pt'}Gi\ũ$'=TSWYӮwo sqN:%;#Jfu -.
m'ߌՑ/үMk,PZ6(gP.M}l -$GTCS%";:e;*!ƈ-Q^5՛f^d -Bby6ZvcǙrHUʉx_FEfHX
PR{"䣮`+lA}NȚՔ}Pip>~w{J -G7N&!`(C=£f09>,2
b%#y++ɳl{R*a_Tb=_"բ'bEOL:~JR֥^qٽr=-ȽzDc3y:Bu\hA`A;g/k@ +382 0 obj +<< /Filter /FlateDecode /Length 3185 >> +stream +x[K$
ϯ?0DQ/1ִddoONC璿0UEb?/_B_s4^"qLтq-._]~rOosN@W9vz=7oJ!Û
p=ӧz癩z*<Mµ-ҿO
aui/靧˛?ŗ8;{/&u &bRwO'h%
!9sȉIF*aIZ%iG<FمOO[$V%[AT]75@+]oi̭QI^کL:#I
LJkv䥒%pKo9(
C5p8%gaϫi7UJh[dd4ói",tm0CLK& +ц vGJ؛hE@uQ_8ƝIM),ImX M +3v^'Nb"%^+= +\[Exvo֮@gкʶnGLEgX4̐Ts J$\1I<<͐&Oo2;QV0GA6!`0àMK$6*+Ŕ +9 +)#/BJ]_:buI($O/&y*ڤLV,lV,oxp`x|̱T0rgyVSVTo +V>GM<*2Z;Yn"dNcwGHj@ږwB.1&oےfkX)K<[L1YeNsCS7^-͕>O +%J>Ǜsg.vsK:HLҪL߿a= djȃKR&)qÞ \ +QΏm<h<ƛ*b
<rZ>W e;Hʍ[93)?٥nQ.EZ+$7/T)GWpd`H+<3icB(m[QZs\_~!Z\//?3\e"]5VXj] +rxwT@;2q9kRYlJЋ7LB#bq+54W#g$>BPlzwӤ[a+AGPL}Z2w뫧wѣvʨP
(G)Y(tEx-T{I)xt6@g(ۖ}z$
h(B~QB23rӨ.E͞.> +ʗ' +;Ғ!0kn +!!f>FFחӃ?Yxǂ9#eǺ{`q74
5ttTWJGMŶCH +Tf>˹ TY˭K"Eؙ3Jg'L44.0}MOXLb^ىVk\\ץ
JI9zVW"pRi`KiYA,쑦vNk"vPc)(UyUm+q!(}2݈})~.E[HY,`UmwzGؾRMxo*?rx4'/iio'2,d +WkA +r)W"r\[:Bʎ=|tsoտ6 +[cJ6UBũ}X$\K{9Ԋo)=*)>#s>7
%`l66[zyd +5-);HR5-㣑ή=pvs>sP51al_Nl}M[cSv;-sV÷=Gjm0sFmNJ}?ՄU&[uRxs=4Ozystؐjvԝ8<J(NO?8\yvVrU2تF6?Ie9qX;;E +.[(>nnprgh V!9s@cP?1M=;{Ro>PƥX{,t)G~(2"/( endstream endobj -365 0 obj -<< /Type /Page /Contents 366 0 R /Resources 364 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R >> +381 0 obj +<< /Type /Page /Contents 382 0 R /Resources 380 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 330 0 R >> endobj -367 0 obj -<< /D [ 365 0 R /XYZ 78.37 808.885 null ] >> +383 0 obj +<< /D [ 381 0 R /XYZ 78.37 808.885 null ] >> +endobj +129 0 obj +<< /D [ 381 0 R /XYZ 79.37 771.024 null ] >> endobj 133 0 obj -<< /D [ 365 0 R /XYZ 79.37 564.05 null ] >> +<< /D [ 381 0 R /XYZ 79.37 612.864 null ] >> endobj -364 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 292 0 R /F15 227 0 R /F62 230 0 R /F16 251 0 R /F54 228 0 R /F68 259 0 R >> /ProcSet [ /PDF /Text ] >> +380 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 257 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F68 265 0 R /F56 236 0 R /F71 300 0 R /F32 242 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -375 0 obj -<< /Filter /FlateDecode /Length 3829 >> -stream -xn$1WLhK(
4ؑ͌~gţ=3ٍhfdWy_^^tUio(|!O7a;%So*~/ƻtҪ/:ć+d|ʣW/RB1YgA - -z!I>7۞!⪽<h9omd*S$L<04u;chM:=zS9NGGC~3qw6MJXƠ
/eFFK
i6ހJɴ<;]"wYkN\=]T4)//_R -uA:X6mxp}/Bե*Ah)kl<5ys&nc)Ao{5u,5x7}~6t(7,p]oHÏoHrs5RP̫U`1X-S,@wOCR$g#f[J2lD,֚mx1X|5ӜJ -XxL=wk+TRtGoYMPk{XfH)@~|œQ_N{ՄWJǺ\X9Jtq/I/ --bܚvfHVEpneZѕųqurK~Bx"C=8 -1TYqBcܣ?2 -jC8}6 H&J}3Z03Ґ^ -^zSکծӥM}41&S 6S etSd]ySe1莦TƷzjZڴRGKA~ SPwI%g* ->p IUMKv-;\%
8DTI=R\c_9v#ľ3M -_tYroS\YFFZ6ǜ nԒ+5hVuLofM!كo]!{i)㉓Ŀ<*ѣ4HzB-:ϳ"7Cu#v2vm%地d -aRgtw&ͭ!}pEЅF)`!)c9"wL65"; -hT/tU>:MZapݑ<Z^i/UT:=tzCj+ąWpo
;>4F=tGA-oj7P=[9Cc]WBէ1o%Eg+RV
$7r&ƶ_1$=W rJ*R>7y]CC`( -T'_ZP͎|lyVp&}t`믝+=۞ \Z\[)z{3r~M9wN]:|5-x0HfXU]IT-=<0$a,2[ϐƺa nOf;`ژcUn">7̚]UEH1:|N6\#~^/ڴ7Hh=JRnx8]xw8c:Ad=+\}EPޫ6~dd,2%]O9%CxB!Y> L(p?uPɀ5+$C,neڤdWTt;ݰͱb`^P̍4M#m yz#ڠuYGHT;\oJNX#&k>*N* r89ܶIKek қ4uAL +386 0 obj +<< /Filter /FlateDecode /Length 3230 >> +stream +xڽn#YÀ5HNC"dwe{r&b%/˟^?_~+w":p.> +/)!W)MI)qJ㧹i4~<^4kk]?x'esf4WKzf(b;"zOk8]YgB>9ڀp{EXý°0dXCL"LJ ck?%kZ6(^KkJ#>0ZmCo n +с! +vG+IȶH +9"kWl8}~vtʌmK?&H~IfdrgѷLo%Y%9CS#.I +5sp2ϞRa6 ?mʞTºx\1Q8uj[@ᇳN
+Ώs' i;þ,o:UCvrC$A9 * +hqxyVOh$!Jyc<<]R&g^${Ej,ԡ$&5=pCԒ!5%`E]= xJRJǸcp{cSTSلg9_PZxfy ho~1PB7rn%v3.;{\v® +[g'T)70ħwJCyՅgc+望,tkbZ99{SX@#U3tlUL/yO;0:mgGŚ5nɛG)v嶒<gs'QʕY:Y;^ա`<ABDE('iVus~EmXTmpיnkGLSGLR+3606u8'fS̤hwwy-SdyP+=CI +i0RZCE$@0lSp/t岬|K62>tSڝrxW,[h]I4F&KVVS=e$+؈"CJvHtԂ#?N1{3SqPRwIPP8#1E +=@` +oȐM_KTlƐ2I,ː[J`lPv_F>OS<<d5
j Hv+vgZu$Њ69WLeΚ7m[.^E)O0ȅ:[WSd_RV(Ҏ;AFJf
?({k1ߗՖasYc3`FX$ga~Ǵ|TnNgí\[]Ν)x?[YאvIڏ`Ly6_B3c+J7ᘯbeD&kįsw,==T&J}pc0݆`>dE[`6]yZ>yHCqc3KaeP2WN9 n6m!~rPUšv3,qz.u <r6%WV3BG5!pP%nJ;`ll!ot%Z? endstream endobj -374 0 obj -<< /Type /Page /Contents 375 0 R /Resources 373 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 322 0 R /Annots 377 0 R >> +385 0 obj +<< /Type /Page /Contents 386 0 R /Resources 384 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R >> endobj -377 0 obj -[ 368 0 R 369 0 R 370 0 R ] +387 0 obj +<< /D [ 385 0 R /XYZ 78.37 808.885 null ] >> endobj -368 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.041 145.137 174.015 157.092 ]/A << /S /GoTo /D (subsection.4.1) >> >> +137 0 obj +<< /D [ 385 0 R /XYZ 79.37 771.024 null ] >> endobj -369 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 255.622 105.836 278.098 117.791 ]/A << /S /GoTo /D (subsubsection.6.4.3) >> >> +141 0 obj +<< /D [ 385 0 R /XYZ 79.37 158.508 null ] >> endobj -370 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 149.527 93.881 172.003 105.836 ]/A << /S /GoTo /D (subsubsection.6.4.4) >> >> +384 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 257 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F68 265 0 R /F71 300 0 R /F54 234 0 R >> /ProcSet [ /PDF /Text ] >> endobj -376 0 obj -<< /D [ 374 0 R /XYZ 78.37 808.885 null ] >> +393 0 obj +<< /Filter /FlateDecode /Length 3592 >> +stream +x\Ko$WX,
vV8ć䒿*dH-V3b_UՒ\ß^,b`E7E]"8O>I93}n4>3Dd>R(5ST>tOݑ*˕G(w('':d^b>GS%F}ÿ +K
vf5tQ +zmma#TsM\,в<HuPP)" Nw|#bKW4|[#Y8'F~Qu|q`iG4[ZGdK2"[bAk%SGz_ǴnaF4/| + +%2 +2你{4E$cq6XE8ϲP <$i=|B)V`>$A.\ +IY.\96)L,<;.2Ϫ@ZLfu#gBGV#t,)NE0(tnyI-<za/
P
B`3KQau5NuȮsz<VS"W|pƤRO$j&PmkpGA]:@R悱+/Vn|<.kt%RORa.!"ҟ9X
+=XBU@9+}qW J*)Id\Sـ,+!^yEGNi
$Qu{u<_`v1nYh)붮*]G5Eb_v2&Xd[*v0FZ@g{x-ȻÊap5.(9m +R#fG)IFOǥ8,{V[ ۯ㭖DYZlGWV%eLJ\VSq:绊Vh?!?IXCb!p-Z2L](,/Uꊭts +ØM|:Ӻּ#[|ܼ6Gv9M=Cr l +=GNh5Jɲ1j)k1oDn PFSjh/9k"x?xp̲$== +9CXq+3vYI6!%TddkuĿ8jw#e|&MwC7Bc꽡0(ҫ^06Uɽb:}\?~m5ܗW +$KuUGa}']߁SnqGc8g-/gc4iJDGxw~v:U+Z'bM>en](Rj3p[dKA%[V|}Ä,:a5-,Kk1e?riAۙ Dփn*PBqn_>)8n>Ќ5.]>dG.7pst|w +7`\[peL3A><
刄&JN;(U5Qy:8'xe0Z(^l}hLû2F5!*QFͻWLM}#QR!x|sVP
&g59
=*;Sx=F+
tommQ>7{r_>Wͷv$=7N/Z-Q^%|3q][$"5gֆxe֪ks`.7cc[{z^#qx}-Ge +QgolS +endstream endobj -137 0 obj -<< /D [ 374 0 R /XYZ 79.37 703.382 null ] >> +392 0 obj +<< /Type /Page /Contents 393 0 R /Resources 391 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R /Annots 395 0 R >> endobj -141 0 obj -<< /D [ 374 0 R /XYZ 79.37 454.69 null ] >> +395 0 obj +[ 389 0 R 390 0 R ] endobj -145 0 obj -<< /D [ 374 0 R /XYZ 79.37 300.244 null ] >> +389 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 491.656 592.233 514.132 604.188 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj -373 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F53 226 0 R /F54 228 0 R /F22 234 0 R /F16 251 0 R >> /ProcSet [ /PDF /Text ] >> +390 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 580.278 101.955 592.233 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj -380 0 obj -<< /Filter /FlateDecode /Length 2985 >> -stream -x[Ɏ
W(c
T*Ƀ>9d[feI<+3#.d$_so/܅x4pyE~Rb`܈or!o|+N2r5Ip`a9H\]_o}'枼9Nck%Ly=V>)E^lVՉxF6_ʼB7<3hIK3aBvI&<M 㽸Rxq D%kF@r8㢤'gVD~T\N
i0g PiI4V eCk(k -HK
ov\d~kʯ^dY<[&<=\T}
]*˄.^iFhb dmq1eTk&&uby<:\Yu\1[/_g@mZ%fS(+n.lw$[2(Pk < -yETըUT9qr͔*iG*)+U8i.Rתr/܅PՆ
J6LLԨ;+bfBB*[Ť;廷ZQ@0[~5㢨݄p$|*K'^夦EXКoyWOStSKiWM -!!l( -IAH0͡"oN)l9ea,]eҰ"e
SIIVIQNܥȲsņ֏̈%.JZ{$!y'\=Ҝl"*D^o-A@b/:Vp|}}} aֈ˿~{۔h<חw:,'NXws.*i Oop(FU#9+G
2_n -BB־4$_RHW%I64Fit
w焴ag;D
viaݟ<zJ_jթS&(k -oimF:!6OL"!6a`w٨Yڨ:M^'hn {rP84 A>RAW -kJ3P_/:V4ƯP+{JZOi!C%<I9Z0>/x^ +394 0 obj +<< /D [ 392 0 R /XYZ 78.37 808.885 null ] >> +endobj +391 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 232 0 R /F55 235 0 R /F52 233 0 R /F16 257 0 R /F68 265 0 R /F71 300 0 R /F63 237 0 R /F56 236 0 R /F32 242 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +403 0 obj +<< /Filter /FlateDecode /Length 3835 >> +stream +x\KWL70`[{JK~"IvKub=*R+E{I?uO|ڟupQۓ2wOA8G?"=ˇOWOQDΜ Fh9%:}zEJJo_~i|ZXPR +i@"A'rԧZ~~8X>ˆF +;3_WOQ~XFLZY'R'@9N(^[ZT_f1F8N6j<LƚZS7g|{Tm;ef]R~3w)^P#GDng$Xh/Lkyŀ*i-YUR>bׂȭGa9[F邐:ב0'pAsRtr4O ONDB +Mm W4S+NlK; 525 +5P3rtOP \j2`P[=7Xha'{k->Âk{l3=m"h!λy.B4ѠVbhg 5M!85'(KI^u tާx] +X?9ܣO.qZqUP2Q@i@ģYFan +?ދZaB|$+'F"O0)IB YL k*|'uX({<=f38^.ZoѨ1[c12$b#M6S6
N*b}g}GĀNFLyWƢY-sysC5ܝ5:woNVPp}`6A< +yXD#7|7%"_,`Ui?OAXVH!L81֨9$V'lxHrڏ9מgTĤ1ּ~Ԓc[_]ϵ©P-%x'q~9bB +A%D$"".@dHQv4'0[0M\&Ƞ~Q'%FS +Re?)BeA?EKJ!oRIE}LF*ߌ#|KQRx
CҊfN.;Gst2'f=1mVZcx-}/_g63qy3g5TWb|鍒ȺU!u'-a\#)GF/zQ84 +L$K{XTH$q#Q8'GV`WNMq.c>TYGUG5s37C2S9E:;vs_`!ܖ`-6u<KYp=Q;SlDP6_<2TiN\y79_'Vkv)AȰPGӨϣ}j#DvWdiu̦cMNh\(Y_M:#B`^]1JX, +B^o+|졶B:~^1a5@\21*tPW]mYs
2:,ҥ23?2C:!_ͫ[P)Fʧ!%91lF#+HO14[m@=dsj;m˖wj;[=HbۇՁ@!&{X#)rB@"8c'V%d[H +9ZWN 3X2mM+&ygϠSfiA<8kYi{әJ +o(ҝa0>f[&9y)[ޥ,Ͻfh=,Msr5=oT6ۧ%D´s9La,k
~ױ7- (`̤{MƔ7HjK0Rivׅ)I4/;ƅߩ];x# c*SsHDp혎]U8de3M`/"iH/$Od}ՃO'9P[-W\Nh6H\>˅l~VH#8ި0i>iaDdSBL'jX1zъ!t>-_4/oRSl0J{tFFؠTuFR*mV+lF`dʷ43>207su]df&"*--i<qw5 +]+y[ +wm;ѐni~rmR:ҲSdT\4\)ڜ
#`j%zn7ҍ%( +xa|j +
Ǧ6#&hToq
ov-/ǑZo\iU͍`X>Q?Wabjq>pz_Myf<VuWW]}ah"]f:ÇS*<[
vd&ݠ&I1^tչ4\c:p^ʆv#[\Z:-l4̪wS +2 +cAߖgV7U`:JD}G(Qgt4}:"@/\_iEmNv*j}Ϋ_Zñ5 +}v~TTkR5 +ZeMcHA80ƢX5s;EMB endstream endobj -379 0 obj -<< /Type /Page /Contents 380 0 R /Resources 378 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R /Annots 383 0 R >> +402 0 obj +<< /Type /Page /Contents 403 0 R /Resources 401 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R /Annots 406 0 R >> endobj -383 0 obj -[ 371 0 R 372 0 R ] +406 0 obj +[ 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R ] endobj -371 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 499.407 700.341 514.132 712.296 ]/A << /S /GoTo /D (subsection.9.1) >> >> +396 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.041 314.542 174.015 326.498 ]/A << /S /GoTo /D (subsection.4.1) >> >> endobj -372 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 688.943 101.955 699.613 ]/A << /S /GoTo /D (subsection.9.1) >> >> +397 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 255.622 275.242 278.098 287.197 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj -381 0 obj -<< /D [ 379 0 R /XYZ 78.37 808.885 null ] >> +398 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 149.527 263.287 172.003 275.242 ]/A << /S /GoTo /D (subsubsection.6.5.4) >> >> endobj -149 0 obj -<< /D [ 379 0 R /XYZ 79.37 662.029 null ] >> +399 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 499.407 190.663 514.132 202.618 ]/A << /S /GoTo /D (subsection.9.1) >> >> endobj -153 0 obj -<< /D [ 379 0 R /XYZ 79.37 622.186 null ] >> +400 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 179.266 101.955 189.826 ]/A << /S /GoTo /D (subsection.9.1) >> >> endobj -157 0 obj -<< /D [ 379 0 R /XYZ 79.37 293.752 null ] >> +404 0 obj +<< /D [ 402 0 R /XYZ 78.37 808.885 null ] >> endobj -378 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 227 0 R /F62 230 0 R /F54 228 0 R /F53 226 0 R /F71 292 0 R /F61 239 0 R /F63 231 0 R >> /ProcSet [ /PDF /Text ] >> +145 0 obj +<< /D [ 402 0 R /XYZ 79.37 635.044 null ] >> endobj -388 0 obj -<< /Filter /FlateDecode /Length 3376 >> +149 0 obj +<< /D [ 402 0 R /XYZ 79.37 456.987 null ] >> +endobj +401 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 237 0 R /F52 233 0 R /F80 405 0 R /F61 244 0 R /F32 242 0 R /F54 234 0 R /F15 232 0 R /F56 236 0 R /F55 235 0 R /F22 240 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +409 0 obj +<< /Filter /FlateDecode /Length 3451 >> stream -x[n++7ـa
xddf"G"mQν0lb>l1]x^ąqqSeR.keQ"4^/o`>LL|r|feaV_>/x͔`܊r.o+ ?*+ -5R0sGTw#gZNc9ґHvne+B?nZA${6&m,p״ 9G|HJ0-Mo#vҹ[6}>dJ,C7FcH쇮S -~$Zlz5~ݠׯik>֦+OG#ao8\dPStp(%4Q!dBLXI5[lkR -r:iL/2Ȧ7ͼAIcMGعǚjaE'z%,@AIHċx9:'9eerܻZ.ʛܨKcK)qxפe%r(;^H1 -At;):s7S<CF@T:L4LpKc1-AQ:ɬs;{CR}2ŌuO3cToϰLGT!gz2X"s[ -B˫IDHRiuem+<+K"\܃KHVҨAQUv%U)e>q,J[p.gBB#U!?MUrJuIJQrĊqd~./
@0BR2>)sByA_ӏJډKO#rJ"ʲҋr%W{P.:>|F2rWUiEzG1q*2pO]9sU+{˪NJTђN`9q@6o -g_ӓuehwzQyK_+1!XlG0G<(0PʕE Ҹܒ|.Xy!`u[6:qk.rꖑ BqlM6;Xn4*uL_>`B]lSr4=mJ'\fc<ly)C8G YzرU~R+yTː"b(踇9vdLg+dFJG0`!18U91_L΄C_VL`p$,Z9e - -au<0:ca -29P@ xNzY~ -ᵷ;b9Te+]i -/b;ngsybH}戄<ds}"<3@Hޒ1_Q/Sl4Cc4abEt1E농δ]{T&NÒQ!@FFy9R a~@Y_7fS|oOQiOWr\ -_!;PDs -MVIO>HRkGS 9[jƣ}8Fd_f -W1*p+4fer5H%2_ <W
D%6XO7`8<T#26OP/*| -]+x/,Xq
CAW`d`#+ #_ALG[mkD6cGzBeA>ט\(~CFN"}(=Q2\sjMCAžTĬn=L&*1쪾w?^H -)J;ww3CoDR߉$.6[%؞><{a -XZQg,S}4h)13+zsT©VN1L-<Vګ+,M:}B8 x7ݣ [""څ߃h* LǯH -IG\2 -]śU'(.<jȲyu" D\н6btB?;(sxەdJչfr53(`|3mp%½JE_ü۱Yc/_?_}E +x\K
?DQ/ +oD
ooffehor.Os?o8;>5hR,ddV* +Q=k[yV~T?2Sވ
Ir9ڰH^pnns+52ogxVC%@1.uG?gۀ̶< &+8݃륷=Uүm"
:
:/5>eb }40Nus^9J!Y"ܛAxĒΑ2ma2
&wʞ'Li5J
Uk5uO^Bή>,F8V껈m4Qz^
ŗRkRiw +#QzhD]GrY{s|fE[WJ1ŋ۵!IÀY)l'J۬cv2^)#V<fդ'%*J
3x +x?̀G*%vc +U{F~AXi[<(b>ah/ك]E/;>\k +^0''oodi)639n~emaOeC5Y^ќK= Єp;sf8Ŕ2Q93>%F%!M%!{JJ `JHys$QJ +jeC>ػBsle`g/#\f-/:%d}#ۨ!m
Ќ}NyO`o%P 1?C.YJ"8DU2nNg%+˜doe矨9)'qIni(;vh=pe
+j:h,N|fuiO'02N`g40Uza0u(ן2Z.%ed8vlnbۡ%\
wY@$fV +z]Oeac~x=" +ٗnsh2]z|CVCKPO)C1l7Np\}a{xUQGh|P9foM^ÃVCilN5Μl{$'v=5 \@;pT)Mi9SJ^vܪl endstream endobj -387 0 obj -<< /Type /Page /Contents 388 0 R /Resources 386 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R /Annots 390 0 R >> -endobj -390 0 obj -[ 384 0 R 385 0 R ] +408 0 obj +<< /Type /Page /Contents 409 0 R /Resources 407 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R >> endobj -384 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.062 237.726 453.786 248.944 ]/A << /S /GoTo /D (subsection.6.6) >> >> +410 0 obj +<< /D [ 408 0 R /XYZ 78.37 808.885 null ] >> endobj -385 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.514 237.726 478.469 248.944 ]/A << /S /GoTo /D (subsection.6.6) >> >> +153 0 obj +<< /D [ 408 0 R /XYZ 79.37 771.024 null ] >> endobj -389 0 obj -<< /D [ 387 0 R /XYZ 78.37 808.885 null ] >> +157 0 obj +<< /D [ 408 0 R /XYZ 79.37 734.627 null ] >> endobj 161 0 obj -<< /D [ 387 0 R /XYZ 79.37 284.251 null ] >> +<< /D [ 408 0 R /XYZ 79.37 399.661 null ] >> endobj -386 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 231 0 R /F62 230 0 R /F15 227 0 R /F71 292 0 R /F68 259 0 R /F53 226 0 R /F54 228 0 R >> /ProcSet [ /PDF /Text ] >> +407 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R /F71 300 0 R /F62 245 0 R /F63 237 0 R >> /ProcSet [ /PDF /Text ] >> endobj -396 0 obj -<< /Filter /FlateDecode /Length 3273 >> +415 0 obj +<< /Filter /FlateDecode /Length 2789 >> stream -x\n++G,j*wY%,H6_MZNf`ؒb=ͣ˙קx˿^ĉd=SdaR_~A> ` -(DE<8*hD\ͤ8&gktL+Fk*Ak-KTDGj˴tQHʟ\#㳹}l*4n6"?5-tmIk75Oa KˆY#B'>y%H=үj' s]X&lf|(ɔC6Zq^akB0dE]M?7eiLJՍ -J@mM -v" S6d*ᙝed0 -Dr*ЈQڢF <fWNxqU\G -m 4VYKU&WxԃBsF)pL`[
ȯbⳃ?}y+&w7iCy$/ya̹uav1;:KU^U]?iLڵVSk$%`TyzN 3^97Vˈ&gs.yzI@FO=JiE 9o#c|Mq$j\7nrPzj&ix|g(z2CR\8 -irVYw^f;RU.xcQjj,1q<TztPQ6%Aos:'ȱA.Sz͵TE{LAWu-4c -RIٳ$I<WYv{!Ri0.P\4L;-Tzx~OPS -6d/ -pu9`xgy\7UH<Ӓ=19c'\Y>f5>>yf2%!ߊyȕiW'rMƎslК)O`ϯI)hRd4)"i4).6MAp.)7FD4vӤ4F;hRd
h0| -M -XPQxO̓]/@RTuL)2Cޜţ.j&Kfΐ"KaH)jʁ^:CjCRCR -"&zt^< -L;'`(a@A߾[8Np2{&"V7Fkoe[Akb4<P0£ -l#}ⵠċ3/G\刷h?Vre7~_ksNT>)|ѓ<' -sBݘimW0ngthdf3ST.*!KCŎ&`b=(ղܓF*.@R -'ҹMʼn]Sk_-$t.G'ǃl)Эsy`N 7hӥhq$\nT9Ded)^)7鏁YBohCLx5`OAIzS7Tj8&)ce$_)+oxҴ,`~
NۏE@0:K)gZIz1B o2-2TLC':N<Xg=+ЍxXlGm -D{$_0<_z~ɥ'y
1MSKk),=aAZ9Zc4ηj!AJ@Y6/V4^|>orp1i=?>:Ͱ=9ut=~닉דVN;}onn[=Y1 -Y +x[Ko$
WF`pOO-i!C!%QRUWIowWI)Rpf-YV'pX\`- +ƭX\¹ԜŹ +C> +*舽MG>kfI|dZQ1h] VׅL
(JgtUlMJtR"ޮS'לrKEDj<6fRvlt<g{\#31ccV6Qn'+SϟO?ޟ3, +Sqn\ +GZ>jnrRAT֯fT+v?&i/1377a8tVUk-Dn +G)wTA1c`4xFK +"4~쵸Z(5ݸ1fi"8n}%֤S
'GYؒA|xsG;<//"7LkWmn%v0M{&EvB]J]5<ml2'\JX=T4NWmН{GioIk-:YV0U9M7N15nYAБN|}ClB5ekKiqDAPuy܂ZpsLnؒPݓB2F 泪?<oT`C"_lEEE%GSlqxK +2縹-RFzxQBoE4rKF"ﭩʯ;nqlob&OPl;=Eڙ<){xB=w/4QEa!y]qRq0@`$(5vќt?H\K endstream endobj -395 0 obj -<< /Type /Page /Contents 396 0 R /Resources 394 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R /Annots 399 0 R >> -endobj -399 0 obj -[ 391 0 R 392 0 R 393 0 R ] +414 0 obj +<< /Type /Page /Contents 415 0 R /Resources 413 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R /Annots 417 0 R >> endobj -391 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 298.339 289.954 313.064 300.953 ]/A << /S /GoTo /D (subsection.4.2) >> >> +417 0 obj +[ 411 0 R 412 0 R ] endobj -392 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.785 289.954 335.759 300.953 ]/A << /S /GoTo /D (subsection.4.2) >> >> +411 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 298.339 405.171 313.064 416.169 ]/A << /S /GoTo /D (subsection.4.2) >> >> endobj -393 0 obj -<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 123.166 69.122 252.62 80.579 ] - /Subtype/Link/A<</Type/Action/S/URI/URI(https://dejavu-fonts.github.io)>> - >> +412 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.785 405.171 335.759 416.169 ]/A << /S /GoTo /D (subsection.4.2) >> >> endobj -397 0 obj -<< /D [ 395 0 R /XYZ 78.37 808.885 null ] >> +416 0 obj +<< /D [ 414 0 R /XYZ 78.37 808.885 null ] >> endobj 165 0 obj -<< /D [ 395 0 R /XYZ 79.37 324.305 null ] >> +<< /D [ 414 0 R /XYZ 79.37 439.522 null ] >> endobj -394 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 231 0 R /F62 230 0 R /F55 229 0 R /F15 227 0 R /F71 292 0 R /F79 398 0 R /F60 238 0 R /F32 236 0 R /F53 226 0 R /F68 259 0 R /F54 228 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +413 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F71 300 0 R /F63 237 0 R /F52 233 0 R /F68 265 0 R /F54 234 0 R /F15 232 0 R /F55 235 0 R >> /ProcSet [ /PDF /Text ] >> endobj -404 0 obj -<< /Filter /FlateDecode /Length 2802 >> +422 0 obj +<< /Filter /FlateDecode /Length 2638 >> stream -xڵn$%
8 -pN =Ii^Tg6)5HigP7>ǟ(tghGlmv2kA&~ћ9<',:_gͧ-.VYw~k&\<f|&:i`m:,n;%+EEK=oqt̋L5K$"`k{foiko{֧~H2j`mOYIObMC@ELfdfn묃BO0huqV""ǛQ -JD_&fI&Bm+ı~4IFð/S1ԄGSuhp6]Wʞ2E~hH+퉏͵L]xrUY:n?ĠE__v0 l`d7ҧfPUiAxjZ+STnS`Wv}ն5l-e6GLA,ՌԠ.$'f,LSvK3}lT&巭'snXb,zGӵ`_Iݔ8 -t$l7Vb_6KG&xAZ_LV32BT7%DV1(FrRDH'"'r0 XF1b-;dOwUz%@<HY02A*NJ,@H,z -@{wLuQ^oGr 'pjbd|$ȖȪ`ϊKQDz67ن'LߋA^^{[ ZV$W&IA),,%;seyg
eF;FDd%dDU
Ęg9 -PvвxR}3Q$ZPQ\,>O-_ӷB::]o3=dP|.Fx:9/
Ă -5j]kLU7Pߒ|S~Yga־1>kUg%bݸ23xnV=}k'>;U&>nzK|o|~@G%Ґֈ(WyvW0?
/
B'ڪKr_CT=smګK*2Шl[k~;j]2͡Re]]V-BegPsLy}mZ2b&J/{`5EyhZWOAjՀv&ìAs
4ge
~O X
.eF#H7XO?CO`ڈc
&ݞ~jʍkn>[Oj,LYмt#D9ڷ鸹s\x*~H77nf7_U#ٟiƲ杆.}f8 -ϾmF,5yQh))b::h%@Yqz᰼h0EJ -O(GC6dk
nslu[$z)xJ2 Px۴vҽUc<mexK3fk^;=E -(fM^"(;:fPOI\Nȣk<m^pMKFcG +xڵZKo$
Wqh$z=@r[S!Cr`Qng(U<|X>,X<<BJHN(vRZ)QR?~B@uq}D+(u8RBȔf~"_6dxT(N(_CEp)B:Z}wR@7~{ݸhJc"YtKHƗc=EzJHHR$6 LnHtن,P77:H;;*of^<s<d//ųVG5/V<WvV1m"mM{=UDbOK/YҨwzմk^/si˚ӈ蘿X[q>,t)rS1=,=0g61J鑠,v%lVі3aКz +-xeΪhM# M tz0PԎ;]?h/]*Ȱ;ԫ֙d)zVM32^Q稯юLvc0kZ:W濤ȿŽ5=kg DZ5PhuC`!|}F)#Bܶkw&qc?uj..|rmMc+
Jc +u.J}'8fYWtZJѐZJ+q^45]aNA#HUs[1WSV2luZl۾[; cVS8KQz+bt7=g_GR; +ct(H'ha&䙏MFHie
]lL ͯ{}>O({̧3zrϿhj:ET1O&3<sygӹsJ'r;; =bjMfc,XFXe +<Zb %+OEI1F-6c5R<9} Ѹh
\ry
EjJt3mgK1g:3s +TQG
0ҼWWF%!ETx~_ mD;0I+݈?ԛi
zntXzӪU3 +eм}6;w9 endstream endobj -403 0 obj -<< /Type /Page /Contents 404 0 R /Resources 402 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R /Annots 409 0 R >> +421 0 obj +<< /Type /Page /Contents 422 0 R /Resources 420 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R /Annots 424 0 R >> endobj -409 0 obj -[ 400 0 R 401 0 R ] +424 0 obj +[ 418 0 R 419 0 R ] endobj -400 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.827 124.341 481.801 135.748 ]/A << /S /GoTo /D (section.7) >> >> +418 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.827 311.588 481.801 322.996 ]/A << /S /GoTo /D (section.7) >> >> endobj -401 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.522 124.341 509.477 135.748 ]/A << /S /GoTo /D (section.7) >> >> +419 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.522 311.588 509.477 322.996 ]/A << /S /GoTo /D (section.7) >> >> endobj -405 0 obj -<< /D [ 403 0 R /XYZ 78.37 808.885 null ] >> +423 0 obj +<< /D [ 421 0 R /XYZ 78.37 808.885 null ] >> endobj 169 0 obj -<< /D [ 403 0 R /XYZ 79.37 347.746 null ] >> +<< /D [ 421 0 R /XYZ 79.37 534.545 null ] >> endobj 173 0 obj -<< /D [ 403 0 R /XYZ 79.37 310.353 null ] >> +<< /D [ 421 0 R /XYZ 79.37 497.601 null ] >> endobj -402 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F15 227 0 R /F54 228 0 R /F68 259 0 R /F91 406 0 R /F90 407 0 R /F92 408 0 R /F31 233 0 R /F22 234 0 R /F53 226 0 R >> /ProcSet [ /PDF /Text ] >> +420 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 237 0 R /F52 233 0 R /F65 238 0 R /F15 232 0 R /F31 239 0 R /F22 240 0 R /F54 234 0 R /F55 235 0 R >> /ProcSet [ /PDF /Text ] >> endobj -412 0 obj -<< /Filter /FlateDecode /Length 2816 >> -stream -xڵZɎ
SX(j$sr -j+UuضSDQq0_$t}Y,X.BJH.^,% w7zg_')!!exk뙶љ
t2]MWy<-PkSԝ;̽zY%ltMėNcH(H?$&)bJV$^0yH-Rn^ċ -D{߿.<
O-ҏ>ḶdI%NG0VXO"Wa.J Io꽀Gm>&2@4_ ->ID{
@:פ+O]!=eg vd@hts5Z8$5OB<^Xz&c}H4<Y&3_FL턗K7.No Yy^K2]9;'YNCº5AcMPCm{"N3>u3Ucg*"A5Ʒ<8p5Y%_ (9"z]s~>*N/ZE))"m -ݨX(kmcoܚFlqg)sD_~ej[7#$E3ӨY"KlV -2d7{HQ¸s~b5$,xP{nW߸7w1)bleD蹴ܙn3W~L w6qn6~,ʗ& -ܙkzJJ -:EnJ\27Uk7]X;rrFEğg7U"Xha^^ -~.kGRkقn|&^,21-n?[^krre
Z5F!W -jZ;Fg $+9X}A $a-(nSP@ZT!bq2HW[pQy{m>ѐ}AԹ_Y&ձXq["[%2M2A/ -%@эܞPd~j+_]ZWҖѢצժ\zmtU CKvW5̝aUY#;zOi:.Ĝ Kj)~Pu `)ѩ3qCDxޘo(3BVܮzԎ'k[ &Ƣ4)<*"WSL]> U+]ex&T2-ykt?ǯ}-NhDPv5׆<j9y1;Jg@o;m_<b6x
@5q8TN1X;y`x戒& -{8}(>i8>ֻè.Oz;s
!XamwD^G U2AO'&JG$U(A<akΐU#ko,iwb +427 0 obj +<< /Filter /FlateDecode /Length 2742 >> +stream +xڽZɎ$
W,Q;P(A9x`R"2k7]HQ##y=fE)Uۓ_E]|_SB:uyg)ͫ6H鶗oJJD _ݷ8\_ioqܤW8GIc{^u$͟4fǺX֔\omZfZ5֨_ƹk
oE){":pfa8#U.Xeia%SY+dгlq+ +pkO&tò;6kF\yr0
0CvߴՂФlxF&l|xRs؆Djĕa]9YΌX*N=6ZpU=҅Ѧ遾F84kn6U>SVvSmh9 TR=%v\<X$8pė> .ygZ"Fʽؓdvxw9wj%ٟ[1W 1%T?Zhd`2JYqXu8e,QN&f3j22j6Z{via ɻip@wМ~eJB9baNX-QohDИ +eP*f + +14;Yl=֡F,wwɕy0Եyc `e1sJk^Ykէ'+1b<&4q' +#~4<P%n4uzH]>"8uM>q(}+
ΟhL]0˯Ƒ33um;4QYju+l
YjXbJʪŵ PoIaEC2d),u[Mv0<G*`y,K~; +eկi~\ +~ÙWsN8om4imh몀aP鹪5>Uh5b5=8dZh?Ux&NӽEGI\˿uSȶ?T|~K&MEkQOZuiw1#uJc4s_yٴ +0 [ԭXKc{沣X,6`9(A(?< >)PN +I>K1d?:T) - +$ѧd=!c +V
QVae`%shw&WY!ICzaO&!@9Oq-K5i5f/H|zMbC^D+0/^笻4o%+D4 endstream endobj -411 0 obj -<< /Type /Page /Contents 412 0 R /Resources 410 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R >> +426 0 obj +<< /Type /Page /Contents 427 0 R /Resources 425 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R >> endobj -413 0 obj -<< /D [ 411 0 R /XYZ 78.37 808.885 null ] >> +428 0 obj +<< /D [ 426 0 R /XYZ 78.37 808.885 null ] >> endobj 177 0 obj -<< /D [ 411 0 R /XYZ 79.37 578.639 null ] >> -endobj -410 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F63 231 0 R /F65 232 0 R /F53 226 0 R /F15 227 0 R /F54 228 0 R /F70 285 0 R /F68 259 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -416 0 obj -<< /Filter /FlateDecode /Length 2183 >> -stream -xn6!gv -g:)B'V}twz{,X=}SKu.tJHo烔R"$>S`Uj7rq;)LG?h -nDQJ<TY$̧/IPrQۘƬ++eDLBҨ)
cՅdɍ1OIMPWE{ǻ#-{d
KEf:#\xe[R- -a7R&fZmhZޠU~e+<"Xe~Je#ceb[
qaC7Cҍ<uY&\|hؾDr;=8wL#z;eza/ẸXqKu@ҬOOuLQhԥ1)K1eJ*Jp/FXy)Mv -8Lf!D63e/mQM&8JUY<e& -cF! -_|Kat,PsQz)ѪyᨢNˮi0}u-FUvw<f\q[(s5*DYɹe^t@dZ 3Tc,;1>ͭ&</Jz+|ª%!2T
ʼBS]OV{\Љ
ú84x.ҍm4}h$H$HPCiԆZy.`\"ɱR܌=/oS3/fMlK[SЖQGߏ﵂鑽BK@YRR"p~kX&=mCcwm.m5ܘΊO[rHT]nskέ?!37<*Z)iq/t?Js 'PWqZ!1# QYdu<{Gk1fA -7^ -0#4O1#eGq7 -6)W0ʎwG(I쌠K~:DIч\oΥQzb T -J" )M͘] -fg -endstream -endobj -415 0 obj -<< /Type /Page /Contents 416 0 R /Resources 414 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R >> +<< /D [ 426 0 R /XYZ 79.37 771.024 null ] >> endobj -417 0 obj -<< /D [ 415 0 R /XYZ 78.37 808.885 null ] >> -endobj -414 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F63 231 0 R /F15 227 0 R /F54 228 0 R /F55 229 0 R /F32 236 0 R /F61 239 0 R >> /ProcSet [ /PDF /Text ] >> +425 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R /F70 291 0 R /F68 265 0 R /F63 237 0 R /F65 238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -420 0 obj -<< /Filter /FlateDecode /Length 444 >> +431 0 obj +<< /Filter /FlateDecode /Length 2163 >> stream -xڽUN0+ql'
XN{?v/®=8*B\;w1C.Qv/lsP 30xuX%_٭ː]?% PkQuޗ*w:A{9.\"I#$nکVF7ӊ3xyЍf[̻u A8eύ+cAq 'ёW:rd*3` Ѿ!3_A23Lo>z -A_L-z˥LޘV\X72 +x˒6_XggufS۽erjK +͠P ߆?!ǷgCͣІZ%U۷AJ㧏u'*>D>){Xiii;ƴB'-&xIѽ-(n ۤ$Q mK$MsJx&QX9
72EOrpd
ͺ 34ٚxf~dBz܋0ы%yTl5NfTS3fMy̚VɴW9[E0o% 66b +}eHE))r&\ +4YT,VEypa
̡V9U--ju Va/ޠV+V5aeflntyhe=#$EP
>=?$<͋XgIe1SD|&8?cIְ<ꎄ!ϙ1Y F;g,т9esȇ@R2C7ӖlkU>}^._h_ʸ"yL7ҙcb'~&Δ2U&Wђ6'ͫ(Wՠ\k.&YQ6.|RUOvYrS +ecK +iw5Q.NE+@)\Y.fiOE|2#g3}TRjJQ/ľ)j~ӱ<Kڅ6>Acͱ0qexgʃeob+TcLa%8YE$ӂqrK6f0}Gߔy9Z4rTby +e].-D+cJOvtF=.=NEe
F3w XF*=aGC-t\"qRRɆboF..v_t%mzTB<LcQz#Ejmz2>9eViT?ԪTB&0% |d0Uo4kaMsQwm.1|
4_f:SsuKwnՔO5<?OtAHaÔHYMK{x|4)cbϓ0 +t78PfAbgr4x%Ő)k~YAr4ll=[0㜛$A 0ܥNH"5WktY2u@ Pz@Ʃj|>ɧQ$F,|V|"#7} +F\fwզ:$ҵZ{@_)S&o2'^WЖz"-]wS9GJ{b e;ڏTU(PNjiN^z&\hЉ5:42vh|u.I#-־O_4:Qp6V^RM[vXdRpzH~qHt{[OSRu]$u#
j&wiDK]"9nNc;>O5fіB|7k+o@oL^([ߜ}
tOnr6|{g>~~ϻ
6gQ +wȭPKm/RX/(nH_if2=mܛ5wIܭ|f'l
͕(}Aeqo5 E-Ԩ[564ޔjlQyI"7LS /4+}>qk?EV?].&Fx38Ȝz;&5RsF<aU:T:<e&vȬ?GgRvf +Wk{X6H>T/R轈RT<:`-DݖE.P.6}F3ob4QUI4S endstream endobj -419 0 obj -<< /Type /Page /Contents 420 0 R /Resources 418 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R >> +430 0 obj +<< /Type /Page /Contents 431 0 R /Resources 429 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R >> endobj -421 0 obj -<< /D [ 419 0 R /XYZ 78.37 808.885 null ] >> +432 0 obj +<< /D [ 430 0 R /XYZ 78.37 808.885 null ] >> endobj -418 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F62 230 0 R /F63 231 0 R /F15 227 0 R >> /ProcSet [ /PDF /Text ] >> +429 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 233 0 R /F63 237 0 R /F15 232 0 R /F55 235 0 R /F56 236 0 R /F65 238 0 R /F32 242 0 R /F62 245 0 R >> /ProcSet [ /PDF /Text ] >> endobj -425 0 obj -<< /Filter /FlateDecode /Length 3644 >> -stream -x\$+"#x:'hZ$GcW> -2U]3"d?o˟ -oB2n"q(ˤoo?\ƽ~sWΑ~ џ{EAߍvl$}
1<W?ͷ-=N]_SjSBjahLZsŵ|)I00B2MO(@ba$_>ziq=Bs\,#Cy9y^ɼ<99#LOT(DN@ZF}ǽI^bqvkZ{Rv l3T35P\]HQ5Kᯐ+ -џ37.SCpZ>!b5ӯ&D{jH<rBQe7O"c)q$+h-يC$58N68?22~
ˌy=<Q`A;$
x)0YT -F8ܯԜ7+>dq+36iυ+ǸB6cAҏeՌ¶ׯmjFSjyַ`i'h2G'E?QG3Nq뷗_+qF,o_~~qfH -f,Ia:4^ymD$ʀa1|pzGJ[z10S'}M>h |HSnd!~κA0UG5̺H2S{;VЍSkUqeIW+*^U%?I*FCt!hSf)qA01c&]=R1Iz.~ treS饤BfQᄩ>Mkw5T O♵- ub%"S`>P2k??Sya($zKLWQ,aMFPG j4+^"
@߸dysGۻ$42&єb) ͂(ذ粴hAR\3;<0k($yuGbv
9dq֣I0;`¥ 5"^ 4NbV;yDh4Z;iY,)$g1xh$FkqL+vd|6>eG}KC`_㔣'8iNJQ;
TK*BJ7]^iUL: -61-p!bH'.%!s:\dZ-mT_Bwb9@!8a7$,A ->Y<,g<MZoP)Sg3xOLK\ -$X_gFq$|վ=4:}cԴP8 -rTW>ζj~w:?9֕Ts>v]v -lT%r>LGû2E֧RjAVpɾ.f -BCX!֟3no_FYZLF:8^7L^Yk}؛])s%c=4?X:Wc>0ܧbN'cξk>FF8UΔ1/:|ldb>ٟ=Y/C,!u(6FqE1.kN$ b}[v0ATW:6&+>^]<&͊$Ou_^.&z=d;GI=ǺҦu7w -u"Wo*kF%ZӺT0(=42@Ta飩gRH~l7Tn^E{WUf{6h͆֘m{If"=[)rZ$bba!')8|ԍIs+d(QOJPNTBsM./a0N$},7:a_װ)MT\Va}O-7`iww']ͽ:TI\E6OL]~ltf7Yn'ry[|ձ][#~nM{QP{s%>)aX1`NtNɨM$^㵂ӟT|T@SD {݅vV+|-tOuMbl.zBsn9}U̪%˩2s<} kjP!zՓ=} <f*/g\n_ -"ml[o2ܰf>AekxG} -w>k _i0 ycWEj_v|z)L5;dQ -ˣ4ЙDЄF|ZK]TFYFC.~yz6>nh8='㛆BF-CX!^!v9[)&ڐcSQkYr -OQ]dIQ
I_3z5M)cN26yc&fu[\RSò،a'-MSYLz o -Do.εrϖo5HS{¬$ +436 0 obj +<< /Filter /FlateDecode /Length 3630 >> +stream +x\Ɏ$
W,Q;(m0'}ɿojXmPȬ-G~?~ھ~CPL*$LڛՎ)+n_~¹έ,8Kgi
lZX <
srBB֡xOՖ~L4*zK垿}%I0Fd؞QaVf@|$zqoyF-IP2dB^~ \OQi7x=2AA"Jr%þZm +Ҩ`%Ia _*A|Gr&mlu_*ѕtE-2\(>J|)Ҹ ^KL"gYJytj + Bꥈ<IZh:f^[qXKd +fer5)W +g,J+/q;#=aER.ݸg-J# +%
(i kTI}NGbB҅֍Nt6Qo}%)IunNy,̒s Dm.PJ +I[`Ҍ*pCCŭzHm
ך9Q+XcDy=Zp#0rVb͡g#\CvBh)ׯ;)5Ş_?sd%Vӷ|o_g$OJQّw7P\@$
t~*.ݼ
`A@5pCbfuyigB +m}5(+OQ-nZh0NamC,:Q=Q6
+Rx<Sbyd{+aq\P91]Ӎ~aFu ^p +q]tEEsM=xZCfIK[+clRLZ0jAplA)ff14cbo?.$Nyu},T`F4K+SH10Ux)m$0a~VUv X1&$ +a(48]U\O}Φ251bv)gŧuc
~lC r6"2]S~YSv!c,?Uecg9>co[}0[}Ggfe;#k AF/0פ*xĄ3̀:dǽ;B` +FRN!i| +Y=<zSK!j GzkyYH.=++D/zg,Up<:j8@-B(o*
3Jxr<1WYǤ٣c\7Hji쀹}.FJҢs@CZov+``M F=B!Q +(gyO?0DڀL+1wr`4vd{ӴJ[PO8ɈŞmQQGێ\<D+yخ +-gz(jŢ˩`h{i<\=J'艮'R$,NGrh\6V6Qo-2;=laAčP2<P9ɀ_ +r"ӹr.l6>$ +$FʃZ?~mc1ne\iIA7}N$62Il-=\I?Ls@-{Nj< +zܩ}_Z3sv@ -_ +ۊ듚x*l.GAE{G@*q5Q1h/_D L_h{AO'`;?kY?\}8nAªxK,f'p9}s{|NNr/6-3cQrb~F +*J)^yzsP`*TWsqg˘ik<Pvb<-Cw^,sRzAKvI%/gyϊS +"GiYsTah{.sY=Sc26Th|s2˕ph>¢<cEM{/9"7Z+y˅3(ő!"
_ endstream endobj -424 0 obj -<< /Type /Page /Contents 425 0 R /Resources 423 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R /Annots 427 0 R >> +435 0 obj +<< /Type /Page /Contents 436 0 R /Resources 434 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R /Annots 438 0 R >> endobj -427 0 obj -[ 422 0 R ] +438 0 obj +[ 433 0 R ] endobj -422 0 obj +433 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 118.663 86.982 239.156 98.036 ] /Subtype/Link/A<</Type/Action/S/URI/URI(https://pygments.org/styles/)>> >> endobj -426 0 obj -<< /D [ 424 0 R /XYZ 78.37 808.885 null ] >> +437 0 obj +<< /D [ 435 0 R /XYZ 78.37 808.885 null ] >> endobj 181 0 obj -<< /D [ 424 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 435 0 R /XYZ 79.37 771.024 null ] >> endobj 185 0 obj -<< /D [ 424 0 R /XYZ 79.37 734.627 null ] >> +<< /D [ 435 0 R /XYZ 79.37 734.627 null ] >> endobj -423 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F54 228 0 R /F62 230 0 R /F55 229 0 R /F68 259 0 R /F32 236 0 R /F61 239 0 R /F48 237 0 R >> /ProcSet [ /PDF /Text ] >> +434 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F55 235 0 R /F52 233 0 R /F56 236 0 R /F68 265 0 R /F32 242 0 R /F62 245 0 R /F48 243 0 R >> /ProcSet [ /PDF /Text ] >> endobj -430 0 obj -<< /Filter /FlateDecode /Length 3014 >> -stream -xڽ[ͮ)p -_2FDzA,|r|:ޖIs`Ca.WhxkJ -$3Q ɹU,j4iNؠͪ_.U+yue
ܲ8h$M;ך+0-GC;Cp -cQR!~ -%EѺ[xq[}fc2l -Gz:Ffc-3y!ժ9qq
jVϤ2vɪpؘ4Πm2Ӗb9̧hG{5<:~zw߹xslGUa~o-lqM:IP<ا+UoTzF>е xi+hl˖eO{K,u&ko9ޭS_NE_|T_(J=썡[O,˽͗X9]l\7=8@981bɎQ9pǬ0nrahz1qE -vEw[7tY`2s_ŵqP809ro^]lxr,:x%˩ -{Iɑn{'3Ԫ!BU0D6YD/LwUqtgȘh-@847$nPgժXPں}z5('@i\GQ&Z:
{
6RLT|S/k*&55lf=
ڞvX~yݪ;E/;WZnPr<^sD.2;@wPD[hV-ȫȗ.@JC~ J~UQzNÍS @x&=<5+b[@㔩~w ip;Sk4©9$LByat f釻W>w1
Y~:i!v;흅{wZ7R0!j;0py/\d<HBЃeH8y;*:J%xzU)֔[5fA.p`$W\-b=&S -;k'
lkhLPjT;L5w\+\{eW-v1gjbP}ID +441 0 obj +<< /Filter /FlateDecode /Length 2810 >> +stream +xڽ\ˎ6W0,V
ܾd7Hd6ŬJ )t,y~Z?ЏL/x>Q/?QY(Zh#ZZcZ[xd=_?.?7$+^i1*:pX!"6R _ ga'0- +:^_[@P; +)А%W=2Cq
w¡Q,E嫜"uXlq.Kq3伹 +mnX^PyKsy2ti@xhBGLTTJH^+7<OĭO+p Es*. k('4
/i._EkG"]GA"T7" &q,aJqVwZ02EC#`ma9y{S-xbpYZ1e$]vvoۧ̚gԎU9Vp,HVe*/*Fa
b iWguQ\Kz^%sN*oL#5v[H5*͊Jn0ץ٦9Xuh{{)Wm5[nOo>yW_+o䣽 T`ѳ%;x( +s3zyTl}O&8(Y)C#yg) +VmEm>,M-NR(cgI3vLJVõ1=Oz>Vc)?Үc̹hLC) +G[
v`n!VLQwۖC[Kj6CΕ
3ƀVkS;mKZFZX௴UDӝ֟~sПd?p[kZ͙(İSjۥ +CSp} E%>oUp=FEI0 +&k&CblÞ)۴R>C SV +;.<Hl\|EOebVS,=٢0ﶒh*rӞ7wrD[`!+{:T.8y5zGk|PPY Vr%:K\E:5 Z#ͳ-}W_Hwp=\W.1~Lt[ 8G^EpB;KZm]1y>vefzǹs5Zor&ؒ7:sߜhF(pBŪa\78+ +U29SD(#^YN46dUyK\zw6Ӭ$gaޝ7mB\"zUIYK1"d/h_"C$pY?q9BvA49~6Ipʬi5rqs}HDj7&*2P1N{chsa`CDR@DZmCBye0xltq};c48lIVA^~ZtUQId0+rۈrODT [n2clp !&Su#0Lr+4@|74RJ'ab^na
?53m}d.V[v3@#aV'[e}"&!7]B!w};nX`Uih +jHn_F3,/}
6O6(s%[cKR,<~R}g9b^,mƅ ҝwlV +
,O7A\8ޞy_2D#F)^QDʅZ]B^QP.t5-,RhTi#.7;)o?2Q<[uEU(nSFEX1TWv]#l߲?M`Zn11TVkSww'LIsw'@2s H~3҈5VY߇G3})_UgGWhv*bA=*]n_Zilm8۸LlE7_۾G}Z1,M?D'hR endstream endobj -429 0 obj -<< /Type /Page /Contents 430 0 R /Resources 428 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R >> +440 0 obj +<< /Type /Page /Contents 441 0 R /Resources 439 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 388 0 R >> endobj -431 0 obj -<< /D [ 429 0 R /XYZ 78.37 808.885 null ] >> +442 0 obj +<< /D [ 440 0 R /XYZ 78.37 808.885 null ] >> endobj 189 0 obj -<< /D [ 429 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 440 0 R /XYZ 79.37 771.024 null ] >> endobj -428 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F68 259 0 R >> /ProcSet [ /PDF /Text ] >> +439 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F68 265 0 R >> /ProcSet [ /PDF /Text ] >> endobj -434 0 obj -<< /Filter /FlateDecode /Length 3134 >> -stream -xڽɮ0Cw@x7)nOCCNu!4KwF_#VJo_zc7m 7ݾ~R jRBS'>{x^Ilu ^JqPDDOqȈ9l|E
47K%&|Hf3ԑ(s>|<"5@+pW4ݥ[yӕpog#`F Ȝx8dGx{(s̕"|箥=Z$8="w;Bf(z.d/Y`Ș32XHO:=iY+)jD"*{IPb\cZ/ħ}}V oEa;M"4;oNuЯiDKg5!2V - T{`x`
Ah9%DO+(!puT.0 H+zŔ'_~o1&!>^ ۍ[ F;#9-LdߡסTQ-!s
C䀰kŕըZFejqrCY9_3ҏb@J2YpJN.L[Q%ƐTxLt4RdC|E
/uǵR;>D!Zm"%fx̖hZ`hOH$py) B2Dbu2'}3`PO̓9XCxDa{Fxud.E*L)崍EUBqc0gPdYjTUfUCbәk -?j˥N\PТL*[ߏgˉWetψw5bSR+/+Ksx`{lT4;g0ƻ.㯔 -\w4[gA f]h%0Q;#5. :\@e&7k
,2/Ҩ\oif{jJaO5VLQݮ_$TS)N_e)+^, ܗ~Yz3p5H,\ԃziƢ|/sFƟx|RKZ-g -tzLt63-:zUJ5҂2_O:e04 kBBrdJ=XX$ʲSК<qŏP~9n -} -բ1S^&R34wO֩"1F`zu;?lcNwMM؝,7BLHjFψG$0')̔WE#\>bk)tPzCӳ~[1ET>t#0DK%Nbʢakg1VSl>j؟7Zw+"՞DE<%,q0N#+ضy0s9AzLz2cYqe9h -_j-Nz\7Iw9d*.wtu`[Ph1d* =u/X@,`\Ԟ4C
DZ [0-q~Nq}S:~J"6EaE`T&~y.R -vD9јF6kmJWm#A=i7vmՅo}WpR"Z)'kz1X \H-Bzj +445 0 obj +<< /Filter /FlateDecode /Length 2938 >> +stream +xڽ[Ɏ$
W,Q4407}>4?-C=BUeD#ooo{* RܾM~747Zܾ}sG-'9p.'iOo|_Ji3W</ė67d + %[ +qkz2Es@)PwYŸu#z\s8u$d=/Jdf@/i:bHʖN3C*Z{k中9+JkHkI":{VU}Nצ7i/vсDiqbv74^~eye:̐L#@RU#ALQJ@"9yi>g<%/uqPWpx6ebOqlR
U6f[KS11jkGM7k_i;Dĺh!M0yfHpe$*ɜݪfD`Yt-'nJ_@ +CaxR]g~eC{^'^Ψh ((hy)ިSE[T-RB&l?[GVr]5EaQInY檊%NS*
yMb6I#*LL֞nRMx#.}{ftdT*
6p݀*ݮ<_(py{ng[Y5sOb?!PO25q{miY@xGW 5 +XRjMY]R[Qq<ݬ`5iUZ=~=-H$',mBiۯrp#2 +SD<ӕCC7R /)<l$7pNp2 1(){<2|ݞ_7}}dcڞ;sϚf^CSX@07f_@z0/{^JJ1 +E'{Clѫ%xĨwJuxN ;],jp7gF;R47-Zu_0I16dм9\G>Π?B_[ + kq-I\-&2r2k"?2Uct{0]LˌT>SPɎQXmhSU BcIR1,ɲN +\s02|)h$Rr +/zO +|hSC,](7pښZ&0ޱ;
%qjQlN`#ee6Q3:'Dnr l9(;HkI~Aqa>uc{Ġle +_zEe* GjՄc9/nm?|li endstream endobj -433 0 obj -<< /Type /Page /Contents 434 0 R /Resources 432 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 382 0 R >> +444 0 obj +<< /Type /Page /Contents 445 0 R /Resources 443 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R >> endobj -435 0 obj -<< /D [ 433 0 R /XYZ 78.37 808.885 null ] >> +446 0 obj +<< /D [ 444 0 R /XYZ 78.37 808.885 null ] >> endobj 193 0 obj -<< /D [ 433 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 444 0 R /XYZ 79.37 771.024 null ] >> endobj -432 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F67 250 0 R /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R >> /ProcSet [ /PDF /Text ] >> +443 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F67 256 0 R /F15 232 0 R /F52 233 0 R /F68 265 0 R /F55 235 0 R >> /ProcSet [ /PDF /Text ] >> endobj -438 0 obj -<< /Filter /FlateDecode /Length 3058 >> -stream -xڵ\ˮ
+H&
f5AH*JKNK:$ER|Ho/?>Moff`\ۏ߾psr.g9h+}FoFzz??Ʃ~?~%94h<!9Sff÷`iZ._=iM2nSX -[1\W61?7emm~.Xr&{^^yLLK"puV.=`
&eªƖ/|w1 .pe??;7 ?ݟ7Y_~.OkqKEUР[Aĩ`. >_<!:ITw[Ju"L8S -sNjwA?[WJUxYr")qppPLӚ b9oe[ha_p"aB8V!/n0T%U{$CL:D3Jyi4e&7YP34NtلRTm0,~m1Gg&Qd`CI\p_jh&g i\ - -FJ~XV/i%爐`KP}M&]II]$۞oY=H)"JcնJY̰C g({ܴ3|> @u<&9a܁Z){^P#nް|/Zaj'Zf}{5V&}N(<Z9' -~ -1f~]vh2^ER6,,d[Ѓob(f,IFOlr[-v!fj ϲ(0+5gMzX"2'&$?Aqq
^cRmT,Wg;Ԕ:9IoQ
:A'H\4kP<*v
̎6\[vq"\w[r4W-8;2M6j
3r겛bfӥpcxjUpVmZsb[$vJɌsMDk)6=b,ӖxR>64XwHwu1
41KdřM;Ӭ[YkɝJhAfmg3!Ϻ_Ѯ+
!e"AՈx+C.^'Bb0ӏ<C iwpLPnNe(Waaһl`ṜSRe+}:kڢ|UV&5Ώ?9 9dܯg;ZcM2"[q/,)<itDa9[[TX^SYix/VvdaKC3KJ)yc3mi^+iBP]>e4` -Rժ|+"{zN+b!
\nz6S1Ņ˸^(qmF -%J-]A8XSym8sfg1JjL_5U}ws, 1̇]H+Uf)whb|k{Y _iIQ>u91_pRoINE}W_UB8Sb8JG\ɕ*6ۚuJ%M8qTUΕY_3d-~pliNj5*z?E -څ56@ݨm^]qk7q+z{[/Sf!vyYY::d32ݔi3ڂe֎j/mgwb9E[ -9/5T&) +)ʼiė uˬg)T72JL-C - -bmJ(|#J0wq8AwxCdR$ͰT}S6}Y!fY(2ъ)gGWhS>L&RGW}%Q-ӳjv7ǖ ܶ@`(OU^#>eYVa5~52Fi8Goq6aJX)I6>Ju^0
3615R*;XxpW%a=g+f2+0g!yZkw;{/-tqHc5}~SS2*=cםMuvpr7mq6(án&"?5&jWum;M*>qO;BnR/hԳjʝܓΥ'u(=j~CW] 69%EWZcHWWWOP8%(gz@%m$;9uWul-BZvI]ɫ˷S/̾sSf:wx,eKRj6UϮyy*/^[V@pda,38R3omӖ9K +450 0 obj +<< /Filter /FlateDecode /Length 2843 >> +stream +xڵ[ˮ
߯"Q0.` +`V$ċ!R%qtHP?n۟oJ`roSBJHn߾~,)]^J?))%=FG_vя>=}K_enAOH@); Wo g^%@O_~eHG9~̗<:Ɩ^0X0p +O5LL + +c3{2\ZyZ FDk'ltۨ+ةu(C- +¡ +ElzD1QX՞qϔq: l&L3 +R)Sq5&=!2wGgr`^)8&"E!S#s#y-tHqM3u;NcSLsw|I;Hcܠ£[f2doGOw}\v,<7}ӷN
eɆ$cCrm<l/{L 7g.%m|s>C+c(h]nOY,$tc?30I*x +zzڔߐz=cT5~22 +J5vaS[ҬWLڇV`Y;+ +o(WgtIA$`;Yal핥#{fS0}2+)zڼBtI֟AxI\Qs^tbuͺH27j&l?~kSV(5y='hEa(z\cjǽ=#;"8~IagKCrh̿hКUyF /-zwN ҃3|³<u_꾠"\ӐCiVrW&gv76r
I[}¹W$9;{ZV^l!̲t()qrv"谈ɻI1FE[4 4ggzIɘ}ZH"6JK:G֬A:¨UB
"F)VD+%尊k3pܲQN}`G@]k,<=R-ُ2Eva{J]Hq@_[6E-^E PA;m1VĦWklW0~*s1$sOCQ^֫Y55+__Mq*rQJLo^I4ta +Tלyl:6m.5to\Sm^+Yh)?S,%Zk}Y7&Kj}1:¶Ql7x)Yd&P)v,jå/X}pG:~fp +IJL9kLY)c +V!5WR"6O9GƚULљ3́qp#h%9^d|U᎖[+YC8Az^A!2ۖuJeBZy#4^!upj&[K76R$ժV`s0[
Jhm7ɌH#nƲ)H|20}܍Zew#?E88Z.atd0Ҭ^mWחrE\^W,sʬ*Ϩ +"k<e]~am&<k֘@Pܴ4R{hH{ /SVqɗy}; +"^@ +;#C+ +Xp5(HW!><'W;Lͪ:k2ܞ/&"4m<cX"n/A|CV f?S=+U֧G43|3GxD>{?Bs[<}W[lBT[ey}dɽ(fg-8F8z&Ԏbe|a/|/a*vĕdFdO~NeȮVŌ@f67U[K7ދ[0[l5f#+7r#zEa\Mn/縭iӒf[7Rƭڤ0sUf\:3܈\+jWo>q^J"ؘ.$ĮK~%}˝QϢu;ϹgOʞ T&z&5fA<] ¡n65q ƲFWq?sБVR:9Ks)6 +/lZ[ +-,ˮd{Z^j9NJCV)_oNR~] endstream endobj -437 0 obj -<< /Type /Page /Contents 438 0 R /Resources 436 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R >> +449 0 obj +<< /Type /Page /Contents 450 0 R /Resources 448 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R >> endobj -439 0 obj -<< /D [ 437 0 R /XYZ 78.37 808.885 null ] >> +451 0 obj +<< /D [ 449 0 R /XYZ 78.37 808.885 null ] >> endobj 197 0 obj -<< /D [ 437 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 449 0 R /XYZ 79.37 771.024 null ] >> endobj -436 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F68 259 0 R /F54 228 0 R >> /ProcSet [ /PDF /Text ] >> +448 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F68 265 0 R /F55 235 0 R >> /ProcSet [ /PDF /Text ] >> endobj -445 0 obj -<< /Filter /FlateDecode /Length 1380 >> +455 0 obj +<< /Filter /FlateDecode /Length 1381 >> stream -xڭXɎ#7+Zh& })ArHS~?$JUFZGty=tsfP9'=2a -0M߿hP6Zkzm=O4WKkFwKzo::>xFzJPj 655K$ =?a -hi!dMY^(gjy]y^eKsv@ڃ*n!µ5ڇ]
FV -%MQ3=(~p1yk4'c>$/<$s*?|Nxonռ6cdg|'>IxҀa3m(LCŅTB{6*6%wIQ-, -f
]
o^g/Zk^b){OZ1^8T38&(JY"ؠw5QqXZٽ3Z0-Rz -apESA|K]h5#~;ܢ?MG[r/ZɽV-/"{a@jY|<W2жRTI4q0M&Q2 -tL~-56Ml-x*Ywzs2Ȱ+W8)V -[UxۍMlD¦ҟ2 %ImJ|2=5m]T"Ea.i;v?@Mmuw{d}̤Rk魓J=IɆf7ゲT/u/kG+Y>C!p৹-?m(U[VC5+Kn>F5X}P%7uْn0fgfK7&>
q+9f{"xj^`!@Υ9nָ|'~̡T1;Cw1Hܬj<#vf0b+?kИXst*@vmtzBwHrhVU?-gg^r˜9v8/}C^jZv-7Rc@,碶uxZ@Q\.N"-eOu?WJT--*:iD&=*V32URsP}lURWK5MA;BN8 -_kn@peZI!ȫZ2Jҝ;pQo0$'P处dt1ߔ||gUja~[c_$&ڻw9-M֊+]#f lvÓuAꜣs~ -xW*O) +xڵX#7C0LOOdOȿ}xXE:=qebbX)>1%\OZ1B>>R*RmPQJqXhS +/\K7~/83]++%ͬaԼwJ@9@)-h<q쯭UKm7%Vab@a +/A-L0b?'h.KHFy܈_n'GoĠlnu-R;ǃÍvA'3N Lr $uZu^
AB)rHT9٪bZEl
e! 4r4@@^W[7L# h,r9u9cg G?5@\-MȻ7QC2wuE:t!5UԔvhLՐ%}fDQ{'F^kϔQV1C Uޜۿfͤ"oB?s3q=\y;(Ob -eE]~+tQw`)9,p!ehYzEhHܠ$1J$08q] ѵፗFEIp N5Z-:?'o$ǘl?qE:'Q z +ZK+øg)ڑm*^\6rP{i=Ah;:Ķ!nXN-3x<2ISvv̿vq0C.uM/Tnrl2$R@PC;*<N n^~&Xlϒ̆@{KϱN]'5ηdg)hP0z+ZE%ϯa=`*"WF`{P<9El^"Fo?Er}K +s̜mKى|?KNbOnz*מz#|UOR(TI<H<:O2# endstream endobj -444 0 obj -<< /Type /Page /Contents 445 0 R /Resources 443 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R /Annots 447 0 R >> -endobj -447 0 obj -[ 441 0 R 442 0 R ] +454 0 obj +<< /Type /Page /Contents 455 0 R /Resources 453 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R /Annots 457 0 R >> endobj -441 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 382.728 459.129 397.453 471.085 ]/A << /S /GoTo /D (subsection.6.3) >> >> +457 0 obj +[ 452 0 R ] endobj -442 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.735 459.129 423.691 471.085 ]/A << /S /GoTo /D (subsection.6.3) >> >> +452 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 255.32 697.168 262.294 708.167 ]/A << /S /GoTo /D (section.5) >> >> endobj -446 0 obj -<< /D [ 444 0 R /XYZ 78.37 808.885 null ] >> +456 0 obj +<< /D [ 454 0 R /XYZ 78.37 808.885 null ] >> endobj 201 0 obj -<< /D [ 444 0 R /XYZ 79.37 771.024 null ] >> -endobj -443 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F54 228 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -451 0 obj -<< /Filter /FlateDecode /Length 1346 >> -stream -xڵX#7C0LOOdOȿ}xXE:=qe|bX)>1%\OZ1B>>R*RmPQJqXhJ9N)p-.`o~v8R4R}Rn)1OYGKV-0NLNXJla:)Ȼ -3adS.# p# -)`mZz;JM7&8 .p?0 ڂ`iyY6" -!MP<fiAZ5hrI
D-qb~IC:F1v3C &G㨌!PxI"JTB:y䐚]jJ|;4&jȒ~A3}#xqy[Ag(!DƈzoGfRBjϷ j_9qh'\L۲".m0X8wh2M,=Ң4RynP%I\C@|.KRIK$Wb8'@IǟC}7cL6PǸ"Γqa[Of -,'@> -'vsj\HM9EaJL(y$^2ܔZK.} ^uASvTFrimnAu\KNg}&ԇ@-SљV -_!AX&PȘt&uge'9!ZA(PC@(GQ.vL"Fs.eBoTr1HP.Q+l~"mL%a\V`oKpWzSns6t/q.`v9W 4w[
F`yb[]},<W;;_D!Iݺ*7aI6Qdyt!z'gFۊk7Fmf?,gIEfÎ -endstream -endobj -450 0 obj -<< /Type /Page /Contents 451 0 R /Resources 449 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R /Annots 453 0 R >> +<< /D [ 454 0 R /XYZ 79.37 771.024 null ] >> endobj 453 0 obj -[ 448 0 R ] +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R >> /ProcSet [ /PDF /Text ] >> endobj -448 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 255.32 697.168 262.294 708.167 ]/A << /S /GoTo /D (section.5) >> >> -endobj -452 0 obj -<< /D [ 450 0 R /XYZ 78.37 808.885 null ] >> -endobj -205 0 obj -<< /D [ 450 0 R /XYZ 79.37 771.024 null ] >> -endobj -449 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F54 228 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -524 0 obj -<< /Filter /FlateDecode /Length 1963 >> +464 0 obj +<< /Filter /FlateDecode /Length 1641 >> stream -xڽZn$7+FHmٷ RRn`G蠟?^n_/}Z)$#?Г\P&ZY]k2u>F_SPa)',CvЬ=)By]k-/QpSvI+Y6|?h{\ۣze_,[AnVm'F>틶%ZnSL::)0Mt^D1,s8RQeTg.#]*% ~nHF1)Ag*l0Ҟ-6My1Wmӕt+!(vQKxFzҦS@M8D͓%bTt<V{3BDOn:̏JjJQUܢ߿z\ֆøTMoڈNm<jzuq\6>ĚYиdܮn -O#QӚ')PhfAg68xDŽ s֥;Vԇxa@j`ڟ<JKՀ`. -#.<GgBPF/Bף"yl\-A -Z=S\BdssP$ -6Irn72a`"KjX/<F`za}T+/_9ڌGG::84pa:/U -sin{R?w|5(60gl /֗Ij͒WMh02~ -b VçVPWW`|_l'av -m,<@B4x7P?7ZoAwQzTJ6ۦ\|Ce-ޮȼ_<2Vơvs͇k 2 -[寏ĐGf,S6n2V"e;XN|Ȭ0fV:D﵍'bC,ˆ{BX昕NˣV3+yAtGXH!͘2oM/~UZsl0վzgDt8J9!ԧ(Wsβ#f/2/ڄ5s+'4dVG=Yh7'.^6tzH&36ײ&D{OؕаE*ƤS8\6*h_8N'n4,1Ő`o2hܑiG/$C=[d5ww~"1匿M/=v*xwfGG{:-+]a|<MʟU6T*{ꡗ!Y K%=ߖz)<#: ˕_/'+ʄm2xyeB -ȏd&tce%!kݧ +ivv[g;v]ϱ߂?Eq?=.-Ko qi2 aB+?r{T +xY͎6SV(`S =[SK߲M6c~d$旇LJ`r˗E_&vC%$uAJR@^JG%epy}TꜞPJO$H{oo|ޡ|~H|*;iW6%S$ +Z<t t+wʲK;/ywo7,x0ҏ(H5@5VhW='z`^KS55|(/fXϝveHR~#)Ow_F%Pl`_^>}/I +O: +P 4!hspmfk6}έ"uUUԲ +&+mEƺ"xB+TL.˴b0"5Xg.g!0BT5f;)CNwNj}괨$yR1s?d ):ëՓ߿M_~Jp<m5*^^e(y;M@"zlq<4 Kῦ٨ endstream endobj -523 0 obj -<< /Type /Page /Contents 524 0 R /Resources 522 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R /Annots 526 0 R >> -endobj -526 0 obj -[ 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 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 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 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 ] -endobj -454 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.39 681.75 142.364 692.709 ]/A << /S /GoTo /D (page.4) >> >> -endobj -455 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.251 648.073 166.224 659.032 ]/A << /S /GoTo /D (page.5) >> >> -endobj -456 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 151.579 635.679 163.535 647.634 ]/A << /S /GoTo /D (page.18) >> >> +463 0 obj +<< /Type /Page /Contents 464 0 R /Resources 462 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R /Annots 466 0 R >> endobj -457 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.305 624.162 151.261 635.121 ]/A << /S /GoTo /D (page.16) >> >> +466 0 obj +[ 458 0 R 459 0 R 460 0 R 461 0 R ] endobj 458 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.318 612.207 177.273 623.166 ]/A << /S /GoTo /D (page.17) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 382.728 563.192 397.453 575.147 ]/A << /S /GoTo /D (subsection.6.4) >> >> endobj 459 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.141 600.252 147.096 611.211 ]/A << /S /GoTo /D (page.13) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.735 563.192 423.691 575.147 ]/A << /S /GoTo /D (subsection.6.4) >> >> endobj 460 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.315 588.426 143.271 599.256 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.882 311.664 426.358 323.619 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj 461 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 190.135 576.471 202.09 587.301 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 444.735 311.664 456.69 323.619 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj -462 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 188.889 564.506 200.845 575.345 ]/A << /S /GoTo /D (page.11) >> >> +465 0 obj +<< /D [ 463 0 R /XYZ 78.37 808.885 null ] >> endobj -463 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 148.65 530.838 160.606 541.668 ]/A << /S /GoTo /D (page.15) >> >> +205 0 obj +<< /D [ 463 0 R /XYZ 79.37 771.024 null ] >> endobj -464 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.815 518.883 188.77 529.603 ]/A << /S /GoTo /D (page.15) >> >> +209 0 obj +<< /D [ 463 0 R /XYZ 79.37 476.656 null ] >> endobj -465 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.865 518.883 205.039 529.603 ]/A << /S /GoTo /D (page.21) >> >> +462 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R /F16 257 0 R /F65 238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -466 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 172.81 506.809 184.765 517.758 ]/A << /S /GoTo /D (page.12) >> >> +543 0 obj +<< /Filter /FlateDecode /Length 2018 >> +stream +xڽZn$7+FHmٷ *z9x&|j}oܿ^~t3n_yCP+˷n5yh
Z#h?E[Pa)oX9Q1zh˞!?5bZh߀(x@Dy +éy&j &6|ɯh{ +\ۣ/#Ы*gtf}艑SzIEۦ%Z +}L::)mEİᘎqUFut7単f9^2鏧<c~o!7T`u}Qm5CP͊?^gqǠ зX@b% 6 Q!L{HzK>儛 +ҹ%nHlmJkbž1Hj8l[S}-Tra묬Q[ͪt|NU63עx|6bk+&ݺ_d THvh<>y/Pls{fNgX?[TyDh粟F>%Yz]J*LuD.#tOU5^;HJ#Ӟ+?ԧY×y;M +OfA\?d;I+鰭 })es=%0^Y=lYP*f- ݷ!h=|G0(-a"B&
D01fg:|FV ,cDr#᠐iihnTѠByŊ{gj,e)VT+9iu0'Fx w=ȿUlY_0{0S$JIǸrvlBUM>mxd8+w <*1;s)`vH1ĕ˴5/}Ղ҅,cu3jz:A +t|"qց>N;qZSawhߗZm[w|氎H;g:@Mw`E)?n'Vns7Rґىz/6̣w|߽ᒨ"&`BK$fj$ wvo +?t4a+잌5,"ڈ2Fwd&)О hheE>ҐV˃ +QX~<:#Ci"RX,i)֭2uny-u$RrJ7BMa"b^¹5{ҳUw|R^fXY{muzbqGXl?U#q<NZ'ki\yi5Gŕrsu߫8_|퓁"|{~b[*iWRNN$kf/s_xDga.{5$/M{7>YЮ9WRn<SkX*a!C +L?{ +W[ُy#\7_3p#R,y-?>*e-U~EuOob_VΩ.gm/;[Lv@ +ȟّ\D8YA#i&37lG_Aond~UKb=ݥSȢUY;ʹ#J`??x#?T.٭qW"
+kixۉΰ;B4߇ +endstream +endobj +542 0 obj +<< /Type /Page /Contents 543 0 R /Resources 541 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R /Annots 545 0 R >> +endobj +545 0 obj +[ 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 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 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 537 0 R 538 0 R 539 0 R 540 0 R ] endobj 467 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.52 494.853 251.475 505.802 ]/A << /S /GoTo /D (page.12) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.39 681.75 142.364 692.709 ]/A << /S /GoTo /D (page.4) >> >> endobj 468 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 196.023 460.728 207.978 472.683 ]/A << /S /GoTo /D (page.16) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.251 647.877 166.224 658.836 ]/A << /S /GoTo /D (page.5) >> >> endobj 469 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 198.454 427.608 210.409 438.487 ]/A << /S /GoTo /D (page.15) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 151.579 635.484 163.535 647.439 ]/A << /S /GoTo /D (page.19) >> >> endobj 470 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.276 415.653 143.231 426.492 ]/A << /S /GoTo /D (page.16) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.305 623.967 151.261 634.926 ]/A << /S /GoTo /D (page.18) >> >> endobj 471 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.288 403.697 169.243 414.537 ]/A << /S /GoTo /D (page.17) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.318 612.012 177.273 622.971 ]/A << /S /GoTo /D (page.18) >> >> endobj 472 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.817 391.752 174.772 402.691 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.141 600.057 147.096 611.016 ]/A << /S /GoTo /D (page.12) >> >> endobj 473 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.111 379.668 139.066 390.626 ]/A << /S /GoTo /D (page.13) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.315 588.231 143.271 599.06 ]/A << /S /GoTo /D (page.13) >> >> endobj 474 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 130.957 367.712 137.931 378.671 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 190.135 576.276 202.09 587.105 ]/A << /S /GoTo /D (page.13) >> >> endobj 475 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.469 355.877 150.424 366.716 ]/A << /S /GoTo /D (page.17) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 188.889 564.311 200.845 575.15 ]/A << /S /GoTo /D (page.13) >> >> endobj 476 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 171.305 321.641 183.261 333.596 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 148.65 530.448 160.606 541.277 ]/A << /S /GoTo /D (page.16) >> >> endobj 477 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.131 309.686 155.086 321.641 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.815 518.483 188.77 529.212 ]/A << /S /GoTo /D (page.16) >> >> endobj 478 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.309 297.731 206.264 309.686 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.865 518.483 205.039 529.212 ]/A << /S /GoTo /D (page.24) >> >> endobj 479 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.799 285.776 179.754 297.731 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 172.81 506.418 184.765 517.367 ]/A << /S /GoTo /D (page.13) >> >> endobj 480 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 112.695 252.537 119.669 263.495 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.52 494.463 251.475 505.412 ]/A << /S /GoTo /D (page.13) >> >> endobj 481 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.315 240.581 162.289 251.54 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 460.709 217.413 471.539 ]/A << /S /GoTo /D (page.20) >> >> endobj 482 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 150.882 228.626 157.856 239.585 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.393 448.754 229.348 459.583 ]/A << /S /GoTo /D (page.21) >> >> endobj 483 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.3 195.078 179.256 205.908 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 196.023 436.231 207.978 448.186 ]/A << /S /GoTo /D (page.17) >> >> endobj 484 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.343 160.833 152.317 172.788 ]/A << /S /GoTo /D (page.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 198.454 402.916 210.409 413.795 ]/A << /S /GoTo /D (page.16) >> >> endobj 485 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 132.371 149.316 139.345 160.384 ]/A << /S /GoTo /D (page.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.276 390.961 143.231 401.8 ]/A << /S /GoTo /D (page.18) >> >> endobj 486 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 140.172 137.49 147.146 148.32 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.288 379.006 169.243 389.845 ]/A << /S /GoTo /D (page.18) >> >> endobj 487 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.77 124.967 171.744 136.922 ]/A << /S /GoTo /D (page.9) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.817 367.06 174.772 377.999 ]/A << /S /GoTo /D (page.13) >> >> endobj 488 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.299 91.29 174.254 103.245 ]/A << /S /GoTo /D (page.12) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.111 354.976 139.066 365.935 ]/A << /S /GoTo /D (page.12) >> >> endobj 489 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.44 79.334 147.395 91.29 ]/A << /S /GoTo /D (page.12) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 130.957 343.021 137.931 353.979 ]/A << /S /GoTo /D (page.4) >> >> endobj 490 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.686 67.379 185.642 79.334 ]/A << /S /GoTo /D (page.13) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.185 331.075 170.14 342.024 ]/A << /S /GoTo /D (page.14) >> >> endobj 491 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 377.209 693.835 389.165 704.664 ]/A << /S /GoTo /D (page.15) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.469 319.23 150.424 330.069 ]/A << /S /GoTo /D (page.18) >> >> endobj 492 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.994 681.312 453.95 693.267 ]/A << /S /GoTo /D (page.32) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.007 285.367 153.98 296.306 ]/A << /S /GoTo /D (page.4) >> >> endobj 493 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.318 648.007 419.292 658.836 ]/A << /S /GoTo /D (page.8) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 171.305 272.844 183.261 284.799 ]/A << /S /GoTo /D (page.21) >> >> endobj 494 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 635.693 403.6 646.881 ]/A << /S /GoTo /D (page.9) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.131 260.889 155.086 272.844 ]/A << /S /GoTo /D (page.21) >> >> endobj 495 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.695 635.693 419.65 646.881 ]/A << /S /GoTo /D (page.33) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.309 248.933 206.264 260.889 ]/A << /S /GoTo /D (page.21) >> >> endobj 496 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.066 623.967 414.241 634.926 ]/A << /S /GoTo /D (page.22) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.799 236.978 179.754 248.933 ]/A << /S /GoTo /D (page.21) >> >> endobj 497 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.317 612.012 459.491 623.011 ]/A << /S /GoTo /D (page.21) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 112.695 203.544 119.669 214.503 ]/A << /S /GoTo /D (page.4) >> >> endobj 498 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 327.645 578.258 334.619 589.098 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.315 191.588 162.289 202.547 ]/A << /S /GoTo /D (page.4) >> >> endobj 499 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 353.13 566.303 360.104 577.143 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 150.882 179.633 157.856 190.592 ]/A << /S /GoTo /D (page.4) >> >> endobj 500 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 344.323 554.358 351.297 565.187 ]/A << /S /GoTo /D (page.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.3 145.89 179.256 156.719 ]/A << /S /GoTo /D (page.13) >> >> endobj 501 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 542.114 346.066 553.232 ]/A << /S /GoTo /D (page.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.343 111.449 152.317 123.404 ]/A << /S /GoTo /D (page.2) >> >> endobj 502 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 473.379 529.88 485.334 541.835 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 132.371 99.932 139.345 111.001 ]/A << /S /GoTo /D (page.5) >> >> endobj 503 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.166 518.204 398.121 529.322 ]/A << /S /GoTo /D (page.12) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 140.172 88.107 147.146 98.936 ]/A << /S /GoTo /D (page.4) >> >> endobj 504 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 506.248 382.679 517.367 ]/A << /S /GoTo /D (page.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.77 75.583 171.744 87.539 ]/A << /S /GoTo /D (page.9) >> >> endobj 505 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.244 494.234 372.218 505.412 ]/A << /S /GoTo /D (page.7) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 385.548 681.312 397.503 693.267 ]/A << /S /GoTo /D (page.11) >> >> endobj 506 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.957 482.498 424.93 493.456 ]/A << /S /GoTo /D (page.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.689 669.357 370.644 681.312 ]/A << /S /GoTo /D (page.11) >> >> endobj 507 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.917 470.104 405.872 482.059 ]/A << /S /GoTo /D (page.24) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.935 657.402 408.891 669.357 ]/A << /S /GoTo /D (page.12) >> >> endobj 508 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 496.502 458.149 508.457 470.104 ]/A << /S /GoTo /D (page.25) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 377.209 646.014 389.165 656.844 ]/A << /S /GoTo /D (page.17) >> >> endobj 509 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 424.844 419.043 435.673 ]/A << /S /GoTo /D (page.14) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.994 633.491 453.95 645.446 ]/A << /S /GoTo /D (page.34) >> >> endobj 510 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 412.54 387.909 423.718 ]/A << /S /GoTo /D (page.6) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.318 600.186 419.292 611.016 ]/A << /S /GoTo /D (page.8) >> >> endobj 511 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 359.605 400.923 366.579 411.763 ]/A << /S /GoTo /D (page.6) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 587.872 403.6 599.06 ]/A << /S /GoTo /D (page.9) >> >> endobj 512 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.471 388.849 410.445 399.808 ]/A << /S /GoTo /D (page.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.695 587.872 419.65 599.06 ]/A << /S /GoTo /D (page.33) >> >> endobj 513 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.608 376.904 405.563 387.852 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.317 576.146 459.491 587.145 ]/A << /S /GoTo /D (page.24) >> >> endobj 514 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.828 365.058 386.783 375.897 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.826 542.393 400.781 553.232 ]/A << /S /GoTo /D (page.11) >> >> endobj 515 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 348.178 353.103 360.133 363.942 ]/A << /S /GoTo /D (page.11) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 327.645 508.52 339.6 519.359 ]/A << /S /GoTo /D (page.11) >> >> endobj 516 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.742 340.59 420.716 352.545 ]/A << /S /GoTo /D (page.6) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 353.13 496.565 360.104 507.404 ]/A << /S /GoTo /D (page.4) >> >> endobj 517 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 340.965 307.285 352.92 318.114 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 344.323 484.62 351.297 495.449 ]/A << /S /GoTo /D (page.2) >> >> endobj 518 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.487 295.329 368.442 306.159 ]/A << /S /GoTo /D (page.20) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 472.375 346.066 483.494 ]/A << /S /GoTo /D (page.3) >> >> endobj 519 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.826 260.889 403.8 272.844 ]/A << /S /GoTo /D (page.8) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 473.379 460.141 485.334 472.097 ]/A << /S /GoTo /D (page.23) >> >> endobj 520 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 332.627 227.583 339.6 238.413 ]/A << /S /GoTo /D (page.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.166 448.465 398.121 459.583 ]/A << /S /GoTo /D (page.11) >> >> endobj 521 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 329.877 215.628 336.851 226.288 ]/A << /S /GoTo /D (page.4) >> >> -endobj -525 0 obj -<< /D [ 523 0 R /XYZ 78.37 808.885 null ] >> -endobj -209 0 obj -<< /D [ 523 0 R /XYZ 79.37 706.717 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 436.51 382.679 447.628 ]/A << /S /GoTo /D (page.4) >> >> endobj 522 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F16 251 0 R /F15 227 0 R /F54 228 0 R /F68 259 0 R /F62 230 0 R >> /ProcSet [ /PDF /Text ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.244 424.495 372.218 435.673 ]/A << /S /GoTo /D (page.7) >> >> endobj -566 0 obj -<< /Filter /FlateDecode /Length 2344 >> -stream -x\n6߯% -?u_-~jyIpz7IcҜLqz3by99$WʹWK0^1>?KC@5Y - ڕ(VL
v>58ut2i뉴J
N6]Jx8:<(䉲[iՆ]R*U^wVՁS̘;G)q9R -Rd$MZ`paDDg"?Z?Q%S
\zIsN<+ ->TӛԿ!FQSwjCW<ʷx'OuWf%2^ъHY[_d.jQX_iI
nqkwǟzh^8OiSW5wF]b8*3nVyVSv(k9u|$9QZZ^hKIPn̂\Da2g\fAB(0t P? -7-g -NI/M2Y褜Fq~*xI}]foQ}'"Ƿ -&!HʊoWO,ӓt\_?
6聠24<GE(e(ͳ5eiPxl}y/ -^6LApmzSA`1rE>˓!>`)r+9S4AůA{TQKKwiR np4 -&"f>9 xvݘ1 -K_,֮&p%>cS2J+50sy(*Xa6~ -LG\̥B*W ~l5hf`Sc#k2%<+wGx9%38t-/2sWui%>C~!`D%m !Bz쑮aH(f`S;Ѡbgn\rnTJ2% -yg6KU.UYRTbKM1GBQ^@JN -KC͏$7̙7Ӽp1MQ/ʼn,gPk͡?.<?aA<?xC/bK[R<P2JL&hH1fW]{V}jW|c7tG,TqG΄Ƒ.SҌzsmTx)l'og54&s7OLǂ=@YY\lLt
' -}iZ31 ]WzbpI]DjfR=ziCym%UoVYΐIι1R[b|Uv6 -8Q2,Y֚D삭x|v` q!&,Q7 -v(Xm!:)in`_n_F7r[rt</5ĥR<Gb#?ͪK;ȄvL"}{QzS=v&fٛ? -0cOAjdÝbpft*%*QAf=^۳/WQH -endstream +523 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.957 412.759 424.93 423.718 ]/A << /S /GoTo /D (page.5) >> >> endobj -565 0 obj -<< /Type /Page /Contents 566 0 R /Resources 564 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R /Annots 568 0 R >> +524 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.917 400.366 405.872 412.321 ]/A << /S /GoTo /D (page.26) >> >> endobj -568 0 obj -[ 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 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 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 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R ] +525 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 496.502 388.41 508.457 400.366 ]/A << /S /GoTo /D (page.27) >> >> +endobj +526 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 355.105 419.043 365.935 ]/A << /S /GoTo /D (page.15) >> >> endobj 527 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 548.017 158.683 557.083 ]/A << /S /GoTo /D (section.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 342.801 387.909 353.979 ]/A << /S /GoTo /D (page.7) >> >> endobj 528 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 526.099 152.217 535.065 ]/A << /S /GoTo /D (section.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 359.605 331.185 366.579 342.024 ]/A << /S /GoTo /D (page.6) >> >> endobj 529 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 504.131 220.7 513.148 ]/A << /S /GoTo /D (section.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.471 319.11 410.445 330.069 ]/A << /S /GoTo /D (page.6) >> >> endobj 530 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 490.234 194.339 501.302 ]/A << /S /GoTo /D (subsection.3.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.608 307.165 405.563 318.114 ]/A << /S /GoTo /D (page.14) >> >> endobj 531 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 478.278 233.98 489.347 ]/A << /S /GoTo /D (subsection.3.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.828 295.319 386.783 306.159 ]/A << /S /GoTo /D (page.14) >> >> endobj 532 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 466.443 405.437 477.322 ]/A << /S /GoTo /D (subsection.3.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 348.178 283.364 360.133 294.204 ]/A << /S /GoTo /D (page.13) >> >> endobj 533 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 453.93 270.892 465.885 ]/A << /S /GoTo /D (subsection.3.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.197 271.3 427.152 282.248 ]/A << /S /GoTo /D (page.13) >> >> endobj 534 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 434.443 177.522 443.409 ]/A << /S /GoTo /D (section.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.742 258.896 420.716 270.851 ]/A << /S /GoTo /D (page.6) >> >> endobj 535 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 420.057 292.441 432.012 ]/A << /S /GoTo /D (subsection.4.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 340.965 225.591 352.92 236.42 ]/A << /S /GoTo /D (page.23) >> >> endobj 536 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 408.55 160.018 419.499 ]/A << /S /GoTo /D (subsection.4.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.487 213.636 368.442 224.465 ]/A << /S /GoTo /D (page.23) >> >> endobj 537 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 396.595 216.297 407.544 ]/A << /S /GoTo /D (subsubsection.4.2.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.826 179.195 403.8 191.15 ]/A << /S /GoTo /D (page.8) >> >> endobj 538 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 384.63 256.157 395.698 ]/A << /S /GoTo /D (subsubsection.4.2.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.689 145.322 460.645 157.277 ]/A << /S /GoTo /D (page.34) >> >> endobj 539 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 372.684 245.437 383.633 ]/A << /S /GoTo /D (subsubsection.4.2.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 332.627 112.017 339.6 122.846 ]/A << /S /GoTo /D (page.5) >> >> endobj 540 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 362.552 290.319 371.788 ]/A << /S /GoTo /D (subsection.4.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 329.877 100.062 336.851 110.722 ]/A << /S /GoTo /D (page.4) >> >> endobj -541 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 338.851 391.211 349.86 ]/A << /S /GoTo /D (section.5) >> >> +544 0 obj +<< /D [ 542 0 R /XYZ 78.37 808.885 null ] >> endobj -542 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 318.826 217.522 327.942 ]/A << /S /GoTo /D (section.6) >> >> +213 0 obj +<< /D [ 542 0 R /XYZ 79.37 706.717 null ] >> endobj -543 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 304.928 256.267 315.997 ]/A << /S /GoTo /D (subsection.6.1) >> >> +541 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F16 257 0 R /F15 232 0 R /F55 235 0 R /F68 265 0 R /F52 233 0 R >> /ProcSet [ /PDF /Text ] >> endobj -544 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 292.973 231.599 304.042 ]/A << /S /GoTo /D (subsubsection.6.1.1) >> >> +585 0 obj +<< /Filter /FlateDecode /Length 2264 >> +stream +x[Ɏ8W&#t>mמ3DR3˓U`ؖb?O~[qS$$C7o8МLqz?/Wq9Gx=Q*8WC`Ik~?&ҷ@_~)Bs,4ʕHL
v>58uFl)L
N6]Ӣ]pqULiDY-j_N`)wU#^od<=ЌHEWxJ'#tlB'])3#"k&K_9e2z)ىCҋpYr753"+z=^ 6z[r״"N^3+a_lFoiXs%,iޖ2!c^)<% +ߌ2j&zT3RV\LEjkBW.-[Zֽ+jUUW8Nhڔ+aģB0 ʌM PV8}(V$*Wu֝.e&I܄B9/1,4RcmJݮ~PD强M<I}I5Zp.%qh⧯T4~cvq/;{8~_BQ +]AH:>Hn]b} +@`~c"c|(u(͋]+t<m%xA\abnk;1a7+(9uW*:އo%Q1-sͷJ~MkPО2jitnK H'Ͼ<Fe{`D0q FÝ-^nl#R[i%b
!'t^9=Q"1~HϹl[ä[G0b[4%D{thb.-tt +jQwAilޮ5^W5Ra2I6cU̧uYTbKM"1Gb~ZV@FN +KC͍߉אfd[y
#$&SRc8Tj5ăSX5rÛbXq[B.PA"ඐ$ge":Ahu㬽fGUs۬ ++<'+ڟc!?N"enP֟-49OZ-:k8BùtԌQػx\ >or.;~tPb?F<e=^ d07ZEѝc=PbЕaWepv{Q|;;ow +kI
4: +ͤ2[NV*QjeuFyT_k}
.\27%x(631Ҩ?ͼ6)9Jl$҃'il/3cYټ1{6wѵ)7ȝw} +%kW^e鋮;qEW</Zwr N/5
ۿ~ +endstream endobj -545 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 281.018 232.157 292.087 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> +584 0 obj +<< /Type /Page /Contents 585 0 R /Resources 583 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R /Annots 587 0 R >> +endobj +587 0 obj +[ 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 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 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R ] endobj 546 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 269.182 265.064 280.131 ]/A << /S /GoTo /D (subsection.6.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 547.78 158.683 556.846 ]/A << /S /GoTo /D (section.1) >> >> endobj 547 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 257.108 300.371 268.286 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 525.862 152.217 534.828 ]/A << /S /GoTo /D (section.2) >> >> endobj 548 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 245.272 274.01 256.331 ]/A << /S /GoTo /D (subsubsection.6.2.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 503.894 220.7 512.91 ]/A << /S /GoTo /D (section.3) >> >> endobj 549 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 235.031 264.755 244.266 ]/A << /S /GoTo /D (subsection.6.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 489.996 194.339 501.065 ]/A << /S /GoTo /D (subsection.3.1) >> >> endobj 550 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 221.362 250.11 232.241 ]/A << /S /GoTo /D (subsection.6.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 478.041 233.98 489.11 ]/A << /S /GoTo /D (subsection.3.2) >> >> endobj 551 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 211.12 276.738 220.136 ]/A << /S /GoTo /D (subsubsection.6.4.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 466.206 405.437 477.085 ]/A << /S /GoTo /D (subsection.3.3) >> >> endobj 552 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 199.165 265.45 208.331 ]/A << /S /GoTo /D (subsubsection.6.4.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 453.693 270.892 465.648 ]/A << /S /GoTo /D (subsection.3.4) >> >> endobj 553 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 187.21 281.779 196.375 ]/A << /S /GoTo /D (subsubsection.6.4.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 434.206 177.522 443.172 ]/A << /S /GoTo /D (section.4) >> >> endobj 554 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 173.541 258.855 184.42 ]/A << /S /GoTo /D (subsubsection.6.4.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 419.82 292.441 431.775 ]/A << /S /GoTo /D (subsection.4.1) >> >> endobj 555 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 161.586 284.868 172.465 ]/A << /S /GoTo /D (subsubsection.6.4.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 408.313 160.018 419.262 ]/A << /S /GoTo /D (subsection.4.2) >> >> endobj 556 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 149.631 282.1 160.58 ]/A << /S /GoTo /D (subsection.6.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 396.358 216.297 407.306 ]/A << /S /GoTo /D (subsubsection.4.2.1) >> >> endobj 557 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 137.118 361.512 149.073 ]/A << /S /GoTo /D (subsubsection.6.5.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 384.392 256.157 395.461 ]/A << /S /GoTo /D (subsubsection.4.2.2) >> >> endobj 558 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 125.163 443.664 137.118 ]/A << /S /GoTo /D (subsubsection.6.5.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 372.447 245.437 383.396 ]/A << /S /GoTo /D (subsubsection.4.2.3) >> >> endobj 559 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 113.207 456.307 125.163 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 362.315 290.319 371.551 ]/A << /S /GoTo /D (subsection.4.3) >> >> endobj 560 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 101.691 362.538 112.649 ]/A << /S /GoTo /D (subsection.6.6) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 338.614 391.211 349.623 ]/A << /S /GoTo /D (section.5) >> >> endobj 561 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 91.568 169.492 100.694 ]/A << /S /GoTo /D (subsection.6.7) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 318.589 217.522 327.705 ]/A << /S /GoTo /D (section.6) >> >> endobj 562 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 67.937 229.457 78.876 ]/A << /S /GoTo /D (section.7) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 306.524 209.124 315.76 ]/A << /S /GoTo /D (subsection.6.1) >> >> endobj -567 0 obj -<< /D [ 565 0 R /XYZ 78.37 808.885 null ] >> +563 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 292.298 283.923 304.253 ]/A << /S /GoTo /D (subsubsection.6.1.1) >> >> endobj 564 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F53 226 0 R /F15 227 0 R /F62 230 0 R /F54 228 0 R /F70 285 0 R /F71 292 0 R /F16 251 0 R >> /ProcSet [ /PDF /Text ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 280.9 296.944 291.849 ]/A << /S /GoTo /D (subsubsection.6.1.2) >> >> endobj -586 0 obj -<< /Filter /FlateDecode /Length 871 >> -stream -xXɎ0+QEJ$`` N&zέ=Xfv:|0hG χvt9`PvB')
?V;J')Mx.GEЏ
o/P -v֗"t+!LUR~lkm -u#g:ƀpz>հ]LTa>(Рv> -endstream +565 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 268.826 256.267 279.894 ]/A << /S /GoTo /D (subsection.6.2) >> >> endobj -585 0 obj -<< /Type /Page /Contents 586 0 R /Resources 584 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 440 0 R /Annots 588 0 R >> +566 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 256.871 232.157 267.939 ]/A << /S /GoTo /D (subsubsection.6.2.1) >> >> endobj -588 0 obj -[ 563 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R ] +567 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 244.915 231.599 255.984 ]/A << /S /GoTo /D (subsubsection.6.2.2) >> >> endobj -563 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 758.132 143.002 768.971 ]/A << /S /GoTo /D (section.8) >> >> +568 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 232.96 276.939 243.959 ]/A << /S /GoTo /D (subsection.6.3) >> >> endobj 569 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 746.057 223.799 757.056 ]/A << /S /GoTo /D (subsection.8.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 222.838 264.755 232.074 ]/A << /S /GoTo /D (subsection.6.4) >> >> endobj 570 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 734.102 277.208 745.061 ]/A << /S /GoTo /D (subsection.8.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 209.169 250.11 220.049 ]/A << /S /GoTo /D (subsection.6.5) >> >> endobj 571 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 722.147 214.513 733.106 ]/A << /S /GoTo /D (subsection.8.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 198.928 276.738 207.944 ]/A << /S /GoTo /D (subsubsection.6.5.1) >> >> endobj 572 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 710.192 261.178 721.19 ]/A << /S /GoTo /D (subsection.8.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 186.973 265.45 196.138 ]/A << /S /GoTo /D (subsubsection.6.5.2) >> >> endobj 573 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 688.334 219.843 699.233 ]/A << /S /GoTo /D (section.9) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 175.018 281.779 184.183 ]/A << /S /GoTo /D (subsubsection.6.5.3) >> >> endobj 574 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 676.329 259.525 687.278 ]/A << /S /GoTo /D (subsection.9.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 161.349 258.855 172.228 ]/A << /S /GoTo /D (subsubsection.6.5.4) >> >> endobj 575 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 663.925 364.391 675.88 ]/A << /S /GoTo /D (subsection.9.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 149.394 284.868 160.273 ]/A << /S /GoTo /D (subsubsection.6.5.5) >> >> endobj 576 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 642.496 355.794 653.504 ]/A << /S /GoTo /D (section.10) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 137.438 282.1 148.387 ]/A << /S /GoTo /D (subsection.6.6) >> >> endobj 577 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 630.491 200.147 641.449 ]/A << /S /GoTo /D (subsection.10.1) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 124.925 361.512 136.881 ]/A << /S /GoTo /D (subsubsection.6.6.1) >> >> endobj 578 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 618.535 199.161 629.604 ]/A << /S /GoTo /D (subsection.10.2) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 112.97 443.664 124.925 ]/A << /S /GoTo /D (subsubsection.6.6.2) >> >> endobj 579 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 606.142 220.74 618.097 ]/A << /S /GoTo /D (subsection.10.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 101.015 456.307 112.97 ]/A << /S /GoTo /D (subsubsection.6.6.3) >> >> endobj 580 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 594.625 187.684 605.694 ]/A << /S /GoTo /D (subsection.10.4) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 89.498 362.538 100.457 ]/A << /S /GoTo /D (subsection.6.7) >> >> endobj 581 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 582.67 219.981 593.629 ]/A << /S /GoTo /D (subsection.10.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 79.376 169.492 88.502 ]/A << /S /GoTo /D (subsection.6.8) >> >> endobj -582 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 570.276 375.36 582.232 ]/A << /S /GoTo /D (subsection.10.6) >> >> +586 0 obj +<< /D [ 584 0 R /XYZ 78.37 808.885 null ] >> endobj 583 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 550.74 108.74 559.756 ]/A << /S /GoTo /D (section*.1) >> >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 234 0 R /F15 232 0 R /F52 233 0 R /F55 235 0 R /F70 291 0 R /F71 300 0 R /F16 257 0 R >> /ProcSet [ /PDF /Text ] >> endobj -587 0 obj -<< /D [ 585 0 R /XYZ 78.37 808.885 null ] >> +606 0 obj +<< /Filter /FlateDecode /Length 912 >> +stream +xYM X +30R4zέ=_a/%iJ>Dqf砇/OT ;\~<ؠ3pPQp5|{њ'3iPkkg߸؆ &v<ŏMk@}g1V%c]KÒ<8X=Fc4ͶL5i.1$qo\ooUhxL1A'˕U qB~gO3{uNoi%~|vZOhG-!0N +endstream endobj -584 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 251 0 R /F15 227 0 R >> /ProcSet [ /PDF /Text ] >> +605 0 obj +<< /Type /Page /Contents 606 0 R /Resources 604 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 447 0 R /Annots 608 0 R >> endobj -1 0 obj -<< /pgf@ca1.0 << /ca 1.0 >>>> +608 0 obj +[ 582 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R ] endobj -2 0 obj -<<>> +582 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 758.132 229.457 769.071 ]/A << /S /GoTo /D (section.7) >> >> endobj -3 0 obj -<< /pgfprgb [/Pattern /DeviceRGB] >> +588 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 736.214 143.002 747.053 ]/A << /S /GoTo /D (section.8) >> >> endobj 589 0 obj -[ 3 [ 602.1 ] 5 [ 602.1 ] 11 [ 602.1 602.1 ] 38 [ 602.1 ] 68 [ 602.1 602.1 602.1 ] 72 [ 602.1 602.1 ] 75 [ 602.1 602.1 ] 79 [ 602.1 602.1 602.1 602.1 602.1 ] 85 [ 602.1 602.1 602.1 602.1 602.1 ] 91 [ 602.1 ] ] +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 724.139 223.799 735.138 ]/A << /S /GoTo /D (subsection.8.1) >> >> +endobj +590 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 712.184 277.208 723.143 ]/A << /S /GoTo /D (subsection.8.2) >> >> endobj 591 0 obj -<< /Filter /FlateDecode /Length 20 >> -stream -xڛ"w -endstream +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 700.229 261.178 711.228 ]/A << /S /GoTo /D (subsection.8.3) >> >> endobj 592 0 obj -<< /Filter /FlateDecode /Length 11571 >> -stream -x| |UﭺU%tv& &Av"J IL,cC@D ""(.({TԙqGapF'>PVu6P~Ҟ>n{sJxr%*oܱ?3oԵF{1B+8EH4̽Pr~cC;zEBү%$ƀϯvTM(OjĄeuG6Wƿ.ŵ7|T%2Za-mO2/VZ}-Zq}W}[{mJtZBbtMD&D/A& ^U1`T1D+ɪDPeRQ_'QQC*l3,#/h? ىDF1+yJ,|^2yFˑ+ׄC'·?EbqG|EW35NgEG;e -z=KߥJuRHSzPzJ+~--SNy%_oz:M_XiuW=NEٞjϰ;Jj:s)1y:*;:u<x!Gs ?iN9ϹYȹĹsAobQ<J2YWSJRRF.eKtɮDWkrF\9\Rw;ѝNs+1sMpI<<9<E<Oڳس4y<yxlyHOɚ5;!+jg6?wa^̻6wH3737wgN7ܲs FOE -.#"7wIk8S,+Ľď0~;T+K7II}қ[{M&->y*V{vY;v}u}88:_:qv<x㷎?9>v|8ICsBRgo8<BLU)_mJXIٮts%\C{uW&+ pg'-ܯ_)̅*=={<u:Nϻ#=$kJeYMW$GIZU˹iv%D$jtO;lǣE*`}{wEE]:VG+sѢhVD^VFJR{eEuO?WN|bωϝx3':'N<MG7G<Z -h䟑#_ED>|M"DFD<y*dG#D~y8PdG_F5rKdSȪHS!R"C#[$.b"RFĞhϩ#=pC=;{vl[{li빤➚9=zz -{L3잱==czrzՓՓq8{$$9~O^OI߇}~8c^_~C[m:tá>RgjﯽĉZ?m~ٗe~Wvq8X8@^B
[ -`
o -h| -p\k -bO80b}`%'ꃌ^݉r2}O>8'G";k40_ιDC0c+ -{F@(#ŃYPOI1)Sx1v -0F.*UA~~<WtWj`82W -bW
UA}PP
KA
Wc -t`c#b%j`,k`1]qnR.}\v
n
5Rc6pQgr0
97* -I%i$d!d(FĎΉR"n$HI&hr!^2<2MƑdH&d -J9d9GRHfYd6CJd.)%H)'RIH5Od!b\Le}
YOBn'}<Hvɯ.y<N#)y<KsH^2LډHKr$בm$dx4N#=n*"rtU ݤ RK&/T!)^dyyE@4&1kdlGV^4N%7k&r=Ln"[ȍ6&NWKv1$eb!:n`tkKy '1yߋ$h߅+¾<t`{Wj-Vz ':y] Au_<yTDȹvo[%KVl!Hu@`z"ogrp|jpmv/2V-饒Gꤟ͢.#d3λ͆zaVs
݆TSZ&2w^M^:X)eбߛwDB[DU#f+*: K -tW9
{UK - /7ӎ+$y}9 t_IɆd!GHFCg>< rX"$&gxĉ6"%iēdSwY}/ -7 -yB!
5oi+ѠF XraB1{|zr
yx\U=~%x:!f!oT?VSCON2`rzD]:.GFM4(WԩՑo}svc3-N<y36
bZjq&տ(r`=sGXٍke3&-X{5]PZG9m:r$Kq:{h%ÆoAH -d[,lq9.1ΌԎ˗mBiA"MkBj%.f6
(Ib*K3$TN|dIDظ~!5nE=).tRӄk_~I=`F۲^kH*Pd}s+"Fٻ(<\PiH8*WbmHjFŲ%dL%AdJ`J[ohD2$)HE9&8z0uxLC
v?.n<[4i$݇4K,\kuxmq⳧,/XCnZ׆s;<kFun,%q&Y,B~M nl$ff5"WL*u8VNsEɮ0]/%~.ܫ]=[Zv2of:C%<
NҒ<}1 A -7=I46$o6l0%%F-Em߾}Zc'%
!<aQ4h{>l1{&%̹k5#*r71_!vÇ
C9==-ɖhMe'[,r;#ݙ!id4[]閑!fC|n3-cpZ2SiIB$I\C״ȷӎc+go}&;zы݇S0%iT {+ɠx#_%^3oACrڇ$䎟[5)Iyg5}P7X0w1=^TҲxuOuW-2}UO]qn~gJ˖M>7ebobT^n:C^)/1/XG2f`r洔=gH:p\]*H27~}ZaKqCg[Lbu;9iBVvS+b -α&K19ɊKɏW\R:Y(\(-LphWԕ>9pac8,c:`}PrXVO!4/KMMS3rH>LJHPV^CjftiĦѫ*aN͞۷F+#RiD!ق"O$d"#u1Z㕖p )㡿ѤwC9a˼uO̼j`x}ԧ/"Ջ94qb Mv]ٰ7.5Ā_%m<d":$"C,CmINKKO!lې>l萴T TNIIl82v7wQd%=ùBɹ½#ԋ;
wm2wF9n>1>}[+6YZeeK lx<r$Ӵg/,}e6?>R<M xx˰PJT"+z)=2nP)i?=Mo#2yiu{%vnWɓMnvJY4|U?lwK/AO9 $Y](3%E!_dlY1Z'I&`aym·ovJ}8VѸn_Q0Gr:(B"2[,F2ْJF!bYDS1C<Ҫƴ#bgw~qE<fJ*{u JN:Z$VjwK NI?>'<%ߙ|2e֢ڡ'T?#~Jދ~7:[Os=!LFV3WGY"y?OQO;|J|Y$%_N6TXi6yM~|^߳/MFH1*p-n`} 3HB]!XS},xq>6tq>6$q>F'# [3LP<(%3^\X cX*}LXa>0~Vd(c}GqBJxJ[IsIgH,3U82bBf`M -)!XQ!iG!B* -|-^.W)lnV*٪RW%J]!R|UimnS_S+d9ZiL5b\Rl /<)e -RkBX_"PSU;~@1~1nc̍1c|$a=b[0\Hx $Nchboyn -6+mg)\g5Z%?Rt߷pOxYU`lW}M<c֫6IlQ;^b_рuLF}_
b7c}B?Sa>3IӒ7.gѫkޮW -m:d%smhW@di^8iw'B+{{_qΊ!^=cgv_2ϷXҮHGr|7Eap_Q~\Z=GXk9)'eb|qUMJ0ĝbVRn1f|NKQoF?(jeEG1U<̖؎k6ͻQúj;lE}\JU9$JПeW1Rl\+,]Bn#Fќ J\uUܞ\gM2,t)h$X`FXͥ`^!ӧg\YMr˕i F%W&^U\R|5CEBЏэlNa^or;s3=fEfޕ2ۋ˟ -&{3X9St8sKUc1֗hXuVŽ;<{1Um7P-C}Zh(ԿgYtu9ӭb1_U}]kY<a1?㳼WQlݿR;4Z1=XT?OW]8Nn<w}]iۯ*<moVڙӿ;{J~c݇VgݯZ/J#ۙt~O-\i֡LK/}[`BgOPyqޙ0:lAO탞~1]~m3U0'sug}6a~z_1jaI=Ic<-/R2*(`\_xkm^h)ޗ1?c{A n-J~0"@1 -և;ash.I{=p2&(TplKu~&IgS10-M:#]3%vUZ\kP/lWB L8mc:-o`nho -(̶7]Q5XePNUX3.ISk}EW.aC`{C.oEx;G?ߍan{j^g&ÕmmyzMfM`AY%?*6z@>=[p
~}+JSVJV[*JTk*ݯWW}/ S}//@_Rz,Rb}aoto}^{TVJgDgӧOmO*pyJNS#*^CC[dC>&?[}ޚ84}
e>ӻUzם.iTzJo_$>"nUm[*e+yJoRyJoT&ޠҍQ'
-
iLOׯ+WkuWJ^)_^[ ]IVU[شVW -endstream -endobj -590 0 obj -<< /Type /FontDescriptor /FontName /GMFTGJ+DejaVuSansMono-Oblique /Flags 4 /FontBBox [ 0 -208 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -208 /ItalicAngle 0 /StemV 86 /XHeight 547 /FontFile2 592 0 R /CIDSet 591 0 R >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 678.371 219.843 689.27 ]/A << /S /GoTo /D (section.9) >> >> endobj 593 0 obj -<< /Filter /FlateDecode /Length 477 >> -stream -xڍOo0=8!h"TD -z
fE쬓kVVhof̘я Ԟ-goԪ^F*dB$H={ժRjUwc+YzAߢG:VKb>r_]+T6vWu'?rf4쪆J{r͋')rU۞[or&C'J -}1/BlvTAy9ög7hAG6(}ӜȺb2&` -ٽ5JӪ;_W0_*AmSy$on36_O9?pT*K458y(Gh(%YdL.(݁%^z;9h -@OpYg))(g -1|g:0[7K{>w_ZŻ+j7ZIjl{|6K/?' -endstream -endobj -408 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GMFTGJ+DejaVuSansMono-Oblique /DescendantFonts [ 594 0 R ] /ToUnicode 593 0 R >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 666.366 259.525 677.315 ]/A << /S /GoTo /D (subsection.9.1) >> >> endobj 594 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /GMFTGJ+DejaVuSansMono-Oblique /FontDescriptor 590 0 R /W 589 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 653.963 364.391 665.918 ]/A << /S /GoTo /D (subsection.9.2) >> >> endobj 595 0 obj -[ 3 [ 602.1 ] 6 [ 602.1 ] 11 [ 602.1 602.1 602.1 602.1 602.1 602.1 ] 18 [ 602.1 602.1 602.1 602.1 ] 29 [ 602.1 ] 31 [ 602.1 602.1 602.1 ] 68 [ 602.1 ] 70 [ 602.1 ] 72 [ 602.1 602.1 602.1 602.1 602.1 ] 78 [ 602.1 602.1 602.1 602.1 ] 83 [ 602.1 ] 85 [ 602.1 602.1 602.1 602.1 ] 91 [ 602.1 ] 171 [ 602.1 ] ] +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 632.533 355.794 643.542 ]/A << /S /GoTo /D (section.10) >> >> +endobj +596 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 620.528 200.147 631.487 ]/A << /S /GoTo /D (subsection.10.1) >> >> endobj 597 0 obj -<< /Filter /FlateDecode /Length 24 >> -stream -xڛ$ -endstream +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 608.573 199.161 619.641 ]/A << /S /GoTo /D (subsection.10.2) >> >> endobj 598 0 obj -<< /Filter /FlateDecode /Length 12999 >> -stream -x|
\TU9{
f.32Y"[B -CdefeminYfmm[nm@ֶJkϜs=9ys/00_yM/U)xcB -Huw -
- -(zPAFc;Z[߲(0q)qWǕ-(x$n8b)bGf`ccc8Nu*I -:;:p~U!
(HV(ljNO٪4rGB`;P2\u\ -F3SBwܽ],w< - -(x(h - -n"
-*.wQ@ -V=ڶ˶vZ]\PqpǾ:^xW;xc{Ǔule掇;츫ceǍ3:: -:tL1cLǨA^T/ߩ!z@R3u:\BMQեWcjK5_/|[= VGk\k~}Zc[cZΙ$--[i9r-jyC-ϴl2ږ-3Z[&Ljߒ2etKRepҿoKlKLK薨{bi1Zl͟7X;o5|KfksxsXYjhjotx{MG4=l3MO7moz鑦MM7oz遦_4״鞦5Mj鎦Mj=}pK~}S/zSϝuSkN>SO?YvrɄ/Ey'/~~~gs?ٌ5jZ'cBd[mtq&
a?ƿUB؊#hKо:Kj -z -:^ -t3l ai߅6K'-3u`>ߠգڛt`vNoZ{h=>jU8s$5&Ĺh}RQ5 A{-m'Nö"Sb/E]+Evi@D؎i!(#m ;Ch -YQ܅b+0(uNޣ+n}lV)¿VaDm}R'qbݡZ
+ODZ#W=Z -,x6Ī !qN|gF$qAdAwR8Z<%阊KCګAסq <WIh$GR' 9"# b
hcACчI(@ptw<-ZJ>svrϖGBnsA{UUQěɅmegz|8Mz<8!x -t W9Σ:= -¬ĩ愎NZVmd9 D8g]t^|#:1NĴs5NĊE::Cd^N[9ͩѧF_vNo"Z {BLj!PCJN<*ɠQ#*c@}C*Z -tUWLɠݟ*S~Q_
_A*FQAt2Nn<0ڳ=7 --/hA,ފ>|:Yp>%A$8ǂuII:Ylr2;6 v ~v -qۂZbN,g:Y6@{ hAې,Eڐ_ڀ%ά6oC>mц-Δ6͞k6<[0*rE ܳV;t -8s:=~-'vUPoJǭ m8i!~C_ɈH$b$&b H8b#vIz(MzKOp;q -^{$[?sa<K^uȣ|zN*^Md]AZP3fCEh=5oKk@{\wPʍr
-4m+</%zv#bY'6@ޓQdMeA?K5<|%쟸dƄ(JyRt.fNm]=~I<#K\ yv,2$K{0a["2ҶA6VF⤳d%}r2R+'$2b#$_3SykVPoKfP=
JcGGL4kK0'͓CS -f*4&{|m,vag]H 3oRZv]m -r )qBD -eLRBI\AlLJ/{=!_.Z֯I]oywS,{Y.t2'qLq1Oc-n&p>z֙:so7e]zNEVߕ :1#ڴWt76wH-f6uۇb\A}8n\8hʆƆEsrrGsn6LU~bk9{D֊֊-J4JTݢ6oTKmy薋oC귬O<ę!o&X
E$lR@6[;4w0bx(VrŊ[7<9zes:,= z^NZ$VoK|#zs+ˑgq'N|I8uOۅĬ{m" /%{/Ժ>ff&(Hb.G>w&O1HsQm -i.:ѠQpAJ\qJ̅?,Ԝޗ=iޱq@O"|lg9MI($d!%RlH6&ɖ4Fӄ4&Iir!͘fJ3YI>d.+5ϵl![a"n[[[L[[,n[vnnnnnArA|pxt|2_ ڊJs幆ƹ&mhl:9,wtv%r v[TDn>BOM9 )+Y{9쨂QrԷߨ)t$ESK%.zűg|q|g&Ql(l2
&[v0x'mϤ#4"a@jchov?Son?&} Rl,_,K6
QEA 6@͎
cCcB;ToInjњY=etDK6Ka3z4v˯{zOe;wNiC{3]իeI_z -hF}bAU^>l }kXF9vȍ4VcErՃLsvڵD:LQRS\[VUjj{kح}ΦpotTa#Gewb qWIcT8pcߴ}WcmCוퟹa؍Ձ^{m8Ά=t еIN&sZf[k:6F }RτzٔȦCn Y*^)/Ͼ3BG{_;y՚B#Hz3j^cGkk}:1 m2i{9 -E;v,l*:>$Ot,Syuj UFV s_zk ڋt=gf/ĹUa/2<daƽ2]c[>lzI#,Qf[өA*ĄP=vfp0~Tzzkzy9j5K'5>NKIbd=}<&WoZGtDxx&ʑ -2n-T!!BRK#b}7xۚ+}ia
Ur'敞<LGaY+\\2l@5^s c_K48Q5)*ZFq^{u,SJc!5Ơn%Cr) R, Lc2U2à9J>=sy*tlƿO[,Feh-JpiqP=Ja&<oa1bGk5diJv%1Q,0KeX* -H
rl20;fnjP'RZr9})}_!65
of '2f:+1Y$%פx$ -;p#S<ԈSf0<HߎCgkgqύӊj3OLS9ŐbL1S,ibbM?-.ͱ-KuŬ]g]u_F!Aهv%FɫOPpSc&ٱ#4-7N~_=qqpj6]Uj6+n`qsMč8)6tِHTߵ֨֍;gL ZN"UsqB~z=%mo6oVs;W۲y]
/3>Do
V@&;O%,aY.Gy!><8%=FlfWB{ -A9cKteKZ`+GΦuF1+oٵr\1~H4.~ tz.;3K<R&X-1N$1#3k8b4YCQkŮk73[$l1Qz>̦N^:L`u!]:^BBkkn֢eKi}R|ӝ[~o.y1)隢)־mv1t+[u]G+c1%vzظl -W:Ҹ]Oi /4m{?3:!?> #WD*P#jl0L1F!lh$%!rя
eө=2:'o=
fJf;p.ham0 -YptO&,mr8G
j8mT ]b#}MM& T-̖H&b vfs#Ɲ'N#۴wwm/Rq&pC߶#J:w~uד~\xF{⯴_t]=I38*w9s7[cg{Dt ]OwZˬ=>)LgKjHq:>;fitW+>1&>&柾%!d,N6jȗfP;_Ft}.9S<@D:F6zG/R/0P_&V!<7[Hponz PJ;hSbE>xI/P/XV/PH\BPB -~xDaWo%rE4RArRG2E!'0^ f($sH-h$2B|Rū_fi&ѻz(\35 -TsJb_n_^,SJ̊ںҫT&)*ڬZ0PY'nMWJ}U&TT)%+JWQ
.˩8rTi)U*SUp#d:p-VKG遚ڊ`4l;1114ݧu!w -Rm`q^%C<Gί< |XC&'tQ}Rm4PH -ntb?ĦvO]7 -V] <shp~%\@H|*J?Sv= -r P;. - -]Ґ;yq).frTwrfH -Z.W)B,*+9:~>e-x`v҉&bAǹ%h#bz.%i\:ܭw;;xCT -9&9yNYuרeԥ6v֯jۥg2K -ǃλ"d˽ZwZNu=PwIPsjUH@[[7`F)ㅡ,RK\t,*8yf~ C.
팕)\g_S%]yk5L |_9
\24IYj6i蒿G_Ό^z.fS7wG]۫\||]F~.毪n֘y6塱n9ѣcsY8eq?-ˏ
}!_WY&\vv!3nz"P\\+?_sեwS
mz8gJxZNO,݊X,v -Et5>)5еu:byWx[1kc9O*rḋiyf_Έ c5Gs^:~XXZPԅŲ.KM"||+m|\') -qg:h]<gq'8/G!50Vv5K[Mf=,伧b4mvh"#p'jTO[b;:M]b_rrMU!O -3rKi.9'$68k< Q.F-"n.mads tOe/ghyZ̥v*r
5}ڮS.Y~˅iKRȖw\Gm||;3sڅi\n|C&YQgnn^Ox\]I'˽ca"/[*.1?kDc5+d[{ݬu<{
va*r-俤wV7]~^ȻY](UfX20ԐӺ!ӏBrvQ'w:܃9rCuY+Z)ީۗݫKUi-v,<ϭ1Ҩ33ONΧdo귳slԽ:]kvU&@.m^-W>'/jAۭGS'T'j~,PeW㩸SS
wu虪[X'B|k.D/O6uh/Iy\i&dމvUJI`ap$xd6_Z<=PSt]\Cl*=vJ],Pe=ʊZ55WU{(ePf~_URł`I]J!6<z+-
VVc6a@U-&q
3⫭
V,XZ_iU,j(XV6w
k -p
tq@PjQ+Sj}P$ -I"iBMV&+Egdf+9EJAaWF]^eFNi -ffR'(y)9yĴ"%PəZis&*X_L)|4*'Hc650k.32srsgy 9y `ddM(T -exɛP]fC 0/U3qR1U3gO($̇ʅ -)Cɞ-.dfgLj֙?UѴ9yJf6Te*Y9S.mMsڂyم^ ;+G9Y|&lKrqͷ%A]Oq~aq(3rJFaN&|+4Bj>~VE?te/)
Tiy*VO*>ƻ3"<z\ڑ
_-} -nϔn/blv-ˤ[Uv2nVR+IeUHeuaR}o$.k#YmXUV`U\Ϫ*JUEr [ULeUVZJUVBlRT6OesU6Z4fopq]QlʦlZ>ҴTV"e@eQ,OeSPir)Xi()IJIٱ$MD? Yv,XV]ʊdYBzÏ2,Q HJ,UzZnet9LRZKk~j]SٕX+JQ*94JS)la*KT]We)}Y2zɱ,[Jφz{ICFAkK^̫^28A98
JT6Pe%FޙRB6*sEDH.+CeLʜS;;TmWa}UGe* wPw&ICY¼^Q,#UfLf6;鶋I,B5,YØU]8lnfbi%ZTf&fz3T&2)1(ǾgB -endstream -endobj -596 0 obj -<< /Type /FontDescriptor /FontName /TNBLMB+DejaVuSansMono /Flags 4 /FontBBox [ 0 -208 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -208 /ItalicAngle 0 /StemV 86 /XHeight 547 /FontFile2 598 0 R /CIDSet 597 0 R >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 596.179 220.74 608.134 ]/A << /S /GoTo /D (subsection.10.3) >> >> endobj 599 0 obj -<< /Filter /FlateDecode /Length 512 >> -stream -x}[k0+|oJ0 -MZPձ&YD2_I'na H͜3~LgԪ^W/eFKUݎH{Ӫ*cr#$odu
YtO濷sIG_*|nlrLݍ1Wt[+'ιc%B]XKo"Jn~=\\ێ.yTt&v?zW-HdBQMs&q/ϙ)lf+/Fh]O[)AmSVKy"ojs6]O9N@0<FL!C;JAhz-@4@spp t=A( /@Bt!@+G1j_ -3(M@)h@DIĘDI{e)%PBYe)%{&ЙAgbTgP@Ye3j㭻l6Vfepgw}_S.p-/87D -endstream -endobj -407 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TNBLMB+DejaVuSansMono /DescendantFonts [ 600 0 R ] /ToUnicode 599 0 R >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 584.662 187.684 595.731 ]/A << /S /GoTo /D (subsection.10.4) >> >> endobj 600 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /TNBLMB+DejaVuSansMono /FontDescriptor 596 0 R /W 595 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 572.269 375.36 584.224 ]/A << /S /GoTo /D (subsection.10.5) >> >> endobj 601 0 obj -[ 68 [ 602.1 ] 70 [ 602.1 602.1 602.1 602.1 ] 76 [ 602.1 ] 79 [ 602.1 602.1 602.1 602.1 602.1 ] 85 [ 602.1 602.1 602.1 602.1 ] ] +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 560.752 219.981 571.711 ]/A << /S /GoTo /D (subsection.10.6) >> >> +endobj +602 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 548.797 223.328 559.756 ]/A << /S /GoTo /D (subsection.10.7) >> >> endobj 603 0 obj -<< /Filter /FlateDecode /Length 15 >> -stream -xk` -endstream +<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 528.822 108.74 537.838 ]/A << /S /GoTo /D (section*.1) >> >> endobj -604 0 obj -<< /Filter /FlateDecode /Length 10706 >> -stream -x{xTչ{=3I& .3gd ( $@$7pS&I2d̄- -E[V"UxCk-kJ=jZiLƞR=]kM9}eZ@I&[%uE78W@+||a!ƍQǧ2]vŬ 7jnn:vW<LHREK?wf?!L?IO ϓZڢj<wPobx5=6uH+<+@t ?#Ĺ#訸ޙ,OgL<S4k-}4JAE|2 2IMS(D
jpM]G~"1U7قQSbI$ Ml&ZxA>N EX"OşoO"h'^MwЛ}5z\Z+5J.tZNm -y|`4
Ɇ,0ϰp5\ebpV
3<kxp
um֛߶kk!g$[ma+ͷ]j6ٮ]o'4{m.}G۟3}?n?reJJjǥ5͎'Go8~SQ)*2errri蔝αNsNu8:R\WKqMs] -vzU]qYqn{{{Bw]q/ssAwJfݏMr̻;ᄐ=',Tzj=+<{:=y%?)`J
SS.k -r -==O-=<8u{@\gx\<«BpV$.+k QpPpXjnitP319M/ϐW>y`HDP -
W50 -[7rf>GG/ -(06kn`(sׁ{ٟ?co? XQֱ%ǯ984K - -|C*ags -p9w@X5Ujsrz(-P@&w{;`ĽĽ(ut_nt7#@6.kܹ[7G<ɞ|(Xwx -^ -3@1@A:G(0LqlQ gGgu#Pp >t'ߏ?,h@|}{ߍ#~[|[`|e.^_(^__ϏčqSO]YuP-Q窳tuQ]D5GV3լJN[85ԔSOyNrxj©qrN=##;{؇b~yC?vyتX}Xilal^XAˋ)1{lbl|,'66ˊeci1k,%fcI1)&?Y_?WrKW?oo7/O'[xپ}>{X}=HC}﮾;w{߷ٷoW};vm뻡ﺾ-}]}Ὰ>{ݽw{cszg[[[Zzͽ^>}?h?
_wyWOw7j\J}#/>zMj[gm?$_A{N b/^@ۀUP/P?cwANpNŹÉ8?%迁vO%Vj</g>u@?5p
_E@:NSN7joCH#BJ#&46 -DhHcho҈Eo݇h\Oh:h¿R#8Jalw
BKgig_ ڃJ?_hE~~b=6HeqLgA6vh=qhy;KK1@F&pMHB
YIUh'h$Uuh$!0X.Hڊ0
Qݠп-cmh!Nҷ?lU#_Iw_# >7<t4EFFm@L
XY:JN#Qo%HzIOok1BW+dJ24'$ -lX -|X^DXA?V`Yz4`2
*Xpװ!2k35W[6-hb']Va6;BХ36@u6UɥhHF!66-/F;l?AybG.[]Ϟ>bn\;&z|5ʰ~F_vW툙Q@f -=3hKWѢFّoj5viaGi`ǝӎz`-ЎZe; -h*Y::jdD=rց]\lR52A5WF&Ntt&&~tOhم:ꂾ&@iA-&xj80݉UL
=ׄ:F&L fn`
ߙP8o ݹ `==U#(lLOnލؚ^Gݨwbq&
\&䙻F#+Zj u#?ܗC{9{ {udBvn Ӎ<q`@Y$*{LpßI5JBQcGbY
`$FI\C>$7yԨ<` 6Gypj~C]C]27<oFy{rΌz 3rJ̐쁏gFf`3>2c`,d=id>fƞ.g3Q=1#42C!=FfMugJFТOA<̨CSSK3TЩG3U^Ff%/E^7f`ԋ}8QנU5 -3p3I -^o<q LJUf]Fq 6 -bodHɸ5Zcq -o fa.i"OH(~@" -kX
DvH-*xj4G%ͨ"5Rx*i<5rӼjV)++չ+X*t1^V1\WآHិ#-0o-Eo$㋓qg1<+Q"G<1y3ҝtgDF脳}
qyWdc5`!c
Ȝޞ{}2Nc)IIʶ8hvf~^=QT>v?=鉴i'福^<m}c2)6aykd7iyY{ݛFp2gwmܮٳsΜ=+2g_(Tg%-[}o~OR/7^M<+m|Q/~pȌ%睙>`wx;LNkIN309R7PH!iY=6 -[Q:V"bQz%e2mt'1=m̢l룹&xͷv.ֵkm?Nkf 9Da5u@Lˠf";EE;9+%s'ڕBi-9MIr5{B!";qi'8 -mq!䪿֝zxՃϾYRHn]4je6Yl@ѳGQH\ -p̆)NWpXUןޠx$]XmŞ1I&Y- ->a4#IO3oyR祻\v\쐥UOQ|jHNSOCO?Y>ʠ:L("+Ũ$ŬX - -+Xh+:$-0/,H^`̂&E9҇uffΦn
}WT4ϓ>~k\{iixIscW\unx͐EV^텰=L/Dk2-ۓw1anv&+gO0mf",\P}R=س}ŃWo5Һkt
ȯZp"sgZHKpNRó]˦"ZВ']Dl n\iӹ¸?ƩVcxiF>!U@}A {BlVs;לְp+mC)g::EE&/;VIOQ\KG( -eGhH{6Wԏ_>:q˥kx/δf$3ɤZ< -bOU<@zXa+]3}k嚝y9ܩOt͏̢SޒZϝ=.h0b12=REa7%FaM2Kf! Y;3sZRK.v$c\8!:ǘ=9
\CRi}ޘf9jYS<U!0I7'-)VoFafa7;b-ߞW&;'ym!څL|I(7P[~lnKɬsϯ)y~[ s͟{|ט}=oBnjjJH[+='> $>!\n-_~'?vN.+9~oEp!d{96Y>Ab<!h('YGKM1o[Z]Un9Wr{izߡĕ.6u߉Cg -xD{;;k~26mg;ID]:2b{~.A=AxN8I'O'/I~b2n܃ETb)0 7cvYKI}HupޗޗIuH8[Hئ-&)IN-Jf9_IIxzKa}ٯ}{ާdР%2)zD\by5z?%#O|G[IvC#wĝD# -n^f(> -÷>-'_^ ѭhkyES -"CJQY#%$L-`"}M|rMv"(B<yl
#/R -1ƽc!Dtap~m5-]@Kis>Mm`Pa
m^Wkw詤IkTpBQtgk12/|ҡsOp`55$x&jv
CG6jnFs7 4תxCXaGΙ!AJ'sH? ʱրQ6!K:9']-&Duϴ%GRӶ;,:㙈PFY9k^/:9MێADGGnȢ.JB"xMm-翙/o'cF#VJ&"eA]y<;U>p0hl17+_XS>=R
u;5Z%}I<C|Rط6m6ī -OLN5J'kr)8 -<?'7콋gJjx7#2̯/2Ϭ+1ZLV,r<~?ja.:Rr.1Y%jc{XjPź%G3U'6m
qp5m
^kEBhCj> k$3BfO)_Ϥ.㣚fzkm @Au -|n=G,6%ΡrG˹}%\Bybpf,bq^ d`tF[62:_%ܾ2 ->~,
Eo55LT"n#ŐZcnZ0"P^4gCѯңh0eJe|V uݠ5_>a8.Y=H&(1,x5WjWF~߉;Щt;? hUx 6jШV=k3E;WuM>ڭݍ~#m
L[KkuߋpeѼxv7kRx?L}\6~[qxԭbTAav,gC>aоj!1n>w~=7iL8'uSer$PlZ")/hӾlUFIBE%m%4\#On G~X
)n#`A! -͐hK@^jt6!pR=K\`W|H1<x-E>MVx2(uh|的ᐿ10,
pF,"J~IW0B.k3sJ[[ie2Ca%@0;UuGfʁmstTwjp;BHJa}1F4̠P?3h( -=E"(JwJנ@ag+mpV&hJ|fB`SS-\^0D\[k['2Z80_0qJpaR8|>u"̙,6 -L/"hB_l -FfE6jeCSZYA$&v7ar=4X?y`MLezzqʒ2N^Q^ZVJ*+V/W0~RX)Z,+**ejjZcU*W-Qb]UuRQ^Y^|Ϊ1,]%+W{Ub0-QjJj-(UjTוG)VW-2FkVז/YZŢzzڒҲʒe^a5LUh J -niIEeYRU]|JYXSJViE%^dIYݐ6M7glڒ -RWSuڲE|&|OTpuUWՕ],-"`@ [5W\Ƨ~Pue^xbq9ɂWb>buKJ*@W٦@Ga[On<RO/GV -7\lK嗕V~VJ!VLBBV
BbYdP͑ ;A, -(&Vַ0)"ةf$ -s5F%jhTi0<n.`'WB~ - -
_Q UzEێ4Cێ*mk]#m[`ܺK6xX㹴kZM6ARҨ_*mPo3]K3Tzi&6F^MWeӕdR+rY4Zgg˵{5iٴ&V/W~Ze*<Ch-ϠK%gʹ4C.LK3ZbVEo_ysй[c-z~4yz;/Ξ#^Fg̔gЙhF\3zF^S-O/9 -endstream +607 0 obj +<< /D [ 605 0 R /XYZ 78.37 808.885 null ] >> endobj -602 0 obj -<< /Type /FontDescriptor /FontName /WYCBGG+DejaVuSansMono-Bold /Flags 4 /FontBBox [ 0 -207 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -207 /ItalicAngle 0 /StemV 150 /XHeight 547 /FontFile2 604 0 R /CIDSet 603 0 R >> +604 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 257 0 R /F15 232 0 R >> /ProcSet [ /PDF /Text ] >> endobj -605 0 obj -<< /Filter /FlateDecode /Length 434 >> -stream -xڅMo@+K4T8+mxwnevD ü33;/UM=Fk/ؙ -eƈA?"JcgkD=LrSj_9qi8.ZQwLw#XG]UM6'qS%WN -wXq==mRl -endstream +1 0 obj +<< /pgf@ca1.0 << /ca 1.0 >>>> endobj -406 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WYCBGG+DejaVuSansMono-Bold /DescendantFonts [ 606 0 R ] /ToUnicode 605 0 R >> +2 0 obj +<<>> endobj -606 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /WYCBGG+DejaVuSansMono-Bold /FontDescriptor 602 0 R /W 601 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +3 0 obj +<< /pgfprgb [/Pattern /DeviceRGB] >> endobj -607 0 obj +609 0 obj [ 28 [ 603 ] 35 [ 544 ] ] endobj -609 0 obj +611 0 obj << /Filter /FlateDecode /Length 13 >> stream xc`` endstream endobj -610 0 obj +612 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 748 >> stream xmRmHq^͌QQ1tQQ~vݭJIQ,S|XbȾEDз>xB݊D0l!GMM݁:m:$csZPY+R @@ -2349,10 +2247,10 @@ xmRmHq^͌QQ1tQQ~vݭJIQ,S|XbȾEDз> BEt|.:CࠜHQѠ19 '41rR
դPp驑ahz*2Aܺ>01J]{xuEݎ̴jphx<tԫ{ty{w<eR&/<YQeuynJ1ƓetlTA-;aiM|Sj%7ͯ4veR &
j#ǃ<n>.QٛϞS#
G)SK_!l͡ȰRq dd</c^&i|2O'RD/K~}. endstream endobj -608 0 obj -<< /Type /FontDescriptor /FontName /WIKKRQ+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 610 0 R /CIDSet 609 0 R >> +610 0 obj +<< /Type /FontDescriptor /FontName /WIKKRQ+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 612 0 R /CIDSet 611 0 R >> endobj -611 0 obj +613 0 obj << /Filter /FlateDecode /Length 365 >> stream x}R]k0}ϯ{(haRͮ ]?f˶W\@M$Ƈ%0 sܣ.xdL!Fas @@ -2360,37 +2258,37 @@ x}R]k0}ϯ{(haRͮ ]?f˶W\@M$Ƈ%0 sܣ.xdL!Fas ۸gwݜ(s(}I3ynZ*MEתv./2m!ߍ endstream endobj -398 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WIKKRQ+LMRoman7-Italic /DescendantFonts [ 612 0 R ] /ToUnicode 611 0 R >> +405 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WIKKRQ+LMRoman7-Italic /DescendantFonts [ 614 0 R ] /ToUnicode 613 0 R >> endobj -612 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WIKKRQ+LMRoman7-Italic /FontDescriptor 608 0 R /W 607 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +614 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WIKKRQ+LMRoman7-Italic /FontDescriptor 610 0 R /W 609 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -613 0 obj +615 0 obj [607.3 ] endobj -614 0 obj +616 0 obj [758.1 ] endobj -615 0 obj +617 0 obj [892.9 ] endobj -616 0 obj +618 0 obj [446.4 446.4 0 877 0 0 0 0 0 569.4 569.4 ] endobj -617 0 obj +619 0 obj [777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ] endobj -618 0 obj +620 0 obj [ 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 ] 66 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 109 [ 525 525 ] 116 [ 525 ] 118 [ 525 ] ] endobj -620 0 obj +622 0 obj << /Filter /FlateDecode /Length 21 >> stream xc` endstream endobj -621 0 obj +623 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2073 >> stream xڍVTẄQ2UfUʪgE]+ѵV I$d G#s0E[z\ֳǰQQizZY︷gy{}w{qL&pZ
9֯gMl1d}9.fVW`0K)/HN!LDŽ$#wd Te#yj$=? @@ -2411,26 +2309,26 @@ _`4Ҁp
A]||pdnZDr|xcnWs!EATuA{}d R`#w_#sµ9YXbЪ!܁#j9&V_Agʺ5o%)lH ϓlyMAX endstream endobj -619 0 obj -<< /Type /FontDescriptor /FontName /HKOFRT+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 621 0 R /CIDSet 620 0 R >> +621 0 obj +<< /Type /FontDescriptor /FontName /HKOFRT+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 623 0 R /CIDSet 622 0 R >> endobj -622 0 obj +624 0 obj << /Filter /FlateDecode /Length 449 >> stream xڍAk0C =nK0I͚me4Iddn,a<oF{>qupqKz5hz[wlQlhA7 [bh8J(yFSti -2iT{HHkq
2F*<S gɬ'LKɬ%Xa,Ezq~nd|g/?7}!>us]q8_" endstream endobj -300 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HKOFRT+LMMonoSlant10-Regular /DescendantFonts [ 623 0 R ] /ToUnicode 622 0 R >> +308 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HKOFRT+LMMonoSlant10-Regular /DescendantFonts [ 625 0 R ] /ToUnicode 624 0 R >> endobj -623 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HKOFRT+LMMonoSlant10-Regular /FontDescriptor 619 0 R /W 618 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +625 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HKOFRT+LMMonoSlant10-Regular /FontDescriptor 621 0 R /W 620 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -624 0 obj +626 0 obj [ 27 [ 525 525 ] 32 [ 525 ] 34 [ 525 525 525 ] 38 [ 525 525 525 525 525 525 525 525 525 525 ] 49 [ 525 525 ] 52 [ 525 525 525 525 525 525 ] 59 [ 525 ] 61 [ 525 ] 63 [ 525 525 ] 66 [ 525 525 525 ] 70 [ 525 525 525 525 525 525 525 525 ] 79 [ 525 525 525 525 525 525 525 525 525 525 525 ] 91 [ 525 ] 93 [ 525 525 ] 96 [ 525 525 525 525 ] 101 [ 525 525 525 525 525 525 525 525 525 525 525 525 ] 114 [ 525 525 525 ] 118 [ 525 ] 120 [ 525 525 ] 246 [ 525 ] 272 [ 525 ] 338 [ 525 ] ] endobj -626 0 obj +628 0 obj << /Filter /FlateDecode /Length 34 >> stream xc``?} @@ -2438,7 +2336,7 @@ xc``?} endstream endobj -627 0 obj +629 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6614 >> stream xڽztyF1Cѐ3 @@ -2476,10 +2374,10 @@ yDi::Ǥ4]RRB6 4sldh4<'ZSfv̘NCVG endstream endobj -625 0 obj -<< /Type /FontDescriptor /FontName /XMTOPM+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 627 0 R /CIDSet 626 0 R >> +627 0 obj +<< /Type /FontDescriptor /FontName /XMTOPM+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 629 0 R /CIDSet 628 0 R >> endobj -628 0 obj +630 0 obj << /Filter /FlateDecode /Length 698 >> stream x}Ko0Ev/Z!$ABJUШ[H ( >V1SU?|{α{}Ozob0lky]\oƔv콭l9_ڪrK[.U/ceK|5j~_?W/9^N6Nm՟\[dY8i,}N}rV.D6>TlI'{Q*z8͵yiu4\u}{
-M[#{/ѕl.Ms2^KNvΆ
eVlaYr4]+LG\ɘk[` @@ -2487,22 +2385,22 @@ x}Ko0Ev/Z!$ABJUШ[H ( >V1SU?|{α{}Ozob0l tj"$ϩTs҂%*xD AB&GDn5%t5%ODZC^h<T)ᔔn:ǘ.aA'+.mf^aVY5w-Y; endstream endobj -292 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XMTOPM+LMMono9-Regular /DescendantFonts [ 629 0 R ] /ToUnicode 628 0 R >> +300 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XMTOPM+LMMono9-Regular /DescendantFonts [ 631 0 R ] /ToUnicode 630 0 R >> endobj -629 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XMTOPM+LMMono9-Regular /FontDescriptor 625 0 R /W 624 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +631 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XMTOPM+LMMono9-Regular /FontDescriptor 627 0 R /W 626 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -630 0 obj +632 0 obj [ 35 [ 580 ] 47 [ 624 ] 50 [ 558 ] 55 [ 536 ] 72 [ 513 ] 77 [ 613 ] 81 [ 636 ] 84 [ 558 ] 96 [ 602 ] 98 [ 458 ] 112 [ 613 ] 116 [ 613 ] ] endobj -632 0 obj +634 0 obj << /Filter /FlateDecode /Length 23 >> stream xc````Td`h`X endstream endobj -633 0 obj +635 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1806 >> stream x}U}P$g;]eb/Db4aR|qw;dOLViꘙiftZH%/h;I3ywٝw~Ǽ((W3שuyj;ٙ84VF)DOx*D%"yq*c#v)'KG6nɾHcIEҐ'gPM&蜬fDdg1b7S;cFcm
iYԾ,X(PuT]VRJ~j0Ҍb
,H5ZJ2Vi
ՠe=JJ|DuF̤(#MS&{**KT*Ju2"qK3 @@ -2517,33 +2415,33 @@ $`<H2MA9,1w1@l3'@:)[wq!F_7 ^ d\vuy>c- endstream endobj -631 0 obj -<< /Type /FontDescriptor /FontName /OWSLYP+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 633 0 R /CIDSet 632 0 R >> +633 0 obj +<< /Type /FontDescriptor /FontName /OWSLYP+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 635 0 R /CIDSet 634 0 R >> endobj -634 0 obj +636 0 obj << /Filter /FlateDecode /Length 422 >> stream xڍj@@&5
mbeifNҁ8#.PJysպa0Fua5u#=b0E.E{mĹdǎ[!$ދuQU)n"lKPѤC
F$ nPJ͇'3UمCC8~r=H=Yeũi^BY4>I_hJ8M}kY!֍hOmIܞjqGgcSu)H|ig`x5!Uj[(B$t)4s4yZxzrtyZz:J|d(cCݥ~7]ڸ~s&$OBjnwmi$I endstream endobj -285 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OWSLYP+LMRomanCaps10-Regular /DescendantFonts [ 635 0 R ] /ToUnicode 634 0 R >> +291 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OWSLYP+LMRomanCaps10-Regular /DescendantFonts [ 637 0 R ] /ToUnicode 636 0 R >> endobj -635 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OWSLYP+LMRomanCaps10-Regular /FontDescriptor 631 0 R /W 630 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +637 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OWSLYP+LMRomanCaps10-Regular /FontDescriptor 633 0 R /W 632 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -636 0 obj +638 0 obj [ 28 [ 500 ] 43 [ 444 ] 50 [ 444 ] 52 [ 778 ] 72 [ 278 ] 96 [ 392 ] 109 [ 556 ] 112 [ 528 ] 251 [ 444 ] ] endobj -638 0 obj +640 0 obj << /Filter /FlateDecode /Length 24 >> stream xc`````h endstream endobj -639 0 obj +641 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1371 >> stream xڵTmLSg-ZvһEޫC"JȢAP"G+Rʕۖ @@ -2555,10 +2453,10 @@ xڵTmLSg-ZvһEޫC"JȢAP"G+Rʕۖ 1)D(.cF(]GH9){mł0~k:\TWTӰgz endstream endobj -637 0 obj -<< /Type /FontDescriptor /FontName /UHLNIO+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 639 0 R /CIDSet 638 0 R >> +639 0 obj +<< /Type /FontDescriptor /FontName /UHLNIO+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 641 0 R /CIDSet 640 0 R >> endobj -640 0 obj +642 0 obj << /Filter /FlateDecode /Length 412 >> stream xڍ]K0+yQv:?tu]r6mRb| @@ -2566,123 +2464,122 @@ xڍ]K0+yQv:?tu]r6mRb| \0s$e5%`Sȝ"Ķ> I{*˾mkt]%YwnY536*3?CzNBLqڊB3-W.!>+Ir$s>x]z=]ބXiJ=]B16oЖM6km=-qfܪeߌ:Z-g endstream endobj -269 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /UHLNIO+LMRomanSlant10-Regular /DescendantFonts [ 641 0 R ] /ToUnicode 640 0 R >> -endobj -641 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /UHLNIO+LMRomanSlant10-Regular /FontDescriptor 637 0 R /W 636 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +277 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /UHLNIO+LMRomanSlant10-Regular /DescendantFonts [ 643 0 R ] /ToUnicode 642 0 R >> endobj -642 0 obj -[ 27 [ 743 511 ] 35 [ 460 ] 43 [ 460 ] 46 [ 755 511 ] 49 [ 678 460 ] 55 [ 307 ] 59 [ 460 ] 63 [ 511 358 ] 66 [ 307 ] 68 [ 307 ] 72 [ 256 ] 74 [ 897 818 ] 77 [ 562 ] 81 [ 511 511 678 511 ] 91 [ 460 ] 95 [ 729 422 562 409 ] 105 [ 332 ] 107 [ 511 ] 109 [ 537 ] 111 [ 743 460 ] 116 [ 464 ] 118 [ 486 ] 125 [ 562 ] 168 [ 511 ] 251 [ 460 ] 257 [ 460 ] 277 [ 460 ] 502 [ 307 ] ] +643 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /UHLNIO+LMRomanSlant10-Regular /FontDescriptor 639 0 R /W 638 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 644 0 obj +[ 27 [ 743 511 ] 35 [ 460 ] 43 [ 460 ] 47 [ 511 ] 49 [ 678 460 ] 55 [ 307 ] 57 [ 511 ] 59 [ 460 ] 63 [ 511 358 ] 66 [ 307 ] 72 [ 256 ] 75 [ 818 ] 77 [ 562 ] 81 [ 511 ] 83 [ 678 511 ] 91 [ 460 ] 95 [ 729 422 ] 98 [ 409 ] 105 [ 332 ] 107 [ 511 ] 109 [ 537 ] 112 [ 460 ] 116 [ 464 ] 118 [ 486 ] 125 [ 562 ] 168 [ 511 ] 251 [ 460 ] 257 [ 460 ] 277 [ 460 ] 502 [ 307 ] ] +endobj +646 0 obj << /Filter /FlateDecode /Length 38 >> stream -xc``N\BAh40n +xc``L\0%BpAH40n endstream endobj -645 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4771 >> -stream -xY XSg>ODizN\VV.T*U]d$$bkTbg.3tipg i:s<<$$'[<aX6LXk3olٞ*xnM{j.#'j6"&QdŝLn -IK$zAXc?|c˼B|: a!o1ʚz/|ҥEBKlen\jzN Mdpb[b[%Q>7:_Mefr3ܢ%/,&f|Qyryn 'fv$$r_r<\n.,\(+&_$L܉, ش.vkBlL/f -S1oOm -sÑ'y3HyyYB^E^C"둍HقlC# H"ه HGr<$"#mʹcS|Yldk`\!MOlvÔt/yb?zy3<YDۜ̚_OEpw+a7HZNȒf2FfMZo}j!2fy6[s؎;*@W4RgɲrFP+QI2ER؈öޮn!$94
hO-B<GJHG$ȥo]e+Ձ589ZLHssp:F?K/X~4Z`Énoih -T -SoPp`655J3Z|=5{LiU.H+;=ҳ~sm愈 0 -F7~2ZMq༕9}-S1s@(1ANai6ojem0aR/M|!}U|v.6IBF]N7L?A/54_l$<C~@ԇF1'Wu}М_Kzd3
&^lv -ؖG~wؗ]2\1bJpzmZ;M̧0uzh%}Nwh16DM -ci֛˘{^k%X٦b|,] -?4e -pN:bs.<j^`#{lpфrgm{cwۗG\$%<巧Y<)MWl,~qD -g'p8X];%/ (}: 4{,Y1f+u]dKPLL;t5۫n -A8"f|~x\(DGFd2ykK5r.lM<Kert;Aޮ
6smuYP_ -,f<b*5+&fpF_U$#N2Sjs[K -Y 6hz2[ea<@6PWQ`ti+1e6mBPڞm:rP~UIG?O~~뗭0k
EYc,5vbiǀ٣֛ͪ2"9}?cE3`d1SoN_We8!5R6zޢ,lϿZ7-6/aq2SDPl4b:X=nkTXʠ>@F0P߽c.3X9
#
f8wVצ, -qa~I3Y{aQƷ|ΨiT -c|qr08e۫83e[[֥TJL9gRht
_Z"M"YZB~>1vURD7pQ˴j5hɹ!ԙ!GNÆy5U<@c"Cb`*SDKys7]&
:lx %&ݷw˯x@-gbI}P{{#v@W7cjf +647 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4199 >> +stream +xX xSe>J-9ʀ^elBEi.IH$m'itK=-(mY + ׂ:0WY3:suOν-sqg9999;dd`\}ǚ;}}4Di܌ߒBOfH"8BdX=ߑa"'Gs<BF`C r6}9c>| + 0,(eLe<?`U|A#b?`ύW&קe%y\v/>1/rq|;g9Ea!;[/K`'p0M +9BN&E9[ٯy"Îg9vH$X6(;/̞ES8?c_KڔU$&"v_Ҹ ?7i+2u+*F<<<G"#KrUd%ـlD6#[dd"C +"BĈiE(@0:k2g,JSIN:29zr~laޘQp2CSz$MQO˚v0}a4}>&733}46 wC%3#*4@j2#L4`6d̠UHGrL*`FKhl5ۍmz5@c!ulks}B)K-C%TH>`#z:qIj5Գ(n(U `|9 +'Y
*"E.}͕NPl!a#Z^ vĮrf_WSaCsŇt
=@v;`Fl\֜i +A\㡡>|q[0kM:2[2wP +e}t4q˰جu6Qm68
4RLGZ(D(tdO4j-KLMs;[!t6 +';
4e +%9{.'1t)!_fh{w՛dd^^(ƺN"Z!ku$ʰe` + +|50SrT\^v;:$ψyF舘sp.jvoXQ=tD@hX ,7||oH3rAK*NMPqr#K;tb>7vwF(+ \voq<3ƟZB%mVU6Q|q`?^!ry^+@4yqj Nɧ;x*n6j6U +~0&uiŏA&n1'a#P;ƚN0;A.YrG~Fz{q'-*@t$A +3a4F/4$8)DfiNE3a3vcJ |n$Z69Ȧ\qZ'_2-{4c9֏ZI6Z>5oT^Mv5٘~8y}kF痋<7]篝g7-.+U{8vBwTc5s2UsM_wSs)y$/R͆
p2Iw::+P<g4'x0:T?P(zRRۛl
&Ҷ>P9o]{5j~19?{a5 +Urc|mKx.n%x;DkLzeuZcvP_1Z͚y澖HFPe]iluY +Y!no:2Gẹ;[VͦBx:LO8 ͂Y_ #Տ5_oVgz<FT&_uTD墼EG[<9Ed1; +L8c%3 +F&,E:AH()ZhkcT95ejt{ꁬ_,Iڍ-;_:fT*Pk8`4*`Gf.7x]pzadp_f/9wTM-Oo[,vVxk(P,-@˓pc!,!\*IP̃CG:zj7뎪ArØL~u,P_41`d}"P<mF7**j)gE|,V}X[Lؕ-'(tx>yu|>Ə*|g'ZPBPswu(QHZ=W +_I=! <5j$zݫU@'?iv~: +Yp\Xj5G}Xq.MMO)?ӿoaza/oxUg +h:ki<FQcϽ sg!碋U^Xh0##@ClwoM#2>wZ+-P}!,2 endstream endobj -643 0 obj -<< /Type /FontDescriptor /FontName /IXSCYM+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 645 0 R /CIDSet 644 0 R >> +645 0 obj +<< /Type /FontDescriptor /FontName /IXYGAZ+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 647 0 R /CIDSet 646 0 R >> endobj -646 0 obj -<< /Filter /FlateDecode /Length 541 >> +648 0 obj +<< /Filter /FlateDecode /Length 528 >> stream -x}]0+s1im;RpjT˚D`&9сa]Aurxɏ^#%9K?{:o2YH5I)Fgѷ|+G2uA'B^"J1st'?s~nڦRXjSSǓ"Qr'Jl_V=H)r%1'SIfW݇ZI%{#c5_hL2)աK20B::g{4zҔyЭGoU#_h=^UtVȡ+uR@S,'UP'\o!M#Q:gR -BP - eV'PZasA: !a^= \:q <1!q +x}_o@&:@mUِlDͦ7dDߙ9MuM4w\/~m݅mmA9ohUdB$Hu*e3Y7=ѱ_->lw7{szU.=f}~*S?72Ue7+kȼ{ιbYW:aLK6|J)Zkq(ޒ,*5*}x{z2yM6Ÿs&G6QlMs"q'IV3z+b_j_n
{0\Ԃ&/呜O<U!)9N@0|
¡T|S/14 +9惡)7@Vsz endstream endobj -259 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IXSCYM+LMRoman10-Italic /DescendantFonts [ 647 0 R ] /ToUnicode 646 0 R >> -endobj -647 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IXSCYM+LMRoman10-Italic /FontDescriptor 643 0 R /W 642 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +265 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IXYGAZ+LMRoman10-Italic /DescendantFonts [ 649 0 R ] /ToUnicode 648 0 R >> endobj -648 0 obj -[ 27 [ 869 559 ] 34 [ 818 639 575 ] 38 [ 575 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 63 [ 639 383 436 319 ] 71 [ 692 319 ] 74 [ 1092 958 900 639 575 ] 81 [ 575 575 786 639 ] 88 [ 319 ] 91 [ 607 ] 95 [ 863 474 639 454 ] 100 [ 575 575 ] 104 [ 800 447 575 575 885 639 ] 112 [ 607 1189 831 869 607 ] 118 [ 607 ] 121 [ 575 671 ] 125 [ 639 ] 168 [ 559 ] 251 [ 527 ] 319 [ 639 639 ] 499 [ 571 571 ] 502 [ 319 ] 589 [ 639 ] ] +649 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IXYGAZ+LMRoman10-Italic /FontDescriptor 645 0 R /W 644 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 650 0 obj -<< /Filter /FlateDecode /Length 41 >> +[ 27 [ 869 559 ] 34 [ 818 639 575 ] 38 [ 575 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 63 [ 639 383 436 319 ] 71 [ 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 ] 88 [ 319 ] 91 [ 607 ] 95 [ 863 474 639 454 ] 100 [ 575 575 ] 104 [ 800 447 575 575 885 639 ] 111 [ 869 607 1189 831 869 607 ] 118 [ 607 ] 121 [ 575 671 ] 125 [ 639 ] 168 [ 559 ] 251 [ 527 ] 319 [ 639 639 ] 499 [ 571 571 ] 502 [ 319 ] 589 [ 639 ] ] +endobj +652 0 obj +<< /Filter /FlateDecode /Length 42 >> stream -xc``6/p_7~0@@iF2B0Y +xc``6/pߏoJa endstream endobj -651 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6693 >> -stream -xڵZ XǶfzTi7h4"qWQA@A}aXfaAAQZܷFMsԀAtWW - enNI$ŋ[:f![}qrp kz2OTC'!%f9aav¼+,7|tEI5RF~b醍PvK@[/?i⬐иMNNƚST.T|6D|}UƩS- !wU#CU|BU+UQ~M!QƩVFbBT3oO**/\ujnHpjQF?J -i\H&G&qKOG{s.YYs WEnko}##(Ra[pjeOP8ʑzOMޥ&SQSʙIPj!ZL-S+(Wj%N(oʇ@R~T -©*xj;UKaɯz-6#DfSMfNP "נ^̜N54?#}OZ*e˞{ǡO@> -K3w&XZ}non_nLa&2mFqng<:h"Dv9h!VC9p5ߪ 0BH:?F8S*Q'x6$#5.dž m6C3H{h4+*dXƶ<@߂4VMVF=|Axv+Q"ĀD?}Z2&x58/L77ZV21/BJqނ<v<Z0P0䘑<O| -skO%<T,OAQx;k>sxEo"oɷSQ21;H}><3؟ƶ0U}2si_ٴи&\2M&5[:%:t|'usܘR86ԭ&By"Q0%fIqF=u -*;P<zRV ì3b)(LT-`Ojl*tz,P?L%k4Cf
O'ʏKRI-_>ř>'dR5d4-uM"_߁b8VlGqz]b:(l];ygL-晕qt)QvssL7X=} S<3IrNq[7;^hRd[t\jɅy;~<gRaw
Y9Vx4(ZM͒M&$歛m Ga9|{q=aUH` M8@6aS;^yWiCHt9Iw&xwcaGGwWki$̞
+g -卣TM3V(c϶WVZB
6dF` -&kr7St0?gE^+f*%Pw@/N7k9<t[~Hos[0mŨo>ְ!3F#@pS -S>Xʍp?AQtiya"<ZhE~uv6r XwCl;V`0o/(0X -}Gi<8H-`aw &i(CGpx3vAnGm<>Bǡ̬\TA+MxcEg}x\cfVI S{][&>LiKqMLl&9$Oz.;$ZOH]J=Kml)ӝ7# $z9X-*ACzM>)Z0!*cQo$ b'M>ߔ`X˭O<2`5xp̋кal *'m0MZm 3 -egiq*3C15Eq>3Y<|9vmC4 Yk[DK"ig9ؗziYu)Æy"C:n*WdЈj}CߟP+,4u^WSSs7*֣8\tt4=.K&U[mop p[VR~<0+oBz7El'̅"UcܗEqz^<8`~4Hw\:P=U\Jd剤Ι'xύ&D{;o<YQȸPSζ?EVS Nd8a+j Xdnvh2(e^)ڈxpÀnʝypb+ȴ^Xֲ^#я\nݦMɉ@ -ot|'wZ3>N\~Qο'Njt\<P_vu\Hj$}rau>dI0* -BnwrVkG)F] -{{XOOїrK6J2:QLz\% -P:>Ó{NoA{x}9l[0 9<T:-D+).t}$!o_֡nQ4KVzڰ<Uy_)_[u!BG"&p0kx*5uȒD6#M$SshA)汃lC6t -/29wPeqQqQ1|fH3(TȾʵGGs.ZVp -Qf.&7~56G%$
(@5&QhYE[N}#9^~@YoJݪ -in]tP<O:!|qWL4sTn[=Y? g{D -o&B$M0\SFp1)5jg2Dۑr%]~PghK,; ҄,nwmSa#{}\ysfH.FG3iLSeZWLDyG8'#'wO,i<K֒:i'q"сoB,=KA@a l_Ӛќg%I~ںhws|>?=NDX)M'RhmAR#7orGupH^YMEHc96bj22
,EŨ-+0V0DiINVejyMqt'+Hv64lnM[-FM$WEZ;w9zc"6Ӑ1OS"ݖ\Vg"K۟on2댃2wURݓ<f桰a0ރBV};ƄB~^jZ~2/=C@i>>myb
"e
7
2A6by8t羲,g/.M/쬼lk|S09AXa`dR9GjQ>kM˛5:-g
oƢ,lnL/<%Ibh}ܭuŨougO:L#LBH?#p nֽ"/_ i<
GeQ;SI. ]Fd-y MJEx -gl@v[ch<[ϐb{7}W[XkB7*}kV{~x/i<u
c[Ѱ:ّ?;b,96⤤H6(d˖Jui -cJkc[[f`*B"8l1w]hqQl7 _}pzg;n49\Lﭞ9\%Q0kN8Orr -ypxcXjE.Kkw,<GnT&Ăsf&̐s4y\,';+;{k̬,%v?'n1+%8rMh mrIMFӕe,c1WY.Hݎ%b܃H%vBk2(9QxUu3oNU*w(4|ʨxy6C}RAe_hM1
Z|o6Kjq;<L,Od-F(]?x٨eP-XѢ7+YFe=pB9TSh,4ZXO= +653 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6874 >> +stream +xڵZ XǶfz\X=7h\"**( "0움슠 Ң=Fc411YĘ4Wj{sw=]]us*$9%Hl]mp_;i!|_qtpkz&h'Q f0s<n!HH]Q%AV:*~1Ďfca;d,E$-RQ"V&!Mqt($4.<p{@jɦlmA!1A*`_Ւ)eSTCb@`V +WEֺQGnS98T~~9SFFm}?i1ug\W,_E.]DFCU~>;#q/ZM_8|HʎzC쩉$ʁBM^QөWYklj:rRΔZBE-Q˩*j5N<ʛR@R; j' +B0*"h*P,8I~,u23T˕r5-9y$;%_1ఙgIKelCz1}_>MA9 +>vbmK7}Z]z߆nT0Lx)mK%]G1m,ņ5cۨpK8eO` no+Lq~TZNBlHFj\
K4lg/h*Vf ++4H-ų]86a O(Q"܀D<a5̘)vCce2m&sP~䳀<Vɨ'uܵO*qډ6UoZ451s[Q`Z #gsLX3 4ؙh`̫xp>Ծ+o*)z%D_̹{be9eD|&~?T0<Kx*}?JF,kUgl~a`
ØP!D(`÷xh*/"_@++/'gu OlК0_nk&u{zo2YtgXD
?I8D7sO'Iҋ=1>;->IPɖV^fq[ `6s1
'(ӳܬlf +u~cd&౽A%IA9w/g8K'{NK76?v , &D|d+P+/L3)n].gn:=ƿs@3N 1g%n]Ŗ,GZz=\[h 4 P ؐLyڳ+d +x24=(^pK0{" +`iuآd;A#A`)h`!,ia5(=^[m^ţ0$gdUh|G+gba&LJNe:*ڊY_ +0b^ S[Ee+`=3V(%l8]on8z^1,üI[ʗ߲z[ +q>TpC!,pK0'ޕ);Un[ݸYWOX}֭;*8@z4HFj< +0J0%0asHy AڣY>A?s*y=TJ3{D~"@(a@} Vfbcy0僥8'W/lҖH3 xLÀOk.KP*b6Vs}н#aLW`csb lR +
/+WɊht9:]=v]-̃Bw-C6tu]|p0P +q]q\˿Zy(I_ֳu]qIWQj
l1~
ܽPs9Y~XYoOݥimkh<Ϟ->3PxdbZ8n]hki*(W=qvBI +P9ǴPGeޛƾ.FP~mm9Mjn7~Ƀɻ`t@2.8#Qǔ,FmL[{b{z!9dw/)~#bòWVOil:qʧ4!o)lfu9MGt18IՂ_bB{R)dA-@JE:x,83{sfv d +K`ԷV84|&vT/Ďmx|F\ꘙγ]oslO|'{h>DyeOOqt+HzΙjȜ|I.JЦ<ܻo:D4M"J=B9Y7Xʢűd +?af<hGzH@I$Lc=qp#7J7F|~VuIPDM`Hp H$-5ܟPxn&^*!kFS&7ݠL""qS,ݳ^u#O9~:];}Yt=e_F&enGj-PkjȞDGt^]^\f/Am8+#X'gslnVy^^szBMWF'qGZP('Gk@v]I4~CϐbG|]_XkB)}Úrx/Ջi<~~nFú`s<c,96⤤H6(dΠ*ui +Homh>43Pd
!
AII6äFӎeHeO> +t7T.UIjt-\RՒ(UfdfuՕ&Oady99$x}H,"K5r/x|tGK7jTYF_55la:Gr3;o|ܘq#Fr>'Rsm-Q1 2~Le2*{Ur=~mo&㉒ӡϞ+ QUERN]D3ڴ|*xFkR>ioB>~s?C&[c ";d(^5Gtu26Wʸ%kvN2
,CFe=|q!8ИYhbx endstream endobj -649 0 obj -<< /Type /FontDescriptor /FontName /MMPGKS+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 651 0 R /CIDSet 650 0 R >> +651 0 obj +<< /Type /FontDescriptor /FontName /EGCZSU+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 653 0 R /CIDSet 652 0 R >> endobj -652 0 obj -<< /Filter /FlateDecode /Length 652 >> +654 0 obj +<< /Filter /FlateDecode /Length 658 >> stream -x}]0+s1JAȮ36qii~GEVDU&mt[]BվzyU\tZ+ngҔu^tQiJpquXms{pZT]̮NnS)~-+WιaaԬ:M4!$QTYtD8&yiU0ۮz/Q)?Uh=>i`<fJmbۛY;RYk]w֚Ş#-*z_fot0
c6ghsD@pWțo\hjqFcO3OǰŠ6S6 Or -9h, SLYLA9<AI[2AeZRAO IDZP!Pl"eD|)"GY.@ BTP] TO0}8D#gp8$B'P!Apu" e&& $)CuIʈNE?% tINo?~A'[ "Eto&]Dtoiݓ Yb>-랽^S\.q4vQϯw +x}]0+sѱ8..i݂MK[/=*}nʏV]}ngouqߕJ^+lbz6V.',\K}wup~ٟOۺv:y}~`ce2scژKK]YW>A`,ʞF-d{+#&ˢ'rEed7WJjo2a1v}{qG+U[#>Th<69)tʤ:Ħ7J=Jk_w4EC-jfWvʛS6g)-D@pWSwD$ +$:qPb؈Gi$@Ybq,ᙀrxe$-7Q)@B@5Η1z%ΉezDCK]Q!$A'L%DPB +-ps'P/49 "TA3*xh$rqDKLY%zKqENTtB DVP_^ׂz&ftnK,O19qtf NAQZ8en)s^ە`7m5ǭ?cv)mȦnlz]>rJS endstream endobj -251 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MMPGKS+LMRoman10-Bold /DescendantFonts [ 653 0 R ] /ToUnicode 652 0 R >> +257 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /EGCZSU+LMRoman10-Bold /DescendantFonts [ 655 0 R ] /ToUnicode 654 0 R >> endobj -653 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MMPGKS+LMRoman10-Bold /FontDescriptor 649 0 R /W 648 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +655 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /EGCZSU+LMRoman10-Bold /FontDescriptor 651 0 R /W 650 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -654 0 obj +656 0 obj [ 89 [ 1161 ] ] endobj -656 0 obj +658 0 obj << /Filter /FlateDecode /Length 12 >> stream xc` endstream endobj -657 0 obj +659 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 514 >> stream xmQkQ~/Yl݀&(Px1%-
i4J=%Kvɺ/n nl%(("^=&GЃx7Ϧwso#A@cq1_9[8/ۊy1f721yI !M}"쎍>cg!|~r#AqT4XzUs`*: -AVY]A1UJ0/A5 KTS @@ -2690,31 +2587,31 @@ xmQkQ~/Yl݀&(Px1%-
i4J=%Kvɺ/n nl%(("^=&GЃx7Ϧ "4ljPXn64U/ZԠMUh*(X(3Դ)$ endstream endobj -655 0 obj -<< /Type /FontDescriptor /FontName /XNTVGR+LMRoman5-Bold /Flags 4 /FontBBox [ -630 -325 2006 1163 ] /Ascent 1163 /CapHeight 686 /Descent -325 /ItalicAngle 0 /StemV 145 /XHeight 444 /FontFile3 657 0 R /CIDSet 656 0 R >> +657 0 obj +<< /Type /FontDescriptor /FontName /XNTVGR+LMRoman5-Bold /Flags 4 /FontBBox [ -630 -325 2006 1163 ] /Ascent 1163 /CapHeight 686 /Descent -325 /ItalicAngle 0 /StemV 145 /XHeight 444 /FontFile3 659 0 R /CIDSet 658 0 R >> endobj -658 0 obj +660 0 obj << /Filter /FlateDecode /Length 358 >> stream x}Qk0)n;"ڮCXa&gD> /d}:`Z쳊L&[es@^V
L76s,Yr\5ބ|Z`Żg}UfrU=jSRcgԵPrRj6>$ߨ6V5ȽYi&dO]`\0?1bΈ7é-PE17u\YۮcnTt?ҮBX8QXWCдO#wJG}5Cc>Aa?uouܾhg!Z8!1JU6-w.հqG~:T endstream endobj -250 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XNTVGR+LMRoman5-Bold /DescendantFonts [ 659 0 R ] /ToUnicode 658 0 R >> +256 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XNTVGR+LMRoman5-Bold /DescendantFonts [ 661 0 R ] /ToUnicode 660 0 R >> endobj -659 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XNTVGR+LMRoman5-Bold /FontDescriptor 655 0 R /W 654 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +661 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XNTVGR+LMRoman5-Bold /FontDescriptor 657 0 R /W 656 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -660 0 obj +662 0 obj [ 28 [ 531 ] 31 [ 531 ] 35 [ 531 531 ] 38 [ 531 531 531 531 ] 43 [ 531 531 ] 47 [ 531 ] 50 [ 531 531 531 ] 54 [ 531 531 531 531 531 531 ] 61 [ 531 531 531 531 ] 66 [ 531 ] 68 [ 531 ] 70 [ 531 531 531 ] 74 [ 531 531 ] 77 [ 531 531 531 531 531 531 531 531 531 531 ] 88 [ 531 ] 93 [ 531 531 ] 96 [ 531 531 531 ] 100 [ 531 531 531 531 531 531 531 531 531 531 531 ] 112 [ 531 ] 114 [ 531 ] 116 [ 531 ] 118 [ 531 ] 121 [ 531 ] 338 [ 531 ] ] endobj -662 0 obj +664 0 obj << /Filter /FlateDecode /Length 28 >> stream xc``i}mr` endstream endobj -663 0 obj +665 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 5615 >> stream xڝY Xڞ2cT2LBV,.E\ZIH ;`QPܰ^k5hZxk{c!h譽O9;9}@IVz(fo)TUT)#XFN${Qy B`} @@ -2738,10 +2635,10 @@ AŀhY7l= 3K9V^GUw/17o9WHmG|mŋ65$Ayar{Y endstream endobj -661 0 obj -<< /Type /FontDescriptor /FontName /ILTTFM+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 663 0 R /CIDSet 662 0 R >> +663 0 obj +<< /Type /FontDescriptor /FontName /ILTTFM+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 665 0 R /CIDSet 664 0 R >> endobj -664 0 obj +666 0 obj << /Filter /FlateDecode /Length 643 >> stream x}n0$zĉM+rJ[68.xuOZi.9}3vfcU}!اn-uM0-zѦ{Zi5Xgar;6^lSuycUӋ>Uۥ{+ܼm֦t=6}՝3FԶj(+o
&&2';A0U)Y^ܜݭecu0\y`n9}D粻6Y8, @@ -2754,22 +2651,22 @@ x}n0$zĉM+rJ[68.xuOZi.9}3vfcU}!اn-u $yryrbpCzCzz endstream endobj -239 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ILTTFM+LMMono8-Regular /DescendantFonts [ 665 0 R ] /ToUnicode 664 0 R >> +245 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ILTTFM+LMMono8-Regular /DescendantFonts [ 667 0 R ] /ToUnicode 666 0 R >> endobj -665 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ILTTFM+LMMono8-Regular /FontDescriptor 661 0 R /W 660 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +667 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ILTTFM+LMMono8-Regular /FontDescriptor 663 0 R /W 662 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -666 0 obj +668 0 obj [ 28 [ 549 ] 35 [ 494 ] 43 [ 494 ] 47 [ 549 ] 50 [ 494 ] 59 [ 494 ] 63 [ 549 384 ] 66 [ 329 ] 75 [ 878 ] 77 [ 603 ] 81 [ 549 ] 84 [ 549 ] 91 [ 494 ] 96 [ 453 ] 98 [ 439 ] 105 [ 357 ] 109 [ 576 ] 116 [ 495 ] ] endobj -668 0 obj +670 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``T\ ! endstream endobj -669 0 obj +671 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2457 >> stream xڭW
PgԪCwm=ԶwZ@-t @BB $H@B?BLQJS=؛f:ε3zvڞsw|||1%K Ю3Sv/⊟ޔ)V @@ -2781,10 +2678,10 @@ tqkj{lG`X6&,]JXA m
fր/*TV"ҶPhG=pslΎF{*v݄U:t* --j:&. 6%oNV endstream endobj -667 0 obj -<< /Type /FontDescriptor /FontName /GESSBI+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 669 0 R /CIDSet 668 0 R >> +669 0 obj +<< /Type /FontDescriptor /FontName /GESSBI+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 671 0 R /CIDSet 670 0 R >> endobj -670 0 obj +672 0 obj << /Filter /FlateDecode /Length 449 >> stream x}j0~ @@ -2793,119 +2690,119 @@ uHe''b8ni#%#ˋ}%B9f~{ s~RH9ELqښ -bk")fV0C+l!Jgi( eHK ii!#esOS)[#bki4S$;zrtmyB3쐣<Ԝ8#?7Nw.7Z!|uYsCm/
endstream endobj -238 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GESSBI+LMRoman8-Italic /DescendantFonts [ 671 0 R ] /ToUnicode 670 0 R >> -endobj -671 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GESSBI+LMRoman8-Italic /FontDescriptor 667 0 R /W 666 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +244 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GESSBI+LMRoman8-Italic /DescendantFonts [ 673 0 R ] /ToUnicode 672 0 R >> endobj -672 0 obj -[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 50 [ 472 ] 55 [ 325 ] 63 [ 549 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 ] 81 [ 531 ] 84 [ 549 ] 96 [ 363 ] 98 [ 407 ] 105 [ 384 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] ] +673 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GESSBI+LMRoman8-Italic /FontDescriptor 669 0 R /W 668 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 674 0 obj +[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 50 [ 472 ] 55 [ 325 ] 63 [ 549 354 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 ] 81 [ 531 ] 84 [ 549 ] 96 [ 363 ] 98 [ 407 ] 105 [ 384 ] 109 [ 549 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] ] +endobj +676 0 obj << /Filter /FlateDecode /Length 23 >> stream -xc``PdTa +xc``Pd\4Ńa + endstream endobj -675 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1660 >> -stream -xmUqPWKX HpUJK bTB"k $HPԀk)6<DE:C@cB&gozS[mw~}<ň %9yt9F+51+O^ ~3aJijb@":!1_cemBϋa$Vx%y20 YtS YWS9*j2]ِ]flcqY-nbluxUﰳŜh+e{rqN[tTUVzN++<38[e7qNmlfuDuqkv+~*S;eI+ɕK5$6-TwR5qnR粒N-(68AA?G hҠQB&^D -*FT-F$ +FL<Fo70moÆDRQX$œ"8&[GO<(7(4}?m4^W{gӒA\MerqM]ؗ6ͶSnX[ifj{F LJʟL5Ot@ofAS\Oi!5iO]pcJ fUKSwd;8(uinS^jQ'9'
cpsM2ioşjT4%~f^ñ./|G?f(?!?iPwdKY,Ñ߲uyT
ȒW)iT{CrNMu];Z}D%I_5xDx-'~1PxkO2fBtԼfBxNI^j{a5߽vDKE{ ^č{3xN5szZ
?(GKw|ճbfR7*v8 -Y%p9.!iǁIc6J-I -1٦lfu1uKO)
-R*@GS?y' ~7焘Fa *V`E,&,{>Ș7z!sYrWc[($:N%C}*zԦ ߡݽEf@0"
t}}AТiq6*]:DKtOשʩB+[(iB>Nkl vnk -@0Z,KZwCׯv@{|Pxi8?H՟r|iXEQ -6o(l#mw/묍f@CM}3B(ҡ6_MA\7655WT:CR\IXC* -^V\kȿP,a֓ gZ%:";飘l-I+yX+MBCFDrCV?< +677 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1727 >> +stream +xmUPW~KƴfK+J g +(H`!@hJ)gSNrVDJErγ7L_mwtf{#XX1e[6Lfc÷sf)vI>+ U"%qxa;D=H|\w%`N<5E + -GA +Šm@hڂR6GlTP1!HT ++FH<Adh|v篢gEoLqx|LcRr`(4ΊM +8I?f-Jc6캩/ԨrhzՁqsn6g8NW)7ޯ?u*)/l03o9g<10++.6ՙ٘Gɴ3Ԟ %s`*Zd1M-_\9q@=帼z4e(OQF옼3;@| +9U5kkIs/žXz@ЕawE1j`;ĜztKY,˾f!pϩ9iڽ+7_[帙n}VyJ +7e#zyB>A7)V>UEN-yx?FswT`̈́En{5˝}s +o8Sk2ʜ~:oN˕`a'GpV06:'~_}/)x]̂E~Rw|!k8!4.9$(yXz6rd/"wp-?]&;QirޱuB2ђ!E?b !Sh1k+"x9=\rP| +o5|olս84jWriJv&e+m8̅W}'U+}PuUl֙Th7?+<qBuH_w_V99M7FI{ʪ4?ٯ}:CA"sԺڵOVyW9/ƧuImU3p+QEWNz`*wC (UrzWS 3 -:+J:_{~GUJScaۍP2eY
^P@\u[}R" y(mnߊںF +f +Ww)U(a'ƱxĒ?5lٸ/z˧y$D8_u-nuSL!Y<9쓗j}fzm;ude= endstream endobj -673 0 obj -<< /Type /FontDescriptor /FontName /MBEOCR+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 675 0 R /CIDSet 674 0 R >> +675 0 obj +<< /Type /FontDescriptor /FontName /GDMQEL+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 677 0 R /CIDSet 676 0 R >> endobj -676 0 obj -<< /Filter /FlateDecode /Length 448 >> +678 0 obj +<< /Filter /FlateDecode /Length 459 >> stream x}n0~ -!RzBZEHHH -QWbOk{H >柙c3V>A0{d -.R}J\:=`CgWV]%ewu ER=2쇍Zi8>K%kTH
䟼sr.Y咆l;sH7T:oJʾiPF -8v>U
4tk/>Sh9B\hҎetWF@/qY3* -E-XeRByHOH)REZxgi@ʑk5SE{J!Ӷ4JipF~&n\|l;3Rjt8oP
+!RzBHVHM-ѪWbOk{VE1ٷ*xw`8nlVh>4 endstream endobj -237 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MBEOCR+LMSans8-Regular /DescendantFonts [ 677 0 R ] /ToUnicode 676 0 R >> -endobj -677 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MBEOCR+LMSans8-Regular /FontDescriptor 673 0 R /W 672 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +243 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GDMQEL+LMSans8-Regular /DescendantFonts [ 679 0 R ] /ToUnicode 678 0 R >> endobj -678 0 obj -[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 811 590 ] 49 [ 723 472 531 ] 55 [ 325 531 531 834 531 ] 62 [ 796 590 354 383 295 ] 68 [ 325 ] 71 [ 664 295 ] 74 [ 973 885 796 590 531 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 826 826 561 ] 96 [ 414 ] 98 [ 419 ] 100 [ 531 531 531 ] 104 [ 767 413 531 531 796 590 ] 111 [ 796 561 ] 115 [ 796 561 ] 118 [ 561 ] 121 [ 531 620 885 ] 125 [ 590 ] 167 [ 796 531 ] 207 [ 472 ] 251 [ 472 ] 257 [ 472 ] 277 [ 472 ] 319 [ 590 590 ] 343 [ 295 ] 502 [ 295 ] 575 [ 590 ] 589 [ 590 ] ] +679 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GDMQEL+LMSans8-Regular /FontDescriptor 675 0 R /W 674 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 680 0 obj +[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 811 590 ] 49 [ 723 472 531 ] 55 [ 325 531 531 834 531 ] 62 [ 796 590 354 383 295 ] 68 [ 325 ] 71 [ 664 295 ] 74 [ 973 885 796 590 531 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 826 826 561 ] 95 [ 782 414 ] 98 [ 419 ] 100 [ 531 531 531 354 767 413 531 531 796 590 ] 111 [ 796 561 ] 115 [ 796 561 ] 118 [ 561 ] 121 [ 531 620 885 ] 125 [ 590 ] 167 [ 796 531 ] 207 [ 472 ] 251 [ 472 ] 257 [ 472 ] 277 [ 472 ] 319 [ 590 590 ] 343 [ 295 ] 502 [ 295 ] 575 [ 590 ] 589 [ 590 ] ] +endobj +682 0 obj << /Filter /FlateDecode /Length 49 >> stream -xc``0/r߿*a +xc``0/r߿*a endstream endobj -681 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7215 >> -stream -xz \WL*0})ںU^.( @@vInaw!".ZV[Zkkg
Xk[/Νs}9sGJ"_ru_Z -_v0OVrT,rpP,rT,uT,$W}=A^UΊ00РюU>aȠP?U(=W\T,;VTx+SƍSou -: =(l\j쒅.[9QM - -Uxx*}/ -
p#hB@2"/H
Rc(j,H&PNk$j25JMfP37Yj>ZD-PKerjZEP:j=Dm<(Oʋ|(_ʏ * -TEES1T,e&K/̐̔l1b%Y?ZL-6d*YBac8KzT:]zI6_Mյ=o5^a#\|aWz{n3G/l}mv۟`3{]ud-,ΚdAyK0Y8xSq}pŐ!LJ>zw4#8DHIg$p_:'R'ǪySi2KwCz>,h7]Hy
! <JjG
Xx_'J]W@#5ioјhT-5Fxq_EoA6~~*jeK
(;qcOP/P
z3z/$L|reJyPy˽3c&lY0H!8mF}Ctrܟѱ -U&@<]rRڸ$
a<
O$0O70 -`9PTg"<X-q/<0 Њ<Rr,-M%o
76VyOȍXCn^=FKːytoxH`@EHSea^3jZ& ->6^GICt[tz|ݑ_a5CV`8^{iq'ݍ+Zvߺ3b=ۅ(hKc=`{Y(g'gh3[]r[r`갱$,Bi#yvKKFeKus[unު&xkm
[[/J6Iԛa]j -g3
|Q#7.r.vumns,A"+K"7M2hQ(`k^>Mbh>RT$i.GqZml"?"I -&{1
x騂4V;MSCmo^b:m^[xjX,<yӥ>֕KKnZo7r'UAcI3sd>2/v:S_yj)f,%%qn]PܨY^X])&+y൱=\?`G[7,_Fs+eڷ̜>tnU5];j|SaUZa -JKrxB -!i&(/%ctfCMQPUb̯F/ WOw3lG8xu[Y- -ݴ Lsxײ#)!&yJTzo%ݕKp4oY#0 -( ^-J3Df<礒Rm`N5'PWR7 [)*00DXT+xQkڽbV;3"]b''44S6bC^Q`dkG;:3νO`uu8^9v%nB&uaB/̼L3b'\x`pǑz'ƌi]es -90gԊxmBVX>ԃs'0Cgm[v+`
Wl44+J_{T}O - -"1ƽPípٖ";'B*,84/$ʷrkvƻX6Hړ'kA+cYa8|rpO}<tx4ܖǠ!25}Kn Z"uʳ'$ MP}&?"+#xcӎ</>O?m -y^a21aai\B-|+
ê9ziNJdJ
6~vw،JRq6T798.e<|[gjj]5i> l@Utui]ޮ\O?yfsBт-ݍncͧ n[yo6]/Շx^lؓpJo)usbU<5U:M,( ,T!e"&_efv)/đ$h^/c9BYdeiPFCyORB],<顨IK*_3:TتPz9 e%?jzt#6feVA4~p;Q p{v -2%]g?x7n7L WG&f:px8]\T\8S|B,6;ߝRXPK`|C|{݇;s_N{m `{Od' M(+ -2B 'b)GtE\3G'
_{7b^KuؓCVC}=`W)]peYĵKfNLO>NCFʽ?1)f>oetv茶q\?PUs
Ҵ\MF[wM4Vޙ}yluW. Y*#)>/Bt0I&qYK"tڟߤ f5$/jijF쎷 :Mmޏ?mH)`~ ݞRfe DcAn@7'r#ܖXS)mpFCuUيHɭNBef5yl:9XaZH4e{>UK! -~()L؈4PtUpmH}
擭74+!8Rqbh͍zi`ٛDKwi -G5%8_]Bc^W##qnn97%'sMdI2vX%{oCs_M\a{AYQkمS7^vkYMhD/_&įD̋|?N{G裼w*/D/WIL]y]K߿|1ɩצ@_~r}073T8CMJ4x<<břFyH:<MNJ(JX u9P(]]bʿ_p(1jvŲ _LJЪF;@ѠXgSͬ_MLeacck[_u䲌[ڶ5Cـxw=oX,wV[N}U'"wOSOG~Ż509Ҟ^e -&S*鋖X5ZMөܒ
ZtːeYoe?z^/<r
+FWqiTUiuZljys}oj%״lJ*ϐzCPgu={MZџ7+6{ĚbZEǧ=FK? -;7<4TGouqsU*B]MW^m^¬aK/E~N;ķ_}g69(h* -qvfWED6L֗zuK>icc3C. +683 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7374 >> +stream +xz \WLcuFgԕ֭jZ7\ +"(*T-ud9
-X$kH^+A%IH-?[NsOeeߠ[]Vϟ{ګE7z[֗ls˦n}m'7_rSL??g?
X2i/8|`9}V;=8mH?oGġ=
2׆GQ`hB&p44E;$dp_|:;T'ŨyKu:Cw@%:>*h]pY-y']SxR>4KO ;.B9F2Rј`T5j]
Vϸwo@syp:yK#e5U;(;umGV/Q/z=jO}|y +yP~˹35o0t$@g]Ct_ѱ?}
+ <;m}*dW=C?o3|S YyAƜ{<{P?Xp$2'Mf +~8C,y{`ϭte +Gd66w|]s9gf
/-k^w1yH&Y-0F\:ٖ}E6 +8643K. ̣1`CW`-,,%`i .boyCPEwXPwMFnįzr#63Zo}˃+ +zMW՚61;ŐU&:L?Lv;C$R(?J2X#aFh6necht7h AMl~"M-A9m6fxl^yTC`{{mp?l9qGݙF@3sRwFL@-P!h|SUN$ Lv0<abl|pxݧ,C18iɘ0
̖ +!6G +0⊲Y0oϱܩBg][|yk3ƊH߄SNZ` +}5/&1$B|j)a4T\OX6&ǟtn@4CM +_aj<Z/r >-5`F <r}SBmnœ/#?|/!Ixyj 䰗FZ'crt<jH}P֥G{p#7~%yh G96"UqoBY=\㫈x<qOp7NŇes5jF ,B6f5 +"E3nxُSHi)67Sכ)2 XPTګxQkz{m`1Nr1Sm JhgX!H+75;C¢O߿'0#::/^M.Kb݈ +M2<+.d2RjcE;i+;{_\3A<qI,~MQG&xgxxVZrxrDͣ̓7A\n&ZHt`،.ߐg Rv
ғCHys0sgi,f2nӢXA[==w>q_@/~fBf .m`;:xsvނ-H,`sS,kucd!MPiwYu(IEͤŅqisJF-$vO=ܟq Xdߛ+rFq0'܃o'crrC<: 'Ǫ
{(]oašOmk!0 +ŷoY$@b* vx"18щ%OŪ9EDzx`Aa$b˚햇OVEDdѬWYP*Q1aH@-VY* +xh#tA$yGE{<F80̥:٨ gԊ8m|VX)čs
+07-XO;^gw7녑%|=&m69ȌNO_b!~
De +Ы}YIuv4*X>?UkQ(!?C+-
|j[M5I$>RdD>{L1,Bti!tmO=܋YVO /K0!~Ay|
#<M\VvUHT
m}FNJR(VI90[I{|kݱ縲jR!5eTUImwNJJ%yf[|¾
ṅ7.S)?};eKWZ낽Jrh6IZ;#N};| 9ѩqq*)Uu$eԐ2]?tdd=n!n;3O\'?xY qcZA.1K&K(M%Ŵλ:$&NGXLWtQeעR&T +̩>&p +gqٯ˨~~S~E~KЭ"0Dxɴ +Z{ލ<L{~\mzck^9ϗ^Y_3pe_rzb9*j|tK8D\c?fem6F|ZasІ-;EhLI`ޞ[Y}+@nL>
w&W||ԈuDƸVI)sP4ɀAgOy+z*l=k{FǷ~(uˬWϛ{>Lf\<҄ #)."ښ,[g<nw4<ruئ_ڞ4 +cCxx&zT$Oyl:A4[GO0wjV>e8z>/{lal=&IGAhéCUaAIZ*^:w`w MѤ'.DcZw+{ +0?H. +2j|\u!I7[!בenɮ +ceJIfcB]̠cH]8EqIR~JoY>\z ϬD+m*W`Bir!JKguf{@^,=E:B.$: i10,Br䝖syp:ݔc"kNQTA?>ˌs#xӌ.Տjɿ~Ҏ\˭B';Y<*4%n
?,|Q罨q;^DP~5gp1jr]L}d:%t"]Î O{={}V郸јوo|2?=c¶Ѓzτ8(NP%Iia :EX+AB3c{!{&,Abʻ(1bvŲc _HתF;HѠ +tȚuIz?eiuC|i1Uyexqdjq<\ S47+;YsÂ9`4c<QbDZz:_4])n3Ud>URUZ9X5ZMթCWT:2
L2TrVI㗞xAҫTYJ*Y:P:av"w̴ҒkZ69C!MzsVii:}:mQ|6ŶCaO~.fE endstream endobj -679 0 obj -<< /Type /FontDescriptor /FontName /HSGCYI+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 681 0 R /CIDSet 680 0 R >> +681 0 obj +<< /Type /FontDescriptor /FontName /ONDGMD+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 683 0 R /CIDSet 682 0 R >> endobj -682 0 obj -<< /Filter /FlateDecode /Length 698 >> +684 0 obj +<< /Filter /FlateDecode /Length 703 >> stream -x}Mo0ڡ@wp#Cj [M1lGV2l!~^&u)%E0W7ato:o8{cwjU\]xfzԺ:硫7zbz6:M?6oaׯGu%=t܆/zwWCݭv[;2keX]cۙ{&n80M\c0#lvֽmM3T"bM[OD>V˛8l`>g3UfOC{0,[:h6skmG}xz5<F}U2;mKY49nmJΦW5@biqܓEl((-!$B8<CO%@-!$B`[D1IN"B1I(P;)#J@6&P&H$-DYR3I1P (DPR^(E}6 +x}Mk0C=!%^յ!W;I˲@Ch0 {a|٫PpXUǃ6ӓ֍n]^i6zך]_S1<v܅zwWCݭv[;2ke_XScۙ&n90ͪ; +`F*{ۚf DĚw}r7q҇v|f6s;Nɫ fC{0,[:h6skmW}v5<F}U2;mKY49nogS\ 8OʓEl((-!$B8졧P{X]!{|RIlySH'ipADʈM,A I"B1Iz LAg|)%%$x=<A"JQM%2@u)ijH)jPD` ЩLaB$x -1^ST$%x[ eb +@GTdgM"_Z3{h&6 n=zuqo3Z/zwE~Qq\ endstream endobj -236 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HSGCYI+LMRoman8-Regular /DescendantFonts [ 683 0 R ] /ToUnicode 682 0 R >> +242 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ONDGMD+LMRoman8-Regular /DescendantFonts [ 685 0 R ] /ToUnicode 684 0 R >> endobj -683 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HSGCYI+LMRoman8-Regular /FontDescriptor 679 0 R /W 678 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +685 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ONDGMD+LMRoman8-Regular /FontDescriptor 681 0 R /W 680 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -684 0 obj +686 0 obj [ 82 [ 611 ] 100 [ 611 ] 187 [ 611 ] ] endobj -686 0 obj +688 0 obj << /Filter /FlateDecode /Length 18 >> stream xc`8A endstream endobj -687 0 obj +689 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 801 >> stream xuRKlkG(`Ɗ`6-G6k8t~י^W3ӦE(5B]Wwtg2Nĸ1,;|0EQݵPdc{}(Q"fF@),#.]m^Ԟl/ @@ -2915,196 +2812,136 @@ xuRKlkG(`Ɗ`6-G6k8t~י^W3ӦE(5B]Ww sR4s=NoFJRv4(8:s[ϐΒGr^Qo|ⶬȣ2!+ESc%OG1 endstream endobj -685 0 obj -<< /Type /FontDescriptor /FontName /BTJJIE+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 687 0 R /CIDSet 686 0 R >> +687 0 obj +<< /Type /FontDescriptor /FontName /BTJJIE+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 689 0 R /CIDSet 688 0 R >> endobj -688 0 obj +690 0 obj << /Filter /FlateDecode /Length 375 >> stream x}R]k0}ϯ{(hXZ{ɵD>/NP<s=suBo4pJ57d%5zȑwl5V5"q"٥ة,Cb@?/oTɱwssɴG+Ũa 'J(9`H)5Ua'K ~;[T8$Vߐ{¬ʚת""Q,Z_]w'ؔm$cnJm'ܰ>Ó^K
ǪLDf 4hexںNy{uδ:آk&fa0c݇cf2]PҺN,ڭc endstream endobj -235 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTJJIE+LMRoman6-Regular /DescendantFonts [ 689 0 R ] /ToUnicode 688 0 R >> +241 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTJJIE+LMRoman6-Regular /DescendantFonts [ 691 0 R ] /ToUnicode 690 0 R >> endobj -689 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTJJIE+LMRoman6-Regular /FontDescriptor 685 0 R /W 684 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +691 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTJJIE+LMRoman6-Regular /FontDescriptor 687 0 R /W 686 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -690 0 obj +692 0 obj [570 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777.8 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 520.6 0 0 600.2 0 0 0 0 0 0 0 0 0 571.5 ] endobj -691 0 obj +693 0 obj [388.9 388.9 0 777.8 0 0 0 500 500 500 500 0 0 0 0 0 0 0 0 0 0 777.8 ] endobj -692 0 obj -[ 28 [ 525 ] 35 [ 525 525 ] 40 [ 525 525 525 525 ] 47 [ 525 ] 49 [ 525 525 ] 55 [ 525 ] 59 [ 525 ] 61 [ 525 ] 63 [ 525 ] 66 [ 525 ] 72 [ 525 525 ] 75 [ 525 ] 77 [ 525 ] 79 [ 525 ] 81 [ 525 525 ] 84 [ 525 525 525 ] 91 [ 525 ] 93 [ 525 525 ] 96 [ 525 ] 98 [ 525 ] 102 [ 525 525 525 525 ] 109 [ 525 ] 111 [ 525 525 ] 116 [ 525 ] 118 [ 525 ] 246 [ 525 ] ] -endobj 694 0 obj -<< /Filter /FlateDecode /Length 27 >> -stream -xc``(p5Ol.T -endstream -endobj -695 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4172 >> -stream -xڽXyTWEE),UF4f,=٥WznhAF(юY$f>2Iη"ϜjPaI9S}N/{u,$) aXwܲgM˟۾_pՊQ^EiAV=J!}&h2&YRXW3%>8tCG>͂އ ;l@|_R" J`%f8V=_%Wzc
my|WYݖݞKR~%7WWQqy{b!O *tnvI+ʹ̧W -B+*qޕ¯q+-U -y+\!-_R$.NW1s++&& Wز#3{s7gڜ.qn!OWZ!L'oU/2 -yRa|dY,C#+ dy@E#;,y$ٍA#!H RFH"B$?k)4$DZN'NhJ\fҺ+^y*L.>4#uFgy$%%eCMT~M-#?%<{T}\@D8X7tMZ(%ť
Ny -Ve7y/o8 -U'R:DBaHy%%FLH
ypP*1c -coYj0u1l_qd*10;~H_OpF[ܺ_Cg&x<ӤU*Ū%N- -=ʜ!;W_COz×o|=Z؎n /#
Fh4(1Qsm{WG˱9GѴ_Gq@"kJ2#q<%4B.$_atO!OB^WOYkIbs3[U"qų_SC`х/3n$ҖJ -Tkn!4P6{^d2ߌ69nCQYc ȫŸ5QVo/v><0}w@Q'$Cp
-5*(ng;Yk Xx ޡ*#:-9֛sr42 mBe$vrW&>븈[!졣>iN' > -^uƨi0ka>jPtRlP뿎}D7~UW;iAkf/iR ^gwPlzT${c=jzlUgXkIo'l߃h -:.IB7č4XzhzA{( -2iL#L=a:mxkZw[ph9v46ߝwjNfZTcbDGQ2kqF%d+HyOԡvL\&zʨ E[?)[A0dS({s&NBf )$b\orz|t9cogȊ!yQ/Ⱥ -.
p4-^KV`4kͰo*ͯy;껔Rxiի)Ƀ3y^fK'5W+Q)KڑH8%f7j':ʼn5CRN1/{vc
[UJP^<;.B٪&0qHjډ3^?H -28mv=ܬ {p&A2}dLs0*^ѫgAwѹ=_[XQNwl=7m7uzJKl]m䛓kZS9"Ă'@,;;&P+k1A7t/gD9V%'W+ȚrŞZn{#Z 0
9Z<^`9;a8c,~-}8@.Wlz3%c!Fk.?X_ @\pu.|fó;;7v]0#&3d+8\ Nv_ĥjB0Y`pZ wB0G:^,1#F&j5!w})v,ʥz9waLfHv%)FrJ)9gܓ =±lnTu.f-e6a?f2@ -31wv[|'\w3
>ϱ,6.uEEp/jbRր]v7Ȭ -HhFyu|˹)A<8,pq -ڜ`cp7jԗ[a5LVS>><w4{,n%V [ښӷU1L,o5p<E
cQ6R3ի58qpa<QcuDBD!#jV(/5J\MH'/Ѽmve#NFzNn)^?OK[fLW77gTFOcϡ.لXc?IlQ=U%&uxomt9(gBV`NeTZw920^I57Шiܼ\\.qv;ȷAz}"m'W`a-rRWb:H)؏=6@jP=4:U+DzBjwqqf:n%_יCp=*ÅOHoI0dۇ+.HχI^v_N\utq]RZ7nAl~_B):tKIsy%$ͣ?vR$|l[j?BqLPM
}K:ȲiiEJ3w5S Z6o9Q(x`4:782Yv5aZzLV -Ŀ^ǾEQ0Y5ˋ~_Qgɤ
Í>N*5ں$l:nt`vO*Ѫ2O>o+d-ؽ~;y)|;GYO=C -.WFomj!vNz}DQt@߅ֻ 5Ww^)9?Tr#Q)pj|dK_`פm-?gƉd8v>{}ڤUȢŊ9K#C6X,Np꠰X'#<5y̬` 6 s&`iN`i(h뼵:٤%\20"YmXvmotXjxʢy<ߎ9Mt,lb[vʔT،љK[YBYtkt -endstream -endobj -693 0 obj -<< /Type /FontDescriptor /FontName /PFVAAD+LMMono10-Italic /Flags 4 /FontBBox [ -491 -316 834 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -15 /StemV 175 /XHeight 431 /FontFile3 695 0 R /CIDSet 694 0 R >> +[ 28 [ 525 ] 35 [ 525 525 ] 40 [ 525 525 525 525 ] 47 [ 525 ] 49 [ 525 525 ] 55 [ 525 ] 59 [ 525 ] 61 [ 525 ] 63 [ 525 ] 66 [ 525 ] 72 [ 525 525 ] 75 [ 525 ] 77 [ 525 ] 79 [ 525 ] 81 [ 525 525 ] 84 [ 525 525 525 ] 88 [ 525 ] 91 [ 525 ] 93 [ 525 525 525 525 ] 98 [ 525 ] 102 [ 525 525 525 525 ] 109 [ 525 ] 111 [ 525 525 ] 116 [ 525 ] 118 [ 525 ] 246 [ 525 ] ] endobj 696 0 obj -<< /Filter /FlateDecode /Length 540 >> +<< /Filter /FlateDecode /Length 27 >> stream -x}[@+z!c xvfda_ct I|owց]AO*3sɏ9t˷FUS]Τw"I_٦k-
l,V'\ttzcSL6/+[PЮN:yL "_u^Y9?\6g^ME6>Jv'^2YW#Y\Cfl]'oIjuduҶ'2vI:he=Llbz/C>BV-+Ju$oG36+HɿN}w`8Af(@!(,A/h -Z[d&1G)HJ -ZY b)v*S| -3r4:f9"L)\RJp^RwBL7YПDL^ -/iBT_tM^ -`uRKCZO3ltWto{oa۴}{{Ƚ?gE +xc``(p5o] endstream endobj -232 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /PFVAAD+LMMono10-Italic /DescendantFonts [ 697 0 R ] /ToUnicode 696 0 R >> -endobj 697 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /PFVAAD+LMMono10-Italic /FontDescriptor 693 0 R /W 692 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4350 >> +stream +xڽXyXS?NDBOcsNTV-f d L9@H@*Vm-UjίZ_zc;}}:[ocM[<eVaK%9ey2̽t"``=Lc8oI/;rW4DbXb5
o{6҉nK[%q0
`wbs88 [8?~Z'$˗?x14朼RL\Z)oNoMobba9?WPSV3{R@$ +}i̢b1_&ٿ"A G,K"Hߴkg&\R'(Kb_$T<lDZ&.+`m&b-ݸ}[-6l۹!MR-E|$L/!xM(:S&_+HK%r`b>l -V`bO`Zi,{ۊm2gLlۃ^l +FUev)\esHɰ?L%:u1ǔ=-WA(Εz +}'`0D[ +/sC^:bp0?c4:-*ʽfcoaܞh6 57R ^SB^{5O{yoP(? +gr?~\dGOKڌ'x,GeKŪN-@=5UYC·?x/jVqݮv_B:J#
Fh4 IsM{WG|O豔18f%WFp4%&t#>x?:规5'Tb썭 +왯!_ƛ0ׁUç!K8<**$0/sP[ +p6=F):Gh+.R +=QN7{^d1$ïR7¨6ʊR)1}MK\i< yغ+WaR!\|ƍ*l$dAur.> +S*ޟnՔP) &FN"z+d|̨o:҃RjuTߧ13D9pxׂgь]ÎP+쭫
&j%
jS=T#pfHg3 +HRv#ͽ1?K,]4*#6 {mbS읊}r|_[NOl\qAHD~vF=܊w蠓jT&Cpy^&j<:>$F6l63AvGI+0XtnmNc9*AP}";(SPjd&*=ӴY[[?A-γ~Cۇ$ridQEI6?Pg,j%rb9hCcqS^UUԛ'jC0U-my0,hEU%rJQک%b yGCR4:j;G+^QǗ}N"[ڒ4SCexDVUKp%cý"Z2gB5w`j)!/3@[D2$˴F<_g<EEz\MBJ +44np5{4W?z +%t^lE)cP7+>fJ9;o\62ů#yr><<bf{y.`y:RLМPmՄƩNS'@-C;7&H4 +4co~P$%YV5#VRډZn&[-"&/,/
D6:Keq_fK %OmUWCbcYs2ěp}F#HlDgvv]0+&aflcΩ):v/'eu*a%ܕhډVkP*u3z8KaJ2C+((GF)b6CJq'Ü~j'jRW + "=صD(Bbouڇv맠w=j3S'\O8)]8es`._cuDдP]hy<bs +U&0{a-fx ;yʼγ,6.IrVsޠc\9~belۿH]ITjZ:TAjhk +g +{V%>>-c+4!J'5jsہJUmQAhXjm'H~Waj#ۺ!~*k/s@(F*ۏ7k!uI$LƉksRMdcQgڄ"QmEX~ᮾ#HQ4:!nQ5GnJgFӣq.}yzFWO4GhmT}(1xZ#g.ϑ4VF@D2]V'ҟ5b9.5L:\Al`h<"spNCMK,89y~@z,jEk
mVm2@Mkq8XSRrrj9\I-]d㦺>ils;8k";sd:0Qc]XR_cׇX'ׁU9٤dK.@+=hBJF!1^6E闗Whc^O9_~}{g +;}3UM=$z 3(W*S;waǸ2ZX/7h
.OźHo 8bG-KEutI]5`b3#C@)9BtHU1gYދ:t̟nГ%,a~<C75x@$7oJۮXh0LGClaqD3c1xX& + +Mu<
ޛ p╂=?os@k
j*`Co>y~0|#|7JZe +Y!2E/RAZ%y+=-}}_Q.ox=''4[4Nt 2M쵵u&]*XڗE,P:2ml$g@OtMv*Zcږ1|n$߫,y4q2[So4t +endstream endobj -698 0 obj -[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 ] 66 [ 525 ] 70 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 84 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 114 [ 525 ] ] +695 0 obj +<< /Type /FontDescriptor /FontName /IGQMAH+LMMono10-Italic /Flags 4 /FontBBox [ -491 -316 834 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -15 /StemV 175 /XHeight 431 /FontFile3 697 0 R /CIDSet 696 0 R >> endobj -700 0 obj -<< /Filter /FlateDecode /Length 23 >> +698 0 obj +<< /Filter /FlateDecode /Length 549 >> stream -xc``TdTe +x}[0+$!ssĵTvF'J+UH >f0Ο@~;u-_nVuy_$!=.wԳ2_trUҐu?iAJ}>l_~v֪Ź*}nUc:ImWsZe}1뼉&cd|q!U;En]O\ko6cwf=?xVR[߷Svצ9øeLQ+b{vU>KXh9ݲ5EImNxf<R8G 8B5BRq.PBPl)Y@-hGPl) +B r*)he)Z擥ةLA):ȑӄ14CNSl@aJ rP:xI^x !Aԩ{Y'kNKs/)| +>&p&/0p0sN|zaV47ckݷnJ
mTٷ3cK] endstream endobj -701 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2256 >> -stream -xڕVkTSWF4E깷Q<k)Z}ֺ@Hb QPK$<H[yuVՎPӱuN:Szc
(d{wB!!fں+!a-[tZf"Y&DZK6 f8Ɵ%\?$>:NCekrdW2b&1E 2ҵ:ŠVLblIbDIi,ckٍ6^MTV&(vF*
14MPlΐoBl6Ya`M*mkӚ$֨`Y֨P*I22Ҕ)52Fy3>!|㷮0Ml&+LrǷɺDņd֤6YfsD$XN&1DBM${DBMzKJHyTDP-gO2+Q>@fۓd0:0}O(=W%uimNqqr{~Z]git[kq>[ -R$df5Ey`\#٤nPW[3i]f=3Q3l߸Ne7_ -<N9HFь\~ֻy:.Z[7oxf"I4
M}:k`RO^<Wb -&nϰG -jlJH4 -F=F"$ -A -~CG VI>6_]r7@@{|?Cԋ01ǐ -yNkn]P-jB"IqkԮ#F@Q<2#XQ/\vHk.y;i1Òmy:A^7eb -$I*BPNKC'^<:O-<0L-D+(R5'OML8^dnHTyyGCdeax홥V,4:j42b]*wNM_a#
W+x!o)=c'[Y`uWn&g=&~|(sZO6};Pܽ;`lD11;w{qesq -endstream +238 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IGQMAH+LMMono10-Italic /DescendantFonts [ 699 0 R ] /ToUnicode 698 0 R >> endobj 699 0 obj -<< /Type /FontDescriptor /FontName /GYSYTT+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 701 0 R /CIDSet 700 0 R >> +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IGQMAH+LMMono10-Italic /FontDescriptor 695 0 R /W 694 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +700 0 obj +[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 525 ] 66 [ 525 ] 70 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 84 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 114 [ 525 ] 116 [ 525 ] ] endobj 702 0 obj -<< /Filter /FlateDecode /Length 453 >> +<< /Filter /FlateDecode /Length 23 >> stream -x}n0~ -!RzB[EHҬ*=Z -62pۯTcoeS=[FߡӃ仺%Fտ -ud
v9{7$|5TG:nJʡmOPF -8ʶ?/u4t{/&|Th9B\ښʶetWF@oqYL%r[$i@"-=-b;)A)AZ##Hz
ғi2O CB k't`]cNǼ4Î)%Gɟ;'2mn]N-y +xc``Td\4Ńa + endstream endobj -231 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GYSYTT+LMMonoLt10-Bold /DescendantFonts [ 703 0 R ] /ToUnicode 702 0 R >> -endobj 703 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GYSYTT+LMMonoLt10-Bold /FontDescriptor 699 0 R /W 698 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> -endobj -704 0 obj -[ 27 [ 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 ] 61 [ 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 ] 92 [ 525 525 525 525 525 525 525 525 ] 101 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 118 [ 525 ] 120 [ 525 525 ] 246 [ 525 ] 272 [ 525 ] 338 [ 525 ] 602 [ 525 ] ] -endobj -706 0 obj -<< /Filter /FlateDecode /Length 36 >> -stream -xc``w ~( l@ +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2390 >> +stream +xڕVkTSWDJKeZ-T^ҮV>Wk]I $1 #%<e #BhgUqK3]uj֙ss%VV?sMν;goJ(H$RmHJjjѴ6#!vɐ.<JYy(~A<GH9U+sl2EI* +׳P+tENJ<P$;gT"Ng%$^d2;,zLH#\مq +uZ)ϚgtvE:]c#wlȦjtjCk`S4beSǦV6dbɷEcШt6ǘ6]nm +diUƲUau6x[6dgka//vkRbW-_d%q60YtM7X~mR)U<]cmIj:OͤRBj)LVSoQ)V*SٔP`'YT*J$AقOΓR҅һ2ĀZy|Y;ZV[Ci3_ߣ9"xږ)7;;OpuҀr1]/,\U[?[Nv:˼^@iw3 ]]vR2ڻ~dc/Na:߁J4.{vkZ5rip1Fgx +E0g\b>8$,{ +h?!G@yT,;K+U%_uc씥qMTm
75xL'd.w5l.jix<2hT8(:+өƖ6H1ի
\7_Etח,_wi]<۷iN5$Ixm {sv)O\s0(hir!8+؇Sx4iVf|?ə]Ä|'AKUGs;n!Kvg=
M +3ivea{lc*afC ^^)V+Pvn2U9}ѾBl:%Y nňYͮF FGzúi'W%p]/
?GP"G2,47{
U)缽dٲo쳋ν1a|褘{a=LO%LHq +}ԍ*\<p<+Nr_2{zJ>!M +ʌVP`O#Dh}!l?ݷ +6lrzXcvp.EΪz}*bmC{}|*|#=pZl>sg"z:"ZUǹfsDPڦ)]i.3GcL-:s֍C6T\rJuZLnW0p +9Sb O^yɏ"PYuMsUɮA1_\MΖ4r
.z].RJ8D
j_>y'0Ez ;7InUT/S$2.sAT'E&5zwljt6SL0w./'B%%{!H~A +7e=.`+}AA覬9 >|_8WS]\ L<:=LPc'l/Pumhr+d=w[k*v<'U'*?TǴSeyZ՟*[+蚬h%|I@Uu +NX
2"~ų|SO: endstream endobj -707 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8223 >> -stream -xڽz\Wqw=;PAQzYX3KwD
+EM51h>g~@$`s?sfE1!,y;;3믭9Sď%7E<ijFTLw`?47 BT8Lx4e:^oӉA $'EƢ!ag[%{{(,̞=w=˕3-m)=-ii7rL)zZ%tqf)stpi*t˂ߞihɽ-O@׃A~] -W˵,e~ -
\]-g̰tuP(͚r)r8KMflYfLnyU'pFwAAW?"~bpT` Kb1@L$&)[Tb1A$fw9\b1X@K,$#2b9"VXK#l[b=#6b+aO8ۈb'p${ 'G'\+F'Ex>/G"&BP_=?΄^D8_7#oƶaqJc҂'H$k$&ɅK
8)j64phf{o\3b>L<a>1aQs*$jHǑw4kToF}Blac5h=mF<M7?x_h:Zg,ƏK?&2tҶI_OVNl(2㴿hqJQl6tABnTJT~/QGh|pU7+ -.9r%'klRrl/bX@VM+9j,Yv|>kpWk~^:*/njLFZ,m_&q+}+«s4([)OE.jIvMR7mjj:>R0\ϴ>0w'.s9t6ΚEkFiu:h>H7rhs>\ k -&?]j?^(b6)+6['{RW,?Ǜ4;17|xEq sbHd8z&_Vɭ-HIJFdܗ_.{r)[J VJ]Fo"u^d˼ -& `$ČO\\0ͶUU}ѣdoObUqxt|B|G019lA)X/(T^^kluTYP|/.bˋ*Kf蒨d
m (E~VAV4k8UZ
ˋRilR&ns"8F -ɋ/cAQqJi"w)6~R5µ4\nwץrLyAi+X-4 -oS_w#^]/b`b*0OlbSd^bXYt`uph3<,}q z}{xř+'Nڲ nZpҚn:bZ2tN齍dD`p5\1[O7 -YH!)ot=d߁㴋T4`I}e[Ҏ7C`@$eeJ'Z:*av -D`+iD+:ݝI*C\y
ZvR=knr2vىIZqnBlITƦǤųſc2*Rw;rI>yD/Dq\k>2[Bt#w
ri&)̗$whD'jZ45&`!Ꭵe#OS[jyC`Q06%%#qTH+E+}Sr%n3$E?8q%#Y)A<(5K;P
Lp~eP2%%O*wD)qxR2ү.hɷ及XM&w^Lr+:\T_ rAi=x>zxзYlCzũdB`cwo_ߣdax/0m%+Y|VtLׅC` E_2z;nQ3{o0~[+{aiL+WQ+)j|CbPr")7[46Rl׃ 䫮gD+.#
DtC!{|}$TԬ,(i7s+6s7C?f -+i2{6=ApXpya*k*b+#[B` aO##A܁`'>~Zs:k9Ҍs@E '>9dK>MKϦqQݹcY\3]jwZl]ݹ}V2viAtKt%Tࠤ%|DNH$:\fй'G<(rr+i`&&`*SKIfznv>DvOܻ20FnpN#0+)/Hϝ;֙`YhzӞ$Gt)Cj֝Q).IW+5. -q,,C/z <I8$o'CCz p݃IjϒԠ'r7>#?nCcBΠmjbY@Vqm@CMX
8h84.#^r)c&Zث5?sAFM~`{ݪ}Vwx(6}wɢgv}+o^!bϟ~1zJD;qܧ -~!.i
`qƛӭndµxqdpM^m53_ ;K.jKv# - -^^FA#9]o,/;m"1,P#,#o PM )S`Y\#J9Z^U,lJPlkEOu" -*)pXH¯dK\' )H?H.Y)ʉkB ;2<wװcv@< 3xe$'~sspJ+:Zasq+C G9,Z.0)0㳟T`
K͌S NTFEl:3oEZCh*g8efaJq
z,{üZn%\|&oAW4mvL܋!D^G^fxWJ= -9Qnĭu#v~(+˶;PVw5dl$˪(]RISsQrE;G],5gE!UWhL3rV FVgWOxĞiLYqTiNss9*1] f\bb -\ҜQ3!QW DŽ3q!REYTqN&c8 ,.SxKi19Q3;ap>c鎐05ch/cz#:BB!AEuN!!6
]p璅znea
-eVq:QUx?V=%6Ѫǻd~!^FVA&E|@;G<_QZ~wdqO,%Ɲvgj6WK%iEwZS?u=)w$Cr"H=]%`CWktoLֽ\rه0{ƹx WNEXM%"(Q?paa0;p_]
J8#y̔T<Xtpv~=:Leҳy}2e`}Wdߘ C`}׃*n{=r,ѫ7
aHĭLaf巑x._{N̶ۻ#>ųz*('E:'rzSUM,x>CRXZpoDaz<XVF &Mh?Yk,2;Z -W' -#̍CvRr*!bՎ}uXც9oGHm|}ٓ.jvvrWI!c΅L9|*f!|X*Cy+9AI[!=2[Qgffi_Bf%Mw -@іb|RX@'m(';xIC*SQ1{b^6~zS h8\]?>OTl:VGoCsQli'at)1UPVlWuPG}i̗Bo<-<SNA0Yg3VXY=xw?e;̴`&p4/!0$>**.l,Kʎg9͖~Gݠ$HT+Vϰa?z@C/l${BطﳞAow'qRYzb0S:QFlH.t3kG[w!FJ؍6(.=4_/0:,HFyYE -~".RhL4ʅ$h3s;1eiI9t9UfnSrV`r],y>n?vz9{W**Jr2YGzEİxbnA.Xcn!T"9[|PpQ7,YiّL_s[*MZp=SQZaBNDH0LRΦ*8\ n`4Z`.d06r/ots |SPl[;s&BQ
<ʴǥ_- x=$9Y3KQreȷ>s#,?ӎN[fUIu=?ywd:0q_Rp~(]ub! IyEb -1J-绶^h?wDAiyI! LE.lbɂugl>dA/?WΓطy1 -6_엾6}P&5G*]Pqɨٙab{~
{~]5{}C9*MHcAbM[>ro\ -}fW -՟B;tYlۅ`\722Pi`T,~R0^Q@`*6[Wl*QLuju]Zgũ".VZV^UT߭Y.[jK?=~G.+6])+]1;$6h5&x}4M|.*<RÐ]XÂ(v-|Lnߛ_n{idSoTצ.;ѻ{4W/K -2(7pX:Kі5O5id;XRAtt
2y`쬄fu-(H<JA -qeУ*]'/ң*T=^J 8% 4L)]L%»Z;旁$ABG -
:!ڍ`wkka^a%'_=#C|.V+ q5oM@pI)GT{*ń)R+jBKΓahu,Ysщup\<qZS>W\).(פHq!`{#X-Jm.V$I=+2#+3"i/?~zqƃC?Bj -`h-t-`{wSPsA]0HRE墅$j&qD|tB46˻6+#5Mc?C#])rCqRJNfafqRfFrS՜ N7ϡ(N?YR>ΟZM*ƘaS'B?I)W̅!|;$ D6fdVp1&A5WҼ<:2̙
=RdgVgi4[rM+G߉_m -endstream -endobj -705 0 obj -<< /Type /FontDescriptor /FontName /KXPZZP+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 707 0 R /CIDSet 706 0 R >> +701 0 obj +<< /Type /FontDescriptor /FontName /LTCWAH+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 703 0 R /CIDSet 702 0 R >> endobj -708 0 obj -<< /Filter /FlateDecode /Length 750 >> +704 0 obj +<< /Filter /FlateDecode /Length 462 >> stream -x}]O0+$v+Jڀ qW&Q^i Sǵ/]QX]%u]<}4ŬΏW8vbr-U?{+ϐ!|q*PWunwo8fG?PQŨrmWխH$̫bZ.J1:-e}(<J(ʼ'o0y}zwXV:g.=GpmY5inG$d" -K=z
}rjSׅMMsoB2D*O0}oy(i{PthȒf9h(wk& $5 5It@35qı;S YOk,HяD?%O]P*i쮂%OqM)f_ F -]Q4b-4i2MH03
#KF4, FadI4"шЈiiY넟D
gIS胁i5HO"D$*3 ?|<g#nYe$Ze$AdpP8Yn +x}]o0+$z 4aTB"A[6fؑ\g8T!|{GOB!3-L֚
@#}3ӲZWJwV\)~ۢ:tzPzmw;OX1g:bQ' Z=1f_<+Qƍב8HT>uM +@7vOμv=4:i\\}w$~5Tg:ݢ쇶k2RTfy6*?i9\[Z@L@vˍg:`cK6cYR8JgH) +iA{HH9ROs)]#wi@*B[#={zH6HsO9agȰ^3زps8C|8C|9R(p~{n}3g쯙?IwRMlu\Wx/9zݐ`j endstream endobj -230 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KXPZZP+LMMono10-Regular /DescendantFonts [ 709 0 R ] /ToUnicode 708 0 R >> +237 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LTCWAH+LMMonoLt10-Bold /DescendantFonts [ 705 0 R ] /ToUnicode 704 0 R >> endobj -709 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KXPZZP+LMMono10-Regular /FontDescriptor 705 0 R /W 704 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +705 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LTCWAH+LMMonoLt10-Bold /FontDescriptor 701 0 R /W 700 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -710 0 obj +706 0 obj [ 51 [ 569 ] 56 [ 569 569 ] 78 [ 569 ] 82 [ 569 ] 100 [ 569 569 ] 106 [ 569 569 ] 121 [ 569 ] ] endobj -712 0 obj +708 0 obj << /Filter /FlateDecode /Length 21 >> stream xc` < endstream endobj -713 0 obj +709 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1685 >> stream xuUkPTGÈ(uG^QWCZ` 00j3GAG@^X"")E0kZ]CP*X,PѾncgVmwӧ;uXL cLqs`<&N~9* @@ -3114,31 +2951,31 @@ GKtdžmBEx}gZ5g:\~Bc"ZOI NbC^r`)|*+%M1=U8⦈kQʁRy Ķ˚Jmѹpr~_9&꾩R58WCW%#B)_o-Zȫ=%-/7l|D%2]DCbTߙir8lkQ(\-:Kϗ:Y endstream endobj -711 0 obj -<< /Type /FontDescriptor /FontName /TFIASI+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 713 0 R /CIDSet 712 0 R >> +707 0 obj +<< /Type /FontDescriptor /FontName /TFIASI+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 709 0 R /CIDSet 708 0 R >> endobj -714 0 obj +710 0 obj << /Filter /FlateDecode /Length 405 >> stream x}]K0+wQSetPpC풳X$Qxzޓy[ͥc4ڴV`XhKQ#Y#rlv=gZ5}gZZwyvn,z]mMYic{*l]N5'R/UüяqNjS,}PZڋU;,TrnbYՍ={}oDw۪:)H<ДѺ(bLRU5rٝ+$Fb]mfOa+e:]C@tɵ$>i zݧ,<=yz4J<MFƁ&恆
<M/34܂\@Fiqe*o8hd_K}O endstream endobj -229 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TFIASI+LMRoman7-Regular /DescendantFonts [ 715 0 R ] /ToUnicode 714 0 R >> +236 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TFIASI+LMRoman7-Regular /DescendantFonts [ 711 0 R ] /ToUnicode 710 0 R >> endobj -715 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TFIASI+LMRoman7-Regular /FontDescriptor 711 0 R /W 710 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +711 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TFIASI+LMRoman7-Regular /FontDescriptor 707 0 R /W 706 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -716 0 obj +712 0 obj [ 28 [ 481 ] 34 [ 667 517 ] 43 [ 444 ] 47 [ 517 ] 50 [ 444 ] 55 [ 306 ] 59 [ 500 ] 63 [ 517 333 ] 66 [ 239 ] 72 [ 239 ] 75 [ 794 ] 77 [ 517 ] 81 [ 500 ] 84 [ 517 ] 86 [ 389 ] 96 [ 342 556 383 ] 105 [ 361 ] 109 [ 517 ] 116 [ 461 ] 118 [ 461 ] ] endobj -718 0 obj +714 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``0T\0ŋ endstream endobj -719 0 obj +715 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2227 >> stream xuV PWf.v!xDPA\gaF`$@B&`4XPx#@$jToahR[}_=1aq13F+r3}3:/`=bqrbid1E.Nl`"գϞ10B}
{9.'aNcLJqg[?_Y!&3xe}(2bjEa}0S9Re0&A1#iЛs|,
Z{:¨V1LDb|1159F50F2rd29GoȔeps2IFcwxlLȐ0 @@ -3152,32 +2989,150 @@ D!m[OQ ͙V8 endstream endobj -717 0 obj -<< /Type /FontDescriptor /FontName /FPEUQN+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 719 0 R /CIDSet 718 0 R >> +713 0 obj +<< /Type /FontDescriptor /FontName /FPEUQN+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 715 0 R /CIDSet 714 0 R >> endobj -720 0 obj +716 0 obj << /Filter /FlateDecode /Length 472 >> stream x}Mo0 )=P!TҖ M%+'YK =f@<̼av=xvTlӲ9 endstream endobj -228 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FPEUQN+LMSans10-Regular /DescendantFonts [ 721 0 R ] /ToUnicode 720 0 R >> +235 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FPEUQN+LMSans10-Regular /DescendantFonts [ 717 0 R ] /ToUnicode 716 0 R >> +endobj +717 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /FPEUQN+LMSans10-Regular /FontDescriptor 713 0 R /W 712 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +718 0 obj +[ 27 [ 850 547 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 54 [ 707 344 563 563 ] 59 [ 563 ] 63 [ 625 375 419 313 ] 71 [ 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 594 ] 96 [ 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 112 [ 594 ] 114 [ 813 850 594 ] 118 [ 594 ] 121 [ 563 656 ] 125 [ 625 ] 168 [ 547 ] 251 [ 513 ] 277 [ 513 ] 319 [ 625 625 ] 502 [ 313 ] ] +endobj +720 0 obj +<< /Filter /FlateDecode /Length 42 >> +stream +xc``6.p߿
oJa +endstream endobj 721 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /FPEUQN+LMSans10-Regular /FontDescriptor 717 0 R /W 716 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6501 >> +stream +xy \SW܈-R{[Z*de BHrD@ +Sxe!fX%\)܇w +4Kȏ']~.ܫ0ǎfZmے. +8]C-v#,_B̈ 84e\W7cU25;->ˠKᅾ=VTÖW݆sZնnC!'1eT7=/pjT[ +N-IO3Zd:jJ +L{H
J7!6~/C"XuPN߃)y٥z{M˶@q(p + i(}^veF-vc+q'/]xN:jS>kZa:Xƃ~t0 d:H0${x؋62fJ`-"AN8d0FF#ɷzf!eHHXUNTJ/DGyA_EFWm7yxȈ)X>ϵUh>),@~
}\ʟo_?˶XD3-0ƒf\uVy,}ghIyA%LȏxRTIBU){p]V1f&O8r&I(k^-ݹD/u16⳦lY~p섕/&X{U!17i6WF/K=&<n݁wd@^A|xvǬkXyˏ⍻<6(0|
`ԣ; oju߈K"̊;uOo[v92=Ԛ<ytb.kB6iDxN2aHq8 $ktb+sO;oZ0P Led7V1@1HY_ざ?&6Uo<T6:Ț"~:ހĊ_^4|.)=#QќpG<Bx'NA$ȝ#le@6cPi=P`vOk|Su<T!-Jpgwoݔ]jol*JO zJWl4r-'O棡_g\I-;VR-;CLf:901eIw"
1 鰎JJpGJ +` lLP{5$wla0 +
%e ÍbT?(j) +uʫk8?ي<rBj*)ţGc+]U/H.[/*xHnH`+B-D$gT?~{ش <SߥϺ]+R{@9{HMl7溬k,x"*vp0OY7ZEMCNxيIҺȇlۓZ#kyt-db@,9Z/l].m^N7m5/_Qs<74PXfQN9uJ3GnBJb@dߦnK}6/G(_#^_]mdT7VWqfa)dYL&wfsx}K2F6>X:Jrb\V!3PZ^VKl.16DC/m^/7g9zmq=?h7{\l?bˢ*c7,߬K"?@7{ȯϏƹ8|]i:u?uGl˫#M}k5D
,t N-1(ҵÁ\θwa/A
B>E> s_PprXrR1ݘ>怣/z!xbX`a34+ZBw$n_xh}(QGOB@tnuZ.'/7.Q.vonKծ~` s0GHA]!|+9ZΌJу^rgz6}o<8~qm&Ȫ#2f#I +ReRAl'ē<3IBesQjTՒgˎ]WѰ(%h=l;_/3@{gr]z +!
]؍<^Bl"[0(kdK9D9܄ǘN"5kY> LmlBg#g+W.xaS~L xrU +[a0v}i 5=jn:.z%aZ. `0e NSS*Ri{o=l\(Nd{ڈuPOPEQq?#]ɦx!<zwn;=hKbNQcyK.(r;r+[i9V*00hGV4sɴ隐-DzoJ|3Vi +anijjaCQ1EeҭK!A3W'YfP4+0xNs^Ppb鲒%Wk0ȥm[cfPFMhl8פ5
\XƱhŇ۳#ۗ7$51Ԉ*qA'?A{sN)eEj084ZcNJ2<c*+K}$!-¡oTHJHHtM%ҌIQa}yYAWVJO(`|9~1H\Tf7͟zCj
x[r|P/Cvp
r.ԶVhٻ#
U'.vwtN<<Qˢ?)N=sz$'ӓ_4v L<QM)d>aݮXnPc0p:UdKOVXgXE!8@zIxDJtC0̊Z?jQZi)wq^WNeFG`ņ+("\8 (G}K(n~Gw0>U~hKwr峏GxxP_~gN.UI(3[q%`nކ\1^sh3o-hjT0r9>>nA?%p[Ea x +wiX$UdԱ}E<̄+ +r?ge=SwzH![M<tG(̞eVd/20:gO^Jn4'8FNM +ݣbQ1'a|;ℂZ+_WRWTBWmN7⪂X[Ʋ;/:[8^;r朁9r=`[}raS1[JmG>8< +xU
2ފk2R @]FF]RQt7*2`1ϰğZ/lQt:DMgB +0P\VRTxn:q +#=5hgSGb@ _=K&ՄJ'ff`UFɂty +@bbkƳ!",\jmgg3ijZF +jKI"o4kB?^RgRMܡP"KwD Ï%
_upQ&MH]a?Křhƪ:s[ظ1T^kkzh<W#{fa618+iA\XzJN@C!N~|ܶF` },A<[!o.g4
xg4r=\fbLNc=sa1c +LF֕r&띷o8p"M^&!dku|
st:mBk6k+i.syl /$}/x-rtFn
CJsu96CdӲ0pιIҌ<MW$3ܾvQj4ss?2wvn0WCέXf[QXC&cv~ +endstream +endobj +719 0 obj +<< /Type /FontDescriptor /FontName /NOGCHB+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 721 0 R /CIDSet 720 0 R >> endobj 722 0 obj -[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 778 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 ] 114 [ 722 750 528 ] 118 [ 528 ] 120 [ 444 500 583 833 ] 125 [ 556 556 ] 144 [ 500 ] 167 [ 750 500 ] 207 [ 444 ] 251 [ 444 ] 257 [ 444 ] 277 [ 444 ] 283 [ 1000 500 ] 319 [ 556 556 ] 343 [ 278 ] 428 [ 500 ] 499 [ 472 472 ] 502 [ 278 ] 575 [ 556 ] 589 [ 556 ] 612 [ 500 ] ] +<< /Filter /FlateDecode /Length 648 >> +stream +x}O0=d_{Y!$E +P+f ( }m H*_3Ο5`[VצP~q`^Z)dmgS;ձatٽ+]R/WKoragYٗ٬2fbiTӖ~gkB˼ZoDبw|*l$;Z^1Y-.fH6ywk;uYSM&l5kn74R5bç͊ݵʺa72NpQld_I- <2ZqE%U[ +&f +N/ Aa%A@^Q3 E!!/cy!^I$D;U!=":Ya.1RxI xDcR$8 3H#pRM /K"c1vC/>p zLUfb79f&@AAz4":ydK]XS +[ @K" +{?mo=R\\"sw%J7]]6}_Ԗ6K/TMi +endstream +endobj +234 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /NOGCHB+LMRoman12-Bold /DescendantFonts [ 723 0 R ] /ToUnicode 722 0 R >> +endobj +723 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /NOGCHB+LMRoman12-Bold /FontDescriptor 719 0 R /W 718 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 724 0 obj +[ 27 [ 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 ] 61 [ 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 ] 92 [ 525 525 525 525 525 525 525 525 ] 101 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 118 [ 525 ] 120 [ 525 525 ] 246 [ 525 ] 272 [ 525 ] 338 [ 525 ] 602 [ 525 ] ] +endobj +726 0 obj +<< /Filter /FlateDecode /Length 36 >> +stream +xc``w ~( l@ +endstream +endobj +727 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8223 >> +stream +xڽz\Wqw=;PAQzYX3KwD
+EM51h>g~@$`s?sfE1!,y;;3믭9Sď%7E<ijFTLw`?47 BT8Lx4e:^oӉA $'EƢ!ag[%{{(,̞=w=˕3-m)=-ii7rL)zZ%tqf)stpi*t˂ߞihɽ-O@׃A~] +W˵,e~ +
\]-g̰tuP(͚r)r8KMflYfLnyU'pFwAAW?"~bpT` Kb1@L$&)[Tb1A$fw9\b1X@K,$#2b9"VXK#l[b=#6b+aO8ۈb'p${ 'G'\+F'Ex>/G"&BP_=?΄^D8_7#oƶaqJc҂'H$k$&ɅK
8)j64phf{o\3b>L<a>1aQs*$jHǑw4kToF}Blac5h=mF<M7?x_h:Zg,ƏK?&2tҶI_OVNl(2㴿hqJQl6tABnTJT~/QGh|pU7+ +.9r%'klRrl/bX@VM+9j,Yv|>kpWk~^:*/njLFZ,m_&q+}+«s4([)OE.jIvMR7mjj:>R0\ϴ>0w'.s9t6ΚEkFiu:h>H7rhs>\ k +&?]j?^(b6)+6['{RW,?Ǜ4;17|xEq sbHd8z&_Vɭ-HIJFdܗ_.{r)[J VJ]Fo"u^d˼ +& `$ČO\\0ͶUU}ѣdoObUqxt|B|G019lA)X/(T^^kluTYP|/.bˋ*Kf蒨d
m (E~VAV4k8UZ
ˋRilR&ns"8F +ɋ/cAQqJi"w)6~R5µ4\nwץrLyAi+X-4 +oS_w#^]/b`b*0OlbSd^bXYt`uph3<,}q z}{xř+'Nڲ nZpҚn:bZ2tN齍dD`p5\1[O7 +YH!)ot=d߁㴋T4`I}e[Ҏ7C`@$eeJ'Z:*av +D`+iD+:ݝI*C\y
ZvR=knr2vىIZqnBlITƦǤųſc2*Rw;rI>yD/Dq\k>2[Bt#w
ri&)̗$whD'jZ45&`!Ꭵe#OS[jyC`Q06%%#qTH+E+}Sr%n3$E?8q%#Y)A<(5K;P
Lp~eP2%%O*wD)qxR2ү.hɷ及XM&w^Lr+:\T_ rAi=x>zxзYlCzũdB`cwo_ߣdax/0m%+Y|VtLׅC` E_2z;nQ3{o0~[+{aiL+WQ+)j|CbPr")7[46Rl׃ 䫮gD+.#
DtC!{|}$TԬ,(i7s+6s7C?f ++i2{6=ApXpya*k*b+#[B` aO##A܁`'>~Zs:k9Ҍs@E '>9dK>MKϦqQݹcY\3]jwZl]ݹ}V2viAtKt%Tࠤ%|DNH$:\fй'G<(rr+i`&&`*SKIfznv>DvOܻ20FnpN#0+)/Hϝ;֙`YhzӞ$Gt)Cj֝Q).IW+5. -q,,C/z <I8$o'CCz p݃IjϒԠ'r7>#?nCcBΠmjbY@Vqm@CMX
8h84.#^r)c&Zث5?sAFM~`{ݪ}Vwx(6}wɢgv}+o^!bϟ~1zJD;qܧ +~!.i
`qƛӭndµxqdpM^m53_ ;K.jKv# + +^^FA#9]o,/;m"1,P#,#o PM )S`Y\#J9Z^U,lJPlkEOu" +*)pXH¯dK\' )H?H.Y)ʉkB ;2<wװcv@< 3xe$'~sspJ+:Zasq+C G9,Z.0)0㳟T`
K͌S NTFEl:3oEZCh*g8efaJq
z,{üZn%\|&oAW4mvL܋!D^G^fxWJ= +9Qnĭu#v~(+˶;PVw5dl$˪(]RISsQrE;G],5gE!UWhL3rV FVgWOxĞiLYqTiNss9*1] f\bb +\ҜQ3!QW DŽ3q!REYTqN&c8 ,.SxKi19Q3;ap>c鎐05ch/cz#:BB!AEuN!!6
]p璅znea
+eVq:QUx?V=%6Ѫǻd~!^FVA&E|@;G<_QZ~wdqO,%Ɲvgj6WK%iEwZS?u=)w$Cr"H=]%`CWktoLֽ\rه0{ƹx WNEXM%"(Q?paa0;p_]
J8#y̔T<Xtpv~=:Leҳy}2e`}Wdߘ C`}׃*n{=r,ѫ7
aHĭLaf巑x._{N̶ۻ#>ųz*('E:'rzSUM,x>CRXZpoDaz<XVF &Mh?Yk,2;Z +W' +#̍CvRr*!bՎ}uXც9oGHm|}ٓ.jvvrWI!c΅L9|*f!|X*Cy+9AI[!=2[Qgffi_Bf%Mw +@іb|RX@'m(';xIC*SQ1{b^6~zS h8\]?>OTl:VGoCsQli'at)1UPVlWuPG}i̗Bo<-<SNA0Yg3VXY=xw?e;̴`&p4/!0$>**.l,Kʎg9͖~Gݠ$HT+Vϰa?z@C/l${BطﳞAow'qRYzb0S:QFlH.t3kG[w!FJ؍6(.=4_/0:,HFyYE +~".RhL4ʅ$h3s;1eiI9t9UfnSrV`r],y>n?vz9{W**Jr2YGzEİxbnA.Xcn!T"9[|PpQ7,YiّL_s[*MZp=SQZaBNDH0LRΦ*8\ n`4Z`.d06r/ots |SPl[;s&BQ
<ʴǥ_- x=$9Y3KQreȷ>s#,?ӎN[fUIu=?ywd:0q_Rp~(]ub! IyEb +1J-绶^h?wDAiyI! LE.lbɂugl>dA/?WΓطy1 +6_엾6}P&5G*]Pqɨٙab{~
{~]5{}C9*MHcAbM[>ro\ +}fW +՟B;tYlۅ`\722Pi`T,~R0^Q@`*6[Wl*QLuju]Zgũ".VZV^UT߭Y.[jK?=~G.+6])+]1;$6h5&x}4M|.*<RÐ]XÂ(v-|Lnߛ_n{idSoTצ.;ѻ{4W/K +2(7pX:Kі5O5id;XRAtt
2y`쬄fu-(H<JA +qeУ*]'/ң*T=^J 8% 4L)]L%»Z;旁$ABG +
:!ڍ`wkka^a%'_=#C|.V+ q5oM@pI)GT{*ń)R+jBKΓahu,Ysщup\<qZS>W\).(פHq!`{#X-Jm.V$I=+2#+3"i/?~zqƃC?Bj +`h-t-`{wSPsA]0HRE墅$j&qD|tB46˻6+#5Mc?C#])rCqRJNfafqRfFrS՜ N7ϡ(N?YR>ΟZM*ƘaS'B?I)W̅!|;$ D6fdVp1&A5WҼ<:2̙
=RdgVgi4[rM+G߉_m +endstream +endobj +725 0 obj +<< /Type /FontDescriptor /FontName /KXPZZP+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 727 0 R /CIDSet 726 0 R >> +endobj +728 0 obj +<< /Filter /FlateDecode /Length 750 >> +stream +x}]O0+$v+Jڀ qW&Q^i Sǵ/]QX]%u]<}4ŬΏW8vbr-U?{+ϐ!|q*PWunwo8fG?PQŨrmWխH$̫bZ.J1:-e}(<J(ʼ'o0y}zwXV:g.=GpmY5inG$d" +K=z
}rjSׅMMsoB2D*O0}oy(i{PthȒf9h(wk& $5 5It@35qı;S YOk,HяD?%O]P*i쮂%OqM)f_ F +]Q4b-4i2MH03
#KF4, FadI4"шЈiiY넟D
gIS胁i5HO"D$*3 ?|<g#nYe$Ze$AdpP8Yn +endstream +endobj +233 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KXPZZP+LMMono10-Regular /DescendantFonts [ 729 0 R ] /ToUnicode 728 0 R >> +endobj +729 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KXPZZP+LMMono10-Regular /FontDescriptor 725 0 R /W 724 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +730 0 obj +[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 778 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 ] 114 [ 722 750 528 ] 118 [ 528 ] 120 [ 444 500 583 833 ] 125 [ 556 556 ] 144 [ 500 ] 167 [ 750 500 ] 207 [ 444 ] 251 [ 444 ] 257 [ 444 ] 277 [ 444 ] 283 [ 1000 500 ] 319 [ 556 556 ] 343 [ 278 ] 428 [ 500 ] 499 [ 472 472 ] 502 [ 278 ] 575 [ 556 ] 589 [ 556 ] 612 [ 500 ] ] +endobj +732 0 obj << /Filter /FlateDecode /Length 59 >> stream xc``߿ endstream endobj -725 0 obj +733 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8767 >> stream x{tȲ4D`̘z$L W܋\-YeʽȖ7'@HB HBIH}HsBryܻ%φb<[<j5!AƏY+ t\d;Xچe-jcg1 PD0Wi՛5
~nV1
c4zx_-;q煄ƆE:N?~hǹc{DG;{9.|㊐h`Go?@u%!ЈcG8F8r{zGx{9J#:] $8qwp1ގ~);·&b\`E,`uc-t wt'% r;8?2^6 @@ -3218,10 +3173,10 @@ TJ%H§\٘YF{(e!ҊgΙsG,^mDߜJ`Pś6L) NJHxHq7wcK1B57hV9!6۶xEl">2R D_w_!.u4;4G^,e7=æX8Hb4%uv=Lݯ05di4vvm&Sfdz endstream endobj -723 0 obj -<< /Type /FontDescriptor /FontName /JXVJCI+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 725 0 R /CIDSet 724 0 R >> +731 0 obj +<< /Type /FontDescriptor /FontName /JXVJCI+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 733 0 R /CIDSet 732 0 R >> endobj -726 0 obj +734 0 obj << /Filter /FlateDecode /Length 788 >> stream xڅ[k0+lRSBqlH^HJk+YCbyȿ_Yg,˖-eX2lmOֻY6`ŘҔuM1MVU]
wv.ҜW{dnͧfwmհi4s>LWMȂ{ιH2iޛP69KVuّZ5jU1Vkܼ99mflb3WН;oڕN]9ތsVmXvNߖ: hJӷyaoflٟgy]_[]pwSůs%(1戤()GzҠ%(FB>E|"-3> ʰ$E TD)@)ED @@ -3230,72 +3185,22 @@ xڅ[k0+lRSBqlH^HJk+YCbyȿ_Yg,˖-eX2lmO J2S78ԩ
?} endstream endobj -227 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JXVJCI+LMRoman10-Regular /DescendantFonts [ 727 0 R ] /ToUnicode 726 0 R >> -endobj -727 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JXVJCI+LMRoman10-Regular /FontDescriptor 723 0 R /W 722 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> -endobj -728 0 obj -[ 27 [ 850 547 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 54 [ 707 344 563 563 ] 59 [ 563 ] 63 [ 625 ] 65 [ 419 313 ] 71 [ 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 594 ] 96 [ 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 112 [ 594 ] 114 [ 813 850 594 ] 118 [ 594 ] 121 [ 563 656 ] 125 [ 625 ] 168 [ 547 ] 251 [ 513 ] 277 [ 513 ] 319 [ 625 625 ] 502 [ 313 ] ] -endobj -730 0 obj -<< /Filter /FlateDecode /Length 42 >> -stream -xc``6.߆7v0@00hF2` -endstream -endobj -731 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6476 >> -stream -xy \SW܈xsVw*de BHrD@ -@PEb"6/*Z=bbM`P"."*DAFyG*b}1~kWQG(<G)ƌQ(11]]cbFD1Ѯ]]q_|,_`lD/;(4zOs|#|S䋥SA`j(5IRxj5LMRӨ,j5ZH-PK)jVRj-6R(%MPHQTJQTMP**J(#Ehh
9 5c=*[jN zͩ[ہ /$I%4H>{bvv{0zT^zi{}\ts| }*;&fоoUw%r#;?_@אYqN4.jwFQZu|o3v!m&*ŲJaEddo!m-ocPq]Ւ/82
au< -j'I;;LSd0hpNGIU!~6vYSG2$s}~omfH{y?R;-.@5<^ݙ1SC6N繜C%'&`oM{,,c~%YZϦÓ7m.JK?S!wP%6}#h:9&JLmL =l_b)1!><b%})4ӕUU{NK=ᱽيVEsB7O$O:tfu}DB>`tzu)(qeT&Jry_GٲpvA"y,dDTJijPAh9Rф<![\qqϙli -LJtQ<97D}nZ 5FZ9qzMަ'j -j£+P|J9NލDKqpu?K[yoR|?*6rŦ۔CCB Zq%pf4TfP*t̬.|sɟj=ݹ{zz
|ȰperO^owx>0܁#՜,m{Xv6B TKKQs;3"_ЪNMrb`B][`)q\aoi>5m$HLo
*<`uL{$@ -q='m \<#6)yr#haS3ΐv$$,ӎDB/@- 2/obY<pD^L~ZL-zZ6~Wr -RaXy8l㇉s;w%mHLw W+L6KLKOPɷ7i.?<`A<:2T -ghyhQY/SPgKTz͓=8b6m{ -yB[d!lz'HYF -s:]NT%pcX 6=iy;63I -6DTVI+=w`^I:!o8EպuBx1+ -Hk-.P0ǯxM,eZ,^g!DX"_#w>ŬW\v-ke)GYCa(6Nx<JeMk(g4}N>[^q]Azf#L2a[U|/
d1WRKR:]T;8<3-c/BHD~*bsKP/N}f;, K١Ei:d!mU<)Dւra#mKI)%(Ѐ uRɭ)`y9c -mi15.ur9fr/A`L0Cٕvc:SuuOllN㇗Z+gdgcU3Ͼj^x?1]zmܜiPX~5_5_i~~;ff+/[j^=~s'lJ5{\Ad^Y7xcq릊OnlZLĠ@<dp>r37Lf -;cȥYkOCCsGTώϞna8Na* "]YxҦ/ٙ?cgxЕ0
@l=Oc7-Ф}~M]N3[c%`{ ̄c^fg՝d#-3j=Z}}.&B%~ȇ@Qg U;.H1P$v/h(YhPײ<Ls -`n7vML)xQ2=+K1
Gğɣ=ݹ9̢h<+e)TuYHFlB01s2j{ -qla1^5y{yR -|OoA-.):&qBn2?"ĩ8
NTHCKEE!ѥq|Tݮ -H@p/nװM^hrBz|;HAHk6rD ,ߡ?wh§[Tu\B<>oWY*igۭ);-bg2PY.X摅`Wt5pi;9uӁ#~>K c]_|q?=8?=92_TÆE&f0j.j^O̹HLq`H\_[j4l9;&TPB1ww|cIչ\D!^Bj5Yr!ˠ宭83iTm䲅\=9~H@*E y,fetIZΗv;$Is\$7';7=:sE`ɖcOz"ʄ*X)&ـF\
>z[do@]@qOyAu^z4}Uۥ{Eʹ>cJYH%kB]#;0f볳}A~{{sɒ\Ca~0ǾpO>̃ -endstream -endobj -729 0 obj -<< /Type /FontDescriptor /FontName /CXYYVI+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 731 0 R /CIDSet 730 0 R >> -endobj -732 0 obj -<< /Filter /FlateDecode /Length 644 >> -stream -x}[0+r& -g.3DOdm8Vv=+?~ -Z+|ݵhjsT_Gה5e*t5<BTIuOa[/?뺩w:Es~`kp2Kc&Ƙ[Su}>A`dZ.䏍d{k#&r remd7~Pu78Ǐ4C9IY7,f3&,lzۍDr?KX8ٲowvi@0c|fxhyr
v](\ g8(@1bDt $@+ q#CRp"xAPO8T7y Rǚ O@N{Oh{B -DnV1 -endstream -endobj -226 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CXYYVI+LMRoman12-Bold /DescendantFonts [ 733 0 R ] /ToUnicode 732 0 R >> +232 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JXVJCI+LMRoman10-Regular /DescendantFonts [ 735 0 R ] /ToUnicode 734 0 R >> endobj -733 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CXYYVI+LMRoman12-Bold /FontDescriptor 729 0 R /W 728 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +735 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JXVJCI+LMRoman10-Regular /FontDescriptor 731 0 R /W 730 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -734 0 obj +736 0 obj [ 66 [ 245 ] 77 [ 531 ] 81 [ 514 ] 84 [ 531 ] 105 [ 371 ] ] endobj -736 0 obj +738 0 obj << /Filter /FlateDecode /Length 17 >> stream xc` endstream endobj -737 0 obj +739 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 764 >> stream xmRkHQNmZVf,ac6
! @@ -3304,31 +3209,31 @@ JjB.Ԩ+S-
%Eh/(~UvFȚLOlٹiI}̐UQu5; KWVWv^w4ZybX4=MQ#ch3z6FE: endstream endobj -735 0 obj -<< /Type /FontDescriptor /FontName /BLRUUF+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 737 0 R /CIDSet 736 0 R >> +737 0 obj +<< /Type /FontDescriptor /FontName /BLRUUF+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 739 0 R /CIDSet 738 0 R >> endobj -738 0 obj +740 0 obj << /Filter /FlateDecode /Length 382 >> stream x}R]k0}ϯ{6u_X{ڤ~Ij[!'ܓsOy%W'^XZ3f \:GYm9ZN`K,RT=C%j-9i!{tMWqI*˱Kڣ ̐)"8OԥPrARj6Tn+~k,$7pI0 endstream endobj -225 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BLRUUF+LMSans9-Regular /DescendantFonts [ 739 0 R ] /ToUnicode 738 0 R >> +231 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BLRUUF+LMSans9-Regular /DescendantFonts [ 741 0 R ] /ToUnicode 740 0 R >> endobj -739 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BLRUUF+LMSans9-Regular /FontDescriptor 735 0 R /W 734 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +741 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BLRUUF+LMSans9-Regular /FontDescriptor 737 0 R /W 736 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -740 0 obj +742 0 obj [ 28 [ 514 ] 34 [ 728 571 ] 43 [ 457 286 286 ] 47 [ 571 ] 49 [ 699 457 ] 55 [ 314 ] 58 [ 807 514 ] 63 [ 571 343 ] 66 [ 286 ] 71 [ 642 286 ] 75 [ 856 ] 77 [ 571 ] 81 [ 514 ] 83 [ 699 571 400 400 ] 88 [ 286 ] 90 [ 799 542 ] 96 [ 402 ] 98 [ 405 ] 104 [ 742 400 ] 109 [ 571 ] 112 [ 542 ] 115 [ 771 542 ] 118 [ 542 ] 125 [ 571 ] 168 [ 514 ] 251 [ 457 ] 277 [ 457 ] 502 [ 286 ] 575 [ 571 ] ] endobj -742 0 obj +744 0 obj << /Filter /FlateDecode /Length 41 >> stream xc``0M4\8%nÂ#X@Xp& endstream endobj -743 0 obj +745 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4412 >> stream xڽX X纞 @@ -3349,32 +3254,32 @@ VO|y=.jXwXlo{z: ;lEŞ7q endstream endobj -741 0 obj -<< /Type /FontDescriptor /FontName /IUSWHX+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 743 0 R /CIDSet 742 0 R >> +743 0 obj +<< /Type /FontDescriptor /FontName /IUSWHX+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 745 0 R /CIDSet 744 0 R >> endobj -744 0 obj +746 0 obj << /Filter /FlateDecode /Length 558 >> stream x}[o0+H! IV"m/v!Hĉry߯PZ ė9sf}{YȟsꛜKV{ѪTJ$I7UFݝNިKLB}>lse[ztYsS/"Qv#ʬ/jڢRO,k%Ui&ls&cd㬲1!E9yWewr7\]s[#)ԉox9d0LQKf%_h]nf+ImdDL/,կGJ~sT@0|!#,I074E3h BtZY-Ȍ,Mh tH PZ S\?GNRor hF= i:N֖bLRf9($/qBBbl7FwJ0v *161Gp-ATA\ÙpOfO{[3 kF)䁍8idCi}`/=|jSe6R/P endstream endobj -224 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IUSWHX+LMRoman9-Regular /DescendantFonts [ 745 0 R ] /ToUnicode 744 0 R >> +230 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IUSWHX+LMRoman9-Regular /DescendantFonts [ 747 0 R ] /ToUnicode 746 0 R >> endobj -745 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IUSWHX+LMRoman9-Regular /FontDescriptor 741 0 R /W 740 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +747 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IUSWHX+LMRoman9-Regular /FontDescriptor 743 0 R /W 742 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -746 0 obj +748 0 obj [ 75 [ 986 ] 95 [ 887 ] 98 [ 467 ] 109 [ 657 ] 251 [ 543 ] ] endobj -748 0 obj +750 0 obj << /Filter /FlateDecode /Length 20 >> stream xc`Ft endstream endobj -749 0 obj +751 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1088 >> stream xڅTmLSWJ/wQ*ҋhA]@Eatc&vFRt{k%JAriPHcKh4MLlfes&\9ĬY%K&=<oL82yE_R5m{8)I@JIZJäDGIL,C)dMRAdZg_=dF$;H @@ -3385,10 +3290,10 @@ W-`glZzPV':x`vpN;Y,<pqF5 8m&]Y y{{`,$(u^FfHJU}lķZ9z__njMOH(rCm?'`UYdH&r$}._W_w.Izt#_aT endstream endobj -747 0 obj -<< /Type /FontDescriptor /FontName /TZPLIV+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 749 0 R /CIDSet 748 0 R >> +749 0 obj +<< /Type /FontDescriptor /FontName /TZPLIV+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 751 0 R /CIDSet 750 0 R >> endobj -750 0 obj +752 0 obj << /Filter /FlateDecode /Length 381 >> stream x}R]@}_q!sa/*b7:#>wf̂EVP<s\N'WW} @@ -3396,23 +3301,23 @@ G,TzmNgX,wyS8hNXBw-#)ʞGF.Mȗľg߇Mt6ۣb9*(S ܀B(9ARj$_+~7GBڼd endstream endobj -223 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZPLIV+LMRoman9-Bold /DescendantFonts [ 751 0 R ] /ToUnicode 750 0 R >> +229 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZPLIV+LMRoman9-Bold /DescendantFonts [ 753 0 R ] /ToUnicode 752 0 R >> endobj -751 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZPLIV+LMRoman9-Bold /FontDescriptor 747 0 R /W 746 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +753 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZPLIV+LMRoman9-Bold /FontDescriptor 749 0 R /W 748 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -752 0 obj +754 0 obj [ 28 [ 515 ] 33 [ 515 ] 47 [ 515 ] 55 [ 515 ] 59 [ 515 ] 66 [ 515 ] 77 [ 515 ] 81 [ 515 ] 84 [ 515 ] 88 [ 515 ] 96 [ 515 ] 105 [ 515 ] 114 [ 515 ] 118 [ 515 ] ] endobj -754 0 obj +756 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``p`dP`hhpP D) endstream endobj -755 0 obj +757 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1845 >> stream xuV}TW!@5ʚiZ3K- _EAE%1LBD<u @@ -3427,69 +3332,78 @@ oRWɧ<| ƠP"{nPq%e}Gܮ(WȗN)QuoYUO&Pn^ g48ԂE>*`zK@E%1άxh@,+&p_(N(/?=u0ݕLDB0O>`RFon0km(VҖ
F"3DgϷ^?@%xSEV!6¶M:GӞ`x#qNf4e'_%#l|ZQuJeq?HR@8(fu\o!du8iw6s;YpoۚiPH&Ng
y[j;rgRsJcOt~w@[fk9RM endstream endobj -753 0 obj -<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 755 0 R /CIDSet 754 0 R >> +755 0 obj +<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 757 0 R /CIDSet 756 0 R >> endobj -756 0 obj +758 0 obj << /Filter /FlateDecode /Length 428 >> stream x}]O0+`Dpf!q%Df,[֞&%.m{&F%pkz:=A[2,5P3 endstream endobj -222 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 757 0 R ] /ToUnicode 756 0 R >> -endobj -757 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 753 0 R /W 752 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +228 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 759 0 R ] /ToUnicode 758 0 R >> endobj -758 0 obj -[ 28 [ 490 ] 54 [ 639 ] 57 [ 490 ] 59 [ 490 ] 66 [ 272 ] 75 [ 816 ] 77 [ 544 ] 83 [ 666 ] 88 [ 272 ] 105 [ 381 490 490 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] ] +759 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 755 0 R /W 754 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj 760 0 obj +[ 28 [ 490 ] 35 [ 544 ] 43 [ 435 ] 50 [ 435 490 ] 54 [ 639 ] 57 [ 490 ] 59 [ 490 ] 66 [ 272 ] 77 [ 544 ] 81 [ 490 490 666 ] 88 [ 272 ] 96 [ 381 ] 105 [ 381 ] 107 [ 490 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] ] +endobj +762 0 obj << /Filter /FlateDecode /Length 27 >> stream -xc````` -Ph`(`r` +xc``0 +P`)hh`r` endstream endobj -761 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2199 >> +763 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2679 >> stream -xڭV{PSW+6״5Wv<|?WT*"*k/ py -NH2!?DhH.R)ӢLFOM : -bS7fiMLV&JSԲP*^kx-M46JRJPjL4e(SeRU:eU:JQQ1ɉIb-27hFEPRQ>wNXޠaF Y<>)$nIE|=Q*}jf6_|+rR#ӵi%*Z/@1 -F"QRdF2MHbD -ӁB01> d;VD :.^'!ɒ-?e#n$?Lb8!M`lf8WKht?JЬsg%nswL
/O7t'/&Q~myJlt__㴛ZTW=ݮ{$?bBԦ
)ipv!+,<38Ep0zG<u<Ȉ};(F&Z=x[$Ni'4:duS1VK:v {8]ŏq2rIO_
\;u*k@-a]8aF.h[{#ɚt $&|ț;nکF,DEEYzVhU?ЖQ]Bbʕm:g)vZg ]8ŹM[/-OW[V=."TvNH)PWV{%M_`-+Z:gCVK9V#>ll -d!72CuqSТ?@g.OL1'{Y&Y{uV-@%~EHrˮ_?)'x{Q4ɧp@rgx|[N-)/6a)# -K2TKO¦7/3 +xuTW'dbj3NWgLhG<*Z`}PCU(H@!KHb(B|\E*R֊kֶ+-vmN;lg=s̹s|C7=6N1kՙɪyer2Y3r%ȼ(f¼c g$~lT +6~@Z\NIt +]µK\d> +[CI-1 *jjrA}M GoCͥ\Dw¼ʏi64>'rĔ^8
.iDM-LhTt`0fVcL5T~4 + +@..Ы5%طsH<&LB(J|)Y+mʍdBz' +b+tmY)-bSMuä|&NkK@yqEya9B@.>_:r ImSiջ+f~7 +6P{v`
ah]drV2[JK-Txj]2<v؆b}+?Ja'3) N:Vz-B8~yE9F.q=))\u^ɿ_:0E«wVV|]Jڸ:|p1 +nIˠXa־vs(G,[ċ"/6N^*pT2/:L{gC`̣j~۔FѴrSeP @qX|/}ղHpp`j[sB8hE\6h
<1IKp,}rPh1@4)I:m%Шo5>-2f@&kVL}>lꛌ Fʙ_F[jY|GZ]1}[TXJ%:45杛뉕#Y837\x ް,$cK=6[=Mu6Ja7'r|$!&i*+5ƺƚj.c'y %?Rfr4yhY:"cFl +wuM.Wi +|O
QшA +b>#g9=ןb%!i瀞vs +*(sَ]YYҲ3S!p`m8?QUAa
\aq=(d_(Fn#b%L\fiqI<$ٵBe%NO@4
Un8vysb(ON]<mMbsZ8#sdV&{3,܇ZTFA.rR#-e&eZd`
&uw[dR~%X3dI2РpϣJAڙs=}n.g x>"K3k8K
nanJ#[z-Vǘֲ7suM{yp؇E`rcrɌf˥>ßwg+M>x<2[hǃr>4܁MaxjG-[Wik[QWok!vFsP˵~Y)'h)R[\!w)n"H0Z3"enAfQWYn~QXShjao'vk1NJU6ٸgD#\o3ƚ}h;!fqWdQ6DD5@u]M*C&Ig&+Օ{*
ͺzZ*`2s/U endstream endobj -759 0 obj -<< /Type /FontDescriptor /FontName /VDLIBI+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 761 0 R /CIDSet 760 0 R >> +761 0 obj +<< /Type /FontDescriptor /FontName /NQTRXO+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 763 0 R /CIDSet 762 0 R >> endobj -762 0 obj -<< /Filter /FlateDecode /Length 440 >> +764 0 obj +<< /Filter /FlateDecode /Length 460 >> stream -xڅMk0@zp-ۉ--EJ4Iddnaٰ?wf^f}>}0eNcy`6+5T+@1E{x7ﰇ*+%+?'տEk<I#q}`|UM$i8&d.m/G 6}V2G%6qh4 -d(0[88AN%.]M:X eכ}DoFk&h7!`AQmZ7@%lTI_ZsLص5GS+;V +xڅn0y +DiB +)R]@UXKĎۯIT-RP?3Ɠ.| +_L#z&>xUb+MFI4X?J%L fDHyewPGf$eӚ}D#Hu"[&h!B<'ӺDnQ^n;i01ZZ@SLNhNf+PGbh-ҸB4sG,AbHsSHLRO cJiWyBZ"zH+$T&lüzu3bc̰{Ěsd,r۔a{~is +We˯8ڬa endstream endobj -221 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VDLIBI+LMRoman12-Regular /DescendantFonts [ 763 0 R ] /ToUnicode 762 0 R >> +227 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /NQTRXO+LMRoman12-Regular /DescendantFonts [ 765 0 R ] /ToUnicode 764 0 R >> endobj -763 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VDLIBI+LMRoman12-Regular /FontDescriptor 759 0 R /W 758 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +765 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /NQTRXO+LMRoman12-Regular /FontDescriptor 761 0 R /W 760 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -764 0 obj +766 0 obj [ 66 [ 223 ] 77 [ 484 ] 81 [ 470 ] 84 [ 484 ] 105 [ 340 ] ] endobj -766 0 obj +768 0 obj << /Filter /FlateDecode /Length 17 >> stream xc` endstream endobj -767 0 obj +769 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 759 >> stream xuR]HQםuM'״$u&JfZnc;N;23EPaPQ(*YFB>XD܉1h%{{A @@ -3498,10 +3412,10 @@ xuR]HQםuM'״$u&JfZnc;N;23EPaPQ(*YFB> '5;լ{k-MW<sϞ>ҍyPs-T2LDf_LeqgF, .r endstream endobj -765 0 obj -<< /Type /FontDescriptor /FontName /BTPEXR+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 767 0 R /CIDSet 766 0 R >> +767 0 obj +<< /Type /FontDescriptor /FontName /BTPEXR+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 769 0 R /CIDSet 768 0 R >> endobj -768 0 obj +770 0 obj << /Filter /FlateDecode /Length 383 >> stream x}R]k0}ϯ{6u:kMn]&%mKR0 @@ -3509,22 +3423,22 @@ x}R]k0}ϯ{6u:kMn]&%mKR0 OdPWBCJXIP"%\HoVd`\ܛ&*ۜ\X抄!dQ\g?h8IS~(6mTE}}ã'#0S2c3yFh<Aiu[h礫L[P9lʡIТuMCq;=Ćz5Z]n4;xR-wfnM~ endstream endobj -220 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTPEXR+LMSans17-Regular /DescendantFonts [ 769 0 R ] /ToUnicode 768 0 R >> +226 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTPEXR+LMSans17-Regular /DescendantFonts [ 771 0 R ] /ToUnicode 770 0 R >> endobj -769 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTPEXR+LMSans17-Regular /FontDescriptor 765 0 R /W 764 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +771 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTPEXR+LMSans17-Regular /FontDescriptor 767 0 R /W 766 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -770 0 obj +772 0 obj [ 28 [ 459 ] 50 [ 406 ] 66 [ 250 ] 71 [ 576 ] 77 [ 511 ] 81 [ 459 ] 98 [ 359 ] 104 [ 668 354 ] 115 [ 693 485 ] 502 [ 250 ] ] endobj -772 0 obj +774 0 obj << /Filter /FlateDecode /Length 27 >> stream xc````P`Pdq`P8 @` endstream endobj -773 0 obj +775 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1830 >> stream xuUkPEUm8(wMNmvhvk<<ıc [%@Z]-Bc&P4&'㌧vǞ>NidIj4K*G;s{~("#(n{US#/`ݵ'c18YS@M [ITZ&0r1?L*c]$Gۏ @@ -3541,23 +3455,23 @@ jqSM<D'Nyѻ?[y~-(15+Z-NaFG.E0N] !UcN;q]]a-H]: endstream endobj -771 0 obj -<< /Type /FontDescriptor /FontName /LLXTJU+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 773 0 R /CIDSet 772 0 R >> +773 0 obj +<< /Type /FontDescriptor /FontName /LLXTJU+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 775 0 R /CIDSet 774 0 R >> endobj -774 0 obj +776 0 obj << /Filter /FlateDecode /Length 425 >> stream xڅKk0@p-ٔ`qpI$[Gb"~$Ѐ?sc
nv/il6gE
+#u(Qj ڣ)4sq{OIEk&A34'vu_\ZKs)'2?:Iv endstream endobj -219 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LLXTJU+LMRoman17-Regular /DescendantFonts [ 775 0 R ] /ToUnicode 774 0 R >> -endobj -775 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LLXTJU+LMRoman17-Regular /FontDescriptor 771 0 R /W 770 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +225 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LLXTJU+LMRoman17-Regular /DescendantFonts [ 777 0 R ] /ToUnicode 776 0 R >> endobj 777 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LLXTJU+LMRoman17-Regular /FontDescriptor 773 0 R /W 772 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +779 0 obj << /Length1 1524 /Length2 7052 /Length3 0 /Filter /FlateDecode /Length 8075 >> stream xڍwT]6ҩR#]CI0P3#1tt @@ -3589,10 +3503,10 @@ lNI2*ʪ)q2DnWtx8Ӹ©tT[m9=Y2ˆrvM_] z˨iB|)hCߤAfhbr@tq+P皓z}ثd[wD}Kρ]~* # endstream endobj -776 0 obj -<< /Type /FontDescriptor /FontName /FJNSRO+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /arrowhookleft /greater /k /less /n /pi /x) /FontFile 777 0 R >> +778 0 obj +<< /Type /FontDescriptor /FontName /FJNSRO+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /arrowhookleft /greater /k /less /n /pi /x) /FontFile 779 0 R >> endobj -779 0 obj +781 0 obj << /Length1 1407 /Length2 6115 /Length3 0 /Filter /FlateDecode /Length 7068 >> stream xڍtTk.ݩlr @@ -3621,10 +3535,10 @@ q=48EKhH:aa(?$Oԝ3`Zn[wѳ=ொˉeډ{ۅ٧ -<R̫Oi_\|e3*3I(
k`yPƸWŢ>AҸx!F߭;̓!uD#Bx\n=x2BGg_^n33x}`K/;"U 25P&B:s/r*,RO1<'ĀZ~"EiB)8z*0S'G%:N~<+h9FN-RYId
h\IbfFF&1}dO5ߴSNiBoDeEqcZ*6Ed%=Ye)1ؾXVaa翚EE~8'B|p+D|*|x@S:~Mzv]ۻO`_x}>ЊQIx{sᦟ?xTQgKݼ6+qduU6QqBݝWSY*
X)Z31=AYjBn?8/zڙV~8kќ7Qk:+ ۡ.a^7/;581/!=BpXTq7*KO_3*T[$bdF*z7F7_$+ah$ˊ"҇YxB)URT g'U6 IJiv6yl͐zWw]q<E'*xɩ)D:AhÛٗY|CHd.զh>YzaJDr*(NvbpnOpUfBbϊ#YFw8
1R>4Z'@lМ:/wM,VtYz_-H/=4cU}m`@B%nD8_3ʈdZ䊃ak)!<4"~I
^]z{o}cצx16bvD!dwyIFV'}mzHgLҒZɴ7 WuկZy:r'S<]3i endstream endobj -778 0 obj -<< /Type /FontDescriptor /FontName /YJUITE+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /k) /FontFile 779 0 R >> +780 0 obj +<< /Type /FontDescriptor /FontName /YJUITE+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /k) /FontFile 781 0 R >> endobj -781 0 obj +783 0 obj << /Length1 1407 /Length2 6093 /Length3 0 /Filter /FlateDecode /Length 7053 >> stream xڍtTk.)85C]Ҡt"01C
"H#-% t4"(R"?wZYzzzh @@ -3657,10 +3571,10 @@ hU$}'P:o~]M*Qߤ;}Xٮ9ـQpX7N@{Ijp$Oypz }I!Enb)8~jy@_/b܋ endstream endobj -780 0 obj -<< /Type /FontDescriptor /FontName /NAZTKW+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /k) /FontFile 781 0 R >> +782 0 obj +<< /Type /FontDescriptor /FontName /NAZTKW+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /k) /FontFile 783 0 R >> endobj -783 0 obj +785 0 obj << /Length1 1518 /Length2 7335 /Length3 0 /Filter /FlateDecode /Length 8348 >> stream xڍtTo7Hw
kLFAIAAB@bHH @@ -3690,10 +3604,10 @@ UU>},4"&و鸳VUY
:5 4NC
4J!hKɲX-GL#yAvaS,`7NTk&2xݲR0]]S(EYg:9a[Шvl&ˎEvH endstream endobj -782 0 obj -<< /Type /FontDescriptor /FontName /NTKKEA+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /equal /one /parenleft /parenright /plus /slash /two /zero) /FontFile 783 0 R >> +784 0 obj +<< /Type /FontDescriptor /FontName /NTKKEA+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /equal /one /parenleft /parenright /plus /slash /two /zero) /FontFile 785 0 R >> endobj -785 0 obj +787 0 obj << /Length1 1457 /Length2 6431 /Length3 0 /Filter /FlateDecode /Length 7408 >> stream xڍvTn6%1VF).1c @@ -3732,10 +3646,10 @@ P)m\Ǟ/kq'}D(h.91V@;sڮ.弄 O[D&$%iާ)w{Y6{K#%w'}cnM<I \1G
Gur Rh;݊~dܓsIϻ*y'expv$ǖư1H%FUO&y[X]bK(ڕ:=xi|8GZ4#;`%.Y#afcB}3h,燕qU=@>֣'6͈J,ADotn3ӧhJ aHͬ:҅b &kߤ#a7P{O<^_lh!:$gah,tK3kNsK@e8*X@^x endstream endobj -784 0 obj -<< /Type /FontDescriptor /FontName /JLMYRF+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /one /parenleft /parenright /plus /two) /FontFile 785 0 R >> +786 0 obj +<< /Type /FontDescriptor /FontName /JLMYRF+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /one /parenleft /parenright /plus /two) /FontFile 787 0 R >> endobj -787 0 obj +789 0 obj << /Length1 1424 /Length2 6044 /Length3 0 /Filter /FlateDecode /Length 7012 >> stream xڍxT6 MW5Aj {/#(HGt @@ -3762,10 +3676,10 @@ R^D/z<s[Y+y33NVYU }$Y}1x`6IQࡪ]\QѢb\^)#z!?*5U}v\t?"n-g!D8X;[rewɏ-rgc4X endstream endobj -786 0 obj -<< /Type /FontDescriptor /FontName /KAYNOZ+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /arrowright /minus) /FontFile 787 0 R >> +788 0 obj +<< /Type /FontDescriptor /FontName /KAYNOZ+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /arrowright /minus) /FontFile 789 0 R >> endobj -789 0 obj +791 0 obj << /Length1 1393 /Length2 5904 /Length3 0 /Filter /FlateDecode /Length 6854 >> stream xڍtTk.]
@@ -3794,53 +3708,56 @@ p\g4=}M%:{(V1p]J9»$ʃ|GBHCe|/#>I< 7fTcVkY\5Ã-{e-=?+ endstream endobj -788 0 obj -<< /Type /FontDescriptor /FontName /PXBGHL+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /minus) /FontFile 789 0 R >> +790 0 obj +<< /Type /FontDescriptor /FontName /PXBGHL+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /minus) /FontFile 791 0 R >> endobj -234 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /FJNSRO+CMMI10 /FontDescriptor 776 0 R /FirstChar 25 /LastChar 120 /Widths 690 0 R >> +240 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /FJNSRO+CMMI10 /FontDescriptor 778 0 R /FirstChar 25 /LastChar 120 /Widths 692 0 R >> endobj -362 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /YJUITE+CMMI5 /FontDescriptor 778 0 R /FirstChar 107 /LastChar 107 /Widths 614 0 R >> +378 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /YJUITE+CMMI5 /FontDescriptor 780 0 R /FirstChar 107 /LastChar 107 /Widths 616 0 R >> endobj -363 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /NAZTKW+CMMI7 /FontDescriptor 780 0 R /FirstChar 107 /LastChar 107 /Widths 613 0 R >> +379 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /NAZTKW+CMMI7 /FontDescriptor 782 0 R /FirstChar 107 /LastChar 107 /Widths 615 0 R >> endobj -233 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /NTKKEA+CMR10 /FontDescriptor 782 0 R /FirstChar 40 /LastChar 61 /Widths 691 0 R >> +239 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /NTKKEA+CMR10 /FontDescriptor 784 0 R /FirstChar 40 /LastChar 61 /Widths 693 0 R >> endobj -352 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /JLMYRF+CMR7 /FontDescriptor 784 0 R /FirstChar 40 /LastChar 50 /Widths 616 0 R >> +367 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /JLMYRF+CMR7 /FontDescriptor 786 0 R /FirstChar 40 /LastChar 50 /Widths 618 0 R >> endobj -327 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /KAYNOZ+CMSY10 /FontDescriptor 786 0 R /FirstChar 0 /LastChar 33 /Widths 617 0 R >> +339 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /KAYNOZ+CMSY10 /FontDescriptor 788 0 R /FirstChar 0 /LastChar 33 /Widths 619 0 R >> endobj -361 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /PXBGHL+CMSY7 /FontDescriptor 788 0 R /FirstChar 0 /LastChar 0 /Widths 615 0 R >> +377 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /PXBGHL+CMSY7 /FontDescriptor 790 0 R /FirstChar 0 /LastChar 0 /Widths 617 0 R >> endobj -240 0 obj -<< /Type /Pages /Parent 790 0 R /Count 10 /Kids [ 213 0 R 247 0 R 256 0 R 266 0 R 282 0 R 289 0 R 297 0 R 304 0 R 311 0 R 315 0 R ] >> +246 0 obj +<< /Type /Pages /Parent 792 0 R /Count 10 /Kids [ 217 0 R 253 0 R 262 0 R 274 0 R 288 0 R 297 0 R 305 0 R 312 0 R 319 0 R 323 0 R ] >> endobj -322 0 obj -<< /Type /Pages /Parent 790 0 R /Count 10 /Kids [ 319 0 R 324 0 R 329 0 R 335 0 R 344 0 R 349 0 R 354 0 R 358 0 R 365 0 R 374 0 R ] >> +330 0 obj +<< /Type /Pages /Parent 792 0 R /Count 10 /Kids [ 327 0 R 332 0 R 336 0 R 343 0 R 350 0 R 357 0 R 364 0 R 370 0 R 374 0 R 381 0 R ] >> endobj -382 0 obj -<< /Type /Pages /Parent 790 0 R /Count 10 /Kids [ 379 0 R 387 0 R 395 0 R 403 0 R 411 0 R 415 0 R 419 0 R 424 0 R 429 0 R 433 0 R ] >> +388 0 obj +<< /Type /Pages /Parent 792 0 R /Count 10 /Kids [ 385 0 R 392 0 R 402 0 R 408 0 R 414 0 R 421 0 R 426 0 R 430 0 R 435 0 R 440 0 R ] >> endobj -440 0 obj -<< /Type /Pages /Parent 790 0 R /Count 6 /Kids [ 437 0 R 444 0 R 450 0 R 523 0 R 565 0 R 585 0 R ] >> +447 0 obj +<< /Type /Pages /Parent 792 0 R /Count 7 /Kids [ 444 0 R 449 0 R 454 0 R 463 0 R 542 0 R 584 0 R 605 0 R ] >> endobj -790 0 obj -<< /Type /Pages /Count 36 /Kids [ 240 0 R 322 0 R 382 0 R 440 0 R ] >> +792 0 obj +<< /Type /Pages /Count 37 /Kids [ 246 0 R 330 0 R 388 0 R 447 0 R ] >> endobj -791 0 obj -<< /Type /Outlines /First 6 0 R /Last 210 0 R /Count 11 >> +793 0 obj +<< /Type /Outlines /First 6 0 R /Last 214 0 R /Count 11 >> +endobj +214 0 obj +<< /Title 215 0 R /A 212 0 R /Parent 793 0 R /Prev 182 0 R >> endobj 210 0 obj -<< /Title 211 0 R /A 208 0 R /Parent 791 0 R /Prev 182 0 R >> +<< /Title 211 0 R /A 208 0 R /Parent 182 0 R /Prev 206 0 R >> endobj 206 0 obj -<< /Title 207 0 R /A 204 0 R /Parent 182 0 R /Prev 202 0 R >> +<< /Title 207 0 R /A 204 0 R /Parent 182 0 R /Prev 202 0 R /Next 210 0 R >> endobj 202 0 obj << /Title 203 0 R /A 200 0 R /Parent 182 0 R /Prev 198 0 R /Next 206 0 R >> @@ -3858,7 +3775,7 @@ endobj << /Title 187 0 R /A 184 0 R /Parent 182 0 R /Next 190 0 R >> endobj 182 0 obj -<< /Title 183 0 R /A 180 0 R /Parent 791 0 R /Prev 170 0 R /Next 210 0 R /First 186 0 R /Last 206 0 R /Count -6 >> +<< /Title 183 0 R /A 180 0 R /Parent 793 0 R /Prev 170 0 R /Next 214 0 R /First 186 0 R /Last 210 0 R /Count -7 >> endobj 178 0 obj << /Title 179 0 R /A 176 0 R /Parent 170 0 R /Prev 174 0 R >> @@ -3867,61 +3784,61 @@ endobj << /Title 175 0 R /A 172 0 R /Parent 170 0 R /Next 178 0 R >> endobj 170 0 obj -<< /Title 171 0 R /A 168 0 R /Parent 791 0 R /Prev 150 0 R /Next 182 0 R /First 174 0 R /Last 178 0 R /Count -2 >> +<< /Title 171 0 R /A 168 0 R /Parent 793 0 R /Prev 154 0 R /Next 182 0 R /First 174 0 R /Last 178 0 R /Count -2 >> endobj 166 0 obj -<< /Title 167 0 R /A 164 0 R /Parent 150 0 R /Prev 162 0 R >> +<< /Title 167 0 R /A 164 0 R /Parent 154 0 R /Prev 162 0 R >> endobj 162 0 obj -<< /Title 163 0 R /A 160 0 R /Parent 150 0 R /Prev 158 0 R /Next 166 0 R >> +<< /Title 163 0 R /A 160 0 R /Parent 154 0 R /Prev 158 0 R /Next 166 0 R >> endobj 158 0 obj -<< /Title 159 0 R /A 156 0 R /Parent 150 0 R /Prev 154 0 R /Next 162 0 R >> +<< /Title 159 0 R /A 156 0 R /Parent 154 0 R /Next 162 0 R >> endobj 154 0 obj -<< /Title 155 0 R /A 152 0 R /Parent 150 0 R /Next 158 0 R >> +<< /Title 155 0 R /A 152 0 R /Parent 793 0 R /Prev 150 0 R /Next 170 0 R /First 158 0 R /Last 166 0 R /Count -3 >> endobj 150 0 obj -<< /Title 151 0 R /A 148 0 R /Parent 791 0 R /Prev 146 0 R /Next 170 0 R /First 154 0 R /Last 166 0 R /Count -4 >> +<< /Title 151 0 R /A 148 0 R /Parent 793 0 R /Prev 66 0 R /Next 154 0 R >> endobj 146 0 obj -<< /Title 147 0 R /A 144 0 R /Parent 791 0 R /Prev 66 0 R /Next 150 0 R >> +<< /Title 147 0 R /A 144 0 R /Parent 66 0 R /Prev 142 0 R >> endobj 142 0 obj -<< /Title 143 0 R /A 140 0 R /Parent 66 0 R /Prev 138 0 R >> +<< /Title 143 0 R /A 140 0 R /Parent 66 0 R /Prev 126 0 R /Next 146 0 R >> endobj 138 0 obj -<< /Title 139 0 R /A 136 0 R /Parent 66 0 R /Prev 122 0 R /Next 142 0 R >> +<< /Title 139 0 R /A 136 0 R /Parent 126 0 R /Prev 134 0 R >> endobj 134 0 obj -<< /Title 135 0 R /A 132 0 R /Parent 122 0 R /Prev 130 0 R >> +<< /Title 135 0 R /A 132 0 R /Parent 126 0 R /Prev 130 0 R /Next 138 0 R >> endobj 130 0 obj -<< /Title 131 0 R /A 128 0 R /Parent 122 0 R /Prev 126 0 R /Next 134 0 R >> +<< /Title 131 0 R /A 128 0 R /Parent 126 0 R /Next 134 0 R >> endobj 126 0 obj -<< /Title 127 0 R /A 124 0 R /Parent 122 0 R /Next 130 0 R >> +<< /Title 127 0 R /A 124 0 R /Parent 66 0 R /Prev 102 0 R /Next 142 0 R /First 130 0 R /Last 138 0 R /Count -3 >> endobj 122 0 obj -<< /Title 123 0 R /A 120 0 R /Parent 66 0 R /Prev 98 0 R /Next 138 0 R /First 126 0 R /Last 134 0 R /Count -3 >> +<< /Title 123 0 R /A 120 0 R /Parent 102 0 R /Prev 118 0 R >> endobj 118 0 obj -<< /Title 119 0 R /A 116 0 R /Parent 98 0 R /Prev 114 0 R >> +<< /Title 119 0 R /A 116 0 R /Parent 102 0 R /Prev 114 0 R /Next 122 0 R >> endobj 114 0 obj -<< /Title 115 0 R /A 112 0 R /Parent 98 0 R /Prev 110 0 R /Next 118 0 R >> +<< /Title 115 0 R /A 112 0 R /Parent 102 0 R /Prev 110 0 R /Next 118 0 R >> endobj 110 0 obj -<< /Title 111 0 R /A 108 0 R /Parent 98 0 R /Prev 106 0 R /Next 114 0 R >> +<< /Title 111 0 R /A 108 0 R /Parent 102 0 R /Prev 106 0 R /Next 114 0 R >> endobj 106 0 obj -<< /Title 107 0 R /A 104 0 R /Parent 98 0 R /Prev 102 0 R /Next 110 0 R >> +<< /Title 107 0 R /A 104 0 R /Parent 102 0 R /Next 110 0 R >> endobj 102 0 obj -<< /Title 103 0 R /A 100 0 R /Parent 98 0 R /Next 106 0 R >> +<< /Title 103 0 R /A 100 0 R /Parent 66 0 R /Prev 98 0 R /Next 126 0 R /First 106 0 R /Last 122 0 R /Count -5 >> endobj 98 0 obj -<< /Title 99 0 R /A 96 0 R /Parent 66 0 R /Prev 94 0 R /Next 122 0 R /First 102 0 R /Last 118 0 R /Count -5 >> +<< /Title 99 0 R /A 96 0 R /Parent 66 0 R /Prev 94 0 R /Next 102 0 R >> endobj 94 0 obj << /Title 95 0 R /A 92 0 R /Parent 66 0 R /Prev 82 0 R /Next 98 0 R >> @@ -3945,10 +3862,10 @@ endobj << /Title 71 0 R /A 68 0 R /Parent 66 0 R /Next 82 0 R /First 74 0 R /Last 78 0 R /Count -2 >> endobj 66 0 obj -<< /Title 67 0 R /A 64 0 R /Parent 791 0 R /Prev 62 0 R /Next 146 0 R /First 70 0 R /Last 142 0 R /Count -7 >> +<< /Title 67 0 R /A 64 0 R /Parent 793 0 R /Prev 62 0 R /Next 150 0 R /First 70 0 R /Last 146 0 R /Count -8 >> endobj 62 0 obj -<< /Title 63 0 R /A 60 0 R /Parent 791 0 R /Prev 34 0 R /Next 66 0 R >> +<< /Title 63 0 R /A 60 0 R /Parent 793 0 R /Prev 34 0 R /Next 66 0 R >> endobj 58 0 obj << /Title 59 0 R /A 56 0 R /Parent 34 0 R /Prev 42 0 R >> @@ -3969,7 +3886,7 @@ endobj << /Title 39 0 R /A 36 0 R /Parent 34 0 R /Next 42 0 R >> endobj 34 0 obj -<< /Title 35 0 R /A 32 0 R /Parent 791 0 R /Prev 14 0 R /Next 62 0 R /First 38 0 R /Last 58 0 R /Count -3 >> +<< /Title 35 0 R /A 32 0 R /Parent 793 0 R /Prev 14 0 R /Next 62 0 R /First 38 0 R /Last 58 0 R /Count -3 >> endobj 30 0 obj << /Title 31 0 R /A 28 0 R /Parent 14 0 R /Prev 26 0 R >> @@ -3984,838 +3901,840 @@ endobj << /Title 19 0 R /A 16 0 R /Parent 14 0 R /Next 22 0 R >> endobj 14 0 obj -<< /Title 15 0 R /A 12 0 R /Parent 791 0 R /Prev 10 0 R /Next 34 0 R /First 18 0 R /Last 30 0 R /Count -4 >> +<< /Title 15 0 R /A 12 0 R /Parent 793 0 R /Prev 10 0 R /Next 34 0 R /First 18 0 R /Last 30 0 R /Count -4 >> endobj 10 0 obj -<< /Title 11 0 R /A 8 0 R /Parent 791 0 R /Prev 6 0 R /Next 14 0 R >> +<< /Title 11 0 R /A 8 0 R /Parent 793 0 R /Prev 6 0 R /Next 14 0 R >> endobj 6 0 obj -<< /Title 7 0 R /A 4 0 R /Parent 791 0 R /Next 10 0 R >> -endobj -792 0 obj -<< /Names [ (Doc-Start) 218 0 R (page.1) 217 0 R (page.10) 317 0 R (page.11) 321 0 R (page.12) 326 0 R (page.13) 331 0 R (page.14) 337 0 R (page.15) 346 0 R (page.16) 351 0 R (page.17) 356 0 R (page.18) 360 0 R (page.19) 367 0 R (page.2) 249 0 R (page.20) 376 0 R (page.21) 381 0 R (page.22) 389 0 R (page.23) 397 0 R (page.24) 405 0 R (page.25) 413 0 R (page.26) 417 0 R (page.27) 421 0 R (page.28) 426 0 R (page.29) 431 0 R (page.3) 258 0 R (page.30) 435 0 R (page.31) 439 0 R (page.32) 446 0 R (page.33) 452 0 R (page.34) 525 0 R (page.35) 567 0 R (page.36) 587 0 R (page.4) 268 0 R ] /Limits [ (Doc-Start) (page.4) ] >> -endobj -793 0 obj -<< /Names [ (page.5) 284 0 R (page.6) 291 0 R (page.7) 299 0 R (page.8) 306 0 R (page.9) 313 0 R (piton:passe) 308 0 R (piton:transpose) 307 0 R (section*.1) 209 0 R (section.1) 5 0 R (section.10) 181 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 33 0 R (section.5) 61 0 R (section.6) 65 0 R (section.7) 145 0 R (section.8) 149 0 R (section.9) 169 0 R (subsection.10.1) 185 0 R (subsection.10.2) 189 0 R (subsection.10.3) 193 0 R (subsection.10.4) 197 0 R (subsection.10.5) 201 0 R (subsection.10.6) 205 0 R (subsection.3.1) 17 0 R (subsection.3.2) 21 0 R (subsection.3.3) 25 0 R (subsection.3.4) 29 0 R (subsection.4.1) 37 0 R (subsection.4.2) 41 0 R (subsection.4.3) 57 0 R (subsection.6.1) 69 0 R ] /Limits [ (page.5) (subsection.6.1) ] >> +<< /Title 7 0 R /A 4 0 R /Parent 793 0 R /Next 10 0 R >> endobj 794 0 obj -<< /Names [ (subsection.6.2) 81 0 R (subsection.6.3) 93 0 R (subsection.6.4) 97 0 R (subsection.6.5) 121 0 R (subsection.6.6) 137 0 R (subsection.6.7) 141 0 R (subsection.8.1) 153 0 R (subsection.8.2) 157 0 R (subsection.8.3) 161 0 R (subsection.8.4) 165 0 R (subsection.9.1) 173 0 R (subsection.9.2) 177 0 R (subsubsection.4.2.1) 45 0 R (subsubsection.4.2.2) 49 0 R (subsubsection.4.2.3) 53 0 R (subsubsection.6.1.1) 73 0 R (subsubsection.6.1.2) 77 0 R (subsubsection.6.2.1) 85 0 R (subsubsection.6.2.2) 89 0 R (subsubsection.6.4.1) 101 0 R (subsubsection.6.4.2) 105 0 R (subsubsection.6.4.3) 109 0 R (subsubsection.6.4.4) 113 0 R (subsubsection.6.4.5) 117 0 R (subsubsection.6.5.1) 125 0 R (subsubsection.6.5.2) 129 0 R (subsubsection.6.5.3) 133 0 R ] /Limits [ (subsection.6.2) (subsubsection.6.5.3) ] >> +<< /Names [ (Doc-Start) 224 0 R (page.1) 223 0 R (page.10) 325 0 R (page.11) 329 0 R (page.12) 334 0 R (page.13) 338 0 R (page.14) 345 0 R (page.15) 352 0 R (page.16) 359 0 R (page.17) 366 0 R (page.18) 372 0 R (page.19) 376 0 R (page.2) 255 0 R (page.20) 383 0 R (page.21) 387 0 R (page.22) 394 0 R (page.23) 404 0 R (page.24) 410 0 R (page.25) 416 0 R (page.26) 423 0 R (page.27) 428 0 R (page.28) 432 0 R (page.29) 437 0 R (page.3) 264 0 R (page.30) 442 0 R (page.31) 446 0 R (page.32) 451 0 R (page.33) 456 0 R (page.34) 465 0 R (page.35) 544 0 R (page.36) 586 0 R (page.37) 607 0 R ] /Limits [ (Doc-Start) (page.37) ] >> endobj 795 0 obj -<< /Kids [ 792 0 R 793 0 R 794 0 R ] /Limits [ (Doc-Start) (subsubsection.6.5.3) ] >> +<< /Names [ (page.4) 276 0 R (page.5) 290 0 R (page.6) 299 0 R (page.7) 307 0 R (page.8) 314 0 R (page.9) 321 0 R (piton:passe) 316 0 R (piton:transpose) 315 0 R (section*.1) 213 0 R (section.1) 5 0 R (section.10) 181 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 33 0 R (section.5) 61 0 R (section.6) 65 0 R (section.7) 149 0 R (section.8) 153 0 R (section.9) 169 0 R (subsection.10.1) 185 0 R (subsection.10.2) 189 0 R (subsection.10.3) 193 0 R (subsection.10.4) 197 0 R (subsection.10.5) 201 0 R (subsection.10.6) 205 0 R (subsection.10.7) 209 0 R (subsection.3.1) 17 0 R (subsection.3.2) 21 0 R (subsection.3.3) 25 0 R (subsection.3.4) 29 0 R (subsection.4.1) 37 0 R (subsection.4.2) 41 0 R ] /Limits [ (page.4) (subsection.4.2) ] >> endobj 796 0 obj -<< /Dests 795 0 R >> +<< /Names [ (subsection.4.3) 57 0 R (subsection.6.1) 69 0 R (subsection.6.2) 81 0 R (subsection.6.3) 93 0 R (subsection.6.4) 97 0 R (subsection.6.5) 101 0 R (subsection.6.6) 125 0 R (subsection.6.7) 141 0 R (subsection.6.8) 145 0 R (subsection.8.1) 157 0 R (subsection.8.2) 161 0 R (subsection.8.3) 165 0 R (subsection.9.1) 173 0 R (subsection.9.2) 177 0 R (subsubsection.4.2.1) 45 0 R (subsubsection.4.2.2) 49 0 R (subsubsection.4.2.3) 53 0 R (subsubsection.6.1.1) 73 0 R (subsubsection.6.1.2) 77 0 R (subsubsection.6.2.1) 85 0 R (subsubsection.6.2.2) 89 0 R (subsubsection.6.5.1) 105 0 R (subsubsection.6.5.2) 109 0 R (subsubsection.6.5.3) 113 0 R (subsubsection.6.5.4) 117 0 R (subsubsection.6.5.5) 121 0 R (subsubsection.6.6.1) 129 0 R (subsubsection.6.6.2) 133 0 R (subsubsection.6.6.3) 137 0 R ] /Limits [ (subsection.4.3) (subsubsection.6.6.3) ] >> endobj 797 0 obj -<< /Type /Catalog /Pages 790 0 R /Outlines 791 0 R /Names 796 0 R /PageMode/UseOutlines /OpenAction 212 0 R >> +<< /Kids [ 794 0 R 795 0 R 796 0 R ] /Limits [ (Doc-Start) (subsubsection.6.6.3) ] >> endobj 798 0 obj -<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000L\040\031\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000p\000i\000t\000o\000n)/Subject(\376\377\000U\000n\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000L\000a\000T\000e\000X)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240523184955+02'00') /ModDate (D:20240523184955+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >> +<< /Dests 797 0 R >> +endobj +799 0 obj +<< /Type /Catalog /Pages 792 0 R /Outlines 793 0 R /Names 798 0 R /PageMode/UseOutlines /OpenAction 216 0 R >> +endobj +800 0 obj +<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000L\040\031\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000p\000i\000t\000o\000n)/Subject(\376\377\000U\000n\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000L\000a\000T\000e\000X)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20241018184310+02'00') /ModDate (D:20241018184310+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >> endobj xref -0 799 +0 801 0000000000 65535 f -0000174798 00000 n -0000174843 00000 n -0000174863 00000 n +0000184142 00000 n +0000184187 00000 n +0000184207 00000 n 0000000020 00000 n -0000016546 00000 n -0000410266 00000 n +0000017112 00000 n +0000380452 00000 n 0000000065 00000 n 0000000155 00000 n -0000021159 00000 n -0000410180 00000 n +0000021784 00000 n +0000380366 00000 n 0000000200 00000 n 0000000288 00000 n -0000021219 00000 n -0000410055 00000 n +0000021844 00000 n +0000380241 00000 n 0000000334 00000 n 0000000498 00000 n -0000021280 00000 n -0000409981 00000 n +0000021905 00000 n +0000380167 00000 n 0000000549 00000 n 0000000663 00000 n -0000021341 00000 n -0000409894 00000 n +0000021966 00000 n +0000380080 00000 n 0000000714 00000 n 0000000873 00000 n -0000021401 00000 n -0000409807 00000 n +0000022026 00000 n +0000379993 00000 n 0000000924 00000 n 0000001304 00000 n -0000027058 00000 n -0000409733 00000 n +0000027572 00000 n +0000379919 00000 n 0000001355 00000 n 0000001561 00000 n -0000033205 00000 n -0000409608 00000 n +0000033879 00000 n +0000379794 00000 n 0000001607 00000 n 0000001715 00000 n -0000033266 00000 n -0000409534 00000 n +0000033940 00000 n +0000379720 00000 n 0000001766 00000 n 0000002000 00000 n -0000044746 00000 n -0000409410 00000 n +0000045443 00000 n +0000379596 00000 n 0000002051 00000 n 0000002132 00000 n -0000044807 00000 n -0000409336 00000 n +0000045504 00000 n +0000379522 00000 n 0000002188 00000 n 0000002297 00000 n -0000049531 00000 n -0000409249 00000 n +0000050525 00000 n +0000379435 00000 n 0000002353 00000 n 0000002510 00000 n -0000054301 00000 n -0000409175 00000 n +0000055240 00000 n +0000379361 00000 n 0000002566 00000 n 0000002705 00000 n -0000054490 00000 n -0000409101 00000 n +0000055429 00000 n +0000379287 00000 n 0000002756 00000 n 0000002981 00000 n -0000058305 00000 n -0000409013 00000 n +0000059386 00000 n +0000379199 00000 n 0000003027 00000 n 0000003377 00000 n -0000067463 00000 n -0000408886 00000 n +0000067707 00000 n +0000379072 00000 n 0000003423 00000 n 0000003580 00000 n -0000067524 00000 n -0000408775 00000 n +0000067768 00000 n +0000378961 00000 n 0000003631 00000 n -0000003829 00000 n -0000067585 00000 n -0000408701 00000 n -0000003885 00000 n -0000004004 00000 n -0000067646 00000 n -0000408627 00000 n -0000004060 00000 n -0000004184 00000 n -0000072024 00000 n -0000408503 00000 n -0000004235 00000 n -0000004450 00000 n -0000072085 00000 n -0000408429 00000 n -0000004506 00000 n -0000004722 00000 n -0000072146 00000 n -0000408355 00000 n -0000004778 00000 n -0000004950 00000 n -0000079598 00000 n -0000408268 00000 n -0000005001 00000 n -0000005211 00000 n -0000084643 00000 n -0000408141 00000 n -0000005262 00000 n -0000005437 00000 n -0000084704 00000 n -0000408063 00000 n -0000005494 00000 n -0000005655 00000 n -0000084766 00000 n -0000407971 00000 n -0000005712 00000 n -0000005866 00000 n -0000088524 00000 n -0000407879 00000 n -0000005923 00000 n -0000006097 00000 n -0000088586 00000 n -0000407787 00000 n -0000006154 00000 n -0000006303 00000 n -0000092320 00000 n -0000407709 00000 n -0000006360 00000 n -0000006534 00000 n -0000096955 00000 n -0000407579 00000 n -0000006586 00000 n -0000006797 00000 n -0000097017 00000 n -0000407500 00000 n -0000006854 00000 n -0000007149 00000 n -0000097079 00000 n -0000407407 00000 n -0000007206 00000 n -0000007570 00000 n -0000100552 00000 n -0000407328 00000 n -0000007627 00000 n -0000008011 00000 n -0000105443 00000 n -0000407236 00000 n -0000008063 00000 n -0000008389 00000 n -0000105505 00000 n -0000407158 00000 n -0000008441 00000 n -0000008525 00000 n -0000105566 00000 n -0000407066 00000 n -0000008572 00000 n -0000008738 00000 n -0000109433 00000 n -0000406934 00000 n -0000008785 00000 n -0000008854 00000 n -0000109495 00000 n -0000406855 00000 n -0000008906 00000 n -0000009059 00000 n -0000109557 00000 n -0000406762 00000 n -0000009111 00000 n -0000009309 00000 n -0000113833 00000 n -0000406669 00000 n -0000009361 00000 n -0000009514 00000 n -0000118193 00000 n -0000406590 00000 n -0000009566 00000 n -0000009773 00000 n -0000121950 00000 n -0000406458 00000 n -0000009820 00000 n -0000009980 00000 n -0000122012 00000 n -0000406379 00000 n -0000010032 00000 n -0000010230 00000 n -0000125396 00000 n -0000406300 00000 n -0000010282 00000 n -0000010607 00000 n -0000133314 00000 n -0000406168 00000 n -0000010655 00000 n -0000010970 00000 n -0000133376 00000 n -0000406089 00000 n -0000011023 00000 n -0000011143 00000 n -0000136945 00000 n -0000405996 00000 n -0000011196 00000 n -0000011311 00000 n -0000140569 00000 n -0000405903 00000 n -0000011364 00000 n -0000011516 00000 n -0000144143 00000 n -0000405810 00000 n -0000011569 00000 n -0000011674 00000 n -0000146397 00000 n -0000405717 00000 n -0000011727 00000 n -0000011868 00000 n -0000148431 00000 n -0000405638 00000 n -0000011921 00000 n -0000012244 00000 n -0000161740 00000 n -0000405559 00000 n -0000012292 00000 n -0000012346 00000 n -0000016066 00000 n -0000016232 00000 n -0000016606 00000 n -0000012398 00000 n -0000016422 00000 n -0000016484 00000 n -0000349089 00000 n -0000345798 00000 n -0000343694 00000 n -0000339985 00000 n -0000336651 00000 n -0000334220 00000 n -0000327942 00000 n -0000325841 00000 n -0000317326 00000 n -0000306201 00000 n -0000302352 00000 n -0000299261 00000 n -0000288914 00000 n -0000285074 00000 n -0000404254 00000 n -0000403822 00000 n -0000278773 00000 n -0000276656 00000 n -0000267286 00000 n -0000264058 00000 n -0000260037 00000 n -0000404819 00000 n -0000016203 00000 n -0000020940 00000 n -0000020786 00000 n -0000026360 00000 n -0000026519 00000 n -0000021461 00000 n -0000020612 00000 n -0000016990 00000 n -0000021097 00000 n -0000252440 00000 n -0000250663 00000 n -0000020749 00000 n -0000026678 00000 n -0000026837 00000 n -0000027119 00000 n -0000026170 00000 n -0000021702 00000 n -0000026996 00000 n -0000241927 00000 n -0000026307 00000 n -0000032841 00000 n -0000032992 00000 n -0000038843 00000 n -0000039002 00000 n -0000033326 00000 n -0000032667 00000 n -0000027360 00000 n -0000033143 00000 n -0000235307 00000 n -0000032804 00000 n -0000039161 00000 n -0000039320 00000 n -0000039478 00000 n -0000039636 00000 n -0000039795 00000 n -0000039959 00000 n -0000040123 00000 n -0000040280 00000 n -0000044359 00000 n -0000044521 00000 n -0000040499 00000 n -0000038605 00000 n -0000033606 00000 n -0000040437 00000 n -0000232493 00000 n -0000038742 00000 n -0000044200 00000 n -0000044868 00000 n -0000044018 00000 n -0000040740 00000 n -0000044684 00000 n -0000229217 00000 n -0000044155 00000 n -0000049159 00000 n -0000049314 00000 n -0000049591 00000 n -0000048985 00000 n -0000045122 00000 n -0000049469 00000 n -0000220502 00000 n -0000049122 00000 n -0000054079 00000 n -0000054551 00000 n -0000053913 00000 n -0000049845 00000 n -0000054239 00000 n -0000054362 00000 n -0000054426 00000 n -0000054050 00000 n -0000058366 00000 n -0000058122 00000 n -0000054857 00000 n -0000058243 00000 n -0000062599 00000 n -0000062416 00000 n -0000058607 00000 n -0000062537 00000 n -0000067707 00000 n -0000067280 00000 n -0000062840 00000 n -0000067401 00000 n -0000404971 00000 n -0000072207 00000 n -0000071841 00000 n -0000067961 00000 n -0000071962 00000 n -0000404537 00000 n -0000075778 00000 n -0000075595 00000 n -0000072448 00000 n -0000075716 00000 n -0000079220 00000 n -0000079378 00000 n -0000079659 00000 n -0000079046 00000 n -0000075993 00000 n -0000079536 00000 n -0000079183 00000 n -0000083945 00000 n -0000084104 00000 n -0000084263 00000 n -0000084422 00000 n -0000084828 00000 n -0000083755 00000 n -0000079900 00000 n -0000084581 00000 n -0000083892 00000 n -0000088648 00000 n -0000088341 00000 n -0000085082 00000 n -0000088462 00000 n -0000404396 00000 n -0000092382 00000 n -0000092137 00000 n -0000088876 00000 n -0000092258 00000 n -0000097141 00000 n -0000096772 00000 n -0000092610 00000 n -0000096893 00000 n -0000404679 00000 n -0000403966 00000 n -0000404110 00000 n -0000100613 00000 n -0000100369 00000 n -0000097486 00000 n -0000100490 00000 n -0000104895 00000 n -0000105054 00000 n -0000105218 00000 n -0000109058 00000 n -0000109217 00000 n -0000105628 00000 n -0000104713 00000 n -0000100802 00000 n -0000105381 00000 n -0000104850 00000 n -0000109619 00000 n -0000108884 00000 n -0000105817 00000 n -0000109371 00000 n -0000405123 00000 n -0000109021 00000 n -0000113453 00000 n -0000113612 00000 n -0000113895 00000 n -0000113279 00000 n -0000109821 00000 n -0000113771 00000 n -0000113416 00000 n -0000117634 00000 n -0000117793 00000 n -0000117952 00000 n -0000118255 00000 n -0000117452 00000 n -0000114097 00000 n -0000118131 00000 n -0000216650 00000 n -0000117589 00000 n -0000121580 00000 n -0000121734 00000 n -0000122074 00000 n -0000121406 00000 n -0000118522 00000 n -0000121888 00000 n -0000214584 00000 n -0000202423 00000 n -0000187696 00000 n -0000121543 00000 n -0000125458 00000 n -0000125213 00000 n -0000122315 00000 n -0000125334 00000 n -0000128121 00000 n -0000127938 00000 n -0000125673 00000 n -0000128059 00000 n -0000129032 00000 n -0000128849 00000 n -0000128323 00000 n -0000128970 00000 n -0000133074 00000 n -0000133438 00000 n -0000132908 00000 n -0000129182 00000 n -0000133252 00000 n -0000133045 00000 n -0000137007 00000 n -0000136762 00000 n -0000133666 00000 n -0000136883 00000 n -0000140631 00000 n -0000140386 00000 n -0000137170 00000 n -0000140507 00000 n -0000144205 00000 n -0000143960 00000 n -0000140820 00000 n -0000144081 00000 n -0000405275 00000 n -0000146017 00000 n -0000146176 00000 n -0000146459 00000 n -0000145843 00000 n -0000144381 00000 n -0000146335 00000 n -0000145980 00000 n -0000148216 00000 n -0000148493 00000 n -0000148050 00000 n -0000146622 00000 n -0000148369 00000 n -0000148187 00000 n -0000151403 00000 n -0000151552 00000 n -0000151703 00000 n -0000151855 00000 n -0000152007 00000 n -0000152159 00000 n -0000152311 00000 n -0000152463 00000 n -0000152614 00000 n -0000152766 00000 n -0000152917 00000 n -0000153068 00000 n -0000153220 00000 n -0000153371 00000 n -0000153522 00000 n -0000153674 00000 n -0000153826 00000 n -0000153978 00000 n -0000154130 00000 n -0000154282 00000 n -0000154434 00000 n -0000154585 00000 n -0000154737 00000 n -0000154889 00000 n -0000155041 00000 n -0000155193 00000 n -0000155345 00000 n -0000155496 00000 n -0000155646 00000 n -0000155797 00000 n -0000155947 00000 n -0000156098 00000 n -0000156249 00000 n -0000156398 00000 n -0000156548 00000 n -0000156698 00000 n -0000156846 00000 n -0000156996 00000 n -0000157148 00000 n -0000157299 00000 n -0000157450 00000 n -0000157599 00000 n -0000157750 00000 n -0000157902 00000 n -0000158054 00000 n -0000158205 00000 n -0000158355 00000 n -0000158506 00000 n -0000158657 00000 n -0000158808 00000 n -0000158960 00000 n -0000159111 00000 n -0000159262 00000 n -0000159412 00000 n -0000159564 00000 n -0000159716 00000 n -0000159868 00000 n +0000003775 00000 n +0000067829 00000 n +0000378887 00000 n +0000003831 00000 n +0000004003 00000 n +0000067890 00000 n +0000378813 00000 n +0000004059 00000 n +0000004274 00000 n +0000075958 00000 n +0000378689 00000 n +0000004325 00000 n +0000004523 00000 n +0000076019 00000 n +0000378615 00000 n +0000004579 00000 n +0000004703 00000 n +0000076080 00000 n +0000378541 00000 n +0000004759 00000 n +0000004878 00000 n +0000081784 00000 n +0000378454 00000 n +0000004929 00000 n +0000005157 00000 n +0000085386 00000 n +0000378366 00000 n +0000005208 00000 n +0000005418 00000 n +0000089632 00000 n +0000378236 00000 n +0000005470 00000 n +0000005646 00000 n +0000089694 00000 n +0000378157 00000 n +0000005703 00000 n +0000005864 00000 n +0000094139 00000 n +0000378064 00000 n +0000005921 00000 n +0000006075 00000 n +0000094201 00000 n +0000377971 00000 n +0000006132 00000 n +0000006306 00000 n +0000097974 00000 n +0000377878 00000 n +0000006363 00000 n +0000006512 00000 n +0000098036 00000 n +0000377799 00000 n +0000006569 00000 n +0000006743 00000 n +0000102154 00000 n +0000377668 00000 n +0000006795 00000 n +0000007006 00000 n +0000105997 00000 n +0000377589 00000 n +0000007063 00000 n +0000007358 00000 n +0000106059 00000 n +0000377496 00000 n +0000007415 00000 n +0000007779 00000 n +0000109844 00000 n +0000377417 00000 n +0000007836 00000 n +0000008220 00000 n +0000109906 00000 n +0000377325 00000 n +0000008272 00000 n +0000008598 00000 n +0000119608 00000 n +0000377247 00000 n +0000008650 00000 n +0000008734 00000 n +0000119670 00000 n +0000377155 00000 n +0000008781 00000 n +0000008947 00000 n +0000123689 00000 n +0000377023 00000 n +0000008994 00000 n +0000009063 00000 n +0000123751 00000 n +0000376944 00000 n +0000009115 00000 n +0000009268 00000 n +0000123813 00000 n +0000376851 00000 n +0000009320 00000 n +0000009518 00000 n +0000127502 00000 n +0000376772 00000 n +0000009570 00000 n +0000009777 00000 n +0000131030 00000 n +0000376640 00000 n +0000009824 00000 n +0000009984 00000 n +0000131092 00000 n +0000376561 00000 n +0000010036 00000 n +0000010234 00000 n +0000134376 00000 n +0000376482 00000 n +0000010286 00000 n +0000010611 00000 n +0000141414 00000 n +0000376350 00000 n +0000010659 00000 n +0000010974 00000 n +0000141476 00000 n +0000376271 00000 n +0000011027 00000 n +0000011147 00000 n +0000144841 00000 n +0000376178 00000 n +0000011200 00000 n +0000011315 00000 n +0000148269 00000 n +0000376085 00000 n +0000011368 00000 n +0000011520 00000 n +0000151628 00000 n +0000375992 00000 n +0000011573 00000 n +0000011678 00000 n +0000153710 00000 n +0000375899 00000 n +0000011731 00000 n +0000012054 00000 n +0000156555 00000 n +0000375806 00000 n +0000012107 00000 n +0000012248 00000 n +0000156617 00000 n +0000375727 00000 n +0000012301 00000 n +0000012447 00000 n +0000170954 00000 n +0000375648 00000 n +0000012495 00000 n +0000012549 00000 n +0000016299 00000 n +0000016481 00000 n +0000016640 00000 n +0000016799 00000 n +0000017172 00000 n +0000012601 00000 n +0000016988 00000 n +0000017050 00000 n +0000319170 00000 n +0000315879 00000 n +0000313775 00000 n +0000309517 00000 n +0000306183 00000 n +0000303752 00000 n +0000297474 00000 n +0000295367 00000 n +0000284242 00000 n +0000273897 00000 n +0000265358 00000 n +0000261509 00000 n +0000258420 00000 n +0000254421 00000 n +0000374335 00000 n +0000373903 00000 n +0000247925 00000 n +0000245808 00000 n +0000236274 00000 n +0000232952 00000 n +0000228931 00000 n +0000374900 00000 n +0000016436 00000 n +0000021565 00000 n +0000021411 00000 n +0000026876 00000 n +0000027035 00000 n +0000022086 00000 n +0000021237 00000 n +0000017556 00000 n +0000021722 00000 n +0000221334 00000 n +0000219557 00000 n +0000021374 00000 n +0000027194 00000 n +0000027352 00000 n +0000027633 00000 n +0000026686 00000 n +0000022327 00000 n +0000027510 00000 n +0000210625 00000 n +0000026823 00000 n +0000033205 00000 n +0000033359 00000 n +0000033513 00000 n +0000033665 00000 n +0000038998 00000 n +0000039162 00000 n +0000034001 00000 n +0000033015 00000 n +0000027874 00000 n +0000033817 00000 n +0000204596 00000 n +0000033152 00000 n +0000039326 00000 n +0000039484 00000 n +0000039641 00000 n +0000039799 00000 n +0000039958 00000 n +0000040122 00000 n +0000040286 00000 n +0000040444 00000 n +0000040664 00000 n +0000038760 00000 n +0000034281 00000 n +0000040602 00000 n +0000201782 00000 n +0000038897 00000 n +0000045060 00000 n +0000045220 00000 n +0000044901 00000 n +0000045565 00000 n +0000044719 00000 n +0000040879 00000 n +0000045381 00000 n +0000198506 00000 n +0000044856 00000 n +0000050154 00000 n +0000050308 00000 n +0000050586 00000 n +0000049980 00000 n +0000045845 00000 n +0000050463 00000 n +0000189791 00000 n +0000050117 00000 n +0000055018 00000 n +0000055490 00000 n +0000054852 00000 n +0000050853 00000 n +0000055178 00000 n +0000055301 00000 n +0000055365 00000 n +0000054989 00000 n +0000059447 00000 n +0000059203 00000 n +0000055796 00000 n +0000059324 00000 n +0000063653 00000 n +0000063470 00000 n +0000059675 00000 n +0000063591 00000 n +0000067951 00000 n +0000067524 00000 n +0000063894 00000 n +0000067645 00000 n +0000375052 00000 n +0000071403 00000 n +0000071220 00000 n +0000068153 00000 n +0000071341 00000 n +0000076141 00000 n +0000075775 00000 n +0000071618 00000 n +0000075896 00000 n +0000374618 00000 n +0000081407 00000 n +0000081564 00000 n +0000081845 00000 n +0000081233 00000 n +0000076382 00000 n +0000081722 00000 n +0000081370 00000 n +0000085010 00000 n +0000085167 00000 n +0000085447 00000 n +0000084836 00000 n +0000082112 00000 n +0000085324 00000 n +0000084973 00000 n +0000089252 00000 n +0000089411 00000 n +0000089756 00000 n +0000089078 00000 n +0000085714 00000 n +0000089570 00000 n +0000089215 00000 n +0000093763 00000 n +0000093920 00000 n +0000094263 00000 n +0000093589 00000 n +0000089958 00000 n +0000094077 00000 n +0000374477 00000 n +0000093726 00000 n +0000098098 00000 n +0000097791 00000 n +0000094556 00000 n +0000097912 00000 n +0000102215 00000 n +0000101971 00000 n +0000098287 00000 n +0000102092 00000 n +0000374760 00000 n +0000374047 00000 n +0000374191 00000 n +0000106121 00000 n +0000105814 00000 n +0000102547 00000 n +0000105935 00000 n +0000109968 00000 n +0000109661 00000 n +0000106349 00000 n +0000109782 00000 n +0000375204 00000 n +0000114018 00000 n +0000114182 00000 n +0000114403 00000 n +0000113844 00000 n +0000110170 00000 n +0000114341 00000 n +0000113981 00000 n +0000118746 00000 n +0000118905 00000 n +0000119069 00000 n +0000119233 00000 n +0000119392 00000 n +0000119732 00000 n +0000118548 00000 n +0000114631 00000 n +0000119546 00000 n +0000185939 00000 n +0000118685 00000 n +0000123875 00000 n +0000123506 00000 n +0000119973 00000 n +0000123627 00000 n +0000127122 00000 n +0000127281 00000 n +0000127564 00000 n +0000126948 00000 n +0000124077 00000 n +0000127440 00000 n +0000127085 00000 n +0000130660 00000 n +0000130814 00000 n +0000131154 00000 n +0000130486 00000 n +0000127766 00000 n +0000130968 00000 n +0000130623 00000 n +0000134438 00000 n +0000134193 00000 n +0000131369 00000 n +0000134314 00000 n +0000137081 00000 n +0000136898 00000 n +0000134653 00000 n +0000137019 00000 n +0000141174 00000 n +0000141538 00000 n +0000141008 00000 n +0000137296 00000 n +0000141352 00000 n +0000141145 00000 n +0000144903 00000 n +0000144658 00000 n +0000141766 00000 n +0000144779 00000 n +0000148331 00000 n +0000148086 00000 n +0000145066 00000 n +0000148207 00000 n +0000375356 00000 n +0000151690 00000 n +0000151445 00000 n +0000148520 00000 n +0000151566 00000 n +0000153495 00000 n +0000153772 00000 n +0000153329 00000 n +0000151866 00000 n +0000153648 00000 n +0000153466 00000 n +0000155848 00000 n +0000156007 00000 n +0000156166 00000 n +0000156330 00000 n +0000156679 00000 n +0000155658 00000 n +0000153935 00000 n +0000156493 00000 n +0000155795 00000 n +0000159718 00000 n +0000159867 00000 n 0000160018 00000 n -0000160169 00000 n -0000160320 00000 n -0000160472 00000 n -0000160624 00000 n -0000160776 00000 n -0000160926 00000 n -0000161077 00000 n -0000161229 00000 n -0000161378 00000 n -0000161527 00000 n -0000161802 00000 n -0000150701 00000 n -0000148656 00000 n -0000161678 00000 n -0000150838 00000 n -0000164863 00000 n -0000165016 00000 n -0000165169 00000 n -0000165320 00000 n -0000165478 00000 n -0000165635 00000 n -0000165793 00000 n -0000165950 00000 n -0000166103 00000 n -0000166261 00000 n -0000166418 00000 n -0000166582 00000 n -0000166745 00000 n -0000166909 00000 n -0000167067 00000 n -0000167219 00000 n -0000167372 00000 n -0000167530 00000 n -0000167694 00000 n -0000167858 00000 n -0000168016 00000 n -0000168180 00000 n -0000168343 00000 n -0000168501 00000 n -0000168658 00000 n -0000168821 00000 n -0000168984 00000 n -0000169147 00000 n -0000169310 00000 n -0000169474 00000 n -0000169629 00000 n -0000169793 00000 n -0000169957 00000 n -0000170121 00000 n -0000170279 00000 n -0000170436 00000 n -0000172090 00000 n -0000170649 00000 n -0000164417 00000 n -0000161991 00000 n -0000170587 00000 n -0000164554 00000 n -0000172243 00000 n -0000172401 00000 n -0000172559 00000 n -0000172717 00000 n -0000172874 00000 n -0000173027 00000 n -0000173185 00000 n -0000173342 00000 n -0000173496 00000 n -0000173655 00000 n -0000173814 00000 n -0000173972 00000 n -0000174131 00000 n -0000174289 00000 n -0000174447 00000 n -0000174661 00000 n -0000171804 00000 n -0000170851 00000 n -0000174599 00000 n -0000171941 00000 n -0000174916 00000 n -0000186898 00000 n -0000175143 00000 n -0000175245 00000 n -0000187137 00000 n -0000187858 00000 n -0000188089 00000 n -0000201598 00000 n -0000188411 00000 n -0000188517 00000 n -0000201829 00000 n -0000202577 00000 n -0000202800 00000 n -0000213831 00000 n -0000202946 00000 n -0000203043 00000 n -0000214068 00000 n -0000214743 00000 n -0000214971 00000 n -0000215963 00000 n -0000215014 00000 n -0000215109 00000 n -0000216203 00000 n -0000216805 00000 n -0000217006 00000 n -0000217032 00000 n -0000217058 00000 n -0000217084 00000 n -0000217144 00000 n -0000217239 00000 n -0000219726 00000 n -0000217444 00000 n -0000217547 00000 n -0000219971 00000 n -0000220663 00000 n -0000220870 00000 n -0000228200 00000 n -0000221364 00000 n -0000221480 00000 n -0000228437 00000 n -0000229372 00000 n -0000229573 00000 n -0000231745 00000 n -0000229728 00000 n -0000229833 00000 n -0000231989 00000 n -0000232654 00000 n -0000232861 00000 n -0000234567 00000 n -0000232984 00000 n -0000233090 00000 n -0000234813 00000 n -0000235469 00000 n -0000235677 00000 n -0000241063 00000 n -0000236066 00000 n -0000236186 00000 n -0000241304 00000 n -0000242083 00000 n -0000242285 00000 n -0000249692 00000 n -0000242770 00000 n -0000242893 00000 n -0000249929 00000 n -0000250817 00000 n -0000251017 00000 n -0000251764 00000 n -0000251050 00000 n -0000251144 00000 n -0000252000 00000 n -0000252593 00000 n -0000252792 00000 n -0000259075 00000 n -0000253244 00000 n -0000253354 00000 n -0000259312 00000 n -0000260192 00000 n -0000260393 00000 n -0000263287 00000 n -0000260619 00000 n -0000260724 00000 n -0000263527 00000 n -0000264213 00000 n -0000264414 00000 n -0000266519 00000 n -0000264648 00000 n -0000264753 00000 n -0000266756 00000 n -0000267441 00000 n -0000267642 00000 n -0000275638 00000 n -0000268186 00000 n -0000268317 00000 n -0000275876 00000 n -0000276812 00000 n -0000277014 00000 n -0000278077 00000 n -0000277070 00000 n -0000277170 00000 n -0000278316 00000 n -0000278929 00000 n -0000279131 00000 n -0000279369 00000 n -0000279457 00000 n -0000284213 00000 n -0000279826 00000 n -0000279935 00000 n -0000284452 00000 n -0000285229 00000 n -0000285430 00000 n -0000288142 00000 n -0000285675 00000 n -0000285780 00000 n -0000288379 00000 n -0000289069 00000 n -0000289270 00000 n -0000298191 00000 n -0000289744 00000 n -0000289862 00000 n -0000298429 00000 n -0000299417 00000 n -0000299619 00000 n -0000301626 00000 n -0000299732 00000 n -0000299835 00000 n -0000301865 00000 n -0000302508 00000 n -0000302710 00000 n -0000305409 00000 n -0000302971 00000 n -0000303076 00000 n -0000305647 00000 n -0000306357 00000 n -0000306559 00000 n -0000316217 00000 n -0000307203 00000 n -0000307344 00000 n -0000316456 00000 n -0000317483 00000 n -0000317686 00000 n -0000324878 00000 n -0000318172 00000 n -0000318296 00000 n -0000325115 00000 n -0000325995 00000 n -0000326195 00000 n -0000327241 00000 n -0000326272 00000 n -0000326371 00000 n -0000327478 00000 n -0000328097 00000 n -0000328298 00000 n -0000333342 00000 n -0000328701 00000 n -0000328824 00000 n -0000333580 00000 n -0000334376 00000 n -0000334578 00000 n -0000335952 00000 n -0000334656 00000 n -0000334758 00000 n -0000336188 00000 n -0000336804 00000 n -0000337003 00000 n -0000339237 00000 n -0000337181 00000 n -0000337286 00000 n -0000339475 00000 n -0000340141 00000 n -0000340343 00000 n -0000342933 00000 n -0000340519 00000 n -0000340628 00000 n -0000343172 00000 n -0000343851 00000 n -0000344054 00000 n -0000345095 00000 n -0000344131 00000 n -0000344230 00000 n -0000345333 00000 n -0000345954 00000 n -0000346156 00000 n -0000348343 00000 n -0000346298 00000 n -0000346407 00000 n -0000348582 00000 n -0000349246 00000 n -0000357645 00000 n -0000349449 00000 n -0000365098 00000 n -0000357909 00000 n -0000372494 00000 n -0000365320 00000 n -0000381185 00000 n -0000372716 00000 n -0000388991 00000 n -0000381462 00000 n -0000396380 00000 n -0000389247 00000 n -0000403595 00000 n -0000396620 00000 n -0000405394 00000 n -0000405483 00000 n -0000410338 00000 n -0000410979 00000 n -0000411746 00000 n -0000412571 00000 n -0000412674 00000 n -0000412712 00000 n -0000412840 00000 n +0000160170 00000 n +0000160322 00000 n +0000160474 00000 n +0000160626 00000 n +0000160777 00000 n +0000160928 00000 n +0000161079 00000 n +0000161230 00000 n +0000161381 00000 n +0000161533 00000 n +0000161684 00000 n +0000161835 00000 n +0000161987 00000 n +0000162139 00000 n +0000162291 00000 n +0000162443 00000 n +0000162593 00000 n +0000162745 00000 n +0000162896 00000 n +0000163048 00000 n +0000163199 00000 n +0000163350 00000 n +0000163501 00000 n +0000163651 00000 n +0000163803 00000 n +0000163955 00000 n +0000164107 00000 n +0000164259 00000 n +0000164410 00000 n +0000164561 00000 n +0000164712 00000 n +0000164861 00000 n +0000165012 00000 n +0000165162 00000 n +0000165311 00000 n +0000165459 00000 n +0000165611 00000 n +0000165763 00000 n +0000165915 00000 n +0000166067 00000 n +0000166218 00000 n +0000166369 00000 n +0000166517 00000 n +0000166667 00000 n +0000166819 00000 n +0000166971 00000 n +0000167120 00000 n +0000167270 00000 n +0000167420 00000 n +0000167571 00000 n +0000167723 00000 n +0000167875 00000 n +0000168025 00000 n +0000168176 00000 n +0000168326 00000 n +0000168478 00000 n +0000168629 00000 n +0000168781 00000 n +0000168932 00000 n +0000169083 00000 n +0000169233 00000 n +0000169385 00000 n +0000169537 00000 n +0000169689 00000 n +0000169839 00000 n +0000169990 00000 n +0000170140 00000 n +0000170292 00000 n +0000170440 00000 n +0000170592 00000 n +0000170741 00000 n +0000171016 00000 n +0000158968 00000 n +0000156868 00000 n +0000170892 00000 n +0000159105 00000 n +0000173997 00000 n +0000174149 00000 n +0000174302 00000 n +0000174452 00000 n +0000174610 00000 n +0000174766 00000 n +0000174924 00000 n +0000175082 00000 n +0000175235 00000 n +0000175392 00000 n +0000175550 00000 n +0000175714 00000 n +0000175878 00000 n +0000176042 00000 n +0000176200 00000 n +0000176353 00000 n +0000176506 00000 n +0000176663 00000 n +0000176827 00000 n +0000176989 00000 n +0000177147 00000 n +0000177311 00000 n +0000177475 00000 n +0000177632 00000 n +0000177790 00000 n +0000177947 00000 n +0000178111 00000 n +0000178274 00000 n +0000178438 00000 n +0000178602 00000 n +0000178766 00000 n +0000178922 00000 n +0000179086 00000 n +0000179249 00000 n +0000179412 00000 n +0000179569 00000 n +0000181277 00000 n +0000179787 00000 n +0000173551 00000 n +0000171205 00000 n +0000179725 00000 n +0000173688 00000 n +0000181430 00000 n +0000181583 00000 n +0000181741 00000 n +0000181899 00000 n +0000182057 00000 n +0000182209 00000 n +0000182367 00000 n +0000182525 00000 n +0000182679 00000 n +0000182838 00000 n +0000182997 00000 n +0000183155 00000 n +0000183314 00000 n +0000183472 00000 n +0000183631 00000 n +0000183790 00000 n +0000184005 00000 n +0000180983 00000 n +0000179989 00000 n +0000183943 00000 n +0000181120 00000 n +0000184260 00000 n +0000185252 00000 n +0000184303 00000 n +0000184398 00000 n +0000185492 00000 n +0000186094 00000 n +0000186295 00000 n +0000186321 00000 n +0000186347 00000 n +0000186373 00000 n +0000186433 00000 n +0000186528 00000 n +0000189015 00000 n +0000186733 00000 n +0000186836 00000 n +0000189260 00000 n +0000189952 00000 n +0000190159 00000 n +0000197489 00000 n +0000190653 00000 n +0000190769 00000 n +0000197726 00000 n +0000198661 00000 n +0000198862 00000 n +0000201034 00000 n +0000199017 00000 n +0000199122 00000 n +0000201278 00000 n +0000201943 00000 n +0000202150 00000 n +0000203856 00000 n +0000202273 00000 n +0000202379 00000 n +0000204102 00000 n +0000204758 00000 n +0000204966 00000 n +0000209774 00000 n +0000205349 00000 n +0000205469 00000 n +0000210015 00000 n +0000210781 00000 n +0000210983 00000 n +0000218580 00000 n +0000211476 00000 n +0000211600 00000 n +0000218817 00000 n +0000219711 00000 n +0000219911 00000 n +0000220658 00000 n +0000219944 00000 n +0000220038 00000 n +0000220894 00000 n +0000221487 00000 n +0000221686 00000 n +0000227969 00000 n +0000222138 00000 n +0000222248 00000 n +0000228206 00000 n +0000229086 00000 n +0000229287 00000 n +0000232181 00000 n +0000229513 00000 n +0000229618 00000 n +0000232421 00000 n +0000233107 00000 n +0000233308 00000 n +0000235496 00000 n +0000233558 00000 n +0000233663 00000 n +0000235733 00000 n +0000236429 00000 n +0000236630 00000 n +0000244785 00000 n +0000237174 00000 n +0000237305 00000 n +0000245023 00000 n +0000245964 00000 n +0000246166 00000 n +0000247229 00000 n +0000246222 00000 n +0000246322 00000 n +0000247468 00000 n +0000248081 00000 n +0000248283 00000 n +0000248521 00000 n +0000248609 00000 n +0000253551 00000 n +0000248986 00000 n +0000249095 00000 n +0000253790 00000 n +0000254576 00000 n +0000254777 00000 n +0000257639 00000 n +0000255038 00000 n +0000255143 00000 n +0000257876 00000 n +0000258575 00000 n +0000258776 00000 n +0000260783 00000 n +0000258889 00000 n +0000258992 00000 n +0000261022 00000 n +0000261665 00000 n +0000261867 00000 n +0000264566 00000 n +0000262128 00000 n +0000262233 00000 n +0000264804 00000 n +0000265514 00000 n +0000265716 00000 n +0000272930 00000 n +0000266199 00000 n +0000266323 00000 n +0000273167 00000 n +0000274051 00000 n +0000274251 00000 n +0000283172 00000 n +0000274725 00000 n +0000274843 00000 n +0000283410 00000 n +0000284398 00000 n +0000284600 00000 n +0000294258 00000 n +0000285244 00000 n +0000285385 00000 n +0000294497 00000 n +0000295524 00000 n +0000295727 00000 n +0000296773 00000 n +0000295804 00000 n +0000295903 00000 n +0000297010 00000 n +0000297629 00000 n +0000297830 00000 n +0000302874 00000 n +0000298233 00000 n +0000298356 00000 n +0000303112 00000 n +0000303908 00000 n +0000304110 00000 n +0000305484 00000 n +0000304188 00000 n +0000304290 00000 n +0000305720 00000 n +0000306336 00000 n +0000306535 00000 n +0000308769 00000 n +0000306713 00000 n +0000306818 00000 n +0000309007 00000 n +0000309673 00000 n +0000309875 00000 n +0000312994 00000 n +0000310100 00000 n +0000310209 00000 n +0000313233 00000 n +0000313932 00000 n +0000314135 00000 n +0000315176 00000 n +0000314212 00000 n +0000314311 00000 n +0000315414 00000 n +0000316035 00000 n +0000316237 00000 n +0000318424 00000 n +0000316379 00000 n +0000316488 00000 n +0000318663 00000 n +0000319327 00000 n +0000327726 00000 n +0000319530 00000 n +0000335179 00000 n +0000327990 00000 n +0000342575 00000 n +0000335401 00000 n +0000351266 00000 n +0000342797 00000 n +0000359072 00000 n +0000351543 00000 n +0000366461 00000 n +0000359328 00000 n +0000373676 00000 n +0000366701 00000 n +0000375483 00000 n +0000375572 00000 n +0000380524 00000 n +0000381167 00000 n +0000381929 00000 n +0000382802 00000 n +0000382905 00000 n +0000382943 00000 n +0000383071 00000 n trailer -<< /Size 799 /Root 797 0 R /Info 798 0 R /ID [ <BAED7C336B1B3BB8FDEEEB3D3DB34A65> <BAED7C336B1B3BB8FDEEEB3D3DB34A65> ] >> +<< /Size 801 /Root 799 0 R /Info 800 0 R /ID [ <98E405D59E78D427B07CF57435358C90> <98E405D59E78D427B07CF57435358C90> ] >> startxref -413388 +383619 %%EOF diff --git a/macros/luatex/latex/piton/piton-french.tex b/macros/luatex/latex/piton/piton-french.tex index 2794f5acda..ce776dbf8a 100644 --- a/macros/luatex/latex/piton/piton-french.tex +++ b/macros/luatex/latex/piton/piton-french.tex @@ -15,7 +15,7 @@ end-escape = ! , begin-escape-math = \( , end-escape-math = \) , - detected-commands = highLight + detected-commands = { highLight , footnote } } @@ -33,8 +33,6 @@ \usepackage{booktabs} \usepackage{tcolorbox} \usepackage{luacolor,lua-ul} - - \usepackage{caption} % We use \MakeShortVerb of shortvrb and not \DefineShortVerb of fancyvrb @@ -73,6 +71,8 @@ \usepackage{makeidx} \makeindex +\usepackage{underscore} + \NewDocumentCommand{\Definition}{m} {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}} @@ -107,27 +107,34 @@ version~\PitonFileVersion\space de \pkg{piton}, à la date du~\PitonFileDate.}} \maketitle \begin{abstract} -L'extension \pkg{piton} propose des outils pour composer des codes informatiques avec coloration syntaxique. Elle -nécessite l'emploi de la LuaLaTeX car le travail principal est fait en utilisant la bibliothèque Lua LPEG. +L'extension \pkg{piton} propose des outils pour composer des codes informatiques avec +coloration syntaxique. Elle nécessite l'emploi de la LuaLaTeX car le travail principal est +fait en utilisant la bibliothèque Lua LPEG. \end{abstract} +\bigskip +{\color{red} Depuis la version 4.0, la syntaxe des chemins absolus et relatifs utilisés dans +|\PitonInputFile| a été changée : cf.~partie~\ref{PitonInputFile}, p.~\pageref{PitonInputFile}.} \section{Présentation} -L'extension \pkg{piton} utilise la librairie Lua nommée LPEG\footnote{LPEG est une librairie de capture de motifs - (\emph{pattern-matching} en anglais) pour Lua, écrite en C, fondée sur les PEG (\emph{parsing expression - grammars}): \url{http://www.inf.puc-rio.br/~roberto/lpeg/}} pour «parser» des listings informatiques avec -coloriage syntaxique. Comme elle utilise le Lua de LuaLaTeX, elle fonctionne uniquement avec |lualatex| -(et ne va pas fonctionner avec les autres moteurs de compilation LaTeX, que ce soit |latex|, |pdflatex| ou -|xelatex|). Elle n'utilise aucun programme extérieur et la compilation ne requiert donc pas |--shell-escape|. La -compilation est très rapide puisque tout le travail du parseur est fait par la librairie LPEG, écrite en C. +L'extension \pkg{piton} utilise la librairie Lua nommée LPEG\footnote{LPEG est une + librairie de capture de motifs (\emph{pattern-matching} en anglais) pour Lua, écrite en + C, fondée sur les PEG (\emph{parsing expression grammars}): + \url{http://www.inf.puc-rio.br/~roberto/lpeg/}} pour «parser» des listings informatiques +avec coloriage syntaxique. Comme elle utilise le Lua de LuaLaTeX, elle fonctionne +uniquement avec |lualatex| (et ne va pas fonctionner avec les autres moteurs de +compilation LaTeX, que ce soit |latex|, |pdflatex| ou |xelatex|). Elle n'utilise aucun +programme extérieur et la compilation ne requiert donc pas |--shell-escape| (sauf lorsque +la clé |write| est utilisée). La compilation est très rapide puisque tout le travail du +parseur est fait par la librairie LPEG, écrite en C. -\bigskip +\medskip Voici un exemple de code Python composé avec l'environnement |{Piton}| proposé par \pkg{piton}. -\bigskip +\medskip \begin{Piton} from math import pi @@ -148,41 +155,45 @@ def arctan(x,n=10:int): return s \end{Piton} -\bigskip -Les principaux concurrents de l'extension \pkg{piton} sont certainement les extensions bien connues \pkg{listings} -et \pkg{minted}. +\medskip +Les principaux concurrents de l'extension \pkg{piton} sont certainement les extensions +bien connues \pkg{listings} et \pkg{minted}. -\bigskip -Le nom de cette extension (\pkg{piton}) a été choisi un peu arbitrairement en référence aux pitons d'alpinisme qui -servent à gravir les montagnes. + +% \medskip +% Le nom de cette extension (\pkg{piton}) a été choisi un peu arbitrairement en référence +% aux pitons d'alpinisme qui servent à gravir les montagnes. \section{Installation} -L'extension \pkg{piton} est composée de deux fichiers : |piton.sty| et |piton.lua| (le fichier LaTeX |piton.sty| -chargé par |\usepackage| va à son tour charger le fichier |piton.lua|). Les deux fichiers doivent être présents -dans un répertoire où LaTeX pourra les trouver, de préférence dans une arborescence |texmf|. Le mieux reste néanmoins +L'extension \pkg{piton} est composée de deux fichiers : |piton.sty| et |piton.lua| (le +fichier LaTeX |piton.sty| chargé par |\usepackage| va à son tour charger le fichier +|piton.lua|). Les deux fichiers doivent être présents dans un répertoire où LaTeX pourra +les trouver, de préférence dans une arborescence |texmf|. Le mieux reste néanmoins d'installer \pkg{piton} avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX. \section{Utilisation de l'extension} -L'extension \pkg{piton} n'est utilisable qu'avec LuaLaTeX : si un autre moteur de compilation (comme |latex|, -|pdflatex| ou |xelatex|) est utilisé, une erreur fatale sera levée. +L'extension \pkg{piton} n'est utilisable qu'avec LuaLaTeX : si un autre moteur de +compilation (comme |latex|, |pdflatex| ou |xelatex|) est utilisé, une erreur fatale sera +levée. \subsection{Choix du langage} Les langages informatiques pris en charge par \pkg{piton} se classent en deux catégories : \begin{itemize} -\item les langages reconnus nativement par \pkg{piton} qui sont au nombre de cinq : Python, OCaml, SQL, C (ou -plutôt \CC) et un langage nommé |minimal|\footnote{Le langage |minimal| peut servir pour formater du pseudo-code - : cf.~p.~\pageref{minimal}.} ; +\item les langages reconnus nativement par \pkg{piton} qui sont au nombre de cinq : +Python, OCaml, SQL, C (ou plutôt \CC) et deux langages minimalistes nommés |minimal|\footnote{Le langage + |minimal| peut servir pour formater du pseudo-code : cf.~p.~\pageref{minimal}.} et +|verbatim|; \item les langages définis par l'utilisateur avec la commande |\NewPitonLanguage| décrite -p.~\pageref{NewPitonLanguage} (les parseurs de ces langages ne pourront jamais être aussi précis que ceux proposés -nativement par \pkg{piton)}. +p.~\pageref{NewPitonLanguage} (les parseurs de ces langages ne pourront jamais être aussi +précis que ceux proposés nativement par \pkg{piton)}. \end{itemize} @@ -191,21 +202,22 @@ Par défaut, le langage est Python. \smallskip \index{language (clé)} -On peut changer de langage avec la clé |language| de |\PitonOptions| : +On peut changer de langage avec la clé \Definition{language} de |\PitonOptions| : \smallskip |\PitonOptions{language = OCaml}| \smallskip -En fait, le nom des langages, pour \pkg{piton}, est toujours \textbf{insensible à la casse}. Dans cet exemple, on -aurait tout aussi bien pu écrire |Ocaml| ou |ocaml|. +En fait, le nom des langages, pour \pkg{piton}, est toujours \textbf{insensible à la + casse}. Dans cet exemple, on aurait tout aussi bien pu écrire |Ocaml| ou |ocaml|. \smallskip -Pour les développeurs, précisons que le nom du langage courant est stocké (en minuscules) dans la variable publique -L3 nommée |\l_piton_language_str|. +Pour les développeurs, précisons que le nom du langage courant est stocké (en minuscules) +dans la variable publique L3 nommée |\l_piton_language_str|. \smallskip -Dans la suite de ce document, on parlera de Python mais les fonctionnalités s'appliquent aussi aux autres langages. +Dans la suite de ce document, on parlera préférentiellement de Python mais les +fonctionnalités s'appliquent aussi aux autres langages. @@ -215,21 +227,21 @@ Dans la suite de ce document, on parlera de Python mais les fonctionnalités s'a L'extension \pkg{piton} se charge simplement avec |\usepackage{piton}|. \smallskip -Si, à la fin du prambule, l'extension \pkg{xcolor} n'a pas été chargée (par l'utilisateur ou par une extension -chargée dans le préambule), \pkg{piton} charge l'extension \pkg{xcolor} avec |\usepackage{xcolor}|, c'est-à-dire -sans aucune option. L'extension \pkg{piton} ne charge pas d'autre extension. Elle n'utilise pas de programme -extérieur. +Si, à la fin du prambule, l'extension \pkg{xcolor} n'a pas été chargée (par l'utilisateur +ou par une extension chargée dans le préambule), \pkg{piton} charge l'extension +\pkg{xcolor} avec |\usepackage{xcolor}|, c'est-à-dire sans aucune option. L'extension +\pkg{piton} ne charge pas d'autre extension. Elle n'utilise pas de programme extérieur. \subsection{Les commandes et environnements à la disposition de l'utilisateur} \indexenv{Piton} -L'extension \pkg{piton} fournit plusieurs outils pour composer du code Python: les commandes |\piton|, -l'environnement |{Piton}| et la commande |\PitonInputFile|. +L'extension \pkg{piton} fournit plusieurs outils pour composer du code informatique : les +commandes |\piton|, l'environnement |{Piton}| et la commande |\PitonInputFile|. \begin{itemize} \setlength{\fboxsep}{1pt} -\item La commande \colorbox{gray!20}{\ttfamily \textbackslash piton} doit être utilisée pour composer de petits éléments de code à l'intérieur d'un -paragraphe. Par exemple : +\item La commande \colorbox{gray!20}{\ttfamily \textbackslash piton} doit être utilisée +pour composer de petits éléments de code à l'intérieur d'un paragraphe. Par exemple : {\color{gray}\verb|\piton{def carré(x): return x*x}|}\qquad \piton{def carré(x): return x*x} @@ -237,27 +249,16 @@ paragraphe. Par exemple : La syntaxe et les particularités de la commande sont détaillées ci-après. -\item L'environnement \colorbox{gray!20}{\ttfamily \{Piton\}} doit être utilisé pour composer des codes de -plusieurs lignes. Comme cet environnement prend son argument selon un mode verbatim, il ne peut pas être utilisé -dans l'argument d'une commande LaTeX. Pour les besoins de personnalisation, il est possible de définir de nouveaux -environnements similaires à |{Piton}| en utilisant la commande \DefinitionCommand{NewPitonEnvironment} : cf. partie -\ref{NewPitonEnvironment} p.~\pageref{NewPitonEnvironment}. - -\item La commande \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFile} doit être utilisée pour insérer et -composer un fichier externe. - -Il est possible de n'insérer qu'une partie de ce fichier : cf. partie~\ref{part-of-a-file}, -p.~\pageref{part-of-a-file}. - -La clé \Definition{path} de la commande |\PitonOptions| permet de spécifier une \emph{liste} de chemins où sera -recherché le fichier à inclure (dans cette liste, les chemins sont séparés par des virgules). - -L'extension \pkg{piton} propose aussi des commandes \colorbox{gray!20}{\ttfamily\textbackslash PitonInputFileT}, -\colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileF} et -\colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileTF} avec des arguments correspondant aux lettres |T| et -|F|, arguments qui seront executés dans le -cas où le fichier a été trouvé (lettre |T|) ou pas (lettre |F|). +\item L'environnement \colorbox{gray!20}{\ttfamily \{Piton\}} doit être utilisé pour +composer des codes de plusieurs lignes. Comme cet environnement prend son argument selon +un mode verbatim, il ne peut pas être utilisé dans l'argument d'une commande LaTeX. Pour +les besoins de personnalisation, il est possible de définir de nouveaux environnements +similaires à |{Piton}| en utilisant la commande \DefinitionCommand{NewPitonEnvironment} : +cf.~partie~\ref{NewPitonEnvironment} p.~\pageref{NewPitonEnvironment}. +\item La commande \DefinitionCommand{PitonInputFile} doit être utilisée pour insérer et +composer un fichier externe : cf.~partie~\ref{PitonInputFile}, +p.~\pageref{PitonInputFile}. \end{itemize} @@ -265,19 +266,23 @@ cas où le fichier a été trouvé (lettre |T|) ou pas (lettre |F|). \indexcommand{piton} -La commande |\piton| possède en fait une syntaxe double. Elle est peut être utilisée comme une commande standard de -LaTeX prenant son argument entre accolades (|\piton{...}|), ou bien selon la syntaxe de la commande |\verb| où l'argument est -délimité entre deux caractères identiques (par ex. : \verb!\piton|...|!). On détaille maintenant ces deux syntaxes. +La commande |\piton| possède en fait une syntaxe double. Elle est peut être utilisée comme +une commande standard de LaTeX prenant son argument entre accolades (|\piton{...}|), ou +bien selon la syntaxe de la commande +|\verb| où l'argument est délimité entre deux caractères +identiques (par ex. : \verb!\piton|...|!). +On détaille maintenant ces deux syntaxes. \bigskip \begin{itemize} \item {\color{blue} \textsf{Syntaxe} \verb|\piton{...}|}\par\nobreak -Quand son argument est donné entre accolades, la commande |\piton| ne prend pas son argument en mode verbatim. Les -points suivants doivent être remarqués : +Quand son argument est donné entre accolades, la commande |\piton| ne prend \emph{pas} son +argument en mode verbatim. Les points suivants doivent être remarqués : \begin{itemize} -\item plusieurs espaces successives sont remplacées par une unique espace, ainsi que les retours à la ligne +\item plusieurs espaces successives sont remplacées par une unique espace, ainsi que les +retours à la ligne {\color{cyan} mais la commande |\|␣ est fournie pour forcer l'insertion d'une espace} ; @@ -287,11 +292,12 @@ points suivants doivent être remarqués : \item les accolades doivent apparaître par paires correctement imbriquées, -{\color{cyan} mais les commandes |\{| et |\}| sont aussi fournies pour insérer des accolades individuelles} ; +{\color{cyan} mais les commandes |\{| et |\}| sont aussi fournies pour insérer des + accolades individuelles} ; -\item les commandes LaTeX\footnote{Cela s'applique aux commandes commençant par une contre-oblique |\| mais - également aux caractères actifs, c'est-à-dire ceux de catcode~13.} sont complètement développées sans être -exécutées +\item les commandes LaTeX\footnote{Cela s'applique aux commandes commençant par une + contre-oblique |\| mais également aux caractères actifs, c'est-à-dire ceux de + catcode~13.} sont complètement développées sans être exécutées {\color{cyan} et on peut donc utiliser |\\| pour insérer une contre-oblique}. \end{itemize} @@ -316,16 +322,20 @@ et |@|) doivent être insérés sans contre-oblique. \end{tabular} \bigskip -La commande |\piton| avec son argument entre accolades peut être utilisée dans les arguments des autres commandes LaTeX.\footnote{La commande - |\piton| peut par exemple être +La commande |\piton| avec son argument entre accolades peut être utilisée dans les +arguments des autres commandes LaTeX.\footnote{La commande |\piton| peut par exemple être utilisée dans une note de bas de page. Exemple : \piton{s = 'Une chaîne'}.} +En revanche, comme son argument subit un développement (au sens de TeX), il faut prendre +soin à ne pas utiliser dans son argument de commandes fragiles (c'est-à-dire des commandes +qui ne sont ni \emph{protected} ni \emph{fully expandable}). + \bigskip \item {\color{blue} \textsf{Syntaxe} \verb!\piton|...|!}\par\nobreak -Quand la commande |\piton| prend son argument entre deux caractères identiques, cet argument est pris \emph{en mode - verbatim}. De ce fait, avec cette syntaxe, la commande |\piton| ne peut \emph{pas} être utilisée dans l'argument d'une -autre fonction. +Quand la commande |\piton| prend son argument entre deux caractères identiques, cet +argument est pris \emph{en mode verbatim}. De ce fait, avec cette syntaxe, la commande +|\piton| ne peut \emph{pas} être utilisée dans l'argument d'une autre fonction. \medskip \begin{tabular}{>{\color{gray}}w{l}{75mm}@{\hspace*{1cm}}l} @@ -347,85 +357,114 @@ autre fonction. \section{Personnalisation} -Concernant la fonte de caractères utilisée dans les listings produits par l'extension \pkg{piton}, il s'agit -simplement de la fonte mono-chasse courante (\pkg{piton} utilise simplement en interne la commande LaTeX standard -|\ttfamily|). Pour la changer, le mieux est d'utiliser |\setmonofont| de \pkg{fontspec}. \subsection{Les clés de la commande \textbackslash PitonOptions} \indexcommand{PitonOptions} -La commande |\PitonOptions| prend en argument une liste de couples \textsl{clé=valeur}. La portée des réglages -effectués par cette commande est le groupe TeX courant.\footnote{On rappelle que tout environnement LaTeX est, en - particulier, un groupe.} +La commande |\PitonOptions| prend en argument une liste de couples \textsl{clé=valeur}. La +portée des réglages effectués par cette commande est le groupe TeX courant.\footnote{On + rappelle que tout environnement LaTeX est, en particulier, un groupe.} -Ces clés peuvent aussi être appliquées à un environnement |{Piton}| individuel (entre crochets). +Ces clés peuvent aussi être appliquées à un environnement |{Piton}| individuel (entre +crochets). \begin{itemize} -\item La clé \Definition{language} spécifie le langage informatique considéré (la casse n'est pas prise en compte). -Cinq valeurs sont possibles : |Python|, |OCaml|, |C|, |SQL| et |minimal|. La valeur initiale est |Python|. - -\item \index{path} La clé \Definition{path} indique un chemin où seront cherchés les fichiers inclus par -|\PitonInputFile|. - -\item \index{gobble}\label{gobble} La clé \Definition{gobble} prend comme valeur un entier positif $n$ : les $n$ -premiers caractères de chaque ligne sont alors retirés (avant formatage du code) dans les environnements |{Piton}|. -Ces $n$ caractères ne sont pas nécessairement des espaces. - -\item \index{auto-gobble}\index{gobble!auto-gobble} Quand la clé \Definition{auto-gobble} est activée, l'extension \pkg{piton} détermine la valeur minimale $n$ -du nombre d'espaces successifs débutant chaque ligne (non vide) de l'environnement |{Piton}| et applique |gobble| -avec cette valeur de~$n$. - -\item \index{env-gobble}\index{gobble!env-gobble} Quand la clé \Definition{env-gobble} est activée, \pkg{piton} -analyse la dernière ligne de l'environnement, c'est-à-dire celle qui contient le |\end{Piton}| et détermine si -cette ligne ne comporte que des espaces suivis par |\end{Piton}|. Si c'est le cas, \pkg{piton} calcule le nombre -$n$ de ces espaces et applique |gobble| avec cette valeur de~$n$. Le nom de cette clé vient de \emph{environment - gobble}: le nombre d'espaces à retirer ne dépend que de la position des délimiteurs |\begin{Piton}| et -|\end{Piton}| de l'environnement. - -\item \index{write} La clé \Definition{write} prend en argument un nom de fichier (avec l'extension) et écrit le -contenu\footnote{En fait, il ne s'agit pas exactement du contenu de l'environnement mais de la valeur renvoyée par - l'instruction Lua - |piton.get_last_code()| qui en est une version sans les surcharges de formatage LaTeX (voir la partie \ref{API}, p.~\pageref{API}).} de l'environnement courant dans ce fichier. À la première utilisation du fichier par \pkg{piton}, celui-ci -est effacé. - -\item \index{path-write} La clé \Definition{path-write} indique un chemin où seront écrits les fichiers écrits par -l'emploi de la clé |write| précédente. - -\item \index{line-numbers} La clé \Definition{line-numbers} active la numérotation des lignes (en débordement à -gauche) dans les environnements |{Piton}| et dans les listings produits par la commande |\PitonInputFile|. +\item La clé \Definition{language} spécifie le langage informatique considéré (la casse +n'est pas prise en compte). On peut choisir l'un des six langages prédéfinis (|Python|, +|OCaml|, |C|, |SQL|, |minimal| et |verbatim|) ou bien le nom d'un langage défini par +l'utilisateur avec |\NewPitonLanguage| (voir partie~\ref{NewPitonLanguage}, +p.~\pageref{NewPitonLanguage}). + +La valeur initiale est |Python|. + +\item \index{font-command} +\colorbox{yellow!50}{\textbf{Nouveau 4.0}}\par\nobreak + +La clé \Definition{font-command} contient des instructions de fonte qui seront +insérées au début de chaque élément formaté par \pkg{piton}, que ce soit avec la commande +|\piton|, l'environnement |{Piton}| ou bien la commande |\PitonInputFile| (il n'y a que +les «commentaires LaTeX» pour lesquels ces instructions de fonte ne sont pas utilisées). + +La valeur initiale de ce paramètre |font-command| est |\ttfamily|, ce qui fait, que, par +défaut, \pkg{piton} utilise la fonte mono-chasse courante. + +\item \index{gobble}\label{gobble} La clé \Definition{gobble} prend comme valeur un entier +positif $n$ : les $n$ premiers caractères de chaque ligne sont alors retirés (avant +formatage du code) dans les environnements |{Piton}|. Ces $n$ caractères ne sont pas +nécessairement des espaces. + +\item \index{auto-gobble}\index{gobble!auto-gobble} Quand la clé \Definition{auto-gobble} +est activée, l'extension \pkg{piton} détermine la valeur minimale $n$ du nombre d'espaces +successifs débutant chaque ligne (non vide) de l'environnement |{Piton}| et applique +|gobble| avec cette valeur de~$n$. + +\item \index{env-gobble}\index{gobble!env-gobble} Quand la clé \Definition{env-gobble} est +activée, \pkg{piton} analyse la dernière ligne de l'environnement, c'est-à-dire celle qui +contient le |\end{Piton}| et détermine si cette ligne ne comporte que des espaces suivis +par |\end{Piton}|. Si c'est le cas, \pkg{piton} calcule le nombre $n$ de ces espaces et +applique |gobble| avec cette valeur de~$n$. Le nom de cette clé vient de \emph{environment + gobble}: le nombre d'espaces à retirer ne dépend que de la position des délimiteurs +|\begin{Piton}| et |\end{Piton}| de l'environnement. + +\item \index{write} La clé \Definition{write} prend en argument un nom de fichier (avec +l'extension) et écrit le contenu\footnote{En fait, il ne s'agit pas exactement du contenu + de l'environnement mais de la valeur renvoyée par l'instruction Lua + |piton.get_last_code()| qui en est une version sans les surcharges de formatage LaTeX + (voir la partie \ref{API}, p.~\pageref{API}).} de l'environnement courant dans ce +fichier. À la première utilisation du fichier par \pkg{piton}, celui-ci est effacé. + +{\bfseries Cette clé nécessite une compilation avec {\ttfamily lualatex -shell-escape}}. + +\item \index{path-write} La clé \Definition{path-write} indique un chemin où seront écrits +les fichiers écrits par l'emploi de la clé |write| précédente. + +\item \index{line-numbers} La clé \Definition{line-numbers} active la numérotation des +lignes (en débordement à gauche) dans les environnements |{Piton}| et dans les listings +produits par la commande |\PitonInputFile|. Cette clé propose en fait plusieurs sous-clés. \begin{itemize} -\item La clé \Definition{line-numbers/skip-empty-lines} demande que les lignes vides (qui ne contiennent que des -espaces) soient considérées comme non existantes en ce qui concerne la numérotation des lignes (si la clé -|/absolute|, décrite plus bas, est active, la clé |/skip-empty-lines| n'a pas d'effet dans |\PitonInputFile|). La -valeur initiale de cette clé est |true| (et non |false|).\footnote{Avec le langage Python, les lignes vides des \emph{docstrings} sont - prises en compte.} - -\item La clé \Definition{line-numbers/label-empty-lines} demande que les labels (c'est-à-dire les numéros) des -lignes vides soient affichés. Si la clé |/skip-empty-lines| est active, la clé |/label-empty-lines| est sans effet. -La valeur initiale de cette clé est |true|.\footnote{Quand la clé |split-on-empty-lines| est activée, les labels des +\item La clé \Definition{line-numbers/skip-empty-lines} demande que les lignes vides (qui +ne contiennent que des espaces) soient considérées comme non existantes en ce qui concerne +la numérotation des lignes (si la clé |/absolute|, décrite plus bas, est active, la clé +|/skip-empty-lines| n'a pas d'effet dans |\PitonInputFile|). La valeur initiale de cette +clé est |true| (et non |false|).\footnote{Avec le langage Python, les lignes vides des + \emph{docstrings} sont prises en compte.} + +\item La clé \Definition{line-numbers/label-empty-lines} demande que les labels +(c'est-à-dire les numéros) des lignes vides soient affichés. Si la clé |/skip-empty-lines| +est active, la clé |/label-empty-lines| est sans effet. La valeur initiale de cette clé +est |true|.\footnote{Quand la clé |split-on-empty-lines| est activée, les labels des lignes vides ne sont jamais imprimés.} -\item La clé \Definition{line-numbers/absolute} demande, pour les listings générés par |\PitonInputFile|, que les -numéros de lignes affichés soient absolus (c'est-à-dire ceux du fichier d'origine). Elle n'a d'intérêt que si on -n'insère qu'une partie du fichier (cf. partie~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}). La clé -|/absolute| est sans effet dans les environnements |{Piton}|. +\item La clé \Definition{line-numbers/absolute} demande, pour les listings générés par +|\PitonInputFile|, que les numéros de lignes affichés soient absolus (c'est-à-dire ceux du +fichier d'origine). Elle n'a d'intérêt que si on n'insère qu'une partie du fichier (cf. +partie~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}). La clé |/absolute| est sans +effet dans les environnements |{Piton}|. + +\item La clé \Definition{line-numbers/resume} reprend la numérotation là où elle avait été +laissée au dernier listing. En fait, la clé |line-numbers/resume| a un alias, qui est +|resume| tout court (car on peut être amené à l'utiliser souvent). + +\item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce +numéro. -\item La clé \Definition{line-numbers/resume} reprend la numérotation là où elle avait été laissée au dernier -listing. En fait, la clé |line-numbers/resume| a un alias, qui est |resume| tout court (car on peut être amené à -l'utiliser souvent). +\item La clé \Definition{line-numbers/sep} est la distance horizontale entre les numéros +de lignes (insérés par |line-numbers|) et les lignes du code informatique. La valeur +initiale est 0.7~em. -\item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce numéro. +\item La clé \Definition{line-numbers/format} est une liste de tokens qui est insérée +avant le numéro de ligne pour le formater. Il est possible de mettre \emph{en dernière + position} de cette liste une commande LaTeX à un argument comme |\fbox|. -\item La clé \Definition{line-numbers/sep} est la distance horizontale entre les numéros de lignes (insérés par -|line-numbers|) et les lignes du code informatique. La valeur initiale est 0.7~em. +La valeur initiale est |\footnotesize \color{gray}|. \end{itemize} -Pour la commodité, un dispositif de factorisation du préfixe |line-numbers| est disponible, c'est-à-dire que l'on -peut écrire : +Pour la commodité, un dispositif de factorisation du préfixe |line-numbers| est +disponible, c'est-à-dire que l'on peut écrire : \begin{Verbatim} \PitonOptions @@ -434,64 +473,79 @@ peut écrire : { skip-empty-lines = false , label-empty-lines = false , - sep = 1 em + sep = 1 em , + format = \footnotesize \color{blue} } } \end{Verbatim} -\item \index{left-margin} La clé \Definition{left-margin} fixe une marge sur la gauche. Cette clé peut être utile, en particulier, en -conjonction avec la clé |line-numbers| si on ne souhaite pas que les numéros de ligne soient dans une position en -débordement sur la gauche. +\item \index{left-margin} La clé \Definition{left-margin} fixe une marge sur la gauche. +Cette clé peut être utile, en particulier, en conjonction avec la clé |line-numbers| si on +ne souhaite pas que les numéros de ligne soient dans une position en débordement sur la +gauche. -Il est possible de donner à la clé |left-margin| la valeur spéciale~|auto|. Avec cette valeur, une marge est -insérée automatiquement pour les numéros de ligne quand la clé |line-numbers| est utilisée. Voir un exemple à la -partie \ref{example-numbering} p.~\pageref{example-numbering}. +Il est possible de donner à la clé |left-margin| la valeur spéciale~|auto|. Avec cette +valeur, une marge est insérée automatiquement pour les numéros de ligne quand la clé +|line-numbers| est utilisée. Voir un exemple à la partie \ref{example-numbering} +p.~\pageref{example-numbering}. -\item \index{background-color} La clé \Definition{background-color} fixe la couleur de fond des environnements |{Piton}| et des listings -produits par |\PitonInputFile| (ce fond a une largeur que l'on peut fixer avec la clé |width| décrite ci-dessous). -La clé |background-color| accepte une couleur définie «à la volée», c'est-à-dire que l'on peut écrire par exemple -|background-color = [cmyk]{0.1,0.05,0,0}| +\item \index{background-color} La clé \Definition{background-color} fixe la couleur de +fond des environnements |{Piton}| et des listings produits par |\PitonInputFile| (ce fond +a une largeur que l'on peut fixer avec la clé |width| décrite ci-dessous). La clé +|background-color| accepte une couleur définie «à la volée», c'est-à-dire que l'on peut +écrire par exemple |background-color = [cmyk]{0.1,0.05,0,0}| \smallskip -La clé |background-color| accepte aussi en argument une \emph{liste} de couleurs. Les lignes sont alors coloriées -de manière cyclique avec ces couleurs. +La clé |background-color| accepte aussi en argument une \emph{liste} de couleurs. Les +lignes sont alors coloriées de manière cyclique avec ces couleurs. \emph{Exemple} : |\PitonOptions{background-color = {gray!5,white}}| -\item \index{prompt-background-color} Avec la clé \Definition{prompt-background-color}, \pkg{piton} ajoute un fond coloré aux lignes débutant par -le prompt «|>>>|» (et sa continuation «|...|») caractéristique des consoles Python avec boucle \textsc{repl} -(\emph{read-eval-print loop}). Pour un exemple d'utilisation de cette clé, voir la partie \ref{pythonrepl} -p.~\pageref{pythonrepl}. - -\item \index{width} La clé \Definition{width} fixe la largeur du listing produit. Cette largeur s'applique aux fonds colorés -spécifiés par les clés |background-color| et |prompt-background-color| et également quand une coupure automatique -des lignes est demandée par |break-lines| (cf.~\ref{line-breaks}, p.~\pageref{line-breaks}). - -Cette clé peut prendre comme valeur une longueur explicite mais aussi la valeur spéciale~|min|. Avec cette valeur, -la largeur sera calculée à partir de la largeur maximale des lignes de code. Attention : l'usage de cette valeur -spéciale~|min| requiert deux compilations LuaLaTeX\footnote{La largeur maximale est calculée lors de la première -compilation, écrite sur le fichier~|aux|, puis réutilisée lors de la compilation suivante. Certains outils comme -|latexmk| (utilisé par Overleaf) effectuent automatiquement un nombre suffisant de compilations.}. - -Pour un exemple d'utilisation de |width=min|, voir la partie~\ref{example-comments} sur les exemples, p.~\pageref{example-comments}. - -\item \index{show-spaces-in-strings} En activant la clé \Definition{show-spaces-in-strings}, les espaces dans les -chaînes de caractères\footnote{Pour le language Python, cela ne s'applique que pour les chaînes courtes, c'est-à-dire -celles délimitées par~\verb|'| ou~\verb|"|. En OCaml, cela ne s'applique pas pour les \emph{quoted strings}.} sont -matérialisés par le caractère ␣ (U+2423 : \textsc{open box}). Bien sûr, le caractère U+2423 doit être présent dans la fonte mono-chasse utilisée.\footnote{L'extension \pkg{piton} utilise - simplement la fonte mono-chasse courante. Pour la changer, le mieux est d'utiliser |\setmonofont| de - \pkg{fontspec}.}\par\nobreak + +\item \index{prompt-background-color} Avec la clé \Definition{prompt-background-color}, +\pkg{piton} ajoute un fond coloré aux lignes débutant par le prompt «|>>>|» (et sa +continuation «|...|») caractéristique des consoles Python avec boucle \textsc{repl} +(\emph{read-eval-print loop}). Pour un exemple d'utilisation de cette clé, voir la partie +\ref{pythonrepl} p.~\pageref{pythonrepl}. + +\item \index{width} La clé \Definition{width} fixe la largeur du listing produit. Cette +largeur s'applique aux fonds colorés spécifiés par les clés |background-color| et +|prompt-background-color| et également quand une coupure automatique des lignes est +demandée par |break-lines| (cf.~\ref{line-breaks}, p.~\pageref{line-breaks}). + +Cette clé peut prendre comme valeur une longueur explicite mais aussi la valeur +spéciale~|min|. Avec cette valeur, la largeur sera calculée à partir de la largeur +maximale des lignes de code. Attention : l'usage de cette valeur spéciale~|min| requiert +deux compilations LuaLaTeX\footnote{La largeur maximale est calculée lors de la première + compilation, écrite sur le fichier~|aux|, puis réutilisée lors de la compilation + suivante. Certains outils comme |latexmk| (utilisé par Overleaf) effectuent + automatiquement un nombre suffisant de compilations.}. + +Pour un exemple d'utilisation de |width=min|, voir la partie~\ref{example-comments} sur +les exemples, p.~\pageref{example-comments}. + +\item \index{show-spaces-in-strings} En activant la clé +\Definition{show-spaces-in-strings}, les espaces dans les chaînes de +caractères\footnote{Pour le language Python, cela ne s'applique que pour les chaînes + courtes, c'est-à-dire celles délimitées par~\verb|'| ou~\verb|"|. En OCaml, cela ne + s'applique pas pour les \emph{quoted strings}.} sont matérialisés par le caractère ␣ +(U+2423 : \textsc{open box}). Bien sûr, le caractère U+2423 doit être présent dans la +fonte mono-chasse utilisée.\footnote{La valeur initial de |font-command| est |\ttfamily| + ce qui fait que, par défaut, l'extension \pkg{piton} utilise simplement la fonte + mono-chasse courante.}\par\nobreak % \begingroup \PitonOptions{show-spaces-in-strings} Exemple : \piton{my_string = 'Très bonne réponse'} \endgroup -\item \index{show-spaces} Avec la clé \Definition{show-spaces}, tous les espaces sont matérialisés (et aucune -coupure de ligne ne peut plus intervenir sur ces espaces matérialisés, même si la clé |break-lines|\footnote{cf. - \ref{line-breaks} p.~\pageref{line-breaks}.} est active). Il faut néanmoins remarquer que les espaces en fin de -ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne sont représentées par des flèches. +\item \index{show-spaces} Avec la clé \Definition{show-spaces}, tous les espaces sont +matérialisés (et aucune coupure de ligne ne peut plus intervenir sur ces espaces +matérialisés, même si la clé |break-lines|\footnote{cf. \ref{line-breaks} + p.~\pageref{line-breaks}.} est active). Il faut néanmoins remarquer que les espaces en +fin de ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne sont +représentées par des flèches. \end{itemize} \bigskip @@ -516,7 +570,7 @@ ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne s if (!swapped) break; } } -\end{Piton} +~emphase&\end{Piton}@ \end{Verbatim} \endgroup @@ -544,8 +598,9 @@ ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne s \bigskip -La commande |\PitonOptions| propose d'autres clés qui seront décrites plus loin (voir en particulier la coupure des -pages et des lignes p.~\pageref{breakable}). +La commande |\PitonOptions| propose d'autres clés qui seront décrites plus loin (voir en +particulier la coupure des pages et des lignes p.~\pageref{breakable}). + \subsection{Les styles} @@ -555,93 +610,102 @@ pages et des lignes p.~\pageref{breakable}). \subsubsection{Notion de style} -L'extension \pkg{piton} fournit la commande |\SetPitonStyle| pour personnaliser les différents styles utilisés pour -formater les éléments syntaxiques des listings Python. Ces personnalisations ont une portée qui correspond au -groupe TeX courant.\footnote{On rappelle que tout environnement LaTeX est, en particulier, un groupe.} +L'extension \pkg{piton} fournit la commande |\SetPitonStyle| pour personnaliser les +différents styles utilisés pour formater les éléments syntaxiques des listings +informatiques. Ces personnalisations ont une portée qui correspond au groupe TeX +courant.\footnote{On rappelle que tout environnement LaTeX est, en particulier, un + groupe.} \bigskip -\indexcommand{SetPitonStyle} -La commande |\SetPitonStyle| prend en argument une liste de couples \textsl{clé=valeur}. Les clés sont les noms des -styles et les valeurs sont les instructions LaTeX de formatage correspondantes. +\indexcommand{SetPitonStyle} La commande |\SetPitonStyle| prend en argument une liste de +couples \textsl{clé=valeur}. Les clés sont les noms des styles et les valeurs sont les +instructions LaTeX de formatage correspondantes. \bigskip -Ces instructions LaTeX doivent être des instructions de formatage du type de |\bfseries|, |\slshape|, -|\color{...}|, etc. (les commandes de ce type sont parfois qualifiées de \emph{semi-globales}). Il est aussi -possible de mettre, \emph{à la fin de la liste d'instructions}, une commande LaTeX prenant exactement un argument. +Ces instructions LaTeX doivent être des instructions de formatage du type de |\bfseries|, +|\slshape|, |\color{...}|, etc. (les commandes de ce type sont parfois qualifiées de +\emph{semi-globales}). Il est aussi possible de mettre, \emph{à la fin de la liste + d'instructions}, une commande LaTeX prenant exactement un argument. \bigskip -Voici un exemple qui change le style utilisé pour le nom d'une fonction Python, au moment de sa définition -(c'est-à-dire après le mot-clé |def|). Elle utilise la commande |\highLight| de \pkg{lua-ul} (qui nécessite -lui-même le chargement de \pkg{luacolor}). +Voici un exemple qui change le style utilisé pour le nom d'une fonction Python, au moment +de sa définition (c'est-à-dire après le mot-clé |def|). Elle utilise la commande +|\highLight| de \pkg{lua-ul} (qui nécessite lui-même le chargement de \pkg{luacolor}). \begin{Verbatim} \SetPitonStyle - { Name.Function = \bfseries \hightLight[red!50] } + { Name.Function = \bfseries \hightLight[red!30] } \end{Verbatim} -Ici, |\highLight[red!50]| doit être considéré comme le nom d'une fonction LaTeX qui prend exactement un argument, -puisque, habituellement, elle est utilisée avec |\highLight[red!50]{|\texttt{\slshape text}|}|. +Ici, |\highLight[red!30]| doit être considéré comme le nom d'une fonction LaTeX qui prend +exactement un argument, puisque, habituellement, elle est utilisée avec +|\highLight[red!30]{|\texttt{\slshape text}|}|. \medskip \begingroup \SetPitonStyle - { Name.Function = \bfseries \highLight[red!50] } + { Name.Function = \bfseries \highLight[red!30] } Avec ce réglage, on obtient : \piton{def cube(x) : return x * x * x } \endgroup \bigskip -L'usage des différents styles suivant le langage informatique considéré est décrit dans la partie \ref{Semantic}, à -partir de la page \pageref{Semantic}. +L'usage des différents styles suivant le langage informatique considéré est décrit dans la +partie \ref{Semantic}, à partir de la page \pageref{Semantic}. \bigskip -\indexcommand{PitonStyle} -La commande \DefinitionCommand{PitonStyle} prend en argument le nom d'un style et permet de récupérer la valeur (en -tant que liste d'instructions LaTeX) de ce style. +\indexcommand{PitonStyle} La commande \DefinitionCommand{PitonStyle} prend en argument le +nom d'un style et permet de récupérer la valeur (en tant que liste d'instructions LaTeX) +de ce style. \smallskip -Par exemple, on peut écrire, dans le texte courant, |{\PitonStyle{Keyword}{function}}| et on aura -le mot {\PitonStyle{Keyword}{function}} formaté comme un mot-clé. +Par exemple, on peut écrire, dans le texte courant, |{\PitonStyle{Keyword}{function}}| et +on aura le mot {\PitonStyle{Keyword}{function}} formaté comme un mot-clé. \smallskip -La syntaxe |{\PitonStyle{|\textsl{\texttt{style}}|}{...}}| est nécessaire pour pouvoir tenir compte à la fois des commandes -semi-globales et des commandes à argument présentes dans la valeur courante du style \texttt{\textsl{style}}. +La syntaxe |{\PitonStyle{|\textsl{\texttt{style}}|}{...}}| est nécessaire pour pouvoir +tenir compte à la fois des commandes semi-globales et des commandes à argument présentes +dans la valeur courante du style \texttt{\textsl{style}}. \subsubsection{Styles locaux et globaux} -Un style peut être défini de manière globale avec la commande |\SetPitonStyle|. Cela veut dire qu'il s'appliquera -par défaut à tous les langages informatiques qui utilisent ce style. +Un style peut être défini de manière globale avec la commande |\SetPitonStyle|. Cela veut +dire qu'il s'appliquera par défaut à tous les langages informatiques qui utilisent ce +style. \medskip Par exemple, avec la commande \begin{Verbatim} \SetPitonStyle{Comment = \color{gray}} \end{Verbatim} -tous les commentaires (que ce soit en Python, en C, en OCaml, etc. ou dans un langage défini avec -|\NewPitonLanguage|) seront composés en gris. +tous les commentaires (que ce soit en Python, en C, en OCaml, etc. ou dans un langage +défini avec |\NewPitonLanguage|) seront composés en gris. \bigskip -Mais il est aussi possible de définir un style localement pour un certain langage informatique en passant le nom du -langage en argument optionnel (entre crochets) de la commande |\SetPitonStyle|.\footnote{On rappelle que, dans - \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse.} +Mais il est aussi possible de définir un style localement pour un certain langage +informatique en passant le nom du langage en argument optionnel (entre crochets) de la +commande |\SetPitonStyle|.\footnote{On rappelle que, dans \pkg{piton}, les noms des + langages informatiques ne sont pas sensibles à la casse.} \medskip Par exemple, avec la commande \begin{Verbatim} -\SetPitonStyle~emphase#[SQL]@{Keywords = \color[HTML]{006699} \bfseries \MakeUppercase} +\SetPitonStyle~emphase#[SQL]@{Keyword = \color[HTML]{006699} \bfseries \MakeUppercase} \end{Verbatim} -les mots-clés dans les listings SQL seront composés en lettres capitales, même s'ils s'apparaissent en minuscules -dans le fichier source LaTeX (on rappelle que, en SQL, les mot-clés ne sont pas sensibles à la casse et donc forcer -leur mise en capitales peut être envisagé). +les mots-clés dans les listings SQL seront composés en lettres capitales, même s'ils +s'apparaissent en minuscules dans le fichier source LaTeX (on rappelle que, en SQL, les +mot-clés ne sont pas sensibles à la casse et donc forcer leur mise en capitales peut être +envisagé). \medskip -Comme on s'en doute, si un langage informatique utilise un certain style et que ce style n'est pas défini -localement pour ce langage, c'est la version globale qui est utilisée. Cette notion de globalité n'a pas de -rapport avec la notion de liaison locale de TeX (notion de groupe TeX).\footnote{Du point de vue des groupes de - TeX, les liaisons faites par |\SetPitonStyle| sont toujours locales.} +Comme on s'en doute, si un langage informatique utilise un certain style et que ce style +n'est pas défini localement pour ce langage, c'est la version globale qui est utilisée. +Cette notion de globalité n'a pas de rapport avec la notion de liaison locale de TeX +(notion de groupe TeX).\footnote{Du point de vue des groupes de TeX, les liaisons faites + par |\SetPitonStyle| sont toujours locales.} \medskip Les styles fournis par défaut par \pkg{piton} sont tous définis globalement. @@ -652,16 +716,22 @@ Les styles fournis par défaut par \pkg{piton} sont tous définis globalement. \index{UserFunction (style)} \bigskip -Il existe un style spécial nommé |UserFunction|. Ce style s'applique aux noms des fonctions précédemment définies -par l'utilisateur (par exemple, avec le langage Python, ces noms de fonctions sont ceux qui apparaissent après le -mot-clé \piton{def} dans un listing Python précédent). La valeur initiale de ce style est nulle (=vide), ce qui -fait que ces noms de fonctions sont formatés comme du texte courant (en noir). Néanmoins, il est possible de -changer la valeur de ce style, comme tous les autres styles, avec la commande |\SetPitonStyle|. +Il existe un style spécial nommé |UserFunction|. Ce style s'applique aux noms des +fonctions précédemment définies par l'utilisateur (par exemple, avec le langage Python, +ces noms de fonctions sont ceux qui apparaissent après le mot-clé \piton{def} dans un +listing Python précédent). La valeur initiale de ce style est |\PitonStyle{Identifier}|, +ce qui fait que ces noms de fonctions sont formatés comme les autres identificateurs +(c'est-à-dire, par défaut, sans formatage particulier, si ce n'est celui donné par +|font-command|). + +Néanmoins, il est possible de changer la valeur de ce style, comme tous les autres styles, +avec la commande |\SetPitonStyle|. \medskip -Dans l'exemple suivant, on règle les styles |Name.Function| et |UserFunction| de manière à ce que, quand on clique -sur le nom d'une fonction Python précédemment définie par l'utilisateur, on soit renvoyé vers la définition -(informatique) de cette fonction. Cette programmation utilise les fonctions |\hypertarget| et |\hyperlink| de \pkg{hyperref}. +Dans l'exemple suivant, on règle les styles |Name.Function| et |UserFunction| de manière à +ce que, quand on clique sur le nom d'une fonction Python précédemment définie par +l'utilisateur, on soit renvoyé vers la définition (informatique) de cette fonction. Cette +programmation utilise les fonctions |\hypertarget| et |\hyperlink| de \pkg{hyperref}. \begingroup @@ -698,7 +768,8 @@ def passe(v): \end{Piton} \medskip -(Certains lecteurs de \textsc{pdf} affichent un cadre autour du mot |transpose| cliquable et d'autres non.) +(Certains lecteurs de \textsc{pdf} affichent un cadre autour du mot |transpose| cliquable +et d'autres non.) \endgroup @@ -707,12 +778,14 @@ def passe(v): \bigskip \begin{small} -Bien sûr, la liste des noms de fonctions Python précédemment définies est gardée en mémoire de LuaLaTeX (de manière -globale, c'est-à-dire indépendamment des groupes TeX). L'extension \pkg{piton} fournit une commande qui permet de -vider cette liste : c'est la commande \DefinitionCommand{PitonClearUserFunctions}. Quand elle est utilisée sans argument, cette -commande s'applique à tous les langages informatiques utilisées par l'utilisateur mais on peut spécifier en -argument optionnel (entre crochets) une liste de langages informatiques auxquels elle s'appliquera.\footnote{On - rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse. } +Bien sûr, la liste des noms de fonctions Python précédemment définies est gardée en +mémoire de LuaLaTeX (de manière globale, c'est-à-dire indépendamment des groupes TeX). +L'extension \pkg{piton} fournit une commande qui permet de vider cette liste : c'est la +commande \DefinitionCommand{PitonClearUserFunctions}. Quand elle est utilisée sans +argument, cette commande s'applique à tous les langages informatiques utilisées par +l'utilisateur mais on peut spécifier en argument optionnel (entre crochets) une liste de +langages informatiques auxquels elle s'appliquera.\footnote{On rappelle que, dans + \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse. } \end{small} @@ -722,24 +795,26 @@ argument optionnel (entre crochets) une liste de langages informatiques auxquels \label{NewPitonEnvironment} \indexcommand{NewPitonEnvironment} -Comme l'environnement |{Piton}| a besoin d'absorber son contenu d'une manière spéciale (à peu près comme du texte -verbatim), il n'est pas possible de définir de nouveaux environnements directement au-dessus de l'environnement -|{Piton}| avec les commandes classiques |\newenvironment| (de LaTeX standard) et |\NewDocumentEnvironment| (de -LaTeX3). +Comme l'environnement |{Piton}| a besoin d'absorber son contenu d'une manière spéciale (à +peu près comme du texte verbatim), il n'est pas possible de définir de nouveaux +environnements directement au-dessus de l'environnement |{Piton}| avec les commandes +classiques |\newenvironment| (de LaTeX standard) et |\NewDocumentEnvironment| (de LaTeX3). -C'est pourquoi \pkg{piton} propose une commande |\NewPitonEnvironment|. Cette commande a la même syntaxe que la -commande classique |\NewDocumentEnvironment|.\footnote{Néanmoins, le spécificateur d'argument~|b|, qui sert à +C'est pourquoi \pkg{piton} propose une commande \DefinitionCommand{NewPitonEnvironment}. +Cette commande a la même syntaxe que la commande classique +|\NewDocumentEnvironment|.\footnote{Néanmoins, le spécificateur d'argument~|b|, qui sert à capter le corps de l'environnement comme un argument LaTeX, n'est pas autorisé.} \bigskip -Par exemple, avec l'instruction suivante, un nouvel environnement |{Python}| sera défini avec le même comportement -que l'environnement |{Piton}|: +Par exemple, avec l'instruction suivante, un nouvel environnement |{Python}| sera défini +avec le même comportement que l'environnement |{Piton}|: {\color{gray}|\NewPitonEnvironment{Python}{O{}}{\PitonOptions{#1}}{}|} \bigskip -Si on souhaite un environnement |{Python}| qui compose le code inclus dans une boîte de \pkg{tcolorbox}, on peut -écrire (à condition, bien entendu, d'avoir chargé l'extension \pkg{tcolorbox}): +Si on souhaite un environnement |{Python}| qui compose le code inclus dans une boîte de +\pkg{tcolorbox}, on peut écrire (à condition, bien entendu, d'avoir chargé l'extension +\pkg{tcolorbox}): \begin{Verbatim} \NewPitonEnvironment{Python}{} @@ -774,27 +849,29 @@ def carré(x): \label{NewPitonLanguage} \index{listings@\pkg{listings} (extension)} -\colorbox{yellow!50}{\textbf{Nouveau 3.0}} - \medskip L'extension \pkg{listings} est une célèbre extension LaTeX pour formater des codes informatiques. \medskip -Elle propose une commande |\lstdefinelanguage| pour définir de nouveaux langages. Cette commande est aussi -utilisée en interne par \pkg{listings} pour sa définition des languages (en fait, pour cela, \pkg{listings} utilise -une commande nommée |\lst@definelanguage| mais celle-ci a la même syntaxe que |\lstdefinelanguage|). +Elle propose une commande |\lstdefinelanguage| pour définir de nouveaux langages. Cette +commande est aussi utilisée en interne par \pkg{listings} pour sa définition des languages +(en fait, pour cela, \pkg{listings} utilise une commande nommée |\lst@definelanguage| mais +celle-ci a la même syntaxe que |\lstdefinelanguage|). \medskip -L'extension \pkg{piton} propose une commande \DefinitionCommand{NewPitonLanguage} pour définir de nouveaux -langages (utilisables avec les outils de \pkg{piton}) avec quasiment la même syntaxe que |\lstdefinelanguage|. +L'extension \pkg{piton} propose une commande \DefinitionCommand{NewPitonLanguage} pour +définir de nouveaux langages (utilisables avec les outils de \pkg{piton}) avec quasiment +la même syntaxe que |\lstdefinelanguage|. \medskip -Précisons tout de suite que l'extension \pkg{piton} n'utilise \emph{pas} cette commande pour définir les langages -qu'elle propose nativement (Python, C, OCaml, \CC\ et |minimal|), ce qui permet de proposer des parseurs plus puissants. +Précisons tout de suite que l'extension \pkg{piton} n'utilise \emph{pas} cette commande +pour définir les langages qu'elle propose nativement (Python, C, OCaml, SQL, |minimal| et +|verbatim|), ce qui permet de proposer des parseurs plus puissants. \medskip -Par exemple, dans le fichier |lstlang1.sty|, qui est un des fichiers de definition des langages proposés par défaut -par \pkg{listings}, on trouve les instructions suivantes (dans la version 1.10a). +Par exemple, dans le fichier |lstlang1.sty|, qui est un des fichiers de definition des +langages proposés par défaut par \pkg{listings}, on trouve les instructions suivantes +(dans la version 1.10a). \begin{Verbatim}[formatcom=\small\color{gray}] \lst~@definelanguage{Java}% @@ -813,9 +890,10 @@ par \pkg{listings}, on trouve les instructions suivantes (dans la version 1.10a) \end{Verbatim} \medskip -Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le code suivant, -{\bfseries où le dernier argument de |\lst@definelanguage|, qui est entre crochets, a été supprimé} -(en fait, les symboles \verb+%+ pourraient être supprimés sans problème). +Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le code +suivant, {\bfseries où le dernier argument de |\lst@definelanguage|, qui est entre + crochets, a été supprimé} (en fait, les symboles \verb+%+ pourraient être supprimés sans +problème). \begin{Verbatim}[formatcom=\small\color{gray}] ~emphase#\NewPitonLanguage@{Java}% @@ -850,16 +928,18 @@ Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le \medskip -On peut alors utiliser le language Java comme n'importe quel autre langage prédéfini de \pkg{piton}. +On peut alors utiliser le language Java comme n'importe quel autre langage prédéfini de +\pkg{piton}. -Voici un exemple de code Java formaté dans un environnement~|{Piton}| avec la clé~|language=Java|.\footnote{On - rappelle que, pour \pkg{piton}, les noms de langages informatiques ne sont pas sensibles à la casse, ce qui fait - que l'on aurait pu aussi bien utiliser : |language=java|.} +Voici un exemple de code Java formaté dans un environnement~|{Piton}| avec la +clé~|language=Java|.\footnote{On rappelle que, pour \pkg{piton}, les noms de langages + informatiques ne sont pas sensibles à la casse, ce qui fait que l'on aurait pu aussi + bien utiliser : |language=java|.} \bigskip \begingroup \small -\PitonOptions{split-on-empty-lines} +\PitonOptions{splittable-on-empty-lines} \begin{Piton}[language = Java] public class Cipher { // cryptage par le chiffre de César public static void main(String[] args) { @@ -893,12 +973,14 @@ public class Cipher { // cryptage par le chiffre de César \endgroup \bigskip -Les clés de la commande |\lstdefinelanguage| de \pkg{listings} prises en charge par |\NewPitonLanguage| sont : -|morekeywords|, |otherkeywords|, |sensitive|, |keywordsprefix|, |moretexcs|, |morestring| (avec les lettres |b|, -|d|, |s| et |m|), |morecomment| (avec les lettres |i|, |l|, |s| et |n|), |moredelim| (avec les lettres |i|, -|l|, |s|, |*| et |**|), |moredirectives|, |tag|, |alsodigit|, |alsoletter| et |alsoother|. +Les clés de la commande |\lstdefinelanguage| de \pkg{listings} prises en charge par +|\NewPitonLanguage| sont : |morekeywords|, |otherkeywords|, |sensitive|, |keywordsprefix|, +|moretexcs|, |morestring| (avec les lettres |b|, |d|, |s| et |m|), |morecomment| (avec les +lettres |i|, |l|, |s| et |n|), |moredelim| (avec les lettres |i|, |l|, |s|, |*| et |**|), +|moredirectives|, |tag|, |alsodigit|, |alsoletter| et |alsoother|. -Pour la description de ces clés, on renvoie à la documentation de \pkg{listings} (taper |texdoc| |listings| dans un terminal). +Pour la description de ces clés, on renvoie à la documentation de \pkg{listings} (taper +|texdoc| |listings| dans un terminal). \bigskip Par exemple, pour formater du code LaTeX, on pourra créer le language suivant : @@ -907,170 +989,105 @@ Par exemple, pour formater du code LaTeX, on pourra créer le language suivant : \begin{verbatim} \NewPitonLanguage{LaTeX}{keywordsprefix = \ , alsoletter = @_ } \end{verbatim} -} -Initialement, les caractères |@| et |_| sont des considérés comme des lettres car de nombreux langages de -programmation les autorisent dans les mots-clés et les identificateurs. Avec \verb|alsoletter = @_|, on les retire -de la catégorie des lettres. - - -\section{Fonctionnalités avancées} - - -\subsection{Coupure des pages et des lignes} - -\label{breakable} - -\subsubsection{Coupure des pages} - -\index{splittable} -\index{split-on-empty-lines} -\index{split-separation} - -Par défaut, les listings produits par l'environnement |{Piton}| et par la commande |\PitonInputFile| sont -insécables. - - -Néanmoins, la commande |\PitonOptions| propose les clés |split-on-empty-lines| et |splittable| pour autoriser de -telles coupures. - -\begin{itemize} -\item La clé \Definition{split-on-empty-lines} autorise les coupures sur les lignes vides\footnote{Les lignes considérées - comme vides sont celles qui ne comportent que des espaces.} du listing. Dans les listings informatiques, les -lignes vides séparent le plus souvent les définitions des fonctions informatiques et il est donc souvent judicieux -de pouvoir couper au niveau de ces lignes. +} -Quand la clé |split-on-empty-lines| est activée, le travail effectué va en fait un peu plus loin : les lignes vides -successives sont supprimées et remplacées par le contenu du paramètre correspondant à la clé -\Definition{split-separation}. +Initialement, les caractères |@| et |_| sont considérés comme des lettres car de nombreux +langages de programmation les autorisent dans les mots-clés et les identificateurs. Avec +\verb|alsoletter = @_|, on les retire de la catégorie des lettres. -La valeur initiale de ce paramètre est |\vspace{\baselineskip}\vspace{-1.25pt}|, ce qui, au final, correspond à une -ligne vide dans le PDF produit (cet espace vertical est supprimé s'il tombe au niveau d'un saut de page). -\medskip -\item La clé |split-on-empty-lines| peut bien sûr être insuffisante et c'est pourquoi \pkg{piton} propose la clé -\Definition{splittable}. +\section{Fonctionnalités avancées} -Quand la clé |splittable| est utilisée avec la valeur numérique $n$ (qui doit être un entier naturel non nul) le -listing, ou bien chaque partie de ce listing située entre des lignes vides (quand |split-on-empty-lines| est -utilisée), pourra être coupé n'importe où avec cette exception qu'aucune coupure ne pourra avoir lieu entre les -$n$~premières lignes, ni entre les $n$~dernières. Par exemple, |splittable = 4| pourrait être un réglage raisonnable. -Employée sans argument, la clé |splittable| est équivalente à |splittable = 1|, et les listings sont alors sécables -n'importe où (ce n'est pas recommandable). +\subsection{Insertion d'un fichier} -\end{itemize} - -\medskip -\emph{Remarque}\par\nobreak +\label{PitonInputFile} -Même avec une couleur de fond (fixée avec |background-color|), les sauts de page sont possibles, à partir du moment -où |split-on-empty-lines| ou |splittable| est utilisée.\footnote{Avec la clé |splittable|, un environnement - |{Piton}| est sécable même dans un environnement de \pkg{tcolorbox} (à partir du moment où la clé |breakable| de - \pkg{tcolorbox} est utilisée). On précise cela parce que, en revanche, un environnement de \pkg{tcolorbox} inclus - dans un autre environnement de \pkg{tcolorbox} n'est pas sécable, même quand les deux utilisent la clé - |breakable|.} +\subsubsection{La commande \textbackslash PitonInputFile} +\indexcommand{PitonInputFile} -\subsubsection{Coupure des lignes} - -\label{line-breaks} - -Par défaut, les éléments produits par \pkg{piton} ne peuvent pas être coupés par une fin de ligne. Il existe -néanmoins des clés pour autoriser de telles coupures (les points de coupure possibles sont les espaces, y compris -les espaces dans les chaînes Python). -\begin{itemize} -\item \index{break-lines!break-lines-in-piton} Avec la clé \Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande -|\piton{...}| (mais pas dans la commande \verb+\piton|...|+, c'est-à-dire avec la syntaxe verbatim). +La commande \DefinitionCommand{PitonInputFile} permet d'insérer tout ou partie d'un +fichier extérieur dont le nom est passé en argument. Il existe aussi des commandes +\DefinitionCommand{PitonInputFileT}, \DefinitionCommand{PitonInputFileF} et +\DefinitionCommand{PitonInputFileTF} avec des arguments correspondant aux lettres |T| et +|F|, arguments qui seront exécutés dans le cas où le fichier a été trouvé (lettre |T|) ou +pas (lettre |F|). -\item \index{break-lines!break-lines-in-Piton} Avec la clé \Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans l'environnement -|{Piton}| (d'où la lettre |P| capitale dans le nom) et les listings produits par |\PitonInputFile|. -\item \index{break-lines} La clé \Definition{break-lines} est la conjonction des deux clés précédentes. -\end{itemize} +\bigskip +\colorbox{yellow!50}{\textbf{Modification 4.0}}\par\nobreak -\medskip -L'extension \pkg{piton} fournit aussi plusieurs clés pour contrôler l'apparence des coupures de ligne autorisées par |break-lines-in-Piton|. +\smallskip +\index{old-PitonInputFile} +La syntaxe pour les chemins absolus et relatifs a été changée pour être conforme aux +usages traditionnels. Il est toutefois possible d'utiliser la clé +\Definition{old-PitonInputFile} au chargement de l'extension (c'est-à-dire avec le +|\usepackage|) pour avoir l'ancien comportement de |\PitonInputFile| (néanmoins, cette clé +sera supprimée dans une prochaine version de \pkg{piton} !). +\smallskip +La syntaxe est maintenant la suivante : \begin{itemize} -\item \index{indent-broken-lines} Avec la clé \Definition{indent-broken-lines}, l'indentation de la ligne coupée est respectée à chaque retour -à la ligne. +\item Les chemins commençant par |/| sont des chemins absolus. -\item \index{end-of-broken-line} La clé \Definition{end-of-broken-line} correspond au symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : -|\hspace*{0.5em}\textbackslash|. +\emph{Exemple} : |\PitonInputFile{/Users/joe/Documents/programme.py}| -\item \index{continuation-symbol} La clé \Definition{continuation-symbol} correspond au symbole placé à chaque retour de ligne dans la marge -gauche. Sa valeur initiale est : |+\;| (la commande |\;| insère un petit espace horizontal). +\item Les chemins ne commençant pas par |/| sont relatifs au répertoire courant. -\item \index{continuation-symbol-on-indentation} La clé \Definition{continuation-symbol-on-indentation} correspond au symbole placé à chaque retour de ligne -au niveau de l'indentation (uniquement dans le cas où la clé |indent-broken-lines| est active). Sa valeur initiale -est : |$\hookrightarrow\;$|. +\emph{Exemple} : |\PitonInputFile{les_listings/programme.py}| \end{itemize} -\bigskip -Le code suivant a été composé avec le réglage suivant : - -\begin{Verbatim} -\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} -\end{Verbatim} -\begin{center} -\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} -\begin{Piton} -def dict_of_liste(liste): - """Convertit une liste de subrs et de descriptions de glyphes en dictionnaire""" - dict = {} - for liste_lettre in liste: - if (liste_lettre[0][0:3] == 'dup'): # si c'est un subr - nom = liste_lettre[0][4:-3] - print("On traite le subr de numéro " + nom) - else: - nom = liste_lettre[0][1:-3] # si c'est un glyphe - print("On traite le glyphe du caractère " + nom) - dict[nom] = [traite_ligne_Postscript(k) for k in liste_lettre[1:-1]] - return dict -\end{Piton} -\end{center} +\index{path} +La clé \Definition{path} de la commande |\PitonOptions| permet de spécifier une +\emph{liste} de chemins où sera recherché le fichier à inclure (dans cette liste, les +chemins sont séparés par des virgules). Comme précédemment, les chemins absolus doivent +débuter par une oblique~|/|. -\bigskip -\subsection{Insertion d'une partie d'un fichier} +\subsubsection{Insertion d'une partie d'un fichier} \label{part-of-a-file} -\indexcommand{PitonInputFile} - -La commande |\PitonInputFile| permet d'insérer (avec formatage) le contenu d'un fichier. En fait, il existe des -mécanismes permettant de n'insérer qu'une partie du fichier en question. +En fait, il existe des mécanismes permettant de n'insérer qu'une partie du fichier en +question. \begin{itemize} -\item On peut spécifier la partie à insérer par les numéros de lignes (dans le fichier d'origine). +\item On peut spécifier la partie à insérer par les numéros de lignes (dans le fichier +d'origine). \item On peut aussi spécifier la partie à insérer par des marqueurs textuels. \end{itemize} -Dans les deux cas, si on souhaite numéroter les lignes avec les numéros des lignes du fichier d'origine, il -convient d'utiliser la clé |line-numbers/absolute|. - -\subsubsection{Avec les numéros de lignes absolus} +Dans les deux cas, si on souhaite numéroter les lignes avec les numéros des lignes du +fichier d'origine, il convient d'utiliser la clé |line-numbers/absolute|. -La commande |\PitonInputFile| propose les clés \Definition{first-line} et \Definition{last-line} pour n'insérer que -la partie du fichier comprise entre les lignes correspondantes. Ne pas confondre avec la clé |line-numbers/start| -qui demande un numérotage des lignes commençant à la valeur donnée à cette clé (en un sens |line-numbers/start| -concerne la sortie alors que |first-line| et |last-line| concernent l'entrée). +\bigskip +\textbf{Avec les numéros de lignes absolus}\par\nobreak +La commande |\PitonInputFile| propose les clés \Definition{first-line} et +\Definition{last-line} qui permettent de n'insérer que la partie du fichier comprise entre +les lignes correspondantes. Ne pas confondre avec la clé |line-numbers/start| qui demande +un numérotage des lignes commençant à la valeur donnée à cette clé (en un sens +|line-numbers/start| concerne la sortie alors que |first-line| et |last-line| concernent +l'entrée). -\subsubsection{Avec des marqueurs textuels} +\bigskip +\textbf{Avec des marqueurs textuels}\par\nobreak \index{marker/beginning} \index{marker/end} -Pour utiliser cette technique, il convient d'abord de spécifier le format des marqueurs marquant le début et la fin -de la partie du fichier à inclure. Cela se fait avec les deux clés \Definition{marker/beginning} et -\Definition{marker/end} (usuellement dans la commande |\PitonOptions|). +Pour utiliser cette technique, il convient d'abord de spécifier le format des marqueurs +marquant le début et la fin de la partie du fichier à inclure. Cela se fait avec les deux +clés \Definition{marker/beginning} et \Definition{marker/end} (usuellement dans la +commande |\PitonOptions|). \medskip Prenons d'abord un exemple. \medskip -Supposons que le fichier à inclure contienne des solutions à des exercices de programmation sur le modèle suivant : +Supposons que le fichier à inclure contienne des solutions à des exercices de +programmation sur le modèle suivant : \begin{Verbatim}[formatcom=\small\color{gray}] ~#[Exercice 1] Version itérative @@ -1087,25 +1104,27 @@ def fibo(n): ~#<Exercice 1> \end{Verbatim} -Les marqueurs de début de début et de fin sont les chaînes |#[Exercice 1]| et |#<Exercice 1>|. La chaîne -«|Exercice 1|» sera appelée le \emph{label} de l'exercice (ou de la partie du fichier à inclure). +Les marqueurs de début de début et de fin sont les chaînes |#[Exercice 1]| et +|#<Exercice 1>|. La chaîne «|Exercice 1|» sera appelée le \emph{label} de l'exercice (ou +de la partie du fichier à inclure). -Pour spécifier des marqueurs de cette sorte dans \pkg{piton}, on utilisera les clés |marker/beginning| et |marker/end| -de la manière suivante (le caractère |#| des commentaires de Python doit être inséré sous la forme échappée |\#|). +Pour spécifier des marqueurs de cette sorte dans \pkg{piton}, on utilisera les clés +|marker/beginning| et |marker/end| de la manière suivante (le caractère |#| des +commentaires de Python doit être inséré sous la forme échappée |\#|). \begin{Verbatim} \PitonOptions{ ~emphase#marker/beginning@ = \~#[~#1] , ~emphase#marker/end@ = \~#<~#1> } \end{Verbatim} -Comme on le voit, |marker/beginning| est une expression correspondant à la fonction mathématique qui, au nom du -label (par exemple |Exercice 1|), associe le marqueur de début (dans l'exemple |#[Exercice 1]|). La chaîne |#1| -correspond aux occurrences de l'argument de cette fonction (c'est la syntaxe habituelle de TeX). De même pour -|marker/end|. +Comme on le voit, |marker/beginning| est une expression correspondant à la fonction +mathématique qui, au nom du label (par exemple |Exercice 1|), associe le marqueur de début +(dans l'exemple |#[Exercice 1]|). La chaîne |#1| correspond aux occurrences de l'argument +de cette fonction (c'est la syntaxe habituelle de TeX). De même pour |marker/end|. \bigskip -Pour insérer une partie marquée d'un fichier, il suffit alors d'utiliser la clé \Definition{range} de -|\PitonInputFile|. +Pour insérer une partie marquée d'un fichier, il suffit alors d'utiliser la clé +\Definition{range} de |\PitonInputFile|. \smallskip \begin{Verbatim} @@ -1126,9 +1145,8 @@ def fibo(n): return v \end{Piton} -\vspace{1cm} -\index{marker/include-lines} -La clé \Definition{marker/include-lines} demande que les lignes contenant les marqueurs soient également insérées. +\vspace{1cm} \index{marker/include-lines} La clé \Definition{marker/include-lines} demande +que les lignes contenant les marqueurs soient également insérées. \begin{Verbatim} \PitonInputFile[~emphase#marker/include-lines@,range = Exercice 1]{~textsl#nom_du_fichier@} @@ -1151,13 +1169,12 @@ def fibo(n): \bigskip -\index{begin-range} -\index{end-range} -Il existe en fait aussi les clés \Definition{begin-range} et \Definition{end-range} pour insérer plusieurs -contenus marqués simultanément. +\index{begin-range} \index{end-range} Il existe en fait aussi les clés +\Definition{begin-range} et \Definition{end-range} pour insérer plusieurs contenus marqués +simultanément. -Par exemple, pour insérer les solutions des exercices 3 à 5, on pourra écrire (à condition que le fichier soit -structuré correctement!): +Par exemple, pour insérer les solutions des exercices 3 à 5, on pourra écrire (à condition +que le fichier soit structuré correctement!): \begin{Verbatim} \PitonInputFile[~emphase#begin-range = Exercice 3, end-range = Exercice 5@]{~textsl#nom_du_fichier@} @@ -1166,32 +1183,255 @@ structuré correctement!): +\subsection{Coupure des pages et des lignes} + +\label{breakable} + +\subsubsection{Coupure des lignes} + +\label{line-breaks} + +Par défaut, les éléments produits par \pkg{piton} ne peuvent pas être coupés par une fin +de ligne. Il existe néanmoins des clés pour autoriser de telles coupures (les points de +coupure possibles sont les espaces, y compris les espaces qui sont dans les chaînes de +caractères des langages informatiques). +\begin{itemize} +\item \index{break-lines!break-lines-in-piton} Avec la clé +\Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande +|\piton{...}| (mais pas dans la commande \verb+\piton|...|+, c'est-à-dire avec la syntaxe +verbatim). + +\item \index{break-lines!break-lines-in-Piton} Avec la clé +\Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans +l'environnement |{Piton}| (d'où la lettre |P| capitale dans le nom) et les listings +produits par |\PitonInputFile|. + +\item \index{break-lines} La clé \Definition{break-lines} est la conjonction des deux clés +précédentes. +\end{itemize} + +\medskip +L'extension \pkg{piton} fournit aussi plusieurs clés pour contrôler l'apparence des +coupures de ligne autorisées par |break-lines-in-Piton|. + +\begin{itemize} +\item \index{indent-broken-lines} Avec la clé \Definition{indent-broken-lines}, +l'indentation de la ligne coupée est respectée à chaque retour à la ligne (à condition que +la fonte utilisée soit une fonte mono-chasse, ce qui est le cas par défaut puisque la +valeur initiale de |font-command| est |\ttfamily|). + +\item \index{end-of-broken-line} La clé \Definition{end-of-broken-line} correspond au +symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : +|\hspace*{0.5em}\textbackslash|. + +\item \index{continuation-symbol} La clé \Definition{continuation-symbol} correspond au +symbole placé à chaque retour de ligne dans la marge gauche. Sa valeur initiale est : +|+\;| (la commande |\;| insère un petit espace horizontal). + +\item \index{continuation-symbol-on-indentation} La clé +\Definition{continuation-symbol-on-indentation} correspond au symbole placé à chaque +retour de ligne au niveau de l'indentation (uniquement dans le cas où la clé +|indent-broken-lines| est active). Sa valeur initiale est : |$\hookrightarrow\;$|. +\end{itemize} + +\bigskip +Le code suivant a été composé avec le réglage suivant : + +\begin{Verbatim} +\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} +\end{Verbatim} + + +\begin{center} +\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} +\begin{Piton} +def dict_of_liste(liste): + """Convertit une liste de subrs et de descriptions de glyphes en dictionnaire""" + dict = {} + for liste_lettre in liste: + if (liste_lettre[0][0:3] == 'dup'): # si c'est un subr + nom = liste_lettre[0][4:-3] + print("On traite le subr de numéro " + nom) + else: + nom = liste_lettre[0][1:-3] # si c'est un glyphe + print("On traite le glyphe du caractère " + nom) + dict[nom] = [traite_ligne_Postscript(k) for k in liste_lettre[1:-1]] + return dict +\end{Piton} +\end{center} + + +\bigskip +\colorbox{yellow!50}{\bfseries{Nouveau 4.1}}\par\nobreak + +\smallskip +Avec la clé \Definition{break-strings-anywhere}, les chaînes de caractères pourront être +coupées n'importe où (et pas seulement sur les espaces). + + +\subsubsection{Coupure des pages} + +\label{coupure-de-pages} +\index{splittable} +\index{splittable-on-empty-lines} + + +Par défaut, les listings produits par l'environnement |{Piton}| et par la commande +|\PitonInputFile| sont insécables. + + +Néanmoins, \pkg{piton} propose les clés |splittable-on-empty-lines| et |splittable| pour +autoriser de telles coupures. + +\begin{itemize} +\item La clé \Definition{splittable-on-empty-lines} autorise les coupures sur les lignes +vides du listing. Les lignes considérées comme vides sont celles qui ne comportent que des +espaces (et il aurait peut-être été plus habile de parler de lignes blanches). + +\medskip +\item La clé |splittable-on-empty-lines| peut bien sûr être insuffisante et c'est pourquoi +\pkg{piton} propose la clé \Definition{splittable}. + +Quand la clé |splittable| est utilisée avec la valeur numérique $n$ (qui doit être un +entier naturel non nul) le listing pourra être coupé n'importe où avec cette exception +qu'aucune coupure ne pourra avoir lieu entre les $n$~premières lignes, ni entre les +$n$~dernières.\footnote{Remarquer que l'on parle des lignes du listing d'origine, une + telle ligne pouvant être composée sur plusieurs lignes dans le \textsc{pdf} final si la + clé |break-lines-in-Piton| est utilisée.} + +Par exemple, |splittable = 4| pourrait être un réglage raisonnable. + +Employée sans argument, la clé |splittable| est équivalente à |splittable = 1|, et les +listings sont alors sécables n'importe où (ce n'est pas recommandable). + +La valeur initiale de la clé |splittable| vaut 100, ce qui fait que les listings ne sont +pas sécables. +\end{itemize} + +\medskip +\emph{Remarque}\par\nobreak + +Même avec une couleur de fond (fixée avec |background-color|), les sauts de page sont +possibles, à partir du moment où |splittable-on-empty-lines| ou |splittable| est +utilisée.\footnote{Avec la clé |splittable|, un environnement |{Piton}| est sécable même + dans un environnement de \pkg{tcolorbox} (à partir du moment où la clé |breakable| de + \pkg{tcolorbox} est utilisée). On précise cela parce que, en revanche, un environnement + de \pkg{tcolorbox} inclus dans un autre environnement de \pkg{tcolorbox} n'est pas + sécable, même quand les deux utilisent la clé |breakable|.} + +\bigskip +\subsection{Découpe d'un listing en sous-listings} + +\index{split-on-empty-lines} +\label{split-on-empty-lines} +\index{split-separation} +\index{env-used-by-split} + +L'exension \pkg{piton} fournit la clé \Definition{split-on-empty-lines}, qui ne doit pas +être confondue avec la clé |splittable-on-empty-lines| définie précédemment. + +\smallskip +Pour comprendre le fonctionnement de la clé |split-on-empty-lines|, il faut imaginer que +l'on a à composer un fichier informatique qui contient une succession de définitions de +fonctions informatiques. Dans la plupart des langages informatiques, ces définitions +successives sont séparées par des lignes vides (ou plutôt des lignes blanches, +c'est-à-dire des lignes qui ne contiennent que des espaces). + +\smallskip +La clé |split-on-empty-lines| coupe le listing au niveau des lignes vides. Les lignes +vides successives sont supprimées et remplacées par le contenu du paramètre correspondant +à la clé \Definition{split-separation}. +\begin{itemize} +\item Ce paramètre doit contenir du matériel à insérer en \emph{mode vertical} de TeX. On +peut, par exemple, mettre la primmitive TeX |\hrule|. + +\item La valeur initiale de ce paramètre est |\vspace{\baselineskip}\vspace{-1.25pt}|, ce qui, +au final, correspond à une ligne vide dans le \textsc{pdf} produit (cet espace vertical +est supprimé s'il tombe au niveau d'un saut de page). +\end{itemize} + + +\colorbox{yellow!50}{\textbf{Nouveau 4.0}}\par\nobreak + +Chaque morceau du code informatique est formaté (de manière autonome) dans un +environnement dont le nom est donné par la clé \Definition{env-used-by-split}. La valeur +initiale de ce paramètre est, sans surprise, |Piton| et les différents morceaux sont donc +composés dans des environnements |{Piton}|. Si on décide de donner une autre valeur à la +clé |env-used-by-split|, on doit bien sûr donner le nom d'un environnement créé par +|\NewPitonEnvironment| (cf.~partie~\ref{NewPitonEnvironment}, +p.~\pageref{NewPitonEnvironment}). + +\smallskip +Chaque morceau du listing de départ étant composé dans son environnement, il dispose de sa +propre numérotation des lignes (si la clé |line-numbers| est active) et de son propre fond +coloré (si la clé |background-color| est utilisée), séparé des fonds des autres morceaux. +Si elle est active, la clé |splittable| s'applique de manière autonome dans chaque +morceau. Bien sûr, des sauts de page peuvent intervenir entre les différents morceaux du +code, quelle que soit la valeur de la clé |splittable|. + +\bigskip +\begin{Verbatim} +\begin{Piton}[~emphase#split-on-empty-lines@,background-color=gray!15,line-numbers] +def carré(x): + """Calcule le carré de x""" + return x*x + +def cube(x): + """Calcule le cube de x""" + return x*x*x +\end{Piton} +\end{Verbatim} + + +\begin{Piton}[split-on-empty-lines,background-color=gray!15,line-numbers] +def carré(x): + """Calcule le carré de x""" + return x*x + +def cube(x): + """Calcule le cube de x""" + return x*x*x +\end{Piton} + + +\bigskip +\textbf{Attention} : Comme chaque morceau est traité de manière indépendante, les +commandes spécifiées par |detected-commands| et les commandes et environnements de Beamer +automatiquement détectés par \pkg{piton} ne doivent pas enjamber les lignes vides du +listing de départ. + + +\bigskip \subsection{Mise en évidence d'identificateurs} \indexcommand{SetPitonIdentifier} \label{SetPitonIdentifier} -La commande \DefinitionCommand{SetPitonIdentifier} permet de changer le formatage de certains identificateurs. +La commande \DefinitionCommand{SetPitonIdentifier} permet de changer le formatage de +certains identificateurs. \smallskip Cette commande prend trois arguments : un optionnel et deux obligatoires. \begin{itemize} -\item L'argument optionnel (entre crochets) indique le langage (informatique) concerné ; si cet -argument est absent, les réglages faits par |\SetPitonIdentifier| s'appliqueront à tous les langages.\footnote{On rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas - sensibles à la casse.} +\item L'argument optionnel (entre crochets) indique le langage (informatique) concerné ; +si cet argument est absent, les réglages faits par |\SetPitonIdentifier| s'appliqueront à +tous les langages.\footnote{On rappelle que, dans \pkg{piton}, les noms des langages + informatiques ne sont pas sensibles à la casse.} -\item Le premier argument obligatoire est une liste de noms d'identificateurs séparés par des virgules. +\item Le premier argument obligatoire est une liste de noms d'identificateurs séparés par +des virgules. -\item Le deuxième argument obligatoire est une liste d'instructions LaTeX de formatage du même type que pour les -styles précédemment définis (cf. \ref{styles}, p.~\pageref{styles}). +\item Le deuxième argument obligatoire est une liste d'instructions LaTeX de formatage du +même type que pour les styles précédemment définis (cf. \ref{styles}, +p.~\pageref{styles}). \end{itemize} -\emph{Attention} : Seuls les identificateurs peuvent voir leur formatage affecté. Les mots-clés et les noms de -fonctions prédéfinies ne seront pas affectés, même s'ils figurent dans le premier argument de -|\SetPitonIdentifier|. +\emph{Attention} : Seuls les identificateurs peuvent voir leur formatage affecté. Les +mots-clés et les noms de fonctions prédéfinies ne seront pas affectés, même s'ils figurent +dans le premier argument de |\SetPitonIdentifier|. \begin{Verbatim} ~emphase#\SetPitonIdentifier{l1,l2}{\color{red}}@ @@ -1230,8 +1470,9 @@ def tri(l): \endgroup \bigskip -Avec la commande |\SetPitonIdentifiers|, on peut ajouter à un langage informatique de nouvelles fonctions -prédéfinies (ou de nouveaux mots-clés, etc.) qui seront détectées par \pkg{piton}. +Avec la commande |\SetPitonIdentifiers|, on peut ajouter à un langage informatique de +nouvelles fonctions prédéfinies (ou de nouveaux mots-clés, etc.) qui seront détectées par +\pkg{piton}. \begin{Verbatim} @@ -1272,16 +1513,18 @@ floor(5.4) L'extension \pkg{piton} propose plusieurs mécanismes d'échappement vers LaTeX : \begin{itemize} \item Il est possible d'avoir des commentaires entièrement composés en LaTeX. -\item Il est possible d'avoir, dans les commentaires Python, les éléments entre \texttt{\$} composés en mode -mathématique de LaTeX. -\item Il est possible de demander à \pkg{piton} de détecter directement certaines commandes LaTeX avec leur argument. +\item Il est possible d'avoir, dans les commentaires Python, les éléments entre +\texttt{\$} composés en mode mathématique de LaTeX. +\item Il est possible de demander à \pkg{piton} de détecter directement certaines +commandes LaTeX avec leur argument. \item Il est possible d'insérer du code LaTeX à n'importe quel endroit d'un listing Python. \end{itemize} Ces mécanismes vont être détaillés dans les sous-parties suivantes. \smallskip -À remarquer également que, dans le cas où \pkg{piton} est utilisée dans la classe \cls{beamer}, \pkg{piton} détecte -la plupart des commandes et environnements de Beamer : voir la sous-section \ref{beamer}, p.~\pageref{beamer}. +À remarquer également que, dans le cas où \pkg{piton} est utilisée dans la classe +\cls{beamer}, \pkg{piton} détecte la plupart des commandes et environnements de Beamer : +voir la sous-section \ref{beamer}, p.~\pageref{beamer}. \subsubsection{Les «commentaires LaTeX»} @@ -1289,14 +1532,16 @@ la plupart des commandes et environnements de Beamer : voir la sous-section \ref \index{comment-latex} \index{commentaires LaTeX} -Dans ce document, on appelle «commentaire LaTeX» des commentaires qui débutent par |#>|. Tout ce qui suit ces deux -caractères, et jusqu'à la fin de la ligne, sera composé comme du code LaTeX standard. +Dans ce document, on appelle «commentaire LaTeX» des commentaires qui débutent par |#>|. +Tout ce qui suit ces deux caractères, et jusqu'à la fin de la ligne, sera composé comme du +code LaTeX standard. Il y a deux outils pour personnaliser ces commentaires. \begin{itemize} -\item Il est possible de changer le marquage syntaxique utilisé (qui vaut initialement~|#>|). Pour ce faire, il -existe une clé \Definition{comment-latex}, \emph{disponible uniquement dans le préambule du document}, qui permet de choisir les +\item Il est possible de changer le marquage syntaxique utilisé (qui vaut +initialement~|#>|). Pour ce faire, il existe une clé \Definition{comment-latex}, +\emph{disponible uniquement dans le préambule du document}, qui permet de choisir les caractères qui (précédés par~|#|) serviront de marqueur syntaxique. Par exemple, avec le réglage suivant (fait dans le préambule du document) : @@ -1305,18 +1550,18 @@ Par exemple, avec le réglage suivant (fait dans le préambule du document) : les commentaires LaTeX commenceront par~|#LaTeX|. -Si on donne la valeur nulle à la clé |comment-latex|, tous les commentaires Python (débutant par~|#|) seront en -fait des «commentaires LaTeX». +Si on donne la valeur nulle à la clé |comment-latex|, tous les commentaires Python +(débutant par~|#|) seront en fait des «commentaires LaTeX». \smallskip -\item Il est possible de changer le formatage du commentaire LaTeX lui-même en changeant le style \pkg{piton} -|Comment.LaTeX|. +\item Il est possible de changer le formatage du commentaire LaTeX lui-même en changeant +le style \pkg{piton} |Comment.LaTeX|. -Par exemple, avec |\SetPitonStyle{Comment.LaTeX = \normalfont\color{blue}}|, les commentaires LaTeX seront composés -en bleu. +Par exemple, avec |\SetPitonStyle{Comment.LaTeX = \normalfont\color{blue}}|, les +commentaires LaTeX seront composés en bleu. -Si on souhaite qu'un croisillon (|#|) soit affiché en début de commentaire dans le \textsc{pdf}, on peut régler -|Comment.LaTeX| de la manière suivante : +Si on souhaite qu'un croisillon (|#|) soit affiché en début de commentaire dans le +\textsc{pdf}, on peut régler |Comment.LaTeX| de la manière suivante : \begin{Verbatim} \SetPitonStyle{Comment.LaTeX = \color{gray}\~#\normalfont\space } @@ -1328,11 +1573,12 @@ p.~\pageref{example-comments}. \bigskip -Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers|, il est possible de faire référence -à ce numéro de ligne avec la commande |\label| placée dans un commentaire LaTeX.\footnote{Cette fonctionnalité est - implémentée en redéfinissant, dans les environnements |{Piton}|, la commande |\label|. Il peut donc y avoir des - incompatibilités avec les extensions qui redéfinissent (globalement) cette commande |\label| (comme - \pkg{varioref}, \pkg{refcheck}, \pkg{showlabels}, etc.)} +Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers|, il est +possible de faire référence à ce numéro de ligne avec la commande |\label| placée dans un +commentaire LaTeX.\footnote{Cette fonctionnalité est implémentée en redéfinissant, dans + les environnements |{Piton}|, la commande |\label|. Il peut donc y avoir des + incompatibilités avec les extensions qui redéfinissent (globalement) cette commande + |\label| (comme \pkg{varioref}, \pkg{refcheck}, \pkg{showlabels}, etc.)} @@ -1341,15 +1587,17 @@ Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers \index{math-comments} -Il est possible de demander que, dans les commentaires Python normaux, c'est-à-dire débutant par~|#| (et non par -|#>|), les éléments placés entre symboles \texttt{\$} soient composés en mode mathématique de LaTeX (le reste du -commentaire restant composé en verbatim). +Il est possible de demander que, dans les commentaires Python normaux, c'est-à-dire +débutant par~|#| (et non par |#>|), les éléments placés entre symboles \texttt{\$} soient +composés en mode mathématique de LaTeX (le reste du commentaire restant composé en +verbatim). -La clé \Definition{math-comments} (\emph{qui ne peut être activée que dans le préambule du document}) active ce -comportement. +La clé \Definition{math-comments} (\emph{qui ne peut être activée que dans le préambule du + document}) active ce comportement. \bigskip -Dans l'exemple suivant, on suppose que |\PitonOptions{math-comments}| a été utilisé dans le préambule du document. +Dans l'exemple suivant, on suppose que |\PitonOptions{math-comments}| a été utilisé dans +le préambule du document. \begin{Verbatim} \begin{Piton} @@ -1369,23 +1617,26 @@ def carré(x): \index{detected-commands (key)} \label{detected-commands} -La clé \Definition{detected-commands} de |\PitonOptions| permet de spécifier une liste de noms de commandes LaTeX -qui seront directement détectées par \pkg{piton}. +La clé \Definition{detected-commands} de |\PitonOptions| permet de spécifier une liste de +noms de commandes LaTeX qui seront directement détectées par \pkg{piton}. \begin{itemize} -\item Cette clé |detected-commands| ne peut être utilisée que dans le préambule du document. +\item Cette clé |detected-commands| ne peut être utilisée que dans le préambule du +document. -\item Les noms de commandes LaTeX doivent apparaître sans la contre-oblique -(ex. : |detected-commands = { emph , textbf }|). +\item Les noms de commandes LaTeX doivent apparaître sans la contre-oblique (ex. : +|detected-commands = { emph , textbf }|). -\item Ces commandes doivent être des commandes LaTeX à un seul argument obligatoire entre accolades (et ces -accolades doivent apparaître explicitement dans le listing). +\item Ces commandes doivent être des commandes LaTeX à un seul argument obligatoire entre +accolades (et ces accolades doivent apparaître explicitement dans le listing). \end{itemize} \medskip -Dans l'exemple suivant, qui est une programmation récursive de la factorielle, on décide de surligner en jaune -l'appel récursif. La commande |\highLight| de \pkg{lua-ul} (cette extension requiert elle-même l'extension -\pkg{luacolor}) permet de le faire avec la syntaxe |\hightLight{...}|. +Dans l'exemple suivant, qui est une programmation récursive de la factorielle, on décide +de surligner en jaune l'appel récursif. La commande |\highLight| de +\pkg{lua-ul}\footnote{L'extension \pkg{lua-ul} requiert elle-même l'extension + \pkg{luacolor}.} permet de le faire facilement avec la +syntaxe |\highLight{...}|. \smallskip On suppose que l'on a mis dans le préambule du document LaTeX l'instruction suivante : @@ -1419,17 +1670,20 @@ def fact(n): \index{end-escape} \label{escape} -Il est aussi possible de surcharger les listings Python pour y insérer du code LaTeX à peu près n'importe où (mais -entre deux lexèmes, bien entendu). Cette fonctionnalité n'est pas activée par défaut par \pkg{piton}. Pour -l'utiliser, il faut spécifier les deux délimiteurs marquant l'échappement (le premier le commençant et le deuxième -le terminant) en utilisant les clés \Definition{begin-escape} et \Definition{end-escape} (\emph{qui ne sont accessibles -que dans le préambule du document}). Les deux délimiteurs peuvent être identiques. +Il est aussi possible de surcharger les listings informatiques pour y insérer du code +LaTeX à peu près n'importe où (mais entre deux lexèmes, bien entendu). Cette +fonctionnalité n'est pas activée par défaut par \pkg{piton}. Pour l'utiliser, il faut +spécifier les deux délimiteurs marquant l'échappement (le premier le commençant et le +deuxième le terminant) en utilisant les clés \Definition{begin-escape} et +\Definition{end-escape} (\emph{qui ne sont accessibles que dans le préambule du + document}). Les deux délimiteurs peuvent être identiques. \medskip -On reprend l'exemple précédent de la factorielle et on souhaite surligner en rose l'instruction qui contient l'appel -récursif. La commande |\highLight| de \pkg{lua-ul} permet de le faire avec la syntaxe |\highLight[LightPink]{...}|. -Du fait de la présence de l'argument optionnel entre crochets, on ne peut pas utiliser la clé |detected-commands| -comme précédemment mais on peut utiliser le mécanisme «escape». +On reprend l'exemple précédent de la factorielle et on souhaite surligner en rose +l'instruction qui contient l'appel récursif. La commande |\highLight| de \pkg{lua-ul} +permet de le faire avec la syntaxe |\highLight[LightPink]{...}|. Du fait de la présence de +l'argument optionnel entre crochets, on ne peut pas utiliser la clé |detected-commands| +comme précédemment mais on peut utiliser le mécanisme «escape» qui est plus général. \smallskip On suppose que le préambule du document contient l'instruction : @@ -1460,10 +1714,10 @@ def fact(n): \bigskip -\emph{Attention} : L'échappement vers LaTeX permis par les clés |begin-escape| et |end-escape| n'est pas actif dans -les chaînes de caractères ni dans les commentaires (pour avoir un commentaire entièrement en échappement vers -LaTeX, c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX», il suffit de le faire débuter par -|#>|). +\emph{Attention} : Le mécanisme «escape» n'est pas actif dans les chaînes de caractères ni +dans les commentaires (pour avoir un commentaire entièrement en échappement vers LaTeX, +c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX», il suffit de le faire +débuter par |#>|). \subsubsection{Le mécanisme «escape-math»} @@ -1472,27 +1726,30 @@ LaTeX, c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX», \index{begin-escape-math} \index{end-escape-math} -Le mécanisme «|escape-math|» est très similaire au mécanisme «|escape|» puisque la seule différence est que les -éléments en échappement LaTeX y sont composés en mode mathématique. +Le mécanisme «escape-math» est très similaire au mécanisme «escape» puisque la seule +différence est que les éléments en échappement LaTeX y sont composés en mode mathématique. -On active ce mécanisme avec les clés \Definition{begin-escape-math} et \Definition{end-escape-math} (\emph{qui ne sont -accessibles que dans le préambule du document}). +On active ce mécanisme avec les clés \Definition{begin-escape-math} et +\Definition{end-escape-math} (\emph{qui ne sont accessibles que dans le préambule du + document}). \medskip -Malgré la proximité technique, les usages du mécanisme «|escape-math|» sont en fait assez différents de ceux du -mécanisme «|escape|». En effet, comme le contenu en échappement est composé en mode mathématique, il est en -particulier composé dans un groupe TeX et ne pourra donc pas servir à changer le formatage d'autres unités lexicales. +Malgré la proximité technique, les usages du mécanisme «escape-math» sont en fait assez +différents de ceux du mécanisme «escape». En effet, comme le contenu en échappement est +composé en mode mathématique, il est, en particulier, composé dans un groupe TeX et ne +pourra donc pas servir à changer le formatage d'autres unités lexicales. \medskip -Dans les langages où le caractère |$| ne joue pas un rôle syntaxique important, on peut assez naturellement -vouloir activer le mécanisme «|escape-math|» avec le caractère |$|: +Dans les langages où le caractère |$| ne joue pas un rôle syntaxique important, on peut +assez naturellement vouloir activer le mécanisme «escape-math» avec le caractère |$|: \begin{Verbatim} \PitonOptions{~emphase#begin-escape-math=$,end-escape-math=$@} \end{Verbatim} -Remarquer que le caractère |$| ne doit \emph{pas} être protégé par une contre-oblique. +Remarquer que le caractère |$| ne doit \emph{pas} être protégé par une contre-oblique. % $ \bigskip -Néanmoins, il est sans doute plus prudent d'utiliser |\(| et |\)|. +Néanmoins, il est sans doute plus prudent d'utiliser |\(| et |\)|, qui sont des +délimiteurs du mode mathématique proposés par LaTeX. \begin{Verbatim} \PitonOptions{~emphase#begin-escape-math=\(,end-escape-math=\)@} \end{Verbatim} @@ -1538,25 +1795,29 @@ def arctan(x,n=10): \index{Beamer@\cls{Beamer} (classe)} -\emph{Première remarque}\par\nobreak -Remarquons que, comme l'environnement |{Piton}| prend son argument selon un mode verbatim, il convient, ce qui -n'est pas surprenant, de l'utiliser dans des environnements |{frame}| de Beamer protégés par la clé |fragile|, -c'est-à-dire débutant par |\begin{frame}[fragile]|.\footnote{On rappelle que pour un environnement |{frame}| de Beamer qui - utilise la clé |fragile|, l'instruction |\end{frame}| doit être seule sur une ligne (à l'exception d'éventuels - espaces en début de ligne).} +\emph{Première remarque}\par\nobreak + +Remarquons que, comme l'environnement |{Piton}| prend son argument selon un mode verbatim, +il convient, ce qui n'est pas surprenant, de l'utiliser dans des environnements |{frame}| +de Beamer protégés par la clé |fragile|, c'est-à-dire débutant par +|\begin{frame}[fragile]|.\footnote{On rappelle que pour un environnement |{frame}| de + Beamer qui utilise la clé |fragile|, l'instruction |\end{frame}| doit être seule sur une + ligne (à l'exception d'éventuels espaces en début de ligne).} \medskip -Quand l'extension \pkg{piton} est utilisée dans la classe \cls{beamer}\footnote{L'extension \pkg{piton} détecte la - classe \cls{beamer} et l'extension \pkg{beamerarticle} si elle est chargée précédemment, mais il est aussi - possible, si le besoin s'en faisait sentir, d'activer ce comportement avec la clé |beamer| au chargement de - \pkg{piton} : |\usepackage[beamer]{piton}|}, le comportement de \pkg{piton} est légèrement modifié, comme décrit -maintenant. +Quand l'extension \pkg{piton} est utilisée dans la classe +\cls{beamer}\footnote{L'extension \pkg{piton} détecte la classe \cls{beamer} et + l'extension \pkg{beamerarticle} si elle est chargée précédemment, mais il est aussi + possible, si le besoin s'en faisait sentir, d'activer ce comportement avec la clé + |beamer| au chargement de \pkg{piton} : |\usepackage[beamer]{piton}|}, le comportement +de \pkg{piton} est légèrement modifié, comme décrit maintenant. \subsubsection{\{Piton\} et \textbackslash PitonInputFile sont ``overlay-aware''} -Quand \pkg{piton} est utilisé avec Beamer, l'environnement |{Piton}| et la commande |\PitonInputFile| acceptent -l'argument optionnel |<...>| de Beamer pour indiquer les «\emph{overlays}» concernés. +Quand \pkg{piton} est utilisé avec Beamer, l'environnement |{Piton}| et la commande +|\PitonInputFile| acceptent l'argument optionnel |<...>| de Beamer pour indiquer les +«\emph{overlays}» concernés. On peut par exemple écrire : @@ -1575,27 +1836,37 @@ ou aussi \subsubsection{Commandes de Beamer reconnues dans \{Piton\} et \textbackslash PitonInputFile} -Quand \pkg{piton} est utilisé dans la classe \cls{beamer}, les commandes suivantes de \cls{beamer} (classées selon -leur nombre d'arguments obligatoires) sont directement reconnues dans les environnements |{Piton}| (ainsi que dans -les listings composés par la commande |\PitonInputFile|, même si c'est sans doute moins utile). +\index{detected-beamer-commands} + +Quand \pkg{piton} est utilisé dans la classe \cls{beamer}, les commandes suivantes de +\cls{beamer} (classées selon leur nombre d'arguments obligatoires) sont directement +reconnues dans les environnements |{Piton}| (ainsi que dans les listings composés par la +commande |\PitonInputFile|, même si c'est sans doute moins utile). % \begin{itemize} -\item aucun argument obligatoire : |\pause|\footnote{On remarquera que, bien sûr, on peut aussi utiliser |\pause| - dans un «commentaire LaTeX», c'est-à-dire en écrivant |#> \pause|. Ainsi, si le code Python est copié, il est - interprétable par Python.} ; -\item un argument obligatoire : |\action|, |\alert|, |\invisible|, |\only|, |\uncover| et |\visible| ; -\item deux arguments obligatoires : |\alt| ; +\item aucun argument obligatoire : |\pause|\footnote{On remarquera que, bien sûr, on peut +aussi utiliser |\pause| dans un «commentaire LaTeX», c'est-à-dire en écrivant +|#> \pause|. Ainsi, si le code Python est copié, il est interprétable par Python.} ; +\item un argument obligatoire : |\action|, |\alert|, |\invisible|, |\only|, |\uncover| et +|\visible| ; \newline +La clé \Definition{detected-beamer-commands} permet de rajouter à cette liste de nouveaux +noms de commandes (les noms de commandes ne doivent \emph{pas} être précédés de la +contre-oblique) ; +\item deux arguments obligatoires : |\alt| ; \item trois arguments obligatoires : |\temporal|. \end{itemize} \medskip -Les accolades dans les arguments obligatoires de ces commandes doivent être équilibrées (cependant, les accolades -présentes dans des chaînes courtes\footnote{Les chaînes courtes de Python sont les chaînes (string) délimitées par - les caractères \texttt{'} ou \texttt{"} non triplés. En Python, les chaînes de caractères courtes ne peuvent pas - s'étendre sur plusieurs lignes de code.} de Python ne sont pas prises en compte). +Ces commandes doivent être utilisées précédées et suivies d'un espace. Les accolades dans +les arguments obligatoires de ces commandes doivent être équilibrées (cependant, les +accolades présentes dans des chaînes courtes\footnote{Les chaînes courtes de Python sont + les chaînes (string) délimitées par les caractères \texttt{'} ou \texttt{"} non triplés. + En Python, les chaînes de caractères courtes ne peuvent pas s'étendre sur plusieurs + lignes de code.} de Python ne sont pas prises en compte). \medskip -Concernant les fonctions |\alt| et |\temporal|, aucun retour à la ligne ne doit se trouver dans les arguments de ces fonctions. +Concernant les fonctions |\alt| et |\temporal|, aucun retour à la ligne ne doit se trouver +dans les arguments de ces fonctions. \medskip @@ -1618,22 +1889,29 @@ def string_of_list(l): \end{document} \end{Verbatim} -Dans l'exemple précédent, les accolades des deux chaînes de caractères Python |"{"| et |"}"| sont correctement -interprétées (sans aucun caractère d'échappement). +Dans l'exemple précédent, les accolades des deux chaînes de caractères Python |"{"| et + |"}"| sont correctement interprétées (sans aucun caractère d'échappement). \bigskip \subsubsection{Environnements de Beamer reconnus dans \{Piton\} et \textbackslash PitonInputFile} -Quand \pkg{piton} est utilisé dans la classe \pkg{beamer}, les environnements suivants de Beamer sont directement -reconnus dans les environnements |{Piton}| (ainsi que dans les listings composés par la commande |\PitonInputFile| -même si c'est sans doute moins utile) : |{actionenv}|, |{alertenv}|, |{invisibleenv}|, |{onlyenv}|, |{uncoverenv}| -et |{visibleenv}|. +Quand \pkg{piton} est utilisé dans la classe \pkg{beamer}, les environnements suivants de +Beamer sont directement reconnus dans les environnements |{Piton}| (ainsi que dans les +listings composés par la commande |\PitonInputFile| même si c'est sans doute moins utile) +: |{actionenv}|, |{alertenv}|, |{invisibleenv}|, |{onlyenv}|, |{uncoverenv}| et +|{visibleenv}|. +\smallskip +\index{detected-beamer-environments} +On peut ajouter de nouveaux environnements à cette liste d'environnements reconnus avec la +clé \Definition{detected-beamer-environments}. \medskip -Il y a néanmoins une restriction : ces environnements doivent englober des \emph{lignes entières de code Python}. +Il y a néanmoins une restriction : ces environnements doivent englober des \emph{lignes + entières de code Python}. Les instructions |\begin{...}| et |\end{...}| doivent être +seules sur leurs lignes. \medskip @@ -1657,25 +1935,29 @@ def carré(x): -\vspace{1cm} -\textbf{Remarque à propos de la commande \textbackslash alert et de l'environnement \{alertenv\} de Beamer}\par\nobreak +\vspace{1cm} +\textbf{Remarque à propos de la commande \textbackslash alert et de + l'environnement \{alertenv\} de Beamer}\par\nobreak \smallskip -Beamer propose un moyen aisé de changer la couleur utilisée par l'environnement |{alertenv}| (et par la commande -|\alert| qui s'appuie dessus). Par exemple, on peut écrire: +Beamer propose un moyen aisé de changer la couleur utilisée par l'environnement +|{alertenv}| (et par suite la commande |\alert| qui s'appuie dessus). Par exemple, on peut +écrire: \begin{Verbatim} \setbeamercolor{~emphase#alerted text@}{fg=blue} \end{Verbatim} -Néanmoins, dans le cas d'une utilisation à l'intérieur d'un environnement |{Piton}| un tel réglage n'est sans doute -pas pertinent, puisque, justement, \pkg{piton} va (le plus souvent) changer la couleur des élements selon leur -valeur lexicale. On préfèrera sans doute un environnement |{alertenv}| qui change la couleur de fond des -éléments à mettre en évidence. +Néanmoins, dans le cas d'une utilisation à l'intérieur d'un environnement |{Piton}| un tel +réglage n'est sans doute pas pertinent, puisque, justement, \pkg{piton} va (le plus +souvent) changer la couleur des élements selon leur valeur lexicale. On préfèrera sans +doute un environnement |{alertenv}| qui change la couleur de fond des éléments à mettre en +évidence. \smallskip -Voici un code qui effectuera ce travail en mettant un fond jaune. Ce code utilise la commande |\@highLight| de -l'extension \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg{luacolor}). +Voici un code qui effectuera ce travail en mettant un fond jaune. Ce code utilise la +commande |\@highLight| de l'extension \pkg{lua-ul} (cette extension nécessite elle-même +l'extension \pkg{luacolor}). \begingroup \fvset{commandchars=\~\#\+,formatcom=\color{gray}} @@ -1688,12 +1970,9 @@ l'extension \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg \end{Verbatim} \endgroup -Ce code redéfinit localement l'environnement |{alertenv}| à l'intérieur de l'environnement |{Piton}| (on rappelle -que la commande |\alert| s'appuie sur cet environnement |{alertenv}|). - - - -\bigskip +Ce code redéfinit localement l'environnement |{alertenv}| à l'intérieur de l'environnement +|{Piton}| (on rappelle que la commande |\alert| s'appuie sur cet environnement +|{alertenv}|). \bigskip @@ -1707,33 +1986,122 @@ que la commande |\alert| s'appuie sur cet environnement |{alertenv}|). \label{footnote} -Si vous voulez mettre des notes de pied de page dans un environnement de \pkg{piton} (ou bien dans un listing -produit par |\PitonInputFile|, bien que cela paraisse moins pertinent dans ce cas-là) vous pouvez utiliser une -paire |\footnotemark|--|\footnotetext|. +\smallskip +Si vous voulez mettre des notes de pied de page dans un environnement de \pkg{piton} (ou +bien dans un listing produit par |\PitonInputFile|, bien que cela paraisse moins pertinent +dans ce cas-là) vous pouvez utiliser une paire |\footnotemark|--|\footnotetext|. \smallskip -Néanmoins, il est également possible d'extraire les notes de pieds de page avec l'extension \pkg{footnote} ou bien -l'extension \pkg{footnotehyper}. +Néanmoins, il est également possible d'extraire les notes de pieds de page avec +l'extension \pkg{footnote} ou bien l'extension \pkg{footnotehyper}. \smallskip -Si \pkg{piton} est chargée avec l'option \Definition{footnote} (avec |\usepackage[footnote]{piton}|) l'extension -\pkg{footnote} est chargée (si elle ne l'est pas déjà) et elle est utilisée pour extraire les notes de pied de -page. +Si \pkg{piton} est chargée avec l'option \Definition{footnote} (avec +|\usepackage[footnote]{piton}|) l'extension \pkg{footnote} est chargée (si elle ne l'est +pas déjà) et elle est utilisée pour extraire les notes de pied de page. \smallskip -Si \pkg{piton} est chargée avec l'option \Definition{footnotehyper}, l'extension \pkg{footnotehyper} est chargée -(si elle ne l'est pas déjà) et elle est utilisée pour extraire les notes de pied de page. +Si \pkg{piton} est chargée avec l'option \Definition{footnotehyper}, l'extension +\pkg{footnotehyper} est chargée (si elle ne l'est pas déjà) et elle est utilisée pour +extraire les notes de pied de page. \smallskip Attention : Les extensions \pkg{footnote} et \pkg{footnotehyper} sont incompatibles. -L'extension \pkg{footnotehyper} est le successeur de l'extension \pkg{footnote} -et devrait être utilisée préférentiellement. L'extension \pkg{footnote} a quelques défauts ; -en particulier, elle doit être chargée après l'extension \pkg{xcolor} et elle n'est pas parfaitement -compatible avec \pkg{hyperref}. +L'extension \pkg{footnotehyper} est le successeur de l'extension \pkg{footnote} et devrait +être utilisée préférentiellement. L'extension \pkg{footnote} a quelques défauts ; en +particulier, elle doit être chargée après l'extension \pkg{xcolor} et elle n'est pas +parfaitement compatible avec \pkg{hyperref}. + \medskip -Dans ce document, l'extension \pkg{piton} a été chargée avec l'option |footnotehyper| et c'est pourquoi des notes -peuvent être mises dans les environnements |{Piton}| : voir un exemple sur la première page de ce document. +\textbf{Remarque importante} : Si vous utilisez Beamer, il faut savoir que Beamer a son +propre système d'extraction des notes de pied de page et vous n'avez donc pas à charger +\pkg{piton} avec la clé |footnote| ou bien la clé |footnotehyper|. + +\bigskip +Par défaut, une commande |\footnote| ne peut apparaître que dans un «commentaire LaTeX». +Mais on peut aussi ajouter la commande |\footnote| à la liste des +\emph{detected-commands} (cf.~partie~\ref{detected-commands}, +p.~\pageref{detected-commands}). + +\medskip +Dans ce document, l'extension \pkg{piton} a été chargée avec l'option |footnotehyper| et +on rajouté la commande |\footnote| aux \emph{detected-commands} avec le code suivant +dans la préambule du document LaTeX : + +\qquad \verb|\PitonOptions{detected-commands = footnote}| + +\begingroup +\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} +\begin{Verbatim} +\PitonOptions{background-color=gray!15} +\begin{Piton} +def arctan(x,n=10): + if x < 0: + return -arctan(-x)~emphase&\footnote{Un premier appel récursif.}@ + elif x > 1: + return pi/2 - arctan(1/x)~emphase&\footnote{Un deuxième appel récursif.}@ + else: + return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +\end{Piton} +\end{Verbatim} +\endgroup + +\begingroup +\PitonOptions{background-color=gray!15} +\begin{Piton} +def arctan(x,n=10): + if x < 0: + return -arctan(-x)\footnote{Un premier appel récursif.} + elif x > 1: + return pi/2 - arctan(1/x)\footnote{Un deuxième appel récursif.} + else: + return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +\end{Piton} +\endgroup + + +\vspace{1cm} + +Si on utilise l'environnement |{Piton}| dans un environnement |{minipage}| de LaTeX, les +notes sont, bien entendu, composées au bas de l'environnement |{minipage}|. Rappelons +qu'une telle |{minipage}| ne peut \emph{pas} être coupée par un saut de page. + + +\begingroup +\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} +\begin{Verbatim} +\PitonOptions{background-color=gray!15} +\emphase\begin{minipage}{\linewidth} +\begin{Piton} +def arctan(x,n=10): + if x < 0: + return -arctan(-x)~emphase&\footnote{Un premier appel récursif.}@ + elif x > 1: + return pi/2 - arctan(1/x)~emphase&\footnote{Un deuxième appel récursif.}@ + else: + return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +\end{Piton} +\end{minipage} +\end{Verbatim} +\endgroup + +\begingroup +\PitonOptions{background-color=gray!15} +\begin{minipage}{\linewidth} +\begin{Piton} +def arctan(x,n=10): + if x < 0: + return -arctan(-x)\footnote{Un premier appel récursif.} + elif x > 1: + return pi/2 - arctan(1/x)\footnote{Un deuxième appel récursif.} + else: + return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +\end{Piton} +\end{minipage} +\endgroup + + \subsection{Tabulations} @@ -1741,15 +2109,21 @@ peuvent être mises dans les environnements |{Piton}| : voir un exemple sur la p \index{tab-size} \smallskip -Même s'il est recommandé d'indenter les listings Python avec des espaces (cf. PEP~8), \pkg{piton} accepte les -caractères de tabulations (U+0009) en début de ligne. Chaque caractère U+0009 est remplacé par $n$ espaces. La -valeur initiale de~$n$ est~4 mais on peut la changer avec la clé \Definition{tab-size} de |\PitonOptions|. +Même s'il est sans doute recommandable d'indenter les listings informatiques avec des +espaces et non des tabulations\footnote{Voir, par exemple, pour le langage Piton, la note PEP~8}, +\pkg{piton} accepte les caractères de tabulations (U+0009) en début de ligne. Chaque +caractère U+0009 est remplacé par $n$ espaces. La valeur initiale de~$n$ est~4 mais on +peut la changer avec la clé \Definition{tab-size} de |\PitonOptions|. + +\smallskip +Il existe aussi une clé \Definition{tabs-auto-gobble} qui détermine le nombre minimal de +caractères U+0009 débutant chaque ligne (non vide) de l'environnement |{Piton}| et +applique |gobble| avec cette valeur (avant le remplacement des caractères U+0009 par des +espaces, bien entendu). Cette clé est donc similaire à la clé |auto-gobble| mais agit sur +des caractères U+0009 au lieu de caractères U+0020 (espaces). \smallskip -Il existe aussi une clé \Definition{tabs-auto-gobble} qui détermine le nombre minimal de caractères U+0009 débutant -chaque ligne (non vide) de l'environnement |{Piton}| et applique |gobble| avec cette valeur (avant le remplacement -des caractères U+0009 par des espaces, bien entendu). Cette clé est donc similaire à la clé |auto-gobble| mais agit -sur des caractères U+0009 au lieu de caractères U+0020 (espaces). +La clé |env-gobble| n'est pas compatible avec les tabulations. \section{API pour les développeurs} @@ -1758,34 +2132,34 @@ sur des caractères U+0009 au lieu de caractères U+0020 (espaces). \index{piton.last@\texttt{piton.get\_last\_code} (fonction Lua)} \label{API} -La variable L3 |\l_piton_language_str| contient le nom du langage courant (en minuscules). +La variable L3 \DefinitionCommand{l_piton_language_str} contient le nom du langage courant +(en minuscules). \bigskip -\colorbox{yellow!50}{\textbf{Nouveau 2.6}}\par\nobreak - -L'extension \pkg{piton} fournit une fonction Lua |piton.get_last_code| sans argument permettant de récupérer le -code contenu dans le dernier environnement de \pkg{piton}. +L'extension \pkg{piton} fournit une fonction Lua \Definition{piton.get_last_code} sans +argument permettant de récupérer le code contenu dans le dernier environnement de \pkg{piton}. \begin{itemize} -\item Les retours à la ligne (présents dans l'environnement de départ) apparaissent comme des caractères |\r| -(c'est-à-dire des caractères U+000D). +\item Les retours à la ligne (présents dans l'environnement de départ) apparaissent comme +des caractères |\r| (c'est-à-dire des caractères U+000D). -\item Le code fourni par |piton.get_last_code()| tient compte de l'éventuelle application d'une clé |gobble| (cf. -p.~\pageref{gobble}). +\item Le code fourni par |piton.get_last_code()| tient compte de l'éventuelle application +d'une clé |gobble| (cf. p.~\pageref{gobble}). -\item Les surcharges du code (qui entraînent des échappements vers LaTeX) ont été retirées du code fourni par -|piton.get_last_code()|. Cela s'applique aux commandes LaTeX déclarées par la clé |detected-commands| (cf. -partie~\ref{detected-commands}) et aux éléments insérés avec le mécanisme «|escape|» (cf. partie~\ref{escape}). +\item Les surcharges du code (qui entraînent des échappements vers LaTeX) ont été retirées +du code fourni par |piton.get_last_code()|. Cela s'applique aux commandes LaTeX déclarées +par la clé |detected-commands| (cf. partie~\ref{detected-commands}) et aux éléments +insérés avec le mécanisme «|escape|» (cf. partie~\ref{escape}). -\item |piton.get_last_code| est une fonction Lua et non une chaîne de caractères : les traitements présentés -précédemment sont exécutés lorsque la fonction est appelée. De ce fait, il peut être judicieux de stocker la valeur -renvoyée par |piton.get_last_code()| dans une variable Lua si on doit l'utiliser plusieurs fois. +\item |piton.get_last_code| est une fonction Lua et non une chaîne de caractères : les +traitements présentés précédemment sont exécutés lorsque la fonction est appelée. De ce +fait, il peut être judicieux de stocker la valeur renvoyée par |piton.get_last_code()| +dans une variable Lua si on doit l'utiliser plusieurs fois. \end{itemize} \medskip -Pour un exemple d'utilisation, voir la partie concernant l'utilisation (standard) de \pkg{pyluatex}, -partie~\ref{pyluatex}, p.~\pageref{pyluatex}. - +Pour un exemple d'utilisation, voir la partie concernant l'utilisation (standard) de +\pkg{pyluatex}, partie~\ref{pyluatex}, p.~\pageref{pyluatex}. \section{Exemples} @@ -1794,18 +2168,21 @@ partie~\ref{pyluatex}, p.~\pageref{pyluatex}. \label{example-numbering} \index{numérotation des lignes de code|emph} -On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé |line-numbers|. +On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé +|line-numbers| (utilisée sans valeur). -Par défaut, les numéros de ligne sont composés par \pkg{piton} en débordement à gauche (en utilisant en interne la commande |\llap| de LaTeX). +Par défaut, les numéros de ligne sont composés par \pkg{piton} en débordement à gauche (en +utilisant en interne la commande |\llap| de LaTeX). -Si on ne veut pas de débordement, on peut utiliser l'option |left-margin=auto| qui va insérer une marge adaptée aux -numéros qui seront insérés (elle est plus large quand les numéros dépassent 10). +Si on ne veut pas de débordement, on peut utiliser l'option |left-margin=auto| qui va +insérer une marge adaptée aux numéros qui seront insérés (elle est plus large quand les +numéros dépassent 10). \begingroup \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} \begin{Verbatim} -~emphase&\PitonOptions{background-color=gray!10, left-margin = auto, line-numbers}@ +~emphase&\PitonOptions{background-color=gray!15, left-margin = auto, line-numbers}@ \begin{Piton} def arctan(x,n=10): if x < 0: @@ -1821,7 +2198,7 @@ def arctan(x,n=10): \begingroup -\PitonOptions{background-color=gray!10,left-margin = auto, line-numbers} +\PitonOptions{background-color=gray!15,left-margin = auto, line-numbers} \begin{Piton} def arctan(x,n=10): if x < 0: @@ -1841,13 +2218,13 @@ def arctan(x,n=10): \label{example-comments} \index{commentaires LaTeX|emph} -On peut modifier le style |Comment.LaTeX| (avec |\SetPitonStyle|) pour faire afficher les commentaires -LaTeX (qui débutent par |#>|) en butée à droite. +On peut modifier le style |Comment.LaTeX| (avec |\SetPitonStyle|) pour faire afficher les +commentaires LaTeX (qui débutent par |#>|) en butée à droite. \begingroup \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} \begin{Verbatim} -\PitonOptions{background-color=gray!10} +\PitonOptions{background-color=gray!15} ~emphase&\SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}}@ \begin{Piton} def arctan(x,n=10): @@ -1862,7 +2239,7 @@ def arctan(x,n=10): \endgroup \begingroup -\PitonOptions{background-color=gray!10} +\PitonOptions{background-color=gray!15} \SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}} \begin{Piton} def arctan(x,n=10): @@ -1876,16 +2253,16 @@ def arctan(x,n=10): \endgroup -\vspace{1cm} -On peut aussi faire afficher les commentaires dans une deuxième colonne à droite si on limite la largeur du code -proprement dit avec la clé |width|. Dans l'exemple qui suit, on utilise la clé |width| avec la valeur -spéciale~|min|. Plusieurs compilations sont nécessaires. +\vspace{1cm} On peut aussi faire afficher les commentaires dans une deuxième colonne à +droite si on limite la largeur du code proprement dit avec la clé |width|. Dans l'exemple +qui suit, on utilise la clé |width| avec la valeur spéciale~|min|. Plusieurs compilations +sont nécessaires. \begingroup \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} \begin{Verbatim} -\PitonOptions{width=min, background-color=gray!10} +\PitonOptions{width=min, background-color=gray!15} ~emphase&\NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}}@ ~emphase&\SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand}@ \begin{Piton} @@ -1906,7 +2283,7 @@ def arctan(x,n=10): \begingroup -\PitonOptions{width = min, background-color=gray!10} +\PitonOptions{width = min, background-color=gray!15} \NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}} \SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand} \begin{Piton} @@ -1925,105 +2302,18 @@ def arctan(x,n=10): \bigskip -\subsection{Notes dans les listings} - -\index{notes dans les listings|emph} - -Pour pouvoir extraire les notes (introduites par |\footnote|), l'extension |piton| doit être chargée, soit avec la -clé |footnote|, soit avec la clé |footnotehyper|, comme expliqué à la section \ref{footnote} p.~\pageref{footnote}. -Dans le présent document, l'extension \pkg{piton} a été chargée par la clé |footnotehyper|. - -Bien entendu, une commande |\footnote| ne peut apparaître que dans un commentaire LaTeX (qui débute par |#>|). Un -tel commentaire peut se limiter à cette unique commande |\footnote|, comme dans l'exemple suivant. - -\begingroup -\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} -\begin{Verbatim} -\PitonOptions{background-color=gray!10} -\begin{Piton} -def arctan(x,n=10): - if x < 0: - return -arctan(-x)~emphase&#>\footnote{Un premier appel récursif.}]@ - elif x > 1: - return pi/2 - arctan(1/x)~emphase&#>\footnote{Un deuxième appel récursif.}@ - else: - return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -\end{Piton} -\end{Verbatim} -\endgroup - -\begingroup -\PitonOptions{background-color=gray!10} -\begin{Piton} -def arctan(x,n=10): - if x < 0: - return -arctan(-x)#>\footnote{Un premier appel récursif.} - elif x > 1: - return pi/2 - arctan(1/x)#>\footnote{Un deuxième appel récursif.} - else: - return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -\end{Piton} -\endgroup - - -\vspace{1cm} - -Si on utilise l'environnement |{Piton}| dans un environnement |{minipage}| de LaTeX, les notes sont, bien entendu, -composées au bas de l'environnement |{minipage}|. Rappelons qu'une telle |{minipage}| ne peut être coupée par un -saut de page. - - -\begingroup -\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} -\begin{Verbatim} -\PitonOptions{background-color=gray!10} -\emphase\begin{minipage}{\linewidth} -\begin{Piton} -def arctan(x,n=10): - if x < 0: - return -arctan(-x)~emphase&#>\footnote{Un premier appel récursif.}@ - elif x > 1: - return pi/2 - arctan(1/x)~emphase&#>\footnote{Un deuxième appel récursif.}@ - else: - return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -\end{Piton} -\end{minipage} -\end{Verbatim} -\endgroup - -\begingroup -\PitonOptions{background-color=gray!10} -\begin{minipage}{\linewidth} -\begin{Piton} -def arctan(x,n=10): - if x < 0: - return -arctan(-x)#>\footnote{Un premier appel récursif.} - elif x > 1: - return pi/2 - arctan(1/x)#>\footnote{Un deuxième appel récursif.} - else: - return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -\end{Piton} -\end{minipage} -\endgroup - - -\bigskip - \subsection{Un exemple de réglage des styles} Les styles graphiques ont été présentés à la partie \ref{styles}, p.~\pageref{styles}. \smallskip -On présente ici un réglage de ces styles adapté pour les documents en noir et blanc. On l'utilise avec la fonte -\emph{DejaVu Sans Mono}\footnote{Voir: \url{https://dejavu-fonts.github.io}} spécifiée avec la commande - |\setmonofont| de \pkg{fontspec}. +On présente ici un réglage de ces styles adapté pour les documents en noir et blanc. -Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg{luacolor}). +Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension nécessite +elle-même l'extension \pkg{luacolor}). \begin{Verbatim} -\setmonofont[Scale=0.85]{DejaVu Sans Mono} - \SetPitonStyle { Number = , @@ -2044,16 +2334,14 @@ Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension n \end{Verbatim} -Dans ce réglage, de nombreuses valeurs fournies aux clés sont vides, ce qui signifie que le style correspondant -n'insèrera aucune instruction de formatage (l'élément sera composé dans la couleur standard, le plus souvent, en noir, -etc.). Ces entrées avec valeurs nulles sont néanmoins nécessaires car la valeur initiale de ces styles dans -\pkg{piton} n'est \emph{pas} vide. +Dans ce réglage, de nombreuses valeurs fournies aux clés sont vides, ce qui signifie que +le style correspondant n'insèrera aucune instruction de formatage (l'élément sera composé +dans la couleur standard, le plus souvent, en noir, etc.). Ces entrées avec valeurs nulles +sont néanmoins nécessaires car la valeur initiale de ces styles dans \pkg{piton} n'est +\emph{pas} vide. \begingroup - -\setmonofont[Scale=0.85]{DejaVu Sans Mono} - \SetPitonStyle { Number = , @@ -2105,11 +2393,13 @@ def arctan(x,n=10): \label{pyluatex} \index{pyluatex@{\pkg{pyluatex}} (extension)} -L'extension \pkg{pyluatex} est une extension qui permet l'exécution de code Python à partir de |lualatex| (pourvu -que Python soit installé sur la machine et que la compilation soit effectuée avec |lualatex| et |--shell-escape|). +L'extension \pkg{pyluatex} est une extension qui permet l'exécution de code Python à +partir de |lualatex| (pourvu que Python soit installé sur la machine et que la compilation +soit effectuée avec |lualatex| et |--shell-escape|). -Voici, à titre d'exemple, un environnement |{PitonExecute}| qui formate un listing Python (avec \pkg{piton}) et qui -affiche également dessous le résultat de l'exécution de ce code avec Python. +Voici, à titre d'exemple, un environnement |{PitonExecute}| qui formate un listing Python +(avec \pkg{piton}) et qui affiche également dessous le résultat de l'exécution de ce code +avec Python. \begin{Verbatim} @@ -2129,12 +2419,12 @@ affiche également dessous le résultat de l'exécution de ce code avec Python. \ignorespacesafterend} -On a utilisé la fonction Lua |piton.get_last_code| fournie dans l'API de \pkg{piton} : cf.~partie~\ref{API}, -p.~\pageref{API}. + On a utilisé la fonction Lua |piton.get_last_code| fournie dans l'API de \pkg{piton} : + cf.~partie~\ref{API}, p.~\pageref{API}. \bigskip -Cet environnement |{PitonExecute}| prend en argument optionnel (entre crochets) les options proposées par la -commande |\PitonOptions|. +Cet environnement |{PitonExecute}| prend en argument optionnel (entre crochets) les +options proposées par la commande |\PitonOptions|. \begin{Verbatim} \begin{~emphase#PitonExecute@}[background-color=gray!15] @@ -2162,23 +2452,26 @@ print(f'Le carré de 12 est {carré(12)}.') \index{pythonrepl@\texttt{\{pythonrepl\}} (environnement de \pkg{pyluatex})} -L'environnement |{pythonrepl}| de \pkg{pyluatex} passe son contenu à Python et renvoie ce que l'on obtient quand on -fournit ce code à une boucle \textsc{repl} (\emph{read-eval-print loop}) de Python. On obtient un entrelacement -d'instructions précédées par le prompt |>>>| de Python et des valeurs renvoyées par Python (et de ce qui a été -demandé d'être affiché avec des \piton{print} de Python). +L'environnement |{pythonrepl}| de \pkg{pyluatex} passe son contenu à Python et renvoie ce +que l'on obtient quand on fournit ce code à une boucle \textsc{repl} +(\emph{read-eval-print loop}) de Python. On obtient un entrelacement d'instructions +précédées par le prompt |>>>| de Python et des valeurs renvoyées par Python (et de ce qui +a été demandé d'être affiché avec des \piton{print} de Python). \medskip -Il est ensuite possible de passer cela à un environnement |{Piton}| qui va faire un coloriage syntaxique -et mettre sur fond grisé les lignes correspondant aux instructions fournies à l'interpréteur Python (grâce à la clé -|prompt-background-color| de |\PitonOptions|). +Il est ensuite possible de passer cela à un environnement |{Piton}| qui va faire un +coloriage syntaxique et mettre sur fond grisé les lignes correspondant aux instructions +fournies à l'interpréteur Python (grâce à la clé |prompt-background-color| de +|\PitonOptions|). \medskip -Voici la programmation d'un environnement |{PitonREPL}| qui effectue ce travail (pour des raisons techniques, le -|!| est ici obligatoire dans la signature de l'environnement). On ne peut pas procéder comme précédemment (dans -l'utilisation «standard» de \pkg{pyluatex}) car, bien sûr, c'est le retour fait par |{pythonrepl}| qui doit être -traité par \pkg{piton}. De ce fait, il ne sera pas possible de mettre des surcharges (avec |detected-commands| ou -le mécanisme |escape|) dans le code. +Voici la programmation d'un environnement |{PitonREPL}| qui effectue ce travail (pour des +raisons techniques, le |!| est ici obligatoire dans la signature de l'environnement). On +ne peut pas procéder comme précédemment (dans l'utilisation «standard» de \pkg{pyluatex}) +car, bien sûr, c'est le retour fait par |{pythonrepl}| qui doit être traité par +\pkg{piton}. De ce fait, il ne sera pas possible de mettre des surcharges (avec +|detected-commands| ou le mécanisme |escape|) dans le code. \begin{Verbatim} \ExplSyntaxOn @@ -2187,7 +2480,7 @@ le mécanisme |escape|) dans le code. \PitonOptions { background-color=white, - ~emphase#prompt-background-color = gray!10@, + ~emphase#prompt-background-color = gray!15@, ~#1 } \PyLTVerbatimEnv @@ -2214,7 +2507,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|. \begin{Verbatim} ~emphase#\begin{PitonREPL}@ def valeur_absolue(x): - "Renvoie la valeur absolue de x" + """Renvoie la valeur absolue de x""" if x > 0: return x else: @@ -2231,7 +2524,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|. \ExplSyntaxOn \NewDocumentEnvironment { PitonREPL } { } { - \PitonOptions{background-color=white,prompt-background-color = gray!10} + \PitonOptions{background-color=white,prompt-background-color = gray!15} \PyLTVerbatimEnv \begin{pythonrepl} } @@ -2250,7 +2543,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|. \begin{PitonREPL} def valeur_absolue(x): - "Renvoie la valeur absolue de x" + """Renvoie la valeur absolue de x""" if x > 0: return x else: @@ -2263,11 +2556,12 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|. \bigskip -En fait, il est possible de ne pas faire afficher les prompts eux-mêmes (c'est-à-dire les chaînes de caractères -|>>>| et |...|). En effet, \pkg{piton} propose un style pour ces éléments, qui est appelé |Prompt|. Par défaut, la -valeur de ce style est vide, ce qui fait qu'aucune action n'est exécutée sur ces éléments qui sont donc affichés -tels quels. En fournissant comme valeur une fonction qui se contente de gober son argument, on peut demander à ce -qu'ils ne soient pas affichés. +En fait, il est possible de ne pas faire afficher les prompts eux-mêmes (c'est-à-dire les +chaînes de caractères |>>>| et |...|). En effet, \pkg{piton} propose un style pour ces +éléments, qui est appelé |Prompt|. Par défaut, la valeur de ce style est vide, ce qui fait +qu'aucune action n'est exécutée sur ces éléments qui sont donc affichés tels quels. En +fournissant comme valeur une fonction qui se contente de gober son argument, on peut +demander à ce qu'ils ne soient pas affichés. \bigskip \begin{savenotes} @@ -2292,7 +2586,7 @@ L'exemple précédent donne alors : \begin{Verbatim} ~emphase#\begin{PitonREPL}@ def valeur_absolue(x): - "Renvoie la valeur absolue de x" + """Renvoie la valeur absolue de x""" if x > 0: return x else: @@ -2308,7 +2602,7 @@ L'exemple précédent donne alors : \begin{PitonREPL} def valeur_absolue(x): - "Renvoie la valeur absolue de x" + """Renvoie la valeur absolue de x""" if x > 0: return x else: @@ -2328,62 +2622,72 @@ L'exemple précédent donne alors : \subsection{Le langage Python} -Le langage par défaut de l'extension \pkg{piton} est Python. Si besoin est, on peut revenir au langage Python avec -|\PitonOptions{language=Python}|. +Le langage par défaut de l'extension \pkg{piton} est Python. Si besoin est, on peut +revenir au langage Python avec |\PitonOptions{language=Python}|. \bigskip -Les réglages initiaux effectués par \pkg{piton} dans |piton.sty| sont inspirés par le style \pkg{manni} de Pygments -tel qu'il est appliqué au langage Python par Pygments.\footnote{Voir \url{https://pygments.org/styles/}. À - remarquer que, par défaut, Pygments propose pour le style \pkg{manni} un fond coloré dont la couleur est la - couleur HTML |#F0F3F3|. Il est possible d'avoir la même couleur dans |{Piton}| avec l'instruction : - |\PitonOptions{background-color = [HTML]{F0F3F3}}|} +Les réglages initiaux effectués par \pkg{piton} dans |piton.sty| sont inspirés par le +style \pkg{manni} de Pygments tel qu'il est appliqué au langage Python par +Pygments.\footnote{Voir \url{https://pygments.org/styles/}. À remarquer que, par défaut, + Pygments propose pour le style \pkg{manni} un fond coloré dont la couleur est la couleur + HTML |#F0F3F3|. Il est possible d'avoir la même couleur dans |{Piton}| avec + l'instruction : |\PitonOptions{background-color = [HTML]{F0F3F3}}|} \vspace{1cm} \begin{center} -\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} - \toprule - \normalfont Style & Usage \\ - \midrule - Number & les nombres \\ - String.Short & les chaînes de caractères courtes (entre \texttt{'} ou \texttt{"}) \\ - String.Long & les chaînes de caractères longues (entre \texttt{'''} ou \texttt{"""}) sauf les chaînes de - documentation (qui sont gérées par |String.Doc|)\\ - String & cette clé fixe à la fois |String.Short| et |String.Long| \\ - String.Doc & les chaînes de documentation (seulement entre |"""| suivant PEP~257) \\ - String.Interpol & les éléments syntaxiques des champs des f-strings (c'est-à-dire les caractères \texttt{\{} et - \texttt{\}}) ; ce style hérite des styles |String.Short| et |String.Long| (suivant la chaîne où - apparaît l'interpolation)\\ - Interpol.Inside & le contenu des interpolations dans les f-strings (c'est-à-dire les éléments qui se trouvent entre - \texttt{\{} et~\texttt{\}} ; si l'utilisateur n'a pas fixé ce style, ces éléments sont analysés et formatés par \pkg{piton} - au même titre que le reste du code. \\ - Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ |@| \\ - Operator.Word & les opérateurs suivants : |in|, |is|, |and|, |or| et |not| \\ - Name.Builtin & la plupart des fonctions prédéfinies par Python \\ - Name.Decorator & les décorateurs (instructions débutant par \verb|@|) \\ - Name.Namespace & le nom des modules (= bibliothèques extérieures) \\ - Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le mot-clé \verb|class| \\ - Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} (après le - mot-clé |def|) \\ - UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur initiale de ce paramètre est - vide et ces éléments sont affichés en noir --- ou plutôt dans la couleur courante) \\ - Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\ - InitialValues & les valeurs initiales (et le symbole |=| qui précède) des arguments optionnels dans les définitions - de fonctions ; si l'utilisateur n'a pas fixé ce style, ces éléments sont analysés et formatés par \pkg{piton} - au même titre que le reste du code.\\ - Comment & les commentaires commençant par \texttt{\#} \\ - Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par \pkg{piton} comme du code LaTeX (et - appelés simplement «commentaires LaTeX» dans ce document) \\ - Keyword.Constant & |True|, |False| et |None| \\ - Keyword & les mots-clés suivants : - \ttfamily assert, break, case, continue, del, - elif, else, except, exec, finally, for, from, - global, if, import, lambda, non local, - pass, raise, return, try, while, - with, yield et yield from.\\ - \bottomrule +\begin{tabularx}{\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} +\toprule +\normalfont Style & Usage \\ +\midrule +Number & les nombres \\ +String.Short & les chaînes de caractères courtes (entre \texttt{'} ou \texttt{"}) \\ +String.Long & les chaînes de caractères longues (entre \texttt{'''} ou \texttt{"""}) + sauf les chaînes de documentation (qui sont gérées par |String.Doc|)\\ +String & cette clé fixe à la fois |String.Short| et |String.Long| \\ +String.Doc & les chaînes de documentation (seulement entre |"""| suivant PEP~257) \\ +String.Interpol & les éléments syntaxiques des champs des f-strings (c'est-à-dire les + caractères \texttt{\{} et \texttt{\}}) ; ce style hérite des styles + |String.Short| et |String.Long| (suivant la chaîne où apparaît + l'interpolation)\\ +Interpol.Inside & le contenu des interpolations dans les f-strings (c'est-à-dire les + éléments qui se trouvent entre \texttt{\{} et~\texttt{\}}) ; si + l'utilisateur n'a pas fixé ce style, ces éléments sont analysés et + formatés par \pkg{piton} au même titre que le reste du code. \\ +Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} + \verb+|+ |@| \\ +Operator.Word & les opérateurs suivants : |in|, |is|, |and|, |or| et |not| \\ +Name.Builtin & la plupart des fonctions prédéfinies par Python \\ +Name.Decorator & les décorateurs (instructions débutant par \verb|@|) \\ +Name.Namespace & le nom des modules (= bibliothèques extérieures) \\ +Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le + mot-clé \verb|class| \\ +Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur + définition} (après le mot-clé |def|) \\ +UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur + initiale de ce paramètre est {\ttfamily \textbackslash + PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont + affichés comme les identifiants) \\ +Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\ +InitialValues & les valeurs initiales (et le symbole |=| qui précède) des arguments + optionnels dans les définitions de fonctions ; si l'utilisateur n'a pas + fixé ce style, ces éléments sont analysés et formatés par \pkg{piton} + au même titre que le reste du code.\\ +Comment & les commentaires commençant par \texttt{\#} \\ +Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par + \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires + LaTeX» dans ce document) \\ +Keyword.Constant & |True|, |False| et |None| \\ +Keyword & les mots-clés suivants : + \ttfamily assert, break, case, continue, del, + elif, else, except, exec, finally, for, from, + global, if, import, in, lambda, non local, + pass, raise, return, try, while, + with, yield et yield from.\\ +Identifier & les identificateurs. \\ +\bottomrule \end{tabularx} \end{center} @@ -2392,23 +2696,10 @@ tel qu'il est appliqué au langage Python par Pygments.\footnote{Voir \url{https \subsection{Le langage OCaml} -On peut basculer vers le langage |OCaml| avec |\PitonOptions{language = OCaml}| - -\bigskip -On peut aussi choisir le langage |OCaml| pour un environnement |{Piton}| individuel : -% -\begin{Verbatim} -\begin{Piton}~emphase#[language=OCaml]@ -... -\end{Piton} -\end{Verbatim} +On peut basculer vers le langage |OCaml| avec la clé |language| : |language = OCaml| \bigskip -L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=OCaml]{...}| - - -\vspace{1cm} \begin{center} @@ -2421,30 +2712,32 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language String.Long & les chaînes de caractères, entre |"| mais aussi les \emph{quoted-strings} \\ String & cette clé fixe à la fois |String.Short| et |String.Long| \\ Operator & les opérateurs, en particulier |+|, |-|, |/|, |*|, |@|, |!=|, |==|, |&&| \\ - Operator.Word & les opérateurs suivants : |and|, |asr|, |land|, |lor|, |lsl|, |lxor|, |mod| et |or| \\ + Operator.Word & les opérateurs suivants : |asr|, |land|, |lor|, |lsl|, |lxor|, + |mod| et |or| \\ Name.Builtin & les fonctions |not|, |incr|, |decr|, |fst| et |snd| \\ Name.Type & le nom des types OCaml \\ Name.Field & le nom d'un champ de module \\ Name.Constructor & le nom des constructeurs de types (qui débutent par une majuscule) \\ Name.Module & le nom des modules \\ - Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} (après le - mot-clé |let|) \\ - UserFunction & le nom des fonctions précédemment définies par l'utilisateur - (la valeur initiale de ce paramètre est - vide et ces éléments sont affichés en noir --- ou plutôt dans la couleur courante) \\ + Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur + définition} (après le mot-clé |let|) \\ + UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur + initiale de ce paramètre est {\ttfamily \textbackslash + PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont + affichés comme les identifiants) \\ Exception & les exceptions prédéfinies (ex. : |End_of_File|) \\ TypeParameter & les paramétreurs de type \\ Comment & les commentaires, entre |(*| et |*)| ; ces commentaires peuvent être imbriqués \\ Keyword.Constant & |true| et |false| \\ Keyword & les mots-clés suivants : - |assert|, |as|, |begin|, |class|, |constraint|, |done|, - |downto|, |do|, |else|, |end|, |exception|, |external|, - |for|, |function|, |functor|, |fun| , |if| - |include|, |inherit|, |initializer|, |in| , |lazy|, |let|, - |match|, |method|, |module|, |mutable|, |new|, |object|, - |of|, |open|, |private|, |raise|, |rec|, |sig|, - |struct|, |then|, |to|, |try|, |type|, - |value|, |val|, |virtual|, |when|, |while| et |with| \\ + |assert|, |as|, |done|, |downto|, |do|, |else|, |exception|, |for|, |function| , + |fun|, |if|, |lazy|, |match|, |mutable|, |new|, |of|, |private|, |raise|, + |then|, |to|, |try| , |virtual|, |when|, |while| et |with| \\ + Keyword.Governing & les mot-clés suivants : |and|, |begin|, |class|, |constraint|, + |end|, |external|, |functor|, |include|, |inherit|, |initializer|, + |in|, |let|, |method|, |module|, |object|, |open|, |rec|, |sig|, + |struct|, |type| et |val|. \\ + Identifier & les identificateurs. \\ \bottomrule \end{tabularx} \end{center} @@ -2454,21 +2747,10 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language \subsection[Le langage C (et C++)]{Le langage C (et \CC)} -On peut basculer vers le langage |C| avec |\PitonOptions{language = C}| +On peut basculer vers le langage |C| avec la clé |language| : |language = C| -\bigskip -On peut aussi choisir le langage |C| pour un environnement |{Piton}| individuel : -% -\begin{Verbatim} -\begin{Piton}~emphase#[language=C]@ -... -\end{Piton} -\end{Verbatim} \bigskip -L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=C]{...}| - -\vspace{1cm} \begin{center} \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} @@ -2477,29 +2759,37 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language \midrule Number & les nombres \\ String.Long & les chaînes de caractères (entre \texttt{"}) \\ -String.Interpol & les éléments \texttt{\%d}, \texttt{\%i}, \texttt{\%f}, \texttt{\%c}, etc. dans les chaînes de - caractères ; ce style hérite du style |String.Long| \\ +String.Interpol & les éléments \texttt{\%d}, \texttt{\%i}, \texttt{\%f}, \texttt{\%c}, + etc. dans les chaînes de caractères ; ce style hérite du style + |String.Long| \\ Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ |@| \\ -Name.Type & les types prédéfinis suivants : - |bool|, |char|, |char16_t|, |char32_t|, |double|, |float|, |int|, |int8_t|, |int16_t|, |int32_t|, - |int64_t|, |long|, |short|, |signed|, |unsigned|, |void| et |wchar_t| \\ -Name.Builtin & les fonctions prédéfinies suivantes : |printf|, |scanf|, |malloc|, |sizeof| et |alignof| \\ - Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le mot-clé |class| \\ -Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} \\ -UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur initiale de ce paramètre est - vide et ces éléments sont affichés en noir --- ou plutôt dans la couleur courante) \\ +Name.Type & les types prédéfinis suivants : |bool|, |char|, |char16_t|, |char32_t|, + |double|, |float|, |int|, |int8_t|, |int16_t|, |int32_t|, |int64_t|, |long|, + |short|, |signed|, |unsigned|, |void| et |wchar_t| \\ +Name.Builtin & les fonctions prédéfinies suivantes : |printf|, |scanf|, |malloc|, |sizeof| + et |alignof| \\ +Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le + mot-clé |class| \\ +Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur + définition} \\ +UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur + initiale de ce paramètre est {\ttfamily \textbackslash + PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont + affichés comme les identifiants) \\ Preproc & les instructions du préprocesseur (commençant par |#|) \\ Comment & les commentaires (commençant par \texttt{//} ou entre |/*| et |*/|) \\ -Comment.LaTeX & les commentaires commençant par \texttt{//>} qui sont composés par \pkg{piton} comme du code LaTeX (et - appelés simplement «commentaires LaTeX» dans ce document) \\ +Comment.LaTeX & les commentaires commençant par \texttt{//>} qui sont composés par + \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires + LaTeX» dans ce document) \\ Keyword.Constant & |default|, |false|, |NULL|, |nullptr| et |true| \\ -Keyword & les mots-clés suivants : -|alignas|, |asm|, |auto|, |break|, |case|, |catch|, |class|, -|constexpr|, |const|, |continue|, |decltype|, |do|, |else|, |enum|, -|extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|, |restricted|, |try|, -|return|, |static|, |static_assert|, |struct|, |switch|, |thread_local|, |throw|, -|typedef|, |union|, |using|, |virtual|, |volatile| et |while| +Keyword & les mots-clés suivants : |alignas|, |asm|, |auto|, |break|, |case|, |catch|, + |class|, |constexpr|, |const|, |continue|, |decltype|, |do|, |else|, |enum|, + |extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|, + |restricted|, |try|, |return|, |static|, |static_assert|, |struct|, |switch|, + |thread_local|, |throw|, |typedef|, |union|, |using|, |virtual|, |volatile| et + |while| \\ +Identifier & les identificateurs. \\ \bottomrule \end{tabularx} \end{center} @@ -2509,22 +2799,10 @@ Keyword & les mots-clés suivants : \subsection{Le langage SQL} -On peut basculer vers le langage |SQL| avec |\PitonOptions{language = SQL}| +On peut basculer vers le langage |SQL| avec la clé |language| : |language = SQL| -\bigskip -On peut aussi choisir le langage |SQL| pour un environnement |{Piton}| individuel : -% -\begin{Verbatim} -\begin{Piton}~emphase#[language=SQL]@ -... -\end{Piton} -\end{Verbatim} \bigskip -L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=SQL]{...}| - - -\vspace{1cm} \begin{center} \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} @@ -2534,35 +2812,72 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language Number & les nombres \\ String.Long & les chaînes de caractères (entre \texttt{'} et non entre \texttt{"} car les éléments entre \texttt{"} sont des noms de champs et formatés avec |Name.Field|) \\ -Operator & les opérateurs suivants : -\texttt{= != <> >= > < <= * + / } \\ +Operator & les opérateurs suivants : \texttt{= != <> >= > < <= * + / } \\ Name.Table & les noms des tables \\ Name.Field & les noms des champs des tables \\ -Name.Builtin & les fonctions prédéfinies suivantes (leur nom n'est \emph{pas} sensible à la casse) : - |avg|, |count|, |char_lenght|, |concat|, |curdate|, |current_date|, - |date_format|, |day|, |lower|, |ltrim|, |max|, |min|, |month|, |now|, - |rank|, |round|, |rtrim|, |substring|, |sum|, |upper| et |year|. \\ +Name.Builtin & les fonctions prédéfinies suivantes (leur nom n'est \emph{pas} sensible à + la casse) : |avg|, |count|, |char_lenght|, |concat|, |curdate|, + |current_date|, |date_format|, |day|, |lower|, |ltrim|, |max|, |min|, + |month|, |now|, |rank|, |round|, |rtrim|, |substring|, |sum|, |upper| et + |year|. \\ Comment & les commentaires (débutant par |--| ou bien entre |/*| et |*/|) \\ -Comment.LaTeX & les commentaires commençant par \texttt{-->} qui sont composés par \pkg{piton} comme du code LaTeX (et - appelés simplement «commentaires LaTeX» dans ce document) \\ -Keyword & les mots-clés suivants (leur nom n'est \emph{pas} sensible à la casse) : - |add|, |after|, |all|, |alter|, |and|, |as|, |asc|, |between|, |by|, - |change|, |column|, |create|, |cross join|, |delete|, |desc|, |distinct|, - |drop|, |from|, |group|, |having|, |in|, |inner|, |insert|, |into|, |is|, - |join|, |left|, |like|, |limit|, |merge|, |not|, |null|, |on|, |or|, - |order|, |over|, |right|, |select|, |set|, |table|, |then|, |truncate|, - |union|, |update|, |values|, |when|, |where| et |with|. \\ +Comment.LaTeX & les commentaires commençant par \texttt{-->} qui sont composés par + \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires + LaTeX» dans ce document) \\ +Keyword & les mots-clés suivants (leur nom n'est \emph{pas} sensible à la casse) : |add|, + |after|, |all|, |alter|, |and|, |as|, |asc|, |between|, |by|, |change|, + |column|, |create|, |cross join|, |delete|, |desc|, |distinct|, |drop|, |from|, + |group|, |having|, |in|, |inner|, |insert|, |into|, |is|, |join|, |left|, + |like|, |limit|, |merge|, |not|, |null|, |on|, |or|, |order|, |over|, |right|, + |select|, |set|, |table|, |then|, |truncate|, |union|, |update|, |values|, + |when|, |where| et |with|. \\ \bottomrule \end{tabularx} \end{center} \bigskip -Si on souhaite que les mots-clés soient capitalisés automatiquement, on peut modifier le style |Keywords| -localement pour le langage SQL avec l'instruction : +Si on souhaite que les mots-clés soient capitalisés automatiquement, on peut modifier le +style |Keywords| localement pour le langage SQL avec l'instruction : \begin{Verbatim} \SetPitonStyle~emphase#[SQL]@{Keywords = \bfseries \MakeUppercase} \end{Verbatim} +\newpage + +\subsection{Les langages définis par la commande \textbackslash NewPitonLanguage} + +\indexcommand{NewPitonLanguage} + +\vspace{1cm} +La commande |\NewPitonLanguage|, qui permet de définir de nouveaux langages en utilisant +la syntaxe de l'extension \pkg{listings}, a été présentée p.~\pageref{NewPitonLanguage}. + +Tous les langages définis avec la commande |\NewPitonLanguage| partagent les mêmes styles. + +\vspace{1cm} + +\begin{center} +\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} +\toprule +\normalfont Style & Usage \\ +\midrule +Number & les nombres \\ +String.Long & les chaînes de caractères définies dans |\NewPitonLanguage| par la clé + |morestring| \\ +Comment & les commentaires définis dans |\NewPitonLanguage| par la clé |morecomment| \\ +Comment.LaTeX & les commentaires qui sont composés par \pkg{piton} comme du code LaTeX (et + appelés simplement «commentaires LaTeX» dans ce document) \\ +Keyword & les mots-clés, définis dans |\NewPitonLanguage| par les clés |morekeywords| et + |moretexcs| (et également la clé |sensitive| qui indique si les mots-clés sont + sensibles à la casse) \\ +Directive & les directives définies dans |\NewPitonLanguage| par la clé |moredirectives| \\ +Tag & les «tags» définis par la clé |tag| (les lexèmes détectés à l'intérieur d'un tag + seront aussi composés avec leur propre style) \\ +Identifier & les identificateurs. \\ +\bottomrule +\end{tabularx} +\end{center} + \newpage @@ -2573,22 +2888,10 @@ localement pour le langage SQL avec l'instruction : \label{minimal} \index{minimal (langage «minimal»)} -On peut basculer vers le langage «|minimal|» avec |\PitonOptions{language = minimal}| +On peut basculer vers le langage «|minimal|» avec la clé |language| : |language = minimal| -\bigskip -On peut aussi choisir le langage «|minimal|» pour un environnement |{Piton}| individuel : -% -\begin{Verbatim} -\begin{Piton}~emphase#[language=minimal]@ -... -\end{Piton} -\end{Verbatim} \bigskip -L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=minimal]{...}| - - -\vspace{1cm} \begin{center} \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} @@ -2598,51 +2901,56 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language Number & les nombres \\ String & les chaînes de caractères (qui sont entre \texttt{"}) \\ Comment & les commentaires (qui débutent par |#|) \\ -Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par \pkg{piton} comme du code LaTeX (et - appelés simplement «commentaires LaTeX» dans ce document) \\ +Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par + \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires + LaTeX» dans ce document) \\ +Identifier & les identificateurs. \\ \bottomrule \end{tabularx} \end{center} \bigskip -Ce langage «|minimal|» est proposé par \pkg{piton} à l'utilisateur final pour qu'il puisse y ajouter des -formatages de mots-clés avec la commande |\SetPitonIdentifier| (cf. \ref{SetPitonIdentifier}, -p.~\pageref{SetPitonIdentifier}) et créer par exemple un langage pour pseudo-code. +Ce langage «|minimal|» est proposé par \pkg{piton} à l'utilisateur final pour qu'il puisse +y ajouter des formatages de mots-clés avec la commande |\SetPitonIdentifier| (cf. +\ref{SetPitonIdentifier}, p.~\pageref{SetPitonIdentifier}) et créer par exemple un langage +pour pseudo-code. +\vspace{2cm} -\newpage +\subsection{Le langage «verbatim»} -\subsection{Les langages définis par la commande \textbackslash NewPitonLanguage} -\indexcommand{NewPitonLanguage} +\label{verbatim} +\index{verbatim (langage «verbatim»)} -\vspace{1cm} -La commande |\NewPitonLanguage|, qui permet de définir de nouveaux langages en utilisant la syntaxe de l'extension -\pkg{listings}, a été présentée p.~\pageref{NewPitonLanguage}. -Tous les langages définis avec la commande |\NewPitonLanguage| partagent les mêmes styles. +\colorbox{yellow!50}{\textbf{Nouveau 4.1}} -\vspace{1cm} + +\bigskip + +On peut basculer vers le langage «|verbatim|» avec la clé |language| : |language = verbatim| + +\bigskip \begin{center} \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} \toprule \normalfont Style & Usage \\ \midrule -Number & les nombres \\ -String.Long & les chaînes de caractères définies dans |\NewPitonLanguage| par la clé |morestring| \\ -Comment & les commentaires définis dans |\NewPitonLanguage| par la clé |morecomment| \\ -Comment.LaTeX & les commentaires qui sont composés par \pkg{piton} comme du code LaTeX (et - appelés simplement «commentaires LaTeX» dans ce document) \\ -Keyword & les mots-clés, définis dans |\NewPitonLanguage| par les clés |morekeywords| et |moretexcs| (et également - la clé |sensitive| qui indique si les mots-clés sont sensibles à la casse) \\ -Directive & les directives définies dans |\NewPitonLanguage| par la clé |moredirectives| \\ -Tag & les «tags» définis par la clé |tag| (les lexèmes détectés à l'intérieur d'un tag seront - aussi composés avec leur propre style) \\ +\emph{rien...} & \\ \bottomrule \end{tabularx} \end{center} +\bigskip +Le language «|verbatim|» ne propose aucun style et ne fait donc aucun formatage +syntaxique. On peut néanmoins y utiliser le mécanisme |detected-commands| (cf. partie +\ref{detected-commands}, p.~\pageref{detected-commands}) ainsi que le +mécanisme de détection des commandes et des environnements de Beamer. + + + \newpage diff --git a/macros/luatex/latex/piton/piton.dtx b/macros/luatex/latex/piton/piton.dtx index ec18e80eaa..9b7982ece3 100644 --- a/macros/luatex/latex/piton/piton.dtx +++ b/macros/luatex/latex/piton/piton.dtx @@ -44,7 +44,7 @@ end-escape = ! , begin-escape-math = \( , end-escape-math = \) , - detected-commands = highLight + detected-commands = { highLight, footnote } } \parindent 0pt @@ -79,12 +79,12 @@ % \iffalse %<*STY> % \fi -\def\PitonFileVersion{3.0b} -\def\PitonFileDate{2024/05/23} +\def\PitonFileVersion{4.1} +\def\PitonFileDate{2024/10/18} % \iffalse %</STY> %<*LUA> -piton_version = "3.0b" -- 2024/05/23 +piton_version = "4.1" -- 2024/10/18 %</LUA> %\fi % @@ -101,6 +101,10 @@ piton_version = "3.0b" -- 2024/05/23 % syntactic highlighting, by using the Lua library LPEG. It requires LuaLaTeX. % \end{abstract} % +% \bigskip +% {\color{red} Since the version 4.0, the syntax of the absolute and relative +% paths used in |\PitonInputFile| has been changed: +% cf.~part~\ref{PitonInputFile}, p.~\pageref{PitonInputFile}.} % % % \section{Presentation} @@ -113,8 +117,9 @@ piton_version = "3.0b" -- 2024/05/23 % listings and typesets them with syntactic highlighting. Since it uses the Lua % of LuaLaTeX, it works with |lualatex| only (and won't work with the other % engines: |latex|, |pdflatex| and |xelatex|). It does not use external program -% and the compilation does not require |--shell-escape|. The compilation is very -% fast since all the parsing is done by the library LPEG, written in C. +% and the compilation does not require |--shell-escape| (except when the key +% |write| is used). The compilation is very fast since all the parsing is done +% by the library LPEG, written in C. % % \bigskip % Here is an example of code typeset by \pkg{piton}, with the environment |{Piton}|. @@ -142,11 +147,11 @@ piton_version = "3.0b" -- 2024/05/23 % \end{Piton} % % -% \bigskip +% \medskip % The main alternatives to the package \pkg{piton} are probably the packages % \pkg{listings} and \pkg{minted}. % -% \bigskip +% \medskip % The name of this extension (\pkg{piton}) has been chosen arbitrarily by % reference to the pitons used by the climbers in alpinism. % @@ -185,8 +190,8 @@ piton_version = "3.0b" -- 2024/05/23 % |minimal| may be used to format pseudo-codes: cf. p.~\pageref{minimal}}; % \item the languages defined by the final user by using the built-in command % |\NewPitonLanguage| described p.~\pageref{NewPitonLanguage} (the parsers of -% those languages can't be as precise as those of the native languages supported -% by \pkg{piton}). +% those languages can't be as precise as those of the languages supported +% natively by \pkg{piton}). % \end{itemize} % % @@ -196,7 +201,7 @@ piton_version = "3.0b" -- 2024/05/23 % \smallskip % \index{language (key)} % It's possible to change the current language with the command |\PitonOptions| -% and its key |language|: |\PitonOptions{language = OCaml}|. +% and its key \Definition{language}: |\PitonOptions{language = OCaml}|. % % \smallskip % In fact, for \pkg{piton}, the names of the informatic languages are always @@ -215,12 +220,12 @@ piton_version = "3.0b" -- 2024/05/23 % % \indexenv{Piton} % -% The package \pkg{piton} provides several tools to typeset Python codes: the +% The package \pkg{piton} provides several tools to typeset informatic codes: the % command |\piton|, the environment |{Piton}| and the command |\PitonInputFile|. % % \begin{itemize}\setlength{\fboxsep}{1pt} -% \item The command \colorbox{gray!20}{\texttt\textbackslash piton} should be -% used to typeset small pieces of code inside a paragraph. For example: +% \item The command \DefinitionCommand{piton} should be used to typeset small +% pieces of code inside a paragraph. For example: % % {\color{gray}\verb|\piton{def square(x): return x*x}|}\qquad % \piton{def square(x): return x*x} @@ -234,23 +239,11 @@ piton_version = "3.0b" -- 2024/05/23 % environment |{Piton}| with the command |\NewPitonEnvironment|: % cf.~\ref{NewPitonEnvironment} p.~\pageref{NewPitonEnvironment}. % -% \item The command \colorbox{gray!20}{\ttfamily\textbackslash PitonInputFile} -% is used to insert and typeset a external file. -% -% It's possible to insert only a part of the file: cf. -% part~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}. +% \item The command \DefinitionCommand{PitonInputFile} is used to insert and +% typeset an external file: cf.~\ref{PitonInputFile} +% p.~\pageref{PitonInputFile}. % -% The key \Definition{path} of the command |\PitonOptions| specifies a -% \emph{list} of paths where the files included by |\PitonInputFile| will be -% searched. That list is comma separated. % -% The extension \pkg{piton} also provides the commands -% \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileT}, -% \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileF} and -% \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileTF} with -% supplementary arguments corresponding to the letters~|T| and~|F|. Those -% arguments will be executed if the file to include has been found (letter~|T|) -% or not found (letter~|F|). % \end{itemize} % % \subsection{The syntax of the command \textbackslash piton} @@ -260,8 +253,8 @@ piton_version = "3.0b" -- 2024/05/23 % In fact, the command |\piton| is provided with a double syntax. It may be used % as a standard command of LaTeX taking its argument between curly braces % (|\piton{...}|) but it may also be used with a syntax similar to the syntax of -% the command -% |\verb|, that is to say with the argument delimited by two identical characters (e.g.: \verb!\piton|...|!). +% the command |\verb|, that is to say with the argument delimited by two identical +% characters (e.g.: \verb!\piton|...|!). % % \begin{itemize} % \item {\color{blue} \textsf{Syntax} \verb|\piton{...}|}\par\nobreak @@ -282,7 +275,7 @@ piton_version = "3.0b" -- 2024/05/23 % {\color{cyan} but the commands |\{| and |\}| are also provided for individual braces}; % % \item the LaTeX commands\footnote{That concerns the commands beginning with a -% backslash but also the active characters (with catcode equal to 13).} are +% backslash but also the active characters (with catcode equal to 13). } are % fully expanded and not executed, % % {\color{cyan} so it's possible to use |\\| to insert a backslash}. @@ -314,6 +307,10 @@ piton_version = "3.0b" -- 2024/05/23 % \texttt{\textbackslash piton} in a footnote. Example : % \piton{s = 'A string'}.} % +% However, since the argument is expanded (in the TeX sens), one should take +% care not using in its argument \emph{fragile} commands (that is to say +% commands which are neither \emph{protected} nor \emph{fully expandable}). +% % \bigskip % \item {\color{blue} \textsf{Syntax} \verb!\piton|...|!}\par\nobreak % @@ -341,13 +338,9 @@ piton_version = "3.0b" -- 2024/05/23 % % \section{Customization} % -% With regard to the font used by \pkg{piton} in its listings, it's only the -% current monospaced font. The package \pkg{piton} merely uses internally the -% standard LaTeX command |\texttt|. % % \subsection{The keys of the command \textbackslash PitonOptions} -% -% + % % \indexcommand{PitonOptions} % @@ -361,11 +354,23 @@ piton_version = "3.0b" -- 2024/05/23 % % \begin{itemize} % \item The key \Definition{language} specifies which computer language is -% considered (that key is case-insensitive). Five values are allowed : -% |Python|, |OCaml|, |C|, |SQL| and |minimal|. The initial value is |Python|. -% -% \item \index{path} The key \Definition{path} specifies a path where the files -% included by |\PitonInputFile| will be searched. +% considered (that key is case-insensitive). It's possible to use the name of +% the six built-in languages (|Python|, |OCaml|, |C|, |SQL|, |minimal| and +% |verbatim|) or the name of a language defined by the user with +% |\NewPitonLanguage| (cf.~part~\ref{NewPitonLanguage}, +% p.~\pageref{NewPitonLanguage}). +% +% The initial value is |Python|. +% +% \item \index{font-command} +% \colorbox{yellow!50}{\textbf{New 4.0}}\par\nobreak +% +% The key \Definition{font-command} contains instructions of font which will be +% inserted at the beginning of all the elements composed by \pkg{piton} (without +% surprise, these instructions are not used for the so-called ``LaTeX comments''). +% +% The initial value is |\ttfamily| and, thus, \pkg{piton} uses by default the +% current monospaced font. % % \item \index{gobble}\label{gobble} The key \Definition{gobble} takes in as % value a positive integer~$n$: the first $n$ characters are discarded (before @@ -395,6 +400,9 @@ piton_version = "3.0b" -- 2024/05/23 % the part~\ref{API}, p.~\pageref{API}).} of the current environment in % that file. At the first use of a file by \pkg{piton}, it is erased. % +% {\bfseries This key requires a compilation with {\ttfamily lualatex +% -shell-escape}}. +% % \item \index{path-write} The key \Definition{path-write} specifies a path % where the files written by the key |write| will be written. % @@ -431,6 +439,12 @@ piton_version = "3.0b" -- 2024/05/23 % \item The key \Definition{line-numbers/sep} is the horizontal distance between % the numbers of lines (inserted by |line-numbers|) and the beginning of the % lines of code. The initial value is 0.7~em. +% \item The key \Definition{line-numbers/format} is a list of tokens which are inserted before +% the number of line in order to format it. It's possible to put, \emph{at the +% end} of the list, a LaTeX command with one argument, such as, for example, +% |\fbox|. +% +% The initial value is |\footnotesize\color{gray}|. % \end{itemize} % % For convenience, a mechanism of factorisation of the prefix |line-numbers| is @@ -442,7 +456,8 @@ piton_version = "3.0b" -- 2024/05/23 % { % skip-empty-lines = false , % label-empty-lines = false , -% sep = 1 em +% sep = 1 em , +% format = \footnotesize \color{blue} % } % } % \end{Verbatim} @@ -468,11 +483,12 @@ piton_version = "3.0b" -- 2024/05/23 % this case, the successive rows are colored by using the colors of the list in % a cyclic way. % -% \emph{Example} : |\PitonOptions{background-color = {gray!5,white}}| +% \emph{Example} : |\PitonOptions{background-color = {gray!15,white}}| % % The key |background-color| accepts a color defined «on the fly». For example, % it's possible to write |background-color = [cmyk]{0.1,0.05,0,0}|. % +% % \item \index{prompt-background-color} With the key % \Definition{prompt-background-color}, \pkg{piton} adds a % color background to the lines beginning with the prompt ``|>>>|'' (and its @@ -503,10 +519,10 @@ piton_version = "3.0b" -- 2024/05/23 % only to the short strings (delimited by~\verb|'| or~\verb|"|). In OCaml, that % feature does not apply to the \emph{quoted strings}.} are replaced by the % character~␣ (U+2423 : \textsc{open box}). Of course, that character~U+2423 -% must be present in the monospaced font which is used.\footnote{The package -% \pkg{piton} simply uses the current monospaced font. The best way to change -% that font is to use the command \texttt{\textbackslash setmonofont} of the -% package \pkg{fontspec}.}\par\nobreak \begingroup +% must be present in the monospaced font which is used.\footnote{The initial +% value of |font-command| is |\ttfamily| and, thus, by default, \pkg{piton} +% merely uses the current monospaced font.}\par\nobreak +% \begingroup % \PitonOptions{show-spaces-in-strings} Example : % \piton|my_string = 'Very good answer'| \endgroup % @@ -579,7 +595,7 @@ piton_version = "3.0b" -- 2024/05/23 % % The package \pkg{piton} provides the command % \DefinitionCommand{SetPitonStyle} to customize the different styles used to -% format the syntactic elements of the Python listings. The customizations done +% format the syntactic elements of the informatic listings. The customizations done % by that command are limited to the current TeX group.\footnote{We remind that % a LaTeX environment is, in particular, a TeX group.} % @@ -603,24 +619,25 @@ piton_version = "3.0b" -- 2024/05/23 % package \pkg{luacolor}). % % \begin{verbatim} -% \SetPitonStyle{ Name.Function = \bfseries \highLight[red!50] } +% \SetPitonStyle{ Name.Function = \bfseries \highLight[red!30] } % \end{verbatim} % -% In that example, |\highLight[red!50]| must be considered as the name of a +% In that example, |\highLight[red!30]| must be considered as the name of a % LaTeX command which takes in exactly one argument, since, usually, it is used -% with |\highLight[red!50]{...}|. +% with |\highLight[red!30]{...}|. % % \medskip % \begingroup % \SetPitonStyle -% { Name.Function = \bfseries \highLight[red!50] } +% { Name.Function = \bfseries \highLight[red!30] } % With that setting, we will have : \piton{def cube(x) : return x * x * x } % \endgroup % % \bigskip % The different styles, and their use by \pkg{piton} in the different languages -% which it supports (Python, OCaml, C, SQL and ``|minimal|''), are described in -% the part \ref{Semantic}, starting at the page \pageref{Semantic}. +% which it supports (Python, OCaml, C, SQL, ``|minimal|'' and ``|verbatim|''), +% are described in the part \ref{Semantic}, starting at the page +% \pageref{Semantic}. % % % \bigskip @@ -664,7 +681,7 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % For example, with the command % \begin{Verbatim} -% \SetPitonStyle~emphase#[SQL]@{Keywords = \color[HTML]{006699} \bfseries \MakeUppercase} +% \SetPitonStyle~emphase#[SQL]@{Keyword = \color[HTML]{006699} \bfseries \MakeUppercase} % \end{Verbatim} % the keywords in the SQL listings will be composed in capital letters, even if % they appear in lower case in the LaTeX source (we recall that, in SQL, the @@ -690,10 +707,12 @@ piton_version = "3.0b" -- 2024/05/23 % The extension \pkg{piton} provides a special style called~|UserFunction|. That % style applies to the names of the functions previously defined by the user % (for example, in Python, these names are those following the keyword -% \piton{def} in a previous Python listing). The initial value of that style is -% empty, and, therefore, the names of the functions are formatted as standard -% text (in black). However, it's possible to change the value of that style, as -% any other style, with the command |\SetPitonStyle|. +% \piton{def} in a previous Python listing). The initial value of that style +% |\PitonStyle{Identifier}| and, therefore, the names of the functions are +% formatted like the other identifiers (that is to say, by default, with no +% special formatting except the features provided in |font-command|). However, +% it's possible to change the value of that style, as any other style, with the +% command |\SetPitonStyle|. % % \medskip % In the following example, we tune the styles |Name.Function| and |UserFunction| @@ -819,7 +838,6 @@ piton_version = "3.0b" -- 2024/05/23 % \indexcommand{NewPitonLanguage} % \label{NewPitonLanguage} % \index{listings@\pkg{listings} (extension)} -% \colorbox{yellow!50}{\textbf{New 3.0}} % % \medskip % The package \pkg{listings} is a famous LaTeX package to format informatic @@ -838,8 +856,8 @@ piton_version = "3.0b" -- 2024/05/23 % syntax of~|\lstdefinelanguage|. % % Let's precise that \pkg{piton} does \emph{not} use that command to define the -% languages provided natively (Python, OCaml, \CC, SQL and |minimal|), which -% allows more powerful parsers. +% languages provided natively (Python, OCaml, C, SQL, |minimal| and |verbatim|), +% which allows more powerful parsers. % % \medskip % For example, in the file |lstlang1.sty|, which is one of the definition files @@ -911,7 +929,7 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % \begingroup % \small -% \PitonOptions{split-on-empty-lines} +% \PitonOptions{splittable-on-empty-lines} % \begin{Piton}[language = java] % public class Cipher { // Caesar cipher % public static void main(String[] args) { @@ -970,135 +988,55 @@ piton_version = "3.0b" -- 2024/05/23 % category of the letters. % % \section{Advanced features} +% \subsection{Insertion of a file} % -% \subsection{Page breaks and line breaks} +% \label{PitonInputFile} % -% \label{breakable} +% \subsubsection{The command \textbackslash PitonInputFile} % -% \subsubsection{Page breaks} -% \index{splittable} -% -% By default, the listings produced by the environment |{Piton}| and the command -% |\PitonInputFile| are not breakable. -% -% However, the command |\PitonOptions| provides the keys |split-on-empty-lines| -% and |splittable| to allow such breaks. -% -% \begin{itemize} -% \item The key \Definition{split-on-empty-lines} allows breaks on the empty -% lines\footnote{The ``empty lines'' are the lines which contains only spaes.} in -% the listing. In the informatic listings, the empty lines usually separate the -% definitions of the informatic functions and it's pertinent to allow breaks -% between these functions. -% -% In fact, when the key |split-on-empty-lines| is in force, the work goes a -% little further than merely allowing page breaks: several successive empty lines -% are deleted and replaced by the content of the parameter corresponding to the -% key \Definition{split-separation}. The initial value of this parameter is -% |\vspace{\baselineskip}\vspace{-1.25pt}| which corresponds eventually to an -% empty line in the final PDF (this vertical space is deleted if it occurs on a -% page break). -% -% \item Of course, the key |split-on-empty-lines| may not be sufficient and -% that's why \pkg{piton} provides the key \Definition{splittable}. -% -% When the key |splittable| is used with the numeric value~$n$ (which must be a -% positive integer) the listing, or each part of the listing delimited by empty -% lines (when |split-on-empty-lines| is in force) may be broken anywhere with -% the restriction that no break will occur within the $n$ first lines of -% the listing or within the $n$ last lines. For example, a tuning with -% |splittable = 4| may be a good choice. +% \indexcommand{PitonInputFile} % -% When used without value, the key |splittable| is equivalent to -% |splittable = 1| and the listings may be broken anywhere (it's probably -% not recommandable). -% \end{itemize} +% The command \DefinitionCommand{PitonInputFile} includes the content of the +% file specified in argument (or only a part of that file: see below). The +% extension \pkg{piton} also provides the commands +% \DefinitionCommand{PitonInputFileT}, \DefinitionCommand{PitonInputFileF} and +% \DefinitionCommand{PitonInputFileTF} with supplementary arguments +% corresponding to the letters~|T| and~|F|. Those arguments will be executed if +% the file to include has been found (letter~|T|) or not found (letter~|F|). % +% \bigskip +% \colorbox{yellow!50}{\textbf{Modification 4.0}}\par\nobreak % +% \index{old-PitonInputFile} +% \smallskip +% The syntax for the absolute and relative paths has been changed in order to +% be conform to the traditionnal usages. However, it's possible to use the key +% \Definition{old-PitonInputFile} at load-time (that is to say with the +% |\usepackage|) in order to have the old behaviour (though, that key will be +% deleted in a future version of \pkg{piton}!). % -% \medskip -% Even with a background color (set by the key |background-color|), the pages -% breaks are allowed, as soon as the key |split-on-empty-lines| or the key -% |splittable| is in force.\footnote{With the key |splittable|, the environments -% \texttt{\{Piton\}} are breakable, even within a (breakable) environment of -% \pkg{tcolorbox}. Remind that an environment of \pkg{tcolorbox} included in -% another environment of \pkg{tcolorbox} is \emph{not} breakable, even when both -% environments use the key |breakable| of \pkg{tcolorbox}.} -% -% -% \subsubsection{Line breaks} -% -% \label{line-breaks} -% -% By default, the elements produced by \pkg{piton} can't be broken by an end on -% line. However, there are keys to allow such breaks (the possible breaking -% points are the spaces, even the spaces in the Python strings). -% \begin{itemize} -% \item \index{break-lines!break-lines-in-piton} With the key -% \Definition{break-lines-in-piton}, the line breaks are allowed in the command -% |\piton{...}| (but not in the command \verb+\piton|...|+, that is to say the -% command |\piton| in verbatim mode). -% \item \index{break-lines!break-lines-in-Piton} With the key -% \Definition{break-lines-in-Piton}, the line breaks are allowed in the -% environment |{Piton}| (hence the capital letter |P| in the name) and in the -% listings produced by |\PitonInputFile|. -% \item \index{break-lines} The key \Definition{break-lines} is a conjunction of -% the two previous keys. -% \end{itemize} -% -% \bigskip -% The package \pkg{piton} provides also several keys to control the appearance -% on the line breaks allowed by |break-lines-in-Piton|. -% +% \smallskip +% Now, the syntax is the following one: % \begin{itemize} -% \item \index{indent-broken-lines} With the key -% \Definition{indent-broken-lines}, the indentation of a -% broken line is respected at carriage return. +% \item The paths beginning by |/| are absolute. % -% \item The key \Definition{end-of-broken-line} corresponds to the symbol placed -% at the end of a broken line. The initial value is: -% |\hspace*{0.5em}\textbackslash|. +% \emph{Example} : |\PitonInputFile{/Users/joe/Documents/program.py}| % -% \item \index{continuation-symbol} The key \Definition{continuation-symbol} -% corresponds to the symbol placed at each carriage return. The initial value -% is: |+\;| (the command |\;| inserts a small horizontal space). +% \item The paths which do not begin with |/| are relative to the current +% repertory. % -% \item \index{continuation-symbol-on-indentation} -% The key \Definition{continuation-symbol-on-indentation} corresponds to -% the symbol placed at each carriage return, on the position of the indentation -% (only when the key |indent-broken-line| is in force). The initial value is: -% |$\hookrightarrow\;$|. +% \emph{Example} : |\PitonInputFile{my_listings/program.py}| % \end{itemize} % +% \index{path} +% The key \Definition{path} of the command |\PitonOptions| specifies a +% \emph{list} of paths where the files included by |\PitonInputFile| will be +% searched. That list is comma separated. % -% \bigskip -% The following code has been composed with the following tuning: -% -% \begin{Verbatim} -% \PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} -% \end{Verbatim} -% -% \begin{center} -% \PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} -% \begin{Piton} -% def dict_of_list(l): -% """Converts a list of subrs and descriptions of glyphs in a dictionary""" -% our_dict = {} -% for list_letter in l: -% if (list_letter[0][0:3] == 'dup'): # if it's a subr -% name = list_letter[0][4:-3] -% print("We treat the subr of number " + name) -% else: -% name = list_letter[0][1:-3] # if it's a glyph -% print("We treat the glyph of number " + name) -% our_dict[name] = [treat_Postscript_line(k) for k in list_letter[1:-1]] -% return dict -% \end{Piton} -% \end{center} -% +% As previously, the absolute paths must begin with |/|. % % \bigskip -% \subsection{Insertion of a part of a file} +% \subsubsection{Insertion of a part of a file} % % \label{part-of-a-file} % \indexcommand{PitonInputFile} @@ -1114,7 +1052,8 @@ piton_version = "3.0b" -- 2024/05/23 % In both cases, if we want to number the lines with the numbers of the % lines in the file, we have to use the key |line-numbers/absolute|. % -% \subsubsection{With line numbers} +% \bigskip +% \textbf{With line numbers}\par\nobreak % % The command |\PitonInputFile| supports the keys \Definition{first-line} and % \Definition{last-line} in order to insert only the part of file between the @@ -1123,7 +1062,8 @@ piton_version = "3.0b" -- 2024/05/23 % |line-numbers/start| deals with the output whereas |first-line| and % |last-line| deal with the input. % -% \subsubsection{With textual markers} +% \bigskip +% \textbf{With textual markers}\par\nobreak % % \index{marker/beginning} % \index{marker/end} @@ -1239,6 +1179,217 @@ piton_version = "3.0b" -- 2024/05/23 % % % +% \bigskip +% \subsection{Page breaks and line breaks} +% +% \label{breakable} +% +% \subsubsection{Line breaks} +% +% \label{line-breaks} +% +% By default, the elements produced by \pkg{piton} can't be broken by an end on +% line. However, there are keys to allow such breaks (the possible breaking +% points are the spaces, even the spaces which appear in the strings of the +% informatic languages). +% \begin{itemize} +% \item \index{break-lines!break-lines-in-piton} With the key +% \Definition{break-lines-in-piton}, the line breaks are allowed in the command +% |\piton{...}| (but not in the command \verb+\piton|...|+, that is to say the +% command |\piton| in verbatim mode). +% \item \index{break-lines!break-lines-in-Piton} With the key +% \Definition{break-lines-in-Piton}, the line breaks are allowed in the +% environment |{Piton}| (hence the capital letter |P| in the name) and in the +% listings produced by |\PitonInputFile|. +% \item \index{break-lines} The key \Definition{break-lines} is a conjunction of +% the two previous keys. +% \end{itemize} +% +% \bigskip +% The package \pkg{piton} provides also several keys to control the appearance +% on the line breaks allowed by |break-lines-in-Piton|. +% +% \begin{itemize} +% \item \index{indent-broken-lines} With the key +% \Definition{indent-broken-lines}, the indentation of a +% broken line is respected at carriage return (on the condition that the used +% font is a monospaced font and this is the case by default since the initial +% value of |font-command| is |\ttfamily|). +% +% \item The key \Definition{end-of-broken-line} corresponds to the symbol placed +% at the end of a broken line. The initial value is: +% |\hspace*{0.5em}\textbackslash|. +% +% \item \index{continuation-symbol} The key \Definition{continuation-symbol} +% corresponds to the symbol placed at each carriage return. The initial value +% is: |+\;| (the command |\;| inserts a small horizontal space). +% +% \item \index{continuation-symbol-on-indentation} +% The key \Definition{continuation-symbol-on-indentation} corresponds to +% the symbol placed at each carriage return, on the position of the indentation +% (only when the key |indent-broken-line| is in force). The initial value is: +% |$\hookrightarrow\;$|. +% \end{itemize} +% +% +% \bigskip +% The following code has been composed with the following tuning: +% +% \begin{Verbatim} +% \PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} +% \end{Verbatim} +% +% \begin{center} +% \PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15} +% \begin{Piton} +% def dict_of_list(l): +% """Converts a list of subrs and descriptions of glyphs in a dictionary""" +% our_dict = {} +% for list_letter in l: +% if (list_letter[0][0:3] == 'dup'): # if it's a subr +% name = list_letter[0][4:-3] +% print("We treat the subr of number " + name) +% else: +% name = list_letter[0][1:-3] # if it's a glyph +% print("We treat the glyph of number " + name) +% our_dict[name] = [treat_Postscript_line(k) for k in list_letter[1:-1]] +% return dict +% \end{Piton} +% \end{center} +% +% \bigskip +% \colorbox{yellow!50}{\bfseries{New 4.1}}\par\nobreak +% +% \smallskip +% With the key \Definition{break-strings-anywhere}, the strings may be broken +% anywhere (and not only on the spaces). +% +% \subsubsection{Page breaks} +% \label{page breaks} +% \index{splittable} +% \index{splittable-on-empty-lines} +% +% By default, the listings produced by the environment |{Piton}| and the command +% |\PitonInputFile| are not breakable. +% +% However, \pkg{piton} provides the keys |splittable-on-empty-lines| and +% |splittable| to allow such breaks. +% +% \begin{itemize} +% \item The key \Definition{splittable-on-empty-lines} allows breaks on the empty +% lines. The ``empty lines'' are in fact the lines which contains only spaces. +% +% \item Of course, the key |splittable-on-empty-lines| may not be sufficient and +% that's why \pkg{piton} provides the key \Definition{splittable}. +% +% When the key |splittable| is used with the numeric value~$n$ (which must be a +% positive integer) the listing, or each part of the listing delimited by empty +% lines (when |split-on-empty-lines| is in force) may be broken anywhere with +% the restriction that no break will occur within the $n$ first lines of +% the listing or within the $n$ last lines.\footnote{Remark that we speak of the +% lines of the original informatic listing and such line may be composed on +% several lines in the final \textsc{pdf} when the key |break-lines-in-Piton| is +% in force.} +% +% For example, a tuning with |splittable = 4| may be a good choice. +% +% When used without value, the key |splittable| is equivalent to +% |splittable = 1| and the listings may be broken anywhere (it's probably +% not recommandable). +% +% The initial value of the key |splittable| is equal to 100 (by default, the +% listings are not breakable at all). +% \end{itemize} +% +% \medskip +% Even with a background color (set by the key |background-color|), the pages +% breaks are allowed, as soon as the key |split-on-empty-lines| or the key +% |splittable| is in force.\footnote{With the key |splittable|, the environments +% \texttt{\{Piton\}} are breakable, even within a (breakable) environment of +% \pkg{tcolorbox}. Remind that an environment of \pkg{tcolorbox} included in +% another environment of \pkg{tcolorbox} is \emph{not} breakable, even when both +% environments use the key |breakable| of \pkg{tcolorbox}.} +% +% \subsection{Splitting of a listing in sub-listings} +% +% \index{split-on-empty-lines} +% \label{split-on-empty-lines} +% \index{split-separation} +% +% The extension \pkg{piton} provides the key \Definition{split-on-empty-lines}, +% which should not be confused with the key |splittable-on-empty-lines| +% previously defined. +% +% \smallskip +% In order to understand the behaviour of the key |split-on-empty-lines|, one +% should imagine that he has to compose an informatic listing which contains +% several definitions of informatic functions. Usually, in the informatic +% languages, those definitions of functions are separated by empty lines. +% +% \smallskip +% The key |split-on-empty-lines| splits the listings on the empty lines. Several +% empty lines are deleted and replaced by the content of the parameter +% corresponding to the key \Definition{split-separation}. +% \begin{itemize} +% \item That parameter must contain elements allowed to be inserted in +% \emph{vertical mode} of TeX. For example, it's possible to put the TeX +% primitive |\hrule|. +% +% \item The initial value of this parameter is +% |\vspace{\baselineskip}\vspace{-1.25pt}| which corresponds eventually to an +% empty line in the final \textsc{pdf} (this vertical space is deleted if it +% occurs on a page break). If the key |background-color| is in force, no +% background color is added to that empty line. +% \end{itemize} +% +% +% \colorbox{yellow!50}{\textbf{New 4.0}}\par\nobreak +% Each chunk of the informatic listing is composed in an environment whose name +% is given by the key \Definition{env-used-by-split}. The initial value of that +% parameter is, not surprisingly, |Piton| and, hence, the different chunks are +% composed in several environments |{Piton}|. If one decides to change the value +% of |env-used-by-split|, he should use the name of an environment created by +% |\NewPitonEnvironment| (cf.~part~\ref{NewPitonEnvironment}, +% p.~\pageref{NewPitonEnvironment}). +% +% Each chunk of the informatic listing is formated in its own environment. +% Therefore, it has its own line numbering (if the key +% |line-numbers| is in force) and its own colored background (when the key +% |background-color| is in force), separated from the background color of the +% other chunks. When used, the key |splittable| applies in each chunk +% (independently of the other chunks). Of course, a page break may occur between +% the chunks of code, regardless of the value of |splittable|. +% +% \bigskip +% \begin{Verbatim} +% \begin{Piton}[~emphase#split-on-empty-lines@,background-color=gray!15,line-numbers] +% def square(x): +% """Computes the square of x""" +% return x*x +% +% def cube(x): +% """Calcule the cube of x""" +% return x*x*x +% \end{Piton} +% \end{Verbatim} +% +% +% \begin{Piton}[split-on-empty-lines,background-color=gray!15,line-numbers] +% def square(x): +% """Computes the square of x""" +% return x*x +% +% def cube(x): +% """Calcule the cube of x""" +% return x*x*x +% \end{Piton} +% +% \bigskip +% \textbf{Caution}: Since each chunk is treated independently of the others, the +% commands specified by |detected-commands| and the commands and environments +% of Beamer automatically detected by \pkg{piton} must not cross the enmpty +% lines of the original listing. +% % \subsection{Highlighting some identifiers} % % \label{SetPitonIdentifier} @@ -1260,7 +1411,7 @@ piton_version = "3.0b" -- 2024/05/23 % identifiers. % % \item The second mandatory argument is a list of LaTeX instructions of the -% same type as \pkg{piton} ``styles'' previously presented (cf~\ref{styles} +% same type as \pkg{piton} ``styles'' previously presented (cf.~\ref{styles} % p.~\pageref{styles}). % \end{itemize} % @@ -1458,8 +1609,14 @@ piton_version = "3.0b" -- 2024/05/23 % between braces (and these braces must appear explicitly in the informatic listing). % \end{itemize} % -% \medskip -% We assume that the preamble of the LaTeX document contains the following line. +% \bigskip +% In the following example, which is a recursive programmation of the factorial +% function, we decide to highlight the recursive call. The command |\highLight| +% of \pkg{lua-ul}\footnote{The package \pkg{lua-ul} requires itself the package +% \pkg{luacolor}.} directly does the job with the easy syntax |\highLight{...}|. +% +% \medskip +% We assume that the preamble of the LaTeX document contains the following line: % \begin{Verbatim} % \PitonOptions{~emphase#detected-commands@ = highLight} % \end{Verbatim} @@ -1488,7 +1645,7 @@ piton_version = "3.0b" -- 2024/05/23 % % \label{escape} % -% It's also possible to overwrite the Python listings to insert LaTeX code +% It's also possible to overwrite the informatic listings to insert LaTeX code % almost everywhere (but between lexical units, of course). By default, % \pkg{piton} does not fix any delimiters for that kind of escape. % @@ -1506,8 +1663,8 @@ piton_version = "3.0b" -- 2024/05/23 % possible to achieve our goal with the more general mechanism ``escape''. % % \medskip -% We assume that the preamble of the document contains -% the following instruction: +% We assume that the preamble of the document contains the following +% instruction: % % \begin{Verbatim} % \PitonOptions{~emphase#begin-escape=!,end-escape=!@} @@ -1536,16 +1693,15 @@ piton_version = "3.0b" -- 2024/05/23 % % % \bigskip -% \emph{Caution} : The escape to LaTeX allowed by the |begin-escape| and -% |end-escape| is not active in the strings nor in the Python comments (however, -% it's possible to have a whole Python comment composed in LaTeX by beginning it -% with |#>|; such comments are merely called ``LaTeX comments'' in this -% document). +% \emph{Caution} : The mechanism ``escape'' is not active in the strings nor in +% the Python comments (however, it's possible to have a whole Python comment +% composed in LaTeX by beginning it with |#>|; such comments are merely called +% ``LaTeX comments'' in this document). % % % \subsubsection{The mechanism ``escape-math''} % -% The mechanism ``|escape-math|'' is very similar to the mechanism ``|escape|'' +% The mechanism ``escape-math'' is very similar to the mechanism ``escape'' % since the only difference is that the elements sent to LaTeX are composed in % the math mode of LaTeX. % @@ -1554,13 +1710,13 @@ piton_version = "3.0b" -- 2024/05/23 % document}). % % Despite the technical similarity, the use of the the mechanism -% ``|escape-math|'' is in fact rather different from that of the mechanism -% ``|escape|''. Indeed, since the elements are composed in a mathématical mode -% of LaTeX, they are, in particular, composed within a TeX group and therefore, +% ``escape-math'' is in fact rather different from that of the mechanism +% ``escape''. Indeed, since the elements are composed in a mathematical mode +% of LaTeX, they are, in particular, composed within a TeX group and, therefore, % they can't be used to change the formatting of other lexical units. % % In the languages where the character \verb|$| does not play a important role, -% it's possible to activate that mechanism ``|escape-math|'' with the character +% it's possible to activate that mechanism ``escape-math'' with the character % \verb|$|: % \begin{Verbatim} % \PitonOptions{~emphase#begin-escape-math=$,end-escape-math=$@} @@ -1568,7 +1724,8 @@ piton_version = "3.0b" -- 2024/05/23 % Remark that the character \verb|$| must \emph{not} be protected by a backslash. % % \bigskip -% However, it's probably more prudent to use |\(| et |\)|. +% However, it's probably more prudent to use |\(| et |\)|, which are delimiters +% of the mathematical mode provided by LaTeX. % \begin{Verbatim} % \PitonOptions{~emphase#begin-escape-math=\(,end-escape-math=\)@} % \end{Verbatim} @@ -1654,6 +1811,8 @@ piton_version = "3.0b" -- 2024/05/23 % % \subsubsection{Commands of Beamer allowed in \{Piton\} and \textbackslash PitonInputFile} % +% \index{detected-beamer-commands} +% % When \pkg{piton} is used in the class \cls{beamer} , the following commands of % \cls{beamer} (classified upon their number of arguments) are automatically % detected in the environments |{Piton}| (and in the listings processed by @@ -1663,17 +1822,22 @@ piton_version = "3.0b" -- 2024/05/23 % also possible to use the command \texttt{\textbackslash pause} in a ``LaTeX % comment'', that is to say by writing \texttt{\#> \textbackslash pause}. By % this way, if the Python code is copied, it's still executable by Python}. ; -% \item one mandatory argument : |\action|, |\alert|, |\invisible|, |\only|, |\uncover| and |\visible| ; +% \item one mandatory argument : |\action|, |\alert|, |\invisible|, |\only|, +% |\uncover| and |\visible| ; \newline +% % It's possible to add new commands to that list with the key +% \Definition{detected-beamer-commands} (the names of the commands must +% \emph{not} be preceded by a backslash). % \item two mandatory arguments : |\alt| ; % \item three mandatory arguments : |\temporal|. % \end{itemize} -% \medskip -% In the mandatory arguments of these commands, the braces must be balanced. -% However, the braces included in short strings\footnote{The short strings of -% Python are the strings delimited by characters \texttt{'} or the characters -% \texttt{"} and not \texttt{'''} nor \texttt{"""}. In Python, the short strings -% can't extend on several lines.} of Python are not considered. +% \medskip +% These commands must be used preceded and following by a space. In the +% mandatory arguments of these commands, the braces must be balanced. However, +% the braces included in short strings\footnote{The short strings of Python are +% the strings delimited by characters \texttt{'} or the characters \texttt{"} +% and not \texttt{'''} nor \texttt{"""}. In Python, the short strings can't +% extend on several lines.} of Python are not considered. % % \medskip % Regarding the functions |\alt| and |\temporal| there should be no carriage @@ -1713,8 +1877,16 @@ piton_version = "3.0b" -- 2024/05/23 % listings processed by |\PitonInputFile|): |{actionenv}|, |{alertenv}|, % |{invisibleenv}|, |{onlyenv}|, |{uncoverenv}| and |{visibleenv}|. % +% \smallskip +% \index{detected-beamer-environments} +% It's possible to add new environments to that list with the key +% \Definition{detected-beamer-environments}. +% +% \smallskip +% % However, there is a restriction: these environments must contain only \emph{whole -% lines of Python code} in their body. +% lines of Python code} in their body. The instructions |\begin{...}| and +% |\end{...}| must be alone on their lines. % %\medskip % Here is an example: @@ -1810,10 +1982,98 @@ piton_version = "3.0b" -- 2024/05/23 % in particular: it must be loaded after the package \pkg{xcolor} and it is not % perfectly compatible with \pkg{hyperref}. % +% +% \medskip +% \textbf{Important remark} : If you use Beamer, you should know taht Beamer has +% its own system to extract the footnotes. Therefore, \pkg{piton} must be loaded +% in that class without the option |footnote| nor the option |footnotehyper|. +% +% +% \bigskip +% By default, in an environment |{Piton}|, a command |\footnote| may appear only +% within a ``LaTeX comment''. But it's also possible to add the command +% |\footnote| to the list of the ``\emph{detected-commands}'' +% (cf.~part~\ref{detected-commands}, p.~\pageref{detected-commands}). + % \medskip % In this document, the package \pkg{piton} has been loaded with the -% option |footnotehyper|. For examples of notes, cf. \ref{notes-examples}, -% p.~\pageref{notes-examples}. +% option |footnotehyper| dans we added the command |\footnote| to the list of +% the ``\emph{detected-commands}'' with the following instruction in the +% preamble of the LaTeX document. +% +% \qquad \verb|\PitonOptions{detected-commands = footnote}| +% +% +% \begingroup +% \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} +% \begin{Verbatim} +% \PitonOptions{background-color=gray!15} +% \begin{Piton} +% def arctan(x,n=10): +% if x < 0: +% return -arctan(-x)~emphase&\footnote{First recursive call.}]@ +% elif x > 1: +% return pi/2 - arctan(1/x)~emphase&\footnote{Second recursive call.}@ +% else: +% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +% \end{Piton} +% \end{Verbatim} +% \endgroup +% +% \begingroup +% \PitonOptions{background-color=gray!15} +% \begin{Piton} +% def arctan(x,n=10): +% if x < 0: +% return -arctan(-x)\footnote{First recursive call.} +% elif x > 1: +% return pi/2 - arctan(1/x)\footnote{Second recursive call.} +% else: +% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +% \end{Piton} +% \endgroup +% +% +% \vspace{1cm} +% +% If an environment |{Piton}| is used in an environment |{minipage}| of LaTeX, +% the notes are composed, of course, at the foot of the environment +% |{minipage}|. Recall that such |{minipage}| can't be broken by a page break. +% +% +% \begingroup +% \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} +% \begin{Verbatim} +% \PitonOptions{background-color=gray!15} +% \emphase\begin{minipage}{\linewidth} +% \begin{Piton} +% def arctan(x,n=10): +% if x < 0: +% return -arctan(-x)~emphase&\footnote{First recursive call.}@ +% elif x > 1: +% return pi/2 - arctan(1/x)~emphase&\footnote{Second recursive call.}@ +% else: +% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +% \end{Piton} +% \end{minipage} +% \end{Verbatim} +% \endgroup +% +% \begingroup +% \PitonOptions{background-color=gray!15} +% \begin{minipage}{\linewidth} +% \begin{Piton} +% def arctan(x,n=10): +% if x < 0: +% return -arctan(-x)\footnote{First recursive call.} +% elif x > 1: +% return pi/2 - arctan(1/x)\footnote{Second recursive call.} +% else: +% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) +% \end{Piton} +% \end{minipage} +% \endgroup +% % % \subsection{Tabulations} % @@ -1821,8 +2081,9 @@ piton_version = "3.0b" -- 2024/05/23 % \index{tab-size} % % \smallskip -% Even though it's recommended to indent the Python listings with spaces (see -% PEP~8), \pkg{piton} accepts the characters of tabulation (that is to say the +% Even though it's probably recommended to indent the informatics listings with +% spaces and not tabulations\footnote{For the language Python, see the note % +% PEP~8}, \pkg{piton} accepts the characters of tabulation (that is to say the % characters U+0009) at the beginning of the lines. Each character U+0009 is % replaced by $n$~spaces. The initial value of $n$ is $4$ but it's possible to % change it with the key \Definition{tab-size} of |\PitonOptions|. @@ -1835,21 +2096,22 @@ piton_version = "3.0b" -- 2024/05/23 % course). Hence, that key is similar to the key |auto-gobble| but acts on % U+0009 instead of U+0020 (spaces). % +% The key |env-gobble| is not compatible with the tabulations. +% % % \bigskip % \section{API for the developpers} % % \label{API} % -% The L3 variable |\l_piton_language_str| contains the name of the current -% language of \pkg{piton} (in lower case). +% The L3 variable \DefinitionCommand{l_piton_language_str} contains the name of +% the current language of \pkg{piton} (in lower case). % % \bigskip -% \colorbox{yellow!50}{\textbf{New 2.6}}\par\nobreak % -% The extension \pkg{piton} provides a Lua function |piton.get_last_code| -% without argument which returns the code in the latest environment of -% \pkg{piton}. +% The extension \pkg{piton} provides a Lua function +% \Definition{piton.get_last_code} without argument which returns the code in +% the latest environment of \pkg{piton}. % \begin{itemize} % \item The carriage returns (which are present in the initial environment) % appears as characters |\r| (i.e. U+000D). @@ -1882,7 +2144,7 @@ piton_version = "3.0b" -- 2024/05/23 % \index{numbers of the lines de code|emph} % % We remind that it's possible to have an automatic numbering of the lines in -% the Python listings by using the key |line-numbers|. +% the informatic listings by using the key |line-numbers| (used without value). % % By default, the numbers of the lines are composed by \pkg{piton} in an % overlapping position on the left (by using internally the command |\llap| of LaTeX). @@ -1895,7 +2157,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begingroup % \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} % \begin{Verbatim} -% ~emphase&\PitonOptions{background-color=gray!10, left-margin = auto, line-numbers}@ +% ~emphase&\PitonOptions{background-color=gray!15, left-margin = auto, line-numbers}@ % \begin{Piton} % def arctan(x,n=10): % if x < 0: @@ -1911,7 +2173,7 @@ piton_version = "3.0b" -- 2024/05/23 % % % \begingroup -% \PitonOptions{background-color=gray!10,left-margin = auto, line-numbers} +% \PitonOptions{background-color=gray!15,left-margin = auto, line-numbers} % \begin{Piton} % def arctan(x,n=10): % if x < 0: @@ -1938,7 +2200,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begingroup % \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} % \begin{Verbatim} -% \PitonOptions{background-color=gray!10} +% \PitonOptions{background-color=gray!15} % ~emphase&\SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}}@ % \begin{Piton} % def arctan(x,n=10): @@ -1953,7 +2215,7 @@ piton_version = "3.0b" -- 2024/05/23 % \endgroup % % \begingroup -% \PitonOptions{background-color=gray!10} +% \PitonOptions{background-color=gray!15} % \SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}} % \begin{Piton} % def arctan(x,n=10): @@ -1976,7 +2238,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begingroup % \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} % \begin{Verbatim} -% \PitonOptions{background-color=gray!10, width=min} +% \PitonOptions{background-color=gray!15, width=min} % ~emphase&\NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}}@ % ~emphase&\SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand}@ % \begin{Piton} @@ -1997,7 +2259,7 @@ piton_version = "3.0b" -- 2024/05/23 % % % \begingroup -% \PitonOptions{background-color=gray!10, width=min} +% \PitonOptions{background-color=gray!15, width=min} % \NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}} % \SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand} % \begin{Piton} @@ -2015,94 +2277,7 @@ piton_version = "3.0b" -- 2024/05/23 % \endgroup % % -% \bigskip -% \subsection{Notes in the listings} -% -% \label{notes-examples} -% \index{notes in the listings} % -% In order to be able to extract the notes (which are typeset with the command -% |\footnote|), the extension \pkg{piton} must be loaded with the key |footnote| -% or the key |footenotehyper| as explained in the section \ref{footnote} -% p.~\pageref{footnote}. In this document, the extension \pkg{piton} has been -% loaded with the key |footnotehyper|. -% -% Of course, in an environment |{Piton}|, a command |\footnote| may appear only -% within a LaTeX comment (which begins with |#>|). It's possible to have comments -% which contain only that command |\footnote|. That's the case in the following example. -% -% -% -% \begingroup -% \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} -% \begin{Verbatim} -% \PitonOptions{background-color=gray!10} -% \begin{Piton} -% def arctan(x,n=10): -% if x < 0: -% return -arctan(-x)~emphase&#>\footnote{First recursive call.}]@ -% elif x > 1: -% return pi/2 - arctan(1/x)~emphase&#>\footnote{Second recursive call.}@ -% else: -% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -% \end{Piton} -% \end{Verbatim} -% \endgroup -% -% \begingroup -% \PitonOptions{background-color=gray!10} -% \begin{Piton} -% def arctan(x,n=10): -% if x < 0: -% return -arctan(-x)#>\footnote{First recursive call.} -% elif x > 1: -% return pi/2 - arctan(1/x)#>\footnote{Second recursive call.} -% else: -% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -% \end{Piton} -% \endgroup -% -% -% \vspace{1cm} -% -% If an environment |{Piton}| is used in an environment |{minipage}| of LaTeX, -% the notes are composed, of course, at the foot of the environment -% |{minipage}|. Recall that such |{minipage}| can't be broken by a page break. -% -% -% \begingroup -% \fvset{commandchars=\~\&\@,formatcom=\small\color{gray}} -% \begin{Verbatim} -% \PitonOptions{background-color=gray!10} -% \emphase\begin{minipage}{\linewidth} -% \begin{Piton} -% def arctan(x,n=10): -% if x < 0: -% return -arctan(-x)~emphase&#>\footnote{First recursive call.}@ -% elif x > 1: -% return pi/2 - arctan(1/x)~emphase&#>\footnote{Second recursive call.}@ -% else: -% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -% \end{Piton} -% \end{minipage} -% \end{Verbatim} -% \endgroup -% -% \begingroup -% \PitonOptions{background-color=gray!10} -% \begin{minipage}{\linewidth} -% \begin{Piton} -% def arctan(x,n=10): -% if x < 0: -% return -arctan(-x)#>\footnote{First recursive call.} -% elif x > 1: -% return pi/2 - arctan(1/x)#>\footnote{Second recursive call.} -% else: -% return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) -% \end{Piton} -% \end{minipage} -% \endgroup -% % % % \bigskip @@ -2114,16 +2289,12 @@ piton_version = "3.0b" -- 2024/05/23 % % \smallskip % We present now an example of tuning of these styles adapted to the documents -% in black and white. We use the font \emph{DejaVu Sans Mono}\footnote{See: -% \url{https://dejavu-fonts.github.io}} specified by the command |\setmonofont| of -% \pkg{fontspec}. +% in black and white. % % That tuning uses the command |\highLight| of \pkg{lua-ul} (that package % requires itself the package \pkg{luacolor}). % % \begin{Verbatim} -% \setmonofont[Scale=0.85]{DejaVu Sans Mono} -% % \SetPitonStyle % { % Number = , @@ -2150,9 +2321,6 @@ piton_version = "3.0b" -- 2024/05/23 % \pkg{piton} is \emph{not} empty. % % \begingroup -% -% \setmonofont[Scale=0.85]{DejaVu Sans Mono} -% % \PitonOptions{splittable} % % \SetPitonStyle @@ -2256,51 +2424,56 @@ piton_version = "3.0b" -- 2024/05/23 % \vspace{1cm} % % \begin{center} -% \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} -% \toprule -% \normalfont Style & Use \\ -% \midrule -% Number & the numbers \\ -% String.Short & the short strings (entre \texttt{'} ou \texttt{"}) \\ -% String.Long & the long strings (entre \texttt{'''} ou \texttt{"""}) excepted -% the doc-strings (governed by |String.Doc|)\\ -% String & that key fixes both |String.Short| et |String.Long| \\ -% String.Doc & the doc-strings (only with |"""| following PEP~257) \\ -% String.Interpol & the syntactic elements of the fields of the f-strings -% (that is to say the characters \texttt{\{} et \texttt{\}}); that style -% inherits for the styles |String.Short| and |String.Long| (according the kind -% of string where the interpolation appears) \\ -% Interpol.Inside & the content of the interpolations in the f-strings (that -% is to say the elements between \texttt{\{} and~\texttt{\}}); if the final -% user has not set that key, those elements will be formatted by \pkg{piton} -% as done for any Python code. \\ -% Operator & the following operators: \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ \verb|@| \\ -% Operator.Word & the following operators: |in|, |is|, |and|, |or| et |not| \\ -% Name.Builtin & almost all the functions predefined by Python \\ -% Name.Decorator & the decorators (instructions beginning by \verb|@|) \\ -% Name.Namespace & the name of the modules \\ -% Name.Class & the name of the Python classes defined by the user \emph{at their point of definition} (with the keyword |class|) \\ -% Name.Function & the name of the Python functions defined by the user \emph{at their -% point of definition} (with the keyword |def|) \\ -% UserFunction & the name of the Python functions previously defined by the user -% (the initial value of that parameter is empty and, hence, these -% elements are drawn, by default, in the current color, usually black) \\ -% Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\ -% InitialValues & the initial values (and the preceding symbol |=|) of the -% optional arguments in the definitions of functions; if the final -% user has not set that key, those elements will be formatted by \pkg{piton} -% as done for any Python code. \\ -% Comment & the comments beginning with \texttt{\#} \\ -% Comment.LaTeX & the comments beginning with \texttt{\#>}, which are composed by -% \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) \\ -% Keyword.Constant & |True|, |False| et |None| \\ -% Keyword & the following keywords: -% \ttfamily assert, break, case, continue, del, -% elif, else, except, exec, finally, for, from, -% global, if, import, lambda, non local, -% pass, raise, return, try, while, -% with, yield et yield from.\\ -% \bottomrule +% \begin{tabularx}{\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} +% \toprule +% \normalfont Style & Use \\ +% \midrule +% Number & the numbers \\ +% String.Short & the short strings (entre \texttt{'} ou \texttt{"}) \\ +% String.Long & the long strings (entre \texttt{'''} ou \texttt{"""}) excepted +% the doc-strings (governed by |String.Doc|)\\ +% String & that key fixes both |String.Short| et |String.Long| \\ +% String.Doc & the doc-strings (only with |"""| following PEP~257) \\ +% String.Interpol & the syntactic elements of the fields of the f-strings +% (that is to say the characters \texttt{\{} et \texttt{\}}); that style +% inherits for the styles |String.Short| and |String.Long| (according the kind +% of string where the interpolation appears) \\ +% Interpol.Inside & the content of the interpolations in the f-strings (that +% is to say the elements between \texttt{\{} and~\texttt{\}}); if the final +% user has not set that key, those elements will be formatted by \pkg{piton} +% as done for any Python code. \\ +% Operator & the following operators: \texttt{!= == << >> - \~{} + / * \% = < > +% \& .} \verb+|+ \verb|@| \\ +% Operator.Word & the following operators: |in|, |is|, |and|, |or| et |not| \\ +% Name.Builtin & almost all the functions predefined by Python \\ +% Name.Decorator & the decorators (instructions beginning by \verb|@|) \\ +% Name.Namespace & the name of the modules \\ +% Name.Class & the name of the Python classes defined by the user \emph{at their +% point of definition} (with the keyword |class|) \\ +% Name.Function & the name of the Python functions defined by the user \emph{at their +% point of definition} (with the keyword |def|) \\ +% UserFunction & the name of the Python functions previously defined by the user +% (the initial value of that parameter is +% {\ttfamily \textbackslash PitonStyle\{Identifier\}} and, +% therefore, the names of that functions are formatted like the +% identifiers). \\ +% Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\ +% InitialValues & the initial values (and the preceding symbol |=|) of the +% optional arguments in the definitions of functions; if the final +% user has not set that key, those elements will be formatted by \pkg{piton} +% as done for any Python code. \\ +% Comment & the comments beginning with \texttt{\#} \\ +% Comment.LaTeX & the comments beginning with \texttt{\#>}, which are composed by +% \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) \\ +% Keyword.Constant & |True|, |False| et |None| \\ +% Keyword & the following keywords: +% \ttfamily assert, break, case, continue, del, +% elif, else, except, exec, finally, for, from, +% global, if, import, in, lambda, non local, +% pass, raise, return, try, while, +% with, yield et yield from.\\ +% Identifier & the identifiers. \\ +% \bottomrule % \end{tabularx} % \end{center} % @@ -2309,21 +2482,11 @@ piton_version = "3.0b" -- 2024/05/23 % % \subsection{The language OCaml} % -% It's possible to switch to the language |OCaml| with |\PitonOptions{language = OCaml}|. -% -% \bigskip -% It's also possible to set the language OCaml for an individual environment |{Piton}|. -% % -% \begin{Verbatim} -% \begin{Piton}~emphase#[language=OCaml]@ -% ... -% \end{Piton} -% \end{Verbatim} +% It's possible to switch to the language |OCaml| with the key |language|: +% |language = OCaml|. % +% % \bigskip -% The option exists also for |\PitonInputFile| : |\PitonInputFile[language=OCaml]{...}| -% -% \vspace{1cm} % % % \begin{center} @@ -2336,7 +2499,7 @@ piton_version = "3.0b" -- 2024/05/23 % String.Long & the strings, between |"| but also the \emph{quoted-strings} \\ % String & that key fixes both |String.Short| and |String.Long| \\ % Operator & les opérateurs, en particulier |+|, |-|, |/|, |*|, |@|, |!=|, |==|, |&&| \\ -% Operator.Word & les opérateurs suivants : |and|, |asr|, |land|, |lor|, |lsl|, |lxor|, |mod| et |or| \\ +% Operator.Word & les opérateurs suivants : |asr|, |land|, |lor|, |lsl|, |lxor|, |mod| et |or| \\ % Name.Builtin & les fonctions |not|, |incr|, |decr|, |fst| et |snd| \\ % Name.Type & the name of a type of OCaml \\ % Name.Field & the name of a field of a module \\ @@ -2344,22 +2507,23 @@ piton_version = "3.0b" -- 2024/05/23 % Name.Module & the name of the modules \\ % Name.Function & the name of the Python functions defined by the user \emph{at their % point of definition} (with the keyword |let|) \\ -% UserFunction & the name of the OCaml functions previously defined by the user -% (the initial value of that parameter is empty and these -% elements are drawn in the current color, usually black) \\ +% UserFunction & the name of the Python functions previously defined by the user +% (the initial value of that parameter is +% {\ttfamily \textbackslash PitonStyle\{Identifier\}} and, +% therefore, the names of that functions are formatted like the identifiers). \\ % Exception & the predefined exceptions (eg : |End_of_File|) \\ % TypeParameter & the parameters of the types \\ % Comment & the comments, between |(*| et |*)|; these comments may be nested \\ % Keyword.Constant & |true| et |false| \\ -% Keyword & the following keywords: -% |assert|, |as|, |begin|, |class|, |constraint|, |done|, -% |downto|, |do|, |else|, |end|, |exception|, |external|, -% |for|, |function|, |functor|, |fun| , |if| -% |include|, |inherit|, |initializer|, |in| , |lazy|, |let|, -% |match|, |method|, |module|, |mutable|, |new|, |object|, -% |of|, |open|, |private|, |raise|, |rec|, |sig|, -% |struct|, |then|, |to|, |try|, |type|, -% |value|, |val|, |virtual|, |when|, |while| and |with| \\ +% Keyword & the following keywords: |assert|, |as|, |done|, |downto|, |do|, +% |else|, |exception|, |for|, |function| , |fun|, |if|, |lazy|, |match|, +% |mutable|, |new|, |of|, |private|, |raise|, |then|, |to|, |try| , |virtual|, +% |when|, |while| and |with| \\ +% Keyword.Governing & the following keywords: |and|, |begin|, |class|, |constraint|, +% |end|, |external|, |functor|, |include|, |inherit|, |initializer|, +% |in|, |let|, |method|, |module|, |object|, |open|, |rec|, |sig|, +% |struct|, |type| and |val|. \\ +% Identifier & the identifiers. \\ % \bottomrule % \end{tabularx} % \end{center} @@ -2369,22 +2533,10 @@ piton_version = "3.0b" -- 2024/05/23 % \subsection[The language C (and C++)]{The language C (and \CC)} % % -% It's possible to switch to the language |C| with |\PitonOptions{language = C}|. -% -% \bigskip -% It's also possible to set the language C for an individual environment |{Piton}|. -% % -% \begin{Verbatim} -% \begin{Piton}~emphase#[language=C]@ -% ... -% \end{Piton} -% \end{Verbatim} +% It's possible to switch to the language |C| with the key |language|: |language = C|. % % \bigskip -% The option exists also for |\PitonInputFile| : |\PitonInputFile[language=C]{...}| -% -% \vspace{1cm} -% +% % \begin{center} % \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} % \toprule @@ -2394,18 +2546,23 @@ piton_version = "3.0b" -- 2024/05/23 % String.Long & the strings (between \texttt{"}) \\ % String.Interpol & the elements \texttt{\%d}, \texttt{\%i}, \texttt{\%f}, % \texttt{\%c}, etc. in the strings; that style inherits from the style |String.Long| \\ -% Operator & the following operators : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ \verb|@| \\ +% Operator & the following operators : +% \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ \verb|@| \\ % Name.Type & the following predefined types: -% |bool|, |char|, |char16_t|, |char32_t|, |double|, |float|, |int|, |int8_t|, |int16_t|, |int32_t|, -% |int64_t|, |long|, |short|, |signed|, |unsigned|, |void| et |wchar_t| \\ -% Name.Builtin & the following predefined functions: |printf|, |scanf|, |malloc|, |sizeof| and |alignof| \\ -% Name.Class & le nom des classes au moment de leur définition, c'est-à-dire +% |bool|, |char|, |char16_t|, |char32_t|, |double|, |float|, |int|, |int8_t|, +% |int16_t|, |int32_t|, |int64_t|, |long|, |short|, |signed|, |unsigned|, +% |void| et |wchar_t| \\ +% Name.Builtin & the following predefined functions: |printf|, |scanf|, +% |malloc|, |sizeof| and |alignof| \\ +% Name.Class & le nom des classes au moment de leur définition, c'est-à-dire % après le mot-clé \verb|class| \\ -% Name.Function & the name of the Python functions defined by the user \emph{at their +% Name.Function & the name of the Python functions defined by the user \emph{at their % point of definition} (with the keyword |let|) \\ -% UserFunction & the name of the Python functions previously defined by the user -% (the initial value of that parameter is empty and these -% elements are drawn in the current color, usually black) \\ +% UserFunction & the name of the Python functions previously defined by the user +% (the initial value of that parameter is +% {\ttfamily \textbackslash PitonStyle\{Identifier\}} and, +% therefore, the names of that functions are formatted like the +% identifiers). \\ % Preproc & the instructions of the preprocessor (beginning par |#|) \\ % Comment & the comments (beginning by \texttt{//} or between |/*| and |*/|) \\ % Comment.LaTeX & the comments beginning by \texttt{//>} which are composed by @@ -2414,10 +2571,11 @@ piton_version = "3.0b" -- 2024/05/23 % Keyword & the following keywords: % |alignas|, |asm|, |auto|, |break|, |case|, |catch|, |class|, % |constexpr|, |const|, |continue|, |decltype|, |do|, |else|, |enum|, -% |extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|, |restricted|, |try|, -% |return|, |static|, |static_assert|, |struct|, |switch|, |thread_local|, |throw|, -% |typedef|, |union|, |using|, |virtual|, |volatile| and |while| -% \\ +% |extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|, +% |restricted|, |try|, |return|, |static|, |static_assert|, |struct|, |switch|, +% |thread_local|, |throw|, |typedef|, |union|, |using|, |virtual|, |volatile| +% and |while| \\ +% Identifier & the identifiers. \\ % \bottomrule % \end{tabularx} % \end{center} @@ -2427,22 +2585,9 @@ piton_version = "3.0b" -- 2024/05/23 % \subsection{The language SQL} % % -% It's possible to switch to the language |SQL| with |\PitonOptions{language = SQL}|. +% It's possible to switch to the language |SQL| with the key |language|: |language = SQL|. % % \bigskip -% It's also possible to set the language SQL for an individual environment |{Piton}|. -% % -% \begin{Verbatim} -% \begin{Piton}~emphase#[language=SQL]@ -% ... -% \end{Piton} -% \end{Verbatim} -% -% \bigskip -% The option exists also for |\PitonInputFile| : |\PitonInputFile[language=SQL]{...}| -% -% -% \vspace{1cm} % % \begin{center} % \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} @@ -2482,27 +2627,47 @@ piton_version = "3.0b" -- 2024/05/23 % \end{Verbatim} % % \newpage +% \subsection{The languages defined by \textbackslash NewPitonLanguage} % -% \subsection{The language ``minimal''} +% \vspace{1cm} +% The command |\NewPitonLanguage|, which defines new informatic languages with the +% syntax of the extension \pkg{listings}, has been described p.~\pageref{NewPitonLanguage}. % -% It's possible to switch to the language ``|minimal|'' with |\PitonOptions{language = minimal}|. +% All the languages defined by the command |\NewPitonLanguage| use the same styles. +% \vspace{1cm} +% +% \begin{center} +% \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} +% \toprule +% \normalfont Style & Use \\ +% \midrule +% Number & the numbers \\ +% String.Long & the strings defined in |\NewPitonLanguage| by the key |morestring| \\ +% Comment & the comments defined in |\NewPitonLanguage| by the key |morecomment| \\ +% Comment.LaTeX & the comments which are composed by \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) \\ +% Keyword & the keywords defined in |\NewPitonLanguage| by the keys |morekeywords| +% and |moretexcs| (and also the key |sensitive| which specifies whether +% the keywords are case-sensitive or not) \\ +% Directive & the directives defined in |\NewPitonLanguage| by the key +% |moredirectives| \\ +% Tag & the ``tags'' defines by the key |tag| (the lexical units detected within +% the tag will also be formatted with their own style) \\ +% Identifier & the identifiers. \\ +% \bottomrule +% \end{tabularx} +% \end{center} % -% \bigskip -% It's also possible to set the language ``|minimal|'' for an individual environment |{Piton}|. -% % -% \begin{Verbatim} -% \begin{Piton}~emphase#[language=minimal]@ -% ... -% \end{Piton} -% \end{Verbatim} % -% \bigskip -% The option exists also for |\PitonInputFile| : |\PitonInputFile[language=minimal]{...}| % % +% \subsection{The language ``minimal''} +% % \label{minimal} % -% \vspace{1cm} +% It's possible to switch to the language ``|minimal|'' with the key |language|: +% |language = minimal|. +% +% \bigskip % % \begin{center} % \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} @@ -2513,7 +2678,9 @@ piton_version = "3.0b" -- 2024/05/23 % String & the strings (between \texttt{"}) \\ % Comment & the comments (which begin with |#|) \\ % Comment.LaTeX & the comments beginning with \texttt{\#>}, which are composed by -% \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) \\ +% \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) +% \\ +% Identifier & the identifiers. \\ % \bottomrule % \end{tabularx} % \end{center} @@ -2524,36 +2691,34 @@ piton_version = "3.0b" -- 2024/05/23 % p.~\pageref{SetPitonIdentifier}) in order to create, for example, a language % for pseudo-code. % -% \newpage -% \subsection{The languages defined by \textbackslash NewPitonLanguage} -% % \vspace{1cm} -% The command |\NewPitonLanguage|, which defines new informatic languages with the -% syntax of the extension \pkg{listings}, has been described p.~\pageref{NewPitonLanguage}. +% +% \subsection{The language ``verbatim''} % -% All the languages defined by the command |\NewPitonLanguage| use the same styles. -% \vspace{1cm} +% \label{verbatim} +% +% \colorbox{yellow!50}{\textbf{New 4.1}} +% +% It's possible to switch to the language ``|verbatim|'' with the key |language|: +% |language = verbatim|. +% +% \bigskip % % \begin{center} % \begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}} % \toprule -% \normalfont Style & Use \\ +% \normalfont Style & Usage \\ % \midrule -% Number & the numbers \\ -% String.Long & the strings defined in |\NewPitonLanguage| by the key |morestring| \\ -% Comment & the comments defined in |\NewPitonLanguage| by the key |morecomment| \\ -% Comment.LaTeX & the comments which are composed by \pkg{piton} as LaTeX code (merely named ``LaTeX comments'' in this document) \\ -% Keyword & the keywords defined in |\NewPitonLanguage| by the keys |morekeywords| -% and |moretexcs| (and also the key |sensitive| which specifies whether -% the keywords are case-sensitive or not) \\ -% Directive & the directives defined in |\NewPitonLanguage| by the key -% |moredirectives| \\ -% Tag & the ``tags'' defines by the key |tag| (the lexical units detected within -% the tag will also be formatted with their own style) \\ +% None... & \\ % \bottomrule % \end{tabularx} % \end{center} % +% The language |verbatim| doen't provide any style and, thus, does not do any +% syntactic formating. However, it's possible to use the mechanism +% |detected-commands| (cf. part~\ref{detected-commands}, +% p.~\pageref{detected-commands}) and the detection of the commands and +% environments of Beamer. % % % \newpage @@ -2705,6 +2870,14 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % \bigskip +% The command |\text| provided by the package \pkg{amstext} will be used to +% allow the use of the command |\pion{...}| (with the standard syntax) in +% mathematical mode. +% \begin{macrocode} +\RequirePackage { amstext } +% \end{macrocode} +% +% \bigskip % \begin{macrocode} \cs_new_protected:Npn \@@_error:n { \msg_error:nn { piton } } \cs_new_protected:Npn \@@_warning:n { \msg_warning:nn { piton } } @@ -2769,6 +2942,7 @@ piton_version = "3.0b" -- 2024/05/23 \sys_if_engine_luatex:F { \msg_critical:nn { piton } { LuaLaTeX~mandatory } } % \end{macrocode} % +% % \bigskip % \begin{macrocode} \RequirePackage { luatexbase } @@ -2792,12 +2966,10 @@ piton_version = "3.0b" -- 2024/05/23 % % \bigskip % \begin{macrocode} -\file_if_exist:nF { piton.lua } - { \msg_fatal:nn { piton } { piton.lua~not~found } } +\file_if_exist:nF { piton.lua } { \@@_fatal:n { piton.lua~not~found } } % \end{macrocode} % % -% % \bigskip % The boolean |\g_@@_footnotehyper_bool| will indicate if the option % |footnotehyper| is used. @@ -2814,7 +2986,8 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % \medskip -% The following boolean corresponds to the key |math-comments| (available only at load-time). +% The following boolean corresponds to the key |math-comments| (available only +% in the preamble of the LaTeX document). % \begin{macrocode} \bool_new:N \g_@@_math_comments_bool % \end{macrocode} @@ -2824,6 +2997,16 @@ piton_version = "3.0b" -- 2024/05/23 \bool_new:N \g_@@_beamer_bool \tl_new:N \g_@@_escape_inside_tl % \end{macrocode} +% +% \medskip +% In version 4.0 of \pkg{piton}, we changed the mechanism used by \pkg{piton} +% to search the file to load with |\PitonInputFile|. With the key +% |old-PitonInputFile|, it's possible to keep the old behaviour but it's only +% for backward compatibility and it will be deleted in a future version. +% \begin{macrocode} +\bool_new:N \l_@@_old_PitonInputFile_bool +% \end{macrocode} +% % % \bigskip % We define a set of keys for the options at load-time. @@ -2832,36 +3015,36 @@ piton_version = "3.0b" -- 2024/05/23 { footnote .bool_gset:N = \g_@@_footnote_bool , footnotehyper .bool_gset:N = \g_@@_footnotehyper_bool , + footnote .usage:n = load , + footnotehyper .usage:n = load , beamer .bool_gset:N = \g_@@_beamer_bool , beamer .default:n = true , - - math-comments .code:n = \@@_error:n { moved~to~preamble } , - comment-latex .code:n = \@@_error:n { moved~to~preamble } , + beamer .usage:n = load , +% \end{macrocode} +% \medskip +% In version 4.0 of \pkg{piton}, we changed the mechanism used by \pkg{piton} +% to search the file to load with |\PitonInputFile|. With the key +% |old-PitonInputFile|, it's possible to keep the old behaviour but it's only +% for backward compatibility and it will be deleted in a future version. +% \begin{macrocode} + old-PitonInputFile .bool_set:N = \l_@@_old_PitonInputFile_bool , + old-PitonInputFile .default:n = true , + old-PitonInputFile .usage:n = load , unknown .code:n = \@@_error:n { Unknown~key~for~package } } % \end{macrocode} % % -% \bigskip -% \begin{macrocode} -\@@_msg_new:nn { moved~to~preamble } - { - The~key~'\l_keys_key_str'~*must*~now~be~used~with~ - \token_to_str:N \PitonOptions`in~the~preamble~of~your~ - document.\\ - That~key~will~be~ignored. - } -% \end{macrocode} % % \begin{macrocode} \@@_msg_new:nn { Unknown~key~for~package } { Unknown~key.\\ You~have~used~the~key~'\l_keys_key_str'~but~the~only~keys~available~here~ - are~'beamer',~'footnote',~'footnotehyper'.~Other~keys~are~available~in~ - \token_to_str:N \PitonOptions.\\ + are~'beamer',~'footnote',~'footnotehyper'~and~'old-PitonInputFile'.~ + Other~keys~are~available~in~\token_to_str:N \PitonOptions.\\ That~key~will~be~ignored. } % \end{macrocode} @@ -2957,7 +3140,11 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \lua_now:n { - piton.ListCommands = lpeg.P ( false ) + piton.BeamerCommands = lpeg.P [[\uncover]] + + [[\only]] + [[\visible]] + [[\invisible]] + [[\alert]] + [[\action]] + piton.beamer_environments = { "uncoverenv" , "onlyenv" , "visibleenv" , + "invisibleenv" , "alertenv" , "actionenv" } + piton.DetectedCommands = lpeg.P ( false ) piton.last_code = '' piton.last_language = '' } @@ -2975,8 +3162,8 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % \medskip -% Each time the command |\PitonInputFile| of \pkg{piton} is -% used, the code of that environment will be stored in the following global string. +% Each time an environment of \pkg{piton} is used, the informatic code in the +% body of that environment will be stored in the following global string. % \begin{macrocode} \tl_new:N \g_piton_last_code_tl % \end{macrocode} @@ -3004,29 +3191,41 @@ piton_version = "3.0b" -- 2024/05/23 \bool_new:N \l_@@_in_PitonInputFile_bool % \end{macrocode} % +% \medskip +% The following parameter corresponds to the key |font-command|. +% \begin{macrocode} +\tl_new:N \l_@@_font_command_tl +\tl_set:Nn \l_@@_font_command_tl { \ttfamily } +% \end{macrocode} % % \medskip -% We will compute (with Lua) the numbers of lines of the Python code and store +% We will compute (with Lua) the numbers of lines of the listings (or +% \emph{chunks} of listings when |split-on-empty-lines| is in force) and store % it in the following counter. % \begin{macrocode} \int_new:N \l_@@_nb_lines_int % \end{macrocode} % -% The same for the number of non-empty lines of the Python codes. +% The same for the number of non-empty lines of the listings. % \begin{macrocode} \int_new:N \l_@@_nb_non_empty_lines_int % \end{macrocode} +% % +% \medskip % The following counter will be used to count the lines during the composition. -% It will count all the lines, empty or not empty. It won't be used to print the -% numbers of the lines. +% It will take into account all the lines, empty or not empty. It won't be used +% to print the numbers of the lines but will be used to allow or disallow line +% breaks (when |splittable| is in force) and for the color of the background +% (when |background-color| is used with a \emph{list} of colors). % \begin{macrocode} \int_new:N \g_@@_line_int % \end{macrocode} % % \medskip % The following token list will contain the (potential) information to write -% on the |aux| (to be used in the next compilation). +% on the |aux| (to be used in the next compilation). The technic of the +% auxiliary file will be used when the key |width| is used with the value~|min|. % \begin{macrocode} \tl_new:N \g_@@_aux_tl % \end{macrocode} @@ -3034,27 +3233,31 @@ piton_version = "3.0b" -- 2024/05/23 % \medskip % The following counter corresponds to the key |splittable| of |\PitonOptions|. % If the value of |\l_@@_splittable_int| is equal to $n$, then no line break can -% occur within the first $n$~lines or the last $n$~lines of the listings. +% occur within the first $n$~lines or the last $n$~lines of a listing (or a +% \emph{chunk} of listings when the key |split-on-empty-lines| is in force). % \begin{macrocode} \int_new:N \l_@@_splittable_int % \end{macrocode} % % \medskip -% When the key |split-on-empty-lines| will be in force, then the following token -% list will be inserted between the chunks of code (the informatic code provided -% by the final user is split in chunks on the empty lines in the code). -% \begin{macrocode} -\tl_new:N \l_@@_split_separation_tl -\tl_set:Nn \l_@@_split_separation_tl { \vspace{\baselineskip} \vspace{-1.25pt} } -% \end{macrocode} -% -% \medskip % An initial value of |splittable| equal to 100 is equivalent to say that the % environments |{Piton}| are unbreakable. % \begin{macrocode} \int_set:Nn \l_@@_splittable_int { 100 } % \end{macrocode} % +% \medskip +% When the key |split-on-empty-lines| will be in force, then the following token +% list will be inserted between the chunks of code (the informatic code provided +% by the final user is split in chunks on the empty lines in the code). +% \begin{macrocode} +\tl_new:N \l_@@_split_separation_tl +\tl_set:Nn \l_@@_split_separation_tl + { \vspace { \baselineskip } \vspace { -1.25pt } } +% \end{macrocode} +% That parameter must contain elements to be inserted in \emph{vertical} mode by +% TeX. +% % % \medskip % The following string corresponds to the key |background-color| of |\PitonOptions|. @@ -3143,6 +3346,12 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \bool_new:N \l_@@_break_lines_in_piton_bool % \end{macrocode} +% However, the key |break-lines_in_piton| raises that boolean but also executes the +% following instruction: +% +% \quad |\tl_set_eq:NN \l_@@_space_in_string_tl \space| + +% The initial value of |\l_@@_space_in_string_tl| is |\nobreakspace|. % % \bigskip % The following dimension will be the width of the listing constructed by @@ -3213,11 +3422,6 @@ piton_version = "3.0b" -- 2024/05/23 \dim_set:Nn \l_@@_numbers_sep_dim { 0.7 em } % \end{macrocode} % -% \medskip -% The tabulators will be replaced by the content of the following token list. -% \begin{macrocode} -\tl_new:N \l_@@_tab_tl -% \end{macrocode} % % \medskip % Be careful. The following sequence |\g_@@_languages_seq| is not the list of @@ -3233,30 +3437,26 @@ piton_version = "3.0b" -- 2024/05/23 % % \medskip % \begin{macrocode} -\cs_new_protected:Npn \@@_set_tab_tl:n #1 - { - \tl_clear:N \l_@@_tab_tl - \prg_replicate:nn { #1 } - { \tl_put_right:Nn \l_@@_tab_tl { ~ } } - } -\@@_set_tab_tl:n { 4 } +\int_new:N \l_@@_tab_size_int +\int_set:Nn \l_@@_tab_size_int { 4 } % \end{macrocode} % -% \medskip -% When the key |show-spaces| is in force, |\l_@@_tab_tl| will be replaced by an -% arrow by using the following command. % \begin{macrocode} -\cs_new_protected:Npn \@@_convert_tab_tl: - { - \hbox_set:Nn \l_tmpa_box { \l_@@_tab_tl } - \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box } - \tl_set:Nn \l_@@_tab_tl +\cs_new_protected:Npn \@@_tab: + { + \bool_if:NTF \l_@@_show_spaces_bool { + \hbox_set:Nn \l_tmpa_box + { \prg_replicate:nn \l_@@_tab_size_int { ~ } } + \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box } \( \mathcolor { gray } - { \hbox_to_wd:nn \l_tmpa_dim { \rightarrowfill } \) } + { \hbox_to_wd:nn \l_tmpa_dim { \rightarrowfill } } \) } + { \hbox:n { \prg_replicate:nn \l_@@_tab_size_int { ~ } } } + \int_gadd:Nn \g_@@_indentation_int \l_@@_tab_size_int } % \end{macrocode} +% % % \medskip % The following integer corresponds to the key |gobble|. @@ -3267,9 +3467,11 @@ piton_version = "3.0b" -- 2024/05/23 % \medskip % The following token list will be used only for the spaces in the strings. % \begin{macrocode} -\tl_new:N \l_@@_space_tl -\tl_set_eq:NN \l_@@_space_tl \nobreakspace +\tl_set_eq:NN \l_@@_space_in_string_tl \nobreakspace % \end{macrocode} +% When the key |break-lines-in-piton| is set, that parameter will be replaced by +% |\space| (in |\piton| with the standard syntax) and when the key +% |show-spaces-in-strings| is set, it will be replaced by ␣ (U+2423). % % % \medskip @@ -3279,23 +3481,13 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % \medskip +% Be careful: when executed, the following command does \emph{not} create a +% space (only an incrementation of the counter). % \begin{macrocode} -\cs_new_protected:Npn \@@_an_indentation_space: +\cs_new_protected:Npn \@@_leading_space: { \int_gincr:N \g_@@_indentation_int } % \end{macrocode} % -% \medskip -% The following command |\@@_beamer_command:n| executes the argument -% corresponding to its argument but also stores it in |\l_@@_beamer_command_str|. -% That string is used only in the error message ``|cr~not~allowed|'' raised when -% there is a carriage return in the mandatory argument of that command. -% \begin{macrocode} -\cs_new_protected:Npn \@@_beamer_command:n #1 - { - \str_set:Nn \l_@@_beamer_command_str { #1 } - \use:c { #1 } - } -% \end{macrocode} % % \bigskip % In the environment |{Piton}|, the command |\label| will be linked to the @@ -3319,8 +3511,8 @@ piton_version = "3.0b" -- 2024/05/23 } } \@esphack - } - { \@@_error:n { label~with~lines~numbers } } + } + { \@@_error:n { label~with~lines~numbers } } } % \end{macrocode} % @@ -3337,13 +3529,6 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % -% \bigskip -% The following commands are a easy way to insert safely braces (|{| and |}|) in -% the TeX flow. -% \begin{macrocode} -\cs_new_protected:Npn \@@_open_brace: { \lua_now:n { piton.open_brace() } } -\cs_new_protected:Npn \@@_close_brace: { \lua_now:n { piton.close_brace() } } -% \end{macrocode} % % \bigskip % The following token list will be evaluated at the beginning of @@ -3364,24 +3549,33 @@ piton_version = "3.0b" -- 2024/05/23 \tl_gset:Nn \g_@@_begin_line_hook_tl { \tl_if_empty:NF \l_@@_prompt_bg_color_tl - { \clist_set:NV \l_@@_bg_color_clist \l_@@_prompt_bg_color_tl } + { \clist_set:No \l_@@_bg_color_clist \l_@@_prompt_bg_color_tl } } } % \end{macrocode} % +% +% \bigskip +% The spaces at the end of a line of code are deleted by \pkg{piton}. +% However, it's not actually true: they are replace by |\@@_trailing_space:|. +% \begin{macrocode} +\cs_new_protected:Npn \@@_trailing_space: { } +% \end{macrocode} +% When we have to rescan some pieces of code, we will use |\@@_piton:n|, which +% we will set |\@@_trailing_space:| equal to |\space|. % % \bigskip % \subsubsection{Treatment of a line of code} % -% The following command is only used once. % \begin{macrocode} +\cs_generate_variant:Nn \@@_replace_spaces:n { o } \cs_new_protected:Npn \@@_replace_spaces:n #1 { \tl_set:Nn \l_tmpa_tl { #1 } \bool_if:NTF \l_@@_show_spaces_bool { - \tl_set:Nn \l_@@_space_tl { ␣ } - \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl % U+2423 + \tl_set:Nn \l_@@_space_in_string_tl { ␣ } % U+2423 + \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } { % \end{macrocode} @@ -3397,6 +3591,10 @@ piton_version = "3.0b" -- 2024/05/23 { \x20 } { \c { @@_breakable_space: } } \l_tmpa_tl + \regex_replace_all:nnN + { \c { l_@@_space_in_string_tl } } + { \c { @@_breakable_space: } } + \l_tmpa_tl } } \l_tmpa_tl @@ -3405,10 +3603,21 @@ piton_version = "3.0b" -- 2024/05/23 % % \bigskip % In the contents provided by Lua, each line of the Python code will be -% surrounded by |\@@_begin_line:| and |\@@_end_line:|. |\@@_begin_line:| is a -% LaTeX command that we will define now but |\@@_end_line:| is only a syntactic -% marker that has no definition. +% surrounded by |\@@_begin_line:| and |\@@_end_line:|. + +% |\@@_begin_line:| is a +% TeX command with a delimited argument (|\@@_end_line:| is the marker for the +% end of the argument). % +% However, we define also |\@@_end_line:| as no-op, because, when the last line +% of the listing is the end of an environment of Beamer (eg |\end{uncoverenv}|), +% we will have a token |\@@_end_line:| added at the end without any +% corresponding |\@@_begin_line:|). +% \begin{macrocode} +\cs_set_protected:Npn \@@_end_line: { } +% \end{macrocode} +% +% \bigskip % \begin{macrocode} \cs_set_protected:Npn \@@_begin_line: #1 \@@_end_line: { @@ -3442,19 +3651,35 @@ piton_version = "3.0b" -- 2024/05/23 \skip_horizontal:N \l_@@_left_margin_dim \bool_if:NT \l_@@_line_numbers_bool { - \bool_if:nF - { - \str_if_eq_p:nn { #1 } { \PitonStyle {Prompt}{} } - && - \l_@@_skip_empty_lines_bool +% \end{macrocode} +% |\l_tmpa_int| will be true equal to $1$ when the current line is not empty. +% \begin{macrocode} + \int_set:Nn \l_tmpa_int + { + \lua_now:e + { + tex.sprint + ( + luatexbase.catcodetables.expl , +% \end{macrocode} +% Since the argument of |tostring| will be a integer of Lua (\emph{integer} is a +% sub-type of \emph{number} introduced in Lua 5.3), the output will be of the +% form |"3"| (and not |"3.0"|) which is what we want for |\int_set:Nn|. +% \begin{macrocode} + tostring + ( piton.empty_lines + [ \int_eval:n { \g_@@_line_int + 1 } ] + ) + ) + } } + \bool_lazy_or:nnT + { \int_compare_p:nNn \l_tmpa_int = \c_one_int } + { ! \l_@@_skip_empty_lines_bool } { \int_gincr:N \g_@@_visual_line_int } - \bool_if:nT - { - ! \str_if_eq_p:nn { #1 } { \PitonStyle {Prompt}{} } - || - ( ! \l_@@_skip_empty_lines_bool && \l_@@_label_empty_lines_bool ) - } + \bool_lazy_or:nnT + { \int_compare_p:nNn \l_tmpa_int = \c_one_int } + { ! \l_@@_skip_empty_lines_bool && \l_@@_label_empty_lines_bool } \@@_print_number: } % \end{macrocode} @@ -3467,12 +3692,17 @@ piton_version = "3.0b" -- 2024/05/23 % ... but if only if the key |left-margin| is not used ! % \begin{macrocode} \dim_compare:nNnT \l_@@_left_margin_dim = \c_zero_dim - { \skip_horizontal:n { 0.5 em } } + { \skip_horizontal:n { 0.5 em } } } \coffin_typeset:Nnnnn \l_tmpa_coffin T l \c_zero_dim \c_zero_dim } \box_set_dp:Nn \l_tmpa_box { \box_dp:N \l_tmpa_box + 1.25 pt } \box_set_ht:Nn \l_tmpa_box { \box_ht:N \l_tmpa_box + 1.25 pt } +% \end{macrocode} +% We have to explicitely begin a paragraph because we will insert a TeX box (and +% we don't want that box to be inserted in the vertical list). +% \begin{macrocode} + \mode_leave_vertical: \clist_if_empty:NTF \l_@@_bg_color_clist { \box_use_drop:N \l_tmpa_box } { @@ -3485,11 +3715,10 @@ piton_version = "3.0b" -- 2024/05/23 depth \box_dp:N \l_tmpa_box width \l_@@_width_dim } - \skip_vertical:n { - \box_ht_plus_dp:N \l_tmpa_box } + \skip_vertical:n { - \box_ht_plus_dp:N \l_tmpa_box } \box_use_drop:N \l_tmpa_box } } - \vspace { - 2.5 pt } \group_end: \tl_gclear:N \g_@@_begin_line_hook_tl } @@ -3500,8 +3729,8 @@ piton_version = "3.0b" -- 2024/05/23 % or (if used) it is not used with the special value~|min|. % In that case, the content of a line of code is composed in a vertical coffin % with a width equal to |\l_@@_line_width_dim|. That coffin may, -% eventually, contains several lines when the key |broken-lines-in-Piton| (or -% |broken-lines|) is used. +% eventually, contains several lines when the key |break-lines-in-Piton| (or +% |break-lines|) is used. % % That commands takes in its argument by curryfication. % \begin{macrocode} @@ -3552,20 +3781,21 @@ piton_version = "3.0b" -- 2024/05/23 { \int_set:Nn \l_tmpa_int { \clist_count:N #1 } \int_set:Nn \l_tmpb_int { \int_mod:nn \g_@@_line_int \l_tmpa_int + 1 } - \tl_set:Nx \l_tmpa_tl { \clist_item:Nn #1 \l_tmpb_int } + \tl_set:Ne \l_tmpa_tl { \clist_item:Nn #1 \l_tmpb_int } \tl_if_eq:NnTF \l_tmpa_tl { none } % \end{macrocode} % By setting |\l_@@_width_dim| to zero, the colored rectangle will be % drawn with zero width and, thus, it will be a mere strut (and we need that strut). % \begin{macrocode} { \dim_zero:N \l_@@_width_dim } - { \exp_args:NV \@@_color_i:n \l_tmpa_tl } + { \@@_color_i:o \l_tmpa_tl } } % \end{macrocode} % % The following command |\@@_color:n| will accept both the instruction % |\@@_color:n { red!15 }| and the instruction |\@@_color:n { [rgb]{0.9,0.9,0} }|. % \begin{macrocode} +\cs_generate_variant:Nn \@@_color_i:n { o } \cs_set_protected:Npn \@@_color_i:n #1 { \tl_if_head_eq_meaning:nNTF { #1 } [ @@ -3579,24 +3809,70 @@ piton_version = "3.0b" -- 2024/05/23 % \end{macrocode} % % \bigskip +% The command |\@@_newline:| will be inserted by Lua between two lines of the +% informatic listing. +% \begin{itemize} +% \item In fact, it will be inserted between two commands +% |\@@_begin_line:|...|\@@_end_of_line:|. +% \item When the key |break-lines-in-Piton| is in force, a line of the +% informatic code (the \emph{input}) may result in several lines in the +% \textsc{pdf} (the \emph{output}). +% \item Remind that |\@@_newline:| has a rather complex behaviour because it will +% finish and start paragraphs. +% \end{itemize} % \begin{macrocode} \cs_new_protected:Npn \@@_newline: { + \bool_if:NT \g_@@_footnote_bool \endsavenotes +% \end{macrocode} +% We recall that |\g_@@_line_int| is \emph{not} used for the number of line +% printed in the \textsc{pdf} (when |line-numbers| is in force)... +% \begin{macrocode} \int_gincr:N \g_@@_line_int - \int_compare:nNnT \g_@@_line_int > { \l_@@_splittable_int - 1 } - { - \int_compare:nNnT - { \l_@@_nb_lines_int - \g_@@_line_int } > \l_@@_splittable_int - { - \egroup - \bool_if:NT \g_@@_footnote_bool \endsavenotes - \par \mode_leave_vertical: - \bool_if:NT \g_@@_footnote_bool \savenotes - \vtop \bgroup - } - } +% \end{macrocode} +% ... it will be used to allow or disallow page breaks. +% +% +% Each line in the listing is composed in a box of TeX (which may contain +% several lines when the key |break-lines-in-Piton| is in force) put in a +% paragraph. +% \begin{macrocode} + \par +% \end{macrocode} +% We now add a |\kern| because each line of code is overlapping vertically by a +% quantity of 2.5~pt in order to have a good background (when |background-color| +% is in force). We need to use a |\kern| (in fact |\par\kern...|) and not a +% |\vskip| because page breaks should \emph{not} be allowed on that kern. +% \begin{macrocode} + \kern -2.5 pt +% \end{macrocode} +% Now, we control page breaks after the paragraph. We use the Lua table +% |piton.lines_status| which has been written by |piton.ComputeLinesStatus| for +% this aim. Each line has a ``status`` (equal to 0, 1 or 2) and that status +% directly says whether a break is allowed. +% \begin{macrocode} + \int_case:nn + { + \lua_now:e + { + tex.sprint + ( + luatexbase.catcodetables.expl , + tostring ( piton.lines_status [ \int_use:N \g_@@_line_int ] ) + ) + } + } + { 1 { \penalty 100 } 2 \nobreak } +% \end{macrocode} +% +% \begin{macrocode} + \bool_if:NT \g_@@_footnote_bool \savenotes +% \end{macrocode} +% +% \begin{macrocode} } % \end{macrocode} +% After the command |\@@_newline:|, we will usually have a command |\@@_begin_line:|. % % \bigskip % \begin{macrocode} @@ -3631,17 +3907,22 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % \subsubsection{PitonOptions} % +% +% % \medskip % \begin{macrocode} \bool_new:N \l_@@_line_numbers_bool \bool_new:N \l_@@_skip_empty_lines_bool \bool_set_true:N \l_@@_skip_empty_lines_bool \bool_new:N \l_@@_line_numbers_absolute_bool +\tl_new:N \l_@@_line_numbers_format_bool +\tl_set:Nn \l_@@_line_numbers_format_tl { \footnotesize \color { gray } } \bool_new:N \l_@@_label_empty_lines_bool \bool_set_true:N \l_@@_label_empty_lines_bool \int_new:N \l_@@_number_lines_start_int \bool_new:N \l_@@_resume_bool \bool_new:N \l_@@_split_on_empty_lines_bool +\bool_new:N \l_@@_splittable_on_empty_lines_bool % \end{macrocode} % % @@ -3667,12 +3948,8 @@ piton_version = "3.0b" -- 2024/05/23 false .code:n = \bool_set_false:N \l_@@_line_numbers_bool , start .code:n = - \bool_if:NTF \l_@@_in_PitonOptions_bool - { Invalid~key } - { - \bool_set_true:N \l_@@_line_numbers_bool - \int_set:Nn \l_@@_number_lines_start_int { #1 } - } , + \bool_set_true:N \l_@@_line_numbers_bool + \int_set:Nn \l_@@_number_lines_start_int { #1 } , start .value_required:n = true , skip-empty-lines .code:n = @@ -3699,11 +3976,7 @@ piton_version = "3.0b" -- 2024/05/23 { \bool_set_true:N \l_@@_line_numbers_absolute_bool \bool_set_false:N \l_@@_skip_empty_lines_bool - } - \bool_lazy_or:nnF - \l_@@_in_PitonInputFile_bool - \l_@@_in_PitonOptions_bool - { \@@_error:n { Invalid~key } } , + } , absolute .value_forbidden:n = true , resume .code:n = @@ -3715,6 +3988,9 @@ piton_version = "3.0b" -- 2024/05/23 sep .dim_set:N = \l_@@_numbers_sep_dim , sep .value_required:n = true , + format .tl_set:N = \l_@@_line_numbers_format_tl , + format .value_required:n = true , + unknown .code:n = \@@_error:n { Unknown~key~for~line-numbers } } % \end{macrocode} @@ -3726,15 +4002,26 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \keys_define:nn { PitonOptions } { + break-strings-anywhere .code:n = + \cs_set_eq:NN \@@_break_anywhere:n \@@_actually_break_anywhere:n , % \end{macrocode} % First, we put keys that should be available only in the preamble. % \begin{macrocode} detected-commands .code:n = - \lua_now:n { piton.addListCommands('#1') } , + \lua_now:n { piton.addDetectedCommands('#1') } , detected-commands .value_required:n = true , detected-commands .usage:n = preamble , + detected-beamer-commands .code:n = + \lua_now:n { piton.addBeamerCommands('#1') } , + detected-beamer-commands .value_required:n = true , + detected-beamer-commands .usage:n = preamble , + detected-beamer-environments .code:n = + \lua_now:n { piton.addBeamerEnvironments('#1') } , + detected-beamer-environments .value_required:n = true , + detected-beamer-environments .usage:n = preamble , % \end{macrocode} % +% % Remark that the command |\lua_escape:n| is fully expandable. That's why we use % |\lua_now:e|. % \begin{macrocode} @@ -3770,10 +4057,10 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % Now, general keys. % \begin{macrocode} - language .code:n = - \str_set:Nx \l_piton_language_str { \str_lowercase:n { #1 } } , - language .value_required:n = true , - path .code:n = + language .code:n = + \str_set:Ne \l_piton_language_str { \str_lowercase:n { #1 } } , + language .value_required:n = true , + path .code:n = \seq_clear:N \l_@@_path_seq \clist_map_inline:nn { #1 } { @@ -3788,6 +4075,8 @@ piton_version = "3.0b" -- 2024/05/23 path .initial:n = . , path-write .str_set:N = \l_@@_path_write_str , path-write .value_required:n = true , + font-command .tl_set:N = \l_@@_font_command_tl , + font-command .value_required:n = true , gobble .int_set:N = \l_@@_gobble_int , gobble .value_required:n = true , auto-gobble .code:n = \int_set:Nn \l_@@_gobble_int { -1 } , @@ -3797,8 +4086,11 @@ piton_version = "3.0b" -- 2024/05/23 tabs-auto-gobble .code:n = \int_set:Nn \l_@@_gobble_int { -3 } , tabs-auto-gobble .value_forbidden:n = true , + splittable-on-empty-lines .bool_set:N = \l_@@_splittable_on_empty_lines_bool , + splittable-on-empty-lines .default:n = true , + split-on-empty-lines .bool_set:N = \l_@@_split_on_empty_lines_bool , - split-on-empty-lines .default:n = true , + split-on-empty-lines .default:n = true , split-separation .tl_set:N = \l_@@_split_separation_tl , split-separation .value_required:n = true , @@ -3849,13 +4141,12 @@ piton_version = "3.0b" -- 2024/05/23 } , left-margin .value_required:n = true , - tab-size .code:n = \@@_set_tab_tl:n { #1 } , + tab-size .int_set:N = \l_@@_tab_size_int , tab-size .value_required:n = true , - show-spaces .code:n = - \bool_set_true:N \l_@@_show_spaces_bool - \@@_convert_tab_tl: , + show-spaces .bool_set:N = \l_@@_show_spaces_bool , show-spaces .value_forbidden:n = true , - show-spaces-in-strings .code:n = \tl_set:Nn \l_@@_space_tl { ␣ } , % U+2423 + show-spaces-in-strings .code:n = + \tl_set:Nn \l_@@_space_in_string_tl { ␣ } , % U+2423 show-spaces-in-strings .value_forbidden:n = true , break-lines-in-Piton .bool_set:N = \l_@@_break_lines_in_Piton_bool , break-lines-in-Piton .default:n = true , @@ -3895,6 +4186,10 @@ piton_version = "3.0b" -- 2024/05/23 } , range .value_required:n = true , + env-used-by-split .code:n = + \lua_now:n { piton.env_used_by_split = '#1' } , + env-used-by-split .initial:n = Piton , + resume .meta:n = line-numbers/resume , unknown .code:n = \@@_error:n { Unknown~key~for~PitonOptions } , @@ -3903,11 +4198,7 @@ piton_version = "3.0b" -- 2024/05/23 all-line-numbers .code:n = \bool_set_true:N \l_@@_line_numbers_bool \bool_set_false:N \l_@@_skip_empty_lines_bool , - all-line-numbers .value_forbidden:n = true , - - % deprecated - numbers-sep .dim_set:N = \l_@@_numbers_sep_dim , - numbers-sep .value_required:n = true + all-line-numbers .value_forbidden:n = true } % \end{macrocode} % @@ -3939,7 +4230,7 @@ piton_version = "3.0b" -- 2024/05/23 % When using |\NewPitonEnvironment| a user may use |\PitonOptions| inside. % However, the set of keys available should be different that in standard % |\PitonOptions|. That's why we define a version of |\PitonOptions| with no -% restrection on the set of available keys and we will link that version to +% restriction on the set of available keys and we will link that version to % |\PitonOptions| in such environment. % \begin{macrocode} \NewDocumentCommand \@@_fake_PitonOptions { } @@ -3954,7 +4245,9 @@ piton_version = "3.0b" -- 2024/05/23 % % \medskip % The following counter will be used to count the lines in the code when the -% user requires the numbers of the lines to be printed (with |line-numbers|). +% user requires the numbers of the lines to be printed (with |line-numbers|) +% whereas the counter |\g_@@_line_int| previously defined is \emph{not} used for +% that functionality. % % \begin{macrocode} \int_new:N \g_@@_visual_line_int @@ -3974,9 +4267,12 @@ piton_version = "3.0b" -- 2024/05/23 \hbox_overlap_left:n { { - \color { gray } - \footnotesize - \int_to_arabic:n \g_@@_visual_line_int + \l_@@_line_numbers_format_tl +% \end{macrocode} +% We put braces. Thus, the user may use the key |line-numbers/format| with a +% value such as |\fbox|. +% \begin{macrocode} + { \int_to_arabic:n \g_@@_visual_line_int } } \skip_horizontal:N \l_@@_numbers_sep_dim } @@ -3994,7 +4290,7 @@ piton_version = "3.0b" -- 2024/05/23 \tl_if_empty:NF \g_@@_aux_tl { \iow_now:Nn \@mainaux { \ExplSyntaxOn } - \iow_now:Nx \@mainaux + \iow_now:Ne \@mainaux { \tl_gset:cn { c_@@_ \int_use:N \g_@@_env_int _ tl } { \exp_not:o \g_@@_aux_tl } @@ -4011,7 +4307,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \cs_new_protected:Npn \@@_width_to_aux: { - \tl_gput_right:Nx \g_@@_aux_tl + \tl_gput_right:Ne \g_@@_aux_tl { \dim_set:Nn \l_@@_line_width_dim { \dim_eval:n { \g_@@_tmp_width_dim } } @@ -4079,7 +4375,7 @@ piton_version = "3.0b" -- 2024/05/23 % that is to say, for example : |[AspectJ]{Java}|. We use |\tl_if_blank:nF| % because the final user may have written |\NewPitonLanguage[ ]{Java}{...}|. % \begin{macrocode} - \tl_set:Nx \l_tmpa_tl + \tl_set:Ne \l_tmpa_tl { \tl_if_blank:nF { #1 } { [ \str_lowercase:n { #1 } ] } \str_lowercase:n { #2 } @@ -4100,11 +4396,12 @@ piton_version = "3.0b" -- 2024/05/23 % |\AtBeginDocument|. Hence, we will put also in a |\AtBeginDocument| the % utilisation of the Lua function |piton.new_language| (which does the main job). % \begin{macrocode} - \exp_args:NV \@@_NewPitonLanguage:nn \l_tmpa_tl { #3 } + \@@_NewPitonLanguage:on \l_tmpa_tl { #3 } } % \end{macrocode} % % \begin{macrocode} +\cs_generate_variant:Nn \@@_NewPitonLanguage:nn { o } \cs_new_protected:Npn \@@_NewPitonLanguage:nn #1 #2 { \hook_gput_code:nnn { begindocument } { . } @@ -4122,10 +4419,10 @@ piton_version = "3.0b" -- 2024/05/23 % is to say, for example : |[AspectJ]{Java}|. We use |\tl_if_blank:nF| because % the final user may have used |\NewPitonLanguage[Handel]{C}[ ]{C}{...}| % \begin{macrocode} - \tl_set:Nx \l_tmpa_tl + \tl_set:Ne \l_tmpa_tl { - \tl_if_blank:nF { #3 } { [ \str_lowercase:n { #3 } ] } - \str_lowercase:n { #4 } + \tl_if_blank:nF { #3 } { [ \str_lowercase:n { #3 } ] } + \str_lowercase:n { #4 } } % \end{macrocode} % We retrieve in |\l_tmpb_tl| the definition (as provided by the final user) of @@ -4133,17 +4430,18 @@ piton_version = "3.0b" -- 2024/05/23 % languages provided by \pkg{piton} but only those defined by using % |\NewPitonLanguage|. % \begin{macrocode} - \prop_get:NoNTF \g_@@_languages_prop \l_tmpa_tl \l_tmpb_tl + \prop_get:NoNTF \g_@@_languages_prop \l_tmpa_tl \l_tmpb_tl % \end{macrocode} % We can now define the new language by using the previous function. % \begin{macrocode} - { \@@_NewPitonLanguage:nnno { #1 } { #2 } { #5 } \l_tmpb_tl } - { \@@_error:n { Language~not~defined } } + { \@@_NewPitonLanguage:nnno { #1 } { #2 } { #5 } \l_tmpb_tl } + { \@@_error:n { Language~not~defined } } } % \end{macrocode} % % \bigskip % \begin{macrocode} +\cs_generate_variant:Nn \@@_NewPitonLanguage:nnnn { n n n o } \cs_new_protected:Npn \@@_NewPitonLanguage:nnnn #1 #2 #3 #4 % \end{macrocode} % In the following line, we write |#4,#3| and not |#3,#4| because we want that the @@ -4151,7 +4449,6 @@ piton_version = "3.0b" -- 2024/05/23 % in the language we define. % \begin{macrocode} { \@@_NewPitonLanguage:nnn { #1 } { #2 } { #4 , #3 } } -\cs_generate_variant:Nn \@@_NewPitonLanguage:nnnn { n n n o } % \end{macrocode} % % \bigskip @@ -4164,21 +4461,33 @@ piton_version = "3.0b" -- 2024/05/23 \NewDocumentCommand { \@@_piton_standard } { m } { \group_begin: - \ttfamily + \bool_if:NT \l_@@_break_lines_in_piton_bool + { \tl_set_eq:NN \l_@@_space_in_string_tl \space } % \end{macrocode} -% The following tuning of LuaTeX in order to avoid all break of lines on the +% The following tuning of LuaTeX in order to avoid all breaks of lines on the % hyphens. % \begin{macrocode} \automatichyphenmode = 1 +% \end{macrocode} +% Remark that the argument of |\piton| (with the normal syntax) is expanded in +% the TeX sens, (see the |\tl_set:Ne| below) and that's why we can provide the +% following escapes to the final user: +% \begin{macrocode} \cs_set_eq:NN \\ \c_backslash_str \cs_set_eq:NN \% \c_percent_str \cs_set_eq:NN \{ \c_left_brace_str \cs_set_eq:NN \} \c_right_brace_str \cs_set_eq:NN \$ \c_dollar_str +% \end{macrocode} +% The standard command |\␣| is \emph{not} expandable and we need here expandable +% commands. With the following code, we define an expandable command. +% \begin{macrocode} \cs_set_eq:cN { ~ } \space - \cs_set_protected:Npn \@@_begin_line: { } - \cs_set_protected:Npn \@@_end_line: { } - \tl_set:Nx \l_tmpa_tl +% \end{macrocode} +% +% \begin{macrocode} + \cs_set_eq:NN \@@_begin_line: \prg_do_nothing: + \tl_set:Ne \l_tmpa_tl { \lua_now:e { piton.ParseBis('\l_piton_language_str',token.scan_string()) } @@ -4196,7 +4505,14 @@ piton_version = "3.0b" -- 2024/05/23 \bool_if:NT \l_@@_break_lines_in_piton_bool { \regex_replace_all:nnN { \x20 } { \x20 } \l_tmpa_tl } } - \l_tmpa_tl +% \end{macrocode} +% The command |\text| is provided by the package \pkg{amstext} (loaded by \pkg{piton}). +% \begin{macrocode} + \if_mode_math: + \text { \l_@@_font_command_tl \l_tmpa_tl } + \else: + \l_@@_font_command_tl \l_tmpa_tl + \fi: \group_end: } % \end{macrocode} @@ -4206,11 +4522,10 @@ piton_version = "3.0b" -- 2024/05/23 \NewDocumentCommand { \@@_piton_verbatim } { v } { \group_begin: - \ttfamily + \l_@@_font_command_tl \automatichyphenmode = 1 - \cs_set_protected:Npn \@@_begin_line: { } - \cs_set_protected:Npn \@@_end_line: { } - \tl_set:Nx \l_tmpa_tl + \cs_set_eq:NN \@@_begin_line: \prg_do_nothing: + \tl_set:Ne \l_tmpa_tl { \lua_now:e { piton.Parse('\l_piton_language_str',token.scan_string()) } @@ -4227,84 +4542,36 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % % -% \bigskip -% The following command is not a user command. It will be used when we will -% have to ``rescan'' some chunks of Python code. For example, it will be the -% initial value of the Piton style |InitialValues| (the default values of the -% arguments of a Python function). +% \bigskip +% The following command does \emph{not} correspond to a user command. It will +% be used when we will have to ``rescan'' some chunks of informatic code. For +% example, it will be the initial value of the Piton style |InitialValues| (the +% default values of the arguments of a Python function). % \begin{macrocode} \cs_new_protected:Npn \@@_piton:n #1 + { \tl_if_blank:nF { #1 } { \@@_piton_i:n { #1 } } } + +\cs_new_protected:Npn \@@_piton_i:n #1 { \group_begin: - \cs_set_protected:Npn \@@_begin_line: { } - \cs_set_protected:Npn \@@_end_line: { } + \cs_set_eq:NN \@@_begin_line: \prg_do_nothing: \cs_set:cpn { pitonStyle _ \l_piton_language_str _ Prompt } { } \cs_set:cpn { pitonStyle _ Prompt } { } - \bool_lazy_or:nnTF - \l_@@_break_lines_in_piton_bool - \l_@@_break_lines_in_Piton_bool - { - \tl_set:Nx \l_tmpa_tl - { - \lua_now:e - { piton.ParseTer('\l_piton_language_str',token.scan_string()) } - { #1 } - } - } - { - \tl_set:Nx \l_tmpa_tl - { - \lua_now:e - { piton.Parse('\l_piton_language_str',token.scan_string()) } - { #1 } - } + \cs_set_eq:NN \@@_trailing_space: \space + \tl_set:Ne \l_tmpa_tl + { + \lua_now:e + { piton.ParseTer('\l_piton_language_str',token.scan_string()) } + { #1 } } \bool_if:NT \l_@@_show_spaces_bool { \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423 - \l_tmpa_tl + \@@_replace_spaces:o \l_tmpa_tl \group_end: } % \end{macrocode} % -% \bigskip -% The following command is similar to the previous one but raise a fatal error if -% its argument contains a carriage return. -% \begin{macrocode} -\cs_new_protected:Npn \@@_piton_no_cr:n #1 - { - \group_begin: - \cs_set_protected:Npn \@@_begin_line: { } - \cs_set_protected:Npn \@@_end_line: { } - \cs_set:cpn { pitonStyle _ \l_piton_language_str _ Prompt } { } - \cs_set:cpn { pitonStyle _ Prompt } { } - \cs_set_protected:Npn \@@_newline: - { \msg_fatal:nn { piton } { cr~not~allowed } } - \bool_lazy_or:nnTF - \l_@@_break_lines_in_piton_bool - \l_@@_break_lines_in_Piton_bool - { - \tl_set:Nx \l_tmpa_tl - { - \lua_now:e - { piton.ParseTer('\l_piton_language_str',token.scan_string()) } - { #1 } - } - } - { - \tl_set:Nx \l_tmpa_tl - { - \lua_now:e - { piton.Parse('\l_piton_language_str',token.scan_string()) } - { #1 } - } - } - \bool_if:NT \l_@@_show_spaces_bool - { \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423 - \l_tmpa_tl - \group_end: - } -% \end{macrocode} -% +% % \bigskip % Despite its name, |\@@_pre_env:| will be used both in |\PitonInputFile| and % in the environments such as |{Piton}|. @@ -4341,13 +4608,14 @@ piton_version = "3.0b" -- 2024/05/23 % the following function is the name of the Lua function that will be applied to % the second argument in order to count the number of lines. % \begin{macrocode} +\cs_generate_variant:Nn \@@_compute_left_margin:nn { n o } \cs_new_protected:Npn \@@_compute_left_margin:nn #1 #2 { \bool_lazy_and:nnT \l_@@_left_margin_auto_bool \l_@@_line_numbers_bool { \hbox_set:Nn \l_tmpa_box { - \footnotesize + \l_@@_line_numbers_format_tl \bool_if:NTF \l_@@_skip_empty_lines_bool { \lua_now:n @@ -4355,7 +4623,7 @@ piton_version = "3.0b" -- 2024/05/23 { #2 } \int_to_arabic:n { \g_@@_visual_line_int + \l_@@_nb_non_empty_lines_int } - } + } { \int_to_arabic:n { \g_@@_visual_line_int + \l_@@_nb_lines_int } @@ -4365,7 +4633,6 @@ piton_version = "3.0b" -- 2024/05/23 { \box_wd:N \l_tmpa_box + \l_@@_numbers_sep_dim + 0.1 em } } } -\cs_generate_variant:Nn \@@_compute_left_margin:nn { n o } % \end{macrocode} % % @@ -4446,24 +4713,24 @@ piton_version = "3.0b" -- 2024/05/23 ####1 \c_backslash_str end \c_left_brace_str #1 \c_right_brace_str } - { + { \group_end: - \mode_if_vertical:TF \mode_leave_vertical: \newline + \mode_if_vertical:TF { \noindent \mode_leave_vertical: } \newline % \end{macrocode} -% We count with Lua the number of lines of the argument. The result will be -% stored by Lua in |\l_@@_nb_lines_int|. That information will be used to allow -% or disallow page breaks. The use of |token.scan_argument| avoids problems with -% the delimiters of the Lua string. +% The following line is only to compute |\l_@@_lines_int| which will be used +% only when both |left-margin=auto| and |skip-empty-lines = false| are in force. +% You should change that. % \begin{macrocode} - \lua_now:n { piton.CountLines(token.scan_argument()) } { ##1 } + \lua_now:e { piton.CountLines ( '\lua_escape:n{##1}' ) } % \end{macrocode} % The first argument of the following function is the name of the Lua function % that will be applied to the second argument in order to count the number of lines. % \begin{macrocode} \@@_compute_left_margin:nn { CountNonEmptyLines } { ##1 } \@@_compute_width: - \ttfamily - \dim_zero:N \parskip + \l_@@_font_command_tl + \dim_zero:N \parskip + \noindent % \end{macrocode} % % Now, the key |write|. @@ -4477,11 +4744,11 @@ piton_version = "3.0b" -- 2024/05/23 \str_if_empty:NTF \l_@@_write_str { \lua_now:n { piton.write = '' } } { - \seq_if_in:NVTF \g_@@_write_seq \l_@@_write_str + \seq_if_in:NoTF \g_@@_write_seq \l_@@_write_str { \lua_now:n { piton.write_mode = "a" } } { \lua_now:n { piton.write_mode = "w" } - \seq_gput_left:NV \g_@@_write_seq \l_@@_write_str + \seq_gput_left:No \g_@@_write_seq \l_@@_write_str } } % \end{macrocode} @@ -4489,8 +4756,8 @@ piton_version = "3.0b" -- 2024/05/23 % Now, the main job. % \begin{macrocode} \bool_if:NTF \l_@@_split_on_empty_lines_bool - \@@_gobble_split_parse:n - \@@_gobble_parse:n + \@@_retrieve_gobble_split_parse:n + \@@_retrieve_gobble_parse:n { ##1 } % \end{macrocode} % @@ -4544,17 +4811,21 @@ piton_version = "3.0b" -- 2024/05/23 % % \bigskip % The following function will be used when the key |split-on-empty-lines| is not -% in force. It will gobble the spaces at the beginning of the lines and parse -% the code. The argument is provided by curryfication. +% in force. It will retrieve the first empty line, gobble the spaces at the +% beginning of the lines and parse the code. The argument is provided by +% curryfication. % \begin{macrocode} -\cs_new_protected:Npn \@@_gobble_parse:n +\cs_new_protected:Npn \@@_retrieve_gobble_parse:n { \lua_now:e { - piton.GobbleParse + piton.RetrieveGobbleParse ( '\l_piton_language_str' , \int_use:N \l_@@_gobble_int , + \bool_if:NTF \l_@@_splittable_on_empty_lines_bool + { \int_eval:n { - \l_@@_splittable_int } } + { \int_use:N \l_@@_splittable_int } , token.scan_argument ( ) ) } @@ -4567,14 +4838,15 @@ piton_version = "3.0b" -- 2024/05/23 % |gobble| is in force), then split the code at the empty lines and, eventually, % parse the code. The argument is provided by curryfication. % \begin{macrocode} -\cs_new_protected:Npn \@@_gobble_split_parse:n +\cs_new_protected:Npn \@@_retrieve_gobble_split_parse:n { \lua_now:e { - piton.GobbleSplitParse + piton.RetrieveGobbleSplitParse ( '\l_piton_language_str' , \int_use:N \l_@@_gobble_int , + \int_use:N \l_@@_splittable_int , token.scan_argument ( ) ) } @@ -4614,21 +4886,38 @@ piton_version = "3.0b" -- 2024/05/23 { \group_begin: % \end{macrocode} -% The boolean |\l_tmap_bool| will be raised if the file is found somewhere in -% the path (specified by the key |path|). +% In version 4.0 of \pkg{piton}, we changed the mechanism used by \pkg{piton} +% to search the file to load with |\PitonInputFile|. With the key +% |old-PitonInputFile|, it's possible to keep the old behaviour but it's only +% for backward compatibility and it will be deleted in a future version. % \begin{macrocode} - \bool_set_false:N \l_tmpa_bool - \seq_map_inline:Nn \l_@@_path_seq + \bool_if:NTF \l_@@_old_PitonInputFile_bool { - \str_set:Nn \l_@@_file_name_str { ##1 / #3 } - \file_if_exist:nT { \l_@@_file_name_str } - { - \@@_input_file:nn { #1 } { #2 } - \bool_set_true:N \l_tmpa_bool - \seq_map_break: + \bool_set_false:N \l_tmpa_bool + \seq_map_inline:Nn \l__piton_path_seq + { + \str_set:Nn \l__piton_file_name_str { ##1 / #3 } + \file_if_exist:nT { \l__piton_file_name_str } + { + \__piton_input_file:nn { #1 } { #2 } + \bool_set_true:N \l_tmpa_bool + \seq_map_break: + } } + \bool_if:NTF \l_tmpa_bool { #4 } { #5 } + } + { + \seq_concat:NNN + \l_file_search_path_seq + \l_@@_path_seq + \l_file_search_path_seq + \file_get_full_name:nNTF { #3 } \l_@@_file_name_str + { + \@@_input_file:nn { #1 } { #2 } + #4 + } + { #5 } } - \bool_if:NTF \l_tmpa_bool { #4 } { #5 } \group_end: } % \end{macrocode} @@ -4715,8 +5004,7 @@ piton_version = "3.0b" -- 2024/05/23 \mode_if_vertical:TF \mode_leave_vertical: \newline % \end{macrocode} % We count with Lua the number of lines of the argument. The result will be -% stored by Lua in |\l_@@_nb_lines_int|. That information will be used to allow -% or disallow page breaks. +% stored by Lua in |\l_@@_nb_lines_int|. % \begin{macrocode} \lua_now:e { piton.CountLinesFile ( '\l_@@_file_name_str' ) } % \end{macrocode} @@ -4725,8 +5013,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \@@_compute_left_margin:no { CountNonEmptyLinesFile } \l_@@_file_name_str \@@_compute_width: - \ttfamily - % \leavevmode + \l_@@_font_command_tl \lua_now:e { piton.ParseFile( @@ -4734,11 +5021,22 @@ piton_version = "3.0b" -- 2024/05/23 '\l_@@_file_name_str' , \int_use:N \l_@@_first_line_int , \int_use:N \l_@@_last_line_int , + \bool_if:NTF \l_@@_splittable_on_empty_lines_bool + { \int_eval:n { - \l_@@_splittable_int } } + { \int_use:N \l_@@_splittable_int } , \bool_if:NTF \l_@@_split_on_empty_lines_bool { 1 } { 0 } ) } \bool_if:NT \l_@@_width_min_bool \@@_width_to_aux: \group_end: % \end{macrocode} +% +% +% The following line is to allow programs such as |latexmk| to be aware that the +% file (read by |\PitonInputFile|) is loaded during the compilation of the LaTeX +% document. +% \begin{macrocode} + \iow_log:e {(\l_@@_file_name_str)} +% \end{macrocode} % We recall that, if we are in Beamer, the command |\PitonInputFile| is % ``overlay-aware'' and that's why we close now an environment |{uncoverenv}| % that we have opened at the beginning of the command. @@ -4760,15 +5058,15 @@ piton_version = "3.0b" -- 2024/05/23 % We store the markers in L3 strings (|str|) in order to do safely the following % replacement of |\#|. % \begin{macrocode} - \str_set:Nx \l_tmpa_str { \@@_marker_beginning:n \l_@@_begin_range_str } - \str_set:Nx \l_tmpb_str { \@@_marker_end:n \l_@@_end_range_str } + \str_set:Ne \l_tmpa_str { \@@_marker_beginning:n \l_@@_begin_range_str } + \str_set:Ne \l_tmpb_str { \@@_marker_end:n \l_@@_end_range_str } % \end{macrocode} % We replace the sequences |\#| which may be present in the prefixes (and, more % unlikely, suffixes) added to the markers by the functions % |\@@_marker_beginning:n| and |\@@_marker_end:n| % \begin{macrocode} - \exp_args:NnV \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpa_str - \exp_args:NnV \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpb_str + \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpa_str + \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpb_str \lua_now:e { piton.ComputeRange @@ -4795,7 +5093,7 @@ piton_version = "3.0b" -- 2024/05/23 \NewDocumentCommand { \SetPitonStyle } { O { } m } { \str_clear_new:N \l_@@_SetPitonStyle_option_str - \str_set:Nx \l_@@_SetPitonStyle_option_str { \str_lowercase:n { #1 } } + \str_set:Ne \l_@@_SetPitonStyle_option_str { \str_lowercase:n { #1 } } \str_if_eq:onT \l_@@_SetPitonStyle_option_str { current-language } { \str_set_eq:NN \l_@@_SetPitonStyle_option_str \l_piton_language_str } \keys_set:nn { piton / Styles } { #2 } @@ -4818,10 +5116,12 @@ piton_version = "3.0b" -- 2024/05/23 Discard , Exception , FormattingType , + Identifier.Internal , Identifier , InitialValues , Interpol.Inside , Keyword , + Keyword.Governing , Keyword.Constant , Keyword2 , Keyword3 , @@ -4854,10 +5154,14 @@ piton_version = "3.0b" -- 2024/05/23 TypeParameter , UserFunction , % \end{macrocode} +% |TypeExpression| is an internal style for expressions which defines types in OCaml. +% \begin{macrocode} + TypeExpression , +% \end{macrocode} % Now, specific styles for the languages created with |\NewPitonLanguage| with % the syntax of \pkg{listings}. % \begin{macrocode} - Directive + Directive } \clist_map_inline:Nn \g_@@_styles_clist @@ -4866,31 +5170,37 @@ piton_version = "3.0b" -- 2024/05/23 { #1 .value_required:n = true , #1 .code:n = - \tl_set:cn - { - pitonStyle _ - \str_if_empty:NF \l_@@_SetPitonStyle_option_str - { \l_@@_SetPitonStyle_option_str _ } - #1 - } - { ##1 } + \tl_set:cn + { + pitonStyle _ + \str_if_empty:NF \l_@@_SetPitonStyle_option_str + { \l_@@_SetPitonStyle_option_str _ } + #1 + } + { ##1 } } } \keys_define:nn { piton / Styles } { - String .meta:n = { String.Long = #1 , String.Short = #1 } , - Comment.Math .tl_set:c = pitonStyle _ Comment.Math , - ParseAgain .tl_set:c = pitonStyle _ ParseAgain , - ParseAgain .value_required:n = true , - ParseAgain.noCR .tl_set:c = pitonStyle _ ParseAgain.noCR , - ParseAgain.noCR .value_required:n = true , + String .meta:n = { String.Long = #1 , String.Short = #1 } , + Comment.Math .tl_set:c = pitonStyle _ Comment.Math , unknown .code:n = \@@_error:n { Unknown~key~for~SetPitonStyle } } % \end{macrocode} % % \bigskip +% \begin{macrocode} +\SetPitonStyle[OCaml] + { + TypeExpression = + \SetPitonStyle { Identifier = \PitonStyle { Name.Type } } + \@@_piton:n , + } +% \end{macrocode} +% +% \bigskip % We add the word |String| to the list of the styles because we will use that % list in the error message for an unknown key in |\SetPitonStyle|. % @@ -4909,7 +5219,18 @@ piton_version = "3.0b" -- 2024/05/23 } % \end{macrocode} % -% +% \bigskip +% \begin{macrocode} +\cs_set_eq:NN \@@_break_anywhere:n \prg_do_nothing: +\cs_new_protected:Npn \@@_actually_break_anywhere:n #1 + { + \seq_clear:N \l_tmpa_seq + \tl_map_inline:nn { #1 } + { \seq_put_right:Nn \l_tmpa_seq { ##1 } } + \seq_use:Nn \l_tmpa_seq { \- } + } +% \end{macrocode} +% % \bigskip % \subsubsection{The initial styles} % @@ -4919,55 +5240,57 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \SetPitonStyle { - Comment = \color[HTML]{0099FF} \itshape , - Exception = \color[HTML]{CC0000} , - Keyword = \color[HTML]{006699} \bfseries , - Keyword.Constant = \color[HTML]{006699} \bfseries , - Name.Builtin = \color[HTML]{336666} , - Name.Decorator = \color[HTML]{9999FF}, - Name.Class = \color[HTML]{00AA88} \bfseries , - Name.Function = \color[HTML]{CC00FF} , - Name.Namespace = \color[HTML]{00CCFF} , - Name.Constructor = \color[HTML]{006000} \bfseries , - Name.Field = \color[HTML]{AA6600} , - Name.Module = \color[HTML]{0060A0} \bfseries , - Name.Table = \color[HTML]{309030} , - Number = \color[HTML]{FF6600} , - Operator = \color[HTML]{555555} , - Operator.Word = \bfseries , - String = \color[HTML]{CC3300} , - String.Doc = \color[HTML]{CC3300} \itshape , - String.Interpol = \color[HTML]{AA0000} , - Comment.LaTeX = \normalfont \color[rgb]{.468,.532,.6} , - Name.Type = \color[HTML]{336666} , - InitialValues = \@@_piton:n , - Interpol.Inside = \color{black}\@@_piton:n , - TypeParameter = \color[HTML]{336666} \itshape , - Preproc = \color[HTML]{AA6600} \slshape , - Identifier = \@@_identifier:n , - Directive = \color[HTML]{AA6600} , - Tag = \colorbox{gray!10}, - UserFunction = , - Prompt = , - ParseAgain.noCR = \@@_piton_no_cr:n , - ParseAgain = \@@_piton:n , - Discard = \use_none:n + Comment = \color[HTML]{0099FF} \itshape , + Exception = \color[HTML]{CC0000} , + Keyword = \color[HTML]{006699} \bfseries , + Keyword.Governing = \color[HTML]{006699} \bfseries , + Keyword.Constant = \color[HTML]{006699} \bfseries , + Name.Builtin = \color[HTML]{336666} , + Name.Decorator = \color[HTML]{9999FF}, + Name.Class = \color[HTML]{00AA88} \bfseries , + Name.Function = \color[HTML]{CC00FF} , + Name.Namespace = \color[HTML]{00CCFF} , + Name.Constructor = \color[HTML]{006000} \bfseries , + Name.Field = \color[HTML]{AA6600} , + Name.Module = \color[HTML]{0060A0} \bfseries , + Name.Table = \color[HTML]{309030} , + Number = \color[HTML]{FF6600} , + Operator = \color[HTML]{555555} , + Operator.Word = \bfseries , + String = \color[HTML]{CC3300} \@@_break_anywhere:n , + String.Doc = \color[HTML]{CC3300} \itshape , + String.Interpol = \color[HTML]{AA0000} , + Comment.LaTeX = \normalfont \color[rgb]{.468,.532,.6} , + Name.Type = \color[HTML]{336666} , + InitialValues = \@@_piton:n , + Interpol.Inside = \l_@@_font_command_tl \@@_piton:n , + TypeParameter = \color[HTML]{336666} \itshape , + Preproc = \color[HTML]{AA6600} \slshape , +% \end{macrocode} +% We need the command |\@@_identifier:n| because of the command +% |\SetPitonIdentifier|. The command |\@@_identifier:n| will potentially call +% the style |Identifier| (which is a user-style, not an internal style). +% \begin{macrocode} + Identifier.Internal = \@@_identifier:n , + Identifier = , + Directive = \color[HTML]{AA6600} , + Tag = \colorbox{gray!10}, + UserFunction = \PitonStyle{Identifier} , + Prompt = , + Discard = \use_none:n } % \end{macrocode} -% The last styles |ParseAgain.noCR| and |ParseAgain| should be considered as -% ``internal style'' (not available for the final user). However, maybe we will -% change that and document these styles for the final user (why not?). % -% \medskip -% If the key |math-comments| has been used at load-time, we change the style -% |Comment.Math| which should be considered only at an ``internal style''. -% However, maybe we will document in a future version the possibility to write -% change the style \emph{locally} in a document)]. +% \medskip +% If the key |math-comments| has been used in the preamble of the LaTeX +% document, we change the style |Comment.Math| which should be considered only +% at an ``internal style''. However, maybe we will document in a future version +% the possibility to write change the style \emph{locally} in a document)]. % \begin{macrocode} -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \bool_if:NT \g_@@_math_comments_bool - { \SetPitonStyle { Comment.Math = \@@_math_scantokens:n } } + { \SetPitonStyle { Comment.Math = \@@_math_scantokens:n } } } % \end{macrocode} % @@ -4988,7 +5311,7 @@ piton_version = "3.0b" -- 2024/05/23 { \cs_set:cpn { PitonIdentifier _ ##1 } { #3 } } } { - \str_set:Nx \l_tmpa_str { \str_lowercase:n { #1 } } + \str_set:Ne \l_tmpa_str { \str_lowercase:n { #1 } } \str_if_eq:onT \l_tmpa_str { current-language } { \str_set_eq:NN \l_tmpa_str \l_piton_language_str } \clist_map_inline:Nn \l_tmpa_clist @@ -5001,7 +5324,10 @@ piton_version = "3.0b" -- 2024/05/23 \cs_new_protected:Npn \@@_identifier:n #1 { \cs_if_exist_use:cF { PitonIdentifier _ \l_piton_language_str _ #1 } - { \cs_if_exist_use:c { PitonIdentifier _ #1 } } + { + \cs_if_exist_use:cF { PitonIdentifier _ #1 } + { \PitonStyle { Identifier } } + } { #1 } } % \end{macrocode} @@ -5041,8 +5367,8 @@ piton_version = "3.0b" -- 2024/05/23 % We update |\g_@@_languages_seq| which is used only by the command % |\PitonClearUserFunctions| when it's used without its optional argument. % \begin{macrocode} - \seq_if_in:NVF \g_@@_languages_seq \l_piton_language_str - { \seq_gput_left:NV \g_@@_languages_seq \l_piton_language_str } + \seq_if_in:NoF \g_@@_languages_seq \l_piton_language_str + { \seq_gput_left:No \g_@@_languages_seq \l_piton_language_str } } % \end{macrocode} % @@ -5074,12 +5400,13 @@ piton_version = "3.0b" -- 2024/05/23 % \bigskip % \begin{macrocode} \cs_new_protected:Npn \@@_clear_functions_i:n #1 - { \exp_args:Ne \@@_clear_functions_ii:n { \str_lowercase:n { #1 } } } + { \@@_clear_functions_ii:n { \str_lowercase:n { #1 } } } % \end{macrocode} % % The following command clears the list of the user-defined functions for the % language provided in argument (mandatory in lower case). % \begin{macrocode} +\cs_generate_variant:Nn \@@_clear_functions_ii:n { e } \cs_new_protected:Npn \@@_clear_functions_ii:n #1 { \seq_if_exist:cT { g_@@_functions _ #1 _ seq } @@ -5116,7 +5443,7 @@ piton_version = "3.0b" -- 2024/05/23 % % \begin{macrocode} \AddToHook { env / piton / begin } - { \msg_fatal:nn { piton } { No~environment~piton } } + { \@@_fatal:n { No~environment~piton } } \msg_new:nnn { piton } { No~environment~piton } { @@ -5215,16 +5542,30 @@ piton_version = "3.0b" -- 2024/05/23 } % \end{macrocode} % +% We don't give the name |syntax error| for the following error because you +% should not give a name with a space because such space could be replaced by +% U+2423 when the key |show-spaces| is in force in the command |\piton|. % \begin{macrocode} -\@@_msg_new:nn { syntax~error } +\@@_msg_new:nn { SyntaxError } { - Your~code~of~the~language~"\l_piton_language_str"~is~not~ + Syntax~Error.\\ + Your~code~of~the~language~'\l_piton_language_str'~is~not~ syntactically~correct.\\ It~won't~be~printed~in~the~PDF~file. } % \end{macrocode} % % \begin{macrocode} +\@@_msg_new:nn { FileError } + { + File~Error.\\ + It's~not~possible~to~write~on~the~file~'\l_@@_write_str'.\\ + \sys_if_shell_unrestricted:F { Be~sure~to~compile~with~'-shell-escape'.\\ } + If~you~go~on,~nothing~will~be~written~on~the~file. + } +% \end{macrocode} +% +% \begin{macrocode} \@@_msg_new:nn { begin~marker~not~found } { Marker~not~found.\\ @@ -5272,12 +5613,17 @@ piton_version = "3.0b" -- 2024/05/23 break-lines,~ break-lines-in-piton,~ break-lines-in-Piton,~ + break-strings-anywhere,~ continuation-symbol,~ continuation-symbol-on-indentation,~ + detected-beamer-commands,~ + detected-beamer-environments,~ detected-commands,~ end-of-broken-line,~ end-range,~ env-gobble,~ + env-used-by-split,~ + font-command,~ gobble,~ indent-broken-lines,~ language,~ @@ -5292,6 +5638,7 @@ piton_version = "3.0b" -- 2024/05/23 show-spaces,~ show-spaces-in-strings,~ splittable,~ + splittable-on-empty-lines,~ split-on-empty-lines,~ split-separation,~ tabs-auto-gobble,~ @@ -5310,18 +5657,6 @@ piton_version = "3.0b" -- 2024/05/23 } % \end{macrocode} % -% \bigskip -% \begin{macrocode} -\@@_msg_new:nn { cr~not~allowed } - { - You~can't~put~any~carriage~return~in~the~argument~ - of~a~command~\c_backslash_str - \l_@@_beamer_command_str\ within~an~ - environment~of~'piton'.~You~should~consider~using~the~ - corresponding~environment.\\ - That~error~is~fatal. - } -% \end{macrocode} % % \bigskip % \begin{macrocode} @@ -5343,7 +5678,7 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} \cs_new_protected:Npn \@@_test_version:n #1 { - \str_if_eq:VnF \PitonFileVersion { #1 } + \str_if_eq:onF \PitonFileVersion { #1 } { \@@_error:n { bad~version~of~piton.lua } } } % \end{macrocode} @@ -5371,11 +5706,12 @@ piton_version = "3.0b" -- 2024/05/23 lpeg.locale(lpeg) local P , alpha , C , space , S , V = lpeg.P , lpeg.alpha , lpeg.C , lpeg.space , lpeg.S , lpeg.V - local function add(...) - local s = P ( false ) - for _ , x in ipairs({...}) do s = s + x end - return s - end + local add + function add(...) + local s = P ( false ) + for _ , x in ipairs({...}) do s = s + x end + return s + end local my_lpeg = P { "E" , E = ( V "F" * ( "," * V "F" ) ^ 0 ) / add , @@ -5386,8 +5722,29 @@ piton_version = "3.0b" -- 2024/05/23 % \begin{macrocode} F = space ^ 0 * ( ( alpha ^ 1 ) / "\\%0" ) * space ^ 0 } - function piton.addListCommands( key_value ) - piton.ListCommands = piton.ListCommands + my_lpeg : match ( key_value ) + function piton.addDetectedCommands ( key_value ) + piton.DetectedCommands = piton.DetectedCommands + my_lpeg : match ( key_value ) + end + function piton.addBeamerCommands( key_value ) + piton.BeamerCommands + = piton.BeamerCommands + my_lpeg : match ( key_value ) + end +% \end{macrocode} +% +% \begin{macrocode} + local insert + function insert(...) + local s = piton.beamer_environments + for _ , x in ipairs({...}) do table.insert(s,x) end + return s + end + local my_lpeg_bis = + P { "E" , + E = ( V "F" * ( "," * V "F" ) ^ 0 ) / insert , + F = space ^ 0 * ( alpha ^ 1 ) * space ^ 0 + } + function piton.addBeamerEnvironments( key_value ) + piton.beamer_environments = my_lpeg_bis : match ( key_value ) end \end{luacode*} %</STY> @@ -5406,28 +5763,17 @@ piton_version = "3.0b" -- 2024/05/23 % % \begin{macrocode} %<*LUA> -if piton.comment_latex == nil then piton.comment_latex = ">" end +piton.comment_latex = piton.comment_latex or ">" piton.comment_latex = "#" .. piton.comment_latex % \end{macrocode} % % -% \bigskip -% The following functions are an easy way to safely insert braces (|{| and |}|) -% in the TeX flow. % \begin{macrocode} -function piton.open_brace () - tex.sprint("{") -end -function piton.close_brace () - tex.sprint("}") +local sprintL3 +function sprintL3 ( s ) + tex.sprint ( luatexbase.catcodetables.expl , s ) end % \end{macrocode} -% -% \begin{macrocode} -local function sprintL3 ( s ) - tex.sprint ( luatexbase.catcodetables.expl , s ) -end -% \end{uncoverenv} % % \bigskip % \subsubsection{Special functions dealing with LPEG} @@ -5438,7 +5784,7 @@ end % \begin{macrocode} local P, S, V, C, Ct, Cc = lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Ct, lpeg.Cc local Cs , Cg , Cmt , Cb = lpeg.Cs, lpeg.Cg , lpeg.Cmt , lpeg.Cb -local R = lpeg.R +local B , R = lpeg.B , lpeg.R % \end{macrocode} % % @@ -5447,10 +5793,11 @@ local R = lpeg.R % The function |Q| takes in as argument a pattern and returns a \textsc{lpeg} % \emph{which does a capture} of the pattern. That capture will be sent to LaTeX % with the catcode ``other'' for all the characters: it's suitable for elements -% of the Python listings that \pkg{piton} will typeset verbatim (thanks to the +% of the informatic listings that \pkg{piton} will typeset verbatim (thanks to the % catcode ``other''). % \begin{macrocode} -local function Q ( pattern ) +local Q +function Q ( pattern ) return Ct ( Cc ( luatexbase.catcodetables.CatcodeTableOther ) * C ( pattern ) ) end % \end{macrocode} @@ -5464,8 +5811,9 @@ end % comments'' in the environments |{Piton}| and the elements between % |begin-escape| and |end-escape|. That function won't be much used. % \begin{macrocode} -local function L ( pattern ) - return Ct ( C ( pattern ) ) +local L +function L ( pattern ) return + Ct ( C ( pattern ) ) end % \end{macrocode} % @@ -5477,8 +5825,9 @@ end % in order to do the syntactic highlighting (that's the main job of % \pkg{piton}). That function, unlike the previous one, will be widely used. % \begin{macrocode} -local function Lc ( string ) - return Cc ( { luatexbase.catcodetables.expl , string } ) +local Lc +function Lc ( string ) return + Cc ( { luatexbase.catcodetables.expl , string } ) end % \end{macrocode} % @@ -5490,11 +5839,11 @@ end % a \pkg{piton} style and the second element is a pattern (that is to say a % \textsc{lpeg} without capture) % \begin{macrocode}e -local function K ( style , pattern ) - return - Lc ( "{\\PitonStyle{" .. style .. "}{" ) - * Q ( pattern ) - * Lc "}}" +local K +function K ( style , pattern ) return + Lc ( [[ {\PitonStyle{ ]] .. style .. "}{" ) + * Q ( pattern ) + * Lc "}}" end % \end{macrocode} % The formatting commands in a given \pkg{piton} style (eg. the style |Keyword|) @@ -5508,11 +5857,11 @@ end % The following function |WithStyle| is similar to the function |K| but should % be used for multi-lines elements. % \begin{macrocode} -local function WithStyle ( style , pattern ) - return - Ct ( Cc "Open" * Cc ( "{\\PitonStyle{" .. style .. "}{" ) * Cc "}}" ) - * pattern - * Ct ( Cc "Close" ) +local WithStyle +function WithStyle ( style , pattern ) return + Ct ( Cc "Open" * Cc ( [[{\PitonStyle{]] .. style .. "}{" ) * Cc "}}" ) + * pattern + * Ct ( Cc "Close" ) end % \end{macrocode} % @@ -5522,8 +5871,7 @@ end % \begin{macrocode} Escape = P ( false ) EscapeClean = P ( false ) -if piton.begin_escape ~= nil -then +if piton.begin_escape then Escape = P ( piton.begin_escape ) * L ( ( 1 - P ( piton.end_escape ) ) ^ 1 ) @@ -5541,13 +5889,12 @@ end % % \begin{macrocode} EscapeMath = P ( false ) -if piton.begin_escape_math ~= nil -then +if piton.begin_escape_math then EscapeMath = P ( piton.begin_escape_math ) * Lc "\\ensuremath{" * L ( ( 1 - P(piton.end_escape_math) ) ^ 1 ) - * Lc ( "}" ) + * Lc "}" * P ( piton.end_escape_math ) end % \end{macrocode} @@ -5589,7 +5936,7 @@ local identifier = letter * alphanum ^ 0 % On the other hand, the \textsc{lpeg} |Identifier| (with a capital) also returns % a \emph{capture}. % \begin{macrocode} -local Identifier = K ( 'Identifier' , identifier ) +local Identifier = K ( 'Identifier.Internal' , identifier ) % \end{macrocode} % % \bigskip @@ -5617,27 +5964,23 @@ local Number = % \end{macrocode} % % \bigskip +% We will now define the LPEG |Word|. +% +% We have a problem in the following LPEG because, obviously, we should adjust +% the list of symbols with the delimiters of the current language (no?). +% \begin{macrocode} +local lpeg_central = 1 - S " '\"\r[({})]" - digit +% \end{macrocode} % We recall that |piton.begin_escape| and |piton_end_escape| are Lua strings % corresponding to the keys |begin-escape| and |end-escape|. % \begin{macrocode} -local Word if piton.begin_escape then - if piton.begin_escape_math then - Word = Q ( ( 1 - space - piton.begin_escape - piton.end_escape - - piton.begin_escape_math - piton.end_escape_math - - S "'\"\r[({})]" - digit ) ^ 1 ) - else - Word = Q ( ( 1 - space - piton.begin_escape - piton.end_escape - - S "'\"\r[({})]" - digit ) ^ 1 ) - end -else - if piton.begin_escape_math then - Word = Q ( ( 1 - space - piton.begin_escape_math - piton.end_escape_math - - S "'\"\r[({})]" - digit ) ^ 1 ) - else - Word = Q ( ( 1 - space - S "'\"\r[({})]" - digit ) ^ 1 ) - end + lpeg_central = lpeg_central - piton.begin_escape +end +if piton.begin_escape_math then + lpeg_central = lpeg_central - piton.begin_escape_math end +local Word = Q ( lpeg_central ^ 1 ) % \end{macrocode} % % \bigskip @@ -5648,12 +5991,14 @@ local SkipSpace = Q " " ^ 0 local Punct = Q ( S ".,:;!" ) -local Tab = "\t" * Lc "\\l_@@_tab_tl" +local Tab = "\t" * Lc [[ \@@_tab: ]] % \end{macrocode} % % \bigskip +% Remember that |\@@_leading_space:| does \emph{not} create a space, only an +% incrementation of the counter |\g_@@_indentation_int|. % \begin{macrocode} -local SpaceIndentation = Lc "\\@@_an_indentation_space:" * Q " " +local SpaceIndentation = Lc [[ \@@_leading_space: ]] * Q " " % \end{macrocode} % % \bigskip @@ -5661,14 +6006,15 @@ local SpaceIndentation = Lc "\\@@_an_indentation_space:" * Q " " local Delim = Q ( S "[({})]" ) % \end{macrocode} % -% \bigskip +% \bigskip % The following \textsc{lpeg} catches a space (U+0020) and replace it by -% |\l_@@_space_tl|. It will be used in the strings. Usually, -% |\l_@@_space_tl| will contain a space and therefore there won't be difference. -% However, when the key |show-spaces-in-strings| is in force, |\\l_@@_space_tl| will -% contain ␣ (U+2423) in order to visualize the spaces. +% |\l_@@_space_in_string_tl|. It will be used in the strings. Usually, +% |\l_@@_space_in_string_tl| will contain a space and therefore there won't be +% difference. However, when the key |show-spaces-in-strings| is in force, +% |\\l_@@_space_in_string_tl| will contain ␣ (U+2423) in order to visualize the +% spaces. % \begin{macrocode} -local VisualSpace = space * Lc "\\l_@@_space_tl" +local SpaceInString = space * Lc [[ \l_@@_space_in_string_tl ]] % \end{macrocode} % % \bigskip @@ -5687,32 +6033,44 @@ local LPEG_cleaner = { } % present in strings of the language. However, the syntax for the strings is % language-dependent. That's why we write a Lua function |Compute_braces| which % will compute the pattern by taking in as argument a pattern for the strings of -% the language (at least the shorts strings). +% the language (at least the shorts strings). The argument of |Compute_braces| +% must be a pattern \emph{which does no catching}. % \begin{macrocode} -local function Compute_braces ( lpeg_string ) return - P { "E" , - E = - ( - "{" * V "E" * "}" - + - lpeg_string - + - ( 1 - S "{}" ) - ) ^ 0 - } +local Compute_braces +function Compute_braces ( lpeg_string ) return + P { "E" , + E = + ( + "{" * V "E" * "}" + + + lpeg_string + + + ( 1 - S "{}" ) + ) ^ 0 + } end % \end{macrocode} % +% +% % \bigskip % The following Lua function will compute the \text{lpeg} |DetectedCommands| -% which is a \textsc{lpeg} with captures). +% which is a \textsc{lpeg} with captures. % \begin{macrocode} -local function Compute_DetectedCommands ( lang , braces ) return - Ct ( Cc "Open" - * C ( piton.ListCommands * P "{" ) +local Compute_DetectedCommands +function Compute_DetectedCommands ( lang , braces ) return + Ct ( + Cc "Open" + * C ( piton.DetectedCommands * space ^ 0 * P "{" ) * Cc "}" ) - * ( braces / (function ( s ) return LPEG1[lang] : match ( s ) end ) ) + * ( braces + / ( function ( s ) + if s ~= '' then return + LPEG1[lang] : match ( s ) + end + end ) + ) * P "}" * Ct ( Cc "Close" ) end @@ -5720,10 +6078,16 @@ end % % \bigskip % \begin{macrocode} -local function Compute_LPEG_cleaner ( lang , braces ) return - Ct ( ( piton.ListCommands * "{" - * ( braces - / ( function ( s ) return LPEG_cleaner[lang] : match ( s ) end ) ) +local Compute_LPEG_cleaner +function Compute_LPEG_cleaner ( lang , braces ) return + Ct ( ( piton.DetectedCommands * "{" + * ( braces + / ( function ( s ) + if s ~= '' then return + LPEG_cleaner[lang] : match ( s ) + end + end ) + ) * "}" + EscapeClean + C ( P ( 1 ) ) @@ -5731,6 +6095,29 @@ local function Compute_LPEG_cleaner ( lang , braces ) return end % \end{macrocode} % +% \bigskip +% The following function |ParseAgain| will be used in the definitions of the +% LPEG of the different informatic languages when we will need to +% \emph{parse again} a small chunk of code. It's a way to avoid the use of a actual +% \emph{grammar} of LPEG (in a sens, a recursive regular expression). +% +% Remark that there is no \pkg{piton} style associated to a chunk of code which +% is analyzed by |ParseAgain|. If we wish a \pkg{piton} style available to the +% final user (if he wish to format that element with a uniform font instead of +% an analyze by |ParseAgain|), we have to use |\@@_piton:n|. +% \begin{macrocode} +local ParseAgain +function ParseAgain ( code ) + if code ~= '' then return +% \end{macrocode} +% The variable |piton.language| is set in the function |piton.Parse|. +% \begin{macrocode} + LPEG1[piton.language] : match ( code ) + end +end +% \end{macrocode} +% +% % % \bigskip % \paragraph{Constructions for Beamer} @@ -5744,28 +6131,20 @@ local BeamerBeginEnvironments = P ( true ) local BeamerEndEnvironments = P ( true ) % \end{macrocode} % -% \bigskip % \begin{macrocode} -local list_beamer_env = - { "uncoverenv" , "onlyenv" , "visibleenv" , - "invisibleenv" , "alertenv" , "actionenv" } -% \end{macrocode} -% -% \bigskip -% \begin{macrocode} -local BeamerNamesEnvironments = P ( false ) -for _ , x in ipairs ( list_beamer_env ) do - BeamerNamesEnvironments = BeamerNamesEnvironments + x +piton.BeamerEnvironments = P ( false ) +for _ , x in ipairs ( piton.beamer_environments ) do + piton.BeamerEnvironments = piton.BeamerEnvironments + x end % \end{macrocode} -% +% % \bigskip % \begin{macrocode} BeamerBeginEnvironments = ( space ^ 0 * L ( - P "\\begin{" * BeamerNamesEnvironments * "}" + P [[\begin{]] * piton.BeamerEnvironments * "}" * ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1 ) * "\r" @@ -5776,81 +6155,96 @@ BeamerBeginEnvironments = % \begin{macrocode} BeamerEndEnvironments = ( space ^ 0 * - L ( P "\\end{" * BeamerNamesEnvironments * "}" ) - * "\r" + L ( P [[\end{]] * piton.BeamerEnvironments * "}" ) + * "\r" ) ^ 0 % \end{macrocode} % +% % % \bigskip % The following Lua function will be used to compute the \textsc{lpeg} |Beamer| % for each informatic language. % \begin{macrocode} -local function Compute_Beamer ( lang , braces ) +local Compute_Beamer +function Compute_Beamer ( lang , braces ) % \end{macrocode} % -% \bigskip +% \smallskip % We will compute in |lpeg| the \textsc{lpeg} that we will return. % \begin{macrocode} - local lpeg = L ( P "\\pause" * ( "[" * ( 1 - P "]" ) ^ 0 * "]" ) ^ -1 ) + local lpeg = L ( P [[\pause]] * ( "[" * ( 1 - P "]" ) ^ 0 * "]" ) ^ -1 ) lpeg = lpeg + Ct ( Cc "Open" - * C ( ( P "\\uncover" + "\\only" + "\\alert" + "\\visible" - + "\\invisible" + "\\action" ) + * C ( piton.BeamerCommands * ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1 * P "{" ) * Cc "}" ) - * ( braces / ( function ( s ) return LPEG1[lang] : match ( s ) end ) ) + * ( braces / + ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * "}" * Ct ( Cc "Close" ) % \end{macrocode} % % % \bigskip -% For the command |\\alt|, the specification of the overlays (between angular +% For the command |\alt|, the specification of the overlays (between angular % brackets) is mandatory. % \begin{macrocode} lpeg = lpeg + - L ( P "\\alt" * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" ) - * K ( 'ParseAgain.noCR' , braces ) + L ( P [[\alt]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" ) + * ( braces / + ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * L ( P "}{" ) - * K ( 'ParseAgain.noCR' , braces ) + * ( braces / + ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * L ( P "}" ) % \end{macrocode} % % \bigskip -% For |\\temporal|, the specification of the overlays (between angular brackets) is mandatory. +% For |\temporal|, the specification of the overlays (between angular brackets) +% is mandatory. % \begin{macrocode} lpeg = lpeg + - L ( ( P "\\temporal" ) * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" ) - * K ( 'ParseAgain.noCR' , braces ) + L ( P [[\temporal]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" ) + * ( braces + / ( function ( s ) + if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * L ( P "}{" ) - * K ( 'ParseAgain.noCR' , braces ) + * ( braces + / ( function ( s ) + if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * L ( P "}{" ) - * K ( 'ParseAgain.noCR' , braces ) + * ( braces + / ( function ( s ) + if s ~= '' then return LPEG1[lang] : match ( s ) end end ) ) * L ( P "}" ) % \end{macrocode} % % \bigskip % Now, the environments of Beamer. % \begin{macrocode} - for _ , x in ipairs ( list_beamer_env ) do - lpeg = lpeg + - Ct ( Cc "Open" - * C ( - P ( "\\begin{" .. x .. "}" ) - * ( "<" * ( 1 - P ">") ^ 0 * ">" ) ^ -1 - ) - * Cc ( "\\end{" .. x .. "}" ) - ) - * ( - ( ( 1 - P ( "\\end{" .. x .. "}" ) ) ^ 0 ) - / ( function ( s ) return LPEG1[lang] : match ( s ) end ) - ) - * P ( "\\end{" .. x .. "}" ) - * Ct ( Cc "Close" ) + for _ , x in ipairs ( piton.beamer_environments ) do + lpeg = lpeg + + Ct ( Cc "Open" + * C ( + P ( [[\begin{]] .. x .. "}" ) + * ( "<" * ( 1 - P ">") ^ 0 * ">" ) ^ -1 + ) + * Cc ( [[\end{]] .. x .. "}" ) + ) + * ( + ( ( 1 - P ( [[\end{]] .. x .. "}" ) ) ^ 0 ) + / ( function ( s ) + if s ~= '' then return + LPEG1[lang] : match ( s ) + end + end ) + ) + * P ( [[\end{]] .. x .. "}" ) + * Ct ( Cc "Close" ) end % \end{macrocode} % @@ -5883,7 +6277,7 @@ local CommentMath = % |\@@_begin_line:|, it's too late to change de background). % \begin{macrocode} local PromptHastyDetection = - ( # ( P ">>>" + "..." ) * Lc '\\@@_prompt:' ) ^ -1 + ( # ( P ">>>" + "..." ) * Lc [[ \@@_prompt: ]] ) ^ -1 % \end{macrocode} % We remind that the marker |#| of \textsc{lpeg} specifies that the pattern will be % detected but won't consume any character. @@ -5904,10 +6298,10 @@ local EOL = P "\r" * ( - ( space ^ 0 * -1 ) + space ^ 0 * -1 + % \end{macrocode} -% We recall that each line in the Python code we have to parse will be sent +% We recall that each line of the informatic code we have to parse will be sent % back to LaTeX between a pair |\@@_begin_line:| -- % |\@@_end_line:|\footnote{Remember that the \texttt{\textbackslash % @@\_end\_line:} must be explicit because it will be used as marker in order to @@ -5916,19 +6310,31 @@ local EOL = Ct ( Cc "EOL" * - Ct ( - Lc "\\@@_end_line:" + Ct ( Lc [[ \@@_end_line: ]] * BeamerEndEnvironments - * BeamerBeginEnvironments - * PromptHastyDetection - * Lc "\\@@_newline: \\@@_begin_line:" - * Prompt + * + ( +% \end{macrocode} +% If the last line of the listing is the end of an environment of Beamer (eg. +% |\end{uncoverenv}|), then, we don't open a new line. A token |\@@_end_line:| +% will be added at the end of the environment but it will be no-op since we have +% defined the macro |\@@_end_line:| to be no-op (even though it is also used as +% a marker for the TeX delimited macro |\@@_begin_line:|). +% \begin{macrocode} + -1 + + + BeamerBeginEnvironments + * PromptHastyDetection + * Lc [[ \@@_newline:\@@_begin_line: ]] + * Prompt + ) ) ) ) * ( SpaceIndentation ^ 0 * # ( 1 - S " \r" ) ) ^ -1 % \end{macrocode} % +% % \bigskip % The following \textsc{lpeg} |CommentLaTeX| is for what is called in that % document the ``LaTeX comments''. Since the elements that will be caught must @@ -5936,85 +6342,99 @@ local EOL = % the function~|C|) in a table (by using~|Ct|, which is an alias for |lpeg.Ct|). % \begin{macrocode} local CommentLaTeX = - P(piton.comment_latex) - * Lc "{\\PitonStyle{Comment.LaTeX}{\\ignorespaces" + P ( piton.comment_latex ) + * Lc [[{\PitonStyle{Comment.LaTeX}{\ignorespaces]] * L ( ( 1 - P "\r" ) ^ 0 ) - * Lc "}}" + * Lc "}}" * ( EOL + -1 ) % \end{macrocode} % -% % % \bigskip % \subsubsection{The language Python} % +% We open a Lua local scope for the language Python (of course, there will be +% also global definitions). +% \begin{macrocode} +do +% \end{macrocode} +% % \bigskip % Some strings of length 2 are explicit because we want the corresponding % ligatures available in some fonts such as \emph{Fira Code} to be active. % \begin{macrocode} -local Operator = - K ( 'Operator' , - P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "//" + "**" - + S "-~+/*%=<>&.@|" ) - -local OperatorWord = - K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" ) - -local Keyword = - K ( 'Keyword' , - P "as" + "assert" + "break" + "case" + "class" + "continue" + "def" + - "del" + "elif" + "else" + "except" + "exec" + "finally" + "for" + "from" + - "global" + "if" + "import" + "lambda" + "non local" + "pass" + "return" + - "try" + "while" + "with" + "yield" + "yield from" ) - + K ( 'Keyword.Constant' , P "True" + "False" + "None" ) - -local Builtin = - K ( 'Name.Builtin' , - P "__import__" + "abs" + "all" + "any" + "bin" + "bool" + "bytearray" + - "bytes" + "chr" + "classmethod" + "compile" + "complex" + "delattr" + - "dict" + "dir" + "divmod" + "enumerate" + "eval" + "filter" + "float" + - "format" + "frozenset" + "getattr" + "globals" + "hasattr" + "hash" + - "hex" + "id" + "input" + "int" + "isinstance" + "issubclass" + "iter" + - "len" + "list" + "locals" + "map" + "max" + "memoryview" + "min" + "next" - + "object" + "oct" + "open" + "ord" + "pow" + "print" + "property" + - "range" + "repr" + "reversed" + "round" + "set" + "setattr" + "slice" + - "sorted" + "staticmethod" + "str" + "sum" + "super" + "tuple" + "type" + - "vars" + "zip" ) + local Operator = + K ( 'Operator' , + P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "//" + "**" + + S "-~+/*%=<>&.@|" ) + local OperatorWord = + K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" ) +% \end{macrocode} +% +% \smallskip +% The keyword |in| in a construction such as ``|for i in range(n)|'' must be +% formatted as a keyword and not as an |Operator.Word| and that's why we write +% the following LPEG |For|. +% \begin{macrocode} + local For = K ( 'Keyword' , P "for" ) + * Space + * Identifier + * Space + * K ( 'Keyword' , P "in" ) -local Exception = - K ( 'Exception' , - P "ArithmeticError" + "AssertionError" + "AttributeError" + - "BaseException" + "BufferError" + "BytesWarning" + "DeprecationWarning" + - "EOFError" + "EnvironmentError" + "Exception" + "FloatingPointError" + - "FutureWarning" + "GeneratorExit" + "IOError" + "ImportError" + - "ImportWarning" + "IndentationError" + "IndexError" + "KeyError" + - "KeyboardInterrupt" + "LookupError" + "MemoryError" + "NameError" + - "NotImplementedError" + "OSError" + "OverflowError" + - "PendingDeprecationWarning" + "ReferenceError" + "ResourceWarning" + - "RuntimeError" + "RuntimeWarning" + "StopIteration" + "SyntaxError" + - "SyntaxWarning" + "SystemError" + "SystemExit" + "TabError" + "TypeError" - + "UnboundLocalError" + "UnicodeDecodeError" + "UnicodeEncodeError" + - "UnicodeError" + "UnicodeTranslateError" + "UnicodeWarning" + - "UserWarning" + "ValueError" + "VMSError" + "Warning" + "WindowsError" + - "ZeroDivisionError" + "BlockingIOError" + "ChildProcessError" + - "ConnectionError" + "BrokenPipeError" + "ConnectionAbortedError" + - "ConnectionRefusedError" + "ConnectionResetError" + "FileExistsError" + - "FileNotFoundError" + "InterruptedError" + "IsADirectoryError" + - "NotADirectoryError" + "PermissionError" + "ProcessLookupError" + - "TimeoutError" + "StopAsyncIteration" + "ModuleNotFoundError" + - "RecursionError" ) + local Keyword = + K ( 'Keyword' , + P "as" + "assert" + "break" + "case" + "class" + "continue" + "def" + + "del" + "elif" + "else" + "except" + "exec" + "finally" + "for" + "from" + + "global" + "if" + "import" + "lambda" + "non local" + "pass" + "return" + + "try" + "while" + "with" + "yield" + "yield from" ) + + K ( 'Keyword.Constant' , P "True" + "False" + "None" ) + local Builtin = + K ( 'Name.Builtin' , + P "__import__" + "abs" + "all" + "any" + "bin" + "bool" + "bytearray" + + "bytes" + "chr" + "classmethod" + "compile" + "complex" + "delattr" + + "dict" + "dir" + "divmod" + "enumerate" + "eval" + "filter" + "float" + + "format" + "frozenset" + "getattr" + "globals" + "hasattr" + "hash" + + "hex" + "id" + "input" + "int" + "isinstance" + "issubclass" + "iter" + + "len" + "list" + "locals" + "map" + "max" + "memoryview" + "min" + "next" + + "object" + "oct" + "open" + "ord" + "pow" + "print" + "property" + + "range" + "repr" + "reversed" + "round" + "set" + "setattr" + "slice" + + "sorted" + "staticmethod" + "str" + "sum" + "super" + "tuple" + "type" + + "vars" + "zip" ) -local RaiseException = K ( 'Keyword' , P "raise" ) * SkipSpace * Exception * Q "(" + local Exception = + K ( 'Exception' , + P "ArithmeticError" + "AssertionError" + "AttributeError" + + "BaseException" + "BufferError" + "BytesWarning" + "DeprecationWarning" + + "EOFError" + "EnvironmentError" + "Exception" + "FloatingPointError" + + "FutureWarning" + "GeneratorExit" + "IOError" + "ImportError" + + "ImportWarning" + "IndentationError" + "IndexError" + "KeyError" + + "KeyboardInterrupt" + "LookupError" + "MemoryError" + "NameError" + + "NotImplementedError" + "OSError" + "OverflowError" + + "PendingDeprecationWarning" + "ReferenceError" + "ResourceWarning" + + "RuntimeError" + "RuntimeWarning" + "StopIteration" + "SyntaxError" + + "SyntaxWarning" + "SystemError" + "SystemExit" + "TabError" + "TypeError" + + "UnboundLocalError" + "UnicodeDecodeError" + "UnicodeEncodeError" + + "UnicodeError" + "UnicodeTranslateError" + "UnicodeWarning" + + "UserWarning" + "ValueError" + "VMSError" + "Warning" + "WindowsError" + + "ZeroDivisionError" + "BlockingIOError" + "ChildProcessError" + + "ConnectionError" + "BrokenPipeError" + "ConnectionAbortedError" + + "ConnectionRefusedError" + "ConnectionResetError" + "FileExistsError" + + "FileNotFoundError" + "InterruptedError" + "IsADirectoryError" + + "NotADirectoryError" + "PermissionError" + "ProcessLookupError" + + "TimeoutError" + "StopAsyncIteration" + "ModuleNotFoundError" + + "RecursionError" ) + local RaiseException = K ( 'Keyword' , P "raise" ) * SkipSpace * Exception * Q "(" % \end{macrocode} % % \bigskip % In Python, a ``decorator'' is a statement whose begins by |@| which patches % the function defined in the following statement. % \begin{macrocode} -local Decorator = K ( 'Name.Decorator' , P "@" * letter ^ 1 ) + local Decorator = K ( 'Name.Decorator' , P "@" * letter ^ 1 ) % \end{macrocode} % % \bigskip @@ -6025,15 +6445,14 @@ local Decorator = K ( 'Name.Decorator' , P "@" * letter ^ 1 ) % \smallskip % Example:\enskip \piton{class myclass:} % \begin{macrocode} -local DefClass = - K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier ) + local DefClass = + K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier ) % \end{macrocode} % % If the word |class| is not followed by a identifier, it will be caught as % keyword by the \textsc{lpeg} |Keyword| (useful if we want to type a % list of keywords). % -% % \bigskip % The following \textsc{lpeg} |ImportAs| is used for the lines beginning by |import|. % % We have to detect the potential keyword |as| because both the name of the @@ -6049,17 +6468,17 @@ local DefClass = % \smallskip % Example:\enskip \piton{import math, numpy} % \begin{macrocode} -local ImportAs = - K ( 'Keyword' , "import" ) - * Space - * K ( 'Name.Namespace' , identifier * ( "." * identifier ) ^ 0 ) - * ( - ( Space * K ( 'Keyword' , "as" ) * Space - * K ( 'Name.Namespace' , identifier ) ) - + - ( SkipSpace * Q "," * SkipSpace - * K ( 'Name.Namespace' , identifier ) ) ^ 0 - ) + local ImportAs = + K ( 'Keyword' , "import" ) + * Space + * K ( 'Name.Namespace' , identifier * ( "." * identifier ) ^ 0 ) + * ( + ( Space * K ( 'Keyword' , "as" ) * Space + * K ( 'Name.Namespace' , identifier ) ) + + + ( SkipSpace * Q "," * SkipSpace + * K ( 'Name.Namespace' , identifier ) ) ^ 0 + ) % \end{macrocode} % Be careful: there is no commutativity of |+| in the previous expression. % @@ -6075,10 +6494,10 @@ local ImportAs = % % \smallskip % \begin{macrocode} -local FromImport = - K ( 'Keyword' , "from" ) - * Space * K ( 'Name.Namespace' , identifier ) - * Space * K ( 'Keyword' , "import" ) + local FromImport = + K ( 'Keyword' , "from" ) + * Space * K ( 'Name.Namespace' , identifier ) + * Space * K ( 'Keyword' , "import" ) % \end{macrocode} % % \bigskip @@ -6115,16 +6534,16 @@ local FromImport = % The interpolations beginning by |%| (even though there is more modern % techniques now in Python). % \begin{macrocode} -local PercentInterpol = - K ( 'String.Interpol' , - P "%" - * ( "(" * alphanum ^ 1 * ")" ) ^ -1 - * ( S "-#0 +" ) ^ 0 - * ( digit ^ 1 + "*" ) ^ -1 - * ( "." * ( digit ^ 1 + "*" ) ) ^ -1 - * ( S "HlL" ) ^ -1 - * S "sdfFeExXorgiGauc%" - ) + local PercentInterpol = + K ( 'String.Interpol' , + P "%" + * ( "(" * alphanum ^ 1 * ")" ) ^ -1 + * ( S "-#0 +" ) ^ 0 + * ( digit ^ 1 + "*" ) ^ -1 + * ( "." * ( digit ^ 1 + "*" ) ) ^ -1 + * ( S "HlL" ) ^ -1 + * S "sdfFeExXorgiGauc%" + ) % \end{macrocode} % % \bigskip @@ -6135,84 +6554,87 @@ local PercentInterpol = % |Interpol.Inside|. The initial value of that style is \texttt{\textbackslash % @@\_piton:n} which means that the interpolations are parsed once again by \pkg{piton}.} % \begin{macrocode} -local SingleShortString = - WithStyle ( 'String.Short' , + local SingleShortString = + WithStyle ( 'String.Short' , % \end{macrocode} % First, we deal with the f-strings of Python, which are prefixed by |f| or |F|. % \begin{macrocode} - Q ( P "f'" + "F'" ) - * ( - K ( 'String.Interpol' , "{" ) - * K ( 'Interpol.Inside' , ( 1 - S "}':" ) ^ 0 ) - * Q ( P ":" * ( 1 - S "}:'" ) ^ 0 ) ^ -1 - * K ( 'String.Interpol' , "}" ) - + - VisualSpace - + - Q ( ( P "\\'" + "{{" + "}}" + 1 - S " {}'" ) ^ 1 ) - ) ^ 0 - * Q "'" - + + Q ( P "f'" + "F'" ) + * ( + K ( 'String.Interpol' , "{" ) + * K ( 'Interpol.Inside' , ( 1 - S "}':" ) ^ 0 ) + * Q ( P ":" * ( 1 - S "}:'" ) ^ 0 ) ^ -1 + * K ( 'String.Interpol' , "}" ) + + + SpaceInString + + + Q ( ( P "\\'" + "\\\\" + "{{" + "}}" + 1 - S " {}'" ) ^ 1 ) + ) ^ 0 + * Q "'" + + % \end{macrocode} % Now, we deal with the standard strings of Python, but also the ``raw strings''. % \begin{macrocode} - Q ( P "'" + "r'" + "R'" ) - * ( Q ( ( P "\\'" + 1 - S " '\r%" ) ^ 1 ) - + VisualSpace - + PercentInterpol - + Q "%" - ) ^ 0 - * Q "'" ) - - - -local DoubleShortString = - WithStyle ( 'String.Short' , - Q ( P "f\"" + "F\"" ) - * ( - K ( 'String.Interpol' , "{" ) - * K ( 'Interpol.Inside' , ( 1 - S "}\":" ) ^ 0 ) - * ( K ( 'String.Interpol' , ":" ) * Q ( (1 - S "}:\"") ^ 0 ) ) ^ -1 - * K ( 'String.Interpol' , "}" ) - + - VisualSpace - + - Q ( ( P "\\\"" + "{{" + "}}" + 1 - S " {}\"" ) ^ 1 ) - ) ^ 0 - * Q "\"" - + - Q ( P "\"" + "r\"" + "R\"" ) - * ( Q ( ( P "\\\"" + 1 - S " \"\r%" ) ^ 1 ) - + VisualSpace - + PercentInterpol - + Q "%" - ) ^ 0 - * Q "\"" ) + Q ( P "'" + "r'" + "R'" ) + * ( Q ( ( P "\\'" + "\\\\" + 1 - S " '\r%" ) ^ 1 ) + + SpaceInString + + PercentInterpol + + Q "%" + ) ^ 0 + * Q "'" ) +% \end{macrocode} +% +% \begin{macrocode} + local DoubleShortString = + WithStyle ( 'String.Short' , + Q ( P "f\"" + "F\"" ) + * ( + K ( 'String.Interpol' , "{" ) + * K ( 'Interpol.Inside' , ( 1 - S "}\":" ) ^ 0 ) + * ( K ( 'String.Interpol' , ":" ) * Q ( (1 - S "}:\"") ^ 0 ) ) ^ -1 + * K ( 'String.Interpol' , "}" ) + + + SpaceInString + + + Q ( ( P "\\\"" + "\\\\" + "{{" + "}}" + 1 - S " {}\"" ) ^ 1 ) + ) ^ 0 + * Q "\"" + + + Q ( P "\"" + "r\"" + "R\"" ) + * ( Q ( ( P "\\\"" + "\\\\" + 1 - S " \"\r%" ) ^ 1 ) + + SpaceInString + + PercentInterpol + + Q "%" + ) ^ 0 + * Q "\"" ) -local ShortString = SingleShortString + DoubleShortString + local ShortString = SingleShortString + DoubleShortString % \end{macrocode} % % \bigskip % \paragraph{Beamer} % +% The argument of |Compute_braces| must be a pattern \emph{which does no +% catching} corresponding to the strings of the language. +% % \begin{macrocode} -local braces = - Compute_braces - ( - Q ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" ) - * ( "\"" * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\"" ) - + - Q ( P '\'' + 'r\'' + 'R\'' + 'f\'' + 'F\'' ) - * ( '\'' * ( P '\\\'' + 1 - S '\'' ) ^ 0 * '\'' ) - ) -if piton.beamer then Beamer = Compute_Beamer ( 'python' , braces ) end + local braces = + Compute_braces + ( + ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" ) + * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\"" + + + ( P '\'' + 'r\'' + 'R\'' + 'f\'' + 'F\'' ) + * ( P '\\\'' + 1 - S '\'' ) ^ 0 * '\'' + ) + if piton.beamer then Beamer = Compute_Beamer ( 'python' , braces ) end % \end{macrocode} % % \bigskip % \paragraph{Detected commands} % % \begin{macrocode} -DetectedCommands = Compute_DetectedCommands ( 'python' , braces ) + DetectedCommands = Compute_DetectedCommands ( 'python' , braces ) % \end{macrocode} % % \bigskip @@ -6220,7 +6642,7 @@ DetectedCommands = Compute_DetectedCommands ( 'python' , braces ) % \paragraph{LPEG_cleaner} % % \begin{macrocode} -LPEG_cleaner['python'] = Compute_LPEG_cleaner ( 'python' , braces ) + LPEG_cleaner.python = Compute_LPEG_cleaner ( 'python' , braces ) % \end{macrocode} % % \bigskip @@ -6228,66 +6650,67 @@ LPEG_cleaner['python'] = Compute_LPEG_cleaner ( 'python' , braces ) % % % \begin{macrocode} -local SingleLongString = - WithStyle ( 'String.Long' , - ( Q ( S "fF" * P "'''" ) - * ( - K ( 'String.Interpol' , "{" ) - * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "'''" ) ^ 0 ) - * Q ( P ":" * (1 - S "}:\r" - "'''" ) ^ 0 ) ^ -1 - * K ( 'String.Interpol' , "}" ) - + - Q ( ( 1 - P "'''" - S "{}'\r" ) ^ 1 ) - + - EOL - ) ^ 0 - + - Q ( ( S "rR" ) ^ -1 * "'''" ) - * ( - Q ( ( 1 - P "'''" - S "\r%" ) ^ 1 ) - + - PercentInterpol - + - P "%" - + - EOL - ) ^ 0 - ) - * Q "'''" ) - - -local DoubleLongString = - WithStyle ( 'String.Long' , - ( - Q ( S "fF" * "\"\"\"" ) - * ( - K ( 'String.Interpol', "{" ) - * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "\"\"\"" ) ^ 0 ) - * Q ( ":" * (1 - S "}:\r" - "\"\"\"" ) ^ 0 ) ^ -1 - * K ( 'String.Interpol' , "}" ) - + - Q ( ( 1 - S "{}\"\r" - "\"\"\"" ) ^ 1 ) - + - EOL - ) ^ 0 - + - Q ( S "rR" ^ -1 * "\"\"\"" ) - * ( - Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 ) - + - PercentInterpol - + - P "%" - + - EOL - ) ^ 0 - ) - * Q "\"\"\"" - ) + local SingleLongString = + WithStyle ( 'String.Long' , + ( Q ( S "fF" * P "'''" ) + * ( + K ( 'String.Interpol' , "{" ) + * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "'''" ) ^ 0 ) + * Q ( P ":" * (1 - S "}:\r" - "'''" ) ^ 0 ) ^ -1 + * K ( 'String.Interpol' , "}" ) + + + Q ( ( 1 - P "'''" - S "{}'\r" ) ^ 1 ) + + + EOL + ) ^ 0 + + + Q ( ( S "rR" ) ^ -1 * "'''" ) + * ( + Q ( ( 1 - P "'''" - S "\r%" ) ^ 1 ) + + + PercentInterpol + + + P "%" + + + EOL + ) ^ 0 + ) + * Q "'''" ) +% \end{macrocode} +% +% \begin{macrocode} + local DoubleLongString = + WithStyle ( 'String.Long' , + ( + Q ( S "fF" * "\"\"\"" ) + * ( + K ( 'String.Interpol', "{" ) + * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "\"\"\"" ) ^ 0 ) + * Q ( ":" * (1 - S "}:\r" - "\"\"\"" ) ^ 0 ) ^ -1 + * K ( 'String.Interpol' , "}" ) + + + Q ( ( 1 - S "{}\"\r" - "\"\"\"" ) ^ 1 ) + + + EOL + ) ^ 0 + + + Q ( S "rR" ^ -1 * "\"\"\"" ) + * ( + Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 ) + + + PercentInterpol + + + P "%" + + + EOL + ) ^ 0 + ) + * Q "\"\"\"" + ) % \end{macrocode} % % \begin{macrocode} -local LongString = SingleLongString + DoubleLongString + local LongString = SingleLongString + DoubleLongString % \end{macrocode} % % \bigskip @@ -6295,12 +6718,12 @@ local LongString = SingleLongString + DoubleLongString % be used in the \textsc{lpeg} |DefFunction| which deals with the whole preamble % of a function definition (which begins with |def|). % \begin{macrocode} -local StringDoc = - K ( 'String.Doc' , P "r" ^ -1 * "\"\"\"" ) - * ( K ( 'String.Doc' , (1 - P "\"\"\"" - "\r" ) ^ 0 ) * EOL - * Tab ^ 0 - ) ^ 0 - * K ( 'String.Doc' , ( 1 - P "\"\"\"" - "\r" ) ^ 0 * "\"\"\"" ) + local StringDoc = + K ( 'String.Doc' , P "r" ^ -1 * "\"\"\"" ) + * ( K ( 'String.Doc' , (1 - P "\"\"\"" - "\r" ) ^ 0 ) * EOL + * Tab ^ 0 + ) ^ 0 + * K ( 'String.Doc' , ( 1 - P "\"\"\"" - "\r" ) ^ 0 * "\"\"\"" ) % \end{macrocode} % % \bigskip @@ -6309,10 +6732,12 @@ local StringDoc = % We define different \textsc{lpeg} dealing with comments in the Python % listings. % \begin{macrocode} -local Comment = - WithStyle ( 'Comment' , - Q "#" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $ - * ( EOL + -1 ) + local Comment = + WithStyle + ( 'Comment' , + Q "#" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $ + ) + * ( EOL + -1 ) % \end{macrocode} % % @@ -6325,19 +6750,19 @@ local Comment = % (and it's known in the theory of formal languages that this can't be done with % regular expressions \emph{stricto sensu} only). % \begin{macrocode} -local expression = - P { "E" , - E = ( "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'" - + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\"" - + "{" * V "F" * "}" - + "(" * V "F" * ")" - + "[" * V "F" * "]" - + ( 1 - S "{}()[]\r," ) ) ^ 0 , - F = ( "{" * V "F" * "}" - + "(" * V "F" * ")" - + "[" * V "F" * "]" - + ( 1 - S "{}()[]\r\"'" ) ) ^ 0 - } + local expression = + P { "E" , + E = ( "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'" + + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\"" + + "{" * V "F" * "}" + + "(" * V "F" * ")" + + "[" * V "F" * "]" + + ( 1 - S "{}()[]\r," ) ) ^ 0 , + F = ( "{" * V "F" * "}" + + "(" * V "F" * ")" + + "[" * V "F" * "]" + + ( 1 - S "{}()[]\r\"'" ) ) ^ 0 + } % \end{macrocode} % % \bigskip @@ -6351,15 +6776,15 @@ local expression = % % \medskip % \begin{macrocode} -local Params = - P { "E" , - E = ( V "F" * ( Q "," * V "F" ) ^ 0 ) ^ -1 , - F = SkipSpace * ( Identifier + Q "*args" + Q "**kwargs" ) * SkipSpace - * ( - K ( 'InitialValues' , "=" * expression ) - + Q ":" * SkipSpace * K ( 'Name.Type' , identifier ) - ) ^ -1 - } + local Params = + P { "E" , + E = ( V "F" * ( Q "," * V "F" ) ^ 0 ) ^ -1 , + F = SkipSpace * ( Identifier + Q "*args" + Q "**kwargs" ) * SkipSpace + * ( + K ( 'InitialValues' , "=" * expression ) + + Q ":" * SkipSpace * K ( 'Name.Type' , identifier ) + ) ^ -1 + } % \end{macrocode} % % @@ -6370,28 +6795,25 @@ local Params = % |piton.sty|) after the definition of several other \textsc{lpeg} such as % |Comment|, |CommentLaTeX|, |Params|, |StringDoc|... % \begin{macrocode} -local DefFunction = - K ( 'Keyword' , "def" ) - * Space - * K ( 'Name.Function.Internal' , identifier ) - * SkipSpace - * Q "(" * Params * Q ")" - * SkipSpace - * ( Q "->" * SkipSpace * K ( 'Name.Type' , identifier ) ) ^ -1 -% \end{macrocode} -% Here, we need a \pkg{piton} style |ParseAgain| which will be linked to -% |\@@_piton:n| (that means that the capture will be parsed once again by -% \pkg{piton}). We could avoid that kind of trick by using a non-terminal of a -% grammar but we have probably here a better legibility. -% \begin{macrocode} - * K ( 'ParseAgain.noCR' , ( 1 - S ":\r" ) ^ 0 ) - * Q ":" - * ( SkipSpace - * ( EOL + CommentLaTeX + Comment ) -- in all cases, that contains an EOL - * Tab ^ 0 - * SkipSpace - * StringDoc ^ 0 -- there may be additional docstrings - ) ^ -1 + local DefFunction = + K ( 'Keyword' , "def" ) + * Space + * K ( 'Name.Function.Internal' , identifier ) + * SkipSpace + * Q "(" * Params * Q ")" + * SkipSpace + * ( Q "->" * SkipSpace * K ( 'Name.Type' , identifier ) ) ^ -1 +% \end{macrocode} +% +% \begin{macrocode} + * ( C ( ( 1 - S ":\r" ) ^ 0 ) / ParseAgain ) + * Q ":" + * ( SkipSpace + * ( EOL + CommentLaTeX + Comment ) -- in all cases, that contains an EOL + * Tab ^ 0 + * SkipSpace + * StringDoc ^ 0 -- there may be additional docstrings + ) ^ -1 % \end{macrocode} % Remark that, in the previous code, |CommentLaTeX| \emph{must} appear % before |Comment|: there is no commutativity of the addition for the @@ -6406,47 +6828,54 @@ local DefFunction = % \paragraph{Miscellaneous} % % \begin{macrocode} -local ExceptionInConsole = Exception * Q ( ( 1 - P "\r" ) ^ 0 ) * EOL + local ExceptionInConsole = Exception * Q ( ( 1 - P "\r" ) ^ 0 ) * EOL % \end{macrocode} % % % \bigskip % \paragraph{The main LPEG for the language Python} % +% \begin{macrocode} + local EndKeyword + = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape + + EscapeMath + -1 +% \end{macrocode} +% % First, the main loop : % \begin{macrocode} -local Main = - space ^ 1 * -1 - + space ^ 0 * EOL - + Space - + Tab - + Escape + EscapeMath - + CommentLaTeX - + Beamer - + DetectedCommands - + LongString - + Comment - + ExceptionInConsole - + Delim - + Operator - + OperatorWord * ( Space + Punct + Delim + EOL + -1 ) - + ShortString - + Punct - + FromImport - + RaiseException - + DefFunction - + DefClass - + Keyword * ( Space + Punct + Delim + EOL + -1 ) - + Decorator - + Builtin * ( Space + Punct + Delim + EOL + -1 ) - + Identifier - + Number - + Word -% \end{macrocode} -% -% Here, we must not put |local|! -% \begin{macrocode} -LPEG1['python'] = Main ^ 0 + local Main = + space ^ 0 * EOL -- faut-il le mettre en commentaire ? + + Space + + Tab + + Escape + EscapeMath + + CommentLaTeX + + Beamer + + DetectedCommands + + LongString + + Comment + + ExceptionInConsole + + Delim + + Operator + + OperatorWord * EndKeyword + + ShortString + + Punct + + FromImport + + RaiseException + + DefFunction + + DefClass + + For + + Keyword * EndKeyword + + Decorator + + Builtin * EndKeyword + + Identifier + + Number + + Word +% \end{macrocode} +% +% \bigskip +% Here, we must not put |local|, of course. +% \begin{macrocode} + LPEG1.python = Main ^ 0 % \end{macrocode} % % \bigskip @@ -6456,479 +6885,653 @@ LPEG1['python'] = Main ^ 0 % will be used as marker in order to delimit the argument of the command % \texttt{\textbackslash @@\_begin\_line:}}. % \begin{macrocode} -LPEG2['python'] = - Ct ( - ( space ^ 0 * "\r" ) ^ -1 - * BeamerBeginEnvironments - * PromptHastyDetection - * Lc '\\@@_begin_line:' - * Prompt - * SpaceIndentation ^ 0 - * LPEG1['python'] - * -1 - * Lc '\\@@_end_line:' - ) + LPEG2.python = + Ct ( + ( space ^ 0 * "\r" ) ^ -1 + * BeamerBeginEnvironments + * PromptHastyDetection + * Lc [[ \@@_begin_line: ]] + * Prompt + * SpaceIndentation ^ 0 + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) % \end{macrocode} % +% \bigskip +% End of the Lua scope for the language Python. +% \begin{macrocode} +end +% \end{macrocode} % % \bigskip % \subsubsection{The language Ocaml} -% +% +% We open a Lua local scope for the language OCaml (of course, there will be also +% global definitions). +% \begin{macrocode} +do +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + local SkipSpace = ( Q " " + EOL ) ^ 0 + local Space = ( Q " " + EOL ) ^ 1 +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" ) +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + if piton.beamer then + Beamer = Compute_Beamer ( 'ocaml' , braces ) + end + DetectedCommands = Compute_DetectedCommands ( 'ocaml' , braces ) + local Q + function Q ( pattern ) return + Ct ( Cc ( luatexbase.catcodetables.CatcodeTableOther ) * C ( pattern ) ) + + Beamer + DetectedCommands + EscapeMath + Escape + end +% \end{macrocode} +% +% \bigskip % \begin{macrocode} -local Delim = Q ( P "[|" + "|]" + S "[()]" ) + local K + function K ( style , pattern ) return + Lc ( [[ {\PitonStyle{ ]] .. style .. "}{" ) + * Q ( pattern ) + * Lc "}}" + end % \end{macrocode} % +% \bigskip % \begin{macrocode} -local Punct = Q ( S ",:;!" ) + local WithStyle + function WithStyle ( style , pattern ) return + Ct ( Cc "Open" * Cc ( [[{\PitonStyle{]] .. style .. "}{" ) * Cc "}}" ) + * ( pattern + Beamer + DetectedCommands + EscapeMath + Escape ) + * Ct ( Cc "Close" ) + end % \end{macrocode} % -% The identifiers caught by |cap_identifier| begin with a cap. In OCaml, it's -% used for the constructors of types and for the modules. +% \bigskip +% The following LPEG corresponds to the balanced expressions (balanced according +% to the parenthesis). Of course, we must write |(1 - S "()")| with outer parenthesis. % \begin{macrocode} -local cap_identifier = R "AZ" * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0 + local balanced_parens = + P { "E" , E = ( "(" * V "E" * ")" + ( 1 - S "()" ) ) ^ 0 } % \end{macrocode} % +% \paragraph{The strings of OCaml} % \begin{macrocode} -local Constructor = K ( 'Name.Constructor' , cap_identifier ) -local ModuleType = K ( 'Name.Type' , cap_identifier ) + local ocaml_string = + Q "\"" + * ( + SpaceInString + + + Q ( ( 1 - S " \"\r" ) ^ 1 ) + + + EOL + ) ^ 0 + * Q "\"" % \end{macrocode} % -% The identifiers which begin with a lower case letter or an underscore are used -% elsewhere in OCaml. % \begin{macrocode} -local identifier = ( R "az" + "_" ) * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0 -local Identifier = K ( 'Identifier' , identifier ) + local String = WithStyle ( 'String.Long' , ocaml_string ) % \end{macrocode} % +% \bigskip +% Now, the ``quoted strings'' of OCaml (for example \verb+{ext|Essai|ext}+). +% +% For those strings, we will do two consecutive analysis. First an analysis to +% determine the whole string and, then, an analysis for the potential visual +% spaces and the EOL in the string. +% +% The first analysis require a match-time capture. For explanations about that +% programmation, see the paragraphe \emph{Lua's long strings} in +% |www.inf.puc-rio.br/~roberto/lpeg|. +% +% \begin{macrocode} + local ext = ( R "az" + "_" ) ^ 0 + local open = "{" * Cg ( ext , 'init' ) * "|" + local close = "|" * C ( ext ) * "}" + local closeeq = + Cmt ( close * Cb ( 'init' ) , + function ( s , i , a , b ) return a == b end ) +% \end{macrocode} % -% Now, we deal with the records because we want to catch the names of the fields -% of those records in all circunstancies. +% \medskip +% The \textsc{lpeg} |QuotedStringBis| will do the second analysis. % \begin{macrocode} -local expression_for_fields = - P { "E" , - E = ( "{" * V "F" * "}" - + "(" * V "F" * ")" - + "[" * V "F" * "]" - + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\"" - + "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'" - + ( 1 - S "{}()[]\r;" ) ) ^ 0 , - F = ( "{" * V "F" * "}" - + "(" * V "F" * ")" - + "[" * V "F" * "]" - + ( 1 - S "{}()[]\r\"'" ) ) ^ 0 - } + local QuotedStringBis = + WithStyle ( 'String.Long' , + ( + Space + + + Q ( ( 1 - S " \r" ) ^ 1 ) + + + EOL + ) ^ 0 ) % \end{macrocode} % +% \medskip +% We use a ``function capture'' (as called in the official documentation of the +% \textsc{lpeg}) in order to do the second analysis on the result of the first one. % \begin{macrocode} -local OneFieldDefinition = - ( K ( 'Keyword' , "mutable" ) * SkipSpace ) ^ -1 - * K ( 'Name.Field' , identifier ) * SkipSpace - * Q ":" * SkipSpace - * K ( 'Name.Type' , expression_for_fields ) - * SkipSpace - -local OneField = - K ( 'Name.Field' , identifier ) * SkipSpace - * Q "=" * SkipSpace - * ( expression_for_fields - / ( function ( s ) return LPEG1['ocaml'] : match ( s ) end ) - ) - * SkipSpace - -local Record = - Q "{" * SkipSpace - * - ( - OneFieldDefinition * ( Q ";" * SkipSpace * OneFieldDefinition ) ^ 0 - + - OneField * ( Q ";" * SkipSpace * OneField ) ^ 0 - ) - * - Q "}" + local QuotedString = + C ( open * ( 1 - closeeq ) ^ 0 * close ) / + ( function ( s ) return QuotedStringBis : match ( s ) end ) % \end{macrocode} % % \bigskip -% Now, we deal with the notations with points (eg: |List.length|). In OCaml, -% such notation is used for the fields of the records and for the modules. +% In OCaml, the delimiters for the comments are |(*| and |*)|. There are +% unsymmetrical and OCaml allows those comments to be nested. That's why we need a +% grammar. +% +% In these comments, we embed the math comments (between |$| and |$|) and we +% embed also a treatment for the end of lines (since the comments may be multi-lines). +% % \begin{macrocode} -local DotNotation = - ( - K ( 'Name.Module' , cap_identifier ) - * Q "." - * ( Identifier + Constructor + Q "(" + Q "[" + Q "{" ) - + - Identifier - * Q "." - * K ( 'Name.Field' , identifier ) - ) - * ( Q "." * K ( 'Name.Field' , identifier ) ) ^ 0 + local Comment = + WithStyle ( 'Comment' , + P { + "A" , + A = Q "(*" + * ( V "A" + + Q ( ( 1 - S "\r$\"" - "(*" - "*)" ) ^ 1 ) -- $ + + ocaml_string + + "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1 ) * "$" -- $ + + EOL + ) ^ 0 + * Q "*)" + } ) +% \end{macrocode} +% +% +% \paragraph{Some standard LPEG} +% +% \begin{macrocode} + local Delim = Q ( P "[|" + "|]" + S "[()]" ) + local Punct = Q ( S ",:;!" ) % \end{macrocode} % +% \bigskip +% The identifiers caught by |cap_identifier| begin with a capital. In OCaml, +% it's used for the constructors of types and for the names of the modules. +% % \begin{macrocode} -local Operator = - K ( 'Operator' , - P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "||" + "&&" + - "//" + "**" + ";;" + "::" + "->" + "+." + "-." + "*." + "/." - + S "-~+/*%=<>&@|" ) - -local OperatorWord = - K ( 'Operator.Word' , - P "and" + "asr" + "land" + "lor" + "lsl" + "lxor" + "mod" + "or" ) - -local Keyword = - K ( 'Keyword' , - P "assert" + "and" + "as" + "begin" + "class" + "constraint" + "done" - + "downto" + "do" + "else" + "end" + "exception" + "external" + "for" + - "function" + "functor" + "fun" + "if" + "include" + "inherit" + "initializer" - + "in" + "lazy" + "let" + "match" + "method" + "module" + "mutable" + "new" + - "object" + "of" + "open" + "private" + "raise" + "rec" + "sig" + "struct" + - "then" + "to" + "try" + "type" + "value" + "val" + "virtual" + "when" + - "while" + "with" ) - + K ( 'Keyword.Constant' , P "true" + "false" ) - -local Builtin = - K ( 'Name.Builtin' , P "not" + "incr" + "decr" + "fst" + "snd" ) + local cap_identifier = R "AZ" * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0 % \end{macrocode} -% +% % \bigskip -% The following exceptions are exceptions in the standard library of OCaml (Stdlib). % \begin{macrocode} -local Exception = - K ( 'Exception' , - P "Division_by_zero" + "End_of_File" + "Failure" + "Invalid_argument" + - "Match_failure" + "Not_found" + "Out_of_memory" + "Stack_overflow" + - "Sys_blocked_io" + "Sys_error" + "Undefined_recursive_module" ) + local Constructor = + K ( 'Name.Constructor' , + Q "`" ^ -1 * cap_identifier +% \end{macrocode} +% We consider |::| and |[]| as constructors (of the lists) as does the Tuareg +% mode of Emacs. +% \begin{macrocode} + + Q "::" + + Q "[" * SkipSpace * Q "]" ) % \end{macrocode} % % \bigskip -% \paragraph{The characters in OCaml} +% \begin{macrocode} + local ModuleType = K ( 'Name.Type' , cap_identifier ) +% \end{macrocode} % +% \bigskip % \begin{macrocode} -local Char = - K ( 'String.Short' , "'" * ( ( 1 - P "'" ) ^ 0 + "\\'" ) * "'" ) + local OperatorWord = + K ( 'Operator.Word' , + P "asr" + "land" + "lor" + "lsl" + "lxor" + "mod" + "or" ) % \end{macrocode} % +% \bigskip +% In OCaml, some keywords are considered as \emph{governing keywords} with some +% special syntactic characteristics. +% \begin{macrocode} + local governing_keyword = P "and" + "begin" + "class" + "constraint" + + "end" + "external" + "functor" + "include" + "inherit" + "initializer" + + "in" + "let" + "method" + "module" + "object" + "open" + "rec" + "sig" + + "struct" + "type" + "val" +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + local Keyword = + K ( 'Keyword' , + P "assert" + "as" + "done" + "downto" + "do" + "else" + "exception" + + "for" + "function" + "fun" + "if" + "lazy" + "match" + "mutable" + + "new" + "of" + "private" + "raise" + "then" + "to" + "try" + + "virtual" + "when" + "while" + "with" ) + + K ( 'Keyword.Constant' , P "true" + "false" ) + + K ( 'Keyword.Governing', governing_keyword ) +% \end{macrocode} % % \bigskip -% \paragraph{Beamer} +% \begin{macrocode} + local EndKeyword + = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape + + EscapeMath + -1 +% \end{macrocode} % % \bigskip +% Now, the identifier. Recall that we have also a LPEG |cap_identifier| for the +% indentifiers beginning with a capital letter. % \begin{macrocode} -braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" ) -if piton.beamer then - Beamer = Compute_Beamer ( 'ocaml' , "\"" * ( 1 - S "\"" ) ^ 0 * "\"" ) -end + local identifier = ( R "az" + "_" ) * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0 + - ( OperatorWord + Keyword ) * EndKeyword % \end{macrocode} -% +% +% \bigskip +% We have the internal style |Identifier.Internal| in order to be able to +% implement the mechanism |\SetPitonIdentifier|. The final user has access to a +% style called |Identifier|. % \begin{macrocode} -DetectedCommands = Compute_DetectedCommands ( 'ocaml' , braces ) + local Identifier = K ( 'Identifier.Internal' , identifier ) % \end{macrocode} % % \bigskip +% In OCmal, \emph{character} is a type different of the type |string|. % \begin{macrocode} -LPEG_cleaner['ocaml'] = Compute_LPEG_cleaner ( 'ocaml' , braces ) + local Char = + K ( 'String.Short', + P "'" * + ( + ( 1 - S "'\\" ) + + "\\" + * ( S "\\'ntbr \"" + + digit * digit * digit + + P "x" * ( digit + R "af" + R "AF" ) + * ( digit + R "af" + R "AF" ) + * ( digit + R "af" + R "AF" ) + + P "o" * R "03" * R "07" * R "07" ) + ) + * "'" ) % \end{macrocode} % % \bigskip +% For the parameter of the types (for example : |`\a| as in |`a list|). +% \begin{macrocode} + local TypeParameter = + K ( 'TypeParameter' , + "'" * Q"_" ^ -1 * alpha ^ 1 * ( # ( 1 - P "'" ) + -1 ) ) +% \end{macrocode} +% +% \paragraph{The records} % -% -% \paragraph{The strings en OCaml} -% -% We need a pattern |ocaml_string| without captures because it will be used -% within the comments of OCaml. % \begin{macrocode} -local ocaml_string = - Q "\"" - * ( - VisualSpace - + - Q ( ( 1 - S " \"\r" ) ^ 1 ) - + - EOL - ) ^ 0 - * Q "\"" + local expression_for_fields_type = + P { "E" , + E = ( "{" * V "F" * "}" + + "(" * V "F" * ")" + + TypeParameter + + ( 1 - S "{}()[]\r;" ) ) ^ 0 , + F = ( "{" * V "F" * "}" + + "(" * V "F" * ")" + + ( 1 - S "{}()[]\r\"'" ) + TypeParameter ) ^ 0 + } % \end{macrocode} -% +% +% \bigskip % \begin{macrocode} -local String = WithStyle ( 'String.Long' , ocaml_string ) + local expression_for_fields_value = + P { "E" , + E = ( "{" * V "F" * "}" + + "(" * V "F" * ")" + + "[" * V "F" * "]" + + String + QuotedString + Char + + ( 1 - S "{}()[]\r;" ) ) ^ 0 , + F = ( "{" * V "F" * "}" + + "(" * V "F" * ")" + + "[" * V "F" * "]" + + ( 1 - S "{}()[]\r\"'" )) ^ 0 + } % \end{macrocode} % -% % \bigskip -% Now, the ``quoted strings'' of OCaml (for example \verb+{ext|Essai|ext}+). +% \begin{macrocode} + local OneFieldDefinition = + ( K ( 'Keyword' , "mutable" ) * SkipSpace ) ^ -1 + * K ( 'Name.Field' , identifier ) * SkipSpace + * Q ":" * SkipSpace + * K ( 'TypeExpression' , expression_for_fields_type ) + * SkipSpace +% \end{macrocode} % -% For those strings, we will do two consecutive analysis. First an analysis to -% determine the whole string and, then, an analysis for the potential visual -% spaces and the EOL in the string. -% -% The first analysis require a match-time capture. For explanations about that -% programmation, see the paragraphe \emph{Lua's long % strings} in -% |www.inf.puc-rio.br/~roberto/lpeg|. +% \bigskip % \begin{macrocode} -local ext = ( R "az" + "_" ) ^ 0 -local open = "{" * Cg ( ext , 'init' ) * "|" -local close = "|" * C ( ext ) * "}" -local closeeq = - Cmt ( close * Cb ( 'init' ) , - function ( s , i , a , b ) return a == b end ) + local OneField = + K ( 'Name.Field' , identifier ) * SkipSpace + * Q "=" * SkipSpace + * ( expression_for_fields_value / ParseAgain ) + * SkipSpace % \end{macrocode} % -% \medskip -% The \textsc{lpeg} |QuotedStringBis| will do the second analysis. +% \bigskip +% The \emph{records} may occur in the definitions of type (beginning by |type|) +% but also when used as values. % \begin{macrocode} -local QuotedStringBis = - WithStyle ( 'String.Long' , - ( - Space + local Record = + Q "{" * SkipSpace + * + ( + OneFieldDefinition + * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneFieldDefinition ) ^ 0 + - Q ( ( 1 - S " \r" ) ^ 1 ) - + - EOL - ) ^ 0 ) + OneField * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneField ) ^ 0 + ) + * SkipSpace + * Q ";" ^ -1 + * SkipSpace + * Comment ^ -1 + * SkipSpace + * Q "}" % \end{macrocode} -% -% \medskip -% We use a ``function capture'' (as called in the official documentation of the -% \textsc{lpeg}) in order to do the second analysis on the result of the first one. +% +% \paragraph{DotNotation} +% +% Now, we deal with the notations with points (eg: |List.length|). In OCaml, +% such notation is used for the fields of the records and for the modules. % \begin{macrocode} -local QuotedString = - C ( open * ( 1 - closeeq ) ^ 0 * close ) / - ( function ( s ) return QuotedStringBis : match ( s ) end ) + local DotNotation = + ( + K ( 'Name.Module' , cap_identifier ) + * Q "." + * ( Identifier + Constructor + Q "(" + Q "[" + Q "{" ) ^ -1 + + + Identifier + * Q "." + * K ( 'Name.Field' , identifier ) + ) + * ( Q "." * K ( 'Name.Field' , identifier ) ) ^ 0 % \end{macrocode} -% % % \bigskip -% \paragraph{The comments in the OCaml listings} +% \begin{macrocode} + local Operator = + K ( 'Operator' , + P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "||" + "&&" + + "//" + "**" + ";;" + "->" + "+." + "-." + "*." + "/." + + S "-~+/*%=<>&@|" ) +% \end{macrocode} % -% In OCaml, the delimiters for the comments are |(*| and |*)|. There are -% unsymmetrical and OCaml allows those comments to be nested. That's why we need a -% grammar. -% -% In these comments, we embed the math comments (between |$| and |$|) and we -% embed also a treatment for the end of lines (since the comments may be multi-lines). -% +% \bigskip % \begin{macrocode} -local Comment = - WithStyle ( 'Comment' , - P { - "A" , - A = Q "(*" - * ( V "A" - + Q ( ( 1 - S "\r$\"" - "(*" - "*)" ) ^ 1 ) -- $ - + ocaml_string - + "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1 ) * "$" -- $ - + EOL - ) ^ 0 - * Q "*)" - } ) + local Builtin = + K ( 'Name.Builtin' , P "not" + "incr" + "decr" + "fst" + "snd" + "ref" ) % \end{macrocode} -% +% % \bigskip -% \paragraph{The DefFunction} +% \begin{macrocode} + local Exception = + K ( 'Exception' , + P "Division_by_zero" + "End_of_File" + "Failure" + "Invalid_argument" + + "Match_failure" + "Not_found" + "Out_of_memory" + "Stack_overflow" + + "Sys_blocked_io" + "Sys_error" + "Undefined_recursive_module" ) +% \end{macrocode} % +% \bigskip % \begin{macrocode} -local balanced_parens = - P { "E" , E = ( "(" * V "E" * ")" + 1 - S "()" ) ^ 0 } + LPEG_cleaner.ocaml = Compute_LPEG_cleaner ( 'ocaml' , braces ) % \end{macrocode} -% +% +% \bigskip % \begin{macrocode} -local Argument = - K ( 'Identifier' , identifier ) - + Q "(" * SkipSpace - * K ( 'Identifier' , identifier ) * SkipSpace - * Q ":" * SkipSpace - * K ( 'Name.Type' , balanced_parens ) * SkipSpace - * Q ")" + local Argument = +% \end{macrocode} +% For the labels of the labeled arguments. Maybe you will, in the future, create +% a style for those elements. +% \begin{macrocode} + ( Q "~" * Identifier * Q ":" * SkipSpace ) ^ -1 + * + ( K ( 'Identifier.Internal' , identifier ) + + Q "(" * SkipSpace + * K ( 'Identifier.Internal' , identifier ) * SkipSpace + * Q ":" * SkipSpace + * K ( 'TypeExpression' , balanced_parens ) * SkipSpace + * Q ")" + ) % \end{macrocode} % +% \bigskip % Despite its name, then \textsc{lpeg} |DefFunction| deals also with |let open| % which opens locally a module. % \begin{macrocode} -local DefFunction = - K ( 'Keyword' , "let open" ) - * Space - * K ( 'Name.Module' , cap_identifier ) - + - K ( 'Keyword' , P "let rec" + "let" + "and" ) + local DefFunction = + K ( 'Keyword.Governing' , "let open" ) * Space - * K ( 'Name.Function.Internal' , identifier ) - * Space - * ( - Q "=" * SkipSpace * K ( 'Keyword' , "function" ) - + - Argument - * ( SkipSpace * Argument ) ^ 0 - * ( - SkipSpace - * Q ":" - * K ( 'Name.Type' , ( 1 - P "=" ) ^ 0 ) - ) ^ -1 - ) + * K ( 'Name.Module' , cap_identifier ) + + + K ( 'Keyword.Governing' , P "let rec" + "let" + "and" ) + * Space + * K ( 'Name.Function.Internal' , identifier ) + * Space + * ( + Q "=" * SkipSpace * K ( 'Keyword' , "function" ) + + + Argument + * ( SkipSpace * Argument ) ^ 0 + * ( + SkipSpace + * Q ":" + * K ( 'TypeExpression' , ( 1 - P "=" ) ^ 0 ) + ) ^ -1 + ) % \end{macrocode} % -% -% \bigskip -% \paragraph{The DefModule}\par +% \paragraph{DefModule} % -% The following LPEG will be used in the definitions of modules but also in the -% definitions of \emph{types} of modules. % \begin{macrocode} -local DefModule = - K ( 'Keyword' , "module" ) * Space - * - ( - K ( 'Keyword' , "type" ) * Space - * K ( 'Name.Type' , cap_identifier ) - + - K ( 'Name.Module' , cap_identifier ) * SkipSpace - * - ( - Q "(" * SkipSpace - * K ( 'Name.Module' , cap_identifier ) * SkipSpace - * Q ":" * SkipSpace - * K ( 'Name.Type' , cap_identifier ) * SkipSpace - * + local DefModule = + K ( 'Keyword.Governing' , "module" ) * Space + * + ( + K ( 'Keyword.Governing' , "type" ) * Space + * K ( 'Name.Type' , cap_identifier ) + + + K ( 'Name.Module' , cap_identifier ) * SkipSpace + * + ( + Q "(" * SkipSpace + * K ( 'Name.Module' , cap_identifier ) * SkipSpace + * Q ":" * SkipSpace + * K ( 'Name.Type' , cap_identifier ) * SkipSpace + * + ( + Q "," * SkipSpace + * K ( 'Name.Module' , cap_identifier ) * SkipSpace + * Q ":" * SkipSpace + * K ( 'Name.Type' , cap_identifier ) * SkipSpace + ) ^ 0 + * Q ")" + ) ^ -1 + * + ( + Q "=" * SkipSpace + * K ( 'Name.Module' , cap_identifier ) * SkipSpace + * Q "(" + * K ( 'Name.Module' , cap_identifier ) * SkipSpace + * ( - Q "," * SkipSpace - * K ( 'Name.Module' , cap_identifier ) * SkipSpace - * Q ":" * SkipSpace - * K ( 'Name.Type' , cap_identifier ) * SkipSpace - ) ^ 0 + Q "," + * + K ( 'Name.Module' , cap_identifier ) * SkipSpace + ) ^ 0 * Q ")" - ) ^ -1 - * - ( - Q "=" * SkipSpace - * K ( 'Name.Module' , cap_identifier ) * SkipSpace - * Q "(" - * K ( 'Name.Module' , cap_identifier ) * SkipSpace - * - ( - Q "," - * - K ( 'Name.Module' , cap_identifier ) * SkipSpace - ) ^ 0 - * Q ")" - ) ^ -1 - ) - + - K ( 'Keyword' , P "include" + "open" ) - * Space * K ( 'Name.Module' , cap_identifier ) + ) ^ -1 + ) + + + K ( 'Keyword.Governing' , P "include" + "open" ) + * Space + * K ( 'Name.Module' , cap_identifier ) % \end{macrocode} -% -% \bigskip -% \paragraph{The parameters of the types} -% +% +% \paragraph{DefType} +% % \begin{macrocode} -local TypeParameter = K ( 'TypeParameter' , "'" * alpha * # ( 1 - P "'" ) ) + local DefType = + K ( 'Keyword.Governing' , "type" ) + * Space + * K ( 'TypeExpression' , Q ( 1 - P "=" ) ^ 1 ) + * SkipSpace + * ( Q "+=" + Q "=" ) + * SkipSpace + * ( + Record + + + WithStyle + ( + 'TypeExpression' , + ( + ( EOL + Q ( 1 - P ";;" - governing_keyword ) ) ^ 0 + * ( # ( governing_keyword ) + Q ";;" ) + ) + ) + ) % \end{macrocode} -% +% % \bigskip % \paragraph{The main LPEG for the language OCaml} % -% First, the main loop : % \begin{macrocode} -local Main = - space ^ 1 * -1 - + space ^ 0 * EOL - + Space - + Tab - + Escape + EscapeMath - + Beamer - + DetectedCommands - + TypeParameter - + String + QuotedString + Char - + Comment - + Delim - + Operator - + Punct - + FromImport - + Exception - + DefFunction - + DefModule - + Record - + Keyword * ( Space + Punct + Delim + EOL + -1 ) - + OperatorWord * ( Space + Punct + Delim + EOL + -1 ) - + Builtin * ( Space + Punct + Delim + EOL + -1 ) - + DotNotation - + Constructor - + Identifier - + Number - + Word - -LPEG1['ocaml'] = Main ^ 0 + local Main = + space ^ 0 * EOL + + Space + + Tab + + Escape + EscapeMath + + Beamer + + DetectedCommands + + TypeParameter + + String + QuotedString + Char + + Comment + + Operator +% \end{macrocode} +% For the labels (maybe we will write in the future a dedicated LPEG pour those tokens). +% \begin{macrocode} + + Q "~" * Identifier * ( Q ":" ) ^ -1 + + Q ":" * # (1 - P ":") * SkipSpace + * K ( 'TypeExpression' , balanced_parens ) * SkipSpace * Q ")" + + Exception + + DefType + + DefFunction + + DefModule + + Record + + Keyword * EndKeyword + + OperatorWord * EndKeyword + + Builtin * EndKeyword + + DotNotation + + Constructor + + Identifier + + Punct + + Delim + + Number + + Word % \end{macrocode} % % \bigskip -% We recall that each line in the code to parse will be sent back to -% LaTeX between a pair |\@@_begin_line:| -- |\@@_end_line:|\footnote{Remember -% that the \texttt{\textbackslash @@\_end\_line:} must be explicit because it -% will be used as marker in order to delimit the argument of the command -% \texttt{\textbackslash @@\_begin\_line:}}. +% % Here, we must not put |local|, of course. % \begin{macrocode} -LPEG2['ocaml'] = - Ct ( - ( space ^ 0 * "\r" ) ^ -1 - * BeamerBeginEnvironments - * Lc '\\@@_begin_line:' - * SpaceIndentation ^ 0 - * LPEG1['ocaml'] - * -1 - * Lc '\\@@_end_line:' - ) + LPEG1.ocaml = Main ^ 0 % \end{macrocode} % -% +% \bigskip +% \begin{macrocode} + LPEG2.ocaml = + Ct ( +% \end{macrocode} +% The following lines are in order to allow, in |\piton| (and not in |{Piton}|), +% judgments of type (such as |f : my_type -> 'a list|) or single expressions of +% type such as |my_type -> 'a list| (in that case, the argument of |\piton| +% \emph{must} begin by a colon). +% \begin{macrocode} + ( P ":" + Identifier * SkipSpace * Q ":" ) + * SkipSpace + * K ( 'TypeExpression' , ( 1 - P "\r" ) ^ 0 ) + + + ( space ^ 0 * "\r" ) ^ -1 + * BeamerBeginEnvironments + * Lc [[ \@@_begin_line: ]] + * SpaceIndentation ^ 0 + * ( ( space * Lc [[ \@@_trailing_space: ]] ) ^ 1 * -1 + + space ^ 0 * EOL + + Main + ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) +% \end{macrocode} +% +% \bigskip +% End of the Lua scope for the language OCaml. +% \begin{macrocode} +end +% \end{macrocode} +% +% % \bigskip % \subsubsection{The language C} % +% We open a Lua local scope for the language C (of course, there will be also +% global definitions). +% \begin{macrocode} +do +% \end{macrocode} +% +% \bigskip % \begin{macrocode} -local Delim = Q ( S "{[()]}" ) + local Delim = Q ( S "{[()]}" ) % \end{macrocode} % % \begin{macrocode} -local Punct = Q ( S ",:;!" ) + local Punct = Q ( S ",:;!" ) % \end{macrocode} % % \bigskip % Some strings of length 2 are explicit because we want the corresponding % ligatures available in some fonts such as \emph{Fira Code} to be active. % \begin{macrocode} -local identifier = letter * alphanum ^ 0 + local identifier = letter * alphanum ^ 0 -local Operator = - K ( 'Operator' , - P "!=" + "==" + "<<" + ">>" + "<=" + ">=" + "||" + "&&" - + S "-~+/*%=<>&.@|!" ) + local Operator = + K ( 'Operator' , + P "!=" + "==" + "<<" + ">>" + "<=" + ">=" + "||" + "&&" + + S "-~+/*%=<>&.@|!" ) -local Keyword = - K ( 'Keyword' , - P "alignas" + "asm" + "auto" + "break" + "case" + "catch" + "class" + - "const" + "constexpr" + "continue" + "decltype" + "do" + "else" + "enum" + - "extern" + "for" + "goto" + "if" + "nexcept" + "private" + "public" + - "register" + "restricted" + "return" + "static" + "static_assert" + - "struct" + "switch" + "thread_local" + "throw" + "try" + "typedef" + - "union" + "using" + "virtual" + "volatile" + "while" - ) - + K ( 'Keyword.Constant' , P "default" + "false" + "NULL" + "nullptr" + "true" ) + local Keyword = + K ( 'Keyword' , + P "alignas" + "asm" + "auto" + "break" + "case" + "catch" + "class" + + "const" + "constexpr" + "continue" + "decltype" + "do" + "else" + "enum" + + "extern" + "for" + "goto" + "if" + "nexcept" + "private" + "public" + + "register" + "restricted" + "return" + "static" + "static_assert" + + "struct" + "switch" + "thread_local" + "throw" + "try" + "typedef" + + "union" + "using" + "virtual" + "volatile" + "while" + ) + + K ( 'Keyword.Constant' , P "default" + "false" + "NULL" + "nullptr" + "true" ) -local Builtin = - K ( 'Name.Builtin' , - P "alignof" + "malloc" + "printf" + "scanf" + "sizeof" ) + local Builtin = + K ( 'Name.Builtin' , + P "alignof" + "malloc" + "printf" + "scanf" + "sizeof" ) -local Type = - K ( 'Name.Type' , - P "bool" + "char" + "char16_t" + "char32_t" + "double" + "float" + "int" + - "int8_t" + "int16_t" + "int32_t" + "int64_t" + "long" + "short" + "signed" - + "unsigned" + "void" + "wchar_t" ) * Q "*" ^ 0 + local Type = + K ( 'Name.Type' , + P "bool" + "char" + "char16_t" + "char32_t" + "double" + "float" + "int" + + "int8_t" + "int16_t" + "int32_t" + "int64_t" + "long" + "short" + "signed" + + "unsigned" + "void" + "wchar_t" ) * Q "*" ^ 0 -local DefFunction = - Type - * Space - * Q "*" ^ -1 - * K ( 'Name.Function.Internal' , identifier ) - * SkipSpace - * # P "(" + local DefFunction = + Type + * Space + * Q "*" ^ -1 + * K ( 'Name.Function.Internal' , identifier ) + * SkipSpace + * # P "(" % \end{macrocode} % We remind that the marker |#| of \textsc{lpeg} specifies that the pattern will be % detected but won't consume any character. @@ -6941,8 +7544,8 @@ local DefFunction = % \smallskip % Example:\enskip \piton{class myclass:} % \begin{macrocode} -local DefClass = - K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier ) + local DefClass = + K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier ) % \end{macrocode} % % If the word |class| is not followed by a identifier, it will be caught as @@ -6953,41 +7556,43 @@ local DefClass = % \paragraph{The strings of C} % % \begin{macrocode} -String = - WithStyle ( 'String.Long' , - Q "\"" - * ( VisualSpace - + K ( 'String.Interpol' , - "%" * ( S "difcspxXou" + "ld" + "li" + "hd" + "hi" ) - ) - + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 ) - ) ^ 0 - * Q "\"" - ) + String = + WithStyle ( 'String.Long' , + Q "\"" + * ( SpaceInString + + K ( 'String.Interpol' , + "%" * ( S "difcspxXou" + "ld" + "li" + "hd" + "hi" ) + ) + + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 ) + ) ^ 0 + * Q "\"" + ) % \end{macrocode} % % \bigskip % \paragraph{Beamer} % % \bigskip +% The argument of |Compute_braces| must be a pattern \emph{which does no +% catching} corresponding to the strings of the language. % \begin{macrocode} -braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" ) -if piton.beamer then Beamer = Compute_Beamer ( 'c' , braces ) end + local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" ) + if piton.beamer then Beamer = Compute_Beamer ( 'c' , braces ) end % \end{macrocode} % % \begin{macrocode} -DetectedCommands = Compute_DetectedCommands ( 'c' , braces ) + DetectedCommands = Compute_DetectedCommands ( 'c' , braces ) % \end{macrocode} % % \begin{macrocode} -LPEG_cleaner['c'] = Compute_LPEG_cleaner ( 'c' , braces ) + LPEG_cleaner.c = Compute_LPEG_cleaner ( 'c' , braces ) % \end{macrocode} % % \bigskip % \paragraph{The directives of the preprocessor} % % \begin{macrocode} -local Preproc = K ( 'Preproc' , "#" * ( 1 - P "\r" ) ^ 0 ) * ( EOL + -1 ) + local Preproc = K ( 'Preproc' , "#" * ( 1 - P "\r" ) ^ 0 ) * ( EOL + -1 ) % \end{macrocode} % % @@ -6996,17 +7601,17 @@ local Preproc = K ( 'Preproc' , "#" * ( 1 - P "\r" ) ^ 0 ) * ( EOL + -1 ) % % We define different \textsc{lpeg} dealing with comments in the C listings. % \begin{macrocode} -local Comment = - WithStyle ( 'Comment' , - Q "//" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $ - * ( EOL + -1 ) + local Comment = + WithStyle ( 'Comment' , + Q "//" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $ + * ( EOL + -1 ) -local LongComment = - WithStyle ( 'Comment' , - Q "/*" - * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0 - * Q "*/" - ) -- $ + local LongComment = + WithStyle ( 'Comment' , + Q "/*" + * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0 + * Q "*/" + ) -- $ % \end{macrocode} % % @@ -7015,36 +7620,42 @@ local LongComment = % \bigskip % \paragraph{The main LPEG for the language C} % +% \begin{macrocode} + local EndKeyword + = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape + + EscapeMath + -1 +% \end{macrocode} +% % First, the main loop : % \begin{macrocode} -local Main = - space ^ 1 * -1 - + space ^ 0 * EOL - + Space - + Tab - + Escape + EscapeMath - + CommentLaTeX - + Beamer - + DetectedCommands - + Preproc - + Comment + LongComment - + Delim - + Operator - + String - + Punct - + DefFunction - + DefClass - + Type * ( Q "*" ^ -1 + Space + Punct + Delim + EOL + -1 ) - + Keyword * ( Space + Punct + Delim + EOL + -1 ) - + Builtin * ( Space + Punct + Delim + EOL + -1 ) - + Identifier - + Number - + Word -% \end{macrocode} -% -% Here, we must not put |local|! -% \begin{macrocode} -LPEG1['c'] = Main ^ 0 + local Main = + space ^ 0 * EOL + + Space + + Tab + + Escape + EscapeMath + + CommentLaTeX + + Beamer + + DetectedCommands + + Preproc + + Comment + LongComment + + Delim + + Operator + + String + + Punct + + DefFunction + + DefClass + + Type * ( Q "*" ^ -1 + EndKeyword ) + + Keyword * EndKeyword + + Builtin * EndKeyword + + Identifier + + Number + + Word +% \end{macrocode} +% +% \bigskip +% Here, we must not put |local|, of course. +% \begin{macrocode} + LPEG1.c = Main ^ 0 % \end{macrocode} % % \bigskip @@ -7054,127 +7665,160 @@ LPEG1['c'] = Main ^ 0 % will be used as marker in order to delimit the argument of the command % \texttt{\textbackslash @@\_begin\_line:}}. % \begin{macrocode} -LPEG2['c'] = - Ct ( - ( space ^ 0 * P "\r" ) ^ -1 - * BeamerBeginEnvironments - * Lc '\\@@_begin_line:' - * SpaceIndentation ^ 0 - * LPEG1['c'] - * -1 - * Lc '\\@@_end_line:' - ) + LPEG2.c = + Ct ( + ( space ^ 0 * P "\r" ) ^ -1 + * BeamerBeginEnvironments + * Lc [[ \@@_begin_line: ]] + * SpaceIndentation ^ 0 + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) % \end{macrocode} % +% \bigskip +% End of the Lua scope for the language C. +% \begin{macrocode} +end +% \end{macrocode} % % \bigskip % \subsubsection{The language SQL} % +% We open a Lua local scope for the language SQL (of course, there will be also +% global definitions). % \begin{macrocode} -local function LuaKeyword ( name ) -return - Lc [[{\PitonStyle{Keyword}{]] - * Q ( Cmt ( - C ( identifier ) , - function ( s , i , a ) return string.upper ( a ) == name end - ) - ) - * Lc "}}" -end +do +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + local LuaKeyword + function LuaKeyword ( name ) return + Lc [[ {\PitonStyle{Keyword}{ ]] + * Q ( Cmt ( + C ( letter * alphanum ^ 0 ) , + function ( s , i , a ) return string.upper ( a ) == name end + ) + ) + * Lc "}}" + end % \end{macrocode} % % \bigskip % In the identifiers, we will be able to catch those contening spaces, that is % to say like |"last name"|. % \begin{macrocode} -local identifier = - letter * ( alphanum + "-" ) ^ 0 - + '"' * ( ( alphanum + space - '"' ) ^ 1 ) * '"' - - -local Operator = - K ( 'Operator' , P "=" + "!=" + "<>" + ">=" + ">" + "<=" + "<" + S "*+/" ) + local identifier = + letter * ( alphanum + "-" ) ^ 0 + + P '"' * ( ( 1 - P '"' ) ^ 1 ) * '"' +% \end{macrocode} +% +% \begin{macrocode} + local Operator = + K ( 'Operator' , P "=" + "!=" + "<>" + ">=" + ">" + "<=" + "<" + S "*+/" ) % \end{macrocode} % % In SQL, the keywords are case-insensitive. That's why we have a little % complication. We will catch the keywords with the identifiers and, then, % distinguish the keywords with a Lua function. However, some keywords will be % caught in special LPEG because we want to detect the names of the SQL tables. +% +% \bigskip +% The following function converts a comma-separated list in a ``set'', that is +% to say a Lua table with a fast way to test whether a string belongs to that +% set (eventually, the indexation of the components of the table is no longer +% done by integers but by the strings themselves). % \begin{macrocode} -local function Set ( list ) - local set = { } - for _, l in ipairs ( list ) do set[l] = true end - return set -end - -local set_keywords = Set - { - "ADD" , "AFTER" , "ALL" , "ALTER" , "AND" , "AS" , "ASC" , "BETWEEN" , "BY" , - "CHANGE" , "COLUMN" , "CREATE" , "CROSS JOIN" , "DELETE" , "DESC" , "DISTINCT" , - "DROP" , "FROM" , "GROUP" , "HAVING" , "IN" , "INNER" , "INSERT" , "INTO" , "IS" , - "JOIN" , "LEFT" , "LIKE" , "LIMIT" , "MERGE" , "NOT" , "NULL" , "ON" , "OR" , - "ORDER" , "OVER" , "RIGHT" , "SELECT" , "SET" , "TABLE" , "THEN" , "TRUNCATE" , - "UNION" , "UPDATE" , "VALUES" , "WHEN" , "WHERE" , "WITH" - } - -local set_builtins = Set - { - "AVG" , "COUNT" , "CHAR_LENGHT" , "CONCAT" , "CURDATE" , "CURRENT_DATE" , - "DATE_FORMAT" , "DAY" , "LOWER" , "LTRIM" , "MAX" , "MIN" , "MONTH" , "NOW" , - "RANK" , "ROUND" , "RTRIM" , "SUBSTRING" , "SUM" , "UPPER" , "YEAR" - } + local Set + function Set ( list ) + local set = { } + for _ , l in ipairs ( list ) do set[l] = true end + return set + end +% \end{macrocode} +% +% \bigskip +% We now use the previsou function |Set| to creates the ``sets'' |set_keywords| +% and |set_builtin|. +% \begin{macrocode} + local set_keywords = Set + { + "ADD" , "AFTER" , "ALL" , "ALTER" , "AND" , "AS" , "ASC" , "BETWEEN" , "BY" , + "CHANGE" , "COLUMN" , "CREATE" , "CROSS JOIN" , "DELETE" , "DESC" , "DISTINCT" , + "DROP" , "EXCEPT" , "FROM" , "GROUP" , "HAVING" , "IN" , "INNER" , + "INSERT" , "INTERSECT" , "INTO" , "IS" , "JOIN" , "LEFT" , "LIKE" , "LIMIT" , + "MERGE" , "NOT" , "NULL" , "OFFSET" , "ON" , "OR" , "ORDER" , "OVER" , + "RIGHT" , "SELECT" , "SET" , "TABLE" , "THEN" , "TRUNCATE" , "UNION" , + "UPDATE" , "VALUES" , "WHEN" , "WHERE" , "WITH" + } +% \end{macrocode} +% +% \begin{macrocode} + local set_builtins = Set + { + "AVG" , "COUNT" , "CHAR_LENGHT" , "CONCAT" , "CURDATE" , "CURRENT_DATE" , + "DATE_FORMAT" , "DAY" , "LOWER" , "LTRIM" , "MAX" , "MIN" , "MONTH" , "NOW" , + "RANK" , "ROUND" , "RTRIM" , "SUBSTRING" , "SUM" , "UPPER" , "YEAR" + } % \end{macrocode} % % The \textsc{lpeg} |Identifier| will catch the identifiers of the fields % but also the keywords and the built-in functions of SQL. If will \emph{not} % catch the names of the SQL tables. % \begin{macrocode} -local Identifier = - C ( identifier ) / - ( - function (s) - if set_keywords[string.upper(s)] -- the keywords are case-insensitive in SQL + local Identifier = + C ( identifier ) / + ( + function ( s ) + if set_keywords[string.upper(s)] then return % \end{macrocode} % Remind that, in Lua, it's possible to return \emph{several} values. % \begin{macrocode} - then return { "{\\PitonStyle{Keyword}{" } , - { luatexbase.catcodetables.other , s } , - { "}}" } - else if set_builtins[string.upper(s)] - then return { "{\\PitonStyle{Name.Builtin}{" } , - { luatexbase.catcodetables.other , s } , - { "}}" } - else return { "{\\PitonStyle{Name.Field}{" } , - { luatexbase.catcodetables.other , s } , - { "}}" } - end - end - end - ) + { [[{\PitonStyle{Keyword}{]] } , + { luatexbase.catcodetables.other , s } , + { "}}" } + else + if set_builtins[string.upper(s)] then return + { [[{\PitonStyle{Name.Builtin}{]] } , + { luatexbase.catcodetables.other , s } , + { "}}" } + else return + { [[{\PitonStyle{Name.Field}{]] } , + { luatexbase.catcodetables.other , s } , + { "}}" } + end + end + end + ) % \end{macrocode} % % \bigskip % \paragraph{The strings of SQL} % % \begin{macrocode} -local String = K ( 'String.Long' , "'" * ( 1 - P "'" ) ^ 1 * "'" ) + local String = K ( 'String.Long' , "'" * ( 1 - P "'" ) ^ 1 * "'" ) % \end{macrocode} % % \bigskip % \paragraph{Beamer} % % \bigskip +% The argument of |Compute_braces| must be a pattern \emph{which does no +% catching} corresponding to the strings of the language. +% % \begin{macrocode} -braces = Compute_braces ( String ) -if piton.beamer then Beamer = Compute_Beamer ( 'sql' , braces ) end + local braces = Compute_braces ( "'" * ( 1 - P "'" ) ^ 1 * "'" ) + if piton.beamer then Beamer = Compute_Beamer ( 'sql' , braces ) end % \end{macrocode} % % \begin{macrocode} -DetectedCommands = Compute_DetectedCommands ( 'sql' , braces ) + DetectedCommands = Compute_DetectedCommands ( 'sql' , braces ) % \end{macrocode} % % \begin{macrocode} -LPEG_cleaner['sql'] = Compute_LPEG_cleaner ( 'sql' , braces ) + LPEG_cleaner.sql = Compute_LPEG_cleaner ( 'sql' , braces ) % \end{macrocode} % % @@ -7184,18 +7828,18 @@ LPEG_cleaner['sql'] = Compute_LPEG_cleaner ( 'sql' , braces ) % % We define different \textsc{lpeg} dealing with comments in the SQL listings. % \begin{macrocode} -local Comment = - WithStyle ( 'Comment' , - Q "--" -- syntax of SQL92 - * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $ - * ( EOL + -1 ) + local Comment = + WithStyle ( 'Comment' , + Q "--" -- syntax of SQL92 + * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $ + * ( EOL + -1 ) -local LongComment = - WithStyle ( 'Comment' , - Q "/*" - * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0 - * Q "*/" - ) -- $ + local LongComment = + WithStyle ( 'Comment' , + Q "/*" + * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0 + * Q "*/" + ) -- $ % \end{macrocode} % % @@ -7203,74 +7847,85 @@ local LongComment = % \bigskip % \paragraph{The main LPEG for the language SQL} % +% \begin{macrocode} + local EndKeyword + = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape + + EscapeMath + -1 +% \end{macrocode} % % \begin{macrocode} -local TableField = - K ( 'Name.Table' , identifier ) - * Q "." - * K ( 'Name.Field' , identifier ) + local TableField = + K ( 'Name.Table' , identifier ) + * Q "." + * K ( 'Name.Field' , identifier ) -local OneField = - ( - Q ( "(" * ( 1 - P ")" ) ^ 0 * ")" ) - + - K ( 'Name.Table' , identifier ) - * Q "." - * K ( 'Name.Field' , identifier ) - + - K ( 'Name.Field' , identifier ) - ) - * ( - Space * LuaKeyword "AS" * Space * K ( 'Name.Field' , identifier ) - ) ^ -1 - * ( Space * ( LuaKeyword "ASC" + LuaKeyword "DESC" ) ) ^ -1 + local OneField = + ( + Q ( "(" * ( 1 - P ")" ) ^ 0 * ")" ) + + + K ( 'Name.Table' , identifier ) + * Q "." + * K ( 'Name.Field' , identifier ) + + + K ( 'Name.Field' , identifier ) + ) + * ( + Space * LuaKeyword "AS" * Space * K ( 'Name.Field' , identifier ) + ) ^ -1 + * ( Space * ( LuaKeyword "ASC" + LuaKeyword "DESC" ) ) ^ -1 -local OneTable = - K ( 'Name.Table' , identifier ) - * ( - Space - * LuaKeyword "AS" - * Space - * K ( 'Name.Table' , identifier ) - ) ^ -1 + local OneTable = + K ( 'Name.Table' , identifier ) + * ( + Space + * LuaKeyword "AS" + * Space + * K ( 'Name.Table' , identifier ) + ) ^ -1 -local WeCatchTableNames = - LuaKeyword "FROM" - * ( Space + EOL ) - * OneTable * ( SkipSpace * Q "," * SkipSpace * OneTable ) ^ 0 - + ( - LuaKeyword "JOIN" + LuaKeyword "INTO" + LuaKeyword "UPDATE" - + LuaKeyword "TABLE" - ) - * ( Space + EOL ) * OneTable + local WeCatchTableNames = + LuaKeyword "FROM" + * ( Space + EOL ) + * OneTable * ( SkipSpace * Q "," * SkipSpace * OneTable ) ^ 0 + + ( + LuaKeyword "JOIN" + LuaKeyword "INTO" + LuaKeyword "UPDATE" + + LuaKeyword "TABLE" + ) + * ( Space + EOL ) * OneTable % \end{macrocode} % +% \begin{macrocode} + local EndKeyword + = Space + Punct + Delim + EOL + Beamer + + DetectedCommands + Escape + EscapeMath + -1 +% \end{macrocode} +% % % First, the main loop : % \begin{macrocode} -local Main = - space ^ 1 * -1 - + space ^ 0 * EOL - + Space - + Tab - + Escape + EscapeMath - + CommentLaTeX - + Beamer - + DetectedCommands - + Comment + LongComment - + Delim - + Operator - + String - + Punct - + WeCatchTableNames - + ( TableField + Identifier ) * ( Space + Operator + Punct + Delim + EOL + -1 ) - + Number - + Word + local Main = + space ^ 0 * EOL + + Space + + Tab + + Escape + EscapeMath + + CommentLaTeX + + Beamer + + DetectedCommands + + Comment + LongComment + + Delim + + Operator + + String + + Punct + + WeCatchTableNames + + ( TableField + Identifier ) * ( Space + Operator + Punct + Delim + EOL + -1 ) + + Number + + Word % \end{macrocode} % -% Here, we must not put |local|! +% \bigskip +% Here, we must not put |local|, of course. % \begin{macrocode} -LPEG1['sql'] = Main ^ 0 + LPEG1.sql = Main ^ 0 % \end{macrocode} % % \bigskip @@ -7280,83 +7935,182 @@ LPEG1['sql'] = Main ^ 0 % will be used as marker in order to delimit the argument of the command % \texttt{\textbackslash @@\_begin\_line:}}. % \begin{macrocode} -LPEG2['sql'] = - Ct ( - ( space ^ 0 * "\r" ) ^ -1 - * BeamerBeginEnvironments - * Lc [[ \@@_begin_line: ]] - * SpaceIndentation ^ 0 - * LPEG1['sql'] - * -1 - * Lc [[ \@@_end_line: ]] - ) + LPEG2.sql = + Ct ( + ( space ^ 0 * "\r" ) ^ -1 + * BeamerBeginEnvironments + * Lc [[ \@@_begin_line: ]] + * SpaceIndentation ^ 0 + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) % \end{macrocode} % +% \bigskip +% End of the Lua scope for the language SQL. +% \begin{macrocode} +end +% \end{macrocode} % % \subsubsection{The language ``Minimal''} % +% We open a Lua local scope for the language ``Minimal'' (of course, there +% will be also global definitions). +% \begin{macrocode} +do +% \end{macrocode} +% % \begin{macrocode} -local Punct = Q ( S ",:;!\\" ) + local Punct = Q ( S ",:;!\\" ) -local Comment = - WithStyle ( 'Comment' , - Q "#" - * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $ - ) - * ( EOL + -1 ) + local Comment = + WithStyle ( 'Comment' , + Q "#" + * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $ + ) + * ( EOL + -1 ) -local String = - WithStyle ( 'String.Short' , - Q "\"" - * ( VisualSpace - + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 ) - ) ^ 0 - * Q "\"" - ) + local String = + WithStyle ( 'String.Short' , + Q "\"" + * ( SpaceInString + + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 ) + ) ^ 0 + * Q "\"" + ) +% \end{macrocode} +% +% \bigskip +% The argument of |Compute_braces| must be a pattern \emph{which does no +% catching} corresponding to the strings of the language. +% \begin{macrocode} + local braces = Compute_braces ( P "\"" * ( P "\\\"" + 1 - P "\"" ) ^ 1 * "\"" ) -braces = Compute_braces ( String ) -if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end + if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end -DetectedCommands = Compute_DetectedCommands ( 'minimal' , braces ) + DetectedCommands = Compute_DetectedCommands ( 'minimal' , braces ) -LPEG_cleaner['minimal'] = Compute_LPEG_cleaner ( 'minimal' , braces ) + LPEG_cleaner.minimal = Compute_LPEG_cleaner ( 'minimal' , braces ) -local identifier = letter * alphanum ^ 0 + local identifier = letter * alphanum ^ 0 + + local Identifier = K ( 'Identifier.Internal' , identifier ) + + local Delim = Q ( S "{[()]}" ) + + local Main = + space ^ 0 * EOL + + Space + + Tab + + Escape + EscapeMath + + CommentLaTeX + + Beamer + + DetectedCommands + + Comment + + Delim + + String + + Punct + + Identifier + + Number + + Word +% \end{macrocode} +% +% \bigskip +% Here, we must not put |local|, of course. +% \begin{macrocode} + LPEG1.minimal = Main ^ 0 -local Identifier = K ( 'Identifier' , identifier ) + LPEG2.minimal = + Ct ( + ( space ^ 0 * "\r" ) ^ -1 + * BeamerBeginEnvironments + * Lc [[ \@@_begin_line: ]] + * SpaceIndentation ^ 0 + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) +% \end{macrocode} +% +% +% \bigskip +% End of the Lua scope for the language ``Minimal''. +% \begin{macrocode} +end +% \end{macrocode} +% +% \subsubsection{The language ``Verbatim''} +% +% We open a Lua local scope for the language ``Verbatim'' (of course, there +% will be also global definitions). +% \begin{macrocode} +do +% \end{macrocode} -local Delim = Q ( S "{[()]}" ) +% \bigskip +% Here, we don't use |braces| as done with the other languages because we don't +% have have to take into account the strings (there is no string in the langage +% ``Verbatim''). +% \begin{macrocode} + local braces = + P { "E" , + E = ( "{" * V "E" * "}" + ( 1 - S "{}" ) ) ^ 0 + } -local Main = - space ^ 1 * -1 - + space ^ 0 * EOL - + Space - + Tab - + Escape + EscapeMath - + CommentLaTeX - + Beamer - + DetectedCommands - + Comment - + Delim - + String - + Punct - + Identifier - + Number - + Word + if piton.beamer then Beamer = Compute_Beamer ( 'verbatim' , braces ) end -LPEG1['minimal'] = Main ^ 0 + DetectedCommands = Compute_DetectedCommands ( 'verbatim' , braces ) -LPEG2['minimal'] = - Ct ( - ( space ^ 0 * "\r" ) ^ -1 - * BeamerBeginEnvironments - * Lc [[ \@@_begin_line: ]] - * SpaceIndentation ^ 0 - * LPEG1['minimal'] - * -1 - * Lc [[ \@@_end_line: ]] - ) + LPEG_cleaner.verbatim = Compute_LPEG_cleaner ( 'verbatim' , braces ) +% \end{macrocode} +% +% Now, you will construct the LPEG Word. +% \begin{macrocode} + local lpeg_central = 1 - S " \\\r" + if piton.begin_escape then + lpeg_central = lpeg_central - piton.begin_escape + end + if piton.begin_escape_math then + lpeg_central = lpeg_central - piton.begin_escape_math + end + local Word = Q ( lpeg_central ^ 1 ) + local Main = + space ^ 0 * EOL + + Space + + Tab + + Escape + EscapeMath + + Beamer + + DetectedCommands + + Q [[\]] + + Word +% \end{macrocode} +% +% \bigskip +% Here, we must not put |local|, of course. +% \begin{macrocode} + LPEG1.verbatim = Main ^ 0 + + LPEG2.verbatim = + Ct ( + ( space ^ 0 * "\r" ) ^ -1 + * BeamerBeginEnvironments + * Lc [[ \@@_begin_line: ]] + * SpaceIndentation ^ 0 + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 + * -1 + * Lc [[ \@@_end_line: ]] + ) +% \end{macrocode} +% +% +% \bigskip +% End of the Lua scope for the language ``|verbatim|''. +% \begin{macrocode} +end +% \end{macrocode} +% % \bigskip % \subsubsection{The function Parse} % @@ -7370,10 +8124,13 @@ LPEG2['minimal'] = % \bigskip % \begin{macrocode} function piton.Parse ( language , code ) +% \end{macrocode} +% The variable |piton.language| will be used by the function |ParseAgain|. +% \begin{macrocode} + piton.language = language local t = LPEG2[language] : match ( code ) - if t == nil - then - sprintL3 [[ \@@_error_or_warning:n { syntax~error } ]] + if t == nil then + sprintL3 [[ \@@_error_or_warning:n { SyntaxError } ]] return -- to exit in force the function end local left_stack = {} @@ -7394,14 +8151,14 @@ function piton.Parse ( language , code ) % % Here is an example of an item beginning with |"Open"|. % -% |{ "Open" , "\begin{uncover}<2>" , "\end{cover}" }| +% |{ "Open" , "\begin{uncover}<2>" , "\end{uncover}" }| % % In order to deal with the ends of lines, we have to close the environment -% (|{cover}| in this example) at the end of each line and reopen it at the +% (|{uncover}| in this example) at the end of each line and reopen it at the % beginning of the new line. That's why we use two Lua stacks, called % |left_stack| and |right_stack|. |left_stack| will be for the elements like % |\begin{uncover}<2>| and |right_stack| will be for the elements like -% |\end{cover}|. +% |\end{uncover}|. % \begin{macrocode} if one_item[1] == "Open" then tex.sprint( one_item[2] ) @@ -7421,6 +8178,7 @@ function piton.Parse ( language , code ) end % \end{macrocode} % + % % % \bigskip @@ -7428,9 +8186,15 @@ end % That function merely reads the file (between |first_line| and |last_line|) and % then apply the function~|Parse| to the resulting Lua string. % \begin{macrocode} -function piton.ParseFile ( language , name , first_line , last_line , split ) +function piton.ParseFile + ( lang , name , first_line , last_line , splittable , split ) local s = '' local i = 0 +% \end{macrocode} +% At the date of septembre 2024, LuaLaTeX uses Lua 5.3 and not 5.4. In the +% version 5.4, |io.lines| returns four values (and not just one) but the +% following code should be correct. +% \begin{macrocode} for line in io.lines ( name ) do i = i + 1 if i >= first_line then @@ -7451,15 +8215,21 @@ function piton.ParseFile ( language , name , first_line , last_line , split ) end end if split == 1 then - piton.GobbleSplitParse ( language , 0 , s ) + piton.RetrieveGobbleSplitParse ( lang , 0 , splittable , s ) else - sprintL3 [[ \bool_if:NT \g_@@_footnote_bool \savenotes \vtop \bgroup ]] - piton.Parse ( language , s ) - sprintL3 - [[\vspace{2.5pt}\egroup\bool_if:NT\g_@@_footnote_bool\endsavenotes\par]] + piton.RetrieveGobbleParse ( lang , 0 , splittable , s ) end end % \end{macrocode} +% +% \bigskip +% \begin{macrocode} +function piton.RetrieveGobbleParse ( lang , n , splittable , code ) + local s + s = ( ( P " " ^ 0 * "\r" ) ^ -1 * C ( P ( 1 ) ^ 0 ) * -1 ) : match ( code ) + piton.GobbleParse ( lang , n , splittable , s ) +end +% \end{macrocode} % % \bigskip % \subsubsection{Two variants of the function Parse with integrated preprocessors} @@ -7485,8 +8255,16 @@ function piton.ParseTer ( lang , code ) % Be careful: we have to write |[[\@@_breakable_space: ]]| with a space after % the name of the LaTeX command |\@@_breakable_space:|. % \begin{macrocode} - local s = ( Cs ( ( P [[\@@_breakable_space: ]] / ' ' + 1 ) ^ 0 ) ) - : match ( code ) + local s + s = ( Cs ( ( P [[\@@_breakable_space: ]] / ' ' + 1 ) ^ 0 ) ) + : match ( code ) +% \end{macrocode} +% Remember that |\@@_leading_space:| does not create a space, only an +% incrementation of the counter |\g_@@_indentation_int|. That's why we don't +% replace it by a space... +% \begin{macrocode} + s = ( Cs ( ( P [[\@@_leading_space: ]] / '' + 1 ) ^ 0 ) ) + : match ( s ) return piton.Parse ( lang , s ) end % \end{macrocode} @@ -7543,13 +8321,14 @@ local EnvGobbleLPEG = % \end{macrocode} % % \begin{macrocode} -local function remove_before_cr ( input_string ) - local match_result = ( P "\r" ) : match ( input_string ) - if match_result then - return string.sub ( input_string , match_result ) - else - return input_string - end +local remove_before_cr +function remove_before_cr ( input_string ) + local match_result = ( P "\r" ) : match ( input_string ) + if match_result then return + string.sub ( input_string , match_result ) + else return + input_string + end end % \end{macrocode} % @@ -7557,10 +8336,11 @@ end % The function |gobble| gobbles $n$ characters on the left of the code. The % negative values of $n$ have special significations. % \begin{macrocode} -local function gobble ( n , code ) +local gobble +function gobble ( n , code ) code = remove_before_cr ( code ) - if n == 0 then - return code + if n == 0 then return + code else if n == -1 then n = AutoGobbleLPEG : match ( code ) @@ -7575,16 +8355,16 @@ local function gobble ( n , code ) end % \end{macrocode} % We have a second test |if n == 0| because the, even if the key like -% |auto-gobble| is in force, it's possible that, in fact, there is no space to gobble... +% |auto-gobble| is in force, it's possible that, in fact, there is no space to +% gobble... % \begin{macrocode} - if n == 0 then - return code - else + if n == 0 then return + code + else return % \end{macrocode} % We will now use a \textsc{lpeg} that we have to compute dynamically because it % depends on the value of~$n$. % \begin{macrocode} - return ( Ct ( ( 1 - P "\r" ) ^ (-n) * C ( ( 1 - P "\r" ) ^ 0 ) * ( C "\r" * ( 1 - P "\r" ) ^ (-n) * C ( ( 1 - P "\r" ) ^ 0 ) @@ -7601,25 +8381,44 @@ end % % \bigskip % In the following code, |n| is the value of |\l_@@_gobble_int|. +% +% |splittable| is the value of |\l_@@_splittable_int|. % \begin{macrocode} -function piton.GobbleParse ( lang , n , code ) +function piton.GobbleParse ( lang , n , splittable , code ) + piton.ComputeLinesStatus ( code , splittable ) piton.last_code = gobble ( n , code ) piton.last_language = lang % \end{macrocode} +% We count the number of lines of the informatic code. The result will be stored +% by Lua in |\l_@@_nb_lines_int|. % \begin{macrocode} - sprintL3 [[ \bool_if:NT \g_@@_footnote_bool \savenotes \vtop \bgroup ]] + piton.CountLines ( piton.last_code ) + sprintL3 [[ \bool_if:NT \g_@@_footnote_bool \savenotes ]] piton.Parse ( lang , piton.last_code ) - sprintL3 - [[\vspace{2.5pt}\egroup\bool_if:NT\g_@@_footnote_bool\endsavenotes\par]] +% \end{macrocode} +% +% \begin{macrocode} + sprintL3 [[ \vspace{2.5pt} ]] + sprintL3 [[ \bool_if:NT \g_@@_footnote_bool \endsavenotes ]] +% \end{macrocode} +% We finish the paragraph (each line of the listing is composed in a TeX box +% --- with potentially several lines when |break-lines-in-Piton| is in force --- +% put alone in a paragraph. +% \begin{macrocode} + sprintL3 [[ \par ]] % \end{macrocode} % % Now, if the final user has used the key |write| to write the code of the % environment on an external file. % \begin{macrocode} if piton.write and piton.write ~= '' then - local file = assert ( io.open ( piton.write , piton.write_mode ) ) - file:write ( piton.get_last_code ( ) ) - file:close ( ) + local file = io.open ( piton.write , piton.write_mode ) + if file then + file : write ( piton.get_last_code ( ) ) + file : close ( ) + else + sprintL3 [[ \@@_error_or_warning:n { FileError } ]] + end end end % \end{macrocode} @@ -7628,36 +8427,66 @@ end % The following function will be used when the key |split-on-empty-lines| is in % force. With that key, the informatic code is split in chunks at the empty % lines (usually between the informatic functions defined in the informatic -% code). LaTeX will be able to change the page between the chunks. -% \begin{macrocode} -function piton.GobbleSplitParse ( lang , n , code ) - P { "E" , - E = ( V "F" - * ( P " " ^ 0 * "\r" - / ( function ( x ) sprintL3 [[ \@@_incr_visual_line: ]] end ) - ) ^ 1 - / ( function ( x ) - sprintL3 [[ \l_@@_split_separation_tl \int_gzero:N \g_@@_line_int ]] - end ) - ) ^ 0 * V "F" , -% \end{macrocode} -% The non-terminal |F| corresponds to a chunk of the informatic code. -% \begin{macrocode} - F = C ( V "G" ^ 0 ) +% code). LaTeX will be able to change the page between the chunks. The second +% argument |n| corresponds to the value of the key |gobble| (number of spaces to +% gobble). +% \begin{macrocode} +function piton.GobbleSplitParse ( lang , n , splittable , code ) + local chunks + chunks = + ( + Ct ( + ( + P " " ^ 0 * "\r" + + + C ( ( ( 1 - P "\r" ) ^ 1 * "\r" - ( P " " ^ 0 * "\r" ) ) ^ 1 ) + ) ^ 0 + ) + ) : match ( gobble ( n , code ) ) + sprintL3 [[ \begingroup ]] + sprintL3 + ( + [[ \PitonOptions { split-on-empty-lines = false, gobble = 0, ]] + .. "language = " .. lang .. "," + .. "splittable = " .. splittable .. "}" + ) + for k , v in pairs ( chunks ) do + if k > 1 then + sprintL3 [[ \l_@@_split_separation_tl ]] + end + tex.sprint + ( + [[\begin{]] .. piton.env_used_by_split .. "}\r" + .. v + .. [[\end{]] .. piton.env_used_by_split .. "}" + ) + end + sprintL3 [[ \endgroup ]] +end % \end{macrocode} -% The second argument of |.pitonGobbleParse| is the argument |gobble|: we put -% that argument to~$0$ because we will have gobbled previously the whole argument -% |code| (see below). +% +% \bigskip % \begin{macrocode} - / ( function ( x ) piton.GobbleParse ( lang , 0 , x ) end ) , +function piton.RetrieveGobbleSplitParse ( lang , n , splittable , code ) + local s + s = ( ( P " " ^ 0 * "\r" ) ^ -1 * C ( P ( 1 ) ^ 0 ) * -1 ) : match ( code ) + piton.GobbleSplitParse ( lang , n , splittable , s ) +end % \end{macrocode} -% The non-terminal |G| corresponds to a non-empty line of code. +% +% \bigskip +% The following Lua string will be inserted between the chunks of code created +% when the key |split-on-empty-lines| is in force. It's used only once: you have +% given a name to that Lua string only for legibily. The token list +% |\l_@@_split_separation_tl| corresponds to the key |split-separation|. That +% token list must contain elements inserted in \emph{vertical mode} of TeX. % \begin{macrocode} - G = ( 1 - P "\r" ) ^ 0 * "\r" - ( P " " ^ 0 * "\r" ) - } : match ( gobble ( n , code ) ) -end +piton.string_between_chunks = + [[ \par \l_@@_split_separation_tl \mode_leave_vertical: ]] + .. [[ \int_gzero:N \g_@@_line_int ]] % \end{macrocode} -% +% The counter |\g_@@_line_int| will be used to control the points where the code +% may be broken by a change of page (see the key |splittable|). % % \bigskip % The following public Lua function is provided to the developer. @@ -7669,17 +8498,27 @@ end % % % \bigskip +% % \subsubsection{To count the number of lines} % -% \medskip % \begin{macrocode} function piton.CountLines ( code ) - local count = 0 - for i in code : gmatch ( "\r" ) do count = count + 1 end - sprintL3 ( [[ \int_set:Nn \l_@@_nb_lines_int { ]] .. count .. '}' ) + local count = 0 + count = + ( Ct ( ( ( 1 - P "\r" ) ^ 0 * C "\r" ) ^ 0 + * ( ( 1 - P "\r" ) ^ 1 * Cc "\r" ) ^ -1 + * -1 + ) / table.getn + ) : match ( code ) + sprintL3 ( string.format ( [[ \int_set:Nn \l_@@_nb_lines_int { %i } ]] , count ) ) end % \end{macrocode} % +% \bigskip +% The following function is only used once (in |piton.GobbleParse|). We have +% written an autonomous function only for legibility. The number of lines of the +% code will be stored in |\l_@@_nb_non_empty_lines_int|. It will be used to +% compute the largest number of lines to write (when |line-numbers| is in force). % \begin{macrocode} function piton.CountNonEmptyLines ( code ) local count = 0 @@ -7690,7 +8529,8 @@ function piton.CountNonEmptyLines ( code ) * -1 ) / table.getn ) : match ( code ) - sprintL3 ( [[ \int_set:Nn \l_@@_nb_non_empty_lines_int { ]] .. count .. '}' ) + sprintL3 + ( string.format ( [[ \int_set:Nn \l_@@_nb_non_empty_lines_int { %i } ]] , count ) ) end % \end{macrocode} % @@ -7699,7 +8539,8 @@ end function piton.CountLinesFile ( name ) local count = 0 for line in io.lines ( name ) do count = count + 1 end - sprintL3 ( [[ \int_set:Nn \l_@@_nb_lines_int { ]] .. count .. '}' ) + sprintL3 + ( string.format ( [[ \int_set:Nn \l_@@_nb_lines_int { %i } ]], count ) ) end % \end{macrocode} % @@ -7708,12 +8549,13 @@ end % \begin{macrocode} function piton.CountNonEmptyLinesFile ( name ) local count = 0 - for line in io.lines ( name ) - do if not ( ( P " " ^ 0 * -1 ) : match ( line ) ) then + for line in io.lines ( name ) do + if not ( ( P " " ^ 0 * -1 ) : match ( line ) ) then count = count + 1 - end + end end - sprintL3 ( [[ \int_set:Nn \l_@@_nb_non_empty_lines_int { ]] .. count .. '}' ) + sprintL3 + ( string.format ( [[ \int_set:Nn \l_@@_nb_non_empty_lines_int { % i } ]] , count ) ) end % \end{macrocode} % @@ -7729,23 +8571,25 @@ function piton.ComputeRange(marker_beginning,marker_end,file_name) local first_line = -1 local count = 0 local last_found = false - for line in io.lines ( file_name ) - do if first_line == -1 - then if string.sub ( line , 1 , #s ) == s - then first_line = count - end - else if string.sub ( line , 1 , #t ) == t - then last_found = true - break - end - end - count = count + 1 + for line in io.lines ( file_name ) do + if first_line == -1 then + if string.sub ( line , 1 , #s ) == s then + first_line = count + end + else + if string.sub ( line , 1 , #t ) == t then + last_found = true + break + end + end + count = count + 1 end - if first_line == -1 - then sprintL3 [[ \@@_error_or_warning:n { begin~marker~not~found } ]] - else if last_found == false - then sprintL3 [[ \@@_error_or_warning:n { end~marker~not~found } ]] - end + if first_line == -1 then + sprintL3 [[ \@@_error_or_warning:n { begin~marker~not~found } ]] + else + if last_found == false then + sprintL3 [[ \@@_error_or_warning:n { end~marker~not~found } ]] + end end sprintL3 ( [[ \int_set:Nn \l_@@_first_line_int { ]] .. first_line .. ' + 2 }' @@ -7754,6 +8598,143 @@ end % \end{macrocode} % % \bigskip +% \subsubsection{To determine the empty lines of the listings} +% +% Despite its name, the Lua function |ComputeLinesStatus| computes +% |piton.lines_status| but also |piton.empty_lines|. +% +% \medskip +% In |piton.empty_lines|, a line will have the number 0 if it's a empty line (in +% fact a blank line, with only spaces) and 1 elsewhere. +% +% \medskip +% In |piton.lines_status|, each line will have a status with regard the +% breaking points allowed (for the changes of pages). +% \begin{itemize} +% \item 0 if the line is empty and a page break is allowed; +% \item 1 if the line is not empty but a page break is allowed after that line; +% \item 2 if a page break is \emph{not} allowed after that line (empty or not empty). +% \end{itemize} +% +% \medskip +% |splittable| is the value of |\l_@@_splittable_int|. +% However, if |splittable-on-empty-lines| is in force, |splittable| is the +% opposite of |\l_@@_splittable_int|. +% \begin{macrocode} +function piton.ComputeLinesStatus ( code , splittable ) +% \end{macrocode} +% The lines in the listings which correspond to the beginning or the end of an +% environment of Beamer (eg. |\begin{uncoverenv}|) must be retrieved (those +% lines have \emph{no} number and therefore, \emph{no} status). +% \begin{macrocode} + local lpeg_line_beamer + if piton.beamer then + lpeg_line_beamer = + space ^ 0 + * P [[\begin{]] * piton.BeamerEnvironments * "}" + * ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1 + + + space ^ 0 + * P [[\end{]] * piton.BeamerEnvironments * "}" + else + lpeg_line_beamer = P ( false ) + end +% \end{macrocode} +% \begin{macrocode} + local lpeg_empty_lines = + Ct ( + ( lpeg_line_beamer * "\r" + + + P " " ^ 0 * "\r" * Cc ( 0 ) + + + ( 1 - P "\r" ) ^ 0 * "\r" * Cc ( 1 ) + ) ^ 0 + * + ( lpeg_line_beamer + ( 1 - P "\r" ) ^ 1 * Cc ( 1 ) ) ^ -1 + ) + * -1 +% \end{macrocode} +% \begin{macrocode} + local lpeg_all_lines = + Ct ( + ( lpeg_line_beamer * "\r" + + + ( 1 - P "\r" ) ^ 0 * "\r" * Cc ( 1 ) + ) ^ 0 + * + ( lpeg_line_beamer + ( 1 - P "\r" ) ^ 1 * Cc ( 1 ) ) ^ -1 + ) + * -1 +% \end{macrocode} +% We begin with the computation of |piton.empty_lines|. It will be used in +% conjonction with |line-numbers|. +% \begin{macrocode} + piton.empty_lines = lpeg_empty_lines : match ( code ) +% \end{macrocode} +% +% Now, we compute |piton.lines_status|. It will be used in conjonction with +% |splittable| and |splittable-on-empty-lines|. +% +% Now, we will take into account the current value of |\l_@@_splittable_int| +% (provided by the \emph{absolute value} of the argument |splittable|). +% \begin{macrocode} + local lines_status + local s = splittable + if splittable < 0 then s = - splittable end +% \end{macrocode} +% +% \begin{macrocode} + if splittable > 0 then + lines_status = lpeg_all_lines : match ( code ) + else +% \end{macrocode} +% Here, we should try to copy |piton.empty_lines| but it's not easy. +% \begin{macrocode} + lines_status = lpeg_empty_lines : match ( code ) + for i , x in ipairs ( lines_status ) do + if x == 0 then + for j = 1 , s - 1 do + if i + j > #lines_status then break end + if lines_status[i+j] == 0 then break end + lines_status[i+j] = 2 + end + for j = 1 , s - 1 do + if i - j == 1 then break end + if lines_status[i-j-1] == 0 then break end + lines_status[i-j-1] = 2 + end + end + end + end +% \end{macrocode} +% +% In all cases (whatever is the value of |splittable-on-empty-lines|) we have to +% deal with both extremities of the listing to format. +% +% First from the beginning of the code. +% \begin{macrocode} + for j = 1 , s - 1 do + if j > #lines_status then break end + if lines_status[j] == 0 then break end + lines_status[j] = 2 + end +% \end{macrocode} +% Now, from the end of the code. +% \begin{macrocode} + for j = 1 , s - 1 do + if #lines_status - j == 0 then break end + if lines_status[#lines_status - j] == 0 then break end + lines_status[#lines_status - j] = 2 + end +% \end{macrocode} +% +% \bigskip +% \begin{macrocode} + piton.lines_status = lines_status +end +% \end{macrocode} +% +% \bigskip % \subsubsection{To create new languages with the syntax of listings} % % \begin{macrocode} @@ -7775,14 +8756,14 @@ function piton.new_language ( lang , definition ) % a key |alsoother|. % \begin{macrocode} function add_to_letter ( c ) - if c ~= " " then table.insert ( extra_letters , c ) end + if c ~= " " then table.insert ( extra_letters , c ) end end % \end{macrocode} % % For the digits, it's straitforward. % \begin{macrocode} function add_to_digit ( c ) - if c ~= " " then digit = digit + c end + if c ~= " " then digit = digit + c end end % \end{macrocode} % @@ -7802,46 +8783,44 @@ function piton.new_language ( lang , definition ) % % \begin{macrocode} function add_to_other ( c ) - if c ~= " " then + if c ~= " " then % \end{macrocode} % We will use |extra_others| to retrieve further these characters from the list % of the letters. % \begin{macrocode} - extra_others[c] = true + extra_others[c] = true % \end{macrocode} % The \textsc{lpeg} pattern |other| will be used in conjunction with the key % |tag| (mainly for the language \textsc{html}) for the character |/| in the % closing tags |</....>|). % \begin{macrocode} - other = other + P "c" - end + other = other + P ( c ) + end end % \end{macrocode} % -% \bigskip -% Of course, the \textsc{lpeg} |strict_braces| is for balanced braces (without the -% question of strings of an informatic language). In fact, it \emph{won't} be -% used for an informatic language (as dealt by \pkg{piton}) but for LaTeX -% instructions; -% \begin{macrocode} - local strict_braces = - P { "E" , - E = ( "{" * V "F" * "}" + ( 1 - S ",{}" ) ) ^ 0 , - F = ( "{" * V "F" * "}" + ( 1 - S "{}" ) ) ^ 0 - } -% \end{macrocode} % % \bigskip % Now, the first transformation of the definition of the language, as provided % by the final user in the argument |definition| of |piton.new_language|. % \begin{macrocode} - local cut_definition = - P { "E" , - E = Ct ( V "F" * ( "," * V "F" ) ^ 0 ) , - F = Ct ( space ^ 0 * C ( alpha ^ 1 ) * space ^ 0 - * ( "=" * space ^ 0 * C ( strict_braces ) ) ^ -1 ) - } - local def_table = cut_definition : match ( definition ) + local def_table + if ( S ", " ^ 0 * -1 ) : match ( definition ) then + def_table = {} + else + local strict_braces = + P { "E" , + E = ( "{" * V "F" * "}" + ( 1 - S ",{}" ) ) ^ 0 , + F = ( "{" * V "F" * "}" + ( 1 - S "{}" ) ) ^ 0 + } + local cut_definition = + P { "E" , + E = Ct ( V "F" * ( "," * V "F" ) ^ 0 ) , + F = Ct ( space ^ 0 * C ( alpha ^ 1 ) * space ^ 0 + * ( "=" * space ^ 0 * C ( strict_braces ) ) ^ -1 ) + } + def_table = cut_definition : match ( definition ) + end % \end{macrocode} % The definition of the language, provided by the final user of \pkg{piton} is % now in the Lua table |def_table|. We will use it \emph{several times}. @@ -7945,7 +8924,7 @@ function piton.new_language ( lang , definition ) % \begin{macrocode} local alphanum = letter + digit local identifier = letter * alphanum ^ 0 - local Identifier = K ( 'Identifier' , identifier ) + local Identifier = K ( 'Identifier.Internal' , identifier ) % \end{macrocode} % % @@ -7968,11 +8947,13 @@ function piton.new_language ( lang , definition ) % \end{macrocode} % The following function will be used if the keywords are not case-sensitive. % \begin{macrocode} - local function keyword_to_lpeg ( name ) - return + local keyword_to_lpeg + function keyword_to_lpeg ( name ) return Q ( Cmt ( C ( identifier ) , - function(s,i,a) return string.upper(a) == string.upper(name) end + function ( s , i , a ) return + string.upper ( a ) == string.upper ( name ) + end ) ) end @@ -7991,7 +8972,7 @@ function piton.new_language ( lang , definition ) % \end{macrocode} % \begin{macrocode} local style = [[\PitonStyle{Keyword}]] - if x[1] == "moredirectives" then style = [[ \PitonStyle{Directive} ]] end + if x[1] == "moredirectives" then style = [[\PitonStyle{Directive}]] end style = tex_option_arg : match ( x[2] ) or style local n = tonumber ( style ) if n then @@ -8023,7 +9004,8 @@ function piton.new_language ( lang , definition ) % languages TeX, LaTeX, et \emph{al}. In that case, there is two kinds of % keywords (= control sequences). % \begin{itemize} -% \item those beginning with |\| and a sequence of characters of catcode ``|letter|''; +% \item those beginning with |\| and a sequence of characters of catcode +% ``|letter|''; % \item those beginning by |\| followed by one character of catcode ``|other|''. % \end{itemize} % The following code addresses both cases. Of course, the \textsc{lpeg} pattern @@ -8046,6 +9028,7 @@ function piton.new_language ( lang , definition ) % the strings. % \begin{macrocode} local long_string = P ( false ) + local Long_string = P ( false ) local LongString = P (false ) local central_pattern = P ( false ) for _ , x in ipairs ( def_table ) do @@ -8068,30 +9051,40 @@ function piton.new_language ( lang , definition ) central_pattern = P ( arg3 .. arg3 ) + central_pattern end if arg1 == "m" - then prefix = lpeg.B ( 1 - letter - ")" - "]" ) + then prefix = B ( 1 - letter - ")" - "]" ) else prefix = P ( true ) end % \end{macrocode} -% We can write the pattern which matches the string. +% First, a pattern \emph{without captures} (needed to compute |braces|). +% \begin{macrocode} + long_string = long_string + + prefix + * arg3 + * ( space + central_pattern ) ^ 0 + * arg4 +% \end{macrocode} +% Now a pattern \emph{with captures}. % \begin{macrocode} local pattern = prefix * Q ( arg3 ) - * ( VisualSpace + Q ( central_pattern ^ 1 ) + EOL ) ^ 0 + * ( SpaceInString + Q ( central_pattern ^ 1 ) + EOL ) ^ 0 * Q ( arg4 ) % \end{macrocode} -% First, we create |long_string| because we need that \textsc{lpeg} in the -% nested comments. +% We will need |Long_string| in the nested comments. % \begin{macrocode} - long_string = long_string + pattern + Long_string = Long_string + pattern LongString = LongString + Ct ( Cc "Open" * Cc ( "{" .. arg2 .. "{" ) * Cc "}}" ) * pattern * Ct ( Cc "Close" ) end end - - local braces = Compute_braces ( String ) +% \end{macrocode} +% The argument of |Compute_braces| must be a pattern \emph{which does no +% catching} corresponding to the strings of the language. +% \begin{macrocode} + local braces = Compute_braces ( long_string ) if piton.beamer then Beamer = Compute_Beamer ( lang , braces ) end DetectedCommands = Compute_DetectedCommands ( lang , braces ) @@ -8120,7 +9113,7 @@ function piton.new_language ( lang , definition ) CommentDelim = CommentDelim + Ct ( Cc "Open" * Cc ( "{" .. arg2 .. "{" ) * Cc "}}" ) - * Q ( arg3 ) + * Q ( arg3 ) * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $ * Ct ( Cc "Close" ) * ( EOL + -1 ) @@ -8168,7 +9161,11 @@ function piton.new_language ( lang , definition ) = args_for_moredelims : match ( x[2] ) local MyFun = Q if arg1 == "*" or arg1 == "**" then - MyFun = function ( x ) return K ( 'ParseAgain.noCR' , x ) end + function MyFun ( x ) + if x ~= '' then return + LPEG1[lang] : match ( x ) + end + end end local left_delim if arg2 : match "i" then @@ -8208,11 +9205,7 @@ function piton.new_language ( lang , definition ) % % \begin{macrocode} local Main = - space ^ 1 * -1 -% \end{macrocode} -% The spaces at the end of the lines are discarded. -% \begin{macrocode} - + space ^ 0 * EOL + space ^ 0 * EOL + Space + Tab + Escape + EscapeMath @@ -8229,13 +9222,15 @@ function piton.new_language ( lang , definition ) + PrefixedKeyword + Keyword * ( -1 + # ( 1 - alphanum ) ) + Punct - + K ( 'Identifier' , letter * alphanum ^ 0 ) + + K ( 'Identifier.Internal' , letter * alphanum ^ 0 ) + Number + Word % \end{macrocode} % % The \textsc{lpeg} |LPEG1[lang]| is used to reformat small elements, for % example the arguments of the ``detected commands''. +% +% Of course, here, we must not put |local|, of course. % \begin{macrocode} LPEG1[lang] = Main ^ 0 % \end{macrocode} @@ -8247,15 +9242,16 @@ function piton.new_language ( lang , definition ) Ct ( ( space ^ 0 * P "\r" ) ^ -1 * BeamerBeginEnvironments - * Lc [[\@@_begin_line:]] + * Lc [[ \@@_begin_line: ]] * SpaceIndentation ^ 0 - * LPEG1[lang] + * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0 * -1 - * Lc [[\@@_end_line:]] + * Lc [[ \@@_end_line: ]] ) % \end{macrocode} % -% If the key |tag| has been used. Of course, this feature is designed for the \textsc{html}. +% If the key |tag| has been used. Of course, this feature is designed for the +% \textsc{html}. % \begin{macrocode} if left_tag then local Tag = Ct ( Cc "Open" * Cc ( "{" .. style_tag .. "{" ) * Cc "}}" ) @@ -8279,7 +9275,7 @@ function piton.new_language ( lang , definition ) + PrefixedKeyword + Keyword * ( -1 + # ( 1 - alphanum ) ) + Punct - + K ( 'Identifier' , letter * alphanum ^ 0 ) + + K ( 'Identifier.Internal' , letter * alphanum ^ 0 ) + Number + Word LPEG0[lang] = MainWithoutTag ^ 0 @@ -8296,11 +9292,11 @@ function piton.new_language ( lang , definition ) Ct ( ( space ^ 0 * P "\r" ) ^ -1 * BeamerBeginEnvironments - * Lc [[\@@_begin_line:]] + * Lc [[ \@@_begin_line: ]] * SpaceIndentation ^ 0 * LPEG1[lang] * -1 - * Lc [[\@@_end_line:]] + * Lc [[ \@@_end_line: ]] ) end end @@ -8327,6 +9323,28 @@ end % % \verb|https://github.com/fpantigny/piton| % +% \subsection*{Changes between versions 4.0 and 4.1} +% +% New language |verbatim|. +% +% New key |break-strings-anywhere|. +% +% \subsection*{Changes between versions 3.1 and 4.0} +% +% This version introduces an incompatibility: the syntax for the relative and +% absolute paths in |\PitonInputFile| and the key |path| has been changed to be +% conform to usual conventions. An temporary key |old-PitonInputFile|, available +% at load-time, has been added for backward compatibility. +% +% New keys |font-command|, |splittable-on-empty-lines| and |env-used-by-split|. +% +% +% \subsection*{Changes between versions 3.0 and 3.1} +% +% Keys |line-numbers/format|, |detected-beamer-commands| and +% |detected-beamer-environments|. +% +% % \subsection*{Changes between versions 2.8 and 3.0} % % New command |\NewPitonLanguage|. Thanks to that command, it's now possible to @@ -8396,61 +9414,6 @@ end % The key |escape-inside| is deprecated: use |begin-escape| and |end-escape|. % % -% \subsection*{Changes between versions 1.6 and 2.0} -% -% The extension \pkg{piton} now supports the computer languages OCaml and C -% (and, of course, Python). -% -% \subsection*{Changes between versions 1.5 and 1.6} -% -% New key |width| (for the total width of the listing). -% -% New style |UserFunction| to format the names of the Python functions -% previously defined by the user. Command |\PitonClearUserFunctions| to clear -% the list of such functions names. -% -% \subsection*{Changes between versions 1.4 and 1.5} -% -% New key |numbers-sep|. -% -% -% \subsection*{Changes between versions 1.3 and 1.4} -% -% New key |identifiers| in |\PitonOptions|. -% -% New command |\PitonStyle|. -% -% |background-color| now accepts as value a \emph{list} of colors. -% -% \subsection*{Changes between versions 1.2 and 1.3} -% -% When the class Beamer is used, the environment |{Piton}| and the command -% |\PitonInputFile| are ``overlay-aware'' (that is to say, they accept a -% specification of overlays between angular brackets). -% -% New key |prompt-background-color| -% -% It's now possible to use the command |\label| to reference a line of code in -% an environment |{Piton}|. -% -% A new command |\|␣ is available in the argument of the command |\piton{...}| to -% insert a space (otherwise, several spaces are replaced by a single space). -% -% \subsection*{Changes between versions 1.1 and 1.2} -% -% New keys |break-lines-in-piton| and |break-lines-in-Piton|. -% -% New key |show-spaces-in-string| and modification of the key |show-spaces|. -% -% When the class \cls{beamer} is used, the environments |{uncoverenv}|, -% |{onlyenv}|, |{visibleenv}| and |{invisibleenv}| -% -% -% \subsection*{Changes between versions 1.0 and 1.1} -% -% The extension \pkg{piton} detects the class \cls{beamer} and activates the -% commands |\action|, |\alert|, |\invisible|, |\only|, |\uncover| and |\visible| -% in the environments |{Piton}| when the class \cls{beamer} is used. % % \tableofcontents % diff --git a/macros/luatex/latex/piton/piton.pdf b/macros/luatex/latex/piton/piton.pdf index 537202a41c..eb6718e534 100644 --- a/macros/luatex/latex/piton/piton.pdf +++ b/macros/luatex/latex/piton/piton.pdf @@ -116,182 +116,182 @@ endobj << /S /GoTo /D (subsection.0.6.1) >> endobj 71 0 obj -(\376\377\0006\000.\0001\000\040\000P\000a\000g\000e\000\040\000b\000r\000e\000a\000k\000s\000\040\000a\000n\000d\000\040\000l\000i\000n\000e\000\040\000b\000r\000e\000a\000k\000s) +(\376\377\0006\000.\0001\000\040\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000o\000f\000\040\000a\000\040\000f\000i\000l\000e) endobj 72 0 obj << /S /GoTo /D (subsubsection.0.6.1.1) >> endobj 75 0 obj -(\376\377\0006\000.\0001\000.\0001\000\040\000P\000a\000g\000e\000\040\000b\000r\000e\000a\000k\000s) +(\376\377\0006\000.\0001\000.\0001\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 76 0 obj << /S /GoTo /D (subsubsection.0.6.1.2) >> endobj 79 0 obj -(\376\377\0006\000.\0001\000.\0002\000\040\000L\000i\000n\000e\000\040\000b\000r\000e\000a\000k\000s) +(\376\377\0006\000.\0001\000.\0002\000\040\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000o\000f\000\040\000a\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000a\000\040\000f\000i\000l\000e) endobj 80 0 obj << /S /GoTo /D (subsection.0.6.2) >> endobj 83 0 obj -(\376\377\0006\000.\0002\000\040\000I\000n\000s\000e\000r\000t\000i\000o\000n\000\040\000o\000f\000\040\000a\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000a\000\040\000f\000i\000l\000e) +(\376\377\0006\000.\0002\000\040\000P\000a\000g\000e\000\040\000b\000r\000e\000a\000k\000s\000\040\000a\000n\000d\000\040\000l\000i\000n\000e\000\040\000b\000r\000e\000a\000k\000s) endobj 84 0 obj << /S /GoTo /D (subsubsection.0.6.2.1) >> endobj 87 0 obj -(\376\377\0006\000.\0002\000.\0001\000\040\000W\000i\000t\000h\000\040\000l\000i\000n\000e\000\040\000n\000u\000m\000b\000e\000r\000s) +(\376\377\0006\000.\0002\000.\0001\000\040\000L\000i\000n\000e\000\040\000b\000r\000e\000a\000k\000s) endobj 88 0 obj << /S /GoTo /D (subsubsection.0.6.2.2) >> endobj 91 0 obj -(\376\377\0006\000.\0002\000.\0002\000\040\000W\000i\000t\000h\000\040\000t\000e\000x\000t\000u\000a\000l\000\040\000m\000a\000r\000k\000e\000r\000s) +(\376\377\0006\000.\0002\000.\0002\000\040\000P\000a\000g\000e\000\040\000b\000r\000e\000a\000k\000s) endobj 92 0 obj << /S /GoTo /D (subsection.0.6.3) >> endobj 95 0 obj -(\376\377\0006\000.\0003\000\040\000H\000i\000g\000h\000l\000i\000g\000h\000t\000i\000n\000g\000\040\000s\000o\000m\000e\000\040\000i\000d\000e\000n\000t\000i\000f\000i\000e\000r\000s) +(\376\377\0006\000.\0003\000\040\000S\000p\000l\000i\000t\000t\000i\000n\000g\000\040\000o\000f\000\040\000a\000\040\000l\000i\000s\000t\000i\000n\000g\000\040\000i\000n\000\040\000s\000u\000b\000-\000l\000i\000s\000t\000i\000n\000g\000s) endobj 96 0 obj << /S /GoTo /D (subsection.0.6.4) >> endobj 99 0 obj -(\376\377\0006\000.\0004\000\040\000M\000e\000c\000h\000a\000n\000i\000s\000m\000s\000\040\000t\000o\000\040\000e\000s\000c\000a\000p\000e\000\040\000t\000o\000\040\000L\000a\000T\000e\000X) +(\376\377\0006\000.\0004\000\040\000H\000i\000g\000h\000l\000i\000g\000h\000t\000i\000n\000g\000\040\000s\000o\000m\000e\000\040\000i\000d\000e\000n\000t\000i\000f\000i\000e\000r\000s) endobj 100 0 obj -<< /S /GoTo /D (subsubsection.0.6.4.1) >> +<< /S /GoTo /D (subsection.0.6.5) >> endobj 103 0 obj -(\376\377\0006\000.\0004\000.\0001\000\040\000T\000h\000e\000\040\000`\000`\000L\000a\000T\000e\000X\000\040\000c\000o\000m\000m\000e\000n\000t\000s\000'\000') +(\376\377\0006\000.\0005\000\040\000M\000e\000c\000h\000a\000n\000i\000s\000m\000s\000\040\000t\000o\000\040\000e\000s\000c\000a\000p\000e\000\040\000t\000o\000\040\000L\000a\000T\000e\000X) endobj 104 0 obj -<< /S /GoTo /D (subsubsection.0.6.4.2) >> +<< /S /GoTo /D (subsubsection.0.6.5.1) >> endobj 107 0 obj -(\376\377\0006\000.\0004\000.\0002\000\040\000T\000h\000e\000\040\000k\000e\000y\000\040\000`\000`\000m\000a\000t\000h\000-\000c\000o\000m\000m\000e\000n\000t\000s\000'\000') +(\376\377\0006\000.\0005\000.\0001\000\040\000T\000h\000e\000\040\000`\000`\000L\000a\000T\000e\000X\000\040\000c\000o\000m\000m\000e\000n\000t\000s\000'\000') endobj 108 0 obj -<< /S /GoTo /D (subsubsection.0.6.4.3) >> +<< /S /GoTo /D (subsubsection.0.6.5.2) >> endobj 111 0 obj -(\376\377\0006\000.\0004\000.\0003\000\040\000T\000h\000e\000\040\000k\000e\000y\000\040\000`\000`\000d\000e\000t\000e\000c\000t\000e\000d\000-\000c\000o\000m\000m\000a\000n\000d\000s\000'\000') +(\376\377\0006\000.\0005\000.\0002\000\040\000T\000h\000e\000\040\000k\000e\000y\000\040\000`\000`\000m\000a\000t\000h\000-\000c\000o\000m\000m\000e\000n\000t\000s\000'\000') endobj 112 0 obj -<< /S /GoTo /D (subsubsection.0.6.4.4) >> +<< /S /GoTo /D (subsubsection.0.6.5.3) >> endobj 115 0 obj -(\376\377\0006\000.\0004\000.\0004\000\040\000T\000h\000e\000\040\000m\000e\000c\000h\000a\000n\000i\000s\000m\000\040\000`\000`\000e\000s\000c\000a\000p\000e\000'\000') +(\376\377\0006\000.\0005\000.\0003\000\040\000T\000h\000e\000\040\000k\000e\000y\000\040\000`\000`\000d\000e\000t\000e\000c\000t\000e\000d\000-\000c\000o\000m\000m\000a\000n\000d\000s\000'\000') endobj 116 0 obj -<< /S /GoTo /D (subsubsection.0.6.4.5) >> +<< /S /GoTo /D (subsubsection.0.6.5.4) >> endobj 119 0 obj -(\376\377\0006\000.\0004\000.\0005\000\040\000T\000h\000e\000\040\000m\000e\000c\000h\000a\000n\000i\000s\000m\000\040\000`\000`\000e\000s\000c\000a\000p\000e\000-\000m\000a\000t\000h\000'\000') +(\376\377\0006\000.\0005\000.\0004\000\040\000T\000h\000e\000\040\000m\000e\000c\000h\000a\000n\000i\000s\000m\000\040\000`\000`\000e\000s\000c\000a\000p\000e\000'\000') endobj 120 0 obj -<< /S /GoTo /D (subsection.0.6.5) >> +<< /S /GoTo /D (subsubsection.0.6.5.5) >> endobj 123 0 obj -(\376\377\0006\000.\0005\000\040\000B\000e\000h\000a\000v\000i\000o\000u\000r\000\040\000i\000n\000\040\000t\000h\000e\000\040\000c\000l\000a\000s\000s\000\040\000B\000e\000a\000m\000e\000r) +(\376\377\0006\000.\0005\000.\0005\000\040\000T\000h\000e\000\040\000m\000e\000c\000h\000a\000n\000i\000s\000m\000\040\000`\000`\000e\000s\000c\000a\000p\000e\000-\000m\000a\000t\000h\000'\000') endobj 124 0 obj -<< /S /GoTo /D (subsubsection.0.6.5.1) >> +<< /S /GoTo /D (subsection.0.6.6) >> endobj 127 0 obj -(\376\377\0006\000.\0005\000.\0001\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e\000\040\000a\000r\000e\000\040\000`\000`\000o\000v\000e\000r\000l\000a\000y\000-\000a\000w\000a\000r\000e\000'\000') +(\376\377\0006\000.\0006\000\040\000B\000e\000h\000a\000v\000i\000o\000u\000r\000\040\000i\000n\000\040\000t\000h\000e\000\040\000c\000l\000a\000s\000s\000\040\000B\000e\000a\000m\000e\000r) endobj 128 0 obj -<< /S /GoTo /D (subsubsection.0.6.5.2) >> +<< /S /GoTo /D (subsubsection.0.6.6.1) >> endobj 131 0 obj -(\376\377\0006\000.\0005\000.\0002\000\040\000C\000o\000m\000m\000a\000n\000d\000s\000\040\000o\000f\000\040\000B\000e\000a\000m\000e\000r\000\040\000a\000l\000l\000o\000w\000e\000d\000\040\000i\000n\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000a\000n\000d\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) +(\376\377\0006\000.\0006\000.\0001\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000e\000t\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e\000\040\000a\000r\000e\000\040\000`\000`\000o\000v\000e\000r\000l\000a\000y\000-\000a\000w\000a\000r\000e\000'\000') endobj 132 0 obj -<< /S /GoTo /D (subsubsection.0.6.5.3) >> +<< /S /GoTo /D (subsubsection.0.6.6.2) >> endobj 135 0 obj -(\376\377\0006\000.\0005\000.\0003\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000o\000f\000\040\000B\000e\000a\000m\000e\000r\000\040\000a\000l\000l\000o\000w\000e\000d\000\040\000i\000n\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000a\000n\000d\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) +(\376\377\0006\000.\0006\000.\0002\000\040\000C\000o\000m\000m\000a\000n\000d\000s\000\040\000o\000f\000\040\000B\000e\000a\000m\000e\000r\000\040\000a\000l\000l\000o\000w\000e\000d\000\040\000i\000n\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000a\000n\000d\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 136 0 obj -<< /S /GoTo /D (subsection.0.6.6) >> +<< /S /GoTo /D (subsubsection.0.6.6.3) >> endobj 139 0 obj -(\376\377\0006\000.\0006\000\040\000F\000o\000o\000t\000n\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000o\000f\000\040\000p\000i\000t\000o\000n) +(\376\377\0006\000.\0006\000.\0003\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000o\000f\000\040\000B\000e\000a\000m\000e\000r\000\040\000a\000l\000l\000o\000w\000e\000d\000\040\000i\000n\000\040\000\173\000P\000i\000t\000o\000n\000\175\000\040\000a\000n\000d\000\040\000\134\000P\000i\000t\000o\000n\000I\000n\000p\000u\000t\000F\000i\000l\000e) endobj 140 0 obj << /S /GoTo /D (subsection.0.6.7) >> endobj 143 0 obj -(\376\377\0006\000.\0007\000\040\000T\000a\000b\000u\000l\000a\000t\000i\000o\000n\000s) +(\376\377\0006\000.\0007\000\040\000F\000o\000o\000t\000n\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000o\000f\000\040\000p\000i\000t\000o\000n) endobj 144 0 obj -<< /S /GoTo /D (section.0.7) >> +<< /S /GoTo /D (subsection.0.6.8) >> endobj 147 0 obj -(\376\377\0007\000\040\000A\000P\000I\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000d\000e\000v\000e\000l\000o\000p\000p\000e\000r\000s) +(\376\377\0006\000.\0008\000\040\000T\000a\000b\000u\000l\000a\000t\000i\000o\000n\000s) endobj 148 0 obj -<< /S /GoTo /D (section.0.8) >> +<< /S /GoTo /D (section.0.7) >> endobj 151 0 obj -(\376\377\0008\000\040\000E\000x\000a\000m\000p\000l\000e\000s) +(\376\377\0007\000\040\000A\000P\000I\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000d\000e\000v\000e\000l\000o\000p\000p\000e\000r\000s) endobj 152 0 obj -<< /S /GoTo /D (subsection.0.8.1) >> +<< /S /GoTo /D (section.0.8) >> endobj 155 0 obj -(\376\377\0008\000.\0001\000\040\000L\000i\000n\000e\000\040\000n\000u\000m\000b\000e\000r\000i\000n\000g) +(\376\377\0008\000\040\000E\000x\000a\000m\000p\000l\000e\000s) endobj 156 0 obj -<< /S /GoTo /D (subsection.0.8.2) >> +<< /S /GoTo /D (subsection.0.8.1) >> endobj 159 0 obj -(\376\377\0008\000.\0002\000\040\000F\000o\000r\000m\000a\000t\000t\000i\000n\000g\000\040\000o\000f\000\040\000t\000h\000e\000\040\000L\000a\000T\000e\000X\000\040\000c\000o\000m\000m\000e\000n\000t\000s) +(\376\377\0008\000.\0001\000\040\000L\000i\000n\000e\000\040\000n\000u\000m\000b\000e\000r\000i\000n\000g) endobj 160 0 obj -<< /S /GoTo /D (subsection.0.8.3) >> +<< /S /GoTo /D (subsection.0.8.2) >> endobj 163 0 obj -(\376\377\0008\000.\0003\000\040\000N\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000l\000i\000s\000t\000i\000n\000g\000s) +(\376\377\0008\000.\0002\000\040\000F\000o\000r\000m\000a\000t\000t\000i\000n\000g\000\040\000o\000f\000\040\000t\000h\000e\000\040\000L\000a\000T\000e\000X\000\040\000c\000o\000m\000m\000e\000n\000t\000s) endobj 164 0 obj -<< /S /GoTo /D (subsection.0.8.4) >> +<< /S /GoTo /D (subsection.0.8.3) >> endobj 167 0 obj -(\376\377\0008\000.\0004\000\040\000A\000n\000\040\000e\000x\000a\000m\000p\000l\000e\000\040\000o\000f\000\040\000t\000u\000n\000i\000n\000g\000\040\000o\000f\000\040\000t\000h\000e\000\040\000s\000t\000y\000l\000e\000s) +(\376\377\0008\000.\0003\000\040\000A\000n\000\040\000e\000x\000a\000m\000p\000l\000e\000\040\000o\000f\000\040\000t\000u\000n\000i\000n\000g\000\040\000o\000f\000\040\000t\000h\000e\000\040\000s\000t\000y\000l\000e\000s) endobj 168 0 obj -<< /S /GoTo /D (subsection.0.8.5) >> +<< /S /GoTo /D (subsection.0.8.4) >> endobj 171 0 obj -(\376\377\0008\000.\0005\000\040\000U\000s\000e\000\040\000w\000i\000t\000h\000\040\000p\000y\000l\000u\000a\000t\000e\000x) +(\376\377\0008\000.\0004\000\040\000U\000s\000e\000\040\000w\000i\000t\000h\000\040\000p\000y\000l\000u\000a\000t\000e\000x) endobj 172 0 obj @@ -333,13949 +333,14945 @@ endobj << /S /GoTo /D (subsection.0.9.5) >> endobj 195 0 obj -(\376\377\0009\000.\0005\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000m\000i\000n\000i\000m\000a\000l\000'\000') +(\376\377\0009\000.\0005\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000s\000\040\000d\000e\000f\000i\000n\000e\000d\000\040\000b\000y\000\040\000\134\000N\000e\000w\000P\000i\000t\000o\000n\000L\000a\000n\000g\000u\000a\000g\000e) endobj 196 0 obj << /S /GoTo /D (subsection.0.9.6) >> endobj 199 0 obj -(\376\377\0009\000.\0006\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000s\000\040\000d\000e\000f\000i\000n\000e\000d\000\040\000b\000y\000\040\000\134\000N\000e\000w\000P\000i\000t\000o\000n\000L\000a\000n\000g\000u\000a\000g\000e) +(\376\377\0009\000.\0006\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000m\000i\000n\000i\000m\000a\000l\000'\000') endobj 200 0 obj -<< /S /GoTo /D (section.0.10) >> +<< /S /GoTo /D (subsection.0.9.7) >> endobj 203 0 obj -(\376\377\0001\0000\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\0009\000.\0007\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000v\000e\000r\000b\000a\000t\000i\000m\000'\000') endobj 204 0 obj -<< /S /GoTo /D (subsection.0.10.1) >> +<< /S /GoTo /D (section.0.10) >> endobj 207 0 obj -(\376\377\0001\0000\000.\0001\000\040\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +(\376\377\0001\0000\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 208 0 obj -<< /S /GoTo /D (subsection.0.10.2) >> +<< /S /GoTo /D (subsection.0.10.1) >> endobj 211 0 obj -(\376\377\0001\0000\000.\0002\000\040\000T\000h\000e\000\040\000L\0003\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000t\000h\000e\000\040\000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\0001\0000\000.\0001\000\040\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) endobj 212 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.1) >> +<< /S /GoTo /D (subsection.0.10.2) >> endobj 215 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\000\040\000D\000e\000c\000l\000a\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e) +(\376\377\0001\0000\000.\0002\000\040\000T\000h\000e\000\040\000L\0003\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000t\000h\000e\000\040\000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 216 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.2) >> +<< /S /GoTo /D (subsubsection.0.10.2.1) >> endobj 219 0 obj -(\376\377\0001\0000\000.\0002\000.\0002\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s\000\040\000a\000n\000d\000\040\000t\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s) +(\376\377\0001\0000\000.\0002\000.\0001\000\040\000D\000e\000c\000l\000a\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e) endobj 220 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.3) >> +<< /S /GoTo /D (subsubsection.0.10.2.2) >> endobj 223 0 obj -(\376\377\0001\0000\000.\0002\000.\0003\000\040\000T\000r\000e\000a\000t\000m\000e\000n\000t\000\040\000o\000f\000\040\000a\000\040\000l\000i\000n\000e\000\040\000o\000f\000\040\000c\000o\000d\000e) +(\376\377\0001\0000\000.\0002\000.\0002\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s\000\040\000a\000n\000d\000\040\000t\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s) endobj 224 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.4) >> +<< /S /GoTo /D (subsubsection.0.10.2.3) >> endobj 227 0 obj -(\376\377\0001\0000\000.\0002\000.\0004\000\040\000P\000i\000t\000o\000n\000O\000p\000t\000i\000o\000n\000s) +(\376\377\0001\0000\000.\0002\000.\0003\000\040\000T\000r\000e\000a\000t\000m\000e\000n\000t\000\040\000o\000f\000\040\000a\000\040\000l\000i\000n\000e\000\040\000o\000f\000\040\000c\000o\000d\000e) endobj 228 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.5) >> +<< /S /GoTo /D (subsubsection.0.10.2.4) >> endobj 231 0 obj -(\376\377\0001\0000\000.\0002\000.\0005\000\040\000T\000h\000e\000\040\000n\000u\000m\000b\000e\000r\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000l\000i\000n\000e\000s) +(\376\377\0001\0000\000.\0002\000.\0004\000\040\000P\000i\000t\000o\000n\000O\000p\000t\000i\000o\000n\000s) endobj 232 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.6) >> +<< /S /GoTo /D (subsubsection.0.10.2.5) >> endobj 235 0 obj -(\376\377\0001\0000\000.\0002\000.\0006\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000t\000o\000\040\000w\000r\000i\000t\000e\000\040\000o\000n\000\040\000t\000h\000e\000\040\000a\000u\000x\000\040\000f\000i\000l\000e) +(\376\377\0001\0000\000.\0002\000.\0005\000\040\000T\000h\000e\000\040\000n\000u\000m\000b\000e\000r\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000l\000i\000n\000e\000s) endobj 236 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.7) >> +<< /S /GoTo /D (subsubsection.0.10.2.6) >> endobj 239 0 obj -(\376\377\0001\0000\000.\0002\000.\0007\000\040\000T\000h\000e\000\040\000m\000a\000i\000n\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000a\000n\000d\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000f\000i\000n\000a\000l\000\040\000u\000s\000e\000r) +(\376\377\0001\0000\000.\0002\000.\0006\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000t\000o\000\040\000w\000r\000i\000t\000e\000\040\000o\000n\000\040\000t\000h\000e\000\040\000a\000u\000x\000\040\000f\000i\000l\000e) endobj 240 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.8) >> +<< /S /GoTo /D (subsubsection.0.10.2.7) >> endobj 243 0 obj -(\376\377\0001\0000\000.\0002\000.\0008\000\040\000T\000h\000e\000\040\000s\000t\000y\000l\000e\000s) +(\376\377\0001\0000\000.\0002\000.\0007\000\040\000T\000h\000e\000\040\000m\000a\000i\000n\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000a\000n\000d\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000f\000i\000n\000a\000l\000\040\000u\000s\000e\000r) endobj 244 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.9) >> +<< /S /GoTo /D (subsubsection.0.10.2.8) >> endobj 247 0 obj -(\376\377\0001\0000\000.\0002\000.\0009\000\040\000T\000h\000e\000\040\000i\000n\000i\000t\000i\000a\000l\000\040\000s\000t\000y\000l\000e\000s) +(\376\377\0001\0000\000.\0002\000.\0008\000\040\000T\000h\000e\000\040\000s\000t\000y\000l\000e\000s) endobj 248 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.10) >> +<< /S /GoTo /D (subsubsection.0.10.2.9) >> endobj 251 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\0000\000\040\000H\000i\000g\000h\000l\000i\000g\000h\000t\000i\000n\000g\000\040\000s\000o\000m\000e\000\040\000i\000d\000e\000n\000t\000i\000f\000i\000e\000r\000s) +(\376\377\0001\0000\000.\0002\000.\0009\000\040\000T\000h\000e\000\040\000i\000n\000i\000t\000i\000a\000l\000\040\000s\000t\000y\000l\000e\000s) endobj 252 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.11) >> +<< /S /GoTo /D (subsubsection.0.10.2.10) >> endobj 255 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\0001\000\040\000S\000e\000c\000u\000r\000i\000t\000y) +(\376\377\0001\0000\000.\0002\000.\0001\0000\000\040\000H\000i\000g\000h\000l\000i\000g\000h\000t\000i\000n\000g\000\040\000s\000o\000m\000e\000\040\000i\000d\000e\000n\000t\000i\000f\000i\000e\000r\000s) endobj 256 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.12) >> +<< /S /GoTo /D (subsubsection.0.10.2.11) >> endobj 259 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\0002\000\040\000T\000h\000e\000\040\000e\000r\000r\000o\000r\000\040\000m\000e\000s\000s\000a\000g\000e\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e) +(\376\377\0001\0000\000.\0002\000.\0001\0001\000\040\000S\000e\000c\000u\000r\000i\000t\000y) endobj 260 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.13) >> +<< /S /GoTo /D (subsubsection.0.10.2.12) >> endobj 263 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\0003\000\040\000W\000e\000\040\000l\000o\000a\000d\000\040\000p\000i\000t\000o\000n\000.\000l\000u\000a) +(\376\377\0001\0000\000.\0002\000.\0001\0002\000\040\000T\000h\000e\000\040\000e\000r\000r\000o\000r\000\040\000m\000e\000s\000s\000a\000g\000e\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e) endobj 264 0 obj -<< /S /GoTo /D (subsubsection.0.10.2.14) >> +<< /S /GoTo /D (subsubsection.0.10.2.13) >> endobj 267 0 obj -(\376\377\0001\0000\000.\0002\000.\0001\0004\000\040\000D\000e\000t\000e\000c\000t\000e\000d\000\040\000c\000o\000m\000m\000a\000n\000d\000s) +(\376\377\0001\0000\000.\0002\000.\0001\0003\000\040\000W\000e\000\040\000l\000o\000a\000d\000\040\000p\000i\000t\000o\000n\000.\000l\000u\000a) endobj 268 0 obj -<< /S /GoTo /D (subsection.0.10.3) >> +<< /S /GoTo /D (subsubsection.0.10.2.14) >> endobj 271 0 obj -(\376\377\0001\0000\000.\0003\000\040\000T\000h\000e\000\040\000L\000u\000a\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000t\000h\000e\000\040\000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\0001\0000\000.\0002\000.\0001\0004\000\040\000D\000e\000t\000e\000c\000t\000e\000d\000\040\000c\000o\000m\000m\000a\000n\000d\000s) endobj 272 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.1) >> +<< /S /GoTo /D (subsection.0.10.3) >> endobj 275 0 obj -(\376\377\0001\0000\000.\0003\000.\0001\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000P\000y\000t\000h\000o\000n) +(\376\377\0001\0000\000.\0003\000\040\000T\000h\000e\000\040\000L\000u\000a\000\040\000p\000a\000r\000t\000\040\000o\000f\000\040\000t\000h\000e\000\040\000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 276 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.2) >> +<< /S /GoTo /D (subsubsection.0.10.3.1) >> endobj 279 0 obj -(\376\377\0001\0000\000.\0003\000.\0002\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000O\000c\000a\000m\000l) +(\376\377\0001\0000\000.\0003\000.\0001\000\040\000S\000p\000e\000c\000i\000a\000l\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000s\000\040\000d\000e\000a\000l\000i\000n\000g\000\040\000w\000i\000t\000h\000\040\000L\000P\000E\000G) endobj 280 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.3) >> +<< /S /GoTo /D (subsubsection.0.10.3.2) >> endobj 283 0 obj -(\376\377\0001\0000\000.\0003\000.\0003\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000C) +(\376\377\0001\0000\000.\0003\000.\0002\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000P\000y\000t\000h\000o\000n) endobj 284 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.4) >> +<< /S /GoTo /D (subsubsection.0.10.3.3) >> endobj 287 0 obj -(\376\377\0001\0000\000.\0003\000.\0004\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000S\000Q\000L) +(\376\377\0001\0000\000.\0003\000.\0003\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000O\000c\000a\000m\000l) endobj 288 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.5) >> +<< /S /GoTo /D (subsubsection.0.10.3.4) >> endobj 291 0 obj -(\376\377\0001\0000\000.\0003\000.\0005\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000M\000i\000n\000i\000m\000a\000l\000'\000') +(\376\377\0001\0000\000.\0003\000.\0004\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000C) endobj 292 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.6) >> +<< /S /GoTo /D (subsubsection.0.10.3.5) >> endobj 295 0 obj -(\376\377\0001\0000\000.\0003\000.\0006\000\040\000T\000w\000o\000\040\000v\000a\000r\000i\000a\000n\000t\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000P\000a\000r\000s\000e\000\040\000w\000i\000t\000h\000\040\000i\000n\000t\000e\000g\000r\000a\000t\000e\000d\000\040\000p\000r\000e\000p\000r\000o\000c\000e\000s\000s\000o\000r\000s) +(\376\377\0001\0000\000.\0003\000.\0005\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000S\000Q\000L) endobj 296 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.7) >> +<< /S /GoTo /D (subsubsection.0.10.3.6) >> endobj 299 0 obj -(\376\377\0001\0000\000.\0003\000.\0007\000\040\000P\000r\000e\000p\000r\000o\000c\000e\000s\000s\000o\000r\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000P\000a\000r\000s\000e\000\040\000f\000o\000r\000\040\000g\000o\000b\000b\000l\000e) +(\376\377\0001\0000\000.\0003\000.\0006\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000M\000i\000n\000i\000m\000a\000l\000'\000') endobj 300 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.8) >> +<< /S /GoTo /D (subsubsection.0.10.3.7) >> endobj 303 0 obj -(\376\377\0001\0000\000.\0003\000.\0008\000\040\000T\000o\000\040\000c\000o\000u\000n\000t\000\040\000t\000h\000e\000\040\000n\000u\000m\000b\000e\000r\000\040\000o\000f\000\040\000l\000i\000n\000e\000s) +(\376\377\0001\0000\000.\0003\000.\0007\000\040\000T\000h\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000\040\000`\000`\000V\000e\000r\000b\000a\000t\000i\000m\000'\000') endobj 304 0 obj -<< /S /GoTo /D (subsubsection.0.10.3.9) >> +<< /S /GoTo /D (subsubsection.0.10.3.8) >> endobj 307 0 obj -(\376\377\0001\0000\000.\0003\000.\0009\000\040\000T\000o\000\040\000c\000r\000e\000a\000t\000e\000\040\000n\000e\000w\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000s\000\040\000w\000i\000t\000h\000\040\000t\000h\000e\000\040\000s\000y\000n\000t\000a\000x\000\040\000o\000f\000\040\000l\000i\000s\000t\000i\000n\000g\000s) +(\376\377\0001\0000\000.\0003\000.\0008\000\040\000T\000h\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000P\000a\000r\000s\000e) endobj 308 0 obj -<< /S /GoTo /D (section.0.11) >> +<< /S /GoTo /D (subsubsection.0.10.3.9) >> endobj 311 0 obj -(\376\377\0001\0001\000\040\000H\000i\000s\000t\000o\000r\000y) +(\376\377\0001\0000\000.\0003\000.\0009\000\040\000T\000w\000o\000\040\000v\000a\000r\000i\000a\000n\000t\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000P\000a\000r\000s\000e\000\040\000w\000i\000t\000h\000\040\000i\000n\000t\000e\000g\000r\000a\000t\000e\000d\000\040\000p\000r\000e\000p\000r\000o\000c\000e\000s\000s\000o\000r\000s) endobj 312 0 obj -<< /S /GoTo /D (toc1.1) >> +<< /S /GoTo /D (subsubsection.0.10.3.10) >> endobj 315 0 obj -(\376\377\000C\000o\000n\000t\000e\000n\000t\000s) +(\376\377\0001\0000\000.\0003\000.\0001\0000\000\040\000P\000r\000e\000p\000r\000o\000c\000e\000s\000s\000o\000r\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000P\000a\000r\000s\000e\000\040\000f\000o\000r\000\040\000g\000o\000b\000b\000l\000e) endobj 316 0 obj -<< /S /GoTo /D [ 317 0 R /FitBH 771.02165 ] >> +<< /S /GoTo /D (subsubsection.0.10.3.11) >> endobj -322 0 obj -<< /Filter /FlateDecode /Length 3357 >> +319 0 obj +(\376\377\0001\0000\000.\0003\000.\0001\0001\000\040\000T\000o\000\040\000c\000o\000u\000n\000t\000\040\000t\000h\000e\000\040\000n\000u\000m\000b\000e\000r\000\040\000o\000f\000\040\000l\000i\000n\000e\000s) + +endobj +320 0 obj +<< /S /GoTo /D (subsubsection.0.10.3.12) >> +endobj +323 0 obj +(\376\377\0001\0000\000.\0003\000.\0001\0002\000\040\000T\000o\000\040\000d\000e\000t\000e\000r\000m\000i\000n\000e\000\040\000t\000h\000e\000\040\000e\000m\000p\000t\000y\000\040\000l\000i\000n\000e\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000l\000i\000s\000t\000i\000n\000g\000s) + +endobj +324 0 obj +<< /S /GoTo /D (subsubsection.0.10.3.13) >> +endobj +327 0 obj +(\376\377\0001\0000\000.\0003\000.\0001\0003\000\040\000T\000o\000\040\000c\000r\000e\000a\000t\000e\000\040\000n\000e\000w\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000s\000\040\000w\000i\000t\000h\000\040\000t\000h\000e\000\040\000s\000y\000n\000t\000a\000x\000\040\000o\000f\000\040\000l\000i\000s\000t\000i\000n\000g\000s) + +endobj +328 0 obj +<< /S /GoTo /D (section.0.11) >> +endobj +331 0 obj +(\376\377\0001\0001\000\040\000H\000i\000s\000t\000o\000r\000y) + +endobj +332 0 obj +<< /S /GoTo /D (toc1.1) >> +endobj +335 0 obj +(\376\377\000C\000o\000n\000t\000e\000n\000t\000s) + +endobj +336 0 obj +<< /S /GoTo /D [ 337 0 R /FitBH 771.02165 ] >> +endobj +344 0 obj +<< /Filter /FlateDecode /Length 3569 >> stream -xڽ[K$
ﯨ.%
vpNqf`8 !%J%T5ИzH$'JEE.߾W7Ћ5f7 -E-a*⻰|$ROR}.|/O#fClI,+Ѱ(%wd!ŃD]fԴ8/tT(IԤ
84?!"hw, 8uگ4ב4E͢ -<moY52'_q.j!}| u<jk_GfDtQ/N
N -{F -lY;rFQxEKΨaLyx)aw䌨afThV=C$=L중">5Ku˃$;MciJ:N.,
Zj%K+bf`]ÑY<V[0]-cpruhW -YGe"(
{5KB:F?' Kx},E=H#QlMfKt(/$_xuЊHmЫOkԂq"E4Vي;Wv̄/2';
)iqx\N3&hk'k@2Ǒk}Vh_|$[^;B2(s1$)h!aGI> <}3~Q+s )4|
D6npUQ'Eh`B --KAT$.wCOW;H
$L5f#<jnWdW7ofnh -
zOS[-2al:@1@99]m;:|nf!kCBlN#'giMot3㡎AamS{51k."^))0WfH-q 7|,ڀj#EsnޡWyEۮk~&T/9%*O>ŠޫMBTIh5A16qة~"tkEP̿jk˚ӎF/PS*z^dH*FO؉Jh(f2I -&w95?qC@i]fOPbbgu_Bfowj<ҲMZ1o] ~lr -t -9{7qwp9*5onqP\q_Kߦn`eGqZ!pQmt8ۖQޤDaj:ːG-D)9_ -؊Kikqݴ)jϴ9gާ
p~C/E)GMI/šJXFų$r'Ql.Ŧn{X,+ъ@u'4-$U+ahS4tH:@|<.1(|7ZXc[GȿUlMv`Ɓ4m!cܕ븎^gpes]iY%_]d5uՈhؓMݾ(!y~+_Vz%NmAU5Q]V/Al9JI-̤KK0yj2F3ढ़rwp݇sZx{5A PzK6[kײ<g]6?d@ȝi"gC}T|y!nZgl\`= -aX.l#];QmرBlZ7YrH1~>>dNX
Ku%J)N-n9߶`W6g>HT,ow\]SB8%u#wA>{ --ɬ5h1p^ʉK:Gf]%\Ng4ՙA*)3V#Q2/2<5i-0J'+YjђBӜei?c#JĨ`QuDL"J[zZ%sWq%ZKPSVZۙnE%h]]5@B(2$y?^X֯\02Bǡy\Zx]\#w[,5D-pJ[xB_јJӷY/ƮCXrh
5iٺ\7IyM)%rQ{'4.C&C>GȔ/#+$A#<W+D\+3R*o2Q>WOHcc(=r:rV -P!-%tttyod["D-ۄhڳqIGme3hOޞ +xڽ\K$
ﯨ.Q$z01p
#@CxC(H/\}'˧w|\4Z +RmfZ(%yA +*Pm6k]erdFiÆ +rn8f4:H$eM
8@'s9|_
3Y +*6'
Eeź\6uOp, +i
_fJ=F2Ωr)tބ@eڔ2fYrKR%c_[%%TjN7}ۄ%Ŭ3lICnUVM$oŰrIy)8lg$ZIeSYRw7cNMUES;8k)[ƿS58HfSv.6@ȣu>+8(ƻ +>WY_Ձ_faTړ>foWaǭ}+k}LJ5 +n&0z,`oaHW?BO +iX3Md<Sw,A-B#,qtetj]BI NvMcb~+.EZ!Iןӿ><?H-Siwt»Ħ>G< +NqmO|< ~#) +Jz2?J7SeaQ3]~jZ\;r +'iywږ^1d4庡zx$%c32RI_20TLɯ'Uǥh8Q84&՞uNQNqL8jԯjZ(r(ПdTlDEBdBKms45Ԗ_&p6iCI},O~4Đ&c#MWRM2s"- >ۃ +dS>+װqK䆄t1J?7G$hW@ꂐ\X5!F;!G endstream endobj -317 0 obj -<< /Type /Page /Contents 322 0 R /Resources 321 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 354 0 R >> +337 0 obj +<< /Type /Page /Contents 344 0 R /Resources 343 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 376 0 R >> endobj -354 0 obj -[ 318 0 R 320 0 R 319 0 R 351 0 R ] +376 0 obj +[ 338 0 R 339 0 R 340 0 R 342 0 R 341 0 R 373 0 R ] endobj -318 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 276.15 522.003 282.609 534.294 ]/A << /S /GoTo /D (Hfootnote.1) >> >> +338 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 179.415 534.702 194.14 545.77 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> endobj -320 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 377.606 293.321 384.065 307.269 ]/A << /S /GoTo /D (Hfootnote.2) >> >> +339 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 209.861 534.702 221.816 545.77 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> endobj -319 0 obj -<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 468.356 132.704 516.902 143.254 ] +340 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 276.15 479.909 282.609 492.2 ]/A << /S /GoTo /D (Hfootnote.1) >> >> +endobj +342 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 377.606 251.227 384.065 265.174 ]/A << /S /GoTo /D (Hfootnote.2) >> >> +endobj +341 0 obj +<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 468.356 100.861 516.902 111.411 ] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.inf.puc-rio.br/~roberto/lpeg/)>> >> endobj -351 0 obj -<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 79.37 123.166 202.6 131.536 ] +373 0 obj +<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 79.37 91.323 202.6 99.694 ] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.inf.puc-rio.br/~roberto/lpeg/)>> >> endobj -323 0 obj -<< /D [ 317 0 R /XYZ 78.37 808.885 null ] >> +345 0 obj +<< /D [ 337 0 R /XYZ 78.37 808.885 null ] >> endobj -324 0 obj -<< /D [ 317 0 R /XYZ 79.37 771.024 null ] >> +346 0 obj +<< /D [ 337 0 R /XYZ 79.37 771.024 null ] >> endobj 5 0 obj -<< /D [ 317 0 R /XYZ 79.37 562.969 null ] >> +<< /D [ 337 0 R /XYZ 79.37 520.669 null ] >> endobj -348 0 obj -<< /D [ 317 0 R /XYZ 93.716 144.934 null ] >> +370 0 obj +<< /D [ 337 0 R /XYZ 93.716 113.091 null ] >> endobj -352 0 obj -<< /D [ 317 0 R /XYZ 93.716 125.842 null ] >> +374 0 obj +<< /D [ 337 0 R /XYZ 93.716 94 null ] >> endobj -321 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F23 325 0 R /F24 326 0 R /F32 327 0 R /F41 328 0 R /F52 329 0 R /F61 330 0 R /F60 331 0 R /F62 332 0 R /F64 333 0 R /F15 334 0 R /F65 335 0 R /F16 336 0 R /F74 337 0 R /F75 338 0 R /F77 339 0 R /F27 340 0 R /F30 341 0 R /F67 342 0 R /F66 343 0 R /F47 344 0 R /F53 345 0 R /F59 346 0 R /F71 347 0 R /F72 349 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +343 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F23 347 0 R /F24 348 0 R /F32 349 0 R /F41 350 0 R /F52 351 0 R /F61 352 0 R /F60 353 0 R /F62 354 0 R /F15 355 0 R /F63 356 0 R /F65 357 0 R /F66 358 0 R /F16 359 0 R /F75 360 0 R /F77 361 0 R /F27 362 0 R /F30 363 0 R /F68 364 0 R /F67 365 0 R /F47 366 0 R /F53 367 0 R /F59 368 0 R /F72 369 0 R /F73 371 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -364 0 obj -<< /Filter /FlateDecode /Length 3884 >> +386 0 obj +<< /Filter /FlateDecode /Length 4017 >> stream -xڵ\K$
ϯ?D -b U
K)83Dv!e$EnUN;ҿ";K:)>1Gluz[_+'4fVBRD(?bЙtG*
K1vQ 8XrzdUbm.NEţvjAnت 2{bDr>ˠv$lQQM]5|1MZm0eTb[}w`S#EHNrщbi\zwELG8oQ&+c=c0@Sc]p]
` -y1]ŔxAm%q/9]P^;AhrBbR,C
4A9=VmodcF2g$ϧP:]Yc2nu 8. gNd#9):Uwv)@Bqr§q2>I1R>YN#ŭS ,y*eP1̣*pa:WJܣ4'hTebϠ-m<ewn9n2-xkY! -cP(tzOzTNXݎКFͬ5SU!s/sa=r۵dcH]P/h/]J F㗤cW)h=5-i9@A<j'&{ Wbewn
7M"hVe\C7FW⼒t3ʍIi[b!CV߶<ey9s&TQp.I_75>0Ԡ̍v/:˓Kڵ{f}Ӯ<.؞pXH䤵/USLUE{XOMؘP@lMdnM4/]|dV*V~ZE
R ygڟ>J?WY2x6O>2?+PvB{cukG 51' jOxoMC}/閺V<4~L3geW+KJ.՜BU<&XQ0ou]_mCؘ\37J*s;AmQru3tޝԚk<'CkMsƜTnYp()Bԋu˄:ӝ|Lv0\yn`!l;0 RЙ!7m4mQc -#>ELYoM BV)*h-MjV&wz}gJ9kvsК~qP?g#ZĔO]UͶ{aJYq\]ˣwKfmw%Xo{.}ebLC㩻@г <%9=)Vi\۸Ufײ -nTZ2z8rͩ"
lX`Hv:YAIX4R3z> -940ؽV -dgVd>Gi)5ѧ͵R ZC\`[k<SΝua)KDuSHqя,xr;6v%Mh¼4Zͬ7gk?%;Cn -֒-ZpȧYs$ _|1¹6M;3
N(\6Q.oVBF{F*Da2=ME|#F(5sٔ;2_(Xӄ[fTSwu,֡ˌ +xڵ\K
W0p{<-o^%?$Jԣ^RQE5M~p/oݔz}7MB&܂WBzuORG%~W'IX~3^pq/3L-䵷LڴyD
W-EdG MLi +$h+TD$h<{#ylEX~7>Uz֧L/:"{ƅ"VZ1ч߱_7ڋ`D45#-5psi! +QwlJ_wd0|OWa}+ת:ضTƣbhSQ3mmt?ۏ:8
-]:#r:mWp+FG-dX^
IND=ylތjbVu(˫7I-ɂC%}kHAh2=<ri#cnimՁFv:Hi,]36IoxiD+?$sb+5]Q{j,k +7]DYvl*~ruSN8dͤ;Md9\ۍVv5,>nSo6n)PQwJx6~b*p3]8LithYގc(1x/?im-|AL 霏[ҳΝ%)E,@(<$PTU
#é4J+)>BrX}{?Ҏ+߬vkOn=5sRCBζjA(0 {9\Բ2lh90b妦?Ѷ$mZ;m`Pim b0Z`ˊQF"@D03Cף^?bN +o"ϸBgYUb +fD1g \a|N7ș?>ϋj dƂKKq*gp1dTYpGte +%.eo4'fG +'c7Ԍ;mȚS)`ٖr.eg\Xn$Ƙ<8)tl!iaYgr+2gk7 jf(y̵]obЄ'NJb.;Y2QI `2Wsɫ(z +9y\|a6.Ihw.dfB:JY7{)"-ۇ6Ѕx/Dr뇿6c\*HwbTB5/ovi[i
)=s?fmNZHS3y,H7PܸA%F%r~b~iO<<yè~%{*]N&ۨN[k +*Ufݏ2m$Ze*QYSFil$DCBE (+Y®=92{Ӄ-^B i&A"vMbNM|`.y dnb22Q[ +3FA +;AȖ[&ؕυeVD]$&H}2Uh +[=~7}3;HT<GʏbM·u^k\\/6V
Ym[~$О|kw]vf9;?!L{6(!;_prJɄx> +n|lJÅ$l%Zpv!LjyRhx~hpuj,3F!+f2Ӽ+W +bJ[{cٙ[g$b$#P5d +L#KZU9{q_ endstream endobj -363 0 obj -<< /Type /Page /Contents 364 0 R /Resources 362 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 369 0 R >> +385 0 obj +<< /Type /Page /Contents 386 0 R /Resources 384 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 391 0 R >> endobj -369 0 obj -[ 355 0 R 357 0 R 358 0 R 359 0 R 356 0 R ] +391 0 obj +[ 377 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 378 0 R ] endobj -355 0 obj +377 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 237.308 470.236 243.767 482.526 ]/A << /S /GoTo /D (Hfootnote.3) >> >> endobj -357 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 157.533 437.917 164.506 449.872 ]/A << /S /GoTo /D (section.0.5) >> >> +379 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 161.177 437.917 168.151 449.872 ]/A << /S /GoTo /D (section.0.5) >> >> endobj -358 0 obj +380 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 313.871 128.166 328.596 139.115 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> endobj -359 0 obj +381 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 341.547 128.166 348.521 139.115 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> endobj -356 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 345.405 94.628 355.861 106.248 ]/A << /S /GoTo /D (subsection.0.9.5) >> >> +382 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 465.422 106.896 480.147 120.076 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> endobj -365 0 obj -<< /D [ 363 0 R /XYZ 78.37 808.885 null ] >> +383 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 493.099 106.896 505.054 120.076 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> +endobj +378 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 345.405 76.636 355.861 88.255 ]/A << /S /GoTo /D (subsection.0.9.6) >> >> +endobj +387 0 obj +<< /D [ 385 0 R /XYZ 78.37 808.885 null ] >> endobj 9 0 obj -<< /D [ 363 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 385 0 R /XYZ 79.37 771.024 null ] >> endobj 13 0 obj -<< /D [ 363 0 R /XYZ 79.37 686.413 null ] >> +<< /D [ 385 0 R /XYZ 79.37 686.413 null ] >> endobj 17 0 obj -<< /D [ 363 0 R /XYZ 79.37 620.171 null ] >> +<< /D [ 385 0 R /XYZ 79.37 620.171 null ] >> endobj 21 0 obj -<< /D [ 363 0 R /XYZ 79.37 535.018 null ] >> +<< /D [ 385 0 R /XYZ 79.37 535.018 null ] >> endobj 25 0 obj -<< /D [ 363 0 R /XYZ 79.37 294.886 null ] >> +<< /D [ 385 0 R /XYZ 79.37 294.886 null ] >> endobj -368 0 obj -<< /D [ 363 0 R /XYZ 93.716 107.928 null ] >> +390 0 obj +<< /D [ 385 0 R /XYZ 93.716 89.936 null ] >> endobj -362 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R /F80 366 0 R /F16 336 0 R /F22 367 0 R /F75 338 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +384 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F80 388 0 R /F16 359 0 R /F22 389 0 R /F75 360 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -375 0 obj -<< /Filter /FlateDecode /Length 4033 >> +399 0 obj +<< /Filter /FlateDecode /Length 3919 >> stream -x\Id
?вD>%%?.m5cEIqW_<]>.3oߞ~/J_qOڗg92s,Oʹk
?O+ק֝LȋՖ9-/)|8S]`B˟~mՌnaqJ8($N"AL(74ir@@KbKL\ZQHEy! 8|ۉ~ZhyoIJ@7 -[̛e:."U\1bF!7vE\SJVɤ>AV!zr.pd2d`h9K~Qy{RJe6!BVoKz*.)53SqV0RY1`{t
Z:3VT -4 -E3RNU>}W>7~ -ifVM
#V
}=d`P*~6U-0"OPa$l2Ko+%φ곧 ,dțǍ#^6IxϜst7m -Qf\\\wC|Ԃɛ܁R;ުq驏bKikV݄(q[WI19ۨ(G5]-!S8rqb!g1$Յzi)4GD
c5$S
!ufmoܙ9#ŷ.$[mPfaGlNaFP8?&%ya!Ǿ+-ΓM)3qL2r&M¬B",|jkZe6+Xi]l2eC\(yMIUB~Lk:$Mg]"I?`rSkɜl/Gaӻv|?>c'qq4}T"MI*0 -Kt'3~RB@U:T:Jt 2fZzMO)+)BHTp˟oL!"%5}4Cw!QQ*ϩ&dή, x5)oUQ3462BNy2CR`<5=tOY,ŧ%HhLc,ÚH+J -,ż ̐BHV 8ﱕZ;3IZJE.E{,75do[0r}.VP=[XוDQlo{G4J'棽nb4qz[3`A d.!HJ^vH C=:ВsužڌRcJ'drWB\Oה͊p<N<mn'zYD)ZRqy)P5Ϲϑ)BwhnVt\>۳*ڮH<wrMIoEXnHheuc8ӖL{v_֜1s8 -<tWJP{Tc3bomh-n}9KmqZk:Eۊ.O\Gmds<iìYlOفunJ4api0&m6HȓxqL8ZjD8R6[nӪfl\F{s[5DvH=CIfv2e\8L+U2be2ڑIDSS:V~QĚ6b]}kwUC'#dʙtܶw҆io$́9Ibg'+PNc}%(O;7uN'w(rEE.NX1e;6;N|lT]ܷk~#nY)b9]tlh1ucrXhU`9&;D
U~+7ܺhO]a_.eZ)eEFWJn)ho~+\t@^IO -ڭXWMz Yo۸zMCw}Z~qH9SgG~-;ɘv]/c^5,;_2w\dxt(FiѨp -rXGĤBCV\Q -ul{h9`6 eY
yMv`oR}.c2O&xItt
gwow%zRt{+b5]ђBa]1y}*}x[s`kL@olsq}?]QmYOJ+MAӨ6'-I-Q-m]6YM@̇#ڔ#9=Ѧ9hSh3>h'm<{wv#DǕς8ikpE!%w Wԯۊ6]pEHF߅+5L⊔m\v8 +xɎ\}3SćDOq/ndmMRJ>~/?~ӻ5!X0F˗~Lq+._^~Ĺ̹Qp>r&>;˹(+<uʵ yOo0>Zi/ +XDbrjbP5gQT^,4(?֑8IJ__%2[3'nYS3ThsPD=+fZXMT j4dJy5S>.[Bh[vT$ N-Ob'/؊Gh|?=|mk1bGWf&o-+OoYCٗ
iגnM3 D[flM?_إ u*6WyJwI^-5x]ʼn*xM]7g]O"Ύq>[n-7YIEC4oeKDB48iȝ.VPqD%X[Ⱥ{}ao,#[dkg>d[YwEhU?5y$lhElHyabЮ)BE)j.LXpP6P]Y&+8REp(KqGlY?Ǵb^mzQ+ۤcjDKIcAJdC>K/BÿmoV0-!+$c0hQ$IEg ˣo}D9)dJ,XGތLs^sJ,@jM(f)bVqVb*c^^T;==ǩ=P-&~%!N .?v5w))~1$N|in^q1Af΅JǦg5 +j0k܍EBj)eWȝ6I5(ɪ%ST.=(46P#XV cOB-T+tWS 5^.=PGv}3_ +ݷpʎI y Y3Qaj)m%CJ4oPEH5HL%%ՇTt#DJ*ϚWT[)%!0H}fMٮ4SyL˵-dfJcaߜ3A +-qBdF:Ϭni^dKTۺԿϱ2ϡGW8<!{8a#<SƥqYygEG.IyU
깆9LgJmM>צ{7Bcq_;$[n-G癸ĭ`F#S{re` +^ vOl
S.pr%XÇaI~f*p2>k5yc@+ڿ4LY[5u?0u, ,9#fV:4 +2#ӷÊvگ94GijY_5=z\ԉ:XÎumk,=8i=㎶?{+YT*t U7d4鈭5iئ +׳G&궝kQ-:keUr/ӹUek~\;Zp +Yކ +~Bf
*CkM~uUr?żKi=:*dC-ɞ +M +~WH[e牾xVNYնJ|X=,)eg|h1K3ܷ|YJy
تk/QsK2y6B;&D22Rf8r.iaзʚ/<gI3d|kaZytxq)~ىd>F;J`J=|bg~E,*̓J:tjՃv7"SU{NF b[˷eޖ&%xb\-Qۆ4;|.7{FQ뺲wF\#+J{J=
H-p@LhCWwfNJxìG4lɷ/C'挿~/1PipYsb@\;~?)ݨ9Bs tt j"'.yCCTǛߩK~c)[vL\7
P7:oe)JfDu.j9|>SҌ(~rhʇJB49P\M+iՃ]Hd˃VWD(F<áˣ}wzѨ&vѫwF#BJCF#B_suNP'Gwk,!P'wk
]4UNAK<xF;Dj0Oan$HPIҸX9YV ɁApwHku endstream endobj -374 0 obj -<< /Type /Page /Contents 375 0 R /Resources 373 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 380 0 R >> -endobj -380 0 obj -[ 360 0 R 361 0 R 370 0 R 371 0 R ] +398 0 obj +<< /Type /Page /Contents 399 0 R /Resources 397 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 406 0 R >> endobj -360 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 334.663 742.082 349.388 753.141 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +406 0 obj +[ 392 0 R 393 0 R 394 0 R ] endobj -361 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 365.109 742.082 377.064 753.141 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +392 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 221.129 538.142 227.587 550.492 ]/A << /S /GoTo /D (Hfootnote.4) >> >> endobj -370 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 221.129 420.814 227.587 433.165 ]/A << /S /GoTo /D (Hfootnote.4) >> >> +393 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 459.405 392.421 465.864 404.871 ]/A << /S /GoTo /D (Hfootnote.5) >> >> endobj -371 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 459.405 270.705 465.864 283.155 ]/A << /S /GoTo /D (Hfootnote.5) >> >> +394 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 386.12 132.276 392.579 144.567 ]/A << /S /GoTo /D (Hfootnote.6) >> >> endobj -376 0 obj -<< /D [ 374 0 R /XYZ 78.37 808.885 null ] >> +400 0 obj +<< /D [ 398 0 R /XYZ 78.37 808.885 null ] >> endobj 29 0 obj -<< /D [ 374 0 R /XYZ 79.37 660.929 null ] >> +<< /D [ 398 0 R /XYZ 79.37 771.024 null ] >> endobj -378 0 obj -<< /D [ 374 0 R /XYZ 93.716 113.357 null ] >> +33 0 obj +<< /D [ 398 0 R /XYZ 79.37 200.509 null ] >> endobj -379 0 obj -<< /D [ 374 0 R /XYZ 93.716 103.729 null ] >> +37 0 obj +<< /D [ 398 0 R /XYZ 79.37 179.451 null ] >> endobj -373 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F64 333 0 R /F22 367 0 R /F16 336 0 R /F75 338 0 R /F77 339 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +403 0 obj +<< /D [ 398 0 R /XYZ 93.716 99.585 null ] >> endobj -390 0 obj -<< /Filter /FlateDecode /Length 5025 >> -stream -xڽ$1"o`ͭ -hżJ#3F4)Bz$gjƊ7ӏO%8H'>%*>LjͽAZ#8i -J0m'Tr,sYJI.Hzζ#ny|x><OݫLV_{+sª'E~0rTgJHżޮ)/&34X]b^l<NI^H[
<OvU@r$oΌsM$yЅȞ": -V@3
4(k>(;$QTt"x%o<GہOP2f!f.nmEe-\fI;X7 -%b`6/M>wq3)Bʊ%*iWU51o*AVHuB(av -FU[66fRiPbmX<nB#%<G|V]vKǰ憺J,'LEtó7w$EWNJB,EQWazա^䫶[jo B61 C2y7|7.VwKT,ˠN˸k4gtD0kMvwObBi -MmD -E:!2)n}Ԍ&H*6I0×ά^0'?(ɜ474?o~Kl)&lk]vL<
_.T`re<:a!'J=s&؊I%E>ƿ;x ٯ,;@͊cQ<s%˛Œ]ZuxVJBWЏ6 q4ʹѣ^Y[^q[QL۬$"g3џ2h%50|B)Ddޣbܝ:f=)4TA3yÄDSb-.pCG?Htݴ,% t>HɄK`-4
pnhTF2"bmmٷ-+ȶ -1rkaOnƪ9m(jPHϔֳ[?O -'EV^0#8JḄ~ɢ`4̄zކoZCƽh@:xfCc&Oi&AQ(i -2/PReN&$G3z#rBPQzdX
y¿63$cG^a?(B
CV6dPJkz>"I!O%.(`RA5J(JCj4P{ th\푐=6nEq"`GT.(G[kZ*7p}:( 16`_j
z.zQi\^6Xzcʭ*!_kALE*zCBcȮv%Qc@>Q*Qs}Ϋb&98IF4,ү+@EBY;'qHO1~5|A]RH4j&R1$lԑyHR%o3INBdVlww|Wafuk!+婼V -9@=p$"U`k}vnLJ|O.K^R*.#ܡu+)}BAXFe=j$V5bv?`e~,+c{WАg)NP(&g0m=4|@X$DeJ(: --t4%b+fhp678t?ZuLE^B&~ `2V -YD[IO6J8fn[Q!E5_9n=Ψ$VsPkfȃZ$*ᙖ-SOuRVE7rrϛOGuum"ScWNֽgauFfnR 0lMn -.UerBޥ].=JQMgB-PR9kVPHr@(<e}^%g8sRYɬRT v*s[YR:єP\X|'4˨7==}SVd糱݂WJR\mSx\]RQX&w@hoH6cx}eHcJJwjjf@gɖ0^ހ6g8SUP=PW75!t;>BU`,E -!>Z5DBV(B+Y1sgx$+OfENi",7;0FtbW%S%Z̟ǕhlUID"Iæ.";t.ۢ)Dvꩲın|;FXEʞ^+I]6v,yֳ6PNoLxAD]N%g.hŢVL8h7(J -5c7dR T3#C!&2V$ƲV쐶9^cw`jʣ4?(JwVBLJXh=tmϜ])e߫X#C\q*\Ǣj/~e{sPk8G?uf -!9֙_2aD`=,i~\9,=Ia$Y}ǓqWSBvx4G7EN~&_qxJN-xO'EhI8[1"WNjZkiZMkce١Y*(4Pr7~靨?_Q*-5b9iޙf#
-Gqvׇk -,8ڑ -j%Ms!)t-QJI{1@U8esdQz -endstream +404 0 obj +<< /D [ 398 0 R /XYZ 93.716 89.958 null ] >> endobj -389 0 obj -<< /Type /Page /Contents 390 0 R /Resources 388 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 397 0 R >> +405 0 obj +<< /D [ 398 0 R /XYZ 93.716 80.331 null ] >> endobj 397 0 obj -[ 372 0 R 381 0 R 384 0 R 385 0 R 386 0 R 387 0 R 382 0 R 383 0 R ] +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F22 389 0 R /F16 359 0 R /F75 360 0 R /F77 361 0 R /F81 401 0 R /F82 402 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -372 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 386.12 665.921 392.579 678.212 ]/A << /S /GoTo /D (Hfootnote.6) >> >> +416 0 obj +<< /Filter /FlateDecode /Length 5258 >> +stream +x]K$qϯuE2/1lKy
H}dUY3#J`0}(s"Xmϟ}!o0hn*!}7)vk>G'h?kH?}')BӗzW(~@MI4ON_ZPQwH4z'sM_y+-M Mؗyj |mp:[3[x팢oo̔P-6{grBGmkL#lCV\2Vj{4FLG)qKvI1Di-% +aJڶ*>ld-Gä!3ҫ-oTԈ"`a8OH[U +'8^b/hj.wto0^hk@q);YLN LXBF`4cS(ӱQ+a/ aiX:M/ZZYbi;Ҡ :BeiG,Ax*'hiԔ]Dzuu +y(S,Uqw53xwАUK4*;L-*E8g48' XM*.鼿k{
tY
?`YhHW-3da@(Xg
m +Q̼Qʈ /[z{\F:1d2KW1@'Hp`ܺu[ ilݚ>J\{iy&h]&Ŧ^࣍c('["YBbz4"/xr!^K8¹9 +ekeX:EF- +MA]hL;BĂDF@ڌhd!D_: 2zlqg?:VZ=}ɜ 6~z#^}}1mVr)HoU; +p5# +k0l&+ne$$Q1\,Gub-RdvDgKVYfDqozYN"U^ p䩪#Eۡ>?guTuC߄zSh)QTE\oI2M{3W`̹w?B@2eFx6?){'H0qE{u5ХZbIduUB>[!\7H6n+@3ĭuP){*-,慄!cK!q)n6l +Q/0OmTKX<<A[ &,>oS^m +(@&ts1%a7574*a4(ڽh$ Ɏ2NU{Kۮ=:MZ r'GR;2'lJ<=DNe҄ˤ,=f"F[&JB4ϡ*$/%"0znfIhSۑA~j*8aT%/wsvzHaE=T3>}(+[VF@?VO61tg齅sv}$ +1_W.<{I~CGQ/8WZcZC(r@#N0ov8,R%5BO*GZ/|J&CujA<坅0{;֮ݷ*4;8m:#|gk-ØCy +>NJ|-r;C)Ƴ +GŠavUK?ʏ7sﱽX%K}*2}:XaĘvTK$y/Y(XMBN\3mhiRiZ<.ngzrɴ
P@ڊl/?䤿bھ"$zNETz)s7\P{ +c|-K^jy3y_ +{R#ݑ-=$M[dPgq}^J>Sk= vx^\Ĥퟭ + '6F[MD[z`,Y&`8֕j
K>>4.reH-vt~ + +bp +f_M}4Рn<*[ooA`1zI9<bY3>F8)a3O7eYjce,S5 K>tw˺WFh9/:x|h`P>=er _Dޯ`f +i뺠vtKXm_X[GL[8fq.c^~n)ldṆE?lk2v4Sq|uսj +s1huyF?HhjЕ݅jeh5@z;o
㭡1T~&dU
n~W" +}:042Z2vLs'I8x"Tjb
YcsW۾9YwtiPt7<W*'9 +endstream endobj -381 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 510.443 411.645 516.902 425.244 ]/A << /S /GoTo /D (Hfootnote.7) >> >> +415 0 obj +<< /Type /Page /Contents 416 0 R /Resources 414 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 421 0 R >> endobj -384 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 338.658 276.94 345.117 289.669 ]/A << /S /GoTo /D (Hfootnote.8) >> >> +421 0 obj +[ 395 0 R 396 0 R 407 0 R 410 0 R 411 0 R 412 0 R 413 0 R 408 0 R 409 0 R ] endobj -385 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 387.236 237.308 393.694 249.818 ]/A << /S /GoTo /D (Hfootnote.9) >> >> +395 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 507.158 733.664 514.132 745.619 ]/A << /S /GoTo /D (section.0.5) >> >> endobj -386 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 244.218 185.283 258.942 197.239 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +396 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 114.907 721.708 121.881 733.664 ]/A << /S /GoTo /D (section.0.5) >> >> endobj -387 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 275.761 185.283 287.716 197.239 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +407 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 510.443 445.353 516.902 458.953 ]/A << /S /GoTo /D (Hfootnote.7) >> >> endobj -382 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 334.199 93.186 340.423 103.996 ]/A << /S /GoTo /D (section.0.7) >> >> +410 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 338.658 297.49 345.117 310.219 ]/A << /S /GoTo /D (Hfootnote.8) >> >> endobj -383 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 353.478 93.186 363.935 103.996 ]/A << /S /GoTo /D (section.0.7) >> >> +411 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 387.236 258.554 393.694 271.064 ]/A << /S /GoTo /D (Hfootnote.9) >> >> endobj -391 0 obj -<< /D [ 389 0 R /XYZ 78.37 808.885 null ] >> +412 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 235.84 207.225 258.316 219.18 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> endobj -33 0 obj -<< /D [ 389 0 R /XYZ 79.37 771.024 null ] >> +413 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 275.249 207.225 287.205 219.18 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> endobj -37 0 obj -<< /D [ 389 0 R /XYZ 79.37 711.216 null ] >> +408 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 334.199 86.285 340.423 97.094 ]/A << /S /GoTo /D (section.0.7) >> >> endobj -393 0 obj -<< /D [ 389 0 R /XYZ 93.716 125.644 null ] >> +409 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 353.478 86.285 363.935 97.094 ]/A << /S /GoTo /D (section.0.7) >> >> endobj -394 0 obj -<< /D [ 389 0 R /XYZ 93.716 115.951 null ] >> +417 0 obj +<< /D [ 415 0 R /XYZ 78.37 808.885 null ] >> endobj -395 0 obj -<< /D [ 389 0 R /XYZ 93.716 96.859 null ] >> +418 0 obj +<< /D [ 415 0 R /XYZ 93.716 109.05 null ] >> endobj -396 0 obj -<< /D [ 389 0 R /XYZ 93.716 87.232 null ] >> +419 0 obj +<< /D [ 415 0 R /XYZ 93.716 89.958 null ] >> endobj -388 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R /F82 392 0 R /F16 336 0 R /F30 341 0 R /F81 377 0 R /F22 367 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +420 0 obj +<< /D [ 415 0 R /XYZ 93.716 80.331 null ] >> endobj -412 0 obj -<< /Filter /FlateDecode /Length 4588 >> +414 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F22 389 0 R /F66 358 0 R /F30 363 0 R /F81 401 0 R /F16 359 0 R /F75 360 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +436 0 obj +<< /Filter /FlateDecode /Length 4648 >> stream -x\Ɏ$WEh@5-@7s|-]u;̪jtW& ˋ%/]Oׯ~x,X|.J\UBZu_L+T{ID)g?+4!KOjSy~^H%#?.~pK7)G)[ -e^[znoNϠ5<;hg*ШFnU[y5<neZRПQijކ15h\_q [XPVBe89\D.'erlE&j41=
zxymq3:A-tN,
r&.;kBgKPNݧaE] 9VƸ#>dvl}bt.ϲ'2JDsBVZULz/nd1ɌoyNrc<2mj>;V -Czl]Qo$,G]Vhf"C: -kmldr[P `m&7-XwP$4+R] b^=M_#aLg^reCe++H+$S}wy!ݨeJ9UMyȀR
;]ό=r204KΌ鴶qפbw68ხP3ZUxXG -A.m_mnpjȡ Z#xCٖqX6\ΙeܺHHs4QX`?Zc(qx%TsP6P[MXf`0Pm{ȓV#l9lmhϊϧ3az3z3`fUf²c:ގxߗqy:|R[&YVCP
֠x6Ye`Ut -GՒ -*4< 8)@@m?h "BT+DZu(< -IHtZF92%I mVjcL?-5jtj\z+
z)o(HL~>CբG
H\EutC7콥,K8k"(P0:ikHFZG[^Ưg7q͟$YٴoԲqs6=.ecA<0nT z<9mC+ܔO\K `!i?xGhar --ٞ0OȾխW3J#DGYSW[鄷Ipt^)JSE -ϡY`6 -96cAMC>E3lVaq[({vLU\':o$gZǒS:h}rǭBN3[ -xBW[QcpceMTs&DZ}Eu-}X)#:mlK%gޡY"y$[[lL -`ϦoH\1PD3,oI*ɹ"qu] s\!:ډ0W`vAQK#@jY>3`z]Rݢm5nlԨ`1FUD4#ƢeS?¤اnݭrIlK
,!}IPVQΉTt7xRKY=8d -F~~ފ`H|2:.pqE\ȮH}\p-XԢT8dVYOv[~LzJozSMJs[ax$woZZ5&;htEͺ\Ͼ zuV@| tUju Sd"lMSQ5`9%Uo]}M.GuXJ..-LԨtpvr^.+TN*O;aNNG)| -w} ʩ}6 -i4JM6ָROz$c,<SvW}2+VkԷ9=%?-6Lk}RO3>Q1.a ,V -GV f{$*<cgFNNIs1K -2[6sM:3'צKH4)U_y7MMLǐOC(̣>;'(A/)z(-wPm-,}j{*ihlu5z %l'KX.4%se%qcU(\<ζ7v漤c@܋9pKC~tm*]HR)O <H*1Z]O_v{<)v?f&efvit{`S)KByyWJS3sz;otͿRl}L&9^,f4S ;աW.<TQc];RS>VA3">~>)(AD*|10?@=]mvhEI5Wv=Zldw, A
yLcX,~a h{Yo:}v -]A ;7tzha^m-¿yEUX-/_C))ʧ|6 -0OiwxW +xˎ$_?0D +X#[WLPA\IP6B4C}N;Aeor^ TڻXyxkotE!ISetF4<}<љ[(tb|El9]a?Y+XGsjsSWFCGF#pcLcU]+#Dž 'M?K^YKeR=}텲M~|Lhu%M:įZHjf
VmZD
ʓnSR ?یf?۴gZN) bCod +\Y{WbI3 +$Q6#-p<c#QF(qi[&On'|eDKvH:2e\!;8Q3G96G'U-]V34T=L}]h[SH2RP;FBi!
8Ku +@֚U]w +al7/3ɪ)k@Xو1#( +cT8^JK3v%|35|opZw2 +o6 +Ia@=!![RwÔ<pjJ<7A/Q8x5_%3շdf;V92Zn8O}ʂ +|vY[lhԲP$?Ǿm:aʆ@%H|Z#lXޭΜLԃ߱ Ax8jnBUNPFZ1ш%7&߷t`BRWwwh{`FHy/Sa!$CfOu<iʾ5Z.oHT@HgwP@ +C*ܲ<|! +q,XyK`[ʣE~_2T;92grrdYW)͐3b1Qм4K]z OcCR~On5 K3LrY&< 1l)3:0Rz!soVF +CQu\556YL? +0ʒĠ̖}B Yݩ-CHAۮ!anv}K Br
G(V5e (uSGədPV>w wUR + +I/&R95yamPӼQPjٳ(#ú؞BZ{똵 Ӓ<3OBcW}O|\!pŀL)pqN#{L: (&h\X%ˬ=_5ἩR?C?Ҩo;6)V3X7I<kʼmwjx#.Ko0˒(O|f&/xs=u=֬ a3 +ϵ]8=YALwo 9yaPH¬AvXڢ {J^(0jG'7}q92 +Wy&E4-Ѡ +&[n&((zݺ[$-"djsQs[\P^.ܑIx*t>Y
Nニ3_Hxl&lF$dt8y-( gRw٪Tfm +JFb9IFL{ȶ(akrUƶ6'geìl9<k=~[դ>f&.O\*yCZ6sZp%ƧqRe{]lلa-Q}
Ypv~vKCytmbȣrWO cMn;EW^3BGӨYY="z;Ii)=Ȼ + < +@XN`:7V-a-JL=[kޢūF +p1jy6cԌIZmF[ `Vh,PNxwuNS +,=ºx_L2VTy$a94d~^c0p龜z|2+ޛ2aٗ9
Fu0 3ՔN.m{Ws?j瞟봕Uˀ`}, AkW|wsI瑿6©4YDm'BRJwT'J/iMLim?b<ˎĞe{sCVN-euK?o7]>y~eGdv#)*mbL:POsHt+a
룴|8R> adR@-D|vpAU}j4 +[fg/p);=G8Se/e>KYH$0Nw(ӛ=HYaU6IWؖb=S"UD$j\nѵMtO$jяFr̙mF6\T*#ve]j;$Y9K
zs'Ջ?QSW=92{שѓ|鈪>:VIuZgՌ&U_z+dOZ7;V͋iY&
!*oS .n_q<eA @Hb5-:_Z;oF`}R $loÈ, ǰ +̈́0-@I7Vf?3uL,ӄƭLsHvb +@>UH1wFa#!^G^kưWo;7S .
92 endstream endobj -411 0 obj -<< /Type /Page /Contents 412 0 R /Resources 410 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 418 0 R >> +435 0 obj +<< /Type /Page /Contents 436 0 R /Resources 434 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 442 0 R >> endobj -418 0 obj -[ 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R ] +442 0 obj +[ 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 ] endobj -398 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 195.455 465.788 210.18 476.857 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> +422 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 195.455 446.639 210.18 457.707 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> endobj -399 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 248.586 465.788 260.541 476.857 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> +423 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 248.586 446.639 260.541 457.707 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> endobj -400 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 356.342 262.09 378.817 274.045 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +424 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 356.342 249.397 378.817 261.352 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> endobj -401 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 394.538 262.09 406.493 274.045 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +425 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 394.538 249.397 406.493 261.352 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> endobj -402 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 331.385 223.094 341.812 235.265 ]/A << /S /GoTo /D (Hfootnote.10) >> >> +426 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 331.385 211.047 341.812 223.218 ]/A << /S /GoTo /D (Hfootnote.10) >> >> endobj -403 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 333.577 207.451 348.302 218.4 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +427 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 333.577 196.049 348.302 206.998 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj -404 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 364.023 207.451 375.978 218.4 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +428 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 364.023 196.049 375.978 206.998 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj -405 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 506.475 186.774 516.902 200.29 ]/A << /S /GoTo /D (Hfootnote.11) >> >> +429 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 506.475 176.664 516.902 190.18 ]/A << /S /GoTo /D (Hfootnote.11) >> >> endobj -406 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 317.437 164.208 327.864 176.38 ]/A << /S /GoTo /D (Hfootnote.12) >> >> +430 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 317.437 154.098 327.864 166.269 ]/A << /S /GoTo /D (Hfootnote.12) >> >> endobj -413 0 obj -<< /D [ 411 0 R /XYZ 78.37 808.885 null ] >> +437 0 obj +<< /D [ 435 0 R /XYZ 78.37 808.885 null ] >> endobj -415 0 obj -<< /D [ 411 0 R /XYZ 93.716 127.979 null ] >> +439 0 obj +<< /D [ 435 0 R /XYZ 93.716 118.514 null ] >> endobj -416 0 obj -<< /D [ 411 0 R /XYZ 93.716 108.887 null ] >> +440 0 obj +<< /D [ 435 0 R /XYZ 93.716 99.422 null ] >> endobj -417 0 obj -<< /D [ 411 0 R /XYZ 93.716 89.795 null ] >> +441 0 obj +<< /D [ 435 0 R /XYZ 93.716 80.331 null ] >> endobj -410 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F83 414 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R /F72 349 0 R /F59 346 0 R >> /ProcSet [ /PDF /Text ] >> +434 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R /F83 438 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R /F73 371 0 R /F59 368 0 R >> /ProcSet [ /PDF /Text ] >> endobj -423 0 obj -<< /Filter /FlateDecode /Length 3283 >> +447 0 obj +<< /Filter /FlateDecode /Length 3275 >> stream -xڽɎܸ_0M>@kǷK~?iD}#gW&7K%o<1|A71*hiUl}R(@חs'=9o>QbZ_=R5h÷r/%4B8폧⋊r-+܊rFh4<x>S -@OJ. -V.E(`2h?/xզ<
lYx'2e
)ɀ quF% h'
A$]kMl)܃ȧV5a(yq+:ƦӷE剃B[
mrقyátŜ -鮷'j~R -O Y4~~ͫ mn0,! -DL"CӤAtV#ݭ
h6jAJbN24#\E2DT|@gF=Y~] xB\oPj}
cBؔD8)٥)͛9,%݁[ab䑐@@$`Ԭ0B4rv4:-E%1l -4 -*x)TC)Hl$HI +xڽɎ>_Q? |܁ +A$7&[OQOy5 4QR-~7R82>ZTy ˀ9PU$ʄ)k^J#='$~+Wv?<hnI0{^F}\dwaO#,tZd*ψ
7%\o +L +Hl$HI RTbRh\xAL!ܡ#mM'R9L -QSNk$4:L
"P5 m͡x+OטWGjWkxAՠa#rx=-1I^izX2
.`AO!P&CB&A"L^н /2rc@ -twf:VcԌsN!yA5F
):bWԕsC&_EQEtSHjky"`MU֚6r!\3Ngkn5۵ٚ{v7YStR3;W9N[(-fgD^kbhq>C{ -xT7+N>7##b?"{=g|Ώ&WtϧO'|=sDyXd+ui.Sk'WyӑPb -?zp>?'Oi?tOZBrr9=L!Qwӧ6?v{z9;b;-vu-rJ6KDZ;>=ҽbw=5H&pǛ>ϚOegĵ~={BfY8W}%̐r2;?uEufrRRNh;ʆq ܂r^mƎ7]
I[10Ւ~<JQ&wREj\]"J -Zhaa-Ud;bAy([0!1LWHfJWZ`ƙx,6=/:\Tw@S,«huBA6t~9WѦ]@S詓)uemKMh/CԁB=AMu#cntЈGS+#SZgMpznĭ1rGffi篪a{7.J/Z =z\E6jƧUroh̸!Up]*C-)ܪ~X0_zzδLhU5OOj\~ "ۖRq7Ni{*KM@OA -m'˖t+}I#h7u$Y\7z{LR|Akceu(]zGT
g00:Om#SfAsy9BZkV:u7tf16~fԺ -ׯnĚ~w"({`tgt|ưfW9]=[N4F2${QJ6#.X-6 +QSNk$4:L
"P5 m͡x+OטWGjWkxAՠa#rx=-1I^izX2
.`AO!P&CB&A"L^н /
D +?L;+"ܘ B5PeA=qaQC°ZuY5c +w˫r,hX˺5RcJ1y?S%?~2dse95 +Y "Ma(=*%L1dG9JFG1 +#P̈́h(Z3ob~^ɺ<Yq%5aA/ "`Pq行'T<.s2tNܞw;y&(]兝Qa=B`VH#C0f}rNݿ}dNNbkb)Jec=m5&,@
swm#&~5ל0(fZ(Vr +twf:VcԌsN!yA5F
):bWԕsC&_EQEtSHjky"`MU֚6r!\3Ngkn5۵ٚ}v7YStR3;W9N[(-fgD^kbhq>C{ +xT7+N^7##b?"}=g|Ώ&WtϧO'|=xsDyXd+ui.Sk'WyӑPb +?xp>?'Oi?tOZBrr9=L!Qwӧ6?v{z9;b;-vu-rJ6KDZ;>=ҽbw=5H&pǛ^ϚWegĵ~={BfY8W}%̐r2;?tEufrRRNh;ʆq ܂r^mƎ7]
I[10Ւ~<JQ&wREj\]"J +C FO>V>&!Tt:&ͽa^r0 AMX +enB,>O(~DJ$ACҁܾ,FSNŒvۈIqVA1͠<KI~^v.$32.XpzXatYW.ڭ(6mrʍ5Mӽd{+yS/ShI#%b1~Ҍ@}h*[9u{<&.T-695
0t^BMu~#.u3ޭˌ{:M=ұ2vs:ܛb|9_Ӿ.3yW<v3ڪh!DS\nFv51 +1 U|UT*UG>,˭t1(LR%Wdq33-p +_-{N-Pbdď:(afvvGSgSsy=:BZkvV:ܷxf16~(fOBf
ym#an9-~^@IYӫDc SVnQ,yFh+9O>pV:یܕeC|˸X^KL.ED endstream endobj -422 0 obj -<< /Type /Page /Contents 423 0 R /Resources 421 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 428 0 R >> +446 0 obj +<< /Type /Page /Contents 447 0 R /Resources 445 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 452 0 R >> endobj -428 0 obj -[ 407 0 R 419 0 R 420 0 R 408 0 R 409 0 R ] +452 0 obj +[ 431 0 R 443 0 R 444 0 R 432 0 R 433 0 R ] endobj -407 0 obj +431 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 352.892 745.619 363.319 758.348 ]/A << /S /GoTo /D (Hfootnote.13) >> >> endobj -419 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 303.231 254.112 315.186 266.067 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> +443 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 303.231 251.621 315.186 263.576 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> endobj -420 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 225.413 165.945 235.839 178.306 ]/A << /S /GoTo /D (Hfootnote.14) >> >> +444 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 242.04 163.454 252.467 175.815 ]/A << /S /GoTo /D (Hfootnote.14) >> >> endobj -408 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 105.185 96.542 124.577 108.162 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +432 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 105.185 94.051 124.577 105.671 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> endobj -409 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 135.281 96.542 145.737 108.162 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +433 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 135.281 94.051 145.737 105.671 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> endobj -424 0 obj -<< /D [ 422 0 R /XYZ 78.37 808.885 null ] >> +448 0 obj +<< /D [ 446 0 R /XYZ 78.37 808.885 null ] >> endobj 41 0 obj -<< /D [ 422 0 R /XYZ 79.37 241.153 null ] >> +<< /D [ 446 0 R /XYZ 79.37 238.662 null ] >> endobj 45 0 obj -<< /D [ 422 0 R /XYZ 79.37 220.864 null ] >> +<< /D [ 446 0 R /XYZ 79.37 218.373 null ] >> endobj -426 0 obj -<< /D [ 422 0 R /XYZ 93.716 109.842 null ] >> +450 0 obj +<< /D [ 446 0 R /XYZ 93.716 107.351 null ] >> endobj -427 0 obj -<< /D [ 422 0 R /XYZ 93.716 100.155 null ] >> +451 0 obj +<< /D [ 446 0 R /XYZ 93.716 97.664 null ] >> endobj -421 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F16 336 0 R /F65 335 0 R /F84 425 0 R /F73 350 0 R /F75 338 0 R /F64 333 0 R /F22 367 0 R /F82 392 0 R /F71 347 0 R /F53 345 0 R >> /ProcSet [ /PDF /Text ] >> +445 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F16 359 0 R /F66 358 0 R /F84 449 0 R /F74 372 0 R /F75 360 0 R /F65 357 0 R /F22 389 0 R /F82 402 0 R /F72 369 0 R /F53 367 0 R >> /ProcSet [ /PDF /Text ] >> endobj -435 0 obj -<< /Filter /FlateDecode /Length 3737 >> +459 0 obj +<< /Filter /FlateDecode /Length 3768 >> stream -x\ɒ
+!ApɈPT1>ĜltKs$ -$gnen3uOGv+[Tdfj -'X:,vܘ^O>z4THW%J+|ÿEp
- -{EbHLeݦ -3JyM5uh%lECAؓ}ʎBBs1 -disrs`s$<N40/@ܢgor!ʢс>}av| -܈l>l)%يO_+s
8Z@{𘄱`XM&I<U -9^yBjesYi~;&^@ԽtϜcڜcPw] -~8iJb)Pac^u[?e[_>bsh*\dhTKNJqR;2z yz40'4GYR}.9MtHPRbHdcN4<zͺ8b}d\A]'+)1(\M#ܘӴ˯Iq@[q'SS -Tl[no^ -OsҀ"S2#n9=`@ -8:yyBFUӼv?5G*u1i\\LbҬ1Qy{4۠ʌ]Ō4aZ5d-57)s -OkÛ` -=.b8;R8Vμ$JiGA}û)
#:"TEHGS=_/RU.Ň/r_1KzgXK#%*ޡ50<(ѮE>Z9b59_5h$dרPu l@,t4ٸ0hoĶo
R{zYZJU)kIf1ԝwHuEEh;t^]J~gv*a:*s44 -_}\ޗ8cل]+-ؙruq4Ɩ&;q^fs3c-"Nπyg}Y pCI 6;7Diƽ{T|r:VΜ&thYnR}P9.hs0Ӟ7,)ZOXd$em([^bEyk1_;g}#<12$ -@Q3C 9KE)FWW[ߚ6&={ǭ`nmX:]h{)/uQ +5#0aA@/1[R8FajZ@Nm|"gO2͵>KX(J}JcM!HTwȉg(-ȁWbLD[3$qځ| -8^Rl ،WJ./?^ 7N 5}]1۫;Lݰ/kq+t36TMmp~3qAg/*nwpP5F
},+u-TENnEhD\:boiryMߔsOQޮ -VxUmI8Ű&b]H'-UM=; 4q"e^ss
/0Q_֭
\E4soWއW= D`<LX`&W@=m%[ԤNoT4"|:éW/ !"4 -sTkZ &yw?2;*7%*'&Z)GUW7:)o{<?ViϹBY:սF dx],FM`31HgKQtkNA]P]=`g=fNw01*4ӵ'O}*^ݛyZ28B[m9)C#)'jYjMNVlS4)T5vV:w-%KWuc1fn}å^ߔJ[]Q1RB2A[F69I'fP& -XdC?WT +x\ɒ$
W"::bjzJI:ٖſopwff2I$Òoۏ_?77q){F0nopn\|#^|I#*w9{kAcʬ/idIw$R$|&433gqTbL=^||O(PVU1(R iA?Տz@&hI%mr!/Z(&yp$p$9y$Yk{ąI&ow<jREW +!I?Ҩ0BYFT@Ҙ@L>QxD#8^-'EI6N,ur$3ptzNzڱ>Jɴ(Fgڭ +oPgaЄȝuiDD0jf1*.jc,HE<=ۇIiUH~om +VY1mӗfF8))m'lDWY' Uh3LGbFdʢ9 l
8C +nY6UxRթ.'%P@z
;4,(DOh:/$.J%"44nϣSڈўDp9> +#;XQu8~|{svа8.\"ˈ@P!*SS[\xc[bKٍAlȰ +T;\r +vQ#M⑽I]OgGGlQP])5B#:t"T]YDqqTJ5WRP/l<m-ay,ꝕl5v*WvAfU/.f3 ۬;9A38w\wju8}`ka d[fo
R{z\.OkY67McʹMհcH ٪mlKnخs<bcVߺs;>.pfW}ل]{-9uq6&;q^fc0 + pCoKI;m6+;nRL"@d+wl)s6S|Z^kzIAe6
Ԗ}~L{S^8Yj'SʵTBBHҷŜ>wLڵcv$Gxb\ː* +PT_/iU]^mk~Lz8뻙 ލ[ܐ0ROB[wA:R^*4Zt4r~ Ѐ:@K'5w-l}SӶ'fz~ZGAL0ҥ+A&}SctAFMTMwu4{JtڨUt1skhr$~|$Qw84jj+x+I ^9mHu1jVW2d֨q +&8W{4kxB=eM\RW$qgY-.5Bb*n^3XaW-+0mZ6rjZN)}hX҉wK=|u&yҊۍ5i~-CW'`eR,vAuvxynnl&O/]i^=EAΔaJ'͟9&$-l@ +P7-#´/oBxH(* ^V79l&l m}ΊW i4쀝ʦa8]~wٗ"4Z!t*?Q<骬{y7*VpaRS*هz0'j
Xqq^VFajIj +J.D>UX!dza|Sm-tqFwzӚJ͠x6*-|[kw 4aљ endstream endobj -434 0 obj -<< /Type /Page /Contents 435 0 R /Resources 433 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 440 0 R >> +458 0 obj +<< /Type /Page /Contents 459 0 R /Resources 457 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 464 0 R >> endobj -440 0 obj -[ 429 0 R 430 0 R 431 0 R 432 0 R ] +464 0 obj +[ 453 0 R 454 0 R 455 0 R 456 0 R ] endobj -429 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 338.04 576.254 345.014 588.209 ]/A << /S /GoTo /D (section.0.9) >> >> +453 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 395.375 576.254 402.349 588.209 ]/A << /S /GoTo /D (section.0.9) >> >> endobj -430 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 438.852 576.254 450.807 588.209 ]/A << /S /GoTo /D (section.0.9) >> >> +454 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 496.187 576.254 508.142 588.209 ]/A << /S /GoTo /D (section.0.9) >> >> endobj -431 0 obj +455 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 504.396 294.837 514.823 307.566 ]/A << /S /GoTo /D (Hfootnote.15) >> >> endobj -432 0 obj +456 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 323.794 171.3 334.22 184.029 ]/A << /S /GoTo /D (Hfootnote.16) >> >> endobj -436 0 obj -<< /D [ 434 0 R /XYZ 78.37 808.885 null ] >> +460 0 obj +<< /D [ 458 0 R /XYZ 78.37 808.885 null ] >> endobj 49 0 obj -<< /D [ 434 0 R /XYZ 79.37 449.94 null ] >> +<< /D [ 458 0 R /XYZ 79.37 449.94 null ] >> endobj -438 0 obj -<< /D [ 434 0 R /XYZ 93.716 115.197 null ] >> +462 0 obj +<< /D [ 458 0 R /XYZ 93.716 115.197 null ] >> endobj -439 0 obj -<< /D [ 434 0 R /XYZ 93.716 105.57 null ] >> +463 0 obj +<< /D [ 458 0 R /XYZ 93.716 105.57 null ] >> endobj -433 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F75 338 0 R /F22 367 0 R /F85 437 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F59 346 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +457 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R /F75 360 0 R /F22 389 0 R /F85 461 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R /F59 368 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -446 0 obj -<< /Filter /FlateDecode /Length 3914 >> +470 0 obj +<< /Filter /FlateDecode /Length 4018 >> stream -xˎ_1? d ,hS؇DO==m`3|ԛ巋|y}}UKig._}RB^Gҩo(
R[AI)ß} - -_U_RGGD[h: IR,(Ri^Ɨ[ZHDo 3m -0eŢhIv}!"&ϱ;3m|!+Fd@~l~[<7<XIU4Êcn+:l\$:]:S*)~dO_Hz#"X]dAhجRhJ^'esx/tEv[ƚn.<˫u͐E9XMGyc: -?ui:;9t̛ti\kQ4f!s ZS6
-r֮:a77j;cLAO%^=I*Ԯ^VcgceKk=6QzV8z&t --Օ8'N5g$j<6R4F'h5%OPP"Э9QtUi_2=>:6eȪl[hsZxHr{@1c-d{¹ -.ȣsB\}hL;oF)8,tN<!QW5=/bNɣ`욠suynG۬b䏫 Slհ-Esӱ5Zr}H5>UJR0m~"!X*~m$'}7C*|ҙ0Jrc_uЯ}&1X)TQspa!j-$%7dWH3ϭJv6KY^.v1sW9l3(^o6 -zNӯ8U!H-xVQѾO
.}PQP0Uj} -ve{6U۞;^":3pÆ'YHhD9u%30@J1L) -<\](dާBM
t"c,.hoiW͔ -k8E[[pzUTpR-f}`ptx(>)18O2&98 q<$,!!D8uHzsԘ+0aN''ŕF~>KGx9&w@rC
vW۩nC)0V$sg:U!bt~tqx`y͛6{˫ͫ}z^Ksޓ^^m?m;=n{lO*Rٓ@;<EjN +T敲nt}rJdaz<je70#'![i\{2wͅ"i[gqj \^nVz=l&U<{g&kƫAKfNbcM)*h`1^8|]KBK7܌RƢLK=vA,0+7WH%z2nŤ[\(}j枕=
CșNt2ś?U,o,v7@s|(]ũexp8Oz}9Emh5ԚDM%B̽52M0q-aa7FCQD48c?ףq,G)Kh+9:sO5L;2@(P_c9oC.6zxIǬju -KK$p}J4]"u6Lc*P;j$bxA
nQ~b6q(>V/vǚ=53;v)}p*vra7c#}]t7o26sf>md +xɎ\}
5)nOICCr流dcuǥvƖ/^$ +^ȋ$L')ME)QI)ᕇhKWsR8\FKM?H7
Sן +d}~xY3FhR$,]؋e1[N
C'Cʹ Һ5g`Ќ^=ε
iyse8ړ|r\chOtP-<~'1Q]vїJ젋(&erS KV泤hjbvˊ4m$*#ς.c77<tqx.C;^hD3fvΎIhy<͚5lU!~YPNqڐE<~,k罞;/ԟb~zZ侜K/z{5ϘN.笼TB!͐\%o~܁F8-Ez 8RC!A.&0<:gy#Hlwu54>Y䟫
wX 7Rd^h3$js7?7}ՄL:Y<4Nz +_?,Bƻy5<eB +QhlSNhvЅj:3vi)s0^Xk罏3J`w6v +]ݸ=VH}crVxOuE^\g=WJyvUCvݲlk#$@HG!4^$iY.t4.UN +-_9:/k%x"qCܝ>@<sC>\F7!\֤1w;k0ʬ(PDd`@ t:.jq`~UJh}%@ǜ +
~/}ss +q[kTdw`l}:|h=$y]B8x$]pYJRۊw%'m?
c?ʭ%tԚXʼncPsm}=;gZ+"9KWVVD
g9M99#76hzR(dG}0ԃN螳W̭q53ۭ^iw +b#ghmɽnYrabu&/^V$"بC+:=r)07A{Ňg?Cs~z
շ]2KqĄܷGtnqqq>OCQ0ko)~!ޅBclAqF6k@tv`5zL9ݡ\|z+8;[^ne"h +{}PT
wuTzWUrG;Ύ +sk +ei6Bt=As!)up`w,adCd-{GqNɔ'^,>I@x|B_FYaB
W_6B).(̮Le,w6SFE'+Am#'[p SfoxU£yϯWof?'Oacw9Ҵ{:ؔ=+*1ytxM5N{$#ۣReY(;=W-S"X
hh^%/Tk#
Sk<4VroK!z5_nsӌS
m+P~fo9G.qk~hspt#il>P7.&:[ +fqcS_BX2/,A!̩,F8 +?aRQ߲G埗@ȓC}b·)1jx/^JD* /ܥkliRzKa>z!@P>a8^Jd-%^kõg: +9BCL)ՑG ]2gI
endstream endobj -445 0 obj -<< /Type /Page /Contents 446 0 R /Resources 444 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 452 0 R >> +469 0 obj +<< /Type /Page /Contents 470 0 R /Resources 468 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 476 0 R >> endobj -452 0 obj -[ 441 0 R 442 0 R 443 0 R ] +476 0 obj +[ 465 0 R 466 0 R 467 0 R ] endobj -441 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 141.139 465.557 190.205 479.505 ]/A << /S /GoTo /D (piton:transpose) >> >> +465 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 141.139 440.199 190.205 454.147 ]/A << /S /GoTo /D (piton:transpose) >> >> endobj -442 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 140.107 365.019 149.903 376.601 ]/A << /S /GoTo /D (Hfootnote.17) >> >> +466 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 140.107 336.592 149.903 348.173 ]/A << /S /GoTo /D (Hfootnote.17) >> >> endobj -443 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 488.456 246.77 498.883 259.051 ]/A << /S /GoTo /D (Hfootnote.18) >> >> +467 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 488.456 218.259 498.883 230.54 ]/A << /S /GoTo /D (Hfootnote.18) >> >> endobj -447 0 obj -<< /D [ 445 0 R /XYZ 78.37 808.885 null ] >> +471 0 obj +<< /D [ 469 0 R /XYZ 78.37 808.885 null ] >> endobj 53 0 obj -<< /D [ 445 0 R /XYZ 79.37 771.024 null ] >> +<< /D [ 469 0 R /XYZ 79.37 771.024 null ] >> endobj -448 0 obj -<< /D [ 445 0 R /XYZ 100.292 565.781 null ] >> +472 0 obj +<< /D [ 469 0 R /XYZ 100.292 540.423 null ] >> endobj -449 0 obj -<< /D [ 445 0 R /XYZ 100.292 506.005 null ] >> +473 0 obj +<< /D [ 469 0 R /XYZ 100.292 480.647 null ] >> endobj 57 0 obj -<< /D [ 445 0 R /XYZ 79.37 352.144 null ] >> +<< /D [ 469 0 R /XYZ 79.37 323.633 null ] >> endobj -450 0 obj -<< /D [ 445 0 R /XYZ 93.716 99.422 null ] >> +474 0 obj +<< /D [ 469 0 R /XYZ 93.716 113.821 null ] >> endobj -451 0 obj -<< /D [ 445 0 R /XYZ 93.716 89.795 null ] >> +475 0 obj +<< /D [ 469 0 R /XYZ 93.716 104.194 null ] >> endobj -444 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R /F75 338 0 R /F83 414 0 R /F60 331 0 R /F62 332 0 R /F84 425 0 R /F71 347 0 R /F64 333 0 R /F16 336 0 R /F53 345 0 R /F59 346 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +468 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F75 360 0 R /F83 438 0 R /F60 353 0 R /F62 354 0 R /F84 449 0 R /F72 369 0 R /F65 357 0 R /F16 359 0 R /F53 367 0 R /F59 368 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -456 0 obj -<< /Filter /FlateDecode /Length 3233 >> +479 0 obj +<< /Filter /FlateDecode /Length 3203 >> stream -xˎ>_Q?0ZzAn߂=F -4yIM)6<+4#o -% >ղ0J -,;AXS-؇"9Ħ^>kqEȺ+aƵDr:GJ)`/kVNdI M:5}KRp(IzX5kڥN5!UVͻ/wX^nmoϨAko{Hn2X@2> ,7Tۗhk}e]ؔR T8&6hB B\6cd? !AiHD%2KDEzHHiRzL⬿owwU~q%?%Zq˱ -"z.3:1ȎY0EX6W[@ 44Ȓ, HD%{D L sx-BnE+C5×-|Hti/+G?C@%9ei;t+DX8!Jׯ^"rWrj8;c8Ĵyb#u$">?Eע쌸ou8N -<4jȍȜP}9Yf
@$6ND ->kv,,=-jf97OHa}`EAJ1cWF]7ü
ݣYI8l)ZukUzaGN/<*뼾eK;TG^te>juj4<ĤM6#a/8JQ[FQK呪D3zh"J&\ -9>J0%y192{nAg#W -E*)ZPw]XJZ㫽4Sf^ԑO֚=E~cLc/|rñM^S,Ev8xFko#b5L˅7V#n15:+C4<FCYMs`nx=5
_^֜NĒO8sGDA9=ʩ]f&j3=8"n5FO{-\\!!vR@b!\OiR[Snn3XiGđb -a ->l-/QJ=,%yoyVYKP-&L>Pcu[0KN%2-C::Y0c2ZJmmtRN(u[1 <
Cla̢p7ʈ9GItbgK1l_{َg4Si(
C\YwVnCW1h3Wtݎ9K<DS< -~`Z;Y0XxRlAOM႘$lb@5+=O%}^f_8$Grż̀.ljXՑWNHnti&^NӁRJ-FnkdITڠiꙚC쫴UxJvCsB-R3fgK]KYjӺ~`tC`::^ӤǾd=8gXzۻt;[ڕU`&{V뜡-ܢ(eܗB'vTTBd/R!Rh - -˴j_ZPRoXHoӝN"l;~_@ +xˎ>_Q?0ZzA߂#vDT37Ļ;],H/ۧMzEt$6wJH?=I FJFJ
RzEO/;ߙK9 +ʳ{~W"hdDkB@_ +"KEgb,O߽Ĵʪn_DD&5~){1h{%oϏZ.5E3{)c\̜HV+<0^ۚZ"&'Uhࢲ|@iGx$f
m\P2J:pQ_qTd`ClMYgam1EZ 3asc2tS5u%&lke'QqXTU iՉ̫]i-)t>_k:=V5#7ۇl8-Etv鍀d?}ӿXn_:atNM(50R\
a{0;4i|vm"Dg$:$"=$$ujz4)=?LCq߶û*FytLrl pn3zQߦ3$ю1OV(72H Htma4 sHw*BVF'd䪪 k0AWKP46~ehKAXx1<=RȄ#qU(s~s0/ÉoQb՝]Y$ +ע(˙p,lT-hޕQwRIH>PLH6ydtMHu|zVXpNlgVҔ?ȵE:@wѕ㚌V}]c
9؆%T>XYtsFh`YijEϏhJ2mM5I%jcyR@B1k#=L +E Z #JvSBqw&S`tp +&_e}/͌=r&s906TJ!hDlV&a$LQZ,HUmdb×"W:`&s!d5锄"őpڪT_Ӗ-rɤU6M0m +e8E")chy칲/c\~DJk&ZYJs}&V3AWٹS!xW.bhcv),C7f"_HlaUL}DhXYNqU83r
^ +M\rn'K)Lޔ)QIsҫtܷkKo{O%]kWmT0YgXŒb{sDk N)D26Pb(o]#BJgYUk3@rw@/3L)HPv)/"88-/wfY,,у0XQw`q:sVmڻ]]ޭ(Y;.2[5a(!ltuUm3yt*XbJ`24R$y`שn͘2Rӯ`r50^w"Tإv\'#xd0RORɕtϧ]Qr8fʸdVo8jlݕV +Ɏ|ǝ|ccdQ+~%Cb(djIoZ;6?-۱Mim؆GG!B,jr6#`xrW FKÝ"i\{oe]t>B3ZÍU +xy^rӣJ̷~G*1uh%``J'u_{ϵnm;$&7'0rZZzיOyc'c.Z)-*kFBx{knkAyւRFx []"Ro¡0A|, + Cg +Jtfza~U` endstream endobj -455 0 obj -<< /Type /Page /Contents 456 0 R /Resources 454 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R >> +478 0 obj +<< /Type /Page /Contents 479 0 R /Resources 477 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R >> endobj -457 0 obj -<< /D [ 455 0 R /XYZ 78.37 808.885 null ] >> +480 0 obj +<< /D [ 478 0 R /XYZ 78.37 808.885 null ] >> endobj 61 0 obj -<< /D [ 455 0 R /XYZ 79.37 608.758 null ] >> +<< /D [ 478 0 R /XYZ 79.37 545.962 null ] >> endobj -454 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F75 338 0 R /F77 339 0 R /F64 333 0 R /F22 367 0 R /F65 335 0 R /F81 377 0 R /F80 366 0 R /F84 425 0 R >> /ProcSet [ /PDF /Text ] >> +477 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 356 0 R /F15 355 0 R /F75 360 0 R /F77 361 0 R /F65 357 0 R /F66 358 0 R /F81 401 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -461 0 obj -<< /Filter /FlateDecode /Length 3584 >> +484 0 obj +<< /Filter /FlateDecode /Length 3276 >> stream -xɎ,Im` - Ô㲬veye&^%3gfZ. 0_n7h*$PEQM`o3(V+Ԧyb,cYڿ~/)1#Ep0p4Ud_#,?/?&?"l/i4&V
[ -s/* -fdZD!GO)RV+cԡN:cg{5sIY)NA?4qG9ˮ"Ϊ:4ۼlR;ypUа:RPGPZ
)y|ϳ(4&{xdQ@x27C|={r#`ހW|W/ zELGJ\&;=`ncB2sxeӣCD媫РlܓDב-fGl\ ܪg/n8Pi=Kn+Cf̺qe:sl`VP!8Y%Q03dM]J\BnٱjFrmWJQb+Tm,;.\da;TSβ)e9[8yU,@Ğg[x
#'tq6YmQ{ -ϥ -'y`Aj968W%[9XG)#)1= !HESvwB]6@W!թX5KɷkmNkS8W-;ahOGì%$Tlc[ZpgV1.>qWso2GjRTJI1ָKph9-KsAK|#أu?, -+Rhpcg8Zxfk}bH(""[]{"8INw8*ՕH8m9 -l^M:TՓ -m's(.1njr(JwY.B+-aoٛ-;+1A{ʀ\h -gyg#Mw|Wܦ 0O.$qy w·I#ڔo4?FavXa&ot'FHsZ9T፳bnBE G^mRtۨ~xSGNU"ûE`ӡmZ,ĭ8mc[V&͞^R|_a_Iz!YZH>-04XrXdΏ+7+-,@̢p -R;*?r7hnߥu^k6oyJ3i' GoNya^܀+oKA?62Xʖ ->{G]!bT1IǂKՑ˓ќO_E!-2O -ƑӚnZS\cmYi<< -e1%~_[ȡ<d."|KFE,{9!u N'tmld [A*s +x\K#
DQ/m[-A9$zTvf`.WH$KaN$Oooo_oO^k?}:IOҪӷ_ޥijFIi|7}O6}뷟W̌J3,$fPXp߹:̀5f + +*0%n-3y/sg8cߞMz8'_ʀѵqd*3E}&bIosHPQn2=h5
br#uF»Ǯ0&Uh,\_Cn)ӄP:NX$:^OdX-ncl'e?7Hhun$Q!mף)BI1VB}i#kOi<qMfaZf<=iDϜf9OY\fmZσV ^@KhDVGF+ZRtɉUZjN\A$ K(U1WOP +QW/" ^qSKTb߽:;YeEJ!e
Ozp>t<\jZ_3fl\9Sw{K>t9;%:,p&K<Tg)ҷds>[Yk.
e BtJFsJVĊ%ɝEƥ5cd
کe+S=ags
ZJ7L{kS6):b1լB{٢{VqJ:YœѯF#\C0E酧 +cڡ+f+덡~Av^dvn={a|cc54VkdQ*moLeэLWNPѲUr7= +iE}az/@2w"0KEC +3c1y4.|ɳQ.ʊJ~ݓlƒի<t.$#-K3 +46a#h_=Bz(簥tKREij4RqthC,X{
@-vjCUo;,Fy[^NٻZ6v7̲(ڿ9[K +oqF8**j|,}cy=+qNjKN9Ǿ:٤;C❞KbǡxnmD*HiƜ89ȉ {ڄ)Th3UcƇI1d̍H=1o(=qOdSFV'rۂ6Ɯcqe\=ZSIcZ{ecڸ㞨gxb
MpɉDALhfҚQXABvrhF͠KE%ͯXnU@ev4r-qX,v A+pcn
J k=F=:5xGA[Y(jIMuϕ2\OwOGX-*7;Bg˺s>GLUX$V%h[rwmX-ʧ<߇NǃqXs
^U!B*em
٪﯁ R"X5*_*KeXa
\v
{sF7_{4qq©d\F
SS=;z=9LFuu
$yU=R|3>zd~-yuʓS?_Pb+Z::r$s,Wr D4x SekI[ A*T{zFeQ9a,A_4S}p:K\
z"v2T.QύV2>.·fz[ + +5E>2 ҳTSuj4T +,><6eeQ-sA#';UHy馟&8?3?)۩~{g;(o~}~lirO~V2NFM+MAa|bl8iB'NjuÇb,77ֲ,j.rugIEY#t,w?!u|P,
d䤃ȝ]sa$u~JQCy|].+LugrP{zzŶZwߗ.Z3!|vtv~j6o@Q(B]%} endstream endobj -460 0 obj -<< /Type /Page /Contents 461 0 R /Resources 459 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 353 0 R /Annots 464 0 R >> -endobj -464 0 obj -[ 453 0 R ] -endobj -453 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 496.645 745.828 507.072 758.348 ]/A << /S /GoTo /D (Hfootnote.19) >> >> -endobj -462 0 obj -<< /D [ 460 0 R /XYZ 78.37 808.885 null ] >> +483 0 obj +<< /Type /Page /Contents 484 0 R /Resources 482 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 375 0 R /Annots 487 0 R >> endobj -65 0 obj -<< /D [ 460 0 R /XYZ 79.37 235.148 null ] >> +487 0 obj +[ 481 0 R ] endobj -69 0 obj -<< /D [ 460 0 R /XYZ 79.37 209.22 null ] >> +481 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 496.645 674.097 507.072 686.617 ]/A << /S /GoTo /D (Hfootnote.19) >> >> endobj -73 0 obj -<< /D [ 460 0 R /XYZ 79.37 186.6 null ] >> +485 0 obj +<< /D [ 483 0 R /XYZ 78.37 808.885 null ] >> endobj -463 0 obj -<< /D [ 460 0 R /XYZ 93.716 101.443 null ] >> +486 0 obj +<< /D [ 483 0 R /XYZ 93.716 157.212 null ] >> endobj -459 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F65 335 0 R /F74 337 0 R /F16 336 0 R /F75 338 0 R /F84 425 0 R /F77 339 0 R /F64 333 0 R /F22 367 0 R /F71 347 0 R /F53 345 0 R /F59 346 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +482 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F84 449 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F16 359 0 R /F75 360 0 R /F77 361 0 R /F72 369 0 R /F53 367 0 R /F59 368 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -468 0 obj -<< /Filter /FlateDecode /Length 4258 >> +490 0 obj +<< /Filter /FlateDecode /Length 3376 >> stream -x\9d
WthC]55AժRf{3"Ru<uϮv@Ar]gހQO/J_qW9~2sy?xUVe+[˧^8a&Ǘ>.fʻՖY'/op$N?/7ZU(Xh! -?s&[U\oMN3"CGm
H.4ZHOoD)}UH}?%:!o?0o-WkG3֧s$%BrITfʊѪWLH:K
X{3T|&)5k@3U*wBOH#/ݣ5ʮ(gny[G][ftJHo6*ኴǣ='u9reBvFR=O+"ºKJ-z%<
/m'r-L,Yι̢U,A5l0RiȠJQDJzޏK,Kf-0%B&]KV$2־5FG\NUm(/0D9vpR)6=jQ]BmV}IVG^3Ɓבc ar4:a`XZT6|x+ĭ'* w)+35X}/C"eeV%6
zo(:~'iΨCX2 VIy&z -[(R1%QYgHhZ7Fkn;T֠(*@Hߺ1u3U٘t?@JY`F1Mt){b$ŔO;I)3~"6dkFxcO -f -9@2֓}uu^.L1mB)ytL?SB>ǥ<'b- - -9fg{}+HFΑuu?R-So/HAJAMtkCqؼQ,e>!BQX4$eNB=[Q@}jgN(7)
Ϧt_T -PzlAqܣ% #YƩj@Edw2`v 26)+TJL(ԓ&g,+r+p -4rD;OA⌮.$GL]35\wot@}xTkeOrFE?u.@ϵiL\2hDZPK#U椘UY)F2$ȜGY0Aٮhd&z*{ -5ljf[r3%7;|6؝!" VI5=]d&]Ebq^e[L../h3rp9~
c$o\Qo];(aRtzf -yfyI+mE ;2誽0U{n ;q0v"K8 s&XN2:ƊV5&/5&Q<`[Q{j!T`*w\
)OW6T2eCOPKwGhWQ-KˊJZ[;50QW$+
#OHFfGTLԦv|I0;kROUiL`M˲k[dJ˧`m!_鶾#G{]u*hM -r)}Nn߉,Ol43t -XB: -]&L]JFisT"erYIaxSk)slbB[[bmkЁLɓ=dԗHVXT.ۥBro6r* eFLq:Iq1Е@-bvaj4؏4p`nq+e<bjEݩ͵vmW5rlHSQ62yW -! -+42}`LS<@('H$O^I$0hSz)ei5:f[(]}SSe"(/DɩƳ̬[Bo'n`
uQTWN[\1z"Hau"*Lez# ;#^]jZ̢)Ri[Sc[ O+jMHRoMkH"t3ieHo|Z[
gʘlӮY[Sx>S<bo_e}V-*|YL[ݢ -z -q3';Xen=nѧI*n!OmH/5T9VN.zɮ햛L| ᱼ)>WdAg;Ȣ-6\
]?`gu<0^N7^L>sLrNtHmY&٧d I.>aNR,/?^ӕ3Np[o[JMWA$WZÌC?T-0ㇹ'O;)ӆ4N3<@XõLKo@Ck^Ȳ*X7<;+a -ʉ'`bs`x8+`ahPmrG2%`C*}7~BG*=vx8%JS.zW"bV{G(]Pnmo˾هڂ<e?t -ykCd]ppUq\m]ˋ92V8h↞h.H\;w;ZT VS:{JN-4'&q-YtVouRJ'^#0=,f 58N=yD5y5c)yq{#gk +xڵ$-X=,p#?L>v&)Doyo^N_~wRĠ.?ξ~SRJS]_^:ޤwJitzxo4E,'iKADhLʆ6OW@NwMz2q5`%贃
B*x6# ȏ QA+*>ODBi0Gԕ=A]Jaw!st$@_~|o/.z!C4 +
I3ߞt< n"z4,;$~ƝҬ\ȗyǻyL~ĩ .T`><v붣IRb[\3pg5ͦec(].Ẍ̵*t}cJxe]l6/Pð)<<FX7TN)? I3A87~K5:۟=rpE'q* 1Xv-좫sl&P5#/JŃ= [)ɾp轋I$!bv +tFĐd+{1ZeoWF +X^]2j#5ļmۮyd'#sOɓnUV$YxnQ#SJF|j8L>}Z΄HH3w\-ORmP4`8#FZa:`#&ЮFZ)nTDZFG`G!$NaD1\:LXtr&7$r4^ %O; IhtQЏ=崯^Jq^}Jt[qg;@O;;Шi| ~>TP%р
~Sf|Mq[ +2a w،ZhF=| L5V8NKz&MTRਃ gz &.PN |P+30l\8vܹOVzZ!\%
nVg ƏӛQ
[li,LVݍTxVTF7=|Vr$ɿ&9r캯}|#EٱU"ʰʁN@M7vg"rzHZyQI3?KD[lbs`s-f&>8R%e:x;O~&ꖜ_Utrd{jUfPK'vĨ9#S D')N%W%Ř0|% +d"aK-)Q}$FW*`˅k-"ƻ60!>U"ڷnOUW#C6;
+1NF-[eĩS%3 Hj?)brcY5á7l&P`{LWpvIWP;( +b~ݪBˏFim gӇ}@^/NkAm<mjnjAYaءWucSG)m$ھUں @a'H%qDK3 +h~nvK$%s wቯIrRБWUg!t3RE:0q½Gӫ+鑷[Wш|GQFƦ+sFMˊQIK捌<Kew幖'& f&"BԐ`JgtRmA_ аvekB[. +>爅vǍ-;4}Ҷ=MgVHƨ]T:T/.6hڎ NL>,@=jc/C|l>Nrzwg[`ӈwRu +6GHz(i6m +9}Qj:OL[Q@کeB=\ڵsl楩Xĺ9Tꋽqn9L̓DԹhƚ endstream endobj -467 0 obj -<< /Type /Page /Contents 468 0 R /Resources 466 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R /Annots 473 0 R >> +489 0 obj +<< /Type /Page /Contents 490 0 R /Resources 488 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R >> endobj -473 0 obj -[ 458 0 R 465 0 R ] +491 0 obj +<< /D [ 489 0 R /XYZ 78.37 808.885 null ] >> endobj -458 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 404.583 756.787 415.01 770.303 ]/A << /S /GoTo /D (Hfootnote.20) >> >> +65 0 obj +<< /D [ 489 0 R /XYZ 79.37 771.024 null ] >> endobj -465 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 404.84 506.735 415.267 519.245 ]/A << /S /GoTo /D (Hfootnote.21) >> >> +69 0 obj +<< /D [ 489 0 R /XYZ 79.37 750.933 null ] >> endobj -469 0 obj -<< /D [ 467 0 R /XYZ 78.37 808.885 null ] >> +73 0 obj +<< /D [ 489 0 R /XYZ 79.37 730.573 null ] >> endobj 77 0 obj -<< /D [ 467 0 R /XYZ 79.37 493.776 null ] >> -endobj -470 0 obj -<< /D [ 467 0 R /XYZ 93.716 115.635 null ] >> -endobj -471 0 obj -<< /D [ 467 0 R /XYZ 93.716 106.008 null ] >> -endobj -466 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F16 336 0 R /F65 335 0 R /F30 341 0 R /F22 367 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R /F59 346 0 R /F72 349 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 489 0 R /XYZ 79.37 417.857 null ] >> endobj -476 0 obj -<< /Filter /FlateDecode /Length 3279 >> -stream -xˎ#>_b K701[9qN>$H⻥X,E_$קׯO?ys":p'u(xtߟ#RE?%<FxwpRzh85qL}qS g l]'<dq-xM8њ]^ ks5i8?IYӗOWZ?xZ(/c7|P
Xv'fAXEr.ԌkH nP4GY-̤Y>K;%2(' -y$K3wp~TUk_:Eɂ}&Eohf$J:Sڱhd19#u'Hiw摱NXTΉG`Ҋ߬xD39p0*(+@7Ue7ѭ_~*K`O?Uتġ>8/ &HzH:UC9.>N92Sj)wI$5eLl?Hy_m|2#y6EG<tą.**U#@ݡL<g(hVȎGh&,ЛDq#!y$(f ?$r0'(DRĀl i7&ko -6^V z:- kٽ|@[fY)0uw -Q+]i"W-<KyFWYԡxF2-u([VwNRj:jn
@z4Ec[[`y}22&E(Z%Ww)A*
PQ -',X}F -Z:4k'KܲX
qROݹfy)
1ss=%V*q]hcН|:
08J8{H{ \ybш_W[ȇ{'2ϵ-#ٖrQ~սKV -PVBv>u(erp*Ś3zvR1)S@g= F
Zx^$ xj2">Ϯ_!(dʯgVklCD|B"IݱqNA^>i߇2n9 ۳
Gl|
;.gQۭθ2V`=B?:gg%_ι+>!YM`=}̤QD#rjLzM%
gssW;cOrLI^>UzLX?eD˖I77l^>/x=))e-I!iqmuF ¼[b-[<-P}ڊ}ewǹo]You^ -+8 {OFs -Aje]`)MՆA*1{1u=9L{uW⠇?88wQ~AX"6<2;q+D3vHB3tDH\RmqFTj -iEH_/ԕYYaXL -Q]zR
SˣJVAa9s#]1ܶwh6bK4e0~~8duČ^5ϟX qBNARTI
MwҮӮ6&Bwr]mTg^6#fgj;\zvg2plQS_մ\U)u#Vڃތň݅?#M8w3IGLqw&ItbNѩCtFӫ;h4NX(tPoeJ}MĂnkCv8fZnaySV6veܒ(.-li[`2*v4yr7'輩`49ܦ͜Bq>7MUdJ)o6 /;CQv> iQ ,y)Oz7:MA.̀/[CBBtnل(U;1]l>RJ.Zr""k=ְg$pi"ן eP2aS.Ơ -'AziCxcxŗMhew6Vc)誴ʧ&h}@X.'2@OY[|> syʚ_!lxfz{ -<6Af8ߺUy9Bv6RW8@iשּׂ^TA.x-a9tiY6Y4GMK"Ϧo -V8WO|LBz.yٯ^I+; n"{qYtHsgG'AEdVww.CWZz ->jyA. -!3. -ٻ22 -~vk|UNvij֯ݍڻ-`t+wگ3uXL)2"V\WG+NC{na|wtP,G,K_0-aēnLUf!^P
-endstream -endobj -475 0 obj -<< /Type /Page /Contents 476 0 R /Resources 474 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R >> -endobj -477 0 obj -<< /D [ 475 0 R /XYZ 78.37 808.885 null ] >> -endobj -81 0 obj -<< /D [ 475 0 R /XYZ 79.37 543.021 null ] >> -endobj -85 0 obj -<< /D [ 475 0 R /XYZ 79.37 403.621 null ] >> -endobj -89 0 obj -<< /D [ 475 0 R /XYZ 79.37 323.559 null ] >> -endobj -474 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F74 337 0 R /F75 338 0 R /F77 339 0 R /F53 345 0 R /F30 341 0 R /F32 327 0 R /F64 333 0 R /F15 334 0 R /F81 377 0 R /F22 367 0 R /F84 425 0 R >> /ProcSet [ /PDF /Text ] >> +488 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F22 389 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -481 0 obj -<< /Filter /FlateDecode /Length 2821 >> +495 0 obj +<< /Filter /FlateDecode /Length 2660 >> stream -x[K6ϯ?`* -hӼU]-!1VoE.|*6җKy IhƩ4b7hV/AOhYQfD1=QZ'JF.W -]Sօk쵘U[Qpjz*&F$^ -դjsQv7(fT%b?Y&A5gڷBöiTT2^"vEe#ZSOad34V1LU{;8Yk#4gBnM P835kFqoO-nHff_<rt%Oju~H?kU2 V`Vm78cYqn VT5}c -P殔#9SlMCf1h4#e0=](@u~ckkX!Vu&E`:V@RڦݰqMRPnrOj.ffB+
`NfyZ,}$Ku> ;:eTdTƆH-w'4PZ{F.4@.2ćhlkJc ~OWcBuaw-c"+.>8BUU_Y+>mJOsK6V§0TKiUm"f^#kE)w1^D/P_2mJ-{ԒSxT:+UֆAD>lFW>ZX -i9!C&iikSdn\Ԫ^3nca(ke6{E;4s҂<}6G7OVBPjn(4: +xɎܺ>_?` +0wcnANA^;!ť$nZ==~D־S\s_^ߟ^xEyI]$UJH._,J ^JTR:M t|1`h+|i
-_}NU^!v뷗H$0p{14t`bLD5pqҸ +cTeBTExc5S /&7Kg˱R 歜rhuՅ4 ++\݀Qx#5j[jVob~VE'RC~UPyȖ5.qZUUGs[yÞP1bT}]Ov =z_T@Z\HkddX,@lE"PƵb#2iըusOg7N MMձZu6Bbe7طC)R>\Z-Sʭ5أpH߲H,y32$4khTZ9X(tV&K;WgWpŲhTr\ +wJ~8 GS'ܽ[]Q+qtd`ҡy*ؕt +L +T|_&FvS/JR<Q?}KE|҉"~ $9I6BAK[B]FIup@'R9f=6[6Sj,c09gj1[`4GkMI=|\1i,u'5*f-5`#D{XWavҭn''$W*-|u6.Vh_v;-r39mۢ9mq*E!bfӢHPc3I@~o{%@as甶JE[i?Y.<ԐS*?i1IG?&rhNd1Bn +vw9346z-|dKqJf~`zN6p<$lgHS,ݾp$UtӇ9'c -0Bq0t3O%^Ѓ+^ǵ|my5P-7BnR?~Y.e99jQxK&s
BJFX*#ʚòR0E^֮^F= -/<sr\@lfcmsRWA,[xi%JecWo6LL\Uauϧp/R(D]叧.Q<:+ջVr#C29-c -t*:eKr83m{r^mNIq4ՆYr{.Tu8ch~#acۆLdPNV/rT13m~i~zs]'_fW[4(UA5/ƅ -⏹._wZ
v36m\6#1ypqP($C?+2j!(gƂ - <Iؐv
&[2F\hi&T*IGv2VK).lhW9o7hӍq.t{ѯ^ؑͭ&q=hykicN49d!-N`{yL(}.z۹-^JsV>Rǖ9۹vt$oyяFhWFg(㶾@0p#as
foC6%?k'֞C.$[nvs Ca1'yCZk7B>ڧqUo^zKZ%vZyqɂ%ZzcHa3{FԽ{CsdQF Q%e+ϑvPo[VƊE٭5IG=v(-Q8 -Baw Q15E܃̏lY- -,G
A.sp;< -UD -ɀFPM -Z+^w+$,A\1_S;ÞÓ'AS+%ϵ2\,(j%PDS(Q7J<Dҫw@&=%F(Q7!(QoDOD#G؈|H䵴߁uk>rDs黠Ds:swQ"&DNh" }%ށ4ΡD쇣DmNDh(Q?xku3uPn?IaPN#{ϵZX?Js(% -'=v&wޏM/}Z8${nmz0Hޥ -iwUxH@:Ux,$R+/EC
Rm;} -\DcD}Gvc9#=MM)z]s3k3C5(0KrXVՙ0Z%[hY#KPPxjMZl/[;HΜ]&^\H${7(r6_#S{vpxՊoAi̚y.;d{T+GSD,62qRLfM<nV<NjeyI7u( -jn(r<{'k~N1;İIP<{ݏ
k;X
=$Qx>ᥥ6-oE[b +u=S6%tV˱xlqk`Gcw7^ejquuH28%3@
VGbd2ty<D٠yV 2|-oJL6*(A +⭼TCc^6SvVϨHd[jᛍM͒QKF}wwKϑG\RܧJ>˖#.GeNp}Zc;yé65|n_V;ķDI>Pޟ(Ei'qorJ|U2$7 f +?=lq눹9Gl܀4Q/yRO%3%
*1MOt?ӑ2{ty:'[4Pfp2(?st;CX">|-~MQ;/tru@NM'&Gɑ +Nh?`1=PQ0CV?dKsA'&IɣX7B9,4o0YR{E%O%uݝ%9O(:\wΒ&?dc4Pv,qn~,щYRO,_ɑWYRGA?,[=(02#yϹT(u,ˑ,I-,iB=;Z97[;&iƷ d@H{ߟ~ endstream endobj -480 0 obj -<< /Type /Page /Contents 481 0 R /Resources 479 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R >> +494 0 obj +<< /Type /Page /Contents 495 0 R /Resources 493 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R >> endobj -482 0 obj -<< /D [ 480 0 R /XYZ 78.37 808.885 null ] >> +496 0 obj +<< /D [ 494 0 R /XYZ 78.37 808.885 null ] >> endobj -479 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F85 437 0 R /F75 338 0 R /F77 339 0 R >> /ProcSet [ /PDF /Text ] >> +493 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R /F85 461 0 R /F75 360 0 R /F77 361 0 R >> /ProcSet [ /PDF /Text ] >> endobj -487 0 obj -<< /Filter /FlateDecode /Length 2765 >> +499 0 obj +<< /Filter /FlateDecode /Length 4114 >> stream -x[I\ϯx@Y܁ -J<BOȱ -VV82cÅHH:X?&f&6½/KWlK`.,GJ~qC60Қŕ_x85+{VF* <Д9p -JqYm.MC7fk8זO$$\
|p{c59Ei)dxS]- -;-'D_a(dkiI5Kd,^=ܟuK\ -zݜ^\[5=}DQ\0[dfǽd){moq&x}pN0 jgī"tZEINK}Ԧ!e⢇BA1˖7D{UٵaStNZhvCcUF{n\ݶ3ZVAnҺRRw>(Loz?m97K1h{3,k#n4 -Pv\SqN~QgaOu-!j &Iy uiUV>ܛq؇x-zﵱ]ي+`
GOJY7HQ8jH/i5kl&[%q=NѦ$|zd -ݲWVʊ֕YԤ隄I+ w_#oEI^rM7;LwmwtP0ן0IQoJ6LY,ZEo) -Y·.ݗS:|wdw/p+[=̵$D|^xܪs$Aږ̣C.0B6G1m\ ]Vrҁ]r~BK"}g9ӥIւHx<98*/h !AކJ+K%S1/-^?,sW8ٶ#9,xs$"&|-Bqh5-L.SN1rgU.e҈, Xbx SyYP/9k}Is<<; -4eA}x;<s-9z6qXzV}7K`H{ΖUnpN)_mo-h7@HQ?fi&~o{Q QޥKhzY'eup?Ar}v#e8zi{Ы<6bFl)qĺ+G0baer˴D[#zj?Ӧ,?8"
v{XsT1Bд {?(t%~˯8H}&_<F8E{OO(fq115v-<X]xzDz!-*TT!r}keÈT -is)ҋ. +x\K
ϯܲ@HxHN1|r +9{H!tJIQGUt7/yF]$Lڋ5q#.s%Ij\|7 +F +ݏʳµZVF2״Kmt]ğKzz4_˷i[wTޯY;XqLx],˵U4Ggkz%Y,FzhYeWUyyե
T4x4t?ZfF2xXMS|:ܶu#ݴw%h<GÚd[Ҷ*Nvv%AckMPV0D$GEvV$c4s'$q}fJӪgM4;%rF!FϤǿ +c}82@C9φ;0Ob~Ol!FG!M-LY?o
zJȘVE9FIV1&\*7d&S )c
G%N;ː_Iu_HP̈f":C.c2{#;Ui;D5A48>
xgot I-_0*NcJK\\2$6pj"r@RmȠ- U#jja-_%A'R[2@жXv +X\YK-nM'IFo<',rkyn9xU[{1N|tN+͙d*]_Aۍ=>L;l4qȻ$ٺ^
Mp粷Zdr0<6I@?w@E$ +MkkJaI»L;b) Z\ z?@Κ@ߙ<obźytnrYGgM2Lqݚ`U "vc^2C_rXz6y131tU5m|Wt0k[v*ZҕQ3jAњY<tlTeiu66иIz]s)@{syX X1k~a[,UZ"դk,G(Bv:ymiM\s`^{>U4$&t`Pr%(Jν00} 7s9tmN;MmᎣƚ].E[9%"B'#Q n'n`mm}r +b}O3@"U'Hb>Ώ<&qA0D|돘I!aPN(;EUg.oF%W!NCW7v'f]@>өNC$}BU+R`0\
ުvr9F4ͱd<YhJ(/rrL8g|7% x`|ՋB7xr͚p]6#{mq\TVi7V*3քlhs'~؊3-gS!#FJ +o`x +~
l bVOx^SȆ:=,hkbNVOgh:Z*p*¦:ɐsxH?aҭIǓiZF-MF|h!alCjL
'6ǜ1})#Nu檒pL** y=6([#l^ؽPMщ;\$F{ +rlvLƨhcbD#)ҐeXDpb(H<jOWrF;o}j(ɑ极ˠʮB"FکU4[%̺Q^Ns#37ξwд=/QqumAsjfwRφjnIvKziw'L&p#٘d]ɇ`wW5KEݬj֩faO|~ƂX + }exhu!2mx^սL|>4PUf +#x3b)j?%TaרRb 0Kp3~kВ)1U5_kz#Yw]tM}av9<m39IXuBfq=K!(ҵ-֓uX>XO09~ĔZcO4;NMĖzĖ&B#)C..B1,UШ@%/2o9zV-.K8$?\S.}?TR% +Lv]d#WQSYɬ'g.s}93~*M뻚ygJG!C:`?rJ#43\jbK֤j3vnPdd̶vLR[ևW_5F;=LrhNII{2@=<;$3yv{2+ti )i$lEپ|jPRilpIc6EJ*гλ+
"|? c]Io4#kwY4s"5n+}͆,
2(I{_?BӜcF=.ϫB7@:(h)RvsDF2ÜYn8Yn8]A[á#gH7K'I=}Q0g\JMc{]i!Cfbo-Lhi].8˰)IvDCTϥZLr=;^p+Jiq<6m^ +t<tw&'ᔑP0h;QԣD)7yujyK2=RK5Sl9lV}il$kFϸwzXsO=q R7LYyHϾY+;acXϛdnW+w~&QZW_R}IyݐD_1cM鑰r_*iUߡև@@7>;]߿$^U=;u[D_0%RjoZ1啅sQj:H4.E(HPҶe\{dzEA#x`c$z`Xn&/ endstream endobj -486 0 obj -<< /Type /Page /Contents 487 0 R /Resources 485 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R /Annots 490 0 R >> -endobj -490 0 obj -[ 478 0 R 483 0 R 484 0 R ] -endobj -478 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 184.097 678.844 194.524 691.135 ]/A << /S /GoTo /D (Hfootnote.22) >> >> -endobj -483 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 246.892 626.6 261.617 638.555 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> -endobj -484 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 274.568 626.6 281.542 638.555 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> +498 0 obj +<< /Type /Page /Contents 499 0 R /Resources 497 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R >> endobj -488 0 obj -<< /D [ 486 0 R /XYZ 78.37 808.885 null ] >> +500 0 obj +<< /D [ 498 0 R /XYZ 78.37 808.885 null ] >> endobj -93 0 obj -<< /D [ 486 0 R /XYZ 79.37 771.024 null ] >> +81 0 obj +<< /D [ 498 0 R /XYZ 79.37 677.527 null ] >> endobj -489 0 obj -<< /D [ 486 0 R /XYZ 93.716 100.579 null ] >> +85 0 obj +<< /D [ 498 0 R /XYZ 79.37 657.017 null ] >> endobj -485 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F16 336 0 R /F81 377 0 R /F75 338 0 R /F77 339 0 R /F71 347 0 R /F53 345 0 R /F59 346 0 R >> /ProcSet [ /PDF /Text ] >> +497 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F85 461 0 R /F65 357 0 R /F22 389 0 R /F66 358 0 R /F75 360 0 R /F77 361 0 R /F53 367 0 R /F30 363 0 R /F32 349 0 R >> /ProcSet [ /PDF /Text ] >> endobj -498 0 obj -<< /Filter /FlateDecode /Length 3467 >> +507 0 obj +<< /Filter /FlateDecode /Length 4653 >> stream -x[ˎ%
WhYh=k;'3rl2xUzf$3%CJ%oOO&g|O?ܝ,X}I7nҪ/__NJ+4JJ|{4y^< -p - }6GJf"|
\5T}(ߒ2]{PҺYb-(Bli&tv
p[pCZh#@e?(cbr# -lDmm ghTJd}{+ʖq2ƳYqOsEPP䱜lI{͘=m^9!Ce!w" -S)Ri6v>Ka4W9-vcR ;36Uals2Տ!<j5SBc׆AByX(\z6U8q)zI[CJ~To=-LA폧_*-G3h)>%⁛WbR?{]C$KUɽl?.oCQJ@M3=00nߧh$u6bmN:ɓ ZAi_W{g~RTj2.)eR3p¨Pt:b̾=+^y=vqjTivNV]v_vݬA=Xe7{etޕTdQF ྶ6XdZ%1GUl m֟ꎽ/48J73ywxapGJKԬLiިth3tThcEX~7:a{W-Jm/?~GTDMyH/wk.r~ұZfGJo[ĩUYmF?HN -42}xBnljli|
@&EALp_ת*@A\j5KuM|n<+;+ǷruYO]ձ5zp~CNt.Ѯy<E$$Q+ZZa?cilz~0o(:r7 H$1p!l_N-=wڑX"v8,^mP~ISedI)%>$ιeOq_Q9exɨf~5Z_-/2dMiiD` -qQ=N.n=H%R绊~!&j'Wsv -z18϶ի@ -YՈ
Qg,k;,zy5KyqJ$Z/KW~t]Iu|@;\h_Y_癒nc}3>3aNqd+\*KJHާ{vS'a?KF*Qۧގ-r蘉G@U]u=iQVŗ.""س6jV(K@XJ(i-?ܟ͞FYJ +x\9dWthC#ٛ lK-V]<5~Y,淟oWo +2NTm848R+&w'YZd']p7i;t_A$
B"YOo0ORQP[B'7XoDT)7q,|p9O|~/H k\x]~L;kw"74`{@Ըk>d'8ݬ[g}F<QHS&1xS$ X{32n5m}Vޚ% |
FvV-r3{<V ++Od*4~8.yV$Xߔx0dR|`n2Ż&KxΔ0#5ͤJ"k%;]A$
OT'*V~noO/M"Us+f板꺋hW\\1=ӣiXj;5b0̰p %ȃ2Vn*t+ +ㄺh2V# 61o eRY.V#C"ës Ն3 KF[)?ϻzǴGԽ-!E|Ng,zOZvm}+JuӬe3u}ظWB#L4ZqQћ|x;xLOݥ<Q,Mw"^5TSl@2[=QMv>+n))7q|g{.ƼJޡQOچ*)wO#B, 2422qޯDd&Cvc$_[HaN˝BWjd矠R>YԞ%/z`ɪ _˫(ZFUmRmr<7&v;Q1_6̈2o}0k +lEڙt4(ByIc$Rfrō8t#Fh[C +x+؏
ʍ3IY\S RklSoWEnu>=$3[E$z|1ٶ]jDq0#ߴB5N*1<ZU;Յ)ξT(\]0Fk-\Vpum0bͤ.ZƈVeQl(jQ´J+HT2HѲp]|T4=n(HB,9ʶ5t4̶BpnS +T.
{Gppi'RK,E}$./5|cׁxרH +?F{Ex=H^6# 1Z5F3PU>54M,|샇
זLFYBղ6\pb52u!+^[)ƐWЙPjdTP!
D
T2Zt(c/CH&ljL7cAHi:Us09*EG +_74k`v`7ҠY2V<ޠu4p.gʋgł*l~[DO
\Pns*%H7c[XI"kI7`Jmq|?aXtɝ"WVZ+n%4Ɗ[0^vR:ìPX"&f"1`
?C|!1$l\ejNVbR1Phs;fʾ滐0u.XxNdz1W}6XmtsFA*S4Hf(+rN3c
R=4pxZ$uuG1nM-Bgv4=Iw}wxJA[k8*cV*B& +{:qiPBrdٵF* q&>Tͫs#c:WJ\qlMCrcY*AM؞nUQLYJRva["kXFu ndD8y([8gS1q6c +Ax<9WIOl|DS059c+5GC+5Zt{/zr*s c=7#hgk +.3f{]uyjC03/ڸ4i-C%Rtf{|@
[vW$c5R +hϴW]sQ/] +*YҒ0s04uK})͢{Ugaqήՙeՙyö1>S4S)iiDb(=e G&VG&hMlI9<ì
w%>O&ziJ4ن*z}ה!(pJ^Ifv(7yg +8 +jj풽k컃 Eh\52R_Ӯ09MkSRեԔgxpeSa:
ȉU=Ώa4hQC;z\wzi8;[jjdz,\ +6Ym(f=`gڌ\R%[ +S
#HMM0gw"$miu +X3_w>-)f|%
G17-JȂH=s"H20n:N.!Hg X5jdg(xl#2J*дpfQC{fh^챳̵0Ӊϴb4'4mZ>ŹhSA֏r&53T8II}L,3\AHvaYmrd59 qo"mI,=Y9ocU1bȖꑅ\!TeZ!N?Kb$o%R[B㘿XXq0Bd`˘p:`|CڑVC9ܠ0%WCIp[ӯ0_"C!Rk1ᕛvN]{5Gʦml2\}Y\XYh +GE8՛7q1*kTrٵ( W"PY|9퇀d:lf:}͊yﶬ1PW7foA'Ck r7IӏTv,,IWʋ _$uVm!a֝)Ul") +g걭ZNE~Um݀CkXW +1mbL[Oޝ=V%ZM8s`VBkzҜ#T#WUܟESOtɜon/wj85
vIu/8 |̄W~@HQ"tC^PPc g~3t'4Oh$nД>S'~\Ԕs!WlJ-TоS^T\.Z/X蠃\u"<o!O#9=IoN̢Kq?s3 )GV`79NP$IIÀXEZ [nwVV|hHFcvPz t^`4@1k:ySStȁa3Jl9) endstream endobj -497 0 obj -<< /Type /Page /Contents 498 0 R /Resources 496 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R /Annots 501 0 R >> +506 0 obj +<< /Type /Page /Contents 507 0 R /Resources 505 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 511 0 R >> endobj -501 0 obj -[ 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R ] +511 0 obj +[ 501 0 R 502 0 R 503 0 R 504 0 R ] endobj -491 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 353.263 528.233 367.988 539.292 ]/A << /S /GoTo /D (subsection.0.6.5) >> >> +501 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 315.766 601.656 326.193 613.947 ]/A << /S /GoTo /D (Hfootnote.20) >> >> endobj -492 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 380.939 528.233 392.894 539.292 ]/A << /S /GoTo /D (subsection.0.6.5) >> >> +502 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 404.84 494.243 415.267 506.753 ]/A << /S /GoTo /D (Hfootnote.21) >> >> endobj -493 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 430.922 204.087 445.647 215.035 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +503 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 117.427 208.286 132.152 220.241 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> endobj -494 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 458.598 204.087 470.553 215.035 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +504 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 147.873 208.286 154.847 220.241 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> endobj -495 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 346.259 159.364 356.686 170.43 ]/A << /S /GoTo /D (Hfootnote.23) >> >> +508 0 obj +<< /D [ 506 0 R /XYZ 78.37 808.885 null ] >> endobj -499 0 obj -<< /D [ 497 0 R /XYZ 78.37 808.885 null ] >> +89 0 obj +<< /D [ 506 0 R /XYZ 79.37 771.024 null ] >> endobj -97 0 obj -<< /D [ 497 0 R /XYZ 79.37 694.453 null ] >> +93 0 obj +<< /D [ 506 0 R /XYZ 79.37 481.662 null ] >> endobj -101 0 obj -<< /D [ 497 0 R /XYZ 79.37 515.275 null ] >> +509 0 obj +<< /D [ 506 0 R /XYZ 93.716 118.351 null ] >> endobj -500 0 obj -<< /D [ 497 0 R /XYZ 93.716 139.127 null ] >> +510 0 obj +<< /D [ 506 0 R /XYZ 93.716 99.26 null ] >> endobj -496 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F75 338 0 R /F74 337 0 R /F64 333 0 R /F15 334 0 R /F65 335 0 R /F22 367 0 R /F83 414 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R /F59 346 0 R >> /ProcSet [ /PDF /Text ] >> +505 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F30 363 0 R /F16 359 0 R /F65 357 0 R /F81 401 0 R /F83 438 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R /F59 368 0 R /F73 371 0 R >> /ProcSet [ /PDF /Text ] >> endobj -504 0 obj -<< /Filter /FlateDecode /Length 3211 >> +517 0 obj +<< /Filter /FlateDecode /Length 2590 >> stream -xˎ#>_}6Y, -͵[.=8Ml6_%њPЙK7G<EAk &N6tFXR4β|*Kz[Bzv90zaQT(7mБ2SĄ]Q˳P-VEH%ϲzo浈wF=N=DIuؼ"O ?9\V20h1Rd;dFf.yݔ|{5YbeeEGWZ. ־v
-?hZUbr_|}w'zCMBfsח>p!d[//=P42`L YGi4!lx -zoAp8:D`{>d~kfd6+<-U?eمYlѼ7Ś_3^j]- V*eV{w=* R_٧.jrc
}%wjv4`2EWY<|J$^8GpY3{.J -nbccV3\UHWq UPzİ<-3ٍZEK %5/8{l?w$6vDl"-Y;Cbw9"L7Xݚ`d\ ˁD52AqCے%TsN0s,zI Em;)*+bbMwU~h{ ӽMAܐ>[z ?~;m=# 6Ǜ%+3cdL@B ق5
'=Kz Z!m[L_3ׯzSlZ=)nusG3毅^~y;K^J
UûQKFQ\=}QoS0 DiRDW;~dYqt]O"Xk_[xb!c:<Ak -+5Fj)AGZIqvڜF՞2 -CJ[>&ey '3#ÿ%gKX4KuIUrKn9[UD5:ʖk7C~L_PXړ|L9zjK-ņ9/N_E2%eR=s %twS04Qo","3fmF՞'5A =)aəŭ+1\Ag#)Gw*Hwdn9K&^~S܅9*;ʀZ[XVڃ+OEUj&@
hT -)-Z-L$2(őPȲ3sʔK\ϠoVPs*³beh)[(RRzj=@.]VI1:l6[(GB:pK<Zy.$j-:K*'[aka'\lJʹ:N-v)gЎ(KD]w51cܨ76'z$zJ5sK+~q'{kGSV"An33@ܷULos2KaXw)B5͋H\w͖!ev2^yG ~z.C+
>2A|-[x\5~e's;--'`zMu|kaDGtwkb XC(h8Ss'Ҋ@'&-IN÷' O#Qq:UQoeZ`$:9Z#BtO/Oo)ڭ^ -(U|#B[.L%7?HjGأY~BҚ*e9~'2&_~ -roZ7M$͢dTJ3KdaǛ3bܜy>r=@IUíyBZLڧ"L<k1ƕ[M-R4}I2iKt)iG2hL(w'1ûC@0W5Axz|mYxVv$r@<VG#TCMsoRY1,KQ,%.ТG='5 -M
Dxl/絒wͧRWqK0)53>먀e +xˎ#.Y|ʳs37''Cr流dl6]hެWS +kvEtI-GҩYJ0RjUJcNJ[qpǓ"֘V*F7u"n|x7dy{y5 +=M [Z}oe] +#I2Oԙu<I2d#[m'$Ac& +%]h_^,X5C%J\Ej<8 +iT~kq멩Pڍhf~DeoSU""dʊ6+ + 4OUw)h<QлeU +w +pT))9.\˘h"꿖Cs\!_ =Ҍ;F [lp %[
"gH+LWO\^h=L 9xD:U_.jIPӱ7o#3HvV^*/<1*V]{I9
tzSy$jWj.е lG t +/4@/dSʖh,9YR6zu3h3vqꄭ]M@]u)b<9K2?@*'5#| +:%tqT~E>E^Q(3PO ]T[Ulwc8SeאYK{rF|g˝gXTm~m?mfh3vFݥF7Zkpo.ǵ~}eԧN_RAP_s(J= '\3VkwgLTNV,[Kjkw1G:-YEhW/XL4TjBCs`v*Тh zT] Ge봍!u㘯D]4i6z,{j/:h@툝8Bi$Rޓxeeؤ +ǭof:XmI?Msό8ޙs$l#CEhzñBFn
IfNI=<IHւE:UsFK`,c8K硴z~"o\ùXEPGW Z#+U\(S(kgIHV!Q2:% Jpރ. +W]YʡY 8ou\d࠹>O'iw\QA!`] /7Rx}f.J1~~F
4<F!/[.q;3huŤ:ke~M8:B(]AZtmX;J/2j,!{J%)|%çzkB9$ki:^]-;yu<tmKi]{@x:s֕921hVЀosjI dE`G.{>?Mjd@`Fcue5㨒ws +?~SprdZzgܿJLܿF,q}54_^+2Kߴ(+
ҵRgzkP` +qswBn+;[Hڅ:[\ux+:-ݺ\?"}<%gs;coDžKL!M!kcvnu@wfXɫ|6c~vW~~71,M+XP履|X,&<)bܤj@+,6f%Ēnhk:/((+VI\?Su
6Wԍ|V8##w멹 endstream endobj -503 0 obj -<< /Type /Page /Contents 504 0 R /Resources 502 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R >> -endobj -505 0 obj -<< /D [ 503 0 R /XYZ 78.37 808.885 null ] >> -endobj -105 0 obj -<< /D [ 503 0 R /XYZ 79.37 771.024 null ] >> +516 0 obj +<< /Type /Page /Contents 517 0 R /Resources 515 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 520 0 R >> endobj -109 0 obj -<< /D [ 503 0 R /XYZ 79.37 555.106 null ] >> +520 0 obj +[ 512 0 R 513 0 R 514 0 R ] endobj -113 0 obj -<< /D [ 503 0 R /XYZ 79.37 186.744 null ] >> +512 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 184.097 395.649 194.524 407.94 ]/A << /S /GoTo /D (Hfootnote.22) >> >> endobj -502 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F75 338 0 R /F77 339 0 R /F30 341 0 R /F66 343 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +513 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 249.662 343.405 264.386 355.36 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> endobj -508 0 obj -<< /Filter /FlateDecode /Length 3039 >> -stream -xڽɎ+7_hE4LNy[` DUzmDqI_>^~xs ,XiE\\`][qRqn9|]1mӻ,çiT<,>Q97HL酋qK<-MՃFBFe/ *L|g1^s =f29<Fry5IdJ3#dDӈF2}$oq{]_R҈pQ(!C xٹYDqTh-daFx *Td6%4qE m 8+lhbC&%֊5)
uŞZC lEryr{+Z^mA{>Oؗ( /uӌdRbNN\3nؼ3e{TvF2o5aWynЋV''fOqkA1/f\ZzǤwz|ʴuRTU*es= -ƍiUa%i*54M'Z&BrfEq8g2ȋՆ ]h8:\aHU&my'F@P%m&-@{ -HdP[qS4'iH3
Q?'ZAqSaKA<SR:'ZL[G`ޙ1@l^|߾N9%!1jr$3L\UW,=l}BZv -.{ѷzPGJ0݆leO0 \C{!y`/rZ=%7=A;#od!D9Zi -?^7##=?7v38巗w'4P 4sR`#|k} -3A07[\3$A9!gs]sdVMBpHʝxMiq -o+ -bkW(#Q\qT$!W['K$5UHڍ t0cDR'YfFFD$հª^&DhEԚRFTMOb1vXk&ufD$Jv݀*q0RJeއ*O,Vⷡ_L ?ҩQt97HTo4W럅J1:eVՐbmާv"5'xY,\.ITd}9U2LS.rT10@6ꮒ{]WURtT`De\Cv."~ԸVpjDb4!mQ<r'(3JEOEOX!VMM[Zz
Gr|:8 -qa22\ ڬr랠/ԶK^tw:N`Ҩ*\cdݏ,Bk1"(XxƼ5k^Ej Z$6{P+R -h1nΜ<=0uy&+,y&|lJ& u&yQ'd{mc+:5~wގ%qc/4Xb%i3bE\s;D{z}OӸul:T<b6FX$SL.Y;R5+'r_t^qJ-;8QZGߩٻg{rz>2&M͉GUe7HN!*{Nmh̤v)k+e=-(NrwF1.[xzڲsoڐUrewi'U^\"X^Un #MDQ9UA?$*ѴL~Gİ'E,P]=3ԉ͑c, -9QD}dZuLqɌTxc_N~sS?,
gFzRI9*'"(%F"
qӺmC T93m@0tva/mzr>[{9^j`i!vJYOerZk$Yrwig~WL{Ǽ=~ +UHT'$/D)+ xJu?SeuZF1vxYҦEgUIδ߰}xG0@q"><Vmz<Iy^۷W6paA3Y"F8N@bCRu݆.fw;hrK4`}I3J`nW=%X^:lSnHDqf nq)Z}+Z3Ԅgֻ'_-sG3\Y@7B+>`g
,]6w^GUl -endstream +514 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 277.338 343.405 284.312 355.36 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> endobj -507 0 obj -<< /Type /Page /Contents 508 0 R /Resources 506 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R >> +518 0 obj +<< /D [ 516 0 R /XYZ 78.37 808.885 null ] >> endobj -509 0 obj -<< /D [ 507 0 R /XYZ 78.37 808.885 null ] >> +97 0 obj +<< /D [ 516 0 R /XYZ 79.37 489.761 null ] >> endobj -117 0 obj -<< /D [ 507 0 R /XYZ 79.37 456.212 null ] >> +519 0 obj +<< /D [ 516 0 R /XYZ 93.716 125.578 null ] >> endobj -506 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F75 338 0 R /F81 377 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +515 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 356 0 R /F74 372 0 R /F75 360 0 R /F77 361 0 R /F22 389 0 R /F15 355 0 R /F66 358 0 R /F65 357 0 R /F16 359 0 R /F81 401 0 R /F72 369 0 R /F53 367 0 R /F59 368 0 R >> /ProcSet [ /PDF /Text ] >> endobj -516 0 obj -<< /Filter /FlateDecode /Length 4261 >> +525 0 obj +<< /Filter /FlateDecode /Length 3194 >> stream -x\K[Whi#0M 8r -a}Ï'cg/
JKɌOcW #97sȃ6&qk&jF:7.NTBah𥳐7S'SU,mÄDk}xdO~-Bv+/B}+asX& H-mQH'ta?%K aH&+>XA2 }M -iVlM8*MQ -0
j~R"k2JFIkDkD=9^0^{}'&dKwW{ -Qм.9,sJ -;j}Ž -ktꉇ=Yڗ&\
nQp[R^FT8. &xOWmkP
3{Z(ziIrt.\b7?D)${E_z$^@Mn]K@f=sVB监uR6 -* t%՟h$tom2`MLoAO,;iUp |RZ -P φzI -[|ïMb}='j,=@5tW]y5fɶ%(*O6e3WMYl
,mt K^#5BQc*XBy&&5|BϿ\ $pI߮f;Ab%bͤ^-қmgyFY -Pc- -ŋHcä8ƱLXx5k6&wÕGI V1+ p%Â637R-UjUwGn+5qIz${BVd
6Bgڻ -Z@m0`l)fk!cͽt+y^&V[5If%CLrˈ9K:љ(p,D+i=LH%YUNdIRRn, -~i{]f" - -`<p 0y.v7QxCWh -$ 2=;Z;u546kwY'_-]3'Ps")z9tWW2oa).Q5YkEHį[TeŲ#CHO)N"Ӑi1ڏ*Ǔ/#VJyrywaV魵}f'
5ӖH-%C̊Q4iLȮEyϛx=
ITT -^M`vLˍ@+P!֪MoM6~>vE5톾Th]M3 ܸt89J4nYeegC<A5[:Sn5Lx40ZX{9Z"}PYZ~bR8nwdq -_¦JH!-}x1#=?Xf Y$V;ҲbMw1/jo7bUKuAKHべ[e7NrMq>QM!bjT2&|Y1rJL0 -Ujv{+IkŐ-Q{ed?f4ڎ`Bۡ1 -;i! -zj.i-tnR/-U67XQ\42mxBbҵ -@ZEkO|AK +xڽ[Ɏe
WhYf +i BC! +v!]P0G9&Z|&(jυIąUsGUC(6O8x/:;sa + +RܘYa2.0Tyvpi₅Jv6so0[)H\79"/67'5 c¬LoAW' +EC ymca65s$GXUJ1?B QO1ENr ɨ6A_up8`#o#V" +(ekrfr$k6GߢS/yI?)2Q3fn"4(Z'KO)d`(SZ'<4қƻ~{+dr>4t +]oB)$zs +XeУͧklI̯: +p^{GˬQ㋽QQ=5ٺ)G=i`V
XGGȺ
(KqScnπsMKbܚ^gɁ5"V<NO3|ݢ`S+t9jtBN:
F|3UZ{aj*$[^yJ].ҸT
AP9/\;'lΥLÂ1|/KyT(,yyw7A;!倯VVZuxً4/c3ӳb&^C+vp֠8cZNM$BagZ!z"?"eR$B =džy恨Q,Ê~U}f'TdCN#]_9$ЃAh*LjBnep*I'ZUgLy)ڋ% +7: +qE`ׄ盧> +s)xJ\W:/l3 K2TҽNeؕà1![C~p5ƻ?1k唫9*M/(B9{zshpboOkiIU=Z;k-&U+fI\c.-"Qw{Wq~TO.)L/KZ=ʷ$=La<OaPOGk6(S0m +~ibO~izJ]Eb{^W1I6o!e&˨o[kP5jk0Tg8lWNMrX^gk~جU ,09)v0k_բE1z>Xnzwށztkz=kT`a]4^w3;E֒07Xt:DGŕ + endstream endobj -515 0 obj -<< /Type /Page /Contents 516 0 R /Resources 514 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R /Annots 524 0 R >> -endobj 524 0 obj -[ 510 0 R 511 0 R 512 0 R 513 0 R ] -endobj -510 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 264.586 580.299 275.012 592.889 ]/A << /S /GoTo /D (Hfootnote.24) >> >> -endobj -511 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 318.325 558.936 328.752 571.226 ]/A << /S /GoTo /D (Hfootnote.25) >> >> -endobj -512 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 250.957 312.804 261.384 325.255 ]/A << /S /GoTo /D (Hfootnote.26) >> >> -endobj -513 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 184.327 222.282 194.753 234.656 ]/A << /S /GoTo /D (Hfootnote.27) >> >> -endobj -517 0 obj -<< /D [ 515 0 R /XYZ 78.37 808.885 null ] >> -endobj -121 0 obj -<< /D [ 515 0 R /XYZ 79.37 647.132 null ] >> +<< /Type /Page /Contents 525 0 R /Resources 523 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 527 0 R >> endobj -125 0 obj -<< /D [ 515 0 R /XYZ 79.37 536.464 null ] >> -endobj -129 0 obj -<< /D [ 515 0 R /XYZ 79.37 385.61 null ] >> -endobj -520 0 obj -<< /D [ 515 0 R /XYZ 93.716 156.601 null ] >> +527 0 obj +[ 521 0 R 522 0 R ] endobj 521 0 obj -<< /D [ 515 0 R /XYZ 93.716 137.509 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 353.263 229.105 367.988 240.164 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> endobj 522 0 obj -<< /D [ 515 0 R /XYZ 93.716 108.953 null ] >> -endobj -523 0 obj -<< /D [ 515 0 R /XYZ 93.716 89.795 null ] >> -endobj -514 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 350 0 R /F75 338 0 R /F74 337 0 R /F30 341 0 R /F27 340 0 R /F32 327 0 R /F66 343 0 R /F68 518 0 R /F55 519 0 R /F67 342 0 R /F64 333 0 R /F81 377 0 R /F15 334 0 R /F16 336 0 R /F65 335 0 R /F22 367 0 R /F71 347 0 R /F53 345 0 R /F59 346 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -527 0 obj -<< /Filter /FlateDecode /Length 2593 >> -stream -xڽ[K8hDBJeks=_E,;NMucPĖvKa/H]?s ":?Eҩ.H RZW)MJHMRo?pi]{ǿgV -%x%Zi5D'r]WoI&|tA"gg^YGz/C -
|d> P_=곶Ns-ؗH2ͽ;Ind巁s..ZggנrRomdWI֜Ȋ=RɘՑ[<r1keǤl0B{L -xdŤpbP{kJp4"9_/t?G:'7k6EoMꭖZ.k~;7:FGbz,Ҳ(U{,Qa8 Y5:_,?Da9g+Z*W&ӡ~ܕDi̶Yg;`F/DLWR)acrs(ȧ*5M\8A'aM=6pQwhʦ)uK?ެλL].kkDjڜy9xa]q9sj+gUd|lR -E)Vιb@zBU8J+,$)FKJYVj?91S`Fc>|ĒNK;"zZiM$x>\ -%|5 -G⇲NzʷBN=|ZƤɸdqZA.6W|Դ-+nER(ę)GJ=v,C}@EL7vtM0)a%9pV>|X)o]Zx`v2^}"ީ2U*TSr>JT6\ENIe~gId7ΙkpIGTI*. -;gctqAtFڍY~Mf2&9!nֺ=9h'a徾1tִ=p'bV(o2l14V)iV̆4J{SZc:h3AC @acB.rۆY0~yZ/,[' 6r)R/8s(mpP -N,2%=Orۊܘأ U;5szwz>.&2ׂomCw8Jz}&sNmBmB#'xީ@F"2y㜉ݐ0
_NQ -3y -R/ -<əSPVɍۭ/I/0i]|<vtJ,G=֨fQi}˖=e,?Ilaq g:LepMK -
h4GGs -2?恑=tRG[~H.]~}x~,'MMJYgUtFiBށ2 924CsX, %CL=NdAơ9$
BS >Mr͗U -2e|eo/!k5,gn}9Åig,V}fF~y5}##uʶe(]=Z܉Nc&+fjY6߷⩢yt -8qB'Q[VLmLI_<l"j7i63+Uº8d8uXt"(OU\~!̀C3i+6g6>46"Cc $&r݈ͥRu5D2ǨqȨU~o^8Sb'eZЌXZ+'(JԔwQ\iyzv`s;CQ=DA`1j64uDSjc\n^iK!jU{.ͭQJۙnL8>c
w9Ν Ej̧a4డT}=xW -endstream +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 380.939 229.105 392.894 240.164 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> endobj 526 0 obj -<< /Type /Page /Contents 527 0 R /Resources 525 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R >> +<< /D [ 524 0 R /XYZ 78.37 808.885 null ] >> endobj -528 0 obj -<< /D [ 526 0 R /XYZ 78.37 808.885 null ] >> +101 0 obj +<< /D [ 524 0 R /XYZ 79.37 394.219 null ] >> endobj -133 0 obj -<< /D [ 526 0 R /XYZ 79.37 559.897 null ] >> +105 0 obj +<< /D [ 524 0 R /XYZ 79.37 216.203 null ] >> endobj -525 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R /F65 335 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +523 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F75 360 0 R /F63 356 0 R /F77 361 0 R /F15 355 0 R /F66 358 0 R /F65 357 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -538 0 obj -<< /Filter /FlateDecode /Length 4295 >> +534 0 obj +<< /Filter /FlateDecode /Length 3621 >> stream -x\9d
WT
Yu#A{Uq0UDx|}~{4,\"ȋvg&|W!B!ˏ*B|_B|AotUwnUD -pe+=M0'dqH6oT.a4n;?kC+CBcDl-Hj__SzdI餓zg! ͲOĵ{Z(l>k6'3SN-`EYYkP]3-)iֳD8hisAMwa~m'.gTzz*;&Pj[y`/k#?)(ѹ; "S8+8fbbv:XGߌ3,i[Bs -CRx9۩bЉ9q=?&
l/>LHޗi\
Ċ߫!~jJhB=/o^ uRy07E
//]ȥs{S7[3ػy)mU\?vWp^LjJ8G3% !YƂF/zIr9}3| -#c -x )n-1mѲϣP**0(ϗ}}k~̛ƤX0}y,ѱ$75G `x -S1 -&
tPDLW<cݴB6CA7cr
f4
}SSJ}U.0!Pk"[0Ҩa]=ov016+])ױ=%(e([V!Q!]|1?')K1R$EЪϮWNa6kQQ#4î&#e|4W?%[vR/wt*%#Nm @XZrO9l-g},nim6k9wu=sWA|LjAjA\OjmwT$\+9y29:i5|;7`x~|su̘Robin=9']"yP"q6:%:JRۜ<КZ<1·‸ [nq0P@f*ugV>Iάq&ߩ)J5ӈqerbxx*]y;cVڔ2:nIbd.ͺ' KĻC>)Ң) -{Pމm
okb!ڑ?COu$zS5 -:`%na}>żOc%y?& $oMjVh[' -(gaW+TOZa2Kk -puqfQݬDB ->5| -Ѡ⠐;Eb'5}q5M9/`]ޛBWc@`cnA}Uuc紷*@Ny_9R%T0d8z9ŗPz(}dG Zn58$>:)Tok (BIݽvf2=/øMױtG%c80ۅ>n>Eڥ0t뜺D:2</NWCT_HOFUF+;-ѓ!d;RcuQ9tЩ=X[%B1 !N8UnȟT8]fXN"U#7g~ԺΦst7>98aTamY_㹦fL+Y$0]1#vη.'|s]3wheYӜO2bSZ&xn`'Fb+v9Sk9N-\%4?.$6)FnJdkMYOf.sz;_ADQyL]ۈP`RLRYXVXo҈=>l-U4o>xAMYX{[Ξ4Xy,NQW=OPRqJ:oUgFJ41lZLN4<왊骋ueuZ~-r|Klץ}zd7 -<?jxUF_& 5W~L..r|)a`m;زS0[y/Ē]Q)GvzQr"ǔI@r+t}KϹ+RA"`bkasf3^&w$1]MK
Ks/ -{K`Q4֛5$ņk͆s`b4u,OPSJ@XU:jZ8vK[f8Gi3GSX[M~K
Udimm;Iq素Rrs?uA:r[2 %蝘%ӵahV-/Pf,/e;qJ*}ږé' -cxijqMnuw֦X[zL☬FN+JH .R{"}&GJd@Џ G:v>2.>']UÁQݏ<;`7'?il}qaًqpYb' X>mZt#贛ntfՆN)S|N2^|z'U;'8
moYDӧ`;ΰ~ͫtnJ%@ -Qnә;+Ait<[f.fV\N5T -co' -Fb)g87k$ -::ǼCR2tpؽT$6x{.?_i#:arLgUb+\]kD4 &ͩ8k?F#%4OXx^|Vsv^]c,3Vww(65oyds$Ys$pFuc_`j< Vo|ܪfǦym呧7=r=Q -u
;%?U9opU%eWJ5KqTJkjbtP:{G{'^ 0=Ӳk1+LJEn
ݥ|:Y EB˲5/5vGΙf
û]nZl^/~?ߴSٸq6:vD'wlX1] msyFpl۲kc6ʖ?~|Nj u8h7Ʌшmg*(ycIQGeo^~9k +xɎ\>_G Kqh4j9)}%"{ݭ(
5Y}c~O__Dvpۓ.J_SB:u˳4߮܋鉔'< W)-[9 $~c=9=ZJt
gO_u]aB=RN/>|?Ck&syV0I;2k] FMVi]i6 Jy-˲ +a3Rh=foY6aޝ +
_l5lg٤HO4^_}e,Xg'^يwq0c>Cb] +͘z8L' {Nggbex;ѼFs.bs؛7ONR]g]N>yi:ȸ- +3M-:Hm9yS:wcХV۳|h%,vZu-zuF*lE/moRW!dkBE./+XH,PM7B3jź6'XWR^|WAؘ"*cu9Ci;i!=CK^>MV85UxFAx`7HvCVHs[if~u
gwq"zkXuEa + mr-4Lhn+ID3_yZ-͐{UF]3AU5ظ +䍳3"2I'+nj
]{VP?h4ɏjvz:nl
+ZNόE{Ci(y[ y`Jn \<KytN= +,X6t\mkҥYd&WFIBK7mk}%`2Q +'&
kQsaOw2DNy;b`fKofT?dFfni Xj?odiEsG䒂P%o,K˺_D)bP#O_t\ b9/^84ߞ~n6r43^*ua:Djɋ g˥˅ +RqQᛞ$rK, -VbsQ3m g5 +|kGpPb1~6/ +[*FvIoX3?x,x~Oj8gH +]WDk[=4n,hT]ՂJfh".
& +vTW,'`HKK=2tJsndԕ%4|i'L1s,|@O7غ;Nh?վͮ6+ +vR:3$[+IzңlLuku+udSe7{e_=cⳬN|f<sU/b/Wcj罿H +>k̞& +9RϞ77f"p'Up?/!|HCH4+
P;y-/)hٳ-We/+X1Qݚ5o=٭Q+ cASSy*gNS(ɤOyn_֡33
6۱7A@&co3fFK&o7|*]seK0HPU\إXo}Ӭ܅*;:ڹ;@݉@O+w|aZ9@:tHdԐ++FADvReé"=維lGVRʺYkLubnUUuݭ8Nb<vTcu +Fq(LyqIWFk.9ˮ!%z!v/odq46MkLg=u~/mS[-$-YL&]jU
+FD`xg1;F7yk#Gg IWP=0aSÆV?~Ѿ7Ze?4A+}mn[]ֆO0WɯA$w0FQʓĖE`gڦ<| 7.QVӝ}
s#?Q! +/|'r^Qzs^k/g9B^VU"+>ԴW|wz1\W~H1Ӿ^si^y}h)\ +f@՚Ǎ25*YWAIt1^KsrLHj>gz
|K>O +IH٠ၤ5φ0,{Ͱg~J=aÎ&Hv<^ p.̐Z"(v,oz{ u\h:T:*#ֽE-|-6JyTx2bzpLZC`K"jJOsh2Xv=<5nFJw?k QVV/oL= 0L2eBaH1EPuE-)L$ gwG'p㢰M\ks,LMb8M
jN[+h ϽU0dU*w*JnJ^%l̦zo{9'GdsVXL'\O~TK51z11oȢNiQ g935uK`k + endstream endobj -537 0 obj -<< /Type /Page /Contents 538 0 R /Resources 536 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 472 0 R /Annots 540 0 R >> +533 0 obj +<< /Type /Page /Contents 534 0 R /Resources 532 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 538 0 R >> endobj -540 0 obj -[ 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R ] +538 0 obj +[ 528 0 R 529 0 R 530 0 R 531 0 R ] +endobj +528 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 430.922 611.681 445.647 622.63 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj 529 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 133.218 514.573 147.943 525.522 ]/A << /S /GoTo /D (subsection.0.8.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 458.598 611.681 470.553 622.63 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj 530 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 163.664 514.573 175.619 525.522 ]/A << /S /GoTo /D (subsection.0.8.3) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 346.259 566.959 356.686 578.024 ]/A << /S /GoTo /D (Hfootnote.23) >> >> endobj 531 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 324.77 186.413 331.744 198.368 ]/A << /S /GoTo /D (subsection.0.4.1) >> >> -endobj -532 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 186.766 142.577 209.241 154.532 ]/A << /S /GoTo /D (subsubsection.0.6.4.3) >> >> -endobj -533 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 487.781 142.577 510.257 154.532 ]/A << /S /GoTo /D (subsubsection.0.6.4.4) >> >> -endobj -534 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 354.688 73.058 369.413 84.346 ]/A << /S /GoTo /D (subsection.0.8.5) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 354.442 161.574 364.869 174.164 ]/A << /S /GoTo /D (Hfootnote.24) >> >> endobj 535 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 385.134 73.058 397.089 84.346 ]/A << /S /GoTo /D (subsection.0.8.5) >> >> +<< /D [ 533 0 R /XYZ 78.37 808.885 null ] >> endobj -539 0 obj -<< /D [ 537 0 R /XYZ 78.37 808.885 null ] >> +109 0 obj +<< /D [ 533 0 R /XYZ 79.37 554 null ] >> endobj -137 0 obj -<< /D [ 537 0 R /XYZ 79.37 732.66 null ] >> +113 0 obj +<< /D [ 533 0 R /XYZ 79.37 333.833 null ] >> endobj -141 0 obj -<< /D [ 537 0 R /XYZ 79.37 501.614 null ] >> +536 0 obj +<< /D [ 533 0 R /XYZ 93.716 111.678 null ] >> endobj -145 0 obj -<< /D [ 537 0 R /XYZ 79.37 352.065 null ] >> +537 0 obj +<< /D [ 533 0 R /XYZ 93.716 83.062 null ] >> endobj -536 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F64 333 0 R /F65 335 0 R /F30 341 0 R /F27 340 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +532 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F66 358 0 R /F83 438 0 R /F16 359 0 R /F22 389 0 R /F81 401 0 R /F75 360 0 R /F77 361 0 R /F30 363 0 R /F67 365 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R /F59 368 0 R >> /ProcSet [ /PDF /Text ] >> endobj -543 0 obj -<< /Filter /FlateDecode /Length 3534 >> +541 0 obj +<< /Filter /FlateDecode /Length 2602 >> stream -x\ˎcW&`4$ -,/_~TEдtE&yD~߾}y77L_8&h#R|s\9r=Zzkx?'҂9YЖ-PP@C/wO4?HAݏ1ބy5"1X9Y,4Ӑ)z~2ѷڳ}E]~7M -_o_),Sg{ng -\0y,U/p!<"*MNeO*|:JT$7HWCL&Ť]sͬYAL0Qʑu{Û] LY16y| K8rKY5b!s7DJǔLGd§ɄoSmծ'or;4Ls;J*5h~II=R)6MI,K' sQ3Й&S)ֲ&Xq%m9JI -Fy|s<KaA -7R)&'A9My -J`V*ީy&iL ADEv
EnK4wrjr@<C^*;kOA3M8fSCATL88zLv`if GLʊ -MOeYc/QEV:Т.Sq\mfмY@OGƧaRB}@\r.1&^h
gGQy\ÓPKz7[N@%;;Όq´}><Tki皜\ ڈk>_ -o@,kEمu)$bl> -E~>]$ ->w0
c1P+鰬J&
+p,J'R:JjG*2K}'Ot5BbacX,̲8,n+Dqj'$X=/ݼgm>m܊ȫC^.ZT%`NtO߿g$9fLV CԷ뗿v!0sy>lc9ZItRq>5eH/"|dL6%
*:ɆVoC7]{dMÐ̚Y4]NH6
j9Ȍ8ayi{ZmprC;HHuأw5%^i~HYM7R[llW"fhw~Wy)F)ӡqS814c##SHN
hf#40+OWל>jnR2le})_at)-PMo|\]Af.cuk-]3F srFnN>ʾࢴ+]_#Cq(/51!g;_[e?.P;p{?#G;A]9w(ҷ6+lY -Ku}.q!zpBXÜژ\q&WQ4$}'CK*{ - -cWyOl u -&ρN0:lTA9jdYV -o^9 HK6!'>q^Ld8DQq;!et4ȴԛpmj ->(pgR#)9ggXÅaRh}2%f۳L 9Q9yɆ|U&!ڒy1/bf= -٤H-EP݁"Pe`g?$|lO{10ΰȤ<Jī]ir %!-'QKV^M_'j]CRR@\6𣬈<.-[R -_?E6ل88"a)O۱-줾Vil+#Bh|ˢ*xbYe9J"0%*&&W|5A+ blч !.LáKA2 -s2JO#pdzJQUTK1pSTƺ ?ʵ@DP}K!A9ClABa -qR#c1<<C$-hpDI}jΦ<
0SkAƄ=-T,Ii>fN6<FeƙMJ -@OlTljJHtOᄸ$ yY- Q9;H!;Β\\;X!.rKyl -`_j#v,!%6^)\p,ܯL:)OQ诉yq$V+:!(SME6E iϗեJ2wv@5q=DVAEwQţJ{~t%ZhJ̙eZ:-a +x[K#
DQ/@Ȟ2[S!CB=Wn&3(G +sIҿ?oO߯V,~}R'IY%UN{PJDzV|oIm[z<IYa{R97gzGS49k!PxhKp5|3`5I˳G>e:~U@Җg>ӉkI^^iզVCb"5W6~P5F|
(DtJښ4'20f\93oLͶjeR +p qGjz#4VXq~{)0Mk.:TÃ,դ{Eƌ{oƻ[DF
Uނ2j5PTR Ѕaж;ۑ( +=h`Z\ܸ;!O&">uǟ?1801q^(KUnh\2ӽBi"T*9##riNr]H?{R\hǏxu8w;Vև4"(꧹[&}{-4Nx،->se ZX5V;m((-mNςӟߞyҘB;ŝ~}끘B<BV3}j +83A8*r=8Щph:5Hah37b?N)8Kr J^6dYFeC&#!;3ΩCnr_æͣ0Qy4yo+QI(Ҽ,6{ ҳ'*_!S/ F^(v?9 ᩚ:ck.E^N,|L6A?3R<rH
wsêD휟y#D_aj iiYg dZi8kSLzu'yxHެ;K,n0}Kw41L_嬷9nhI$߁z,L;:hgE%|)lIj)E:Y,24\K_t@aF-Ǹ; ) +3x[u;ԳRPr}J}߉y6Eq +Jm+%vz)~u[WoMv"l 7uaZ\d2提bL{b(&,lo6jؠC mK= +GGJ_ϣnHspϖ][Lva;OtIU5o8'ck +ׄ?dXW-rvO6ZXPS jc:4;в-Sug +; ZAPJUM; fjQ wȅ(K5dG% LD/Q_2|K.G.⒑ݵ%wJKkM#*K>_ʒiae H+ʒ'*K&JK}@GQ'kYu +~]ɼ[B63Sg2:iLu&sg{VmO]hL~rA+ +"p8 7L/ko<r?sK ¥Vwx%`ySnqc$)6s<~WB`TUS[wI-%x\X7 5HǷwAeƎYJNt8"u +:[nϓNIL`̬{E;C*FZ]oZ
Tcھт̵=9#Q/8"et_PMeW'|Q++#[UkzJ/ +`: endstream endobj -542 0 obj -<< /Type /Page /Contents 543 0 R /Resources 541 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R >> -endobj -544 0 obj -<< /D [ 542 0 R /XYZ 78.37 808.885 null ] >> -endobj -149 0 obj -<< /D [ 542 0 R /XYZ 79.37 771.024 null ] >> +540 0 obj +<< /Type /Page /Contents 541 0 R /Resources 539 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R >> endobj -153 0 obj -<< /D [ 542 0 R /XYZ 79.37 748.402 null ] >> +542 0 obj +<< /D [ 540 0 R /XYZ 78.37 808.885 null ] >> endobj -157 0 obj -<< /D [ 542 0 R /XYZ 79.37 403.167 null ] >> +117 0 obj +<< /D [ 540 0 R /XYZ 79.37 560.456 null ] >> endobj -541 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F84 425 0 R /F73 350 0 R /F75 338 0 R >> /ProcSet [ /PDF /Text ] >> +539 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 356 0 R /F15 355 0 R /F75 360 0 R /F22 389 0 R /F66 358 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -552 0 obj -<< /Filter /FlateDecode /Length 3275 >> +547 0 obj +<< /Filter /FlateDecode /Length 4056 >> stream -x˒>_,ƳjJU+U)\>9K~? 6@I5"Ft3}?\>^\:9wE8+N3'kF>~y\*5p$~ow?oo8+~4&w=>5 pljoqM~~R#V&
\luIJO/Y|?B9\|Pȴp
Gz.]Ak>BsO5ѥlzo\7#</xrvSxW{;Ati$=fiialv.0`37euuMr&I^gBAk#jQ:އߑo·Z&x]ݲɚ6U:& -V.M#yz@61(⨀UI f~>c_j˴tVx37ŝ>Uq͌&%/4Fmig
̲?5}\SIM-P=.L -mދ=@
PD`osy]* -;=2l -XZؔ?kfDC8Ƭ%yful**lOW+-E䂻-Wf#VJy|ij -d#pp:zI̼p˾zTBp&]6.qor$T_ZQLeC [^g+RTx܅H5J[ B! 3̗c"2@Ɓ,:31*H%(Λ@Ւ`":P* -ևC!D\Ńu -둓|UΥ0zQZ&J5M! o(H:c+HuÅW#j`%Te -@cUqLA&`݉&*MUB7d Cvr/# -j -r"(|9{:NCKΝJ>.(]co "
^&7<͝DѠ5vR!ceHa˩P"fnS?y՟5*Te
FvsX2{o$c[ Oj9 +xڽnίxG ڽ/ +Ch&K' +8g2yQ1`qAm>-B%mKDQ\*3uc]-1qE-ZUfg +fQ +"{I(W"xu^~H^B,;rG^[xD՚=?cq ++l"341AMu+j'U_VS,ÿ+ v
]~oxLA0_$Z +@I@'FkImEݰe`㪨 /
p+Fx4 =--aF̈́Vj(/PqFheh),i_?8Y̅@eu@yb_tG;P:#2==*JnFآN $,'o4ZX%(c7B
yso٪nIkɕ!`AҾ>ZqğK秕3Q49r#vnroLO(Cq;\%a#T)2,jq"XaV
btzJ>OD\&l&]٪HHk{_-ł$}PqʥZnP{ՇTs>$>yZvRgR)s {락'D@_zK'ɦzƐ#9ũY5z+ +$Ȫn`϶8SQj+ς^B-RjxB+A59aj.Xװ nK-> +%7BI8KqL\p!q]]1X_4ncFe9/oTZ3kȏ(JNc+2WROb/f+Y3J9SGUe#cl]T:};nN*I}Z2bw=(Y{⧮i#Gb^bk.XoFvl-PұԱh8-B9-Qw
/sQ+^OeMgRz*d&i\9=X4m..o
.k?V<mؼ)Pbc +7?m @X3|̒~Hxߧ +gd%f@V|!5\C=.r_BLzuF-mKu}tJ IN ӓJ|E:JM8V xEaiiaWJNY$ +L^~ˇXV"iJRy_hK`Ѐb.HPu숩}LWcJTw&ַ()>##.iaR^kJU1B؍ݱ}ldE_Rj1OAs;~s"$9VG5P.Л?νy|[*͢ ѽ@sO>}^KZ;uԑrFQr
U@ڸY +K(SjX@/DMX_>sYÔ\K 3 +JN3Vg,@2Pt1"fFӱ,̜iZRǕi8W[L%f8Tg$q +S'z$[0qz#t&4ѓ +hk$tgL^N ʡ% 28VC!.aAaAmqաͰhrO~ݓ_ +2<OtZl7t®[4"ݸ0= A#҂_4Wbb:@_Jd,\;ex:uFYtnL`,5hZ,ܓIo?ilb>[ozƭ;b*0m_ӡLawa,˪4^c) Y!ɋrSA#wXݰZGzX-ʭkH<оVR%"UA8 +1(b_ĀAb` Hb\ӵ::{tfSibvlL6-ȯIm8i8GVwـʘYO%n+!
J6KNx]t~{8V\McοHxLy0evT ,\vv<Բa'yl(,A*5qLX e63ԚT"n@RPJ;|eYS/5 awΎF2SQ䏁lMKŰU*YPj9ȕIxl݂gаZ(@U>q07)nT6V@SUq^LDv[;~a&H|Y tvpg#Nk~r, +Lk9j?=VlÝƝ0@!2q <zb̉pe$fKלnu[?oݝ/='}MZ/UeD&NɞT(8Z endstream endobj -551 0 obj -<< /Type /Page /Contents 552 0 R /Resources 550 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 556 0 R >> +546 0 obj +<< /Type /Page /Contents 547 0 R /Resources 545 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 553 0 R >> endobj -556 0 obj -[ 546 0 R 547 0 R 548 0 R 549 0 R ] +553 0 obj +[ 543 0 R 544 0 R ] endobj -546 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 111.011 392.512 125.735 403.691 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> +543 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 264.586 169.641 275.012 182.161 ]/A << /S /GoTo /D (Hfootnote.25) >> >> endobj -547 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 137.449 392.512 149.405 403.691 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> +544 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 318.325 148.601 328.752 160.892 ]/A << /S /GoTo /D (Hfootnote.26) >> >> endobj 548 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.345 189.952 229.772 203.9 ]/A << /S /GoTo /D (Hfootnote.28) >> >> -endobj -549 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 255.958 166.042 266.385 179.989 ]/A << /S /GoTo /D (Hfootnote.29) >> >> +<< /D [ 546 0 R /XYZ 78.37 808.885 null ] >> endobj -553 0 obj -<< /D [ 551 0 R /XYZ 78.37 808.885 null ] >> +121 0 obj +<< /D [ 546 0 R /XYZ 79.37 771.024 null ] >> endobj -161 0 obj -<< /D [ 551 0 R /XYZ 79.37 447.38 null ] >> +125 0 obj +<< /D [ 546 0 R /XYZ 79.37 236.296 null ] >> endobj -554 0 obj -<< /D [ 551 0 R /XYZ 93.716 120.649 null ] >> +551 0 obj +<< /D [ 546 0 R /XYZ 93.716 118.351 null ] >> endobj -555 0 obj -<< /D [ 551 0 R /XYZ 93.716 111.021 null ] >> +552 0 obj +<< /D [ 546 0 R /XYZ 93.716 99.26 null ] >> endobj -550 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F84 425 0 R /F75 338 0 R /F74 337 0 R /F81 377 0 R /F64 333 0 R /F15 334 0 R /F65 335 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R >> /ProcSet [ /PDF /Text ] >> +545 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F74 372 0 R /F75 360 0 R /F30 363 0 R /F27 362 0 R /F32 349 0 R /F67 365 0 R /F69 549 0 R /F55 550 0 R /F68 364 0 R /F65 357 0 R /F16 359 0 R /F66 358 0 R /F72 369 0 R /F53 367 0 R /F59 368 0 R >> /ProcSet [ /PDF /Text ] >> endobj -565 0 obj -<< /Filter /FlateDecode /Length 3202 >> +558 0 obj +<< /Filter /FlateDecode /Length 3037 >> stream -xڽ[K?`, -wFEd-HϴnjBs$N^ZMuy:{ѤbVȑӷ͈j2?pn4\qSO1E5B]f -)?Lq_1轹gmH}4ʻWugpdxL
3jMT{͌{FhzO?Pq a=V#kRf??ob~-?|A_SeÕCm%j:>+9R1YJZW_4}BMZ1Zu+q"2~ZN5N,q!k9ѹT[+chؐCQ{OXldB{
Y\'ܑ~+.>GD naDab VCaNCZq^0cCɳzYgjMt3vttb =se&4-##?1
0[t -m4 -@pr'0#Z{e$cy{D=3Zkt6oz{yͧ>mt)#qyX'CHl8Y7(;'[g}bO -HꁻQ5pq_3=y4g&ԧpN-(9c7aN~龗}jZiP^2A'pQc>-0V:k-)0%~F=ԩD}F%z ]:wRxfvdJAb@~dJ#km`di8U0Y -ɧ;b'NGǵNc9:̉z89Z=<Ժ*P[`+1)7f`HI`͆܉Rԙp8F(!/i
Np'Q']9:;#\@~BR -~7'ETo-eCϱZ"ʧ\hDP%m-F.P]iOnH+V(H-̤*RFSe&XUbkV-X6@sAiG<lfH1Q{A']Z'>LԎ9
cnu@\R="MX˕[TQjx41Bv-&F[yo20o(XWw*ԩ/Ql1SR}R[$ -^z>Y|YDeVeR_];8I)eWqL< 1ѩ굮lֶRh9>hj̨/ZQSp)Canhs2m0mm/ӞsKge&ܭ`t̝>F5ŊFjdGe%f'ϓ,AAr#TtǂKVBN }Vzf7 -{52EΐlN1v5QɆ
LǶ,r8JT9 /نh +x[K
ﯘ? Wj<;W9''|rbK~3+|L7 +D) nܾ~@<h=_-CƑT +oeD1yEVqU檷.ГoHEE|ţx12xOk-7f5_I+L!z! +Y=f*K|RS0+Jd,fzGrj鹬@E%RB!0͆a +lT~ƸHlWh}3?j'Hm%r+j1\ӧs?!ްSi@)x,H:iI`%I~]U51VAIhf|vgL$ mߞvĎΑw&4B<뾑\O*Qn\A,Q$VWB&2KMŹL2PaG$!}U,NF6;-HC5=p;;a@+_ߩK`Ѽ}~yrNk4YfgG9FYz>cAx0~!}_8'u#:V8ϴ:QnýIG!O4(HК6^PǯdmץU4aȂ<2SɯƎQL ޅ +Oc:∍3H0]zZ$t!%=y +Ønݘ10qpa%|5ևH]6sBY'#.J#ic6ܦpRtAg;⥈ad{L"B0Ѹu'"+@?Ě2%v߃0q +%K04AGV<ULztv" +p)n`w"'=\,wZm(aP`0<[s=Qk\*šTWMҎk#VyVhPhGB;k;/|Z^E["V>qZO8t+~ީ&8^%Ie1W<sy>R轐lqfɁ1c,OLszz5&LB;BB^v^GY[~y/FXF]巗ߍᘞqR[#E{h h(Nt+"oRP5lUm0rLih8+>틳eV\F>=U}WGTUԹ\5w%D1dr +ɴdf囁kQNJN3aK2p^Ҋ#C;LR_r(*$y\Qsb>\}zn'Tr+ס0?jl]waFcG_17Qi $#Fħ26m(sܷ]o76תvZuvpN5eJ$BIH9N3qK` +Ms=$.JNBs]J}jׇR`KL㕾<֔[AO4f"5Zl"խ
Wv_1^,KYvp ){ߏt-3n=kۋ[=LwKC=.smiݻUw#a~X9%P8vgJh=zF, luؒ^Iޖ +pU:EnM}7]v`>é$ΙvΩy]ikӵCRdj邿Я]2(Rn +} Qt=qhXZLhzg~mrSmU[r(gUY_^~??GB.#DR-H:~8gbdDr +?v["2ԸHOi !%KiPʓ^L[M:3eK+!DvA_{Oh89)+~kl^Z +S|GFKVJ##C31+[MՉgL^McƲ=lb߉Cc4'V뵣E2]:yDMӯ=Y9%
,]*YwkYe!`cϦ#fRoG8+9e^Ic⸌v6NwxМ
mV>ǼXe;K,Wvޤ6R潕Th;O2GwD[<{Zk?[_ɮRcOrjE&`K;cf}\ endstream endobj -564 0 obj -<< /Type /Page /Contents 565 0 R /Resources 563 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 571 0 R >> +557 0 obj +<< /Type /Page /Contents 558 0 R /Resources 556 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 492 0 R /Annots 562 0 R >> endobj -571 0 obj -[ 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R ] +562 0 obj +[ 554 0 R 555 0 R ] endobj -557 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.345 544.571 226.041 558.518 ]/A << /S /GoTo /D (Hfootnote.30) >> >> +554 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 250.957 537.741 261.384 550.275 ]/A << /S /GoTo /D (Hfootnote.27) >> >> endobj -558 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 255.958 520.567 262.242 534.608 ]/A << /S /GoTo /D (Hfootnote.31) >> >> +555 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 494.44 416.356 504.867 428.647 ]/A << /S /GoTo /D (Hfootnote.28) >> >> endobj 559 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 322.429 411.45 337.153 422.409 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> +<< /D [ 557 0 R /XYZ 78.37 808.885 null ] >> +endobj +129 0 obj +<< /D [ 557 0 R /XYZ 79.37 771.024 null ] >> +endobj +133 0 obj +<< /D [ 557 0 R /XYZ 79.37 612.864 null ] >> endobj 560 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 352.875 411.45 359.848 422.409 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> +<< /D [ 557 0 R /XYZ 93.716 126.623 null ] >> endobj 561 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 235.007 384.561 245.433 396.842 ]/A << /S /GoTo /D (Hfootnote.32) >> >> +<< /D [ 557 0 R /XYZ 93.716 107.531 null ] >> endobj -562 0 obj -<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 111.059 67.636 240.514 79.256 ] - /Subtype/Link/A<</Type/Action/S/URI/URI(https://dejavu-fonts.github.io)>> - >> +556 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F16 359 0 R /F81 401 0 R /F84 449 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -566 0 obj -<< /D [ 564 0 R /XYZ 78.37 808.885 null ] >> +565 0 obj +<< /Filter /FlateDecode /Length 3371 >> +stream +xڽ[Ɏ+D4PMM
`fdx|0`}MvfT`0be$o}'1A_=7q3Is3Z0q6 +9=w [~UO4VQ+8VR<?
wmD <|*dUt-;~=L4|IBmVYYziG +-BJ +~g}KFʵc\<?{v6jWoK0Ԏ<ZMLY +:_ؔ{6PM@ ++mFm(93ŀ_zW +3iaBIGV3%劷lƓw{>
1V
'pr3r-(u +\8HsUs"~\kTʷ4U@Z4 +uS3ҤT$#.RQC0.'l}NO\Y!)˾R)^B;nP#s\
ǂuϻkTuR7#mKrD(f1=M)p-KdcZE1hjxZ^WLfp] 1Pp͵2cL'+UG!\В<?&JHZg +fu@IxiIdjbxXIKkb$VdrG/r(om\yc[}]ꐵzdH@vNmi\4&@wXCZQTJʻW)VhK8"AGض$|pwv@}ޛ"7µArp}yҏ]tI6LߕMji;\k@TqhT!&MP;/O@Qbәy܂N6#)(|J~4r6y#(ukdXG\ F &EsaO=RY}>hx&_QHMe2h;h"dvo"ffI*TD
-(pb8jc6jWhAO"B|1O;K>ھx$1G? +PIuqt12_!RfP3l!
ǣ;8xdM5\S@`L'!q*Z6 Ɵꃘ]jp>K@1=T#Ѻ/%;vԠ7p1%'zZ5KJFUa +Nyc(dfQ#<*E&ΞcLڮ0Hɰ<=d`愜;G $U[҅a]|vRl3
VfNLsj/bR$Z +Q$V-=G5qhXzkJXC/nZT2eE:N>vs'6p~mlY +J;?^tk-4zKhRj}1JSa-٘}a{{T,,$=Gz2ʀf&bU]\ЯsϭMYyz +wW( +¾]Xadh߈Mh龡Nɾן͈I&<0Х"ɶ<< Զz +wB@G%[yK5vՐd8w,n Z}fתW
9TN qM7}K~Y}&sLÙ\^&W>MӢ$C-Vp0i|nڨWV50յ|pxdMƹen*/W
PCWsU + +endstream endobj -568 0 obj -<< /D [ 564 0 R /XYZ 93.716 490.28 null ] >> +564 0 obj +<< /Type /Page /Contents 565 0 R /Resources 563 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R >> endobj -569 0 obj -<< /D [ 564 0 R /XYZ 93.716 480.474 null ] >> +566 0 obj +<< /D [ 564 0 R /XYZ 78.37 808.885 null ] >> endobj -165 0 obj -<< /D [ 564 0 R /XYZ 79.37 442.26 null ] >> +137 0 obj +<< /D [ 564 0 R /XYZ 79.37 771.024 null ] >> endobj -570 0 obj -<< /D [ 564 0 R /XYZ 93.716 80.936 null ] >> +141 0 obj +<< /D [ 564 0 R /XYZ 79.37 205.131 null ] >> endobj 563 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F84 425 0 R /F75 338 0 R /F93 567 0 R /F53 345 0 R /F64 333 0 R /F81 377 0 R /F16 336 0 R /F65 335 0 R /F71 347 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F81 401 0 R /F84 449 0 R /F65 357 0 R >> /ProcSet [ /PDF /Text ] >> endobj 576 0 obj -<< /Filter /FlateDecode /Length 2303 >> +<< /Filter /FlateDecode /Length 3308 >> stream -xڵn,܊ 4Sݜp<O=05/*<v.w\N;{zNyR''N^8(y>?I| -R'r>p">bz+%Np -k*LݑmJ:6=uWqGI#
3[LP ZB*tg35J`f"bȦCk0 C24r -JR+[o(3os5,%`ʢR]Uu.QioFK=XrtCc?f#~Y؆V]$U=)F}8]*#nb wNgF8=cl|q -5:0HXυvz?Dqp-CI?
hi*Dey-L@Ipؗd`hk~pQd-qlN5}I*['vʙY}HL,F;ݤ{NNx֍
_#Iv=qyWߔ_[2)4PV7-/rX+a}`Nb,Z(=X̲<Stsm-7~$60 AcZW*74}O=4.f3e/d/{X
(ԥ 3Y_PY(/hV}܅rbsx+oɡlb h4\fhϿ??m=ۄ
XEp7C黢 l74QtA!qU4q3a40aܟsTQGyǎ:NO,&t1th?J)sƚO..ݙGPyU9ϔ:1#ap_߭{҄1_WtywB*號۫cwz5>ţ)~zHG
+x[ɎW0+0VOyt-lߑ5=5p3byOwWN9
Z$~'тq-N_~?9|\|\_q.s%7}O/4J[J?'Jyp~Y~̀_@hEX`#K3ѵ +V$oLuuEoz2JըL# +z
0-`ֺKW[=SSo5m; +Qp(2^iSjp#>>O9iGqF=
%A݄h<݅r9WK0 +eq|A*q4de:Ufgef<-2MKSҍ/GTPA1%!9RږJba,C&~J&嘔e@<sŏ/7/7-) =91-rbګGOa3R+OEM +o"PX+fbJb1æK1e[vPTC+>C¨!Fl17A\@֜DK)pSmMxpRPQ9[Ur/BL
rP(\x0ipqPZu I8ִ-oL7Аxb-Yf s(\kz_TT*uonNY7P)U*-.sWUrV"QbWK
`JIKKW< +ݐWaְwS'E _Uފ"OZ#ZaBĨ
p|b?{'Kjӊe6fYVK><[`Bf۬>:qULվTHr
KǬmwNMkMc3Z,'eX2$so\,S6G5I5g"S.]y&BwRB3g
N(mA^(Rr+y>!b~҈&B];#ey\eɝIۃq$k+$S 4!n.@:+`Q
HZ>wuj=Si
#{
E5KQF62p
dT3I"
*yWzpk.s}\?641Yi;";^Zz }ȓ
Ԑ}'| /fJR3ߟcz+EE&ӯO?NF0I?wtO4YRT~[7 +mwq#a*vTāvVR#>$N;gZN#ƌAg;b47TqTjO3jB܃@&] (Y8uڷIR- +ѷ8. ;NTP"+[jDI%6n;ﻷ +û#IؒѓE}7(k 7Ya]TPԿnoE_*0%a4Vtsg!܀"LoJY +ÛGQ=em9iPN 0)^}3rmìѯmcuH
y:ˌ3;u(C>Q">"uf~ᔉ@6'Ksg,s|sZP
ߔ~W`i4ɑIVy<|} d^Lc)w,4f㧃 +E-f.2mz}^OEEF!feve'uXQ(Μ(2+{OucKAY|"]ZP(1jd=nK4=7w`<r),_+3Ԏ.&U2\F;J>;M\sIi0P']Mwc* endstream endobj 575 0 obj -<< /Type /Page /Contents 576 0 R /Resources 574 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 581 0 R >> +<< /Type /Page /Contents 576 0 R /Resources 574 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R /Annots 580 0 R >> endobj -581 0 obj -[ 572 0 R 573 0 R ] +580 0 obj +[ 568 0 R 569 0 R 570 0 R 571 0 R ] endobj -572 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 480.517 320.949 487.491 332.356 ]/A << /S /GoTo /D (section.0.7) >> >> +568 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 171.066 632.045 193.542 644 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> endobj -573 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 502.177 320.949 514.132 332.356 ]/A << /S /GoTo /D (section.0.7) >> >> +569 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 209.263 632.045 221.218 644 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> +endobj +570 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.345 411.771 229.772 425.718 ]/A << /S /GoTo /D (Hfootnote.29) >> >> +endobj +571 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 255.958 387.86 266.385 401.808 ]/A << /S /GoTo /D (Hfootnote.30) >> >> endobj 577 0 obj << /D [ 575 0 R /XYZ 78.37 808.885 null ] >> endobj -169 0 obj -<< /D [ 575 0 R /XYZ 79.37 515.126 null ] >> +578 0 obj +<< /D [ 575 0 R /XYZ 93.716 137.083 null ] >> +endobj +579 0 obj +<< /D [ 575 0 R /XYZ 93.716 127.455 null ] >> endobj 574 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F65 335 0 R /F81 377 0 R /F106 578 0 R /F105 579 0 R /F107 580 0 R /F27 340 0 R /F30 341 0 R /F64 333 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F66 358 0 R /F22 389 0 R /F63 356 0 R /F81 401 0 R /F84 449 0 R /F75 360 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R >> /ProcSet [ /PDF /Text ] >> endobj -586 0 obj -<< /Filter /FlateDecode /Length 3557 >> +589 0 obj +<< /Filter /FlateDecode /Length 4244 >> stream -xɮ$>_?0Di)ć}*x8~DQIQo?wyuIe7qI{3Ϸ\}z{/88?^ZMW -㸢'ZyBZ57#_ -Gi4#BMw 3#; ? ZeBJk8)-#2% 'oyیpJ8YƁD:Ʌ -<+e*PDjb?A!V'H 4 S&="H"mX@a|8zsPVb-TOͫУ )#Iym## -p"2N?z&шp7k{/$
*DªHrH#Gp{:̵Ju|^1EpjLJ$4g^J¤\~V$DYU
:((g:
1%݈J
R10BRR4ZYZP< e1%^6^AJM>4j*Q>Nת0T -tey'Q -pY鴲 -5ZE -֊KfʋqПL9ma&)4kR -Vļ'f -F0%8\̆.qԆ'v0wQJqH1Ҕɑ=r=&9I
(h])@d\\3Jc̓Qgȹ0\;>@~/RI&(롓NeQuL)WxxM}Ra02Fyɸ)xH8Ad0]վ6GLVM4{(Dyz'GVlRS0L2^eq]K+HjxGq3+D#l;mYnb1+F6
7i/
LzzԒ{zєo(oL9J5]Ij{F+iЖt.5-'%@uc-Hmv]얘rEрA3ìx -)}rHC#S2rSg@34V~lUe/mDjy}*kAUhH0ã56M -j zN0*mJjG?sCEyF30`L[~qnQSl |9MHhvsagF4c7Mckqp/}`EQlj'b.L <L|l/-euAr'M+ -b4蛆_5lR4/n6)O0#wVSY;m6'ehJ+m`_þ. -; b}+o<7p8BQy/AeOB6gXzn#pU4sj*v98E│<oZ,}_29?o۟%Lz}J SP -ý5e/),>T1㸃s7t4rLmnl{ -AZIjh"u7r_?5l{=JXǦ(q>Pud}WK}H Jd-Gk4>_mO1\SF`O% CCaOISBSq}L
e3wp0d(=kjZЄ`AF-@j#qShuG+oa/}MՕ3='VlUY5|7J>^q/Na]e"ޖAlcv9 +x\KW1>M߀F5[88@rO],{zV#bwzbX[ +}P1)OEI
2b"t[1!Lh\]'XVgkWUOޖxUqzzL+>;,`q.EXBiPڡnR8p$zEkVFp OBCv[k7z)泈_RsDZN@(6cc]?.eW:F
J aߘgܓo{6 -ӎM?^Bs`$!DlRb5DẄi*#t)G"Xח6VX(K?PDG4YVGJGExj{jӺeNeSs"ȱu.=5{j#*CQw|NyM*ǤGvXj&+ݱ&"8'"S./sw+\&=Az& R]uŪP
n.HMLz15>NAuO$D h9p+a9<+WȪA12*,y$]
\Z5kV|ZJNv>d[nmjVjL?A +<dcOۋXl9EBs䒬Wo0TҢtIUJ?Ԑ7TӰ9oYhG
.N.o ;/R vH$OsPJ+`d +@a&p=TNM<auA#lh:Lʦ3-'XZ8Lv
.#R]4=9xFՆ6Nnz"OS(j4qY{Ws˘,Bhte+{AIbr@ArE9;|s&jc(*Ԁ$!~xߢ@ +W~"䦇f՛Dm3B(T_Aw'_5ƘMaUMǺKL;a$o|#g WhIH9ih+QU;4D&1 +%wGdkTZK̖'Ats== %-9ѾkL+e7 TJDB, +(2Pp[&J=<o'uz +=BJPs,@FmٵwhX:mʡ08c*DLh1;W78#[ST+ +:+Ow^cޠ&prNr̓LFՌz EjOg:d-kaSfEu.vf,fN6]UI͡BN-Y' +:5Y5;v!zLޞ>
"Xؗg}k~QdXDu+ג+u9uv +i>Qc=kU%Qcrj7),rTcJ`CF,dݱ0U&w%V +X2Ejch Y_n{pA7 ]t|s!h;ΰJa$S#?(^0UJU#{
Bqa{R[] +~ɩec4MwNj&{~FrIiYQfkᎳޥ:.~y+o>Ohv,?6@IL?t¨u[NUk7ոZaƝXuQH|'ZxS.'wYYߩx +[d[O=*Lcm@vS@tЉM}*S4jǯ4{cP%sÞOk\N&y䕅,Qnte|D^~W&@+Hy)mxSMV-o0m>]W%`N).y2*Ͷ.Ab[ޗf8퇵ɾZ˾@R<Lcj @߂[f6<hA}# \9M
kT#֢_{jūsߋ|/>wv]3
Nի߹Gūc!RNFkֺQQ<`^HГ""R endstream endobj -585 0 obj -<< /Type /Page /Contents 586 0 R /Resources 584 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 589 0 R >> +588 0 obj +<< /Type /Page /Contents 589 0 R /Resources 587 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R /Annots 595 0 R >> endobj -589 0 obj -[ 582 0 R 583 0 R ] +595 0 obj +[ 572 0 R 573 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R ] +endobj +572 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.345 732.916 226.041 746.864 ]/A << /S /GoTo /D (Hfootnote.31) >> >> +endobj +573 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 255.958 708.912 262.242 722.954 ]/A << /S /GoTo /D (Hfootnote.32) >> >> +endobj +581 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 112.755 593.95 123.182 606.679 ]/A << /S /GoTo /D (Hfootnote.33) >> >> endobj 582 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 278.812 667.892 289.239 680.183 ]/A << /S /GoTo /D (Hfootnote.33) >> >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 324.77 328.946 331.744 340.901 ]/A << /S /GoTo /D (subsection.0.4.1) >> >> endobj 583 0 obj -<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 112.169 86.983 232.661 97.581 ] - /Subtype/Link/A<</Type/Action/S/URI/URI(https://pygments.org/styles/)>> - >> -endobj -587 0 obj -<< /D [ 585 0 R /XYZ 78.37 808.885 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 186.766 285.11 209.241 297.065 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> endobj -173 0 obj -<< /D [ 585 0 R /XYZ 79.37 771.024 null ] >> +584 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 487.781 285.11 510.257 297.065 ]/A << /S /GoTo /D (subsubsection.0.6.5.4) >> >> endobj -177 0 obj -<< /D [ 585 0 R /XYZ 79.37 748.222 null ] >> +585 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 354.688 215.591 369.413 226.878 ]/A << /S /GoTo /D (subsection.0.8.4) >> >> endobj -588 0 obj -<< /D [ 585 0 R /XYZ 93.716 99.261 null ] >> +586 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 385.134 215.591 397.089 226.878 ]/A << /S /GoTo /D (subsection.0.8.4) >> >> endobj -584 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R /F16 336 0 R /F81 377 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R /F59 346 0 R >> /ProcSet [ /PDF /Text ] >> +590 0 obj +<< /D [ 588 0 R /XYZ 78.37 808.885 null ] >> endobj 592 0 obj -<< /Filter /FlateDecode /Length 2900 >> -stream -xڵ\K
?0%maw9-[d=;=rᦔ*w{_M\*!Q~IJ.RRWH͓^q/o}зw~Un?oW%zP]%9!0HD++7
K8_J7U'm/cׇ+jjBɂI1iu*)WMN+h Ẕ -˖d,o{ƾ2X` +Ϯ3*Lvh+nJ"+N$T6䉉Ǿ^=]<ՖWW<6kJ$Y=j*n -r'IUFFGbh -|)x=3n?塭0`vtZX㿎jߦxm?h"7/N^Wr폛 ZxǦ/[evONpq';X[t
:IWu@5Ь,zaQm4K3]G/8fB8=^-p͍c;٩(l0g+Dzj%d$ -nlU?^vPt"67*~ݿBW;2AIߛ| -twᘼ)#wغ:[T3%WV{' -~W jhig*ݫU?mɔlnl
孾cgC{-xl{uV]@1>9UITc6G?C_ҊȴK+6sZşe"}</6fҶ7gcjmTcΥ7MgHYd&[)hmԁbl,EB ;*C,씪w!,ig_E~W/4k3*%X*/օ] -&^PdaL -s -US2 -~$Qwsr8|}GZ<:[7:ɕ%7rB'~;VwtC; -顆ۀBBdcU' 6:@|w qyJG$m
siȕE_zSTfW -ݝv9Sz$ŋ\9<\-u)c?V<N6Dj|Z6X0G;ػ<SGHihwpؤ
1j-u3dbLmS3 ךIP1 -51`}?1-!n
ZSյ -*n?H^L1:=Iibdeۓ-,]qHLPw`6Il|5Zg1(ΈirE(!"/|NC]Ungw1vqk)5Z3WDLC~SLw}v PBYָIDYTܐJc$H@8&ܛf&u`97W"+ ~Q݉$hEŀ1T|@Wk:eD
]Y+mdfIxB)Qxgb#M84,[NMzL&wg꒛Y:QJ`K2ixp6 -ANmfg&B: -W!a+p]IL_ZDάB2#mN$>} -|yRMXxdVUsUĥ(c;4>5x i(4
ѻxJh$ʨw)Wjcp*: i+>WKR,
:lh -(),ӳN`Ԓ%MdIN-ȓ,O; -<Veqp$)X5(,':ܮyrP:5vД6?hC - xjXd
V>9
z؊h7:#,*V}$l8>⩩T _(K'xO~dڗ -endstream -endobj -591 0 obj -<< /Type /Page /Contents 592 0 R /Resources 590 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R >> +<< /D [ 588 0 R /XYZ 93.716 676.135 null ] >> endobj 593 0 obj -<< /D [ 591 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 588 0 R /XYZ 93.716 666.329 null ] >> endobj -181 0 obj -<< /D [ 591 0 R /XYZ 79.37 771.024 null ] >> +145 0 obj +<< /D [ 588 0 R /XYZ 79.37 640.07 null ] >> endobj -590 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +149 0 obj +<< /D [ 588 0 R /XYZ 79.37 481.496 null ] >> endobj -596 0 obj -<< /Filter /FlateDecode /Length 3101 >> +153 0 obj +<< /D [ 588 0 R /XYZ 79.37 201.558 null ] >> +endobj +157 0 obj +<< /D [ 588 0 R /XYZ 79.37 173.238 null ] >> +endobj +594 0 obj +<< /D [ 588 0 R /XYZ 93.716 84.087 null ] >> +endobj +587 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F75 360 0 R /F63 356 0 R /F94 591 0 R /F53 367 0 R /F65 357 0 R /F15 355 0 R /F16 359 0 R /F66 358 0 R /F30 363 0 R /F27 362 0 R /F72 369 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +598 0 obj +<< /Filter /FlateDecode /Length 3330 >> stream -x[K$
ϯ?$R/`1dnO6CC*J*yA[%Goۏ/oB00?^7q3-gr^? 9}OxG~ FN#oI2^>~DY~C -Q+&L7SN& É)VY,GLnpDJsl\ (SzӫNzKEBs[|<{+*klo>gymccx\tSadx)I{dq<0T7G]MsU LN o$:g3xzXs)yTBCW8<f#~Uѹ4q;+G,GiBL~Q2o9+ -5NP*܊@Vv% -$} PiWE}+svIoD5ٺhA*~ZW">wMo?Վ_AQrJ?8NLruMk
J|.8Z6Y02{ -_GV/V`PVM0U1,EPpG-O͍_x+]U#|yҧZ5#jŊ{ -#aOXnLPSH.SuT0^*A[
JK=Y[54:KL/v[Xٕ -ȶsvaѮzʴ2iYWWPd1iHGY/uG'$\yquiײaUq10gZ=.}VgNIn+]̣{5S`{\T9+]T}Kʸ'-W"a:FD!,mb1Էn*k<R)l|hWR ,C=fVW`aAUHPbPVOFxr -
mHUҏ㥯&WLA6hTuQ8RW<x<\2'`I:TN -pL{2\SIڟm*h2U -sܯt56c[9!KRkq!7Wuy0M\
5$tH9*_&ĻD9#ޞ6}iSVKg?Oޡq[dd +x\ˎ
WXD*YYw"US56b=]UEGT:-~ׅ_\McNKz/bs1Z0o}}nARt9s{~WiҦz(}=_Ryx%*۠6T?^dz\FU,2? @r᭽ez/SEsǟ2a2n_xj6slq۱42v&;fZhݬ@4KTP s[M\n?^֨u HoMcr%U qDvnʮwHV=$7@ԥR6ޑmhx74q# b\F[;5e,&Ԅhp[nY
ŋ*W*ީ!o4 +&
Xz$v%xٲIܷ>f<E~"p:xeHt5"}11%h̜%-S3WTIoz?>\y\=a:eLn]x!/|V`:ud
DJ2/˷/~1^m@/חvA0L
^sXU&i[Q4C|w/vs2SFb؊ߛ +n5HP6*|o *)5i42
m?j5Ȍc;k8
D;G^ѺFM8G +F
C3osJ!⠆Ҷj{!KtzwDjǐO~Za3+iqȮ +#:}.kKtIH; +f;L9@fU)a}͆̑l4nph6EH">Ҭ̡߆t +:W3e`¿;~# +F~dVσdiy)mI,0\ +WaSS-E(uEaJh4p%ili1F~ٲPRҶ-g1aqh%l}ɺs o)hJKG]1Q'[{:'lIb;I/|ںѻ)O
[0[|<Qri+3HJ<u%!&]
+zTUyzY:XdLXq-PvXUWX +>flKKGOuMj"yI+iR'd%6k:{gvbنv9Z!YyG!`J0!'72dN<a%5NMm=?fh=-`eXq$TPrG}`/v~0Z#;gwl`h#ωp\ȁJqmv?@Ihƺ{<'"([%?)m-hLyF4qdh{,!cY${/!8$Om12^El&An7M [g:4hj$)iI.דJ/#ܣfzI'BpZ0~RhZZGЇ,t(;RQp}D9ZM4,w(Ľ"3"U ʍ9LZL"M'gؓ҉hCD")Q IՆPGi$8^C&2&~hFC<2A |F"-X?QڃtC"ȳ"T @vW$M
4hYf\mMj= +@#B仇9h9'\G +>`ANIt^6clYe#}י*@ټx endstream endobj -595 0 obj -<< /Type /Page /Contents 596 0 R /Resources 594 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R >> -endobj 597 0 obj -<< /D [ 595 0 R /XYZ 78.37 808.885 null ] >> +<< /Type /Page /Contents 598 0 R /Resources 596 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R >> endobj -185 0 obj -<< /D [ 595 0 R /XYZ 79.37 771.024 null ] >> +599 0 obj +<< /D [ 597 0 R /XYZ 78.37 808.885 null ] >> endobj -594 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F80 366 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +161 0 obj +<< /D [ 597 0 R /XYZ 79.37 490.717 null ] >> endobj -600 0 obj -<< /Filter /FlateDecode /Length 2875 >> +596 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F84 449 0 R /F74 372 0 R /F75 360 0 R /F65 357 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +604 0 obj +<< /Filter /FlateDecode /Length 2854 >> stream -xڵ[$7+ -n+%ӷ0|Co-#T?R -_(Ra_?1J)>R?5'
?[<oR_~V&oXőD)RTߍ(>Ž"%rS쌭/lc[_8yVSO&Sp4A0:Lqqy҄1g78 (5u-txޥn
onoez -\t.9)Dڒ
U`j=(4u!iq:Ć1^NK\Hִ[Z, -Mg|\QT=.SrqMl! S1EhyhH@RdQɘHLԵ]xLpyCSK!K6>ƺ !_⋰?dğl,. B@6c?WnC?[3$&^\12TG]^Wh!'0>Xa7`r5`p hfv1%JG6X`cS#B~D(zBnbErHuɹ719d E>G&9R=Õqnm&)Jʿސ#N53 f3"G/wI5=GKcǴfo8NaCsu:̘-d3Mv*p4ι.54Zُ+ӨмRC5˽N'Mev1Ȏ}uYI&_/9)XLw^m۳}Dyj*v|:Im[sqWai֒SR@d @5lQ5w_mL@ -ھgF@Dv"s -uZdq@k&u*b@ibU9qV9Y ![IGXQYmTZ<_${SHI,EXs>SLTci]Hcs'Mq |9ggǘՁYՅ
Hjɸ -s*l{iZI#\{WϗNHW"6s&}oqtec4uA*!/ @]^ -\-SjԂD@u!$D|)!㛺[bZ**OJķ}_6kAu>Vg\8-zmq}ն_F%+jE3w{Y#ͦZzT#nߘ hnII -Y7[^nkoĢ#Ft={~nAZ[zOe[)wNLiEi +x[͎#
SZ#Q%Fz-)洇\vY(#ER2g}bC7q8bP0߯K\Yzѻ44=5*%/M#?00b4gC<EG{*gCzT)9ϊhetxh,V2^DzHҔ|a$BʄH?"ڣ2cBQQX&DY]e:YnܚtϤeh#oQ:Р(%U&ċȀ'Ik
x4OKa4onzsfKLrsz$8&bRT#QA2AE}Lř|߾g@7&`^L)_?JωQwh?-G
ZL/i/+&: ̫a*I2UZLk)$2z10rL.{lU+71<p+hiUFى]4)PW06wpe$Bz, +͌T+< +& + R0Et%:%8naF&4"%CNƋL.g ǩ:֔,-qJY Wcw1*St,5hңwImÈ82^\K +AP +ĄT=[}P
4 +$Wwxm0g/B)KϻW^jfgX>UA7{%0ꇸvC):q2v5Ed/䆹^!g;+Ҏ9MݸC`,!*~\l#E9GE=Ҝ7Df;R
8Ȕ{m*Nr3Oyɓ`Rq5ӌE$,cx~W}0 4wYch +#mmnR:]"eϔZN>sDC)<PЂ|A} +DA#:OqQgH)_C(s0JGJsTNRo>vAg~+ĨnaVsF:yՊY~Mj7
LhaZVI/%WP_?)侦#Git*|Ү[T>i'S^ϴTm{l˓k[y/{\]W7
s)1c_VA{HG&1bd^OF^g~F}xyh;}AM +И9YuGe`[M'sy=})%;*а5H~͖O&aA9omA+y=Y(jbラ\EY*MI땒IQZr0\T✁IjpNPWFjQ͵$hȌϝMkn甎Tw9g +6,ǃTv;?Td6Iis&i/jZe`',~D%!|NԵpzn^_m]^[a3v?HW"39.>Y~x*iO-^W^,*&
W]yE)QJJ +uRNGZq_?B4#^m++42 endstream endobj -599 0 obj -<< /Type /Page /Contents 600 0 R /Resources 598 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R >> +603 0 obj +<< /Type /Page /Contents 604 0 R /Resources 602 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R /Annots 606 0 R >> +endobj +606 0 obj +[ 600 0 R 601 0 R ] +endobj +600 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 322.429 491.041 337.153 502 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> endobj 601 0 obj -<< /D [ 599 0 R /XYZ 78.37 808.885 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 352.875 491.041 359.848 502 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> endobj -189 0 obj -<< /D [ 599 0 R /XYZ 79.37 771.024 null ] >> +605 0 obj +<< /D [ 603 0 R /XYZ 78.37 808.885 null ] >> endobj -598 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +165 0 obj +<< /D [ 603 0 R /XYZ 79.37 521.601 null ] >> endobj -606 0 obj -<< /Filter /FlateDecode /Length 1294 >> +602 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F84 449 0 R /F75 360 0 R /F63 356 0 R /F81 401 0 R /F65 357 0 R /F15 355 0 R /F66 358 0 R /F85 461 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +611 0 obj +<< /Filter /FlateDecode /Length 1692 >> stream -xڵX7+& G7ٰ{;x6ɾƫu;}x|upmӧФZ+;~RENj^QB5N_>HIRj'%R+| BF]o/,qKJ;!HW:N/?'/s0FW'y` j:?73+Lb,UXf."9"H19TKk"Mvq6`t1)rZH·>,
]Hn=. -ApL:A7PL9aŊY-xEZs -45BqhOt /ڢtJ"i)2( - qaC^J{ZTdr*6BF_=H8Nũ\+h,a~W1k)6[UُRdOG-nU\*Ү*bϖ酵~Mq 4X+TBy7ioyqӯ/_o|}O}ۈ!~9u,Z$137Uxm^ۅv`ZQkjg&UnDX-4tRt[(o`?A9i(cnntw)[.w̲ahtI %byH"a|̙{i{l_-˚GPìy^Xs|Ӡ˵ -1bLt6:П~ -Ë]د?LaR:6&=xR|Tyljp k'ښ؝@mעj%PԵ)Y٥QrrĜ1Or,567S9tUSV -+bqFv C</2c +xڵX;o$7+X7@kt$!@"??(9=;ɏA>ޝ_qEt;/A|SB:uxQJۿo?"3z%#
Rxa%@U_j<en& +%\amlr.to.vY6ngqgzU=w8toPdI~n텲?HaShI=i!N^m/ey..^?ҨNO_~Wik9Aؓ+IPzxҫuh8~B^ǩHXۅvC"b^tPHc̘/:eJ}UFaC<0fW5haRK|< +gρ +:9ARi:l {8c)Q|=UlA;c۲{oaeY[) 13}u6Bfc
[)ud[O-%jfۙ)=Sc-yRg*.ug0BE4cxz$R("5A(>79~jI֕Zp#9VQMjI6wA#q )!bURv-uz+qhMewĵJ0eH4 -Nd~k1eq\,d;t˝.rz?OnopP߷rvKEJW<ҌwN;|vA4i%U:\ڈN"8_2Ll<V|6Ec~6smRX<r0F +Ax"N(;ޫ4 klGI0N6s*T#*~)0@dp9):Jw@h0h7lDs$`80Κ%4+ hp6{^n؋qW,6jDhZVLR1|qٮK!c6 f̕IKskٮ]cC];7u'5:NFVN#pg'>`>u0ʖ(pYP8ڃN,h'$Щ_K.EQ1
L!e33kƌ(xF×rZ-h(,F;M\{yw߶_*I6}g̠i26hX{`F7x1*sM,-Zp$7ْ*v`WZstGDܤJR{nƸ,/6)CyǸtՉ&49p L9[0|,['Y +sw'aq<PϤ&e)^<]`ɮmѮ endstream endobj -605 0 obj -<< /Type /Page /Contents 606 0 R /Resources 604 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 608 0 R >> +610 0 obj +<< /Type /Page /Contents 611 0 R /Resources 609 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R /Annots 613 0 R >> endobj -608 0 obj -[ 602 0 R 603 0 R ] +613 0 obj +[ 607 0 R 608 0 R ] endobj -602 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 263.782 468.798 278.507 480.753 ]/A << /S /GoTo /D (subsection.0.6.3) >> >> +607 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 480.517 461.92 487.491 473.327 ]/A << /S /GoTo /D (section.0.7) >> >> endobj -603 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 294.754 468.798 306.709 480.753 ]/A << /S /GoTo /D (subsection.0.6.3) >> >> +608 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 502.177 461.92 514.132 473.327 ]/A << /S /GoTo /D (section.0.7) >> >> endobj -607 0 obj -<< /D [ 605 0 R /XYZ 78.37 808.885 null ] >> +612 0 obj +<< /D [ 610 0 R /XYZ 78.37 808.885 null ] >> endobj -193 0 obj -<< /D [ 605 0 R /XYZ 79.37 771.024 null ] >> +169 0 obj +<< /D [ 610 0 R /XYZ 79.37 656.097 null ] >> endobj -604 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +609 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 356 0 R /F75 360 0 R /F15 355 0 R /F27 362 0 R /F30 363 0 R /F65 357 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -612 0 obj -<< /Filter /FlateDecode /Length 1309 >> +618 0 obj +<< /Filter /FlateDecode /Length 3578 >> stream -xڵXɎ7+&; 4F|s
9ؗ~{m MV{H:4OnJ+%lj:A[#T6|9S*^)R%F)!?_n_qt9{ 0q6VyDK\?Î_3%Vb!3A83 rOqgMᗴAKҙph?pA0֫Գ VX237NzEGQԒ?YX 9m-S$$nEB:/M$P (q摊&TѮ TǁGǶoļJy!`N`H!]~Xs~,'%:̯~eF+-7H43"&Wņ9m]]Jz>|]Zk(C-'EZU{S;lb)0B+z~U2¬0"|v|ߧm6ph>=l%?XLؒu4
Kn(gXM3TMCW$GZ)%$IZHk UglqD,Ai/lV[4Dj=P'q64Ѵ&sXc)'{ka;!7kmBxƁvXpS0@@VKdggv`vk?Jy
K04?""m;lR;zd)bF߰'ra6:cFcC,t3 *>,<phGrL]MÌ"vnj$JMJ7!fʖۊn(%2B!&SwBV6S1yc,1H<m>X
RPc_Luu^=4wvbSZ-y]aGN ]ֶWa$ t+ե̮Yty͇%`x_ANgdMD% -6RKG%G)*$(~zxKՄm^.3I_^S9#đw?EBxg;.-=GEe٭ %FtJ -fNj+xsn;]`X¡YbmD'ySzyv=Q"4_ -ܽu!CɈ3M +x$1߯X,ހ +ĿQ}`ޛnɺ/6|?ܿ|iM(&ۗ}xz&μ/~sW8OGiuoRwUx"\+OH˹1~K(]Hqz_GaSw;|ϫ
y]AZ&x)|LOiE;z5 }0j$
4KjYƁu +6&B2'(xH@eTDR'P "43SF\G\\Fe# +'XoN̷+iyG#'g Q4eBiACï
rdZ Oӏz@ācaB5}R I|%,! +keWGtrLj1B%Qi9ŀxETh +)?W$J +J\ks.a0@˘KWWBO}W.c7B[0oO! +Ŵr~GX<{E|8L ǟ_Í3_nJsuf̀-+]ρJD +%.vHGnH"עrFdtegcq#CE;2`Vdڡs"zĦ + +IT^ DB`;Tz!UFkM[RKӟL[? +>Ĉi}nf$]8PflTƞ9@_.kur8*qU- $3BM6g~"F~tRo*)ܝ:6F;L !Е[=@R&Ht+"@`H\k3]G0ޖ~"'fHH1em4Nq{2R! +WAG̼{ + +-Rf]xy#.H\0z= U˔3Q*~pzg/5HR[
UhcPn1hKJKƍG}2~6f[{f{W[1`~jr QOTf#ˍdL;hS8FmjPy9ye!}iTo!b:cP4=y +gƪJOqdו(bVC-^5kho-C\+M\1V|sv +A{E$e\v}}E;yD5&wI"
j:M^?7f^T6vcQ!}z,&Wă|s mBxyWY~h=@
Gr`KڋjCWRNߒ!}mF{fLvZ^"IN2@&C4\3Y.-Ӧq}|%rEk%V|9Wy*Lu[EU0W
^d1P⸚f6E'aJ1 +7mPh1%wdѪ+>5C։ke3{'d6UC6-k=a o-@]]GGEZ$tNkR*{p(`{i㘄 {fkaQ$,/J/H&tl{TŽ,S{Z^tΥ:$GFK*|h{ >4 <s:+rkH%+RCv-d2gu|rdd%cOKdXb֎@*V`4ؐǡdbM=ˣ/_l AתD8h5rjL$yfy+aMkm *\UXg;-ff-֜6hKCWݟJ; _Jc\<1Mq7EQ&;)^Y1BqyպUwQ)5vM"PyGY6G}/͎fX0Yks\=)Dž\;9A!RF`O@v6%LYBzh{f[ijjO+[E" @ѢO3g +$U^Giޛ+ކX;=8ė_Βc=ޣze +ZsI{A=]{](+E'<pْV_cjb!ޯFx'DL_'t +}B6goUџpCem褫pxM#`qT':DqC2+
\ufyZ +fx@@]AxKpm>'^OkפNyxt糏6aߞ5%ǵF
= "^ +^Z D`Ղ[s;r0!`Rg]ܾ&&e6;&=Nm V4Gc*{;D(r<bER:ZlntG$>ʙ+*ز4ךc/:X5ڶn]QվܰAE?#c endstream endobj -611 0 obj -<< /Type /Page /Contents 612 0 R /Resources 610 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 545 0 R /Annots 614 0 R >> +617 0 obj +<< /Type /Page /Contents 618 0 R /Resources 616 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R /Annots 621 0 R >> endobj -614 0 obj -[ 609 0 R ] +621 0 obj +[ 614 0 R 615 0 R ] endobj -609 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 254.015 699.315 260.989 710.274 ]/A << /S /GoTo /D (section.0.5) >> >> +614 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 278.812 667.892 289.239 680.183 ]/A << /S /GoTo /D (Hfootnote.34) >> >> endobj -613 0 obj -<< /D [ 611 0 R /XYZ 78.37 808.885 null ] >> +615 0 obj +<< /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [ 112.169 86.986 232.661 97.583 ] + /Subtype/Link/A<</Type/Action/S/URI/URI(https://pygments.org/styles/)>> + >> endobj -197 0 obj -<< /D [ 611 0 R /XYZ 79.37 771.024 null ] >> +619 0 obj +<< /D [ 617 0 R /XYZ 78.37 808.885 null ] >> endobj -610 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +173 0 obj +<< /D [ 617 0 R /XYZ 79.37 771.024 null ] >> endobj -621 0 obj -<< /Filter /FlateDecode /Length 3327 >> -stream -xˎ#>_X, -/)!|哒RO抏
~)5qQJC6ܪ?^Z@K5~'ZVs]52FEFhOf#7
R63'(PX#J0W:& -|1Cџ;GƷg)X)IṔA KhE0W+cVu/0eV00wŒBh[]BG3FAh pOo獈1,CL:T]P>=5e,B5Jy_Y\uہt"
ځF;Civ-8vWpf\R4?+ޭ:qCWũ|jV «KR[1=W+cBn+M% -u(J[E|DC7;-x|,_Y<%l]OrG$8UC -P z-FJN\Vcf5xYZwU8c*tۥ/DYD -ÚfkWT@Z$X
Co-Upk $lBSu -V:|UDH0qGf?`Jh -AbټVhs!?quyPBd
m"s2 OVE4c`%ƜexFf6j&`pku[le^7!'%?^hmZL&ZNcj[bQDRJ*MAK-.iG4oHF`.8A:L@<5ȝꪾj0gyHC@MyH8C[9QuSFƩ(7U*leɖոo+ꚅڔ(q?v<O79%MUhC" EX(Y]%@8ءS<Pȫ5ʺ"X*j/cDjpt~l,Ȝ3[-(ƌY(um^{9r4ȼ$7<5-#D*⻙.nvԥe"&qG|NxȽ_krx?s' -~7\`>|Rs.X̚5]|xNs!yQ(΅ -0822Gt(X*ߖ^}p'D=C_ʆAM ?2(p[BJhTIVO̵S%f1D+WEf!|u}\`]{|D6 -'݇sΪIQ[Iӿgt_|c7w*OkrfՒOR߲ $mBϷ$'AZxP^j'ZGLz -성su@<)/D"`:aQJ;u*N%?5*qf(Z籼PCOWTT}+<9wtfURG3a:>ʓý@l<ZwD w*7qQ0}yhMișayágm֖<5QT=̳y}
]w7oh:fx!r~o ;P.N);r:
Ւ ->/7pZ%ynZf\Y>L婗/={fbM}fϣ"UAp͌Q/69C5
-=. !XN<')U@M\v3ý9&rLɏc0}lB*C//'V(kz9\Y偔vMOqG@Mkg4n#7I.WF(vDkj{Tz+m)[01a,}PaôU,jfz*L${Y3:s]UkvlFuJc5)ʶj
FyVDZ}~q>)9̫0@S)e]_i/]Oןh8.ttȅNŜҎnI)l3F(w&A^vu=D DІ7Azvk5oPnZv2<wľ<P*ɗ3-rNQ2F6iFdg'U_AZ͌}!
J@@5MMPd ^sNkj[[J X(Z!vHomٽSޕ9-T\Yf`lc`Jzu桌m
CrmsRaYt/L^ǜXVhyv+Ճ-`ݼJJ"]mN$(ޞ;'Л2 -endstream +177 0 obj +<< /D [ 617 0 R /XYZ 79.37 748.222 null ] >> endobj 620 0 obj -<< /Type /Page /Contents 621 0 R /Resources 619 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R /Annots 628 0 R >> +<< /D [ 617 0 R /XYZ 93.716 99.264 null ] >> endobj -628 0 obj -[ 615 0 R 616 0 R 617 0 R 618 0 R ] +616 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F16 359 0 R /F81 401 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R /F59 368 0 R >> /ProcSet [ /PDF /Text ] >> endobj -615 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 384.187 623.97 394.614 636.42 ]/A << /S /GoTo /D (Hfootnote.34) >> >> +624 0 obj +<< /Filter /FlateDecode /Length 2743 >> +stream +x[͎$'Sd45oWaO~}II@O[UY~_4Z+{{_Mݬho(!MJ4/JJɏ':'?G<yy:|]Gì_fzy
jC aiX1L_g8܆d}1v~>Ol˓
6䄒' +mU]wSoNKz UIdmґIvM#Ad&! R4f2,,JXqַoCTByw +i/ʿ~Ia~CYϟw˿})ؖZhXD5[#|EP\E'Ot峭`-$:eP8#U[3\Ï|x+ڨFhfƁq`NI"!ӑFvS +'"hQjhëW>TvZp^䮙N_}HB>֧A,bJΟגuVc;@*RkТ~U#d,v68$z1|Ҽ}$j[0oIW=E\:(xAG=1Iv%隣H4?ڡ)&QL˃$A +F +;<_%UHm +
q߅7a4og͈:#g_cTJP}P5uh">R=v0tX֬*1Jl%-Ԋoi-L-1SƖՌq(F(=uڛU
xcuTPi'p +DpW\b/^]6dK5dR*,{Ӡ%,"]eۋOmrj:>9l ++fp㚆hk*xGv:hfz=Znژn'F"rmf#Rly~T9Lpø6_߽ᄛ$ ߠ9\U:?QZlZei$ؓ7LZH=}O=߬b)V쮭JQu^D^r}5k⇟ģ]uܝ@7+Ҹܢ*f!I>dLB&Kڪț|43!d +ńhh$#3\L{U흣`ye--u:>[57m&ޝAH-o34i\\+C+ˬI[h]W[9twJ=x_bւ,vt&z52~:gEhs*o'by] +\3N|vJB֩
Df +>նRsp I?ʙOT_;YD/oU5vSv?Z +endstream endobj -616 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.594 531.297 226.29 542.485 ]/A << /S /GoTo /D (Hfootnote.35) >> >> +623 0 obj +<< /Type /Page /Contents 624 0 R /Resources 622 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R >> endobj -617 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 224.825 519.352 231.109 532.078 ]/A << /S /GoTo /D (Hfootnote.36) >> >> +625 0 obj +<< /D [ 623 0 R /XYZ 78.37 808.885 null ] >> endobj -618 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 308.511 508.283 314.795 518.575 ]/A << /S /GoTo /D (Hfootnote.37) >> >> +181 0 obj +<< /D [ 623 0 R /XYZ 79.37 771.024 null ] >> endobj 622 0 obj -<< /D [ 620 0 R /XYZ 78.37 808.885 null ] >> -endobj -201 0 obj -<< /D [ 620 0 R /XYZ 79.37 771.024 null ] >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -205 0 obj -<< /D [ 620 0 R /XYZ 79.37 705.06 null ] >> +628 0 obj +<< /Filter /FlateDecode /Length 2928 >> +stream +x[I\
W +$u8θRM8ɛ%Vqy +M@!(KS_5!J="HG8FDZ ux[}m!v[0()Y.7Cs5O0 `Lw;;.!cj8ҷ\+mHg}y(0aPnˍm?~mne$ā*NM52# h<4|iS3f>;fZ֊HEag?I<Jmk'N|lΞ~ܻ8*ղ$sbo?KVQdEOPBْuCYhARa:R9n&_fctЃ[)=fDO腒<AHӫN:o?rCk[ďhЂx;jϢ)8GkYb19-yB<tFd "ei'L B>f?TVA1S^ʆG!k!gG~F7LdTF/y=Wo$*7Du+:VO3thzGDK*6s>yx=[/!%V,'NI9-KN!U`ٔ* _}lA18"W\w.rTØrgt!K9
hnnEFԶ!jM;qF[!JDž='~M.N[0K4=/H5Y1ʙߔǼ +m#Q5ŭ-b!z9.C>عGi0u18ls/+IM(mTCg`kS)Ka'd/*qZt%ێOy{ZԩXq,99;D_M5:}$GIyn_j2&Uз'HB]B0 y_ `đzQuETW9-UkuUeG'm+SEJ'G)4l 2u4i.'K*huև,LL$6AӞю['_ ;EށAz3RwԘH2*YZjVc6{]5M*ުZMB-EevwQ}Tq +=t >z$ߨ|D6l6u_IShz҃E6a_QفROX47p]1(SpMqʝW nuצUڏei~ ]Wbx.Wy +#JV&\^0p +]h֙7/hqur8!+@
)[<%ĞbLpF6oKKڥwm |A:3RR>D1/&P"t;O
1[m<`Y-D%씶F;GXDRy7£xBBT[Ef͠pP+5_Zu-ݯ+{Ey*pnT\,j + E1Xi*MC||ބsk(ݩ2/qS1;n]xof7r9+\kSmNPB>mORۮn㓷aHiǼK^:gSKwFVIc~*t@҉Tcڸ?>`<cqBZL͛Y D==oo>gtkAd5\/ +,a ڕf(1ȃV)d/d`Eq~
*Nq}d&pk<uxڵ SHb0U5{KНu Џo,k})w-AĽ |\kz!m! (Yz~Uxx{ZۘW-6muVjP#^h%g<$sF/y +endstream endobj -623 0 obj -<< /D [ 620 0 R /XYZ 93.716 227.357 null ] >> +627 0 obj +<< /Type /Page /Contents 628 0 R /Resources 626 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R >> endobj -624 0 obj -<< /D [ 620 0 R /XYZ 93.716 189.157 null ] >> +629 0 obj +<< /D [ 627 0 R /XYZ 78.37 808.885 null ] >> endobj -625 0 obj -<< /D [ 620 0 R /XYZ 93.716 151.299 null ] >> +185 0 obj +<< /D [ 627 0 R /XYZ 79.37 771.024 null ] >> endobj 626 0 obj -<< /D [ 620 0 R /XYZ 93.716 108.297 null ] >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F80 388 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -619 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R /F81 377 0 R /F83 414 0 R /F16 336 0 R /F75 338 0 R /F93 567 0 R /F53 345 0 R /F73 350 0 R /F59 346 0 R /F85 437 0 R /F71 347 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -631 0 obj -<< /Filter /FlateDecode /Length 3060 >> +632 0 obj +<< /Filter /FlateDecode /Length 2677 >> stream -xn$1WLx,,aFs3J;Gvp7V
fMͪb_y_ׇ7/yF]^_z&?.>rn'/ -kxsa\<A2|n"<,i[YߚX]82.!(S|UmyP50IĀ=sWoO -Oki>e@r!ȟiLpE.m\JE8HP]w[V9K/27bʩ{PmEp814H,iV֍;k5Hh1Ûƾ]Fo
ɬO6d_~ -F+z,ULJьT6G! -b\\s˩M+=Z.n4^#;fz"B6 ӧM'0et&7O>sQ@%b``U &z@@sbЎ9b>-Ku~%30{^Vz?zujd"L-7`%$/> *PQ`3ׇTvxpAv`A,$]M -&j:DnϋdSOCcn,NnDo{mJQyDl%sF
L=*eGv> -^ÃPGB<
`dΛ{^"~$S7jgɔ33B4ˊ)®-#9MdqLh1
Qݽ((osPKO]a:v*c
=;QHnj(Bb(M=?IER?Ǚ,"I4*NHh]G^1R$|sٺ1u-fӿ~BlMtYk @cby8X@:(ɸZeazMLy&g8Sf9{edr)KrnP7<-k],S7q_E-ژ"I3s}zиR![&i`/B^/mZ-4C.&Txf2/QsgP7]}iLqYjRΑdȗn9l6ym+νJ<:W~K Qc!,͵S~:&=<k5jW/3c|X'9ʞtSZ9dn,/_ZV$0֎!Ea$\#Mq?Zr|Foù00iiCi -/KDm"VQbH3kr:(\Y]n?eFtn#cFʖ' -Z,3V{1J[{1X&\)ra8uilj+{+<ɥb1ͳl#>K={"z+3M^,U)KEG 4ʦxwZ9[mHԿBeUcxγNQ8&9YW*)cm$-&)tB5ΥMC_QM`\:_8=/+֎U-RD0 -^-ir&tiVwiL,m~sb冴CB2#vci%#9w#eZ|
NIkZL;49\fI|qB?nuv7d ^1g!nLjjlm&ۍ -'J҉1;.FkEZ=[YZ:sF[s[쾝ۥ!t%. -MN%p'ˆ6.?retdrM4jZU1qT*&ДwS$lՠ__A[S^~~gBκΚR(@l<l! -\Q:`VL.NȠRrEr(#cpqzeqmnxrJ0UWurԽQ˻q6m6:̃
5
-gQ&I>z)xUYZF=pVH'??JTD4H4 +xڽ[K$'?0K455r,=
@frۇAS)%/~7q3Is3Z0/7Ε\OsN_iI/x$FF<g~iJ?Bs44ɠq߯(%}Xe(MQ1ia<v[7-${@&ngwS[zK:% s躣1Rkf+5F2g"xM0ES6G*`ٛq#nxW_i0M:`8zFE<,SBCxzFo_( ut"tIUedKʹų{C/i_\XZ A&#}BL7*"eM414w[pn\>}tX#Ŗ$F5ۙ$뮵X -k&xfVGP$
85]6Er{Qs{Fmt1JN42&c*:*i'xe҂ .q#gt)R3K|h!n^u(]sA>lL{ǜEW<lel|Qno!Xc*q-j =ۣFU*#:WRSNZ)Ёaw-A. H@%(ۭWS\1 + 4{=`Xg#8a#:Lr=`)[>>Ɖ|~Zqh:$-[G(TޢWβw[liگrlݢvh8hsD*aVq`L7랸r- +P!,6e8SCļJ]U/E<3 ʪA +\ jHqw-*R H脠R8+PJ PcA4dO$Q+pRUw@ȜtkR +AP
^#fFED-W^WRʃN/"d=Y*8)@ܻ6hYB"H#TGU)Bu{7AYb,'{nl鬐L9!;,̙5Z:e{XôI +kZGL$Za+tʮpm ++s| )RqC[D!ѝ"7q%})VI7zR"`GgBr+qClhJZe^q|cȘ1ev{lX,,e2hi^^ZϗZx<|خ=lU, +pYeHipDCwLٽWv2G=ɬpO~rÓxSym{$7JB?*v'/[[թbf*a4LѽmwԔi;{<w=`,LL9VN+҆VG E +\+&L`S8edr+bN.)hǚ.)taުViqTQV0d\='w-9~$~MP߬&O$_y0<W3+$@M?P endstream endobj +631 0 obj +<< /Type /Page /Contents 632 0 R /Resources 630 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 567 0 R >> +endobj +633 0 obj +<< /D [ 631 0 R /XYZ 78.37 808.885 null ] >> +endobj +189 0 obj +<< /D [ 631 0 R /XYZ 79.37 771.024 null ] >> +endobj 630 0 obj -<< /Type /Page /Contents 631 0 R /Resources 629 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -632 0 obj -<< /D [ 630 0 R /XYZ 78.37 808.885 null ] >> +641 0 obj +<< /Filter /FlateDecode /Length 2515 >> +stream +xn+Pzd9%)}p!SoÙDArHԾw_~[OZ-B00ǯOE,1iZ,ߗ^87Ε\ӳ%Q~]ygZqw x\j]y>.WֽgOI!:."4[O?H<84h\aY f;Ts؈]5F $2vz2
҅ȟ +W4^1E6Jj"WyK +=Y*:-ʺ봧F{C49TISW^%p`(,pħNtEMeUdje8*"m +E~vt+K,HgDM<Gw +}(hoK)ŸOa&&WwXnHTygqN6C։bKYA!.]2g݃c G:wjXUi%m}<2L8ht.tqfwX}5s_b4L;UkԝU~-l_'TH6 2X ^%7yJDȷC%H8AZqK@wݿğe^5dj|
;m4t+FZ2ƈ@A}*u[07<.ᚔȜA9,|%wCڔ֢yځrXہ܄f@!
f.,2) +0<f"=X\6~
?`nت%%AcȔzڶC>]`ʗ"tT1[OI?զ.mЈHcDmi҃TU65厠>
M8ؐT;CL[q6#{Yqs0Z +rP]̈́
A٩iP +!-kyC)Sv_Nq+ջyCWj^%H=1mpWض2P{WO +6`&H6b{"J\j~AƦzAEr=ԕJLs5qR3EB2!R}O%Lf?-3(c0<=ʈ<`[\igh8qi[9#p gwy#w~ +{fYkh)ƃY +je9?C#qe\qIOo9U8E,NBKjbN֝N0^?jvMy'nEMUm0@k?~&*E>'33L7Bvm7gO>)ythi2#x:88TJ;%Q;HKC=?F +4q㈛>zzFk-H3ՙw-o0ZZI2p2'`!L1c%P}Ϡ@+߈Y$ytMp~ae6]CǧX:HYr|ʪ]O3]0yr(a@gКR&1yЪL_9^ +endstream endobj -209 0 obj -<< /D [ 630 0 R /XYZ 79.37 639.908 null ] >> +640 0 obj +<< /Type /Page /Contents 641 0 R /Resources 639 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R /Annots 644 0 R >> endobj -213 0 obj -<< /D [ 630 0 R /XYZ 79.37 621.783 null ] >> +644 0 obj +[ 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R ] endobj 634 0 obj -<< /D [ 630 0 R /XYZ 77.176 602.516 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 254.015 699.315 260.989 710.274 ]/A << /S /GoTo /D (section.0.5) >> >> +endobj +635 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 263.782 266.841 278.507 278.796 ]/A << /S /GoTo /D (subsection.0.6.4) >> >> +endobj +636 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 294.754 266.841 306.709 278.796 ]/A << /S /GoTo /D (subsection.0.6.4) >> >> endobj 637 0 obj -<< /D [ 630 0 R /XYZ 77.176 591.557 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 420.993 79.334 443.469 91.29 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> endobj 638 0 obj -<< /D [ 630 0 R /XYZ 77.176 580.598 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 462.021 79.334 473.976 91.29 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> endobj -639 0 obj -<< /D [ 630 0 R /XYZ 77.176 569.639 null ] >> +642 0 obj +<< /D [ 640 0 R /XYZ 78.37 808.885 null ] >> endobj -640 0 obj -<< /D [ 630 0 R /XYZ 77.176 558.68 null ] >> +193 0 obj +<< /D [ 640 0 R /XYZ 79.37 771.024 null ] >> endobj -641 0 obj -<< /D [ 630 0 R /XYZ 77.176 547.721 null ] >> +197 0 obj +<< /D [ 640 0 R /XYZ 79.37 457.358 null ] >> endobj -642 0 obj -<< /D [ 630 0 R /XYZ 77.176 536.762 null ] >> +201 0 obj +<< /D [ 640 0 R /XYZ 79.37 214.281 null ] >> endobj -643 0 obj -<< /D [ 630 0 R /XYZ 77.176 525.803 null ] >> +639 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -644 0 obj -<< /D [ 630 0 R /XYZ 77.176 497.908 null ] >> +651 0 obj +<< /Filter /FlateDecode /Length 3336 >> +stream +xˎCbF+$>9/!S|Ydgk ^N7Yv>ً2BoBwJH.߾_~~҂>>TRJi\ ;ߞ1.J>oϭ~.%Z@K%~'RVS]52FEFhOf#7
[Z +f \ +}>_Xᐯ4fh6S[o|z538
$} dP'inf)L<|BX$k|YU3+]$P"ZqьQ03\.1c~ +9v)kQ`eB'>I>+q[462]AH>لެ*u@{Plad"Ъ<yB~dPiDRe@8Qi0}VKr9vlL.6zSӿ~o +H8ZY6|4|f 8'HȕS]W-?,c6y) 'yz+'NtaDu^UؤדոRhBT6)G)S2㾔϶YQ'i)zNgSd7ZnxM6 EX)YICt] +ލ7SlֿN%NxP'˷:+}OϏayF85f4+6~
N(o34Fsdzv4pâylڎu땧csAy<͇S_oD@50t:uYX,͕PRcy`kʹRxe``Xq8VI' + QWb!-ղCm~'J{7b8y7Y/b"s7riy'mAսhі<z~r2E7tpcac&/?N9D #< ;R.iS72崷,̫%s1!RGˑȸk2YGaEWS0,©,^i]*>Ghyi)b?%\asbaqulh[sRINzq`';{_N|f88ߐ~
0aL` +8ʝP'9( z:*qTP3n_K_`D3M+X~<s,_[ry婗={fbMG̟GE@Ƿr ^lr:T9skL'm`91vnT5qꘌč }5q-lB*C//'P-$.sHaRV&F/vv7
-lM}RZۭwP?qa<$#v6Bq#\ӱGg\ #`2cY'/,¿iŚa~EoegX3 +ux>\^֨NA;]^Y@`gLok̼loD<ҽ*[ViUyʯt9ˌs겉POީS-)Mu$ +endstream +endobj +650 0 obj +<< /Type /Page /Contents 651 0 R /Resources 649 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R /Annots 657 0 R >> +endobj +657 0 obj +[ 645 0 R 646 0 R 647 0 R 648 0 R ] endobj 645 0 obj -<< /D [ 630 0 R /XYZ 78.499 486.949 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 384.187 623.97 394.614 636.42 ]/A << /S /GoTo /D (Hfootnote.35) >> >> endobj 646 0 obj -<< /D [ 630 0 R /XYZ 78.499 475.99 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 219.594 529.703 226.29 540.891 ]/A << /S /GoTo /D (Hfootnote.36) >> >> endobj 647 0 obj -<< /D [ 630 0 R /XYZ 78.499 465.031 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 224.825 517.758 231.109 530.484 ]/A << /S /GoTo /D (Hfootnote.37) >> >> endobj 648 0 obj -<< /D [ 630 0 R /XYZ 78.499 454.072 null ] >> -endobj -649 0 obj -<< /D [ 630 0 R /XYZ 78.499 443.113 null ] >> +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 308.511 506.689 314.795 516.981 ]/A << /S /GoTo /D (Hfootnote.38) >> >> endobj -650 0 obj -<< /D [ 630 0 R /XYZ 78.499 432.154 null ] >> +652 0 obj +<< /D [ 650 0 R /XYZ 78.37 808.885 null ] >> endobj -651 0 obj -<< /D [ 630 0 R /XYZ 78.499 421.195 null ] >> +205 0 obj +<< /D [ 650 0 R /XYZ 79.37 771.024 null ] >> endobj -652 0 obj -<< /D [ 630 0 R /XYZ 78.499 410.237 null ] >> +209 0 obj +<< /D [ 650 0 R /XYZ 79.37 705.06 null ] >> endobj 653 0 obj -<< /D [ 630 0 R /XYZ 78.499 399.278 null ] >> +<< /D [ 650 0 R /XYZ 93.716 225.763 null ] >> endobj 654 0 obj -<< /D [ 630 0 R /XYZ 78.499 388.319 null ] >> +<< /D [ 650 0 R /XYZ 93.716 187.563 null ] >> endobj 655 0 obj -<< /D [ 630 0 R /XYZ 78.499 377.36 null ] >> +<< /D [ 650 0 R /XYZ 93.716 149.705 null ] >> endobj 656 0 obj -<< /D [ 630 0 R /XYZ 78.499 366.401 null ] >> +<< /D [ 650 0 R /XYZ 93.716 106.703 null ] >> endobj -657 0 obj -<< /D [ 630 0 R /XYZ 78.499 355.442 null ] >> +649 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F81 401 0 R /F83 438 0 R /F16 359 0 R /F75 360 0 R /F94 591 0 R /F53 367 0 R /F74 372 0 R /F59 368 0 R /F85 461 0 R /F72 369 0 R >> /ProcSet [ /PDF /Text ] >> endobj -658 0 obj -<< /D [ 630 0 R /XYZ 78.499 291.681 null ] >> +660 0 obj +<< /Filter /FlateDecode /Length 3149 >> +stream +xr,1Wl(}TXrUe&.ɑ˒(?p5}O +O+Z/Qxqm_d_/zkKL%@mg|+w"!VI00'bpxLElKw^}UiLOhT?2\&%+ey%&G"TO|+"*׳r!*pIqrjM]L{=b/us]ѥ,qc@!7*8H,iF՝ + p1Û ƶ]ħ7teV'Z/IHo?1aX叔-j
SGr--PUe + +NXBikՏw);^uĥ4Pr6]s)93tՄw/l݀G40R +zuM! +Br$ZS A=T*+wQNhwLZWlҝ.7
mv5Qtt@$6M~"i#XSɖ]QKvp0(auǍ꒕9b@Ʌ5fqVܱ4x)2RymW-!4mZ[x,_5:Kw]nT[˜+I~ͷAˠ˿X=2<E{l)r{ +pWCb)-yk +=8*z2v.4-q o?XV{k6.4`
{+:kL-?==mKVn[D_LpO*`.#7O(n&8<i%nМN=6"S0d3۸`}fMѸytH%aÕVQ*ChTMڤ.{6:T:uE*1T%[*v*pC %i$e\:!_f-=mVh9S.hsz;~VSs@f/qs=pBWx^%6 +SۖzKwFms=ΥtiǼ/7ވom)q?9-
mK_]0e?ona7=ij3)+{M@pIeѢ|3-NRoڗNr9E(Dyn}qOYu;(g4kr/NAz2 +č>Z<Tignŕj7ő+JmKbouL];c' +Wt-7)5eť q#:[U75iQ5 {V`1_G3*fUIHaC`LpF@(
^0/M}L_E.o1K?DPcbO1Ӷ-J2kIs@wɪ +endstream endobj 659 0 obj -<< /D [ 630 0 R /XYZ 78.499 280.722 null ] >> -endobj -660 0 obj -<< /D [ 630 0 R /XYZ 78.499 269.763 null ] >> +<< /Type /Page /Contents 660 0 R /Resources 658 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 661 0 obj -<< /D [ 630 0 R /XYZ 78.499 258.804 null ] >> -endobj -662 0 obj -<< /D [ 630 0 R /XYZ 78.499 247.846 null ] >> +<< /D [ 659 0 R /XYZ 78.37 808.885 null ] >> endobj -663 0 obj -<< /D [ 630 0 R /XYZ 78.499 236.887 null ] >> +213 0 obj +<< /D [ 659 0 R /XYZ 79.37 640.179 null ] >> endobj -664 0 obj -<< /D [ 630 0 R /XYZ 78.499 187.073 null ] >> +217 0 obj +<< /D [ 659 0 R /XYZ 79.37 622.054 null ] >> endobj -665 0 obj -<< /D [ 630 0 R /XYZ 78.499 176.115 null ] >> +663 0 obj +<< /D [ 659 0 R /XYZ 77.176 602.787 null ] >> endobj 666 0 obj -<< /D [ 630 0 R /XYZ 78.499 138.257 null ] >> +<< /D [ 659 0 R /XYZ 77.176 591.828 null ] >> endobj 667 0 obj -<< /D [ 630 0 R /XYZ 78.499 127.298 null ] >> +<< /D [ 659 0 R /XYZ 77.176 580.869 null ] >> endobj 668 0 obj -<< /D [ 630 0 R /XYZ 78.499 116.339 null ] >> +<< /D [ 659 0 R /XYZ 77.176 569.91 null ] >> endobj 669 0 obj -<< /D [ 630 0 R /XYZ 78.499 105.38 null ] >> +<< /D [ 659 0 R /XYZ 77.176 558.951 null ] >> endobj 670 0 obj -<< /D [ 630 0 R /XYZ 78.499 94.421 null ] >> +<< /D [ 659 0 R /XYZ 77.176 547.992 null ] >> endobj 671 0 obj -<< /D [ 630 0 R /XYZ 78.499 83.462 null ] >> -endobj -629 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F109 633 0 R /F64 333 0 R /F22 367 0 R /F59 346 0 R /F88 635 0 R /F111 636 0 R /F84 425 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 659 0 R /XYZ 77.176 537.033 null ] >> endobj -674 0 obj -<< /Filter /FlateDecode /Length 2245 >> -stream -x[ɒ6WCV6U9-kr_
Hɶqrp, -]|>:VU3AJIC ,F -%â&XtB#f#A(|x6e3 Q(چn8xtvɭhFohuky&k\Jaz֜ -jzJxSy|=H*' -[QIM5P~4,'%YZ*cQmBϗ^|Rmt?`-G͞V(\`c<{̥!ya#Gdo?e]r+7ߓg[8`yI1{z"6k,1ǝGvHJ=I]Lfx΅k?:8CV'aNm{"F:2Z=5B\.)&է+l ->8Y:OxRE#4S5Cl$XljZIU(mұdUCBՍS
m!u[rSr$CKuʪK5q5T -^O++sNB#'2i
Y=n<7-m滝B}(K"~}C4ʂVs棤U+Q`٫WӺ(̓es9bdz271tc%ȮQ"Hl1F qNB)Z>0JOVi|Ui<Ϟs;MϢQ>9Gjh֖ONcF?H
ǦHkxZH!̽ԌYyHb֕{6enYk_U/w&9I#uZ #9x3=դ eV0ߡ
a܍IXMQ;ir^ʚ<J5ں9SP4^lO VZJ-ob"GăvNR\m.ڢ\~l* -lD\ԣ
cSrM?KnDT,Č?OQßҎ$KwpTx2!h>Dcv( -ؑf,7.w^Eڦx
N|w,ϑ$l@svj:uڽڪt\ϙFۏ>< -TcG#: ;V<}2kڶO6`xgN+dks*YT͇m⪞pxcj>݂X1[c(a؆c/muDf~mH,6;IYdP -'vlôy^FH-\zx0좇3V@w|R:}eaܻo|Lgdmvf~}YΜM'yJxZTȓeϕpY8Ŗ_0gɾBj^/]h_һ7@Xc騚ͻetϷ -endstream +672 0 obj +<< /D [ 659 0 R /XYZ 77.176 526.074 null ] >> endobj 673 0 obj -<< /Type /Page /Contents 674 0 R /Resources 672 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 659 0 R /XYZ 77.176 474.546 null ] >> +endobj +674 0 obj +<< /D [ 659 0 R /XYZ 78.499 448.875 null ] >> endobj 675 0 obj -<< /D [ 673 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 659 0 R /XYZ 78.499 437.916 null ] >> endobj 676 0 obj -<< /D [ 673 0 R /XYZ 78.499 768.829 null ] >> +<< /D [ 659 0 R /XYZ 78.499 426.957 null ] >> endobj 677 0 obj -<< /D [ 673 0 R /XYZ 78.499 757.87 null ] >> +<< /D [ 659 0 R /XYZ 78.499 415.998 null ] >> endobj 678 0 obj -<< /D [ 673 0 R /XYZ 78.499 746.912 null ] >> +<< /D [ 659 0 R /XYZ 78.499 405.039 null ] >> endobj 679 0 obj -<< /D [ 673 0 R /XYZ 78.499 735.953 null ] >> +<< /D [ 659 0 R /XYZ 78.499 394.08 null ] >> endobj 680 0 obj -<< /D [ 673 0 R /XYZ 78.499 724.994 null ] >> +<< /D [ 659 0 R /XYZ 78.499 383.121 null ] >> endobj 681 0 obj -<< /D [ 673 0 R /XYZ 78.499 714.035 null ] >> +<< /D [ 659 0 R /XYZ 78.499 372.162 null ] >> endobj 682 0 obj -<< /D [ 673 0 R /XYZ 78.499 703.076 null ] >> +<< /D [ 659 0 R /XYZ 78.499 361.203 null ] >> endobj 683 0 obj -<< /D [ 673 0 R /XYZ 78.499 692.117 null ] >> +<< /D [ 659 0 R /XYZ 78.499 350.245 null ] >> endobj 684 0 obj -<< /D [ 673 0 R /XYZ 78.499 681.158 null ] >> +<< /D [ 659 0 R /XYZ 78.499 339.286 null ] >> endobj 685 0 obj -<< /D [ 673 0 R /XYZ 78.499 653.292 null ] >> +<< /D [ 659 0 R /XYZ 78.499 328.327 null ] >> endobj 686 0 obj -<< /D [ 673 0 R /XYZ 78.499 642.333 null ] >> +<< /D [ 659 0 R /XYZ 78.499 317.368 null ] >> endobj 687 0 obj -<< /D [ 673 0 R /XYZ 78.499 614.467 null ] >> +<< /D [ 659 0 R /XYZ 78.499 306.409 null ] >> endobj 688 0 obj -<< /D [ 673 0 R /XYZ 78.499 603.508 null ] >> +<< /D [ 659 0 R /XYZ 78.499 242.741 null ] >> endobj 689 0 obj -<< /D [ 673 0 R /XYZ 78.499 592.55 null ] >> +<< /D [ 659 0 R /XYZ 78.499 231.782 null ] >> endobj 690 0 obj -<< /D [ 673 0 R /XYZ 78.499 581.591 null ] >> +<< /D [ 659 0 R /XYZ 78.499 220.823 null ] >> endobj 691 0 obj -<< /D [ 673 0 R /XYZ 78.499 570.632 null ] >> +<< /D [ 659 0 R /XYZ 78.499 209.864 null ] >> endobj 692 0 obj -<< /D [ 673 0 R /XYZ 78.499 559.673 null ] >> +<< /D [ 659 0 R /XYZ 78.499 198.905 null ] >> endobj 693 0 obj -<< /D [ 673 0 R /XYZ 78.499 548.714 null ] >> +<< /D [ 659 0 R /XYZ 78.499 187.946 null ] >> endobj 694 0 obj -<< /D [ 673 0 R /XYZ 78.499 537.755 null ] >> +<< /D [ 659 0 R /XYZ 78.499 138.364 null ] >> endobj 695 0 obj -<< /D [ 673 0 R /XYZ 78.499 526.796 null ] >> +<< /D [ 659 0 R /XYZ 78.499 127.405 null ] >> endobj 696 0 obj -<< /D [ 673 0 R /XYZ 78.499 515.837 null ] >> +<< /D [ 659 0 R /XYZ 78.499 89.593 null ] >> endobj 697 0 obj -<< /D [ 673 0 R /XYZ 78.499 504.878 null ] >> +<< /D [ 659 0 R /XYZ 78.499 78.635 null ] >> endobj -698 0 obj -<< /D [ 673 0 R /XYZ 78.499 477.012 null ] >> -endobj -699 0 obj -<< /D [ 673 0 R /XYZ 78.499 466.054 null ] >> +658 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F97 662 0 R /F65 357 0 R /F22 389 0 R /F59 368 0 R /F88 664 0 R /F99 665 0 R /F84 449 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 700 0 obj -<< /D [ 673 0 R /XYZ 78.499 426.232 null ] >> +<< /Filter /FlateDecode /Length 2517 >> +stream +x[r++)J*[5j;P#ptsfnwI'),Kz:>x2"ϓJ7ɓ:/>ytӿ_toR翞d)y%F lf`P}3RG `H^2>4N^xOUlV P@IU(ɔAR9ty]^{̪-g%Lo8yժȓYuhWNxG `A4CRǑ~W[z&8gMA57^L@uQw !Tye{Mt'P,[_Wڢ +*cݕ3?
Łt9 { {ٻ6jǙ{5P{ۇ8<oZ=GHyKBͥ$IYnSf= +HLZev=w|BS TJ`,kҟn`LrI^o,ÐCRݿR](LãߕK2
o2E$92")3XiuȽ"_wQw +|(QXiXZɴzӪxh6#{uYkQIk߿E-9eZ鋾dzao8R,t9]Ep[ie:Hf$@DwiV2^h:V_o8V5x+1p|os;]Ϣe+
٣s啓Ș14kaX묅L_BfBƵ2Q+EU\y1,mYP7q;ԓS%ֱRH]9fXst&h/`ua& +´RM&8\I9?hHh/]Tδ<9(n7P~/|jȦC&p0J]b\( +(̸)_{aE`-Fq37uYFLqt.+nMEw-6'8zM-#L]о v%QKwyD^Y*'wlu*){@+qtFٲ}m}Ш;tbn)8[e!/tyС4jVa ~8 +IJii&EoN} +yHtXGB%jٶuB5dnҢWENr=:PiT߰j2S|\LS*lwunMCN5iRc)2oYre&YHy67BM~@[k2[\Y&JY.r؆09Z@ ]2*M}=qPى"[I3RڤT}FZď.S~JX"ׄM1CE]fb)J*<Mk%zlzaFPk[ +endstream +endobj +699 0 obj +<< /Type /Page /Contents 700 0 R /Resources 698 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 701 0 obj -<< /D [ 673 0 R /XYZ 78.499 382.412 null ] >> +<< /D [ 699 0 R /XYZ 78.37 808.885 null ] >> endobj 702 0 obj -<< /D [ 673 0 R /XYZ 78.499 350.546 null ] >> +<< /D [ 699 0 R /XYZ 78.499 768.829 null ] >> endobj 703 0 obj -<< /D [ 673 0 R /XYZ 78.499 330.635 null ] >> +<< /D [ 699 0 R /XYZ 78.499 757.87 null ] >> endobj 704 0 obj -<< /D [ 673 0 R /XYZ 78.499 319.676 null ] >> +<< /D [ 699 0 R /XYZ 78.499 746.912 null ] >> endobj 705 0 obj -<< /D [ 673 0 R /XYZ 78.499 279.855 null ] >> +<< /D [ 699 0 R /XYZ 78.499 735.953 null ] >> endobj 706 0 obj -<< /D [ 673 0 R /XYZ 78.499 268.896 null ] >> +<< /D [ 699 0 R /XYZ 78.499 710.285 null ] >> endobj 707 0 obj -<< /D [ 673 0 R /XYZ 78.499 257.938 null ] >> +<< /D [ 699 0 R /XYZ 78.499 699.326 null ] >> endobj 708 0 obj -<< /D [ 673 0 R /XYZ 78.499 246.979 null ] >> +<< /D [ 699 0 R /XYZ 78.499 688.367 null ] >> endobj 709 0 obj -<< /D [ 673 0 R /XYZ 78.499 236.02 null ] >> +<< /D [ 699 0 R /XYZ 78.499 677.408 null ] >> endobj 710 0 obj -<< /D [ 673 0 R /XYZ 78.499 225.061 null ] >> +<< /D [ 699 0 R /XYZ 78.499 666.449 null ] >> endobj 711 0 obj -<< /D [ 673 0 R /XYZ 78.499 214.102 null ] >> +<< /D [ 699 0 R /XYZ 78.499 655.49 null ] >> endobj 712 0 obj -<< /D [ 673 0 R /XYZ 78.499 203.143 null ] >> +<< /D [ 699 0 R /XYZ 78.499 644.531 null ] >> endobj 713 0 obj -<< /D [ 673 0 R /XYZ 78.499 192.184 null ] >> +<< /D [ 699 0 R /XYZ 78.499 633.572 null ] >> endobj 714 0 obj -<< /D [ 673 0 R /XYZ 78.499 181.225 null ] >> +<< /D [ 699 0 R /XYZ 78.499 622.614 null ] >> endobj 715 0 obj -<< /D [ 673 0 R /XYZ 78.499 170.266 null ] >> +<< /D [ 699 0 R /XYZ 78.499 595 null ] >> endobj 716 0 obj -<< /D [ 673 0 R /XYZ 78.499 159.307 null ] >> +<< /D [ 699 0 R /XYZ 78.499 584.041 null ] >> endobj 717 0 obj -<< /D [ 673 0 R /XYZ 78.499 148.348 null ] >> +<< /D [ 699 0 R /XYZ 78.499 556.428 null ] >> endobj 718 0 obj -<< /D [ 673 0 R /XYZ 78.499 122.47 null ] >> +<< /D [ 699 0 R /XYZ 78.499 545.469 null ] >> endobj 719 0 obj -<< /D [ 673 0 R /XYZ 78.499 111.511 null ] >> +<< /D [ 699 0 R /XYZ 78.499 534.51 null ] >> endobj 720 0 obj -<< /D [ 673 0 R /XYZ 78.499 100.552 null ] >> +<< /D [ 699 0 R /XYZ 78.499 523.551 null ] >> endobj 721 0 obj -<< /D [ 673 0 R /XYZ 78.499 89.593 null ] >> +<< /D [ 699 0 R /XYZ 78.499 512.592 null ] >> endobj 722 0 obj -<< /D [ 673 0 R /XYZ 78.499 78.635 null ] >> -endobj -672 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 699 0 R /XYZ 78.499 501.633 null ] >> endobj -725 0 obj -<< /Filter /FlateDecode /Length 2002 >> -stream -xZr6+hU.WY4U959 -}98];j'.jSiPkj!5G23eo-iGi ̒/دS~f@АeYk|Dڝ9qM -B(U,SҨ"=szV<;xʵ %KFo=2#}m-pŚ\N1TQ_VcSBì'zl/1#f4 on87FnZxqUc>Z%:;%9>QT -pзti -]J{V&6yM$si Tѫ/{ֽL*s4C?2!T$kϤX}Q{ITlPn~u:|'[#z1MaiWSb3
0(lu瓪ϝLT4-cHq}a(QB]U -_Z -nj5NOZ;ӑE=^zq*QWr|O7;ԫ`ll Z[RZ']֯)k~ -eL#jx!um)FBkjΙ؟bZ{,q>uk]X-]j(KM}_qs\)K@E"=l}IPcyݤ[J܃7 me.rz\jY5Z2mc2+gDLT5theĨ=3<ums6q}J04fyBr./ugͣug`1:.M,C{/8)t忝D ϬQX|+(r-I@ayUUO{<k֫yNCA*NςƚG"ku(N2 H -4LZ4#.8C[@ -sFC>MZW1tq6B'^̩ET-0%^bR(R9iOEn{_@EP!
@!X e˅W[צ(cHXJdͼyʛ[l1xV=e݄xP[uEz[[6C酲)I1L;dY>\<OWd^ 9VZRJn`ANRz֓ -1>.ƤR@(;- uc*PL3&*QG G/{8Pz!sduB3{;{<0YbKfF$#W.pH"Ө_f6p]r##OFIqZJn~ -endstream +723 0 obj +<< /D [ 699 0 R /XYZ 78.499 490.674 null ] >> endobj 724 0 obj -<< /Type /Page /Contents 725 0 R /Resources 723 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 699 0 R /XYZ 78.499 479.715 null ] >> +endobj +725 0 obj +<< /D [ 699 0 R /XYZ 78.499 468.757 null ] >> endobj 726 0 obj -<< /D [ 724 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 699 0 R /XYZ 78.499 457.798 null ] >> endobj 727 0 obj -<< /D [ 724 0 R /XYZ 78.499 768.829 null ] >> +<< /D [ 699 0 R /XYZ 78.499 446.839 null ] >> endobj 728 0 obj -<< /D [ 724 0 R /XYZ 78.499 757.87 null ] >> +<< /D [ 699 0 R /XYZ 78.499 419.225 null ] >> endobj 729 0 obj -<< /D [ 724 0 R /XYZ 78.499 742.255 null ] >> +<< /D [ 699 0 R /XYZ 78.499 379.657 null ] >> endobj 730 0 obj -<< /D [ 724 0 R /XYZ 78.499 731.296 null ] >> +<< /D [ 699 0 R /XYZ 78.499 335.962 null ] >> endobj 731 0 obj -<< /D [ 724 0 R /XYZ 78.499 720.337 null ] >> +<< /D [ 699 0 R /XYZ 78.499 292.267 null ] >> endobj 732 0 obj -<< /D [ 724 0 R /XYZ 78.499 709.378 null ] >> +<< /D [ 699 0 R /XYZ 78.499 272.483 null ] >> endobj 733 0 obj -<< /D [ 724 0 R /XYZ 78.499 698.419 null ] >> +<< /D [ 699 0 R /XYZ 78.499 261.524 null ] >> endobj 734 0 obj -<< /D [ 724 0 R /XYZ 78.499 687.461 null ] >> +<< /D [ 699 0 R /XYZ 78.499 203.929 null ] >> endobj 735 0 obj -<< /D [ 724 0 R /XYZ 78.499 676.502 null ] >> +<< /D [ 699 0 R /XYZ 78.499 166.306 null ] >> endobj 736 0 obj -<< /D [ 724 0 R /XYZ 78.499 665.543 null ] >> +<< /D [ 699 0 R /XYZ 78.499 155.347 null ] >> endobj 737 0 obj -<< /D [ 724 0 R /XYZ 78.499 626.667 null ] >> +<< /D [ 699 0 R /XYZ 78.499 144.388 null ] >> endobj 738 0 obj -<< /D [ 724 0 R /XYZ 78.499 601.576 null ] >> +<< /D [ 699 0 R /XYZ 78.499 133.429 null ] >> endobj 739 0 obj -<< /D [ 724 0 R /XYZ 78.499 590.617 null ] >> +<< /D [ 699 0 R /XYZ 78.499 122.47 null ] >> endobj 740 0 obj -<< /D [ 724 0 R /XYZ 78.499 579.658 null ] >> +<< /D [ 699 0 R /XYZ 78.499 111.511 null ] >> endobj 741 0 obj -<< /D [ 724 0 R /XYZ 78.499 568.699 null ] >> +<< /D [ 699 0 R /XYZ 78.499 100.552 null ] >> endobj 742 0 obj -<< /D [ 724 0 R /XYZ 78.499 541.778 null ] >> +<< /D [ 699 0 R /XYZ 78.499 89.593 null ] >> endobj 743 0 obj -<< /D [ 724 0 R /XYZ 79.822 530.819 null ] >> +<< /D [ 699 0 R /XYZ 78.499 78.635 null ] >> endobj -744 0 obj -<< /D [ 724 0 R /XYZ 79.822 515.204 null ] >> -endobj -745 0 obj -<< /D [ 724 0 R /XYZ 79.822 504.245 null ] >> +698 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 746 0 obj -<< /D [ 724 0 R /XYZ 79.822 493.286 null ] >> +<< /Filter /FlateDecode /Length 2417 >> +stream +x[K6ϯXD +כ'4zͬg283 +P/%D }E> +\yyͿK[f7fmv*2Vy, "_Hwq+@m\ +<G8fq挳T.6RK& 62`K:ap[]]ɀD\dk،27i; gM굤ftQ㊖w=H[ٴ(-HKQWi{wu}j´"1OY`ʫaHV7}צCWT4Ac +
+
W@(HZ +`[>^ K=xC bBeutRvHdrU2+qDertE9.~Y,͎q+7[IkV[3۬Xq +(vJɲ˹.Z9$\5pG O\]fwdsm4ޙeǃȟwa~H"wЍV0^1'To)@$|GGLlj|M<:N2uΡ3Jx>:O#X`\Ƚ${i{5!:JHp9&J>T3Bq;F;Ɂ-M|=S%F5msYKiμ=mn*a^ivi +Tr]wdK]LkJ̳Ѳ
\?|mBڇZBsDH@]W|궔.mdaiN_5)n=oC +|kBdG;L,aC5ym`8mUZEST|k紩fFTSЛJ-zZn=3-[洊{s,МJ/XlUہu
cG:4@q#vhIj<,Z6Kknć
F2( }3mcAy@V`N=sG2VBv͜PL"8'y#!g^8ӏ{T57SR7Pz
tfoX\H6>I瘄Au/JJF#1N^gcyY&O!F!g +00thyc:4GxLH9JgidD73*aG [)jȚG[ȣ`JbI׀sע)dZ)NxЛ') +sTHO2T'gr9<Yx= +$pݡZϑQ<ήpI"ygBlhv֬e33)`v<z"E':~mGdryDn9Ϻc +7_ooƐR,{@vYgo[8S'j/$6ʼn^^̋_6zkodhz}+W_͋')saTt"Ϭ>!
3@7l<A3cXo+9r
|)'8 , +WKfjf*峎iqx`֩.;YXB3?a`4yoQ`<础p=c3gbn* +endstream +endobj +745 0 obj +<< /Type /Page /Contents 746 0 R /Resources 744 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 747 0 obj -<< /D [ 724 0 R /XYZ 79.822 482.327 null ] >> +<< /D [ 745 0 R /XYZ 78.37 808.885 null ] >> endobj 748 0 obj -<< /D [ 724 0 R /XYZ 79.822 471.368 null ] >> +<< /D [ 745 0 R /XYZ 78.499 768.829 null ] >> endobj 749 0 obj -<< /D [ 724 0 R /XYZ 79.822 460.41 null ] >> +<< /D [ 745 0 R /XYZ 78.499 713.542 null ] >> endobj 750 0 obj -<< /D [ 724 0 R /XYZ 79.822 449.451 null ] >> +<< /D [ 745 0 R /XYZ 78.499 702.583 null ] >> endobj 751 0 obj -<< /D [ 724 0 R /XYZ 79.822 438.492 null ] >> +<< /D [ 745 0 R /XYZ 78.499 691.624 null ] >> endobj 752 0 obj -<< /D [ 724 0 R /XYZ 79.822 427.533 null ] >> +<< /D [ 745 0 R /XYZ 78.499 680.665 null ] >> endobj 753 0 obj -<< /D [ 724 0 R /XYZ 79.822 416.574 null ] >> +<< /D [ 745 0 R /XYZ 78.499 669.706 null ] >> endobj 754 0 obj -<< /D [ 724 0 R /XYZ 79.822 400.959 null ] >> +<< /D [ 745 0 R /XYZ 78.499 658.747 null ] >> endobj 755 0 obj -<< /D [ 724 0 R /XYZ 79.822 390 null ] >> +<< /D [ 745 0 R /XYZ 78.499 644.967 null ] >> endobj 756 0 obj -<< /D [ 724 0 R /XYZ 79.822 379.041 null ] >> +<< /D [ 745 0 R /XYZ 78.499 634.008 null ] >> endobj 757 0 obj -<< /D [ 724 0 R /XYZ 79.822 368.082 null ] >> +<< /D [ 745 0 R /XYZ 78.499 623.049 null ] >> endobj 758 0 obj -<< /D [ 724 0 R /XYZ 79.822 357.123 null ] >> +<< /D [ 745 0 R /XYZ 78.499 612.09 null ] >> endobj 759 0 obj -<< /D [ 724 0 R /XYZ 79.822 346.164 null ] >> +<< /D [ 745 0 R /XYZ 78.499 601.131 null ] >> endobj 760 0 obj -<< /D [ 724 0 R /XYZ 79.822 335.205 null ] >> +<< /D [ 745 0 R /XYZ 78.499 590.172 null ] >> endobj 761 0 obj -<< /D [ 724 0 R /XYZ 79.822 324.246 null ] >> +<< /D [ 745 0 R /XYZ 78.499 579.214 null ] >> endobj 762 0 obj -<< /D [ 724 0 R /XYZ 79.822 313.287 null ] >> +<< /D [ 745 0 R /XYZ 78.499 568.255 null ] >> endobj 763 0 obj -<< /D [ 724 0 R /XYZ 79.822 292.019 null ] >> +<< /D [ 745 0 R /XYZ 78.499 529.41 null ] >> endobj 764 0 obj -<< /D [ 724 0 R /XYZ 79.822 281.06 null ] >> +<< /D [ 745 0 R /XYZ 78.499 504.346 null ] >> endobj 765 0 obj -<< /D [ 724 0 R /XYZ 79.822 241.535 null ] >> +<< /D [ 745 0 R /XYZ 78.499 493.387 null ] >> endobj 766 0 obj -<< /D [ 724 0 R /XYZ 79.822 230.576 null ] >> +<< /D [ 745 0 R /XYZ 78.499 482.428 null ] >> endobj 767 0 obj -<< /D [ 724 0 R /XYZ 79.822 219.617 null ] >> +<< /D [ 745 0 R /XYZ 78.499 471.469 null ] >> endobj 768 0 obj -<< /D [ 724 0 R /XYZ 79.822 208.658 null ] >> +<< /D [ 745 0 R /XYZ 78.499 444.579 null ] >> endobj 769 0 obj -<< /D [ 724 0 R /XYZ 79.822 197.699 null ] >> +<< /D [ 745 0 R /XYZ 78.499 433.62 null ] >> endobj 770 0 obj -<< /D [ 724 0 R /XYZ 79.822 186.74 null ] >> +<< /D [ 745 0 R /XYZ 78.499 418.016 null ] >> endobj 771 0 obj -<< /D [ 724 0 R /XYZ 79.822 175.781 null ] >> +<< /D [ 745 0 R /XYZ 78.499 407.057 null ] >> endobj 772 0 obj -<< /D [ 724 0 R /XYZ 79.822 164.822 null ] >> +<< /D [ 745 0 R /XYZ 79.822 396.098 null ] >> endobj 773 0 obj -<< /D [ 724 0 R /XYZ 79.822 151.037 null ] >> +<< /D [ 745 0 R /XYZ 79.822 385.139 null ] >> endobj 774 0 obj -<< /D [ 724 0 R /XYZ 79.822 140.078 null ] >> +<< /D [ 745 0 R /XYZ 79.822 374.18 null ] >> endobj 775 0 obj -<< /D [ 724 0 R /XYZ 79.822 100.552 null ] >> +<< /D [ 745 0 R /XYZ 79.822 363.221 null ] >> endobj 776 0 obj -<< /D [ 724 0 R /XYZ 79.822 89.593 null ] >> +<< /D [ 745 0 R /XYZ 79.822 352.262 null ] >> endobj 777 0 obj -<< /D [ 724 0 R /XYZ 79.822 78.635 null ] >> -endobj -723 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 745 0 R /XYZ 79.822 341.303 null ] >> endobj -780 0 obj -<< /Filter /FlateDecode /Length 2716 >> -stream -x[Ko7W=D(,d -bmG3-շ?͙jX e==89}hnC> -z)OFeΩA;cGz24pl)\s77=9tp&1M3O=[ -^%9N85t<R$>Q3mq#;s?ʞҽh5hpSTvxP[2{Q~|brQn*Zy0Z> 6-&3:Ɔ4_K)$A{p"t/ħq:gdjj85vRl_U#\j|;D 5Hu%:$Yê->§p\Ř`f!%;LS!$i> -q֠Ռϳ8YCfnK43q9Q0H|aw982t<1|bôqce359_ 2à7z0(v-=3hx*m1e%~(iax붗I
N+a1[DZW.a09>vR8b{aoP'
% -s-lBQ7Hv$y|NS"1-Y{ϫw"E{K9DŽ }oa6)d*2P#)r̿wSR |PS3j^JYރD"~&S<FLfmTJ a(a<G [Es0tyEEFF^߭ umA#[:efUȜsg3=ʾEoU~#lÐ27?J=^m,X[sj>W(+q UK -{4r(~bM+q|Lj6,wgh˕4R&BT")@յ;e/L*~9WjûJNsi$qG氽čc)LWsq@Sbs~U|XՐ -*3tΜX) ?o# -fWvz7Ӄ>6cu5x$/ -KuO -0~%݅S}FF:cͮ'֭2ӆ(/\xoO2Au[^P|q.'mik]*~&E -ΫIaTE%_)X-$L?:ZZᴄGTRD&K:56|/p?[Ja͇JUNsǀ-xaT%' s2%+UjeZb0?)I&SH%q'N\h%75Н ۨ ~x
{8g9\s
8%p> \EխV|2@ٵ=˷ (/ot]0o?^]A>8H^x!?FwqySd~UW}Kَm[832C[JYc -endstream +778 0 obj +<< /D [ 745 0 R /XYZ 79.822 330.344 null ] >> endobj 779 0 obj -<< /Type /Page /Contents 780 0 R /Resources 778 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 745 0 R /XYZ 79.822 319.385 null ] >> +endobj +780 0 obj +<< /D [ 745 0 R /XYZ 79.822 303.781 null ] >> endobj 781 0 obj -<< /D [ 779 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 745 0 R /XYZ 79.822 292.822 null ] >> endobj 782 0 obj -<< /D [ 779 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 745 0 R /XYZ 79.822 281.863 null ] >> endobj 783 0 obj -<< /D [ 779 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 745 0 R /XYZ 79.822 270.904 null ] >> endobj 784 0 obj -<< /D [ 779 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 745 0 R /XYZ 79.822 259.945 null ] >> endobj 785 0 obj -<< /D [ 779 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 745 0 R /XYZ 79.822 248.986 null ] >> endobj 786 0 obj -<< /D [ 779 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 745 0 R /XYZ 79.822 238.027 null ] >> endobj 787 0 obj -<< /D [ 779 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 745 0 R /XYZ 79.822 227.068 null ] >> endobj 788 0 obj -<< /D [ 779 0 R /XYZ 79.822 664.222 null ] >> +<< /D [ 745 0 R /XYZ 79.822 216.109 null ] >> endobj 789 0 obj -<< /D [ 779 0 R /XYZ 79.822 653.263 null ] >> +<< /D [ 745 0 R /XYZ 79.822 194.862 null ] >> endobj 790 0 obj -<< /D [ 779 0 R /XYZ 79.822 642.304 null ] >> +<< /D [ 745 0 R /XYZ 79.822 183.903 null ] >> endobj 791 0 obj -<< /D [ 779 0 R /XYZ 79.822 631.345 null ] >> +<< /D [ 745 0 R /XYZ 79.822 144.388 null ] >> endobj 792 0 obj -<< /D [ 779 0 R /XYZ 79.822 620.386 null ] >> +<< /D [ 745 0 R /XYZ 79.822 133.429 null ] >> endobj 793 0 obj -<< /D [ 779 0 R /XYZ 79.822 609.427 null ] >> -endobj -217 0 obj -<< /D [ 779 0 R /XYZ 79.37 583.978 null ] >> +<< /D [ 745 0 R /XYZ 79.822 122.47 null ] >> endobj 794 0 obj -<< /D [ 779 0 R /XYZ 79.822 534.244 null ] >> +<< /D [ 745 0 R /XYZ 79.822 111.511 null ] >> endobj 795 0 obj -<< /D [ 779 0 R /XYZ 79.822 523.285 null ] >> +<< /D [ 745 0 R /XYZ 79.822 100.552 null ] >> endobj 796 0 obj -<< /D [ 779 0 R /XYZ 79.822 474.468 null ] >> +<< /D [ 745 0 R /XYZ 79.822 89.593 null ] >> endobj 797 0 obj -<< /D [ 779 0 R /XYZ 79.822 427.644 null ] >> -endobj -798 0 obj -<< /D [ 779 0 R /XYZ 79.822 380.819 null ] >> +<< /D [ 745 0 R /XYZ 79.822 78.635 null ] >> endobj -799 0 obj -<< /D [ 779 0 R /XYZ 79.822 345.95 null ] >> +744 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 800 0 obj -<< /D [ 779 0 R /XYZ 79.822 334.991 null ] >> +<< /Filter /FlateDecode /Length 2765 >> +stream +x[ˎc
WZ-z +Dziu1Hsnodto5CF :y|/вeCs11mhm45S Kz%Udr{Y%dC%LjBftQjo x14?
էJ}B?ry1C;5EKڣ*ʼnoX&㸸vR&\%HsG6t1M=*bi <GBȼGq%yQffF!yn [QJ +3!+%^ۉƖLFYkH6rQ63j|Kև7iGo?W>3+}&CU@ڗ2=.&MLљO%gxN"Yna7<"rz4/FAXfO:*&o촑NciM{C4>
β`8 g}21t糕
Bd\m`i,.>wMt 31.G@ [a٫m~e%]x3msa^g +$ŭA(\)=~ +AʣutSәuõ6F|vHQXg]'OmǡI\T?6gA>q:os㣔GYs\65YmOZf6Hy`DNZpo'R>k{Z'k%5H٘wL}ԞR +EX0wqc\2y\y8p:v%Yt!4)VA.R({.nMHH莂\j,S[idKP~hOwfZ:<l4+jz-Fe'qd4ν߭Lj=Y|?zoY;Osdg/k=q|=~$Iy +gGu+2GJ8~cLtIUR%k.mʔQ1XJ9V^jWі1P-Hda;0-f%aR?Az֟T$qMo/p%-/:URDGa6+YYhI/w8l+DS*.s;*[&'_A)|kXQ-⌑Z)$FF#HpG.WaK#,gp+9Mf~tP]O(,ڊuhvgIMrA4u+'jfbAeD%Ӟy
&M?Rtk:aik'蚵'grv#f+Zi$$>SZۙ4.HǬ.ÈVV}˵e7OD6ou8bV߫$QJؿ,^n{>D=Hɷ{.=b=F<!x텼^+xu'+ӵ"Ego-=sw8Fm,^ob`rGa}?<GQVxBb;D +}FNe`&FV7900jZ_;OO|)5\/;8oLP&XMg'}O؍dy0J{no/df +Rmby&,v/&p65^8o
l:. ZFoՉ(&\IHV)n#v^7?Uĕn+rδbkއBe[R:ysaQ2LV,wsc^/H R +`JQz֏u_2U+G}/B" )Zm|rεф王C9H-C{/ \n֊wy$EN3^F{K\z5I{>=+3!,9bĤIE.\z +endstream +endobj +799 0 obj +<< /Type /Page /Contents 800 0 R /Resources 798 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 801 0 obj -<< /D [ 779 0 R /XYZ 79.822 288.167 null ] >> +<< /D [ 799 0 R /XYZ 78.37 808.885 null ] >> endobj 802 0 obj -<< /D [ 779 0 R /XYZ 79.822 259.275 null ] >> +<< /D [ 799 0 R /XYZ 79.822 768.829 null ] >> endobj 803 0 obj -<< /D [ 779 0 R /XYZ 79.822 218.428 null ] >> +<< /D [ 799 0 R /XYZ 79.822 755.036 null ] >> endobj 804 0 obj -<< /D [ 779 0 R /XYZ 79.822 171.604 null ] >> +<< /D [ 799 0 R /XYZ 79.822 744.078 null ] >> endobj 805 0 obj -<< /D [ 779 0 R /XYZ 79.822 112.824 null ] >> +<< /D [ 799 0 R /XYZ 79.822 704.537 null ] >> endobj -778 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R /F65 335 0 R /F30 341 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -808 0 obj -<< /Filter /FlateDecode /Length 2898 >> -stream -x\ˎc7WZ7P( ndݻ`3mEז40^]Ço~ -}0DxOd=d`܈z -5 -\<G'"ΜO\ޚ~1 -땂 -JZAV*ti3 -Xb=Y6@i8WO.&ֻ#tCnq')˽E2?w<%Ο3}-9ƺ(_"'2
PIGaү0Iژ_Y'Mw܃089S.Pt
vCZuN˾u;yc9hzp}7%KR6Tsc4Sr/
;E$D9ykgڼJ1
m]QǺ -=2o5,6;3Z}3?ƹlpC0-yd0*<wCPI,qYj@ -:$tH(jmw18c
Jff&ð`CyF"ɞilw9js!=`D3d2"ް`^M3DtR>]=TWQPݒsu^nr^V,ܐSŘHd[51)o7sW4얙GAR^uϝ|[[:ڡQst{+mv
Ue"|PJEB\iW Cj~H>YY~S,ϵܳ<p~2<j`%0 L^_']m,ȑcxvcwkEHWSelȦ0]-(&?^+JޚzZm9~#>@TLK16#\okj(P)/CH}B1U<P:M X`qMMn$GW^GU3Crj:URZ+I1FiO:P1җ3sNG|upP8!Z8F>姚*hp&ҜdD
|C1u-BNxPJQ9JЯ%ƳSpLHM`˥\k(Jy7Sqʄ́= B($ȭ/! U ->L>@eqo&-D^#k?AN߮ ^jևu+2H -t >A繅?@c4ɇU.WʑW316/NYJ%V
oT* KW$+2nh", n\OgeRK5m
;*ș]Tjܟ{Oo\Oj@0ԤCjiX@~PXk:hصg8h30; -X I;"!^ -j%[d'̓|(M\QpdzI"^xYĔQ8Y1" D݉s!"3?aJ2=g[:#[=&N"G )+"A/aխ@Ϭr,]L;+Дy+_9!3^oOK79d#r@]Yji{E/RQW\?>zo-!L, -pK3ݩ&=C~44Wگt*]_MiVROFa=)9*o4HB -״vH¤RXZ5+μ4oo@5 -endstream +806 0 obj +<< /D [ 799 0 R /XYZ 79.822 693.578 null ] >> endobj 807 0 obj -<< /Type /Page /Contents 808 0 R /Resources 806 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 799 0 R /XYZ 79.822 682.619 null ] >> +endobj +808 0 obj +<< /D [ 799 0 R /XYZ 79.822 671.66 null ] >> endobj 809 0 obj -<< /D [ 807 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 799 0 R /XYZ 79.822 660.701 null ] >> endobj 810 0 obj -<< /D [ 807 0 R /XYZ 79.822 730.975 null ] >> +<< /D [ 799 0 R /XYZ 79.822 649.742 null ] >> endobj 811 0 obj -<< /D [ 807 0 R /XYZ 79.822 720.016 null ] >> +<< /D [ 799 0 R /XYZ 79.822 638.783 null ] >> endobj 812 0 obj -<< /D [ 807 0 R /XYZ 79.822 673.207 null ] >> +<< /D [ 799 0 R /XYZ 79.822 627.824 null ] >> endobj 813 0 obj -<< /D [ 807 0 R /XYZ 79.822 638.352 null ] >> +<< /D [ 799 0 R /XYZ 79.822 616.865 null ] >> endobj 814 0 obj -<< /D [ 807 0 R /XYZ 79.822 567.632 null ] >> +<< /D [ 799 0 R /XYZ 79.822 567.826 null ] >> endobj 815 0 obj -<< /D [ 807 0 R /XYZ 79.822 520.823 null ] >> +<< /D [ 799 0 R /XYZ 79.822 556.867 null ] >> endobj 816 0 obj -<< /D [ 807 0 R /XYZ 79.822 509.864 null ] >> +<< /D [ 799 0 R /XYZ 79.822 545.908 null ] >> endobj 817 0 obj -<< /D [ 807 0 R /XYZ 79.822 475.01 null ] >> +<< /D [ 799 0 R /XYZ 79.822 534.95 null ] >> endobj 818 0 obj -<< /D [ 807 0 R /XYZ 79.822 428.2 null ] >> +<< /D [ 799 0 R /XYZ 79.822 523.991 null ] >> endobj 819 0 obj -<< /D [ 807 0 R /XYZ 79.822 381.391 null ] >> +<< /D [ 799 0 R /XYZ 79.822 513.032 null ] >> endobj 820 0 obj -<< /D [ 807 0 R /XYZ 79.822 370.432 null ] >> +<< /D [ 799 0 R /XYZ 79.822 502.073 null ] >> endobj 821 0 obj -<< /D [ 807 0 R /XYZ 79.822 335.578 null ] >> +<< /D [ 799 0 R /XYZ 79.822 491.114 null ] >> endobj 822 0 obj -<< /D [ 807 0 R /XYZ 79.822 300.723 null ] >> +<< /D [ 799 0 R /XYZ 79.822 480.155 null ] >> endobj 823 0 obj -<< /D [ 807 0 R /XYZ 79.822 289.764 null ] >> +<< /D [ 799 0 R /XYZ 79.822 469.196 null ] >> +endobj +221 0 obj +<< /D [ 799 0 R /XYZ 79.37 444.676 null ] >> endobj 824 0 obj -<< /D [ 807 0 R /XYZ 79.822 254.91 null ] >> +<< /D [ 799 0 R /XYZ 79.822 395.252 null ] >> endobj 825 0 obj -<< /D [ 807 0 R /XYZ 79.822 243.951 null ] >> +<< /D [ 799 0 R /XYZ 79.822 384.293 null ] >> endobj 826 0 obj -<< /D [ 807 0 R /XYZ 79.822 197.142 null ] >> +<< /D [ 799 0 R /XYZ 79.822 336.25 null ] >> endobj 827 0 obj -<< /D [ 807 0 R /XYZ 79.822 186.183 null ] >> +<< /D [ 799 0 R /XYZ 79.822 290.045 null ] >> endobj 828 0 obj -<< /D [ 807 0 R /XYZ 79.822 151.328 null ] >> +<< /D [ 799 0 R /XYZ 79.822 243.84 null ] >> endobj 829 0 obj -<< /D [ 807 0 R /XYZ 79.822 140.369 null ] >> +<< /D [ 799 0 R /XYZ 79.822 209.59 null ] >> endobj 830 0 obj -<< /D [ 807 0 R /XYZ 79.822 105.515 null ] >> +<< /D [ 799 0 R /XYZ 79.822 198.631 null ] >> endobj -806 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -833 0 obj -<< /Filter /FlateDecode /Length 3199 >> -stream -x9$џW"h40Jn&YȨ*&"s7y|*s"Xxț%JHnwoR/T~@>qƑw@rs]V}9$Dn! -Jch%>+e\@Rs &y= }D<1OcY'fD0[c{fcd;ޫ0 -cq&}u&yU\4C3llkPI+|p"$ -p0%m%l$`K~(&Fx8(}WS|(4,T?ZMh߷0HaAnX+&P1D6d'jHU]Z`SqaL&δj,g,[$+P/8ĖG@~cpFϺ)lωīMë -w)8c<Tj(*ۗeԵf+RejC7t7L؆x
sgdso]Q
=ϯ&TmvMk#z9ŪNiu՟< x*6fBz\Q - -@eeG^Xa2*jy-2tءG3mෲad<.JOq3)-N 1ZAWfT%bdsU=96}\,eP>48V%7m\)J -ډ3j|-Not^( -bQ!j1*k.I@)j܌Wx%@xA6oCl7DZLwWNrQ9Ӏ/UB+V;݊?ku>݁tͿ6\Y*^"3ˑqRZ5n%9nRP9cQq([jq!. ;sSCV\֨APSKV--}u2-co|M#â]:f̉hsKJNo(`Ix~f~TwPXB-gwK}BYidFz4sZq&{1;mZtum xo.ryzfՎRw
zнw'T -m6:dL/JODZYfx#|6^ZQڑGN^ @}£HlFh`ċ/>1P㘡:C #TNm`!5-l o5$땼JMw.dGW%=p\Ԕ.¿QE,塋ȳFh뎋IW"ˤJ&ŀLjt%_91OB{|Ar?rޱ_vRT)֒)l͡>?R5ۑS'*&1(`/)h.8zBHX3+qk9Mhk]TijA!,l+ st\KH|,oϫ͊Y/LR*Ȃ*f(_@/yƀ<ǭu@ -endstream +831 0 obj +<< /D [ 799 0 R /XYZ 79.822 164.381 null ] >> endobj 832 0 obj -<< /Type /Page /Contents 833 0 R /Resources 831 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 799 0 R /XYZ 79.822 153.422 null ] >> endobj -834 0 obj -<< /D [ 832 0 R /XYZ 78.37 808.885 null ] >> +833 0 obj +<< /D [ 799 0 R /XYZ 79.822 107.217 null ] >> endobj -835 0 obj -<< /D [ 832 0 R /XYZ 79.822 650.274 null ] >> +834 0 obj +<< /D [ 799 0 R /XYZ 79.822 78.635 null ] >> endobj -836 0 obj -<< /D [ 832 0 R /XYZ 79.822 577.547 null ] >> +798 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F22 389 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 837 0 obj -<< /D [ 832 0 R /XYZ 79.822 542.677 null ] >> +<< /Filter /FlateDecode /Length 3428 >> +stream +xˎ#>_crh4s߂\[*Wy܃*")E5u?]?v7?Dx/b=Sb`܈/z8=|wi!<Qs-8?ZK[-G[|Gᅟ<Rxn8W^<12O:0h. xJPZ"ђ
{YSR]O('T +}qJ`: +2\#?Ge:w;3S'LpS?WPBX30woU +-[y듍.͍Sq/ϱ2+\wS**Uy02Kp1k-,^ +QzGt/AY&t7#@}6։IPDcsmSu),HoDg%GZ~2tRs攛y+ڪrq<`!My2
K)Tp4R4M}hL:f̭k7&f b&#K䳺fؒR}rWLjGt ?0i$]R+۠OŏK3q\b06ȗ&,f.6dFkiP4N_a[d[*"""6Aou<iG7l2J:8:z%E$~`|f +`P-BeU==.zd8d yQƸ74 @&8A(8rZb4B{̫6Y=c +nQ&`iaw{ACP4OgGtX`a!r{k!R20mu,{l-<G0Z$ETޚ/,sch-i&X:A"lw +Lg?H57ʯi!ʴ*f=5{|kѴG#i4!
+/ +N +e +y㴸{g<xOkh&x)+爪 cZBJ3LVrTgDH5F-jS 9
294nb&t HրԊIi5$k?L>@/:@z*&k'@^,'h߷r7KM1O5.qqZ~^5)=]^Hm Ew8'KH&,F22t_kʵo*G{MW0(E/j!6e(OGbW 16 tU +}ǀ(<~жy(~hZO58ݓ9R1v(P[Z~<x6:\z;yW73 +<vߪ]grηPpZFi7O+>r5ZuT|[\ڏ5fBE,mdq
o|GN<2E*wÍm:9sj7eMyܮ7-A +d-Z +!>3>@ΌWd|_ObԵ1l% |luX§|cxl(MCioҰgZxpR{ +endstream +endobj +836 0 obj +<< /Type /Page /Contents 837 0 R /Resources 835 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 838 0 obj -<< /D [ 832 0 R /XYZ 79.822 459.987 null ] >> +<< /D [ 836 0 R /XYZ 78.37 808.885 null ] >> endobj 839 0 obj -<< /D [ 832 0 R /XYZ 79.822 425.118 null ] >> +<< /D [ 836 0 R /XYZ 79.822 719.021 null ] >> endobj 840 0 obj -<< /D [ 832 0 R /XYZ 79.822 390.249 null ] >> +<< /D [ 836 0 R /XYZ 79.822 660.259 null ] >> endobj 841 0 obj -<< /D [ 832 0 R /XYZ 79.822 355.38 null ] >> +<< /D [ 836 0 R /XYZ 79.822 601.497 null ] >> endobj 842 0 obj -<< /D [ 832 0 R /XYZ 79.822 344.421 null ] >> +<< /D [ 836 0 R /XYZ 79.822 554.69 null ] >> endobj 843 0 obj -<< /D [ 832 0 R /XYZ 79.822 309.552 null ] >> +<< /D [ 836 0 R /XYZ 79.822 495.928 null ] >> endobj 844 0 obj -<< /D [ 832 0 R /XYZ 79.822 238.817 null ] >> +<< /D [ 836 0 R /XYZ 79.822 484.969 null ] >> endobj 845 0 obj -<< /D [ 832 0 R /XYZ 79.822 213.91 null ] >> +<< /D [ 836 0 R /XYZ 79.822 474.01 null ] >> endobj 846 0 obj -<< /D [ 832 0 R /XYZ 79.822 202.951 null ] >> +<< /D [ 836 0 R /XYZ 79.822 427.203 null ] >> endobj 847 0 obj -<< /D [ 832 0 R /XYZ 79.822 191.992 null ] >> +<< /D [ 836 0 R /XYZ 79.822 356.486 null ] >> endobj 848 0 obj -<< /D [ 832 0 R /XYZ 79.822 181.034 null ] >> +<< /D [ 836 0 R /XYZ 79.822 309.68 null ] >> endobj 849 0 obj -<< /D [ 832 0 R /XYZ 79.822 170.075 null ] >> +<< /D [ 836 0 R /XYZ 79.822 298.721 null ] >> endobj 850 0 obj -<< /D [ 832 0 R /XYZ 79.822 159.116 null ] >> +<< /D [ 836 0 R /XYZ 79.822 263.869 null ] >> endobj 851 0 obj -<< /D [ 832 0 R /XYZ 79.822 148.157 null ] >> +<< /D [ 836 0 R /XYZ 79.822 217.062 null ] >> endobj -831 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F81 377 0 R /F59 346 0 R /F84 425 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -854 0 obj -<< /Filter /FlateDecode /Length 2254 >> -stream -xZr#W!wUhKe
_lIٙ,dKM<x -=|su{$WǫxEW/9k^z#c<B@Ä6N557P/c*]周iYv"I?w?{+AʝCe\PwIBY^z{_|)&}W_s
+J-ʳMKF[6Z8vř:&><" yyf/HRUWWg9_NHw+5ڡ*:N-Eݝ`5#]/[Q!-h?F{X U(ѠQrh0-1J S\Ipˤ*̶B2PTsMaՖFOd -VP%0זe:]H8n!o7h}5JI.x/yca"06&( -kETUkFUc*ic"~zyu!Cu}i`Fh& _O5qJV/YJU7{PxIrVKj}6VG*esvs7cN=E궫ih\mW#B(GwC)Zkl - uvW - -+xR^!!3Å!\^fay9S\P=gMN(l -iW%p` -*8|%/#LL^?(:S9ŸdṔ[jKGmg2nR/Kka<+c|=/ul֨Nʎo[/Hzx,g*z-$ ՛tjf0L -gϝ/)L7mo[Tgϗ>Or\05)rA~'Zƌg-VǟHIfB15qŞnMzQJMrǴj%+`Fփ%F=%Scܫ!9e'ƄGQ- Բq/f -TP)Lx`Wrd\A:J -endstream +852 0 obj +<< /D [ 836 0 R /XYZ 79.822 170.256 null ] >> endobj 853 0 obj -<< /Type /Page /Contents 854 0 R /Resources 852 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 836 0 R /XYZ 79.822 159.297 null ] >> +endobj +854 0 obj +<< /D [ 836 0 R /XYZ 79.822 124.445 null ] >> endobj 855 0 obj -<< /D [ 853 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 836 0 R /XYZ 79.822 89.593 null ] >> endobj 856 0 obj -<< /D [ 853 0 R /XYZ 79.822 742.926 null ] >> -endobj -857 0 obj -<< /D [ 853 0 R /XYZ 79.822 731.968 null ] >> +<< /D [ 836 0 R /XYZ 79.822 78.635 null ] >> endobj -858 0 obj -<< /D [ 853 0 R /XYZ 79.822 721.009 null ] >> +835 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F59 368 0 R /F84 449 0 R /F30 363 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 859 0 obj -<< /D [ 853 0 R /XYZ 79.822 710.05 null ] >> +<< /Filter /FlateDecode /Length 3248 >> +stream +x\Ɏ$
WF
h0U5}3|O/"2T5c>dwB(|\~vwn9
oM&n1inFƵ?8זs?]J[\ Ѧ/`}w>[[^2(O#
ߢǕV1=|D"A?
T_#=F(\a:*X;/#~ybU.ϾgZUř +{SPY!`n
BVA>PV-ެgCKq9`^:|@垥7Ƭ*Ḧ́B*)d3 \GuE6IYu\m3AxI0`V +%-==F&3Sв,WT+ea +q(^=+}#PN4 JMgգd[v1 ~3
^H` +%oe$L8S%SBqXlGM+"^A*0V<`UWG^Ԋ#BQʲ^AK}ER<&h}RZ~15B$_IT!BKs&m4gT]Y`|uS+8j^{&f~)M{,Sqb4$^7?mt|nKVZEl1Gr5L"f,FL3=q)e+I;gкVjK&+YǮ$4Q&u(=)+k?>9bFhK2%%;]~Y5Ic{{'|:Ff0 +?C~cU*Xq| /[[iN/H.>kD. !4ީNeI<\d1gkc{pWHWPWHJT,q*4ǔ^c0^x?ub,@wx~ #5kOS\ +)[H9.`qfu˼Z.7NډɤO%`}zGD[%g,Rm05=<H8N9}'$RIvF3ktGM!;j54;/?TzXN00, +h|I$V +g{akEgW>lTjۉ|$sؿBd?v$i0z/.Tk~O +ME@l.OJ07B$.@O|=.,JYS
FyE코y^}pe⧈27YeX*fck(ƭf<n}HE^@< +qsyAJl{+~}p+ +endstream +endobj +858 0 obj +<< /Type /Page /Contents 859 0 R /Resources 857 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 860 0 obj -<< /D [ 853 0 R /XYZ 79.822 699.091 null ] >> +<< /D [ 858 0 R /XYZ 78.37 808.885 null ] >> endobj 861 0 obj -<< /D [ 853 0 R /XYZ 79.822 688.132 null ] >> +<< /D [ 858 0 R /XYZ 79.822 754.882 null ] >> endobj 862 0 obj -<< /D [ 853 0 R /XYZ 79.822 677.173 null ] >> +<< /D [ 858 0 R /XYZ 79.822 743.923 null ] >> endobj 863 0 obj -<< /D [ 853 0 R /XYZ 79.822 666.214 null ] >> +<< /D [ 858 0 R /XYZ 79.822 697.098 null ] >> endobj 864 0 obj -<< /D [ 853 0 R /XYZ 79.822 655.255 null ] >> +<< /D [ 858 0 R /XYZ 79.822 686.139 null ] >> endobj 865 0 obj -<< /D [ 853 0 R /XYZ 79.822 644.296 null ] >> +<< /D [ 858 0 R /XYZ 79.822 651.27 null ] >> endobj 866 0 obj -<< /D [ 853 0 R /XYZ 79.822 609.427 null ] >> +<< /D [ 858 0 R /XYZ 79.822 640.311 null ] >> endobj 867 0 obj -<< /D [ 853 0 R /XYZ 79.822 574.558 null ] >> +<< /D [ 858 0 R /XYZ 79.822 605.442 null ] >> endobj 868 0 obj -<< /D [ 853 0 R /XYZ 79.822 563.599 null ] >> +<< /D [ 858 0 R /XYZ 79.822 392.242 null ] >> endobj 869 0 obj -<< /D [ 853 0 R /XYZ 79.822 528.73 null ] >> +<< /D [ 858 0 R /XYZ 79.822 319.514 null ] >> endobj 870 0 obj -<< /D [ 853 0 R /XYZ 79.822 503.823 null ] >> +<< /D [ 858 0 R /XYZ 79.822 284.645 null ] >> endobj 871 0 obj -<< /D [ 853 0 R /XYZ 79.822 492.864 null ] >> +<< /D [ 858 0 R /XYZ 79.822 201.955 null ] >> endobj 872 0 obj -<< /D [ 853 0 R /XYZ 79.822 420.137 null ] >> +<< /D [ 858 0 R /XYZ 79.822 167.086 null ] >> endobj 873 0 obj -<< /D [ 853 0 R /XYZ 79.822 409.178 null ] >> +<< /D [ 858 0 R /XYZ 79.822 132.217 null ] >> endobj 874 0 obj -<< /D [ 853 0 R /XYZ 79.822 398.219 null ] >> +<< /D [ 858 0 R /XYZ 79.822 97.347 null ] >> endobj 875 0 obj -<< /D [ 853 0 R /XYZ 79.822 387.26 null ] >> +<< /D [ 858 0 R /XYZ 79.822 86.388 null ] >> endobj -876 0 obj -<< /D [ 853 0 R /XYZ 79.822 376.301 null ] >> -endobj -877 0 obj -<< /D [ 853 0 R /XYZ 79.822 335.454 null ] >> +857 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 878 0 obj -<< /D [ 853 0 R /XYZ 79.822 324.496 null ] >> +<< /Filter /FlateDecode /Length 2644 >> +stream +x[Ɏ#9WJ-Q$H
̹nΜ}p\TPw?~B]s4^~q1Is1Z0/s ߥەssS1s+*N.`si`xV>$ꚨ˼"i?<Zx +avvS?-i:Pt90|>F~#D<1uV~w.עW8Phr=rt63/wDμ*8'iEWɇo=E7,Үyy<P5ɾF~@/>'L*O&mYWanjmYu/I$e'&Mrуnħ*ec Uգ@]` +J*^\^Ixd7OqfTS[GaT%+J-rR@H:ϓAZs eQ
LRw5^B1= + +8nj8RBJU]?<E|R2bUjj-\Dx1KyFյZ>b:u_ZsjF= +b#1rq`cpJDL#Y=CU. +pĤspB(mY1^s18p{C;os:1W xN(o {z{P5[-Bd?|sJmjh,R(Jεƕ"ˍ4`J:Ր=;hp<W!UѩvʊRpC+ $0 +˱k
) g ++
HVKS5Qڒ2(Ly]s$uAZCM6J0L[M1:[Be,*RTr6X7Ιݢ8'C"9NSS~0eup`O<N6C(O@ +ŌQFO&.iungOKɴԔWcRg?7xɦbuOCuHYnF4SONj<L(9fRI5a.>H)(Gԩ&&&k +Io >*0He2^|:SIup|G!rσ*/Cv˟*/Cx~F?j+!TJ4Ҧl%djvg#*h9`jțS#2-O8VK-˱J}OP٪9?L5a1`; +1'#gM0ΜiUwbM +endstream +endobj +877 0 obj +<< /Type /Page /Contents 878 0 R /Resources 876 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 879 0 obj -<< /D [ 853 0 R /XYZ 79.822 313.537 null ] >> +<< /D [ 877 0 R /XYZ 78.37 808.885 null ] >> endobj 880 0 obj -<< /D [ 853 0 R /XYZ 79.822 302.578 null ] >> +<< /D [ 877 0 R /XYZ 79.822 719.016 null ] >> endobj 881 0 obj -<< /D [ 853 0 R /XYZ 79.822 291.619 null ] >> +<< /D [ 877 0 R /XYZ 79.822 694.11 null ] >> endobj 882 0 obj -<< /D [ 853 0 R /XYZ 79.822 280.66 null ] >> +<< /D [ 877 0 R /XYZ 79.822 683.151 null ] >> endobj 883 0 obj -<< /D [ 853 0 R /XYZ 79.822 269.701 null ] >> +<< /D [ 877 0 R /XYZ 79.822 667.21 null ] >> endobj 884 0 obj -<< /D [ 853 0 R /XYZ 79.822 258.742 null ] >> +<< /D [ 877 0 R /XYZ 79.822 656.252 null ] >> endobj 885 0 obj -<< /D [ 853 0 R /XYZ 79.822 247.783 null ] >> +<< /D [ 877 0 R /XYZ 79.822 645.293 null ] >> endobj 886 0 obj -<< /D [ 853 0 R /XYZ 79.822 206.936 null ] >> +<< /D [ 877 0 R /XYZ 79.822 634.334 null ] >> endobj 887 0 obj -<< /D [ 853 0 R /XYZ 79.822 195.978 null ] >> +<< /D [ 877 0 R /XYZ 79.822 623.375 null ] >> endobj 888 0 obj -<< /D [ 853 0 R /XYZ 79.822 185.019 null ] >> +<< /D [ 877 0 R /XYZ 79.822 612.416 null ] >> endobj 889 0 obj -<< /D [ 853 0 R /XYZ 79.822 174.06 null ] >> +<< /D [ 877 0 R /XYZ 79.822 601.457 null ] >> endobj 890 0 obj -<< /D [ 853 0 R /XYZ 79.822 163.101 null ] >> +<< /D [ 877 0 R /XYZ 79.822 590.498 null ] >> endobj 891 0 obj -<< /D [ 853 0 R /XYZ 79.822 152.142 null ] >> +<< /D [ 877 0 R /XYZ 79.822 579.539 null ] >> endobj 892 0 obj -<< /D [ 853 0 R /XYZ 79.822 141.183 null ] >> +<< /D [ 877 0 R /XYZ 79.822 568.58 null ] >> endobj 893 0 obj -<< /D [ 853 0 R /XYZ 79.822 130.224 null ] >> -endobj -852 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 877 0 R /XYZ 79.822 557.621 null ] >> endobj -896 0 obj -<< /Filter /FlateDecode /Length 2975 >> -stream -xrܺ04PRIzU959Xg;9`FyMvoނhn?Mn.nn?sNjԟ1NJ4\Vzkiw^W˥(+ V,43iK1Đ@үUa~? ̎ -\lgZ%+rr~w6]uyeIf3l<o*N]8 -a7IMO2i|67P6GErq@zrVI\EA9<r(pUn ]mIOMM4lb覐L@5BN%o9C2:Y1)Ј c͈0ފnN)[KJ4#uQENH$6B!fZn@AIvm֔Y+C~d?u$*BeJ)ќh/QuAU=xK;wiYxoݪ~Oݲj -Yꝶ!9(udf']^v4Xa3iu5e}}8FQ -=: -S\WLL\{KNt?Kyv_h '9cL_",Wy'@@_vlIS[.k0./̬dpS7|QCkl9MYDGY^oªw}1Q3Tǐ(VS1]mVH؛㗝KhBk/eƳhˌbբ uƕZ'xTrE"nU^?Bf..[ -ufpJ%reC -A?d6xS1=c5ߔ6q&亹wf'z(;D+%YoDT~iOˀ@Ad<mKTȖV-*~S{e" -0Xb"V듙Yùc:}dAw(cuIh(^Gp@ZbƐTZPMl+S&fpff֟Jü,Cl5
`g{h[r\XJJ!ۓ5oXd8$aE;CzZ -s]>Dc}]-9^õ`V,-}h\CS{c_iGy\dg 15;B+tPрtpJ:
p(r
{94 -g:g:bz(&(fa!9 -C8(mȀ,N-d:)4qk
[rFH"(SV8AYO+gd:CuD/aQ{Maf(_@ÂA/hK6Ai>ˍRf -B-z7qg5}h2B1
)0E4$xٌxf^+2 /(!14oj|P$;hW)^hʓ8rUjA?TR3y -$B" -/JeE1/ư -n -~^Kk`@I -R -jgQS!]F_:?i1MOs:0H -2chl
i [eՋ4ZKZ*C/}"q݄ 屳Jmg`nJ юyE%){!ғkD_AH셀a(1QȐy?{Ҕ>$GjgdL>\T{-ۡIi-ID-6+K҉e
#\CLcfՖ)ۋK{>bIyo7cpkbkMԧ2DItrmJsgQ)= ᪑g4z ]gg.;XLz[K[w=V=BY7f #uVl4F!BԋGSݧ^=>A)QiwPJsT汄eF5#!s?a0ƺBYÉp6w%"PN!WQE5}@]]RFAsRAE/ -쥂rjRI%01#˃Uz~uGbeu*Xe(Q6LX7#/Whmsp46O^7=ap8*03MuAA8}c`^# -cdTy'$ -S"^ {mk uIY+JƱN@rng$a__fxh0OvgN*1fi`|~<3>==g|rlw47x@18sZŻ&-bv\ȍm&? -endstream +894 0 obj +<< /D [ 877 0 R /XYZ 79.822 546.662 null ] >> endobj 895 0 obj -<< /Type /Page /Contents 896 0 R /Resources 894 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 877 0 R /XYZ 79.822 535.704 null ] >> +endobj +896 0 obj +<< /D [ 877 0 R /XYZ 79.822 498.842 null ] >> endobj 897 0 obj -<< /D [ 895 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 877 0 R /XYZ 79.822 463.973 null ] >> endobj 898 0 obj -<< /D [ 895 0 R /XYZ 79.822 719.071 null ] >> +<< /D [ 877 0 R /XYZ 79.822 393.238 null ] >> endobj 899 0 obj -<< /D [ 895 0 R /XYZ 79.822 708.112 null ] >> +<< /D [ 877 0 R /XYZ 79.822 346.413 null ] >> endobj 900 0 obj -<< /D [ 895 0 R /XYZ 79.822 667.591 null ] >> +<< /D [ 877 0 R /XYZ 79.822 335.454 null ] >> endobj 901 0 obj -<< /D [ 895 0 R /XYZ 79.822 656.632 null ] >> +<< /D [ 877 0 R /XYZ 79.822 294.608 null ] >> endobj 902 0 obj -<< /D [ 895 0 R /XYZ 79.822 592.201 null ] >> +<< /D [ 877 0 R /XYZ 79.822 283.649 null ] >> endobj 903 0 obj -<< /D [ 895 0 R /XYZ 79.822 536.574 null ] >> +<< /D [ 877 0 R /XYZ 79.822 272.69 null ] >> endobj 904 0 obj -<< /D [ 895 0 R /XYZ 79.822 525.615 null ] >> +<< /D [ 877 0 R /XYZ 79.822 261.731 null ] >> endobj 905 0 obj -<< /D [ 895 0 R /XYZ 79.822 514.656 null ] >> +<< /D [ 877 0 R /XYZ 79.822 250.772 null ] >> endobj 906 0 obj -<< /D [ 895 0 R /XYZ 79.822 503.697 null ] >> +<< /D [ 877 0 R /XYZ 79.822 239.813 null ] >> endobj 907 0 obj -<< /D [ 895 0 R /XYZ 79.822 492.738 null ] >> +<< /D [ 877 0 R /XYZ 79.822 228.854 null ] >> endobj 908 0 obj -<< /D [ 895 0 R /XYZ 79.822 481.779 null ] >> +<< /D [ 877 0 R /XYZ 79.822 217.895 null ] >> endobj 909 0 obj -<< /D [ 895 0 R /XYZ 79.822 470.82 null ] >> +<< /D [ 877 0 R /XYZ 79.822 206.936 null ] >> endobj 910 0 obj -<< /D [ 895 0 R /XYZ 79.822 459.861 null ] >> -endobj -221 0 obj -<< /D [ 895 0 R /XYZ 79.37 422.769 null ] >> +<< /D [ 877 0 R /XYZ 79.822 166.09 null ] >> endobj 911 0 obj -<< /D [ 895 0 R /XYZ 79.822 387.037 null ] >> +<< /D [ 877 0 R /XYZ 79.822 155.131 null ] >> endobj 912 0 obj -<< /D [ 895 0 R /XYZ 79.822 376.078 null ] >> +<< /D [ 877 0 R /XYZ 79.822 144.172 null ] >> endobj 913 0 obj -<< /D [ 895 0 R /XYZ 79.822 365.119 null ] >> +<< /D [ 877 0 R /XYZ 79.822 133.213 null ] >> endobj 914 0 obj -<< /D [ 895 0 R /XYZ 79.822 354.16 null ] >> +<< /D [ 877 0 R /XYZ 79.822 122.254 null ] >> endobj 915 0 obj -<< /D [ 895 0 R /XYZ 79.822 343.201 null ] >> +<< /D [ 877 0 R /XYZ 79.822 111.295 null ] >> endobj 916 0 obj -<< /D [ 895 0 R /XYZ 79.822 332.242 null ] >> +<< /D [ 877 0 R /XYZ 79.822 100.336 null ] >> endobj 917 0 obj -<< /D [ 895 0 R /XYZ 79.822 321.283 null ] >> +<< /D [ 877 0 R /XYZ 79.822 89.377 null ] >> endobj -918 0 obj -<< /D [ 895 0 R /XYZ 79.822 310.324 null ] >> -endobj -919 0 obj -<< /D [ 895 0 R /XYZ 79.822 299.365 null ] >> +876 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F66 358 0 R /F59 368 0 R /F84 449 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 920 0 obj -<< /D [ 895 0 R /XYZ 79.822 234.717 null ] >> +<< /Filter /FlateDecode /Length 2925 >> +stream +x[ˎ
+HDI` +khV0S)wkO6"C£001w +a3"$UJvM.ѠuL+!0%t83HKl,=y,+=(ף)W(ɾ) +,R6eJ>=KR=C&$z, +rP-6kK) +;|1ZD&Rw$ݻaڸ%*0ʳɌ!ZCW0: +FA9RlEB^yۗ\G}i5mV+Um`8ms,ջ)wǂފuO]_?z[VF ?bA
I߃2|MX04*fPî5[[?&TM|Z+al+
pIoT7IV- Z(jxD+z@hOF+Rx[[cRHq쉘J1&<pJm!:lvll&dd4NzQ +푔FIr},}FRlM̷kXnQd~W=+x%pq-"ՙCkKNavt{O͑ETǂ<_I~@wwSQĀsd$llTN30 oMH=k\Dh +5Vg*3 h.ׅ`p.Bׄ0S5Ba.[LyLo5U3M71Yd#*oRZ!!;sVT~_z3狐Sg">;g'g"Or+ v̜Oy: +endstream +endobj +919 0 obj +<< /Type /Page /Contents 920 0 R /Resources 918 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 643 0 R >> endobj 921 0 obj -<< /D [ 895 0 R /XYZ 79.822 223.758 null ] >> +<< /D [ 919 0 R /XYZ 78.37 808.885 null ] >> endobj 922 0 obj -<< /D [ 895 0 R /XYZ 79.822 212.799 null ] >> +<< /D [ 919 0 R /XYZ 79.822 719.016 null ] >> endobj 923 0 obj -<< /D [ 895 0 R /XYZ 79.822 201.84 null ] >> +<< /D [ 919 0 R /XYZ 79.822 708.057 null ] >> endobj 924 0 obj -<< /D [ 895 0 R /XYZ 79.822 190.881 null ] >> +<< /D [ 919 0 R /XYZ 79.822 643.3 null ] >> endobj 925 0 obj -<< /D [ 895 0 R /XYZ 79.822 179.923 null ] >> +<< /D [ 919 0 R /XYZ 79.822 587.509 null ] >> endobj 926 0 obj -<< /D [ 895 0 R /XYZ 79.822 168.964 null ] >> +<< /D [ 919 0 R /XYZ 79.822 576.55 null ] >> endobj 927 0 obj -<< /D [ 895 0 R /XYZ 79.822 158.005 null ] >> +<< /D [ 919 0 R /XYZ 79.822 565.591 null ] >> endobj 928 0 obj -<< /D [ 895 0 R /XYZ 79.822 147.046 null ] >> +<< /D [ 919 0 R /XYZ 79.822 554.633 null ] >> endobj 929 0 obj -<< /D [ 895 0 R /XYZ 79.822 136.087 null ] >> -endobj -894 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F59 346 0 R /F84 425 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 919 0 R /XYZ 79.822 543.674 null ] >> endobj -932 0 obj -<< /Filter /FlateDecode /Length 2177 >> -stream -x[n#;+Hq|Ynp3]eJNUVQIR<$OHϗWO$SzQ<>Y4?Jiᢷ?EWG''1zoA \wu[j__.%tyAWd6Al;{EwwpZ:~J/~ 8 -m1EŠ51V[5R<=pBzC=4?3d(<x)fc!*+ -<GdnAQe{hHBڈC{rXB[3
kD٧{F0M@-3B -BbcHn˃l/0QdMmT_re+RiqK#[&V]:dIqVylDnV0l`Bb5Ԛ;9qº!B\G;SkIcV8@.jP"C){5pIʺe=۽ h֯)krSiΜSh*"SnPלm1{T7C>R9<TYXyV5A)Ll+VkiTh5hE%egϺ.unn<{CyZϻJ"oDH'%-%1`ED} -Vtj@Sz3")A&odI(LM e8Ҽ\R+n2Ev!1'A\UVfQ -zG^_kD -rR83y*-P -y`6O7e:*m7>R -:27xSd1 }8\m##66 -vPgeH\IE`v
_OXF1FdV:ťf(Q{\^z{_0hCyB; Ho}r\s!M -]e_K>n\aGn3'9`sxiN$cݑ)_u0.do!AAu_J!<͉d㛀x?~_^ -endstream +930 0 obj +<< /D [ 919 0 R /XYZ 79.822 532.715 null ] >> endobj 931 0 obj -<< /Type /Page /Contents 932 0 R /Resources 930 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 627 0 R >> +<< /D [ 919 0 R /XYZ 79.822 521.756 null ] >> +endobj +932 0 obj +<< /D [ 919 0 R /XYZ 79.822 510.797 null ] >> endobj 933 0 obj -<< /D [ 931 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 919 0 R /XYZ 79.822 457.995 null ] >> +endobj +225 0 obj +<< /D [ 919 0 R /XYZ 79.37 395.136 null ] >> endobj 934 0 obj -<< /D [ 931 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 919 0 R /XYZ 79.822 375.831 null ] >> endobj 935 0 obj -<< /D [ 931 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 919 0 R /XYZ 79.822 364.872 null ] >> endobj 936 0 obj -<< /D [ 931 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 919 0 R /XYZ 79.822 353.913 null ] >> endobj 937 0 obj -<< /D [ 931 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 919 0 R /XYZ 79.822 342.954 null ] >> endobj 938 0 obj -<< /D [ 931 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 919 0 R /XYZ 79.822 331.995 null ] >> endobj 939 0 obj -<< /D [ 931 0 R /XYZ 79.822 664.222 null ] >> +<< /D [ 919 0 R /XYZ 79.822 321.036 null ] >> endobj 940 0 obj -<< /D [ 931 0 R /XYZ 79.822 653.263 null ] >> +<< /D [ 919 0 R /XYZ 79.822 310.077 null ] >> endobj 941 0 obj -<< /D [ 931 0 R /XYZ 79.822 642.304 null ] >> +<< /D [ 919 0 R /XYZ 79.822 299.118 null ] >> endobj 942 0 obj -<< /D [ 931 0 R /XYZ 79.822 631.345 null ] >> +<< /D [ 919 0 R /XYZ 79.822 288.159 null ] >> endobj 943 0 obj -<< /D [ 931 0 R /XYZ 79.822 620.386 null ] >> +<< /D [ 919 0 R /XYZ 79.822 277.2 null ] >> endobj 944 0 obj -<< /D [ 931 0 R /XYZ 79.822 609.427 null ] >> +<< /D [ 919 0 R /XYZ 79.822 213.44 null ] >> endobj 945 0 obj -<< /D [ 931 0 R /XYZ 79.822 598.468 null ] >> +<< /D [ 919 0 R /XYZ 79.822 202.481 null ] >> endobj 946 0 obj -<< /D [ 931 0 R /XYZ 79.822 587.509 null ] >> +<< /D [ 919 0 R /XYZ 79.822 191.522 null ] >> endobj 947 0 obj -<< /D [ 931 0 R /XYZ 79.822 576.55 null ] >> +<< /D [ 919 0 R /XYZ 79.822 180.563 null ] >> endobj 948 0 obj -<< /D [ 931 0 R /XYZ 79.822 565.591 null ] >> +<< /D [ 919 0 R /XYZ 79.822 169.604 null ] >> endobj 949 0 obj -<< /D [ 931 0 R /XYZ 79.822 536.7 null ] >> +<< /D [ 919 0 R /XYZ 79.822 158.645 null ] >> endobj 950 0 obj -<< /D [ 931 0 R /XYZ 79.822 525.741 null ] >> +<< /D [ 919 0 R /XYZ 79.822 147.686 null ] >> endobj 951 0 obj -<< /D [ 931 0 R /XYZ 79.822 514.782 null ] >> +<< /D [ 919 0 R /XYZ 79.822 136.727 null ] >> endobj 952 0 obj -<< /D [ 931 0 R /XYZ 79.822 503.823 null ] >> +<< /D [ 919 0 R /XYZ 79.822 125.768 null ] >> endobj 953 0 obj -<< /D [ 931 0 R /XYZ 79.822 492.864 null ] >> +<< /D [ 919 0 R /XYZ 79.822 114.809 null ] >> endobj 954 0 obj -<< /D [ 931 0 R /XYZ 79.822 481.905 null ] >> +<< /D [ 919 0 R /XYZ 79.822 103.851 null ] >> endobj 955 0 obj -<< /D [ 931 0 R /XYZ 79.822 470.946 null ] >> +<< /D [ 919 0 R /XYZ 79.822 92.892 null ] >> endobj 956 0 obj -<< /D [ 931 0 R /XYZ 79.822 459.987 null ] >> -endobj -957 0 obj -<< /D [ 931 0 R /XYZ 79.822 449.029 null ] >> +<< /D [ 919 0 R /XYZ 79.822 81.933 null ] >> endobj -958 0 obj -<< /D [ 931 0 R /XYZ 79.822 438.07 null ] >> +918 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 959 0 obj -<< /D [ 931 0 R /XYZ 79.822 427.111 null ] >> +<< /Filter /FlateDecode /Length 2792 >> +stream +x[Ic
19F"
(nW
s߂\3kQ %|TE^~"O߾\S 0H^iN_QBu?ߤ4R{|毟.NxcD f*`_?0h/I(<Ttx78yX;0uMW)<>+]o&~6Joy<V +2mF^lA,mP:&ȃ@Y=Py̓nPc>"LM50C -7!Qe(B*c*8C֊XJ +V +"-H>{wPb|;5-((5t*n<"hQd+jmI-~{oXQR2%9C[<VG1{oTQxw`T۞q&*=~tK\Q=ǵbtEi(co-T +aCY(N7'<Z٤µ^ؕBgcI\qT}PI-iT#yNr|@`_h^Io wv=NPLo'gʲϘ3 +X<.UC439WI0s +.*"TR&_;;A?oX-'*L)I 9q#)蔰BDDX5\Y>bƲ欖ҏ7DNȁ.ƃ {1`6Y!gg!g9]H(i<up|$-}b?;? 8r[Geo\̲onőMZJ-koY{:Le~qf+d* +h{q <v1۵Pedm#'PtMc\q[
+jsz +wg5nj5Hjd67^(mi +{m)CV.{,T\4ɚwY;F"fm20 \\6аP}lbm%4P"XʝgM=z糅 +T`4wJ.)y<Uש#R]`o5a(9b8R +~i^ +"tM!-QRd|;*'y¡,N~[@[b. r.08cf" +g."h^8ъv%ͬX g*T=腍s(?%Tǐ:jNrOG<F̫;B9p;Q +^6`ĂEvtZ֚,n؎&@+Bmr+k +!=.XU%X.Ӯ/biY5oE''pƇeU^18rQj>mzec)kN1{J6i|{Ƨ_KwooÄ<?qE+ +͢mιd]^sDytaQna\Y J%jj$ۊGu>r_ȹ:RE@9t>Zw/G
*Sm|UO##n\P2AD6`NDdAԆ(~*5D6($ug6@4mE iJzL~|:ݟ 16Y#T/mNlճ`"cz[ +v# +UQؐ/$ +endstream +endobj +958 0 obj +<< /Type /Page /Contents 959 0 R /Resources 957 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj 960 0 obj -<< /D [ 931 0 R /XYZ 79.822 416.152 null ] >> +<< /D [ 958 0 R /XYZ 78.37 808.885 null ] >> endobj 961 0 obj -<< /D [ 931 0 R /XYZ 79.822 405.193 null ] >> +<< /D [ 958 0 R /XYZ 79.822 768.829 null ] >> endobj 962 0 obj -<< /D [ 931 0 R /XYZ 79.822 394.234 null ] >> +<< /D [ 958 0 R /XYZ 79.822 659.24 null ] >> endobj 963 0 obj -<< /D [ 931 0 R /XYZ 79.822 383.275 null ] >> +<< /D [ 958 0 R /XYZ 79.822 633.337 null ] >> endobj 964 0 obj -<< /D [ 931 0 R /XYZ 79.822 372.316 null ] >> +<< /D [ 958 0 R /XYZ 79.822 622.379 null ] >> endobj 965 0 obj -<< /D [ 931 0 R /XYZ 79.822 361.357 null ] >> +<< /D [ 958 0 R /XYZ 79.822 611.42 null ] >> endobj 966 0 obj -<< /D [ 931 0 R /XYZ 79.822 350.398 null ] >> +<< /D [ 958 0 R /XYZ 79.822 600.461 null ] >> endobj 967 0 obj -<< /D [ 931 0 R /XYZ 79.822 339.44 null ] >> +<< /D [ 958 0 R /XYZ 79.822 589.502 null ] >> endobj 968 0 obj -<< /D [ 931 0 R /XYZ 79.822 328.481 null ] >> +<< /D [ 958 0 R /XYZ 79.822 531.719 null ] >> endobj 969 0 obj -<< /D [ 931 0 R /XYZ 79.822 299.589 null ] >> +<< /D [ 958 0 R /XYZ 79.822 520.76 null ] >> endobj 970 0 obj -<< /D [ 931 0 R /XYZ 79.822 288.63 null ] >> +<< /D [ 958 0 R /XYZ 79.822 509.801 null ] >> endobj 971 0 obj -<< /D [ 931 0 R /XYZ 79.822 259.738 null ] >> +<< /D [ 958 0 R /XYZ 79.822 498.842 null ] >> endobj 972 0 obj -<< /D [ 931 0 R /XYZ 79.822 248.78 null ] >> +<< /D [ 958 0 R /XYZ 79.822 487.883 null ] >> endobj 973 0 obj -<< /D [ 931 0 R /XYZ 79.822 237.821 null ] >> +<< /D [ 958 0 R /XYZ 79.822 476.924 null ] >> endobj 974 0 obj -<< /D [ 931 0 R /XYZ 79.822 226.862 null ] >> +<< /D [ 958 0 R /XYZ 79.822 465.965 null ] >> endobj 975 0 obj -<< /D [ 931 0 R /XYZ 79.822 215.903 null ] >> +<< /D [ 958 0 R /XYZ 79.822 455.006 null ] >> endobj 976 0 obj -<< /D [ 931 0 R /XYZ 79.822 204.944 null ] >> +<< /D [ 958 0 R /XYZ 79.822 444.047 null ] >> endobj 977 0 obj -<< /D [ 931 0 R /XYZ 79.822 193.985 null ] >> +<< /D [ 958 0 R /XYZ 79.822 433.088 null ] >> endobj 978 0 obj -<< /D [ 931 0 R /XYZ 79.822 183.026 null ] >> +<< /D [ 958 0 R /XYZ 79.822 407.186 null ] >> endobj 979 0 obj -<< /D [ 931 0 R /XYZ 79.822 172.067 null ] >> +<< /D [ 958 0 R /XYZ 79.822 396.227 null ] >> endobj 980 0 obj -<< /D [ 931 0 R /XYZ 79.822 161.108 null ] >> +<< /D [ 958 0 R /XYZ 79.822 385.268 null ] >> endobj 981 0 obj -<< /D [ 931 0 R /XYZ 79.822 150.149 null ] >> +<< /D [ 958 0 R /XYZ 79.822 374.309 null ] >> endobj 982 0 obj -<< /D [ 931 0 R /XYZ 79.822 139.19 null ] >> +<< /D [ 958 0 R /XYZ 79.822 363.35 null ] >> endobj 983 0 obj -<< /D [ 931 0 R /XYZ 79.822 128.232 null ] >> +<< /D [ 958 0 R /XYZ 79.822 337.447 null ] >> endobj 984 0 obj -<< /D [ 931 0 R /XYZ 79.822 117.273 null ] >> +<< /D [ 958 0 R /XYZ 79.822 326.488 null ] >> endobj 985 0 obj -<< /D [ 931 0 R /XYZ 79.822 106.314 null ] >> +<< /D [ 958 0 R /XYZ 79.822 315.529 null ] >> endobj 986 0 obj -<< /D [ 931 0 R /XYZ 79.822 95.355 null ] >> +<< /D [ 958 0 R /XYZ 79.822 304.57 null ] >> endobj 987 0 obj -<< /D [ 931 0 R /XYZ 79.822 84.396 null ] >> +<< /D [ 958 0 R /XYZ 79.822 293.611 null ] >> endobj -930 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -992 0 obj -<< /Filter /FlateDecode /Length 2848 >> -stream -x[n\;IW@v
pl0hq+.Ee~ ZjݥOUQ_~p]b L:}F0n?rnϕs-/4ޝ80-b%*|=P틖:ܑ*q]O>Qc3%e\O1&0Rv{P0m۹mhŔ0JR1Y:Z) w$V߳e}0M^?Š[BIQQ_i:嚟{IoU 9"\{DBrr|S2,,ROs+.('^3>
6mCfTٔ}ߤ&ʕy6N1P~R517RnkѶ-۶]ݪ{(+ōGMĿf;%INߊTa5^otkc#m5|mОT1}}-iT,A3
5s)C0זbQY,Ћc'08Wnޤ})?a*J%ʼ#1ᇌh|W5EVVdR2-IdIQ|**O98Mm*ﲬ0>`GbEA]ՀWo_+jI,Ӻ7d| -0o=ݘ^}(%3W:lH){IrՙfDfM*Ɠ~_;R^mOU封j -=O~b=BMds[c&>dvۊz#E>l4[ߐ{*Ak>*ҜOmJ_-E[],AbbT4A'|EZtXSi"lֲ+ -fXoS7ȅQ;
qal)OD8 -fHfJ R`V-K*y"` H -L-tAwUġ#\p$(`S:6cS|x&* ޮ9ELE],Z$ 6[:3>Qx|Z:cr=ScF* DC(s~UemEVl;@OM7}4{;wT"B̤5&T rz&"qT?V<|RPwɎ&J,e$X!Rm8Δgqdس
"4rJU%![#"eѯ
>Zoz"sfXCO!Զޖ7
n5a:\3cz(=BJ(%<Acx_ɕXa8ũ @={s|TZˡh0a"}αQ?;LCWgH%[ȘeI,|{x2S 23ja(*cF\<Yrr&o&ɜZ`< +]|j*JWs0VptWJk+uElDE(>\%6>:|&kxV"SyĶ{=wZsyz})\kWk7I=մXZÜHĦsK*β4wsi.fyF\i4CMwqg!6h*G% -WU?8ЦEWJ6P&֫&͢MZhC&@Uq1^;\C;e39VhyrRFT7:y;Ŷz!~$gAS**R>+#u^{m -Ǹ -lS0R!M!A8njقerLp/. -endstream +988 0 obj +<< /D [ 958 0 R /XYZ 79.822 282.653 null ] >> endobj -991 0 obj -<< /Type /Page /Contents 992 0 R /Resources 990 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R /Annots 1027 0 R >> +989 0 obj +<< /D [ 958 0 R /XYZ 79.822 271.694 null ] >> endobj -1027 0 obj -[ 988 0 R 989 0 R ] +990 0 obj +<< /D [ 958 0 R /XYZ 79.822 233.836 null ] >> endobj -988 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 130.17 348.109 144.894 360.065 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +991 0 obj +<< /D [ 958 0 R /XYZ 79.822 222.877 null ] >> endobj -989 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 160.615 348.109 172.571 360.065 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +992 0 obj +<< /D [ 958 0 R /XYZ 79.822 211.918 null ] >> endobj 993 0 obj -<< /D [ 991 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 958 0 R /XYZ 79.822 200.959 null ] >> endobj 994 0 obj -<< /D [ 991 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 958 0 R /XYZ 79.822 190 null ] >> endobj 995 0 obj -<< /D [ 991 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 958 0 R /XYZ 79.822 179.041 null ] >> endobj 996 0 obj -<< /D [ 991 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 958 0 R /XYZ 79.822 168.082 null ] >> endobj 997 0 obj -<< /D [ 991 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 958 0 R /XYZ 79.822 157.123 null ] >> endobj 998 0 obj -<< /D [ 991 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 958 0 R /XYZ 79.822 146.164 null ] >> endobj 999 0 obj -<< /D [ 991 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 958 0 R /XYZ 79.822 135.205 null ] >> endobj 1000 0 obj -<< /D [ 991 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 958 0 R /XYZ 79.822 124.247 null ] >> endobj 1001 0 obj -<< /D [ 991 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 958 0 R /XYZ 79.822 113.288 null ] >> endobj 1002 0 obj -<< /D [ 991 0 R /XYZ 79.822 681.158 null ] >> +<< /D [ 958 0 R /XYZ 79.822 102.329 null ] >> endobj 1003 0 obj -<< /D [ 991 0 R /XYZ 79.822 670.199 null ] >> +<< /D [ 958 0 R /XYZ 79.822 91.37 null ] >> endobj 1004 0 obj -<< /D [ 991 0 R /XYZ 79.822 581.532 null ] >> +<< /D [ 958 0 R /XYZ 79.822 80.411 null ] >> endobj -1005 0 obj -<< /D [ 991 0 R /XYZ 79.822 570.573 null ] >> +957 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F27 362 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1006 0 obj -<< /D [ 991 0 R /XYZ 79.822 529.726 null ] >> +1010 0 obj +<< /Filter /FlateDecode /Length 2952 >> +stream +xr#*'krL5.CHMٞ$[&~O8*I1DxiNqzg+s^'^`:ur#]D(8 +شU~LړU aqKCJ8k@/MW .>s^ls T*~Y7q/_quXdhCfp 2TW=.PXopX>Wd#ᓚ z 8&|avBΌL=1Vwh@ +i^~hZWȟt-Cn)vbA2HÞvPNhk3*tݤ01`YA}L2FGFtԟԞ{\`4Ak#}1hA݃719;xBIq-S-PE.Y#_> +tobǘj1eLJ;1sdN + +P(#͈d22oYD5ML̬樷amWl&hd26hLX-0AQ~2z1DOIBx]"$kӫۭ]quS(WhG0)>v<dœHu
aՖBI\KhgȹxM{<jqwѾ^A[|FH`ZI;QPE4:~Q;棸an/N%rDBYB)0>x!ˏY9.?!^'{]j4X(ۻl<sըC398A
lIOA&0)PhV\s5Zp\\M9>(!ULPm,G1$7jTwmiHbijy*!PV
wql$v^/ 6c,'!Џfh +dP"6'
52h\9tT}w渣L8"F()?(튼FKz&6s +iBmhpǤ̅@I39tDKz ݽ""ŧE16qyF0wI0҈QIvb-aLZ|4 aX#P9Kjt[D8(O+?g*
Z@~]D&hK{ծ^:BIe@k]wSZ}N{)XH (>e`C?383{Aq.WjSiǩ0XTƤAqO`=B9Vt"̥u/I7 cgၙw罖r$Z8M|)%Kd-5:eb*x=v)܆* +oDxt<"#hC.٢3FEOP7akjyr>A(n_q + +endstream endobj -1007 0 obj -<< /D [ 991 0 R /XYZ 79.822 518.767 null ] >> +1009 0 obj +<< /Type /Page /Contents 1010 0 R /Resources 1008 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R /Annots 1053 0 R >> endobj -1008 0 obj -<< /D [ 991 0 R /XYZ 79.822 477.92 null ] >> +1053 0 obj +[ 1006 0 R 1007 0 R ] endobj -1009 0 obj -<< /D [ 991 0 R /XYZ 79.822 437.073 null ] >> +1006 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 130.17 86.092 144.894 98.047 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj -1010 0 obj -<< /D [ 991 0 R /XYZ 79.822 426.115 null ] >> +1007 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 160.615 86.092 172.571 98.047 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> endobj 1011 0 obj -<< /D [ 991 0 R /XYZ 79.822 410.174 null ] >> +<< /D [ 1009 0 R /XYZ 78.37 808.885 null ] >> endobj 1012 0 obj -<< /D [ 991 0 R /XYZ 79.822 399.215 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 768.829 null ] >> endobj 1013 0 obj -<< /D [ 991 0 R /XYZ 79.822 388.256 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 742.926 null ] >> endobj 1014 0 obj -<< /D [ 991 0 R /XYZ 79.822 345.417 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 731.968 null ] >> endobj 1015 0 obj -<< /D [ 991 0 R /XYZ 79.822 334.458 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 706.065 null ] >> endobj 1016 0 obj -<< /D [ 991 0 R /XYZ 79.822 323.499 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 695.106 null ] >> endobj 1017 0 obj -<< /D [ 991 0 R /XYZ 79.822 258.742 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 684.147 null ] >> endobj 1018 0 obj -<< /D [ 991 0 R /XYZ 79.822 247.783 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 673.188 null ] >> endobj 1019 0 obj -<< /D [ 991 0 R /XYZ 79.822 236.824 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 662.229 null ] >> endobj 1020 0 obj -<< /D [ 991 0 R /XYZ 79.822 225.865 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 651.27 null ] >> endobj 1021 0 obj -<< /D [ 991 0 R /XYZ 79.822 214.907 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 640.311 null ] >> endobj 1022 0 obj -<< /D [ 991 0 R /XYZ 79.822 203.948 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 602.453 null ] >> endobj 1023 0 obj -<< /D [ 991 0 R /XYZ 79.822 163.101 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 591.494 null ] >> endobj 1024 0 obj -<< /D [ 991 0 R /XYZ 79.822 152.142 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 580.535 null ] >> endobj 1025 0 obj -<< /D [ 991 0 R /XYZ 79.822 141.183 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 569.577 null ] >> endobj -990 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +1026 0 obj +<< /D [ 1009 0 R /XYZ 79.822 558.618 null ] >> endobj -1030 0 obj -<< /Filter /FlateDecode /Length 1816 >> -stream -xZn8+WW"Phn0ۙv$Y%*i/f&c"i?yr|yQ7` -Ah(!:|{UJK8hΠR+)-Vo`yw<Na1,re\#b-irk¡Ü+t|Υ;d3 -8:42hqO<0\UͽHV*E -=\sZx=Mtt -O2\,2
}fD*7Cd(dԌr>B#48>!skeRCԙ1%>)1V|ȩ&|r= 4bRj0T -ݎ%"s -e&2Ts|ONCbT_&T⚓s%E<}.r)QK --V![ZfJM(ElʩQ{Ӵy!IEܼQARkQRŬZѶ45hX -M4͝Ē.Er; M(!{ -"]z*j2y=B(ߙ1G CeNSA:Vʉ\1)MYc'" -~t0]I?COLp@Ma(KLoeݶ'/ 妏 -\ 0V6w Ʊ]v`{DtQ˃_Zmӽ6"f'ZDhHhr-@Å5bs3F~.ʵ/ך4NF*%y<3%aJm-^Q cUzJ0fVAg`
݅vڞR%9ڲ[~o,a҇{֢܊LN[hOKhg$PkjL1;a=)12y]{;Wz0"cl'"MNfWbrA]Z>C)gmTگy"
[,^Vt>lI%ɝ7z+ 2Zx8A%L(C~lto{;ZާCaF)0!l,]VysxF]o.̒($9iPE -3oN0,I)zP 6PR~mW^xk!^Vܨvo-eqۿM]* -endstream +1027 0 obj +<< /D [ 1009 0 R /XYZ 79.822 547.659 null ] >> +endobj +1028 0 obj +<< /D [ 1009 0 R /XYZ 79.822 536.7 null ] >> endobj 1029 0 obj -<< /Type /Page /Contents 1030 0 R /Resources 1028 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1009 0 R /XYZ 79.822 525.741 null ] >> +endobj +1030 0 obj +<< /D [ 1009 0 R /XYZ 79.822 514.782 null ] >> endobj 1031 0 obj -<< /D [ 1029 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 503.823 null ] >> endobj 1032 0 obj -<< /D [ 1029 0 R /XYZ 79.822 742.926 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 492.864 null ] >> endobj 1033 0 obj -<< /D [ 1029 0 R /XYZ 79.822 731.968 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 481.905 null ] >> endobj 1034 0 obj -<< /D [ 1029 0 R /XYZ 79.822 721.009 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 470.946 null ] >> endobj 1035 0 obj -<< /D [ 1029 0 R /XYZ 79.822 710.05 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 459.987 null ] >> endobj 1036 0 obj -<< /D [ 1029 0 R /XYZ 79.822 699.091 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 449.029 null ] >> endobj 1037 0 obj -<< /D [ 1029 0 R /XYZ 79.822 688.132 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 438.07 null ] >> endobj 1038 0 obj -<< /D [ 1029 0 R /XYZ 79.822 677.173 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 427.111 null ] >> endobj 1039 0 obj -<< /D [ 1029 0 R /XYZ 79.822 666.214 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 416.152 null ] >> endobj 1040 0 obj -<< /D [ 1029 0 R /XYZ 79.822 655.255 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 405.193 null ] >> endobj 1041 0 obj -<< /D [ 1029 0 R /XYZ 79.822 644.296 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 394.234 null ] >> endobj 1042 0 obj -<< /D [ 1029 0 R /XYZ 79.822 613.412 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 308.555 null ] >> endobj 1043 0 obj -<< /D [ 1029 0 R /XYZ 79.822 602.453 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 297.596 null ] >> endobj 1044 0 obj -<< /D [ 1029 0 R /XYZ 79.822 591.494 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 259.738 null ] >> endobj 1045 0 obj -<< /D [ 1029 0 R /XYZ 79.822 580.535 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 248.78 null ] >> endobj 1046 0 obj -<< /D [ 1029 0 R /XYZ 79.822 569.577 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 210.921 null ] >> endobj 1047 0 obj -<< /D [ 1029 0 R /XYZ 79.822 558.618 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 173.063 null ] >> endobj 1048 0 obj -<< /D [ 1029 0 R /XYZ 79.822 547.659 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 162.105 null ] >> endobj 1049 0 obj -<< /D [ 1029 0 R /XYZ 79.822 536.7 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 148.157 null ] >> endobj 1050 0 obj -<< /D [ 1029 0 R /XYZ 79.822 525.741 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 137.198 null ] >> endobj 1051 0 obj -<< /D [ 1029 0 R /XYZ 79.822 514.782 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 126.239 null ] >> endobj 1052 0 obj -<< /D [ 1029 0 R /XYZ 79.822 503.823 null ] >> +<< /D [ 1009 0 R /XYZ 79.822 86.388 null ] >> endobj -1053 0 obj -<< /D [ 1029 0 R /XYZ 79.822 492.864 null ] >> +1008 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1054 0 obj -<< /D [ 1029 0 R /XYZ 79.822 481.905 null ] >> +1056 0 obj +<< /Filter /FlateDecode /Length 3296 >> +stream +x\ˎ;WHh4:lgV۫rɝ.:T$EQ! +/q_o_o_NHE\f_ss8?w.yc0LXT;I9Ή- +("g^,H2L=7!1y+B)f$A?gGOõ5A#qAĔC/283^/ǘ:+#g.Dx"~"4>6來k(RXG2%da- +4wOdHSډK8^tbB$-:@Ź%xǯ!]
.@5+5.QQl~0ݵY1 )&{h]4 +w]S̑!
{Kjh8>GHrAV~hR+
&&]iVfզUhu%@R-
mC5>CDFM
Oi'm<̃D[>~RP2p]nuPV*1c+~*`0)-d4Ym)PW5?j=m<"m'̰bZK;s'qњ)&=T~AS 妊FQn/җ[o_YpӖ{K5RIpI٩gJ{6Ho6bj)fRSHZ'5L@cUGJ) +ڡu<Nv<j:o!jmzC՛^`\M+Dk8KƝRlpd!a@v݂aWL9%haM](L +Mn4wh^ZP(xǬf|*ۿLhp+FH}:ԥSx]Ct%y4ƋBKvU-gyJE:kw.aqC`Z3!bKIscjt+XBxBmܺB/$[*O. i+&7Q1Ĺvy&NF3 }o +9z>?9v:$ bdzʡ(uEuoJnS̨ފiQE1g>41j{aR;]Yi˂dz[ +ؗP=
}yz4PW!k(\a+>Dm$i~t!3' +MUsՂ!.QIɉZ̊W;QК +cT;h
T7PGxCIǜl$ވ1'GaaaNV +!똚nޣyM +gd3$l;Oq&H)Nm7B*>S#lX!Hn)^/*LV h/7zAWI[27<9@IWb[$7 +U8:,pic:ѿ,ibL*a fURu|ɢLJ,ct4NH3wݨL=섅TZ3*6'i*cgK4f֦;,S"k^?9[cَ<ӪcU\nV]|r'^ѷ|pY+xL\lr@bSTVڌժU`nd A
VT2D/Bx?:~m]l5涙=0γ=5J +endstream endobj 1055 0 obj -<< /D [ 1029 0 R /XYZ 79.822 470.946 null ] >> -endobj -1056 0 obj -<< /D [ 1029 0 R /XYZ 79.822 459.987 null ] >> +<< /Type /Page /Contents 1056 0 R /Resources 1054 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj 1057 0 obj -<< /D [ 1029 0 R /XYZ 79.822 449.029 null ] >> +<< /D [ 1055 0 R /XYZ 78.37 808.885 null ] >> endobj 1058 0 obj -<< /D [ 1029 0 R /XYZ 79.822 416.152 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 768.829 null ] >> endobj 1059 0 obj -<< /D [ 1029 0 R /XYZ 79.822 405.193 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 757.87 null ] >> endobj 1060 0 obj -<< /D [ 1029 0 R /XYZ 79.822 394.234 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 696.139 null ] >> endobj 1061 0 obj -<< /D [ 1029 0 R /XYZ 79.822 383.275 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 685.18 null ] >> endobj 1062 0 obj -<< /D [ 1029 0 R /XYZ 79.822 372.316 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 674.222 null ] >> endobj 1063 0 obj -<< /D [ 1029 0 R /XYZ 79.822 361.357 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 663.263 null ] >> endobj 1064 0 obj -<< /D [ 1029 0 R /XYZ 79.822 350.398 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 652.304 null ] >> endobj 1065 0 obj -<< /D [ 1029 0 R /XYZ 79.822 339.44 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 641.345 null ] >> endobj 1066 0 obj -<< /D [ 1029 0 R /XYZ 79.822 328.481 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 603.494 null ] >> endobj 1067 0 obj -<< /D [ 1029 0 R /XYZ 79.822 317.522 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 592.535 null ] >> endobj 1068 0 obj -<< /D [ 1029 0 R /XYZ 79.822 306.563 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 581.576 null ] >> endobj 1069 0 obj -<< /D [ 1029 0 R /XYZ 79.822 295.604 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 543.726 null ] >> endobj 1070 0 obj -<< /D [ 1029 0 R /XYZ 79.822 284.645 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 532.767 null ] >> endobj 1071 0 obj -<< /D [ 1029 0 R /XYZ 79.822 273.686 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 521.808 null ] >> endobj 1072 0 obj -<< /D [ 1029 0 R /XYZ 79.822 262.727 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 510.849 null ] >> endobj 1073 0 obj -<< /D [ 1029 0 R /XYZ 79.822 251.768 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 499.89 null ] >> endobj 1074 0 obj -<< /D [ 1029 0 R /XYZ 79.822 240.809 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 488.931 null ] >> endobj 1075 0 obj -<< /D [ 1029 0 R /XYZ 79.822 229.851 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 477.972 null ] >> endobj 1076 0 obj -<< /D [ 1029 0 R /XYZ 79.822 218.892 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 467.014 null ] >> endobj 1077 0 obj -<< /D [ 1029 0 R /XYZ 79.822 207.933 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 456.055 null ] >> endobj 1078 0 obj -<< /D [ 1029 0 R /XYZ 79.822 196.974 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 445.096 null ] >> endobj 1079 0 obj -<< /D [ 1029 0 R /XYZ 79.822 186.015 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 434.137 null ] >> endobj 1080 0 obj -<< /D [ 1029 0 R /XYZ 79.822 175.056 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 312.69 null ] >> endobj 1081 0 obj -<< /D [ 1029 0 R /XYZ 79.822 164.097 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 301.731 null ] >> endobj 1082 0 obj -<< /D [ 1029 0 R /XYZ 79.822 153.138 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 290.772 null ] >> endobj 1083 0 obj -<< /D [ 1029 0 R /XYZ 79.822 142.179 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 247.955 null ] >> endobj -1028 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -1086 0 obj -<< /Filter /FlateDecode /Length 1621 >> -stream -x[r8+#uZRTBnլj;m%q }::3;q8D?6`;/?qh=#k?1N|J:Ư=x:+~˶?).1X¥)7x -Wl8Ba
<4"eHUey`o^<p+YhxEW,(^27y՝|kCr|1>XF\xrc,VS'[LsyD߆38A6t\pqKgZMCYqY -c$* 풢(AwG -oU gKGgձ;^ɼ疻Q 9j,?suPnϪq qPS~#$"]A̍,,N#QO'nɒU&1x5_AZ@-JctaNڤܼ-JVg|_mv^Iɋe.st)k*sSMomofU -
x+XE犔O#IERZʬeDzێ&͔ ]e -ZB -ԷT
Fq:*xm%f;vc-7h"ѵVb
Y۠9b;Vy\ץyfhm~%n)AU䁖\UVZf9U$+Ļ3oΠ7C}?cAgрR"AUR^ȳ[&m^נ\}3J -endstream +1084 0 obj +<< /D [ 1055 0 R /XYZ 79.822 195.168 null ] >> endobj 1085 0 obj -<< /Type /Page /Contents 1086 0 R /Resources 1084 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1055 0 R /XYZ 79.822 142.381 null ] >> +endobj +1086 0 obj +<< /D [ 1055 0 R /XYZ 79.822 89.593 null ] >> endobj 1087 0 obj -<< /D [ 1085 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1055 0 R /XYZ 79.822 78.635 null ] >> endobj -225 0 obj -<< /D [ 1085 0 R /XYZ 79.37 771.024 null ] >> +1054 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1088 0 obj -<< /D [ 1085 0 R /XYZ 79.822 745.834 null ] >> +1090 0 obj +<< /Filter /FlateDecode /Length 1897 >> +stream +xZr(+ +p=ud4mzF#U$HJ?y$MGߟO
#W.o?x8TB{"RO`~{s" j߂(mHQHi|DJ^w<*"CiXV +%jᘩƊh
EdPFS3p:f5(PBb$xl1a` +^h5嘩X6C9`9-(5.`>i/'?|=Ks 3+-3\&@ +vޭ.P/jŭsrdq +-m`ae1mFt*=X1+ +:ZxMV +q5})776oao6|P\)H|Uga5=dqm'
mu[m6usrF8za~_
ؤ䐫j[YGQ2"lu*<9[`gU_WdqڹOw辸Ӆ\Ap,I*ɺqn\Syƻu%׃[('\8& +.<W):ąp +y/ +ܚc<A9s@8JNd^ؕYy֬~~Xufw}FݍoS9K# +k(GFedde!}#('0F hjQ
RA9aqfo0@8iI {-w)%a ,#(K`M_^T4Q2q2])JDTs +?~([@B.j1"`?X+=\mR>O!,| {Ю|)g +K9;*g=cRΓw>xr9JG1k;"<G*H
p8" 6²<%APQ8t4+f{6cd8,zϭ2 o ?ڼalme;U{;Ns{?aǰAd3cji#hbi|XM6w=M勣57h\|2_a{Wad!V2|Fty_?5u<Ԩ&( +-憽.~+*jcٶӃl%˿qSmkֶFj}eZG/q]gbdL]Ex{{O +endstream endobj 1089 0 obj -<< /D [ 1085 0 R /XYZ 79.822 734.875 null ] >> -endobj -1090 0 obj -<< /D [ 1085 0 R /XYZ 79.822 723.916 null ] >> +<< /Type /Page /Contents 1090 0 R /Resources 1088 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj 1091 0 obj -<< /D [ 1085 0 R /XYZ 79.822 712.957 null ] >> +<< /D [ 1089 0 R /XYZ 78.37 808.885 null ] >> endobj 1092 0 obj -<< /D [ 1085 0 R /XYZ 79.822 701.998 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 768.829 null ] >> endobj 1093 0 obj -<< /D [ 1085 0 R /XYZ 79.822 691.039 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 757.87 null ] >> endobj 1094 0 obj -<< /D [ 1085 0 R /XYZ 79.822 680.08 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 746.912 null ] >> endobj 1095 0 obj -<< /D [ 1085 0 R /XYZ 79.822 669.121 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 735.953 null ] >> endobj 1096 0 obj -<< /D [ 1085 0 R /XYZ 79.822 658.162 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 724.994 null ] >> endobj 1097 0 obj -<< /D [ 1085 0 R /XYZ 79.822 631.412 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 714.035 null ] >> endobj 1098 0 obj -<< /D [ 1085 0 R /XYZ 79.822 620.453 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 703.076 null ] >> endobj 1099 0 obj -<< /D [ 1085 0 R /XYZ 79.822 609.494 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 692.117 null ] >> endobj 1100 0 obj -<< /D [ 1085 0 R /XYZ 79.822 598.536 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 681.158 null ] >> endobj 1101 0 obj -<< /D [ 1085 0 R /XYZ 79.822 587.577 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 670.199 null ] >> endobj 1102 0 obj -<< /D [ 1085 0 R /XYZ 79.822 576.618 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 654.259 null ] >> endobj 1103 0 obj -<< /D [ 1085 0 R /XYZ 79.822 565.659 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 638.319 null ] >> endobj 1104 0 obj -<< /D [ 1085 0 R /XYZ 79.822 554.7 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 593.487 null ] >> endobj 1105 0 obj -<< /D [ 1085 0 R /XYZ 79.822 543.741 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 582.528 null ] >> endobj 1106 0 obj -<< /D [ 1085 0 R /XYZ 79.822 532.782 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 571.569 null ] >> endobj 1107 0 obj -<< /D [ 1085 0 R /XYZ 79.822 506.032 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 560.61 null ] >> endobj 1108 0 obj -<< /D [ 1085 0 R /XYZ 79.822 495.073 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 549.651 null ] >> endobj 1109 0 obj -<< /D [ 1085 0 R /XYZ 79.822 484.114 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 538.692 null ] >> endobj 1110 0 obj -<< /D [ 1085 0 R /XYZ 79.822 473.155 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 527.733 null ] >> endobj 1111 0 obj -<< /D [ 1085 0 R /XYZ 79.822 462.196 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 516.775 null ] >> endobj 1112 0 obj -<< /D [ 1085 0 R /XYZ 79.822 451.237 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 505.816 null ] >> endobj 1113 0 obj -<< /D [ 1085 0 R /XYZ 79.822 440.278 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 494.857 null ] >> endobj 1114 0 obj -<< /D [ 1085 0 R /XYZ 79.822 429.32 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 483.898 null ] >> endobj 1115 0 obj -<< /D [ 1085 0 R /XYZ 79.822 418.361 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 472.939 null ] >> endobj 1116 0 obj -<< /D [ 1085 0 R /XYZ 79.822 407.402 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 461.98 null ] >> endobj 1117 0 obj -<< /D [ 1085 0 R /XYZ 79.822 396.443 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 451.021 null ] >> endobj 1118 0 obj -<< /D [ 1085 0 R /XYZ 79.822 385.484 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 440.062 null ] >> endobj 1119 0 obj -<< /D [ 1085 0 R /XYZ 79.822 374.525 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 429.103 null ] >> endobj 1120 0 obj -<< /D [ 1085 0 R /XYZ 79.822 363.566 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 418.144 null ] >> endobj 1121 0 obj -<< /D [ 1085 0 R /XYZ 79.822 352.607 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 407.186 null ] >> endobj 1122 0 obj -<< /D [ 1085 0 R /XYZ 79.822 341.648 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 396.227 null ] >> endobj 1123 0 obj -<< /D [ 1085 0 R /XYZ 79.822 330.689 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 385.268 null ] >> endobj 1124 0 obj -<< /D [ 1085 0 R /XYZ 79.822 319.73 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 374.309 null ] >> endobj 1125 0 obj -<< /D [ 1085 0 R /XYZ 79.822 308.772 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 363.35 null ] >> endobj 1126 0 obj -<< /D [ 1085 0 R /XYZ 79.822 297.813 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 352.391 null ] >> endobj 1127 0 obj -<< /D [ 1085 0 R /XYZ 79.822 286.854 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 341.432 null ] >> endobj 1128 0 obj -<< /D [ 1085 0 R /XYZ 79.822 275.895 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 330.473 null ] >> endobj 1129 0 obj -<< /D [ 1085 0 R /XYZ 79.822 264.936 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 319.514 null ] >> +endobj +229 0 obj +<< /D [ 1089 0 R /XYZ 79.37 280.11 null ] >> endobj 1130 0 obj -<< /D [ 1085 0 R /XYZ 79.822 253.977 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 253.29 null ] >> endobj 1131 0 obj -<< /D [ 1085 0 R /XYZ 79.822 243.018 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 242.331 null ] >> endobj 1132 0 obj -<< /D [ 1085 0 R /XYZ 79.822 232.059 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 231.372 null ] >> endobj 1133 0 obj -<< /D [ 1085 0 R /XYZ 79.822 221.1 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 220.413 null ] >> endobj 1134 0 obj -<< /D [ 1085 0 R /XYZ 79.822 210.141 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 209.455 null ] >> endobj 1135 0 obj -<< /D [ 1085 0 R /XYZ 79.822 199.183 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 198.496 null ] >> endobj 1136 0 obj -<< /D [ 1085 0 R /XYZ 79.822 188.224 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 187.537 null ] >> endobj 1137 0 obj -<< /D [ 1085 0 R /XYZ 79.822 177.265 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 176.578 null ] >> endobj 1138 0 obj -<< /D [ 1085 0 R /XYZ 79.822 166.306 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 165.619 null ] >> endobj 1139 0 obj -<< /D [ 1085 0 R /XYZ 79.822 155.347 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 154.66 null ] >> endobj 1140 0 obj -<< /D [ 1085 0 R /XYZ 79.822 144.388 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 143.701 null ] >> endobj 1141 0 obj -<< /D [ 1085 0 R /XYZ 79.822 133.429 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 132.742 null ] >> endobj 1142 0 obj -<< /D [ 1085 0 R /XYZ 79.822 122.47 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 104.847 null ] >> endobj 1143 0 obj -<< /D [ 1085 0 R /XYZ 79.822 111.511 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 93.888 null ] >> endobj 1144 0 obj -<< /D [ 1085 0 R /XYZ 79.822 100.552 null ] >> -endobj -1145 0 obj -<< /D [ 1085 0 R /XYZ 79.822 89.593 null ] >> -endobj -1146 0 obj -<< /D [ 1085 0 R /XYZ 79.822 78.635 null ] >> +<< /D [ 1089 0 R /XYZ 79.822 82.929 null ] >> endobj -1084 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F59 346 0 R /F84 425 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> +1088 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1149 0 obj -<< /Filter /FlateDecode /Length 2057 >> +1147 0 obj +<< /Filter /FlateDecode /Length 1782 >> stream -x[r#)+@pȶ&bϾmu]PFv4٭GgSIд<sORx|:~<}?;pIɃ:8#%%$ǿ?D/%寏?d~r'Bׂ(48(. c_XCxc=+? [ -&sy.JG6p6J#\= -7GWlp16Ff"p -KSƳ4% -rJ>J k,GĞڃI`574چ2\/,9Sū$ګ]A;jZ@ I -]jiF]!NMGIc̹cXXD!:ڎ-&BNԞa`1HAG,_dQ
azzJĔW^|1j`ǔb0U9*~-qڣԤ3SSI㘚}<MOomA9w/C9zmΥ\MVs,YJ{rx3Pwt9{[vICXhUoS\KO[ I3
MꍦN$e -Rt{Fg 9wQLґzΙoZHr|wjKڍ -Q4],!<kD*d:_;֤Znlrf-L/2hS+5Η֚9X=r\y CL<C3:#9-]Z+C}]Ն -_|r?WW̭v5w~.n]+]h
9ɹZ7<"HԐs|GPM\0xA Tkbv9e(zn_>6w"76-/N~ZHm8͓n|f;LB)7zC+i]"crCvB -Zm֫nXVݕsIe'lQ<mRCܗP&nAXa7{a+N Cu\sAj2/R*vmQ{=p~ -GCEK=H~\7Sn&T|Xa&:h)76d|x^oZ +x[n8+]MV7
9\gN&%^HIA"Oc-O%Jmۨͯ&ſw&lׄtHm@o6jPVo^쏴=׃ʘw7 Z[pIq*i͠WSJLܷsK75|<.p =fr9GQJj(Q#P2[SqFÚwdhPTy;a[/ywe9ꮠhZ?F@9HZzq|5Jqd#eŦXNliZVYﵷS=7=U_;@4
<Fr%JrqHF%7͙@cʺ֤X?$R[4s:ВWpnrn~[9 FrA7l +&yIܠN(WQ0::H:@yOMq(}jC㗽Y[)Oe!M:^8}` vSccMn-5WM9g0(Pzw"hk(%PY=f +S[Z7`/#ԏ@y@sZ9wv?aA35Ӄ_ժP?Q'tyVdV,nl??n;"r'i)=}ˍ +LѢDF|6)lG o4b{~,J.[gxy>4F4|=l0c^?D?]k+[+SO}j#bxc7 8rj~g endstream endobj +1146 0 obj +<< /Type /Page /Contents 1147 0 R /Resources 1145 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> +endobj 1148 0 obj -<< /Type /Page /Contents 1149 0 R /Resources 1147 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1146 0 R /XYZ 78.37 808.885 null ] >> +endobj +1149 0 obj +<< /D [ 1146 0 R /XYZ 79.822 768.829 null ] >> endobj 1150 0 obj -<< /D [ 1148 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 757.87 null ] >> endobj 1151 0 obj -<< /D [ 1148 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 746.912 null ] >> endobj 1152 0 obj -<< /D [ 1148 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 735.953 null ] >> endobj 1153 0 obj -<< /D [ 1148 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 724.994 null ] >> endobj 1154 0 obj -<< /D [ 1148 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 714.035 null ] >> endobj 1155 0 obj -<< /D [ 1148 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 703.076 null ] >> endobj 1156 0 obj -<< /D [ 1148 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 676.783 null ] >> endobj 1157 0 obj -<< /D [ 1148 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 665.824 null ] >> endobj 1158 0 obj -<< /D [ 1148 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 654.865 null ] >> endobj 1159 0 obj -<< /D [ 1148 0 R /XYZ 79.822 681.158 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 643.906 null ] >> endobj 1160 0 obj -<< /D [ 1148 0 R /XYZ 79.822 670.199 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 632.947 null ] >> endobj 1161 0 obj -<< /D [ 1148 0 R /XYZ 79.822 659.24 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 621.988 null ] >> endobj 1162 0 obj -<< /D [ 1148 0 R /XYZ 79.822 648.281 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 611.03 null ] >> endobj 1163 0 obj -<< /D [ 1148 0 R /XYZ 79.822 637.322 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 600.071 null ] >> endobj 1164 0 obj -<< /D [ 1148 0 R /XYZ 79.822 626.364 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 589.112 null ] >> endobj 1165 0 obj -<< /D [ 1148 0 R /XYZ 79.822 615.405 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 578.153 null ] >> endobj 1166 0 obj -<< /D [ 1148 0 R /XYZ 79.822 604.446 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 567.194 null ] >> endobj 1167 0 obj -<< /D [ 1148 0 R /XYZ 79.822 553.16 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 556.235 null ] >> endobj 1168 0 obj -<< /D [ 1148 0 R /XYZ 79.822 542.201 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 545.276 null ] >> endobj 1169 0 obj -<< /D [ 1148 0 R /XYZ 79.822 514.479 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 534.317 null ] >> endobj 1170 0 obj -<< /D [ 1148 0 R /XYZ 79.822 503.52 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 523.358 null ] >> endobj 1171 0 obj -<< /D [ 1148 0 R /XYZ 79.822 492.561 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 512.399 null ] >> endobj 1172 0 obj -<< /D [ 1148 0 R /XYZ 79.822 481.602 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 501.441 null ] >> endobj 1173 0 obj -<< /D [ 1148 0 R /XYZ 79.822 455.786 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 490.482 null ] >> endobj 1174 0 obj -<< /D [ 1148 0 R /XYZ 79.822 444.827 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 479.523 null ] >> endobj 1175 0 obj -<< /D [ 1148 0 R /XYZ 79.822 433.868 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 468.564 null ] >> endobj 1176 0 obj -<< /D [ 1148 0 R /XYZ 79.822 422.909 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 457.605 null ] >> endobj 1177 0 obj -<< /D [ 1148 0 R /XYZ 79.822 411.95 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 446.646 null ] >> endobj 1178 0 obj -<< /D [ 1148 0 R /XYZ 79.822 400.991 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 435.687 null ] >> endobj 1179 0 obj -<< /D [ 1148 0 R /XYZ 79.822 390.032 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 424.728 null ] >> endobj 1180 0 obj -<< /D [ 1148 0 R /XYZ 79.822 379.073 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 413.769 null ] >> endobj 1181 0 obj -<< /D [ 1148 0 R /XYZ 79.822 368.114 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 402.81 null ] >> endobj 1182 0 obj -<< /D [ 1148 0 R /XYZ 79.822 357.155 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 391.852 null ] >> endobj 1183 0 obj -<< /D [ 1148 0 R /XYZ 79.822 346.197 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 380.893 null ] >> endobj 1184 0 obj -<< /D [ 1148 0 R /XYZ 79.822 335.238 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 369.934 null ] >> endobj 1185 0 obj -<< /D [ 1148 0 R /XYZ 79.822 324.279 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 358.975 null ] >> endobj 1186 0 obj -<< /D [ 1148 0 R /XYZ 79.822 313.32 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 348.016 null ] >> endobj 1187 0 obj -<< /D [ 1148 0 R /XYZ 79.822 302.361 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 337.057 null ] >> endobj 1188 0 obj -<< /D [ 1148 0 R /XYZ 79.822 291.402 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 326.098 null ] >> endobj 1189 0 obj -<< /D [ 1148 0 R /XYZ 79.822 280.443 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 315.139 null ] >> endobj 1190 0 obj -<< /D [ 1148 0 R /XYZ 79.822 269.484 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 304.18 null ] >> endobj 1191 0 obj -<< /D [ 1148 0 R /XYZ 79.822 258.525 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 293.221 null ] >> endobj 1192 0 obj -<< /D [ 1148 0 R /XYZ 79.822 247.566 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 282.262 null ] >> endobj 1193 0 obj -<< /D [ 1148 0 R /XYZ 79.822 236.608 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 271.304 null ] >> endobj 1194 0 obj -<< /D [ 1148 0 R /XYZ 79.822 225.649 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 260.345 null ] >> endobj 1195 0 obj -<< /D [ 1148 0 R /XYZ 79.822 214.69 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 249.386 null ] >> endobj 1196 0 obj -<< /D [ 1148 0 R /XYZ 79.822 203.731 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 238.427 null ] >> endobj 1197 0 obj -<< /D [ 1148 0 R /XYZ 79.822 192.772 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 227.468 null ] >> endobj 1198 0 obj -<< /D [ 1148 0 R /XYZ 79.822 181.813 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 216.509 null ] >> endobj 1199 0 obj -<< /D [ 1148 0 R /XYZ 79.822 170.854 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 205.55 null ] >> endobj 1200 0 obj -<< /D [ 1148 0 R /XYZ 79.822 133.429 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 194.591 null ] >> endobj 1201 0 obj -<< /D [ 1148 0 R /XYZ 79.822 122.47 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 183.632 null ] >> endobj 1202 0 obj -<< /D [ 1148 0 R /XYZ 79.822 111.511 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 172.673 null ] >> endobj 1203 0 obj -<< /D [ 1148 0 R /XYZ 79.822 100.552 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 161.715 null ] >> endobj 1204 0 obj -<< /D [ 1148 0 R /XYZ 79.822 89.593 null ] >> +<< /D [ 1146 0 R /XYZ 79.822 150.756 null ] >> endobj 1205 0 obj -<< /D [ 1148 0 R /XYZ 79.822 78.635 null ] >> -endobj -1147 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F81 377 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1146 0 R /XYZ 79.822 139.797 null ] >> endobj -1208 0 obj -<< /Filter /FlateDecode /Length 2073 >> -stream -x[r6+ӃnUSFVr-kr_ -$,P@B*e>eF?syI7O'TAk=oNM=;LJr
-J!ϓ"Q)sʼOL/-=!>-Qo<@(m -H[aI^'&,>C_ZǢM<5zgyXd"ÒOK՚ui'lA'KIokK%Q+QH[$R4IgC*5pˉ>,TJ˙qYD >teQ\}u7#M\cy~(F2y;8lz$`%\SEVJ\&EKGR}7q|I-m!HP;A%>'j\AcU7ݫ_tIē]{!IsjH]+(ɥ.5?DEĤY$dYf&<[ϧfwj'Xw|PeyhQ.-+jkbi3P9O{;CG79f#xWg98lA>v% -JEQb̹5_!vk<Xqk8umӲ -kQS\t@;3c(NJgVå -`:?sc`YeUq?n<errc()eY:yJw;".NʯYg)pe]Jpq}dRҵ8*'U[*W9n5.tnO~4La.-,B\ -9p
K^ŷnZr}6#qcĴ(|Um]mKEBEV=/;{1^!TcS,2m3[~9e_@z|.t- -9-ʚo;7>mRbOe2͖3bA
-ePxfRTWpl]`lCY;h"vv{+ϵDPDC٦Yk{$ȎGPxТӱyC)ӲT>k!G~@+ݩj䞒h{~="w<Q8"=79'ZlPwҖ[l_z]-yogI0U6˿Fȯ -endstream +1206 0 obj +<< /D [ 1146 0 R /XYZ 79.822 128.838 null ] >> endobj 1207 0 obj -<< /Type /Page /Contents 1208 0 R /Resources 1206 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1146 0 R /XYZ 79.822 78.635 null ] >> endobj -1209 0 obj -<< /D [ 1207 0 R /XYZ 78.37 808.885 null ] >> +1145 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1210 0 obj -<< /D [ 1207 0 R /XYZ 79.822 768.829 null ] >> +<< /Filter /FlateDecode /Length 2147 >> +stream +x[r8+a +%k۾f(#0 ȀR1ۄs{昏p̆l8猑^5耮]xBKҝ +aEi@PqSSSӧt ݩ'^Fh<MƻSb{'4?g>?# <&'<#K|+l2嚩?+8bL"p.g_# +qk s6 +R]bB1Z]4aۙվW6o})Cr:ߨXyjYШ9{'2Z(5c0r-8MЬ\ljN_dG>(AkQCPPzW-J;Jr}ڨsk=Dr}M'ՁY_i}7<:L-2".6)I|x,2R1o њ{vYhb'Q]HDq5kR3sϗ_} lrH!}`pxF^獼;^цlJ9eco'ZpS +ekt}V+~[Ɩ-lĹE.NePaԀ\N#LBCGgMXk@tpjQ` *[\w0^H®_oCPna5O_"ӜjJ2nB*Zd36(;y,"+^"Ke^e,s"\ +Vt0 ?UlRsNm{iTJNL.KB0q]awK":/HSձ䎡|OrBN7UXv&=6B[9I|02\|'N]iZSL[KՕmI^*WZaPX٥E %CPRuH%C0XPZ\xٍt"-Ut--J7[.m|K8̓&CIh㋯2
fwqg^8;>3u||X;8!&"jz9u}6V//R^}: RZ>4*C)J:OxP1TBf?%LoF(*cE@uԕgUFs`qXZ0\g%Ϲ"B*8Z6 J/[yJXf12]ecˮ<2S.^>eY}T8MHK[)@U +bϩZs֯j1cCvJL2NkތIk*9^IowCKSced_HuGC@4IeEYe#آ4-''O u~8N(m!mocFܢ\QAm5.ጋp7fs *eYJ\ +RT277A+^A»T j*3~H4oV)37 +\3ejtTg&/1M3C6LӄZ2+J%DzݞTA<[_QZߙ̔^IL0:,քN}
f28Y_4mm].K-e/eiv7~11a=C|]}7 +oI> +endstream +endobj +1209 0 obj +<< /Type /Page /Contents 1210 0 R /Resources 1208 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj 1211 0 obj -<< /D [ 1207 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1209 0 R /XYZ 78.37 808.885 null ] >> endobj 1212 0 obj -<< /D [ 1207 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 768.829 null ] >> endobj 1213 0 obj -<< /D [ 1207 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 757.87 null ] >> endobj 1214 0 obj -<< /D [ 1207 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 746.912 null ] >> endobj 1215 0 obj -<< /D [ 1207 0 R /XYZ 79.822 687.136 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 719.016 null ] >> endobj 1216 0 obj -<< /D [ 1207 0 R /XYZ 79.822 676.177 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 708.057 null ] >> endobj 1217 0 obj -<< /D [ 1207 0 R /XYZ 79.822 665.218 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 697.098 null ] >> endobj 1218 0 obj -<< /D [ 1207 0 R /XYZ 79.822 654.259 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 686.139 null ] >> endobj 1219 0 obj -<< /D [ 1207 0 R /XYZ 79.822 643.3 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 675.181 null ] >> endobj 1220 0 obj -<< /D [ 1207 0 R /XYZ 79.822 632.341 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 664.222 null ] >> endobj 1221 0 obj -<< /D [ 1207 0 R /XYZ 79.822 621.382 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 653.263 null ] >> endobj 1222 0 obj -<< /D [ 1207 0 R /XYZ 79.822 610.423 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 642.304 null ] >> endobj 1223 0 obj -<< /D [ 1207 0 R /XYZ 79.822 599.464 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 631.345 null ] >> endobj 1224 0 obj -<< /D [ 1207 0 R /XYZ 79.822 588.506 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 620.386 null ] >> endobj 1225 0 obj -<< /D [ 1207 0 R /XYZ 79.822 577.547 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 609.427 null ] >> endobj 1226 0 obj -<< /D [ 1207 0 R /XYZ 79.822 566.588 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 598.468 null ] >> endobj 1227 0 obj -<< /D [ 1207 0 R /XYZ 79.822 555.629 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 572.565 null ] >> endobj 1228 0 obj -<< /D [ 1207 0 R /XYZ 79.822 544.67 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 561.606 null ] >> endobj 1229 0 obj -<< /D [ 1207 0 R /XYZ 79.822 533.711 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 550.648 null ] >> endobj 1230 0 obj -<< /D [ 1207 0 R /XYZ 79.822 522.752 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 539.689 null ] >> endobj 1231 0 obj -<< /D [ 1207 0 R /XYZ 79.822 511.793 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 528.73 null ] >> endobj 1232 0 obj -<< /D [ 1207 0 R /XYZ 79.822 500.834 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 517.771 null ] >> endobj 1233 0 obj -<< /D [ 1207 0 R /XYZ 79.822 489.875 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 506.812 null ] >> endobj 1234 0 obj -<< /D [ 1207 0 R /XYZ 79.822 478.917 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 495.853 null ] >> endobj 1235 0 obj -<< /D [ 1207 0 R /XYZ 79.822 467.958 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 484.894 null ] >> endobj 1236 0 obj -<< /D [ 1207 0 R /XYZ 79.822 456.999 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 473.935 null ] >> endobj 1237 0 obj -<< /D [ 1207 0 R /XYZ 79.822 446.04 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 462.976 null ] >> endobj 1238 0 obj -<< /D [ 1207 0 R /XYZ 79.822 435.081 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 452.017 null ] >> endobj 1239 0 obj -<< /D [ 1207 0 R /XYZ 79.822 424.122 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 441.058 null ] >> endobj 1240 0 obj -<< /D [ 1207 0 R /XYZ 79.822 413.163 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 430.1 null ] >> endobj 1241 0 obj -<< /D [ 1207 0 R /XYZ 79.822 402.204 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 419.141 null ] >> endobj 1242 0 obj -<< /D [ 1207 0 R /XYZ 79.822 391.245 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 408.182 null ] >> endobj 1243 0 obj -<< /D [ 1207 0 R /XYZ 79.822 380.286 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 397.223 null ] >> endobj 1244 0 obj -<< /D [ 1207 0 R /XYZ 79.822 369.327 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 386.264 null ] >> endobj 1245 0 obj -<< /D [ 1207 0 R /XYZ 79.822 358.369 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 375.305 null ] >> endobj 1246 0 obj -<< /D [ 1207 0 R /XYZ 79.822 347.41 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 364.346 null ] >> endobj 1247 0 obj -<< /D [ 1207 0 R /XYZ 79.822 336.451 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 353.387 null ] >> endobj 1248 0 obj -<< /D [ 1207 0 R /XYZ 79.822 325.492 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 342.428 null ] >> endobj 1249 0 obj -<< /D [ 1207 0 R /XYZ 79.822 314.533 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 331.469 null ] >> endobj 1250 0 obj -<< /D [ 1207 0 R /XYZ 79.822 303.574 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 320.511 null ] >> endobj 1251 0 obj -<< /D [ 1207 0 R /XYZ 79.822 292.615 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 309.552 null ] >> endobj 1252 0 obj -<< /D [ 1207 0 R /XYZ 79.822 281.656 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 298.593 null ] >> endobj 1253 0 obj -<< /D [ 1207 0 R /XYZ 79.822 270.697 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 287.634 null ] >> endobj 1254 0 obj -<< /D [ 1207 0 R /XYZ 79.822 259.738 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 249.776 null ] >> endobj 1255 0 obj -<< /D [ 1207 0 R /XYZ 79.822 248.78 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 238.817 null ] >> endobj 1256 0 obj -<< /D [ 1207 0 R /XYZ 79.822 237.821 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 227.858 null ] >> endobj 1257 0 obj -<< /D [ 1207 0 R /XYZ 79.822 226.862 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 216.899 null ] >> endobj 1258 0 obj -<< /D [ 1207 0 R /XYZ 79.822 215.903 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 205.94 null ] >> endobj 1259 0 obj -<< /D [ 1207 0 R /XYZ 79.822 204.944 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 194.981 null ] >> endobj 1260 0 obj -<< /D [ 1207 0 R /XYZ 79.822 193.985 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 184.022 null ] >> endobj 1261 0 obj -<< /D [ 1207 0 R /XYZ 79.822 183.026 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 173.063 null ] >> endobj 1262 0 obj -<< /D [ 1207 0 R /XYZ 79.822 172.067 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 162.105 null ] >> endobj 1263 0 obj -<< /D [ 1207 0 R /XYZ 79.822 161.108 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 151.146 null ] >> endobj 1264 0 obj -<< /D [ 1207 0 R /XYZ 79.822 150.149 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 140.187 null ] >> endobj 1265 0 obj -<< /D [ 1207 0 R /XYZ 79.822 139.19 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 102.329 null ] >> endobj 1266 0 obj -<< /D [ 1207 0 R /XYZ 79.822 128.232 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 91.37 null ] >> endobj 1267 0 obj -<< /D [ 1207 0 R /XYZ 79.822 117.273 null ] >> +<< /D [ 1209 0 R /XYZ 79.822 80.411 null ] >> endobj -1268 0 obj -<< /D [ 1207 0 R /XYZ 79.822 106.314 null ] >> -endobj -1269 0 obj -<< /D [ 1207 0 R /XYZ 79.822 95.355 null ] >> +1208 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1270 0 obj -<< /D [ 1207 0 R /XYZ 79.822 84.396 null ] >> -endobj -1206 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -1273 0 obj -<< /Filter /FlateDecode /Length 1834 >> +<< /Filter /FlateDecode /Length 1786 >> stream -x[&W
4PڪxU9-kr_,cmm<{Ќ-KOu
H٩ݏ.J?^]YA}EjwA}wLHQ}*c -zq3Lm
oeQ -?g F -A;)Z-5Q(y5xkKukú8P)\f jhmnـgJ|Q[ 9Mѵ`P[p0lPFu(k;|@Oۥ$漴/whWM
yH`/rit`$![c(f@%yg-^k6p慡֩d+ʀn2Q<WP|,PDp8GݲfEZ,h 9DyKw3uT(ٹ$BvVA\μ[?H ^) +x[Mo8W+Q>Ef{=$Ԍ!I=Ҫ:{P/ +(?^/g1h^tH!`wӇ Ǽ狪`s&,Avw(^)JٓR.Y߇
RB<&(a7BR #
O>c(_C}`y|8X@+d~2ӝOS%3۩c:-27مH5m D4DFQfd Ɇ.⒇Y_Za76?hI@'I2$=h qG!-JU(!dt,4F`6Pw{t]͍G"i&@9@ xM@r\1]f+Y'ɆE<GφM9i +Ǝ #jLG#E
HZ67]*Yh^:kt7%V6%-~sLh-aӺSBP2TV\beuV5%}7_p.ka3*mvک8<D3qo@heG₂)!CjRHit +_N3;H\L`)pÅ.+Fk;.Tiޤ~o;Wk*ЄYČo{1v:Ve?vq&xMZhyѴ=ݭ1umkxkSP t7C9sXMhzo纰Ze(z8ΏέHg3Cfiұ\͓~A5R)qno;鶶iWv[z$Ј^AZjZp5Uu-1Z'0D81kUa%bu50&%60
`asQX-<*DFadQPFŨ̋;rRdܷjEd|ݐR.kI-ʖ&L(0BiK ET +ASF +7U1_i&5.fl4cϸ[58oF%qܦYŽ +pR~ߑvR؍iAVYZ0!?ԝi"Phv+CNf(rL7PSoGVիZ۹&ɈhQ[Hۤ+@-:Ҭ̉[;bI 0Zy,Er]^
JjHBqy|Mh{=9L̍LL]/+d endstream endobj +1269 0 obj +<< /Type /Page /Contents 1270 0 R /Resources 1268 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> +endobj +1271 0 obj +<< /D [ 1269 0 R /XYZ 78.37 808.885 null ] >> +endobj 1272 0 obj -<< /Type /Page /Contents 1273 0 R /Resources 1271 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1269 0 R /XYZ 79.822 768.829 null ] >> +endobj +1273 0 obj +<< /D [ 1269 0 R /XYZ 79.822 757.87 null ] >> endobj 1274 0 obj -<< /D [ 1272 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 746.912 null ] >> endobj 1275 0 obj -<< /D [ 1272 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 735.953 null ] >> endobj 1276 0 obj -<< /D [ 1272 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 724.994 null ] >> endobj 1277 0 obj -<< /D [ 1272 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 714.035 null ] >> endobj 1278 0 obj -<< /D [ 1272 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 703.076 null ] >> endobj 1279 0 obj -<< /D [ 1272 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 692.117 null ] >> endobj 1280 0 obj -<< /D [ 1272 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 681.158 null ] >> endobj 1281 0 obj -<< /D [ 1272 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 670.199 null ] >> endobj 1282 0 obj -<< /D [ 1272 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 659.24 null ] >> endobj 1283 0 obj -<< /D [ 1272 0 R /XYZ 79.822 681.158 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 648.281 null ] >> endobj 1284 0 obj -<< /D [ 1272 0 R /XYZ 79.822 670.199 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 637.322 null ] >> endobj 1285 0 obj -<< /D [ 1272 0 R /XYZ 79.822 659.24 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 626.364 null ] >> endobj 1286 0 obj -<< /D [ 1272 0 R /XYZ 79.822 648.281 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 615.405 null ] >> endobj 1287 0 obj -<< /D [ 1272 0 R /XYZ 79.822 637.322 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 604.446 null ] >> endobj 1288 0 obj -<< /D [ 1272 0 R /XYZ 79.822 626.364 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 593.487 null ] >> endobj 1289 0 obj -<< /D [ 1272 0 R /XYZ 79.822 615.405 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 582.528 null ] >> endobj 1290 0 obj -<< /D [ 1272 0 R /XYZ 79.822 604.446 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 571.569 null ] >> endobj 1291 0 obj -<< /D [ 1272 0 R /XYZ 79.822 593.487 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 560.61 null ] >> endobj 1292 0 obj -<< /D [ 1272 0 R /XYZ 79.822 582.528 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 549.651 null ] >> endobj 1293 0 obj -<< /D [ 1272 0 R /XYZ 79.822 571.569 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 538.692 null ] >> endobj 1294 0 obj -<< /D [ 1272 0 R /XYZ 79.822 560.61 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 527.733 null ] >> endobj 1295 0 obj -<< /D [ 1272 0 R /XYZ 79.822 549.651 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 516.775 null ] >> endobj 1296 0 obj -<< /D [ 1272 0 R /XYZ 79.822 538.692 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 505.816 null ] >> endobj 1297 0 obj -<< /D [ 1272 0 R /XYZ 79.822 527.733 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 494.857 null ] >> endobj 1298 0 obj -<< /D [ 1272 0 R /XYZ 79.822 516.775 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 483.898 null ] >> endobj 1299 0 obj -<< /D [ 1272 0 R /XYZ 79.822 505.816 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 472.939 null ] >> endobj 1300 0 obj -<< /D [ 1272 0 R /XYZ 79.822 494.857 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 461.98 null ] >> endobj 1301 0 obj -<< /D [ 1272 0 R /XYZ 79.822 483.898 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 451.021 null ] >> endobj 1302 0 obj -<< /D [ 1272 0 R /XYZ 79.822 472.939 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 440.062 null ] >> endobj 1303 0 obj -<< /D [ 1272 0 R /XYZ 79.822 461.98 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 429.103 null ] >> endobj 1304 0 obj -<< /D [ 1272 0 R /XYZ 79.822 451.021 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 418.144 null ] >> endobj 1305 0 obj -<< /D [ 1272 0 R /XYZ 79.822 440.062 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 407.186 null ] >> endobj 1306 0 obj -<< /D [ 1272 0 R /XYZ 79.822 429.103 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 396.227 null ] >> endobj 1307 0 obj -<< /D [ 1272 0 R /XYZ 79.822 418.144 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 385.268 null ] >> endobj 1308 0 obj -<< /D [ 1272 0 R /XYZ 79.822 407.186 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 374.309 null ] >> endobj 1309 0 obj -<< /D [ 1272 0 R /XYZ 79.822 396.227 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 363.35 null ] >> endobj 1310 0 obj -<< /D [ 1272 0 R /XYZ 79.822 385.268 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 352.391 null ] >> endobj 1311 0 obj -<< /D [ 1272 0 R /XYZ 79.822 374.309 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 341.432 null ] >> endobj 1312 0 obj -<< /D [ 1272 0 R /XYZ 79.822 363.35 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 330.473 null ] >> endobj 1313 0 obj -<< /D [ 1272 0 R /XYZ 79.822 352.391 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 319.514 null ] >> endobj 1314 0 obj -<< /D [ 1272 0 R /XYZ 79.822 341.432 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 308.555 null ] >> endobj 1315 0 obj -<< /D [ 1272 0 R /XYZ 79.822 330.473 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 297.596 null ] >> endobj 1316 0 obj -<< /D [ 1272 0 R /XYZ 79.822 319.514 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 286.638 null ] >> endobj 1317 0 obj -<< /D [ 1272 0 R /XYZ 79.822 308.555 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 275.679 null ] >> endobj 1318 0 obj -<< /D [ 1272 0 R /XYZ 79.822 297.596 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 264.72 null ] >> endobj 1319 0 obj -<< /D [ 1272 0 R /XYZ 79.822 286.638 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 253.761 null ] >> endobj 1320 0 obj -<< /D [ 1272 0 R /XYZ 79.822 275.679 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 242.802 null ] >> endobj 1321 0 obj -<< /D [ 1272 0 R /XYZ 79.822 264.72 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 231.843 null ] >> endobj 1322 0 obj -<< /D [ 1272 0 R /XYZ 79.822 253.761 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 220.884 null ] >> endobj 1323 0 obj -<< /D [ 1272 0 R /XYZ 79.822 242.802 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 209.925 null ] >> endobj 1324 0 obj -<< /D [ 1272 0 R /XYZ 79.822 231.843 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 198.966 null ] >> endobj 1325 0 obj -<< /D [ 1272 0 R /XYZ 79.822 220.884 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 188.007 null ] >> endobj 1326 0 obj -<< /D [ 1272 0 R /XYZ 79.822 209.925 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 177.049 null ] >> endobj 1327 0 obj -<< /D [ 1272 0 R /XYZ 79.822 198.966 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 166.09 null ] >> endobj 1328 0 obj -<< /D [ 1272 0 R /XYZ 79.822 188.007 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 155.131 null ] >> endobj 1329 0 obj -<< /D [ 1272 0 R /XYZ 79.822 177.049 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 144.172 null ] >> endobj 1330 0 obj -<< /D [ 1272 0 R /XYZ 79.822 166.09 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 133.213 null ] >> endobj 1331 0 obj -<< /D [ 1272 0 R /XYZ 79.822 155.131 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 122.254 null ] >> endobj 1332 0 obj -<< /D [ 1272 0 R /XYZ 79.822 144.172 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 111.295 null ] >> endobj 1333 0 obj -<< /D [ 1272 0 R /XYZ 79.822 133.213 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 100.336 null ] >> endobj 1334 0 obj -<< /D [ 1272 0 R /XYZ 79.822 122.254 null ] >> +<< /D [ 1269 0 R /XYZ 79.822 89.377 null ] >> endobj -1335 0 obj -<< /D [ 1272 0 R /XYZ 79.822 111.295 null ] >> -endobj -1336 0 obj -<< /D [ 1272 0 R /XYZ 79.822 100.336 null ] >> +1268 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1337 0 obj -<< /D [ 1272 0 R /XYZ 79.822 89.377 null ] >> -endobj -1271 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -1340 0 obj -<< /Filter /FlateDecode /Length 2119 >> +<< /Filter /FlateDecode /Length 1847 >> stream -xZn#7+U\ÀeYr-59)M[3A[c<}ߞ0t|v5E -דANҪ??^FJOr)a -d֨QɬKycs.ҵ|i[fMX(' -)/lE*O. uc,ZօD3$JYϘ^)REWnF=}Kؗb%wѬr[HR\KuƠNYo_TQ)۶̢i긜]{!}]a>2^M(l4Vh>ImHuݲ'.:j{wjjъ%[]-dOk -[i-JŌ*N<6FtZ.u<U;n0#,O:# K=ƙ9o,qIֱ}ejҽKSDtBe]H.4X}D\غoInnc/?T~?ꚹ٭iz-EqT1f՛1 }m!79RL.$?"T1,<: -\J+=j -]Znղzz&Vm,/ȣ0^-3xu , /rİij#h8J5HA\bqT`pE
u#JRšT^FQ=? ~Me/:Ւ;^~o~' -f"/4%V-)|IR67%Mƞaӿ+d +x[M#'ϯ*U㱽U9-krۃ<g~< dgv?^P~xٿ|;QYAܽS#ӻ@viPNR"̯ +S +3!YPU0QB/_ڶ-sLW^R#n0s#GYv vdd\.ĞGdOS'ǟHDC^YтȵMPwA.0nٶ5DyE%3+U6-'m44vݢla|"ƦQ1 ƵEh[+5åA&F +2Z'R;MH-g<HxdGK:u1b'^3175 +Ps&HkyJNB9E,ja:j1t endstream endobj +1336 0 obj +<< /Type /Page /Contents 1337 0 R /Resources 1335 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> +endobj +1338 0 obj +<< /D [ 1336 0 R /XYZ 78.37 808.885 null ] >> +endobj 1339 0 obj -<< /Type /Page /Contents 1340 0 R /Resources 1338 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1336 0 R /XYZ 79.822 768.829 null ] >> +endobj +1340 0 obj +<< /D [ 1336 0 R /XYZ 79.822 757.87 null ] >> endobj 1341 0 obj -<< /D [ 1339 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 746.912 null ] >> endobj 1342 0 obj -<< /D [ 1339 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 735.953 null ] >> endobj 1343 0 obj -<< /D [ 1339 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 724.994 null ] >> endobj 1344 0 obj -<< /D [ 1339 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 714.035 null ] >> endobj 1345 0 obj -<< /D [ 1339 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 703.076 null ] >> endobj 1346 0 obj -<< /D [ 1339 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 692.117 null ] >> endobj 1347 0 obj -<< /D [ 1339 0 R /XYZ 79.822 699.787 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 681.158 null ] >> endobj 1348 0 obj -<< /D [ 1339 0 R /XYZ 79.822 688.828 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 670.199 null ] >> endobj 1349 0 obj -<< /D [ 1339 0 R /XYZ 79.822 677.87 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 659.24 null ] >> endobj 1350 0 obj -<< /D [ 1339 0 R /XYZ 79.822 666.911 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 648.281 null ] >> endobj 1351 0 obj -<< /D [ 1339 0 R /XYZ 79.822 655.952 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 637.322 null ] >> endobj 1352 0 obj -<< /D [ 1339 0 R /XYZ 79.822 644.993 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 626.364 null ] >> endobj 1353 0 obj -<< /D [ 1339 0 R /XYZ 79.822 617.933 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 615.405 null ] >> endobj 1354 0 obj -<< /D [ 1339 0 R /XYZ 79.822 606.974 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 604.446 null ] >> endobj 1355 0 obj -<< /D [ 1339 0 R /XYZ 79.822 596.016 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 593.487 null ] >> endobj 1356 0 obj -<< /D [ 1339 0 R /XYZ 79.822 585.057 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 582.528 null ] >> endobj 1357 0 obj -<< /D [ 1339 0 R /XYZ 79.822 574.098 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 571.569 null ] >> endobj 1358 0 obj -<< /D [ 1339 0 R /XYZ 79.822 563.139 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 560.61 null ] >> endobj 1359 0 obj -<< /D [ 1339 0 R /XYZ 79.822 488.259 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 549.651 null ] >> endobj 1360 0 obj -<< /D [ 1339 0 R /XYZ 79.822 477.3 null ] >> -endobj -229 0 obj -<< /D [ 1339 0 R /XYZ 79.37 453.248 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 538.692 null ] >> endobj 1361 0 obj -<< /D [ 1339 0 R /XYZ 79.822 399.385 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 527.733 null ] >> endobj 1362 0 obj -<< /D [ 1339 0 R /XYZ 79.822 383.724 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 516.775 null ] >> endobj 1363 0 obj -<< /D [ 1339 0 R /XYZ 79.822 372.765 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 505.816 null ] >> endobj 1364 0 obj -<< /D [ 1339 0 R /XYZ 79.822 361.806 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 494.857 null ] >> endobj 1365 0 obj -<< /D [ 1339 0 R /XYZ 79.822 350.847 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 483.898 null ] >> endobj 1366 0 obj -<< /D [ 1339 0 R /XYZ 79.822 339.888 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 472.939 null ] >> endobj 1367 0 obj -<< /D [ 1339 0 R /XYZ 79.822 324.227 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 461.98 null ] >> endobj 1368 0 obj -<< /D [ 1339 0 R /XYZ 79.822 313.268 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 451.021 null ] >> endobj 1369 0 obj -<< /D [ 1339 0 R /XYZ 79.822 302.309 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 440.062 null ] >> endobj 1370 0 obj -<< /D [ 1339 0 R /XYZ 79.822 291.35 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 429.103 null ] >> endobj 1371 0 obj -<< /D [ 1339 0 R /XYZ 79.822 280.391 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 418.144 null ] >> endobj 1372 0 obj -<< /D [ 1339 0 R /XYZ 79.822 269.432 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 407.186 null ] >> endobj 1373 0 obj -<< /D [ 1339 0 R /XYZ 79.822 258.473 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 396.227 null ] >> endobj 1374 0 obj -<< /D [ 1339 0 R /XYZ 79.822 247.514 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 385.268 null ] >> endobj 1375 0 obj -<< /D [ 1339 0 R /XYZ 79.822 236.555 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 374.309 null ] >> endobj 1376 0 obj -<< /D [ 1339 0 R /XYZ 79.822 225.596 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 363.35 null ] >> endobj 1377 0 obj -<< /D [ 1339 0 R /XYZ 79.822 214.638 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 352.391 null ] >> endobj 1378 0 obj -<< /D [ 1339 0 R /XYZ 79.822 203.679 null ] >> -endobj -233 0 obj -<< /D [ 1339 0 R /XYZ 79.37 165.23 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 341.432 null ] >> endobj 1379 0 obj -<< /D [ 1339 0 R /XYZ 79.822 144.388 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 330.473 null ] >> endobj 1380 0 obj -<< /D [ 1339 0 R /XYZ 79.822 133.429 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 319.514 null ] >> endobj 1381 0 obj -<< /D [ 1339 0 R /XYZ 79.822 122.47 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 308.555 null ] >> endobj 1382 0 obj -<< /D [ 1339 0 R /XYZ 79.822 111.511 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 297.596 null ] >> endobj 1383 0 obj -<< /D [ 1339 0 R /XYZ 79.822 100.552 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 286.638 null ] >> endobj 1384 0 obj -<< /D [ 1339 0 R /XYZ 79.822 89.593 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 275.679 null ] >> endobj 1385 0 obj -<< /D [ 1339 0 R /XYZ 79.822 78.635 null ] >> -endobj -1338 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1336 0 R /XYZ 79.822 264.72 null ] >> endobj -1388 0 obj -<< /Filter /FlateDecode /Length 2422 >> -stream -x[n3
)/Qw0p:vݨ5c7npl5߈d_'~3?]~ݵ?)材pIf~hΥ1ot=Њ)a( -9W.kx:+\Sw
:akD~K@U(qhUr+#{C;3
ft}\͙@+1ɜ%J!py
*$rhS-&\z&c+(7n*PgmHʹ30rq[pn9(rjOJsM -sdO|EW^q5 -u<w -#^-|-XӃf
+̥<%ݝb[vV >+ +drI?!tO3IN*ֺ6g*!UiW<+癵z]%fOZ2$[4I$2ysz2ÓQG0K3ztm?Jx`2ҭ6dP;hd ʖNgz<s8&-Q`^f[-I3y&QK
AI}/:_8H9y<4m{Ly)L2F`tf[ᶓak0Etߎ7b|< -.2;|c!N]
0"(5xLsLPZރGi<GaȑF/KP_W|x.Y]s$W063qBb?ZzGcpAnw0./$qk>3m(=o+`e*mÐ{/x]'uMiwP_A']Lʺ\0%4>A~?wKjNY4E[|4q^bE)\,W1wSx7O0!a+j -XJE)C z(dFtneZx4IC~mK~I^юYE'Aɠ{ˑ+T(/¥,n2$GU#Bo44́A9
3*[67;%Q_c>T?rzBGVhC|pke>סaի+2hܑ\C *\jXZsYL1 +s<wt5Si|&e:^ -PK{qV2>֭5D\!K0@+=Q(N-y&RƝDT9LDD}&Nq&`rG[PH܈Ev t/IL{]c""DHYD,5Vm -^o!Mi[eFJM%[ -[_ -%p+ q.s@[_( -&fSl[^"JXNWv>FZ)Vц[:ArvlB)hJ5ѐi
?܋yD3LT5
ty!,k=ezabGhsqXv*yiR֚-Se{C)r8eZfL8~T.hzǘFD+u$~TL\bL\^k)0b8!ԬI˻2ܒ5/]4Lq~J<dKGl\X.w=м
/?DcCY[0 TJx0@F,ൎ5-EZdl#m!%~?(+Or]"2\z@' -m&*I6L[2_͢7GU''3O,F6+Pno[ծ1b3Ridzf9غH~_ -endstream +1386 0 obj +<< /D [ 1336 0 R /XYZ 79.822 253.761 null ] >> endobj 1387 0 obj -<< /Type /Page /Contents 1388 0 R /Resources 1386 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1336 0 R /XYZ 79.822 242.802 null ] >> +endobj +1388 0 obj +<< /D [ 1336 0 R /XYZ 79.822 231.843 null ] >> endobj 1389 0 obj -<< /D [ 1387 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 220.884 null ] >> endobj 1390 0 obj -<< /D [ 1387 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 209.925 null ] >> endobj 1391 0 obj -<< /D [ 1387 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 198.966 null ] >> endobj 1392 0 obj -<< /D [ 1387 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 188.007 null ] >> endobj 1393 0 obj -<< /D [ 1387 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 177.049 null ] >> endobj 1394 0 obj -<< /D [ 1387 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 166.09 null ] >> endobj 1395 0 obj -<< /D [ 1387 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 155.131 null ] >> endobj 1396 0 obj -<< /D [ 1387 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 144.172 null ] >> endobj 1397 0 obj -<< /D [ 1387 0 R /XYZ 79.822 663.562 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 133.213 null ] >> endobj 1398 0 obj -<< /D [ 1387 0 R /XYZ 79.822 652.603 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 122.254 null ] >> endobj 1399 0 obj -<< /D [ 1387 0 R /XYZ 79.822 641.644 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 111.295 null ] >> endobj 1400 0 obj -<< /D [ 1387 0 R /XYZ 79.822 630.685 null ] >> +<< /D [ 1336 0 R /XYZ 79.822 100.336 null ] >> endobj -1401 0 obj -<< /D [ 1387 0 R /XYZ 79.822 619.727 null ] >> -endobj -1402 0 obj -<< /D [ 1387 0 R /XYZ 79.822 608.768 null ] >> +1335 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1403 0 obj -<< /D [ 1387 0 R /XYZ 79.822 597.809 null ] >> +<< /Filter /FlateDecode /Length 2361 >> +stream +x[r6+ +~I9.7A +k֬'sof:P:Q/lxye>LԿ]&d Zg̯]MAj碆ug^$:U%FQZU=~yơ[*ҿYlP48\
B>?>/"uv l%k-Zєsor/jgO%-ce/%s{F%DN( g#3eEgf5Zwp7fx;}.o$p2Rchz$Qzw䧲G(㳡&e3 ?L(KК2DIFP)9xgd/%k-,Vkj"n,~tq6]v"ā)Ƥ *ɧl +@J +ٺj6Z0/qJiٕR +|"htLk)Ga0RUV`魅<2㣸Gy5)[9om5wr+i/q6"]7ͱ=Jw!-%B*P&ܳ +endstream endobj -1404 0 obj -<< /D [ 1387 0 R /XYZ 79.822 586.85 null ] >> +1402 0 obj +<< /Type /Page /Contents 1403 0 R /Resources 1401 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj -237 0 obj -<< /D [ 1387 0 R /XYZ 79.37 563.674 null ] >> +1404 0 obj +<< /D [ 1402 0 R /XYZ 78.37 808.885 null ] >> endobj 1405 0 obj -<< /D [ 1387 0 R /XYZ 79.822 531.101 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 768.829 null ] >> endobj 1406 0 obj -<< /D [ 1387 0 R /XYZ 79.822 520.142 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 757.87 null ] >> endobj 1407 0 obj -<< /D [ 1387 0 R /XYZ 79.822 509.183 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 746.912 null ] >> endobj 1408 0 obj -<< /D [ 1387 0 R /XYZ 79.822 481.4 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 735.953 null ] >> endobj 1409 0 obj -<< /D [ 1387 0 R /XYZ 79.822 455.553 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 724.994 null ] >> endobj 1410 0 obj -<< /D [ 1387 0 R /XYZ 79.822 444.594 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 714.035 null ] >> endobj 1411 0 obj -<< /D [ 1387 0 R /XYZ 79.822 383.107 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 686.139 null ] >> endobj 1412 0 obj -<< /D [ 1387 0 R /XYZ 79.822 357.484 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 675.181 null ] >> endobj 1413 0 obj -<< /D [ 1387 0 R /XYZ 79.822 346.526 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 664.222 null ] >> endobj 1414 0 obj -<< /D [ 1387 0 R /XYZ 79.822 335.567 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 653.263 null ] >> endobj 1415 0 obj -<< /D [ 1387 0 R /XYZ 79.822 324.608 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 642.304 null ] >> endobj 1416 0 obj -<< /D [ 1387 0 R /XYZ 79.822 313.649 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 631.345 null ] >> endobj 1417 0 obj -<< /D [ 1387 0 R /XYZ 79.822 302.69 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 555.629 null ] >> endobj 1418 0 obj -<< /D [ 1387 0 R /XYZ 79.822 291.731 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 544.67 null ] >> +endobj +233 0 obj +<< /D [ 1402 0 R /XYZ 79.37 519.922 null ] >> endobj 1419 0 obj -<< /D [ 1387 0 R /XYZ 79.822 280.772 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 453.547 null ] >> endobj 1420 0 obj -<< /D [ 1387 0 R /XYZ 79.822 269.813 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 437.606 null ] >> endobj 1421 0 obj -<< /D [ 1387 0 R /XYZ 79.822 258.854 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 426.648 null ] >> endobj 1422 0 obj -<< /D [ 1387 0 R /XYZ 79.822 247.895 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 415.689 null ] >> endobj 1423 0 obj -<< /D [ 1387 0 R /XYZ 79.822 236.937 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 404.73 null ] >> endobj 1424 0 obj -<< /D [ 1387 0 R /XYZ 79.822 225.978 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 393.771 null ] >> endobj 1425 0 obj -<< /D [ 1387 0 R /XYZ 79.822 215.019 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 377.831 null ] >> endobj 1426 0 obj -<< /D [ 1387 0 R /XYZ 79.822 204.06 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 366.872 null ] >> endobj 1427 0 obj -<< /D [ 1387 0 R /XYZ 79.822 193.101 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 355.913 null ] >> endobj 1428 0 obj -<< /D [ 1387 0 R /XYZ 79.822 182.142 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 344.954 null ] >> endobj 1429 0 obj -<< /D [ 1387 0 R /XYZ 79.822 130.673 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 333.995 null ] >> endobj 1430 0 obj -<< /D [ 1387 0 R /XYZ 79.822 119.714 null ] >> -endobj -1386 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1402 0 R /XYZ 79.822 323.036 null ] >> endobj -1433 0 obj -<< /Filter /FlateDecode /Length 2893 >> -stream -xrثT,sr-kr_XH엙l7.g:|ÿ>_~-_NH|E"~8}F0n^97 -?7Υ|?^xkq7FYm{(xΕuXW+Sk⽺>Ls&8S =0hHτ
oxz
vWd1]7 anjNGƽ:26KppL 5;6SoC - -<^6;.t|zr7b[Cʬ*^Hpz -nI҃9+aj61qp
[Cxx^R@PVM M<RihR|Pj|3(]ܲeC>Jywx-⁕dVԀMЕ*TGw~,~*&qnVݵXDY\爑
p4S5*Hq6XC -* -7ODC -z(_@"th=HdڭՁBw(J<QY?+m9"45H={ӈ-ֆy?dg_Y;(Ql1eKrAPNe5?_˵JuP9bgRƟDޛT[|ZPN=|j -T%;f9a"3l%Tr*!P/Kd2R[jsk[ͤעRH"kU~Wҫ<j#7O,͖t<F%}kN1FoSzA.XUqSVTҝ*KDe]D{i7]zCu8cN%tR"eS -uAzckU~U7P LXUL\ --|zl"|.0˓ٺhT[M977~Ф:9P~C≘bn9%Sٍr9ȫJeR3lוdTshW],FQYh r鷦!9`ra$Z\]XI-9Nی<ߊړ \'F1^*DP -+=bzoU%1߶嘵J[m:^p%vt6VG\1)|ώӳ-}vCֈv7]UyA^2izZu0`c,fs]5 -tp-3,ea0{ك}ZudS\u?\ 8A_*STQu}ABBvzV9lE5docHnɷa[ }WHPqKWT7Fub(eICIQLNjm,!`29,ynj9XΜ1^pi<) f -endstream +1431 0 obj +<< /D [ 1402 0 R /XYZ 79.822 292.152 null ] >> endobj 1432 0 obj -<< /Type /Page /Contents 1433 0 R /Resources 1431 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1402 0 R /XYZ 79.822 281.193 null ] >> +endobj +1433 0 obj +<< /D [ 1402 0 R /XYZ 79.822 270.234 null ] >> endobj 1434 0 obj -<< /D [ 1432 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 259.275 null ] >> endobj 1435 0 obj -<< /D [ 1432 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 248.316 null ] >> +endobj +237 0 obj +<< /D [ 1402 0 R /XYZ 79.37 210.904 null ] >> endobj 1436 0 obj -<< /D [ 1432 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 190.062 null ] >> endobj 1437 0 obj -<< /D [ 1432 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 179.103 null ] >> endobj 1438 0 obj -<< /D [ 1432 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 168.144 null ] >> endobj 1439 0 obj -<< /D [ 1432 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 157.186 null ] >> endobj 1440 0 obj -<< /D [ 1432 0 R /XYZ 79.822 699.133 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 146.227 null ] >> endobj 1441 0 obj -<< /D [ 1432 0 R /XYZ 79.822 661.316 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 135.268 null ] >> endobj 1442 0 obj -<< /D [ 1432 0 R /XYZ 79.822 611.545 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 124.309 null ] >> endobj 1443 0 obj -<< /D [ 1432 0 R /XYZ 79.822 600.586 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 113.35 null ] >> endobj 1444 0 obj -<< /D [ 1432 0 R /XYZ 79.822 586.68 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 102.391 null ] >> endobj 1445 0 obj -<< /D [ 1432 0 R /XYZ 79.822 575.721 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 91.432 null ] >> endobj 1446 0 obj -<< /D [ 1432 0 R /XYZ 79.822 564.762 null ] >> -endobj -1447 0 obj -<< /D [ 1432 0 R /XYZ 79.822 553.804 null ] >> +<< /D [ 1402 0 R /XYZ 79.822 80.473 null ] >> endobj -1448 0 obj -<< /D [ 1432 0 R /XYZ 79.822 542.845 null ] >> +1401 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1449 0 obj -<< /D [ 1432 0 R /XYZ 79.822 503.245 null ] >> +<< /Filter /FlateDecode /Length 2367 >> +stream +xZn#9+f,jϾ
:s6%)%mMAU|7Ng*|r~uUY!78Yтq-N=s+\߿jdZDf +x8GD]%]|uq~USagxDq'LtLcr$EuS8&=sgW)_ƟE$g~a|ƔxI,
L_ y- ϯ0pSCԍFQ"P[Ӊ-ZnE +, +ʘr|Vn1Wdr!tO3II{Yz
,p[YM/ 8/E7 G1j$sdR2 gKAG̈́dQw!<VX6s<~kw46\|,Z&%Rג (a<Q1qK.l(ϴ9drMgm5C) +$Ay@J1\$Зcǐ))Jkz^6P$:Fhv>ى ǘy(^vDoF+})tV%%SQFI# +CuQx"R<IkSv@<su[(_1*CQh+/.%$\3Bbk0%Sm>ntTh{Gu`J}JK+U^Bj[#ȳTGTlk=3+V)9fC +tN{l@Q=]~T(^Ymʈj>JЊ>K}~.+FTQQJnX[GrZvSPRwޛJ=E̎C\ݙ3jZ13W%$zZv<HBmdY|o.g/*u2}]jes HQ:d t$9|,WҪ#1Xfu;f3/؆R0mty(۞G(w
5G&1Pf`'T$_Mc3nfn*\tMf>]ES-o㿫|\h&n^yV1Ͽv#(9v2V(xԀ5t$V~.ꝇ% !Ģeq"%(5j`IÄUʮu(m5ػO"B +xF+(@ڦn
N2(GUd"\thäY`>h{_mD"tϳH0J\HJ$"4ghDZ^CPj{ڱ˨ֆ)J2WMEZeJd-!()āaI5R_MT?QZ;qˌvc$^1ӊGxFjiCSa
37{N@Hx *?<E3hLԬ՚^m6nӥ`(+s_x3',%oߞ_J7e3[mʶqohE=>a,,^35uQmDiZ ̒r#<>q8zcU.+,IH>}vPK#&xkU\K_{Q3[mݶt([Ƚ/ʧ,KZҙ;Fv{hhq?oP}ǒ]MO^0ㄙx"e[E<@m1̙Ea:OxEG@ûg-ŅKk +endstream +endobj +1448 0 obj +<< /Type /Page /Contents 1449 0 R /Resources 1447 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1005 0 R >> endobj 1450 0 obj -<< /D [ 1432 0 R /XYZ 79.822 492.286 null ] >> +<< /D [ 1448 0 R /XYZ 78.37 808.885 null ] >> endobj 1451 0 obj -<< /D [ 1432 0 R /XYZ 79.822 442.515 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 768.829 null ] >> endobj 1452 0 obj -<< /D [ 1432 0 R /XYZ 79.822 431.556 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 757.87 null ] >> endobj 1453 0 obj -<< /D [ 1432 0 R /XYZ 79.822 420.597 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 746.912 null ] >> endobj 1454 0 obj -<< /D [ 1432 0 R /XYZ 79.822 409.638 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 707.061 null ] >> endobj 1455 0 obj -<< /D [ 1432 0 R /XYZ 79.822 398.679 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 696.102 null ] >> endobj 1456 0 obj -<< /D [ 1432 0 R /XYZ 79.822 348.908 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 685.143 null ] >> endobj 1457 0 obj -<< /D [ 1432 0 R /XYZ 79.822 323.047 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 674.184 null ] >> endobj 1458 0 obj -<< /D [ 1432 0 R /XYZ 79.822 312.088 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 663.225 null ] >> endobj 1459 0 obj -<< /D [ 1432 0 R /XYZ 79.822 301.129 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 652.266 null ] >> endobj 1460 0 obj -<< /D [ 1432 0 R /XYZ 79.822 275.435 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 641.308 null ] >> endobj 1461 0 obj -<< /D [ 1432 0 R /XYZ 79.822 235.668 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 630.349 null ] >> +endobj +241 0 obj +<< /D [ 1448 0 R /XYZ 79.37 606.892 null ] >> endobj 1462 0 obj -<< /D [ 1432 0 R /XYZ 79.822 224.709 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 574.095 null ] >> endobj 1463 0 obj -<< /D [ 1432 0 R /XYZ 79.822 199.015 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 563.136 null ] >> endobj 1464 0 obj -<< /D [ 1432 0 R /XYZ 79.822 188.056 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 552.177 null ] >> endobj 1465 0 obj -<< /D [ 1432 0 R /XYZ 79.822 172.2 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 524.281 null ] >> endobj 1466 0 obj -<< /D [ 1432 0 R /XYZ 79.822 161.241 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 498.379 null ] >> endobj 1467 0 obj -<< /D [ 1432 0 R /XYZ 79.822 150.282 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 487.42 null ] >> endobj 1468 0 obj -<< /D [ 1432 0 R /XYZ 79.822 139.323 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 425.651 null ] >> endobj 1469 0 obj -<< /D [ 1432 0 R /XYZ 79.822 111.511 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 399.748 null ] >> endobj 1470 0 obj -<< /D [ 1432 0 R /XYZ 79.822 100.552 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 388.789 null ] >> endobj 1471 0 obj -<< /D [ 1432 0 R /XYZ 79.822 89.593 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 377.831 null ] >> endobj 1472 0 obj -<< /D [ 1432 0 R /XYZ 79.822 78.635 null ] >> -endobj -1431 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F65 335 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1448 0 R /XYZ 79.822 366.872 null ] >> endobj -1475 0 obj -<< /Filter /FlateDecode /Length 2185 >> -stream -xZr6+[JU-MUξrMNk%k2@"Gz#?uoOI~{Zޞ^=F |n?<h%W#!q'0^JAPLKݣCš;?ss 2?_KnqR -<)>Z&{oQf*U>Zc!KRm"aӉL9[DS0>_5G^_"HYf -t+w 5-B<VX!K7m}pTYu~n*?%S0B1hiE)*KXOO -FSs+Ec 1t(ah9R &MR]K먶vz|)1_kq"훧 ˤlpN/- -4BzkώTb]LWǶa夠* -ǖ=FPy$jc!qjeLIu/ѯ'hes#9F_n]F~y$+FB#${5s_z+&1Umf<'RDzS :"j;Ur`J1Py -(ޙ6$lB"(v|mc)+D%0Y8D#+$81t+={)XzIGŤJ
-NYQ%%]Ey6
:Kbm"ʻJ_nKnZ-ୈ!͍xj߿'&nuQ<Y@ :}"KI$ݚ8foR2zKe6M?Kw?Px/H2</ u|-@BJ`O\0şOH?r6%3z'si8S\x;d=RTqӡRm^0)d@wOݙq~QP0猏f/qY0FKZQ#unZ -u! {.U)5\WeQ^4/q`urkk~%c7b Tڡ;7҆ dCjfB
.fݡrctfvR1hWK -ݯ.9u2=9KQk`\rGe^oY .vUO^gjQ>[; -hKkeeܡg(}ݡ<\2ACp5PY]f&g+w `*'INuȬdY[FN_yĢ
y`5Hoh䇐+_f&j$6)8صMHPL6;·]iayN!C6ߡGEBhFi;!bw(ZG,vFo Ձ<a$}Bf~ڂ]Vq_Cį q,))J(}~,j,qfu1F%緧 -endstream +1473 0 obj +<< /D [ 1448 0 R /XYZ 79.822 355.913 null ] >> endobj 1474 0 obj -<< /Type /Page /Contents 1475 0 R /Resources 1473 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1026 0 R >> +<< /D [ 1448 0 R /XYZ 79.822 344.954 null ] >> +endobj +1475 0 obj +<< /D [ 1448 0 R /XYZ 79.822 333.995 null ] >> endobj 1476 0 obj -<< /D [ 1474 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 323.036 null ] >> endobj 1477 0 obj -<< /D [ 1474 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 312.077 null ] >> endobj 1478 0 obj -<< /D [ 1474 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 301.118 null ] >> endobj 1479 0 obj -<< /D [ 1474 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 290.159 null ] >> endobj 1480 0 obj -<< /D [ 1474 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 279.2 null ] >> endobj 1481 0 obj -<< /D [ 1474 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 268.242 null ] >> endobj 1482 0 obj -<< /D [ 1474 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 257.283 null ] >> endobj 1483 0 obj -<< /D [ 1474 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 246.324 null ] >> endobj 1484 0 obj -<< /D [ 1474 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 235.365 null ] >> endobj 1485 0 obj -<< /D [ 1474 0 R /XYZ 79.822 681.158 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 224.406 null ] >> endobj 1486 0 obj -<< /D [ 1474 0 R /XYZ 79.822 670.199 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 172.6 null ] >> endobj 1487 0 obj -<< /D [ 1474 0 R /XYZ 79.822 659.24 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 161.641 null ] >> endobj 1488 0 obj -<< /D [ 1474 0 R /XYZ 79.822 648.281 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 111.828 null ] >> endobj 1489 0 obj -<< /D [ 1474 0 R /XYZ 79.822 637.322 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 100.869 null ] >> endobj 1490 0 obj -<< /D [ 1474 0 R /XYZ 79.822 587.509 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 89.91 null ] >> endobj 1491 0 obj -<< /D [ 1474 0 R /XYZ 79.822 576.55 null ] >> +<< /D [ 1448 0 R /XYZ 79.822 78.951 null ] >> endobj -1492 0 obj -<< /D [ 1474 0 R /XYZ 79.822 565.591 null ] >> -endobj -1493 0 obj -<< /D [ 1474 0 R /XYZ 79.822 554.633 null ] >> +1447 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1494 0 obj -<< /D [ 1474 0 R /XYZ 79.822 543.674 null ] >> +<< /Filter /FlateDecode /Length 3028 >> +stream +xIn+qS#3`,.6Yϩ8w)yR],<z߹\^~m^q|煹E.F0#T.zT JqۿB_CR@(4P@mL^Җp}t7p)RaK70ٿnnW+{OBŻ
ԟV +W4Y GM9CGddZnYc+XLwF +V"܆*(;cĺt.gO$p^LD{&Z(^T}迾Ӭ{\Y3=p(,$TO#Z<AhxZiq +밣ew^a3FDHO0RMcU '~/UHhLSJ] +-w*ݳVEU_EԎuȊ +j>,ʢ%%OXJ֥Pqvp
;Wpzx`R*7i?032MA3* :G)b8@M R3 +S-:>HCÏsKvTɜ48^)x(qm_^:P*-zGL2exְX5=P=FP9|K
9L
bukcv`R98_Hxe=q$'~gLL)tGYJ
hqѿW=O'2[(?qp!⠇C wT#!i(f+_T"aWp P{wr +?y
EUX"QRX*w]/p͉dCpX[_ GJPW3$1KO稚_)#n|P̅)}|1F=~H3+
RVqU-85]fd?r!(]c==ﰆmQ +hM +?`bje
h;_w@F3t0.ޜ, Z r}csE`oqs_Ge=(|@?;aAGA ucT AJ.sVDr1J0Sg +sZ2̉*ſ:)
aeIp"Fմ.98deG=J|d5Tכˡ´:B\zͷSmLmQ
_#22b2{2ڏj$`DuKhރOsG.NE䫷<FCPfDDT; j(Gq9|pF0%uHPNQIu90v +`.".N:rzu>[F_cǡ+e$/=xhNҒXŰi?*1EDBYF_]͙%A-Q`DL ,.m_y? +j>^Nnr +endstream +endobj +1493 0 obj +<< /Type /Page /Contents 1494 0 R /Resources 1492 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1495 0 obj -<< /D [ 1474 0 R /XYZ 79.822 532.715 null ] >> +<< /D [ 1493 0 R /XYZ 78.37 808.885 null ] >> endobj 1496 0 obj -<< /D [ 1474 0 R /XYZ 79.822 521.756 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 768.829 null ] >> endobj 1497 0 obj -<< /D [ 1474 0 R /XYZ 79.822 507.808 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 742.926 null ] >> endobj 1498 0 obj -<< /D [ 1474 0 R /XYZ 79.822 496.849 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 705.068 null ] >> endobj 1499 0 obj -<< /D [ 1474 0 R /XYZ 79.822 485.89 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 655.255 null ] >> endobj 1500 0 obj -<< /D [ 1474 0 R /XYZ 79.822 474.931 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 644.296 null ] >> endobj 1501 0 obj -<< /D [ 1474 0 R /XYZ 79.822 463.973 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 630.349 null ] >> endobj 1502 0 obj -<< /D [ 1474 0 R /XYZ 79.822 453.014 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 619.39 null ] >> endobj 1503 0 obj -<< /D [ 1474 0 R /XYZ 79.822 442.055 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 608.431 null ] >> endobj 1504 0 obj -<< /D [ 1474 0 R /XYZ 79.822 431.096 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 597.472 null ] >> endobj 1505 0 obj -<< /D [ 1474 0 R /XYZ 79.822 420.137 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 586.513 null ] >> endobj 1506 0 obj -<< /D [ 1474 0 R /XYZ 79.822 409.178 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 575.554 null ] >> endobj 1507 0 obj -<< /D [ 1474 0 R /XYZ 79.822 398.219 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 535.704 null ] >> endobj 1508 0 obj -<< /D [ 1474 0 R /XYZ 79.822 387.26 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 524.745 null ] >> endobj 1509 0 obj -<< /D [ 1474 0 R /XYZ 79.822 376.301 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 474.931 null ] >> endobj 1510 0 obj -<< /D [ 1474 0 R /XYZ 79.822 365.342 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 463.973 null ] >> endobj 1511 0 obj -<< /D [ 1474 0 R /XYZ 79.822 354.384 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 453.014 null ] >> endobj 1512 0 obj -<< /D [ 1474 0 R /XYZ 79.822 343.425 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 442.055 null ] >> endobj 1513 0 obj -<< /D [ 1474 0 R /XYZ 79.822 332.466 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 431.096 null ] >> endobj 1514 0 obj -<< /D [ 1474 0 R /XYZ 79.822 321.507 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 381.283 null ] >> endobj 1515 0 obj -<< /D [ 1474 0 R /XYZ 79.822 245.791 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 355.38 null ] >> endobj 1516 0 obj -<< /D [ 1474 0 R /XYZ 79.822 234.832 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 344.421 null ] >> endobj 1517 0 obj -<< /D [ 1474 0 R /XYZ 79.822 223.873 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 333.462 null ] >> endobj 1518 0 obj -<< /D [ 1474 0 R /XYZ 79.822 212.914 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 307.559 null ] >> endobj 1519 0 obj -<< /D [ 1474 0 R /XYZ 79.822 201.955 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 296.6 null ] >> endobj 1520 0 obj -<< /D [ 1474 0 R /XYZ 79.822 190.996 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 256.75 null ] >> endobj 1521 0 obj -<< /D [ 1474 0 R /XYZ 79.822 180.037 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 230.847 null ] >> endobj 1522 0 obj -<< /D [ 1474 0 R /XYZ 79.822 169.078 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 219.888 null ] >> endobj 1523 0 obj -<< /D [ 1474 0 R /XYZ 79.822 158.119 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 203.948 null ] >> endobj 1524 0 obj -<< /D [ 1474 0 R /XYZ 79.822 147.161 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 192.989 null ] >> endobj 1525 0 obj -<< /D [ 1474 0 R /XYZ 79.822 136.202 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 182.03 null ] >> endobj 1526 0 obj -<< /D [ 1474 0 R /XYZ 79.822 125.243 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 171.071 null ] >> endobj 1527 0 obj -<< /D [ 1474 0 R /XYZ 79.822 114.284 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 160.112 null ] >> endobj 1528 0 obj -<< /D [ 1474 0 R /XYZ 79.822 103.325 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 132.217 null ] >> endobj 1529 0 obj -<< /D [ 1474 0 R /XYZ 79.822 92.366 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 94.359 null ] >> endobj 1530 0 obj -<< /D [ 1474 0 R /XYZ 79.822 81.407 null ] >> +<< /D [ 1493 0 R /XYZ 79.822 83.4 null ] >> endobj -1473 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +1492 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1533 0 obj -<< /Filter /FlateDecode /Length 1964 >> +1534 0 obj +<< /Filter /FlateDecode /Length 2517 >> stream -xZKo6W, -i -4@-3( x)ɅpA@|pYzA8+F{nZ0eᤵ(+ -Tsʚ;.)Wqº%$YkQYGn22U1FXRVxp$˚mZGZKۚRinެKYr] 9TRjpfz*$00/@JSH_t\z>Tx*Q5-%mt>l֘8Ci~\Y{ߪ)MwTD!ۣJj,g() JɄ_DHEd5 ,unrK-v]Zљ -+BDd֠,HoQSB)u5Y3mVYeX)AOS{J%ull{l]{(Tݚr.nٳ7J{<rU\Pd(oUd]vdcEG.t -/JܧYDH3͒TqV
aoTG 0@iʯ䅑iJd(h@c.3Q08C8Ƃ
Y[r@Rkܰ8{Dq$WCޥz\j
œF iL#PRxKnC!`jykyxаn2{$gPNHo'sT{AZ
tiPvu6ƳZ0lĀO%V-\Oh1.FV. -~K2 -`\poN}Q7mP]61ʿ_oi {xy i;}xuݹ5*3DpAacG^\ZUGO|"mM~ -h7Nc>yQHF)2剛Bbt@9m~Y;T* =j6; -q.9.dO -?&"Dɭֱ*%Ah䜫{ݱMD]ޫZ:[%K1SG_5wl -cprOЃ:W&ome|+Bg7+!Zfp$Vҥ +x[ˎ;WZH=vܾvf5z$QewIO.pgQi,Q$ŧ"O9/R)˷ '-W~Qq<799㿧IiCJNjn^֢AQ %A|>_LC>;|jL;|9ڗy`+T8cdEǑaP8;e#O#m['ۗP'dD9c D6U4%=;vS"`uO#c_Xp~ZZA_ʴ(|+tez.i+
hP>QNTĝyH=H{>3:ӫݙJg^lx.MtQ:F|JJZ3qM垃37*5X+)oxW,"kϯdTgH+o6
I|bڤ@@<7jQgy9r~El_[++:]aK};ʠ}EZ- +52X4(Q`tިnz'0ee~EVoBJHNwSʤyBbI>v +JB{?'#0rc%RO$d<1RL@)lLcPrwQMTg2w㵊{plGYe>?{Nԭ ΡEθ5 M +{ + R''(hJXP'>[2\E2J'Lt|Vzl +pI;Z i(]RL&r&,YJz].-IkRIt&ŽF2? r=J'bJQ8h2mv0
1A})ZZsƼ
#vMZ@N,p9QfidUe=AKG<: +{}#lj:.|e]ݖ5tҏֈd@ +8IRTWƣ*
h5C&]Sm(V+jN:ξajtKes2'l"(DRgF+!oi:,XsֿSsB9LlKlg( +vpg5K<Adg2"ʥ*X+g5(ovyA18QCXտ/GJ2U)R{42I
C9TVS.]_uOJ!rBg>̞Xvs] #ںʼn7ӷƏoj&Ϋnޒ@}Ə)7hNWy%Q}7%2MuuTtדwZ?S[#H8s6tMsF8m^؞=M"@mrԥ/WJFs8$M<hkGCA44'Jط쵟&ظ_`2A谙RWc!$!ȑن{)J3uHIW(k.g^ӽںStMJyτ](];to]x'y0EJ+S_b>Kcw])Q~FMV0nGS +?S'|R]<]w`|ޥ +,|0֨ `@~KIVZ89w^PkCJpc<2fZkSoyyߟy{Xu]XC)^kJsW%1ԘLҔ[i9;4&ZcOZh9{??^'n endstream endobj -1532 0 obj -<< /Type /Page /Contents 1533 0 R /Resources 1531 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> -endobj -1534 0 obj -<< /D [ 1532 0 R /XYZ 78.37 808.885 null ] >> +1533 0 obj +<< /Type /Page /Contents 1534 0 R /Resources 1532 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1535 0 obj -<< /D [ 1532 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1533 0 R /XYZ 78.37 808.885 null ] >> endobj 1536 0 obj -<< /D [ 1532 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 768.829 null ] >> endobj 1537 0 obj -<< /D [ 1532 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 757.87 null ] >> endobj 1538 0 obj -<< /D [ 1532 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 746.912 null ] >> endobj 1539 0 obj -<< /D [ 1532 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 709.067 null ] >> endobj 1540 0 obj -<< /D [ 1532 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 695.133 null ] >> endobj 1541 0 obj -<< /D [ 1532 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 684.174 null ] >> endobj 1542 0 obj -<< /D [ 1532 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 673.215 null ] >> endobj 1543 0 obj -<< /D [ 1532 0 R /XYZ 79.822 681.158 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 662.256 null ] >> endobj 1544 0 obj -<< /D [ 1532 0 R /XYZ 79.822 670.199 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 651.297 null ] >> endobj 1545 0 obj -<< /D [ 1532 0 R /XYZ 79.822 659.24 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 640.338 null ] >> endobj 1546 0 obj -<< /D [ 1532 0 R /XYZ 79.822 648.281 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 629.379 null ] >> endobj 1547 0 obj -<< /D [ 1532 0 R /XYZ 79.822 637.322 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 618.421 null ] >> endobj 1548 0 obj -<< /D [ 1532 0 R /XYZ 79.822 626.364 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 607.462 null ] >> endobj 1549 0 obj -<< /D [ 1532 0 R /XYZ 79.822 615.405 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 555.683 null ] >> endobj 1550 0 obj -<< /D [ 1532 0 R /XYZ 79.822 565.591 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 544.724 null ] >> endobj 1551 0 obj -<< /D [ 1532 0 R /XYZ 79.822 554.633 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 533.765 null ] >> endobj 1552 0 obj -<< /D [ 1532 0 R /XYZ 79.822 543.674 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 522.806 null ] >> endobj 1553 0 obj -<< /D [ 1532 0 R /XYZ 79.822 532.715 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 496.917 null ] >> endobj 1554 0 obj -<< /D [ 1532 0 R /XYZ 79.822 521.756 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 485.958 null ] >> endobj 1555 0 obj -<< /D [ 1532 0 R /XYZ 79.822 510.797 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 474.999 null ] >> endobj 1556 0 obj -<< /D [ 1532 0 R /XYZ 79.822 499.838 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 464.04 null ] >> endobj 1557 0 obj -<< /D [ 1532 0 R /XYZ 79.822 488.879 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 453.081 null ] >> endobj 1558 0 obj -<< /D [ 1532 0 R /XYZ 79.822 477.92 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 442.122 null ] >> endobj 1559 0 obj -<< /D [ 1532 0 R /XYZ 79.822 466.961 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 431.163 null ] >> endobj 1560 0 obj -<< /D [ 1532 0 R /XYZ 79.822 456.002 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 417.229 null ] >> endobj 1561 0 obj -<< /D [ 1532 0 R /XYZ 79.822 445.044 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 406.27 null ] >> endobj 1562 0 obj -<< /D [ 1532 0 R /XYZ 79.822 434.085 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 395.311 null ] >> endobj 1563 0 obj -<< /D [ 1532 0 R /XYZ 79.822 423.126 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 384.353 null ] >> endobj 1564 0 obj -<< /D [ 1532 0 R /XYZ 79.822 412.167 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 373.394 null ] >> endobj 1565 0 obj -<< /D [ 1532 0 R /XYZ 79.822 401.208 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 362.435 null ] >> endobj 1566 0 obj -<< /D [ 1532 0 R /XYZ 79.822 390.249 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 351.476 null ] >> endobj 1567 0 obj -<< /D [ 1532 0 R /XYZ 79.822 379.29 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 340.517 null ] >> endobj 1568 0 obj -<< /D [ 1532 0 R /XYZ 79.822 368.331 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 329.558 null ] >> endobj 1569 0 obj -<< /D [ 1532 0 R /XYZ 79.822 357.372 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 318.599 null ] >> endobj 1570 0 obj -<< /D [ 1532 0 R /XYZ 79.822 346.413 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 307.64 null ] >> endobj 1571 0 obj -<< /D [ 1532 0 R /XYZ 79.822 335.454 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 296.681 null ] >> endobj 1572 0 obj -<< /D [ 1532 0 R /XYZ 79.822 324.496 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 285.722 null ] >> endobj 1573 0 obj -<< /D [ 1532 0 R /XYZ 79.822 313.537 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 274.763 null ] >> endobj 1574 0 obj -<< /D [ 1532 0 R /XYZ 79.822 302.578 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 263.805 null ] >> endobj 1575 0 obj -<< /D [ 1532 0 R /XYZ 79.822 291.619 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 252.846 null ] >> endobj 1576 0 obj -<< /D [ 1532 0 R /XYZ 79.822 280.66 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 241.887 null ] >> endobj 1577 0 obj -<< /D [ 1532 0 R /XYZ 79.822 269.701 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 166.306 null ] >> endobj 1578 0 obj -<< /D [ 1532 0 R /XYZ 79.822 258.742 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 155.347 null ] >> endobj 1579 0 obj -<< /D [ 1532 0 R /XYZ 79.822 247.783 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 144.388 null ] >> endobj 1580 0 obj -<< /D [ 1532 0 R /XYZ 79.822 236.824 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 133.429 null ] >> endobj 1581 0 obj -<< /D [ 1532 0 R /XYZ 79.822 225.865 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 122.47 null ] >> endobj 1582 0 obj -<< /D [ 1532 0 R /XYZ 79.822 214.907 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 111.511 null ] >> endobj 1583 0 obj -<< /D [ 1532 0 R /XYZ 79.822 165.093 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 100.552 null ] >> endobj 1584 0 obj -<< /D [ 1532 0 R /XYZ 79.822 154.134 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 89.593 null ] >> endobj 1585 0 obj -<< /D [ 1532 0 R /XYZ 79.822 143.176 null ] >> +<< /D [ 1533 0 R /XYZ 79.822 78.635 null ] >> endobj -1586 0 obj -<< /D [ 1532 0 R /XYZ 79.822 132.217 null ] >> -endobj -1587 0 obj -<< /D [ 1532 0 R /XYZ 79.822 121.258 null ] >> +1532 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1588 0 obj -<< /D [ 1532 0 R /XYZ 79.822 110.299 null ] >> +<< /Filter /FlateDecode /Length 2798 >> +stream +x[K#ϧX%Y#㙿ޢ\S5nQޱ{7*hyE^z¤o߿n~~pAp7ɋx#JH.sUJ'Hi&+͟_/^k(e3S{(w&%f3)J,=R5˘jyD35)&{[SH%P\Mj'62ͺ5g~Y0B= qN0B9T.^cCslh#ʦ{RrA +22Ze09gt1 +~$ +VlV9clԻhl1A}
.*4RyDAkOd
0m< +sRUXr֫fk_ɱ-1Nx?E'ۇQkruqG[Z|TjY38tގt[
Z8~a]Cηst͚Bw9+疵j:,ReKL-{9HLSb1R^%,bcuٲV5ijV7P<tkt,N&~ϕ ܗxQMjn%
hܬ+}^)ɪPsfJԊ[)QsBEf
othwgNrsS(O|87UlwK/93n@~Oo
##S^Є!䖒Gk9@}[k4w:24g)m,wz@ +%6#!H5'Av(Yp \sOpG"G }[[k:sz8~bWK_eg8BîP-?/W{ζ'+6rAgiU + +iݤSy=J=O^rZ +'M,%CF60Vp6BbcB;Bg?pjBg$:2$ҵ'
F6dsPp0*lf +;?JGϮW*S~rv_M1awY&%RT)d綆xz嘎BZDBp$^_J| +endstream +endobj +1587 0 obj +<< /Type /Page /Contents 1588 0 R /Resources 1586 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1589 0 obj -<< /D [ 1532 0 R /XYZ 79.822 99.34 null ] >> +<< /D [ 1587 0 R /XYZ 78.37 808.885 null ] >> endobj -1531 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +1590 0 obj +<< /D [ 1587 0 R /XYZ 79.822 768.829 null ] >> endobj -1594 0 obj -<< /Filter /FlateDecode /Length 2841 >> -stream -xˎ(_?Ќ -4f: A_kv폧47/<*~&omoXP~eVߵ mYeQO΄'#<bd/ VU*H0U7@-1B%<~m(b6k٢Ot:5PfJz<;'
&3%CzYOg!C@04zC -){l#eHى }z02Q3CI٪59ԤGV[АVJ<i l+=ܘRj+tG5ѬI1 - -YlF-:ǾMA ʸ.?.ǝs9a:ih J*ŊYp502GJOG%)uPm;sN:hq&f -]:HtpsԎk5CZyEs#MIlx&m߿SXj5{pGZGBބ}8[!i֜hCI-%wz1d61n
Q)Nֆ0"+0P("LVcq.g2A80'Jγϱ%߽$ckBO1AZx!Y '>lI5Q)- qV -jC\9z(?cI:a0\Dl{#őUe#PGSݬ\+W~efCHzcbš({fR+-揚IuMƅֶ߸.uyݚ8MRP2̋|%z&ZZjy{+&$>Vun`QQ5iTj7|;Qb5SρĐS:!WJCH8)PzPx$;Tkd1x8DVEI)(}OJ%sba*5\f&`0di݈^};!;hiZƽ؊-쳋ĖgUPf2N;EqAC6RqPJ;kTCԃ` -!ehX[Bz$7$j$ErqXwڟSh ki;tgNRZ1e)?M"?]sNe)yYZ7&["|M@}n282Wt
ڢhqMF7p'A,ƍkk` iƟҌr4(m{4M(AXR^j:ֺl'P%zN]A1M~*cPNapcR=bPv% ܨtͯ:32jwhb'̊p^n傖h)bObaBH?l-[i#I-iP!lCq4ζ&L&A%V=L{~KU,XkrCAA9LiFg|h"|uJ[!ΉΤ
>Vr(*o&Bա\Tc$jD;z. NrkA(75\\%51 -7c)9r6m(TT:v -8m/b L/A5}SJ9굕o1wx{ֳ3WJzFZ_PwH7Sʅ@{6^LP0([CޥKvBVb7Ӝl])N#U -endstream +1591 0 obj +<< /D [ 1587 0 R /XYZ 79.822 757.87 null ] >> +endobj +1592 0 obj +<< /D [ 1587 0 R /XYZ 79.822 746.912 null ] >> endobj 1593 0 obj -<< /Type /Page /Contents 1594 0 R /Resources 1592 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1587 0 R /XYZ 79.822 735.953 null ] >> +endobj +1594 0 obj +<< /D [ 1587 0 R /XYZ 79.822 724.994 null ] >> endobj 1595 0 obj -<< /D [ 1593 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 714.035 null ] >> endobj 1596 0 obj -<< /D [ 1593 0 R /XYZ 79.822 733.96 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 703.076 null ] >> endobj 1597 0 obj -<< /D [ 1593 0 R /XYZ 79.822 723.001 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 692.117 null ] >> endobj 1598 0 obj -<< /D [ 1593 0 R /XYZ 79.822 712.042 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 681.158 null ] >> endobj 1599 0 obj -<< /D [ 1593 0 R /XYZ 79.822 701.083 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 670.199 null ] >> endobj 1600 0 obj -<< /D [ 1593 0 R /XYZ 79.822 690.124 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 659.24 null ] >> endobj 1601 0 obj -<< /D [ 1593 0 R /XYZ 79.822 679.166 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 648.281 null ] >> endobj 1602 0 obj -<< /D [ 1593 0 R /XYZ 79.822 668.207 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 598.468 null ] >> endobj 1603 0 obj -<< /D [ 1593 0 R /XYZ 79.822 657.248 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 587.509 null ] >> endobj 1604 0 obj -<< /D [ 1593 0 R /XYZ 79.822 583.524 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 576.55 null ] >> endobj 1605 0 obj -<< /D [ 1593 0 R /XYZ 79.822 572.565 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 565.591 null ] >> endobj 1606 0 obj -<< /D [ 1593 0 R /XYZ 79.822 561.606 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 554.633 null ] >> endobj 1607 0 obj -<< /D [ 1593 0 R /XYZ 79.822 550.648 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 543.674 null ] >> endobj 1608 0 obj -<< /D [ 1593 0 R /XYZ 79.822 539.689 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 532.715 null ] >> endobj 1609 0 obj -<< /D [ 1593 0 R /XYZ 79.822 528.73 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 482.902 null ] >> endobj 1610 0 obj -<< /D [ 1593 0 R /XYZ 79.822 517.771 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 471.943 null ] >> endobj 1611 0 obj -<< /D [ 1593 0 R /XYZ 79.822 506.812 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 460.984 null ] >> endobj 1612 0 obj -<< /D [ 1593 0 R /XYZ 79.822 495.853 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 450.025 null ] >> endobj 1613 0 obj -<< /D [ 1593 0 R /XYZ 79.822 484.894 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 439.066 null ] >> endobj 1614 0 obj -<< /D [ 1593 0 R /XYZ 79.822 473.935 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 428.107 null ] >> endobj 1615 0 obj -<< /D [ 1593 0 R /XYZ 79.822 462.976 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 417.148 null ] >> endobj 1616 0 obj -<< /D [ 1593 0 R /XYZ 79.822 452.017 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 406.189 null ] >> endobj 1617 0 obj -<< /D [ 1593 0 R /XYZ 79.822 441.058 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 332.466 null ] >> endobj 1618 0 obj -<< /D [ 1593 0 R /XYZ 79.822 430.1 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 321.507 null ] >> endobj 1619 0 obj -<< /D [ 1593 0 R /XYZ 79.822 419.141 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 310.548 null ] >> endobj 1620 0 obj -<< /D [ 1593 0 R /XYZ 79.822 408.182 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 299.589 null ] >> endobj 1621 0 obj -<< /D [ 1593 0 R /XYZ 79.822 397.223 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 288.63 null ] >> endobj 1622 0 obj -<< /D [ 1593 0 R /XYZ 79.822 386.264 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 277.671 null ] >> endobj 1623 0 obj -<< /D [ 1593 0 R /XYZ 79.822 375.305 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 266.712 null ] >> endobj 1624 0 obj -<< /D [ 1593 0 R /XYZ 79.822 364.346 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 255.753 null ] >> endobj 1625 0 obj -<< /D [ 1593 0 R /XYZ 79.822 353.387 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 244.794 null ] >> endobj 1626 0 obj -<< /D [ 1593 0 R /XYZ 79.822 342.428 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 233.836 null ] >> endobj 1627 0 obj -<< /D [ 1593 0 R /XYZ 79.822 331.469 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 222.877 null ] >> endobj 1628 0 obj -<< /D [ 1593 0 R /XYZ 79.822 320.511 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 211.918 null ] >> endobj 1629 0 obj -<< /D [ 1593 0 R /XYZ 79.822 246.787 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 200.959 null ] >> endobj 1630 0 obj -<< /D [ 1593 0 R /XYZ 79.822 235.828 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 190 null ] >> endobj 1631 0 obj -<< /D [ 1593 0 R /XYZ 79.822 224.869 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 179.041 null ] >> endobj 1632 0 obj -<< /D [ 1593 0 R /XYZ 79.822 213.91 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 168.082 null ] >> endobj 1633 0 obj -<< /D [ 1593 0 R /XYZ 79.822 202.951 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 157.123 null ] >> endobj 1634 0 obj -<< /D [ 1593 0 R /XYZ 79.822 191.992 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 146.164 null ] >> endobj 1635 0 obj -<< /D [ 1593 0 R /XYZ 79.822 166.09 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 135.205 null ] >> endobj 1636 0 obj -<< /D [ 1593 0 R /XYZ 79.822 140.187 null ] >> +<< /D [ 1587 0 R /XYZ 79.822 124.247 null ] >> endobj 1637 0 obj -<< /D [ 1593 0 R /XYZ 79.822 129.228 null ] >> -endobj -1592 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1587 0 R /XYZ 79.822 113.288 null ] >> endobj -1640 0 obj -<< /Filter /FlateDecode /Length 3243 >> -stream -x\ˎc
WZD=Br -3M,'v".ß~ -ܙaނ=w -QHN1cM| Hg>~Z_UڗrqPN }'߭ P_Ra6$yWeԣ -
0RQ8x,萄,(3"-""xoF?8eݲ^CǞ+Pa -T t -ib> s
}NJ3dgx@ʅ縐 +)ƱdiOepx1.a -O7G\(6¤-_E}i<2v=ud{Frg=NPY0[L+£akѿ+E> .w5+w"6 -x T?N>c]O|9OT~ -&Qgj~ ;˸Y0<" RY΄nFPKKo1}Ly%s%GZK8|PRf+-zݮ -YAfH\nk\!m1P6/bugKް.+0-ݏ܅~ʞ;N̴ap\صE~I\X0Q#UDcHuB$6)1&y -'i$*jGEɸIKt>r^>t%\Z?;H#rqFì粒9T:IOGu7!fs[{Q1v -^̉_3c.gnޅ&lkoP
JLcQJ4{S
Vc_ -yG~KoP*l97lmFJSfervaH5utW~+q=do;%mآ+zXD*O(&ޣz˳QLzE[=P%pq6TB%zβݲ{'^6`rb;RH@L%I"Znr3!ɢU>*S3o
3t'wYV;`/2\(`IeZXjb0RٱVҵ`8MBʹ<:'Glw]3E&$QcHsv%L,GwWޒd<JSbwaW\x0b9UVڵZtƊ\uUPFLNqS1J0TaKG|Z~lhr(^cr2SK PD@Hi(Erp.N* eU84_ke,<V'FtvT\ZKMja*#ٍfUž-ʳ:a}:D<Ig[7R|Fy5u91 xPx7N;%z[0WV02T:W@&EVKV۠VR{1!SqC!x29GrΨ -ofx@Ő -p]P5.^N΅Mov\t,0[{ }2ga"ܑ>'e 5e,T3al#BL\HS"_<%bmiA3zOOG*O!*7J*P,)SSlBe( -`/Wl+~FwŎyR1/ӿ⢙`h(2+p8tEW̢b9䇵Z%?KK3 HLyT=/0D/0aApK/P~<XO? -tg)n&e-
4(PKlU"@yJqx,qIkkZZ8<Wg4fJw<zO7 -endstream +1638 0 obj +<< /D [ 1587 0 R /XYZ 79.822 102.329 null ] >> endobj 1639 0 obj -<< /Type /Page /Contents 1640 0 R /Resources 1638 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R /Annots 1685 0 R >> -endobj -1685 0 obj -[ 1591 0 R ] +<< /D [ 1587 0 R /XYZ 79.822 91.37 null ] >> endobj -1591 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 435.916 757.574 446.343 770.303 ]/A << /S /GoTo /D (Hfootnote.38) >> >> +1640 0 obj +<< /D [ 1587 0 R /XYZ 79.822 80.411 null ] >> endobj -1641 0 obj -<< /D [ 1639 0 R /XYZ 78.37 808.885 null ] >> +1586 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1642 0 obj -<< /D [ 1639 0 R /XYZ 79.822 745.915 null ] >> +1644 0 obj +<< /Filter /FlateDecode /Length 3083 >> +stream +x\Kﯘ? ,;;|KSbK~oKLOXXU/]tż. %~8}F0n/Kɹz\~4?9uq#]ODpˤJlMQ`T?z&Jń2 +
+e6f +&.9.aV[B$Yczl@ޕ[ڙx|J4-Tg.k'jVLm`@ܱJ2ͧ-6R3 +țr^֩Ҁ@*i%'kT LeOk5M>
sIӕ3=99;azUOQKpu.{EKx.EB%blY;7U6qO{{(7, +" +'U~o l7SzoQ~BS.pUNqG]:c +wS12ݝ~ +\1'wlE@:R!*f I/Z$
ˉpB;0)^l;RY.Ң#@XL*ޮV@2Hk T' +Kp`ޢ|"ZCm +HЂy.<9YKMoS0[ԺS#EJ.'K X2sqŴE|xS3VԿ 3$454"m1V6\u!Tivou;N`nium_i;Hf;ɬ]\'8By1u/6,0!xp;t/)W)`xVM|*JG\)nLzW[npE<
` 0aul +cn+a6ێ-D{z.د_ ;Q9Dk0R";[viԑHtņh^|%Rǔnvs +endstream endobj 1643 0 obj -<< /D [ 1639 0 R /XYZ 79.822 734.956 null ] >> +<< /Type /Page /Contents 1644 0 R /Resources 1642 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R /Annots 1686 0 R >> endobj -1644 0 obj -<< /D [ 1639 0 R /XYZ 79.822 723.997 null ] >> +1686 0 obj +[ 1641 0 R ] +endobj +1641 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 435.916 539.392 446.343 552.191 ]/A << /S /GoTo /D (Hfootnote.39) >> >> endobj 1645 0 obj -<< /D [ 1639 0 R /XYZ 79.822 713.039 null ] >> +<< /D [ 1643 0 R /XYZ 78.37 808.885 null ] >> endobj 1646 0 obj -<< /D [ 1639 0 R /XYZ 79.822 702.08 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 768.829 null ] >> endobj 1647 0 obj -<< /D [ 1639 0 R /XYZ 79.822 652.266 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 695.106 null ] >> endobj 1648 0 obj -<< /D [ 1639 0 R /XYZ 79.822 641.308 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 684.147 null ] >> endobj 1649 0 obj -<< /D [ 1639 0 R /XYZ 79.822 630.349 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 673.188 null ] >> endobj 1650 0 obj -<< /D [ 1639 0 R /XYZ 79.822 619.39 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 662.229 null ] >> endobj 1651 0 obj -<< /D [ 1639 0 R /XYZ 79.822 608.431 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 651.27 null ] >> endobj 1652 0 obj -<< /D [ 1639 0 R /XYZ 79.822 597.472 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 640.311 null ] >> endobj 1653 0 obj -<< /D [ 1639 0 R /XYZ 79.822 586.513 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 614.408 null ] >> endobj 1654 0 obj -<< /D [ 1639 0 R /XYZ 79.822 575.554 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 588.506 null ] >> endobj 1655 0 obj -<< /D [ 1639 0 R /XYZ 79.822 564.595 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 577.547 null ] >> endobj 1656 0 obj -<< /D [ 1639 0 R /XYZ 79.822 553.636 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 527.733 null ] >> endobj 1657 0 obj -<< /D [ 1639 0 R /XYZ 79.822 542.677 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 516.775 null ] >> endobj 1658 0 obj -<< /D [ 1639 0 R /XYZ 79.822 531.719 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 505.816 null ] >> endobj 1659 0 obj -<< /D [ 1639 0 R /XYZ 79.822 505.816 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 494.857 null ] >> endobj 1660 0 obj -<< /D [ 1639 0 R /XYZ 79.822 494.857 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 483.898 null ] >> endobj 1661 0 obj -<< /D [ 1639 0 R /XYZ 79.822 443.051 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 434.085 null ] >> endobj 1662 0 obj -<< /D [ 1639 0 R /XYZ 79.822 432.092 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 423.126 null ] >> endobj 1663 0 obj -<< /D [ 1639 0 R /XYZ 79.822 421.133 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 412.167 null ] >> endobj 1664 0 obj -<< /D [ 1639 0 R /XYZ 79.822 410.174 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 401.208 null ] >> endobj 1665 0 obj -<< /D [ 1639 0 R /XYZ 79.822 399.215 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 390.249 null ] >> endobj 1666 0 obj -<< /D [ 1639 0 R /XYZ 79.822 388.256 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 379.29 null ] >> endobj 1667 0 obj -<< /D [ 1639 0 R /XYZ 79.822 377.298 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 368.331 null ] >> endobj 1668 0 obj -<< /D [ 1639 0 R /XYZ 79.822 366.339 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 357.372 null ] >> endobj 1669 0 obj -<< /D [ 1639 0 R /XYZ 79.822 355.38 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 346.413 null ] >> endobj 1670 0 obj -<< /D [ 1639 0 R /XYZ 79.822 344.421 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 335.454 null ] >> endobj 1671 0 obj -<< /D [ 1639 0 R /XYZ 79.822 294.608 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 324.496 null ] >> endobj 1672 0 obj -<< /D [ 1639 0 R /XYZ 79.822 256.75 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 313.537 null ] >> endobj 1673 0 obj -<< /D [ 1639 0 R /XYZ 79.822 245.791 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 287.634 null ] >> endobj 1674 0 obj -<< /D [ 1639 0 R /XYZ 79.822 234.832 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 276.675 null ] >> endobj 1675 0 obj -<< /D [ 1639 0 R /XYZ 79.822 223.873 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 224.869 null ] >> endobj 1676 0 obj -<< /D [ 1639 0 R /XYZ 79.822 197.97 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 213.91 null ] >> endobj 1677 0 obj -<< /D [ 1639 0 R /XYZ 79.822 187.011 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 202.951 null ] >> endobj 1678 0 obj -<< /D [ 1639 0 R /XYZ 79.822 176.052 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 191.992 null ] >> endobj 1679 0 obj -<< /D [ 1639 0 R /XYZ 79.822 165.093 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 181.034 null ] >> endobj 1680 0 obj -<< /D [ 1639 0 R /XYZ 79.822 154.134 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 170.075 null ] >> endobj 1681 0 obj -<< /D [ 1639 0 R /XYZ 79.822 143.176 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 159.116 null ] >> endobj 1682 0 obj -<< /D [ 1639 0 R /XYZ 79.822 132.217 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 148.157 null ] >> endobj 1683 0 obj -<< /D [ 1639 0 R /XYZ 79.822 121.258 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 137.198 null ] >> endobj 1684 0 obj -<< /D [ 1639 0 R /XYZ 93.716 90.265 null ] >> +<< /D [ 1643 0 R /XYZ 79.822 126.239 null ] >> endobj -1638 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F16 336 0 R /F59 346 0 R /F84 425 0 R /F85 437 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +1685 0 obj +<< /D [ 1643 0 R /XYZ 93.716 95.832 null ] >> endobj -1688 0 obj -<< /Filter /FlateDecode /Length 2713 >> +1642 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F16 359 0 R /F85 461 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +1689 0 obj +<< /Filter /FlateDecode /Length 2797 >> stream -x[n#9+"
0XU}4KJ'5CVIieD0H˿.3>\^~ޕ sVH|""~Xu1Z0ߗrK/<c[X洖Z2+Evw|GLpЊsΑa$P -xGݴx>wy~@ewHWlNv ~{Zv!||[1P9Z`ZS^^#V"ex>ǰ6kZpHx=tve /"3}ݒ -R,N`I)lԻ_;jNLsPPh)# 1U
bJ~qn ;L7NQwmM*,H=#JZǶs
Wq"ky3gwYdL|3-#(;,ɴc,O -+#JWz!^c3Ƙc_eBÛj::[nXugu
kZgt&\ -JpW)&C;Hx}TSF֮ic,3MIGOZS3Gᑻ"@x]EBzg:"}g Q!Bރ#ZƑrnn1*i -#'T?pvP|9N-9H; -zzgsb6H~ѯ[6&yƻDK- -/n[G"9^4%o8t@L J
)R8Cq07=|S ҅y^))'=(]ֶ4_g".^hNNVl*ÔI՞ʏ(Ϟz.@ۦ$$#zO3j[ /Ay/I=v=2F,nk"2 -foygkE߆&XSZ!(q 4O9ǒ6PjwaDGN@EuDQtj/ -{MO# UX1PGzFHOlru&hҍ1}SR!`6t\SC'Yui6mCie>QЯsQ||[3SMtTV4 b+Yr'
>ﱀ놷֪W}+a%Lݵ.SZVd|qa ;dIH^& l,\k4J&FZm}4Jн ƛ&[y_F(<yՖ#)6e7މxδ>qv-@F%pXg@nԙPaɅh\{Ad>gǬsjrO"O9vu9m>ݶsz
Īz>sCf4nZ>`d9`c=zawߎ[8 -B爭'P5vm;B4ioyXh -p]"4Aٟ -*2frLܞ -i}|rܭ#(OHCi&2V<|_뢒e;j^MdqnĢgEm{qUͺ+0VTՀ-l[4ﳅb{[jlE[2ly-60˙oKC@rڲ$ 3/H9{ϯ +xɎ+?4Em@=@}rMNhJ[K~n")~υ_qCcNqLтq-.sm9Ңs%8G>Js+͎h4PoiDME y^[a&-g4Zf@`ZMw>{m11jsJWqj3 +\.>Co^3M,l$CḄ%eD| +>vivߩߋa+àW3=SL:(nWK?M
5i4@0t&#K>EzIrk͛`,$-LY# e*odVJX{)/Xhp"R}>gbx/=2-߆5P@a`*yr0>#*V3#TӚukԋ!맮`YcWn3J\?f=FfX:(QSV*p8<Z(NyɄu+U!0k ƠU +`WW 1vյ9֨iAс{ƈ[ 0oO#`%+1ޠrg-uGGcq6q/ ,=eܶ=tZ(3 ,ųyG/0gZPyA4MbA9`Gm_:Sɮ"f,
X:(1c#Z˯LC&()$b4abDӐ:W)ҥ,&!Gqȴ.-5m!ra-l|7\
E-AOa!?(
淖:4^Dˮ Hh)HAyor +/dL"pŤ0So6*d$V%\"IEwfRoU)]DJd @J #></^fމ0x>np %<?0v-SR.wu{p۶S=JZ\لJ]sӢ$tLЀxD]5jJ@D*T״y@L <zyJ>>6wn4-?ug;+KA(lnV"jHI(O-@QN)Ԟzhanje y)<=ڌA\J+y+Uz1Jg tefBlVPg.} =SQUsAS{qќnylnUnM5o'F`83v(6mP~fIթ
o/8D{uDX1%cf?o{;B,}V-_{C8|,K<k}}˅p[ϡ)$L衬nA`@dǟ=l[ݖn )K֛+%g6lzpZ֧UVFu&T > +B9V'R`3A-ļCoHy`gew*;qe놋T5ӽ6$xf`<.,։@^[PiI|9lr*="1_a%%7}cIh
+m'3~`_29Z0n@jEm@ԨsHA~q^?I50E^+Τxw6T$P]4G"t*^oE->^5mH lG +B)S1ŕ=n2M]z/,îG90Da@lFhPctKRěKw^n֊3`q U<:(fJe:pNWtp7*DdvM'A-oEh.r4\] +ۜj]JRI}e8咪/l|9;x4<oЭh:uSޭΨr,},Vn=йF6!\)'3MLj}|['AI:/_/ș3Şƈ珿 endstream endobj -1687 0 obj -<< /Type /Page /Contents 1688 0 R /Resources 1686 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> -endobj -1689 0 obj -<< /D [ 1687 0 R /XYZ 78.37 808.885 null ] >> +1688 0 obj +<< /Type /Page /Contents 1689 0 R /Resources 1687 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1690 0 obj -<< /D [ 1687 0 R /XYZ 79.822 768.829 null ] >> +<< /D [ 1688 0 R /XYZ 78.37 808.885 null ] >> endobj 1691 0 obj -<< /D [ 1687 0 R /XYZ 79.822 757.87 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 745.915 null ] >> endobj 1692 0 obj -<< /D [ 1687 0 R /XYZ 79.822 746.912 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 708.057 null ] >> endobj 1693 0 obj -<< /D [ 1687 0 R /XYZ 79.822 735.953 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 697.098 null ] >> endobj 1694 0 obj -<< /D [ 1687 0 R /XYZ 79.822 724.994 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 686.139 null ] >> endobj 1695 0 obj -<< /D [ 1687 0 R /XYZ 79.822 714.035 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 675.181 null ] >> endobj 1696 0 obj -<< /D [ 1687 0 R /XYZ 79.822 703.076 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 664.222 null ] >> endobj 1697 0 obj -<< /D [ 1687 0 R /XYZ 79.822 692.117 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 638.319 null ] >> endobj 1698 0 obj -<< /D [ 1687 0 R /XYZ 79.822 654.259 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 627.36 null ] >> endobj 1699 0 obj -<< /D [ 1687 0 R /XYZ 79.822 643.3 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 616.401 null ] >> endobj 1700 0 obj -<< /D [ 1687 0 R /XYZ 79.822 632.341 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 605.442 null ] >> endobj 1701 0 obj -<< /D [ 1687 0 R /XYZ 79.822 621.382 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 594.483 null ] >> endobj 1702 0 obj -<< /D [ 1687 0 R /XYZ 79.822 583.524 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 583.524 null ] >> endobj 1703 0 obj -<< /D [ 1687 0 R /XYZ 79.822 557.621 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 572.565 null ] >> endobj 1704 0 obj -<< /D [ 1687 0 R /XYZ 79.822 546.662 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 561.606 null ] >> endobj 1705 0 obj -<< /D [ 1687 0 R /XYZ 79.822 535.704 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 550.648 null ] >> endobj 1706 0 obj -<< /D [ 1687 0 R /XYZ 79.822 485.89 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 539.689 null ] >> endobj 1707 0 obj -<< /D [ 1687 0 R /XYZ 79.822 474.931 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 528.73 null ] >> endobj 1708 0 obj -<< /D [ 1687 0 R /XYZ 79.822 463.973 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 517.771 null ] >> endobj 1709 0 obj -<< /D [ 1687 0 R /XYZ 79.822 453.014 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 506.812 null ] >> endobj 1710 0 obj -<< /D [ 1687 0 R /XYZ 79.822 442.055 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 495.853 null ] >> endobj 1711 0 obj -<< /D [ 1687 0 R /XYZ 79.822 431.096 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 484.894 null ] >> endobj 1712 0 obj -<< /D [ 1687 0 R /XYZ 79.822 420.137 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 473.935 null ] >> endobj 1713 0 obj -<< /D [ 1687 0 R /XYZ 79.822 409.178 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 436.077 null ] >> endobj 1714 0 obj -<< /D [ 1687 0 R /XYZ 79.822 398.219 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 425.118 null ] >> endobj 1715 0 obj -<< /D [ 1687 0 R /XYZ 79.822 387.26 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 414.159 null ] >> endobj 1716 0 obj -<< /D [ 1687 0 R /XYZ 79.822 376.301 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 403.2 null ] >> endobj 1717 0 obj -<< /D [ 1687 0 R /XYZ 79.822 365.342 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 365.342 null ] >> endobj 1718 0 obj -<< /D [ 1687 0 R /XYZ 79.822 354.384 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 339.44 null ] >> endobj 1719 0 obj -<< /D [ 1687 0 R /XYZ 79.822 343.425 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 328.481 null ] >> endobj 1720 0 obj -<< /D [ 1687 0 R /XYZ 79.822 263.723 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 317.522 null ] >> endobj 1721 0 obj -<< /D [ 1687 0 R /XYZ 79.822 252.765 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 267.709 null ] >> endobj 1722 0 obj -<< /D [ 1687 0 R /XYZ 79.822 179.041 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 256.75 null ] >> endobj 1723 0 obj -<< /D [ 1687 0 R /XYZ 79.822 168.082 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 245.791 null ] >> endobj 1724 0 obj -<< /D [ 1687 0 R /XYZ 79.822 157.123 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 234.832 null ] >> endobj 1725 0 obj -<< /D [ 1687 0 R /XYZ 79.822 146.164 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 223.873 null ] >> endobj 1726 0 obj -<< /D [ 1687 0 R /XYZ 79.822 135.205 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 212.914 null ] >> endobj 1727 0 obj -<< /D [ 1687 0 R /XYZ 79.822 124.247 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 201.955 null ] >> endobj 1728 0 obj -<< /D [ 1687 0 R /XYZ 79.822 113.288 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 190.996 null ] >> endobj 1729 0 obj -<< /D [ 1687 0 R /XYZ 79.822 102.329 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 180.037 null ] >> endobj 1730 0 obj -<< /D [ 1687 0 R /XYZ 79.822 91.37 null ] >> +<< /D [ 1688 0 R /XYZ 79.822 169.078 null ] >> endobj 1731 0 obj -<< /D [ 1687 0 R /XYZ 81.145 80.411 null ] >> -endobj -1686 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1688 0 R /XYZ 79.822 158.119 null ] >> endobj -1734 0 obj -<< /Filter /FlateDecode /Length 2425 >> -stream -x[n#7+0X g߂\SRܚnjI(#Xk9ӗ/]b ϿąuF0n/kO<!ԏSǼ1ҵ8F$톘/(ќ 3J%2`Dʔ}b[3i/$P1sy>K
xEZIp\h -[S
O[ -WSFOw#f*Kx2{z"@ate9k0 <u+@tB7{$⚞I(.jC PEZ!bp(갈Faj,pyM 'ܕH`"FJFPbݰNhnn"Occ@pӛ:9|Hĭ8@{ڗJ3:1SOH־,⎌d@']nxό(6o~R(/ +FrOLQM2oeׅVyl61y#R,`'^GQ0<y(5#cVd'od/N*kq-ZrNE+o7Q|T -%jY8tuAH4ߞ꽝nⳖf~)H`V)1YsDvD,?} sZ3kR6 M)愝RQ"5lT=QVo;*Ɵ-r'%sMBCAҫ -kN}G%Xĺ=Y -b~;4+>OlUMg\8gm]7(cꈿ8IPj9<b.%֞ӭzu@[Gڛ#Oۦ嬞vJ -+MS3Mߕ{8@F4k$(FMo>@UI0n}eG3qjl`tǣd(6I?Uْ&ʉ4K
HgS_EA92{t&2ʩw)חfڮ$S(YH딈)%kƀo -endstream +1732 0 obj +<< /D [ 1688 0 R /XYZ 79.822 147.161 null ] >> endobj 1733 0 obj -<< /Type /Page /Contents 1734 0 R /Resources 1732 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1688 0 R /XYZ 79.822 136.202 null ] >> endobj -1735 0 obj -<< /D [ 1733 0 R /XYZ 78.37 808.885 null ] >> +1734 0 obj +<< /D [ 1688 0 R /XYZ 79.822 125.243 null ] >> endobj -1736 0 obj -<< /D [ 1733 0 R /XYZ 81.145 768.829 null ] >> +1687 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1737 0 obj -<< /D [ 1733 0 R /XYZ 81.145 757.87 null ] >> +<< /Filter /FlateDecode /Length 2308 >> +stream +x[n$W4 $RI}_^dIn>d2|%_u?\&2K@/-C}$'qy8d9/#<D2nI'?1<vkQyM^똌 +⚡%@bs&[lԹ&4xxSٝYWRKvF^'ƫ8C +B֯9A@#pGHݲ(o:d]oݺ!v3,,C-Op<`KPr&v#7:1Ko{%gBH`G$o />*BX 2pdU~_/4MIg{9IKzfiw25Յ;Ժڜ5o"}h#$*IŜAr6@)g囼$k!}a![gx9z_TJzSJ+߶()h~9[y{Kz>W'C*a}N=ڞ#
#ؑ@喧%X(%+>mU6T0#t=ǥT0(ML1Q| +E6}XSIPZζ7Po$Eh)SAeSEҺ#wX?:)-N={rM%gw9ZxN`.!Zٲ%Q-H' +r,'+TB7[(dŚ~_Eew)p*%J1/,O?^+j]7㗉h"0+hڦM{r>QY̛~:ݲbLk;+̪)8ף<@.f3<'8g\TMsR~ڃjwILHꤠNJ}IN +*;)qINJUaF'\dgiFS!#T@+{műi NKb.% &jHY yЬfE;>ݬsܪYfhMn'9֧fFIvb,]3qkFڐvh8v63y].GZV4c,M])uJ~D\nVa[}٪,5$ZdRNCj~iJ&>o%~eՔSj@4$WH5[ ܀/1.FUW7HdRu(+0!Lwl_JSfG+`.eBYmxoqO +%Jg,4 "`Xq)v<oEiU).ZQr6<,a@:/ +S=OBmK|ԔtQ +(1LU(3Kcϡ"f2LSY7 +]HzquR({EO2ARxK^V)AbR{Ȁdsd/W9ICKK1~|+Ƒ)XFPZt&Lz>IFlSe +endstream +endobj +1736 0 obj +<< /Type /Page /Contents 1737 0 R /Resources 1735 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1738 0 obj -<< /D [ 1733 0 R /XYZ 81.145 696.421 null ] >> +<< /D [ 1736 0 R /XYZ 78.37 808.885 null ] >> endobj 1739 0 obj -<< /D [ 1733 0 R /XYZ 81.145 685.462 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 745.915 null ] >> endobj 1740 0 obj -<< /D [ 1733 0 R /XYZ 81.145 674.503 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 734.956 null ] >> endobj 1741 0 obj -<< /D [ 1733 0 R /XYZ 81.145 663.544 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 661.233 null ] >> endobj 1742 0 obj -<< /D [ 1733 0 R /XYZ 81.145 652.586 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 650.274 null ] >> endobj 1743 0 obj -<< /D [ 1733 0 R /XYZ 81.145 641.627 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 639.315 null ] >> endobj 1744 0 obj -<< /D [ 1733 0 R /XYZ 81.145 630.668 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 628.356 null ] >> endobj 1745 0 obj -<< /D [ 1733 0 R /XYZ 81.145 619.709 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 617.397 null ] >> endobj 1746 0 obj -<< /D [ 1733 0 R /XYZ 81.145 608.75 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 606.438 null ] >> endobj 1747 0 obj -<< /D [ 1733 0 R /XYZ 81.145 597.791 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 595.479 null ] >> endobj 1748 0 obj -<< /D [ 1733 0 R /XYZ 81.145 586.832 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 584.52 null ] >> endobj 1749 0 obj -<< /D [ 1733 0 R /XYZ 81.145 575.873 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 573.562 null ] >> endobj 1750 0 obj -<< /D [ 1733 0 R /XYZ 81.145 526.379 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 562.603 null ] >> endobj 1751 0 obj -<< /D [ 1733 0 R /XYZ 81.145 515.42 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 551.644 null ] >> endobj 1752 0 obj -<< /D [ 1733 0 R /XYZ 81.145 504.461 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 540.685 null ] >> endobj 1753 0 obj -<< /D [ 1733 0 R /XYZ 81.145 493.502 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 529.726 null ] >> endobj 1754 0 obj -<< /D [ 1733 0 R /XYZ 81.145 482.543 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 518.767 null ] >> endobj 1755 0 obj -<< /D [ 1733 0 R /XYZ 81.145 471.585 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 507.808 null ] >> endobj 1756 0 obj -<< /D [ 1733 0 R /XYZ 81.145 460.626 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 446.04 null ] >> endobj 1757 0 obj -<< /D [ 1733 0 R /XYZ 81.145 449.667 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 435.081 null ] >> endobj 1758 0 obj -<< /D [ 1733 0 R /XYZ 81.145 438.708 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 424.122 null ] >> endobj 1759 0 obj -<< /D [ 1733 0 R /XYZ 81.145 427.749 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 413.163 null ] >> endobj 1760 0 obj -<< /D [ 1733 0 R /XYZ 81.145 416.79 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 402.204 null ] >> endobj 1761 0 obj -<< /D [ 1733 0 R /XYZ 81.145 405.831 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 391.245 null ] >> endobj 1762 0 obj -<< /D [ 1733 0 R /XYZ 81.145 394.872 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 380.286 null ] >> endobj 1763 0 obj -<< /D [ 1733 0 R /XYZ 81.145 383.913 null ] >> +<< /D [ 1736 0 R /XYZ 79.822 369.327 null ] >> endobj 1764 0 obj -<< /D [ 1733 0 R /XYZ 81.145 372.954 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 358.369 null ] >> endobj 1765 0 obj -<< /D [ 1733 0 R /XYZ 81.145 361.995 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 347.41 null ] >> endobj 1766 0 obj -<< /D [ 1733 0 R /XYZ 81.145 300.546 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 336.451 null ] >> endobj 1767 0 obj -<< /D [ 1733 0 R /XYZ 81.145 289.587 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 325.492 null ] >> endobj 1768 0 obj -<< /D [ 1733 0 R /XYZ 81.145 278.628 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 314.533 null ] >> endobj 1769 0 obj -<< /D [ 1733 0 R /XYZ 81.145 240.834 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 264.72 null ] >> endobj 1770 0 obj -<< /D [ 1733 0 R /XYZ 81.145 229.875 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 253.761 null ] >> endobj 1771 0 obj -<< /D [ 1733 0 R /XYZ 81.145 218.916 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 242.802 null ] >> endobj 1772 0 obj -<< /D [ 1733 0 R /XYZ 81.145 207.957 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 231.843 null ] >> endobj 1773 0 obj -<< /D [ 1733 0 R /XYZ 81.145 196.999 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 220.884 null ] >> endobj 1774 0 obj -<< /D [ 1733 0 R /XYZ 81.145 186.04 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 209.925 null ] >> endobj 1775 0 obj -<< /D [ 1733 0 R /XYZ 81.145 175.081 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 198.966 null ] >> endobj 1776 0 obj -<< /D [ 1733 0 R /XYZ 81.145 164.122 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 188.007 null ] >> endobj 1777 0 obj -<< /D [ 1733 0 R /XYZ 81.145 153.163 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 177.049 null ] >> endobj 1778 0 obj -<< /D [ 1733 0 R /XYZ 81.145 142.204 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 166.09 null ] >> endobj 1779 0 obj -<< /D [ 1733 0 R /XYZ 81.145 131.245 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 155.131 null ] >> endobj 1780 0 obj -<< /D [ 1733 0 R /XYZ 81.145 120.286 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 144.172 null ] >> endobj 1781 0 obj -<< /D [ 1733 0 R /XYZ 81.145 109.327 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 133.213 null ] >> endobj 1782 0 obj -<< /D [ 1733 0 R /XYZ 81.145 98.368 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 122.254 null ] >> endobj 1783 0 obj -<< /D [ 1733 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 1736 0 R /XYZ 81.145 111.295 null ] >> endobj -1732 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +1784 0 obj +<< /D [ 1736 0 R /XYZ 81.145 100.336 null ] >> endobj -1786 0 obj -<< /Filter /FlateDecode /Length 2343 >> +1735 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +1787 0 obj +<< /Filter /FlateDecode /Length 2647 >> stream -x[n6+ı]nU[>%٤).ty83#3u=ߟ~^;H@8$L˃тq-x\q~?CXyi0#~@Oc9iS"w*rN8ϥsch]tڇ3G`a4א%Ba?7 rm~kgEapNӅ@)y<x&2UpN>`+[އE(땤+pYNʼn3yP2Z -khS}ߵ4WX{.Oj`ILbȵUi 舥r93ϗ)O1ڵN:vI`Ґ]˹"0ᨙsxѱefEW_~n-):Ŋ^\j]%94+4.kN\3a\kL&K3L4pfx -Yp
m._X| $Sf)⥌a]BaJ/5rqdmJkAXNkSr0]:|DŽ#u(RM 'TF\l@ug&}{6n*ܴ9K{rXǂ(#A1K_C>һMɹrSd0vG}|$yu6jYᦜ@Ŕ=RL]Wl/i$o@B}m-g/b=1Xԕyx\ئeKܒdpjRCiJ;fXl&-H>54k\+{&Ki14KRS^Nw>meV8ש!͏Df0ؿ(Z|$~!츽<cE}cWRb[nxRET.9sIRsHeQTD$ɉE8Ynm漇Q՜AKcGqP{-ҞJLNfjݯ.'u46Aj*3(NZ-b}V[
&5haEנ#Zf|s1\6>nYF0!-ۨvڽCj[\'p>WVph*,m3a-v"
i&G-$:g
t%)20Ȩ5CfG -ƅbT%hrOdP %z)1aTrdZ ix}) $v&[i0ais]i~$V3dUYuH#1zUQT->qzZ2pdΝ!})B!k]P7 iWAGݦsI=lCrבhOyTH`h@Ru4in;CgWTg\d/P0 @q?sHI +x\n#9W&
08-96iܷIUKR.+`NWN9
O!
~'4'Z>+r.^J{
/S~iꫜć<*ogLK15@OMz +Ɗ=5̟̇Nϡh"n,R1$jH + +TtᰗyduDt<ooT*A;堰&@JJ9z;
3%"'$9y?Ɖ(3S +[,]wIt&q7&/:F U0yX >ven"MuebO<PnG%}t
+},#{N)R.>QQZ~(TuJ%)FH%%Fzl`ZE$93襫H)̹FZfinq/m?:N(,yP^ķ~fF%]A|.Q>$ٔ?EZ:a%(;cZLRRt̹H&~2T^DXEQqh"Uz/k*61_
ee+c)Λn2t) OJ&jRH6+|R}jw-D/ +4=W(J
̔-)mGD*)\Ia2/mJi3:a? LsKʏkEe)KWBI,nY5I.TqѮ`%#j[FpH+ǰA<C3e+U1M2c"D("zV=Gp/Z֮/??[WpOO~)kb{,:RJ#6a4lexE:`gI1_d +oys@$]7R2~rk&7އn:|wBX~ȴl K:=nh endstream endobj -1785 0 obj -<< /Type /Page /Contents 1786 0 R /Resources 1784 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> -endobj -1787 0 obj -<< /D [ 1785 0 R /XYZ 78.37 808.885 null ] >> +1786 0 obj +<< /Type /Page /Contents 1787 0 R /Resources 1785 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1788 0 obj -<< /D [ 1785 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 1786 0 R /XYZ 78.37 808.885 null ] >> endobj 1789 0 obj -<< /D [ 1785 0 R /XYZ 81.145 752.889 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 733.96 null ] >> endobj 1790 0 obj -<< /D [ 1785 0 R /XYZ 81.145 741.93 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 723.001 null ] >> endobj 1791 0 obj -<< /D [ 1785 0 R /XYZ 81.145 730.971 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 712.042 null ] >> endobj 1792 0 obj -<< /D [ 1785 0 R /XYZ 81.145 720.012 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 662.253 null ] >> endobj 1793 0 obj -<< /D [ 1785 0 R /XYZ 81.145 709.053 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 651.294 null ] >> endobj 1794 0 obj -<< /D [ 1785 0 R /XYZ 81.145 698.095 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 640.335 null ] >> endobj 1795 0 obj -<< /D [ 1785 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 629.376 null ] >> endobj 1796 0 obj -<< /D [ 1785 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 618.417 null ] >> endobj 1797 0 obj -<< /D [ 1785 0 R /XYZ 81.145 621.382 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 607.459 null ] >> endobj 1798 0 obj -<< /D [ 1785 0 R /XYZ 81.145 610.423 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 596.5 null ] >> endobj 1799 0 obj -<< /D [ 1785 0 R /XYZ 81.145 599.464 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 585.541 null ] >> endobj 1800 0 obj -<< /D [ 1785 0 R /XYZ 81.145 588.506 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 574.582 null ] >> endobj 1801 0 obj -<< /D [ 1785 0 R /XYZ 81.145 577.547 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 563.623 null ] >> endobj 1802 0 obj -<< /D [ 1785 0 R /XYZ 81.145 566.588 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 552.664 null ] >> endobj 1803 0 obj -<< /D [ 1785 0 R /XYZ 81.145 555.629 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 541.705 null ] >> endobj 1804 0 obj -<< /D [ 1785 0 R /XYZ 81.145 544.67 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 530.746 null ] >> endobj 1805 0 obj -<< /D [ 1785 0 R /XYZ 81.145 533.711 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 519.787 null ] >> endobj 1806 0 obj -<< /D [ 1785 0 R /XYZ 81.145 522.752 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 508.828 null ] >> endobj 1807 0 obj -<< /D [ 1785 0 R /XYZ 81.145 511.793 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 497.87 null ] >> endobj 1808 0 obj -<< /D [ 1785 0 R /XYZ 81.145 500.834 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 486.911 null ] >> endobj 1809 0 obj -<< /D [ 1785 0 R /XYZ 81.145 489.875 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 475.952 null ] >> endobj 1810 0 obj -<< /D [ 1785 0 R /XYZ 81.145 478.917 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 464.993 null ] >> endobj 1811 0 obj -<< /D [ 1785 0 R /XYZ 81.145 467.958 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 454.034 null ] >> endobj 1812 0 obj -<< /D [ 1785 0 R /XYZ 81.145 456.999 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 443.075 null ] >> endobj 1813 0 obj -<< /D [ 1785 0 R /XYZ 81.145 446.04 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 432.116 null ] >> endobj 1814 0 obj -<< /D [ 1785 0 R /XYZ 81.145 435.081 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 421.157 null ] >> endobj 1815 0 obj -<< /D [ 1785 0 R /XYZ 81.145 424.122 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 410.198 null ] >> endobj 1816 0 obj -<< /D [ 1785 0 R /XYZ 81.145 413.163 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 399.239 null ] >> endobj 1817 0 obj -<< /D [ 1785 0 R /XYZ 81.145 402.204 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 388.281 null ] >> endobj 1818 0 obj -<< /D [ 1785 0 R /XYZ 81.145 391.245 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 377.322 null ] >> endobj 1819 0 obj -<< /D [ 1785 0 R /XYZ 81.145 380.286 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 366.363 null ] >> endobj 1820 0 obj -<< /D [ 1785 0 R /XYZ 81.145 369.327 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 355.404 null ] >> endobj 1821 0 obj -<< /D [ 1785 0 R /XYZ 81.145 358.369 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 335.551 null ] >> endobj 1822 0 obj -<< /D [ 1785 0 R /XYZ 81.145 347.41 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 324.592 null ] >> endobj 1823 0 obj -<< /D [ 1785 0 R /XYZ 81.145 336.451 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 308.699 null ] >> endobj 1824 0 obj -<< /D [ 1785 0 R /XYZ 81.145 325.492 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 297.741 null ] >> endobj 1825 0 obj -<< /D [ 1785 0 R /XYZ 81.145 314.533 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 286.782 null ] >> endobj 1826 0 obj -<< /D [ 1785 0 R /XYZ 81.145 303.574 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 275.823 null ] >> endobj 1827 0 obj -<< /D [ 1785 0 R /XYZ 81.145 292.615 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 264.864 null ] >> endobj 1828 0 obj -<< /D [ 1785 0 R /XYZ 81.145 281.656 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 253.905 null ] >> endobj 1829 0 obj -<< /D [ 1785 0 R /XYZ 81.145 270.697 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 226.058 null ] >> endobj 1830 0 obj -<< /D [ 1785 0 R /XYZ 81.145 259.738 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 215.099 null ] >> endobj 1831 0 obj -<< /D [ 1785 0 R /XYZ 81.145 248.78 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 177.265 null ] >> endobj 1832 0 obj -<< /D [ 1785 0 R /XYZ 81.145 237.821 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 166.306 null ] >> endobj 1833 0 obj -<< /D [ 1785 0 R /XYZ 81.145 226.862 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 155.347 null ] >> endobj 1834 0 obj -<< /D [ 1785 0 R /XYZ 81.145 215.903 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 144.388 null ] >> endobj 1835 0 obj -<< /D [ 1785 0 R /XYZ 81.145 204.944 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 133.429 null ] >> endobj 1836 0 obj -<< /D [ 1785 0 R /XYZ 81.145 193.985 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 122.47 null ] >> endobj 1837 0 obj -<< /D [ 1785 0 R /XYZ 81.145 183.026 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 111.511 null ] >> endobj 1838 0 obj -<< /D [ 1785 0 R /XYZ 81.145 172.067 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 100.552 null ] >> endobj 1839 0 obj -<< /D [ 1785 0 R /XYZ 81.145 161.108 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 89.593 null ] >> endobj 1840 0 obj -<< /D [ 1785 0 R /XYZ 81.145 150.149 null ] >> +<< /D [ 1786 0 R /XYZ 81.145 78.635 null ] >> endobj -1841 0 obj -<< /D [ 1785 0 R /XYZ 81.145 139.19 null ] >> -endobj -1842 0 obj -<< /D [ 1785 0 R /XYZ 81.145 128.232 null ] >> +1785 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1843 0 obj -<< /D [ 1785 0 R /XYZ 81.145 117.273 null ] >> +<< /Filter /FlateDecode /Length 2297 >> +stream +x[n+aU|Fv0.f;wu;|J$UYdиh:a=KߓjI'u?u >9R)ϗ>| ,Bz}"XQ`r0#AD + i\3d +NHJx%*%PI\Uf
:);"FhFkњRnT{)J#Q!gȑ,ꎸH +aUrTF >iFcR`PK6VNsf[gB[R*&$%&-fUDj9O
J j; VRxH&ʜR;;t/rd1yn:{ۍ[6;Dn<b1ÐrUKUϞ˼l|'ϕ_BOrY1!:'td<oL>,Rqn^;ܘsj&Z)-L!>˅X +0
wnon#uWBRYVN\dCK9zvоJ/3vKnrȦ+ѽZgFןʕޚ-JM$OfW0Ng&lZU}bg5^ݑqGusXLKvކl< #hkMiM Žt.WiԇiAZղ~t;O;!UMɕ'9y]]dZ#@ +@v;&DڎP 0$lɩ$6&˧M(_^W,b3bݮ?Hd9~)d So}SܲBp|{ٿik9Q~QuwTǽ뙮}YΗB!gv&$Ho*S*l5> l gws +endstream endobj -1844 0 obj -<< /D [ 1785 0 R /XYZ 81.145 106.314 null ] >> +1842 0 obj +<< /Type /Page /Contents 1843 0 R /Resources 1841 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj -1784 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +1844 0 obj +<< /D [ 1842 0 R /XYZ 78.37 808.885 null ] >> endobj -1847 0 obj -<< /Filter /FlateDecode /Length 2747 >> -stream -x[n$+MwPJ4n_jn-Yd`i)G#yυ{"5oBb(qъ뿗J?R__|Aތba#T8$pH];t}SJ{>"=!4# u u&Ccow'O0 -C~\iT{ϴG`Y >9"fҜ3eȒg3YSɖjۿQZhz7&/1 -bu8.B4W?;ULs"ٮeO5<jQ^Cx=jCw@` -tZ:Ç͞RHYb 3W#*\eҌdbFkڳ6|>@kN౾%_i4[gl -PNn
0:+{6ZQh -ߐU|-*Մ葦G;,_O{B_hO)yO5rOo;
Z~\ -V``2nJ0朘1-tQI=eeh¤[{g';Qj*l4yڥ^ړn -9 -nM(D*<^.Fl)[ 7e϶m%Wi҆\h'R¨*)=)4ޏ}kZ;s'
anݸmÄًgTom?K@wмl: -bfx}x)܋5#?.%yMp)_Ďe"HG+eVLRRj5ZDFmafgrȇ`5^j"ګE>{iW+xإ~%{<0ScթOԺVbՔLʺʮk~('~L)WSٰX#I f
Dw`*(x@MSQ>hW+Lk2dlW<ꖏLZpب(1R&bNy;>tzP-C^\r;&'%.]&#埌c=[qZsm- -1Z͂D/l~WG-<}̢Wf").#Pm|ΰf%@#+-ntH[4SXaH3Қ!%Дk+M/tqD}=9D>fctG:<~i#<u0YwqX_CZ -endstream +1845 0 obj +<< /D [ 1842 0 R /XYZ 81.145 768.829 null ] >> endobj 1846 0 obj -<< /Type /Page /Contents 1847 0 R /Resources 1845 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1842 0 R /XYZ 81.145 757.87 null ] >> +endobj +1847 0 obj +<< /D [ 1842 0 R /XYZ 81.145 746.912 null ] >> endobj 1848 0 obj -<< /D [ 1846 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 735.953 null ] >> endobj 1849 0 obj -<< /D [ 1846 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 724.994 null ] >> endobj 1850 0 obj -<< /D [ 1846 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 714.035 null ] >> endobj 1851 0 obj -<< /D [ 1846 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 703.076 null ] >> endobj 1852 0 obj -<< /D [ 1846 0 R /XYZ 81.145 709.053 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 692.117 null ] >> endobj 1853 0 obj -<< /D [ 1846 0 R /XYZ 81.145 671.195 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 681.158 null ] >> endobj 1854 0 obj -<< /D [ 1846 0 R /XYZ 81.145 660.237 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 670.199 null ] >> endobj 1855 0 obj -<< /D [ 1846 0 R /XYZ 81.145 649.278 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 659.24 null ] >> endobj 1856 0 obj -<< /D [ 1846 0 R /XYZ 81.145 638.319 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 648.281 null ] >> endobj 1857 0 obj -<< /D [ 1846 0 R /XYZ 81.145 627.36 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 637.322 null ] >> endobj 1858 0 obj -<< /D [ 1846 0 R /XYZ 81.145 616.401 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 626.364 null ] >> endobj 1859 0 obj -<< /D [ 1846 0 R /XYZ 81.145 605.442 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 615.405 null ] >> endobj 1860 0 obj -<< /D [ 1846 0 R /XYZ 81.145 594.483 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 604.446 null ] >> endobj 1861 0 obj -<< /D [ 1846 0 R /XYZ 81.145 583.524 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 593.487 null ] >> endobj 1862 0 obj -<< /D [ 1846 0 R /XYZ 81.145 572.565 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 582.528 null ] >> endobj 1863 0 obj -<< /D [ 1846 0 R /XYZ 81.145 561.606 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 571.569 null ] >> endobj 1864 0 obj -<< /D [ 1846 0 R /XYZ 81.145 550.648 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 560.61 null ] >> endobj 1865 0 obj -<< /D [ 1846 0 R /XYZ 81.145 539.689 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 549.651 null ] >> endobj 1866 0 obj -<< /D [ 1846 0 R /XYZ 81.145 528.73 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 538.692 null ] >> endobj 1867 0 obj -<< /D [ 1846 0 R /XYZ 81.145 517.771 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 527.733 null ] >> endobj 1868 0 obj -<< /D [ 1846 0 R /XYZ 81.145 479.913 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 516.775 null ] >> endobj 1869 0 obj -<< /D [ 1846 0 R /XYZ 81.145 468.954 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 505.816 null ] >> endobj 1870 0 obj -<< /D [ 1846 0 R /XYZ 81.145 457.995 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 494.857 null ] >> endobj 1871 0 obj -<< /D [ 1846 0 R /XYZ 81.145 447.036 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 483.898 null ] >> endobj 1872 0 obj -<< /D [ 1846 0 R /XYZ 81.145 397.223 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 472.939 null ] >> endobj 1873 0 obj -<< /D [ 1846 0 R /XYZ 81.145 386.264 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 461.98 null ] >> endobj 1874 0 obj -<< /D [ 1846 0 R /XYZ 81.145 360.361 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 451.021 null ] >> endobj 1875 0 obj -<< /D [ 1846 0 R /XYZ 81.145 349.402 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 440.062 null ] >> endobj 1876 0 obj -<< /D [ 1846 0 R /XYZ 81.145 311.544 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 429.103 null ] >> endobj 1877 0 obj -<< /D [ 1846 0 R /XYZ 81.145 300.585 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 418.144 null ] >> endobj 1878 0 obj -<< /D [ 1846 0 R /XYZ 81.145 289.626 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 407.186 null ] >> endobj 1879 0 obj -<< /D [ 1846 0 R /XYZ 81.145 278.667 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 396.227 null ] >> endobj 1880 0 obj -<< /D [ 1846 0 R /XYZ 81.145 267.709 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 385.268 null ] >> endobj 1881 0 obj -<< /D [ 1846 0 R /XYZ 81.145 256.75 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 374.309 null ] >> endobj 1882 0 obj -<< /D [ 1846 0 R /XYZ 81.145 245.791 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 363.35 null ] >> endobj 1883 0 obj -<< /D [ 1846 0 R /XYZ 81.145 234.832 null ] >> -endobj -241 0 obj -<< /D [ 1846 0 R /XYZ 79.37 211.375 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 325.492 null ] >> endobj 1884 0 obj -<< /D [ 1846 0 R /XYZ 81.145 169.611 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 314.533 null ] >> endobj 1885 0 obj -<< /D [ 1846 0 R /XYZ 81.145 158.653 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 303.574 null ] >> endobj 1886 0 obj -<< /D [ 1846 0 R /XYZ 81.145 147.694 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 265.716 null ] >> endobj 1887 0 obj -<< /D [ 1846 0 R /XYZ 81.145 136.735 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 227.858 null ] >> endobj 1888 0 obj -<< /D [ 1846 0 R /XYZ 81.145 125.776 null ] >> -endobj -1845 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1842 0 R /XYZ 81.145 216.899 null ] >> endobj -1891 0 obj -<< /Filter /FlateDecode /Length 1860 >> -stream -xZˎWRC/`0@{lȺwA)TY%Ͻθ-ԃu.*ۗo]Ӡ|W,֏J9?TKP_.s&lqaBR' X ]5J]z5||͈͢n{Icw0uۻwc*)8n~+.x -Bֽ)jHpL[?#h4'g+wQ^,#}|G[O.s/_T{-[1Na|HwG$·nyUesqbq[jFLhn{<zd2sU<DU,V#kqF{^/Vj <`u¨(OEh3qFn#|)E)4R.Z0srWk\zw+/[ư8 -;#ßZz*PYgC57)k|$.Tb5ϯ8P* Ȭr&,BGS(R\;7Oyջ@kdyTqB:}we@[6U*9!ڲyjAG.S {9X+4#BNH]_WޱdJ8!J]kJ3tPe6ўJNHnsTnI%gayVjҊQ Cl7_۫f;oK}oRVN:dG{Yed1_mN.Nh.ĹĨ4-&gs`ssG0:~+6R|>3ZGd7吷 0^[ehhtRa -endstream +1889 0 obj +<< /D [ 1842 0 R /XYZ 81.145 205.94 null ] >> endobj 1890 0 obj -<< /Type /Page /Contents 1891 0 R /Resources 1889 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1842 0 R /XYZ 81.145 194.981 null ] >> +endobj +1891 0 obj +<< /D [ 1842 0 R /XYZ 81.145 184.022 null ] >> endobj 1892 0 obj -<< /D [ 1890 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 173.063 null ] >> endobj 1893 0 obj -<< /D [ 1890 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 162.105 null ] >> endobj 1894 0 obj -<< /D [ 1890 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 151.146 null ] >> endobj 1895 0 obj -<< /D [ 1890 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 140.187 null ] >> endobj 1896 0 obj -<< /D [ 1890 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 129.228 null ] >> endobj 1897 0 obj -<< /D [ 1890 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 118.269 null ] >> endobj 1898 0 obj -<< /D [ 1890 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 107.31 null ] >> endobj 1899 0 obj -<< /D [ 1890 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 96.351 null ] >> endobj 1900 0 obj -<< /D [ 1890 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 1842 0 R /XYZ 81.145 85.392 null ] >> endobj -1901 0 obj -<< /D [ 1890 0 R /XYZ 81.145 665.218 null ] >> -endobj -1902 0 obj -<< /D [ 1890 0 R /XYZ 81.145 654.259 null ] >> +1841 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1903 0 obj -<< /D [ 1890 0 R /XYZ 81.145 627.36 null ] >> +<< /Filter /FlateDecode /Length 2692 >> +stream +x[n+&ouvUC":Ic0hcaXuA3}yY_~>(材pyO\0.ƍuʹ2~>8捑R3L6?] $3a#֟z$P%/=
҆~e
@W|o!?ه4ըg{(W@_ %GpN0mg"Ü
GIZe%! +%:*tؠ˚5[|i +ZGݝ+Fb'ϯau\cMOy<i鉥AXlwn +2MRʘ#y9oskcֺǒ'<Oz"GTvN^єd-_4q(l<q6\7>\0C>7H"$vC#'ˬkqzdbv+>NYƷcn30n@ɭ% +Q:rC뷍Å¢W]>.kW\9o'!g\gjCg*T$obC/79G#M3YEDN2(
5,U:O<L%E'j*fVgo0Ig9xVW!e极ޗVm< +fJj>{MdM!$Uyy
ͦ+UD4Dl^5#&ރu'8+$:)*ԥDDmԊ4S2ǪaؑseDT$|Hc|"ʈFlo?vG&uA#ݻ9;kFeT\2OD[&tHRhM`&ʠ|AwA[n]-3!{jsY%En;.LZ~%i7(^TD[aNI +vFl1U~@+bP)gtUT
z"V8X'mR֚g)IZ(/2A!CnP!%b[04t?p^U_CUӳjY@NQhChͼQS6UGe խRR;$Thm_?1IJDp7{/k7mm# +Au[mà1j)D:f_ FA,?VBʒmy6Dۺ@EMǡVU\BV E7{RRw!E!VJ!7qk qqDG}`6R1.6w'hZ[\f]'Z]xizGWPz),MR3u/ &.C64.-w$m^g꾛o!ODD8j +(FXWQbgM(jhqrz~
uj֊]s ˘yfhC>~Zh` + +>Rp|3 +#siqinW6hwEۦmK<+glQ֬
[{-5oR;:cLZߪԼӺ)9'i%gCINqws\\.j&~h
zBwHl& 7óy4a4j.:B:Ȃk/bz{"PE\7k식tzBusz i/XP!h3<9V-p]jm)'S -<*2v*g71 萎-~?1{v $jS=5!9bܚGo6f^DqHiG:[lPo%.ݒ#IN٘u@LϺY۶3TiMX`2@+֍IsyR5ӖP;sß#5>0NqOz6(nOp,vHAsIDLutڙn̓(*&wC
)
48G +8l+43_ct!%bddV\2`2 emӼ'ax^O)k^0+Ój:cjK4Ė3ij?n1>%~ݙQB8>xZqWo& +endstream +endobj +1902 0 obj +<< /Type /Page /Contents 1903 0 R /Resources 1901 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj 1904 0 obj -<< /D [ 1890 0 R /XYZ 81.145 616.401 null ] >> +<< /D [ 1902 0 R /XYZ 78.37 808.885 null ] >> endobj 1905 0 obj -<< /D [ 1890 0 R /XYZ 81.145 605.442 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 768.829 null ] >> endobj 1906 0 obj -<< /D [ 1890 0 R /XYZ 81.145 594.483 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 757.87 null ] >> endobj 1907 0 obj -<< /D [ 1890 0 R /XYZ 81.145 583.524 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 746.912 null ] >> endobj 1908 0 obj -<< /D [ 1890 0 R /XYZ 81.145 572.565 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 709.191 null ] >> endobj 1909 0 obj -<< /D [ 1890 0 R /XYZ 81.145 561.606 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 671.47 null ] >> endobj 1910 0 obj -<< /D [ 1890 0 R /XYZ 81.145 550.648 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 660.511 null ] >> endobj 1911 0 obj -<< /D [ 1890 0 R /XYZ 81.145 539.689 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 649.552 null ] >> endobj 1912 0 obj -<< /D [ 1890 0 R /XYZ 81.145 528.73 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 638.593 null ] >> endobj 1913 0 obj -<< /D [ 1890 0 R /XYZ 81.145 517.771 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 589.466 null ] >> endobj 1914 0 obj -<< /D [ 1890 0 R /XYZ 81.145 506.812 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 578.507 null ] >> endobj 1915 0 obj -<< /D [ 1890 0 R /XYZ 81.145 495.853 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 552.741 null ] >> endobj 1916 0 obj -<< /D [ 1890 0 R /XYZ 81.145 484.894 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 541.782 null ] >> endobj 1917 0 obj -<< /D [ 1890 0 R /XYZ 81.145 473.935 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 504.062 null ] >> endobj 1918 0 obj -<< /D [ 1890 0 R /XYZ 81.145 462.976 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 493.103 null ] >> endobj 1919 0 obj -<< /D [ 1890 0 R /XYZ 81.145 452.017 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 482.144 null ] >> endobj 1920 0 obj -<< /D [ 1890 0 R /XYZ 81.145 441.058 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 471.185 null ] >> endobj 1921 0 obj -<< /D [ 1890 0 R /XYZ 81.145 430.1 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 460.226 null ] >> endobj 1922 0 obj -<< /D [ 1890 0 R /XYZ 81.145 419.141 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 449.267 null ] >> endobj 1923 0 obj -<< /D [ 1890 0 R /XYZ 81.145 408.182 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 438.308 null ] >> endobj 1924 0 obj -<< /D [ 1890 0 R /XYZ 81.145 397.223 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 427.349 null ] >> +endobj +245 0 obj +<< /D [ 1902 0 R /XYZ 79.37 404.579 null ] >> endobj 1925 0 obj -<< /D [ 1890 0 R /XYZ 81.145 386.264 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 363.226 null ] >> endobj 1926 0 obj -<< /D [ 1890 0 R /XYZ 81.145 375.305 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 352.267 null ] >> endobj 1927 0 obj -<< /D [ 1890 0 R /XYZ 81.145 364.346 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 341.309 null ] >> endobj 1928 0 obj -<< /D [ 1890 0 R /XYZ 81.145 353.387 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 330.35 null ] >> endobj 1929 0 obj -<< /D [ 1890 0 R /XYZ 81.145 342.428 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 319.391 null ] >> endobj 1930 0 obj -<< /D [ 1890 0 R /XYZ 81.145 331.469 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 295.17 null ] >> endobj 1931 0 obj -<< /D [ 1890 0 R /XYZ 81.145 320.511 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 284.211 null ] >> endobj 1932 0 obj -<< /D [ 1890 0 R /XYZ 81.145 309.552 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 273.252 null ] >> endobj 1933 0 obj -<< /D [ 1890 0 R /XYZ 81.145 298.593 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 262.293 null ] >> endobj 1934 0 obj -<< /D [ 1890 0 R /XYZ 81.145 287.634 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 251.334 null ] >> endobj 1935 0 obj -<< /D [ 1890 0 R /XYZ 81.145 276.675 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 240.376 null ] >> endobj 1936 0 obj -<< /D [ 1890 0 R /XYZ 81.145 265.716 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 229.417 null ] >> endobj 1937 0 obj -<< /D [ 1890 0 R /XYZ 81.145 254.757 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 218.458 null ] >> endobj 1938 0 obj -<< /D [ 1890 0 R /XYZ 81.145 243.798 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 192.382 null ] >> endobj 1939 0 obj -<< /D [ 1890 0 R /XYZ 81.145 232.839 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 181.423 null ] >> endobj 1940 0 obj -<< /D [ 1890 0 R /XYZ 81.145 221.88 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 155.347 null ] >> endobj 1941 0 obj -<< /D [ 1890 0 R /XYZ 81.145 210.921 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 144.388 null ] >> endobj 1942 0 obj -<< /D [ 1890 0 R /XYZ 81.145 199.963 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 133.429 null ] >> endobj 1943 0 obj -<< /D [ 1890 0 R /XYZ 81.145 189.004 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 122.47 null ] >> endobj 1944 0 obj -<< /D [ 1890 0 R /XYZ 81.145 178.045 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 111.511 null ] >> endobj 1945 0 obj -<< /D [ 1890 0 R /XYZ 81.145 167.086 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 100.552 null ] >> endobj 1946 0 obj -<< /D [ 1890 0 R /XYZ 81.145 136.202 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 89.593 null ] >> endobj 1947 0 obj -<< /D [ 1890 0 R /XYZ 81.145 125.243 null ] >> +<< /D [ 1902 0 R /XYZ 81.145 78.635 null ] >> endobj -1948 0 obj -<< /D [ 1890 0 R /XYZ 81.145 114.284 null ] >> -endobj -1949 0 obj -<< /D [ 1890 0 R /XYZ 81.145 103.325 null ] >> +1901 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1950 0 obj -<< /D [ 1890 0 R /XYZ 81.145 92.366 null ] >> +<< /Filter /FlateDecode /Length 1767 >> +stream +xZˎ#9W-h4Ps{9_WJI)%cn"TAI6.^L?oϷow.)Z<_`|u1s~\7S2Է{K=-3[cne4h)?sw~M?sCل79֠ۻ.IMI{Dy.;yb1`I1D]#Q=aXl +JgVeKv-1\_tFʍZXx*x~5L$JǜhW=dBOCNHޮպv*-9'#ǻchlz{,Jc k®</:g֔O1(HRwWrpJ"7NHSךm3uPe$Ei#o+>UKi'1*<y. G{ͫON";X':|'n+g"wze]+Ao)}Dgˬ첔ٷ\'^
Qm9[ᒾQߕ,Ի,V;*{ 8f92irDfg[q2Dq#}l`EqnOWm-7\ݷzgYGG3ٚ\ճ[1ÁTONʷ-w%gG%\*8{r&W!3~r<5+ʮ|B*]"㪞m]JD%&d%A$2DuOxsn +0@eu/#նteUZ^g|MGyDzӮ۱Цc0I)z;"2q8ʎxZ_;2da\|Ut,uMoghXjɳc('m`H!"'g$/82mp]~ܽ]Gc[lhDDIi~ULDg;9veFBnZ@6Yg
;kslEԚ5w1)P]xj+Ǘ~oZ="-=? m^t#ukkw_-[m=Ǔ[ek@v3yXUu֕#ؗxiZTraV$ubDgl^lc2")B2/\ؓȒUńgb8#ˈT焤f"8
xyϗ?OmY1;c\%@ͳ-1Ჳ&.C +endstream endobj -1951 0 obj -<< /D [ 1890 0 R /XYZ 81.145 81.407 null ] >> +1949 0 obj +<< /Type /Page /Contents 1950 0 R /Resources 1948 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1531 0 R >> endobj -1889 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +1951 0 obj +<< /D [ 1949 0 R /XYZ 78.37 808.885 null ] >> endobj -1954 0 obj -<< /Filter /FlateDecode /Length 2090 >> -stream -x[n6)%g! .snE-EnRÏX -s$\_??iB8N2S'ɒRRZ/%?>9qPz$LO$1R( #I0z$hoLuSJogƹa\}
*|~.cջp2^(C4%ҚFU+cJN HpZ -+$ЙݴSq2uh6 - -ewZ(kŏֶݫڧJgU7W-BUZ97ćpԒY8)Mvit&e9f%eIZ7,@0v;U8)r?pydW&% vH
oBitzQZw^+?-N1^gtڂyq0-i_Tk<kOŘg -)\+_',jxҳeEQh we -kP
ϚHkvu -іվ=6RO,uMR\-\Ѯ>Q\:+<rBClY -9BVX
Cb"$@${:aQ*7"lA
>DHyZW}h7?-0 -kŝK#/ -EVzDCtoͫւjl -P+my!
)U&Z1f:aSP"L{!(CQ76#K},gFA&ĿCx'7҈^-[M=2)(AT(uCDQK-cd=U}r#/$h0ˀ%ЖV#71;UW#htdC楝&?VHڥ?Sv݊H#>F4Rq-G]Zř|]$ -:v!rDI -S;44®xl}Qi;J9_)=N;(ޢe8k1~J_G|:<j~SkMc<
*KNZ -RtS轿= -endstream +1952 0 obj +<< /D [ 1949 0 R /XYZ 81.145 768.829 null ] >> endobj 1953 0 obj -<< /Type /Page /Contents 1954 0 R /Resources 1952 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1949 0 R /XYZ 81.145 757.87 null ] >> +endobj +1954 0 obj +<< /D [ 1949 0 R /XYZ 81.145 746.912 null ] >> endobj 1955 0 obj -<< /D [ 1953 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 735.953 null ] >> endobj 1956 0 obj -<< /D [ 1953 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 724.994 null ] >> endobj 1957 0 obj -<< /D [ 1953 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 714.035 null ] >> endobj 1958 0 obj -<< /D [ 1953 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 703.076 null ] >> endobj 1959 0 obj -<< /D [ 1953 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 692.117 null ] >> endobj 1960 0 obj -<< /D [ 1953 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 681.158 null ] >> endobj 1961 0 obj -<< /D [ 1953 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 670.199 null ] >> endobj 1962 0 obj -<< /D [ 1953 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 659.24 null ] >> endobj 1963 0 obj -<< /D [ 1953 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 648.281 null ] >> endobj 1964 0 obj -<< /D [ 1953 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 637.322 null ] >> endobj 1965 0 obj -<< /D [ 1953 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 626.364 null ] >> endobj 1966 0 obj -<< /D [ 1953 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 615.405 null ] >> endobj 1967 0 obj -<< /D [ 1953 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 604.446 null ] >> endobj 1968 0 obj -<< /D [ 1953 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 593.487 null ] >> endobj 1969 0 obj -<< /D [ 1953 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 582.528 null ] >> endobj 1970 0 obj -<< /D [ 1953 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 571.569 null ] >> endobj 1971 0 obj -<< /D [ 1953 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 560.61 null ] >> endobj 1972 0 obj -<< /D [ 1953 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 549.651 null ] >> endobj 1973 0 obj -<< /D [ 1953 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 538.692 null ] >> endobj 1974 0 obj -<< /D [ 1953 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 527.733 null ] >> endobj 1975 0 obj -<< /D [ 1953 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 516.775 null ] >> endobj 1976 0 obj -<< /D [ 1953 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 505.816 null ] >> endobj 1977 0 obj -<< /D [ 1953 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 494.857 null ] >> endobj 1978 0 obj -<< /D [ 1953 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 483.898 null ] >> endobj 1979 0 obj -<< /D [ 1953 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 472.939 null ] >> endobj 1980 0 obj -<< /D [ 1953 0 R /XYZ 81.145 505.816 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 461.98 null ] >> endobj 1981 0 obj -<< /D [ 1953 0 R /XYZ 81.145 452.099 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 451.021 null ] >> endobj 1982 0 obj -<< /D [ 1953 0 R /XYZ 81.145 410.338 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 440.062 null ] >> endobj 1983 0 obj -<< /D [ 1953 0 R /XYZ 81.145 399.379 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 429.103 null ] >> endobj 1984 0 obj -<< /D [ 1953 0 R /XYZ 81.145 388.421 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 418.144 null ] >> endobj 1985 0 obj -<< /D [ 1953 0 R /XYZ 81.145 377.462 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 407.186 null ] >> endobj 1986 0 obj -<< /D [ 1953 0 R /XYZ 81.145 366.503 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 396.227 null ] >> endobj 1987 0 obj -<< /D [ 1953 0 R /XYZ 81.145 355.544 null ] >> -endobj -245 0 obj -<< /D [ 1953 0 R /XYZ 79.37 319.035 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 385.268 null ] >> endobj 1988 0 obj -<< /D [ 1953 0 R /XYZ 81.145 275.895 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 374.309 null ] >> endobj 1989 0 obj -<< /D [ 1953 0 R /XYZ 81.145 264.936 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 343.425 null ] >> endobj 1990 0 obj -<< /D [ 1953 0 R /XYZ 81.145 253.977 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 314.533 null ] >> endobj 1991 0 obj -<< /D [ 1953 0 R /XYZ 81.145 243.018 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 303.574 null ] >> endobj 1992 0 obj -<< /D [ 1953 0 R /XYZ 81.145 232.059 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 292.615 null ] >> endobj 1993 0 obj -<< /D [ 1953 0 R /XYZ 81.145 221.1 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 281.656 null ] >> endobj 1994 0 obj -<< /D [ 1953 0 R /XYZ 81.145 210.141 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 270.697 null ] >> endobj 1995 0 obj -<< /D [ 1953 0 R /XYZ 81.145 199.183 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 259.738 null ] >> endobj 1996 0 obj -<< /D [ 1953 0 R /XYZ 81.145 188.224 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 248.78 null ] >> endobj 1997 0 obj -<< /D [ 1953 0 R /XYZ 81.145 177.265 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 237.821 null ] >> endobj 1998 0 obj -<< /D [ 1953 0 R /XYZ 81.145 166.306 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 226.862 null ] >> endobj 1999 0 obj -<< /D [ 1953 0 R /XYZ 81.145 155.347 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 215.903 null ] >> endobj 2000 0 obj -<< /D [ 1953 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 204.944 null ] >> endobj 2001 0 obj -<< /D [ 1953 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 193.985 null ] >> endobj 2002 0 obj -<< /D [ 1953 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 183.026 null ] >> endobj 2003 0 obj -<< /D [ 1953 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 172.067 null ] >> endobj 2004 0 obj -<< /D [ 1953 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 161.108 null ] >> endobj 2005 0 obj -<< /D [ 1953 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 150.149 null ] >> endobj 2006 0 obj -<< /D [ 1953 0 R /XYZ 81.145 78.635 null ] >> -endobj -1952 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 1949 0 R /XYZ 81.145 139.19 null ] >> endobj -2009 0 obj -<< /Filter /FlateDecode /Length 2727 >> -stream -x[Ɏ8WEFp=i:܂(J)]=(XsN>q?ޮ_oʝ$sV &N'L˓тq-N_9q\9ZV?1OʓeNk-!43\zzS?pKʿ m:"Y~{~ -P$ayg/(`h - x)܌):JKgފ/M=75B1eG cÜhh|aT$ƉFTqZ2"skI(e2jA!sַq\=B&Qqs8,)AiOP/k4h%МrΞXy|0]& re͡J,Idҿ%p8ݹ?ɒch!bz*RrsqO #:Cjϲ,,SnDMf=& ٳ\"1lmQ"~i\'Yr:)耯
ɑricF,;J/gL -`W1hڭUlNs͈5$+N_`J[ViL#Gc̒O%\E(=^A)ƭ|.[4bwEL B(rirɉVU4CJ5/NєaBc%:Z!c>PhA;>}0bsnynpGu -!*p'Uo2M22ݝ:Ě"=^╾$}0QHaSlI$/$]q%#D I5,2>ЉvM>4Fj[lח`^? -ءm.RsU3&^)<^{B1JJ9
;Qs}Slnua#1<YquaC8>[_uh <4 -?vdV,ì%rQ"Ϥ]ƜfodKFӁ&Pq<Kֳ$XUEȫN:ȈOdYS0-1:_^ht@rEJ[G)FsjGTAhq]*ҽ9vqq<}#s)Zv؆YzJ^B2VԢA"U+کn其H3e<XLs5q7_YȒRYl/cz?λ݃@qWf3}A87y-Zђ'E.ͭ~Z74xq
_]F4Xif%Dt%i
F:|xIh9nBeGvJ~D;f誧o )%(cc|Pdvuk<kz<_?/ނ=Z̈́Ҽ> -;¨aɽazwQ6~VW'FBh.(ϼDOi?uBS3Jǖk)(sb%By5ɒҴA
9SQf܊FJm##Fҙiuwi`èrtmgĕsM++CubPECߨ`VFQ sS}
j5F'0mܦEs435IKO#0cp\mI2H*kGiS\9Zu9{P\89+{GWO2FaQmUPJn/i j7 f9tsGӿ,t%_8ۡ(%Fe:-8ym['Be<ȡ䔻(mI/^iC9QzYIDab8uu{ -endstream +2007 0 obj +<< /D [ 1949 0 R /XYZ 81.145 128.232 null ] >> endobj 2008 0 obj -<< /Type /Page /Contents 2009 0 R /Resources 2007 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1590 0 R >> +<< /D [ 1949 0 R /XYZ 81.145 117.273 null ] >> +endobj +2009 0 obj +<< /D [ 1949 0 R /XYZ 81.145 106.314 null ] >> endobj 2010 0 obj -<< /D [ 2008 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 95.355 null ] >> endobj 2011 0 obj -<< /D [ 2008 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 1949 0 R /XYZ 81.145 84.396 null ] >> endobj -2012 0 obj -<< /D [ 2008 0 R /XYZ 81.145 757.87 null ] >> -endobj -2013 0 obj -<< /D [ 2008 0 R /XYZ 81.145 746.912 null ] >> +1948 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F63 356 0 R /F15 355 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2014 0 obj -<< /D [ 2008 0 R /XYZ 81.145 735.953 null ] >> +<< /Filter /FlateDecode /Length 2136 >> +stream +x[n6+ *uvE-_W)*m +ř]=33,ì#sp3?ߑ ++LFį }jp+蘐أ5K>d$qfiX&8{ӱǦ -uZX<5҅z+أ¯ MQHpD
'P]Sㆡix$jD3́mB'3̣uE(n
D+\o$>
`w^ ԑ^+acX@75cU2odNPsI.w|Ϗ"?jU:yXE%2{?D|۞mL8hGZX#eB]|gc#jq.F\-UAo9C;ѯ1pr?sYcg+ھwү
R\Yѣ W}+?g:>!x}g-];ya`vp&
*[ 9#a7,xSmCoŨH9[L<b8x
Ʈ1 +SR_^g-fLϯz۞T~g'>[4@nMhqV,$BvM7kHȵF禭pKO
S0KͳG>ΖT ahIBV滭--b^܇ĠNe>v#@a|N56H"A|b젞Q:INS̫N9r5HZ.bI#sl>ᣩPMlL%ya̼Jfv4
K\H(u1 +$jZq[50Qt/c>mKE/tR^ +/OօEω2=Rf>Dj
Ԓ%rt%]υ4H T4!mS3̅q`Y4썤%^o#A7HdHQ>_,gqt\1%|\Yjr*6^g5ȅ$~vlW;ձqTF[6;xW3̚E&4t`,*kz\lNq0eA٥iI +Sq,hZQ\ѼdHmfYgbbm%Բ&z4@ +>RvD
՚{9V?7H^{ku| [im¿$vU
ޓް=&NmeWr
zG+栌7۶Gj?QV#^,a2yڄFR{H2xXA Q*TQHbuJY=!KXgY
5>i9bVNWPN.HN]l߭YrߜZ1jk~-@[Td 8tPI{G,At/GYnPE2P$`R.ErK{eyj(S%jucFQObMsCNT7LvLn;xAޣ\ʌ1'vQ2ۓfr8hqb%]dN;AOTTi2G` )*9̛Oud?7l[L
5PW5 [}+E|\ +4:t社N#sњau(H%$3+^@$ɪ@L\|t D)?S829.
^ةӝv$ B09/K:QW1qϱV0۩7ᐻ;Eu:PCYڎ>#}OH8Zwul,+E6d}{ѫV"9s%YP/g +endstream +endobj +2013 0 obj +<< /Type /Page /Contents 2014 0 R /Resources 2012 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2015 0 obj -<< /D [ 2008 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2013 0 R /XYZ 78.37 808.885 null ] >> endobj 2016 0 obj -<< /D [ 2008 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 768.829 null ] >> endobj 2017 0 obj -<< /D [ 2008 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 757.87 null ] >> endobj 2018 0 obj -<< /D [ 2008 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 746.912 null ] >> endobj 2019 0 obj -<< /D [ 2008 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 735.953 null ] >> endobj 2020 0 obj -<< /D [ 2008 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 724.994 null ] >> endobj 2021 0 obj -<< /D [ 2008 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 694.755 null ] >> endobj 2022 0 obj -<< /D [ 2008 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 683.796 null ] >> endobj 2023 0 obj -<< /D [ 2008 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 672.837 null ] >> endobj 2024 0 obj -<< /D [ 2008 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 661.878 null ] >> endobj 2025 0 obj -<< /D [ 2008 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 650.919 null ] >> endobj 2026 0 obj -<< /D [ 2008 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 639.96 null ] >> endobj 2027 0 obj -<< /D [ 2008 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 583.911 null ] >> endobj 2028 0 obj -<< /D [ 2008 0 R /XYZ 81.145 497.689 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 541.717 null ] >> endobj 2029 0 obj -<< /D [ 2008 0 R /XYZ 81.145 486.73 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 530.758 null ] >> endobj 2030 0 obj -<< /D [ 2008 0 R /XYZ 81.145 475.771 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 519.799 null ] >> endobj 2031 0 obj -<< /D [ 2008 0 R /XYZ 81.145 464.812 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 508.841 null ] >> endobj 2032 0 obj -<< /D [ 2008 0 R /XYZ 81.145 453.853 null ] >> -endobj -249 0 obj -<< /D [ 2008 0 R /XYZ 79.37 406.142 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 497.882 null ] >> endobj 2033 0 obj -<< /D [ 2008 0 R /XYZ 81.145 379.658 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 486.923 null ] >> endobj 2034 0 obj -<< /D [ 2008 0 R /XYZ 81.145 368.699 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 456.684 null ] >> endobj 2035 0 obj -<< /D [ 2008 0 R /XYZ 81.145 357.74 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 445.725 null ] >> endobj 2036 0 obj -<< /D [ 2008 0 R /XYZ 81.145 346.781 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 434.766 null ] >> endobj 2037 0 obj -<< /D [ 2008 0 R /XYZ 81.145 335.822 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 423.807 null ] >> endobj 2038 0 obj -<< /D [ 2008 0 R /XYZ 81.145 324.863 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 412.848 null ] >> endobj 2039 0 obj -<< /D [ 2008 0 R /XYZ 81.145 313.904 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 401.89 null ] >> endobj 2040 0 obj -<< /D [ 2008 0 R /XYZ 81.145 302.945 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 390.931 null ] >> endobj 2041 0 obj -<< /D [ 2008 0 R /XYZ 81.145 291.986 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 379.972 null ] >> +endobj +249 0 obj +<< /D [ 2013 0 R /XYZ 79.37 341.2 null ] >> endobj 2042 0 obj -<< /D [ 2008 0 R /XYZ 81.145 281.028 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 297.813 null ] >> endobj 2043 0 obj -<< /D [ 2008 0 R /XYZ 81.145 270.069 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 286.854 null ] >> endobj 2044 0 obj -<< /D [ 2008 0 R /XYZ 81.145 259.11 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 275.895 null ] >> endobj 2045 0 obj -<< /D [ 2008 0 R /XYZ 81.145 248.151 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 264.936 null ] >> endobj 2046 0 obj -<< /D [ 2008 0 R /XYZ 81.145 237.192 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 253.977 null ] >> endobj 2047 0 obj -<< /D [ 2008 0 R /XYZ 81.145 226.233 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 243.018 null ] >> endobj 2048 0 obj -<< /D [ 2008 0 R /XYZ 81.145 215.274 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 232.059 null ] >> endobj 2049 0 obj -<< /D [ 2008 0 R /XYZ 81.145 199.67 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 221.1 null ] >> endobj 2050 0 obj -<< /D [ 2008 0 R /XYZ 81.145 188.711 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 210.141 null ] >> endobj 2051 0 obj -<< /D [ 2008 0 R /XYZ 81.145 177.752 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 199.183 null ] >> endobj 2052 0 obj -<< /D [ 2008 0 R /XYZ 81.145 166.793 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 188.224 null ] >> endobj 2053 0 obj -<< /D [ 2008 0 R /XYZ 81.145 155.834 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 177.265 null ] >> endobj 2054 0 obj -<< /D [ 2008 0 R /XYZ 81.145 144.875 null ] >> -endobj -2007 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2013 0 R /XYZ 81.145 166.306 null ] >> endobj -2057 0 obj -<< /Filter /FlateDecode /Length 2498 >> -stream -x[n#9+".a[cӧksnIIIYB5jRK9ß3b - hr~ܸy_x -I,f'e$=
{&U3>3A3"U\S!hВ#َ0;LZ{ o``D-Mu$ydo,~eXzpr@=BWHOu6uiF}4&%OcmX53j64G|:0hz퍣|:_T'Dz -LK ~'L"'-zt^hV7x1]m$0b|"? -<)UuxY.#f]P) -ɥU4xۈ&0d`gIԼO&,AVMci>F2m&6SJOsr -0-d'LʼӜݟ{{efI髹\MR7+)VJKpnC*Y3oԐU-7ۻ]=*p$M=; -cvwSҫY *Iz[i#ܥ繷EdS-~bȲ,\+ߊC((si(
H+ 88]c|.; -Vi*Յ:)]ΙnKWЀk|am}KZ[U+f-ᲦH*YxE'j)shìȵi}% -SNv99U~T鉐5b}@Zd8]ڍÚ\;ozk)ڀ5b8GfF,t7Oѳ>9ԤsˈYYVwZ+%{í{V'_!ř3^5UZ -endstream +2055 0 obj +<< /D [ 2013 0 R /XYZ 81.145 155.347 null ] >> endobj 2056 0 obj -<< /Type /Page /Contents 2057 0 R /Resources 2055 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2013 0 R /XYZ 81.145 144.388 null ] >> +endobj +2057 0 obj +<< /D [ 2013 0 R /XYZ 81.145 133.429 null ] >> endobj 2058 0 obj -<< /D [ 2056 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 122.47 null ] >> endobj 2059 0 obj -<< /D [ 2056 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 111.511 null ] >> endobj 2060 0 obj -<< /D [ 2056 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 100.552 null ] >> endobj 2061 0 obj -<< /D [ 2056 0 R /XYZ 81.145 720.161 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 89.593 null ] >> endobj 2062 0 obj -<< /D [ 2056 0 R /XYZ 81.145 670.496 null ] >> +<< /D [ 2013 0 R /XYZ 81.145 78.635 null ] >> endobj -2063 0 obj -<< /D [ 2056 0 R /XYZ 81.145 659.537 null ] >> +2012 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2064 0 obj -<< /D [ 2056 0 R /XYZ 81.145 621.828 null ] >> +2066 0 obj +<< /Filter /FlateDecode /Length 2592 >> +stream +x[ˎWCV m;@ֽMV->J")-ھI.˒\bT-9 :}3E +_ :xVUBZuG)
Hith)Q}E}-G)+q$tHDREJ$ӹ}7xݟ>!O&݄3??㏀JQ'P",#Ѓ%ρJϢ9+@ 0K}e==nREЕ${`q +^yZYOֿ1w2Tܩ#)s*z.$圧88uxR4cūQv[}_*8Vѻkѩ5Q#ivFJE2~[ΪeQ@H3'Ɵy^"ӾDgYB%<k@ӢFڟhJUFWLDD,t1 I/ +MBt9&Cubl +W
&AQdc2@qi*yxct!(Z]\cjS K?V:h +HǖWDy6xwzoܳYGSjȜ:}sz«6;N:0fLV-[ UP9Ð#ΩJ2
L4ba5|clL"8$]NRa$^p,FwG~B]nC4u/I_mDhʦ=d&@@2jbc^
pʏ,pev$fNY>n0:;d +Z<2sadWgB9K5ngMO>A:Id#?]wۉ\+um + gVx*70Evd!=aC-T @F.2(ԑլ5WY
\x"s&FBI+Ǡ.͓̿2t.5J+M#$ͳ)c\>Q
kȵE%?$c7cǖ`pؿUW)S]"ܭLftb8<m! +7KX,#Sf=pMR?jlꚬ(? +\SG]'4\Fmgj[
,I +Hj4FD'P=53/{X#}4O%sIΖӳc(*PlvtmNn:0wI+Pv-gy{Ǝw0#G kgҫ: +ⱓjbR0N#zچ7v<7p,m|+iz$@9
G2&;Iq
Ck)$N
ތy/TZax-
|д8#0]bxAC}̒qYvoAzr떊U38Z- +cjUw74s!n-EpKDO{s~pa +endstream endobj 2065 0 obj -<< /D [ 2056 0 R /XYZ 81.145 610.869 null ] >> -endobj -2066 0 obj -<< /D [ 2056 0 R /XYZ 81.145 599.91 null ] >> +<< /Type /Page /Contents 2066 0 R /Resources 2064 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2067 0 obj -<< /D [ 2056 0 R /XYZ 81.145 562.2 null ] >> +<< /D [ 2065 0 R /XYZ 78.37 808.885 null ] >> endobj 2068 0 obj -<< /D [ 2056 0 R /XYZ 81.145 551.242 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 768.829 null ] >> endobj 2069 0 obj -<< /D [ 2056 0 R /XYZ 81.145 540.283 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 757.87 null ] >> endobj 2070 0 obj -<< /D [ 2056 0 R /XYZ 81.145 515.122 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 746.912 null ] >> endobj 2071 0 obj -<< /D [ 2056 0 R /XYZ 81.145 504.163 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 735.953 null ] >> endobj 2072 0 obj -<< /D [ 2056 0 R /XYZ 81.145 493.204 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 724.994 null ] >> endobj 2073 0 obj -<< /D [ 2056 0 R /XYZ 81.145 453.651 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 714.035 null ] >> endobj 2074 0 obj -<< /D [ 2056 0 R /XYZ 81.145 442.692 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 703.076 null ] >> endobj 2075 0 obj -<< /D [ 2056 0 R /XYZ 81.145 431.733 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 648.281 null ] >> endobj 2076 0 obj -<< /D [ 2056 0 R /XYZ 81.145 406.573 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 637.322 null ] >> endobj 2077 0 obj -<< /D [ 2056 0 R /XYZ 81.145 395.614 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 626.364 null ] >> endobj 2078 0 obj -<< /D [ 2056 0 R /XYZ 81.145 384.655 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 615.405 null ] >> endobj 2079 0 obj -<< /D [ 2056 0 R /XYZ 81.145 373.696 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 604.446 null ] >> endobj 2080 0 obj -<< /D [ 2056 0 R /XYZ 81.145 362.737 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 593.487 null ] >> endobj 2081 0 obj -<< /D [ 2056 0 R /XYZ 81.145 351.778 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 582.528 null ] >> endobj 2082 0 obj -<< /D [ 2056 0 R /XYZ 81.145 340.819 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 571.569 null ] >> endobj 2083 0 obj -<< /D [ 2056 0 R /XYZ 81.145 313.815 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 512.789 null ] >> endobj 2084 0 obj -<< /D [ 2056 0 R /XYZ 81.145 302.856 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 501.831 null ] >> endobj 2085 0 obj -<< /D [ 2056 0 R /XYZ 81.145 263.302 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 490.872 null ] >> endobj 2086 0 obj -<< /D [ 2056 0 R /XYZ 81.145 252.344 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 479.913 null ] >> endobj 2087 0 obj -<< /D [ 2056 0 R /XYZ 81.145 241.385 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 468.954 null ] >> +endobj +253 0 obj +<< /D [ 2065 0 R /XYZ 79.37 419.587 null ] >> endobj 2088 0 obj -<< /D [ 2056 0 R /XYZ 81.145 230.426 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 392.767 null ] >> endobj 2089 0 obj -<< /D [ 2056 0 R /XYZ 81.145 219.467 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 381.808 null ] >> endobj 2090 0 obj -<< /D [ 2056 0 R /XYZ 81.145 208.508 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 370.849 null ] >> endobj 2091 0 obj -<< /D [ 2056 0 R /XYZ 81.145 197.549 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 359.89 null ] >> endobj 2092 0 obj -<< /D [ 2056 0 R /XYZ 81.145 186.59 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 348.931 null ] >> endobj 2093 0 obj -<< /D [ 2056 0 R /XYZ 81.145 175.631 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 337.973 null ] >> endobj 2094 0 obj -<< /D [ 2056 0 R /XYZ 81.145 150.471 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 327.014 null ] >> endobj 2095 0 obj -<< /D [ 2056 0 R /XYZ 81.145 139.512 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 316.055 null ] >> endobj 2096 0 obj -<< /D [ 2056 0 R /XYZ 81.145 128.553 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 305.096 null ] >> endobj 2097 0 obj -<< /D [ 2056 0 R /XYZ 81.145 117.594 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 294.137 null ] >> endobj 2098 0 obj -<< /D [ 2056 0 R /XYZ 81.145 106.635 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 283.178 null ] >> endobj -2055 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +2099 0 obj +<< /D [ 2065 0 R /XYZ 81.145 272.219 null ] >> endobj -2102 0 obj -<< /Filter /FlateDecode /Length 1996 >> -stream -xZMo#7WVE.snEZI#$g43~#=R|$%)L>}x1"דO]g.)!s㇔t?QJ|If%#N"B@`kI`&&6]w2Uo\{z߽7!LX^V}~ϯY=:])S|>+@g}Jz
`$pܑ(Hrl$ o=F|gn2v\V~p,i^F+6Z3[XZ_}A>"_2r-AD1e<KH%2/Lfr -ס-r&am WfESĎ9]CQr5Á2e+);;-j.?vx:#1aOٳpVȡi}t(Uf/!jN#/p1]<C @2I"$߈YJe45cf/!cD-BGj!*6R'S=YsaB57Zy=jK $rƬg$tˆR$fl!$Y<sRDzK4pʇƍq6#Z\{YR;0l:YFvU: -d!vSn_=y<֟߷EַxDUD"&!B9^}Ηաy)Jӛ -endstream +2100 0 obj +<< /D [ 2065 0 R /XYZ 81.145 261.26 null ] >> endobj 2101 0 obj -<< /Type /Page /Contents 2102 0 R /Resources 2100 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2065 0 R /XYZ 81.145 250.301 null ] >> +endobj +2102 0 obj +<< /D [ 2065 0 R /XYZ 81.145 239.342 null ] >> endobj 2103 0 obj -<< /D [ 2101 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 228.384 null ] >> endobj 2104 0 obj -<< /D [ 2101 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 212.443 null ] >> endobj 2105 0 obj -<< /D [ 2101 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 201.484 null ] >> endobj 2106 0 obj -<< /D [ 2101 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 190.525 null ] >> endobj 2107 0 obj -<< /D [ 2101 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 179.567 null ] >> endobj 2108 0 obj -<< /D [ 2101 0 R /XYZ 81.145 724.994 null ] >> -endobj -253 0 obj -<< /D [ 2101 0 R /XYZ 79.37 701.537 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 168.608 null ] >> endobj 2109 0 obj -<< /D [ 2101 0 R /XYZ 81.145 680.695 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 157.649 null ] >> endobj 2110 0 obj -<< /D [ 2101 0 R /XYZ 81.145 669.736 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 146.69 null ] >> endobj 2111 0 obj -<< /D [ 2101 0 R /XYZ 81.145 658.777 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 135.731 null ] >> endobj 2112 0 obj -<< /D [ 2101 0 R /XYZ 81.145 647.818 null ] >> +<< /D [ 2065 0 R /XYZ 81.145 124.772 null ] >> endobj -2113 0 obj -<< /D [ 2101 0 R /XYZ 81.145 636.859 null ] >> -endobj -2114 0 obj -<< /D [ 2101 0 R /XYZ 81.145 625.9 null ] >> +2064 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2115 0 obj -<< /D [ 2101 0 R /XYZ 81.145 614.941 null ] >> +<< /Filter /FlateDecode /Length 2606 >> +stream +x[nc9WJ%zF8uvά\vN{%J"CJoo?.9
ZM 14Zȹ\<q\gvNgwGY?_y5p9醙)%G6jFV"|
/vfѶ7F$6&GA=8-ie6hSRC-?YQd%w IQY4['>
Oy>|q|{cGAh&g
~h-NvGKٕ}^i.똶IKBOTp*/Ed +ZLH3{\ʃhk9%²3m 8JG$'g,:7$k+>ZlMÄS]0K}sSe@JB.!8hwLZIZ/N.cha+xta#2
49wB<09G[HJ2cWi0 oT?'C%|닫iU_0~Jږ5hΙ#}DT +$y?}VqK{DyVõQT% +0sxW*/ռ`[`ޒKR
k4<%69bgQ,89O#..uچ}qQISD;hbo9l?86ky5ФooIP(zwbzSbJ\cr?D>_'{HPpfz=/ ]yW6Tgct^`Rsvi0KzX)@E)!I)1Ǭ g m0b+v
ͤv8BF85:}!DK0(i=_/]ALlN2**T[4l\06*q +ōeX!䑲qRY.85S]UJʊ?~yjGf"'r <ҶԦ*qS\
>lO&zE5o)kM^EYġSU$\'DVRIf :-@ܵQIR<Ͽ^oaׂ}+vhW!ޓ|^VyJGoHLpĮv?*w:x +wOը$64>|9%CwL`ΝIY.Wt)cd).PB
}u)Q^MQuUrOͧE-cb
LeK{zThjn%K[2jıd$!8cLI˔E`S_Zv@Z=8MP\ro<q<DOVC+o%.aY:BOZd$ SBf{'YWpkS)fJݛy[I!`LޗBz';r}G6lGPy&ug_ЊLrkJ+V( +O^MIZ++7#9h*WNY!{Aiú3xHdL("h.#vBk.-ԼVrK xНY/5b<;j5U9\jύgrzRrN'
dS.iԛh#9ݝ$fѰwgBNѹ':''&wf{g-tڙ2Nr'\n:3i}ŀ6>Tk_ZA65*%Mm3+m!wob&%uDBmr9jie? TrmeKcܕR0⢧tgIrD>.ZNAT@N2L{fKXlwyZAd<hXf߯W|Ɗ+
fN +endstream +endobj +2114 0 obj +<< /Type /Page /Contents 2115 0 R /Resources 2113 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2116 0 obj -<< /D [ 2101 0 R /XYZ 81.145 603.983 null ] >> +<< /D [ 2114 0 R /XYZ 78.37 808.885 null ] >> endobj 2117 0 obj -<< /D [ 2101 0 R /XYZ 81.145 593.024 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 745.915 null ] >> endobj 2118 0 obj -<< /D [ 2101 0 R /XYZ 81.145 582.065 null ] >> -endobj -257 0 obj -<< /D [ 2101 0 R /XYZ 79.37 556.616 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 734.956 null ] >> endobj 2119 0 obj -<< /D [ 2101 0 R /XYZ 81.145 535.773 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 697.098 null ] >> endobj 2120 0 obj -<< /D [ 2101 0 R /XYZ 81.145 524.814 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 647.285 null ] >> endobj 2121 0 obj -<< /D [ 2101 0 R /XYZ 81.145 513.855 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 636.326 null ] >> endobj 2122 0 obj -<< /D [ 2101 0 R /XYZ 81.145 502.897 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 598.468 null ] >> endobj 2123 0 obj -<< /D [ 2101 0 R /XYZ 81.145 491.938 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 587.509 null ] >> endobj 2124 0 obj -<< /D [ 2101 0 R /XYZ 81.145 480.979 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 576.55 null ] >> endobj 2125 0 obj -<< /D [ 2101 0 R /XYZ 81.145 470.02 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 538.692 null ] >> endobj 2126 0 obj -<< /D [ 2101 0 R /XYZ 81.145 454.08 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 527.733 null ] >> endobj 2127 0 obj -<< /D [ 2101 0 R /XYZ 81.145 443.121 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 516.775 null ] >> endobj 2128 0 obj -<< /D [ 2101 0 R /XYZ 81.145 432.162 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 490.872 null ] >> endobj 2129 0 obj -<< /D [ 2101 0 R /XYZ 81.145 421.203 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 479.913 null ] >> endobj 2130 0 obj -<< /D [ 2101 0 R /XYZ 81.145 410.244 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 468.954 null ] >> endobj 2131 0 obj -<< /D [ 2101 0 R /XYZ 81.145 399.285 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 429.103 null ] >> endobj 2132 0 obj -<< /D [ 2101 0 R /XYZ 81.145 388.326 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 418.144 null ] >> endobj 2133 0 obj -<< /D [ 2101 0 R /XYZ 81.145 372.386 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 407.186 null ] >> endobj 2134 0 obj -<< /D [ 2101 0 R /XYZ 81.145 361.427 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 381.283 null ] >> endobj 2135 0 obj -<< /D [ 2101 0 R /XYZ 81.145 350.468 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 370.324 null ] >> endobj 2136 0 obj -<< /D [ 2101 0 R /XYZ 81.145 339.509 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 359.365 null ] >> endobj 2137 0 obj -<< /D [ 2101 0 R /XYZ 81.145 328.55 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 348.406 null ] >> endobj 2138 0 obj -<< /D [ 2101 0 R /XYZ 81.145 317.591 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 337.447 null ] >> endobj 2139 0 obj -<< /D [ 2101 0 R /XYZ 81.145 301.651 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 326.488 null ] >> endobj 2140 0 obj -<< /D [ 2101 0 R /XYZ 81.145 290.692 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 315.529 null ] >> endobj 2141 0 obj -<< /D [ 2101 0 R /XYZ 81.145 279.733 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 287.634 null ] >> endobj 2142 0 obj -<< /D [ 2101 0 R /XYZ 81.145 268.775 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 276.675 null ] >> endobj 2143 0 obj -<< /D [ 2101 0 R /XYZ 81.145 257.816 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 236.824 null ] >> endobj 2144 0 obj -<< /D [ 2101 0 R /XYZ 81.145 246.857 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 225.865 null ] >> endobj 2145 0 obj -<< /D [ 2101 0 R /XYZ 81.145 235.898 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 214.907 null ] >> endobj 2146 0 obj -<< /D [ 2101 0 R /XYZ 81.145 219.958 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 203.948 null ] >> endobj 2147 0 obj -<< /D [ 2101 0 R /XYZ 81.145 208.999 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 192.989 null ] >> endobj 2148 0 obj -<< /D [ 2101 0 R /XYZ 81.145 198.04 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 182.03 null ] >> endobj 2149 0 obj -<< /D [ 2101 0 R /XYZ 81.145 187.081 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 171.071 null ] >> endobj 2150 0 obj -<< /D [ 2101 0 R /XYZ 81.145 176.122 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 160.112 null ] >> endobj 2151 0 obj -<< /D [ 2101 0 R /XYZ 81.145 165.163 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 149.153 null ] >> endobj 2152 0 obj -<< /D [ 2101 0 R /XYZ 81.145 149.223 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 138.194 null ] >> endobj 2153 0 obj -<< /D [ 2101 0 R /XYZ 81.145 138.264 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 112.291 null ] >> endobj 2154 0 obj -<< /D [ 2101 0 R /XYZ 81.145 127.305 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 101.332 null ] >> endobj 2155 0 obj -<< /D [ 2101 0 R /XYZ 81.145 116.346 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 90.374 null ] >> endobj 2156 0 obj -<< /D [ 2101 0 R /XYZ 81.145 105.387 null ] >> -endobj -2157 0 obj -<< /D [ 2101 0 R /XYZ 81.145 94.428 null ] >> -endobj -2158 0 obj -<< /D [ 2101 0 R /XYZ 81.145 83.469 null ] >> +<< /D [ 2114 0 R /XYZ 81.145 79.415 null ] >> endobj -2100 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> +2113 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F63 356 0 R /F15 355 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2161 0 obj -<< /Filter /FlateDecode /Length 1945 >> +2159 0 obj +<< /Filter /FlateDecode /Length 1979 >> stream -x[ˎ6W+Q%@׳+mWm%Y%1t2DsHZW+x_\trjs?sНќ;WYk` %ST=1 M/ﴆEksYt\}S|1}qܺOZ
ue֍HVdʛ\˯5=yܛYRKn:("A&ewd -jHJ -Xoʼ9"*Mdüy+[Z\2YԢ7{˫כ[ -yNWiGT@ tbUZEA(YY`U'@%%Ze Xm{VKٮХۖNy`%JX$ࣞ KJ;+kHli_5?Ee5K{jAJ-Z\>op/UPqDٰ}m'vOQ,t>ؼSXD{rKO%D^ۍ+/x;<>*!aJlVd~՚>riϿjRu4ދC+ҵ2,AswSWˮU"ip%ܒu0tbJPmT9
{+!#X<gW"w$.$Q:FXleLBo AX7ɺZu:"O4'$.fnm&ym7ZL7y.;LڧTdVHl2`۾I4AF<'Y.|LȋeVI<.LI"YYV&@Oh}ȥe7\ZtƤw7m܈$&jZpȭDX%$g -ZmgpF@n?A}a^(+uWFzz]d)gum_=x[F`xޮSxǿrlQ8T\RuG;VrS~/@4=l5w/XְΕ
X
,g'> L-Ҏ'v@ ET:(&65Xbh}_&Rzmоt"_U`faK+c%Ve -<p^I"-ip\zK-`r2䪧B[q0}c>cBk#X!B6$x -ʲAKpR|6FEkm飑~uA3Еn=7U, -$9XnpvIʭ#1j6(p"8=K*g8OږHrNDXx4(,klF&vx?d3'| ѧRO@reF[m6G=Ӭ=+REyDX38)7!^ĎIGm`W"$1O0Y9FyO=,E u#PwXSRNWgp|܄ Q<#Hsɹ;QaE<vrzI
5©Abφk~Jyl:5r+VI)1oU@?)u
e$YpgS_ɴ#Q\N@fd[H9b?@\^ಝâɦy;}biJ(E@xrZMk_ +x[n6+!;00vwٷ nL0ؒ'^DsOx˷'żN3d`܈ǿ?ss}#Xvs7FGpˤ lzMOAxLړ>c\x-2\6Ip\>xOKhs\Z!s-"|pMk%>ӊG|n/G03;3=2pJ>.hEʋ<{S3?+3]V-V PxrUn/ğQ۪otEHa\ '3Ĵ33bOD0j"Esbiwp[gR(8{<=;H=u&c{ԥ$m&f$l&"/H&ra-sB]I15/QF:p?5q-@t)8ٿJEvJ)WbW(u)%JF3ٲi~Ep,WL,dȾm2cDX*5 +CGu| `<Ɨ^!mF2(א2;p-i=gB +m3Ҩi<䪮OmS$,kV?3\R՜YJ
uu1c}onZY(p+=,NL6-lVy|VW5:aY3_s/ܢӲUKsi~^ +$ʡ~K+b.Hxp8Ed-NAbyuՅMt22'è3 \2'a7i`q `f>WǨ4+=3"ՌMF]wgji&@n{3qb̘Z{gʰQLH9^%xzfE#ةsQe-I/鬞eK*"ynZ)%H-V#ĴvA|Y
밨MGd1QԗFF3=aJJo,14qΎLYtBhuBg$8r4U:~_'>/ +V\6΅u9okMvv? +?רVs\Y[4؈@kf>'ig5xԏ769:A)f3Ty9C/-b !glzyPhE
=K؈i(qDzY4p̆Əg3{}tyRrk[ +*}+J"6}"`AXne^m~}1"[xw`]$ƅScZpA"IܿhEӾ}mB +)=HBa$s}3Yp $+/%Z-`jb(}LьCmZZ5Ⱥ83 UJ>*ԑ +ςc#ݛV7. i1jql/<0[.qDN01(GXΜ1=*]3О1[1Ӯ៴'WhsR|Z endstream endobj +2158 0 obj +<< /Type /Page /Contents 2159 0 R /Resources 2157 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> +endobj 2160 0 obj -<< /Type /Page /Contents 2161 0 R /Resources 2159 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2158 0 R /XYZ 78.37 808.885 null ] >> +endobj +2161 0 obj +<< /D [ 2158 0 R /XYZ 81.145 768.829 null ] >> endobj 2162 0 obj -<< /D [ 2160 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 729.454 null ] >> endobj 2163 0 obj -<< /D [ 2160 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 718.495 null ] >> endobj 2164 0 obj -<< /D [ 2160 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 707.536 null ] >> endobj 2165 0 obj -<< /D [ 2160 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 696.577 null ] >> endobj 2166 0 obj -<< /D [ 2160 0 R /XYZ 81.145 731.287 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 685.618 null ] >> +endobj +257 0 obj +<< /D [ 2158 0 R /XYZ 79.37 662.558 null ] >> endobj 2167 0 obj -<< /D [ 2160 0 R /XYZ 81.145 720.328 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 641.716 null ] >> endobj 2168 0 obj -<< /D [ 2160 0 R /XYZ 81.145 709.369 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 630.757 null ] >> endobj 2169 0 obj -<< /D [ 2160 0 R /XYZ 81.145 698.41 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 619.798 null ] >> endobj 2170 0 obj -<< /D [ 2160 0 R /XYZ 81.145 687.451 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 608.839 null ] >> endobj 2171 0 obj -<< /D [ 2160 0 R /XYZ 81.145 676.492 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 597.88 null ] >> endobj 2172 0 obj -<< /D [ 2160 0 R /XYZ 81.145 665.533 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 586.921 null ] >> endobj 2173 0 obj -<< /D [ 2160 0 R /XYZ 81.145 654.575 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 575.962 null ] >> endobj 2174 0 obj -<< /D [ 2160 0 R /XYZ 81.145 638.95 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 565.003 null ] >> endobj 2175 0 obj -<< /D [ 2160 0 R /XYZ 81.145 627.991 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 554.044 null ] >> endobj 2176 0 obj -<< /D [ 2160 0 R /XYZ 81.145 617.032 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 543.086 null ] >> +endobj +261 0 obj +<< /D [ 2158 0 R /XYZ 79.37 518.112 null ] >> endobj 2177 0 obj -<< /D [ 2160 0 R /XYZ 81.145 606.073 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 497.27 null ] >> endobj 2178 0 obj -<< /D [ 2160 0 R /XYZ 81.145 595.114 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 486.311 null ] >> endobj 2179 0 obj -<< /D [ 2160 0 R /XYZ 81.145 584.155 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 475.352 null ] >> endobj 2180 0 obj -<< /D [ 2160 0 R /XYZ 81.145 573.196 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 464.393 null ] >> endobj 2181 0 obj -<< /D [ 2160 0 R /XYZ 81.145 557.572 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 453.434 null ] >> endobj 2182 0 obj -<< /D [ 2160 0 R /XYZ 81.145 546.613 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 442.475 null ] >> endobj 2183 0 obj -<< /D [ 2160 0 R /XYZ 81.145 535.654 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 431.516 null ] >> endobj 2184 0 obj -<< /D [ 2160 0 R /XYZ 81.145 524.695 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 415.734 null ] >> endobj 2185 0 obj -<< /D [ 2160 0 R /XYZ 81.145 513.736 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 404.775 null ] >> endobj 2186 0 obj -<< /D [ 2160 0 R /XYZ 81.145 502.777 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 393.816 null ] >> endobj 2187 0 obj -<< /D [ 2160 0 R /XYZ 81.145 487.152 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 382.858 null ] >> endobj 2188 0 obj -<< /D [ 2160 0 R /XYZ 81.145 476.194 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 371.899 null ] >> endobj 2189 0 obj -<< /D [ 2160 0 R /XYZ 81.145 465.235 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 360.94 null ] >> endobj 2190 0 obj -<< /D [ 2160 0 R /XYZ 81.145 454.276 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 349.981 null ] >> endobj 2191 0 obj -<< /D [ 2160 0 R /XYZ 81.145 443.317 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 334.199 null ] >> endobj 2192 0 obj -<< /D [ 2160 0 R /XYZ 81.145 432.358 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 323.24 null ] >> endobj 2193 0 obj -<< /D [ 2160 0 R /XYZ 81.145 421.399 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 312.281 null ] >> endobj 2194 0 obj -<< /D [ 2160 0 R /XYZ 81.145 405.774 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 301.322 null ] >> endobj 2195 0 obj -<< /D [ 2160 0 R /XYZ 81.145 394.815 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 290.363 null ] >> endobj 2196 0 obj -<< /D [ 2160 0 R /XYZ 81.145 383.857 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 279.405 null ] >> endobj 2197 0 obj -<< /D [ 2160 0 R /XYZ 81.145 372.898 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 263.623 null ] >> endobj 2198 0 obj -<< /D [ 2160 0 R /XYZ 81.145 361.939 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 252.664 null ] >> endobj 2199 0 obj -<< /D [ 2160 0 R /XYZ 81.145 350.98 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 241.705 null ] >> endobj 2200 0 obj -<< /D [ 2160 0 R /XYZ 81.145 340.021 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 230.746 null ] >> endobj 2201 0 obj -<< /D [ 2160 0 R /XYZ 81.145 329.062 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 219.787 null ] >> endobj 2202 0 obj -<< /D [ 2160 0 R /XYZ 81.145 313.437 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 208.828 null ] >> endobj 2203 0 obj -<< /D [ 2160 0 R /XYZ 81.145 302.478 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 197.869 null ] >> endobj 2204 0 obj -<< /D [ 2160 0 R /XYZ 81.145 291.52 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 182.088 null ] >> endobj 2205 0 obj -<< /D [ 2160 0 R /XYZ 81.145 280.561 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 171.129 null ] >> endobj 2206 0 obj -<< /D [ 2160 0 R /XYZ 81.145 269.602 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 160.17 null ] >> endobj 2207 0 obj -<< /D [ 2160 0 R /XYZ 81.145 258.643 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 149.211 null ] >> endobj 2208 0 obj -<< /D [ 2160 0 R /XYZ 81.145 243.018 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 138.252 null ] >> endobj 2209 0 obj -<< /D [ 2160 0 R /XYZ 81.145 232.059 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 127.293 null ] >> endobj 2210 0 obj -<< /D [ 2160 0 R /XYZ 81.145 221.1 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 111.511 null ] >> endobj 2211 0 obj -<< /D [ 2160 0 R /XYZ 81.145 210.141 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 100.552 null ] >> endobj 2212 0 obj -<< /D [ 2160 0 R /XYZ 81.145 199.183 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 89.593 null ] >> endobj 2213 0 obj -<< /D [ 2160 0 R /XYZ 81.145 188.224 null ] >> +<< /D [ 2158 0 R /XYZ 81.145 78.635 null ] >> endobj -2214 0 obj -<< /D [ 2160 0 R /XYZ 81.145 177.265 null ] >> -endobj -2215 0 obj -<< /D [ 2160 0 R /XYZ 81.145 166.306 null ] >> +2157 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2216 0 obj -<< /D [ 2160 0 R /XYZ 81.145 155.347 null ] >> +<< /Filter /FlateDecode /Length 2283 >> +stream +x[ˎW-h nuz$XYݙd8vDCJ{?^rb/$?uZx{ +^ ?_tZJwoEf){G.`$-J] Ml>}Tg̸z<wlyZ./+gH/?`:U~e'Ҳ1<-HE$U+"Rg]Y"}~?"Y^yH AYUkU=KsAwmfe^?`
k`3Xz|=6W: +ԊӘaiFM晏f)#fkYlO&Kcҩ vtN &ImH[rJU!{XJ*Ss IL:L~<5%EGT@VMf,Y}s=|k8.c<s7`u"Z8$fGae$gY8O<aB0#a]Yd%\$esfI<Ԕdá[/HMBmZ?y3-mCH_H:-/:9qD +lrLnT|ߣ`hå՛CP{mDDR<ҵt)d[%'[=3?nVx! Rhn1#HW]gj:_|?` XpϤ==Q) + +VZUMvlHE^+u4u1={I5*Y(WFec.R%MC*՝tARm<Ptdje
EEEƪ5P4Sm)
!kbr
/~Bba+M~Y2Ժē`F85 l'-Lui[l +CI~&1䯌8
l
!ZXbձOB)%,qѲqgou + C8̡e6toGwp]zX=OpF><J0z8Be Na{oIKJ\?^C +endstream +endobj +2215 0 obj +<< /Type /Page /Contents 2216 0 R /Resources 2214 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2217 0 obj -<< /D [ 2160 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 2215 0 R /XYZ 78.37 808.885 null ] >> endobj 2218 0 obj -<< /D [ 2160 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 768.829 null ] >> endobj 2219 0 obj -<< /D [ 2160 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 757.87 null ] >> endobj 2220 0 obj -<< /D [ 2160 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 746.912 null ] >> endobj 2221 0 obj -<< /D [ 2160 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 735.953 null ] >> endobj 2222 0 obj -<< /D [ 2160 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 724.994 null ] >> endobj 2223 0 obj -<< /D [ 2160 0 R /XYZ 81.145 78.635 null ] >> -endobj -2159 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2215 0 R /XYZ 81.145 714.035 null ] >> endobj -2226 0 obj -<< /Filter /FlateDecode /Length 1846 >> -stream -xڭZ͎6SV#QbfynE]I-f6'Xx'v/HZ']|r*'c9ϜN19}I?MW$wJ*`ӌcLPGfvT0~rP^{")prd2x*Nf-J\MrQBmid2rY+hd'_l]m>LÏV)2ZL-ժj~HlTKg[$8ĶGQA=K8=Ȥ"Tʐ:rRHJtHcpuf[*X!ZeYa,ķ@>@9kXL-&yBC87E`Di3Fy|XVRUwu9 Yyh1*Er[
Ig!3R$o:`<HT|U%--C/Lo>b42*Ajs
֗ɫh'Q RFOactS
$!an$rϓ -~Uz:6B%HVWҼRX qRɱU)۴N;Rl ӮE8dVFi&̕&ug&orг'clɍj-iuVV)v>Y{zαOB-\NJY<&% D$(
'ɓc D8[yiIy罤TsB7|QvwͮU~wXOl -l)lJ6|d3C%z^-wɄf<.[[iXz-%g-(kcԖaHf>Շϡ,*2F\O欗U-ٔqyU>s]t7.6^\l'BE݆cEgz.ڗQ`|a74oH[qWa.|7ϒ%AO*ޟP(U;y@w,L>ΫT} -ABmZL$Դ>Ot}p,9 T<.
Aoi6jYǶyiH5O
dn>'~Fk֕ 5ªM~J^W>րj-l RHf+=,BWcoL)mU6*jdEsiUڏ\-W!@jVZk#eB)vl<@*[]Ru$q3T, L:hfe{ 6'<߷RK:Pڰ%l kfpoĦ҆1_}%Gs2VԺ(<Q&eôS -cw5&{,(ZGa96?,xAoO
eJ|R<u%@{
{*PW2Wkny5?g4<zh(礕 {*q.4cHE<߬ze[Pf=?1w -n:/U`]J2{qɵ؛P&~wc0lvz:5$HbIJiMIRx+W[<lڱIjN<o[yρ;yR8l!V<Mlw}E})&CˏprQ\аI -endstream +2224 0 obj +<< /D [ 2215 0 R /XYZ 81.145 698.095 null ] >> endobj 2225 0 obj -<< /Type /Page /Contents 2226 0 R /Resources 2224 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2215 0 R /XYZ 81.145 687.136 null ] >> +endobj +2226 0 obj +<< /D [ 2215 0 R /XYZ 81.145 676.177 null ] >> endobj 2227 0 obj -<< /D [ 2225 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 665.218 null ] >> endobj 2228 0 obj -<< /D [ 2225 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 654.259 null ] >> endobj 2229 0 obj -<< /D [ 2225 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 643.3 null ] >> endobj 2230 0 obj -<< /D [ 2225 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 632.341 null ] >> endobj 2231 0 obj -<< /D [ 2225 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 621.382 null ] >> endobj 2232 0 obj -<< /D [ 2225 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 605.442 null ] >> endobj 2233 0 obj -<< /D [ 2225 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 594.483 null ] >> endobj 2234 0 obj -<< /D [ 2225 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 583.524 null ] >> endobj 2235 0 obj -<< /D [ 2225 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 572.565 null ] >> endobj 2236 0 obj -<< /D [ 2225 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 561.606 null ] >> endobj 2237 0 obj -<< /D [ 2225 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 550.648 null ] >> endobj 2238 0 obj -<< /D [ 2225 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 539.689 null ] >> endobj 2239 0 obj -<< /D [ 2225 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 487.883 null ] >> endobj 2240 0 obj -<< /D [ 2225 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 476.924 null ] >> endobj 2241 0 obj -<< /D [ 2225 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 465.965 null ] >> endobj 2242 0 obj -<< /D [ 2225 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 455.006 null ] >> endobj 2243 0 obj -<< /D [ 2225 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 444.047 null ] >> endobj 2244 0 obj -<< /D [ 2225 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 433.088 null ] >> endobj 2245 0 obj -<< /D [ 2225 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 422.129 null ] >> endobj 2246 0 obj -<< /D [ 2225 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 408.182 null ] >> endobj 2247 0 obj -<< /D [ 2225 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 397.223 null ] >> endobj 2248 0 obj -<< /D [ 2225 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 386.264 null ] >> endobj 2249 0 obj -<< /D [ 2225 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 375.305 null ] >> endobj 2250 0 obj -<< /D [ 2225 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 364.346 null ] >> endobj 2251 0 obj -<< /D [ 2225 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 353.387 null ] >> endobj 2252 0 obj -<< /D [ 2225 0 R /XYZ 81.145 505.816 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 342.428 null ] >> endobj 2253 0 obj -<< /D [ 2225 0 R /XYZ 81.145 478.919 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 326.488 null ] >> endobj 2254 0 obj -<< /D [ 2225 0 R /XYZ 81.145 467.96 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 315.529 null ] >> endobj 2255 0 obj -<< /D [ 2225 0 R /XYZ 81.145 457.001 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 304.57 null ] >> endobj 2256 0 obj -<< /D [ 2225 0 R /XYZ 81.145 446.042 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 293.611 null ] >> endobj 2257 0 obj -<< /D [ 2225 0 R /XYZ 81.145 435.084 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 282.653 null ] >> endobj 2258 0 obj -<< /D [ 2225 0 R /XYZ 81.145 424.125 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 271.694 null ] >> endobj 2259 0 obj -<< /D [ 2225 0 R /XYZ 81.145 397.228 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 260.735 null ] >> endobj 2260 0 obj -<< /D [ 2225 0 R /XYZ 81.145 386.269 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 244.794 null ] >> endobj 2261 0 obj -<< /D [ 2225 0 R /XYZ 81.145 375.31 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 233.836 null ] >> endobj 2262 0 obj -<< /D [ 2225 0 R /XYZ 81.145 364.352 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 222.877 null ] >> endobj 2263 0 obj -<< /D [ 2225 0 R /XYZ 81.145 353.393 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 211.918 null ] >> endobj 2264 0 obj -<< /D [ 2225 0 R /XYZ 81.145 342.434 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 200.959 null ] >> endobj 2265 0 obj -<< /D [ 2225 0 R /XYZ 81.145 331.475 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 190 null ] >> endobj 2266 0 obj -<< /D [ 2225 0 R /XYZ 81.145 320.516 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 179.041 null ] >> endobj 2267 0 obj -<< /D [ 2225 0 R /XYZ 81.145 309.557 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 168.082 null ] >> endobj 2268 0 obj -<< /D [ 2225 0 R /XYZ 81.145 282.661 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 152.142 null ] >> endobj 2269 0 obj -<< /D [ 2225 0 R /XYZ 81.145 271.702 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 141.183 null ] >> endobj 2270 0 obj -<< /D [ 2225 0 R /XYZ 81.145 260.743 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 130.224 null ] >> endobj 2271 0 obj -<< /D [ 2225 0 R /XYZ 81.145 249.784 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 119.265 null ] >> endobj 2272 0 obj -<< /D [ 2225 0 R /XYZ 81.145 238.825 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 108.306 null ] >> endobj 2273 0 obj -<< /D [ 2225 0 R /XYZ 81.145 227.866 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 97.347 null ] >> endobj 2274 0 obj -<< /D [ 2225 0 R /XYZ 81.145 216.907 null ] >> +<< /D [ 2215 0 R /XYZ 81.145 81.407 null ] >> endobj -261 0 obj -<< /D [ 2225 0 R /XYZ 79.37 192.457 null ] >> +2214 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2275 0 obj -<< /D [ 2225 0 R /XYZ 81.145 160.326 null ] >> +2277 0 obj +<< /Filter /FlateDecode /Length 1791 >> +stream +xZn6)ʕ((Xg&zέ=dɖ&:-xGb{Z^|!:d/fg/ !%&??~5ƣ1.|'SVo/. r.8Dp v 'x֠(IO ȑ³1t]?a֘۱}λ~Oe$0#"lrrILu6P8wktfvvsq;W/r?\[bhs<Ho|A<]'L`WH~"f$VR|X-(˦չNɅi隗Jt(sپuqL9"`+k]|XFuX]VZ$kMǎ3F$!{p&rIjihɒ$UƐ8ǝ~oa\FGN#+W5*_'/,:M@Ufr\m$|F*U/͓K=2P|Fs+(ͽUOfF1Ty[<8nWY'JR|_1-뛃߫8rVr=Fz~KY8MUKڹGiu!X#Z.}-/u9@b77-[#kcnVvh٬yfCkFٌHuw3$sV1HFQ23^'p3b~9bwr^=;>8HJ*Umgcx`=^{EuCKO4RV0\sw?id$Q+]uÐVǼͫ^,]UÐujޛԺj!qCp6C4tI('0U(wɊ>'}`CzhP`q~yMPWLlJbJ`zmUї<ZUfrcD|~`wsN\2Gګ^s7pV$
Y!vQ^=-)Zp2)C%m}]R5XyޣEY9$S2r$zk߈Ǜ^]:% ĨeIDK/n:|.F,*eFeHr!C'[Pg:"PiuO|)_:'+ LI#9v}3:%tLːw6\9 1Y!+5s'Gw"D%Y!IY.3k{&2칭q1E1:uY!8v +`HӺj>)_6&H!O:߿ﲶ'"xޓ!G%?wurwW3:aOi)A(ŘGMGvc;ktDV/Qfl3zm$23-";d4*QqWRǎpuI`H]nl&
i0>jJ̦-ؘ%*D0Vsdd\>g)}<榵R()cR+gȟ=v"˂'Ӥo)"['uHjҷ5C:Kijm{4x84 ֒H@$R~1yb:̵vʪD;')9Sֺ5Đ)HDy_|3oEhe[hzd +g}mr[ilG+*Q8fQ64r0_#/51 +endstream endobj 2276 0 obj -<< /D [ 2225 0 R /XYZ 81.145 149.367 null ] >> -endobj -2277 0 obj -<< /D [ 2225 0 R /XYZ 81.145 138.408 null ] >> +<< /Type /Page /Contents 2277 0 R /Resources 2275 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2278 0 obj -<< /D [ 2225 0 R /XYZ 81.145 127.449 null ] >> +<< /D [ 2276 0 R /XYZ 78.37 808.885 null ] >> endobj 2279 0 obj -<< /D [ 2225 0 R /XYZ 81.145 116.49 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 768.829 null ] >> endobj 2280 0 obj -<< /D [ 2225 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 757.87 null ] >> endobj 2281 0 obj -<< /D [ 2225 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 746.912 null ] >> endobj -2224 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2284 0 obj -<< /Filter /FlateDecode /Length 2605 >> -stream -x[Ic9Cw@i@}\m
q+.zzT{ִD~U8ӧN<۷'żNfy\ſֿoRNHGaնs({>Zʁ:| 'jq =%0Hτ3N'R3LO@ sS֠YCy4Gn2D`xھZJ~5Dqo?mƆ
i<y=wincyegIxYXg}s0PE^"LdoG]d;J>gBNgVO#u5憁1S RȉInΤq- -zJow <I{22}IԂ9 ->_t\=D]K|OrGHyfZ&!y<~릁 ~69DƷH-VYSKK̷ ŷ-\k|DU,SUK -D`ML$x~:B5@XkRN,v( -rSb4I
a -$[M([w8B\X2`'~P/іH#m6$"[̇q1͐VޓXꕰ$nRnU9ϴh*P/Kyny9nob~(82{ GPGSk'2 -?ә\kgu^.,Hfa`E-PT:P= ~SL["C.sZ"5͂5G~dw'- P\mKGO.T -.y
O
Kq
z>G{x\]H~^JH7t0"D[KduG.B5U9)䳓mn Z~7^9r=$fVs&I=j*<E^p{u-"͂,c=ˬk$KbH=9;)gzB78ژ`$tTc %uk&=;,p֑G^tجj jRڹFliqEJۯӻh3gbI0+2S6ʨd9*Y֙QJ?Zzxb?yTJ@o$8c@e "|%horJKͺry4Cc斎hHFws*ooٰKZ\H>f|trtWK</>9<Yjrq "nyd:Rz̒^:pA/8^疋n@E+kU
R{|/Vo^KX~8t6=<swJ4fDkܻˊ(5-FczK^mڙx -iQROf|=DU_m?Jg$mJ@N>'Sc3W~2ܤsc{:иAVa@qiv^S\>*xfbx -endstream +2282 0 obj +<< /D [ 2276 0 R /XYZ 81.145 735.953 null ] >> endobj 2283 0 obj -<< /Type /Page /Contents 2284 0 R /Resources 2282 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2276 0 R /XYZ 81.145 724.994 null ] >> +endobj +2284 0 obj +<< /D [ 2276 0 R /XYZ 81.145 714.035 null ] >> endobj 2285 0 obj -<< /D [ 2283 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 703.076 null ] >> endobj 2286 0 obj -<< /D [ 2283 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 692.117 null ] >> endobj 2287 0 obj -<< /D [ 2283 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 681.158 null ] >> endobj 2288 0 obj -<< /D [ 2283 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 670.199 null ] >> endobj 2289 0 obj -<< /D [ 2283 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 659.24 null ] >> endobj 2290 0 obj -<< /D [ 2283 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 648.281 null ] >> endobj 2291 0 obj -<< /D [ 2283 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 637.322 null ] >> endobj 2292 0 obj -<< /D [ 2283 0 R /XYZ 81.145 703.076 null ] >> -endobj -265 0 obj -<< /D [ 2283 0 R /XYZ 79.37 678.299 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 626.364 null ] >> endobj 2293 0 obj -<< /D [ 2283 0 R /XYZ 81.145 657.456 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 615.405 null ] >> endobj 2294 0 obj -<< /D [ 2283 0 R /XYZ 81.145 646.497 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 604.446 null ] >> endobj 2295 0 obj -<< /D [ 2283 0 R /XYZ 81.145 635.539 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 593.487 null ] >> endobj 2296 0 obj -<< /D [ 2283 0 R /XYZ 81.145 624.58 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 582.528 null ] >> endobj 2297 0 obj -<< /D [ 2283 0 R /XYZ 81.145 613.621 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 571.569 null ] >> endobj 2298 0 obj -<< /D [ 2283 0 R /XYZ 81.145 602.662 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 560.61 null ] >> endobj 2299 0 obj -<< /D [ 2283 0 R /XYZ 81.145 591.703 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 549.651 null ] >> endobj 2300 0 obj -<< /D [ 2283 0 R /XYZ 81.145 580.744 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 538.692 null ] >> endobj 2301 0 obj -<< /D [ 2283 0 R /XYZ 81.145 569.785 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 527.733 null ] >> endobj 2302 0 obj -<< /D [ 2283 0 R /XYZ 81.145 558.826 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 516.775 null ] >> endobj 2303 0 obj -<< /D [ 2283 0 R /XYZ 81.145 547.867 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 505.816 null ] >> endobj 2304 0 obj -<< /D [ 2283 0 R /XYZ 81.145 536.908 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 494.857 null ] >> endobj 2305 0 obj -<< /D [ 2283 0 R /XYZ 81.145 525.95 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 483.898 null ] >> endobj 2306 0 obj -<< /D [ 2283 0 R /XYZ 81.145 486.323 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 472.939 null ] >> endobj 2307 0 obj -<< /D [ 2283 0 R /XYZ 81.145 475.364 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 461.98 null ] >> endobj 2308 0 obj -<< /D [ 2283 0 R /XYZ 81.145 464.405 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 451.021 null ] >> endobj 2309 0 obj -<< /D [ 2283 0 R /XYZ 81.145 453.446 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 440.062 null ] >> endobj 2310 0 obj -<< /D [ 2283 0 R /XYZ 81.145 442.487 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 429.103 null ] >> endobj 2311 0 obj -<< /D [ 2283 0 R /XYZ 81.145 431.528 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 418.144 null ] >> endobj 2312 0 obj -<< /D [ 2283 0 R /XYZ 81.145 420.569 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 407.186 null ] >> endobj -269 0 obj -<< /D [ 2283 0 R /XYZ 79.37 396.175 null ] >> +2313 0 obj +<< /D [ 2276 0 R /XYZ 81.145 396.227 null ] >> endobj 2314 0 obj -<< /D [ 2283 0 R /XYZ 81.145 322.708 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 385.268 null ] >> endobj 2315 0 obj -<< /D [ 2283 0 R /XYZ 81.145 311.749 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 374.309 null ] >> endobj 2316 0 obj -<< /D [ 2283 0 R /XYZ 81.145 300.79 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 363.35 null ] >> endobj 2317 0 obj -<< /D [ 2283 0 R /XYZ 81.145 258.734 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 352.391 null ] >> endobj 2318 0 obj -<< /D [ 2283 0 R /XYZ 81.145 247.776 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 341.432 null ] >> endobj 2319 0 obj -<< /D [ 2283 0 R /XYZ 81.145 236.817 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 330.473 null ] >> endobj 2320 0 obj -<< /D [ 2283 0 R /XYZ 81.145 225.858 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 319.514 null ] >> endobj 2321 0 obj -<< /D [ 2283 0 R /XYZ 81.145 214.899 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 308.555 null ] >> endobj 2322 0 obj -<< /D [ 2283 0 R /XYZ 81.145 203.94 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 297.596 null ] >> endobj 2323 0 obj -<< /D [ 2283 0 R /XYZ 81.145 188.224 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 286.638 null ] >> endobj 2324 0 obj -<< /D [ 2283 0 R /XYZ 81.145 177.265 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 275.679 null ] >> endobj 2325 0 obj -<< /D [ 2283 0 R /XYZ 81.145 166.306 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 247.783 null ] >> endobj 2326 0 obj -<< /D [ 2283 0 R /XYZ 81.145 155.347 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 236.824 null ] >> endobj 2327 0 obj -<< /D [ 2283 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 225.865 null ] >> endobj 2328 0 obj -<< /D [ 2283 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 214.907 null ] >> endobj 2329 0 obj -<< /D [ 2283 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 203.948 null ] >> endobj 2330 0 obj -<< /D [ 2283 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 192.989 null ] >> endobj 2331 0 obj -<< /D [ 2283 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 165.093 null ] >> endobj 2332 0 obj -<< /D [ 2283 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 2276 0 R /XYZ 81.145 154.134 null ] >> endobj 2333 0 obj -<< /D [ 2283 0 R /XYZ 81.145 78.635 null ] >> -endobj -2282 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F74 337 0 R /F88 635 0 R /F87 2313 0 R /F111 636 0 R /F64 333 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2276 0 R /XYZ 81.145 143.176 null ] >> endobj -2336 0 obj -<< /Filter /FlateDecode /Length 3184 >> -stream -x\Ɏ$
WZ"*;'
\7Wڗbiaj2#BAqH13uSd -翾f`\nx\h㟖7O+o9Ѷta손ys -hzw%}I'}OJh:Iq&8dB$SOHʠgZ -ăGҢzW1^iy~W(0JTvu6d:y4x5bI~Ք蘐83){BkSa\ub -\2crz\RM$V2e]͔8:(cGYz -w!ܪ -#Il5{ue٘(xw!OX/AzL[
^R"ٕ7Mi43ORz`x稳L!vPf^RhTtQbۨ îjYӻgƴ'0'6rdetV얼:]6x,_U˟;;@\/%%2tr2LBD21\WKFkIk&Ïϒ=j jD`&^~?"plKSO7 -H"C]2~OR80019%ċ>}W(0oʡOy7S)p9p̕u9#+EUI3z_.6g2
G6:Ȁ<3E*>OH۲[K1G4~'_<K"ր%)Az-E$6{3nSG#Hz%ddS&z)zsۥc%.Iԗi;K2Ug`,. -: -y:fpB['[?Y"{&`\i -](ܔLT=>qVq#q"HGe֨uk%9;oT 2߰L|rMʶI2즞ѿ,u ` zx5z0?X!2W/a&yؒij9օ%MS
.,*!XsHup,B[=M^t -Rکz/(Ŕ/B^9iG*IA EEOAVS~V)YC9vj>͡i}Dycݨ
-i`z
wcԬrq/sMP*$]`9F։5r:֩@FF'6PVȌ3](-EeF)w:RZ%d*&FZ-el:?l?.m6Zg3<>:(γI飛JbIS~-`.rkS_;\JsC=Kk=N=5xCk+*y7zjﲑR1jcD">c,mcC0{ՆfT&NHu=M9WQ2j -FLD7-9ij"19ihdh5ve@ڦ=rFAJ\I.T+v# -G 歰m{eݦ% -f_ L2bys$|zC_p")̓N$B_-AJBhk_Rz浮9zB'?Tq}Uт0Pj$pW -endstream +2334 0 obj +<< /D [ 2276 0 R /XYZ 81.145 132.217 null ] >> endobj 2335 0 obj -<< /Type /Page /Contents 2336 0 R /Resources 2334 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2276 0 R /XYZ 81.145 121.258 null ] >> endobj -2337 0 obj -<< /D [ 2335 0 R /XYZ 78.37 808.885 null ] >> +2336 0 obj +<< /D [ 2276 0 R /XYZ 81.145 110.299 null ] >> endobj -2338 0 obj -<< /D [ 2335 0 R /XYZ 81.145 768.829 null ] >> +2337 0 obj +<< /D [ 2276 0 R /XYZ 81.145 99.34 null ] >> endobj -2339 0 obj -<< /D [ 2335 0 R /XYZ 81.145 757.87 null ] >> +2275 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2340 0 obj -<< /D [ 2335 0 R /XYZ 81.145 746.912 null ] >> +<< /Filter /FlateDecode /Length 2122 >> +stream +x[;6WlIəzo=6d2i()Q$'.֫o + +endstream +endobj +2339 0 obj +<< /Type /Page /Contents 2340 0 R /Resources 2338 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2341 0 obj -<< /D [ 2335 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2339 0 R /XYZ 78.37 808.885 null ] >> +endobj +265 0 obj +<< /D [ 2339 0 R /XYZ 79.37 771.024 null ] >> endobj 2342 0 obj -<< /D [ 2335 0 R /XYZ 81.145 669.203 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 739.474 null ] >> endobj 2343 0 obj -<< /D [ 2335 0 R /XYZ 81.145 658.244 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 728.516 null ] >> endobj 2344 0 obj -<< /D [ 2335 0 R /XYZ 81.145 647.285 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 717.557 null ] >> endobj 2345 0 obj -<< /D [ 2335 0 R /XYZ 81.145 558.618 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 706.598 null ] >> endobj 2346 0 obj -<< /D [ 2335 0 R /XYZ 81.145 547.659 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 695.639 null ] >> endobj 2347 0 obj -<< /D [ 2335 0 R /XYZ 81.145 536.7 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 667.743 null ] >> endobj 2348 0 obj -<< /D [ 2335 0 R /XYZ 81.145 448.032 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 656.785 null ] >> endobj 2349 0 obj -<< /D [ 2335 0 R /XYZ 81.145 437.073 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 645.826 null ] >> endobj 2350 0 obj -<< /D [ 2335 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 634.867 null ] >> endobj 2351 0 obj -<< /D [ 2335 0 R /XYZ 81.145 349.402 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 623.908 null ] >> endobj 2352 0 obj -<< /D [ 2335 0 R /XYZ 81.145 338.443 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 612.949 null ] >> endobj 2353 0 obj -<< /D [ 2335 0 R /XYZ 81.145 327.484 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 601.99 null ] >> endobj 2354 0 obj -<< /D [ 2335 0 R /XYZ 81.145 316.525 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 591.031 null ] >> endobj 2355 0 obj -<< /D [ 2335 0 R /XYZ 81.145 305.567 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 580.072 null ] >> +endobj +269 0 obj +<< /D [ 2339 0 R /XYZ 79.37 554.623 null ] >> endobj 2356 0 obj -<< /D [ 2335 0 R /XYZ 81.145 294.608 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 533.781 null ] >> endobj 2357 0 obj -<< /D [ 2335 0 R /XYZ 81.145 283.649 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 522.822 null ] >> endobj 2358 0 obj -<< /D [ 2335 0 R /XYZ 81.145 183.026 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 511.863 null ] >> endobj 2359 0 obj -<< /D [ 2335 0 R /XYZ 81.145 172.067 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 500.904 null ] >> endobj 2360 0 obj -<< /D [ 2335 0 R /XYZ 81.145 161.108 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 489.945 null ] >> endobj 2361 0 obj -<< /D [ 2335 0 R /XYZ 81.145 150.149 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 478.986 null ] >> endobj 2362 0 obj -<< /D [ 2335 0 R /XYZ 81.145 139.19 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 468.027 null ] >> endobj 2363 0 obj -<< /D [ 2335 0 R /XYZ 81.145 128.232 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 457.068 null ] >> endobj -2334 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F83 414 0 R /F81 377 0 R /F65 335 0 R /F85 437 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2366 0 obj -<< /Filter /FlateDecode /Length 2583 >> -stream -x[n#=SZ#896i:ڨTt7CIQGR^xuqiw\kq_/k9<| 0+9ī4H=?da&R"5j(y0HA8ok_}!}[ - -<D(H)Q$%j?
:hfoߙtU<ƾZ86Pt)|#*uc7)f_h\2*
5IL2DК =I愹af#:{ h/(eL-P2g -d,
hY^ oSh^f
sҎ@GIz'Uz
)+ѨO"%^Oh.~Mld^dLTb%qG'`dʆES>sѪ'kwI+$ Us))LSL n)}6
<ǧ(s4_k>;Dkǐ'kOIbf"u}*#_y3=cI}=*GǞ3ZYa4S\$rOnkhp@2Hs$YbJ{-MT:xIҴz^:;SψzV1c<su2M< )ȷc;>uShz@' ' M-1MJ4hdcE*-z(惬J}ja:Ǖ;zJ_BPs͎GZ`]SOw)>B(uKԁRצ,2scASwf
![@ː2)C{} tMZ=ggXLfᖸ= -ExGs-u)ٻ9}6'@i&7[H鷝o+[n&Ȅ)Q\L5a#ssUv-d|'4c)ZSEҩVL\/so8JθD*߉T~G嘏kB/S -cؽJL絡jrr -))5LHےGp+X6'N4xN1|bI#Q|#@UQ2{w8IY5nVVC>b`αyX(^}뢤8TrjR+`\K~g+= -endstream +2364 0 obj +<< /D [ 2339 0 R /XYZ 81.145 446.11 null ] >> endobj 2365 0 obj -<< /Type /Page /Contents 2366 0 R /Resources 2364 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2339 0 R /XYZ 81.145 435.151 null ] >> +endobj +2366 0 obj +<< /D [ 2339 0 R /XYZ 81.145 424.192 null ] >> endobj 2367 0 obj -<< /D [ 2365 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 413.233 null ] >> endobj 2368 0 obj -<< /D [ 2365 0 R /XYZ 81.145 742.926 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 402.274 null ] >> endobj 2369 0 obj -<< /D [ 2365 0 R /XYZ 81.145 731.968 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 391.315 null ] >> endobj 2370 0 obj -<< /D [ 2365 0 R /XYZ 81.145 721.009 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 351.464 null ] >> endobj 2371 0 obj -<< /D [ 2365 0 R /XYZ 81.145 710.05 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 340.506 null ] >> endobj 2372 0 obj -<< /D [ 2365 0 R /XYZ 81.145 699.091 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 329.547 null ] >> endobj 2373 0 obj -<< /D [ 2365 0 R /XYZ 81.145 688.132 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 318.588 null ] >> endobj 2374 0 obj -<< /D [ 2365 0 R /XYZ 81.145 677.173 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 307.629 null ] >> endobj 2375 0 obj -<< /D [ 2365 0 R /XYZ 81.145 666.214 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 296.67 null ] >> endobj 2376 0 obj -<< /D [ 2365 0 R /XYZ 81.145 625.367 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 285.711 null ] >> endobj 2377 0 obj -<< /D [ 2365 0 R /XYZ 81.145 614.408 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 274.752 null ] >> endobj 2378 0 obj -<< /D [ 2365 0 R /XYZ 81.145 603.45 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 263.793 null ] >> endobj 2379 0 obj -<< /D [ 2365 0 R /XYZ 81.145 592.491 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 249.846 null ] >> endobj 2380 0 obj -<< /D [ 2365 0 R /XYZ 81.145 581.532 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 238.887 null ] >> endobj 2381 0 obj -<< /D [ 2365 0 R /XYZ 81.145 565.591 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 227.928 null ] >> endobj 2382 0 obj -<< /D [ 2365 0 R /XYZ 81.145 554.633 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 216.969 null ] >> endobj 2383 0 obj -<< /D [ 2365 0 R /XYZ 81.145 543.674 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 206.01 null ] >> endobj 2384 0 obj -<< /D [ 2365 0 R /XYZ 81.145 532.715 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 195.051 null ] >> endobj 2385 0 obj -<< /D [ 2365 0 R /XYZ 81.145 521.756 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 184.092 null ] >> endobj 2386 0 obj -<< /D [ 2365 0 R /XYZ 81.145 510.797 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 173.133 null ] >> endobj 2387 0 obj -<< /D [ 2365 0 R /XYZ 81.145 499.838 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 162.174 null ] >> endobj 2388 0 obj -<< /D [ 2365 0 R /XYZ 81.145 488.879 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 151.215 null ] >> endobj 2389 0 obj -<< /D [ 2365 0 R /XYZ 81.145 477.92 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 140.256 null ] >> endobj 2390 0 obj -<< /D [ 2365 0 R /XYZ 81.145 466.961 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 129.298 null ] >> endobj 2391 0 obj -<< /D [ 2365 0 R /XYZ 81.145 407.731 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 118.339 null ] >> endobj 2392 0 obj -<< /D [ 2365 0 R /XYZ 79.37 371.063 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 107.38 null ] >> endobj 2393 0 obj -<< /D [ 2365 0 R /XYZ 81.145 352.929 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 96.421 null ] >> endobj 2394 0 obj -<< /D [ 2365 0 R /XYZ 81.145 341.97 null ] >> +<< /D [ 2339 0 R /XYZ 81.145 85.462 null ] >> endobj -2395 0 obj -<< /D [ 2365 0 R /XYZ 81.145 301.123 null ] >> +2338 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F88 664 0 R /F87 2395 0 R /F99 665 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2396 0 obj -<< /D [ 2365 0 R /XYZ 81.145 290.164 null ] >> +2398 0 obj +<< /Filter /FlateDecode /Length 3126 >> +stream +x\;$WLhKU|v47vjKj7=ݳ{ +hv?hfI"4}K'1A˅p(dZ`Z p"
O6+0unZ0pL$o~만d/DJ +udE ٞLƉ&5"UeawnsC&QTflcLDm[~A0]!3Y&! +<$SFDlę +ﯞrɜ-SN0TWaKJwk/3ѶtalG/ӓwn5Jp̈́A7oOS @Q~ĖG"+(ܓx 4ُ߭&^9zgۋ__O;Ҽ<1hκvLR&)e~2CtGas>L)RfOlE.R +'ٗ8ȑ}=Swd۪ڿ鳂"x|V*8$A%la),K[[>{q7ByK<؆/:ܾB VSU +bIA#@%䪤o56r**$PGxʛj]Yl'ܯѓ6-MSHE6ʹJ q#[eBΘ++,lK5'+b7q +(LR/4Q^O ZZ/ *.EYrsake7ˢvꯏPѽŶM4Էsq7P7(ɺ+͔#usD>z\ +/w%wϢĺ}#v<ѣR@bm{HҧXm.6A>[ĒԢP[>Yp rjX.2}Fǖܛ<Nq=4V*ٓ|ڲnV=WBM=؋V2#g?wy;PSށ/h&
~ +R͖N`/ao]FfnLgQ֏C^=CM1P8Z(Mp +sZԜ [iۮ鮄^a>M[7E$Ujh\ta\h3"66JtCiD0DʬwX3 rI|:WmmR,[SZ>sKR0ap,^SDŽínwjwCOcϤĤCr7a~ό5I^]P,e*vsov +g{EyC<Z.^߶}z;YH +$E''_&)98⨏Wn_XLGp;YU.ۦo<D#1G)~d%|CXPL՜dM),7X\s7B{YL%=wf t4Yl1F%W2?=]y:zT멳ΞΩIx/\YwYQ2Iܼ^.lY1I9%vj$\nGYd7Gn~,\E7ջry~$[I@h0at90VO*jnb36isӚÙlMKK3ʀU \WXt]vML9ho2غwݣ;M9d}O-\^|WnQ}ΔZSWdS}_!\3͟VpdNڑJR~UNo +8*_H^kiA+omTP9ݨ;ZŔBÍ7VEpA<[S߲tRE8"ÕsWxz:;Y:ɠ 6sgGv..לlB3osErjԒ\Ƿ\= +endstream endobj 2397 0 obj -<< /D [ 2365 0 R /XYZ 81.145 279.205 null ] >> -endobj -2398 0 obj -<< /D [ 2365 0 R /XYZ 81.145 268.246 null ] >> +<< /Type /Page /Contents 2398 0 R /Resources 2396 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2399 0 obj -<< /D [ 2365 0 R /XYZ 81.145 257.287 null ] >> +<< /D [ 2397 0 R /XYZ 78.37 808.885 null ] >> +endobj +273 0 obj +<< /D [ 2397 0 R /XYZ 79.37 771.024 null ] >> endobj 2400 0 obj -<< /D [ 2365 0 R /XYZ 81.145 204.485 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 699.364 null ] >> endobj 2401 0 obj -<< /D [ 2365 0 R /XYZ 81.145 169.616 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 688.405 null ] >> endobj -2364 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F83 414 0 R /F59 346 0 R /F84 425 0 R /F74 337 0 R /F22 367 0 R /F65 335 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2404 0 obj -<< /Filter /FlateDecode /Length 2021 >> -stream -xZn6SV"? d2[k{_+ǖeّ&zdƖ?)2)/]o?nJ_]
yQڋ5JH.o_~Ҁ>,VR5|=~/]F0"5=t}O2E˿T~xl6#\\<oAnK=ЄS}myJ"1٭)'ͬ|jZ3W~hHO%}uM.@zd>uf#{O;res9/2YADZk9sE䅒j!S\"Dşr'QZV#Aƫ^AXHXSP1[ؗaڌn9cvʷݠj}5BsN!Z;Z(XJ]'N~]\`Ϡq\Ċ`H4oXl4yY).Ҭ@ByUP -$hBP2| -PO1BSZEnKh(w"eb
7v0u?n4Bf;"\KTlz#;xvf'従A[αbвbWYi}>aR'iP\D
ReŻ- -颶;$sDd 'vIԣÜ0%?|71M"('ESy- *?pNډ2p6[;"v/-.jJu-h"9<i<riP8)Pm4(/_<fM995p-R EyɻhV&dQ`+KwֿS,@/$y:O6RL -m
Wm_$ BYMˇ@ @u|-")݀3oVW.C?_6HoGDe@w ڗSY* -c,)U[H-Lc,mDESah`T9U.+Ep -Z;PR -Żvv$[.q4l7A(_q{B7(LiOX#_i
kw2_V4}LW<hBY'`߲y):IFo}G·/xO]rI$xpͅ{`:^}M5 -endstream +2402 0 obj +<< /D [ 2397 0 R /XYZ 81.145 677.446 null ] >> endobj 2403 0 obj -<< /Type /Page /Contents 2404 0 R /Resources 2402 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2397 0 R /XYZ 81.145 661.751 null ] >> +endobj +2404 0 obj +<< /D [ 2397 0 R /XYZ 81.145 650.792 null ] >> endobj 2405 0 obj -<< /D [ 2403 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 639.833 null ] >> endobj 2406 0 obj -<< /D [ 2403 0 R /XYZ 81.145 742.926 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 628.874 null ] >> +endobj +277 0 obj +<< /D [ 2397 0 R /XYZ 79.37 590.951 null ] >> endobj 2407 0 obj -<< /D [ 2403 0 R /XYZ 81.145 731.968 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 536.961 null ] >> endobj 2408 0 obj -<< /D [ 2403 0 R /XYZ 81.145 721.009 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 526.002 null ] >> endobj 2409 0 obj -<< /D [ 2403 0 R /XYZ 81.145 710.05 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 515.043 null ] >> endobj 2410 0 obj -<< /D [ 2403 0 R /XYZ 81.145 699.091 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 451.022 null ] >> endobj 2411 0 obj -<< /D [ 2403 0 R /XYZ 81.145 688.132 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 440.063 null ] >> endobj 2412 0 obj -<< /D [ 2403 0 R /XYZ 81.145 677.173 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 429.104 null ] >> endobj 2413 0 obj -<< /D [ 2403 0 R /XYZ 81.145 666.214 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 418.145 null ] >> endobj 2414 0 obj -<< /D [ 2403 0 R /XYZ 81.145 613.412 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 330.214 null ] >> endobj 2415 0 obj -<< /D [ 2403 0 R /XYZ 81.145 602.453 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 319.255 null ] >> endobj 2416 0 obj -<< /D [ 2403 0 R /XYZ 81.145 591.494 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 308.296 null ] >> endobj 2417 0 obj -<< /D [ 2403 0 R /XYZ 81.145 580.535 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 297.337 null ] >> endobj 2418 0 obj -<< /D [ 2403 0 R /XYZ 81.145 569.577 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 209.405 null ] >> endobj 2419 0 obj -<< /D [ 2403 0 R /XYZ 81.145 558.618 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 198.446 null ] >> endobj 2420 0 obj -<< /D [ 2403 0 R /XYZ 81.145 547.659 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 187.488 null ] >> endobj 2421 0 obj -<< /D [ 2403 0 R /XYZ 81.145 536.7 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 176.529 null ] >> endobj 2422 0 obj -<< /D [ 2403 0 R /XYZ 81.145 525.741 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 100.552 null ] >> endobj 2423 0 obj -<< /D [ 2403 0 R /XYZ 81.145 514.782 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 89.593 null ] >> endobj 2424 0 obj -<< /D [ 2403 0 R /XYZ 81.145 503.823 null ] >> +<< /D [ 2397 0 R /XYZ 81.145 78.635 null ] >> endobj -2425 0 obj -<< /D [ 2403 0 R /XYZ 81.145 492.864 null ] >> -endobj -2426 0 obj -<< /D [ 2403 0 R /XYZ 81.145 481.905 null ] >> +2396 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F59 368 0 R /F88 664 0 R /F99 665 0 R /F84 449 0 R /F22 389 0 R /F66 358 0 R /F83 438 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2427 0 obj -<< /D [ 2403 0 R /XYZ 81.145 470.946 null ] >> +<< /Filter /FlateDecode /Length 2592 >> +stream +x[n#7+!5 +oA)
TS3R%rx~Ph _dJv+("+?_#fI}k~Hè"ȡp}&@8"}7iG½~,|WvҸL_MBr<Oط +\[~*ܕPP(t(k:l)<m{M +7$uN?V%ACǡ$ۚ$-"I[`[ЄY6ܢ9ŭQĀ 9E:'`Y-V(DIJnrqGM&MxMZf^[Ya]aL7PY(#)"pT8v@"pvA)ٻrDETT8%#vFGEAK[]a:RC-%RFӁhr3E=RFtI:z-ơJ͢fo> w7J_ڹ1ces's$wi:NSnưj©ss9(JԎXrYͫLi0@v6tk!#P`)o23BФwfUf%pHgRgZǾ'rV4.~uh4iԔY
ocWt6d։#ya)ayi<4Z<MB~HƜUH*.wI ekr[IJ*wo,|<Z-@%}wݛ,YO/rNa8kH0]fLyHY=t\PhYoRHB*K$w(%iZw
mjLϑbuH:Zj +{wze%myt3h >'7 +оPLB Dn[LY6ǫ[DzE"A>賀ygyC[iteo\sp +J +w<E>_ H{ERt2(b.ܦ;.!Œ-{^]y\cmBMh77i5Rm1۸~W&TO :WfM2hJ
ܭz#mw_y$A[?}և5y\>t>ʱG.%Jx?xm):>sI1Jd/C-U:BK}!免RsD7"n.Oļtȍ SSjIF j|gAFRU9˘ع8`ͅd~g%olyBTFg\Y`-^k+X
Z6)]{I !b)7;Lΰ֙SMCKŰI@(lOSضFw9>WJJAG'ZBcJRL"PmI䖐ũzOQ( BĮ
ÝdG?>ȧpfO <?>Nȕ$:XT
.2HOve]fǵڤF+!O:y0);z +lnP;=<ΉuDq/||:dHZ ChCs}cwL
G9GpEA¹O`z(m{qf'q3˾ʺ7BY䝆Cgٔ:J߆Ƶv@r;]&Y;JU"]7EMiF#M4R[ւ5bHڵ#Ե=!CK#tOVrj#_j'՛MQا* Wq(-}o0
\%lpy&l)}KhzokP5n-*\֛aC5ZJ>F1`$đ&!VGe YHj4댸gVjGhf3B{=a}~ +MqT+[rm!0#aP{TelO`~k +,Nqlr?MA'4=`6r+\F@AIL_;Pc{_:&Vw2jȉKp~NOĥ?l鹚]dZ|L}{p
Pshto8SJˮP0w}Hx- ":hy270S|پY`g˗rv
&4A=!*"mnr'I]yʱ3>!De%qbN^'J;ZfL_6<{ߎp1:Y~<Q0D!ɦBQjx!߀13.L9y'뮓u X*=6;Y:BLuz4fc MhF4~Hm'[ +endstream +endobj +2426 0 obj +<< /Type /Page /Contents 2427 0 R /Resources 2425 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2428 0 obj -<< /D [ 2403 0 R /XYZ 81.145 459.987 null ] >> +<< /D [ 2426 0 R /XYZ 78.37 808.885 null ] >> endobj 2429 0 obj -<< /D [ 2403 0 R /XYZ 81.145 449.029 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 768.829 null ] >> endobj 2430 0 obj -<< /D [ 2403 0 R /XYZ 81.145 438.07 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 757.87 null ] >> endobj 2431 0 obj -<< /D [ 2403 0 R /XYZ 81.145 427.111 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 746.912 null ] >> endobj 2432 0 obj -<< /D [ 2403 0 R /XYZ 81.145 396.227 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 735.953 null ] >> endobj 2433 0 obj -<< /D [ 2403 0 R /XYZ 81.145 385.268 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 638.479 null ] >> endobj 2434 0 obj -<< /D [ 2403 0 R /XYZ 81.145 374.309 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 627.52 null ] >> endobj 2435 0 obj -<< /D [ 2403 0 R /XYZ 81.145 363.35 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 616.561 null ] >> endobj 2436 0 obj -<< /D [ 2403 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 605.602 null ] >> endobj 2437 0 obj -<< /D [ 2403 0 R /XYZ 81.145 341.432 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 594.643 null ] >> endobj 2438 0 obj -<< /D [ 2403 0 R /XYZ 81.145 330.473 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 583.684 null ] >> endobj 2439 0 obj -<< /D [ 2403 0 R /XYZ 81.145 297.596 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 534.031 null ] >> endobj 2440 0 obj -<< /D [ 2403 0 R /XYZ 81.145 264.72 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 523.072 null ] >> endobj 2441 0 obj -<< /D [ 2403 0 R /XYZ 81.145 186.015 null ] >> -endobj -2402 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F65 335 0 R /F59 346 0 R /F84 425 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2426 0 R /XYZ 81.145 512.113 null ] >> endobj -2444 0 obj -<< /Filter /FlateDecode /Length 2171 >> -stream -xZr,'+A)WgnUޥMVmxCL|}XMG -WxH+nb̂ yyq`ڕ 캵R~U@4uI=y$|@ r$%r bj(YhOhA[Gzp0!]AGO|z):/l/1Ic~8χ@QkL?fh?WO3gQְcLCbGCHS үƼQ#uxyUR^9~&'\G!i=tZ24Wv<\-Eͨ18~SܞZ9G{T]!ÜVirמ.;p$TszG<x:T -P<{><Zg4%FU胆c˙>Bғ4A>\;#!UNvbΑ2oI:aj)Й܂:LE74r4^FoPߚ@x{hgI3
DQ1]9MpLqm\G[y`0
X{ -}<!V 1;Z4ҤK_8#TUׁnzG{jZGSlo@duOQh̀)o=8 -ރ{oB)fO*ЪQN[vFymIov;BJ -V##M-Ya{B'HonU9&͗9H(ō]HUMk3cIi==L7[x4=S>%Gxq#``ut\)gV<ٜޟ r -endstream +2442 0 obj +<< /D [ 2426 0 R /XYZ 81.145 501.155 null ] >> endobj 2443 0 obj -<< /Type /Page /Contents 2444 0 R /Resources 2442 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2426 0 R /XYZ 81.145 490.196 null ] >> +endobj +2444 0 obj +<< /D [ 2426 0 R /XYZ 81.145 479.237 null ] >> endobj 2445 0 obj -<< /D [ 2443 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 468.278 null ] >> endobj 2446 0 obj -<< /D [ 2443 0 R /XYZ 79.37 773.016 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 428.481 null ] >> endobj 2447 0 obj -<< /D [ 2443 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 417.522 null ] >> endobj 2448 0 obj -<< /D [ 2443 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 406.563 null ] >> endobj 2449 0 obj -<< /D [ 2443 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 395.604 null ] >> endobj 2450 0 obj -<< /D [ 2443 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 384.645 null ] >> endobj 2451 0 obj -<< /D [ 2443 0 R /XYZ 81.145 633.337 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 369.754 null ] >> endobj 2452 0 obj -<< /D [ 2443 0 R /XYZ 81.145 622.379 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 358.796 null ] >> endobj 2453 0 obj -<< /D [ 2443 0 R /XYZ 81.145 611.42 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 347.837 null ] >> endobj 2454 0 obj -<< /D [ 2443 0 R /XYZ 81.145 600.461 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 336.878 null ] >> endobj 2455 0 obj -<< /D [ 2443 0 R /XYZ 81.145 589.502 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 325.919 null ] >> endobj 2456 0 obj -<< /D [ 2443 0 R /XYZ 81.145 578.543 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 314.96 null ] >> endobj 2457 0 obj -<< /D [ 2443 0 R /XYZ 81.145 567.584 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 304.001 null ] >> endobj 2458 0 obj -<< /D [ 2443 0 R /XYZ 81.145 556.625 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 293.042 null ] >> endobj 2459 0 obj -<< /D [ 2443 0 R /XYZ 81.145 545.666 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 282.083 null ] >> endobj 2460 0 obj -<< /D [ 2443 0 R /XYZ 81.145 534.707 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 224.427 null ] >> endobj 2461 0 obj -<< /D [ 2443 0 R /XYZ 81.145 523.748 null ] >> +<< /D [ 2426 0 R /XYZ 79.37 190.836 null ] >> endobj 2462 0 obj -<< /D [ 2443 0 R /XYZ 81.145 512.789 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 173.226 null ] >> endobj 2463 0 obj -<< /D [ 2443 0 R /XYZ 81.145 471.943 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 162.267 null ] >> endobj 2464 0 obj -<< /D [ 2443 0 R /XYZ 81.145 460.984 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 122.47 null ] >> endobj 2465 0 obj -<< /D [ 2443 0 R /XYZ 81.145 450.025 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 111.511 null ] >> endobj 2466 0 obj -<< /D [ 2443 0 R /XYZ 81.145 439.066 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 100.552 null ] >> endobj 2467 0 obj -<< /D [ 2443 0 R /XYZ 81.145 428.107 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 89.593 null ] >> endobj 2468 0 obj -<< /D [ 2443 0 R /XYZ 81.145 417.148 null ] >> +<< /D [ 2426 0 R /XYZ 81.145 78.635 null ] >> endobj -2469 0 obj -<< /D [ 2443 0 R /XYZ 81.145 406.189 null ] >> -endobj -2470 0 obj -<< /D [ 2443 0 R /XYZ 81.145 395.23 null ] >> +2425 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F66 358 0 R /F63 356 0 R /F85 461 0 R /F83 438 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2471 0 obj -<< /D [ 2443 0 R /XYZ 81.145 384.271 null ] >> +<< /Filter /FlateDecode /Length 3011 >> +stream +x[n#9WM`,>m0יLe.40c'_{?\!1A~_8&h_sm9Ros%8G>J>dj&qH
\
-C D!]j<yF +N6Us{Tg{$ik;<&P
TP@O/y]9+$gyQ4R1 R^bki[:0v$T5-"2i*PǕ&XƑHuBNO|Ke bv--/Ȭ+xmk( +3%,Gg$ +/jDqiֻ Yo +|mVk{P`s%!Ү
A|nns[-Yi_䖀~b98elKˬqX]ie
v)#O$TF V +j^Z)RMîU4 +81׆D
7QoIW4KTETBj^ck?Z XH6+ЯHс`9ў!Z3)q! F*[w؍64y奺k>]dz&kdk^ԓR|C00R̒5hˠf
XqOx'L +b +JdvKͽPCBh{k*G[v=TLY=Qr'~{yR9TJ5+u)EO1{`y۳<˻=iD$Xj<@^9x?Ʒ2#H">!FM)BK!I c?k=.,9F@-%N94!wJiRw)gE>W_3ǏFSj#m+0`1Jα_#!Hh#:M5#HX)~i1թR +(Dآ!?9T8q=/hMJ%K~)ϥJ %U5N_V[,uM.oSX``@d%_Yhj@H92Lt71aD;9bGq Kt,PbU&>xMRztzeW?iNڋu=%?$|IAKWĬ'ܣ2=X!zBہ\ym>%VT6@Z;tKuɁTBL\15MB11tUgN.16\JTn(c(N¦j9ЎRZ9cP= Wq '1|^P9k).ځÓiL(=N8.{fw[]O}|'4#uY{9`9gbVO>T"xɼzXvrX*TMykȦB`Wwt@)]YGEnI[i}Ϝ쐰yF.NgjmiK9--"Em|'A#Sk7y*Llor+^yqzCÝqwr^p +>B;|%'5sVepI-<Q!hvsu1s)A@Hoh[STkvR5sm%4
L977bĪ=;7d,?k\To'te1[yM <cVN\oi<ӬOО F}YԳ7Rˋ4 o[;ْ!R.CSk;c2vg(dzvp~|&Ų4t +endstream +endobj +2470 0 obj +<< /Type /Page /Contents 2471 0 R /Resources 2469 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2063 0 R >> endobj 2472 0 obj -<< /D [ 2443 0 R /XYZ 81.145 353.387 null ] >> +<< /D [ 2470 0 R /XYZ 78.37 808.885 null ] >> endobj 2473 0 obj -<< /D [ 2443 0 R /XYZ 81.145 342.428 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 743.091 null ] >> endobj 2474 0 obj -<< /D [ 2443 0 R /XYZ 81.145 331.469 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 708.882 null ] >> endobj 2475 0 obj -<< /D [ 2443 0 R /XYZ 81.145 320.511 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 597.953 null ] >> endobj 2476 0 obj -<< /D [ 2443 0 R /XYZ 81.145 309.552 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 586.994 null ] >> endobj 2477 0 obj -<< /D [ 2443 0 R /XYZ 81.145 298.593 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 576.035 null ] >> endobj 2478 0 obj -<< /D [ 2443 0 R /XYZ 81.145 287.634 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 565.076 null ] >> endobj 2479 0 obj -<< /D [ 2443 0 R /XYZ 81.145 276.675 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 554.117 null ] >> endobj 2480 0 obj -<< /D [ 2443 0 R /XYZ 81.145 265.716 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 543.158 null ] >> endobj 2481 0 obj -<< /D [ 2443 0 R /XYZ 79.37 215.101 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 532.199 null ] >> endobj 2482 0 obj -<< /D [ 2443 0 R /XYZ 81.145 185.011 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 521.241 null ] >> endobj 2483 0 obj -<< /D [ 2443 0 R /XYZ 81.145 174.052 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 457.473 null ] >> endobj 2484 0 obj -<< /D [ 2443 0 R /XYZ 81.145 163.093 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 416.956 null ] >> endobj 2485 0 obj -<< /D [ 2443 0 R /XYZ 81.145 132.209 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 405.997 null ] >> endobj 2486 0 obj -<< /D [ 2443 0 R /XYZ 81.145 121.25 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 395.038 null ] >> endobj 2487 0 obj -<< /D [ 2443 0 R /XYZ 81.145 110.291 null ] >> -endobj -2442 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F59 346 0 R /F84 425 0 R /F15 334 0 R /F81 377 0 R /F74 337 0 R /F83 414 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2470 0 R /XYZ 81.145 384.079 null ] >> endobj -2490 0 obj -<< /Filter /FlateDecode /Length 1813 >> -stream -xZM6ϯV")JLVڞ+ْ-D;آ&gCO:ӗWN7IɃb:96J9ww-hVkz| ,B}yt*0qS|D>ᢵ~͂g >!Y_c麈@W]:X.}琮/O@*,.r3,Ah;J&e.Bߵ|s2iR^d&m%g%"@h6ttEX5Y<Je%0tgSH"=2~l<>0xe"u~(@@Px4U1vĠ8^J|Kc3K6u;%tԥ,-zt@[ -34bv{-fc=ZiQBhԿT&HAp -,6/</1q軂ҋa녟R/DzAz^0z}k$)I#06FMf:X?4H=6ѹ("}~))la|#Վc=AYq|3mÔ#hiN{UӍ/oO -endstream +2488 0 obj +<< /D [ 2470 0 R /XYZ 81.145 373.12 null ] >> endobj 2489 0 obj -<< /Type /Page /Contents 2490 0 R /Resources 2488 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2099 0 R >> +<< /D [ 2470 0 R /XYZ 81.145 362.161 null ] >> +endobj +2490 0 obj +<< /D [ 2470 0 R /XYZ 81.145 351.202 null ] >> endobj 2491 0 obj -<< /D [ 2489 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 321.472 null ] >> endobj 2492 0 obj -<< /D [ 2489 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 310.514 null ] >> endobj 2493 0 obj -<< /D [ 2489 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 299.555 null ] >> endobj 2494 0 obj -<< /D [ 2489 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 288.596 null ] >> endobj 2495 0 obj -<< /D [ 2489 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 277.637 null ] >> endobj 2496 0 obj -<< /D [ 2489 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 266.678 null ] >> endobj 2497 0 obj -<< /D [ 2489 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 255.719 null ] >> endobj 2498 0 obj -<< /D [ 2489 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 202.079 null ] >> endobj 2499 0 obj -<< /D [ 2489 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 172.349 null ] >> endobj 2500 0 obj -<< /D [ 2489 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 2470 0 R /XYZ 81.145 94.798 null ] >> endobj -2501 0 obj -<< /D [ 2489 0 R /XYZ 81.145 648.281 null ] >> -endobj -2502 0 obj -<< /D [ 2489 0 R /XYZ 81.145 637.322 null ] >> +2469 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F83 438 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F81 401 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2503 0 obj -<< /D [ 2489 0 R /XYZ 81.145 626.364 null ] >> +<< /Filter /FlateDecode /Length 2139 >> +stream +x[n#7+U\À;[kr_SܗdV9x&_kekt|<\s|$qh.<s9熿 <s.~\ڗ_Т8W%# 1xWv^=\Gg~!k yLFG +, __35DF +R"UF30!0+Hy$aaJqbIms`G 2/U +ԉ.OPo7+j& $߷RX@1(bPݎ@=к@x@B2@=T#P!{gFp 쏫P!}&^_w{t}Ol0:b
}"HF,[1cJBr5,搘:?XQ=J@K5ň3*y>rOJ#1CV{gB Z%$۱bf;%ҍkxNkyB F0
j)]!aNx\?Wir<N6Fk@QV͜I3&7SNR{AS* +կf̖42 5JU9i80BBwsM><獩:#!մNvaQUI&aS'#0x&崘nq&R 3Ҏʇ4H}!PTL#sb@;(L[ehvp^# +ؐg+^OO#v"TλɱccGAQmGSU4q_tL :b_OtO⚔V{{b`ӏs(@ƍEea%ɲ=/5%ыh^YTzʑDֱA)lMBObb/8U1=R#/2\Sة۵7,eC,)@'T'y{J&?y(sKR +/֯DLֈ +N-5UW9p0k"gָ E"nrT#N-QqnOHj)D9& +zD'mtM7J@%Fl+ALɭeD!43ditϘ +W@Vz"8GEGYkSC=At6IΕ=57+tɡ~5x@ju<ŗɡILW+ZpF֙Lq1Y-JP05[> Y5mS¯[.? i}f. +HgDM92ްY|"gΔF90_B +endstream +endobj +2502 0 obj +<< /Type /Page /Contents 2503 0 R /Resources 2501 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2504 0 obj -<< /D [ 2489 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 2502 0 R /XYZ 78.37 808.885 null ] >> endobj 2505 0 obj -<< /D [ 2489 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 2502 0 R /XYZ 79.37 773.016 null ] >> endobj 2506 0 obj -<< /D [ 2489 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 754.882 null ] >> endobj 2507 0 obj -<< /D [ 2489 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 743.923 null ] >> endobj 2508 0 obj -<< /D [ 2489 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 732.964 null ] >> endobj 2509 0 obj -<< /D [ 2489 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 722.005 null ] >> endobj 2510 0 obj -<< /D [ 2489 0 R /XYZ 81.145 495.853 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 633.337 null ] >> endobj 2511 0 obj -<< /D [ 2489 0 R /XYZ 81.145 455.006 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 622.379 null ] >> endobj 2512 0 obj -<< /D [ 2489 0 R /XYZ 81.145 444.047 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 611.42 null ] >> endobj 2513 0 obj -<< /D [ 2489 0 R /XYZ 81.145 433.088 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 600.461 null ] >> endobj 2514 0 obj -<< /D [ 2489 0 R /XYZ 81.145 422.129 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 589.502 null ] >> endobj 2515 0 obj -<< /D [ 2489 0 R /XYZ 81.145 411.171 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 578.543 null ] >> endobj 2516 0 obj -<< /D [ 2489 0 R /XYZ 81.145 400.212 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 567.584 null ] >> endobj 2517 0 obj -<< /D [ 2489 0 R /XYZ 81.145 389.253 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 556.625 null ] >> endobj 2518 0 obj -<< /D [ 2489 0 R /XYZ 81.145 378.294 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 545.666 null ] >> endobj 2519 0 obj -<< /D [ 2489 0 R /XYZ 81.145 367.335 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 534.707 null ] >> endobj 2520 0 obj -<< /D [ 2489 0 R /XYZ 81.145 356.376 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 523.748 null ] >> endobj 2521 0 obj -<< /D [ 2489 0 R /XYZ 81.145 345.417 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 512.789 null ] >> endobj 2522 0 obj -<< /D [ 2489 0 R /XYZ 81.145 334.458 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 501.831 null ] >> endobj 2523 0 obj -<< /D [ 2489 0 R /XYZ 81.145 323.499 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 460.984 null ] >> endobj 2524 0 obj -<< /D [ 2489 0 R /XYZ 81.145 282.653 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 450.025 null ] >> endobj 2525 0 obj -<< /D [ 2489 0 R /XYZ 81.145 271.694 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 439.066 null ] >> endobj 2526 0 obj -<< /D [ 2489 0 R /XYZ 81.145 260.735 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 428.107 null ] >> endobj 2527 0 obj -<< /D [ 2489 0 R /XYZ 81.145 249.776 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 417.148 null ] >> endobj 2528 0 obj -<< /D [ 2489 0 R /XYZ 81.145 238.817 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 406.189 null ] >> endobj 2529 0 obj -<< /D [ 2489 0 R /XYZ 81.145 227.858 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 395.23 null ] >> endobj 2530 0 obj -<< /D [ 2489 0 R /XYZ 81.145 187.011 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 384.271 null ] >> endobj 2531 0 obj -<< /D [ 2489 0 R /XYZ 81.145 176.052 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 373.313 null ] >> endobj 2532 0 obj -<< /D [ 2489 0 R /XYZ 81.145 165.093 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 362.354 null ] >> endobj 2533 0 obj -<< /D [ 2489 0 R /XYZ 81.145 154.134 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 351.395 null ] >> endobj 2534 0 obj -<< /D [ 2489 0 R /XYZ 81.145 143.176 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 340.436 null ] >> endobj 2535 0 obj -<< /D [ 2489 0 R /XYZ 81.145 132.217 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 329.477 null ] >> endobj 2536 0 obj -<< /D [ 2489 0 R /XYZ 81.145 121.258 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 318.518 null ] >> endobj 2537 0 obj -<< /D [ 2489 0 R /XYZ 81.145 110.299 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 307.559 null ] >> endobj -2488 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +2538 0 obj +<< /D [ 2502 0 R /XYZ 81.145 296.6 null ] >> endobj -2541 0 obj -<< /Filter /FlateDecode /Length 2864 >> -stream -x[r,
+LT\i\]syT]؛~7VSM#Mh -: -W;Z_T0f 8N-9->Pf'e(jO;%m:'VJôYFb -">}ַɳ/En$pق#/)+F"mv% r -'F* Ы$34-m2mD$EkVK0 -)" - -%T+іP!x&/KRW*NԴNV -mb!TUVdqhRF9;7 -&fvL*x+^m^2[HKZmIĻ%F.%siL -wn0ήN9NAhX!/>P7dPi'VrovGJ˿ν:5|gvH$Hc -;:BMz>Kr̨jVi1xCvqi
ρ"%Lb2: -1>{Tl/hErqz -)H~> hy*`e -*T'a{7}$=ަ{P0@G;M&OL/ -endstream +2539 0 obj +<< /D [ 2502 0 R /XYZ 81.145 285.641 null ] >> endobj 2540 0 obj -<< /Type /Page /Contents 2541 0 R /Resources 2539 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R /Annots 2579 0 R >> -endobj -2579 0 obj -[ 2538 0 R ] +<< /D [ 2502 0 R /XYZ 81.145 254.757 null ] >> endobj -2538 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 256.954 157.029 267.381 169.618 ]/A << /S /GoTo /D (Hfootnote.39) >> >> +2541 0 obj +<< /D [ 2502 0 R /XYZ 81.145 243.798 null ] >> endobj 2542 0 obj -<< /D [ 2540 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 232.839 null ] >> endobj 2543 0 obj -<< /D [ 2540 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 221.88 null ] >> endobj 2544 0 obj -<< /D [ 2540 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 210.921 null ] >> endobj 2545 0 obj -<< /D [ 2540 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 199.963 null ] >> endobj 2546 0 obj -<< /D [ 2540 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 189.004 null ] >> endobj 2547 0 obj -<< /D [ 2540 0 R /XYZ 81.145 711.046 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 178.045 null ] >> endobj 2548 0 obj -<< /D [ 2540 0 R /XYZ 81.145 700.087 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 167.086 null ] >> endobj 2549 0 obj -<< /D [ 2540 0 R /XYZ 81.145 689.128 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 156.127 null ] >> endobj 2550 0 obj -<< /D [ 2540 0 R /XYZ 81.145 678.169 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 145.168 null ] >> endobj 2551 0 obj -<< /D [ 2540 0 R /XYZ 81.145 667.21 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 134.209 null ] >> endobj 2552 0 obj -<< /D [ 2540 0 R /XYZ 81.145 656.252 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 123.25 null ] >> endobj 2553 0 obj -<< /D [ 2540 0 R /XYZ 81.145 645.293 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 112.291 null ] >> endobj 2554 0 obj -<< /D [ 2540 0 R /XYZ 81.145 634.334 null ] >> +<< /D [ 2502 0 R /XYZ 81.145 101.332 null ] >> endobj -2555 0 obj -<< /D [ 2540 0 R /XYZ 81.145 623.375 null ] >> +2501 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F59 368 0 R /F84 449 0 R /F15 355 0 R /F81 401 0 R /F63 356 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2556 0 obj -<< /D [ 2540 0 R /XYZ 81.145 612.416 null ] >> +2558 0 obj +<< /Filter /FlateDecode /Length 2505 >> +stream +xZɎ6W!X\ +HAx_ɬVuқY'@h2`HXC=H{Sc\ACY-_,ɨ'9dg&:#dQf &}"$ۦ;Pey#yL7
L +PṰ0bT-8MHJTh8HbPyzĖ?ĉQ"YOʖ}ZVҬ~}[Vx +fKd
$UsL"EpC4':LJv#1cXPKmNzPEr-4q.H5}858aQ*)Y?s]>?1u>DWҹDDs:Lo&ompMx&B ׂ^W>h]%H=c<49$Au8IȮeb\oqr
]ۛ8X$r
`]W;1pĻ9yvXCY.B*/&}Ɋ\TH*n5-א_Q&=+ uOG\/vdS'ƯR7'5 +b[ < P=!^*oϫ5@)HA3)u&d#%!φlҕqO5c8 +J]WW hNlX#q8E1c(_J%.,p<]?ĻV)GԪpWڃ=WuT_+8_'B!%t |/N]% +$JܳIڛKҩ+>t!W nADZha|:T_X+#,m2WUiCPN?+ RHNsEʍ +Y#u*<@AktK=ZLzOz$\oP +\=8o[@f՝\xB4,fm;L;Ì]"kUM]^Z]4)dc<#U
%b+5Kq^Jұwn[ok/^r:hZ#q:B2^[F1!JE
ϤAple[:rOiU6*3-Fnf/Z⡏xՑGRstSk$a8Ҕ:2癸>RDka
4v@u_:7Tb-KGj$vcmBFX`zBc5=r`3{6OF&%mAXF>gn^.&v?܊eZOIm"GJ~B\al),jm88})0B:$mg)QR8OCJՈq'Ù
MR+a4#JVmJ`m&KD7^'ٹ+:C999HmTS}rAYVc4ۦԲąRNH~AS~#OhL5DOŊe+IUCkéX-`0+(;;ڴL!mvR!rȌ88̳yH0Mv^
v$BCf +_>&pX/M
:}drפi_mVSC)vHOu7|N
rRhvGB5~p|hP1*9gHMTl .{ +8pH#|\~Y=PYxjvۭN +endstream endobj 2557 0 obj -<< /D [ 2540 0 R /XYZ 81.145 601.457 null ] >> -endobj -2558 0 obj -<< /D [ 2540 0 R /XYZ 81.145 590.498 null ] >> +<< /Type /Page /Contents 2558 0 R /Resources 2556 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2559 0 obj -<< /D [ 2540 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 2557 0 R /XYZ 78.37 808.885 null ] >> endobj 2560 0 obj -<< /D [ 2540 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 695.587 null ] >> endobj 2561 0 obj -<< /D [ 2540 0 R /XYZ 81.145 497.846 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 684.628 null ] >> endobj 2562 0 obj -<< /D [ 2540 0 R /XYZ 81.145 486.887 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 673.669 null ] >> endobj 2563 0 obj -<< /D [ 2540 0 R /XYZ 79.37 438.264 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 645.74 null ] >> endobj 2564 0 obj -<< /D [ 2540 0 R /XYZ 81.145 372.309 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 634.781 null ] >> endobj 2565 0 obj -<< /D [ 2540 0 R /XYZ 81.145 361.35 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 623.822 null ] >> endobj 2566 0 obj -<< /D [ 2540 0 R /XYZ 81.145 290.615 null ] >> +<< /D [ 2557 0 R /XYZ 79.37 579.947 null ] >> endobj 2567 0 obj -<< /D [ 2540 0 R /XYZ 81.145 249.768 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 550.338 null ] >> endobj 2568 0 obj -<< /D [ 2540 0 R /XYZ 81.145 238.809 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 539.379 null ] >> endobj 2569 0 obj -<< /D [ 2540 0 R /XYZ 81.145 227.851 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 528.42 null ] >> endobj 2570 0 obj -<< /D [ 2540 0 R /XYZ 81.145 216.892 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 513.443 null ] >> endobj 2571 0 obj -<< /D [ 2540 0 R /XYZ 81.145 205.933 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 502.484 null ] >> endobj 2572 0 obj -<< /D [ 2540 0 R /XYZ 81.145 194.974 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 491.525 null ] >> endobj 2573 0 obj -<< /D [ 2540 0 R /XYZ 81.145 154.127 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 480.566 null ] >> endobj 2574 0 obj -<< /D [ 2540 0 R /XYZ 81.145 143.168 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 451.54 null ] >> endobj 2575 0 obj -<< /D [ 2540 0 R /XYZ 81.145 132.209 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 440.581 null ] >> endobj 2576 0 obj -<< /D [ 2540 0 R /XYZ 81.145 121.25 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 429.622 null ] >> endobj 2577 0 obj -<< /D [ 2540 0 R /XYZ 93.716 91.444 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 418.663 null ] >> endobj -2539 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F59 346 0 R /F84 425 0 R /F74 337 0 R /F22 367 0 R /F65 335 0 R /F81 377 0 R /F83 414 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +2578 0 obj +<< /D [ 2557 0 R /XYZ 81.145 407.704 null ] >> endobj -2582 0 obj -<< /Filter /FlateDecode /Length 2791 >> -stream -xڵ\ɎW4dp -Z|}_[pEc4)!"lJSڇ 0uDVP{R)U"^os~?xbSa -SR}\x/r./E)w}¸+0?b/I |ėj)q<qbnbUe'esgeWK!k|kt#~R*Jku5K_Q1Ǔ
^^i¹hxl)wcD|~<iG|*ڼ\OK
,UYIZŽJASJju%FvhUpo%@@iy%"-j -^)-kOڋCw<ɇuNt% -$r -Z)hJ{ -|
2)JT1!'R6wYޞBfNY,u-7juTH.+"Y @>BIs<գ(rH)>Xoq1uāH(Q~[^Hfr?g[vw-,AXyB1.@lΎ0)~TA1j̾>Gjm0 -4Z] -FJ!Ϳ^`q!!9v -g(jV -=>ObсkKu7GXp%h7[rNeH;JDy%4 ^_*U3YAKijU:^<T#km)*kѡ*V꿟*rBNޠ>_Oѽvx/AD$糬[=;wF
RB::VN:쨰gXHL6а)IQ00 -նX}t'%}ncĠ6ȪܮpO%g -PW,PT@^`،|q֥즹@BN>N
^7*l~H8S݈vˌtAOKS^n'lC`JKsTGL?O1,֎%+>Wӄpż0n+RAz97υ#s?jNsboϞ+4^i^0B_)c:g>[QXܣ}dQF,q<XJV7d:B?
2N
|0P4!JDŽꈥB>dgc -ށcK 'FLS͒adRȄU&(4abbIQ:3s^y -}qrzu@>H=hݘEqI8:J֟`j`ܕnvϯcw:NQZ\ЅFdESJsPd0K93} -^v}qC*cT$;q{s\ӇDE -h2)w2z'em2.|ilέ羲 -3.g
LYTZt?ɿj]m!p?] AOO
#`HkJ7+ #4/Jm't5`bQ:5?`Z|0D!kf)buZJ{Y'πa -2K#`OVR~U;1@^1/'mia2Tm`wz[>|1&ޮUS® ^úMeDԼ;&1kVO+6vޓCWdpͭ|njݜQ1 _xO5 -۾,ʨ:x5F_/[}dEGK=2
Q:f\f;c?QSM!NXtmz7ORwmHcw:J{AW)iZɁ9zNNuSXԝĀsMwA;/?^ox>241eUm}N?a,^5zi.YcV[DlȊZg/aѾgP˭%FBvrtZv!r[Dvq+CIZrH]Z.l{1B/|ږQsGhz5R0Elߕ.f%̉=czJQЎW(O2#-^!P~OԱh dڦxN=R=?T/) -endstream +2579 0 obj +<< /D [ 2557 0 R /XYZ 81.145 396.745 null ] >> +endobj +2580 0 obj +<< /D [ 2557 0 R /XYZ 81.145 385.787 null ] >> endobj 2581 0 obj -<< /Type /Page /Contents 2582 0 R /Resources 2580 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2557 0 R /XYZ 81.145 374.828 null ] >> +endobj +2582 0 obj +<< /D [ 2557 0 R /XYZ 81.145 363.869 null ] >> endobj 2583 0 obj -<< /D [ 2581 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 334.843 null ] >> endobj 2584 0 obj -<< /D [ 2581 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 323.884 null ] >> endobj 2585 0 obj -<< /D [ 2581 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 312.925 null ] >> endobj 2586 0 obj -<< /D [ 2581 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 301.966 null ] >> endobj 2587 0 obj -<< /D [ 2581 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 291.007 null ] >> endobj 2588 0 obj -<< /D [ 2581 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 251.537 null ] >> endobj 2589 0 obj -<< /D [ 2581 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 240.578 null ] >> endobj 2590 0 obj -<< /D [ 2581 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 210.141 null ] >> endobj 2591 0 obj -<< /D [ 2581 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 199.183 null ] >> endobj 2592 0 obj -<< /D [ 2581 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 188.224 null ] >> endobj 2593 0 obj -<< /D [ 2581 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 177.265 null ] >> endobj 2594 0 obj -<< /D [ 2581 0 R /XYZ 81.145 605.442 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 166.306 null ] >> endobj 2595 0 obj -<< /D [ 2581 0 R /XYZ 81.145 594.483 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 155.347 null ] >> endobj 2596 0 obj -<< /D [ 2581 0 R /XYZ 81.145 583.524 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 144.388 null ] >> endobj 2597 0 obj -<< /D [ 2581 0 R /XYZ 81.145 572.565 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 133.429 null ] >> endobj 2598 0 obj -<< /D [ 2581 0 R /XYZ 81.145 561.606 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 122.47 null ] >> endobj 2599 0 obj -<< /D [ 2581 0 R /XYZ 81.145 550.648 null ] >> -endobj -273 0 obj -<< /D [ 2581 0 R /XYZ 79.37 513.236 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 111.511 null ] >> endobj 2600 0 obj -<< /D [ 2581 0 R /XYZ 81.145 453.539 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 100.552 null ] >> endobj 2601 0 obj -<< /D [ 2581 0 R /XYZ 81.145 442.58 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 89.593 null ] >> endobj 2602 0 obj -<< /D [ 2581 0 R /XYZ 81.145 431.621 null ] >> -endobj -2603 0 obj -<< /D [ 2581 0 R /XYZ 81.145 420.662 null ] >> +<< /D [ 2557 0 R /XYZ 81.145 78.635 null ] >> endobj -2604 0 obj -<< /D [ 2581 0 R /XYZ 81.145 409.704 null ] >> +2556 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F66 358 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2605 0 obj -<< /D [ 2581 0 R /XYZ 81.145 398.745 null ] >> +<< /Filter /FlateDecode /Length 1786 >> +stream +x[͎(S +4#0ЖZY) +|Ys +FZK +JWICp%벙%Ѓvb[Mj(>%hI/>㤄ˎqD}R8&;;JG\b^71=Jct[-,/>>o[S,XvX#TWtgvTH B&lIy^%⣧g0y<y.ÇD,TU^s%@іE<ĵߤ߬[?iV;ja>|]xXA;4{KS +ngCoVhBZs2M h;Nբ j$lX7,\X}*]6-ͪv@S!;THn/wL$,o?+͙t aO\3qoRη"K4{[_+ӌ*`ULY7ܰ +ʄ,XCKf[<t I]mqer# +S6:=;+@>WH]I~ֱ4uCuDV m3* +Hak9kx4,fl@ydí!z%RYiw`VHLoo0w *PJ({/f 0i8z4wn:8F56q^i?CܲMZ߾h/G9#-/
r*WeaPfY +/[
VƎl3f,`[̡ +endstream +endobj +2604 0 obj +<< /Type /Page /Contents 2605 0 R /Resources 2603 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2606 0 obj -<< /D [ 2581 0 R /XYZ 81.145 387.786 null ] >> +<< /D [ 2604 0 R /XYZ 78.37 808.885 null ] >> endobj 2607 0 obj -<< /D [ 2581 0 R /XYZ 81.145 376.827 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 754.882 null ] >> endobj 2608 0 obj -<< /D [ 2581 0 R /XYZ 81.145 365.868 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 743.923 null ] >> endobj 2609 0 obj -<< /D [ 2581 0 R /XYZ 81.145 354.909 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 732.964 null ] >> endobj 2610 0 obj -<< /D [ 2581 0 R /XYZ 81.145 343.95 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 722.005 null ] >> endobj 2611 0 obj -<< /D [ 2581 0 R /XYZ 81.145 332.991 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 711.046 null ] >> endobj 2612 0 obj -<< /D [ 2581 0 R /XYZ 81.145 322.032 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 700.087 null ] >> endobj 2613 0 obj -<< /D [ 2581 0 R /XYZ 81.145 311.073 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 689.128 null ] >> endobj 2614 0 obj -<< /D [ 2581 0 R /XYZ 81.145 300.115 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 678.169 null ] >> endobj 2615 0 obj -<< /D [ 2581 0 R /XYZ 81.145 289.156 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 637.322 null ] >> endobj 2616 0 obj -<< /D [ 2581 0 R /XYZ 81.145 278.197 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 626.364 null ] >> endobj 2617 0 obj -<< /D [ 2581 0 R /XYZ 81.145 267.238 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 615.405 null ] >> endobj 2618 0 obj -<< /D [ 2581 0 R /XYZ 81.145 256.279 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 604.446 null ] >> endobj 2619 0 obj -<< /D [ 2581 0 R /XYZ 81.145 245.32 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 593.487 null ] >> endobj 2620 0 obj -<< /D [ 2581 0 R /XYZ 81.145 234.361 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 582.528 null ] >> endobj 2621 0 obj -<< /D [ 2581 0 R /XYZ 81.145 223.402 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 571.569 null ] >> endobj 2622 0 obj -<< /D [ 2581 0 R /XYZ 81.145 212.443 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 560.61 null ] >> endobj 2623 0 obj -<< /D [ 2581 0 R /XYZ 81.145 201.484 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 549.651 null ] >> endobj 2624 0 obj -<< /D [ 2581 0 R /XYZ 81.145 190.525 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 538.692 null ] >> endobj 2625 0 obj -<< /D [ 2581 0 R /XYZ 81.145 179.567 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 527.733 null ] >> endobj 2626 0 obj -<< /D [ 2581 0 R /XYZ 81.145 168.608 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 516.775 null ] >> endobj 2627 0 obj -<< /D [ 2581 0 R /XYZ 81.145 157.649 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 505.816 null ] >> endobj 2628 0 obj -<< /D [ 2581 0 R /XYZ 81.145 146.69 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 494.857 null ] >> endobj 2629 0 obj -<< /D [ 2581 0 R /XYZ 81.145 135.731 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 454.01 null ] >> endobj 2630 0 obj -<< /D [ 2581 0 R /XYZ 81.145 124.772 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 443.051 null ] >> endobj 2631 0 obj -<< /D [ 2581 0 R /XYZ 81.145 113.813 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 432.092 null ] >> endobj 2632 0 obj -<< /D [ 2581 0 R /XYZ 81.145 102.854 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 421.133 null ] >> endobj 2633 0 obj -<< /D [ 2581 0 R /XYZ 81.145 91.895 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 410.174 null ] >> endobj 2634 0 obj -<< /D [ 2581 0 R /XYZ 81.145 80.936 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 399.215 null ] >> endobj -2580 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R /F22 367 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2637 0 obj -<< /Filter /FlateDecode /Length 3232 >> -stream -x\Io#h6˶1[kr%0WTXܖJǷm̙ÿE1̨5q#.s8ss?<_7.ycq&,l> (7 -Vp.{+ȿ5{AG__4܄(U/=8]y1Hjc1;<ЇLpmMi3HX7ܚ^"$b2fYn|]Fz&F5$B7L/$l_q_E}ڻxIY+k{H={)bDgA35B{яH&~Ɇ}s,o6!m)γ ca'&cyM;?d_DZ0!a
cQk!HڸLdshy@ړb3Ê~gbКLr;UrIOiXLq$_3.Һ.b}]ԜSL*?Ӝ\Ai/G6QbRZ{?xYYR4%+*)$1v-U#@{Jѓ=soD -b@ -o(gD~RC(̠<wupNq%_ifzYP~|4ZuW_[GjWc ǴS]u(҄K?ۙN^猾SueW}Gh[fE"]W"V0g}^<9ݹ[Ӊk:YPR~*~
J_[ˋӞ}֞^ԅ -7WkJGjv*?V1;\&ÍdokFk`Nl2[Q>UB -_)]۫$BA=?q$4a-up>WF\9э9oO^99S6!Lpg^KԬK/nϹ?H#KL+nt'#dRg໊T3og -`GKڲ5{)fym%$8U3QIN(@YsKi$7^37-?/y+fv緷^mlFjp8^,9z-2_3 #ueurq7uk -1TB,
ݪGI&Zլ$ofp,$]Kd;n?{5AcLƹ -?ۥYFEW*Sr"CZ -lDw냪R24]JWT]8nc<iGRgl+ӡ&Hv~ZL]:xAfNFb1ϝBi#ȉ1utRyLSr怿/MCa$%㕠3[wA?rz]D:18{YIi|>cg*na3j%}tlnl=,jq(BW*dFQ(XFFYG$z,lm4< -
Ԏ -endstream +2635 0 obj +<< /D [ 2604 0 R /XYZ 81.145 388.256 null ] >> endobj 2636 0 obj -<< /Type /Page /Contents 2637 0 R /Resources 2635 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2604 0 R /XYZ 81.145 377.298 null ] >> +endobj +2637 0 obj +<< /D [ 2604 0 R /XYZ 81.145 366.339 null ] >> endobj 2638 0 obj -<< /D [ 2636 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 355.38 null ] >> endobj 2639 0 obj -<< /D [ 2636 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 344.421 null ] >> endobj 2640 0 obj -<< /D [ 2636 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 333.462 null ] >> endobj 2641 0 obj -<< /D [ 2636 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 322.503 null ] >> endobj 2642 0 obj -<< /D [ 2636 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 311.544 null ] >> endobj 2643 0 obj -<< /D [ 2636 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 300.585 null ] >> endobj 2644 0 obj -<< /D [ 2636 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 289.626 null ] >> endobj 2645 0 obj -<< /D [ 2636 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 278.667 null ] >> endobj 2646 0 obj -<< /D [ 2636 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 267.709 null ] >> endobj 2647 0 obj -<< /D [ 2636 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 256.75 null ] >> endobj 2648 0 obj -<< /D [ 2636 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 245.791 null ] >> endobj 2649 0 obj -<< /D [ 2636 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 204.944 null ] >> endobj 2650 0 obj -<< /D [ 2636 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 193.985 null ] >> endobj 2651 0 obj -<< /D [ 2636 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 153.138 null ] >> endobj 2652 0 obj -<< /D [ 2636 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 2604 0 R /XYZ 81.145 142.179 null ] >> endobj -2653 0 obj -<< /D [ 2636 0 R /XYZ 81.145 615.405 null ] >> +2603 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2654 0 obj -<< /D [ 2636 0 R /XYZ 81.145 604.446 null ] >> +2656 0 obj +<< /Filter /FlateDecode /Length 3353 >> +stream +xڽ[K
?0h45յޒm
!e]3˶DE}$e~/\?_r7/_XϔX#7+Jp9`~ ++dʘqH᎗|#z!MpMZ|n%u6\wz۶F~*88~iᄞ]kխ|kǖF\4fJϨC#} 7Bի-}$AbP+R0Ôg2iid2dSzp.j&|wʖ
GjZIc8ִTIu.Sc>Y2QV&*fJQZi4z1ʗ
5p +zчb<RUpVpVf%ч2r3Op/2*}ES\Ȣ}FmL%yC]nXZ[ +ȁwyvSSÛȳC8VFN FG,hBbF(|[io~{<F1R.vV̝d Гq'32A@hӓ%ưJȨ&}('֖^*ufq
WWg6qN)u+OfGv;˟WȟA]Xg9ĊgP8Òs=Ƈ0Ң)EZ~pr)9)Jo@OWlTN!$ӦƌηcG,AϹ?bs + 2hOrn/M@Dw6`Q6Y*7XR2*>"*Ӂ 8T8@aVu{; +
~RL8|0M<zǤG<MrH?^⏿E`pRD&zE:k#>1VFSΦ'$[,{ړEP㖞`O +'v`P]}>gO3&qSf,ށgNʮppJN|w"'d5ŢD.Vs' -O)u+9,gO鼵 Dn俎"OK5 =Q0 +p[3%\ScۂG.P}it"(ؚBncMGl +τ,3r؏Y=V@hzxzyBi9eeUA*%ArqSZX!z w::Kc|{t,^~_QR忡7Au_}`\lwLXa8SՖD;oQ} +endstream endobj 2655 0 obj -<< /D [ 2636 0 R /XYZ 81.145 593.487 null ] >> +<< /Type /Page /Contents 2656 0 R /Resources 2654 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R /Annots 2693 0 R >> endobj -2656 0 obj -<< /D [ 2636 0 R /XYZ 81.145 582.528 null ] >> +2693 0 obj +[ 2653 0 R ] +endobj +2653 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 265.253 494.207 275.68 506.727 ]/A << /S /GoTo /D (Hfootnote.40) >> >> endobj 2657 0 obj -<< /D [ 2636 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 2655 0 R /XYZ 78.37 808.885 null ] >> endobj 2658 0 obj -<< /D [ 2636 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 2655 0 R /XYZ 79.37 773.016 null ] >> endobj 2659 0 obj -<< /D [ 2636 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 707.263 null ] >> endobj 2660 0 obj -<< /D [ 2636 0 R /XYZ 81.145 496.849 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 696.304 null ] >> endobj 2661 0 obj -<< /D [ 2636 0 R /XYZ 81.145 429.103 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 626.378 null ] >> endobj 2662 0 obj -<< /D [ 2636 0 R /XYZ 81.145 418.144 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 586.745 null ] >> endobj 2663 0 obj -<< /D [ 2636 0 R /XYZ 81.145 272.69 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 575.786 null ] >> endobj 2664 0 obj -<< /D [ 2636 0 R /XYZ 81.145 261.731 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 564.827 null ] >> endobj 2665 0 obj -<< /D [ 2636 0 R /XYZ 81.145 250.772 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 553.868 null ] >> endobj 2666 0 obj -<< /D [ 2636 0 R /XYZ 81.145 239.813 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 542.909 null ] >> endobj 2667 0 obj -<< /D [ 2636 0 R /XYZ 81.145 228.854 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 531.95 null ] >> endobj 2668 0 obj -<< /D [ 2636 0 R /XYZ 81.145 217.895 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 491.508 null ] >> endobj 2669 0 obj -<< /D [ 2636 0 R /XYZ 81.145 206.936 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 480.549 null ] >> endobj 2670 0 obj -<< /D [ 2636 0 R /XYZ 81.145 195.978 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 469.59 null ] >> endobj 2671 0 obj -<< /D [ 2636 0 R /XYZ 81.145 185.019 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 458.631 null ] >> endobj 2672 0 obj -<< /D [ 2636 0 R /XYZ 81.145 174.06 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 447.672 null ] >> endobj 2673 0 obj -<< /D [ 2636 0 R /XYZ 81.145 163.101 null ] >> -endobj -2635 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F83 414 0 R /F65 335 0 R /F75 338 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2655 0 R /XYZ 81.145 436.713 null ] >> endobj -2678 0 obj -<< /Filter /FlateDecode /Length 3158 >> -stream -xڵ[Ɏ7W&;h@ef2:/}Y-@Yՙd0vF<Ʒ^<tz0j'/&6뙴5q#/_ߞ9s8oW5~W_p6S1_a
ןq%\Ifºi-˹ḆkeډmabclU<Z0)ǩA νcL@a-Sn*<($(SJ3z0wBBKCV/Itrdkx<P d+I`ZOX*FI'WIyJ - -FJJO~{SXdB=[s!<+oUy3j%z?'0j;RN<)HUj无%gFkͅ Z
-rx
5=5iо_dO;i~N4oc$KĽT9Y0
U|
VkH8-swx?"͋$'
8L#S0Wrӭֵ&SEoeRB4(8p -*h:W')#
?ɷkŔ.^x&Q+Z:Z^6[8H4hӜ_Ź1in+^>S80"]xqa,sIsQsKcB^nhlM%E@1/h*øR0d(;o -PfkR6jN[! caZN1-& -e]1FStӳ(H7 -eJyj^\yqG5S(vV^l[W"Z -|d\!h2gtE}[uKkj7%~le;b>eZ>8Ͼv5zQ#5&=!KJ<fiëo)CӒ6ҧ3qj1tCKV1D%usjM;Q)}SY+_\V9Ύՙyw'Mk*?V˚{$L+`L8ZUҗ9ܵ1H4sƠA]:D@[fVf> -91
IǯH6]o2AR"h{mk{1l3bB\?;2f\[2a9NY/q ofaMҰ.~7ů\\x`:ߣ>ٓ@(8_ԙCM;)d@T"RP!8R#WV`9 eqНbEPDWJ o诪A5űfACfX>tf^Us!nu1w4)1 -i0;A>r]D^}@rYBK@@i 3b]DP@(1Rð(Ӷx3IR+RfbEslnkUpkif(S9kw*詧ғD!fzHpy$&wo>SZG0,}o<-W)Ɓ[ӗplzJ!4b?pOMi jxZiYtk|neSd/sy;e}E3AHVN{+lE JO -f(}y?tɝ:އOBaӵą,&ARPr7gKG1LH>]UߵVuy60(Z}rAן.]GW+t0]/WU{o$uK_jT50TL+1У
-6\=s"\t>J3au -x|݈LJxl_(wVO#G<-=)a^QЋ)'msϱ0>YA -$|Pl]tdR -oOz#QOwrvO[Tg+"}ȩ)~`윰9gƕ~IR.?y[5p-?K8Kd:lv*m"\J}O먓\QQN$5SqGc,X -endstream +2674 0 obj +<< /D [ 2655 0 R /XYZ 81.145 425.755 null ] >> endobj -2677 0 obj -<< /Type /Page /Contents 2678 0 R /Resources 2676 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R /Annots 2712 0 R >> +2675 0 obj +<< /D [ 2655 0 R /XYZ 81.145 361.402 null ] >> endobj -2712 0 obj -[ 2674 0 R 2675 0 R ] +2676 0 obj +<< /D [ 2655 0 R /XYZ 81.145 350.443 null ] >> endobj -2674 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 244.87 541.675 255.296 553.846 ]/A << /S /GoTo /D (Hfootnote.40) >> >> +2677 0 obj +<< /D [ 2655 0 R /XYZ 81.145 339.484 null ] >> endobj -2675 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 106.14 342.303 116.567 354.594 ]/A << /S /GoTo /D (Hfootnote.41) >> >> +2678 0 obj +<< /D [ 2655 0 R /XYZ 81.145 328.525 null ] >> endobj 2679 0 obj -<< /D [ 2677 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 317.566 null ] >> endobj 2680 0 obj -<< /D [ 2677 0 R /XYZ 81.145 749.9 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 306.607 null ] >> endobj 2681 0 obj -<< /D [ 2677 0 R /XYZ 81.145 738.941 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 295.648 null ] >> endobj 2682 0 obj -<< /D [ 2677 0 R /XYZ 81.145 727.983 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 284.689 null ] >> endobj 2683 0 obj -<< /D [ 2677 0 R /XYZ 81.145 717.024 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 273.731 null ] >> endobj 2684 0 obj -<< /D [ 2677 0 R /XYZ 79.37 678.364 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 262.772 null ] >> endobj 2685 0 obj -<< /D [ 2677 0 R /XYZ 81.145 502.559 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 251.813 null ] >> endobj 2686 0 obj -<< /D [ 2677 0 R /XYZ 81.145 491.601 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 188.269 null ] >> endobj 2687 0 obj -<< /D [ 2677 0 R /XYZ 81.145 480.642 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 177.31 null ] >> endobj 2688 0 obj -<< /D [ 2677 0 R /XYZ 81.145 469.683 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 166.351 null ] >> endobj 2689 0 obj -<< /D [ 2677 0 R /XYZ 81.145 458.724 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 155.392 null ] >> endobj 2690 0 obj -<< /D [ 2677 0 R /XYZ 81.145 447.765 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 144.433 null ] >> endobj 2691 0 obj -<< /D [ 2677 0 R /XYZ 81.145 436.806 null ] >> +<< /D [ 2655 0 R /XYZ 81.145 133.474 null ] >> endobj 2692 0 obj -<< /D [ 2677 0 R /XYZ 81.145 425.847 null ] >> +<< /D [ 2655 0 R /XYZ 93.716 89.795 null ] >> endobj -2693 0 obj -<< /D [ 2677 0 R /XYZ 81.145 414.888 null ] >> +2654 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F81 401 0 R /F59 368 0 R /F84 449 0 R /F83 438 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2694 0 obj -<< /D [ 2677 0 R /XYZ 81.145 403.929 null ] >> +2696 0 obj +<< /Filter /FlateDecode /Length 3015 >> +stream +xڵ\ˎ:WZW@JrYn0ۙEIVdLU-IMPrn= +=Bo`[}q9#g\M $"pwvu(v̮tLDSP +a:9dj^lKNH?JЖڇ{[AՆXͼгu>.[- +FJu[yYCBwGIEĄ[<IvyMavt8#ѰQeђyogh&L;DIV Qw*~{6?~okd>^7&dd\~a 7PTU,QfE`;
U> {2 f㥧9=WLSoxtgT2Gs:{J/;768"s.Dcv0rx'ڧ@^Emr,'z䧄mxS+ΤsJbكAx݅icc1\Y(P.P'r)%XkIeL_>J.ȮqF2lP{FT}.5s YCV_"n`3t<(Pڢ g5!ina ɜ4aQ''iW߆BK2FI{
]-d0$.xӺf (rB֪þ4B
ǵ1L45SwN¶>u'CdAQte$M("m.*YOGKK#=ƧyQ_^{EԶt
TޥdJWC}Ou0!{J +0_&y&xδW1{J>XG/GyfJNJyD9cFWs*EZ:E=^F_z IƱ}[G1>\>ԏ!f,3LQs4Ji=>qgz5`ܮx,\
lZď59gbZgH;$@i;jɬ3IO-/p={~>`,oYݳW_}T 4MQT4J[WVX6LVjOhi[ uo=^+XCIŜS'i@*p}N0aM+4u#,}7`Wc0{t)0<!#%(yP +QzJΤ AS:4aJO~pKd#v FJ{ȟBzsŸr=|RchUոzpZcO|sqSi
&qYK-?ز`j]lF4uG#NBʯog2qcfxRwl+`~ .K}*]
4]
]g'9 ca7bGKFJqJaB5u^Ҷ9bjM<DeBoT#['iTIXvBuճy + + +endstream endobj 2695 0 obj -<< /D [ 2677 0 R /XYZ 81.145 339.172 null ] >> -endobj -2696 0 obj -<< /D [ 2677 0 R /XYZ 81.145 328.213 null ] >> +<< /Type /Page /Contents 2696 0 R /Resources 2694 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2697 0 obj -<< /D [ 2677 0 R /XYZ 81.145 299.322 null ] >> +<< /D [ 2695 0 R /XYZ 78.37 808.885 null ] >> +endobj +281 0 obj +<< /D [ 2695 0 R /XYZ 79.37 771.024 null ] >> endobj 2698 0 obj -<< /D [ 2677 0 R /XYZ 81.145 288.363 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 736.486 null ] >> endobj 2699 0 obj -<< /D [ 2677 0 R /XYZ 81.145 277.404 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 683.684 null ] >> endobj 2700 0 obj -<< /D [ 2677 0 R /XYZ 81.145 266.445 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 672.725 null ] >> endobj 2701 0 obj -<< /D [ 2677 0 R /XYZ 81.145 255.486 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 661.766 null ] >> endobj 2702 0 obj -<< /D [ 2677 0 R /XYZ 81.145 244.527 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 650.807 null ] >> endobj 2703 0 obj -<< /D [ 2677 0 R /XYZ 81.145 233.568 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 639.848 null ] >> endobj 2704 0 obj -<< /D [ 2677 0 R /XYZ 81.145 222.609 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 628.889 null ] >> endobj 2705 0 obj -<< /D [ 2677 0 R /XYZ 81.145 211.65 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 617.93 null ] >> endobj 2706 0 obj -<< /D [ 2677 0 R /XYZ 81.145 200.691 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 574.095 null ] >> endobj 2707 0 obj -<< /D [ 2677 0 R /XYZ 81.145 189.733 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 563.136 null ] >> endobj 2708 0 obj -<< /D [ 2677 0 R /XYZ 81.145 178.774 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 552.177 null ] >> endobj 2709 0 obj -<< /D [ 2677 0 R /XYZ 81.145 167.815 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 541.218 null ] >> endobj 2710 0 obj -<< /D [ 2677 0 R /XYZ 93.716 138.708 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 530.259 null ] >> endobj 2711 0 obj -<< /D [ 2677 0 R /XYZ 93.716 119.616 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 519.3 null ] >> endobj -2676 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F75 338 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F22 367 0 R /F83 414 0 R /F16 336 0 R /F65 335 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +2712 0 obj +<< /D [ 2695 0 R /XYZ 81.145 508.341 null ] >> endobj -2715 0 obj -<< /Filter /FlateDecode /Length 1531 >> -stream -xZɎ6Wp<@}rMNkHkJ2qMIZXǒߓ9x|}=E>yt#?y`>;1aw -icQi<C|d{$r(Ƴn7hyLRlF͒|G 錟8iwJ%3{{=cc-]j?G -'i@b" sR%[7K64i]lu{\wZ.m(kIk?#pFF]s/|5ۢ{,`'<i# i݆>tJg?=uGb.]/Kؽ\\dǣL^Rs0-恏mHQiVi"cԴTw $eVvk!+.MEa
ؚy;V!+B<GM^H`U>hԭ&CPT)gd˨䢐W,yO$TtDbiu>9ΪV. pHf;s>e ˤ@҄-8Im@zHuSeHhiEtU|s/ĶϪ嫘aK~*.6x\P -endstream +2713 0 obj +<< /D [ 2695 0 R /XYZ 81.145 497.382 null ] >> endobj 2714 0 obj -<< /Type /Page /Contents 2715 0 R /Resources 2713 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2695 0 R /XYZ 81.145 486.423 null ] >> +endobj +2715 0 obj +<< /D [ 2695 0 R /XYZ 81.145 475.464 null ] >> endobj 2716 0 obj -<< /D [ 2714 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 464.506 null ] >> endobj 2717 0 obj -<< /D [ 2714 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 453.547 null ] >> endobj 2718 0 obj -<< /D [ 2714 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 442.588 null ] >> endobj 2719 0 obj -<< /D [ 2714 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 431.629 null ] >> endobj 2720 0 obj -<< /D [ 2714 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 420.67 null ] >> endobj 2721 0 obj -<< /D [ 2714 0 R /XYZ 81.145 711.046 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 409.711 null ] >> endobj 2722 0 obj -<< /D [ 2714 0 R /XYZ 81.145 700.087 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 398.752 null ] >> endobj 2723 0 obj -<< /D [ 2714 0 R /XYZ 81.145 689.128 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 387.793 null ] >> endobj 2724 0 obj -<< /D [ 2714 0 R /XYZ 81.145 678.169 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 376.834 null ] >> endobj 2725 0 obj -<< /D [ 2714 0 R /XYZ 81.145 667.21 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 365.875 null ] >> endobj 2726 0 obj -<< /D [ 2714 0 R /XYZ 81.145 656.252 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 354.917 null ] >> endobj 2727 0 obj -<< /D [ 2714 0 R /XYZ 81.145 645.293 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 343.958 null ] >> endobj 2728 0 obj -<< /D [ 2714 0 R /XYZ 81.145 634.334 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 332.999 null ] >> endobj 2729 0 obj -<< /D [ 2714 0 R /XYZ 81.145 623.375 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 322.04 null ] >> endobj 2730 0 obj -<< /D [ 2714 0 R /XYZ 81.145 612.416 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 311.081 null ] >> endobj 2731 0 obj -<< /D [ 2714 0 R /XYZ 81.145 601.457 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 300.122 null ] >> endobj 2732 0 obj -<< /D [ 2714 0 R /XYZ 81.145 590.498 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 289.163 null ] >> endobj 2733 0 obj -<< /D [ 2714 0 R /XYZ 81.145 579.539 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 278.204 null ] >> endobj 2734 0 obj -<< /D [ 2714 0 R /XYZ 81.145 568.58 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 267.245 null ] >> endobj 2735 0 obj -<< /D [ 2714 0 R /XYZ 81.145 557.621 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 256.286 null ] >> endobj 2736 0 obj -<< /D [ 2714 0 R /XYZ 81.145 546.662 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 245.327 null ] >> endobj 2737 0 obj -<< /D [ 2714 0 R /XYZ 81.145 535.704 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 234.369 null ] >> endobj 2738 0 obj -<< /D [ 2714 0 R /XYZ 81.145 524.745 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 223.41 null ] >> endobj 2739 0 obj -<< /D [ 2714 0 R /XYZ 81.145 513.786 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 212.451 null ] >> endobj 2740 0 obj -<< /D [ 2714 0 R /XYZ 81.145 502.827 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 201.492 null ] >> endobj 2741 0 obj -<< /D [ 2714 0 R /XYZ 81.145 491.868 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 190.533 null ] >> endobj 2742 0 obj -<< /D [ 2714 0 R /XYZ 81.145 480.909 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 179.574 null ] >> endobj 2743 0 obj -<< /D [ 2714 0 R /XYZ 81.145 469.95 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 168.615 null ] >> endobj 2744 0 obj -<< /D [ 2714 0 R /XYZ 81.145 458.991 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 157.656 null ] >> endobj 2745 0 obj -<< /D [ 2714 0 R /XYZ 81.145 448.032 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 146.697 null ] >> endobj 2746 0 obj -<< /D [ 2714 0 R /XYZ 81.145 437.073 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 135.738 null ] >> endobj 2747 0 obj -<< /D [ 2714 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 124.78 null ] >> endobj 2748 0 obj -<< /D [ 2714 0 R /XYZ 81.145 415.156 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 113.821 null ] >> endobj 2749 0 obj -<< /D [ 2714 0 R /XYZ 81.145 404.197 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 102.862 null ] >> endobj 2750 0 obj -<< /D [ 2714 0 R /XYZ 81.145 393.238 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 91.903 null ] >> endobj 2751 0 obj -<< /D [ 2714 0 R /XYZ 79.37 356.57 null ] >> +<< /D [ 2695 0 R /XYZ 81.145 80.944 null ] >> endobj -2752 0 obj -<< /D [ 2714 0 R /XYZ 81.145 338.436 null ] >> +2694 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F59 368 0 R /F84 449 0 R /F81 401 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2753 0 obj -<< /D [ 2714 0 R /XYZ 81.145 327.477 null ] >> +2755 0 obj +<< /Filter /FlateDecode /Length 2748 >> +stream +x[Ɏ)bqFV߂\S.yCڭnl$aXF˿.˷o?]9+$\~p#.Ƌтq-.} +8ǟǹ_qFP?/9mqTLY=!~ +B"4qi9wa
=3L\+PՕOdk_ٿyO&>Hx +Hk]&L嚽>}wQ[A7e60~-05q4-PJ|. pF'Qi$QR+`)5v|)ӋAN{&[ּղ +ު>*4q:[Kb7!2꣮mhBcG2eFѳ#_啐ڴ'Zh5 mG+_[г#G6JG:V\Ev&5<*0%cf;٥O +&awZh툐EiD]p{YFeЄ(TʞHʯݫjݮE=<":4[Sb^'d#T^ߊֽ9@vE-UrIrVl2Պ#d$>h饝`ZȒیTkmZ3nD5`|:o=ˀt#$qj8%JZ&B(S$|_}|7K"ZO26LLB_d"2?#Vi0r%IDuጫfژe?!Oeq5۞*f]q?q"43ʌH/Cn+m>uꑏjCu{5]8^kcqP3cTB@=B()\)B5_[ +-˷9ClC論 'nzr؝s[ń]U
͔)#9;boE96f[ÎibF==ʪd +-*L`++IᗻU[_ EzL[`(D-A2y-0L 0XC&.3> 0P܊Y>rALY1"|7.xoCHtI?$ȅ04jF3˔89{S$j $Dq(7;[hwApz_hlD4F%m~"q6f^XMAJE&_4v8%r۹g=fD'06# +
}2*= +\Q./B-7M7<1}} _5C&'*jUbqUShNA6/ZʶVXX*p8Ν2oNiU /ؙ[Lm]G.];FSh2Mz$_J`hDO7@Z69jw^TT +3QQGɒ^pۊv'G02iܩaҀ=LzP?;LB sDaҀa:t +a"-[
= F5' +*&/ +endstream endobj 2754 0 obj -<< /D [ 2714 0 R /XYZ 81.145 316.518 null ] >> -endobj -2755 0 obj -<< /D [ 2714 0 R /XYZ 81.145 305.559 null ] >> +<< /Type /Page /Contents 2755 0 R /Resources 2753 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2756 0 obj -<< /D [ 2714 0 R /XYZ 81.145 294.6 null ] >> +<< /D [ 2754 0 R /XYZ 78.37 808.885 null ] >> endobj 2757 0 obj -<< /D [ 2714 0 R /XYZ 81.145 283.641 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 768.829 null ] >> endobj 2758 0 obj -<< /D [ 2714 0 R /XYZ 81.145 272.682 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 757.87 null ] >> endobj 2759 0 obj -<< /D [ 2714 0 R /XYZ 81.145 261.723 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 746.912 null ] >> endobj 2760 0 obj -<< /D [ 2714 0 R /XYZ 81.145 250.765 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 735.953 null ] >> endobj 2761 0 obj -<< /D [ 2714 0 R /XYZ 81.145 239.806 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 724.994 null ] >> endobj 2762 0 obj -<< /D [ 2714 0 R /XYZ 79.37 203.138 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 672.192 null ] >> endobj 2763 0 obj -<< /D [ 2714 0 R /XYZ 81.145 185.004 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 604.446 null ] >> endobj 2764 0 obj -<< /D [ 2714 0 R /XYZ 79.37 148.336 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 593.487 null ] >> endobj 2765 0 obj -<< /D [ 2714 0 R /XYZ 81.145 130.202 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 448.032 null ] >> endobj -2713 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F59 346 0 R /F84 425 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2768 0 obj -<< /Filter /FlateDecode /Length 1719 >> -stream -x[r6+AoXTeSo\S%lɀ$;ADBFvvn.Aen.xq9r>"b~.G=W/rۓ-_v)"#A&$ -bwlg%Յ_QIZrsꓛ@:IX!þ|>|eu\~Tj ԱOjq@it[G99 -@ EêwM^Ku3.>0&SҧAdKPsЬ1zך8#\r$Uﯟ#3:u7!"\
-,43迧gMCKrScWov$WF&d)2bId,S.F9X`8X:l:kGԫes -_4%aǭn.rwk2C%EzD (R2-Yr6HYK -Ld݃xdx.MzE 2bMRKv:IAcP:g|XecP71h -[rf:mF,)dҙYA 7~GɃPU>fK&SgPA"}<\A@j"c4Dj lW\Z#+SLsȘ9H'{̉Ǘ
adY 4<5Ǟ_Ȳ x6[l͂
hmO";ʤA;#s}1`̻wUs
Ұ
]bҽsLH7 )w!EQg%y/p=!ESIuߖwb-0M5uχzv`?M[}CYtLk;TRΗaTt8c_J^ ӣyLo
ph1A ,&%E,Mۡ#iX -dMǘ.
fA"}LRu"
"L:~6@góڇ>A䢚ooRYIOOO!O)#~cOul>3_"ut}I2G(*we4}bVhP/gfe-gi:ġkO]Y؟=]|ŧS-E[݅:<+@[8\E9뤍Irt5Q!J ]l}:.'sk5=Ir,5ɦ9kڷݡcZRIι`z>l9r㺣3Z#~uJ,JY(Zduz/(j:UMgK7zI1W f:p̘^sHuEp[[N=K:k;N"S -endstream +2766 0 obj +<< /D [ 2754 0 R /XYZ 81.145 437.073 null ] >> endobj 2767 0 obj -<< /Type /Page /Contents 2768 0 R /Resources 2766 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2754 0 R /XYZ 81.145 426.115 null ] >> +endobj +2768 0 obj +<< /D [ 2754 0 R /XYZ 81.145 415.156 null ] >> endobj 2769 0 obj -<< /D [ 2767 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 404.197 null ] >> endobj 2770 0 obj -<< /D [ 2767 0 R /XYZ 79.37 773.016 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 393.238 null ] >> endobj 2771 0 obj -<< /D [ 2767 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 382.279 null ] >> endobj 2772 0 obj -<< /D [ 2767 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 371.32 null ] >> endobj 2773 0 obj -<< /D [ 2767 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 360.361 null ] >> endobj 2774 0 obj -<< /D [ 2767 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 349.402 null ] >> endobj 2775 0 obj -<< /D [ 2767 0 R /XYZ 81.145 711.046 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 338.443 null ] >> endobj 2776 0 obj -<< /D [ 2767 0 R /XYZ 81.145 700.087 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 229.851 null ] >> endobj 2777 0 obj -<< /D [ 2767 0 R /XYZ 81.145 689.128 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 218.892 null ] >> endobj 2778 0 obj -<< /D [ 2767 0 R /XYZ 81.145 678.169 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 207.933 null ] >> endobj 2779 0 obj -<< /D [ 2767 0 R /XYZ 81.145 667.21 null ] >> +<< /D [ 2754 0 R /XYZ 81.145 196.974 null ] >> endobj -2780 0 obj -<< /D [ 2767 0 R /XYZ 81.145 656.252 null ] >> +2753 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F83 438 0 R /F66 358 0 R /F75 360 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2781 0 obj -<< /D [ 2767 0 R /XYZ 81.145 645.293 null ] >> +2783 0 obj +<< /Filter /FlateDecode /Length 3101 >> +stream +xIn$W&# +97:[y}WD&YqAd18Xz;iƐsuFZ
M%u' &_h*>H\:&\:xǕQ
Y)s +wxH~G\Ͽ [NJ'0fvOkCe~ W#en\-\lOK +j7痑BT-*,B*d(/YvJ͔ԓ
v_~AÄyJ0Ig¨=I;qA( .+leAbvwaG֝CAV eMk+n袹#l +\@?cdk_$[x{w +. +evCe;4K%o_6˕aono)lM h#O*T>_#\VV QW$߫rɜ-C-0"RV"Xo4젒V^, FrN,a$G*?4)Y_3g4IVTN{B3C{ +ԉ(lBÔ~KGp-'TAkQ7Bһb%%:NUE +F}t,PM|gR!bK&NԊ!]HA[nO>PTӧM8)h:17!UnF`)N% גgCӯOzrX'm4´Q5S9U]q6{>jі¯H|HGJDneRo*ueiEM*jEWLFr%{͡lq+)O(F(蔸6eN*ڴ!QU )=VdUgg5`A*w6}h\q2Y%rwf?HFw}gs?< C²)CAX}C,}4n8Kn~n-ŴwŤ=3 nk`5e.4I=NJr0vruӬe$_阡du0Mޥ(,u$KWpt!uIId` +emGo/i\2)Fw`FHU.[ܸKq˕&䆚SmAǸW!x֟f-,x{NyjTi.+aI!VL<ZL!Wo1W9sΤ%7Ϲ$rǤ&GJJo#s{_W.10!!P^JSd[B^ +=P,c|S-w2y<x}![ɝ'<uka,΄x"Ǔ*Qm-ͭ)!,jux'mo)a%;gW_&ն@;er͋w}8ަ(0)Lt$]7r`)ukkM))7p9u.^N0I܈W0.Rf\4&HNCA?9H3^`<Ӯt:2v 5(GBO`m(7qk{&qBN6/AMćKAzGޕ9NҒ[^K/+
!z?uRO%zBZ"Gw#n7˵|!}gZY3`Nlv*{H#A-{ѡ?Ó61(ʷ~ `ɍ,N +endstream endobj 2782 0 obj -<< /D [ 2767 0 R /XYZ 81.145 634.334 null ] >> +<< /Type /Page /Contents 2783 0 R /Resources 2781 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R /Annots 2820 0 R >> endobj -2783 0 obj -<< /D [ 2767 0 R /XYZ 81.145 623.375 null ] >> +2820 0 obj +[ 2752 0 R 2780 0 R ] +endobj +2752 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 244.87 636.328 255.296 648.499 ]/A << /S /GoTo /D (Hfootnote.41) >> >> +endobj +2780 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 106.14 436.955 116.567 449.33 ]/A << /S /GoTo /D (Hfootnote.42) >> >> endobj 2784 0 obj -<< /D [ 2767 0 R /XYZ 81.145 612.416 null ] >> +<< /D [ 2782 0 R /XYZ 78.37 808.885 null ] >> endobj 2785 0 obj -<< /D [ 2767 0 R /XYZ 81.145 601.457 null ] >> +<< /D [ 2782 0 R /XYZ 79.37 773.016 null ] >> endobj 2786 0 obj -<< /D [ 2767 0 R /XYZ 81.145 590.498 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 597.212 null ] >> endobj 2787 0 obj -<< /D [ 2767 0 R /XYZ 81.145 579.539 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 586.253 null ] >> endobj 2788 0 obj -<< /D [ 2767 0 R /XYZ 81.145 568.58 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 575.294 null ] >> endobj 2789 0 obj -<< /D [ 2767 0 R /XYZ 81.145 557.621 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 564.335 null ] >> endobj 2790 0 obj -<< /D [ 2767 0 R /XYZ 81.145 546.662 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 553.376 null ] >> endobj 2791 0 obj -<< /D [ 2767 0 R /XYZ 81.145 535.704 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 542.417 null ] >> endobj 2792 0 obj -<< /D [ 2767 0 R /XYZ 81.145 524.745 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 531.459 null ] >> endobj 2793 0 obj -<< /D [ 2767 0 R /XYZ 81.145 513.786 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 520.5 null ] >> endobj 2794 0 obj -<< /D [ 2767 0 R /XYZ 81.145 502.827 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 509.541 null ] >> endobj 2795 0 obj -<< /D [ 2767 0 R /XYZ 81.145 491.868 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 498.582 null ] >> endobj 2796 0 obj -<< /D [ 2767 0 R /XYZ 81.145 480.909 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 433.825 null ] >> endobj 2797 0 obj -<< /D [ 2767 0 R /XYZ 81.145 469.95 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 422.866 null ] >> endobj 2798 0 obj -<< /D [ 2767 0 R /XYZ 81.145 458.991 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 393.974 null ] >> endobj 2799 0 obj -<< /D [ 2767 0 R /XYZ 81.145 448.032 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 383.015 null ] >> endobj 2800 0 obj -<< /D [ 2767 0 R /XYZ 81.145 437.073 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 372.056 null ] >> endobj 2801 0 obj -<< /D [ 2767 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 361.097 null ] >> endobj 2802 0 obj -<< /D [ 2767 0 R /XYZ 81.145 415.156 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 350.138 null ] >> endobj 2803 0 obj -<< /D [ 2767 0 R /XYZ 81.145 404.197 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 339.18 null ] >> endobj 2804 0 obj -<< /D [ 2767 0 R /XYZ 81.145 393.238 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 328.221 null ] >> endobj 2805 0 obj -<< /D [ 2767 0 R /XYZ 81.145 382.279 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 317.262 null ] >> endobj 2806 0 obj -<< /D [ 2767 0 R /XYZ 81.145 371.32 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 306.303 null ] >> endobj 2807 0 obj -<< /D [ 2767 0 R /XYZ 81.145 360.361 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 295.344 null ] >> endobj 2808 0 obj -<< /D [ 2767 0 R /XYZ 81.145 349.402 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 284.385 null ] >> endobj 2809 0 obj -<< /D [ 2767 0 R /XYZ 81.145 338.443 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 273.426 null ] >> endobj 2810 0 obj -<< /D [ 2767 0 R /XYZ 81.145 327.484 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 262.467 null ] >> endobj 2811 0 obj -<< /D [ 2767 0 R /XYZ 81.145 316.525 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 233.576 null ] >> endobj 2812 0 obj -<< /D [ 2767 0 R /XYZ 81.145 305.567 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 222.617 null ] >> endobj 2813 0 obj -<< /D [ 2767 0 R /XYZ 81.145 294.608 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 211.658 null ] >> endobj 2814 0 obj -<< /D [ 2767 0 R /XYZ 81.145 283.649 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 200.699 null ] >> endobj 2815 0 obj -<< /D [ 2767 0 R /XYZ 81.145 272.69 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 189.74 null ] >> endobj 2816 0 obj -<< /D [ 2767 0 R /XYZ 81.145 261.731 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 178.781 null ] >> endobj 2817 0 obj -<< /D [ 2767 0 R /XYZ 81.145 250.772 null ] >> +<< /D [ 2782 0 R /XYZ 81.145 167.822 null ] >> endobj 2818 0 obj -<< /D [ 2767 0 R /XYZ 81.145 239.813 null ] >> +<< /D [ 2782 0 R /XYZ 93.716 137.574 null ] >> endobj 2819 0 obj -<< /D [ 2767 0 R /XYZ 81.145 228.854 null ] >> +<< /D [ 2782 0 R /XYZ 93.716 118.416 null ] >> endobj -2820 0 obj -<< /D [ 2767 0 R /XYZ 81.145 217.895 null ] >> +2781 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F83 438 0 R /F63 356 0 R /F16 359 0 R /F59 368 0 R /F84 449 0 R /F66 358 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2821 0 obj -<< /D [ 2767 0 R /XYZ 81.145 206.936 null ] >> +2823 0 obj +<< /Filter /FlateDecode /Length 1762 >> +stream +xZn6+!`v+mWmI(Z&`lQGI{IA{9q8 + z1eQښ??Z3hMWkm_tP?o^kї8F;5E6ZYk`x{8^['
wJg<!aP iئʱK&&dflVABIwNA97H'A7F.K5_;a5ƊclWZZ}Z@Zvd`I&6W}T0Q6la~/*V=9k/P*0ZnX4KajE[e|ew}m`ډ=uٷBZKIݱZ!4pwy/;#dt<3H5֡BkBY#%';&NQlktJFQrꓼB!QEgb$2H=}G9n{gݬa3;HsFʱj,A1lZT>Fw4IvL~&rv\V4@$i+Ëak3VY$IZyVYtjɴKڣ1|*=+ghSH٨u6sX(H91ZL+h'MQ> +R#-ÅS:dϻzuaP@̃>S#yͱ)%=R62 +0SihBC\:^Aۛ/
X!o>+-[K B[2
Ѭ}\Pd: +$i墹((|v +R^fXHJ[M-[ +)qnh901(W3'h{f8|:0I4 ls%#,l}{HXߤ6n7{oҧ=VH(hOyGC4nZ;8K)kYs~b&K~oܓH}Rli]1ۧ*l⌿ԡ}qkbBI{s +a]UfGj[|aЈZdf^#n^q\pU42yK$Y\ZĮ>p,@P"'<#THb;}b7ٍ4] E5҃ix[RgO>=òKO@{٠xi,<
9Rvir\ +![ּKMu +4oܺ,v~/ +endstream endobj 2822 0 obj -<< /D [ 2767 0 R /XYZ 81.145 195.978 null ] >> -endobj -2823 0 obj -<< /D [ 2767 0 R /XYZ 81.145 185.019 null ] >> +<< /Type /Page /Contents 2823 0 R /Resources 2821 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2824 0 obj -<< /D [ 2767 0 R /XYZ 81.145 174.06 null ] >> +<< /D [ 2822 0 R /XYZ 78.37 808.885 null ] >> endobj 2825 0 obj -<< /D [ 2767 0 R /XYZ 81.145 163.101 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 768.829 null ] >> endobj 2826 0 obj -<< /D [ 2767 0 R /XYZ 81.145 152.142 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 757.87 null ] >> endobj 2827 0 obj -<< /D [ 2767 0 R /XYZ 81.145 136.202 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 746.912 null ] >> endobj 2828 0 obj -<< /D [ 2767 0 R /XYZ 81.145 81.407 null ] >> -endobj -2766 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F59 346 0 R /F84 425 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 2822 0 R /XYZ 81.145 735.953 null ] >> endobj -2831 0 obj -<< /Filter /FlateDecode /Length 2983 >> -stream -x[n#9+"#۲\gN}?Lp_JeTcIFG&gxz|yS"'qX`Z^kqgp.?Ǹ}=1"f25ږeFJRP<jAGNcӮݳWty\|,*D/u(y;Q:J(gL)
fHh[Z}I>}ɍ{f7"!*8ʋdV 3sF#ʛ&ՊwS12zCI -a --r٘%| -6YIapW4S!,)
#S]et]}"hT%R'Z|K4kP2
+t䓃Ƽh}RTWT%Ǥ}EV!b7Ǧ'm"h?R&e?yՠJeOɠQ٤l]VQ!{ -6k3f|8,k!3{~F,:2QYpf^yOM1kc974.>g7!f&oMІXlU5ri[JWu6^.ꕪT546I\3_nlI2π6'rPN{i%C9%V҈sYAUX,Uvr)'TfyBN)+R3e/_X(Df筵XY'kcIuV(Utׯ^,YFJ(nk\PM -J{;i(48R,w2ϩ -LL7sKtnyw3)'j:N3zRd@q~HiScN0aٮvUz&:&|xYFm@ԆƯwm`VF. -:œWBwB<5iRN]s{B߄債g(c'`jrB:vgOY
^֬1pYٞ®] -Q|]\v[𝝄zV5J|=3<)L{j)=_tJf}'%y? 7P;H+v&[٣2յ=@햞0g4mK]?~ID]e?جVjfv[{YL[3"7P:ʋRoh`?%it -~z̾;_&~2!U_7>kֆъtП{pyܜ"#" -9pyD^3jJ>׳IW8ϖe*gl Z>+vNxD'p.]txFQ\lMH'W -xnkoIX[Ӫ"y -Jr=Ik|ŐUV7t)LShλwͤ#U IKf3mN7&i t>QdL4d:{$,!K=Նj_NKIuSQ@R.R uvjs:☼>7Gf$Nh״SFʩsj!{3%ȉ*9Td$rOd8ZO -8 =@#0>D~CiŨY|qk -endstream +2829 0 obj +<< /D [ 2822 0 R /XYZ 81.145 724.994 null ] >> endobj 2830 0 obj -<< /Type /Page /Contents 2831 0 R /Resources 2829 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2822 0 R /XYZ 81.145 714.035 null ] >> +endobj +2831 0 obj +<< /D [ 2822 0 R /XYZ 81.145 703.076 null ] >> endobj 2832 0 obj -<< /D [ 2830 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 692.117 null ] >> endobj 2833 0 obj -<< /D [ 2830 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 681.158 null ] >> endobj 2834 0 obj -<< /D [ 2830 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 670.199 null ] >> endobj 2835 0 obj -<< /D [ 2830 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 659.24 null ] >> endobj 2836 0 obj -<< /D [ 2830 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 648.281 null ] >> endobj 2837 0 obj -<< /D [ 2830 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 637.322 null ] >> endobj 2838 0 obj -<< /D [ 2830 0 R /XYZ 79.37 691.303 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 626.364 null ] >> endobj 2839 0 obj -<< /D [ 2830 0 R /XYZ 81.145 661.722 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 615.405 null ] >> endobj 2840 0 obj -<< /D [ 2830 0 R /XYZ 81.145 650.763 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 604.446 null ] >> endobj 2841 0 obj -<< /D [ 2830 0 R /XYZ 81.145 639.804 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 593.487 null ] >> endobj 2842 0 obj -<< /D [ 2830 0 R /XYZ 81.145 628.845 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 582.528 null ] >> endobj 2843 0 obj -<< /D [ 2830 0 R /XYZ 79.37 595.155 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 571.569 null ] >> endobj 2844 0 obj -<< /D [ 2830 0 R /XYZ 81.145 541.663 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 560.61 null ] >> endobj 2845 0 obj -<< /D [ 2830 0 R /XYZ 81.145 530.704 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 549.651 null ] >> endobj 2846 0 obj -<< /D [ 2830 0 R /XYZ 81.145 519.745 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 538.692 null ] >> endobj 2847 0 obj -<< /D [ 2830 0 R /XYZ 81.145 508.786 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 527.733 null ] >> endobj 2848 0 obj -<< /D [ 2830 0 R /XYZ 81.145 497.827 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 516.775 null ] >> endobj 2849 0 obj -<< /D [ 2830 0 R /XYZ 81.145 486.868 null ] >> +<< /D [ 2822 0 R /XYZ 79.37 478.114 null ] >> endobj 2850 0 obj -<< /D [ 2830 0 R /XYZ 81.145 475.909 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 446.032 null ] >> endobj 2851 0 obj -<< /D [ 2830 0 R /XYZ 81.145 464.95 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 435.073 null ] >> endobj 2852 0 obj -<< /D [ 2830 0 R /XYZ 81.145 453.992 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 424.115 null ] >> endobj 2853 0 obj -<< /D [ 2830 0 R /XYZ 81.145 443.033 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 413.156 null ] >> endobj 2854 0 obj -<< /D [ 2830 0 R /XYZ 81.145 432.074 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 402.197 null ] >> endobj 2855 0 obj -<< /D [ 2830 0 R /XYZ 81.145 421.115 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 391.238 null ] >> endobj 2856 0 obj -<< /D [ 2830 0 R /XYZ 81.145 410.156 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 380.279 null ] >> endobj 2857 0 obj -<< /D [ 2830 0 R /XYZ 81.145 318.168 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 369.32 null ] >> endobj 2858 0 obj -<< /D [ 2830 0 R /XYZ 81.145 307.209 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 358.361 null ] >> endobj 2859 0 obj -<< /D [ 2830 0 R /XYZ 81.145 296.25 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 347.402 null ] >> endobj 2860 0 obj -<< /D [ 2830 0 R /XYZ 81.145 285.291 null ] >> +<< /D [ 2822 0 R /XYZ 79.37 308.742 null ] >> endobj 2861 0 obj -<< /D [ 2830 0 R /XYZ 81.145 274.332 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 290.608 null ] >> endobj 2862 0 obj -<< /D [ 2830 0 R /XYZ 81.145 263.373 null ] >> +<< /D [ 2822 0 R /XYZ 79.37 253.94 null ] >> endobj 2863 0 obj -<< /D [ 2830 0 R /XYZ 81.145 252.414 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 235.806 null ] >> endobj 2864 0 obj -<< /D [ 2830 0 R /XYZ 81.145 241.455 null ] >> +<< /D [ 2822 0 R /XYZ 79.37 199.138 null ] >> endobj 2865 0 obj -<< /D [ 2830 0 R /XYZ 81.145 230.496 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 181.004 null ] >> endobj 2866 0 obj -<< /D [ 2830 0 R /XYZ 81.145 155.347 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 170.045 null ] >> endobj 2867 0 obj -<< /D [ 2830 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 159.086 null ] >> endobj 2868 0 obj -<< /D [ 2830 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 148.127 null ] >> endobj 2869 0 obj -<< /D [ 2830 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 137.168 null ] >> endobj 2870 0 obj -<< /D [ 2830 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 126.209 null ] >> endobj 2871 0 obj -<< /D [ 2830 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 115.25 null ] >> endobj 2872 0 obj -<< /D [ 2830 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 104.291 null ] >> endobj 2873 0 obj -<< /D [ 2830 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 2822 0 R /XYZ 81.145 93.332 null ] >> endobj -2829 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R /F81 377 0 R /F75 338 0 R >> /ProcSet [ /PDF /Text ] >> +2874 0 obj +<< /D [ 2822 0 R /XYZ 81.145 82.374 null ] >> +endobj +2821 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F22 389 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2877 0 obj -<< /Filter /FlateDecode /Length 2875 >> +<< /Filter /FlateDecode /Length 1836 >> stream -x[I\
?0DQ`4`nI|i%>d.j{zեsCo>Œ?.ӧ2 zRtC^Y%U.~R2矴t3gs7<Z.WUF5H⺁HPYcWmL& -ϐLHGGNlQ]5_X1Sv-SkƪDO6{A˪EyymA -qZDž2><^<~H 0S@Ro}{{4GRLP(wKVb`]nVQG<%QݒHּ\]R fʑR4- -`B#\W#Yj!G>Xzfw?ZgͲ9hk$`°B::ݺ_t8Rj:Azx( -{xGJ' İ0F}z:t/[,kvbNԃM-<KRTCyoa -ji1Y+K%)Sg.V`
Sʣ\ET(\h'=.RMw]|)~Q̌lWMWTµᮨ;@?`b^Yh]By\*l
mլ1uMCM`h~"hη*ӹOhfQu/WÎ`0Ry
j_Pg=3zҸQB%i:wΓToTk{өAN)Z[^GKںk@"愬\<(k(2ptj^Cv` #Y63adYrEB='2g.NN$w>N͔Fuq`JI~jc/DKb7^iV61u*>gyj46eV_IyLza'fF>PKmVG3&(WN"|k>є©<ik賓~ȉp@@r%^er4ZHJ"Ъdjp"ާ|39Hޭjkn5~ŇD -T).#4>
Ov_RРP0>c-GJ֟F_b{6Rjآn9F{5k?
\X7m~&~Z1| ԡrւtB["s|k|XI~;j>Pʥ䘟R]+R1,Ks{GJlbuN_fGs*c)Ǜ|Ѯ?巳DufNxb1nf͉R9Gp'QmxbnfЉңxh8+v]u -N)iy3NTKwOX|2(oqli1qb`}3鏄o!m՜VK{}نmC6)Zָj-pV'JlomV[v7$ -lF
][%B+{8;=lȟ[:=>ػYu3q 'ގ>$]%+5>Qby)/{7OBu]CaU|ߗ<-ЩK* +xZM6ϯX$ +O4ɩ
_/9E;o7!?~)=5Q!0oa je,$ECh]ZIEq"$=hޙ]e2t[.r8fʦ
<r&(k
ZTбG7c?E/(òW2>ZFHzϦ
hV֢&PMK:eg6mY?z.tI| +5>?"pfJ*Y)xCEm0!ɹD$qJnkRyc~ +>o$n)U>e$wWKZ[1EgQ+ҊA{ x['C-nل!QdH7==BˣZ6(*vHr=#N43{4Pܼ^qb'!;Qze{2KfwY]^t"wC*6Gĺ+~ܰѠU endstream endobj 2876 0 obj -<< /Type /Page /Contents 2877 0 R /Resources 2875 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R /Annots 2921 0 R >> -endobj -2921 0 obj -[ 2874 0 R ] -endobj -2874 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 142.077 246.868 154.681 ]/A << /S /GoTo /D (Hfootnote.42) >> >> +<< /Type /Page /Contents 2877 0 R /Resources 2875 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2878 0 obj << /D [ 2876 0 R /XYZ 78.37 808.885 null ] >> endobj 2879 0 obj -<< /D [ 2876 0 R /XYZ 81.145 730.971 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 768.829 null ] >> endobj 2880 0 obj -<< /D [ 2876 0 R /XYZ 81.145 720.012 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 757.87 null ] >> endobj 2881 0 obj -<< /D [ 2876 0 R /XYZ 81.145 709.053 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 746.912 null ] >> endobj 2882 0 obj -<< /D [ 2876 0 R /XYZ 81.145 698.095 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 735.953 null ] >> endobj 2883 0 obj -<< /D [ 2876 0 R /XYZ 81.145 687.136 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 724.994 null ] >> endobj 2884 0 obj -<< /D [ 2876 0 R /XYZ 81.145 676.177 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 714.035 null ] >> endobj 2885 0 obj -<< /D [ 2876 0 R /XYZ 81.145 665.218 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 703.076 null ] >> endobj 2886 0 obj -<< /D [ 2876 0 R /XYZ 81.145 654.259 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 692.117 null ] >> endobj 2887 0 obj -<< /D [ 2876 0 R /XYZ 79.37 578.737 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 681.158 null ] >> endobj 2888 0 obj -<< /D [ 2876 0 R /XYZ 81.145 560.603 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 670.199 null ] >> endobj 2889 0 obj -<< /D [ 2876 0 R /XYZ 79.37 523.935 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 659.24 null ] >> endobj 2890 0 obj -<< /D [ 2876 0 R /XYZ 81.145 505.801 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 648.281 null ] >> endobj 2891 0 obj -<< /D [ 2876 0 R /XYZ 81.145 494.842 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 637.322 null ] >> endobj 2892 0 obj -<< /D [ 2876 0 R /XYZ 81.145 483.883 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 626.364 null ] >> endobj 2893 0 obj -<< /D [ 2876 0 R /XYZ 81.145 472.924 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 615.405 null ] >> endobj 2894 0 obj -<< /D [ 2876 0 R /XYZ 81.145 461.965 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 604.446 null ] >> endobj 2895 0 obj -<< /D [ 2876 0 R /XYZ 81.145 451.006 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 588.531 null ] >> endobj 2896 0 obj -<< /D [ 2876 0 R /XYZ 81.145 440.047 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 577.572 null ] >> endobj 2897 0 obj -<< /D [ 2876 0 R /XYZ 81.145 429.088 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 566.613 null ] >> endobj 2898 0 obj -<< /D [ 2876 0 R /XYZ 81.145 418.129 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 555.654 null ] >> endobj 2899 0 obj -<< /D [ 2876 0 R /XYZ 81.145 407.171 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 544.695 null ] >> endobj 2900 0 obj -<< /D [ 2876 0 R /XYZ 81.145 396.212 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 533.736 null ] >> endobj 2901 0 obj -<< /D [ 2876 0 R /XYZ 81.145 385.253 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 522.777 null ] >> endobj 2902 0 obj -<< /D [ 2876 0 R /XYZ 81.145 374.294 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 511.818 null ] >> endobj 2903 0 obj -<< /D [ 2876 0 R /XYZ 81.145 363.335 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 500.859 null ] >> endobj 2904 0 obj -<< /D [ 2876 0 R /XYZ 81.145 352.376 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 489.9 null ] >> endobj 2905 0 obj -<< /D [ 2876 0 R /XYZ 81.145 341.417 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 478.942 null ] >> endobj 2906 0 obj -<< /D [ 2876 0 R /XYZ 81.145 330.458 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 467.983 null ] >> endobj 2907 0 obj -<< /D [ 2876 0 R /XYZ 81.145 319.499 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 457.024 null ] >> endobj 2908 0 obj -<< /D [ 2876 0 R /XYZ 81.145 308.54 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 446.065 null ] >> endobj 2909 0 obj -<< /D [ 2876 0 R /XYZ 81.145 297.582 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 435.106 null ] >> endobj 2910 0 obj -<< /D [ 2876 0 R /XYZ 81.145 286.623 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 424.147 null ] >> endobj 2911 0 obj -<< /D [ 2876 0 R /XYZ 81.145 275.664 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 413.188 null ] >> endobj 2912 0 obj -<< /D [ 2876 0 R /XYZ 81.145 264.705 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 402.229 null ] >> endobj 2913 0 obj -<< /D [ 2876 0 R /XYZ 81.145 253.746 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 391.27 null ] >> endobj 2914 0 obj -<< /D [ 2876 0 R /XYZ 81.145 242.787 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 380.311 null ] >> endobj 2915 0 obj -<< /D [ 2876 0 R /XYZ 81.145 231.828 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 369.353 null ] >> endobj 2916 0 obj -<< /D [ 2876 0 R /XYZ 81.145 220.869 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 358.394 null ] >> endobj 2917 0 obj -<< /D [ 2876 0 R /XYZ 81.145 191.978 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 347.435 null ] >> endobj 2918 0 obj -<< /D [ 2876 0 R /XYZ 81.145 139.176 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 336.476 null ] >> endobj 2919 0 obj -<< /D [ 2876 0 R /XYZ 81.145 128.217 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 325.517 null ] >> endobj 2920 0 obj -<< /D [ 2876 0 R /XYZ 93.716 98.405 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 314.558 null ] >> endobj -2875 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F65 335 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F81 377 0 R /F83 414 0 R /F75 338 0 R /F22 367 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +2921 0 obj +<< /D [ 2876 0 R /XYZ 81.145 303.599 null ] >> endobj -2924 0 obj -<< /Filter /FlateDecode /Length 2165 >> -stream -x[n6+!Y
0 -%9x{61ǷtOls0^12Ng{K2B -aͳH-Yd[O^@e]t%{8si/T|¯Q~=Yޒo.?*Xz[s;apY*'63DzG̊\9ک<9{UNƜѢ},{,8`H7z#{PfWOG)bK60Lxr&C[bYt%/ek@PSrxVH>w/!fƱո"Ϣo7"4_^$ 瓓QIKQTgwxk22g)J(ٱ$8H|*ػظz`zgּu-q6]
EsF$CHv32iY`9 -|6;#KuY.EvgrrNH8tɲj);m-3L)pM#س"ڏan;*2n^sGVkLgrڄ].,.iۦjZm&=ܭ(<{UdHQWj|f;o-1)+~f+
P_ύ܌=MjD.e!#
+_[.`A6{x;/
H;x -ow@@/e`&(: -fNzF[{ rH%@Mގ -J8
Si
K%8nŞ_9An<6k?tRȍl><"ӗxpm#ҭGcOe&&2Ӏėx$a69wF/:Ὗɜۗ}}AAvN2SW7ΖRS:GGҒ+Dwa@2)I -endstream +2922 0 obj +<< /D [ 2876 0 R /XYZ 81.145 292.64 null ] >> endobj 2923 0 obj -<< /Type /Page /Contents 2924 0 R /Resources 2922 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2876 0 R /XYZ 81.145 276.725 null ] >> +endobj +2924 0 obj +<< /D [ 2876 0 R /XYZ 81.145 222.018 null ] >> endobj 2925 0 obj -<< /D [ 2923 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 211.059 null ] >> endobj 2926 0 obj -<< /D [ 2923 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 200.1 null ] >> endobj 2927 0 obj -<< /D [ 2923 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 189.141 null ] >> endobj 2928 0 obj -<< /D [ 2923 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 178.183 null ] >> endobj 2929 0 obj -<< /D [ 2923 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 167.224 null ] >> endobj 2930 0 obj -<< /D [ 2923 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 2876 0 R /XYZ 79.37 130.629 null ] >> endobj 2931 0 obj -<< /D [ 2923 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 100.552 null ] >> endobj 2932 0 obj -<< /D [ 2923 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 89.593 null ] >> endobj 2933 0 obj -<< /D [ 2923 0 R /XYZ 81.145 692.117 null ] >> -endobj -2934 0 obj -<< /D [ 2923 0 R /XYZ 81.145 681.158 null ] >> -endobj -2935 0 obj -<< /D [ 2923 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 2876 0 R /XYZ 81.145 78.635 null ] >> endobj -277 0 obj -<< /D [ 2923 0 R /XYZ 79.37 632.787 null ] >> +2875 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F83 438 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2936 0 obj -<< /D [ 2923 0 R /XYZ 81.145 611.945 null ] >> +<< /Filter /FlateDecode /Length 2920 >> +stream +x[Ko#W0X 䴗C[M.4[dެHq.po/ׯw.9+._~Nh?.|\_97sY/#R?V^,sZSRo?(ƹڞ_F^i&n$}'>gos}W}InjQs֗\*?ϑVv6o+FZ聁g@ɑ :&$88ezJ3w@r5gFs{6k\ jqE;m`hߜܢ59$%BҪ6د}~k\+г*k5eqdʉ~@M&2=@7bg :p)zʛtA`_z /痆{~ys@=39{mtTj/fQ0G W}FLC|ڤ#EFEDV3D͠ft(YԸN*ĖߊJoB[FV~L +%NQ$˞A#pAI_q-Tmf|\dQ^0DxoϋtfP4ZsFқrĭk2!
0Jp4ͻSΈzNhz&UI'춒-<ſq~-oFm%(SN̪I>1-ϛA +{Jq.1UX,qq,J}-^6T_'s˗!5ZZ&BwzJqn6$RTunպngTU~A3_}=ǯ@ Eñ/)Q_Rd}_ykz
&|u,<sns:֖)zQdO <>q^_mâ~o[SoCӮkVߛh('dSb*]JK_Ng70&]Ke۹g3St-J{pAQy>eh,+.8%G(gtJ5,zbڱ狸,]K`;lAk)}SYq0uB%nE#@O a+08㛓f1qf0ormܶ//`vS%:f@v<i[ӟ;BCd?#ۦO2 +[ͬۗK`8y8(X-CX +ƥPE% (X&Ķm`bU XFnPp@263l[呔uE0.8PlMe^_~yO(Rd➏(dsK40ʳ>CSnR~;{p8+0fTO1&W0ݻr"<\C }!bYGI"H֗Qg:8Gos8=~/(F_D4#7DF%:jyRJOTAWyuL'l +yr*JuG=Ʌ[:ٷuZdrQkm) -ҩC +Qx|]J; >K$me,8',0%F;)`G"GZ0`'/K9Q]з +1g>W'곊:<RԖo>Qg:;C%6vc'#=vhbe㭥pʤ^5:*hq(E fEQ:<sTQM̄LRޭR@kè%)s`>t1Bd(B\G' s
dDBs65.g7wfpGyh@fl>{mL -`]<p6wyAjШR*Zn&mm,vB>t27^uik{5_#[F`ɕU<dd߸eQLűgк82QR
ӤsC7kiC3*5iĴ*P^|Ŭ)Wn<rȭV܇ghxǠf}wT=~]&' 0rH r,uS߰ۮ[Zܻn'!'uGf$ C'z88b
yҤ\_}O%1_D^ +f0]qRShRJtbTcaJJS_HZ꽳' Ej Heҳ! +_N[QUiRfghgцH3--
[JU~O?
&hNkqu)=qrKAy[nzͿ74~5b8Cx/iK-/ʉ)/S\`r?~ﭥ +endstream +endobj +2935 0 obj +<< /Type /Page /Contents 2936 0 R /Resources 2934 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2555 0 R >> endobj 2937 0 obj -<< /D [ 2923 0 R /XYZ 81.145 596.005 null ] >> +<< /D [ 2935 0 R /XYZ 78.37 808.885 null ] >> endobj 2938 0 obj -<< /D [ 2923 0 R /XYZ 81.145 556.154 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 768.829 null ] >> endobj 2939 0 obj -<< /D [ 2923 0 R /XYZ 81.145 542.207 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 757.87 null ] >> endobj 2940 0 obj -<< /D [ 2923 0 R /XYZ 81.145 531.248 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 746.912 null ] >> endobj 2941 0 obj -<< /D [ 2923 0 R /XYZ 81.145 503.352 null ] >> +<< /D [ 2935 0 R /XYZ 79.37 710.244 null ] >> endobj 2942 0 obj -<< /D [ 2923 0 R /XYZ 81.145 492.393 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 656.244 null ] >> endobj 2943 0 obj -<< /D [ 2923 0 R /XYZ 81.145 454.535 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 645.285 null ] >> endobj 2944 0 obj -<< /D [ 2923 0 R /XYZ 81.145 443.577 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 634.326 null ] >> endobj 2945 0 obj -<< /D [ 2923 0 R /XYZ 81.145 432.618 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 623.367 null ] >> endobj 2946 0 obj -<< /D [ 2923 0 R /XYZ 81.145 421.659 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 612.408 null ] >> endobj 2947 0 obj -<< /D [ 2923 0 R /XYZ 81.145 410.7 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 601.45 null ] >> endobj 2948 0 obj -<< /D [ 2923 0 R /XYZ 81.145 399.741 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 590.491 null ] >> endobj 2949 0 obj -<< /D [ 2923 0 R /XYZ 81.145 388.782 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 579.532 null ] >> endobj 2950 0 obj -<< /D [ 2923 0 R /XYZ 81.145 377.823 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 568.573 null ] >> endobj 2951 0 obj -<< /D [ 2923 0 R /XYZ 81.145 366.864 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 557.614 null ] >> endobj 2952 0 obj -<< /D [ 2923 0 R /XYZ 81.145 355.905 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 546.655 null ] >> endobj 2953 0 obj -<< /D [ 2923 0 R /XYZ 81.145 344.946 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 535.696 null ] >> endobj 2954 0 obj -<< /D [ 2923 0 R /XYZ 81.145 333.988 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 524.737 null ] >> endobj 2955 0 obj -<< /D [ 2923 0 R /XYZ 81.145 323.029 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 424.115 null ] >> endobj 2956 0 obj -<< /D [ 2923 0 R /XYZ 81.145 309.081 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 413.156 null ] >> endobj 2957 0 obj -<< /D [ 2923 0 R /XYZ 81.145 298.122 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 402.197 null ] >> endobj 2958 0 obj -<< /D [ 2923 0 R /XYZ 81.145 287.163 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 391.238 null ] >> endobj 2959 0 obj -<< /D [ 2923 0 R /XYZ 81.145 276.204 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 380.279 null ] >> endobj 2960 0 obj -<< /D [ 2923 0 R /XYZ 81.145 265.245 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 369.32 null ] >> endobj 2961 0 obj -<< /D [ 2923 0 R /XYZ 81.145 254.286 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 358.361 null ] >> endobj 2962 0 obj -<< /D [ 2923 0 R /XYZ 81.145 243.327 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 347.402 null ] >> endobj 2963 0 obj -<< /D [ 2923 0 R /XYZ 81.145 232.369 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 336.443 null ] >> endobj 2964 0 obj -<< /D [ 2923 0 R /XYZ 81.145 221.41 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 257.738 null ] >> endobj 2965 0 obj -<< /D [ 2923 0 R /XYZ 81.145 210.451 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 246.78 null ] >> endobj 2966 0 obj -<< /D [ 2923 0 R /XYZ 81.145 199.492 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 235.821 null ] >> endobj 2967 0 obj -<< /D [ 2923 0 R /XYZ 81.145 188.533 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 224.862 null ] >> endobj 2968 0 obj -<< /D [ 2923 0 R /XYZ 81.145 177.574 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 213.903 null ] >> endobj 2969 0 obj -<< /D [ 2923 0 R /XYZ 81.145 166.615 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 202.944 null ] >> endobj 2970 0 obj -<< /D [ 2923 0 R /XYZ 81.145 155.656 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 191.985 null ] >> endobj 2971 0 obj -<< /D [ 2923 0 R /XYZ 81.145 144.697 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 181.026 null ] >> endobj 2972 0 obj -<< /D [ 2923 0 R /XYZ 81.145 133.738 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 165.086 null ] >> endobj 2973 0 obj -<< /D [ 2923 0 R /XYZ 81.145 122.78 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 154.127 null ] >> endobj 2974 0 obj -<< /D [ 2923 0 R /XYZ 81.145 111.821 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 143.168 null ] >> endobj 2975 0 obj -<< /D [ 2923 0 R /XYZ 81.145 100.862 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 132.209 null ] >> endobj 2976 0 obj -<< /D [ 2923 0 R /XYZ 81.145 89.903 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 121.25 null ] >> endobj 2977 0 obj -<< /D [ 2923 0 R /XYZ 81.145 78.944 null ] >> +<< /D [ 2935 0 R /XYZ 81.145 110.291 null ] >> endobj -2922 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -2980 0 obj -<< /Filter /FlateDecode /Length 2294 >> -stream -x[ˮ#'ޟU\ёi;Rge6@Csq5)FU3u߅}}|(wYpC\'.Z\ƹݸ?~C}XyiB3L"ř@Q%0#)JmI]?)P2=}uq+z -@m?: 6.X>'1.q.iVU2p#|8O.IH@a].ikiD%?E20eY bV"~&I 9xժ'D5i#qrLѕ^uVgE7ڹ|[*$zohƢfASP^VetMz7fIRm$De䖟#D,dKWŜ?kы)v9=P *p$luouY*S覂T,%Z1Im̈́H-XOU_&:sQM#s.rA-SLf7 -fӚVI:juN<==sTH4wSO"<G2:,̚bq}Z$f)5()J}餾'9Zzzp"RRWZST-jRr&N.pLT2
%Cf%)Q"Qq,>>
Y.(TR_(}e]mr.fJz"|GI^`"ij*wH -k#ǰ;i4j_ڣᵻ~˃qy0Hf|RȽwHRrN-RO__{H~ᵫ>֟r} }^?K_YLuROSX%:KdI;B -vtqѝ.R^M -iv[{fdl7䓟Y^;:[07ͶmDs*J-r+73N>3;># -4g5}rfڨR -ja!M^q+s>??*4¼J\^Fܺ[TH۪ɾդƤ~4"E[(K#/^,2{ `^,ޗ1.7ZO(~SVl$oVwNrk PoW~m+AE JuE`1D~}5Gݳۊ-O9g!',.+ehP_kv_IR^ 7wSP -
ێ;xIGĕ,E=}m*]4PQF=J&&WW"/d -L*Mi}<\h|KRRlRZ0R3ZŒ'z%.8m9*M2CBK]v 6.uԱ8EaYZrf9?E ΐ:tKmEg۪~^:nҀZ!_a%_}
+j6 -endstream +2978 0 obj +<< /D [ 2935 0 R /XYZ 81.145 99.332 null ] >> endobj 2979 0 obj -<< /Type /Page /Contents 2980 0 R /Resources 2978 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2578 0 R >> +<< /D [ 2935 0 R /XYZ 81.145 88.374 null ] >> endobj -2981 0 obj -<< /D [ 2979 0 R /XYZ 78.37 808.885 null ] >> +2934 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F22 389 0 R /F15 355 0 R /F83 438 0 R /F63 356 0 R /F81 401 0 R /F75 360 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +2983 0 obj +<< /Filter /FlateDecode /Length 2544 >> +stream +xڽ[n6+!Y|m;@v3.*Al"YCl8Y)ެܾ=|Etڙ76;%S۷G)4)W)kŻ.rxch&"^±+~F@_ +
364yb>kf|a!@Pfj6H3qBaȝ@0XSX&0yhi!OWBWAZj_#
h\v3$HF&4(t<7bhBNzyZ<x։f!*$kx&NOյP:=UUHLVFZa]Q7.I\9Sc'Zp.k&7a|J焂㔈ֆkw%55@gbѯj@ 8"e!0 +$Y,Z&*HLYwy-Bx$m]hV*V+h.7eX\Fk +SՙKqϸx|F4F%g<#~<I>4瘻%{&6iukc lǬ^۱g6`Lt}F%g!9u=wcKqVeoaV{g+.K:=PӼ(;/$L?>-͝hd%5NnOr?9][cέvk}W.ˉuBz5[nkS:51VWj*0jXņi]\҂=}` TS=GW+y4&7f=w}"NSOxo8{JcD,d(5$%EȪZԦܻ3F$tbuA{=<#mEƨ)Wkt{/b4Ng}@!d$lKָz*)st/^#gQ֧FaҚo(
)e'(橋%SZRa{jE"nͅoZfm_kRx}U~GOh+)I{8;9y'sU6(!Ƌ`ۚ(5mXr +oy75;PjdOGGk?m4BYw A:6Leh*!2{j*mٳײg9>|=kjjR<LK/U#K<ۈk-&V[{eԟ;OzZnW)CR4e7nxOP0xldfߥ\7-w8J.MT7`|4'hx͛ZRt1}Q}nȣ]F!G3;{leҩbvija[*uTvKƣ1#j?C*x2fMEC +sM*~Ɩ/RrC_tڶTzaD]]Ĕ0RƢ)? _7:R;
ltzJI1:kU@֮҄37I0RxT#>zuDs +r*,&x7a^{JnA_BZ{ +N*81Ƹݔ_OGvB
:gq_}$T=vut-aӬ)Uڦz<zB**N%x)5{dQk;Z#òo +fФ`F=]aO?wbL~CcSE9[ch`(P76I*u0 a0yLī邛Y73 +endstream endobj 2982 0 obj -<< /D [ 2979 0 R /XYZ 81.145 768.829 null ] >> +<< /Type /Page /Contents 2983 0 R /Resources 2981 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R /Annots 3030 0 R >> endobj -2983 0 obj -<< /D [ 2979 0 R /XYZ 81.145 757.87 null ] >> +3030 0 obj +[ 2980 0 R ] +endobj +2980 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 211.254 246.868 223.774 ]/A << /S /GoTo /D (Hfootnote.43) >> >> endobj 2984 0 obj -<< /D [ 2979 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 2982 0 R /XYZ 78.37 808.885 null ] >> endobj 2985 0 obj -<< /D [ 2979 0 R /XYZ 81.145 695.106 null ] >> +<< /D [ 2982 0 R /XYZ 79.37 708.45 null ] >> endobj 2986 0 obj -<< /D [ 2979 0 R /XYZ 81.145 684.147 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 690.423 null ] >> endobj 2987 0 obj -<< /D [ 2979 0 R /XYZ 81.145 673.188 null ] >> +<< /D [ 2982 0 R /XYZ 79.37 654.381 null ] >> endobj 2988 0 obj -<< /D [ 2979 0 R /XYZ 81.145 662.229 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 636.354 null ] >> endobj 2989 0 obj -<< /D [ 2979 0 R /XYZ 81.145 651.27 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 625.395 null ] >> endobj 2990 0 obj -<< /D [ 2979 0 R /XYZ 81.145 640.311 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 614.436 null ] >> endobj 2991 0 obj -<< /D [ 2979 0 R /XYZ 81.145 629.352 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 585.758 null ] >> endobj 2992 0 obj -<< /D [ 2979 0 R /XYZ 81.145 618.393 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 574.799 null ] >> endobj 2993 0 obj -<< /D [ 2979 0 R /XYZ 81.145 607.435 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 563.84 null ] >> endobj 2994 0 obj -<< /D [ 2979 0 R /XYZ 81.145 596.476 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 552.881 null ] >> endobj 2995 0 obj -<< /D [ 2979 0 R /XYZ 81.145 585.517 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 541.922 null ] >> endobj 2996 0 obj -<< /D [ 2979 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 530.963 null ] >> endobj 2997 0 obj -<< /D [ 2979 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 520.004 null ] >> endobj 2998 0 obj -<< /D [ 2979 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 509.045 null ] >> endobj 2999 0 obj -<< /D [ 2979 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 498.087 null ] >> endobj 3000 0 obj -<< /D [ 2979 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 487.128 null ] >> endobj 3001 0 obj -<< /D [ 2979 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 476.169 null ] >> endobj 3002 0 obj -<< /D [ 2979 0 R /XYZ 81.145 505.816 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 465.21 null ] >> endobj 3003 0 obj -<< /D [ 2979 0 R /XYZ 81.145 494.857 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 454.251 null ] >> endobj 3004 0 obj -<< /D [ 2979 0 R /XYZ 81.145 483.898 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 443.292 null ] >> endobj 3005 0 obj -<< /D [ 2979 0 R /XYZ 81.145 472.939 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 432.333 null ] >> endobj 3006 0 obj -<< /D [ 2979 0 R /XYZ 81.145 461.98 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 421.374 null ] >> endobj 3007 0 obj -<< /D [ 2979 0 R /XYZ 81.145 451.021 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 410.415 null ] >> endobj 3008 0 obj -<< /D [ 2979 0 R /XYZ 81.145 440.062 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 399.456 null ] >> endobj 3009 0 obj -<< /D [ 2979 0 R /XYZ 81.145 429.103 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 388.497 null ] >> endobj 3010 0 obj -<< /D [ 2979 0 R /XYZ 81.145 418.144 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 377.539 null ] >> endobj 3011 0 obj -<< /D [ 2979 0 R /XYZ 81.145 407.186 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 366.58 null ] >> endobj 3012 0 obj -<< /D [ 2979 0 R /XYZ 81.145 396.227 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 355.621 null ] >> endobj 3013 0 obj -<< /D [ 2979 0 R /XYZ 81.145 385.268 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 344.662 null ] >> endobj 3014 0 obj -<< /D [ 2979 0 R /XYZ 81.145 374.309 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 333.703 null ] >> endobj 3015 0 obj -<< /D [ 2979 0 R /XYZ 81.145 363.35 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 322.744 null ] >> endobj 3016 0 obj -<< /D [ 2979 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 311.785 null ] >> endobj 3017 0 obj -<< /D [ 2979 0 R /XYZ 81.145 341.432 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 300.826 null ] >> endobj 3018 0 obj -<< /D [ 2979 0 R /XYZ 81.145 330.473 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 260.62 null ] >> endobj 3019 0 obj -<< /D [ 2979 0 R /XYZ 81.145 290.623 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 208.459 null ] >> endobj 3020 0 obj -<< /D [ 2979 0 R /XYZ 81.145 279.664 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 197.5 null ] >> endobj 3021 0 obj -<< /D [ 2979 0 R /XYZ 81.145 268.705 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 186.541 null ] >> endobj 3022 0 obj -<< /D [ 2979 0 R /XYZ 81.145 257.746 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 175.582 null ] >> endobj 3023 0 obj -<< /D [ 2979 0 R /XYZ 81.145 246.787 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 164.623 null ] >> endobj 3024 0 obj -<< /D [ 2979 0 R /XYZ 79.37 224.075 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 153.665 null ] >> endobj 3025 0 obj -<< /D [ 2979 0 R /XYZ 81.145 205.94 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 142.706 null ] >> endobj 3026 0 obj -<< /D [ 2979 0 R /XYZ 81.145 194.981 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 131.747 null ] >> endobj 3027 0 obj -<< /D [ 2979 0 R /XYZ 79.37 146.359 null ] >> +<< /D [ 2982 0 R /XYZ 81.145 120.788 null ] >> endobj 3028 0 obj -<< /D [ 2979 0 R /XYZ 81.145 128.224 null ] >> +<< /D [ 2982 0 R /XYZ 93.716 89.795 null ] >> endobj -3029 0 obj -<< /D [ 2979 0 R /XYZ 81.145 117.265 null ] >> -endobj -3030 0 obj -<< /D [ 2979 0 R /XYZ 81.145 106.306 null ] >> +2981 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F83 438 0 R /F75 360 0 R /F22 389 0 R /F59 368 0 R /F84 449 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3031 0 obj -<< /D [ 2979 0 R /XYZ 81.145 95.347 null ] >> +3033 0 obj +<< /Filter /FlateDecode /Length 1578 >> +stream +xZɎ$'W4
"Js,_j5z4^4)2ќ/owtb + /bX,0Z,-}\#+ǯ/<ݪ25P!")N"3K:E2iMO`铟< G}Yj{Gg[PrmgJάq=.pq~ͪU1i#Ri˫PiғT;ސ$_!9$5Duy^ MIPK״AY(A7N@;ETS*p9=PM +b[?ߐH(F(O@""3>6a=@Xr$5҂mKsFDr2~ +4=yMoscW|꧖(zMFتpUmo<nj`>%;Ǎ)THo]04pjo-Wv<i928C_D_? +endstream endobj 3032 0 obj -<< /D [ 2979 0 R /XYZ 81.145 79.407 null ] >> +<< /Type /Page /Contents 3033 0 R /Resources 3031 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj -2978 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +3034 0 obj +<< /D [ 3032 0 R /XYZ 78.37 808.885 null ] >> endobj 3035 0 obj -<< /Filter /FlateDecode /Length 2599 >> -stream -xڽ[Ko#7WD+zFx9-~f<r"{F("? -gܾ^~ܕH@|".h.\97oŹ|w+/9ѶtaHH"w"9qi;- ~YszGQ"x۫EQOqJ]CTO|¸?Ώ4PA? -Sz{'בxuO7ţ*f\ -{\1R[^?XKoyro`0xRyR^o4K!7RQ8ٕL槞3O[ -\=~mce,Zo<ѱjqC$oV@(0-GrͬYܘLr;ۘSș5nNCXp&okK Zȓrls,ImC4>겢^W[A1c=%V9AÔ)'vRcmj:YE$eV -RMsA85!&ҺFbZ)'r5JL;=\H=ͪ#@pf4Pjѯf#~04e>yFg;Ǻs>',-g\H-x"Q˯c19kĝn+QiEJf˳Q~\Z~E#xp.01NpF])zAESx@zގ3Xč.n - "\\B9XuPu;܃Fk70vSkU,?^7綨VGOvMyb
,iBNOyޡ1Vzw0dUFz0JZCA&5Yy Lo˛ӹٜmdJݦ.+Ma!en{&:'ү0?xobmc4@{Rbf6JݧqTnxͫc2+1γO^v%nsݤH$/2D'KF+5X|>Q'Los$ٮ5tZ'A)(]u2jeԑcs|zPq:$ `Fo% fw]'̊s/xeoȿ9M{UhtqL4 -``K$,ّGlc -P6H8[Nb,NdBYc"֪}a7ZsZW!6Gu -vjc'*Y=}aZ{U{=#]!g΄KI@hEH9>]s)iMqPH[~ce'GYy,I6)H%LTCk+}9yնDi>4JNfap)Dhlqg#8 ;CbgY~*=ԸؘtIJ:P}N0LK@HGOjcr_uozpɽ
⾍_fӥQ̈́rBvԒK٭ۊÀqvݖ8)-ɾg9Wˌt~]#?m 埓x{Jz -!e5OMWch?新jW4]Z+Mnk?DLj>{Hrːt2~!380K5d2ь8V7
Ӷ[MRyɬY=G5K-rX5ٹW+k x0h-yP8~"?Ng$l5*䷧dӉJzڷ!=AztB7u6߁C܁#wݸT)`"Y8i=:vJK}*ڹzpFWڞb+.~\x2x&=Z:U̢jzٴ֍V#(ʊ@?RE1N-;ë5Hz76Bm[PnBY7c*¤GPĝ6~{J݅F@rר]0?:/ O[@#fR5R{@Ӫ*.Ƴ -n앗Pөb# {Ԑ
So
q@`uxĊi
=2Dn ;nwsM8:yQ;ƍY]p{#Ui{8,*wU!(._vIO6'a2%u[~tݢ
3-mUE4Wңa<L!gww<iaojz:=@1]1|/AՁҳE=~*dlg@I^ !Ogk@)o]!pU^r\cFDK -fA8>[S ,'άSnO
Ʒ -ȵt;5l>B2tz 0M`,ϙR~h.|~y! -endstream -endobj -3034 0 obj -<< /Type /Page /Contents 3035 0 R /Resources 3033 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3032 0 R /XYZ 81.145 768.829 null ] >> endobj 3036 0 obj -<< /D [ 3034 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 757.87 null ] >> endobj 3037 0 obj -<< /D [ 3034 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 746.912 null ] >> endobj 3038 0 obj -<< /D [ 3034 0 R /XYZ 79.37 730.218 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 706.065 null ] >> +endobj +285 0 obj +<< /D [ 3032 0 R /XYZ 79.37 669.352 null ] >> endobj 3039 0 obj -<< /D [ 3034 0 R /XYZ 81.145 700.135 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 632.867 null ] >> endobj 3040 0 obj -<< /D [ 3034 0 R /XYZ 81.145 689.176 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 601.983 null ] >> endobj 3041 0 obj -<< /D [ 3034 0 R /XYZ 81.145 678.217 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 591.024 null ] >> endobj 3042 0 obj -<< /D [ 3034 0 R /XYZ 81.145 667.258 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 558.147 null ] >> endobj 3043 0 obj -<< /D [ 3034 0 R /XYZ 81.145 656.3 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 525.27 null ] >> endobj 3044 0 obj -<< /D [ 3034 0 R /XYZ 81.145 645.341 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 514.311 null ] >> endobj 3045 0 obj -<< /D [ 3034 0 R /XYZ 81.145 634.382 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 503.352 null ] >> endobj 3046 0 obj -<< /D [ 3034 0 R /XYZ 81.145 623.423 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 492.393 null ] >> endobj 3047 0 obj -<< /D [ 3034 0 R /XYZ 81.145 612.464 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 481.435 null ] >> endobj 3048 0 obj -<< /D [ 3034 0 R /XYZ 81.145 601.505 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 470.476 null ] >> endobj 3049 0 obj -<< /D [ 3034 0 R /XYZ 81.145 585.579 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 459.517 null ] >> endobj 3050 0 obj -<< /D [ 3034 0 R /XYZ 81.145 494.968 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 448.558 null ] >> endobj 3051 0 obj -<< /D [ 3034 0 R /XYZ 81.145 484.009 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 437.599 null ] >> endobj 3052 0 obj -<< /D [ 3034 0 R /XYZ 81.145 473.051 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 404.722 null ] >> endobj 3053 0 obj -<< /D [ 3034 0 R /XYZ 81.145 462.092 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 393.763 null ] >> endobj 3054 0 obj -<< /D [ 3034 0 R /XYZ 81.145 451.133 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 382.804 null ] >> endobj 3055 0 obj -<< /D [ 3034 0 R /XYZ 81.145 440.174 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 371.846 null ] >> endobj 3056 0 obj -<< /D [ 3034 0 R /XYZ 81.145 405.333 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 360.887 null ] >> endobj 3057 0 obj -<< /D [ 3034 0 R /XYZ 81.145 394.374 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 349.928 null ] >> endobj 3058 0 obj -<< /D [ 3034 0 R /XYZ 81.145 383.415 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 317.051 null ] >> endobj 3059 0 obj -<< /D [ 3034 0 R /XYZ 81.145 372.456 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 306.092 null ] >> endobj 3060 0 obj -<< /D [ 3034 0 R /XYZ 81.145 361.497 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 295.133 null ] >> endobj 3061 0 obj -<< /D [ 3034 0 R /XYZ 81.145 350.538 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 284.174 null ] >> endobj 3062 0 obj -<< /D [ 3034 0 R /XYZ 81.145 339.579 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 273.215 null ] >> endobj 3063 0 obj -<< /D [ 3034 0 R /XYZ 81.145 328.621 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 262.256 null ] >> endobj 3064 0 obj -<< /D [ 3034 0 R /XYZ 81.145 317.662 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 207.462 null ] >> endobj 3065 0 obj -<< /D [ 3034 0 R /XYZ 81.145 270.865 null ] >> +<< /D [ 3032 0 R /XYZ 81.145 196.503 null ] >> endobj -3066 0 obj -<< /D [ 3034 0 R /XYZ 81.145 259.907 null ] >> -endobj -3067 0 obj -<< /D [ 3034 0 R /XYZ 81.145 248.948 null ] >> +3031 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F22 389 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3068 0 obj -<< /D [ 3034 0 R /XYZ 79.37 212.322 null ] >> +<< /Filter /FlateDecode /Length 2501 >> +stream +xڽ[Ɏ#
SF#4h?s߂\SS[i)]rOrح*QOF^s~\~\]CyQڋ5JH._MJ;':#)%ok/oh#v߃)o~#B߿#/$S-Gh +piIi}7xg]KGI+`D. +̝{A
<{34BiLù)##%9Jhgk)ӫ<)f9eeaGu)<~Uqx6"X7=%91*?-q2PjNO~AEZ~{
A6S始rpJ^CGh]V +j1SB/U~;\L rӌ@Kqiĥ?A
дq9w
sA9H]ݐ<kug.YjtۿJcqwX\-$#
#09=<[S^^KѰ~GYigg9q`*9N y}>5Z'I[`qf0~h7vN7љXQ5;طv^x|%QkUӬ0۽OKN`@vMzLd2Jh,;4Fb+Ļ{D6%wm{=(DeiI<iKa'o{Bq4ʪ:sFT}RH#g;:3;ʁf
Н2(1v\f1J].R1\k;$C5+F'Pb ZgZuv׀ZU$"e)]1I6:_2,V +¸J:kͦWl:-,+T),]M6jQrs}PxG@fxG'MGeݒmE˓U19`Gݫbx )Цw(ӌ*>N-Q^8?CgMd{ +#-ACVVxSi~It,M֧M%$zFRH(ͤkGҊJ~Itn?P +6R`#}\۽|<;U}Bz3 b +R0Sʹ{?Mm(Q4z[Aa`>3$vyp<Msp@˰b?fgjTðGτ/
,^DN +V(g#PM)je6@ }/:P5lV9|nY8]8)-7 +VNbF#HԒ{B/Z0OK1(HCh1mK, +^Jg]93ub\ROO꽒(4L3Y|bQ +_Us#|qo +endstream +endobj +3067 0 obj +<< /Type /Page /Contents 3068 0 R /Resources 3066 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3069 0 obj -<< /D [ 3034 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 3067 0 R /XYZ 78.37 808.885 null ] >> endobj 3070 0 obj -<< /D [ 3034 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 3067 0 R /XYZ 79.37 773.016 null ] >> endobj 3071 0 obj -<< /D [ 3034 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 754.882 null ] >> endobj 3072 0 obj -<< /D [ 3034 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 743.923 null ] >> endobj 3073 0 obj -<< /D [ 3034 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 732.964 null ] >> endobj 3074 0 obj -<< /D [ 3034 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 722.005 null ] >> endobj 3075 0 obj -<< /D [ 3034 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 711.046 null ] >> endobj -3033 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +3076 0 obj +<< /D [ 3067 0 R /XYZ 81.145 700.087 null ] >> endobj -3079 0 obj -<< /Filter /FlateDecode /Length 1826 >> -stream -x[n6+3@ݶHJ"Eۤ(.|ey8T;vVn$}"w;ygBc|j/"y554IBI!c!_zOB -?I:9W*ܐ_ %J <"c5ߵ!=_*?=g:ا"3kYˇmȩt~'?X˷>[]Yg%1r Z!OUҌʆ!ɦ-(?T!nܨt - -:(ˢ9m)kR#XdB#VEh.ģJxIM%};BR4kb${Z~ö`§v+E!LɐG\9ַJqtiDPrCV]6yLAtL9Sj%7cU"]ZYXȜjtŴ6Vdƞ߮\>h!@fb%*t])N\HbLY5W^&5ejL~%㗺VИ%KY1
c[Y#$40:Mcx|~N(
VڲYD3+v2aS[;>9ޗJo*Z=I'kH#ky0?LΆ[+Fqd:j]*HϣW6=_ՇHy^Z<TnhAVB7MG> D8ʟ}^HK|cqsy?YjeV'Ѱ - -{)+[Jund2
._u -$CK@i]D*kC5 lKDr#"V@-]j-)I5lil{QfpSAj_!}[N%x'.~u&PϏ@ZlslCQ!}gDjUEc`M1Gl8-sSlia`WH+Feĺ%SwSS@k߽=>LiYe˖Hë -9F۔0$It7(%`ZRRnTdqC2J6MaLQ -1jncw9jJcH7Z_Rݭ&nƤ,~ude~1\Y -h\G{zϔ5RKpcP0r_Q4X#uo`u@ܓ_ 7]pԵ{cZM܆Aj29xF0㈣Hs'\b/+vVqi@DrkM<G!3c_ke -J¹<iE/\QyYnTbNtn;ObP!pL5l7}O
}vʵpVuڽmȢ`m]ㅾC+=Lv{ʠBǗPZ>Cvv0O݄I^;FxYjSD:n{4bTH?xd -pۙ#_0 7S//ξ*}?
/Z۲i/_6-T%T*:)Y HoK1'%/zp&<Rede92>&Ƭ["-֍q0x+ Yt_<eeymڶv&!@jP6= -h" -jJO8? --xpˣbDs]zw -endstream +3077 0 obj +<< /D [ 3067 0 R /XYZ 81.145 689.128 null ] >> endobj 3078 0 obj -<< /Type /Page /Contents 3079 0 R /Resources 3077 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3067 0 R /XYZ 81.145 678.169 null ] >> +endobj +3079 0 obj +<< /D [ 3067 0 R /XYZ 81.145 667.21 null ] >> endobj 3080 0 obj -<< /D [ 3078 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 656.252 null ] >> endobj 3081 0 obj -<< /D [ 3078 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 640.311 null ] >> endobj 3082 0 obj -<< /D [ 3078 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 547.659 null ] >> endobj 3083 0 obj -<< /D [ 3078 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 536.7 null ] >> endobj 3084 0 obj -<< /D [ 3078 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 525.741 null ] >> endobj 3085 0 obj -<< /D [ 3078 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 514.782 null ] >> endobj 3086 0 obj -<< /D [ 3078 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 503.823 null ] >> endobj 3087 0 obj -<< /D [ 3078 0 R /XYZ 79.37 675.375 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 492.864 null ] >> endobj 3088 0 obj -<< /D [ 3078 0 R /XYZ 81.145 657.24 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 456.002 null ] >> endobj 3089 0 obj -<< /D [ 3078 0 R /XYZ 81.145 646.281 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 445.044 null ] >> endobj 3090 0 obj -<< /D [ 3078 0 R /XYZ 81.145 630.341 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 434.085 null ] >> endobj 3091 0 obj -<< /D [ 3078 0 R /XYZ 81.145 619.382 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 423.126 null ] >> endobj 3092 0 obj -<< /D [ 3078 0 R /XYZ 81.145 608.423 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 412.167 null ] >> endobj 3093 0 obj -<< /D [ 3078 0 R /XYZ 81.145 597.464 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 401.208 null ] >> endobj 3094 0 obj -<< /D [ 3078 0 R /XYZ 81.145 586.506 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 390.249 null ] >> endobj 3095 0 obj -<< /D [ 3078 0 R /XYZ 81.145 575.547 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 379.29 null ] >> endobj 3096 0 obj -<< /D [ 3078 0 R /XYZ 81.145 564.588 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 368.331 null ] >> endobj 3097 0 obj -<< /D [ 3078 0 R /XYZ 81.145 533.704 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 321.507 null ] >> endobj 3098 0 obj -<< /D [ 3078 0 R /XYZ 81.145 522.745 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 310.548 null ] >> endobj 3099 0 obj -<< /D [ 3078 0 R /XYZ 81.145 511.786 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 299.589 null ] >> endobj 3100 0 obj -<< /D [ 3078 0 R /XYZ 81.145 500.827 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 220.884 null ] >> endobj 3101 0 obj -<< /D [ 3078 0 R /XYZ 81.145 489.868 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 209.925 null ] >> endobj 3102 0 obj -<< /D [ 3078 0 R /XYZ 81.145 478.909 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 198.966 null ] >> endobj 3103 0 obj -<< /D [ 3078 0 R /XYZ 81.145 467.95 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 188.007 null ] >> endobj 3104 0 obj -<< /D [ 3078 0 R /XYZ 81.145 456.991 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 177.049 null ] >> endobj 3105 0 obj -<< /D [ 3078 0 R /XYZ 81.145 446.032 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 166.09 null ] >> endobj 3106 0 obj -<< /D [ 3078 0 R /XYZ 81.145 435.073 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 155.131 null ] >> endobj 3107 0 obj -<< /D [ 3078 0 R /XYZ 81.145 424.115 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 144.172 null ] >> endobj 3108 0 obj -<< /D [ 3078 0 R /XYZ 81.145 413.156 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 133.213 null ] >> endobj 3109 0 obj -<< /D [ 3078 0 R /XYZ 81.145 402.197 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 122.254 null ] >> endobj 3110 0 obj -<< /D [ 3078 0 R /XYZ 81.145 391.238 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 111.295 null ] >> endobj 3111 0 obj -<< /D [ 3078 0 R /XYZ 81.145 380.279 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 100.336 null ] >> endobj 3112 0 obj -<< /D [ 3078 0 R /XYZ 81.145 369.32 null ] >> -endobj -3113 0 obj -<< /D [ 3078 0 R /XYZ 81.145 358.361 null ] >> +<< /D [ 3067 0 R /XYZ 81.145 89.377 null ] >> endobj -3114 0 obj -<< /D [ 3078 0 R /XYZ 81.145 347.402 null ] >> +3066 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3115 0 obj -<< /D [ 3078 0 R /XYZ 81.145 336.443 null ] >> +<< /Filter /FlateDecode /Length 2285 >> +stream +x[n$7Q +x%A5opA'dx>Pt (`%M=hGUpT +Dlk\p^^E{(:9Ga3wrڸHlF/gMZ. + 9N7%Lf߿QQ5M +:϶M$g-8czCإQǶ>pU0i'sQhGg$J Ŏ́Ӆ>㓶CtU5S֔&|p +-J%4pTL-uK d??)͊H#i*+WD*ٕ*$F +8Fp(3{ |~p(`KqmK/s+i;M.f43H?]V"ڭNdr譫 +9 k8Q>,e+(T؞2ުK AMPzl>xJⰪ&&k(Qm7sۖ[ +k֔>bvP~ʑR՚?4!,RJMoI5ͩSiAÒkJzf
`pD4p"HG'پCH$J#ɅPT ++Rh(]AA'm]vf6&cTh8AhLƙ~hJ>b8 +jo!{;[E)eX,6o4kP*i0َ_)DkթYiMyRd~_G)1vw\J#JV$\CZ2N5~>[U\#fcPCuݙNu8:i_3G(IDCU+O]{y-#>P^p|~+v 4vof=K^jӃKmxKdv:^q/V\[:3z}Hx+}2s]tt|Tp@XXmPuwRPm3J +۵bN
aM@^yu[15Gf%;Ҥ]Gn\-2f|+|{:t4=M>t \]'%yxgR1դaM60Χr
1eؙU`yLiXW^2;NUn!Ř!Ƙ:9`:w)o +.(:/ +endstream +endobj +3114 0 obj +<< /Type /Page /Contents 3115 0 R /Resources 3113 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3116 0 obj -<< /D [ 3078 0 R /XYZ 81.145 325.484 null ] >> +<< /D [ 3114 0 R /XYZ 78.37 808.885 null ] >> endobj 3117 0 obj -<< /D [ 3078 0 R /XYZ 79.37 288.817 null ] >> +<< /D [ 3114 0 R /XYZ 79.37 773.016 null ] >> endobj 3118 0 obj -<< /D [ 3078 0 R /XYZ 81.145 258.727 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 754.882 null ] >> endobj 3119 0 obj -<< /D [ 3078 0 R /XYZ 81.145 247.768 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 743.923 null ] >> endobj 3120 0 obj -<< /D [ 3078 0 R /XYZ 81.145 236.809 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 689.128 null ] >> endobj 3121 0 obj -<< /D [ 3078 0 R /XYZ 81.145 225.851 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 656.252 null ] >> endobj 3122 0 obj -<< /D [ 3078 0 R /XYZ 81.145 214.892 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 645.293 null ] >> endobj 3123 0 obj -<< /D [ 3078 0 R /XYZ 81.145 203.933 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 634.334 null ] >> endobj 3124 0 obj -<< /D [ 3078 0 R /XYZ 81.145 192.974 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 603.45 null ] >> endobj 3125 0 obj -<< /D [ 3078 0 R /XYZ 81.145 182.015 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 592.491 null ] >> endobj 3126 0 obj -<< /D [ 3078 0 R /XYZ 81.145 171.056 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 561.606 null ] >> endobj 3127 0 obj -<< /D [ 3078 0 R /XYZ 81.145 160.097 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 528.73 null ] >> endobj 3128 0 obj -<< /D [ 3078 0 R /XYZ 81.145 149.138 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 517.771 null ] >> endobj 3129 0 obj -<< /D [ 3078 0 R /XYZ 81.145 138.179 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 506.812 null ] >> endobj 3130 0 obj -<< /D [ 3078 0 R /XYZ 81.145 127.22 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 452.017 null ] >> endobj 3131 0 obj -<< /D [ 3078 0 R /XYZ 81.145 116.261 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 441.058 null ] >> endobj 3132 0 obj -<< /D [ 3078 0 R /XYZ 81.145 105.303 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 430.1 null ] >> endobj 3133 0 obj -<< /D [ 3078 0 R /XYZ 81.145 94.344 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 419.141 null ] >> endobj 3134 0 obj -<< /D [ 3078 0 R /XYZ 81.145 83.385 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 388.256 null ] >> endobj -3077 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +3135 0 obj +<< /D [ 3114 0 R /XYZ 81.145 377.298 null ] >> endobj -3138 0 obj -<< /Filter /FlateDecode /Length 1659 >> -stream -xZM6ϯX$ -}4뺭ksxTjGޚ[-R[ٺJv~:<|3BD,wНm=*V+K=ޖyU։M\Ӡ楌Va%(-4 .fz,}O~~$y܉YȱdumJWk3n o~VqhX\긿He!κI\ΦDXL.X&a&S <WϦhbY9IkxCS|bK)+&h0?iќ5tnm2BH{x8q).̽^
j#â5+k:";cG{R"''Z`3T,j"l2[7H2-Ҏc.+܈*? qk*).zg^+>Fjb_Ty}N)ţo>/hmm7.RԢ5839-RB=$A)pǩlavTlhʒ%e/ -ޟv\ -eTyޟu~pCu`.]ޱ=:k^fſ.!v,04<\&:v`$FןVR+SBRkaQi^Kl?K4ɽLuHU|EezCN~]:]d -
[P,@;o9g.i(KM@n2C<J,XM8|RmNW<0??&~xzrmd{"UǻWkz -endstream +3136 0 obj +<< /D [ 3114 0 R /XYZ 81.145 366.339 null ] >> endobj 3137 0 obj -<< /Type /Page /Contents 3138 0 R /Resources 3136 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3114 0 R /XYZ 81.145 355.38 null ] >> +endobj +3138 0 obj +<< /D [ 3114 0 R /XYZ 81.145 344.421 null ] >> endobj 3139 0 obj -<< /D [ 3137 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 333.462 null ] >> endobj 3140 0 obj -<< /D [ 3137 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 322.503 null ] >> endobj 3141 0 obj -<< /D [ 3137 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 311.544 null ] >> endobj 3142 0 obj -<< /D [ 3137 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 278.667 null ] >> endobj 3143 0 obj -<< /D [ 3137 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 267.709 null ] >> endobj 3144 0 obj -<< /D [ 3137 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 256.75 null ] >> endobj 3145 0 obj -<< /D [ 3137 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 201.955 null ] >> endobj 3146 0 obj -<< /D [ 3137 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 190.996 null ] >> endobj 3147 0 obj -<< /D [ 3137 0 R /XYZ 81.145 692.117 null ] >> -endobj -3148 0 obj -<< /D [ 3137 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 3114 0 R /XYZ 81.145 138.194 null ] >> endobj -3149 0 obj -<< /D [ 3137 0 R /XYZ 81.145 670.199 null ] >> +3113 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3150 0 obj -<< /D [ 3137 0 R /XYZ 81.145 659.24 null ] >> +<< /Filter /FlateDecode /Length 1777 >> +stream +xZr6+a c&<;uvnU[R$Ms'%xPҧOWSP5 '8ȝ-9z9QZk|<i
_Q=H^mz\Q>3<{1ȲHJ-
g9Oh9_q?ΌN.!f"+e.$.B3zGb?]@D'8@%OEɚl.!Wޜ"[KYR$C{F~ȑUD̨d-<f9XHgx}w Ry>8%x:/]Sf+ +XadGbZdeY=j%8&+ZǬl-Ѥy1 +%1Z{ߙ%Z-D_Wrc"3ĥCP[[Y:ht<*}zo/9Rv!#hH1R'葲rz1uPsrP&Voa.mVزvtf}!urM흙ُex<xc!"W9YAE};[}8I-^&%m!fRM3ǽQj+ykPtHD
n-.R彍*V^9̢@Ȟ<N7tQOeY竏4\R1*ɤ4 +la+U+2:]~r%'7 ij-;J~wHkcZ4
*dA?kDP4$nw϶esքn
+8 +,CK!Qloa^"1!s_)AE$Ѡ։ͯSq^L$d6UکvU\=c*t :ŏelDصa0qFJb8XH'a(O]Z͠_5)ef ݠ%PJz*ˇRqKOK@bCb((KF<(:oS{ EcbCj +3X*9y6w;ԏr0u0}}A_\1$_1_H/J&.c)I6t>qMj`mZTA"8xKCZIR"+SEvHR!(dQTn/vӃ|SgxK9bرᛅ,j +endstream +endobj +3149 0 obj +<< /Type /Page /Contents 3150 0 R /Resources 3148 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3151 0 obj -<< /D [ 3137 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 3149 0 R /XYZ 78.37 808.885 null ] >> endobj 3152 0 obj -<< /D [ 3137 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 754.882 null ] >> endobj 3153 0 obj -<< /D [ 3137 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 743.923 null ] >> endobj 3154 0 obj -<< /D [ 3137 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 732.964 null ] >> endobj 3155 0 obj -<< /D [ 3137 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 722.005 null ] >> endobj 3156 0 obj -<< /D [ 3137 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 711.046 null ] >> endobj 3157 0 obj -<< /D [ 3137 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 700.087 null ] >> endobj 3158 0 obj -<< /D [ 3137 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 689.128 null ] >> endobj 3159 0 obj -<< /D [ 3137 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 678.169 null ] >> endobj 3160 0 obj -<< /D [ 3137 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 667.21 null ] >> endobj 3161 0 obj -<< /D [ 3137 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 656.252 null ] >> endobj 3162 0 obj -<< /D [ 3137 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 645.293 null ] >> endobj 3163 0 obj -<< /D [ 3137 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 634.334 null ] >> endobj 3164 0 obj -<< /D [ 3137 0 R /XYZ 79.37 480.107 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 623.375 null ] >> endobj 3165 0 obj -<< /D [ 3137 0 R /XYZ 81.145 461.973 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 612.416 null ] >> endobj 3166 0 obj -<< /D [ 3137 0 R /XYZ 79.37 425.305 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 571.569 null ] >> endobj 3167 0 obj -<< /D [ 3137 0 R /XYZ 81.145 407.171 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 560.61 null ] >> endobj 3168 0 obj -<< /D [ 3137 0 R /XYZ 81.145 396.212 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 549.651 null ] >> endobj 3169 0 obj -<< /D [ 3137 0 R /XYZ 81.145 385.253 null ] >> +<< /D [ 3149 0 R /XYZ 79.37 527.928 null ] >> endobj 3170 0 obj -<< /D [ 3137 0 R /XYZ 81.145 374.294 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 509.793 null ] >> endobj 3171 0 obj -<< /D [ 3137 0 R /XYZ 81.145 363.335 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 498.834 null ] >> endobj 3172 0 obj -<< /D [ 3137 0 R /XYZ 81.145 352.376 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 487.875 null ] >> endobj 3173 0 obj -<< /D [ 3137 0 R /XYZ 81.145 341.417 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 476.917 null ] >> endobj 3174 0 obj -<< /D [ 3137 0 R /XYZ 81.145 330.458 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 465.958 null ] >> endobj 3175 0 obj -<< /D [ 3137 0 R /XYZ 81.145 319.499 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 454.999 null ] >> endobj 3176 0 obj -<< /D [ 3137 0 R /XYZ 81.145 308.54 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 444.04 null ] >> endobj 3177 0 obj -<< /D [ 3137 0 R /XYZ 81.145 297.582 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 433.081 null ] >> endobj 3178 0 obj -<< /D [ 3137 0 R /XYZ 81.145 286.623 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 422.122 null ] >> endobj 3179 0 obj -<< /D [ 3137 0 R /XYZ 81.145 275.664 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 411.163 null ] >> endobj 3180 0 obj -<< /D [ 3137 0 R /XYZ 81.145 264.705 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 380.279 null ] >> endobj 3181 0 obj -<< /D [ 3137 0 R /XYZ 81.145 253.746 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 369.32 null ] >> endobj 3182 0 obj -<< /D [ 3137 0 R /XYZ 81.145 242.787 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 358.361 null ] >> endobj 3183 0 obj -<< /D [ 3137 0 R /XYZ 81.145 231.828 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 347.402 null ] >> endobj 3184 0 obj -<< /D [ 3137 0 R /XYZ 81.145 220.869 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 336.443 null ] >> endobj 3185 0 obj -<< /D [ 3137 0 R /XYZ 81.145 209.91 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 325.484 null ] >> endobj 3186 0 obj -<< /D [ 3137 0 R /XYZ 81.145 198.951 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 314.525 null ] >> endobj 3187 0 obj -<< /D [ 3137 0 R /XYZ 81.145 187.992 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 303.567 null ] >> endobj 3188 0 obj -<< /D [ 3137 0 R /XYZ 81.145 177.034 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 292.608 null ] >> endobj 3189 0 obj -<< /D [ 3137 0 R /XYZ 81.145 166.075 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 281.649 null ] >> endobj 3190 0 obj -<< /D [ 3137 0 R /XYZ 81.145 155.116 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 270.69 null ] >> endobj 3191 0 obj -<< /D [ 3137 0 R /XYZ 81.145 144.157 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 259.731 null ] >> endobj 3192 0 obj -<< /D [ 3137 0 R /XYZ 81.145 133.198 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 226.854 null ] >> endobj 3193 0 obj -<< /D [ 3137 0 R /XYZ 81.145 122.239 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 215.895 null ] >> endobj 3194 0 obj -<< /D [ 3137 0 R /XYZ 81.145 111.28 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 204.936 null ] >> endobj 3195 0 obj -<< /D [ 3137 0 R /XYZ 81.145 100.321 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 193.978 null ] >> endobj -3136 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -3198 0 obj -<< /Filter /FlateDecode /Length 2718 >> -stream -xڵn+< -ܖ5ܒ6K!í(vSF&Y}!}&1A?_q1-+FYo?4q.>86|¨
Ώ҈v&O`{F#qW#@IO32VPR%3*i
<y}H`K5 i2Be2fhThׯ^FND+\h>3ۊHVD~GkF+M)B;&% n KV_4s4L(`vFX<[#zA*fʦLoE2gB
*l uXy5g -ڧh==6t-3< -TP@JH0Bd{ /VP^<&)(WI#3;wZIуR_-XbH]#T(^nّv(A÷W츒g6:HvI5$U%R;H`Mߓ>zڕTZΤ!rRR^=ZJ)'$ZH -PiqR+/'"2eԈFGaZmּaiR3ieFoONI4K9͔V Ͳo?<x@ΖcX߸ճ})c'1e- -&f\ǥKg~u>*}QW>A1eu`&0GB$#3x YP]N7dFO&Z@OrӉ1ܞw 18"d# -9}=Z_1qʕ2!M\|hXr'|rϥPÀEq`VZH+eTGAwxخ|2"4
VAtn#Tγ%GtYrKr A%Lx?T ǣ9T^+hRɹ>RLVq͵TcT~Gf3f1՚ZH3ȹ\R|\ݙ>1laa;=XeC5jZ"tO}&VСF69'10=SYwv(+n -Ӻr1/˪>/{4"9K2Ac7w
!5!B3Li\@4LK9w -מʡ-k~<{?&hJnJ9,2H2 tFD6~ײEJX$Dr4V4dT%}$D.3Azm}Tt}LѶXpttQ1QLI=.ܘ}Ք!7CΏaCvKǦ>K^"vAZ1tlӚPo0ab{PIwŦ{u&kim&tn0_99 [H=jh:)zY4kT£5dOxP⭺uAU.JSB!ymp4v/=hO|o߸#d䈯LbʩLtܿ\Gn8FoˡK84!Qk_
XYdژVVhuf8`F!v
Ҫ?}3VZþT-$/sNsdu^ -wa9,}
VGeneuQgq
R%xA=͛(KEUo3Ħ!>x'<i:|Uz,=3@»U-78p% -endstream +3196 0 obj +<< /D [ 3149 0 R /XYZ 81.145 183.019 null ] >> endobj 3197 0 obj -<< /Type /Page /Contents 3198 0 R /Resources 3196 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R /Annots 3248 0 R >> +<< /D [ 3149 0 R /XYZ 81.145 172.06 null ] >> endobj -3248 0 obj -[ 3135 0 R ] -endobj -3135 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 745.828 246.868 758.348 ]/A << /S /GoTo /D (Hfootnote.43) >> >> +3198 0 obj +<< /D [ 3149 0 R /XYZ 81.145 139.183 null ] >> endobj 3199 0 obj -<< /D [ 3197 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 128.224 null ] >> endobj 3200 0 obj -<< /D [ 3197 0 R /XYZ 81.145 743.055 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 117.265 null ] >> endobj 3201 0 obj -<< /D [ 3197 0 R /XYZ 81.145 732.097 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 106.306 null ] >> endobj 3202 0 obj -<< /D [ 3197 0 R /XYZ 81.145 721.138 null ] >> +<< /D [ 3149 0 R /XYZ 81.145 95.347 null ] >> endobj -3203 0 obj -<< /D [ 3197 0 R /XYZ 81.145 710.179 null ] >> -endobj -3204 0 obj -<< /D [ 3197 0 R /XYZ 81.145 699.22 null ] >> +3148 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F81 401 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3205 0 obj -<< /D [ 3197 0 R /XYZ 81.145 688.261 null ] >> +<< /Filter /FlateDecode /Length 2228 >> +stream +x[nO/`bq T^& K-jcm~?.YJ^>K".2J\>s7Ε~1k-3w+pk<(>&L 2 ӣ+Kx[Xz,Kٍt/x[uAĸ'2Q<nqo3^7jpc/ +HH@HČڋfZ*EZ1mG U(Ixw/(xWCh#[|߅GPdA&Py3vwHf@91kZjǏ$qsJY'1:J<e^p͔U?yOQr!o8N{$z(vo|xRU{si6G]Er4/R"#nsbBCDJ GfQȨyIKZ3DLWhQ3#iM:Ɔ~چwc7-Lr_5^{oWNp[$ZD(߀y_E:[ZLlq +I!ZDZ&H(!XZFZG +WΉC-ʝdS%[v(y
M2ET^Cϸe0ӒzD_t.A\4*6qxۜT n5q@MmD:9~\jbV.SR dbH;DdDN*/dVJ<N k +A!@-Ab;!R-dnkRz\nT1u^}ky}[#V)ee~7@c!zҼ7>/ fP79i%a$Y;$I%'B)^C['}tڀGcSK֫x.GpfVsw@AgDd4kXDۉ.6~1ɈvSo5Q=LlfiVuHշԆqCJNf3;vHr6:oU!fP=GaO)OB%:%(p=DQ"=%ήÝ`R^!:#Gڨq5g3d-L|t^8wӟϦ+)tH/$籷s?xLߎsHG|QXvQbɳ9]dz*Sx<f}#v!{y3d¨ЧDϩxDxg:Z_Eޒ@,n5*"*^</y頒N-"YP_i1ؼmVqn}g"Bu<j{>#k98xu/X"X`bh,C["Zu|O/f@ØvHM +(3$r0,
ډ +FxLK;_RmK1BjF>XmYF,-P47+bO4-ŊN \˛Apk[;s?%J4&is0Xk;kYL k_܊?Z*/~~Yfv]ۚ!K)clO$2.PO5gf;4@sbp֣H]$gI͙?~{ +endstream +endobj +3204 0 obj +<< /Type /Page /Contents 3205 0 R /Resources 3203 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3206 0 obj -<< /D [ 3197 0 R /XYZ 81.145 677.302 null ] >> +<< /D [ 3204 0 R /XYZ 78.37 808.885 null ] >> endobj 3207 0 obj -<< /D [ 3197 0 R /XYZ 81.145 666.343 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 755.553 null ] >> endobj 3208 0 obj -<< /D [ 3197 0 R /XYZ 81.145 655.384 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 744.594 null ] >> endobj 3209 0 obj -<< /D [ 3197 0 R /XYZ 81.145 644.425 null ] >> -endobj -281 0 obj -<< /D [ 3197 0 R /XYZ 79.37 607.769 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 733.635 null ] >> endobj 3210 0 obj -<< /D [ 3197 0 R /XYZ 81.145 586.927 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 722.676 null ] >> endobj 3211 0 obj -<< /D [ 3197 0 R /XYZ 81.145 571.245 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 711.717 null ] >> endobj 3212 0 obj -<< /D [ 3197 0 R /XYZ 81.145 520.213 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 700.758 null ] >> endobj 3213 0 obj -<< /D [ 3197 0 R /XYZ 81.145 509.254 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 689.799 null ] >> endobj 3214 0 obj -<< /D [ 3197 0 R /XYZ 81.145 498.295 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 678.841 null ] >> endobj 3215 0 obj -<< /D [ 3197 0 R /XYZ 81.145 487.336 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 667.882 null ] >> endobj 3216 0 obj -<< /D [ 3197 0 R /XYZ 81.145 476.377 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 656.923 null ] >> endobj 3217 0 obj -<< /D [ 3197 0 R /XYZ 81.145 465.418 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 645.964 null ] >> endobj 3218 0 obj -<< /D [ 3197 0 R /XYZ 81.145 454.459 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 635.005 null ] >> endobj 3219 0 obj -<< /D [ 3197 0 R /XYZ 81.145 443.5 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 624.046 null ] >> endobj 3220 0 obj -<< /D [ 3197 0 R /XYZ 81.145 432.541 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 613.087 null ] >> endobj 3221 0 obj -<< /D [ 3197 0 R /XYZ 81.145 421.582 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 602.128 null ] >> endobj 3222 0 obj -<< /D [ 3197 0 R /XYZ 81.145 410.624 null ] >> +<< /D [ 3204 0 R /XYZ 79.37 580.983 null ] >> endobj 3223 0 obj -<< /D [ 3197 0 R /XYZ 81.145 399.665 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 551.565 null ] >> endobj 3224 0 obj -<< /D [ 3197 0 R /XYZ 81.145 388.706 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 540.606 null ] >> endobj 3225 0 obj -<< /D [ 3197 0 R /XYZ 81.145 377.747 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 529.647 null ] >> endobj 3226 0 obj -<< /D [ 3197 0 R /XYZ 81.145 366.788 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 518.688 null ] >> endobj 3227 0 obj -<< /D [ 3197 0 R /XYZ 81.145 355.829 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 507.729 null ] >> endobj 3228 0 obj -<< /D [ 3197 0 R /XYZ 81.145 344.87 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 496.77 null ] >> endobj 3229 0 obj -<< /D [ 3197 0 R /XYZ 81.145 333.911 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 485.811 null ] >> endobj 3230 0 obj -<< /D [ 3197 0 R /XYZ 81.145 322.952 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 474.852 null ] >> endobj 3231 0 obj -<< /D [ 3197 0 R /XYZ 81.145 311.993 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 463.894 null ] >> endobj 3232 0 obj -<< /D [ 3197 0 R /XYZ 81.145 301.034 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 452.935 null ] >> endobj 3233 0 obj -<< /D [ 3197 0 R /XYZ 81.145 290.076 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 441.976 null ] >> endobj 3234 0 obj -<< /D [ 3197 0 R /XYZ 81.145 279.117 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 415.79 null ] >> endobj 3235 0 obj -<< /D [ 3197 0 R /XYZ 81.145 268.158 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 404.831 null ] >> endobj 3236 0 obj -<< /D [ 3197 0 R /XYZ 81.145 257.199 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 393.872 null ] >> endobj 3237 0 obj -<< /D [ 3197 0 R /XYZ 81.145 246.24 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 382.913 null ] >> endobj 3238 0 obj -<< /D [ 3197 0 R /XYZ 81.145 235.281 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 371.954 null ] >> endobj 3239 0 obj -<< /D [ 3197 0 R /XYZ 81.145 224.322 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 344.447 null ] >> endobj 3240 0 obj -<< /D [ 3197 0 R /XYZ 81.145 213.363 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 333.488 null ] >> endobj 3241 0 obj -<< /D [ 3197 0 R /XYZ 81.145 202.404 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 305.981 null ] >> endobj 3242 0 obj -<< /D [ 3197 0 R /XYZ 81.145 191.445 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 295.022 null ] >> endobj 3243 0 obj -<< /D [ 3197 0 R /XYZ 81.145 180.487 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 284.064 null ] >> endobj 3244 0 obj -<< /D [ 3197 0 R /XYZ 81.145 169.528 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 273.105 null ] >> endobj 3245 0 obj -<< /D [ 3197 0 R /XYZ 81.145 158.569 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 262.146 null ] >> endobj 3246 0 obj -<< /D [ 3197 0 R /XYZ 81.145 147.61 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 234.639 null ] >> endobj 3247 0 obj -<< /D [ 3197 0 R /XYZ 93.716 89.795 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 207.132 null ] >> endobj -3196 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F16 336 0 R /F59 346 0 R /F84 425 0 R /F22 367 0 R /F81 377 0 R /F83 414 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +3248 0 obj +<< /D [ 3204 0 R /XYZ 81.145 166.306 null ] >> endobj -3251 0 obj -<< /Filter /FlateDecode /Length 1917 >> -stream -xZɎ6W!Y
h -"Xm盢N.p'gV>>.R.}8)}:kGNsn4zWB-JhjD#{YM4KFTąWA -GJVh8{+{c
I@u#i5s-Tp3>]RFD1+T\ꪄ; [`f -61u.HP*Vp&)g} η'}Ix -CM&6?>ͬZ \#-LkxxWZ5ȣn0~=4| -endstream +3249 0 obj +<< /D [ 3204 0 R /XYZ 81.145 155.347 null ] >> endobj 3250 0 obj -<< /Type /Page /Contents 3251 0 R /Resources 3249 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3204 0 R /XYZ 81.145 144.388 null ] >> +endobj +3251 0 obj +<< /D [ 3204 0 R /XYZ 81.145 133.429 null ] >> endobj 3252 0 obj -<< /D [ 3250 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 122.47 null ] >> endobj 3253 0 obj -<< /D [ 3250 0 R /XYZ 81.145 730.971 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 111.511 null ] >> endobj 3254 0 obj -<< /D [ 3250 0 R /XYZ 81.145 720.012 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 100.552 null ] >> endobj 3255 0 obj -<< /D [ 3250 0 R /XYZ 79.37 673.39 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 89.593 null ] >> endobj 3256 0 obj -<< /D [ 3250 0 R /XYZ 81.145 655.255 null ] >> -endobj -3257 0 obj -<< /D [ 3250 0 R /XYZ 81.145 644.296 null ] >> +<< /D [ 3204 0 R /XYZ 81.145 78.635 null ] >> endobj -3258 0 obj -<< /D [ 3250 0 R /XYZ 81.145 633.337 null ] >> +3203 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F81 401 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3259 0 obj -<< /D [ 3250 0 R /XYZ 81.145 622.379 null ] >> +<< /Filter /FlateDecode /Length 1638 >> +stream +x[n#9+HII@bJjwKѓfvP,%mw۳]2q_؝ۅd|vƲ۽Z8YZ/Bk|Na땣){|3<__/d6Kl\tq`y,"
Yw"33b
?Y-`jdܪ^) +WQ$.X4zmQז*6-gu[/Or^퇛ŲN-J6tse,\oI":kL|h(<ܫ\*z:$uMLtI]TEEӝtH>'cqVvDALVg~,:CvEtC2*bZTүb)gjAL-H:`
pINN"2Z7'Jb'^Ŭү'J9l% :w[#EuRqKߚ+!G"KTucһuM{RR俔Ĭ?ZSj> ΰor~y2s~}ŏ48m=(75LĤM|z +endstream +endobj +3258 0 obj +<< /Type /Page /Contents 3259 0 R /Resources 3257 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3260 0 obj -<< /D [ 3250 0 R /XYZ 81.145 611.42 null ] >> +<< /D [ 3258 0 R /XYZ 78.37 808.885 null ] >> endobj 3261 0 obj -<< /D [ 3250 0 R /XYZ 81.145 600.461 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 754.882 null ] >> endobj 3262 0 obj -<< /D [ 3250 0 R /XYZ 81.145 589.502 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 743.923 null ] >> endobj 3263 0 obj -<< /D [ 3250 0 R /XYZ 81.145 578.543 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 732.964 null ] >> endobj 3264 0 obj -<< /D [ 3250 0 R /XYZ 81.145 567.584 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 722.005 null ] >> endobj 3265 0 obj -<< /D [ 3250 0 R /XYZ 81.145 556.625 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 711.046 null ] >> endobj 3266 0 obj -<< /D [ 3250 0 R /XYZ 81.145 545.666 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 700.087 null ] >> endobj 3267 0 obj -<< /D [ 3250 0 R /XYZ 79.37 497.043 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 689.128 null ] >> endobj 3268 0 obj -<< /D [ 3250 0 R /XYZ 81.145 478.909 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 678.169 null ] >> endobj 3269 0 obj -<< /D [ 3250 0 R /XYZ 81.145 467.95 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 667.21 null ] >> endobj 3270 0 obj -<< /D [ 3250 0 R /XYZ 81.145 452.01 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 656.252 null ] >> endobj 3271 0 obj -<< /D [ 3250 0 R /XYZ 81.145 436.07 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 645.293 null ] >> endobj 3272 0 obj -<< /D [ 3250 0 R /XYZ 79.37 397.41 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 634.334 null ] >> endobj 3273 0 obj -<< /D [ 3250 0 R /XYZ 81.145 379.275 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 623.375 null ] >> endobj 3274 0 obj -<< /D [ 3250 0 R /XYZ 79.37 342.608 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 612.416 null ] >> endobj 3275 0 obj -<< /D [ 3250 0 R /XYZ 81.145 312.518 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 601.457 null ] >> endobj 3276 0 obj -<< /D [ 3250 0 R /XYZ 81.145 301.559 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 590.498 null ] >> endobj 3277 0 obj -<< /D [ 3250 0 R /XYZ 81.145 290.6 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 579.539 null ] >> endobj 3278 0 obj -<< /D [ 3250 0 R /XYZ 81.145 279.641 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 568.58 null ] >> endobj 3279 0 obj -<< /D [ 3250 0 R /XYZ 81.145 268.682 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 557.621 null ] >> endobj 3280 0 obj -<< /D [ 3250 0 R /XYZ 81.145 257.724 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 546.662 null ] >> endobj 3281 0 obj -<< /D [ 3250 0 R /XYZ 81.145 246.765 null ] >> +<< /D [ 3258 0 R /XYZ 79.37 524.939 null ] >> endobj 3282 0 obj -<< /D [ 3250 0 R /XYZ 81.145 235.806 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 506.804 null ] >> endobj 3283 0 obj -<< /D [ 3250 0 R /XYZ 81.145 224.847 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 495.846 null ] >> endobj 3284 0 obj -<< /D [ 3250 0 R /XYZ 81.145 213.888 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 484.887 null ] >> endobj 3285 0 obj -<< /D [ 3250 0 R /XYZ 81.145 202.929 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 473.928 null ] >> endobj -3249 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F83 414 0 R /F74 337 0 R /F65 335 0 R /F75 338 0 R /F59 346 0 R /F84 425 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +3286 0 obj +<< /D [ 3258 0 R /XYZ 81.145 462.969 null ] >> endobj -3289 0 obj -<< /Filter /FlateDecode /Length 2228 >> -stream -x[Ɏ6WL4=1[>%/!".bŇ4TzU,Z(OO -\&WCYhЄ'Z6|ӋqzB]9 KҾ:{}ph+PTsT^RD%fͅ`<x`R)3 bùE(mYNE 6wIs^PE
=Ȟ -ƅܥqK˙b -EC"Ԟ)S/45c^DUf+(ǔS}M^R23&F*-Ӡ>"iX{IG||UzJFsY`6u4={I{|"fэv
̈>S1gD\%FAR=bUPS{Ɍ3:H9pr -H{A{ĺsmnZyTV0k:1HؑJ*;kriS8H)k\ZogWyscIng♻{&5ͯrgΈ AsfB;fgty5/-$y`Bֲ0Jfe^)rARP\2#*x00o1'$5_a.'
bgh EӊROyxZsXSl0j;ei:kە5Fbn_ݏV0 Ǚ~D5lr˄;4q
r`^uQxM*ƣotwx]Kk -M)/-}zUYh# -1%-~~2sqr;-WF%u]m/ϷQ7UY -ʓ \+aeZ&Z۷JRۄxMmDع-IےN~ŵ(̂4.X! -msy%nrIP3^9X^ -L=},q{IX -590ŧ4}p&{eWڤh$
duJMS` 2oLdn}Y^7J;ll_5M^Rd#חYfzzFQU@TKEӲTܗ-)A/Ri5[AG혞; @ED,3B`AI?)aFBx4$Q -endstream +3287 0 obj +<< /D [ 3258 0 R /XYZ 81.145 452.01 null ] >> endobj 3288 0 obj -<< /Type /Page /Contents 3289 0 R /Resources 3287 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R /Annots 3339 0 R >> +<< /D [ 3258 0 R /XYZ 81.145 441.051 null ] >> endobj -3339 0 obj -[ 3286 0 R ] -endobj -3286 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 434.994 246.868 447.514 ]/A << /S /GoTo /D (Hfootnote.44) >> >> +3289 0 obj +<< /D [ 3258 0 R /XYZ 81.145 430.092 null ] >> endobj 3290 0 obj -<< /D [ 3288 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 419.133 null ] >> endobj 3291 0 obj -<< /D [ 3288 0 R /XYZ 79.37 773.016 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 408.174 null ] >> endobj 3292 0 obj -<< /D [ 3288 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 397.215 null ] >> endobj 3293 0 obj -<< /D [ 3288 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 386.256 null ] >> endobj 3294 0 obj -<< /D [ 3288 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 375.298 null ] >> endobj 3295 0 obj -<< /D [ 3288 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 364.339 null ] >> endobj 3296 0 obj -<< /D [ 3288 0 R /XYZ 81.145 711.046 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 353.38 null ] >> endobj 3297 0 obj -<< /D [ 3288 0 R /XYZ 81.145 700.087 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 342.421 null ] >> endobj 3298 0 obj -<< /D [ 3288 0 R /XYZ 81.145 689.128 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 331.462 null ] >> endobj 3299 0 obj -<< /D [ 3288 0 R /XYZ 81.145 678.169 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 320.503 null ] >> endobj 3300 0 obj -<< /D [ 3288 0 R /XYZ 81.145 667.21 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 309.544 null ] >> endobj 3301 0 obj -<< /D [ 3288 0 R /XYZ 81.145 656.252 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 298.585 null ] >> endobj 3302 0 obj -<< /D [ 3288 0 R /XYZ 81.145 645.293 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 287.626 null ] >> endobj 3303 0 obj -<< /D [ 3288 0 R /XYZ 81.145 634.334 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 276.667 null ] >> endobj 3304 0 obj -<< /D [ 3288 0 R /XYZ 81.145 623.375 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 265.709 null ] >> endobj 3305 0 obj -<< /D [ 3288 0 R /XYZ 81.145 612.416 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 254.75 null ] >> endobj 3306 0 obj -<< /D [ 3288 0 R /XYZ 81.145 601.457 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 243.791 null ] >> endobj 3307 0 obj -<< /D [ 3288 0 R /XYZ 81.145 590.498 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 232.832 null ] >> endobj 3308 0 obj -<< /D [ 3288 0 R /XYZ 81.145 579.539 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 221.873 null ] >> endobj 3309 0 obj -<< /D [ 3288 0 R /XYZ 81.145 568.58 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 210.914 null ] >> endobj 3310 0 obj -<< /D [ 3288 0 R /XYZ 81.145 557.621 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 199.955 null ] >> endobj 3311 0 obj -<< /D [ 3288 0 R /XYZ 81.145 546.662 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 188.996 null ] >> endobj 3312 0 obj -<< /D [ 3288 0 R /XYZ 81.145 535.704 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 178.037 null ] >> endobj 3313 0 obj -<< /D [ 3288 0 R /XYZ 81.145 524.745 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 167.078 null ] >> endobj 3314 0 obj -<< /D [ 3288 0 R /XYZ 81.145 513.786 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 156.12 null ] >> endobj 3315 0 obj -<< /D [ 3288 0 R /XYZ 81.145 484.894 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 145.161 null ] >> endobj 3316 0 obj -<< /D [ 3288 0 R /XYZ 81.145 432.092 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 134.202 null ] >> endobj 3317 0 obj -<< /D [ 3288 0 R /XYZ 81.145 421.133 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 123.243 null ] >> endobj 3318 0 obj -<< /D [ 3288 0 R /XYZ 81.145 410.174 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 112.284 null ] >> endobj 3319 0 obj -<< /D [ 3288 0 R /XYZ 81.145 399.215 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 101.325 null ] >> endobj 3320 0 obj -<< /D [ 3288 0 R /XYZ 81.145 388.256 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 90.366 null ] >> endobj 3321 0 obj -<< /D [ 3288 0 R /XYZ 81.145 377.298 null ] >> -endobj -3322 0 obj -<< /D [ 3288 0 R /XYZ 81.145 366.339 null ] >> +<< /D [ 3258 0 R /XYZ 81.145 79.407 null ] >> endobj -3323 0 obj -<< /D [ 3288 0 R /XYZ 81.145 355.38 null ] >> +3257 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F83 438 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3324 0 obj -<< /D [ 3288 0 R /XYZ 81.145 344.421 null ] >> +<< /Filter /FlateDecode /Length 1751 >> +stream +xڽZn8+&Y
hb{96iڤHʱ*
Y~~d)ߓpB}zEdN^'gV;KJH AJ_F~E&E|θIMTTj/'Jj]xGM=3f|<cI_߾wlɟOۄ?kCn]yU::&Bf-$DϠ5gtzFJ[Y~s`D5`^ +$6$NgKFP(XSKjB)i|M)%y~> +,<;"G[
@f,8HsKv1mDȶ7#W@صij HC\騼#3)M<yUv.;UH;*l*.)E\
$ɈTΰԱv,LK1=1Cbq^8p$pfNHwX'd=#߳ +`W2A(
3Rɟ&).n%giժ~ZoGq)%ޠ^Ls +57j#@q:%5p)hL0<n#Rbk8fky쾖ys ;>7"5dN<@ Yu{B]|-#TnWm9څ=#Ҙ|
J)1q0 +C_I~]c=w^osRgѮYq:@Gٿ镳%-Ƿo`6qMi*kОErvL15!=${A U>jlE฿ɂl#vt6Gjupy\ H8ECtbZحbո;Y>>$kN0cɕ(VBg.gf>^X\mX2y"xB-
61q?4wh1
sv"=?qJ`4h!T#Pcg +u@W. 4COef,#!O?ddb=aK +endstream endobj -3325 0 obj -<< /D [ 3288 0 R /XYZ 81.145 333.462 null ] >> +3323 0 obj +<< /Type /Page /Contents 3324 0 R /Resources 3322 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj -285 0 obj -<< /D [ 3288 0 R /XYZ 79.37 296.05 null ] >> +3325 0 obj +<< /D [ 3323 0 R /XYZ 78.37 808.885 null ] >> endobj 3326 0 obj -<< /D [ 3288 0 R /XYZ 81.145 275.208 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 768.829 null ] >> endobj 3327 0 obj -<< /D [ 3288 0 R /XYZ 81.145 264.249 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 757.87 null ] >> endobj 3328 0 obj -<< /D [ 3288 0 R /XYZ 81.145 253.29 null ] >> +<< /D [ 3323 0 R /XYZ 79.37 736.147 null ] >> endobj 3329 0 obj -<< /D [ 3288 0 R /XYZ 81.145 242.331 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 718.012 null ] >> endobj 3330 0 obj -<< /D [ 3288 0 R /XYZ 81.145 231.372 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 707.054 null ] >> endobj 3331 0 obj -<< /D [ 3288 0 R /XYZ 81.145 220.413 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 696.095 null ] >> endobj 3332 0 obj -<< /D [ 3288 0 R /XYZ 81.145 209.455 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 685.136 null ] >> endobj 3333 0 obj -<< /D [ 3288 0 R /XYZ 81.145 198.496 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 674.177 null ] >> endobj 3334 0 obj -<< /D [ 3288 0 R /XYZ 81.145 187.537 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 663.218 null ] >> endobj 3335 0 obj -<< /D [ 3288 0 R /XYZ 81.145 176.578 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 652.259 null ] >> endobj 3336 0 obj -<< /D [ 3288 0 R /XYZ 81.145 136.727 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 641.3 null ] >> endobj 3337 0 obj -<< /D [ 3288 0 R /XYZ 81.145 125.768 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 630.341 null ] >> endobj 3338 0 obj -<< /D [ 3288 0 R /XYZ 93.716 94.776 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 619.382 null ] >> endobj -3287 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F15 334 0 R /F59 346 0 R /F84 425 0 R /F74 337 0 R /F16 336 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +3339 0 obj +<< /D [ 3323 0 R /XYZ 81.145 608.423 null ] >> endobj -3342 0 obj -<< /Filter /FlateDecode /Length 2522 >> -stream -x[n$-)`MɲTiξ:s[%I/j˕A`J7j. an_yc7jM+FbNzP7ywu`n͐M)nJF5Z$} o/th''v?@8"9R38B˥%%BWc5|#L=z0YŔ7M60-WB
JIQ=VQjŪ& -%p}s^KW(VBƧ[xP߃A ؝#W-0DOY=wOMҙ=?#d*WorO{8 !]@pjԎMeڝ9)G0aN;;4O܅pk՚:c6{^şiK@8䶥hhMA*AagvꌌVB~yN -pQr{ O<現ޅp<J={:~:+\"&CG'S[Z8@A -XC@D)1֚^hʻfe
ЌW̋ǜx7M]I]]IӲ@\HDd/e-kLWɍIѥEb>u/ -.h>b4 -9E:1/y
KY\|}Z81i˴5MՀG={flꮁ<{^ށ!{D؋=hy*7~3Ƣ9?ԢjM4;[GV8%sFOE1 ~
{!d-][
"ij\mc=Q5g;qev5S)r3g3z_L?ŸC(|['S]*iW#T'vȶ-1ѥ_jvȽcWnVzG!6¤*ij!!
ar5@Uǥף0X>tr8L5FF>q{SE M,<
V%u_+f1]S9L&U3Qɯ4%`a2EXaݭ|b=g^aB-/rC|l9i;H(l\xxs, -~$b1Kkxo-a0;mq)""'9y7-Yrȇ`%OhuɬX=DBg{9 ?pFy9}2Duv5A -endstream +3340 0 obj +<< /D [ 3323 0 R /XYZ 81.145 597.464 null ] >> endobj 3341 0 obj -<< /Type /Page /Contents 3342 0 R /Resources 3340 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3323 0 R /XYZ 81.145 586.506 null ] >> +endobj +3342 0 obj +<< /D [ 3323 0 R /XYZ 81.145 575.547 null ] >> endobj 3343 0 obj -<< /D [ 3341 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 564.588 null ] >> endobj 3344 0 obj -<< /D [ 3341 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 553.629 null ] >> endobj 3345 0 obj -<< /D [ 3341 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 542.67 null ] >> endobj 3346 0 obj -<< /D [ 3341 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 531.711 null ] >> endobj 3347 0 obj -<< /D [ 3341 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 520.752 null ] >> endobj 3348 0 obj -<< /D [ 3341 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3323 0 R /XYZ 79.37 484.085 null ] >> endobj 3349 0 obj -<< /D [ 3341 0 R /XYZ 81.145 663.225 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 465.95 null ] >> endobj 3350 0 obj -<< /D [ 3341 0 R /XYZ 81.145 652.266 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 454.991 null ] >> endobj 3351 0 obj -<< /D [ 3341 0 R /XYZ 81.145 641.308 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 444.032 null ] >> endobj 3352 0 obj -<< /D [ 3341 0 R /XYZ 81.145 630.349 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 433.073 null ] >> endobj 3353 0 obj -<< /D [ 3341 0 R /XYZ 81.145 619.39 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 422.115 null ] >> endobj 3354 0 obj -<< /D [ 3341 0 R /XYZ 81.145 608.431 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 411.156 null ] >> endobj 3355 0 obj -<< /D [ 3341 0 R /XYZ 81.145 597.472 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 400.197 null ] >> endobj 3356 0 obj -<< /D [ 3341 0 R /XYZ 81.145 586.513 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 389.238 null ] >> endobj 3357 0 obj -<< /D [ 3341 0 R /XYZ 81.145 575.554 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 378.279 null ] >> endobj 3358 0 obj -<< /D [ 3341 0 R /XYZ 81.145 564.595 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 367.32 null ] >> endobj 3359 0 obj -<< /D [ 3341 0 R /XYZ 81.145 553.636 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 356.361 null ] >> endobj 3360 0 obj -<< /D [ 3341 0 R /XYZ 81.145 542.677 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 327.469 null ] >> endobj 3361 0 obj -<< /D [ 3341 0 R /XYZ 81.145 531.719 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 316.511 null ] >> endobj 3362 0 obj -<< /D [ 3341 0 R /XYZ 81.145 520.76 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 305.552 null ] >> endobj 3363 0 obj -<< /D [ 3341 0 R /XYZ 81.145 509.801 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 294.593 null ] >> endobj 3364 0 obj -<< /D [ 3341 0 R /XYZ 81.145 498.842 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 283.634 null ] >> endobj 3365 0 obj -<< /D [ 3341 0 R /XYZ 81.145 487.883 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 272.675 null ] >> endobj 3366 0 obj -<< /D [ 3341 0 R /XYZ 81.145 476.924 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 261.716 null ] >> endobj 3367 0 obj -<< /D [ 3341 0 R /XYZ 81.145 465.965 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 250.757 null ] >> endobj 3368 0 obj -<< /D [ 3341 0 R /XYZ 81.145 455.006 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 239.798 null ] >> endobj 3369 0 obj -<< /D [ 3341 0 R /XYZ 81.145 444.047 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 228.839 null ] >> endobj 3370 0 obj -<< /D [ 3341 0 R /XYZ 81.145 433.088 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 217.88 null ] >> endobj 3371 0 obj -<< /D [ 3341 0 R /XYZ 81.145 395.23 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 206.922 null ] >> endobj 3372 0 obj -<< /D [ 3341 0 R /XYZ 81.145 384.271 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 195.963 null ] >> endobj 3373 0 obj -<< /D [ 3341 0 R /XYZ 81.145 373.313 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 185.004 null ] >> endobj 3374 0 obj -<< /D [ 3341 0 R /XYZ 81.145 362.354 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 174.045 null ] >> endobj 3375 0 obj -<< /D [ 3341 0 R /XYZ 81.145 351.395 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 163.086 null ] >> endobj 3376 0 obj -<< /D [ 3341 0 R /XYZ 81.145 325.492 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 152.127 null ] >> endobj 3377 0 obj -<< /D [ 3341 0 R /XYZ 81.145 314.533 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 141.168 null ] >> endobj 3378 0 obj -<< /D [ 3341 0 R /XYZ 81.145 303.574 null ] >> +<< /D [ 3323 0 R /XYZ 81.145 100.321 null ] >> endobj -3379 0 obj -<< /D [ 3341 0 R /XYZ 81.145 292.615 null ] >> -endobj -3380 0 obj -<< /D [ 3341 0 R /XYZ 81.145 281.656 null ] >> +3322 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F22 389 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3381 0 obj -<< /D [ 3341 0 R /XYZ 81.145 270.697 null ] >> +<< /Filter /FlateDecode /Length 2474 >> +stream +xڽɎ_bqv;@}rMNkEw0ؖb+3~( +Ҙ%{HGhtfwꤧ-8S
=#a$Y̒SeSnQeOKI);Jfa+IA|gY#nQS:P{fJ)vXId0KF!EB!=Ӌ'O +ο +-SNlGɃEQN;l[:Ia.쟼TbSd +uY1d
{H*cyRvW!2j+:ǧFm%l'v1XjKp% C;H><N-glT
ď ,A+;l*A佶&UZ7=A#CZqg(k\CT0VXIo + Pa)
<kc +2{"*SW*O>K}.mKiO;Z5F/BlT(~yIHKI *2t8,-bzSJjO5E}Ah<[z-ئӈ<[4=w28ρN3m̐'[ڗkwR~6^?~3x^ĬeaGtRKR^*r{Gb:.blOQ f-UdF#5> ,oC#vjk_NBToPOc[-0oӐF\0>H'*gT&KAc) [rquo{_k볂=ůJN(JdFW:5}сVkzmۿ\i<쵛4|vtzmMV@aQb#^!lCy[YNDI>vP@
2u>Σ0ߓ'~3J)ESGV̏z/`GC^,:HǼC,<-%^侓ux0wAࣶ%dǚS;:gMW:rW^szԔ}uy'#v1~!`F^K_\WFѽ̻5![ʵ,UxhF +Xjrt +~m~ +"dak1%J}S2[w M1\EjyKʎ8h!yc~!|e֍X:wZ/Y8<dI5/-Jqѓݡ\>k);9gvQj^w4v[Z0gTk6uRHfk'˳fBu+I#FĸxDx9$2Oԏ2Uq +F +?S*dt2ҌC%u4iZL. +r1 +SA}}j="ѹӃEYuצ7xF;u@D +jkѪ98#k:kj?K~xg狲2ZP:H(D})ңW0ܫ +dcvZ08Zkr 3kٳ:9o U' +ɠ-ulfkh0MMPfJ9,փ. +endstream +endobj +3380 0 obj +<< /Type /Page /Contents 3381 0 R /Resources 3379 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3382 0 obj -<< /D [ 3341 0 R /XYZ 81.145 259.738 null ] >> +<< /D [ 3380 0 R /XYZ 78.37 808.885 null ] >> endobj 3383 0 obj -<< /D [ 3341 0 R /XYZ 81.145 248.78 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 768.829 null ] >> endobj 3384 0 obj -<< /D [ 3341 0 R /XYZ 81.145 237.821 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 757.87 null ] >> endobj 3385 0 obj -<< /D [ 3341 0 R /XYZ 81.145 226.862 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 703.076 null ] >> endobj 3386 0 obj -<< /D [ 3341 0 R /XYZ 81.145 215.903 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 692.117 null ] >> endobj 3387 0 obj -<< /D [ 3341 0 R /XYZ 81.145 204.944 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 681.158 null ] >> endobj 3388 0 obj -<< /D [ 3341 0 R /XYZ 81.145 193.985 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 670.199 null ] >> endobj 3389 0 obj -<< /D [ 3341 0 R /XYZ 81.145 183.026 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 659.24 null ] >> endobj 3390 0 obj -<< /D [ 3341 0 R /XYZ 79.37 160.314 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 648.281 null ] >> endobj 3391 0 obj -<< /D [ 3341 0 R /XYZ 81.145 142.179 null ] >> -endobj -3340 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F83 414 0 R /F74 337 0 R /F81 377 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 3380 0 R /XYZ 81.145 637.322 null ] >> endobj -3394 0 obj -<< /Filter /FlateDecode /Length 1761 >> -stream -xZn9+aXE0 ER96i^.,EAC[2ZH}rzzE<D:{x
}w_FڤimOoe{¤x*0K -̘.t V!$n΄-N*bd2!^E -EhƲȵH@wqV%"}967-*5j(2SJ*&__[%kRֹ{˟'Gh -mz&LYd$9VuU?=~N4f~^p)/Xw>5r-3m)biBǬy$5Űkp{ =Wm[0kqٟg}o7U:A0cAAip-HtW"af<yHhSRaq[R,m,UZ -}h-wcaI`)B>I0&@QSQ-WM.{hiM.4$hkZPr[.vvLNLοG>/\].JNpZ*"e%Vgit]֢l\h?<F&tLg8{,q>F|[\eGتhKdkqv!A9k؋huH5r6']rXA/Rct͗5_09U4F_6 -Pb@{pAQڰ\i -3D,~-pdZZ/NbH*b-dk6;М)[ޱ?XU\AFYo }Q,Ѧ˛GM+#M7TT9mgu -<:UrS:7m+,cx}85v >Xt=%>oFV\dsk2,1cKKkBbhSbϲzjiа9menv1Jۺa(Lnqn/)7|ML1(:$")`S!dI&{$ɋW}\X;'HV[AqZփ놼!\ 4+m:HOM -+D$pkʹGjem`
m$s EQYJ6"
5T`k1pmη["1O9،TrgxIPۆgs,-RW#4Z ^`kĨ4"3Z*go49SꂕFF+dEF?^Irc) -endstream +3392 0 obj +<< /D [ 3380 0 R /XYZ 81.145 626.364 null ] >> endobj 3393 0 obj -<< /Type /Page /Contents 3394 0 R /Resources 3392 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3380 0 R /XYZ 81.145 615.405 null ] >> +endobj +3394 0 obj +<< /D [ 3380 0 R /XYZ 81.145 604.446 null ] >> endobj 3395 0 obj -<< /D [ 3393 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 593.487 null ] >> endobj 3396 0 obj -<< /D [ 3393 0 R /XYZ 79.37 773.016 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 582.528 null ] >> endobj 3397 0 obj -<< /D [ 3393 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 571.569 null ] >> endobj 3398 0 obj -<< /D [ 3393 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 560.61 null ] >> endobj 3399 0 obj -<< /D [ 3393 0 R /XYZ 81.145 727.983 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 549.651 null ] >> endobj 3400 0 obj -<< /D [ 3393 0 R /XYZ 81.145 712.042 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 508.804 null ] >> +endobj +289 0 obj +<< /D [ 3380 0 R /XYZ 79.37 472.032 null ] >> endobj 3401 0 obj -<< /D [ 3393 0 R /XYZ 79.37 673.382 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 435.606 null ] >> endobj 3402 0 obj -<< /D [ 3393 0 R /XYZ 81.145 643.293 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 404.722 null ] >> endobj 3403 0 obj -<< /D [ 3393 0 R /XYZ 81.145 632.334 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 388.782 null ] >> endobj 3404 0 obj -<< /D [ 3393 0 R /XYZ 81.145 621.375 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 333.988 null ] >> endobj 3405 0 obj -<< /D [ 3393 0 R /XYZ 81.145 610.416 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 323.029 null ] >> endobj 3406 0 obj -<< /D [ 3393 0 R /XYZ 81.145 599.457 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 312.07 null ] >> endobj 3407 0 obj -<< /D [ 3393 0 R /XYZ 81.145 588.498 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 301.111 null ] >> endobj 3408 0 obj -<< /D [ 3393 0 R /XYZ 81.145 577.539 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 290.152 null ] >> endobj 3409 0 obj -<< /D [ 3393 0 R /XYZ 81.145 566.58 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 279.193 null ] >> endobj 3410 0 obj -<< /D [ 3393 0 R /XYZ 81.145 555.621 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 268.234 null ] >> endobj 3411 0 obj -<< /D [ 3393 0 R /XYZ 81.145 544.662 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 257.275 null ] >> endobj 3412 0 obj -<< /D [ 3393 0 R /XYZ 81.145 533.704 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 246.316 null ] >> endobj 3413 0 obj -<< /D [ 3393 0 R /XYZ 81.145 522.745 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 235.357 null ] >> endobj 3414 0 obj -<< /D [ 3393 0 R /XYZ 79.37 486.077 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 224.398 null ] >> endobj 3415 0 obj -<< /D [ 3393 0 R /XYZ 81.145 467.943 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 213.44 null ] >> endobj 3416 0 obj -<< /D [ 3393 0 R /XYZ 81.145 456.984 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 202.481 null ] >> endobj 3417 0 obj -<< /D [ 3393 0 R /XYZ 81.145 446.025 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 191.522 null ] >> endobj 3418 0 obj -<< /D [ 3393 0 R /XYZ 81.145 435.066 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 180.563 null ] >> endobj 3419 0 obj -<< /D [ 3393 0 R /XYZ 81.145 424.107 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 169.604 null ] >> endobj 3420 0 obj -<< /D [ 3393 0 R /XYZ 81.145 413.148 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 158.645 null ] >> endobj 3421 0 obj -<< /D [ 3393 0 R /XYZ 81.145 402.189 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 147.686 null ] >> endobj 3422 0 obj -<< /D [ 3393 0 R /XYZ 81.145 391.23 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 136.727 null ] >> endobj 3423 0 obj -<< /D [ 3393 0 R /XYZ 81.145 380.271 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 125.768 null ] >> endobj 3424 0 obj -<< /D [ 3393 0 R /XYZ 81.145 369.313 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 114.809 null ] >> endobj 3425 0 obj -<< /D [ 3393 0 R /XYZ 81.145 358.354 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 103.851 null ] >> endobj 3426 0 obj -<< /D [ 3393 0 R /XYZ 81.145 347.395 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 92.892 null ] >> endobj 3427 0 obj -<< /D [ 3393 0 R /XYZ 81.145 336.436 null ] >> -endobj -3428 0 obj -<< /D [ 3393 0 R /XYZ 81.145 325.477 null ] >> +<< /D [ 3380 0 R /XYZ 81.145 81.933 null ] >> endobj -3429 0 obj -<< /D [ 3393 0 R /XYZ 81.145 314.518 null ] >> +3379 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3430 0 obj -<< /D [ 3393 0 R /XYZ 81.145 303.559 null ] >> +<< /Filter /FlateDecode /Length 2215 >> +stream +xڵZ͎6SV+ +Tz'mWuqa'⇟/_NӚ_>L뼖h:E +xwM,Lxzb
a +1GGΗo1RtRӎ uT]Ny?ψŞEj`jM[J!*Rf&jtSE갍cQ3 qxkѦy5{H2>F8N>Z&Z="ɨ80(_@OG| +~[0iM{b)ʀ~.q·I,+3&Z0I5#uΤӗB~/_~ސ2 PL;Eϖ6DOG0mpg.E#aOnZA_ڡW$uQi֥cVUNLs#_VnDnr){
/=z_^=Yhf +=h;dǼ)`Jq'Ђ O)FYK6Oӡ[c2k kR\7zO+R4/!SJ3e$DɎs`H*uHr<y1i*ҌP*d +endstream +endobj +3429 0 obj +<< /Type /Page /Contents 3430 0 R /Resources 3428 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3029 0 R >> endobj 3431 0 obj -<< /D [ 3393 0 R /XYZ 81.145 292.6 null ] >> +<< /D [ 3429 0 R /XYZ 78.37 808.885 null ] >> endobj 3432 0 obj -<< /D [ 3393 0 R /XYZ 81.145 281.641 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 768.829 null ] >> endobj 3433 0 obj -<< /D [ 3393 0 R /XYZ 81.145 270.682 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 757.87 null ] >> endobj 3434 0 obj -<< /D [ 3393 0 R /XYZ 81.145 259.724 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 746.912 null ] >> endobj 3435 0 obj -<< /D [ 3393 0 R /XYZ 81.145 248.765 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 735.953 null ] >> endobj 3436 0 obj -<< /D [ 3393 0 R /XYZ 81.145 237.806 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 724.994 null ] >> endobj 3437 0 obj -<< /D [ 3393 0 R /XYZ 81.145 226.847 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 714.035 null ] >> endobj 3438 0 obj -<< /D [ 3393 0 R /XYZ 81.145 215.888 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 703.076 null ] >> endobj 3439 0 obj -<< /D [ 3393 0 R /XYZ 81.145 204.929 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 692.117 null ] >> endobj 3440 0 obj -<< /D [ 3393 0 R /XYZ 81.145 193.97 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 681.158 null ] >> endobj 3441 0 obj -<< /D [ 3393 0 R /XYZ 81.145 183.011 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 670.199 null ] >> endobj 3442 0 obj -<< /D [ 3393 0 R /XYZ 81.145 172.052 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 659.24 null ] >> endobj 3443 0 obj -<< /D [ 3393 0 R /XYZ 81.145 161.093 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 567.584 null ] >> endobj 3444 0 obj -<< /D [ 3393 0 R /XYZ 81.145 150.134 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 556.625 null ] >> endobj 3445 0 obj -<< /D [ 3393 0 R /XYZ 81.145 139.176 null ] >> +<< /D [ 3429 0 R /XYZ 79.37 496.047 null ] >> endobj 3446 0 obj -<< /D [ 3393 0 R /XYZ 81.145 128.217 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 477.913 null ] >> endobj 3447 0 obj -<< /D [ 3393 0 R /XYZ 81.145 117.258 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 466.954 null ] >> endobj 3448 0 obj -<< /D [ 3393 0 R /XYZ 81.145 106.299 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 455.995 null ] >> endobj 3449 0 obj -<< /D [ 3393 0 R /XYZ 81.145 95.34 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 445.036 null ] >> endobj 3450 0 obj -<< /D [ 3393 0 R /XYZ 81.145 84.381 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 434.077 null ] >> endobj -3392 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F59 346 0 R /F84 425 0 R /F15 334 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +3451 0 obj +<< /D [ 3429 0 R /XYZ 81.145 423.118 null ] >> endobj -3454 0 obj -<< /Filter /FlateDecode /Length 2169 >> -stream -xڵZn#7+IW`YV%m0K\aqiza~Ekmz8?<]?( -h2HL&r6lNh{f-܌aJN$n=RoP/Ĺf#qu'{EOk_W^z[$S2sluK^nߜh{Lܢ
`g||E=َ/:Dy!Y)^N;EGk杁ZblpYB03(#ͫ>:z#,M#UyXXcN3aɗe#!?d*OUz49 5bWsλt~jcuKDRdA/eRR-ֆ99{$GR3z%+(R^G$2|g
0!G7v<~֬icW4sƭ֙yH
<wyn
+c@XZɨmX-fQjFܫ[nj1m༤ws,+qͧU+NqY-Ώ$܆\LizqøXڏVΡd@N4ӺS9Kߤ]w{UbSu+ύ -l bSH<S[T#_ʝ4;HؔI}|VݭdʣKge~MG?do:C}NܫT[iW59:!.]p-jsE32</E3o~a|[K0 7)%oq,0f%Կ/Cbltg2՞3kkn}_*\;UQzeUv&<٪@UA]VH_I&Yߙ=
@0A -IP>}W1+MJ.\)>[^K%6^`ᖋ7*v@MF;_Ơ}+qMfEOͲRzNRbRLpf%a@ Ӻ^@2`҃S"cԯ,!" FʹR+^{S«Gop)Z1RZZit@)EaHL2܀C>^]J*̗N(q -5/FQmiuM
8<E5g/]XMSn -Sa -)iCn~+O_C,k~<|yƸ8GPpŌ<sيCX'ku7.\aLH(C.^;lX{ߖ TJ@z:ϝxPzEJ7rbI@Xن& -endstream +3452 0 obj +<< /D [ 3429 0 R /XYZ 81.145 412.159 null ] >> endobj 3453 0 obj -<< /Type /Page /Contents 3454 0 R /Resources 3452 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R /Annots 3507 0 R >> +<< /D [ 3429 0 R /XYZ 81.145 401.2 null ] >> endobj -3507 0 obj -[ 3451 0 R ] -endobj -3451 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 463.885 246.868 476.475 ]/A << /S /GoTo /D (Hfootnote.45) >> >> +3454 0 obj +<< /D [ 3429 0 R /XYZ 81.145 390.242 null ] >> endobj 3455 0 obj -<< /D [ 3453 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 379.283 null ] >> endobj 3456 0 obj -<< /D [ 3453 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 368.324 null ] >> endobj 3457 0 obj -<< /D [ 3453 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3429 0 R /XYZ 79.37 319.701 null ] >> endobj 3458 0 obj -<< /D [ 3453 0 R /XYZ 81.145 728.979 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 289.611 null ] >> endobj 3459 0 obj -<< /D [ 3453 0 R /XYZ 81.145 718.02 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 278.653 null ] >> endobj 3460 0 obj -<< /D [ 3453 0 R /XYZ 81.145 707.061 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 262.712 null ] >> endobj 3461 0 obj -<< /D [ 3453 0 R /XYZ 81.145 696.102 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 246.772 null ] >> endobj 3462 0 obj -<< /D [ 3453 0 R /XYZ 81.145 685.143 null ] >> +<< /D [ 3429 0 R /XYZ 79.37 208.112 null ] >> endobj 3463 0 obj -<< /D [ 3453 0 R /XYZ 81.145 674.184 null ] >> +<< /D [ 3429 0 R /XYZ 81.145 189.978 null ] >> endobj -3464 0 obj -<< /D [ 3453 0 R /XYZ 81.145 663.225 null ] >> +3428 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F83 438 0 R /F66 358 0 R /F75 360 0 R /F22 389 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3465 0 obj -<< /D [ 3453 0 R /XYZ 81.145 652.266 null ] >> +3467 0 obj +<< /Filter /FlateDecode /Length 2243 >> +stream +x[n7+, `F-nO K|H.kͱ0ҨUY)}㫔gHجg`7kFlo9G>+̹s/O:R;&S\mdı=b-bx[1MM&%c;* o4*yfb + +&(sBg î"O$ϵ:!ݬ)9Ztb,3T!&" |Bc*AAa-.NHcN1_dKCwC:5(Zd:Ecͻ =w-ZOHcW[mߒQ8&4Q}䝙!`+~ζ SzvG2tLֿox`>|VIY+1|pY(
Q,l_n=R{&Yx4ɝ i4,fnnv{_њ:zMqNsz7RXYǓqG,H}G`laܵ0(%bif.wQ 4up/<MON>֚={e/i<ϳl9k,YA(lnI>\\(iTym: LԄRûxg*,[Ju^ O[sXzl&춇ie*jhI¾vSvDgDNkNdDH@95(Rd<;ZRc
LC!t}hKXЁLhxRt0"5Y^ZWJgnh.j#eUkHMְzJaݴvvV[Bcdq )RH_ߖH |Jk|̐h=RDȊD~T'}#$:^BUH;M-Y∟:^3^#}k@UkZfjU:!)
tpG~#Wn; +endstream endobj 3466 0 obj -<< /D [ 3453 0 R /XYZ 81.145 641.308 null ] >> +<< /Type /Page /Contents 3467 0 R /Resources 3465 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R /Annots 3520 0 R >> endobj -3467 0 obj -<< /D [ 3453 0 R /XYZ 81.145 630.349 null ] >> +3520 0 obj +[ 3464 0 R ] +endobj +3464 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 220.422 246.868 232.942 ]/A << /S /GoTo /D (Hfootnote.44) >> >> endobj 3468 0 obj -<< /D [ 3453 0 R /XYZ 81.145 619.39 null ] >> +<< /D [ 3466 0 R /XYZ 78.37 808.885 null ] >> endobj 3469 0 obj -<< /D [ 3453 0 R /XYZ 81.145 608.431 null ] >> +<< /D [ 3466 0 R /XYZ 79.37 773.016 null ] >> endobj 3470 0 obj -<< /D [ 3453 0 R /XYZ 81.145 597.472 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 743.577 null ] >> endobj 3471 0 obj -<< /D [ 3453 0 R /XYZ 81.145 586.513 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 732.619 null ] >> endobj 3472 0 obj -<< /D [ 3453 0 R /XYZ 81.145 575.554 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 721.66 null ] >> endobj 3473 0 obj -<< /D [ 3453 0 R /XYZ 81.145 564.595 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 710.701 null ] >> endobj 3474 0 obj -<< /D [ 3453 0 R /XYZ 81.145 553.636 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 699.742 null ] >> endobj 3475 0 obj -<< /D [ 3453 0 R /XYZ 81.145 542.677 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 688.783 null ] >> endobj 3476 0 obj -<< /D [ 3453 0 R /XYZ 81.145 513.786 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 677.824 null ] >> endobj 3477 0 obj -<< /D [ 3453 0 R /XYZ 81.145 460.984 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 666.865 null ] >> endobj 3478 0 obj -<< /D [ 3453 0 R /XYZ 81.145 450.025 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 655.906 null ] >> endobj 3479 0 obj -<< /D [ 3453 0 R /XYZ 81.145 439.066 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 644.947 null ] >> endobj 3480 0 obj -<< /D [ 3453 0 R /XYZ 81.145 428.107 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 633.988 null ] >> endobj 3481 0 obj -<< /D [ 3453 0 R /XYZ 81.145 417.148 null ] >> +<< /D [ 3466 0 R /XYZ 79.37 601.137 null ] >> endobj 3482 0 obj -<< /D [ 3453 0 R /XYZ 81.145 406.189 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 583.653 null ] >> endobj 3483 0 obj -<< /D [ 3453 0 R /XYZ 81.145 395.23 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 572.694 null ] >> endobj 3484 0 obj -<< /D [ 3453 0 R /XYZ 81.145 384.271 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 561.736 null ] >> endobj 3485 0 obj -<< /D [ 3453 0 R /XYZ 81.145 373.313 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 534.146 null ] >> endobj 3486 0 obj -<< /D [ 3453 0 R /XYZ 81.145 362.354 null ] >> -endobj -289 0 obj -<< /D [ 3453 0 R /XYZ 79.37 339.886 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 523.187 null ] >> endobj 3487 0 obj -<< /D [ 3453 0 R /XYZ 81.145 319.044 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 512.228 null ] >> endobj 3488 0 obj -<< /D [ 3453 0 R /XYZ 81.145 308.085 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 501.269 null ] >> endobj 3489 0 obj -<< /D [ 3453 0 R /XYZ 81.145 297.126 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 490.31 null ] >> endobj 3490 0 obj -<< /D [ 3453 0 R /XYZ 81.145 286.167 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 479.351 null ] >> endobj 3491 0 obj -<< /D [ 3453 0 R /XYZ 81.145 275.208 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 468.392 null ] >> endobj 3492 0 obj -<< /D [ 3453 0 R /XYZ 81.145 264.249 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 457.434 null ] >> endobj 3493 0 obj -<< /D [ 3453 0 R /XYZ 81.145 253.29 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 446.475 null ] >> endobj 3494 0 obj -<< /D [ 3453 0 R /XYZ 81.145 242.331 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 435.516 null ] >> endobj 3495 0 obj -<< /D [ 3453 0 R /XYZ 81.145 231.372 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 424.557 null ] >> endobj 3496 0 obj -<< /D [ 3453 0 R /XYZ 81.145 220.413 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 413.598 null ] >> endobj 3497 0 obj -<< /D [ 3453 0 R /XYZ 81.145 209.455 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 402.639 null ] >> endobj 3498 0 obj -<< /D [ 3453 0 R /XYZ 81.145 198.496 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 391.68 null ] >> endobj 3499 0 obj -<< /D [ 3453 0 R /XYZ 81.145 187.537 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 380.721 null ] >> endobj 3500 0 obj -<< /D [ 3453 0 R /XYZ 81.145 176.578 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 369.762 null ] >> endobj 3501 0 obj -<< /D [ 3453 0 R /XYZ 81.145 165.619 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 358.803 null ] >> endobj 3502 0 obj -<< /D [ 3453 0 R /XYZ 81.145 154.66 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 347.844 null ] >> endobj 3503 0 obj -<< /D [ 3453 0 R /XYZ 81.145 143.701 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 336.886 null ] >> endobj 3504 0 obj -<< /D [ 3453 0 R /XYZ 81.145 132.742 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 325.927 null ] >> endobj 3505 0 obj -<< /D [ 3453 0 R /XYZ 81.145 121.783 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 314.968 null ] >> endobj 3506 0 obj -<< /D [ 3453 0 R /XYZ 93.716 90.677 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 304.009 null ] >> endobj -3452 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F16 336 0 R /F22 367 0 R /F71 347 0 R /F53 345 0 R /F73 350 0 R >> /ProcSet [ /PDF /Text ] >> +3507 0 obj +<< /D [ 3466 0 R /XYZ 81.145 267.068 null ] >> endobj -3510 0 obj -<< /Filter /FlateDecode /Length 2056 >> -stream -x[K6r -(a{~XMi:ܮ6aƫҲe[G]`lEfoִ0rBO0=Cxu˔-vќl݅Sicz9^Norqk,'i6(T0eR;CfQ":Ck CdZ}yq.gű1<yl2eO!O8Y2"&'IHc :p4̏#RGcX3Rڼ?ӎ6 -B0,g#RGk퓐#Z#tHi1XZi/ -շ,MHƃտn@cf hm>' 3Ԩx2f4KP#GޚѦ -$N@#\/Ru߹T˔orX!#\dE#ښHLK8l=9+Ψl"Xje;P#Y@z`o+Mv`cn3I!cI<?_TjZKv(ʲ3lۉ -h bܵ|8W%@gv{E4Wڝv xztؤ-'PU7!giZP)VOa{lJ@Wq9 -뛚VO((y:GӔQֺQڱ*O@M9hTK]Ag;r]=YL7 -9X>8E/QxE4 [# -endstream +3508 0 obj +<< /D [ 3466 0 R /XYZ 81.145 218.172 null ] >> endobj 3509 0 obj -<< /Type /Page /Contents 3510 0 R /Resources 3508 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3076 0 R >> +<< /D [ 3466 0 R /XYZ 81.145 207.213 null ] >> +endobj +3510 0 obj +<< /D [ 3466 0 R /XYZ 81.145 196.254 null ] >> endobj 3511 0 obj -<< /D [ 3509 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 185.295 null ] >> endobj 3512 0 obj -<< /D [ 3509 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 174.336 null ] >> endobj 3513 0 obj -<< /D [ 3509 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 163.377 null ] >> endobj 3514 0 obj -<< /D [ 3509 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 152.418 null ] >> endobj 3515 0 obj -<< /D [ 3509 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 141.459 null ] >> endobj 3516 0 obj -<< /D [ 3509 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 130.5 null ] >> endobj 3517 0 obj -<< /D [ 3509 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 3466 0 R /XYZ 81.145 119.542 null ] >> endobj 3518 0 obj -<< /D [ 3509 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 3466 0 R /XYZ 93.716 89.795 null ] >> endobj -3519 0 obj -<< /D [ 3509 0 R /XYZ 81.145 692.117 null ] >> -endobj -3520 0 obj -<< /D [ 3509 0 R /XYZ 81.145 681.158 null ] >> +3465 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F83 438 0 R /F59 368 0 R /F84 449 0 R /F63 356 0 R /F16 359 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3521 0 obj -<< /D [ 3509 0 R /XYZ 81.145 670.199 null ] >> +3523 0 obj +<< /Filter /FlateDecode /Length 2766 >> +stream +xڽ[ˎ#+W.R*dWuFYo +ʰQ#oI<v&\U9΄C[Wkrh$/uaSG!ckmcbFyRIEDn7tF'1!bvoj{&%T_DtW)YIx@
Adxr98gwyJhGtՂNcNC +/Rb-SbQb(Qo{uJac3ik}yf Қi.F^LH0vvH}$ϋĵ 5Mb҇g6mO:٥Ky$d=RjV<
I{DkFPx@Y͉*2rXGYm[Rd(\ԡDsjU ƉECrncGTLn{PpC_Kz;Iۘk5U;Z\Eƙjo̒鐮&4\IF]W +?&yXH*VD֒PʷWüf!J +H"fP.]+ƢB(vcK$!?ӄzPlD|Lɜ6#N&h-iuGcρ֟)M#9#5ddoA͠MB +x8ڦΕi4ц칪Zͭr9YswHEznk:DaMNe}NJ t @x\M3糌{ko_SCXl@K L0krIgߙ?zs+~ҋ,EuC Z=?}ǿA +yA)[2_W<vF}.k>-X5.n%3J
]ڛ-ҕ`qICG/`f\nKM$W#qr.G$h&_S۠'(+a\ٴ;s뜾
8#ehr"ND{ƙn|Q|cv}]@ݶH{j=?tou~=0=_*ٌVy3V\t<T͘H߿ayf7G5lMzj5!!(QhdTm)ѯ%ڽWMl#ȋ,~EZQiɿ'mZf^ijb6/b-<.nj}zm"3eOd=Iwp6h'8ӳv3gҚkk"%gC+:}Ɋ;^Io6וȌAC[Yԛ̷4bkV3ud_5x7?fdMa4LZ*j(QRt@M6!]XvH+5 +PpxPZ!hbX5ZuD_T!sCԇG_t
_;NpƽokT1{[_^8Բ]VNg +endstream endobj 3522 0 obj -<< /D [ 3509 0 R /XYZ 81.145 659.24 null ] >> -endobj -3523 0 obj -<< /D [ 3509 0 R /XYZ 81.145 648.281 null ] >> +<< /Type /Page /Contents 3523 0 R /Resources 3521 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3524 0 obj -<< /D [ 3509 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 3522 0 R /XYZ 78.37 808.885 null ] >> endobj 3525 0 obj -<< /D [ 3509 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 754.882 null ] >> +endobj +293 0 obj +<< /D [ 3522 0 R /XYZ 79.37 718.109 null ] >> endobj 3526 0 obj -<< /D [ 3509 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 681.684 null ] >> endobj 3527 0 obj -<< /D [ 3509 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 650.799 null ] >> endobj 3528 0 obj -<< /D [ 3509 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 639.841 null ] >> endobj 3529 0 obj -<< /D [ 3509 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 628.882 null ] >> endobj 3530 0 obj -<< /D [ 3509 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 617.923 null ] >> endobj 3531 0 obj -<< /D [ 3509 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 606.964 null ] >> endobj 3532 0 obj -<< /D [ 3509 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 596.005 null ] >> endobj 3533 0 obj -<< /D [ 3509 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 585.046 null ] >> endobj 3534 0 obj -<< /D [ 3509 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 574.087 null ] >> endobj 3535 0 obj -<< /D [ 3509 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 563.128 null ] >> endobj 3536 0 obj -<< /D [ 3509 0 R /XYZ 81.145 505.816 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 552.169 null ] >> endobj 3537 0 obj -<< /D [ 3509 0 R /XYZ 81.145 494.857 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 509.33 null ] >> endobj 3538 0 obj -<< /D [ 3509 0 R /XYZ 81.145 483.898 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 498.371 null ] >> endobj 3539 0 obj -<< /D [ 3509 0 R /XYZ 81.145 472.939 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 487.412 null ] >> endobj 3540 0 obj -<< /D [ 3509 0 R /XYZ 81.145 461.98 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 471.472 null ] >> endobj 3541 0 obj -<< /D [ 3509 0 R /XYZ 81.145 451.021 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 460.513 null ] >> endobj 3542 0 obj -<< /D [ 3509 0 R /XYZ 81.145 440.062 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 345.943 null ] >> endobj 3543 0 obj -<< /D [ 3509 0 R /XYZ 81.145 429.103 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 334.984 null ] >> endobj 3544 0 obj -<< /D [ 3509 0 R /XYZ 81.145 418.144 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 324.025 null ] >> endobj 3545 0 obj -<< /D [ 3509 0 R /XYZ 81.145 407.186 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 313.066 null ] >> endobj 3546 0 obj -<< /D [ 3509 0 R /XYZ 81.145 396.227 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 302.107 null ] >> endobj 3547 0 obj -<< /D [ 3509 0 R /XYZ 81.145 385.268 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 291.148 null ] >> endobj 3548 0 obj -<< /D [ 3509 0 R /XYZ 81.145 374.309 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 250.301 null ] >> endobj 3549 0 obj -<< /D [ 3509 0 R /XYZ 81.145 363.35 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 239.342 null ] >> endobj 3550 0 obj -<< /D [ 3509 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 228.384 null ] >> endobj 3551 0 obj -<< /D [ 3509 0 R /XYZ 81.145 341.432 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 217.425 null ] >> endobj 3552 0 obj -<< /D [ 3509 0 R /XYZ 81.145 330.473 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 206.466 null ] >> endobj 3553 0 obj -<< /D [ 3509 0 R /XYZ 81.145 319.514 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 195.507 null ] >> endobj 3554 0 obj -<< /D [ 3509 0 R /XYZ 81.145 308.555 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 184.548 null ] >> endobj 3555 0 obj -<< /D [ 3509 0 R /XYZ 81.145 297.596 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 173.589 null ] >> endobj 3556 0 obj -<< /D [ 3509 0 R /XYZ 81.145 286.638 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 162.63 null ] >> endobj 3557 0 obj -<< /D [ 3509 0 R /XYZ 81.145 275.679 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 151.671 null ] >> endobj 3558 0 obj -<< /D [ 3509 0 R /XYZ 81.145 264.72 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 135.731 null ] >> endobj 3559 0 obj -<< /D [ 3509 0 R /XYZ 81.145 253.761 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 124.772 null ] >> endobj 3560 0 obj -<< /D [ 3509 0 R /XYZ 81.145 242.802 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 113.813 null ] >> endobj 3561 0 obj -<< /D [ 3509 0 R /XYZ 81.145 231.843 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 102.854 null ] >> endobj 3562 0 obj -<< /D [ 3509 0 R /XYZ 81.145 220.884 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 91.895 null ] >> endobj 3563 0 obj -<< /D [ 3509 0 R /XYZ 81.145 209.925 null ] >> -endobj -3564 0 obj -<< /D [ 3509 0 R /XYZ 81.145 198.966 null ] >> +<< /D [ 3522 0 R /XYZ 81.145 80.936 null ] >> endobj -3565 0 obj -<< /D [ 3509 0 R /XYZ 81.145 188.007 null ] >> +3521 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3566 0 obj -<< /D [ 3509 0 R /XYZ 81.145 177.049 null ] >> +<< /Filter /FlateDecode /Length 2030 >> +stream +xZn8+a0-96i:,(Et'G2T_.@/@/-#T?*C)kh.0-l)p"#"!# c7>F^ +5A&ʂҕ爄4w%YLŕQ`d3ym/ܕ\7_tW4c:Ƹe0.&x/Jmc#$~vC&PРe~6x}3XX?y[&H$Jڋp +0Vn855Iy +:%Itֈ=)6 = +r4[mEq\YOΤ/\b-pE O/^kܜ}sBi1U+{fb&gCTȘ3`Sd.VOnG"/|t +]_Yu"l,8|hlM)"F$q:[AHqg/մ<՞m.b Xp'X9Κ|:fY.O9H]_4}? d_ǎ[&Kuz==m{$ԕmjIʽS6֙Sq^6,q/
J3C#϶-Ҩ=rX#a+oΊf4=_B_GzYoi
L璆$[4DGf4~r!ֵ8QP+37#NlygZ;6
;)
sH +endstream +endobj +3565 0 obj +<< /Type /Page /Contents 3566 0 R /Resources 3564 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3567 0 obj -<< /D [ 3509 0 R /XYZ 81.145 166.09 null ] >> +<< /D [ 3565 0 R /XYZ 78.37 808.885 null ] >> endobj 3568 0 obj -<< /D [ 3509 0 R /XYZ 81.145 155.131 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 742.926 null ] >> endobj 3569 0 obj -<< /D [ 3509 0 R /XYZ 81.145 144.172 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 731.968 null ] >> endobj 3570 0 obj -<< /D [ 3509 0 R /XYZ 81.145 133.213 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 721.009 null ] >> endobj 3571 0 obj -<< /D [ 3509 0 R /XYZ 81.145 122.254 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 710.05 null ] >> endobj 3572 0 obj -<< /D [ 3509 0 R /XYZ 81.145 111.295 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 699.091 null ] >> endobj 3573 0 obj -<< /D [ 3509 0 R /XYZ 81.145 100.336 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 670.199 null ] >> endobj 3574 0 obj -<< /D [ 3509 0 R /XYZ 81.145 89.377 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 659.24 null ] >> endobj -3508 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -3577 0 obj -<< /Filter /FlateDecode /Length 2474 >> -stream -xڽ[n8+&
x96i:,.URv
ul|Zh)ߓr|y5"xϋ:O<'gV>;*=H}I`ɋ`-NhFEÀ! .K
<~!sEw~3(Uxh]|wf1}!##ЕHYHDvc8&~/t-inĈI$_VI'ׂt^Pz{B9Hcj"sɂkti>ghe-?䥍0-ȵ@ly`lHY`m"sm~5q l0BKד=OY#GǸӄ./SgH:-t =<@gmZuE!~hkfN[vq]"(*Rٿ*s -AjG_'ZbvRU]luzy~S P
#]^;hi=!?sk( -#ګN!/2WJX`ۈC> -'C^DUg#\ -lsվ3-
AU6X쵾>IdNet2f}7jFF%E"bk~:V>eԟ3~ZnZq-&_ҨNc㶞j5 -5f+gՙG(zjL;l.UzNn]th٩Ն\Il*3q%Ӥl-D${?{jni@H:ՎڢD+'[rڬ4bN( hZ Y.+r i<3/l7;Ր@z4n[*>`<nL.U^ e,<ߣ60/6/@7>_LqrN/ϊ%a> 5M\T֩&eqŬ A89VjLVnLK >ѹ:wP6wZuAgOQg 0u~z^4eݍ@U&K|CENJ-L8Pzph[-EpsKhYrːMDy/%hIbRFUfA'd6Ze)LӄqRRuz%Czw=auBO -E!-
[r^'btj4V~76xךhM
9o3`zJy-cu,S!lWLFhpѝR5N7GqN=4.0=:Nt"QХhlNt?6)5E%emzZ>uiݯC9\kAQSQymXt"<0_(o*NISMy^3rce$걖x_&G~^%Q`·]JgYa.ŹmeJIq)5U[EyVGwY[pQ۳2/j7#o8ڷ^7xV@[t= -[i+.!O[v3{[)NvE4(`H)Z}.(k_<OPS!LQVEJos-,>\rޯ=WIzsU-C_4ytZ*.Q -endstream +3575 0 obj +<< /D [ 3565 0 R /XYZ 81.145 648.281 null ] >> endobj 3576 0 obj -<< /Type /Page /Contents 3577 0 R /Resources 3575 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3565 0 R /XYZ 81.145 637.322 null ] >> +endobj +3577 0 obj +<< /D [ 3565 0 R /XYZ 81.145 626.364 null ] >> endobj 3578 0 obj -<< /D [ 3576 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 615.405 null ] >> endobj 3579 0 obj -<< /D [ 3576 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 604.446 null ] >> endobj 3580 0 obj -<< /D [ 3576 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 593.487 null ] >> endobj 3581 0 obj -<< /D [ 3576 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 582.528 null ] >> endobj 3582 0 obj -<< /D [ 3576 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 571.569 null ] >> endobj 3583 0 obj -<< /D [ 3576 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 560.61 null ] >> endobj 3584 0 obj -<< /D [ 3576 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 549.651 null ] >> endobj 3585 0 obj -<< /D [ 3576 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 538.692 null ] >> endobj 3586 0 obj -<< /D [ 3576 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 527.733 null ] >> endobj 3587 0 obj -<< /D [ 3576 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 516.775 null ] >> endobj 3588 0 obj -<< /D [ 3576 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 505.816 null ] >> endobj 3589 0 obj -<< /D [ 3576 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 3565 0 R /XYZ 79.37 469.148 null ] >> endobj 3590 0 obj -<< /D [ 3576 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 451.014 null ] >> endobj 3591 0 obj -<< /D [ 3576 0 R /XYZ 81.145 560.664 null ] >> +<< /D [ 3565 0 R /XYZ 79.37 402.391 null ] >> endobj 3592 0 obj -<< /D [ 3576 0 R /XYZ 81.145 549.705 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 370.309 null ] >> endobj 3593 0 obj -<< /D [ 3576 0 R /XYZ 81.145 538.746 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 359.35 null ] >> endobj 3594 0 obj -<< /D [ 3576 0 R /XYZ 81.145 527.788 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 343.41 null ] >> endobj 3595 0 obj -<< /D [ 3576 0 R /XYZ 81.145 516.829 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 327.469 null ] >> endobj 3596 0 obj -<< /D [ 3576 0 R /XYZ 81.145 505.87 null ] >> +<< /D [ 3565 0 R /XYZ 79.37 288.809 null ] >> endobj 3597 0 obj -<< /D [ 3576 0 R /XYZ 81.145 494.911 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 258.72 null ] >> endobj 3598 0 obj -<< /D [ 3576 0 R /XYZ 81.145 483.952 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 247.761 null ] >> endobj 3599 0 obj -<< /D [ 3576 0 R /XYZ 81.145 472.993 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 236.802 null ] >> endobj 3600 0 obj -<< /D [ 3576 0 R /XYZ 81.145 462.034 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 225.843 null ] >> endobj 3601 0 obj -<< /D [ 3576 0 R /XYZ 81.145 451.075 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 214.884 null ] >> endobj 3602 0 obj -<< /D [ 3576 0 R /XYZ 81.145 440.116 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 203.925 null ] >> endobj 3603 0 obj -<< /D [ 3576 0 R /XYZ 81.145 429.157 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 192.966 null ] >> endobj 3604 0 obj -<< /D [ 3576 0 R /XYZ 81.145 418.198 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 182.007 null ] >> endobj 3605 0 obj -<< /D [ 3576 0 R /XYZ 81.145 407.24 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 171.049 null ] >> endobj 3606 0 obj -<< /D [ 3576 0 R /XYZ 81.145 396.281 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 160.09 null ] >> endobj 3607 0 obj -<< /D [ 3576 0 R /XYZ 81.145 334.647 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 149.131 null ] >> endobj 3608 0 obj -<< /D [ 3576 0 R /XYZ 81.145 323.688 null ] >> +<< /D [ 3565 0 R /XYZ 81.145 138.172 null ] >> endobj -3609 0 obj -<< /D [ 3576 0 R /XYZ 81.145 312.73 null ] >> -endobj -3610 0 obj -<< /D [ 3576 0 R /XYZ 81.145 301.771 null ] >> +3564 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F83 438 0 R /F63 356 0 R /F81 401 0 R /F59 368 0 R /F84 449 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3611 0 obj -<< /D [ 3576 0 R /XYZ 81.145 290.812 null ] >> +<< /Filter /FlateDecode /Length 1673 >> +stream +xZr6)%?3;dgzέk{_J%Rpܦ9xWO~>ޟ?{p
C~amH&;d{?h-!s9.w;.wB᥊w滌z]9d
BOCMNa'aGNy +C363t +PQCv6XM=ghE*kkV"_Z9yE*gtGɘEuZ%|Qr&ur5Ow|_NrS&:ܻFA,ʦRup&*ޚͬo +endstream +endobj +3610 0 obj +<< /Type /Page /Contents 3611 0 R /Resources 3609 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3612 0 obj -<< /D [ 3576 0 R /XYZ 81.145 279.853 null ] >> +<< /D [ 3610 0 R /XYZ 78.37 808.885 null ] >> endobj 3613 0 obj -<< /D [ 3576 0 R /XYZ 81.145 268.894 null ] >> +<< /D [ 3610 0 R /XYZ 79.37 773.016 null ] >> endobj 3614 0 obj -<< /D [ 3576 0 R /XYZ 81.145 257.935 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 754.909 null ] >> endobj 3615 0 obj -<< /D [ 3576 0 R /XYZ 81.145 246.976 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 743.95 null ] >> endobj 3616 0 obj -<< /D [ 3576 0 R /XYZ 81.145 236.017 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 732.991 null ] >> endobj 3617 0 obj -<< /D [ 3576 0 R /XYZ 81.145 210.141 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 717.105 null ] >> endobj 3618 0 obj -<< /D [ 3576 0 R /XYZ 81.145 199.183 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 706.146 null ] >> endobj 3619 0 obj -<< /D [ 3576 0 R /XYZ 81.145 188.224 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 695.187 null ] >> endobj 3620 0 obj -<< /D [ 3576 0 R /XYZ 81.145 177.265 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 684.228 null ] >> endobj 3621 0 obj -<< /D [ 3576 0 R /XYZ 81.145 166.306 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 673.269 null ] >> endobj 3622 0 obj -<< /D [ 3576 0 R /XYZ 81.145 155.347 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 662.31 null ] >> endobj 3623 0 obj -<< /D [ 3576 0 R /XYZ 81.145 144.388 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 651.351 null ] >> endobj 3624 0 obj -<< /D [ 3576 0 R /XYZ 81.145 133.429 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 640.392 null ] >> endobj 3625 0 obj -<< /D [ 3576 0 R /XYZ 81.145 122.47 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 629.433 null ] >> endobj 3626 0 obj -<< /D [ 3576 0 R /XYZ 81.145 111.511 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 618.475 null ] >> endobj 3627 0 obj -<< /D [ 3576 0 R /XYZ 81.145 100.552 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 607.516 null ] >> endobj 3628 0 obj -<< /D [ 3576 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 596.557 null ] >> endobj 3629 0 obj -<< /D [ 3576 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 585.598 null ] >> endobj -3575 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +3630 0 obj +<< /D [ 3610 0 R /XYZ 81.145 574.639 null ] >> endobj -3633 0 obj -<< /Filter /FlateDecode /Length 2430 >> -stream -x[ˎWXH=A3 -%a&?%`D9,Q*8RPFJE:ٸچmb,I1J-w,y -Oq,\Y(O< -QI$"q-F\jqғYsOxf/fGޠly^Sܵ%YMHG@E[V[A)qjJ=SF[DDkouVQECXO)JÚ'4bD{e]0W[o YSu~T+u,DOhBaf)\4#R־^៨(oT~io Խn1'uVz}7K7KzzKu:3A_v_~_m_yv+&q8N+XbMJ<y4u,4hn*4gBEНVA^r&HDٍ0̂ʜ?)SgJйFrlc^n$ֹgn|K3f&,UV&h?Hdw!P-40ChVgQ~<ĎuӲsZAS2#E4Enw4?-dn@wIAwxr]cPh]|#m,[V*!E m;YoD!~[P^Q6.kٖr[*EFF
jjsiG1Tll'=EPC#β̍*Cs]B(L1J*D:~d^UZ_\B{3BVjA -%#yۇ -g/GOȊ~>&@܇^Vr@h܇R}t=1#/<i>)}T8 -_Y --S>,zaP[gJ(4O/2k)ӓ -WG
Q -s]PCSe.rI8*e*ŮQrRTІMg(PM];jJ]m`P´D6j(CӞ2{lS4K¡Z:2Ǡwmh&i:Hܗʜ&&@9 A -jU^rqjdQ7^=gW4xE)ݺ)t{axPv\k{we4\>hKvg8wb,WgwR `'Kt t;qq(LgKh*/J5ee)9!5',Bʁ$d/x2Ӂ2LV O_8R: -j`gueml)D`YFсҧe0ϸ; -w[J}!QO/a B~}i98AxS'eč=cJ'1?29 -endstream +3631 0 obj +<< /D [ 3610 0 R /XYZ 81.145 563.68 null ] >> endobj 3632 0 obj -<< /Type /Page /Contents 3633 0 R /Resources 3631 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3610 0 R /XYZ 81.145 552.721 null ] >> +endobj +3633 0 obj +<< /D [ 3610 0 R /XYZ 81.145 541.762 null ] >> endobj 3634 0 obj -<< /D [ 3632 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 530.803 null ] >> endobj 3635 0 obj -<< /D [ 3632 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 519.844 null ] >> endobj 3636 0 obj -<< /D [ 3632 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 508.886 null ] >> endobj 3637 0 obj -<< /D [ 3632 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 497.927 null ] >> endobj 3638 0 obj -<< /D [ 3632 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 486.968 null ] >> endobj 3639 0 obj -<< /D [ 3632 0 R /XYZ 81.145 724.994 null ] >> -endobj -293 0 obj -<< /D [ 3632 0 R /XYZ 79.37 702.177 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 476.009 null ] >> endobj 3640 0 obj -<< /D [ 3632 0 R /XYZ 81.145 653.796 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 465.05 null ] >> endobj 3641 0 obj -<< /D [ 3632 0 R /XYZ 81.145 642.837 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 454.091 null ] >> endobj 3642 0 obj -<< /D [ 3632 0 R /XYZ 81.145 631.878 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 443.132 null ] >> endobj 3643 0 obj -<< /D [ 3632 0 R /XYZ 81.145 620.919 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 432.173 null ] >> endobj 3644 0 obj -<< /D [ 3632 0 R /XYZ 81.145 544.207 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 421.214 null ] >> endobj 3645 0 obj -<< /D [ 3632 0 R /XYZ 81.145 503.36 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 410.255 null ] >> endobj 3646 0 obj -<< /D [ 3632 0 R /XYZ 81.145 492.401 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 399.296 null ] >> endobj 3647 0 obj -<< /D [ 3632 0 R /XYZ 81.145 481.442 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 388.338 null ] >> endobj 3648 0 obj -<< /D [ 3632 0 R /XYZ 81.145 470.483 null ] >> -endobj -297 0 obj -<< /D [ 3632 0 R /XYZ 79.37 433.711 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 377.379 null ] >> endobj 3649 0 obj -<< /D [ 3632 0 R /XYZ 81.145 349.464 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 366.42 null ] >> endobj 3650 0 obj -<< /D [ 3632 0 R /XYZ 81.145 338.506 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 355.461 null ] >> endobj 3651 0 obj -<< /D [ 3632 0 R /XYZ 81.145 327.547 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 344.502 null ] >> endobj 3652 0 obj -<< /D [ 3632 0 R /XYZ 81.145 316.588 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 333.543 null ] >> endobj 3653 0 obj -<< /D [ 3632 0 R /XYZ 81.145 305.629 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 322.584 null ] >> endobj 3654 0 obj -<< /D [ 3632 0 R /XYZ 81.145 294.67 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 311.625 null ] >> endobj 3655 0 obj -<< /D [ 3632 0 R /XYZ 81.145 283.711 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 295.739 null ] >> endobj 3656 0 obj -<< /D [ 3632 0 R /XYZ 81.145 272.752 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 284.78 null ] >> endobj 3657 0 obj -<< /D [ 3632 0 R /XYZ 81.145 261.793 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 273.821 null ] >> endobj 3658 0 obj -<< /D [ 3632 0 R /XYZ 81.145 250.834 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 243.018 null ] >> endobj 3659 0 obj -<< /D [ 3632 0 R /XYZ 81.145 209.988 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 232.059 null ] >> endobj 3660 0 obj -<< /D [ 3632 0 R /XYZ 81.145 199.029 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 221.1 null ] >> endobj 3661 0 obj -<< /D [ 3632 0 R /XYZ 81.145 188.07 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 210.141 null ] >> endobj 3662 0 obj -<< /D [ 3632 0 R /XYZ 81.145 177.111 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 199.183 null ] >> endobj 3663 0 obj -<< /D [ 3632 0 R /XYZ 81.145 166.152 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 188.224 null ] >> endobj 3664 0 obj -<< /D [ 3632 0 R /XYZ 81.145 155.193 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 177.265 null ] >> endobj 3665 0 obj -<< /D [ 3632 0 R /XYZ 81.145 144.234 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 166.306 null ] >> endobj 3666 0 obj -<< /D [ 3632 0 R /XYZ 81.145 133.275 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 155.347 null ] >> endobj 3667 0 obj -<< /D [ 3632 0 R /XYZ 81.145 122.316 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 144.388 null ] >> endobj 3668 0 obj -<< /D [ 3632 0 R /XYZ 81.145 111.357 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 133.429 null ] >> endobj 3669 0 obj -<< /D [ 3632 0 R /XYZ 81.145 100.398 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 122.47 null ] >> endobj -3631 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F22 367 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -3672 0 obj -<< /Filter /FlateDecode /Length 2406 >> -stream -x[;#7WLS$zui*ec뼀|Iq?凫P'ǜ_zOdd`\履_8זsy~i8Ws+o9dl&!8W@C?W0UhÄjy|[;]ߞ]ڿYwjݲ~=W/q,5ׯ"L˞M( alOۙfqA?\xlz\cH|i,%aj?f,<23_:K0Li]ȀN:$xIO&E;|)N -w HQZQŷ/
1EC"-
c%pCL$|D4̉$Af`J4i$;Wž;drF`gNPɍobb/lT;yrQ2jjeZ!)Dƙ BB<i@28G_G+Ɠ%!h
#AׯlQ<Yk[%ϿX`> -JL[bh h?WiA(jp<NsL) -VǐB$EJ?# -vKV
'9qNtMwldDڍ& ,,8W4{OEe( 89 Ӈ8)@kiCG`H-qdجckYa
-ajM=y;P)Ef=I*Z\0 -AVh'*ݤnOi/57_ ;(W3f 5@q>o,w\ihdhO(Ow%-N+*ȧ
* -I᷒Ю͵y|6 l}Dݑi -Lj=Ӿn={닰$x[6u~A>u.G\[|?ũG{G.oa@ZS'ymЫs -X|k#R̀L{D>P)/ϡųv~ӏё;u.Rgju7%Ge*K79955)7kvL3i)N`vk'A=PF/'tj̖~ ~k|]nop4QmQ#(}BΜ"/B -endstream +3670 0 obj +<< /D [ 3610 0 R /XYZ 81.145 111.511 null ] >> endobj 3671 0 obj -<< /Type /Page /Contents 3672 0 R /Resources 3670 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3610 0 R /XYZ 81.145 100.552 null ] >> +endobj +3672 0 obj +<< /D [ 3610 0 R /XYZ 81.145 89.593 null ] >> endobj 3673 0 obj -<< /D [ 3671 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3610 0 R /XYZ 81.145 78.635 null ] >> endobj -3674 0 obj -<< /D [ 3671 0 R /XYZ 81.145 730.971 null ] >> +3609 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F59 368 0 R /F84 449 0 R /F15 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3675 0 obj -<< /D [ 3671 0 R /XYZ 81.145 720.012 null ] >> +3677 0 obj +<< /Filter /FlateDecode /Length 2293 >> +stream +xZKo6W* +t_*|E$+wf)uy@êN6Dj[|l!Ƈ;''P2iƄYG|YGapx_
F)9iL6'-WdjA+AłMk\o<
W27Zɒjh6Aŏyܬ]FVC<ۡ)SLoAxAb"(?xK=e#EV*vp<AtwHst #0! +Fa\Hԇ|7LҬ C/hVFXm{$D'ti=K0$ɔK)I4ң1Xm:D#hmo, <4!np +Fԫxk$9[tL(0<`d8cT'k{r<hd=測EiYk/Iަ$4I+v-SsCz̳O?8a=@Cbפs[mS]&*TiJSUMhsz +쒾9R12*9Sr +
cF~M脡CaBy@CXUm-F酻߮)PS!Hg.^[L`\CUn3}a5 +1ZpVJ^N0զg ▍]f< +D3h3P9bc)228T
OBS;n<r +˫q +XoxSru:(tTjjsȌh;[O&:Q~$\1G+_VWPױע<W=rj2/Y8nWӇzllP8T=tBk#J&+id
0ɇ1B*nB)5 +pCUkr}8"PFM)vH1@V+`xB(C\kS#!@ +&ɡ^F0>JR2CK=Y }ʺ80hNVReP`jtt/;S/@^*-e2w)qdIwٴٰʦ}Vvi0ix|`xѫlM\_&W!D"{'"AȔBץyc)n]LSD{!`UjCWu;Qb2H]$C6*88x +#i䔓*:tl他Ag9yl1ǟ>8O73woO:lDzX_Cqf8~ciԪB7
ЭVx:ikf]lS_l[>gn|ؼ1|Oz wv}/,ȶn +HRg+̯w<x 0Xk=G}1-u'ReJFۋO6_ڗ]8>@DN|cl_~=>ʜ8J(l>Buy]ASo}rlsN +%DK_t&<VmLVVJrh?Z, +endstream endobj 3676 0 obj -<< /D [ 3671 0 R /XYZ 81.145 709.053 null ] >> +<< /Type /Page /Contents 3677 0 R /Resources 3675 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R /Annots 3722 0 R >> endobj -3677 0 obj -<< /D [ 3671 0 R /XYZ 81.145 693.113 null ] >> +3722 0 obj +[ 3674 0 R ] +endobj +3674 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 236.441 678.082 246.868 690.672 ]/A << /S /GoTo /D (Hfootnote.45) >> >> endobj 3678 0 obj -<< /D [ 3671 0 R /XYZ 81.145 682.154 null ] >> +<< /D [ 3676 0 R /XYZ 78.37 808.885 null ] >> endobj 3679 0 obj -<< /D [ 3671 0 R /XYZ 81.145 671.195 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 768.829 null ] >> endobj 3680 0 obj -<< /D [ 3671 0 R /XYZ 81.145 660.237 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 727.983 null ] >> endobj 3681 0 obj -<< /D [ 3671 0 R /XYZ 81.145 649.278 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 675.181 null ] >> endobj 3682 0 obj -<< /D [ 3671 0 R /XYZ 81.145 638.319 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 664.222 null ] >> endobj 3683 0 obj -<< /D [ 3671 0 R /XYZ 81.145 627.36 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 653.263 null ] >> endobj 3684 0 obj -<< /D [ 3671 0 R /XYZ 81.145 616.401 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 642.304 null ] >> endobj 3685 0 obj -<< /D [ 3671 0 R /XYZ 81.145 561.606 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 631.345 null ] >> endobj 3686 0 obj -<< /D [ 3671 0 R /XYZ 81.145 550.648 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 620.386 null ] >> endobj 3687 0 obj -<< /D [ 3671 0 R /XYZ 81.145 539.689 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 609.427 null ] >> endobj 3688 0 obj -<< /D [ 3671 0 R /XYZ 81.145 528.73 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 598.468 null ] >> endobj 3689 0 obj -<< /D [ 3671 0 R /XYZ 81.145 517.771 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 587.509 null ] >> endobj 3690 0 obj -<< /D [ 3671 0 R /XYZ 81.145 506.812 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 576.55 null ] >> endobj 3691 0 obj -<< /D [ 3671 0 R /XYZ 81.145 495.853 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 535.704 null ] >> +endobj +297 0 obj +<< /D [ 3676 0 R /XYZ 79.37 513.93 null ] >> endobj 3692 0 obj -<< /D [ 3671 0 R /XYZ 81.145 484.894 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 477.45 null ] >> endobj 3693 0 obj -<< /D [ 3671 0 R /XYZ 81.145 473.935 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 461.509 null ] >> endobj 3694 0 obj -<< /D [ 3671 0 R /XYZ 81.145 462.976 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 450.55 null ] >> endobj 3695 0 obj -<< /D [ 3671 0 R /XYZ 81.145 452.017 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 439.591 null ] >> endobj 3696 0 obj -<< /D [ 3671 0 R /XYZ 81.145 441.058 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 428.633 null ] >> endobj 3697 0 obj -<< /D [ 3671 0 R /XYZ 81.145 430.1 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 417.674 null ] >> endobj 3698 0 obj -<< /D [ 3671 0 R /XYZ 81.145 419.141 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 406.715 null ] >> endobj 3699 0 obj -<< /D [ 3671 0 R /XYZ 81.145 408.182 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 395.756 null ] >> endobj 3700 0 obj -<< /D [ 3671 0 R /XYZ 81.145 397.223 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 384.797 null ] >> endobj 3701 0 obj -<< /D [ 3671 0 R /XYZ 81.145 356.376 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 373.838 null ] >> endobj 3702 0 obj -<< /D [ 3671 0 R /XYZ 81.145 345.417 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 362.879 null ] >> endobj 3703 0 obj -<< /D [ 3671 0 R /XYZ 81.145 334.458 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 351.92 null ] >> endobj 3704 0 obj -<< /D [ 3671 0 R /XYZ 81.145 305.567 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 340.961 null ] >> endobj 3705 0 obj -<< /D [ 3671 0 R /XYZ 81.145 294.608 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 330.002 null ] >> endobj 3706 0 obj -<< /D [ 3671 0 R /XYZ 81.145 283.649 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 319.044 null ] >> endobj 3707 0 obj -<< /D [ 3671 0 R /XYZ 81.145 272.69 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 308.085 null ] >> endobj 3708 0 obj -<< /D [ 3671 0 R /XYZ 81.145 261.731 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 297.126 null ] >> endobj 3709 0 obj -<< /D [ 3671 0 R /XYZ 81.145 250.772 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 286.167 null ] >> endobj 3710 0 obj -<< /D [ 3671 0 R /XYZ 81.145 239.813 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 231.372 null ] >> endobj 3711 0 obj -<< /D [ 3671 0 R /XYZ 81.145 228.854 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 220.413 null ] >> endobj 3712 0 obj -<< /D [ 3671 0 R /XYZ 81.145 217.895 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 209.455 null ] >> endobj 3713 0 obj -<< /D [ 3671 0 R /XYZ 81.145 206.936 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 198.496 null ] >> endobj 3714 0 obj -<< /D [ 3671 0 R /XYZ 81.145 154.134 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 187.537 null ] >> endobj 3715 0 obj -<< /D [ 3671 0 R /XYZ 81.145 143.176 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 176.578 null ] >> endobj 3716 0 obj -<< /D [ 3671 0 R /XYZ 81.145 132.217 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 165.619 null ] >> endobj 3717 0 obj -<< /D [ 3671 0 R /XYZ 81.145 116.276 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 154.66 null ] >> endobj 3718 0 obj -<< /D [ 3671 0 R /XYZ 81.145 105.318 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 143.701 null ] >> endobj 3719 0 obj -<< /D [ 3671 0 R /XYZ 81.145 94.359 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 132.742 null ] >> endobj 3720 0 obj -<< /D [ 3671 0 R /XYZ 81.145 83.4 null ] >> +<< /D [ 3676 0 R /XYZ 81.145 121.783 null ] >> endobj -3670 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F83 414 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F30 341 0 R >> /ProcSet [ /PDF /Text ] >> +3721 0 obj +<< /D [ 3676 0 R /XYZ 93.716 91.475 null ] >> endobj -3723 0 obj -<< /Filter /FlateDecode /Length 2452 >> +3675 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F16 359 0 R /F22 389 0 R /F81 401 0 R /F72 369 0 R /F53 367 0 R /F74 372 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +3725 0 obj +<< /Filter /FlateDecode /Length 1995 >> stream -x[9+7߯P
LƓNty_]i5@3R,ͯ?O}!1AOdd`\O97Ε
p˯҅O?I?Y -~ Omyfii>ݬ}^>|Yf M$CBk ,2L%z hJ -Z:،]8)v䏞ݻE -rO~Jʲ&vI -$Î mfBfEG(ycl{p0hF0cp͒JV&k3+̻mZ)]NO}8^!Ny5l9"mJwrq{2'*(fܧ@.}pWiBN[Ea2cRnGSVSa}$x[Y/}]Y<~b\̂<2ʾPND{#hﺮ5lTsY]YzfD>K}V:.7gu<$_Nvǔ^9JPQ^)7q}8kctW'䪑5Ylf( -9)DBFŅ -KU2n8(IWpi]?C.JI4 O:<w[omɃ1OM#8l&}.Sb^A$!UkmJLV43n#Q2=_zoB:iTsY7ΦhM0^*_n/_<T/_/G(a@wԹ}
jh'vhҎ
=!WSF)> )r@ -2Hӊd`R }Cj~Rpig(-ަ(-af쯥O#.h|MlQ0
"Ȝ(u^qAI\Kf);9i -Em"i uS@gJ=ikQJqIIy8)GJMxGz!|٥nD?}BpVrHK+!B\'JHxx/Pa_qmP[Bm/Hg;}Ƴ]`F#gδ_KJ?[J +xZ͎#'S@Hc;RsrMNykm!ZyӍ_3}^^oڝsVH8}"N'ɠ`ӟo҆kr6Wެ:Ym+aR<G4hTJ+P{ޡ'\;1Y %)]HG,^)xGvi(0@Kάq;$K19k2X/xiDreV% +]] +|Aj)ۡ!oR|O~cXyQZM0^ +Mk`^؛( nIn66}G +a:P endstream endobj -3722 0 obj -<< /Type /Page /Contents 3723 0 R /Resources 3721 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> -endobj 3724 0 obj -<< /D [ 3722 0 R /XYZ 78.37 808.885 null ] >> -endobj -3725 0 obj -<< /D [ 3722 0 R /XYZ 81.145 742.926 null ] >> +<< /Type /Page /Contents 3725 0 R /Resources 3723 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3726 0 obj -<< /D [ 3722 0 R /XYZ 81.145 731.968 null ] >> +<< /D [ 3724 0 R /XYZ 78.37 808.885 null ] >> endobj 3727 0 obj -<< /D [ 3722 0 R /XYZ 81.145 721.009 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 768.829 null ] >> endobj 3728 0 obj -<< /D [ 3722 0 R /XYZ 81.145 710.05 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 757.87 null ] >> endobj 3729 0 obj -<< /D [ 3722 0 R /XYZ 81.145 699.091 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 746.912 null ] >> endobj 3730 0 obj -<< /D [ 3722 0 R /XYZ 81.145 688.132 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 735.953 null ] >> endobj 3731 0 obj -<< /D [ 3722 0 R /XYZ 81.145 623.375 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 724.994 null ] >> endobj 3732 0 obj -<< /D [ 3722 0 R /XYZ 81.145 612.416 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 714.035 null ] >> endobj 3733 0 obj -<< /D [ 3722 0 R /XYZ 81.145 601.457 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 703.076 null ] >> endobj 3734 0 obj -<< /D [ 3722 0 R /XYZ 81.145 590.498 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 692.117 null ] >> endobj 3735 0 obj -<< /D [ 3722 0 R /XYZ 81.145 579.539 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 681.158 null ] >> endobj 3736 0 obj -<< /D [ 3722 0 R /XYZ 81.145 568.58 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 670.199 null ] >> endobj 3737 0 obj -<< /D [ 3722 0 R /XYZ 81.145 557.621 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 659.24 null ] >> endobj 3738 0 obj -<< /D [ 3722 0 R /XYZ 81.145 546.662 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 648.281 null ] >> endobj 3739 0 obj -<< /D [ 3722 0 R /XYZ 81.145 535.704 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 637.322 null ] >> endobj 3740 0 obj -<< /D [ 3722 0 R /XYZ 81.145 524.745 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 626.364 null ] >> endobj 3741 0 obj -<< /D [ 3722 0 R /XYZ 81.145 495.853 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 615.405 null ] >> endobj 3742 0 obj -<< /D [ 3722 0 R /XYZ 81.145 455.006 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 604.446 null ] >> endobj 3743 0 obj -<< /D [ 3722 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 593.487 null ] >> endobj 3744 0 obj -<< /D [ 3722 0 R /XYZ 81.145 415.156 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 582.528 null ] >> endobj 3745 0 obj -<< /D [ 3722 0 R /XYZ 81.145 404.197 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 542.417 null ] >> endobj 3746 0 obj -<< /D [ 3722 0 R /XYZ 81.145 363.35 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 531.458 null ] >> endobj 3747 0 obj -<< /D [ 3722 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 520.499 null ] >> endobj 3748 0 obj -<< /D [ 3722 0 R /XYZ 81.145 341.432 null ] >> -endobj -301 0 obj -<< /D [ 3722 0 R /XYZ 79.37 304.66 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 509.54 null ] >> endobj 3749 0 obj -<< /D [ 3722 0 R /XYZ 81.145 277.2 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 498.581 null ] >> endobj 3750 0 obj -<< /D [ 3722 0 R /XYZ 81.145 266.242 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 487.622 null ] >> endobj 3751 0 obj -<< /D [ 3722 0 R /XYZ 81.145 255.283 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 476.663 null ] >> endobj 3752 0 obj -<< /D [ 3722 0 R /XYZ 81.145 244.324 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 465.704 null ] >> endobj 3753 0 obj -<< /D [ 3722 0 R /XYZ 81.145 233.365 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 454.745 null ] >> endobj 3754 0 obj -<< /D [ 3722 0 R /XYZ 81.145 217.425 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 443.786 null ] >> endobj 3755 0 obj -<< /D [ 3722 0 R /XYZ 81.145 206.466 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 432.827 null ] >> endobj 3756 0 obj -<< /D [ 3722 0 R /XYZ 81.145 195.507 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 421.869 null ] >> endobj 3757 0 obj -<< /D [ 3722 0 R /XYZ 81.145 184.548 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 381.757 null ] >> +endobj +301 0 obj +<< /D [ 3724 0 R /XYZ 79.37 360.035 null ] >> endobj 3758 0 obj -<< /D [ 3722 0 R /XYZ 81.145 173.589 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 323.731 null ] >> endobj 3759 0 obj -<< /D [ 3722 0 R /XYZ 81.145 162.63 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 271.665 null ] >> endobj 3760 0 obj -<< /D [ 3722 0 R /XYZ 81.145 151.671 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 260.706 null ] >> endobj 3761 0 obj -<< /D [ 3722 0 R /XYZ 81.145 140.712 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 249.747 null ] >> endobj 3762 0 obj -<< /D [ 3722 0 R /XYZ 81.145 129.753 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 238.788 null ] >> endobj 3763 0 obj -<< /D [ 3722 0 R /XYZ 81.145 118.794 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 227.829 null ] >> endobj 3764 0 obj -<< /D [ 3722 0 R /XYZ 81.145 107.836 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 216.87 null ] >> endobj 3765 0 obj -<< /D [ 3722 0 R /XYZ 81.145 79.94 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 205.911 null ] >> endobj -3721 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F59 346 0 R /F84 425 0 R /F27 340 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -3768 0 obj -<< /Filter /FlateDecode /Length 2348 >> -stream -xI8EFpt}`3o -9EEQ{r.p//.9+.yh]ʹqyP_V^,sZnJ!I˹$ -kZ wݯv#:gE5:FHh2(pGq -O);3J̥[SʳG=o<V mAo[
z%ǧ{!k/M;AOFyfC\x[x8N¸Ow('LxPrz;$'g;:83BB#p^?ؤ~N9IzRHg4jgtY+P5;uM2. OxԄ!S1B{k$FHԠqr[_Xݷ{''4OZwd-9P xLʭAk|Ӵ*Ej!1EP^Dj%cԀ`rרm9֜ $FQw^͏ȵɗã- -)yFsP1CC6(+"a9`;$mqW0xB[Y@`&(]qUlH -w -i_BsH̿o1Aɕ,<hF -*Uw'A*"i&IB&usjv"׳gUZń9-9&HxO4"EI/͐I^6{JUm-MzIhL*vYkNXE:0m骟>}yFGܢ#$>e"g,?& }Oze}?݄c-mKX5kL?(N&9Aj. yfJw1Ae4iv9 籖KR-vN&H8AL[Eѵ82C"m۱>Ѷ;4UJk}mNIj/QL7ޫtoLE9I`4)59U].DGܥ!4> ܑk!ܱV:e Zh}_kC %z4L!RW3ϝmLo229CFHc,44?hchNbknM6JI@Zv ;goR)lqNk[LS,wXL[csPrbi꺳Lz$[VN-8bz"eGmW$45""BP"<;>tL G@MJr\@ -128"N}J39#:@ã:̀#ICiH.\ΉcA=}Fd }֬7<-HOAU'n}S, ; -/Lx^o٭hBӅ8ECfNX_[⨤ͯ+&*hAϰ4oJ2gd?G;BBz}.bXf'APjr⁛O<dr,%y -PRÕ5=O k>I*a{/fTk?!D,If&Ha;Mu>s:SKX-mź|D;5Ȝ -endstream +3766 0 obj +<< /D [ 3724 0 R /XYZ 81.145 194.952 null ] >> endobj 3767 0 obj -<< /Type /Page /Contents 3768 0 R /Resources 3766 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3724 0 R /XYZ 81.145 183.993 null ] >> +endobj +3768 0 obj +<< /D [ 3724 0 R /XYZ 81.145 173.035 null ] >> endobj 3769 0 obj -<< /D [ 3767 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 144.388 null ] >> endobj 3770 0 obj -<< /D [ 3767 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 133.429 null ] >> endobj 3771 0 obj -<< /D [ 3767 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 122.47 null ] >> endobj 3772 0 obj -<< /D [ 3767 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 111.511 null ] >> endobj 3773 0 obj -<< /D [ 3767 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 100.552 null ] >> endobj 3774 0 obj -<< /D [ 3767 0 R /XYZ 81.145 708.604 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 89.593 null ] >> endobj 3775 0 obj -<< /D [ 3767 0 R /XYZ 81.145 697.645 null ] >> -endobj -3776 0 obj -<< /D [ 3767 0 R /XYZ 81.145 686.686 null ] >> +<< /D [ 3724 0 R /XYZ 81.145 78.635 null ] >> endobj -3777 0 obj -<< /D [ 3767 0 R /XYZ 81.145 675.727 null ] >> +3723 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3778 0 obj -<< /D [ 3767 0 R /XYZ 81.145 664.768 null ] >> +<< /Filter /FlateDecode /Length 2180 >> +stream +xڽZn#+H=vvr vY>ER|RLwoiOĬĉ?q2+qwՕsDε\?߸sP?NY8k= 8(~DG^K~%ӫ
*pٿ{o^{'qH_Ue' 3խGte͢-KY袦`p"M$G{Lrh; A=/cصqMg
]%@N51kH2KĠӢ\1Pj'rMDpQ6e%CђlR!s>YW|G>>V3"Nk +Pk$lѿNT)L|8JHLڣ1I"iJ1><YN +K[Թ"`=w~Dp"*\kn!͟ܢm2)$g^I\R(E:q& +X#ƺ~NwH +̅1&,kבͫzS1425VM˄Hc_DuH<֚i2S=GQي.ʥ8 +LQtm>V?[ׄTOȬGKҺE*ZaO]3IߑOC䟏cTR$.
tyŚeu[Ḇ(KnK-freIN>d9ZO,q)Ne/)dB9L1t
ց7_y
F)H3Dw@Mi-kJ<pJ${]Zmk:T(th_Dζ Y0Nqب
pʠxϮp#oIgua3{4v0'b液%9ru*yoWr!mإA{&|MLdR`βscUZ6qp(ƍuYl[)5>
⽞dkA3jJjMQs9/f,,>,3$4i(c%KK2Qhmq͘*bc +djp@M5RfB_MbVb1a ro`h5 wRreB3&KF;<nectY1Feh~9i +wSGZnbiH`Ls{fivюmrs .gt[2M`-{)ygk64d&w`BkEKc曯 +逞
*0IiD^iRnD0rgG0>юbϬD]f,|)Ue2Yqh +=&':ga؆Ik0Cv3b@^"0O7KE]fA[ZkҚ-e\zJ)!OjʵǘpvȂ\Bfx^^bR]lb5˂6ҵfZ?:Bgt)iV/'Be"wo_kvS +T=}tjwfO@I?:mMV +3Ut&}NԴsֺ>OÂT8/:nd D'/Ll~t{i S[Gj̫6]O'9o_NMaБx&!գ֨}$a+儸@N:鞚$7[+463
zjnuA6V_Zi䁠#/zrD}[a۩3I=-jOe^'ff +endstream +endobj +3777 0 obj +<< /Type /Page /Contents 3778 0 R /Resources 3776 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3779 0 obj -<< /D [ 3767 0 R /XYZ 81.145 653.809 null ] >> +<< /D [ 3777 0 R /XYZ 78.37 808.885 null ] >> endobj 3780 0 obj -<< /D [ 3767 0 R /XYZ 81.145 642.85 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 768.829 null ] >> endobj 3781 0 obj -<< /D [ 3767 0 R /XYZ 81.145 631.891 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 757.87 null ] >> endobj 3782 0 obj -<< /D [ 3767 0 R /XYZ 81.145 620.932 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 746.912 null ] >> endobj 3783 0 obj -<< /D [ 3767 0 R /XYZ 81.145 569.673 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 735.953 null ] >> endobj 3784 0 obj -<< /D [ 3767 0 R /XYZ 81.145 558.714 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 724.994 null ] >> endobj 3785 0 obj -<< /D [ 3767 0 R /XYZ 81.145 547.755 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 714.035 null ] >> endobj 3786 0 obj -<< /D [ 3767 0 R /XYZ 81.145 536.796 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 703.076 null ] >> endobj 3787 0 obj -<< /D [ 3767 0 R /XYZ 81.145 525.837 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 692.117 null ] >> endobj 3788 0 obj -<< /D [ 3767 0 R /XYZ 81.145 514.878 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 681.158 null ] >> endobj 3789 0 obj -<< /D [ 3767 0 R /XYZ 81.145 503.92 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 670.199 null ] >> endobj 3790 0 obj -<< /D [ 3767 0 R /XYZ 81.145 492.961 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 659.24 null ] >> endobj 3791 0 obj -<< /D [ 3767 0 R /XYZ 81.145 482.002 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 618.393 null ] >> endobj 3792 0 obj -<< /D [ 3767 0 R /XYZ 81.145 471.043 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 607.435 null ] >> endobj 3793 0 obj -<< /D [ 3767 0 R /XYZ 81.145 460.084 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 596.476 null ] >> endobj 3794 0 obj -<< /D [ 3767 0 R /XYZ 81.145 449.125 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 585.517 null ] >> endobj 3795 0 obj -<< /D [ 3767 0 R /XYZ 81.145 438.166 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 574.558 null ] >> endobj 3796 0 obj -<< /D [ 3767 0 R /XYZ 81.145 427.207 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 563.599 null ] >> endobj 3797 0 obj -<< /D [ 3767 0 R /XYZ 81.145 416.248 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 552.64 null ] >> endobj 3798 0 obj -<< /D [ 3767 0 R /XYZ 81.145 405.289 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 541.681 null ] >> endobj 3799 0 obj -<< /D [ 3767 0 R /XYZ 81.145 394.331 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 530.722 null ] >> endobj 3800 0 obj -<< /D [ 3767 0 R /XYZ 81.145 383.372 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 519.763 null ] >> endobj 3801 0 obj -<< /D [ 3767 0 R /XYZ 81.145 372.413 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 508.804 null ] >> endobj 3802 0 obj -<< /D [ 3767 0 R /XYZ 81.145 361.454 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 497.846 null ] >> endobj 3803 0 obj -<< /D [ 3767 0 R /XYZ 81.145 350.495 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 456.999 null ] >> +endobj +305 0 obj +<< /D [ 3777 0 R /XYZ 79.37 420.227 null ] >> endobj 3804 0 obj -<< /D [ 3767 0 R /XYZ 81.145 339.536 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 328.01 null ] >> endobj 3805 0 obj -<< /D [ 3767 0 R /XYZ 81.145 328.577 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 297.126 null ] >> endobj 3806 0 obj -<< /D [ 3767 0 R /XYZ 81.145 317.618 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 286.167 null ] >> endobj 3807 0 obj -<< /D [ 3767 0 R /XYZ 81.145 306.659 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 275.208 null ] >> endobj 3808 0 obj -<< /D [ 3767 0 R /XYZ 81.145 295.7 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 264.249 null ] >> endobj 3809 0 obj -<< /D [ 3767 0 R /XYZ 81.145 284.741 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 253.29 null ] >> endobj 3810 0 obj -<< /D [ 3767 0 R /XYZ 81.145 273.783 null ] >> -endobj -305 0 obj -<< /D [ 3767 0 R /XYZ 79.37 251.421 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 242.331 null ] >> endobj 3811 0 obj -<< /D [ 3767 0 R /XYZ 81.145 229.939 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 231.372 null ] >> endobj 3812 0 obj -<< /D [ 3767 0 R /XYZ 81.145 218.98 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 220.413 null ] >> endobj 3813 0 obj -<< /D [ 3767 0 R /XYZ 81.145 191.631 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 209.455 null ] >> endobj 3814 0 obj -<< /D [ 3767 0 R /XYZ 81.145 180.672 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 198.496 null ] >> endobj 3815 0 obj -<< /D [ 3767 0 R /XYZ 81.145 117.458 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 187.537 null ] >> endobj 3816 0 obj -<< /D [ 3767 0 R /XYZ 81.145 106.499 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 176.578 null ] >> endobj 3817 0 obj -<< /D [ 3767 0 R /XYZ 81.145 95.54 null ] >> -endobj -3766 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F22 367 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 3777 0 R /XYZ 81.145 165.619 null ] >> endobj -3820 0 obj -<< /Filter /FlateDecode /Length 2916 >> -stream -x[n$+W -<CAHU=?yP͜D~֮ΤcBIgs4p]蛣@6c܌ -\~1^8I'.>w8r{
9벾I6OJK.yN^<v:
oN5|ŷŭʘ"WZҪ0ύF -r'$e;Y;$8t.ĩI.8~SsvL ;ҺZZ1
<2yfAM=9ڍQR^!?@⠍'dOfDk5S&_~]bJOR
\X l)rt\52iŻl]YmW(5QҦL g#V.ӫꁚJzY TsfSʲCMͪYܧ8bLH3ѻp}c^3c# 9 -x{Huqx'T@0i״|2Eq jǔ ѰHJOc<P -,C)Zp:.CmB]Ef\j
`>#`^#]2X:Xq#=WH$]p}'>U6; -¶w P/JD`Dmo,^8'F*c}x*Ct~rVp8}yf3QuDګL(=+[퓨2N~^á罆3Td>e'f|giATNb32c-Y\t-7>s̀ -:CuYaB-7\͜l<I&\6y^JF5RF@knz/hVٔodʨ @`%\<=(m5wGpjoM.X(<]k[3bZyD8I1>Dg'fPJ/Ư]eUZ]s]uQ㼦OVPU:ѬfRi*n|iQ3PS'XJ*{R*'ϵ?
tQ,;Zi
#|GA9QvDFUZ4Eueq0M8jPٟfϔMLäwZQܜnmc4^b4t4q/Iץ0vn -dFR5Qmv@WTuő;{'@tMپ<h&NZ8?DpEYW -I{_՛%.X*bFJN$R咩ǯ*g&˄b.Cf77r=D)fr\L=(XQ*y?')G75ͬrj˸saQJG[eړDͧ_N'$sZT35q'v5-:PN;zfN%nUBާ}ԫ9:A7y3eW]+(|`kyzSB$²T_m:'h1P&h!5XLzV^W.6=:y_uH+jSZC-BmVL+B#^hUhorg5,cbHJL/̾ -&:m4CV|i6"I^m_E(ԌF`rg_3P"Ŋ-/`bp'VWmEGf՝7P(;w7#L
ᬏ$%gFm$JrIc{IrRyguێo*DB}0v!:O$' -KMAU(`۸&Gt}uֻ7@PZkt\./#ܺ4."&ǵvAhqrƖB^.]rGm2=,k˼8P|c-GyD9z8w3yiNAJ; µaد -l^l(]K03_Lh]4,WP9OmVM{r2-؞ukikkB&ۛ Oy˴Zt_MgQ79N|hn26ooSf
ԯl;-Li{CΙyzrƍ>{Vx@7XFiɷ㻧}E7yEG+v,rמwX#W6wXu9-'XY0/堞Ѐ٦m{dv$>yuO黣SXwO88dZ/*HbYV3{Lhþ]d>_GjQuS:>~j -endstream +3818 0 obj +<< /D [ 3777 0 R /XYZ 81.145 154.66 null ] >> endobj 3819 0 obj -<< /Type /Page /Contents 3820 0 R /Resources 3818 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3777 0 R /XYZ 81.145 143.701 null ] >> +endobj +3820 0 obj +<< /D [ 3777 0 R /XYZ 81.145 132.742 null ] >> endobj 3821 0 obj -<< /D [ 3819 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 121.783 null ] >> endobj 3822 0 obj -<< /D [ 3819 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 110.824 null ] >> endobj 3823 0 obj -<< /D [ 3819 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 99.865 null ] >> endobj 3824 0 obj -<< /D [ 3819 0 R /XYZ 81.145 746.912 null ] >> -endobj -3825 0 obj -<< /D [ 3819 0 R /XYZ 81.145 667.21 null ] >> +<< /D [ 3777 0 R /XYZ 81.145 88.907 null ] >> endobj -3826 0 obj -<< /D [ 3819 0 R /XYZ 81.145 656.252 null ] >> +3776 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R /F66 358 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3827 0 obj -<< /D [ 3819 0 R /XYZ 81.145 642.304 null ] >> +<< /Filter /FlateDecode /Length 2586 >> +stream +x[ˎWh4/ulUJ|V3DջUl~ׅ_q]cNqh_9~py'"2\~_ʍ~FWΕ.m?]BW +lkZ&o@t<GLơZy8-C2 ?tpׁrڋt\
/ZCzAi'>[aCe9aBm"YVqԬѮ,]Lz6a30PC`W'$YMqUo
Wj{~ ?rBh%OFǸ56"EJZ%Zb5~cv;-Ce"LtSwM]c+PL8Eol$ixui܈bOpͺ
=bpYd=>̳HĐ8gGlV#O !jK6]g]Ei^>*5ɩ.XfOAI&^Dd_"fW +Ő8S[vDIϞ@ס_
+: +L{Xh"h$emh 3~SzRdp :G"қS +E+:xR`z3#HT=W`Er{E%cʹW۪JJRi+u檳R^`V=ұ+ҿ$g*T?=rɜ5/m=YG_D0 T7nzB4FW0#E+0[(/= Q%JݢܨE ͬuC 9 b+#Xީ)^V+_E\c"ƪJPq>[@b2b$2&I-srxNnR2.`'7lZdi(pp*DR>b +$$rCۘV<J UHGT'jy+h\wٱS0QF^^kpTcbڜ `@,Wwf9tHذd}C)ׁgJJ21 >L]F1\S%}}<kHm'VVG<mGq?;F=@7K|fYRB>[=DA
М}כ/Gl7ew^ dvCqEZj!՜٤i1aڸQW(c|xohMg0d9_SLʡ6U-Pkɖ.n6èAffDHCĵ!^w2 +9|20]$onj-%N^#'+yCSK3 gI 84ɥ b4LK{a0%);.j-BrѨt5V(Z; ̾ +C:OOly\[ G=Ԩ*CǞq/*frao^u_#؞b߳L0'ƽ?|:J #u0bCCz$$hD]d +3rk]|PCʐ:OA-ГSlz>k1[H35)sP/gF65VD&qnt[?8HuFUnv2ok#˞Ŷi{lŃ"Wyhq&ێN+}2g><'ϯ?- +endstream +endobj +3826 0 obj +<< /Type /Page /Contents 3827 0 R /Resources 3825 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3828 0 obj -<< /D [ 3819 0 R /XYZ 81.145 631.345 null ] >> +<< /D [ 3826 0 R /XYZ 78.37 808.885 null ] >> endobj 3829 0 obj -<< /D [ 3819 0 R /XYZ 81.145 603.45 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 695.616 null ] >> endobj 3830 0 obj -<< /D [ 3819 0 R /XYZ 81.145 565.591 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 684.657 null ] >> endobj 3831 0 obj -<< /D [ 3819 0 R /XYZ 81.145 554.633 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 673.698 null ] >> endobj 3832 0 obj -<< /D [ 3819 0 R /XYZ 81.145 543.674 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 662.739 null ] >> endobj 3833 0 obj -<< /D [ 3819 0 R /XYZ 81.145 481.905 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 651.78 null ] >> endobj 3834 0 obj -<< /D [ 3819 0 R /XYZ 81.145 470.946 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 640.821 null ] >> endobj 3835 0 obj -<< /D [ 3819 0 R /XYZ 81.145 459.987 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 629.863 null ] >> endobj 3836 0 obj -<< /D [ 3819 0 R /XYZ 81.145 449.029 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 618.904 null ] >> endobj 3837 0 obj -<< /D [ 3819 0 R /XYZ 81.145 438.07 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 607.945 null ] >> endobj 3838 0 obj -<< /D [ 3819 0 R /XYZ 81.145 388.256 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 596.986 null ] >> endobj 3839 0 obj -<< /D [ 3819 0 R /XYZ 81.145 377.298 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 586.027 null ] >> endobj 3840 0 obj -<< /D [ 3819 0 R /XYZ 81.145 366.339 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 575.068 null ] >> endobj 3841 0 obj -<< /D [ 3819 0 R /XYZ 81.145 355.38 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 564.109 null ] >> endobj 3842 0 obj -<< /D [ 3819 0 R /XYZ 81.145 344.421 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 553.15 null ] >> endobj 3843 0 obj -<< /D [ 3819 0 R /XYZ 81.145 333.462 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 542.191 null ] >> endobj 3844 0 obj -<< /D [ 3819 0 R /XYZ 81.145 322.503 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 531.232 null ] >> endobj 3845 0 obj -<< /D [ 3819 0 R /XYZ 81.145 254.757 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 469.536 null ] >> endobj 3846 0 obj -<< /D [ 3819 0 R /XYZ 81.145 243.798 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 458.577 null ] >> endobj 3847 0 obj -<< /D [ 3819 0 R /XYZ 81.145 232.839 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 447.618 null ] >> endobj 3848 0 obj -<< /D [ 3819 0 R /XYZ 81.145 218.892 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 436.659 null ] >> endobj 3849 0 obj -<< /D [ 3819 0 R /XYZ 81.145 207.933 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 396.833 null ] >> endobj 3850 0 obj -<< /D [ 3819 0 R /XYZ 81.145 196.974 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 385.874 null ] >> endobj 3851 0 obj -<< /D [ 3819 0 R /XYZ 81.145 186.015 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 374.915 null ] >> endobj 3852 0 obj -<< /D [ 3819 0 R /XYZ 81.145 175.056 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 363.956 null ] >> endobj 3853 0 obj -<< /D [ 3819 0 R /XYZ 81.145 164.097 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 352.997 null ] >> endobj 3854 0 obj -<< /D [ 3819 0 R /XYZ 81.145 148.157 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 342.038 null ] >> endobj 3855 0 obj -<< /D [ 3819 0 R /XYZ 81.145 137.198 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 331.079 null ] >> endobj 3856 0 obj -<< /D [ 3819 0 R /XYZ 81.145 126.239 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 303.208 null ] >> endobj 3857 0 obj -<< /D [ 3819 0 R /XYZ 81.145 115.28 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 292.249 null ] >> endobj 3858 0 obj -<< /D [ 3819 0 R /XYZ 81.145 104.321 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 281.29 null ] >> endobj 3859 0 obj -<< /D [ 3819 0 R /XYZ 81.145 93.362 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 270.331 null ] >> endobj 3860 0 obj -<< /D [ 3819 0 R /XYZ 81.145 82.403 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 259.372 null ] >> endobj -3818 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F83 414 0 R /F81 377 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -3863 0 obj -<< /Filter /FlateDecode /Length 2562 >> -stream -x[ˎ8WFWP( $
vά0XEv9}LIINۯr'd - d`\O~\_8ko<y_w'˜Ҷ8BrfKWJ+Q%xt+ _ιח6yYp\sx~Wc]ts{ӐTL -a+2ExGsA{"E|~>.`P]%.uDyg,;1Cy"L+5(+O/E{}TsQQ]_J -C9ǴǜJ40MF}Qiԥ\tw680GP>vvuߛ{V`.9h¹Rpٸw%?=mS -']y40Nw2zXVxVQ|l~&plzǧ~e-I9Tj1 mFd
p\MΦOfo&~Uúu-̒(T?(xg'&(, -O=R;&eoE%(JmzUy{H'yRY*bGK9=6M#afw'4?h
"Ǔ=Ga>P=?ZŖy9Q|,l֏$tW((E@#>-mER2'$RTLxD0 -ɞlG*ԣY||휢:\zHEoYc@dHoo^.-JzqI9kꑞgҾԬ0 =/<D8'Q<8ߙvmRs}T<iʾ3{r#<'mPe95z?WW#ce5Zj1djE8z8HF",I|ML4@&)ڋnúiT!6stY*k\A[mLZʄ%)IHs#=?p`5%L!WGA+i
ú?c"fC9VǪoBN3Ů`m*D/D -41sH/[,H,Ҽ,k#X(Z<(`K#alZB,X(q9Wf˅E@c/vO3]F3əh-y@ڮ;MjN~8sn\k@BjmKm}PȔG8<H}EZz]:71xfKLFmz9"y$-`fyFfs18>I.X8.z9.V[5&z*Wcz$r[*nWVryKVKߦyBSp?RtM -д=I
1%dl= M#X,JR<: =^W,Ӳlosuv=]Csm`Y{
눠%s@:8,G1R_6j-NՑ8sWs=җFt~LG=gcd`dԆds? ==#9wO8hrC֥:ג{&P?lӳ"wLwGH{<J@zZ%SvmlP;SĔ,!69;z9Î>w0jG/.;=sBCX`CkK4Nn;3\\̅~hͥT\
I.4gR d= LG9knicQTl9 p&lxo(3>Cbd9-HFЉI]~bщBK k3R3k=1c%#9-SMͶ SHb״Jxg\0rܬ,T\drTp^&ݣJw-v9߲2xgrL">խQ_B+V͕MJdcL;Z+cr*2YWGDr'Va -9㫩گeAxrU&עf\tW>Ƀi:5;H -cacQZg:E߾# -{ -endstream +3861 0 obj +<< /D [ 3826 0 R /XYZ 81.145 248.414 null ] >> endobj 3862 0 obj -<< /Type /Page /Contents 3863 0 R /Resources 3861 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3826 0 R /XYZ 81.145 237.455 null ] >> +endobj +3863 0 obj +<< /D [ 3826 0 R /XYZ 81.145 226.496 null ] >> endobj 3864 0 obj -<< /D [ 3862 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 215.537 null ] >> endobj 3865 0 obj -<< /D [ 3862 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 204.578 null ] >> endobj 3866 0 obj -<< /D [ 3862 0 R /XYZ 81.145 752.889 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 193.619 null ] >> endobj 3867 0 obj -<< /D [ 3862 0 R /XYZ 81.145 741.93 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 182.66 null ] >> endobj 3868 0 obj -<< /D [ 3862 0 R /XYZ 81.145 730.971 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 171.701 null ] >> endobj 3869 0 obj -<< /D [ 3862 0 R /XYZ 81.145 715.031 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 160.742 null ] >> endobj 3870 0 obj -<< /D [ 3862 0 R /XYZ 81.145 704.072 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 149.783 null ] >> endobj 3871 0 obj -<< /D [ 3862 0 R /XYZ 81.145 693.113 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 122.47 null ] >> endobj 3872 0 obj -<< /D [ 3862 0 R /XYZ 81.145 682.154 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 111.511 null ] >> endobj 3873 0 obj -<< /D [ 3862 0 R /XYZ 81.145 671.195 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 100.552 null ] >> endobj 3874 0 obj -<< /D [ 3862 0 R /XYZ 81.145 660.237 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 89.593 null ] >> endobj 3875 0 obj -<< /D [ 3862 0 R /XYZ 81.145 596.476 null ] >> -endobj -3876 0 obj -<< /D [ 3862 0 R /XYZ 81.145 585.517 null ] >> +<< /D [ 3826 0 R /XYZ 81.145 78.635 null ] >> endobj -3877 0 obj -<< /D [ 3862 0 R /XYZ 81.145 574.558 null ] >> +3825 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3878 0 obj -<< /D [ 3862 0 R /XYZ 81.145 563.599 null ] >> +<< /Filter /FlateDecode /Length 2490 >> +stream +x[ɒ9+IpPD*uĜ61מܒJ%eMTLFLӿOǷ7gހQ? |Od=d`܈N|\ܼoq.8ظ7m,!L0Fp[]LD
l3yOy.-^jfaR$*2Ѧ=
4,5:'\H'AYUzFw;̅&>zG +1to\-.}p[hA=fK}I,v]G<ntIĴ)r>kIMF$`ܨ(Pd{ +V2!FBu|ݜFc<?9u>"QYI5>RV!?*D!/r@˩e/G07%]xwdw&PV&X/nCZ|~nL
ۮ@ir\v8! Oy'$\0(JV\換S'ܵ-{B6XcRe_AlاQ(cB[^oV5s\Δ%!e nT0RJ!aA*T[},>O(>Ӿju2~+5,DXxŜRSK%KrY3$sNO^9! CFLs:+9=r:w69,O\v+W|W^c<4A#\/%qK;RU&In̕$^RuNECUleMVA^r0D]ʂhM`*T4(84lf~k5f&4Y*z-LhK)Ա7 9l>cCR9RW<-eN͔FY3ZIJdh14ES#IaF0UM_}Y@2FsiH5.kNJO) +y^Z5VRں}wFYYTM0@
Tu"8( Z@10=Qʪ5PCK92wjeeaRQ:Cc?x[ً +m-@˅ )6j ^_W*ެ=0 +hQطz[zo0K\pJ|F@鿞'<,3(' [Rf(e_+'KM%x_?G|L?'mɵ@h?{Aasr}4VI/|`&t,Ů, +ՆmDDTfKc}:\5Fuk3sAWN|HfЈn枀Ryf)B"RQT!8J,STp@)՚֫LeVM +_A@i2en}ywD@(8/"ܧnW>6zJ +endstream +endobj +3877 0 obj +<< /Type /Page /Contents 3878 0 R /Resources 3876 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj 3879 0 obj -<< /D [ 3862 0 R /XYZ 81.145 552.64 null ] >> +<< /D [ 3877 0 R /XYZ 78.37 808.885 null ] >> +endobj +309 0 obj +<< /D [ 3877 0 R /XYZ 79.37 771.024 null ] >> endobj 3880 0 obj -<< /D [ 3862 0 R /XYZ 81.145 541.681 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 724.53 null ] >> endobj 3881 0 obj -<< /D [ 3862 0 R /XYZ 81.145 530.722 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 713.572 null ] >> endobj 3882 0 obj -<< /D [ 3862 0 R /XYZ 81.145 519.763 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 702.613 null ] >> endobj 3883 0 obj -<< /D [ 3862 0 R /XYZ 81.145 508.804 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 691.654 null ] >> endobj 3884 0 obj -<< /D [ 3862 0 R /XYZ 81.145 497.846 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 614.941 null ] >> endobj 3885 0 obj -<< /D [ 3862 0 R /XYZ 81.145 486.887 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 574.095 null ] >> endobj 3886 0 obj -<< /D [ 3862 0 R /XYZ 81.145 475.928 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 563.136 null ] >> endobj 3887 0 obj -<< /D [ 3862 0 R /XYZ 81.145 464.969 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 552.177 null ] >> endobj 3888 0 obj -<< /D [ 3862 0 R /XYZ 81.145 454.01 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 511.33 null ] >> endobj 3889 0 obj -<< /D [ 3862 0 R /XYZ 81.145 443.051 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 500.371 null ] >> endobj 3890 0 obj -<< /D [ 3862 0 R /XYZ 81.145 432.092 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 489.412 null ] >> endobj 3891 0 obj -<< /D [ 3862 0 R /XYZ 81.145 421.133 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 478.453 null ] >> +endobj +313 0 obj +<< /D [ 3877 0 R /XYZ 79.37 441.681 null ] >> endobj 3892 0 obj -<< /D [ 3862 0 R /XYZ 81.145 410.174 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 357.435 null ] >> endobj 3893 0 obj -<< /D [ 3862 0 R /XYZ 81.145 384.271 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 346.476 null ] >> endobj 3894 0 obj -<< /D [ 3862 0 R /XYZ 81.145 373.313 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 335.517 null ] >> endobj 3895 0 obj -<< /D [ 3862 0 R /XYZ 81.145 362.354 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 324.558 null ] >> endobj 3896 0 obj -<< /D [ 3862 0 R /XYZ 81.145 351.395 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 313.599 null ] >> endobj 3897 0 obj -<< /D [ 3862 0 R /XYZ 81.145 340.436 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 302.64 null ] >> endobj 3898 0 obj -<< /D [ 3862 0 R /XYZ 81.145 329.477 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 291.681 null ] >> endobj 3899 0 obj -<< /D [ 3862 0 R /XYZ 81.145 318.518 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 280.722 null ] >> endobj 3900 0 obj -<< /D [ 3862 0 R /XYZ 81.145 307.559 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 269.763 null ] >> endobj 3901 0 obj -<< /D [ 3862 0 R /XYZ 81.145 293.611 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 258.804 null ] >> endobj 3902 0 obj -<< /D [ 3862 0 R /XYZ 81.145 282.653 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 217.958 null ] >> endobj 3903 0 obj -<< /D [ 3862 0 R /XYZ 81.145 271.694 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 206.999 null ] >> endobj 3904 0 obj -<< /D [ 3862 0 R /XYZ 81.145 260.735 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 196.04 null ] >> endobj 3905 0 obj -<< /D [ 3862 0 R /XYZ 81.145 249.776 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 185.081 null ] >> endobj 3906 0 obj -<< /D [ 3862 0 R /XYZ 81.145 238.817 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 174.122 null ] >> endobj 3907 0 obj -<< /D [ 3862 0 R /XYZ 81.145 227.858 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 163.163 null ] >> endobj 3908 0 obj -<< /D [ 3862 0 R /XYZ 81.145 216.899 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 152.204 null ] >> endobj 3909 0 obj -<< /D [ 3862 0 R /XYZ 81.145 205.94 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 141.245 null ] >> endobj 3910 0 obj -<< /D [ 3862 0 R /XYZ 81.145 194.981 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 130.286 null ] >> endobj 3911 0 obj -<< /D [ 3862 0 R /XYZ 81.145 179.041 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 119.327 null ] >> endobj 3912 0 obj -<< /D [ 3862 0 R /XYZ 81.145 168.082 null ] >> +<< /D [ 3877 0 R /XYZ 81.145 108.369 null ] >> endobj -3913 0 obj -<< /D [ 3862 0 R /XYZ 81.145 157.123 null ] >> -endobj -3914 0 obj -<< /D [ 3862 0 R /XYZ 81.145 105.318 null ] >> +3876 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F66 358 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3915 0 obj -<< /D [ 3862 0 R /XYZ 81.145 94.359 null ] >> +<< /Filter /FlateDecode /Length 2337 >> +stream +x[96߯2)":3ov.HT/C݇5^kvr)OD4O//?܄:94hyz$N14'Z?¹x4+P]7@q1_,fR0)a+I?W0Uh
<>ӣ[.}rT^_ı_09{1)P'؞03ķ?\x ӏ!<
kYweuqǾc1H +WؠHQZUŧQ1B"= c5LǕI`E+RJÜi0 +F sUw'x:ӈoԈ+^8AJJnT~~@T_/6#iG3O#/mgr# Od +VxI +'7 xK;QT<)W@)ss4F$2M35,ghބԵ\L3^fFRḥ\۞KDVUXR6ӢZJK,rY&'m~k\iӽKC3հyNwMuIn+;]QvVmiQhb"4V7d0"7 +y)Wnf#Z=|??'{Lj;ɾGȻ3+U);RM>/yi937\?'u{AfbCf.Pа!35-SNLIk5H5LTkjHv)ErekS-3f r/7Y(M:|:+e;~ +LRQ +~
-6mQZfۋO/Uc:4JDNb<Uǵ +.bhk#}Ǽ{^UA#i7u k_gPL{<^GT\23kFY=ˉ}wZ3ߎQϦZ_xʗ/mԂ#+mڸ#¦.R+{;W'. 5K[MP֢bv t48dsϑ.* +HcZμL+[zPVŬ5\Z=P2t,ҧLdK9& + +EHH6n_HeHzOǸ\ +endstream endobj -3916 0 obj -<< /D [ 3862 0 R /XYZ 81.145 83.4 null ] >> +3914 0 obj +<< /Type /Page /Contents 3915 0 R /Resources 3913 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3519 0 R >> endobj -3861 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F83 414 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> +3916 0 obj +<< /D [ 3914 0 R /XYZ 78.37 808.885 null ] >> endobj -3919 0 obj -<< /Filter /FlateDecode /Length 2993 >> -stream -x\n$
SF"
0 -OT~%g9hz LpQsmפ)Uiѳ[Խ
;٦WњIEp)>an}NnէqpNЉ>>3JXCzR%k˯{zﬡ]}>3U.[qvB3 -;mQ(BbQz"f<DvGFJOw[8d)='sY4t\s(\}VF!r&Y фR˵q^n9E{J0j8r4p'
5+"~R{?
?QZ*OF#D|QG`g::˳zJ{R@3v)_9d[Zcx=Cm .[:=< -jlZJK4$ -~&>^B ->F|멓ĩ̚zJ}Z]!̚fqpPd$#=n
K0!'OlRtD -<EMܒY|m#W%+?,́YwS""oAFz4bzg&+e'7aO03ݝkzJ]ȕLJ;,)|<*.|`)餞i&ep[8gVb| a>6Ǎv .Lۅ3(lHx@ʕ^{"M"/Y2L߯:g;1*bwYSD=xY^Y;,^Ǿ9q?SdAeNqdjPт)nuEqٸX,7|B
~Y Ns1<~+DU_$ëoĦ$@I`{gLwra80JTШmqҽL4)+z *oSbKB#)3Fޒ8F4'8ǹwX Lo}fi -2Ԭpaz[ JyRU<i|`432^pObf9R9(^,Jstnx(_xV́~`u鐛 -u|fz \^i\Qj-jq3_知)@iaܖH<b
Q
v+ªqAxmkqD<jF -jA
%;S -ȮL *,NX;O
464m8m8U,dG]
i4
ЁBI[\ -fBmUVwOힿ͡+Oi#t+,o/{|`#kO(uyJ]$
(Un -)%.7Bjl= -endstream +3917 0 obj +<< /D [ 3914 0 R /XYZ 81.145 730.971 null ] >> endobj 3918 0 obj -<< /Type /Page /Contents 3919 0 R /Resources 3917 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3914 0 R /XYZ 81.145 720.012 null ] >> +endobj +3919 0 obj +<< /D [ 3914 0 R /XYZ 81.145 709.053 null ] >> endobj 3920 0 obj -<< /D [ 3918 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 693.113 null ] >> endobj 3921 0 obj -<< /D [ 3918 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 682.154 null ] >> endobj 3922 0 obj -<< /D [ 3918 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 671.195 null ] >> endobj 3923 0 obj -<< /D [ 3918 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 660.237 null ] >> endobj 3924 0 obj -<< /D [ 3918 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 649.278 null ] >> endobj 3925 0 obj -<< /D [ 3918 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 638.319 null ] >> endobj 3926 0 obj -<< /D [ 3918 0 R /XYZ 81.145 699.091 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 627.36 null ] >> endobj 3927 0 obj -<< /D [ 3918 0 R /XYZ 81.145 688.132 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 616.401 null ] >> endobj 3928 0 obj -<< /D [ 3918 0 R /XYZ 81.145 677.173 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 605.442 null ] >> endobj 3929 0 obj -<< /D [ 3918 0 R /XYZ 81.145 666.214 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 550.648 null ] >> endobj 3930 0 obj -<< /D [ 3918 0 R /XYZ 81.145 655.255 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 539.689 null ] >> endobj 3931 0 obj -<< /D [ 3918 0 R /XYZ 81.145 644.296 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 528.73 null ] >> endobj 3932 0 obj -<< /D [ 3918 0 R /XYZ 81.145 633.337 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 517.771 null ] >> endobj 3933 0 obj -<< /D [ 3918 0 R /XYZ 81.145 622.379 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 506.812 null ] >> endobj 3934 0 obj -<< /D [ 3918 0 R /XYZ 81.145 611.42 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 495.853 null ] >> endobj 3935 0 obj -<< /D [ 3918 0 R /XYZ 81.145 600.461 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 484.894 null ] >> endobj 3936 0 obj -<< /D [ 3918 0 R /XYZ 81.145 574.558 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 473.935 null ] >> endobj 3937 0 obj -<< /D [ 3918 0 R /XYZ 81.145 563.599 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 462.976 null ] >> endobj 3938 0 obj -<< /D [ 3918 0 R /XYZ 81.145 552.64 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 452.017 null ] >> endobj 3939 0 obj -<< /D [ 3918 0 R /XYZ 81.145 541.681 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 441.058 null ] >> endobj 3940 0 obj -<< /D [ 3918 0 R /XYZ 81.145 530.722 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 430.1 null ] >> endobj 3941 0 obj -<< /D [ 3918 0 R /XYZ 81.145 519.763 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 419.141 null ] >> endobj 3942 0 obj -<< /D [ 3918 0 R /XYZ 81.145 508.804 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 408.182 null ] >> endobj 3943 0 obj -<< /D [ 3918 0 R /XYZ 81.145 494.857 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 397.223 null ] >> endobj 3944 0 obj -<< /D [ 3918 0 R /XYZ 81.145 483.898 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 386.264 null ] >> endobj 3945 0 obj -<< /D [ 3918 0 R /XYZ 81.145 472.939 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 375.305 null ] >> endobj 3946 0 obj -<< /D [ 3918 0 R /XYZ 81.145 461.98 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 334.458 null ] >> endobj 3947 0 obj -<< /D [ 3918 0 R /XYZ 81.145 451.021 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 323.499 null ] >> endobj 3948 0 obj -<< /D [ 3918 0 R /XYZ 81.145 440.062 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 312.54 null ] >> endobj 3949 0 obj -<< /D [ 3918 0 R /XYZ 81.145 429.103 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 283.649 null ] >> endobj 3950 0 obj -<< /D [ 3918 0 R /XYZ 81.145 413.163 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 272.69 null ] >> endobj 3951 0 obj -<< /D [ 3918 0 R /XYZ 81.145 402.204 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 261.731 null ] >> endobj 3952 0 obj -<< /D [ 3918 0 R /XYZ 81.145 391.245 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 250.772 null ] >> endobj 3953 0 obj -<< /D [ 3918 0 R /XYZ 81.145 380.286 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 239.813 null ] >> endobj 3954 0 obj -<< /D [ 3918 0 R /XYZ 81.145 369.327 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 228.854 null ] >> endobj 3955 0 obj -<< /D [ 3918 0 R /XYZ 81.145 317.522 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 217.895 null ] >> endobj 3956 0 obj -<< /D [ 3918 0 R /XYZ 81.145 306.563 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 206.936 null ] >> endobj 3957 0 obj -<< /D [ 3918 0 R /XYZ 81.145 295.604 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 195.978 null ] >> endobj 3958 0 obj -<< /D [ 3918 0 R /XYZ 81.145 284.645 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 131.22 null ] >> endobj 3959 0 obj -<< /D [ 3918 0 R /XYZ 81.145 273.686 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 120.261 null ] >> endobj 3960 0 obj -<< /D [ 3918 0 R /XYZ 81.145 262.727 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 109.303 null ] >> endobj 3961 0 obj -<< /D [ 3918 0 R /XYZ 81.145 251.768 null ] >> +<< /D [ 3914 0 R /XYZ 81.145 98.344 null ] >> endobj -3962 0 obj -<< /D [ 3918 0 R /XYZ 81.145 240.809 null ] >> -endobj -3963 0 obj -<< /D [ 3918 0 R /XYZ 81.145 112.291 null ] >> +3913 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F83 438 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F30 363 0 R >> /ProcSet [ /PDF /Text ] >> endobj 3964 0 obj -<< /D [ 3918 0 R /XYZ 81.145 101.332 null ] >> +<< /Filter /FlateDecode /Length 2548 >> +stream +x[n+7߯\0XWvf;YY-7e3Yju7ͪ"/]uqi?q1-ZןZ7Ε\9+OT;{y߽toWxo"`(i@~=ee2<L62 ?d^ +m䅢̖-"mY/=qk$HxdaU &M'~^תZ VAfHpg8K[0ȔXfr
8S =rɜ=!
*&-WThρMw+/SpPdh <w6C"^c4,<JzW6 pfBOt_e/l'^#rFmQ.K2_cq1mG-Ϯ2_D> +Ъ.hewNnse/@If94䛼m[Ɍ3J"
+J=&S䭽csNqRգ٭h|P$ĄfL2WR+=W>*)ť%G5A{iRSN049yef\9ы5 +,fSA<|y,ulFS0m|ۓ4)-ي6Yzxs̈́~cm~n #Y6?im+ˬpqFdx*>xTAs#
bl㥘 +jW˴ԞOHf۞a6T̓0#ˉkf"-ڵ}V5SodZQhXNƟ5zFqX~jmSfhg 1ϛTO<턴;nOHĹ$ +uO#Ht(fiwz/p_S#)G#v"c.LHO^g$h7WDW +endstream +endobj +3963 0 obj +<< /Type /Page /Contents 3964 0 R /Resources 3962 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 3965 0 obj -<< /D [ 3918 0 R /XYZ 81.145 90.374 null ] >> +<< /D [ 3963 0 R /XYZ 78.37 808.885 null ] >> endobj 3966 0 obj -<< /D [ 3918 0 R /XYZ 81.145 79.415 null ] >> -endobj -3917 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F81 377 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 3963 0 R /XYZ 81.145 742.926 null ] >> endobj -3969 0 obj -<< /Filter /FlateDecode /Length 2428 >> -stream -x[n#+!/ 0`ܵwA*
g&7[bY͙]?~>F \>&.LE+_74{0abU -M#@08(QO( 3<G z!/֭jE2-e^K8[;@)~Qs?oKQHE]Z >4{r J -xFюլCEs^֤R2by*: -6]k1qwu}ݚyOk"aG=ᇼW+IT9BxRJ|@EQ_p95ɵH}]<zIϋl)g'L#-*B0#vd-җ -CSh¦STM-o|Jc왤 L qIx-:o1gxImiVu6L6!̲ɏ>ՊwK%rE+Hz̓wHK)1G9@۽L+r(ý!JR" -3Փy801mDtx*x#MSٔfp햲[Jt˿C<T̀7V_E솵L.'HH\XRn*[!:U{۩U[ꬡZ]kYUikN]mw`^@8ximyJ&weیP$3\(yC=XFbޥKGܠ&7ǽ-ܴٸPwጘ>"\IB[tꑍ'/759ۂɢwـ9%xv-KGJ5yQ"")=='"-NDv$KLVwH_.[yKvFba!]^s-PkYJ*ҧ!QkC}$RFĤA{ͧ蕷Y-H8M)6]sdg [}MS"CZ*Pwx&DӨ1'iG5!S-l#\HOT/OwIwds*^-rim<쀴cGԹĖ*רkxq}ՎZΨ?&;{,-7pm=s'q,AO_ǻ -^m1L*5٬2KE:;C+FxkU+V͘9P7';dBHgDcԶGo*ҽ@ RXةSkp$=]骆#jZ6+e없KPZf,&4]Z[9W?Hٱ/WIeGYm5G"GY
#duyni9;dSBOP9m zJ-o/qa("Uqe!Ik6@ϩ&.pS#ј='&&f-{uH_ fnWwhv6s"aDs`t^{J{:2pj!zIlN%"}:?XÜhToNњԓۼ8:G3+@ݏkÉK䱕8]z^}0}-dcUIM$b4q=7q}+`ėw YtC8.OތxZ`k<}Ϣ>R&f@sO6!Ϗ$Ro_J10zj8a!%CC?D>j~;3/9cl| -endstream +3967 0 obj +<< /D [ 3963 0 R /XYZ 81.145 731.968 null ] >> endobj 3968 0 obj -<< /Type /Page /Contents 3969 0 R /Resources 3967 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 3963 0 R /XYZ 81.145 721.009 null ] >> +endobj +3969 0 obj +<< /D [ 3963 0 R /XYZ 81.145 705.068 null ] >> endobj 3970 0 obj -<< /D [ 3968 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 694.11 null ] >> endobj 3971 0 obj -<< /D [ 3968 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 651.27 null ] >> endobj 3972 0 obj -<< /D [ 3968 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 610.423 null ] >> endobj 3973 0 obj -<< /D [ 3968 0 R /XYZ 81.145 717.686 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 599.464 null ] >> endobj 3974 0 obj -<< /D [ 3968 0 R /XYZ 81.145 706.727 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 588.506 null ] >> endobj 3975 0 obj -<< /D [ 3968 0 R /XYZ 81.145 695.768 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 577.547 null ] >> endobj 3976 0 obj -<< /D [ 3968 0 R /XYZ 81.145 684.81 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 566.588 null ] >> endobj 3977 0 obj -<< /D [ 3968 0 R /XYZ 81.145 673.851 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 555.629 null ] >> endobj 3978 0 obj -<< /D [ 3968 0 R /XYZ 81.145 662.892 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 544.67 null ] >> endobj 3979 0 obj -<< /D [ 3968 0 R /XYZ 81.145 651.933 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 533.711 null ] >> endobj 3980 0 obj -<< /D [ 3968 0 R /XYZ 81.145 640.974 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 522.752 null ] >> endobj 3981 0 obj -<< /D [ 3968 0 R /XYZ 81.145 630.015 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 511.793 null ] >> endobj 3982 0 obj -<< /D [ 3968 0 R /XYZ 81.145 619.056 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 435.081 null ] >> endobj 3983 0 obj -<< /D [ 3968 0 R /XYZ 81.145 608.097 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 424.122 null ] >> endobj 3984 0 obj -<< /D [ 3968 0 R /XYZ 81.145 597.138 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 413.163 null ] >> endobj 3985 0 obj -<< /D [ 3968 0 R /XYZ 81.145 586.179 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 402.204 null ] >> endobj 3986 0 obj -<< /D [ 3968 0 R /XYZ 81.145 575.22 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 391.245 null ] >> endobj 3987 0 obj -<< /D [ 3968 0 R /XYZ 81.145 534.595 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 380.286 null ] >> endobj 3988 0 obj -<< /D [ 3968 0 R /XYZ 81.145 523.636 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 369.327 null ] >> endobj 3989 0 obj -<< /D [ 3968 0 R /XYZ 81.145 512.677 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 358.369 null ] >> endobj 3990 0 obj -<< /D [ 3968 0 R /XYZ 81.145 501.718 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 347.41 null ] >> endobj 3991 0 obj -<< /D [ 3968 0 R /XYZ 81.145 490.759 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 336.451 null ] >> endobj 3992 0 obj -<< /D [ 3968 0 R /XYZ 81.145 479.8 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 325.492 null ] >> endobj 3993 0 obj -<< /D [ 3968 0 R /XYZ 81.145 468.841 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 314.533 null ] >> endobj 3994 0 obj -<< /D [ 3968 0 R /XYZ 81.145 440.17 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 303.574 null ] >> endobj 3995 0 obj -<< /D [ 3968 0 R /XYZ 81.145 429.211 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 292.615 null ] >> endobj 3996 0 obj -<< /D [ 3968 0 R /XYZ 81.145 418.253 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 281.656 null ] >> endobj 3997 0 obj -<< /D [ 3968 0 R /XYZ 81.145 407.294 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 270.697 null ] >> endobj 3998 0 obj -<< /D [ 3968 0 R /XYZ 81.145 396.335 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 259.738 null ] >> endobj 3999 0 obj -<< /D [ 3968 0 R /XYZ 81.145 367.664 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 248.78 null ] >> endobj 4000 0 obj -<< /D [ 3968 0 R /XYZ 81.145 356.705 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 237.821 null ] >> endobj 4001 0 obj -<< /D [ 3968 0 R /XYZ 81.145 345.746 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 226.862 null ] >> endobj 4002 0 obj -<< /D [ 3968 0 R /XYZ 81.145 334.787 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 215.903 null ] >> endobj 4003 0 obj -<< /D [ 3968 0 R /XYZ 81.145 323.828 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 204.944 null ] >> endobj 4004 0 obj -<< /D [ 3968 0 R /XYZ 81.145 312.869 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 193.985 null ] >> endobj 4005 0 obj -<< /D [ 3968 0 R /XYZ 81.145 301.91 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 183.026 null ] >> endobj 4006 0 obj -<< /D [ 3968 0 R /XYZ 81.145 290.952 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 172.067 null ] >> endobj 4007 0 obj -<< /D [ 3968 0 R /XYZ 81.145 279.993 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 161.108 null ] >> endobj 4008 0 obj -<< /D [ 3968 0 R /XYZ 81.145 269.034 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 150.149 null ] >> endobj 4009 0 obj -<< /D [ 3968 0 R /XYZ 81.145 258.075 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 139.19 null ] >> endobj 4010 0 obj -<< /D [ 3968 0 R /XYZ 81.145 247.116 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 128.232 null ] >> endobj 4011 0 obj -<< /D [ 3968 0 R /XYZ 81.145 236.157 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 117.273 null ] >> endobj 4012 0 obj -<< /D [ 3968 0 R /XYZ 81.145 225.198 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 106.314 null ] >> endobj 4013 0 obj -<< /D [ 3968 0 R /XYZ 81.145 185.014 null ] >> +<< /D [ 3963 0 R /XYZ 81.145 95.355 null ] >> endobj -4014 0 obj -<< /D [ 3968 0 R /XYZ 81.145 174.055 null ] >> +3962 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4015 0 obj -<< /D [ 3968 0 R /XYZ 81.145 163.096 null ] >> +4017 0 obj +<< /Filter /FlateDecode /Length 2551 >> +stream +x[n#9+f\Ae[
ٷ\gN&ܒIo]=(b/cclLqN=q_7N9+Noy'hu\?qn +8udms`{ 4Ń\T0vyT,%i4ܥ;GHӜ݃ƿD#m/mp}L8:┧|9xͣPױ?+|Ni\imh$Fw(Nq&87%HH5VWiDDŽ +h쐊Pl\W5_ye:d7j=<3 .Eu+mn}͌2#1f)F +&29ѷ{tOa +A~݄:9314'm-3:f2*,L0h Ae!lx# +=n-1fhw +h[*&5Gj|*dS2ВX);,WrcV3&5)*;? }J7GUѭ$
:s'`ak|J2pGVN^fw).曉M)@O[pmMIjr,Sg5[fDY6JqيfJ>}ύצZOӛS))Uv_RG
7/)3C=8Է˼wNfrmWXot/z11LCk2Yɐ%bZ|sJu8fTRđ2%b:xҊ4 +Vs]ȥA*$sZf`R L(73Ŵyk=1TjDK"3zJ㱞 +;tӥb^<=RWC?m=wtW1@.o>Eaj1kyeh%E5AU6ۧ)[3W|&SA6mkoժ˸:w_7CT5uU4[ZKP;hiY8V1k}7So -\4nƦC$"&@-2jx*/`<tGL#NknS%xE̎%b(F +B3:j+Ǜ4w)۷ 4Dyl-ėz[t*}Te6z]42mҭK-Czn0'7M +endstream endobj 4016 0 obj -<< /D [ 3968 0 R /XYZ 81.145 152.137 null ] >> -endobj -4017 0 obj -<< /D [ 3968 0 R /XYZ 81.145 141.178 null ] >> +<< /Type /Page /Contents 4017 0 R /Resources 4015 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 4018 0 obj -<< /D [ 3968 0 R /XYZ 81.145 130.219 null ] >> +<< /D [ 4016 0 R /XYZ 78.37 808.885 null ] >> endobj 4019 0 obj -<< /D [ 3968 0 R /XYZ 81.145 89.593 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 768.829 null ] >> endobj 4020 0 obj -<< /D [ 3968 0 R /XYZ 81.145 78.635 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 757.87 null ] >> endobj -3967 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F81 377 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -4023 0 obj -<< /Filter /FlateDecode /Length 1999 >> -stream -x[n#7)e$`=VڞJ3#kvlD* -xN}99w蝊#X9AY{{7^)2>ۋJ`i!XkGEZ)<(o0Uʯ+$(קe;BMy^pB~-6^^ً<_EĻv+W|VJ~`ylEɪbldں7ޯ ɈZXHe5[G'^-&*б;r3_OQROL~tF:NZf5gt(MtZt_;@dI:mabu<#SNaAtpFj^ˏvw͜[,gQN\#k:z6 %91 Ih!kb:p-HڗT*%*ђ^:)&IaRz8 ֨Q8Fv~(@u%t%(YT3aLI.DHn=4k - 4zT*F*
(F*Ƀa -dഗK!kYn'2_dQҢH*h -P&-@gY%WN>{?Ȯ4xoD!@Ÿ+9(Q@$p#qte2(,JGc+FOKU
JB,b^0YH_* -bIҕ5HDށfL?H$5x09%{!
OBrJe__=EC{E!ƜiP(hCeUCZ$9
'L ` Q>FJ"I]-{0(/j0ŀ --g?AkvC3Y ;ηHqfƙ%_`&ŌIr4HBR<|P*MI٨H>:E)ɮ٭119atfL8ͣ}:) -m\Ml?n2[r2p'EZ%'%;i%k'U
X4l}c:j1&ٝ"iN(6H8eCľAȸTy'6vA{>G/%rRogA[pZF׳]j -aZjn"cڡ59cCGqV|YNYgicc<-U|*kvͷ4~7pB:B+f:5_ut>M|\6V}\Yi1.\-"q5ݖW%-.;y\)vCtcuD]K|b<gCjv"x=c`o-t:1ȧسQKdK iQ˹F;̰&oa+G -z\@Qyf\'>,w!Ǩ=ctvaPU?cpb{jPgYY֣Fo3{2c8et=Xh -aC"JѽU45D[gS,YrjCQ: -endstream +4021 0 obj +<< /D [ 4016 0 R /XYZ 81.145 746.912 null ] >> endobj 4022 0 obj -<< /Type /Page /Contents 4023 0 R /Resources 4021 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3630 0 R >> +<< /D [ 4016 0 R /XYZ 81.145 735.953 null ] >> +endobj +4023 0 obj +<< /D [ 4016 0 R /XYZ 81.145 724.994 null ] >> endobj 4024 0 obj -<< /D [ 4022 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 646.812 null ] >> endobj 4025 0 obj -<< /D [ 4022 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 635.853 null ] >> endobj 4026 0 obj -<< /D [ 4022 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 624.894 null ] >> endobj 4027 0 obj -<< /D [ 4022 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 560.585 null ] >> endobj 4028 0 obj -<< /D [ 4022 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 549.626 null ] >> endobj 4029 0 obj -<< /D [ 4022 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 538.667 null ] >> +endobj +317 0 obj +<< /D [ 4016 0 R /XYZ 79.37 502.333 null ] >> endobj 4030 0 obj -<< /D [ 4022 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 480.851 null ] >> endobj 4031 0 obj -<< /D [ 4022 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 469.892 null ] >> endobj 4032 0 obj -<< /D [ 4022 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 458.934 null ] >> endobj 4033 0 obj -<< /D [ 4022 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 447.975 null ] >> endobj 4034 0 obj -<< /D [ 4022 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 437.016 null ] >> endobj 4035 0 obj -<< /D [ 4022 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 426.057 null ] >> endobj 4036 0 obj -<< /D [ 4022 0 R /XYZ 81.145 648.281 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 415.098 null ] >> endobj 4037 0 obj -<< /D [ 4022 0 R /XYZ 81.145 637.322 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 404.139 null ] >> endobj 4038 0 obj -<< /D [ 4022 0 R /XYZ 81.145 626.364 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 393.18 null ] >> endobj 4039 0 obj -<< /D [ 4022 0 R /XYZ 81.145 615.405 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 382.221 null ] >> endobj 4040 0 obj -<< /D [ 4022 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 306.953 null ] >> endobj 4041 0 obj -<< /D [ 4022 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 295.995 null ] >> endobj 4042 0 obj -<< /D [ 4022 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 285.036 null ] >> endobj 4043 0 obj -<< /D [ 4022 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 274.077 null ] >> endobj 4044 0 obj -<< /D [ 4022 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 263.118 null ] >> endobj 4045 0 obj -<< /D [ 4022 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 252.159 null ] >> endobj 4046 0 obj -<< /D [ 4022 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 241.2 null ] >> endobj 4047 0 obj -<< /D [ 4022 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 230.241 null ] >> endobj 4048 0 obj -<< /D [ 4022 0 R /XYZ 81.145 516.775 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 219.282 null ] >> endobj 4049 0 obj -<< /D [ 4022 0 R /XYZ 81.145 505.816 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 208.323 null ] >> endobj 4050 0 obj -<< /D [ 4022 0 R /XYZ 81.145 494.857 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 197.364 null ] >> endobj 4051 0 obj -<< /D [ 4022 0 R /XYZ 81.145 483.898 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 186.405 null ] >> endobj 4052 0 obj -<< /D [ 4022 0 R /XYZ 81.145 472.939 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 160.876 null ] >> endobj 4053 0 obj -<< /D [ 4022 0 R /XYZ 81.145 461.98 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 149.917 null ] >> endobj 4054 0 obj -<< /D [ 4022 0 R /XYZ 81.145 451.021 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 138.958 null ] >> endobj 4055 0 obj -<< /D [ 4022 0 R /XYZ 81.145 440.062 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 127.999 null ] >> endobj 4056 0 obj -<< /D [ 4022 0 R /XYZ 81.145 429.103 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 117.041 null ] >> endobj 4057 0 obj -<< /D [ 4022 0 R /XYZ 81.145 418.144 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 106.082 null ] >> endobj 4058 0 obj -<< /D [ 4022 0 R /XYZ 81.145 407.186 null ] >> +<< /D [ 4016 0 R /XYZ 81.145 78.635 null ] >> endobj -4059 0 obj -<< /D [ 4022 0 R /XYZ 81.145 396.227 null ] >> -endobj -4060 0 obj -<< /D [ 4022 0 R /XYZ 81.145 385.268 null ] >> +4015 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F81 401 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4061 0 obj -<< /D [ 4022 0 R /XYZ 81.145 374.309 null ] >> +<< /Filter /FlateDecode /Length 2434 >> +stream +xIn#7W*a +DS74DZҟHIY@7ע+m
vm`g&{5$nu
vH9^ϙyyu
#qq3Au9`A!y;`%7Nο]Igl!&J[W0!@B¢hPvF
~կ?4Rpf@oV*@
g-&@O:{2L f -iQzh_9rr%{7K!:Jg +qq#=(SMB\X!oBq\R3xnQz&cuU<Kud!K,f!&[.[ +}=on)H:!mAKy5$HU)fQPN6%Hӂ<~M[R dI-9k~E;P!2'-Lx*H={}%Vǚ+]4
=ϗNI`;UlX焟H"4pRq8LXd T:θYxYZ +ɾ鐮*5/($sCQs^N#P7#`wTscRFB2 +h&ʸ2 R%
n5 +/q/iG< +{ +J;\J<ՀQשdxjʿ'%
=$sP5fpѧ''ر͗o7O7 +endstream +endobj +4060 0 obj +<< /Type /Page /Contents 4061 0 R /Resources 4059 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 4062 0 obj -<< /D [ 4022 0 R /XYZ 81.145 363.35 null ] >> +<< /D [ 4060 0 R /XYZ 78.37 808.885 null ] >> endobj 4063 0 obj -<< /D [ 4022 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 768.829 null ] >> endobj 4064 0 obj -<< /D [ 4022 0 R /XYZ 81.145 341.432 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 757.87 null ] >> endobj 4065 0 obj -<< /D [ 4022 0 R /XYZ 81.145 330.473 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 746.912 null ] >> endobj 4066 0 obj -<< /D [ 4022 0 R /XYZ 81.145 319.514 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 735.953 null ] >> endobj 4067 0 obj -<< /D [ 4022 0 R /XYZ 81.145 308.555 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 724.994 null ] >> endobj 4068 0 obj -<< /D [ 4022 0 R /XYZ 81.145 297.596 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 714.035 null ] >> endobj 4069 0 obj -<< /D [ 4022 0 R /XYZ 81.145 286.638 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 703.076 null ] >> endobj 4070 0 obj -<< /D [ 4022 0 R /XYZ 81.145 257.746 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 692.117 null ] >> endobj 4071 0 obj -<< /D [ 4022 0 R /XYZ 81.145 246.787 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 681.158 null ] >> endobj 4072 0 obj -<< /D [ 4022 0 R /XYZ 81.145 235.828 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 629.352 null ] >> endobj 4073 0 obj -<< /D [ 4022 0 R /XYZ 81.145 224.869 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 618.393 null ] >> endobj 4074 0 obj -<< /D [ 4022 0 R /XYZ 81.145 213.91 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 607.435 null ] >> endobj 4075 0 obj -<< /D [ 4022 0 R /XYZ 81.145 202.951 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 596.476 null ] >> endobj 4076 0 obj -<< /D [ 4022 0 R /XYZ 81.145 191.992 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 585.517 null ] >> endobj 4077 0 obj -<< /D [ 4022 0 R /XYZ 81.145 181.034 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 574.558 null ] >> endobj 4078 0 obj -<< /D [ 4022 0 R /XYZ 81.145 170.075 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 563.599 null ] >> endobj 4079 0 obj -<< /D [ 4022 0 R /XYZ 81.145 159.116 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 552.64 null ] >> endobj 4080 0 obj -<< /D [ 4022 0 R /XYZ 81.145 148.157 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 541.681 null ] >> endobj 4081 0 obj -<< /D [ 4022 0 R /XYZ 81.145 137.198 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 530.722 null ] >> endobj 4082 0 obj -<< /D [ 4022 0 R /XYZ 81.145 126.239 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 519.763 null ] >> endobj 4083 0 obj -<< /D [ 4022 0 R /XYZ 81.145 115.28 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 508.804 null ] >> endobj 4084 0 obj -<< /D [ 4022 0 R /XYZ 81.145 104.321 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 497.846 null ] >> endobj 4085 0 obj -<< /D [ 4022 0 R /XYZ 81.145 93.362 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 486.887 null ] >> endobj 4086 0 obj -<< /D [ 4022 0 R /XYZ 81.145 82.403 null ] >> -endobj -4021 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 4060 0 R /XYZ 81.145 475.928 null ] >> endobj -4089 0 obj -<< /Filter /FlateDecode /Length 2095 >> -stream -xZˎWH@v`ֽvv[EEwNtꐔCIRN2Մ+?/$u >9_Rw)
o"XyEZ &~3~Y)1~%o3|֯ca82}oOm>8W}|gP(!|7#uAĴaΓ/w{$i4Rm35.0r61ڵBA;`r"%+rP,F3NQoTsnW빴 i$vq4i6x6sV!{TG;Ko|e9NGUi
Ft-,[Y@ًg6"!P]#41O֡@\T-2Qcb }%/F 퀴W0#=b[[)$H)g,y8 -7\c!cquԁ¾Zie&ud'52'Ww
a2H}\|AY {~\THw#e̕ }TT3o,h_F% VXX`%Ro\'H*8-9EW@Og:cQxHB"=ȀT?q =H+=>Yڣ4SY0#ݮhJY;H0id˹̨#sQ%Q}1#EtZ>9CBH!"}kZ -?1?.Gǭ΅{t3US*otA;iOD$g\a=1ICoh3BKmSfՐ9ئ52ֈû5RxVqDՅ}TmĴ)ց -T3~6tx[pf;\x߮dyFqujr:1}3R}Rp/Uc'ޑ54/ZwuLk
G
<Ԍ5=Y稚H
gXӵSo>gz[~5 .](¨ݛ(,UjD9d2"g-·1-7;8[A{aKeK!-0WZan>*jD1F%qZɿYQOzQm76)+N*#DGOU,һ*ޫK/ՆwF
k(]a2[wq2ظ lZKh#k،4ވz9*iKB - nIȂ4K={Xq_zf܍<Ttܬ.5`Ys*HY y}٣ʟ-Ot~r+1&GYz&htFnYV=A{j4L|(4q3Mdp% H4<3yR+q~*S@c2֟*5R;)~/ -endstream +4087 0 obj +<< /D [ 4060 0 R /XYZ 81.145 464.969 null ] >> endobj 4088 0 obj -<< /Type /Page /Contents 4089 0 R /Resources 4087 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R >> +<< /D [ 4060 0 R /XYZ 81.145 454.01 null ] >> +endobj +4089 0 obj +<< /D [ 4060 0 R /XYZ 81.145 443.051 null ] >> endobj 4090 0 obj -<< /D [ 4088 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 432.092 null ] >> endobj 4091 0 obj -<< /D [ 4088 0 R /XYZ 81.145 768.829 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 421.133 null ] >> endobj 4092 0 obj -<< /D [ 4088 0 R /XYZ 81.145 757.87 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 410.174 null ] >> endobj 4093 0 obj -<< /D [ 4088 0 R /XYZ 81.145 746.912 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 399.215 null ] >> endobj 4094 0 obj -<< /D [ 4088 0 R /XYZ 81.145 735.953 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 388.256 null ] >> endobj 4095 0 obj -<< /D [ 4088 0 R /XYZ 81.145 724.994 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 377.298 null ] >> endobj 4096 0 obj -<< /D [ 4088 0 R /XYZ 81.145 714.035 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 366.339 null ] >> endobj 4097 0 obj -<< /D [ 4088 0 R /XYZ 81.145 703.076 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 355.38 null ] >> endobj 4098 0 obj -<< /D [ 4088 0 R /XYZ 81.145 692.117 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 344.421 null ] >> endobj 4099 0 obj -<< /D [ 4088 0 R /XYZ 81.145 681.158 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 333.462 null ] >> endobj 4100 0 obj -<< /D [ 4088 0 R /XYZ 81.145 670.199 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 322.503 null ] >> endobj 4101 0 obj -<< /D [ 4088 0 R /XYZ 81.145 659.24 null ] >> +<< /D [ 4060 0 R /XYZ 81.145 311.544 null ] >> endobj -4102 0 obj -<< /D [ 4088 0 R /XYZ 81.145 648.281 null ] >> +321 0 obj +<< /D [ 4060 0 R /XYZ 79.37 288.727 null ] >> endobj -4103 0 obj -<< /D [ 4088 0 R /XYZ 81.145 637.322 null ] >> +4102 0 obj +<< /D [ 4060 0 R /XYZ 81.145 82.936 null ] >> endobj -4104 0 obj -<< /D [ 4088 0 R /XYZ 81.145 626.364 null ] >> +4059 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4105 0 obj -<< /D [ 4088 0 R /XYZ 81.145 615.405 null ] >> +<< /Filter /FlateDecode /Length 2285 >> +stream +x[Ko#7WVH= @[k{VH#O-H&%I~<?_>~R<Bۓ5JHN~}8)5|F`x>4Hos}ZV3
ʹy/`-x?|_FP !UJLXJW,4Vm8
km{VљK+|dcmK녙w KeN_FJ_74}x/ +?̣<z0AQhZ[^)- +tvJ-G̟[_cmZf)QғIip)r@zXƗ%z3WP^S +$, +r:fGy's)@3Qϣ?XsCpwuC +?Z5ae#*L:XǠ7Hz!CdѸщ ߣUF؋YF$v~$B4N)q<Jzuye}68o#TbG$B<M-xr 2SJGIĩ(T&JxrSּ#Iows4Wz$ABn\ݜgJHK=1%"CBܞ3De-9ʾd@b{Z'!R¬ &$d@(7U
HV}l5qx +Xats3
k(i5ޞV$KQ`fJ /HǷ'&Vy@zHܞBD@b~H!߳(w6mQ){ hmf!D+a;zq^[w3 SMHOrr1#F>x)u\8ٽiA~#:K=\wD.A1Ɠ\\uzoqPО8cMkIYK(Lwmas
<[e_JQ=ojªj9}̙$-xT亍Պ:9O$^Hִ{ +iiZ;zzyiutz8z^fQzңȢ[)Fӊ
x@^ѕMyTW%&N3=()1Q%&
;%8|,Ll~nlc{z34 ^Zs]<jZɰ.}Sa?O6.Zz\Ѩ:83 +AO#Oq7AFZ+pmΚ9
^D`aU4^1խ&>f\1R:d7T#NXĥ')vʒ捙ܺ qD0,z=-q@!wK: 1SxH9-3xub0iG<z U~{X3ȩmy} 2D{P_>!@clyfm$*~??.KPvzl&M>0W +Pbg2;z1z&kk{P^*7> M4ʼn5ٵ|MWqyqD0Uv^ׁ)"rUT5k3H%"'Zg<iy/aD!l2#%z[ +ftzz!^ݮPƜP +oyR +endstream +endobj +4104 0 obj +<< /Type /Page /Contents 4105 0 R /Resources 4103 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 4106 0 obj -<< /D [ 4088 0 R /XYZ 81.145 604.446 null ] >> +<< /D [ 4104 0 R /XYZ 78.37 808.885 null ] >> endobj 4107 0 obj -<< /D [ 4088 0 R /XYZ 81.145 593.487 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 742.926 null ] >> endobj 4108 0 obj -<< /D [ 4088 0 R /XYZ 81.145 582.528 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 731.968 null ] >> endobj 4109 0 obj -<< /D [ 4088 0 R /XYZ 81.145 571.569 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 721.009 null ] >> endobj 4110 0 obj -<< /D [ 4088 0 R /XYZ 81.145 560.61 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 710.05 null ] >> endobj 4111 0 obj -<< /D [ 4088 0 R /XYZ 81.145 549.651 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 699.091 null ] >> endobj 4112 0 obj -<< /D [ 4088 0 R /XYZ 81.145 538.692 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 688.132 null ] >> endobj 4113 0 obj -<< /D [ 4088 0 R /XYZ 81.145 527.733 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 677.173 null ] >> endobj 4114 0 obj -<< /D [ 4088 0 R /XYZ 81.145 511.793 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 666.214 null ] >> endobj 4115 0 obj -<< /D [ 4088 0 R /XYZ 81.145 500.834 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 655.255 null ] >> endobj 4116 0 obj -<< /D [ 4088 0 R /XYZ 81.145 469.95 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 644.296 null ] >> endobj 4117 0 obj -<< /D [ 4088 0 R /XYZ 81.145 458.991 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 633.337 null ] >> endobj 4118 0 obj -<< /D [ 4088 0 R /XYZ 81.145 448.032 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 622.379 null ] >> endobj 4119 0 obj -<< /D [ 4088 0 R /XYZ 81.145 437.073 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 606.438 null ] >> endobj 4120 0 obj -<< /D [ 4088 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 595.479 null ] >> endobj 4121 0 obj -<< /D [ 4088 0 R /XYZ 81.145 415.156 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 584.52 null ] >> endobj 4122 0 obj -<< /D [ 4088 0 R /XYZ 81.145 404.197 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 573.562 null ] >> endobj 4123 0 obj -<< /D [ 4088 0 R /XYZ 81.145 393.238 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 562.603 null ] >> endobj 4124 0 obj -<< /D [ 4088 0 R /XYZ 81.145 352.391 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 551.644 null ] >> endobj 4125 0 obj -<< /D [ 4088 0 R /XYZ 81.145 341.432 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 540.685 null ] >> endobj 4126 0 obj -<< /D [ 4088 0 R /XYZ 81.145 330.473 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 529.726 null ] >> endobj 4127 0 obj -<< /D [ 4088 0 R /XYZ 81.145 319.514 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 518.767 null ] >> endobj 4128 0 obj -<< /D [ 4088 0 R /XYZ 81.145 308.555 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 507.808 null ] >> endobj 4129 0 obj -<< /D [ 4088 0 R /XYZ 81.145 297.596 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 496.849 null ] >> endobj 4130 0 obj -<< /D [ 4088 0 R /XYZ 81.145 286.638 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 485.89 null ] >> endobj 4131 0 obj -<< /D [ 4088 0 R /XYZ 81.145 275.679 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 469.95 null ] >> endobj 4132 0 obj -<< /D [ 4088 0 R /XYZ 81.145 234.832 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 458.991 null ] >> endobj 4133 0 obj -<< /D [ 4088 0 R /XYZ 81.145 205.94 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 448.032 null ] >> endobj 4134 0 obj -<< /D [ 4088 0 R /XYZ 81.145 194.981 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 437.073 null ] >> endobj 4135 0 obj -<< /D [ 4088 0 R /XYZ 81.145 184.022 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 426.115 null ] >> endobj 4136 0 obj -<< /D [ 4088 0 R /XYZ 81.145 173.063 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 415.156 null ] >> endobj 4137 0 obj -<< /D [ 4088 0 R /XYZ 81.145 162.105 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 404.197 null ] >> endobj 4138 0 obj -<< /D [ 4088 0 R /XYZ 81.145 151.146 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 393.238 null ] >> endobj 4139 0 obj -<< /D [ 4088 0 R /XYZ 81.145 140.187 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 382.279 null ] >> endobj 4140 0 obj -<< /D [ 4088 0 R /XYZ 81.145 129.228 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 371.32 null ] >> endobj 4141 0 obj -<< /D [ 4088 0 R /XYZ 81.145 118.269 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 328.481 null ] >> endobj 4142 0 obj -<< /D [ 4088 0 R /XYZ 81.145 107.31 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 263.723 null ] >> endobj -4087 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 346 0 R /F84 425 0 R /F15 334 0 R /F74 337 0 R /F83 414 0 R >> /ProcSet [ /PDF /Text ] >> +4143 0 obj +<< /D [ 4104 0 R /XYZ 81.145 252.765 null ] >> endobj -4146 0 obj -<< /Filter /FlateDecode /Length 2218 >> -stream -x[;#7WLS$z -QG|\1wȏ-O맟^9,X<I/I\ڝUBZuz:eC%^P}Dwt_"C_ -tj|a/G)8v]"K]#[-l\G; .= Z'|F_H"_I#YH(dMFHowm*e`()9UkD0"xE "C'#͎3'%w/#f8ol[]j756Z'M0z87"4{$o"5X>)އysMnhMgL;l;zl8+q-#ytZ -ЖYGj43w?Ad(YgOopV2j<k1[6״)Plau~tJH}cOP?a|r-,]a7|^jmBITB66*pӡÒH#.jעk -u@}=DNIT}CN -]:f)Hxޚ=˩Lr(]&Io"!VvDlLIV̡:K;H5hzMɄ}j(P4"nU'%EIM:-V;QS"cȘ}lrIEʦs,)7ݻyWDBwz*7-?_Uݖ]=B:?&ha}`?/? 5C-jvPӜz{F[e5*;*8wvusUǯ#+e-íf.c -X1kH|<.#
2u@2+96U> kYt@r?/,*au4e;.^P66~84۲Ű͔#X)6Xry`.PK&ޖs4xAW(q2.]f>niS^\xs1qe[a9- -`DOB%F֩
I?"5SFȕXzou=: -ngT7DDN0wG9Hq@7ܝ(~{oIҐ"V>j_X -ʑd[iuM
}iߴ+]
wiuSO[@nݰMiwVSFaw-;w[*1ևɻXá&:i)o$V5z3C|O6JN?Fߒd4lSSnjMn -Ȋ^70GR]|[[? ;5ŹZE:䲂lʸI&U0|=c>y Kssr=N,-%P5
-eiRefs? -endstream +4144 0 obj +<< /D [ 4104 0 R /XYZ 81.145 241.806 null ] >> endobj 4145 0 obj -<< /Type /Page /Contents 4146 0 R /Resources 4144 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R >> +<< /D [ 4104 0 R /XYZ 81.145 225.865 null ] >> +endobj +4146 0 obj +<< /D [ 4104 0 R /XYZ 81.145 214.907 null ] >> endobj 4147 0 obj -<< /D [ 4145 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 203.948 null ] >> endobj 4148 0 obj -<< /D [ 4145 0 R /XYZ 81.145 754.882 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 173.063 null ] >> endobj 4149 0 obj -<< /D [ 4145 0 R /XYZ 81.145 743.923 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 162.105 null ] >> endobj 4150 0 obj -<< /D [ 4145 0 R /XYZ 81.145 732.964 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 151.146 null ] >> endobj 4151 0 obj -<< /D [ 4145 0 R /XYZ 81.145 722.005 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 140.187 null ] >> endobj 4152 0 obj -<< /D [ 4145 0 R /XYZ 81.145 711.046 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 129.228 null ] >> endobj 4153 0 obj -<< /D [ 4145 0 R /XYZ 81.145 700.087 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 118.269 null ] >> endobj 4154 0 obj -<< /D [ 4145 0 R /XYZ 81.145 689.128 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 107.31 null ] >> endobj 4155 0 obj -<< /D [ 4145 0 R /XYZ 81.145 678.169 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 96.351 null ] >> endobj 4156 0 obj -<< /D [ 4145 0 R /XYZ 81.145 667.21 null ] >> -endobj -4157 0 obj -<< /D [ 4145 0 R /XYZ 81.145 656.252 null ] >> +<< /D [ 4104 0 R /XYZ 81.145 85.392 null ] >> endobj -4158 0 obj -<< /D [ 4145 0 R /XYZ 81.145 645.293 null ] >> +4103 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F81 401 0 R /F59 368 0 R /F84 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4159 0 obj -<< /D [ 4145 0 R /XYZ 81.145 634.334 null ] >> +<< /Filter /FlateDecode /Length 2603 >> +stream +x[ˎ#
WF#@ &6zJU.;<"CJ]}>~>^$F \>&.LɋVq%.ssr.?#/Yдr$ƹ%I/E_PO2oTUN|%*U{5oxq&8lP0kB/i@+^Gm5[5sVz#G-gȹy\Bs[NY3+5Jzw +AҐ4^NϫC!j$%ZC
[58^I +|W!TSdAs +f<AR Q;2E|q"y8GXf(h"zwEZhFB&)ʽjlQ+|7ck$\Xƫݢ@W:7Z' +-0E+f.c/(pT:$ڔǠiԺ~}~K72uZ"vT +`ϒ):As$w:EN&*
Yue(-A\&뽠lAnP0Ѽ7tePv0=7y"-4qq_!~Զan'b2m1BG[=/y^%OTm(5iү5J[[B*FHj}OXlSf-Fzȃ:3;TBL
Vt̖Fv}TKx]z3{Du\iBR&U#bf:/4z3}b.]`.DpۛE$V9gY5@,=%݇{P6#gvs +y\c58ꧫ˪k)'kOD6e|жAYW{AleObshޯ3% Ӏ$}w@[M^E b&wT8Cd[pH%T~dG$7+˲-JU-]7g㓈$3)l:wZ>:A(I)ݹp&%j|6qPn2x5Ysۮd26Gv+=W[gfBU9& j'9X|gGZ,
ܑ&8d! pGw"wšGĢu#nj(#vmC2=!m;.Rt,jӺ+r[nfo({) +/O7kQ,Epʹ![>W@UWx&IZ2|pws^g
+&Q+BUV05 +ߨnp/A,D2$j{rrs
u{ʭڌƻc6O6j۩h<<! +SBr8S"$d
nu*µ +>*/?1ôF6Gre?-iwaGrAz|yk8Z +\q$}o)G9&I*IV=/pI"imJ+ZR|F$Ʒ,ze
S'KY"[ϙ4;?w39{,z} 3sG'5OHs'H
10hL(Ʈ*Uo?nx֎*fḅb2=(H%eベ)a/>qV#+j=
\ +endstream +endobj +4158 0 obj +<< /Type /Page /Contents 4159 0 R /Resources 4157 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 4160 0 obj -<< /D [ 4145 0 R /XYZ 81.145 623.375 null ] >> +<< /D [ 4158 0 R /XYZ 78.37 808.885 null ] >> endobj 4161 0 obj -<< /D [ 4145 0 R /XYZ 81.145 612.416 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 768.829 null ] >> endobj 4162 0 obj -<< /D [ 4145 0 R /XYZ 81.145 601.457 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 757.87 null ] >> endobj 4163 0 obj -<< /D [ 4145 0 R /XYZ 81.145 590.498 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 746.912 null ] >> endobj 4164 0 obj -<< /D [ 4145 0 R /XYZ 81.145 579.539 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 735.953 null ] >> endobj 4165 0 obj -<< /D [ 4145 0 R /XYZ 81.145 568.58 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 724.994 null ] >> endobj 4166 0 obj -<< /D [ 4145 0 R /XYZ 81.145 557.621 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 714.035 null ] >> endobj 4167 0 obj -<< /D [ 4145 0 R /XYZ 81.145 546.662 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 703.076 null ] >> endobj 4168 0 obj -<< /D [ 4145 0 R /XYZ 81.145 535.704 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 650.426 null ] >> endobj 4169 0 obj -<< /D [ 4145 0 R /XYZ 81.145 524.745 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 639.467 null ] >> endobj 4170 0 obj -<< /D [ 4145 0 R /XYZ 81.145 513.786 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 628.508 null ] >> endobj 4171 0 obj -<< /D [ 4145 0 R /XYZ 81.145 502.827 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 617.549 null ] >> endobj 4172 0 obj -<< /D [ 4145 0 R /XYZ 81.145 491.868 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 606.59 null ] >> endobj 4173 0 obj -<< /D [ 4145 0 R /XYZ 81.145 480.909 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 577.85 null ] >> endobj 4174 0 obj -<< /D [ 4145 0 R /XYZ 81.145 469.95 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 566.891 null ] >> endobj 4175 0 obj -<< /D [ 4145 0 R /XYZ 81.145 458.991 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 555.932 null ] >> endobj 4176 0 obj -<< /D [ 4145 0 R /XYZ 81.145 448.032 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 544.974 null ] >> endobj 4177 0 obj -<< /D [ 4145 0 R /XYZ 81.145 437.073 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 534.015 null ] >> endobj 4178 0 obj -<< /D [ 4145 0 R /XYZ 81.145 426.115 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 503.662 null ] >> endobj 4179 0 obj -<< /D [ 4145 0 R /XYZ 81.145 415.156 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 492.703 null ] >> +endobj +325 0 obj +<< /D [ 4158 0 R /XYZ 79.37 454.459 null ] >> endobj 4180 0 obj -<< /D [ 4145 0 R /XYZ 81.145 404.197 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 432.977 null ] >> endobj 4181 0 obj -<< /D [ 4145 0 R /XYZ 81.145 393.238 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 422.018 null ] >> endobj 4182 0 obj -<< /D [ 4145 0 R /XYZ 81.145 382.279 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 394.578 null ] >> endobj 4183 0 obj -<< /D [ 4145 0 R /XYZ 81.145 371.32 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 383.619 null ] >> endobj 4184 0 obj -<< /D [ 4145 0 R /XYZ 81.145 360.361 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 320.314 null ] >> endobj 4185 0 obj -<< /D [ 4145 0 R /XYZ 81.145 349.402 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 309.355 null ] >> endobj 4186 0 obj -<< /D [ 4145 0 R /XYZ 81.145 338.443 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 298.396 null ] >> endobj 4187 0 obj -<< /D [ 4145 0 R /XYZ 81.145 327.484 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 272.569 null ] >> endobj 4188 0 obj -<< /D [ 4145 0 R /XYZ 81.145 316.525 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 261.61 null ] >> endobj 4189 0 obj -<< /D [ 4145 0 R /XYZ 81.145 305.567 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 250.651 null ] >> endobj 4190 0 obj -<< /D [ 4145 0 R /XYZ 81.145 294.608 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 171.482 null ] >> endobj 4191 0 obj -<< /D [ 4145 0 R /XYZ 81.145 283.649 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 160.523 null ] >> endobj 4192 0 obj -<< /D [ 4145 0 R /XYZ 81.145 272.69 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 146.651 null ] >> endobj 4193 0 obj -<< /D [ 4145 0 R /XYZ 81.145 261.731 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 135.692 null ] >> endobj 4194 0 obj -<< /D [ 4145 0 R /XYZ 81.145 250.772 null ] >> -endobj -4195 0 obj -<< /D [ 4145 0 R /XYZ 81.145 239.813 null ] >> +<< /D [ 4158 0 R /XYZ 81.145 107.948 null ] >> endobj -309 0 obj -<< /D [ 4145 0 R /XYZ 79.37 183.439 null ] >> -endobj -4144 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F74 337 0 R /F83 414 0 R /F59 346 0 R /F84 425 0 R /F88 635 0 R /F87 2313 0 R /F111 636 0 R /F64 333 0 R /F65 335 0 R >> /ProcSet [ /PDF /Text ] >> +4157 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4198 0 obj -<< /Filter /FlateDecode /Length 2168 >> +4197 0 obj +<< /Filter /FlateDecode /Length 2415 >> stream -xn+'t? -(RǕή]=<u9a~<s~v%<)%1ʞ<Bۓ%%$?_w)UJ!%^3? %ۋ&z-m᭮/eǨ`L8ީJ!u{c__0oʜ5Ad -k`Z_9qNO/A]) -}tx_vf/0k)zCK W.iWX#emNv8X,훘Ml54V\9:{#Dp|e&)H(R}T4{Z;L;&h\eL kZa_y}{aw(GfƋY܄Y9$}8;%/@{/)1<QR"IJK:NJdAjTneTc'"eaM]'f0@6 -XҌ8Èu2$kƻg -8$s؞ -HA}H>Ђp)B -*h z7^A ~`:,%rհ+ -+vm8\=S/&lLؘ!.8gOgoMRF -!:17# ޔ8:ift^m)D+Z:s,̶SٳWg$%qX4aJ#&C'vb2af -0[dV0Ǒk^ N8;pЕ걋7}h0N8I|Ǎ9( -#H*#xu~aȭh,OUG_i^jW͒X؇*0<OG;="QJ bwfE pb*;om#a1s.pDM?qzOkI\*z%7Y -[)J'=WҪYZX,0rE0}xᩪ4M,(i0ʇnq%̓ϯH LvMWe Yߠ#IN<sbQ<in -"tݴ"|Wr6b.We
!ˁsݮWC+?I5;Vì-tBv-e4cߏG4 -pۃԣ{o-9F<w^8UZ|,l]]^s{).~_
YT6u:gi*$⯭,z&?xU +x[K#)l:J{jׅrUtg$6~aIy||i"B8}N2Q'%QN4oRj1~~t5#I-
F~Ӡ/HO8\g&X|_-mk6JzY1H#u})}mVo[/0p@X[^qq^6:8X_
q}|ZŧG""6/yxN[Gӵ`oh˷& 8$8DnM暾p>Q;)ddPFH+Zg&7+r˦)ZRV\nQ.z^ՉI$iϊbS(pW`s=TPr9.M^ +zWN{K38ܝ_8/6C!E"pY*jŢV|xh5hV>ΡBr +"eďyD埢Ƅcy2dmQxL + l6s\IsChA8J%dHm:>L"rr=P4T#KjxsܖFr[VғC6y^wd=o_`u\v2De]`أP0YbJP8,EM9"zS* X=mKG[9@c䬰jV:<)b.LSOE鲦IZLSl`nQhuʴڝK%:;AH|UX,3,y)'Ԛ+*akN<B**z~}ZM慉YbD3q+0]FU,)`mX:3%m!INMozZW,ݓ/`[X~&ja;\w*r - ϗpCB%w(f=ܣO2R-eNaIbgAj2`6;li#4轶(SRZLnaz-T@zєhǞ?vK]]Ƿ)Rze4+vt\jq>)ݓh.N➤X~NAT|r*%x4쐶 ݹ5[3!֨CA}c$y;;XB)=ғEhCKh"Uto{AZ!1i%Lklk#48Bwֳ=:9-gy~rBRC٠ܔU4ӃbvcdH>Z萞,pFYi ;LXT-cCai8z5n36?@9z%ŷk[)N\kg9^CwZbm؈3fm?? +wь)g T$X-CbٯoWy/,y<#T ˋm,jlڐcT3BeLY>2ZxEڌeY;No+hdRf)qjf4M+$u?Ҽ:6Y[l>F5mr3K^Mwq~;
jmN]d,Ay*@U1oTGM"UΰIԄS<JFLcrH,bES/"^R)NfiDz!P݄[ٺB;KNv1=1w!/✵U:Mfn| c!I{( muMtD&2;;}pBCŧ!Q7ged9Z)Fٜ[h5p݃Z=w"ڝ.1;XUեh&R=wIb\frn;Cf'rͺQ}͍W˷Nz"zzu\%V/EHO$K7$ endstream endobj -4197 0 obj -<< /Type /Page /Contents 4198 0 R /Resources 4196 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R >> +4196 0 obj +<< /Type /Page /Contents 4197 0 R /Resources 4195 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> +endobj +4198 0 obj +<< /D [ 4196 0 R /XYZ 78.37 808.885 null ] >> endobj 4199 0 obj -<< /D [ 4197 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 768.829 null ] >> endobj 4200 0 obj -<< /D [ 4197 0 R /XYZ 79.37 775.009 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 757.87 null ] >> endobj 4201 0 obj -<< /D [ 4197 0 R /XYZ 79.37 704.799 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 746.912 null ] >> endobj 4202 0 obj -<< /D [ 4197 0 R /XYZ 79.37 646.545 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 697.624 null ] >> endobj 4203 0 obj -<< /D [ 4197 0 R /XYZ 79.37 600.246 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 686.665 null ] >> endobj 4204 0 obj -<< /D [ 4197 0 R /XYZ 79.37 553.948 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 675.706 null ] >> endobj 4205 0 obj -<< /D [ 4197 0 R /XYZ 79.37 507.649 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 664.748 null ] >> endobj 4206 0 obj -<< /D [ 4197 0 R /XYZ 79.37 425.484 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 653.789 null ] >> endobj 4207 0 obj -<< /D [ 4197 0 R /XYZ 79.37 355.275 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 642.83 null ] >> endobj 4208 0 obj -<< /D [ 4197 0 R /XYZ 79.37 273.111 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 631.871 null ] >> endobj 4209 0 obj -<< /D [ 4197 0 R /XYZ 79.37 167.036 null ] >> -endobj -4196 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F65 335 0 R /F81 377 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -4228 0 obj -<< /Filter /FlateDecode /Length 3835 >> -stream -x͝ˎ#E~ -]RػL36Y!*lLj[;еwbmWLg7M]2
/Z\!&|_s<B1S+:7RRtpW!_h;0A kGp*ӮNsi
[}=ZEcJubWzfIxҳEMعCWV^wZ9څ'-^2ޗбI`MC6iqE ?]{ppD2eqXӦbi7-efX, ٝe[{8 -+@**>H(9Zs@hpa]Chb:Rc:-jq$ǣ:ZWea@[3Ɠ 0=K46c'_pjd -~7~gN͋BN. -%<xJh>k*KF$~/6k]T!mXTr*h;m(X[^<>n#8xl -~
\ -F~0>G;kmd:+Z:E}sbQ)ji{+g}*<H烳T䩲zU|ʰw˫},WyI2'o;T_ܬTdrH(S %M-Lڮyڞey1}̺/V -:5 )\YWX;U!ubkfIA>Ͷ_T~g,Dd5}GVL^7G[[9[$'?s{ݍ,Wf8uɎͲ, -Z˗M}jv"݄۲Ff;[g}ݕr)!3hE6kC)㯓Mdw@/*'}pST2+qI38f܊ú&y}3'TPV%/=eUw=xbFkSzS4lVWr6/FR~b3[ᕈ`04@/wci!OKI^tg[>$1-v@2M3!<xE3`$lR4x͜Nڰktxއ}H/}~\D%I_?a^ӑ)}vysfr~7Q@+xE|*LPS`PŤQPVұɼݩ|<'忞8"7bnOϻzpb|{'1lKF[{;ѻgd -9ߕv~ŝ +&$a~^h#<a,U9|qFHewlu"wygJf\+/D4w^`yqH,ߙ7Kݾc^ܨ(w3-`}OI(4cE7
J<pީT`}/71ڃn~vѤy-?&k͙݊*$Ԍk72jˠ#JG;GyyzEq(O2͓}>ԋ&lzfpyݭlOfO+^Z#m}_Q|_q1so&Ca0fO"JHP{iJ^]*(]c9ӔΠtveP`:(t$=JWi]"/|0ӤGtF4q42g=:M\t)SiTӄiu"i)4&&U.04ٝ`:4>{T0)I)~0]OshtbntT1-vG_F]<ILrx.JO٦Y;eC{ccǫ8Vbۀ+h -f-ZѢ ZѢ-ZѢZ¬-ZѢ-ZҬݵE+0ZE+@E+0iƊV4kFV`hFV@tZ'%lZ1{o*a˝M6|ztq-ȶWF`H@t}hf}h}hf}a}h}iѢ/-Ѣ/ Ѣ/cE_@E_0ZE_ ˤ\~\_xBP3_PˏBӓ3>5³cxvfQyvfA=;H7ώͳ4{vfQyvA=;HgGA=;H/dٳt ͞ٳ4{vϾ/ -iK)oOu)Gc/W/ؾN+k1.\
Z=z[ͧ -iݕ@`0<@8@0kƲ4@(0@, pWQ`I`VA*r,b -0Z -F`H -H@tIhfIhIhfIaIhIi")-") ͒")$cER@%ER0Z$ER K$
P -endstream -endobj -4227 0 obj -<< /Type /Page /Contents 4228 0 R /Resources 4226 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R /Annots 4237 0 R >> -endobj -4237 0 obj -[ 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R ] +<< /D [ 4196 0 R /XYZ 81.145 620.912 null ] >> endobj 4210 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 287.863 168.645 296.75 ]/A << /S /GoTo /D (section.0.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 609.953 null ] >> endobj 4211 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 265.945 162.18 274.912 ]/A << /S /GoTo /D (section.0.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 598.994 null ] >> endobj 4212 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 242.085 199.908 253.053 ]/A << /S /GoTo /D (section.0.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 588.035 null ] >> endobj 4213 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 230.08 217.99 241.039 ]/A << /S /GoTo /D (subsection.0.3.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 577.076 null ] >> endobj 4214 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 218.124 271.838 229.193 ]/A << /S /GoTo /D (subsection.0.3.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 566.117 null ] >> endobj 4215 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 206.289 260.909 217.128 ]/A << /S /GoTo /D (subsection.0.3.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 555.158 null ] >> endobj 4216 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 193.776 282.11 205.731 ]/A << /S /GoTo /D (subsection.0.3.4) >> >> +<< /D [ 4196 0 R /XYZ 81.145 544.2 null ] >> endobj 4217 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 174.239 177.731 183.285 ]/A << /S /GoTo /D (section.0.4) >> >> +<< /D [ 4196 0 R /XYZ 81.145 533.241 null ] >> endobj 4218 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 159.903 307.764 171.858 ]/A << /S /GoTo /D (subsection.0.4.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 522.282 null ] >> endobj 4219 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 148.396 172.561 159.345 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 454.851 null ] >> endobj 4220 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 136.441 214.364 147.499 ]/A << /S /GoTo /D (subsubsection.0.4.2.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 443.892 null ] >> endobj 4221 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 124.486 276.302 135.544 ]/A << /S /GoTo /D (subsubsection.0.4.2.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 432.934 null ] >> endobj 4222 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 112.53 251.943 123.479 ]/A << /S /GoTo /D (subsubsection.0.4.2.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 419.091 null ] >> endobj 4223 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 102.398 258.917 111.634 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 408.132 null ] >> endobj 4224 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 78.697 378.259 89.666 ]/A << /S /GoTo /D (section.0.5) >> >> +<< /D [ 4196 0 R /XYZ 81.145 397.173 null ] >> +endobj +4225 0 obj +<< /D [ 4196 0 R /XYZ 81.145 386.214 null ] >> +endobj +4226 0 obj +<< /D [ 4196 0 R /XYZ 81.145 375.255 null ] >> +endobj +4227 0 obj +<< /D [ 4196 0 R /XYZ 81.145 364.296 null ] >> +endobj +4228 0 obj +<< /D [ 4196 0 R /XYZ 81.145 348.567 null ] >> endobj 4229 0 obj -<< /D [ 4227 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 337.608 null ] >> endobj 4230 0 obj -<< /D [ 4227 0 R /XYZ 79.37 775.009 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 326.649 null ] >> endobj 4231 0 obj -<< /D [ 4227 0 R /XYZ 79.37 704.799 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 315.69 null ] >> endobj 4232 0 obj -<< /D [ 4227 0 R /XYZ 79.37 658.501 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 304.731 null ] >> endobj 4233 0 obj -<< /D [ 4227 0 R /XYZ 79.37 588.291 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 293.772 null ] >> endobj 4234 0 obj -<< /D [ 4227 0 R /XYZ 79.37 482.217 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 282.813 null ] >> endobj 4235 0 obj -<< /D [ 4227 0 R /XYZ 79.37 400.052 null ] >> -endobj -313 0 obj -<< /D [ 4227 0 R /XYZ 79.37 343.689 null ] >> +<< /D [ 4196 0 R /XYZ 81.145 271.854 null ] >> endobj 4236 0 obj -<< /D [ 4227 0 R /XYZ 79.37 328.77 null ] >> -endobj -4226 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F64 333 0 R /F15 334 0 R /F74 337 0 R /F81 377 0 R /F65 335 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> -endobj -4295 0 obj -<< /Filter /FlateDecode /Length 7667 >> -stream -xώV~G_$`@{,l3ls%R%T ;R|;O~koնn؎?o۩|<6oya{Nmϗ1ܵ{w]ʏbMx.?6o -(I) Ia0ur8q2IaҤ0eR09.)L.UR(9&)LH -$kָ]z"w^=4AsOF-oDmojm&fNS3KgN4)IҵiN5ɚti4es:i8ms9Mݜ&oRoJ9M&qN89%s9:)ӤiZtFvv&=8v?Z?!k
}ՏUҤc;HKMNN$.5R99I\JpBp:p2p%BA'A@ -Ӝ
Vqz&T~Қ,_-Uln۬# Ώrk>l/?{Db1dFtF)ӤFib4q8H8Mq&9Nku&;N )Ӥgԩi4Rh>l47~z-mȡBҘW
Ŵ}=O,YIW~KߌՓ8JɅBaZ0PR(P8N(L& - k" -ɃAEiIAa 0]0fa*\鏳,<}3^K4o~u/g8g ߷&fdE߀ab45qH(]4EqH8MT*N)Ӥi"uti4:q8],:q8Mg&4JlR7|{]R2~rײC
Nk
NiӴit q4mp68MNmp68M
R
NK
R
NiӴAچnj6LCc^nCI>>_~N0h+]grRg;,wY4r3˝f;,wY.ufu;,wY4\rNY,\rN3˝f+]gFjOn/'/gq|sl-Z?УEN#pH(]+4qH8ME"NSSSTi*"u*tTi*4:q8]*,:q8ME"Jl*2UEkY Lۂ?Jׁ4iN3Нf;@w:]tN3НfKtN3Нf;@:ie;@:itJׁGí;me\}9߿^.x[B{9viK>K9voy;S:ai"u"ubu %,HHHX]4a:a:a:aEE%,&,VHHH8MXzН)ty>_w}:+7"+eukXJ8|%Js|$!>ijh%WwcxnWBͅ^mBF?i4iL#3iL#FRg94rL#gFRg94ri4H:6Shz4z8˥}6X>^Z_gL{1_-M -NSSk -NSԩTRgԩTi4UPVa**L}op -|7fn?Я7 ߛls9Jlf4/|9Kr͗di2+u2tͬdi2+u24u:MfNf%Nf&NYɬɬ5NYɬdVdi2tɬdVdi24u*]3sfӟ~z*P沺pac}6koM+/_0n?Z}}8+MwwJ`~6z|:%烫1>9;_1ay0+
Ґ:+
ҰzYiHYiHe4+
Ґ:+
JC4JC4.+
JC4JC4.+
YiHYiHe!uVR/+
iҰ4JC4JiVǧNt>8 o7(NBIӤPBIӤiR(uRtMӤiR(uR4)t:M -N -%N -&NBII5NBIӤPiRtIPiR4)t*]S˱ҞigpWSؾ(^Zc-~Gqa4qr8I8)]4qr8I89M&NN'''i$uti4q:qr89],q:qr89M&NJ8'{7Oqq=\7Ws&NWK^&NWɫɫ5NWɫɫi4yu:y8yu:M^&R'J:M^&NWWɫ%ΒWWɫitZ/A;~z?~5}-^mXib4ab4sI)]c4sI9M&vN;;;ib'ubtib4:s9]b,:s9M&vJح;}!nj8O:/nuo.ڬuvx]i_\cY~Gifәug9ͬsY4N:sY4ifԙuN3.YfԙuN3f9ͬSκ߾|)y)v__#hp{dX59rGI={qrơ|\CpI?w?x\u_iP&5"@94{3ٛ9ifR͜fo4{37S͜fo4{37sӬWft+g4Y8zEWY8zi+Rg4zY+Rg4Y8zE^YoNG^m.D.^p*kw?u9!?$a`uI$A$A$K,.I:I:I:I$i u u u`uIIKM.I:I:I:Ip$l+cev$~c%q{wá-@L\w>ԄBB - ӄBiB4pP8PHP8M(&N - -k(&N - ӄ -g ӄiB4Pb?q<ݚ~/bwc^`y[BHqh9>[}:j7`JQ4iFӌZ3j%ΨuQ4iFJQ4iFӌZ3jf:]FZ3jf:ͨuQtk=2j
kpL\hԵcӞE,ҝf.uJEӔi!u4pr8M9N9$N9NS))ҵNS)ӔCit)Ci4pr(]˱s9O}w^9/H>jr%tccs\|l.u>6z\b4UuJ*]4UuJ:MUNSUSUSUTi*utTi4U:Uu:],U:Uu:MUJתuw3%]svGUcO}m$}M{e4aqH(]4aqH8MX&,N ӄi"u¢t
ӄi4a:aq8],a:aq8MX&,Jװކηn@:,;~|~|\>]ylޭɖ?kw`gx0<fx:ttN3<fx::S:<fx:t)uOt)uON3<s?7<WZʧ_+둺a'-F;}x#{/WDow߿?Ӽ4_u,_uӼt}=*Fmz\w?ӯɛ1s\:GQps\z9X!qVHR``:+zޖ:mޖ:mzޖ:mޖ:mKRRRV^K^KZkkkkFwOu̓^37kOv2nANSF)ԥSF)ӔQQZF)ӔQi4et2:2J2:MNSFSFkNSF))ӔRFg))Ӕi4eTq'κj.ͩtߡ`:v?Ko[~c{?>n+_x<2`<B uBt
ӄiB uB4!p8MN$N&N 5N ӄ@iBt @iB4!p(]Cs=S\BlCz!ýfmf9]}:͡O9)u6xNs
lf'u9i4]:]Wvi4]:]w;MםNNut]t]uti.u4]wtY.u4]w;Mו]_M?}M_[\Hͳ;N3Pv4Cig(;Pv4CYePv4CiN3.CYN3f(;PVPn;l.CҔoʯJ1epzOߋ]
]<lWf4va+N]qٮ(]4et2J2:MNSFSFSF)Ӕi(uʨt-Ӕi4e:et2:],e:et2:MJ2\NlS?nWyu_rswyDrnI]0rn9MNrn9MN[N-ti4ݒ:Rvi4rnIn9M.rnIn9M[N-kzU^iSxGvpyW2qzYzwA4^zN3f;A/qzN3ΠWzN3fKA42eKA4iz_k7A^Cm{/y|9s~oRg߱yX]t8=)%D -!!S!KNNN.GI) %;:/q4͑$Farcpjspks~(rwa8dI%K&K'K'K,)LNN$.Yr8Yr8Yr8YrdIڒ%%%%K&K'K'K'K,9,9ddI%%%%Y\_R{!쟆pNkp85t85t85xQ*L
N
N
%.5t85t85t85tPRCSCSCSCK
::PRCSCSCSCw朅rfvyDU"uJ -endstream +<< /D [ 4196 0 R /XYZ 81.145 256.124 null ] >> endobj -4294 0 obj -<< /Type /Page /Contents 4295 0 R /Resources 4293 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R /Annots 4297 0 R >> -endobj -4297 0 obj -[ 4225 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R ] -endobj -4225 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 759.955 197.477 769.031 ]/A << /S /GoTo /D (section.0.6) >> >> +4237 0 obj +<< /D [ 4196 0 R /XYZ 81.145 245.166 null ] >> endobj 4238 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 746.057 249.98 757.016 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 234.207 null ] >> endobj 4239 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 734.102 202.349 745.061 ]/A << /S /GoTo /D (subsubsection.0.6.1.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 218.477 null ] >> endobj 4240 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 723.98 200.416 733.106 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 207.518 null ] >> endobj 4241 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 710.311 243.704 721.26 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 196.559 null ] >> endobj 4242 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 700.07 231.559 709.195 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 185.6 null ] >> endobj 4243 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 688.114 244.312 697.24 ]/A << /S /GoTo /D (subsubsection.0.6.2.2) >> >> +<< /D [ 4196 0 R /XYZ 81.145 174.641 null ] >> endobj 4244 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 674.326 252.591 685.395 ]/A << /S /GoTo /D (subsection.0.6.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 163.682 null ] >> endobj 4245 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 662.491 269.318 673.33 ]/A << /S /GoTo /D (subsection.0.6.4) >> >> +<< /D [ 4196 0 R /XYZ 81.145 100.552 null ] >> endobj 4246 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 652.249 256.257 661.375 ]/A << /S /GoTo /D (subsubsection.0.6.4.1) >> >> +<< /D [ 4196 0 R /XYZ 81.145 89.593 null ] >> endobj 4247 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 638.471 267.465 649.42 ]/A << /S /GoTo /D (subsubsection.0.6.4.2) >> >> -endobj -4248 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 626.515 283.794 637.464 ]/A << /S /GoTo /D (subsubsection.0.6.4.3) >> >> +<< /D [ 4196 0 R /XYZ 81.145 78.635 null ] >> endobj -4249 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 614.67 259.216 625.509 ]/A << /S /GoTo /D (subsubsection.0.6.4.4) >> >> +4195 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F81 401 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4250 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 602.715 285.228 613.554 ]/A << /S /GoTo /D (subsubsection.0.6.4.5) >> >> +<< /Filter /FlateDecode /Length 2383 >> +stream +x[Ɏ6W!;4` +8
:|spp|+~7}Y5|yy><cb3:9&,H4爽9r[e!~lqT{hc}K@|,L(II\1Kʹ3VS^sRd7 8&'nvZȅR%,ФE9HEY}swO͖IBa`75gM-iLrKڷ:9ŤE1GQtn- +}a6Vg^>PvaYaRƷ$T')T"0EҒ%e>8,Lt'H8n,\/w+B} +֤ڌMp#\3%Azd9Ԕ%wHlB#URr`9sV4<g6Ƀ ҟg!ҭlAD>SĮY0k-ZU3]D+ǜdҍ'WJ@BTj3tOxPo Yf.Y-Ҝ,LGU:DHxLWLD؈\ Z[Hɺ +>fl')4
b4lajEdl!Mۣq+IJ>!9ƍ1zhB1ypQ<0!iHsqT6+5bT7<~^n>q܌gBRnj*Rk睪#a>st)N=хLFHb?FIi$'kYInz<>E:Oh&"h45@9ams o;U̡wE$G(
Luixv>Ϟf`<-K8iݣwy +<|<zA8Сǃפ~vU:;z9-Cw[ךJKr_IYI)EC:؎Rp=slO2)I혬# +٧&e6Wd&Nl8J1ZHtюu{*wdzd˔/ͧ<v +eN]
[4"Fj.}dk`b66r356am.t6 $Uz*t* +e5MRBSiKl1RJ]uN Q>,bt-qU{$R"mB1N{f;qkU'jةr(دia>˰h.XG}UVnxMVYAh"7[5"*B=ѝΛ3J@v-qU
ik+9 ɌC*b-9:Μ&js
Dձ9K;]~x'zZ;t`Wgd/ϼy<7:Hj<ܴHUOJW,ͳrVPֱLWE +>&%(!:X.>>tEytۥTS
q9J~Q(&U/:L$E +N&gi=We^Ou]9iAk +ìch>w4C҄3 Aݺ@a^c8G;ɜ=Ҳy^ssv{0 ۣ2r<|\HcV[7CGq 1w[P@;6!!Z~Jlg߰''SBP
%HagJIh(i^6d(R4O LKER2KNkɇAVJ Z@DTUC!Cϻ[ĪrDe[VϙKռ-'r/_ +endstream +endobj +4249 0 obj +<< /Type /Page /Contents 4250 0 R /Resources 4248 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj 4251 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 592.473 260.89 601.599 ]/A << /S /GoTo /D (subsection.0.6.5) >> >> +<< /D [ 4249 0 R /XYZ 78.37 808.885 null ] >> endobj 4252 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 578.246 356.78 590.202 ]/A << /S /GoTo /D (subsubsection.0.6.5.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 768.829 null ] >> endobj 4253 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 566.291 423.071 578.246 ]/A << /S /GoTo /D (subsubsection.0.6.5.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 757.87 null ] >> endobj 4254 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 554.336 434.598 566.291 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 746.912 null ] >> endobj 4255 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 542.939 298.12 553.888 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> +<< /D [ 4249 0 R /XYZ 81.145 735.953 null ] >> endobj 4256 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 532.697 179.455 541.823 ]/A << /S /GoTo /D (subsection.0.6.7) >> >> +<< /D [ 4249 0 R /XYZ 81.145 724.994 null ] >> endobj 4257 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 509.066 226.618 519.965 ]/A << /S /GoTo /D (section.0.7) >> >> +<< /D [ 4249 0 R /XYZ 81.145 714.035 null ] >> endobj 4258 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 487.148 153.283 497.987 ]/A << /S /GoTo /D (section.0.8) >> >> +<< /D [ 4249 0 R /XYZ 81.145 703.076 null ] >> endobj 4259 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 475.073 196.72 486.032 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 692.117 null ] >> endobj 4260 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 463.118 285.168 474.187 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 681.158 null ] >> endobj 4261 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 451.163 215.52 462.122 ]/A << /S /GoTo /D (subsection.0.8.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 670.199 null ] >> endobj 4262 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 439.208 278.842 450.386 ]/A << /S /GoTo /D (subsection.0.8.4) >> >> +<< /D [ 4249 0 R /XYZ 81.145 659.24 null ] >> endobj 4263 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 427.263 207.39 438.212 ]/A << /S /GoTo /D (subsection.0.8.5) >> >> +<< /D [ 4249 0 R /XYZ 81.145 648.281 null ] >> endobj 4264 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 405.385 343.181 416.354 ]/A << /S /GoTo /D (section.0.9) >> >> +<< /D [ 4249 0 R /XYZ 81.145 637.322 null ] >> endobj 4265 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 393.38 222.155 404.339 ]/A << /S /GoTo /D (subsection.0.9.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 626.364 null ] >> endobj 4266 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 381.425 221.168 392.493 ]/A << /S /GoTo /D (subsection.0.9.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 615.405 null ] >> endobj 4267 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 369.031 250.508 380.986 ]/A << /S /GoTo /D (subsection.0.9.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 589.502 null ] >> endobj 4268 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 357.514 209.691 368.583 ]/A << /S /GoTo /D (subsection.0.9.4) >> >> +<< /D [ 4249 0 R /XYZ 81.145 578.543 null ] >> endobj 4269 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 345.559 235.007 356.518 ]/A << /S /GoTo /D (subsection.0.9.5) >> >> +<< /D [ 4249 0 R /XYZ 81.145 567.584 null ] >> endobj 4270 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 333.166 331.933 345.121 ]/A << /S /GoTo /D (subsection.0.9.6) >> >> +<< /D [ 4249 0 R /XYZ 81.145 556.625 null ] >> endobj 4271 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 311.806 184.546 322.645 ]/A << /S /GoTo /D (section.0.10) >> >> +<< /D [ 4249 0 R /XYZ 81.145 545.666 null ] >> endobj 4272 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 301.564 182.752 310.69 ]/A << /S /GoTo /D (subsection.0.10.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 534.707 null ] >> endobj 4273 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 287.895 281.114 298.844 ]/A << /S /GoTo /D (subsection.0.10.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 523.748 null ] >> endobj 4274 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 275.821 266.498 286.889 ]/A << /S /GoTo /D (subsubsection.0.10.2.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 512.789 null ] >> endobj 4275 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 265.699 308.71 274.934 ]/A << /S /GoTo /D (subsubsection.0.10.2.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 498.842 null ] >> endobj 4276 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 253.743 268.292 262.979 ]/A << /S /GoTo /D (subsubsection.0.10.2.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 487.883 null ] >> endobj 4277 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 240.075 208.436 251.024 ]/A << /S /GoTo /D (subsubsection.0.10.2.4) >> >> +<< /D [ 4249 0 R /XYZ 81.145 476.924 null ] >> endobj 4278 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 229.833 258.718 239.068 ]/A << /S /GoTo /D (subsubsection.0.10.2.5) >> >> +<< /D [ 4249 0 R /XYZ 81.145 465.965 null ] >> endobj 4279 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 217.878 316.441 227.113 ]/A << /S /GoTo /D (subsubsection.0.10.2.6) >> >> +<< /D [ 4249 0 R /XYZ 81.145 455.006 null ] >> endobj 4280 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 205.923 397.756 215.158 ]/A << /S /GoTo /D (subsubsection.0.10.2.7) >> >> +<< /D [ 4249 0 R /XYZ 81.145 444.047 null ] >> endobj 4281 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 192.144 194.479 203.093 ]/A << /S /GoTo /D (subsubsection.0.10.2.8) >> >> +<< /D [ 4249 0 R /XYZ 81.145 433.088 null ] >> endobj 4282 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 180.189 223.271 191.138 ]/A << /S /GoTo /D (subsubsection.0.10.2.9) >> >> +<< /D [ 4249 0 R /XYZ 81.145 422.129 null ] >> endobj 4283 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 168.224 274.508 179.293 ]/A << /S /GoTo /D (subsubsection.0.10.2.10) >> >> +<< /D [ 4249 0 R /XYZ 81.145 411.171 null ] >> endobj 4284 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 156.279 185.562 167.337 ]/A << /S /GoTo /D (subsubsection.0.10.2.11) >> >> +<< /D [ 4249 0 R /XYZ 81.145 400.212 null ] >> endobj 4285 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 144.314 300.033 155.382 ]/A << /S /GoTo /D (subsubsection.0.10.2.12) >> >> +<< /D [ 4249 0 R /XYZ 81.145 384.271 null ] >> endobj 4286 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 132.478 227.614 143.317 ]/A << /S /GoTo /D (subsubsection.0.10.2.13) >> >> +<< /D [ 4249 0 R /XYZ 81.145 373.313 null ] >> endobj 4287 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 122.236 238.005 131.362 ]/A << /S /GoTo /D (subsubsection.0.10.2.14) >> >> +<< /D [ 4249 0 R /XYZ 81.145 362.354 null ] >> endobj 4288 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 108.568 286.653 119.517 ]/A << /S /GoTo /D (subsection.0.10.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 310.548 null ] >> endobj 4289 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 96.493 244.073 107.452 ]/A << /S /GoTo /D (subsubsection.0.10.3.1) >> >> +<< /D [ 4249 0 R /XYZ 81.145 299.589 null ] >> endobj 4290 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 84.538 240.317 95.606 ]/A << /S /GoTo /D (subsubsection.0.10.3.2) >> >> +<< /D [ 4249 0 R /XYZ 81.145 288.63 null ] >> endobj 4291 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 72.583 219.285 83.651 ]/A << /S /GoTo /D (subsubsection.0.10.3.3) >> >> +<< /D [ 4249 0 R /XYZ 81.145 277.671 null ] >> endobj -4296 0 obj -<< /D [ 4294 0 R /XYZ 78.37 808.885 null ] >> +4292 0 obj +<< /D [ 4249 0 R /XYZ 81.145 266.712 null ] >> endobj 4293 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 367 0 R /F15 334 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 4249 0 R /XYZ 81.145 255.753 null ] >> endobj -4306 0 obj -<< /Filter /FlateDecode /Length 1098 >> -stream -xڽn#7EU|ь=,l3lE^zo 0nwJyOy;~9^>5ײ丝xBq"u+98vsI/Ͷj;|1{>v$|7;z4_l$-/~i5|_fWK>ctAO$NKc].҅ -K*MW+g;tVwbi;tiZnјnNjuDmRU.GvhN;MF"Mۤ&Y4X4!Y46jiVwju$lu|IEFhi;KͩYX,I>V5Nyw~wVUdq^Y|ܷM`؆amHzچm8h؆m8h؆a!im8h؆m(zنam8!im8z؆cah؆am(zmn̵ls1ER;`)~dXhQɺ+-j2$Au6"F1631kˎr]ʴcHqG_y9y>zq<8z, <8˃<8˃}>GvyEXITWEc<:rGDǣ?kM: Os4:GC$=NK
s4:IhGXIhG#8E+[ARo~Li[>Ot8EgC?6hAG8w{ׯfgգ`tzFgGh(]<eP0L@O0 -Frp4$=Ã=c$= hdE)R7G_lory)k
Dg[S]Gcw @w!g[ zw7;? -endstream +4294 0 obj +<< /D [ 4249 0 R /XYZ 81.145 244.794 null ] >> endobj -4305 0 obj -<< /Type /Page /Contents 4306 0 R /Resources 4304 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4143 0 R /Annots 4308 0 R >> +4295 0 obj +<< /D [ 4249 0 R /XYZ 81.145 233.836 null ] >> endobj -4308 0 obj -[ 4292 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R ] +4296 0 obj +<< /D [ 4249 0 R /XYZ 81.145 207.933 null ] >> endobj -4292 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 758.012 231.609 769.081 ]/A << /S /GoTo /D (subsubsection.0.10.3.4) >> >> +4297 0 obj +<< /D [ 4249 0 R /XYZ 81.145 196.974 null ] >> endobj 4298 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 746.057 257.761 757.016 ]/A << /S /GoTo /D (subsubsection.0.10.3.5) >> >> +<< /D [ 4249 0 R /XYZ 81.145 186.015 null ] >> endobj 4299 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 734.102 432.127 745.17 ]/A << /S /GoTo /D (subsubsection.0.10.3.6) >> >> +<< /D [ 4249 0 R /XYZ 81.145 175.056 null ] >> endobj 4300 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 722.147 350.832 733.215 ]/A << /S /GoTo /D (subsubsection.0.10.3.7) >> >> +<< /D [ 4249 0 R /XYZ 81.145 164.097 null ] >> endobj 4301 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 712.025 276.381 721.26 ]/A << /S /GoTo /D (subsubsection.0.10.3.8) >> >> +<< /D [ 4249 0 R /XYZ 81.145 153.138 null ] >> endobj 4302 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 698.236 373.667 709.305 ]/A << /S /GoTo /D (subsubsection.0.10.3.9) >> >> +<< /D [ 4249 0 R /XYZ 81.145 142.179 null ] >> endobj 4303 0 obj -<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 676.378 142.892 687.198 ]/A << /S /GoTo /D (section.0.11) >> >> -endobj -4307 0 obj -<< /D [ 4305 0 R /XYZ 78.37 808.885 null ] >> +<< /D [ 4249 0 R /XYZ 81.145 131.22 null ] >> endobj 4304 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 334 0 R /F22 367 0 R >> /ProcSet [ /PDF /Text ] >> +<< /D [ 4249 0 R /XYZ 81.145 120.261 null ] >> endobj -1 0 obj -<< /pgf@ca1.0 << /ca 1.0 >>>> +4305 0 obj +<< /D [ 4249 0 R /XYZ 81.145 109.303 null ] >> endobj -2 0 obj -<<>> +4306 0 obj +<< /D [ 4249 0 R /XYZ 81.145 98.344 null ] >> endobj -3 0 obj -<< /pgfprgb [/Pattern /DeviceRGB] >> +4307 0 obj +<< /D [ 4249 0 R /XYZ 81.145 87.385 null ] >> +endobj +4248 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F83 438 0 R /F63 356 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4310 0 obj -[513.9 ] +<< /Filter /FlateDecode /Length 2935 >> +stream +x\Ks8h T$=mk%HwfN2 +eIL*UnIZi3I1Lk+*@II?$3"5Ni{U +WJVPv0@=X&<[el9biԉY2oY(<"=c^f5ŷ="=_Q;$7$ox@=kV6!doJ]6!F} SAѸz?$%Eh1cZKL2R!jMF#sTV`oXOc>PcCJrpm&C 0CPpg +DLM#<5m)Kq'Vd'V0R
efJQbKFDZI˺lYW1p#"ܡ0^}'$tev^ud]CW13FE&μTַ5:)"3Fn^J5[G^60oа*94U3#uTV=a#f=9vyDt^Ûo=>eX;o峠SN<stOlLS6o\ZAzU
olUYz\'ڠk2:[_țٌDJZ`$*~{4Agg+ET#<(-S'q_LYيDpcbb0!=N:"h1GZFP-~cj}$|X3HÄJ/TtF5ҍU\9ZL*${6#hҤǙrѺx-t1c8=qNس[IFx$qHr- +@NQCԚCt6{dYfcnh1ϢzɌ^Iu+=r+I70zf=QE*1Mk2$nIRUaoT?j❂Uz&莚BMKCdklT[*Ff6!JBU0+P~ +R8Xwm:/Q"&EV
iȪM +eYu't&aj\?Env)X0n*Br28"a7z?dByVҗKckUk]i=Fˆ)K^OL,䱄 +endstream +endobj +4309 0 obj +<< /Type /Page /Contents 4310 0 R /Resources 4308 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> +endobj +4311 0 obj +<< /D [ 4309 0 R /XYZ 78.37 808.885 null ] >> endobj 4312 0 obj -[686.7 0 0 0 0 0 0 0 0 0 0 560.2 0 0 0 0 0 0 571 702.2 706.8 0 0 0 686.7 ] +<< /D [ 4309 0 R /XYZ 81.145 757.87 null ] >> +endobj +4313 0 obj +<< /D [ 4309 0 R /XYZ 81.145 746.912 null ] >> endobj 4314 0 obj -[513.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 399.7 399.7 ] +<< /D [ 4309 0 R /XYZ 81.145 735.953 null ] >> endobj 4315 0 obj -[525 ] +<< /D [ 4309 0 R /XYZ 81.145 724.994 null ] >> endobj 4316 0 obj -[ 3 [ 602.1 ] 5 [ 602.1 ] 11 [ 602.1 602.1 ] 38 [ 602.1 ] 68 [ 602.1 602.1 602.1 ] 72 [ 602.1 602.1 ] 75 [ 602.1 602.1 ] 79 [ 602.1 602.1 602.1 602.1 602.1 ] 85 [ 602.1 602.1 602.1 602.1 602.1 ] 91 [ 602.1 ] ] +<< /D [ 4309 0 R /XYZ 81.145 714.035 null ] >> +endobj +4317 0 obj +<< /D [ 4309 0 R /XYZ 81.145 703.076 null ] >> endobj 4318 0 obj -<< /Filter /FlateDecode /Length 20 >> -stream -xڛ"w -endstream +<< /D [ 4309 0 R /XYZ 81.145 692.117 null ] >> endobj 4319 0 obj -<< /Filter /FlateDecode /Length 11571 >> -stream -x| |UﭺU%tv& &Av"J IL,cC@D ""(.({TԙqGapF'>PVu6P~Ҟ>n{sJxr%*oܱ?3oԵF{1B+8EH4̽Pr~cC;zEBү%$ƀϯvTM(OjĄeuG6Wƿ.ŵ7|T%2Za-mO2/VZ}-Zq}W}[{mJtZBbtMD&D/A& ^U1`T1D+ɪDPeRQ_'QQC*l3,#/h? ىDF1+yJ,|^2yFˑ+ׄC'·?EbqG|EW35NgEG;e -z=KߥJuRHSzPzJ+~--SNy%_oz:M_XiuW=NEٞjϰ;Jj:s)1y:*;:u<x!Gs ?iN9ϹYȹĹsAobQ<J2YWSJRRF.eKtɮDWkrF\9\Rw;ѝNs+1sMpI<<9<E<Oڳس4y<yxlyHOɚ5;!+jg6?wa^̻6wH3737wgN7ܲs FOE -.#"7wIk8S,+Ľď0~;T+K7II}қ[{M&->y*V{vY;v}u}88:_:qv<x㷎?9>v|8ICsBRgo8<BLU)_mJXIٮts%\C{uW&+ pg'-ܯ_)̅*=={<u:Nϻ#=$kJeYMW$GIZU˹iv%D$jtO;lǣE*`}{wEE]:VG+sѢhVD^VFJR{eEuO?WN|bωϝx3':'N<MG7G<Z -h䟑#_ED>|M"DFD<y*dG#D~y8PdG_F5rKdSȪHS!R"C#[$.b"RFĞhϩ#=pC=;{vl[{li빤➚9=zz -{L3잱==czrzՓՓq8{$$9~O^OI߇}~8c^_~C[m:tá>RgjﯽĉZ?m~ٗe~Wvq8X8@^B
[ -`
o -h| -p\k -bO80b}`%'ꃌ^݉r2}O>8'G";k40_ιDC0c+ -{F@(#ŃYPOI1)Sx1v -0F.*UA~~<WtWj`82W -bW
UA}PP
KA
Wc -t`c#b%j`,k`1]qnR.}\v
n
5Rc6pQgr0
97* -I%i$d!d(FĎΉR"n$HI&hr!^2<2MƑdH&d -J9d9GRHfYd6CJd.)%H)'RIH5Od!b\Le}
YOBn'}<Hvɯ.y<N#)y<KsH^2LډHKr$בm$dx4N#=n*"rtU ݤ RK&/T!)^dyyE@4&1kdlGV^4N%7k&r=Ln"[ȍ6&NWKv1$eb!:n`tkKy '1yߋ$h߅+¾<t`{Wj-Vz ':y] Au_<yTDȹvo[%KVl!Hu@`z"ogrp|jpmv/2V-饒Gꤟ͢.#d3λ͆zaVs
݆TSZ&2w^M^:X)eбߛwDB[DU#f+*: K -tW9
{UK - /7ӎ+$y}9 t_IɆd!GHFCg>< rX"$&gxĉ6"%iēdSwY}/ -7 -yB!
5oi+ѠF XraB1{|zr
yx\U=~%x:!f!oT?VSCON2`rzD]:.GFM4(WԩՑo}svc3-N<y36
bZjq&տ(r`=sGXٍke3&-X{5]PZG9m:r$Kq:{h%ÆoAH -d[,lq9.1ΌԎ˗mBiA"MkBj%.f6
(Ib*K3$TN|dIDظ~!5nE=).tRӄk_~I=`F۲^kH*Pd}s+"Fٻ(<\PiH8*WbmHjFŲ%dL%AdJ`J[ohD2$)HE9&8z0uxLC
v?.n<[4i$݇4K,\kuxmq⳧,/XCnZ׆s;<kFun,%q&Y,B~M nl$ff5"WL*u8VNsEɮ0]/%~.ܫ]=[Zv2of:C%<
NҒ<}1 A -7=I46$o6l0%%F-Em߾}Zc'%
!<aQ4h{>l1{&%̹k5#*r71_!vÇ
C9==-ɖhMe'[,r;#ݙ!id4[]閑!fC|n3-cpZ2SiIB$I\C״ȷӎc+go}&;zы݇S0%iT {+ɠx#_%^3oACrڇ$䎟[5)Iyg5}P7X0w1=^TҲxuOuW-2}UO]qn~gJ˖M>7ebobT^n:C^)/1/XG2f`r洔=gH:p\]*H27~}ZaKqCg[Lbu;9iBVvS+b -α&K19ɊKɏW\R:Y(\(-LphWԕ>9pac8,c:`}PrXVO!4/KMMS3rH>LJHPV^CjftiĦѫ*aN͞۷F+#RiD!ق"O$d"#u1Z㕖p )㡿ѤwC9a˼uO̼j`x}ԧ/"Ջ94qb Mv]ٰ7.5Ā_%m<d":$"C,CmINKKO!lې>l萴T TNIIl82v7wQd%=ùBɹ½#ԋ;
wm2wF9n>1>}[+6YZeeK lx<r$Ӵg/,}e6?>R<M xx˰PJT"+z)=2nP)i?=Mo#2yiu{%vnWɓMnvJY4|U?lwK/AO9 $Y](3%E!_dlY1Z'I&`aym·ovJ}8VѸn_Q0Gr:(B"2[,F2ْJF!bYDS1C<Ҫƴ#bgw~qE<fJ*{u JN:Z$VjwK NI?>'<%ߙ|2e֢ڡ'T?#~Jދ~7:[Os=!LFV3WGY"y?OQO;|J|Y$%_N6TXi6yM~|^߳/MFH1*p-n`} 3HB]!XS},xq>6tq>6$q>F'# [3LP<(%3^\X cX*}LXa>0~Vd(c}GqBJxJ[IsIgH,3U82bBf`M -)!XQ!iG!B* -|-^.W)lnV*٪RW%J]!R|UimnS_S+d9ZiL5b\Rl /<)e -RkBX_"PSU;~@1~1nc̍1c|$a=b[0\Hx $Nchboyn -6+mg)\g5Z%?Rt߷pOxYU`lW}M<c֫6IlQ;^b_рuLF}_
b7c}B?Sa>3IӒ7.gѫkޮW -m:d%smhW@di^8iw'B+{{_qΊ!^=cgv_2ϷXҮHGr|7Eap_Q~\Z=GXk9)'eb|qUMJ0ĝbVRn1f|NKQoF?(jeEG1U<̖؎k6ͻQúj;lE}\JU9$JПeW1Rl\+,]Bn#Fќ J\uUܞ\gM2,t)h$X`FXͥ`^!ӧg\YMr˕i F%W&^U\R|5CEBЏэlNa^or;s3=fEfޕ2ۋ˟ -&{3X9St8sKUc1֗hXuVŽ;<{1Um7P-C}Zh(ԿgYtu9ӭb1_U}]kY<a1?㳼WQlݿR;4Z1=XT?OW]8Nn<w}]iۯ*<moVڙӿ;{J~c݇VgݯZ/J#ۙt~O-\i֡LK/}[`BgOPyqޙ0:lAO탞~1]~m3U0'sug}6a~z_1jaI=Ic<-/R2*(`\_xkm^h)ޗ1?c{A n-J~0"@1 -և;ash.I{=p2&(TplKu~&IgS10-M:#]3%vUZ\kP/lWB L8mc:-o`nho -(̶7]Q5XePNUX3.ISk}EW.aC`{C.oEx;G?ߍan{j^g&ÕmmyzMfM`AY%?*6z@>=[p
~}+JSVJV[*JTk*ݯWW}/ S}//@_Rz,Rb}aoto}^{TVJgDgӧOmO*pyJNS#*^CC[dC>&?[}ޚ84}
e>ӻUzם.iTzJo_$>"nUm[*e+yJoRyJoT&ޠҍQ'
-
iLOׯ+WkuWJ^)_^[ ]IVU[شVW -endstream -endobj -4317 0 obj -<< /Type /FontDescriptor /FontName /GMFTGJ+DejaVuSansMono-Oblique /Flags 4 /FontBBox [ 0 -208 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -208 /ItalicAngle 0 /StemV 86 /XHeight 547 /FontFile2 4319 0 R /CIDSet 4318 0 R >> +<< /D [ 4309 0 R /XYZ 81.145 678.169 null ] >> endobj 4320 0 obj -<< /Filter /FlateDecode /Length 477 >> -stream -xڍOo0=8!h"TD -z
fE쬓kVVhof̘я Ԟ-goԪ^F*dB$H={ժRjUwc+YzAߢG:VKb>r_]+T6vWu'?rf4쪆J{r͋')rU۞[or&C'J -}1/BlvTAy9ög7hAG6(}ӜȺb2&` -ٽ5JӪ;_W0_*AmSy$on36_O9?pT*K458y(Gh(%YdL.(݁%^z;9h -@OpYg))(g -1|g:0[7K{>w_ZŻ+j7ZIjl{|6K/?' -endstream -endobj -580 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GMFTGJ+DejaVuSansMono-Oblique /DescendantFonts [ 4321 0 R ] /ToUnicode 4320 0 R >> +<< /D [ 4309 0 R /XYZ 81.145 667.21 null ] >> endobj 4321 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /GMFTGJ+DejaVuSansMono-Oblique /FontDescriptor 4317 0 R /W 4316 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +<< /D [ 4309 0 R /XYZ 81.145 656.252 null ] >> endobj 4322 0 obj -[ 3 [ 602.1 ] 6 [ 602.1 ] 11 [ 602.1 602.1 602.1 602.1 602.1 602.1 ] 18 [ 602.1 602.1 602.1 602.1 ] 29 [ 602.1 ] 31 [ 602.1 602.1 602.1 ] 68 [ 602.1 ] 70 [ 602.1 ] 72 [ 602.1 ] 74 [ 602.1 602.1 602.1 ] 78 [ 602.1 602.1 602.1 602.1 ] 83 [ 602.1 ] 85 [ 602.1 602.1 602.1 602.1 602.1 ] 91 [ 602.1 ] ] +<< /D [ 4309 0 R /XYZ 81.145 645.293 null ] >> +endobj +4323 0 obj +<< /D [ 4309 0 R /XYZ 81.145 634.334 null ] >> endobj 4324 0 obj -<< /Filter /FlateDecode /Length 20 >> -stream -xڛ$ -endstream +<< /D [ 4309 0 R /XYZ 81.145 623.375 null ] >> endobj 4325 0 obj -<< /Filter /FlateDecode /Length 12930 >> +<< /D [ 4309 0 R /XYZ 81.145 612.416 null ] >> +endobj +4326 0 obj +<< /D [ 4309 0 R /XYZ 81.145 596.476 null ] >> +endobj +4327 0 obj +<< /D [ 4309 0 R /XYZ 81.145 585.517 null ] >> +endobj +4328 0 obj +<< /D [ 4309 0 R /XYZ 81.145 574.558 null ] >> +endobj +4329 0 obj +<< /D [ 4309 0 R /XYZ 81.145 563.599 null ] >> +endobj +4330 0 obj +<< /D [ 4309 0 R /XYZ 81.145 552.64 null ] >> +endobj +4331 0 obj +<< /D [ 4309 0 R /XYZ 81.145 500.834 null ] >> +endobj +4332 0 obj +<< /D [ 4309 0 R /XYZ 81.145 489.875 null ] >> +endobj +4333 0 obj +<< /D [ 4309 0 R /XYZ 81.145 478.917 null ] >> +endobj +4334 0 obj +<< /D [ 4309 0 R /XYZ 81.145 467.958 null ] >> +endobj +4335 0 obj +<< /D [ 4309 0 R /XYZ 81.145 456.999 null ] >> +endobj +4336 0 obj +<< /D [ 4309 0 R /XYZ 81.145 446.04 null ] >> +endobj +4337 0 obj +<< /D [ 4309 0 R /XYZ 81.145 435.081 null ] >> +endobj +4338 0 obj +<< /D [ 4309 0 R /XYZ 81.145 424.122 null ] >> +endobj +4339 0 obj +<< /D [ 4309 0 R /XYZ 81.145 295.604 null ] >> +endobj +4340 0 obj +<< /D [ 4309 0 R /XYZ 81.145 284.645 null ] >> +endobj +4341 0 obj +<< /D [ 4309 0 R /XYZ 81.145 273.686 null ] >> +endobj +4342 0 obj +<< /D [ 4309 0 R /XYZ 81.145 262.727 null ] >> +endobj +4343 0 obj +<< /D [ 4309 0 R /XYZ 81.145 251.768 null ] >> +endobj +4344 0 obj +<< /D [ 4309 0 R /XYZ 81.145 240.809 null ] >> +endobj +4345 0 obj +<< /D [ 4309 0 R /XYZ 81.145 199.963 null ] >> +endobj +4346 0 obj +<< /D [ 4309 0 R /XYZ 81.145 189.004 null ] >> +endobj +4347 0 obj +<< /D [ 4309 0 R /XYZ 81.145 178.045 null ] >> +endobj +4348 0 obj +<< /D [ 4309 0 R /XYZ 81.145 167.086 null ] >> +endobj +4349 0 obj +<< /D [ 4309 0 R /XYZ 81.145 156.127 null ] >> +endobj +4350 0 obj +<< /D [ 4309 0 R /XYZ 81.145 145.168 null ] >> +endobj +4351 0 obj +<< /D [ 4309 0 R /XYZ 81.145 134.209 null ] >> +endobj +4352 0 obj +<< /D [ 4309 0 R /XYZ 81.145 123.25 null ] >> +endobj +4353 0 obj +<< /D [ 4309 0 R /XYZ 81.145 112.291 null ] >> +endobj +4354 0 obj +<< /D [ 4309 0 R /XYZ 81.145 101.332 null ] >> +endobj +4355 0 obj +<< /D [ 4309 0 R /XYZ 81.145 90.374 null ] >> +endobj +4356 0 obj +<< /D [ 4309 0 R /XYZ 81.145 79.415 null ] >> +endobj +4308 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 355 0 R /F63 356 0 R /F59 368 0 R /F84 449 0 R /F66 358 0 R /F81 401 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4359 0 obj +<< /Filter /FlateDecode /Length 2537 >> stream -x |E7^3I&3!!Lgd8$KE@Hb.cLH -n#ԏP}z7QQ)!hǤLV5eI[HR!H:;h=>hzQb',AAߜGH4Xĸlְf>D[FL)G"^ޖ>>NI`,`~n`7l-{ȥrG>$%PJ2MTV&բ1j?եQWjD]ަTQPWRw{[mVVmm=f{¶mۻx)>,>:>6?6`KWĿ99Yltnt>|7Wo:u~lv~<w带fvr-u:iY4hWhdmvv[mw$D&&MOp'HHJ01a;qk5_p~$xzxFxzx -=%k<s=AOsggg~sxR$=ho7NNyyg{ywxzx~j׃^0$bH__W[wsr\+919y[mmmwmgۥ[olWzޡwvf.m?i4@ʖBitXHBPP/PpPp{}+ϓk-veybW*(3ra(HP3@Az\|k(X)PpmQgm{lo -> -$ -dz&x&EٞROg(XY< -@y[mmwl[n}{z(xݝ/uBo:wt>d':·;輯sU:+:wwvNԙ9sBQ:#:ML?}^=[3p=U{u_{z/ݢg8{gzۆ
nmKls9k~%imk=mmK;oo}u{뵭e٭WhZ:ub֬1&ZlMjZ[Ƶƶninju[mVKkX*C?[k[~r坖ZhƖʖ-y----kCs[#5l\O7?ռ懚l~y}6uw6i^ݼۚ5/nm.n&'"D /p;?ww_s|W_x|c3%~E_U>??ϦVX
"Ҷ'ٳF'#nX81?kqA8P%;vwAAZ@߂~
:
j= 'Ӡ hEzMD٠-(iC*6xIѤ@sAo8@@@7NrJJC*Ioa߃
~Ԁ;ho0H
MIG:F=k
r@Z=\k -> -rD<|hG>'NIJkƁ;XS`?g sY>ljM| ;Uy'|"'
ʏhaKh7˅mU'gF|8F<8!x -t"W9Ϡ: -aV1VGװ -&xl.ďk:5 סeBL\B^DWh9D>.BU\>EZBPs!g^.:F4iAҒ2IWKB9P
BB7
1\Ҡb<mA&~ABO
FC>АM6A
}Gk&`&A2$( tB$g{0o.+MxLA5hdyd 04}ȗl 2&L4Ȅ|Pz &`i8qdFtCF7on/qaF\aG7d簻}\Gݐ\v{~r9ލ} 3lFp5#O1Ȍx7#y;<\6{`;3?>,qFyda{[h!yg8{<x -C{c<G|A-~aǠ0@aMҥ @$` J,gRыZދ-",M^,8#1/ldSB -'^^yL3Ȋ&FV{3 -yqfzqY!xq.Y/C{ +|ㅏu/?V1k8!ipAVa0r`Ê`Y!G+|d|bpXV÷qY1/eS2LsXloCζ"lC-Gom
nV۶d?^7 -%C;oGiG~i8ڱ -;G;bW8Sڹ=avxƷbL
tDI@gEw;qt"7z*A$&B?Џ@|8,i)ԓ~XɈL&b&a@b#N$"$&$!}I?ҟwxI n$$% 2!>2$J.!idNFd&ced,\AI$Y$#9d<@&\2L&yd -'\IH1)!S42 3Ujr
Ef9d.ALJrYC%Gcdyl%Om)4N!ϒ9@~K^$HyBW^ -ddAvCޡPwvw#>i'SLYY+aB[9e:4<'o
Eg#V=^na藼#F)#/-,}wYs]k͙3|stjTaK?o@SH:n֯ooկMfJ`xB2Yڠ2
afdN</L;͓2"q 1swtd[冼I?nrݙOD'*ק/헨Jݱ-bCzl"Q3mgk~GІ"My6ӝGqWai2lfQ =Ѱƍwo)\zd+nP×}(%7^eDH[3U21:a_uGH(D/FH -{N}D%2P4?N"mI1t;cEG_?ݲng:Wnd[B˛Ui31+PZug~T -FSyTYMϚTiL<cOvk 6KUXl1Zx\3JX_;`oƸ'!ad5`
9;Љ<~NGfħRԄTfn6[6[9ns}m({XQ#F9<#lH1|etD2v}X'^c7,|9{e/,{p?;{e{fy$Mv]M惗坽ek`k[q&(^Çk"tCR2o'kv׆e -'ii'C I?}~Tj"dӈN OLrI.;Oi"|0?YϾ癹d2^<^:Z/ޱˮ_9f@DPNFͨeM؝j]T]A_볶ވLo뭒QwChCӧ`kT1 !yb$Ef1fgt܌OG7Z]}[~ h8?}S;yMD(G11'Ƣ{m$2C jTTD -#̲+uKaLTk^S;0 -E++g~L7w/]S50&ex"d栗bjlo}&4OQS"M㱟3dNG3v/1+κcOˋ[3fLHST5ՔjN
KZ{ǦǥI/z|s[&/SLYY^.n]u}[]: -I!-:fQ9gXye7>r[>nH֘<O~ tF.;C<^Ґ.٬.9L2Yb.gV3bu[&uloHA?ՖkR9T}cŮ'^T8E&L|tE(eC |)eqٻ.IwyŻJ
1l'j<+'O>tg3]"\rެ<]gS̑lq]5=+MF{H<FyTFg7w:DyD?ݻi:zEF'Ͼ -b%OeLaRqn&(2($jLKlj1Maf)blR'U~8:]N^Tދop8Le´6T,y*y}$N0~nȳjtDowMza:zg<D_ӥR>Z.kω{?ն>K橄-mئJ=vz}ugIy7t;lE/IY.X+*>?+@[QNy]a38>]K rr_JIBiq\O:yΦ[>߲o2@GRM|Lo%3Hs[ȧHdYh³'=LMmC:+ԗLguNoe_ -N&Ef2B}+ -#0Է?ږD̴8g+$ꫤ?&7?Է1RQ+Iz&ԷrW9&դ4ZRAD#I)*}Zdz0C#YSO@$H -$HQ7:qDĚE`CZpF0s2_5pw
-Ӱ=mvuMcmzm` --5u6Q˪
+}ZnUipVgiE`` 2.xZVZAJiTTW+9S G[bS쯪ӦTWa$ ->EhkɠW+|A!5cRR`!4XV];?\=$HVM~.(bHG;Sƚ_tYQª0V
,\BRp;kw5_R%P|`n
\B*&;Zp@Ki]<DžJBjBܻ8ن"{-<D['*H?@eR/t٧!<plGj]]
n۵ǿRH 6Y,0P.rB}2bF]kC!mwxR}B_)"/iUke9CښnD_s-v芆2SB{|h%ŌRϘCYCb"$%U~pzsi&N}(Λ+5=iBgSvk3g}h4 -yD༓ϳϭ6i얿RD_完ee=cĐ4=Qu~]{5_( $aǵ)ȡ~]{\h_ԩg0$yIB\LF_ź굡UǷk]qs)yX, -n/\wh3b'sf6p"녝B]qEf
vC柏r5օd -Dk],ĉP%^W?:=sQQ~qu s^@b@O_k5/#sRIاS2d1
\Lq/8}αLEgb5bp+3)CWdcd*yF -
iq%GH`x([]L1cTr}Ɖ|bԐ "4%9dKCni;ф%o*o2ov&Sq4U)P v=gJO<e -M&t{BMk Ba<1vBm
LnБ{JTZ?wv~~Ȼݾ.(UX20^S{ ˏSC,|vQ'w>߃Bw[+Zxީ=sUi#,<A̭`Q#?gֹg5NdoWan٨guQuW%Q],w=Zj<Չ}
B+.eԗ~Q-.b͟;.|B罱bѯU&\\>~Oŵ<Ut% -ׄ*y=[|v&ۯ~}ۘԡ2>'y qMBx2D߅jAm^paAڿ3b9xZ֯߹Z.ع"j@_@.R:1<X^kUO+Xk}Z}jjuXP= -WT.Ϭ/kKK+k0O/w)XUI܃,K+,mV<eaぜXW/݃$@CiP T@y
A!y|R +x[Ɏ#9WJ%Q4H朷A_{N!
4 +r($E9S^_?_?~= sVH|C\#.Ƌтq-._g?x IzXX洖#@3a`4?(?+ +ʷ\5q[-厺od|ȇ7-؈3WsJŔ#u(q
w?V &Mf]MW6<Zr>5zڞ{EKJRvzJ{xD*B]Kc\ m)%@$YN
;JvVj 6 +nnEI-)vL|#2p9 11De@v62?A@w<AWȻB,euxWKZMxV +aYp
Iʃ-ey=$ǔmv0-ˮhLJf +(Gm+dc^Aptɳ x
OSF\0 +Ƀ>ͭ0POVk"b.`*;n~Cm~nO~/ƳU-sJ`M=crtZ"u շ ISZJ0>"oXZxTGڋ"Nob,R6z%I{6ON߭Tp=ʿ-PX?>gg_7bHTѼG13KN=WD)rȭ?ܢ2HgsCҎ[Y +f$V -
APU]7+5`Pj^0d5ӳ -*kU[o Q!w+euͿCL0/-jXu6֔ER0+䩻p'q`=\$Ks!bF<C SǍ}"A.h(6Pcy躅P"8+[_S[7ǔr8η;P >?
γuydqG< ^&KC1bUuwuVHZ151G__/YkErܙŸv%hQ_2S+e&i93 -r"-wJa^nr͟ea]~A;%LK -ܜblJNQD\ffisK9`ffO, -8_]r@ 0.(Y;abJ0J2L,@"MLIL㋋'fiY%%E9S\n S,-ײrJfV^!T̝eNɜS|n>-9srs2|ZqaNv.E9%b&lK qs#-$C]Χ[9>-(0 -,Y\[Qd0Z[qC(
UjwP`]
NEɘ[3!IEUYumeHua1]9^/xudMUP}\x7ZPSW,H@:>&%$얖јd1d=a^&'^;D!vIķM#zH#R\D|[I-_e&6|D_sї8#3uR֡v~}߶V^gTֲeIʙL|:?R[}NEg'!Il|?SzWoWZ[):kǚuvb;aǾ}ч]>g:˧1_tid=b?OwZ?Űư#82}hQ>-}Agv(g5;:^ٛ:{Cg?Ak:~پp=^,=e+{WfW2=e^Ϛe*/l]?߂:{!(Cggٳ:{FgOG:{IT{ƶmu(C'LJtEgl> -Mguv#Kݢe׳oZܬNvΖ
:[E:kW"YC%~\2Z]UW+YU@Udu ]4V#,J9R#veu6Wgst6*2f5oqqu4ʀlΦlj>4VbʥPg,_gSPe٤8e(Ʊ9qDMՄ +w=%;d?ը5zJBu6鄼>ML˕Y*饧D[c5,e>}b|Tx+9 -4NoT|XѶcQ +T()bbw=x3'3qg]OU>h(@ubuBF]WTp AxҼճO.ezJmH.`+%iZD2%ބ4z:,;<ё8YBuS+8Eθd٥۪i(3 +.J!y~ 5$\K&ēZo(5Hy`@ >S&:fOWmTG3<JW_)DJ "[3&}^( (&<kIAOo;>D.Rs&)h|^#',eFJOxϐ(s&FJKe.iZ-Ѷ ]n:]>@qYجS\o
{MRxsӛ}T
_ū'?)(tډ[?#,O~TN7xJMY[50j@sG\jTCz_oPe6e$`YY9=xserOW@]Lu>I,Z)]D>:vp.3pH߅j9 0=)4ϵ-vK<.⋞:%oyqq
1_N3m;m(E̺馓1+߿Mu@[\%{h"Tx4Rر4OzB-po^c1TEbN)u5)OJ3Gu0(;_=ŀ2r5lS4S[tg`3iE9=j<
W3y9%mmA 'y*'{wLLAOsY L9@iqeVt#"}?=ӎhqzh f&˳>%Z;:SOBwZ]p(`\x*f L;sBkƸeq endstream endobj -4323 0 obj -<< /Type /FontDescriptor /FontName /FGWDXK+DejaVuSansMono /Flags 4 /FontBBox [ 0 -208 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -208 /ItalicAngle 0 /StemV 86 /XHeight 547 /FontFile2 4325 0 R /CIDSet 4324 0 R >> +4358 0 obj +<< /Type /Page /Contents 4359 0 R /Resources 4357 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj -4326 0 obj -<< /Filter /FlateDecode /Length 507 >> +4360 0 obj +<< /D [ 4358 0 R /XYZ 78.37 808.885 null ] >> +endobj +4361 0 obj +<< /D [ 4358 0 R /XYZ 81.145 768.829 null ] >> +endobj +4362 0 obj +<< /D [ 4358 0 R /XYZ 81.145 757.87 null ] >> +endobj +4363 0 obj +<< /D [ 4358 0 R /XYZ 81.145 746.912 null ] >> +endobj +4364 0 obj +<< /D [ 4358 0 R /XYZ 81.145 706.065 null ] >> +endobj +4365 0 obj +<< /D [ 4358 0 R /XYZ 81.145 695.106 null ] >> +endobj +4366 0 obj +<< /D [ 4358 0 R /XYZ 81.145 684.147 null ] >> +endobj +4367 0 obj +<< /D [ 4358 0 R /XYZ 81.145 673.188 null ] >> +endobj +4368 0 obj +<< /D [ 4358 0 R /XYZ 81.145 662.229 null ] >> +endobj +4369 0 obj +<< /D [ 4358 0 R /XYZ 81.145 651.27 null ] >> +endobj +4370 0 obj +<< /D [ 4358 0 R /XYZ 81.145 640.311 null ] >> +endobj +4371 0 obj +<< /D [ 4358 0 R /XYZ 81.145 611.42 null ] >> +endobj +4372 0 obj +<< /D [ 4358 0 R /XYZ 81.145 600.461 null ] >> +endobj +4373 0 obj +<< /D [ 4358 0 R /XYZ 81.145 589.502 null ] >> +endobj +4374 0 obj +<< /D [ 4358 0 R /XYZ 81.145 578.543 null ] >> +endobj +4375 0 obj +<< /D [ 4358 0 R /XYZ 81.145 567.584 null ] >> +endobj +4376 0 obj +<< /D [ 4358 0 R /XYZ 81.145 538.692 null ] >> +endobj +4377 0 obj +<< /D [ 4358 0 R /XYZ 81.145 527.733 null ] >> +endobj +4378 0 obj +<< /D [ 4358 0 R /XYZ 81.145 516.775 null ] >> +endobj +4379 0 obj +<< /D [ 4358 0 R /XYZ 81.145 505.816 null ] >> +endobj +4380 0 obj +<< /D [ 4358 0 R /XYZ 81.145 494.857 null ] >> +endobj +4381 0 obj +<< /D [ 4358 0 R /XYZ 81.145 465.965 null ] >> +endobj +4382 0 obj +<< /D [ 4358 0 R /XYZ 81.145 455.006 null ] >> +endobj +4383 0 obj +<< /D [ 4358 0 R /XYZ 81.145 444.047 null ] >> +endobj +4384 0 obj +<< /D [ 4358 0 R /XYZ 81.145 433.088 null ] >> +endobj +4385 0 obj +<< /D [ 4358 0 R /XYZ 81.145 422.129 null ] >> +endobj +4386 0 obj +<< /D [ 4358 0 R /XYZ 81.145 411.171 null ] >> +endobj +4387 0 obj +<< /D [ 4358 0 R /XYZ 81.145 400.212 null ] >> +endobj +4388 0 obj +<< /D [ 4358 0 R /XYZ 81.145 359.365 null ] >> +endobj +4389 0 obj +<< /D [ 4358 0 R /XYZ 81.145 348.406 null ] >> +endobj +4390 0 obj +<< /D [ 4358 0 R /XYZ 81.145 337.447 null ] >> +endobj +4391 0 obj +<< /D [ 4358 0 R /XYZ 81.145 326.488 null ] >> +endobj +4392 0 obj +<< /D [ 4358 0 R /XYZ 81.145 315.529 null ] >> +endobj +4393 0 obj +<< /D [ 4358 0 R /XYZ 81.145 304.57 null ] >> +endobj +4394 0 obj +<< /D [ 4358 0 R /XYZ 81.145 263.723 null ] >> +endobj +4395 0 obj +<< /D [ 4358 0 R /XYZ 81.145 252.765 null ] >> +endobj +4396 0 obj +<< /D [ 4358 0 R /XYZ 81.145 241.806 null ] >> +endobj +4397 0 obj +<< /D [ 4358 0 R /XYZ 81.145 230.847 null ] >> +endobj +4398 0 obj +<< /D [ 4358 0 R /XYZ 81.145 219.888 null ] >> +endobj +4399 0 obj +<< /D [ 4358 0 R /XYZ 81.145 208.929 null ] >> +endobj +4400 0 obj +<< /D [ 4358 0 R /XYZ 81.145 168.082 null ] >> +endobj +4401 0 obj +<< /D [ 4358 0 R /XYZ 81.145 157.123 null ] >> +endobj +4402 0 obj +<< /D [ 4358 0 R /XYZ 81.145 146.164 null ] >> +endobj +4403 0 obj +<< /D [ 4358 0 R /XYZ 81.145 135.205 null ] >> +endobj +4404 0 obj +<< /D [ 4358 0 R /XYZ 81.145 124.247 null ] >> +endobj +4405 0 obj +<< /D [ 4358 0 R /XYZ 81.145 113.288 null ] >> +endobj +4406 0 obj +<< /D [ 4358 0 R /XYZ 81.145 102.329 null ] >> +endobj +4407 0 obj +<< /D [ 4358 0 R /XYZ 81.145 91.37 null ] >> +endobj +4408 0 obj +<< /D [ 4358 0 R /XYZ 81.145 80.411 null ] >> +endobj +4357 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4411 0 obj +<< /Filter /FlateDecode /Length 1925 >> stream -x}Ko0]8oZH@`F}N!09ɂ?i -
(us=Bɏ9{V"T6hT?잉!>W-ulYww&y#S/hȺc-R6ч|lT>5;1c7c̵x'J>snXITg&W}l2(>RH d+lo/mG<(o6c7l;}qɋkyd -MƶoY5{yLcs6]b -PZ0= 0/¼ -1ܦpCK -- В@K -- fp_ ePdt&4{vծzw;fyC*uWk^?p4 +x[͎6SHbdynEd[%3)lgQ,'$*Z?^^/7_/f<(c4_BԚϏ_tPo3-qN /?Ohm!!{}ٰ|:6 ˸lqr'scwﹰd>ie4H>c*kFZ},AvJW0Wn(vӭD̔||TxSD=0i>ۺW* +y%eIFF:r]j$iW/HNDyhVhBcZ)mȩ|tgfY2lǔDm_H=ؙ +u32+{U,~F~ƂaHDCCb<BzZF~[^1X+c9_XX9fh"N#MHp٭oi`@SᜄtW}t}w,&5/7W©Oے?lj4wa<'L{&w㌝B[d 39zn +|8}|әպ_Tf4 6-b|j OOCC.}?-' f/t{Wwlj9պ+YF@y`Z[#"!pQtTޠdֽ9*둕O $nNu*},Q"sk2c8,ʡ9Q!]VϽ Ywu*6,^:o*?ssfE˫sbSB)w\43"}AiDmoK +]+=uz&`qx}J+T7Ƙ>JwAY1uc.~sxeT
i9
"#rV֒_"mz|_ +7ΰp,v $nhY55#8}O,cطXT ~eV endstream endobj -579 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FGWDXK+DejaVuSansMono /DescendantFonts [ 4327 0 R ] /ToUnicode 4326 0 R >> +4410 0 obj +<< /Type /Page /Contents 4411 0 R /Resources 4409 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4014 0 R >> endobj -4327 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /FGWDXK+DejaVuSansMono /FontDescriptor 4323 0 R /W 4322 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4412 0 obj +<< /D [ 4410 0 R /XYZ 78.37 808.885 null ] >> endobj -4328 0 obj -[ 68 [ 602.1 ] 70 [ 602.1 602.1 602.1 602.1 ] 76 [ 602.1 ] 79 [ 602.1 602.1 602.1 602.1 602.1 ] 85 [ 602.1 602.1 602.1 602.1 ] ] +4413 0 obj +<< /D [ 4410 0 R /XYZ 81.145 768.829 null ] >> endobj -4330 0 obj -<< /Filter /FlateDecode /Length 15 >> +4414 0 obj +<< /D [ 4410 0 R /XYZ 81.145 757.87 null ] >> +endobj +4415 0 obj +<< /D [ 4410 0 R /XYZ 81.145 746.912 null ] >> +endobj +4416 0 obj +<< /D [ 4410 0 R /XYZ 81.145 735.953 null ] >> +endobj +4417 0 obj +<< /D [ 4410 0 R /XYZ 81.145 724.994 null ] >> +endobj +4418 0 obj +<< /D [ 4410 0 R /XYZ 81.145 714.035 null ] >> +endobj +4419 0 obj +<< /D [ 4410 0 R /XYZ 81.145 703.076 null ] >> +endobj +4420 0 obj +<< /D [ 4410 0 R /XYZ 81.145 692.117 null ] >> +endobj +4421 0 obj +<< /D [ 4410 0 R /XYZ 81.145 681.158 null ] >> +endobj +4422 0 obj +<< /D [ 4410 0 R /XYZ 81.145 670.199 null ] >> +endobj +4423 0 obj +<< /D [ 4410 0 R /XYZ 81.145 659.24 null ] >> +endobj +4424 0 obj +<< /D [ 4410 0 R /XYZ 81.145 648.281 null ] >> +endobj +4425 0 obj +<< /D [ 4410 0 R /XYZ 81.145 637.322 null ] >> +endobj +4426 0 obj +<< /D [ 4410 0 R /XYZ 81.145 626.364 null ] >> +endobj +4427 0 obj +<< /D [ 4410 0 R /XYZ 81.145 615.405 null ] >> +endobj +4428 0 obj +<< /D [ 4410 0 R /XYZ 81.145 604.446 null ] >> +endobj +4429 0 obj +<< /D [ 4410 0 R /XYZ 81.145 593.487 null ] >> +endobj +4430 0 obj +<< /D [ 4410 0 R /XYZ 81.145 582.528 null ] >> +endobj +4431 0 obj +<< /D [ 4410 0 R /XYZ 81.145 571.569 null ] >> +endobj +4432 0 obj +<< /D [ 4410 0 R /XYZ 81.145 560.61 null ] >> +endobj +4433 0 obj +<< /D [ 4410 0 R /XYZ 81.145 549.651 null ] >> +endobj +4434 0 obj +<< /D [ 4410 0 R /XYZ 81.145 538.692 null ] >> +endobj +4435 0 obj +<< /D [ 4410 0 R /XYZ 81.145 527.733 null ] >> +endobj +4436 0 obj +<< /D [ 4410 0 R /XYZ 81.145 516.775 null ] >> +endobj +4437 0 obj +<< /D [ 4410 0 R /XYZ 81.145 505.816 null ] >> +endobj +4438 0 obj +<< /D [ 4410 0 R /XYZ 81.145 494.857 null ] >> +endobj +4439 0 obj +<< /D [ 4410 0 R /XYZ 81.145 483.898 null ] >> +endobj +4440 0 obj +<< /D [ 4410 0 R /XYZ 81.145 472.939 null ] >> +endobj +4441 0 obj +<< /D [ 4410 0 R /XYZ 81.145 461.98 null ] >> +endobj +4442 0 obj +<< /D [ 4410 0 R /XYZ 81.145 451.021 null ] >> +endobj +4443 0 obj +<< /D [ 4410 0 R /XYZ 81.145 440.062 null ] >> +endobj +4444 0 obj +<< /D [ 4410 0 R /XYZ 81.145 429.103 null ] >> +endobj +4445 0 obj +<< /D [ 4410 0 R /XYZ 81.145 418.144 null ] >> +endobj +4446 0 obj +<< /D [ 4410 0 R /XYZ 81.145 407.186 null ] >> +endobj +4447 0 obj +<< /D [ 4410 0 R /XYZ 81.145 396.227 null ] >> +endobj +4448 0 obj +<< /D [ 4410 0 R /XYZ 81.145 385.268 null ] >> +endobj +4449 0 obj +<< /D [ 4410 0 R /XYZ 81.145 374.309 null ] >> +endobj +4450 0 obj +<< /D [ 4410 0 R /XYZ 81.145 363.35 null ] >> +endobj +4451 0 obj +<< /D [ 4410 0 R /XYZ 81.145 334.458 null ] >> +endobj +4452 0 obj +<< /D [ 4410 0 R /XYZ 81.145 323.499 null ] >> +endobj +4453 0 obj +<< /D [ 4410 0 R /XYZ 81.145 312.54 null ] >> +endobj +4454 0 obj +<< /D [ 4410 0 R /XYZ 81.145 301.582 null ] >> +endobj +4455 0 obj +<< /D [ 4410 0 R /XYZ 81.145 290.623 null ] >> +endobj +4456 0 obj +<< /D [ 4410 0 R /XYZ 81.145 279.664 null ] >> +endobj +4457 0 obj +<< /D [ 4410 0 R /XYZ 81.145 268.705 null ] >> +endobj +4458 0 obj +<< /D [ 4410 0 R /XYZ 81.145 257.746 null ] >> +endobj +4459 0 obj +<< /D [ 4410 0 R /XYZ 81.145 246.787 null ] >> +endobj +4460 0 obj +<< /D [ 4410 0 R /XYZ 81.145 235.828 null ] >> +endobj +4461 0 obj +<< /D [ 4410 0 R /XYZ 81.145 224.869 null ] >> +endobj +4462 0 obj +<< /D [ 4410 0 R /XYZ 81.145 213.91 null ] >> +endobj +4463 0 obj +<< /D [ 4410 0 R /XYZ 81.145 202.951 null ] >> +endobj +4464 0 obj +<< /D [ 4410 0 R /XYZ 81.145 191.992 null ] >> +endobj +4465 0 obj +<< /D [ 4410 0 R /XYZ 81.145 181.034 null ] >> +endobj +4466 0 obj +<< /D [ 4410 0 R /XYZ 81.145 170.075 null ] >> +endobj +4467 0 obj +<< /D [ 4410 0 R /XYZ 81.145 159.116 null ] >> +endobj +4468 0 obj +<< /D [ 4410 0 R /XYZ 81.145 148.157 null ] >> +endobj +4469 0 obj +<< /D [ 4410 0 R /XYZ 81.145 137.198 null ] >> +endobj +4470 0 obj +<< /D [ 4410 0 R /XYZ 81.145 126.239 null ] >> +endobj +4471 0 obj +<< /D [ 4410 0 R /XYZ 81.145 115.28 null ] >> +endobj +4472 0 obj +<< /D [ 4410 0 R /XYZ 81.145 104.321 null ] >> +endobj +4473 0 obj +<< /D [ 4410 0 R /XYZ 81.145 93.362 null ] >> +endobj +4474 0 obj +<< /D [ 4410 0 R /XYZ 81.145 82.403 null ] >> +endobj +4409 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4477 0 obj +<< /Filter /FlateDecode /Length 2377 >> stream -xk` +x[nc9+H @\uvάӶЍε$E̙:?_~^=If@8}E'Nɓ&8OrN/z/܃9W#OY"45 +_Kwk.ER϶ +3ak8ǽ}G|\^12I[ֈAݨ2<htL7Xhe]@u,EZf.
qTDӪ <.UpE}#Ŕ'ʻҡ(81bV{b-R c]nI[rwHc2yˁF2bBwHEPZ'U"]D5.۲@%M]zxJTZBO +I_oDz:/hM`T=!ճ;¤ROĕ7G{R1ãKo5?!9#ӵWptHe}^z#XFzJ7ȩSXt%ƲA}fsatC>oZ@F:.>_gk)}nkIW艱@.Zo/>rUcbL8 +]e}<%#cJ?N֍xW
VsyP]W,d^N'r`Jtϐoma[-XP)W.∃LY'ʵ%=4y 状bnN ЃU,76M.܌aHic}y?va2#y+)0h@A'9/1zSa>5s#ܥoI^Ye0kYO~ZӦ21G}}f!mLѳ;q쫥cV쐆M\4U!UHOaTgB1gATmO{:>wJuw6%e^f][0
ue_ +#p_?)avd*ZU&[ǰU +`{/~`l垊-ҬKo[S&-VUXCgiԦ\m'/1$W.K~Ϛ썭"C!)Zr ;uJz;j-o})'hG7MgVPZ#3J)(ϲZ h΅!]JV3}+.=ɭa~,DN +˄a +ஜęGoqk] -S\4dҝ^?:3h_s4Į8sgkYan?h@W9lmnmVdhƷrֱbbfŒPCe.Uν:5{VZKZ+QuNo΄3uVJ_ϗɠ endstream endobj -4331 0 obj -<< /Filter /FlateDecode /Length 10706 >> +4476 0 obj +<< /Type /Page /Contents 4477 0 R /Resources 4475 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4532 0 R >> +endobj +4478 0 obj +<< /D [ 4476 0 R /XYZ 78.37 808.885 null ] >> +endobj +4479 0 obj +<< /D [ 4476 0 R /XYZ 81.145 768.829 null ] >> +endobj +4480 0 obj +<< /D [ 4476 0 R /XYZ 81.145 757.87 null ] >> +endobj +4481 0 obj +<< /D [ 4476 0 R /XYZ 81.145 746.912 null ] >> +endobj +4482 0 obj +<< /D [ 4476 0 R /XYZ 81.145 735.953 null ] >> +endobj +4483 0 obj +<< /D [ 4476 0 R /XYZ 81.145 724.994 null ] >> +endobj +4484 0 obj +<< /D [ 4476 0 R /XYZ 81.145 714.035 null ] >> +endobj +4485 0 obj +<< /D [ 4476 0 R /XYZ 81.145 703.076 null ] >> +endobj +4486 0 obj +<< /D [ 4476 0 R /XYZ 81.145 692.117 null ] >> +endobj +4487 0 obj +<< /D [ 4476 0 R /XYZ 81.145 681.158 null ] >> +endobj +4488 0 obj +<< /D [ 4476 0 R /XYZ 81.145 670.199 null ] >> +endobj +4489 0 obj +<< /D [ 4476 0 R /XYZ 81.145 659.24 null ] >> +endobj +4490 0 obj +<< /D [ 4476 0 R /XYZ 81.145 648.281 null ] >> +endobj +4491 0 obj +<< /D [ 4476 0 R /XYZ 81.145 637.322 null ] >> +endobj +4492 0 obj +<< /D [ 4476 0 R /XYZ 81.145 626.364 null ] >> +endobj +4493 0 obj +<< /D [ 4476 0 R /XYZ 81.145 615.405 null ] >> +endobj +4494 0 obj +<< /D [ 4476 0 R /XYZ 81.145 604.446 null ] >> +endobj +4495 0 obj +<< /D [ 4476 0 R /XYZ 81.145 593.487 null ] >> +endobj +4496 0 obj +<< /D [ 4476 0 R /XYZ 81.145 582.528 null ] >> +endobj +4497 0 obj +<< /D [ 4476 0 R /XYZ 81.145 571.569 null ] >> +endobj +4498 0 obj +<< /D [ 4476 0 R /XYZ 81.145 560.61 null ] >> +endobj +4499 0 obj +<< /D [ 4476 0 R /XYZ 81.145 544.67 null ] >> +endobj +4500 0 obj +<< /D [ 4476 0 R /XYZ 81.145 533.711 null ] >> +endobj +4501 0 obj +<< /D [ 4476 0 R /XYZ 81.145 522.752 null ] >> +endobj +4502 0 obj +<< /D [ 4476 0 R /XYZ 81.145 511.793 null ] >> +endobj +4503 0 obj +<< /D [ 4476 0 R /XYZ 81.145 500.834 null ] >> +endobj +4504 0 obj +<< /D [ 4476 0 R /XYZ 81.145 489.875 null ] >> +endobj +4505 0 obj +<< /D [ 4476 0 R /XYZ 81.145 478.917 null ] >> +endobj +4506 0 obj +<< /D [ 4476 0 R /XYZ 81.145 467.958 null ] >> +endobj +4507 0 obj +<< /D [ 4476 0 R /XYZ 81.145 456.999 null ] >> +endobj +4508 0 obj +<< /D [ 4476 0 R /XYZ 81.145 414.159 null ] >> +endobj +4509 0 obj +<< /D [ 4476 0 R /XYZ 81.145 403.2 null ] >> +endobj +4510 0 obj +<< /D [ 4476 0 R /XYZ 81.145 392.242 null ] >> +endobj +4511 0 obj +<< /D [ 4476 0 R /XYZ 81.145 381.283 null ] >> +endobj +4512 0 obj +<< /D [ 4476 0 R /XYZ 81.145 370.324 null ] >> +endobj +4513 0 obj +<< /D [ 4476 0 R /XYZ 81.145 359.365 null ] >> +endobj +4514 0 obj +<< /D [ 4476 0 R /XYZ 81.145 348.406 null ] >> +endobj +4515 0 obj +<< /D [ 4476 0 R /XYZ 81.145 337.447 null ] >> +endobj +4516 0 obj +<< /D [ 4476 0 R /XYZ 81.145 284.645 null ] >> +endobj +4517 0 obj +<< /D [ 4476 0 R /XYZ 81.145 255.753 null ] >> +endobj +4518 0 obj +<< /D [ 4476 0 R /XYZ 81.145 244.794 null ] >> +endobj +4519 0 obj +<< /D [ 4476 0 R /XYZ 81.145 233.836 null ] >> +endobj +4520 0 obj +<< /D [ 4476 0 R /XYZ 81.145 222.877 null ] >> +endobj +4521 0 obj +<< /D [ 4476 0 R /XYZ 81.145 211.918 null ] >> +endobj +4522 0 obj +<< /D [ 4476 0 R /XYZ 81.145 200.959 null ] >> +endobj +4523 0 obj +<< /D [ 4476 0 R /XYZ 81.145 190 null ] >> +endobj +4524 0 obj +<< /D [ 4476 0 R /XYZ 81.145 179.041 null ] >> +endobj +4525 0 obj +<< /D [ 4476 0 R /XYZ 81.145 168.082 null ] >> +endobj +4526 0 obj +<< /D [ 4476 0 R /XYZ 81.145 157.123 null ] >> +endobj +4527 0 obj +<< /D [ 4476 0 R /XYZ 81.145 128.232 null ] >> +endobj +4528 0 obj +<< /D [ 4476 0 R /XYZ 81.145 117.273 null ] >> +endobj +4529 0 obj +<< /D [ 4476 0 R /XYZ 81.145 106.314 null ] >> +endobj +4530 0 obj +<< /D [ 4476 0 R /XYZ 81.145 95.355 null ] >> +endobj +4531 0 obj +<< /D [ 4476 0 R /XYZ 81.145 84.396 null ] >> +endobj +4475 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F15 355 0 R /F63 356 0 R /F83 438 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4535 0 obj +<< /Filter /FlateDecode /Length 2041 >> stream -x{xTչ{=3I& .3gd ( $@$7pS&I2d̄- -E[V"UxCk-kJ=jZiLƞR=]kM9}eZ@I&[%uE78W@+||a!ƍQǧ2]vŬ 7jnn:vW<LHREK?wf?!L?IO ϓZڢj<wPobx5=6uH+<+@t ?#Ĺ#訸ޙ,OgL<S4k-}4JAE|2 2IMS(D
jpM]G~"1U7قQSbI$ Ml&ZxA>N EX"OşoO"h'^MwЛ}5z\Z+5J.tZNm -y|`4
Ɇ,0ϰp5\ebpV
3<kxp
um֛߶kk!g$[ma+ͷ]j6ٮ]o'4{m.}G۟3}?n?reJJjǥ5͎'Go8~SQ)*2errri蔝αNsNu8:R\WKqMs] -vzU]qYqn{{{Bw]q/ssAwJfݏMr̻;ᄐ=',Tzj=+<{:=y%?)`J
SS.k -r -==O-=<8u{@\gx\<«BpV$.+k QpPpXjnitP319M/ϐW>y`HDP -
W50 -[7rf>GG/ -(06kn`(sׁ{ٟ?co? XQֱ%ǯ984K - -|C*ags -p9w@X5Ujsrz(-P@&w{;`ĽĽ(ut_nt7#@6.kܹ[7G<ɞ|(Xwx -^ -3@1@A:G(0LqlQ gGgu#Pp >t'ߏ?,h@|}{ߍ#~[|[`|e.^_(^__ϏčqSO]YuP-Q窳tuQ]D5GV3լJN[85ԔSOyNrxj©qrN=##;{؇b~yC?vyتX}Xilal^XAˋ)1{lbl|,'66ˊeci1k,%fcI1)&?Y_?WrKW?oo7/O'[xپ}>{X}=HC}﮾;w{߷ٷoW};vm뻡ﺾ-}]}Ὰ>{ݽw{cszg[[[Zzͽ^>}?h?
_wyWOw7j\J}#/>zMj[gm?$_A{N b/^@ۀUP/P?cwANpNŹÉ8?%迁vO%Vj</g>u@?5p
_E@:NSN7joCH#BJ#&46 -DhHcho҈Eo݇h\Oh:h¿R#8Jalw
BKgig_ ڃJ?_hE~~b=6HeqLgA6vh=qhy;KK1@F&pMHB
YIUh'h$Uuh$!0X.Hڊ0
Qݠп-cmh!Nҷ?lU#_Iw_# >7<t4EFFm@L
XY:JN#Qo%HzIOok1BW+dJ24'$ -lX -|X^DXA?V`Yz4`2
*Xpװ!2k35W[6-hb']Va6;BХ36@u6UɥhHF!66-/F;l?AybG.[]Ϟ>bn\;&z|5ʰ~F_vW툙Q@f -=3hKWѢFّoj5viaGi`ǝӎz`-ЎZe; -h*Y::jdD=rց]\lR52A5WF&Ntt&&~tOhم:ꂾ&@iA-&xj80݉UL
=ׄ:F&L fn`
ߙP8o ݹ `==U#(lLOnލؚ^Gݨwbq&
\&䙻F#+Zj u#?ܗC{9{ {udBvn Ӎ<q`@Y$*{LpßI5JBQcGbY
`$FI\C>$7yԨ<` 6Gypj~C]C]27<oFy{rΌz 3rJ̐쁏gFf`3>2c`,d=id>fƞ.g3Q=1#42C!=FfMugJFТOA<̨CSSK3TЩG3U^Ff%/E^7f`ԋ}8QנU5 -3p3I -^o<q LJUf]Fq 6 -bodHɸ5Zcq -o fa.i"OH(~@" -kX
DvH-*xj4G%ͨ"5Rx*i<5rӼjV)++չ+X*t1^V1\WآHិ#-0o-Eo$㋓qg1<+Q"G<1y3ҝtgDF脳}
qyWdc5`!c
Ȝޞ{}2Nc)IIʶ8hvf~^=QT>v?=鉴i'福^<m}c2)6aykd7iyY{ݛFp2gwmܮٳsΜ=+2g_(Tg%-[}o~OR/7^M<+m|Q/~pȌ%睙>`wx;LNkIN309R7PH!iY=6 -[Q:V"bQz%e2mt'1=m̢l룹&xͷv.ֵkm?Nkf 9Da5u@Lˠf";EE;9+%s'ڕBi-9MIr5{B!";qi'8 -mq!䪿֝zxՃϾYRHn]4je6Yl@ѳGQH\ -p̆)NWpXUןޠx$]XmŞ1I&Y- ->a4#IO3oyR祻\v\쐥UOQ|jHNSOCO?Y>ʠ:L("+Ũ$ŬX - -+Xh+:$-0/,H^`̂&E9҇uffΦn
}WT4ϓ>~k\{iixIscW\unx͐EV^텰=L/Dk2-ۓw1anv&+gO0mf",\P}R=س}ŃWo5Һkt
ȯZp"sgZHKpNRó]˦"ZВ']Dl n\iӹ¸?ƩVcxiF>!U@}A {BlVs;לְp+mC)g::EE&/;VIOQ\KG( -eGhH{6Wԏ_>:q˥kx/δf$3ɤZ< -bOU<@zXa+]3}k嚝y9ܩOt͏̢SޒZϝ=.h0b12=REa7%FaM2Kf! Y;3sZRK.v$c\8!:ǘ=9
\CRi}ޘf9jYS<U!0I7'-)VoFafa7;b-ߞW&;'ym!څL|I(7P[~lnKɬsϯ)y~[ s͟{|ט}=oBnjjJH[+='> $>!\n-_~'?vN.+9~oEp!d{96Y>Ab<!h('YGKM1o[Z]Un9Wr{izߡĕ.6u߉Cg -xD{;;k~26mg;ID]:2b{~.A=AxN8I'O'/I~b2n܃ETb)0 7cvYKI}HupޗޗIuH8[Hئ-&)IN-Jf9_IIxzKa}ٯ}{ާdР%2)zD\by5z?%#O|G[IvC#wĝD# -n^f(> -÷>-'_^ ѭhkyES -"CJQY#%$L-`"}M|rMv"(B<yl
#/R -1ƽc!Dtap~m5-]@Kis>Mm`Pa
m^Wkw詤IkTpBQtgk12/|ҡsOp`55$x&jv
CG6jnFs7 4תxCXaGΙ!AJ'sH? ʱրQ6!K:9']-&Duϴ%GRӶ;,:㙈PFY9k^/:9MێADGGnȢ.JB"xMm-翙/o'cF#VJ&"eA]y<;U>p0hl17+_XS>=R
u;5Z%}I<C|Rط6m6ī -OLN5J'kr)8 -<?'7콋gJjx7#2̯/2Ϭ+1ZLV,r<~?ja.:Rr.1Y%jc{XjPź%G3U'6m
qp5m
^kEBhCj> k$3BfO)_Ϥ.㣚fzkm @Au -|n=G,6%ΡrG˹}%\Bybpf,bq^ d`tF[62:_%ܾ2 ->~,
Eo55LT"n#ŐZcnZ0"P^4gCѯңh0eJe|V uݠ5_>a8.Y=H&(1,x5WjWF~߉;Щt;? hUx 6jШV=k3E;WuM>ڭݍ~#m
L[KkuߋpeѼxv7kRx?L}\6~[qxԭbTAav,gC>aоj!1n>w~=7iL8'uSer$PlZ")/hӾlUFIBE%m%4\#On G~X
)n#`A! -͐hK@^jt6!pR=K\`W|H1<x-E>MVx2(uh|的ᐿ10,
pF,"J~IW0B.k3sJ[[ie2Ca%@0;UuGfʁmstTwjp;BHJa}1F4̠P?3h( -=E"(JwJנ@ag+mpV&hJ|fB`SS-\^0D\[k['2Z80_0qJpaR8|>u"̙,6 -L/"hB_l -FfE6jeCSZYA$&v7ar=4X?y`MLezzqʒ2N^Q^ZVJ*+V/W0~RX)Z,+**ejjZcU*W-Qb]UuRQ^Y^|Ϊ1,]%+W{Ub0-QjJj-(UjTוG)VW-2FkVז/YZŢzzڒҲʒe^a5LUh J -niIEeYRU]|JYXSJViE%^dIYݐ6M7glڒ -RWSuڲE|&|OTpuUWՕ],-"`@ [5W\Ƨ~Pue^xbq9ɂWb>buKJ*@W٦@Ga[On<RO/GV -7\lK嗕V~VJ!VLBBV
BbYdP͑ ;A, -(&Vַ0)"ةf$ -s5F%jhTi0<n.`'WB~ - -
_Q UzEێ4Cێ*mk]#m[`ܺK6xX㹴kZM6ARҨ_*mPo3]K3Tzi&6F^MWeӕdR+rY4Zgg˵{5iٴ&V/W~Ze*<Ch-ϠK%gʹ4C.LK3ZbVEo_ysй[c-z~4yz;/Ξ#^Fg̔gЙhF\3zF^S-O/9 +xZM#7qsDR_׀{c)&9_W,}gAt,z(IIw +u?ur QBuzYJszƠkqEG$/tx>No^ƘȢ1EZ +%ajY#ULVq;TB.<0n6BlC<f2j;"5o3ɕ9ZdN@kގ$H "?z+^/muFn_GY;{oϚ==+X|i^cv&i3)M=Rcٴx-PGq@j8\H )rÔKw̑}YQ^/Fk!U֜19k`H̖lbb]PM5=R?e-&FJi5=R-q/GIya3+B/S{h͞Xd[onrBk
<GjX]ʑ[Tn7E rXVFZapWq4,W9FjN$tԎmc̖9 5s1ם +4]oGi[.Ր{ *[<X! +n)mn%aX{vn'X8ja˱Ƅ.}r;`эP!j-t, +ft= +'ًBc@j-3gd#\SR{3)NV/`Txu\\#ѲK{r9Eoh
ZFYkjf'/ͮ㠚ZTݭUrP?y}woMi^3{9{Gi426Jo@Y!ٳ +̦E6 2Zi-hs""P0bFNN?Ml{\ƟeG4N=䖲4ZyGIAi8)i +6-on\:Ybpf @9LEK|8=!9FrwR&B endstream endobj -4329 0 obj -<< /Type /FontDescriptor /FontName /WYCBGG+DejaVuSansMono-Bold /Flags 4 /FontBBox [ 0 -207 1000 760 ] /Ascent 760 /CapHeight 729 /Descent -207 /ItalicAngle 0 /StemV 150 /XHeight 547 /FontFile2 4331 0 R /CIDSet 4330 0 R >> +4534 0 obj +<< /Type /Page /Contents 4535 0 R /Resources 4533 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4532 0 R >> endobj -4332 0 obj -<< /Filter /FlateDecode /Length 434 >> +4536 0 obj +<< /D [ 4534 0 R /XYZ 78.37 808.885 null ] >> +endobj +4537 0 obj +<< /D [ 4534 0 R /XYZ 81.145 768.829 null ] >> +endobj +4538 0 obj +<< /D [ 4534 0 R /XYZ 81.145 757.87 null ] >> +endobj +4539 0 obj +<< /D [ 4534 0 R /XYZ 81.145 746.912 null ] >> +endobj +4540 0 obj +<< /D [ 4534 0 R /XYZ 81.145 735.953 null ] >> +endobj +4541 0 obj +<< /D [ 4534 0 R /XYZ 81.145 724.994 null ] >> +endobj +4542 0 obj +<< /D [ 4534 0 R /XYZ 81.145 714.035 null ] >> +endobj +4543 0 obj +<< /D [ 4534 0 R /XYZ 81.145 703.076 null ] >> +endobj +4544 0 obj +<< /D [ 4534 0 R /XYZ 81.145 692.117 null ] >> +endobj +4545 0 obj +<< /D [ 4534 0 R /XYZ 81.145 681.158 null ] >> +endobj +4546 0 obj +<< /D [ 4534 0 R /XYZ 81.145 670.199 null ] >> +endobj +4547 0 obj +<< /D [ 4534 0 R /XYZ 81.145 659.24 null ] >> +endobj +4548 0 obj +<< /D [ 4534 0 R /XYZ 81.145 648.281 null ] >> +endobj +4549 0 obj +<< /D [ 4534 0 R /XYZ 81.145 637.322 null ] >> +endobj +4550 0 obj +<< /D [ 4534 0 R /XYZ 81.145 626.364 null ] >> +endobj +4551 0 obj +<< /D [ 4534 0 R /XYZ 81.145 615.405 null ] >> +endobj +4552 0 obj +<< /D [ 4534 0 R /XYZ 81.145 604.446 null ] >> +endobj +4553 0 obj +<< /D [ 4534 0 R /XYZ 81.145 593.487 null ] >> +endobj +4554 0 obj +<< /D [ 4534 0 R /XYZ 81.145 582.528 null ] >> +endobj +4555 0 obj +<< /D [ 4534 0 R /XYZ 81.145 571.569 null ] >> +endobj +4556 0 obj +<< /D [ 4534 0 R /XYZ 81.145 560.61 null ] >> +endobj +4557 0 obj +<< /D [ 4534 0 R /XYZ 81.145 549.651 null ] >> +endobj +4558 0 obj +<< /D [ 4534 0 R /XYZ 81.145 538.692 null ] >> +endobj +4559 0 obj +<< /D [ 4534 0 R /XYZ 81.145 527.733 null ] >> +endobj +4560 0 obj +<< /D [ 4534 0 R /XYZ 81.145 516.775 null ] >> +endobj +4561 0 obj +<< /D [ 4534 0 R /XYZ 81.145 505.816 null ] >> +endobj +4562 0 obj +<< /D [ 4534 0 R /XYZ 81.145 494.857 null ] >> +endobj +4563 0 obj +<< /D [ 4534 0 R /XYZ 81.145 483.898 null ] >> +endobj +4564 0 obj +<< /D [ 4534 0 R /XYZ 81.145 472.939 null ] >> +endobj +4565 0 obj +<< /D [ 4534 0 R /XYZ 81.145 461.98 null ] >> +endobj +4566 0 obj +<< /D [ 4534 0 R /XYZ 81.145 451.021 null ] >> +endobj +4567 0 obj +<< /D [ 4534 0 R /XYZ 81.145 440.062 null ] >> +endobj +4568 0 obj +<< /D [ 4534 0 R /XYZ 81.145 429.103 null ] >> +endobj +4569 0 obj +<< /D [ 4534 0 R /XYZ 81.145 418.144 null ] >> +endobj +4570 0 obj +<< /D [ 4534 0 R /XYZ 81.145 407.186 null ] >> +endobj +4571 0 obj +<< /D [ 4534 0 R /XYZ 81.145 396.227 null ] >> +endobj +4572 0 obj +<< /D [ 4534 0 R /XYZ 81.145 385.268 null ] >> +endobj +4573 0 obj +<< /D [ 4534 0 R /XYZ 81.145 374.309 null ] >> +endobj +4574 0 obj +<< /D [ 4534 0 R /XYZ 81.145 363.35 null ] >> +endobj +4575 0 obj +<< /D [ 4534 0 R /XYZ 81.145 352.391 null ] >> +endobj +4576 0 obj +<< /D [ 4534 0 R /XYZ 81.145 341.432 null ] >> +endobj +4577 0 obj +<< /D [ 4534 0 R /XYZ 81.145 330.473 null ] >> +endobj +4578 0 obj +<< /D [ 4534 0 R /XYZ 81.145 319.514 null ] >> +endobj +4579 0 obj +<< /D [ 4534 0 R /XYZ 81.145 308.555 null ] >> +endobj +329 0 obj +<< /D [ 4534 0 R /XYZ 79.37 252.181 null ] >> +endobj +4580 0 obj +<< /D [ 4534 0 R /XYZ 79.37 143.917 null ] >> +endobj +4533 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F59 368 0 R /F84 449 0 R /F88 664 0 R /F87 2395 0 R /F99 665 0 R /F65 357 0 R /F15 355 0 R /F63 356 0 R /F83 438 0 R /F66 358 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4583 0 obj +<< /Filter /FlateDecode /Length 2153 >> stream -xڅMo@+K4T8+mxwnevD ü33;/UM=Fk/ؙ -eƈA?"JcgkD=LrSj_9qi8.ZQwLw#XG]UM6'qS%WN -wXq==mRl +xZn߯*$ݫmsMLx!đb
FJ^˟n_ ++`+pEy6i%f쵓J +S jUUqEopar=KGFR +(Ç &D2
S?[fw铘Nd\OHo5H>R߸]/2uau>p}6$
+eH@MaXxیow;c$#j.n\>O;aqтMƵYb* +Y0&eR[)B̸ϡ'5^U*8d 'W:Y8z:θ:8&+4-H^+ +">=
[9ǤDX, '
z^,vk~7G}ߪ!ܕJYWF+OX*Fny;i+MJwSJT}[ yH3;^#P=v#ӫIި +}%qk2o1oqݶwZtuL=ck.@MH}w-uITEP)}CGcXrYn!% 7dͥvMl&i[xV^
K+K̾5xACk>*Zh'`raMe*/idI'KLy +qv\FX7f0@Mo6RZGiw]ޭYy7 +.tI}[\i15KP@HbO6XgPK[5ߩO{x0e +<$}(azk5SM#T XItϾΚYKZ®+X8ia3uvbzb>\[vtcS %Xbf9*3sb:jh$n$ !zspt/b8(_1-}L6NpqOp>Mvʂ𨘍'FXbʰlMA+چ ;̌nyVf<&13iE})#]qj&_gҲr՞74,--Ѧė=jCIS)4a{hWÇ3+UO`~8E_ :ԉ^{ސJͦI/q|Z +hzl)ۣiy4yL"<44NN~~ڃ +vKh|^g?6QM(c-͖rF?vg!9M\`3%x)oO"ou#MgteDPlmG+,<=BnoLA]>ӈkqPK
455V9;Rh>t:*:Ʒ\oI(Bk{ݩjy>;jEOt<HmyLwgz,5=v؝Y·!Z&mu?Gti>pvx5mB[f|i$N&^wҼB:)B1]XK* endstream endobj -578 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WYCBGG+DejaVuSansMono-Bold /DescendantFonts [ 4333 0 R ] /ToUnicode 4332 0 R >> +4582 0 obj +<< /Type /Page /Contents 4583 0 R /Resources 4581 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4532 0 R >> endobj -4333 0 obj -<< /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap /Identity /BaseFont /WYCBGG+DejaVuSansMono-Bold /FontDescriptor 4329 0 R /W 4328 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4584 0 obj +<< /D [ 4582 0 R /XYZ 78.37 808.885 null ] >> endobj -4334 0 obj +4585 0 obj +<< /D [ 4582 0 R /XYZ 79.37 775.009 null ] >> +endobj +4586 0 obj +<< /D [ 4582 0 R /XYZ 79.37 680.889 null ] >> +endobj +4587 0 obj +<< /D [ 4582 0 R /XYZ 79.37 634.59 null ] >> +endobj +4588 0 obj +<< /D [ 4582 0 R /XYZ 79.37 564.381 null ] >> +endobj +4589 0 obj +<< /D [ 4582 0 R /XYZ 79.37 506.127 null ] >> +endobj +4590 0 obj +<< /D [ 4582 0 R /XYZ 79.37 459.828 null ] >> +endobj +4591 0 obj +<< /D [ 4582 0 R /XYZ 79.37 413.529 null ] >> +endobj +4592 0 obj +<< /D [ 4582 0 R /XYZ 79.37 367.23 null ] >> +endobj +4593 0 obj +<< /D [ 4582 0 R /XYZ 79.37 285.066 null ] >> +endobj +4594 0 obj +<< /D [ 4582 0 R /XYZ 79.37 214.857 null ] >> +endobj +4581 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F66 358 0 R /F81 401 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4639 0 obj +<< /Filter /FlateDecode /Length 5588 >> +stream +xIݺzEWDR`qz@gAy7hIY%Q:^P?ڷqǿ}[5swۏ˿iߺqn6]ۏ痶
6~mm{?/D_u_֟-һ~3˂o++<US?q#Ǚyۺmn!yiT6-.k)$
_è8GK캱elͺ[mUno6wSkH5V/{|?]evMuvk~m)>Ap*|?̥EN˿?kϭ/-uCӇwl7'߭h6cQi84sNK?<jU75c7K85a +ykg~kmjx^ar2>=ok}fvƋ2
MϿ㶫qέ|C3s:>SާV;єZ~d3r9rYMs3C)}ܖb$wA;y;.L]Onmu=cwensi_2/f|w3[ݞœﳤֿM_6fArՏ붵v>|0ÜeJGr.d}~ZRm]]gue+MJ^{CW1B, }aݤ'˦Ɣ_OkݕieN??֔x +4ͿUeܪR|]A<7]k|8y\m^=i3ΚکݧR#C̥nURHզe9Ϸ#)!LM[k<V3ת 6TA
Mz-WM7>XƞmΡv[m]~ָlVBef6m^;Ɵq_6p+w)ˀe==Cò14b[;ٵamX6dmǮڼ9COf"ذ{skm9A!bgtm>j)݇CΞ
fC*PzJ"lJ
(DDBn9&1ӉtWuC:TfH0c0K(%Lja2Ϲ0IM0IfL\ӹvaҐM?*]3&ǦQ15(Iy e"9ї@gxW\˕"O*_;M>x<];C[TGdkW7+ -W v +H+mW0ڮ`\av +F+]]hv +H+]\Xr +F+]]q|슔?n+O)m}"yڟ9Bߴ^Fݟ%Âf;XWcF/_ - H/_m0~aaF/_]hH/_]XF/_]rK̽_t-~f/nB$]>\w}MJvDdgNvH+dgNvF+!dgNvF;!dGtMvF;dgJvF;]NvH+dgNvDd?'O]s46^9O˹awi<vZы^\ajCV +յØ@}]u"wHK"mE0ڊ`a)VF["]h+VHK"]X+RF["]qf9c6}f9[ ]7f[ӓ馼t0=5]m(ҺeHHHHJ !ӄiBHk0I2dV +.U)@ZU)@T +.U)@ZU)PT +v +V +.U)@z JҥR*HR*FR8CU)tcCSӏnP֭.wbGaK<J1la"ؾDubKZ+lU2X$p%I[%lI"؎D`$G[,9V#mF[l-"X"D[l! +F;g +ҒmY1ڲdhˊі-+FKVmY1ڲbei +UVmY1ڲdhˊEV -Y1ڲbeh +UV':=sNV_P:}A Һh_Pb/(1e_[~mBZEt/_F[~m2eh/_F[~!-"/_F[~m2藱/_F[~m"DJ!oMww"cƗ +>J!-3 +fh+V0l3 +fi)UmCZ +fh+V0`Km3 +`F[mCZ +f`Zm3 +fI6ؙGI;M<mfojvJK۟yW~F -?0~`hFm?@Z~@tF -?0~`tcHm?0~@tÉڸN~M*>.o=xg ͤ{Cw~1Da(mAZ +BtU F[Am1 +bh)R F[A -!*V F[Am1(V F[Am!*D?%x7DY`xM-C%9^*>jzWT&EY@/qڊi@ZҠt-
HK4(]iIҒ%
HiPHҒ%
HK.`iIҒ%
Ji@ZҀ*
J.ҀiIҒ-3>1MbX{i\?}ħ iJRɩ'jm0ڪTF[5j -0ڪaUhR
F[5jm@ZAtU
F[5j -0ڪatQ
cHK5jm0ڪAtU͉jrF!<S.׆tۦXO+70n܀F
-70n`hrF
m7@Zn@tuF
-70n`tqcH
m70n@tuÉ7}Ð>w/n\QNb{z'dž_e9k3Yhg9v3Yhg9V3Yhg9V#f9v3Yie9.YXg9v3Yhg9kOeyM%Y~#W(ċsKlѱWgmH"a-h[ҲmF"E-@Xa-h[ѶeDW0a-h[ҲmF0,h[ѶmDW@XEbפ`X[{<t9,8*]tF;!@gtF;@tF;@5@gtH+@gt t:!@gtF;]D0v=>
9͞V,Oͤ)·U }9R8jhm@ZbAt-F[,Xm0bah-F[,X - -F[,Xm0%F[,Xm D#x~rwSOojy7[y~?;mr1M=ٯ
BFrFv1ihFihFvAZihK1iiFv1iFD584R>I].+_y|u?T?}ȍu.OCnq}^d-(]- niuF[Ou<Ƨ]O[wQ8֫ +=-ih
kׁZ~&alc 2Z<x1'}n߶r=}fkW{ +endstream +endobj +4638 0 obj +<< /Type /Page /Contents 4639 0 R /Resources 4637 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4532 0 R /Annots 4643 0 R >> +endobj +4643 0 obj +[ 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R ] +endobj +4595 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 626.954 168.645 635.84 ]/A << /S /GoTo /D (section.0.1) >> >> +endobj +4596 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 605.036 162.18 614.002 ]/A << /S /GoTo /D (section.0.2) >> >> +endobj +4597 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 581.175 199.908 592.144 ]/A << /S /GoTo /D (section.0.3) >> >> +endobj +4598 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 569.17 217.99 580.129 ]/A << /S /GoTo /D (subsection.0.3.1) >> >> +endobj +4599 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 557.215 271.838 568.284 ]/A << /S /GoTo /D (subsection.0.3.2) >> >> +endobj +4600 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 545.38 260.909 556.219 ]/A << /S /GoTo /D (subsection.0.3.3) >> >> +endobj +4601 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 532.867 282.11 544.822 ]/A << /S /GoTo /D (subsection.0.3.4) >> >> +endobj +4602 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 513.33 177.731 522.376 ]/A << /S /GoTo /D (section.0.4) >> >> +endobj +4603 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 498.994 307.764 510.949 ]/A << /S /GoTo /D (subsection.0.4.1) >> >> +endobj +4604 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 487.487 172.561 498.436 ]/A << /S /GoTo /D (subsection.0.4.2) >> >> +endobj +4605 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 475.532 214.364 486.59 ]/A << /S /GoTo /D (subsubsection.0.4.2.1) >> >> +endobj +4606 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 463.576 276.302 474.635 ]/A << /S /GoTo /D (subsubsection.0.4.2.2) >> >> +endobj +4607 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 451.621 251.943 462.57 ]/A << /S /GoTo /D (subsubsection.0.4.2.3) >> >> +endobj +4608 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 441.489 258.917 450.725 ]/A << /S /GoTo /D (subsection.0.4.3) >> >> +endobj +4609 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 417.788 378.259 428.757 ]/A << /S /GoTo /D (section.0.5) >> >> +endobj +4610 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 397.763 197.477 406.839 ]/A << /S /GoTo /D (section.0.6) >> >> +endobj +4611 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 385.699 202.439 394.934 ]/A << /S /GoTo /D (subsection.0.6.1) >> >> +endobj +4612 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 371.472 285.447 383.427 ]/A << /S /GoTo /D (subsubsection.0.6.1.1) >> >> +endobj +4613 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 360.075 265.622 371.024 ]/A << /S /GoTo /D (subsubsection.0.6.1.2) >> >> +endobj +4614 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 348 249.98 358.959 ]/A << /S /GoTo /D (subsection.0.6.2) >> >> +endobj +4615 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 337.878 200.416 347.004 ]/A << /S /GoTo /D (subsubsection.0.6.2.1) >> >> +endobj +4616 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 324.09 202.349 335.048 ]/A << /S /GoTo /D (subsubsection.0.6.2.2) >> >> +endobj +4617 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 312.134 279.261 323.203 ]/A << /S /GoTo /D (subsection.0.6.3) >> >> +endobj +4618 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 300.179 252.591 311.248 ]/A << /S /GoTo /D (subsection.0.6.4) >> >> +endobj +4619 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 288.344 269.318 299.183 ]/A << /S /GoTo /D (subsection.0.6.5) >> >> +endobj +4620 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 278.102 256.257 287.228 ]/A << /S /GoTo /D (subsubsection.0.6.5.1) >> >> +endobj +4621 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 264.324 267.465 275.273 ]/A << /S /GoTo /D (subsubsection.0.6.5.2) >> >> +endobj +4622 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 252.368 283.794 263.317 ]/A << /S /GoTo /D (subsubsection.0.6.5.3) >> >> +endobj +4623 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 240.523 259.216 251.362 ]/A << /S /GoTo /D (subsubsection.0.6.5.4) >> >> +endobj +4624 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 228.568 285.228 239.407 ]/A << /S /GoTo /D (subsubsection.0.6.5.5) >> >> +endobj +4625 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 218.326 260.89 227.452 ]/A << /S /GoTo /D (subsection.0.6.6) >> >> +endobj +4626 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 204.1 356.78 216.055 ]/A << /S /GoTo /D (subsubsection.0.6.6.1) >> >> +endobj +4627 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 192.144 423.071 204.1 ]/A << /S /GoTo /D (subsubsection.0.6.6.2) >> >> +endobj +4628 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 180.189 434.598 192.144 ]/A << /S /GoTo /D (subsubsection.0.6.6.3) >> >> +endobj +4629 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 168.792 298.12 179.741 ]/A << /S /GoTo /D (subsection.0.6.7) >> >> +endobj +4630 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 158.55 179.455 167.676 ]/A << /S /GoTo /D (subsection.0.6.8) >> >> +endobj +4631 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 134.919 226.618 145.818 ]/A << /S /GoTo /D (section.0.7) >> >> +endobj +4640 0 obj +<< /D [ 4638 0 R /XYZ 78.37 808.885 null ] >> +endobj +4641 0 obj +<< /D [ 4638 0 R /XYZ 79.37 775.009 null ] >> +endobj +333 0 obj +<< /D [ 4638 0 R /XYZ 79.37 680.608 null ] >> +endobj +4642 0 obj +<< /D [ 4638 0 R /XYZ 79.37 667.86 null ] >> +endobj +4637 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 357 0 R /F15 355 0 R /F63 356 0 R /F22 389 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +4686 0 obj +<< /Filter /FlateDecode /Length 6318 >> +stream +xώX~G}?_/ T2]j6yEHu= 2U-%)Rf[?u߮M÷?KzS{j۟4}ڍoۦ9M4{ӌ]LicVrl0\tzz[}>k՝
n8oɼc7ohu
QÏe?wl~}7?7ch5r0^>mꮝ^ϪyVünS3oEoy<M}k?k{j^˼V4o}R0o}]7oun4N?vk=vۧI??._N`&y:W4/éT~\vۧМOOa~R]Zͼg/vۧ0Lvv.4Z_OC|jG,Եϒm%ܳ~y4{q?},D,"kuݴzcså|%瞿wXWtRgJ43ifԙN3f;͌w:3^xN3fKtN3f;͌:3ife;ˌ:3ifxJˌvwsg~g[:c3y L۵r_TAZTATi4Up*8*H*8M +NSSk +NSԩTRgԩTi4UPVa*\l
(Q! +e8F+:^RBIv:p)590ȚWS*L[NZ
eU*LWNV +UiI)Uaz09u855TaZ0)U:*LG.U:*LC& +SPk@7x=r6>=utmp;
onrw{<mk}n'rl;-&ηaيuo{eW' w?G9IiN$ڿVˏcqm̋eYGHYIX.%$ZB,&j겜pYPHeI!uRgQ!uVRee]!uRge!uV,.B,/:+%YcX]Rg!uRg4>C=>w~:{ww*NBIӤPBIӤiR(uRtMӤiR(uR4)t:M +N +%N +&NBII5NBIӤPiRtIPiR4)t*]SAަpOgxw*gSؽ(7}~k~Mqn8I]0qr89MNqr89MN&NN'Ӊĉi4q:qRi4qr8I89M.qr8I89M&NN'kzПa?OijosTn^K:~N4~NWɫ%WɫUUWɫUi4yu:J:M^&NWWk^&NWɫɫWgɫɫi4yUuig6ya߯t^sʵtn\zySMkrfFpmY4:3f9ͬsY'ufu9ͬsY4N:uNY,N:uN3f)]gV/nk>DTOw\5c8^o7iN,fa4{YKua4{YKib4s:8s9M&vR'vJ9M&vN;;%v;;ibtV-v2
؝tiv_ei2&uɘdi24:Sfi24:s9MƜ&cN'c'cN1ɘdLdL1ɘdi2&u24sdY2&u24s9MƔÌ_0^ӹ[tc}.mޫΛwO <ocYW9Glgn˵R[\ D{m\_^jn%uΧIiViRg[WzEW^+g"u+RgbuY8zEWz^:^:z^:^:zi+Rg"u+RgbuYHzEڬW.^:^qN!O\>ril\oY4;\\$ы$H$(]4Ip$H$8M& NI$i utM$i4I:Ip$8],I:Ip$8M& J$lwlϧnq1'7?uݻ?.%mbua/&R'JP8M(&R'N + ӄBiB4pPHP(]C4pP8M(N(&NP8K(N(&N + 5[Pcrbه(@ڿ݇x_Hշ<{3o̻%L=VZN3jf:Q+qFӌZN3jΨUZN3jfJQ42jeJQ4iFӌZuԎvv{7F-TfPu-pp5y,?eˍZʋE,ҥ"]Hwr8M9N9NS)))Ӕi4:Pi4prHr8M9.prHr8M9NSk9f(G;T/r,צH~e=z@twR紹Ӝ6wNsiNK]N;LUNSUSUkUNSUSUTit*q4Uu:MUNUUu:MURNSUKURNSUTUZխ^6i9?p|3ݴiNXv",N 5,N ӄi4aq:a8aq8MX&,R',Jװ8MX&,N %, ӄi¢t
V/ay}e6|\,,Mra.|hr9rߜIQ?!hx:SO3<.2<:SOt)uRgxZ]RSO:SO3<fx׆ypU\OtUGz|L˙?]`4_y:W~ty:W~4_y*]_[_pz"c1s\:GQps\z=X!qVHR``:+f-uNvӬz[⬷f4mYoK^+]{4v^;MNN^;KNNkҵ[گԵ37fֲ_Xpʸۮet2:MR2:LNSFSFkNSFSF)Ӕit(q4et2:MNet2:MRNSFKRNSF)ӔQZƭFs738tn`:W}N;BTO7S۶r!Dܝd>q 5N ӄiB4!p:!8!p8M&R'J8M&N % ӄiBt
V/!x}
B0UO.IP~=;[o>t߬w|,O94>99eavNuukםNuutit.q4]w;MץNו]w;MםRNuKםRNut]^ +y~P:mR~{)2Xq?J]>txwe]/vWfwivWfwE겻0+N4+RgwEZF)ӔQi4et2:2J2:MNSFSFkNSF))ӔRFg))Ӕi4eTqÐ,cNCrw磸[w>~%ue----K[R[R[VnInInInI]eqե[N----KN^%meutk]r{y{to/nONf?nQϠ=^:f;͠:izNgKA4iz3蕮izRg;͠wzgRg;͠wA4^:z=tssAq]JٻT`ON|'[.wfgZtxI+u&LZN3iΤ8i&LZRg*]'LZN3iΤuIt2iΤuI4i&un&x9A{iO~:uXQ9³ݬx.wQ5Y\W +!É4Ha0R8r6Q(L}&>=(Ly&< +%:)GazcpOzsCYg?dnX?n^zp2I]0mr89MN}r@9MNQN)ɔӄiJ4:Rij4r^I`9M.rfIh9M&[N-kpNϵuoφ{;(f 89L/& +SKK, +J) +IÉ4Ra0T8t6}T<*L&4*L& +EE%DD)Qazhp/5ԷYFɹ9;z^m9rݶi%u i4
:SVi24:!s9MʜeN'ffN3MM4iDi&u4]sY&u4ms9MݔyᏯ||ryk?m{W5}~8v[,Q(LhNgQ(LdNc&1 +S 鋳ɋEa0mq8i1Ea¢0]Q8(LT.MQ8(LP' +kM6x>Lu8]}/\UYCRHTHVX]b4::CC$C4C
K5N6N7N8.ptHvHxHzX]!u!iSKBNCNDNE&#;#t_G>ϷX1p +endstream +endobj +4685 0 obj +<< /Type /Page /Contents 4686 0 R /Resources 4684 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4532 0 R /Annots 4688 0 R >> +endobj +4688 0 obj +[ 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R ] +endobj +4632 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 758.132 153.283 768.971 ]/A << /S /GoTo /D (section.0.8) >> >> +endobj +4633 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 746.057 196.72 757.016 ]/A << /S /GoTo /D (subsection.0.8.1) >> >> +endobj +4634 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 734.102 285.168 745.17 ]/A << /S /GoTo /D (subsection.0.8.2) >> >> +endobj +4635 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 722.147 278.842 733.325 ]/A << /S /GoTo /D (subsection.0.8.3) >> >> +endobj +4636 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 710.202 207.39 721.151 ]/A << /S /GoTo /D (subsection.0.8.4) >> >> +endobj +4644 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 688.324 343.181 699.293 ]/A << /S /GoTo /D (section.0.9) >> >> +endobj +4645 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 676.319 222.155 687.278 ]/A << /S /GoTo /D (subsection.0.9.1) >> >> +endobj +4646 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 664.364 221.168 675.432 ]/A << /S /GoTo /D (subsection.0.9.2) >> >> +endobj +4647 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 651.97 250.508 663.925 ]/A << /S /GoTo /D (subsection.0.9.3) >> >> +endobj +4648 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 640.453 209.691 651.522 ]/A << /S /GoTo /D (subsection.0.9.4) >> >> +endobj +4649 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 628.06 331.933 640.015 ]/A << /S /GoTo /D (subsection.0.9.5) >> >> +endobj +4650 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 616.543 235.007 627.502 ]/A << /S /GoTo /D (subsection.0.9.6) >> >> +endobj +4651 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 604.588 238.354 615.547 ]/A << /S /GoTo /D (subsection.0.9.7) >> >> +endobj +4652 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 582.789 184.546 593.629 ]/A << /S /GoTo /D (section.0.10) >> >> +endobj +4653 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 572.548 182.752 581.674 ]/A << /S /GoTo /D (subsection.0.10.1) >> >> +endobj +4654 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 558.879 281.114 569.828 ]/A << /S /GoTo /D (subsection.0.10.2) >> >> +endobj +4655 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 546.804 266.498 557.873 ]/A << /S /GoTo /D (subsubsection.0.10.2.1) >> >> +endobj +4656 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 536.682 308.71 545.918 ]/A << /S /GoTo /D (subsubsection.0.10.2.2) >> >> +endobj +4657 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 524.727 268.292 533.963 ]/A << /S /GoTo /D (subsubsection.0.10.2.3) >> >> +endobj +4658 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 511.058 208.436 522.007 ]/A << /S /GoTo /D (subsubsection.0.10.2.4) >> >> +endobj +4659 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 500.817 258.718 510.052 ]/A << /S /GoTo /D (subsubsection.0.10.2.5) >> >> +endobj +4660 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 488.862 316.441 498.097 ]/A << /S /GoTo /D (subsubsection.0.10.2.6) >> >> +endobj +4661 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 476.906 397.756 486.142 ]/A << /S /GoTo /D (subsubsection.0.10.2.7) >> >> +endobj +4662 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 463.128 194.479 474.077 ]/A << /S /GoTo /D (subsubsection.0.10.2.8) >> >> +endobj +4663 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 451.173 223.271 462.122 ]/A << /S /GoTo /D (subsubsection.0.10.2.9) >> >> +endobj +4664 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 439.208 274.508 450.276 ]/A << /S /GoTo /D (subsubsection.0.10.2.10) >> >> +endobj +4665 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 427.263 185.562 438.321 ]/A << /S /GoTo /D (subsubsection.0.10.2.11) >> >> +endobj +4666 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 415.298 300.033 426.366 ]/A << /S /GoTo /D (subsubsection.0.10.2.12) >> >> +endobj +4667 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 403.462 227.614 414.301 ]/A << /S /GoTo /D (subsubsection.0.10.2.13) >> >> +endobj +4668 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 393.22 238.005 402.346 ]/A << /S /GoTo /D (subsubsection.0.10.2.14) >> >> +endobj +4669 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 103.28 379.552 286.653 390.5 ]/A << /S /GoTo /D (subsection.0.10.3) >> >> +endobj +4670 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 367.477 311.739 378.545 ]/A << /S /GoTo /D (subsubsection.0.10.3.1) >> >> +endobj +4671 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 355.522 244.073 366.481 ]/A << /S /GoTo /D (subsubsection.0.10.3.2) >> >> +endobj +4672 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 343.566 240.317 354.635 ]/A << /S /GoTo /D (subsubsection.0.10.3.3) >> >> +endobj +4673 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 331.611 219.285 342.68 ]/A << /S /GoTo /D (subsubsection.0.10.3.4) >> >> +endobj +4674 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 319.656 231.609 330.725 ]/A << /S /GoTo /D (subsubsection.0.10.3.5) >> >> +endobj +4675 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 307.701 257.761 318.66 ]/A << /S /GoTo /D (subsubsection.0.10.3.6) >> >> +endobj +4676 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 295.746 261.936 306.705 ]/A << /S /GoTo /D (subsubsection.0.10.3.7) >> >> +endobj +4677 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 285.624 233.353 294.859 ]/A << /S /GoTo /D (subsubsection.0.10.3.8) >> >> +endobj +4678 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 271.835 432.127 282.904 ]/A << /S /GoTo /D (subsubsection.0.10.3.9) >> >> +endobj +4679 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 259.88 350.832 270.949 ]/A << /S /GoTo /D (subsubsection.0.10.3.10) >> >> +endobj +4680 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 249.758 276.381 258.994 ]/A << /S /GoTo /D (subsubsection.0.10.3.11) >> >> +endobj +4681 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 235.97 340.68 247.038 ]/A << /S /GoTo /D (subsubsection.0.10.3.12) >> >> +endobj +4682 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 116.232 224.015 373.667 235.083 ]/A << /S /GoTo /D (subsubsection.0.10.3.13) >> >> +endobj +4683 0 obj +<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 202.157 142.892 212.976 ]/A << /S /GoTo /D (section.0.11) >> >> +endobj +4687 0 obj +<< /D [ 4685 0 R /XYZ 78.37 808.885 null ] >> +endobj +4684 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F22 389 0 R /F15 355 0 R >> /ProcSet [ /PDF /Text ] >> +endobj +1 0 obj +<< /pgf@ca1.0 << /ca 1.0 >>>> +endobj +2 0 obj +<<>> +endobj +3 0 obj +<< /pgfprgb [/Pattern /DeviceRGB] >> +endobj +4690 0 obj +[513.9 ] +endobj +4692 0 obj +[686.7 0 0 0 0 0 0 0 0 0 0 560.2 0 0 0 0 0 0 571 702.2 706.8 0 0 0 686.7 ] +endobj +4694 0 obj +[513.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 399.7 399.7 ] +endobj +4695 0 obj +[525 ] +endobj +4696 0 obj [ 28 [ 603 ] 35 [ 544 ] 43 [ 544 ] ] endobj -4336 0 obj +4698 0 obj << /Filter /FlateDecode /Length 14 >> stream xc`` endstream endobj -4337 0 obj +4699 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 852 >> stream xmS]LYʈʦ;0sŰb[!Y0vd @@ -14284,84 +15280,76 @@ xmS]LYʈʦ;0sŰb[!Y0vd |M-#=ڴJj
6eF>'0TCbddt Yl2ZoV*99Ց!93Dc)|'a endstream endobj -4335 0 obj -<< /Type /FontDescriptor /FontName /HSGBBJ+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 4337 0 R /CIDSet 4336 0 R >> +4697 0 obj +<< /Type /FontDescriptor /FontName /HSGBBJ+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 4699 0 R /CIDSet 4698 0 R >> endobj -4338 0 obj +4700 0 obj << /Filter /FlateDecode /Length 370 >> stream x}R]k0}ϯ{(E]7A-c6vM$Ƈ%0 sܣ]<su`:FaX5JA{N+"]R-^u_4Ǔ7{e{ޫ*OAjR:AҊՁ%> ~'F(9hL)^$_ʭא>t!$חptI4. eəscJeHCdcgp9j!O0JKtq$lBvOe9Qr8..S:gsyB h AsZA;k7'Z9>FCi&wht#ǽvݍZ|>.$^U\߭ڮP| endstream endobj -567 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HSGBBJ+LMRoman7-Italic /DescendantFonts [ 4339 0 R ] /ToUnicode 4338 0 R >> +591 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HSGBBJ+LMRoman7-Italic /DescendantFonts [ 4701 0 R ] /ToUnicode 4700 0 R >> endobj -4339 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HSGBBJ+LMRoman7-Italic /FontDescriptor 4335 0 R /W 4334 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4701 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HSGBBJ+LMRoman7-Italic /FontDescriptor 4697 0 R /W 4696 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4340 0 obj +4702 0 obj [758.1 ] endobj -4341 0 obj +4703 0 obj [892.9 ] endobj -4342 0 obj -[ 28 [ 525 ] 50 [ 525 ] 55 [ 525 ] 66 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 110 [ 525 ] 112 [ 525 ] 116 [ 525 ] 118 [ 525 ] ] +4704 0 obj +[ 28 [ 525 ] 35 [ 525 ] 42 [ 525 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 ] 66 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 84 [ 525 525 525 ] 93 [ 525 ] 96 [ 525 ] 98 [ 525 ] 103 [ 525 ] 105 [ 525 ] 109 [ 525 525 ] 112 [ 525 ] 116 [ 525 ] 118 [ 525 ] ] endobj -4344 0 obj +4706 0 obj << /Filter /FlateDecode /Length 23 >> stream -xc````PdP - +xc``0PdTDzЭ endstream endobj -4345 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1970 >> +4707 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2640 >> stream -xڍVPTroWYQ-UB<JL|:ʣa>.+^] -,\X
L%č1X[IhSmդ3twYw}%" H*#-)#kڝii+
FFC}>+ ~ࡘgG94 -_HW{
J -ؤ6-.40Qhu&53ۨ֫&)6FƬU3;ve)$`fvrbZh11bM4k >ڙm{zhscJmVIϘ*6GR:s!DH$iωl"0 BāD;o3@%b>DJ
;hkp[F2:wGF(k,ғ:r?A.Uݧ&Za˱Isq
ܹi5ۭxފ&f2K0^$'4#ܘu_ɭLp+W;Ҵg;aտN5v -unO'-3:os _ -#SdUYC}`G!nE<HLu&!()zͱsɦ=#9L=!cg}©9hhXy+s`]|^6ml}oe"Tzo2/Dw>\.S":3@ᖽ -^VW^odQ=oCT(>3ރ ?Q[ W鹸McRݟp ^Nv@"KxxA -}R0 -ΣJɉ~J!ya~9[2DúEI{،PKH|'/$5In!E81m: -=d>17q[AQ,ol*vW
vzȞ`0UBWx&MAՕ#we[
{;Rb/(hi腚KG -n(Ի!ss.w #ro>^Gr!^D|㳅)@/#"Ts` -~P+ip"6{Te5{Hq bOйg9Nv~`S -P +xڍW{TW +RtNE\U/ɒq*`8p nq+ǸUID>_QꐸĎ_zWE."|KwJ_IbBD,"ߋ(-zL#}TA_PfR&(0y=τ%*u&.= gMaLLHbILlLJ~ҟRWL!SDe];-t
=%A1V1Z&cMƆ +uPmtM&rbD%BċD87"E&^!bx"H!҈t"ZWlX@,hw#DEe[..7\֑i!Ǩbf.kh~f,Y︷M%(;lc9뀴߬b
l,#y>s.eCaZi4YڪjqUa(r_!}xh4-'+ +Ymv.@BPzVZ- +r/-,*0VVli7]]G#" +aȼje&ɣmP/;?*6 +;L6@dH)$})úTlkGXlc~z!Zfe[(lAx%|/SrV^%l@AvzhYEhW#nɯ{2z)_BW^'x3>6RZA['ZDkߩ{A{yi5h/=UB%P~^oR=(~6lKvO&7M6+3dE=͜N_hE<Tf݇[LFcٽnhccc,Es#!ULd'+ĕTE[ML{Q1iy< FLJ{S:3/]&UȢ*bLLVO02Wܓp +ܹ-ׁ&NB:/iEl>ys/ԣMOX"@2g9hsF"9[]_pݚ:lc; endstream endobj -4343 0 obj -<< /Type /FontDescriptor /FontName /OMFOSG+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 4345 0 R /CIDSet 4344 0 R >> +4705 0 obj +<< /Type /FontDescriptor /FontName /HUMPRY+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 4707 0 R /CIDSet 4706 0 R >> endobj -4346 0 obj -<< /Filter /FlateDecode /Length 437 >> +4708 0 obj +<< /Filter /FlateDecode /Length 486 >> stream -xڍj0z -HICӔ:,{uI*%#ˇ}%BYly43G7E$p]ِhyWo -u¢k -|Q4N.[Y4r^x4@',kmSr0:YqJ (+u<!:̆,Od.c$4 ͐H@}l!=#H@ih-&Hs1EZ"#mз}Xz@#-S5{+xgۇp 3ƻxo,x +xڍn0<)=P VRKiF!=I-=JU1Of?v-%{ԠjlЀ_8)=Vb]Hq!Y=pT=Yo=ۭ+هy+Sz}mRCM\W7N(@[Jy,ypiLmztN/}L&'V$0'4-̯5rh)B,#Nk +n\wh)][1Е<2Ym'@'D#~Fb4 3K)Bzt\ =ai!H)RAsHwH9XsFzvH"Ŏ"<!NDCB1o$b 1bK$bƒcM6^ݻ`f'r;-$|oZsJ* endstream endobj -437 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OMFOSG+LMMonoSlant10-Regular /DescendantFonts [ 4347 0 R ] /ToUnicode 4346 0 R >> +461 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HUMPRY+LMMonoSlant10-Regular /DescendantFonts [ 4709 0 R ] /ToUnicode 4708 0 R >> endobj -4347 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OMFOSG+LMMonoSlant10-Regular /FontDescriptor 4343 0 R /W 4342 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4709 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HUMPRY+LMMonoSlant10-Regular /FontDescriptor 4705 0 R /W 4704 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4348 0 obj +4710 0 obj [ 27 [ 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 525 525 525 525 525 525 525 525 525 ] 138 [ 525 525 ] 162 [ 525 525 ] 201 [ 525 525 ] 245 [ 525 525 ] 251 [ 525 525 ] 265 [ 525 525 ] 271 [ 525 525 ] 337 [ 525 525 ] 341 [ 525 525 ] 420 [ 525 525 ] 564 [ 525 525 ] 568 [ 525 525 ] 602 [ 525 ] ] endobj -4350 0 obj +4712 0 obj << /Filter /FlateDecode /Length 44 >> stream xc`` endstream endobj -4351 0 obj +4713 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 9128 >> stream x{` @@ -14423,10 +15411,10 @@ kUepB|t¶0X؊N`tڧ"cpd`W}zk^P/,{B_ki"r a)@_1\ẍFӱ<;?2=e\gb&RJ5qzuԈUMӪhXdϑ endstream endobj -4349 0 obj -<< /Type /FontDescriptor /FontName /FVYUVB+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4351 0 R /CIDSet 4350 0 R >> +4711 0 obj +<< /Type /FontDescriptor /FontName /FVYUVB+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4713 0 R /CIDSet 4712 0 R >> endobj -4352 0 obj +4714 0 obj << /Filter /FlateDecode /Length 855 >> stream x}N8F$$JmH˒6M7 @@ -14435,23 +15423,23 @@ x}N8F$$JmH˒6M7 ʠ5tsjԶd>D唟/M!d's"!/?13]~$?֏kddR35$?~)Ls"RV%ωKuO$?e?'('~ n>?'ϰ*?K-~HG,~ YV◐P |e"O%]%DY~H,N1~=G'?*#~?3JJLEɏ,D#u&?֏5ʴ~",+|g~H+r+%Yrz.R@9ق#y:9D Y1uNȒő&[ASDi(qLiHF^@"e)!ezB,'JtWDzC.EI~/xݍZ~Y}?ǛiS
foe/ߓ- endstream endobj -425 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FVYUVB+LMMono9-Regular /DescendantFonts [ 4353 0 R ] /ToUnicode 4352 0 R >> +449 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FVYUVB+LMMono9-Regular /DescendantFonts [ 4715 0 R ] /ToUnicode 4714 0 R >> endobj -4353 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /FVYUVB+LMMono9-Regular /FontDescriptor 4349 0 R /W 4348 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4715 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /FVYUVB+LMMono9-Regular /FontDescriptor 4711 0 R /W 4710 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4354 0 obj +4716 0 obj [ 35 [ 580 ] 47 [ 624 ] 50 [ 558 ] 55 [ 536 ] 59 [ 641 ] 63 [ 613 ] 72 [ 513 ] 75 [ 747 ] 77 [ 613 ] 81 [ 636 ] 84 [ 558 ] 96 [ 602 ] 98 [ 458 ] 105 [ 591 ] 112 [ 613 ] 116 [ 613 ] ] endobj -4356 0 obj +4718 0 obj << /Filter /FlateDecode /Length 23 >> stream xc````Td B endstream endobj -4357 0 obj +4719 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2190 >> stream x}V
TS!܈k\+^"jX]H@_$ @@ -14470,31 +15458,31 @@ $᷹?͢LtWS09t`&iJBo=ݖNFh2+-Ri?rtzx,-W< sY%r,F2
;lv>k#C^t:O endstream endobj -4355 0 obj -<< /Type /FontDescriptor /FontName /SJLYVB+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 4357 0 R /CIDSet 4356 0 R >> +4717 0 obj +<< /Type /FontDescriptor /FontName /SJLYVB+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 4719 0 R /CIDSet 4718 0 R >> endobj -4358 0 obj +4720 0 obj << /Filter /FlateDecode /Length 441 >> stream xڍ_k0)BwጶӾ]2]o&Mrt1ş9'92z-7jdּAu/ endstream endobj -414 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SJLYVB+LMRomanCaps10-Regular /DescendantFonts [ 4359 0 R ] /ToUnicode 4358 0 R >> +438 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SJLYVB+LMRomanCaps10-Regular /DescendantFonts [ 4721 0 R ] /ToUnicode 4720 0 R >> endobj -4359 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SJLYVB+LMRomanCaps10-Regular /FontDescriptor 4355 0 R /W 4354 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4721 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SJLYVB+LMRomanCaps10-Regular /FontDescriptor 4717 0 R /W 4716 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4360 0 obj +4722 0 obj [ 28 [ 500 ] 50 [ 444 ] 52 [ 778 ] 70 [ 528 ] 72 [ 278 ] 109 [ 556 ] 112 [ 528 ] 118 [ 528 ] ] endobj -4362 0 obj +4724 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``````j````i endstream endobj -4363 0 obj +4725 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1359 >> stream x}Lg @@ -14505,10 +15493,10 @@ KRm),4Yf:6ͿljYQ[u65d#&9%uSZEF#gx*{Q UBuxBS/sEBT!oS_<ߝrl=X^_V1 t@Xx$jZBl!<wIP ,/`<</¤ixa y050m x8`Wc>gL
(/zruKձMbF14b_6m=6p(#Q CLi(P;:TgyIKa9hS 7a?ñ
x04^k!a1oY6m!^]8p$|澛U\mjKkk>u0|BPP-E=!9Nbh&29qJ3jW#t`|Z:Y|?!(cJkC 95`FX$:m~ endstream endobj -4361 0 obj -<< /Type /FontDescriptor /FontName /ZUCODC+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 4363 0 R /CIDSet 4362 0 R >> +4723 0 obj +<< /Type /FontDescriptor /FontName /ZUCODC+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 4725 0 R /CIDSet 4724 0 R >> endobj -4364 0 obj +4726 0 obj << /Filter /FlateDecode /Length 406 >> stream xڍ_K0)Pn @@ -14517,138 +15505,130 @@ xڍ_K0)Pn nN'Z$4ǮJ,l 4ţRZz=Tg:Ifסt@W.=MsOPt(4=̓oN&
](b6%^>7}j_TGGH endstream endobj -392 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZUCODC+LMRomanSlant10-Regular /DescendantFonts [ 4365 0 R ] /ToUnicode 4364 0 R >> +402 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZUCODC+LMRomanSlant10-Regular /DescendantFonts [ 4727 0 R ] /ToUnicode 4726 0 R >> endobj -4365 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZUCODC+LMRomanSlant10-Regular /FontDescriptor 4361 0 R /W 4360 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4727 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZUCODC+LMRomanSlant10-Regular /FontDescriptor 4723 0 R /W 4722 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4366 0 obj -[ 28 [ 511 ] 35 [ 460 ] 42 [ 716 460 ] 46 [ 755 511 ] 49 [ 678 460 ] 54 [ 653 307 ] 59 [ 460 ] 63 [ 511 358 ] 66 [ 307 ] 68 [ 307 ] 70 [ 460 627 256 ] 74 [ 897 818 ] 77 [ 562 ] 81 [ 511 ] 83 [ 678 511 ] 91 [ 460 ] 96 [ 422 562 409 ] 104 [ 716 332 ] 109 [ 537 ] 111 [ 743 460 ] 114 [ 664 743 464 ] 118 [ 486 ] 125 [ 562 ] 502 [ 307 ] ] +4728 0 obj +[ 28 [ 511 ] 35 [ 460 ] 42 [ 716 460 ] 47 [ 511 ] 49 [ 678 460 ] 54 [ 653 307 ] 59 [ 460 ] 63 [ 511 358 ] 66 [ 307 ] 70 [ 460 627 256 ] 75 [ 818 ] 77 [ 562 ] 81 [ 511 ] 83 [ 678 511 ] 91 [ 460 ] 96 [ 422 ] 98 [ 409 ] 104 [ 716 332 ] 109 [ 537 ] 112 [ 460 ] 114 [ 664 743 464 ] 118 [ 486 ] 125 [ 562 ] 502 [ 307 ] ] endobj -4368 0 obj +4730 0 obj << /Filter /FlateDecode /Length 28 >> stream -xc``0N\%B],$& +xc``0L\<%B`],$& endstream endobj -4369 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4953 >> +4731 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4336 >> stream -xڭY \w'j-3:mףVS[뮷Dk+@8 !!$$ >"w@nQzEۭ֭G}۽wm7v%\A&ND8{nڲo{$Km͊Mgs@0ADY@\Z0x `noh&w?:A8g4a߅~)p/?B& ddrr_
[d4W&JJdɲWϯ և ƧJr2SEXq`[`g`$=*̗qشD$Q)< 2I2I4sA 2Y)ȑRL&& B +Y(زoo`D%!3ELP%}}0,iq"i?\8o]vlݰiMaY,AD&HfŊ2þןwIdi$q Bq(+ao3HY@V" kFd3yنlGv"^$9 HtDHd!r
={$a"bTp>A]0qD}3iڤ:0ǧ̞OK?Avzv泎i].ŌgP!j/n-zbob - -3wũM:O֝%yxW].0fz$~D{u'W /7O6DΤ'C50NzJGa3B<UD܄fuDoR"kBڬnP~ڪPT 插 'Np<üɗl:Rn,h<YA-ǻX)3U8叹a(ƀ٭!1q&IeBfW/AFAL9 -_<s.'ͩ__v.\NfR)LvRULEv8 7a}.߮hfFK,Z1'poCgWAԃ)=cM31]ۙg>3;_y -](`2>ڋz|PIK<B&Wuw=6Ʈ_as[$$!iiՇd#lյ}oU8I"=`T/_tݵ; -u,&JXQfIO -6H,Ù'\яy#NTgI`RX8<6ku16>tU뉍 -EЌAxiH(5Ll0rKq876=I<
U9A-@k'lۉ3yKJPƮ?^lR/\V4tgmSp6=wm5u'v*gŹ̦Wnb?y
r\͍%A<2??pld [Aj -_ûKE~2+oLJAef%8!?XoZ~Y+~ܱ2"!g&[Öiy~trNM^*ҪpV&[7r]_N'u
˴ \k+.\'3)tCAf]lh`kPm);CoC+ظvaVl$Z -183gfrk,<KDGA>J)Y*ʊj2r -rnJ"5>mV8n|@~d -':ˏ{]LFB.w='^>z399=9xg~Mf5%5ueUٽ:7bnjz?i<L-'U"HmN:qΆ?y -rl0<zR 6^97Xs헅|ToNc~7w.t%GtqV
kaeD -jj,aq7c+ͫ(F2ӸX[<W=͐K
SѐѥjK\0=0PNnSJLPѐL<]PFTu_cq7;2ȉ -KuBrXـt3j]ͳ]^fwz$=a3G~{Ttغ.^F -SkK5N.Neg.h
8/ՉME6_9 M00=0}i -0TܺO!x -XN4I:`*PEV[OY -1M?<%Ư݃KACp?Nf5bEK`+MP;
L/;`{ٿ>C݆y9:DgT -(G袓?m!]ul(?>W4HȌM뢰o;ZO|Cs|`Wq9<j"SJSlb\φU.3Yieb*uQG0'Fsuh9|IQDb<%%RpCItfZ$FGQbKj On결b8pp'\ZC; -},YVʩs[aIC>nzW:**i+r`K/7Nj$B\zp'\Y5>uN^SDs<@^woX:)=ILj&A[>"5 3dH1KԘIH*lL^/{laԍa%Zg -o0]w거+$,el#R\9ƙF=*Ϊ#TXrV&E~δ1 fT)Tm6hպfx'ՎA[edPƊ-n; -QPdYNwV{jϨχ!Vڻ= -mf^FHaVb]|[kuGbuZHSzrި>_j Cc;'?Cﴌ|v16|'`#-3eWa<HȣE |o1S Z̖m! -o3Oa:$d +xڭX\Sw1ҪM[ڱZ+ju:Z>"j BBBB;$wxK^ +v3uZNwNOݽv:M~0DL+w-ٱs03Abҭ^RH<|JD|s>bd8ӉۍĞ +F-eN8L
<ݏE3} t>Ч/!WH4<EL0PFџ<Wmļ4 W>x|1-!/8 dζpp.a.*H($r2R8N4w?''+椊94^6'W(sbn7!$sIehf@K +K9l.&^XL..K?,cC-+z鎭"v$̕$21%g&dlH&r&s$oO"g%2dYC^B^F6"-ȫvd'EH<!<$!b$ R--@XUOdӏ{OYNo Z̙1kƙ!
=\_úYȕG#fj')=_ƙ>\v`)!v,\ir6J`bV_SLj,ppĵ'ni]"k{/ +d9//.B;p8WD +}6ipKRk"\D*+_vPwP +H +@y\2PMYuFc +QL?Up+κ=?Zmwz{Cf}edžSzϧ,"V_T㡃=zR\;ى09
`\%qp3w7<ʁIk#pTXRE G +D:NNj)w[V,PAA%^ɓYa]Yz26gez iP<>.]! /dg$.S4ne1mZE^bm.کJ,1JfRmʆ:̓甋Źi_ÔvZo(CVVA>WשT^AfjsZUucc]WtXp7?\Z3v!÷
TѸLJgD-xN=D-rml)- +ys%%\\"Q^_U2 +no 9Uuh|_u6\?Bn/QB>:[{@GԢQPUlr4us؇ўef>hcPjPLYVயq[=sʎMAuo^M;㨐$RKwV0,61Mxm<,`- +YZi10嶂r3=<LofΎ[SEKpu_B&;mLYʣk\a4UZ.VhddڔEh!WŒO>c!fs}iO&ϩ{+`|o$vB%;bo1ZIk=0V`;ʈ#ޠ'{Gq mSɚ<-=My_OH{i=/PD8[{YiN_HFmwz:.Syь% +>4brU\SL%Lуj#e +11`i
jvgb*܀G*٠+||EsGт)wG 4yx[/~%n792z^O~}seAPXm=~}/n/džFGY`*VXp +ɕ܂8"9-VSX=Zfmձ,ځRyS5>WK\#$)auZlS\dN6[;^VAST +foTGB4ޘxl\y(-旃Qhg~1}ܴÄ6zn6a7Y6
eڤW DkQV2w侨746l2wtշOf@nS +?v1m +}OnsoN͑_mVxVfdƭ-LSIVҧW(=o܀4Dg7peЖo4w]_0-|`8w+$o!>/ZTNuLNY ܊ +Dxw3=0l^E3!L/>XL '+WJT ++VIiQKVB̜MT=tB,#My'ͲUgs?)Qh5c.uUnF.%6RC<PZ# 2Ń;>k'J76Oܳ ^GV +ɬ
1تsӧ:}%Swg\~,SB]E^D,(h2eڧ8qV@Qd<-,8_Dib[O?qj~~"O|+36cEqY&hD4^{(2ckM{?$nK= Dk&CbL/l᧰͘]˦|TrgCSwu2fs:^Bw`&R+ע~ԕ:w5.ICrɼeD;Uj)-{s6`:IxͭG9F@f5NbtڝNNޟP F:C*i^j)73L~J>'(=տƩp{-*MNsE'\NEOV6͍LR.^Ƣd*Bz/ +kb4=dxGO[
jbutkˁFY@p}+h3FP&)rdކ +z!.?XcFHzXܕG̶%_}Hq&W&%jɥ'o3R?., endstream endobj -4367 0 obj -<< /Type /FontDescriptor /FontName /OSSEGU+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 4369 0 R /CIDSet 4368 0 R >> +4729 0 obj +<< /Type /FontDescriptor /FontName /WTDFTN+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 4731 0 R /CIDSet 4730 0 R >> endobj -4370 0 obj -<< /Filter /FlateDecode /Length 535 >> +4732 0 obj +<< /Filter /FlateDecode /Length 518 >> stream -x}Ko0]8ĥBx"MK0ن0%a禕arѷ_#g磌mKxѦ.RRA[[xnR]&8*:3al彮rp?KYܞ:D?QKK]Yg<r͋뺲vބdSeKmB&ˢ'rEe[*է[,݈]\dJՖwz41ٵi.ø$LIm<z+&vTo|<s54\RuM^6g- <a$qxt>HşIy$)(-ͦ4-h
4
EQ- hDTA(瓣wn@s TW TAOЈh>IՉ6;\8k?cd`:iDEDLP" I4m<x``ܾUckۚvWRԍ=wmKFa +x}Qo0+$B#EZihk/,q$<g84!qO'>vj9R\:IldKMz)R?;tU]
w|Q4VN*~?| m<W2vվΦ̨\UXt97jjj{>yl6>VZu*;XA3U.]B`d:wSUĦ7<ݥmd0dSt4MF&6/Qz+5kK,vlm)+ glOVG)(egE+ӈ4,sPzvA/<<BCBKA'S|G wA#=z&+4O~e
zu4J O"R +g)p&Ku'.]]^^<It&ʭ1Ûwoϙ3.:;o{6]{2=8 endstream endobj -377 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OSSEGU+LMRoman10-Italic /DescendantFonts [ 4371 0 R ] /ToUnicode 4370 0 R >> +401 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WTDFTN+LMRoman10-Italic /DescendantFonts [ 4733 0 R ] /ToUnicode 4732 0 R >> endobj -4371 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OSSEGU+LMRoman10-Italic /FontDescriptor 4367 0 R /W 4366 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4733 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WTDFTN+LMRoman10-Italic /FontDescriptor 4729 0 R /W 4728 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4372 0 obj -[ 27 [ 869 559 ] 34 [ 818 639 575 ] 38 [ 575 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 62 [ 900 639 383 436 319 ] 70 [ 607 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 ] 88 [ 319 ] 90 [ 864 607 ] 95 [ 863 474 639 454 ] 100 [ 575 575 ] 104 [ 800 447 575 575 885 639 869 ] 112 [ 607 1189 831 869 607 ] 118 [ 607 ] 120 [ 511 575 671 ] 125 [ 639 ] 284 [ 575 ] 499 [ 571 571 ] ] +4734 0 obj +[ 27 [ 869 559 ] 34 [ 818 639 575 ] 38 [ 575 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 62 [ 900 639 383 436 319 ] 70 [ 607 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 ] 88 [ 319 ] 90 [ 864 607 ] 95 [ 863 474 639 454 ] 100 [ 575 575 ] 104 [ 800 447 575 575 885 639 869 869 607 1189 831 869 607 ] 118 [ 607 ] 120 [ 511 575 671 ] 125 [ 639 ] 284 [ 575 ] 499 [ 571 571 ] ] endobj -4374 0 obj +4736 0 obj << /Filter /FlateDecode /Length 32 >> stream -xc``6/xߏoz 8p +xc``6/xߏoz 8p endstream endobj -4375 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6950 >> +4737 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7025 >> stream -xڕzXW;4ײ3Q 5 EwgYz"(RDQ#%?&Ƙb, 1ς1ɛ|}\8ٙ繟vgPD"
[&X.dwSCv,Hdɉ8B"rDLlZ]4ǧeKwKGPِc?ArMr`1ݏPC(zB2?>rSg, - TN:u$qyr@wrdU!1lr\H/{e?7eT_x?<$*4bd冀eLHx竌 -WF)l\A8$8R"p_pQSDFΙ2%2rHdMĔ]}">x
+[jH厐p_wஈG/FQoP5H9R)ԛ4j:5zM͡ޡS('j!L-PKerjZERʍBm<)/ʛ|)?* -vRA.j7LRaT8AERT,GS{%_$@/2s*.k0s24dh~^Df%˒=ҏ,Y|ܿ} -ppFuax`ԁk*9,vL2s;}+'px*2YW\\`<+$FU -nFmamo C0la0*>9wqA;]R<e%,kaao!hC/ -b]|O!n<tk\xkvwJD!l>z9QZ^ݣQuYh_ lqIAc`י% -£<_az%EFZեxEb־Bmq[EF*P4sT+P6M
j;-4(dI%Q\ߍkYkaHF -L6a%'E\rڮW& -;z|k+(8ZNYwV KArEMYw)(8HVƲf`~!o
@}ѵβ@=YJ>֠V5dզrﭑ^l 3#7A -6@@[D&`P1z1p//ދttnEX7#Rg6F(~"{-T%1-&dxXp/W*P'8Z]^//5T,YgNhԊ>~)CMoًC"|+P<x`3L 䱃^%IA۸%[Y70Vї.|[}e[Ha & te!2
54͛wۍGaOq:X]o'3}6,`5йfx_^h -䭻54 -/FLy2EL+Y< ;eO4xM6@>L10[l @m'cY-(1Ja'`LL!a-E=jnke,gxUCu;OeY<ch<+~ -laGЏS@`Ox ݓRڠmN˃>KY{֍_w9@z"XV -0B0%.0wȐB' ^,T9*A)Uq$!~!@(lnqcKNi3H"flEC6KP*ckWr} -q25nV`G'irn6qQsʚ@7kb6?|7_h8V|Ry7"oəu`F #~3k]rM -wU:-kXѬ.<Fpy<A߀ƀ7]M^9osȮq>JꭇN|}z{F{-|KQBǙ^90L[bJߞ:Ƕupxp|f0$:S;p=~|O@%_6lUqQ-\%3< HN)!B+?LEi)ܺQ4^.+c47I>D -}4LPIr7+<{w@x
y8]4O$:`i:`WF!!A-4.L!:ׂz%tG;:H^?GLZE3Ϊɭ,L#]6-mTEH@43Ru@/.Z[fWϯvWL5{һŮx6#2^F&٩=Ui:ORFF|y -@[y= G-.e8>&A|=')UWe&S'nqO>=w/S<3Mմ0s
)|J -ߝnH/<T{ -^}ѶEJϱ\X,CΕv?Hӈ#f -ŕM>Ob}n<C&ݽFkNSPȰ;mI\qz:6Im9hhjJAgQ9[5)h'l#2;ɱ,;de3uy|wY -ϊ23,Rb,&bE.QvN2[a -,_2}Ce<5vH_E o9(V4j=ZAVі3~2g4Uz\nE`UHs+xL57,O -Q
o促e{2w3lﻻK"B֢UXta˸qR_C2Q>;yN06hjxG=aD [*~HQqCWH<pwBNV`;x"Ұ|g}ChtENLT*.qLuBFtx7w4捰MGG[9dPw@ۛVc,wBE\M\6p)%z;`MLijb|Q%\(~b7לJ8XRywIB&w>l_o˻<$QLд9J1;k&b~G^q!vV4-Dj/3UafO>DDI`; - "_Q7k~:%73o{Ex}n==y?^Zy?ǚ^;7OILGwo%Rhq Ϙwhmx.jR7j5iӓyl
9Am5XF._aQ4|(-̹ZۛEw䠽yH]hv >T<vY]mҧD9|"C -a' 4Ro]ibi
7o2KGA2`IRsI=9l+oP.I
IEY79+LmgC4Ά0 -Fp&IS+ȈbJ8[}(5#U#Ӧ</F(f闽K}&m,f^L/m,%I
g4ژh]ܫHwɨS:̆aL۽K[D6IRl&~1Dxsa+!/mPVS#}ZBP~-Hx(v;at\lV6Bdl@hoEŋ@;Я<byHO4֑$$_32rtkTВwٽZ!ˬ*nT8&\{ʅC)\" :>){VaLKs22{Qc&K|x]g|~%=4E)"tmenS%' 5-TjN?N2 'C - wݬ;|YK6{fAXkt9SF6`D[ļݹF- -5y"@-۰ked9P +xڕZXWv&jTl(h,5TQza){7)"(+E5bK11cIIo{Y0&{syp3~} )Dbz'X.twN|MWJqDJ.~"o&6c,ͮX$%滥)Jlȱ7HZ$Xm9tr4E$=R)V&GN<mAhX|DP@`rԉL$2AJ_IʕBc _.er2:/"R9nrC`P264"XI~FUFE(K6ߠ\\/$OTF)fM0)4"`?Y9yWߢɦ9-^jӊ,Z~Ѥ(h/;hW䤿z}C} +K9P#רQʑOMIduj +5zAIͤfQoQsy5rSK2j9ZIPkuzjNmR)/ʛ|)?* +vR.j7BRaT8AERQTGS ^g/f$Tk14s$$_YD 72+Y)~h1T
7phy:[6u6l~f]h13;8v#y]{ƾ}țC84saɊ_0;7ʇ~tyu +Zww#XIxwKdKO籾iZ6AMAŊ3`%J<F:CfhzؖH;.q2AZ6`p22C<sP^UzT\`uzq*O+dr9E' z +F5l?Lh=Q1.iYE:cO "w4 +1pݗ˧P&Hyi֭U'?9\rGݴtgP=_cCn]9Pd]=C3y2(S&17ZRXw3j8k;~`0)DaxHi(MA_E|S.=PV^zױk=x@}9OU0C:YFjo-N8Tgs=V/&H3cؽ{Tj.;s41''-)-0}:ӷlb:Ngd%FM+S@ +;|vzl@R?]ܺs}*Sh<suW!\TL^^]JP$e+qdXd!x0R}Pʹ /mZnTiC&O,n|o_"_C +JKPZ]H<0-4=) +p)b7j^_*ao9𡯣c\aѪw~wʺJ_k$j:̺s!V^OHJE QE:Z53xɟ|` +; +2^=OgrL|[얟85g ~;ya<ZV]44&;isDUZ\«1HCe+ݻ +ÃuW^I7Uyťܙ;ǟ?;%XÓ#ށh< +>ϼz˖<xҦ iO>|n'۟Z !3p0P]b8B^ 1aEޕY<jÜE>>
Q|hzg"1kKK0qYptXt#i-=1k_&HoU5+ +qeXdYm
:"&GJ+3mZ(-;pҩs)l*)Çh6=V +E8+2%ZpJEl9ehYFs)fB'3N_=
5=ϤLMl~QF![??Ka|ZYFa[X2}9o⭾L}:yfpQd;mݶ<P4sA-iz*v_.I{K9@vwu3]2J:0;MI\C3|FV{FRƽHǰ8?P\+h1)S\וP~5/~BW
ck8'L]v[Ι`Mc%0¯͒;0&rE8;+04 +7h5uMbm1Y/2/98u72ou`F!=c"g]vKvAU:-kXɬ.<Fy<įA,$ +Yie!uHu!VdOLC_Y\B,[ПN\< +(zDd$#}iLc4esIƘfAx5~CK1Y|m,JYY9Psdq1ⱊEPN>N6*/7dX:e6*{`;xlkN%ArP8fiz4ϛ?@-w?'<o|eΖDUaAաkz7;qZsO#o?<vȔAl +k.M4 +t^|\Iv~W P4Bݴbyi`, /;=w)D\f/<)'4V@[XkdpGEת91N=h㖱c5>LJdʯo~z>) +%.,ZcO-MJFXE<ͤM3/i#n"v}%bgEI!B-1463}ҤΘ?D#M;`ݗПqY)_Q7;)x/sns559/W{?Bw۹9uw7wZb:Oֽt8$ͺuK5I_B5%d4<ֳ@w4&efKBϤ9YY2bY3E&tN6#dVe5XJ#Q1[V`,aҒkyṃX@9Tu<vYۤOL;kT!x''+*(Ut#~SϬ7ˬD$rzD<毇#`'#a>ݺHv JQG|,F흩{\+7#
R3f
RfH(2^u6,镢/g4!me<~E9 W)38;+2wIsS09fCxa^hf9$+9[Lm;fjuVC ,wDe3"
&kaFeCz%ωPUyM@^i:\I}wicth̾>-\TW텅4
[IiKKsr }f "mzOp:hiAJ7ip+(K@[Y;sB]\柂a{{yK@Я<ryH4֑$$_3"jtkt^ސgU4*F +
u|ܹt!EOiIbj͉*]DF=PvoҼ|E^ɒ2_pC%MU!m"D[iH4{F)B6LBnɟ
ZSǍ=LH"B՜7qػ
X_u;O=~TBq_(8o~/G#f6ՆqFН$vO \ۃk^ocƯ
\ʈO[lE}?</K-]|Uц%+rcʓx3MWr}b10~?Pfw 4^bg6}WWT%v(|jZma[<4)@x$4Q|f endstream endobj -4373 0 obj -<< /Type /FontDescriptor /FontName /XTBITZ+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 4375 0 R /CIDSet 4374 0 R >> +4735 0 obj +<< /Type /FontDescriptor /FontName /VODDLS+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 4737 0 R /CIDSet 4736 0 R >> endobj -4376 0 obj -<< /Filter /FlateDecode /Length 651 >> +4738 0 obj +<< /Filter /FlateDecode /Length 653 >> stream -x}]0+s1JA?Fv>PYMt^7{ -#xyrfkTaFե)tx`0XVMҪ쫩p^M=)NIs},=aÝww}Ssp^T]ͮN6iKM[VEϜsÛQ#cPՐ$; *g;$W>͡ -&6`5Wo>^
tʔ>l>f#Ѳ>bw5=G-*:/t&v -{Oa&ȅ$"Q<`@0D0Kp&h<l%bt`Q$ .=ùtD`P1%UP?L)ILIaJ&!$yE'M .iJD`r3z"oO\cE +x}]0+s1JA +8{Mt^7{TXdy<<9i '0yl:}˫r֦Ziu컩X̗^lҷIS},#ac~|D<V'rW-_14?iʼsn5nom0 ?6Jd{D1Sel79Thkl_Q)͑ڌͥO0L]kwl6T6ZvxTlfEt[ +Q#; endstream endobj -367 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XTBITZ+LMRoman10-Bold /DescendantFonts [ 4377 0 R ] /ToUnicode 4376 0 R >> +389 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VODDLS+LMRoman10-Bold /DescendantFonts [ 4739 0 R ] /ToUnicode 4738 0 R >> endobj -4377 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XTBITZ+LMRoman10-Bold /FontDescriptor 4373 0 R /W 4372 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4739 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VODDLS+LMRoman10-Bold /FontDescriptor 4735 0 R /W 4734 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4378 0 obj +4740 0 obj [ 89 [ 1161 ] ] endobj -4380 0 obj +4742 0 obj << /Filter /FlateDecode /Length 12 >> stream xc` endstream endobj -4381 0 obj +4743 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 514 >> stream xmQkQ~/Yl݀&(Px1%-
i4J=%Kvɺ/n nl%(("^=&GЃx7Ϧwso#A@cq1_9[8/ۊy1f721yI !M}"쎍>cg!|~r#AqT4XzUs`*: -AVY]A1UJ0/A5 KTS @@ -14656,31 +15636,31 @@ xmQkQ~/Yl݀&(Px1%-
i4J=%Kvɺ/n nl%(("^=&GЃx7Ϧ "4ljPXn64U/ZԠMUh*(X(3Դ)$ endstream endobj -4379 0 obj -<< /Type /FontDescriptor /FontName /XNTVGR+LMRoman5-Bold /Flags 4 /FontBBox [ -630 -325 2006 1163 ] /Ascent 1163 /CapHeight 686 /Descent -325 /ItalicAngle 0 /StemV 145 /XHeight 444 /FontFile3 4381 0 R /CIDSet 4380 0 R >> +4741 0 obj +<< /Type /FontDescriptor /FontName /XNTVGR+LMRoman5-Bold /Flags 4 /FontBBox [ -630 -325 2006 1163 ] /Ascent 1163 /CapHeight 686 /Descent -325 /ItalicAngle 0 /StemV 145 /XHeight 444 /FontFile3 4743 0 R /CIDSet 4742 0 R >> endobj -4382 0 obj +4744 0 obj << /Filter /FlateDecode /Length 358 >> stream x}Qk0)n;"ڮCXa&gD> /d}:`Z쳊L&[es@^V
L76s,Yr\5ބ|Z`Żg}UfrU=jSRcgԵPrRj6>$ߨ6V5ȽYi&dO]`\0?1bΈ7é-PE17u\YۮcnTt?ҮBX8QXWCдO#wJG}5Cc>Aa?uouܾhg!Z8!1JU6-w.հqG~:T endstream endobj -366 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XNTVGR+LMRoman5-Bold /DescendantFonts [ 4383 0 R ] /ToUnicode 4382 0 R >> +388 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XNTVGR+LMRoman5-Bold /DescendantFonts [ 4745 0 R ] /ToUnicode 4744 0 R >> endobj -4383 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XNTVGR+LMRoman5-Bold /FontDescriptor 4379 0 R /W 4378 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4745 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XNTVGR+LMRoman5-Bold /FontDescriptor 4741 0 R /W 4740 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4384 0 obj +4746 0 obj [ 27 [ 531 531 ] 31 [ 531 ] 33 [ 531 ] 35 [ 531 531 ] 38 [ 531 531 531 531 531 531 531 ] 47 [ 531 ] 50 [ 531 531 531 ] 54 [ 531 531 531 531 ] 59 [ 531 ] 61 [ 531 531 531 531 531 531 ] 68 [ 531 ] 70 [ 531 531 531 ] 74 [ 531 531 ] 77 [ 531 531 531 531 531 531 531 531 531 531 ] 88 [ 531 ] 93 [ 531 531 ] 96 [ 531 531 531 ] 100 [ 531 531 531 531 531 531 531 531 ] 109 [ 531 531 ] 112 [ 531 ] 114 [ 531 ] 116 [ 531 ] 118 [ 531 ] 121 [ 531 ] ] endobj -4386 0 obj +4748 0 obj << /Filter /FlateDecode /Length 25 >> stream xc``i}m■r endstream endobj -4387 0 obj +4749 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 5721 >> stream xڍY \֟2J]㒩wRVۺ ԥ*Tqi]XNIH
"ִ֢Vmj_{gMj%ܙ{9s@Dў6z^SRϝV棱>Z?ϏNljx4ļ$"c;9<z>-[2DÄA0i&ZoqzrDs]7AT$t3PGht3X?_SOS,U @@ -14713,10 +15693,10 @@ dWg`+ErK6(aeZZX/ =ݴ^Wٚ.=-=1Qtjtյ{ n`*3%M+aLJq
앥K*h/BC&$` endstream endobj -4385 0 obj -<< /Type /FontDescriptor /FontName /MOXNPT+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 4387 0 R /CIDSet 4386 0 R >> +4747 0 obj +<< /Type /FontDescriptor /FontName /MOXNPT+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 4749 0 R /CIDSet 4748 0 R >> endobj -4388 0 obj +4750 0 obj << /Filter /FlateDecode /Length 645 >> stream x}Mo0=8ih%Czİp߯wJ+v+aƞgz?xGg>LSաzEݮƶkcrwm2ۙK^rM8if΅NuXo>s?WҖÜoCsh_<qM~)JʆϜsśyM譣a"kMkK{*
\i{p~:7uaϬXѥnUu1^h2a9]ևaeE{GaI!t27MuL}g]$26+αx_%PP3phHo!29H 3nҠhL(6E"`@"I3 @@ -14727,22 +15707,22 @@ OA@TDݕ֚HbO] IX'p0Kp{$tWE#"ࢉ:Tx r
Q5yLSMo ^WϦM0ӡkUeW0)i)v endstream endobj -350 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MOXNPT+LMMono8-Regular /DescendantFonts [ 4389 0 R ] /ToUnicode 4388 0 R >> +372 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MOXNPT+LMMono8-Regular /DescendantFonts [ 4751 0 R ] /ToUnicode 4750 0 R >> endobj -4389 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MOXNPT+LMMono8-Regular /FontDescriptor 4385 0 R /W 4384 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4751 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MOXNPT+LMMono8-Regular /FontDescriptor 4747 0 R /W 4746 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4390 0 obj +4752 0 obj [ 28 [ 549 ] 47 [ 549 ] 50 [ 494 ] 59 [ 494 ] 66 [ 329 ] 75 [ 878 ] 77 [ 603 ] 81 [ 549 ] 84 [ 549 ] 91 [ 494 ] 96 [ 453 ] 98 [ 439 ] 105 [ 357 ] 109 [ 576 ] 116 [ 495 ] ] endobj -4392 0 obj +4754 0 obj << /Filter /FlateDecode /Length 23 >> stream xc````TPX endstream endobj -4393 0 obj +4755 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2201 >> stream xڭV
PQ#E
Y]ȏS[[C @@ -14755,10 +15735,10 @@ bEeli2vRӣ%IH=Ҫp P"S|TRQ$OI\%Q b-N(JC `F7fgid]{7?uꨤʱA# vvPvW2ILh>oұ1ѷS؇A 6kZ mn endstream endobj -4391 0 obj -<< /Type /FontDescriptor /FontName /GAKDMK+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 4393 0 R /CIDSet 4392 0 R >> +4753 0 obj +<< /Type /FontDescriptor /FontName /GAKDMK+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 4755 0 R /CIDSet 4754 0 R >> endobj -4394 0 obj +4756 0 obj << /Filter /FlateDecode /Length 432 >> stream x}j0z @@ -14766,23 +15746,23 @@ uHeC7Ӧ-I(:$GKFyJshFWA=DF7p!QyW @i4
1$˰!H! !9vYl~,~/wƸK',|I`æ{z[/4? endstream endobj -349 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GAKDMK+LMRoman8-Italic /DescendantFonts [ 4395 0 R ] /ToUnicode 4394 0 R >> +371 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GAKDMK+LMRoman8-Italic /DescendantFonts [ 4757 0 R ] /ToUnicode 4756 0 R >> endobj -4395 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GAKDMK+LMRoman8-Italic /FontDescriptor 4391 0 R /W 4390 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4757 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GAKDMK+LMRoman8-Italic /FontDescriptor 4753 0 R /W 4752 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4396 0 obj +4758 0 obj [ 51 [ 611 ] 56 [ 611 611 ] 78 [ 611 ] 82 [ 611 ] 100 [ 611 611 ] 106 [ 611 611 ] 121 [ 611 ] ] endobj -4398 0 obj +4760 0 obj << /Filter /FlateDecode /Length 21 >> stream xc` < endstream endobj -4399 0 obj +4761 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1695 >> stream xuU}PSW%+4-}O{BkQP`@EZyI @@ -14797,157 +15777,147 @@ E0Hw/l:NhW$ {>4`YQ$4d쭗6}hб{F}p$pxse\ɦ|D;2ukwW
j@FQCCsA*<O0'Niu endstream endobj -4397 0 obj -<< /Type /FontDescriptor /FontName /XENFPT+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 4399 0 R /CIDSet 4398 0 R >> +4759 0 obj +<< /Type /FontDescriptor /FontName /XENFPT+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 4761 0 R /CIDSet 4760 0 R >> endobj -4400 0 obj +4762 0 obj << /Filter /FlateDecode /Length 404 >> stream x}K0w.jSH'fTT5:]'0S=799Im\0)Pf?Ӝ4ŪeFj1Vl%4"lq"ٵX"Sbq^mNe;TTvDy5` n/ԅPrQRj~,%̮ %ﳐ\߭'Q`ܓe&*ۼ%f<+2@hfEouQyFPl6!O*g#tG0S<eSyA21!&+s%Uthg(Tہ]3yĿ=<FOASSS>K.#?Vims=UnG}P-mV endstream endobj -347 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XENFPT+LMRoman6-Regular /DescendantFonts [ 4401 0 R ] /ToUnicode 4400 0 R >> +369 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XENFPT+LMRoman6-Regular /DescendantFonts [ 4763 0 R ] /ToUnicode 4762 0 R >> endobj -4401 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XENFPT+LMRoman6-Regular /FontDescriptor 4397 0 R /W 4396 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4763 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XENFPT+LMRoman6-Regular /FontDescriptor 4759 0 R /W 4758 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4402 0 obj -[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 50 [ 472 531 ] 55 [ 325 531 531 ] 63 [ 549 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 531 ] 81 [ 531 531 ] 84 [ 549 ] 96 [ 363 ] 98 [ 407 ] 100 [ 531 531 ] 105 [ 384 531 531 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] 121 [ 531 ] ] +4764 0 obj +[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 50 [ 472 531 ] 55 [ 325 531 531 ] 63 [ 549 354 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 531 ] 81 [ 531 531 ] 84 [ 549 ] 96 [ 363 ] 98 [ 407 ] 100 [ 531 531 ] 105 [ 384 531 531 ] 109 [ 549 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] 121 [ 531 ] ] endobj -4404 0 obj +4766 0 obj << /Filter /FlateDecode /Length 24 >> stream -xc``0<4-aM - +xc``0<hZÚ endstream endobj -4405 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2548 >> +4767 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2614 >> stream -xmV
TW!L&jL+1Z-*`h "Q0$PѢ -V<j -U
#XOb)U[챽C=tμ7}~1WWq$>e+}DUVaRN7 ic,x, y ]Gm/[/TNp:w75NLL=~`I\OY/ѩ
<9~(7j\5d012_&Nkުo٠Ve2L&I)ԫtz&K-$eQeNRUL&Cc*fILVc`*^̝0z63fjuY~/陋9nnt|\\q+
LVdJu.mREdh7*Am(` -ŶTkhNܐjVr8xAML\13zWmM@i/᷒;t@%aRg?~-Z>2jySOGsᥔXڌ$s[gy2ݖ:AM; -6'u%=dUAk0E$; V4Hn۹3{Jcl
7lNWmma-ک˧Z.<؆j*қyGAFM#w="`CItb495mίv:1 ~ -o^6HCoځ|{}?khtA7:^nw}/`;4@cKg"Eњ#ipb6堍6ט^`G`cNsǡ8<?t2#Zϔ鮽N%&zBFWqdߑ#__B~'Kyۀ[3xM۠hؘ)Ae~.^@=~ S/'4]0
re>}M -ƊFST+4.v\n*+r8`ʀ3Z xN#GHL I?*1lat@~ٳ -B4Y˖AnES_ -ɘ+ -ܺ`t?p -E#g},/B9÷/[~ur2Oɕ%[u{k -Mjlm5"@&s)H5⏸T*%*6lLrlS y;~Ht$w{t湬i H\l/hKReQ:cBSּ_P]}q2Ҥ`Sil|ٍti8Tg[ꝡ>T~݇C.CɝѸ0XG>l>LAoF*U02\snY!1ˉGH^͉Vy -uV<Re*8@O4eS ?{::]
R?wIkiòKVe:bOw~f\f7١ -b`BSK)i$mE CbcTEYz,ڿѿ+8+rZnc[GL@x%ݴ}jbmmɧ
дШ;Rdbx<Z}e{v7vwb%۷Wn~0W?:qgR ~D3g -jthNjjIMEw;y}!ć;h$H*gAvjrT˛8%Ȱ3҉[Zv2uL8$7RleټnJMx*'Tꎲ!(̈́`M>Ah*!Hy(k\ ;ͭ/i15aGҨ) -+_\DeշS?|f5t)
MXm-92TNf#2˄~ȹS}&6߹|VT&c5|:&)O8$`?0ݼrWwk7'&c +xmVXW!L1djȣQ@E[4J$D"JʪDKT)i+X(ТTc-=~n|3wf3\]1=f(*(5PdUޚBi7h17ƍ9ƅ8 >'ķޮo1bDiUgGh2&tpƞ`yX +|se:u^4dXQ_f6֟]k|jؕ|ea.eSUK5zNkj=k +XSzUFұ|`qJ*XzJW~~,W|̀ +SE=um:BB>[єBY5\fTv(5JKT^ٴK..<;F^s@/1"ޘ@K/FErfU'
xS#qhMZҩC̾'N7F";O}GҊN }q":`qWpC'.*FSg1HOx߾Vs
Bi9h̹|p$Fb?IиXlvOwU)+;P}MȞڶ-Fd
aں?6/:v' +>jd;h4:8$<ndS̖}
? 鼔Q;ۛZ.1ftGhxˣ掎֔rcfr<r8!\IU[L#iEֿ9}f
ްA0W˥J +z]YPgGC/uRW]<D7^,K]hIxhԔB3paR$.̇BaDBa_C5&EdEkB^;C#yNNrK]CzyFVz_H{?ktϐb@ +%X}thCN>⡇#N9.t!K2 +̉rݕTCrygw_8^@ +~O Bw'^}RxN_h92$q= +>&\D]j*H`}ٳUEKgd
,L]Mݱ_5hTnT^! ׆¥^gRrG< gOA"r^Yѭ@ + KuOX]kj"Q1@Fi;ʇ2H"DQ($,Ch%*#!a$tH$p}_w&>ӿtL:;|Ìtyf+düiҷ?|j=p]\%1E㘹ڥo:tr;Ā7xPL endstream endobj -4403 0 obj -<< /Type /FontDescriptor /FontName /PTIWQK+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 4405 0 R /CIDSet 4404 0 R >> +4765 0 obj +<< /Type /FontDescriptor /FontName /CZLRUY+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 4767 0 R /CIDSet 4766 0 R >> endobj -4406 0 obj -<< /Filter /FlateDecode /Length 496 >> +4768 0 obj +<< /Filter /FlateDecode /Length 506 >> stream -x}O0=dqH`"-]Am!h$p"'9k9REʏy3ƞsYGGީ{U~)o4e%ٽ C}b{U9ul6-dy
+)1}@!%/d;_ -stWt2[9jk&S%r>Ѹ$緶k&O\\YM R<}ZMs!cq/M絸3Uw!|n
r -A+Pd) -A3 94D\b -*l@ET@aR-ic(LC0%cψ<P3q8/8ĝOq_~՚XWJo]d+fK*Iԍɲ_o/() +x}Oo0R{H$ +E*$jwo!HDNrۯR.(?̛=E'?lCmݫhhQdB$HRnb-Vײ<uќ>fG?-d;7tOIUIc:Ȯ-Aj;ιc)E^x8,L*)ƵFLTeg'P{tzW%HUwqբl9øeLAWy)3Zh]ݥ!YaMQ*䑼^l?GR|sd@-p +e +.yfR& ()(E,Ms{ycn)Z\{PP3AΙ[%$DlBNƖRn)'P=Ra0mR̗<"3v53^RURR[Jywiߝy~WJ0{92'y1Yk/p
./d endstream endobj -346 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /PTIWQK+LMSans8-Regular /DescendantFonts [ 4407 0 R ] /ToUnicode 4406 0 R >> +368 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CZLRUY+LMSans8-Regular /DescendantFonts [ 4769 0 R ] /ToUnicode 4768 0 R >> endobj -4407 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /PTIWQK+LMSans8-Regular /FontDescriptor 4403 0 R /W 4402 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4769 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CZLRUY+LMSans8-Regular /FontDescriptor 4765 0 R /W 4764 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4408 0 obj -[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 ] 47 [ 590 ] 49 [ 723 472 ] 54 [ 693 325 531 531 834 531 ] 62 [ 796 590 354 383 295 ] 70 [ 561 664 295 ] 74 [ 973 885 ] 77 [ 590 531 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 826 ] 91 [ 561 ] 95 [ 782 414 590 419 ] 100 [ 531 531 531 ] 104 [ 767 413 531 531 ] 109 [ 590 ] 112 [ 561 1091 767 796 561 ] 118 [ 561 ] 121 [ 531 ] 123 [ 885 ] 125 [ 590 ] 284 [ 531 ] 499 [ 502 502 ] 502 [ 295 ] ] +4770 0 obj +[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 ] 47 [ 590 ] 49 [ 723 472 531 ] 54 [ 693 325 ] 57 [ 531 834 531 ] 62 [ 796 590 354 383 295 ] 70 [ 561 664 295 ] 74 [ 973 885 ] 77 [ 590 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 826 ] 91 [ 561 ] 95 [ 782 414 590 419 ] 100 [ 531 531 531 354 767 413 531 531 ] 109 [ 590 ] 112 [ 561 1091 767 796 561 ] 118 [ 561 ] 121 [ 531 ] 123 [ 885 ] 125 [ 590 ] 284 [ 531 ] 499 [ 502 502 ] 502 [ 295 ] ] endobj -4410 0 obj +4772 0 obj << /Filter /FlateDecode /Length 32 >> stream -xc``0Mxۿ -a8 +xc``0-.~_~0`@ + endstream endobj -4411 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6724 >> +4773 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6576 >> stream -xڝZ\eTd-3:-b"eKY@@X:eYzeaY`oQވDch<;x_r}-v9+ !,ڰ6)\gmy]̟-G'9!/Z [vDE_wF w -mqpw66Qz,9C"1,C_b
~y7#֍hM]Ma.0AͪWq(/Q^:+ WG%q(( 6tlƇ՟L}PL6 -ևt@}Ce@wEּ!֠< -IJ8ka-ʎ@al'\m<Gv `$#!f&亿5/ޕm3>7M+QnOhf[@NU%4FԂb9yPW{-2CM]M/a6-Y1ǣKF23ѦO-W\VBn_$:rB|
pvcMc'uJ
I)j64A1o<nZ; -7rd( 3K+g?^L6pd#Yv -`Gɭ)8t>uml5`ۃq]8ϙ`}=ި1RqIb4)0t>Zɠo)<CK&`̛$%9e 3aZ(x[?)ވUYA]'̸*g:;:Fa'yP3ʎq~Ggu4lΝh1h @b<!uU.ҬM웆F*ؾUؾ#&bs6qFap~GOunLo`w\^g|'0𣒵hHNL00~Q#^ťaᴭRsuU`
ng@%s!p0r&g?V&4 -w~~utϪrD]po=pS7d3e.)BZz(MWsK-\y-tMtaÝwJ4\>+)npؕ92/رګ,
]K,E(Ww'z/P8Zsڷ٧5n &2r]P~2=+#
j>T<v@D}p5k*;LV'%EyEY,D*H -ĭCP2{Cy(20߁B8(KwR_ptY{8z4܍®r/&Rsn&1Fu"rP#էOR1q"#́7PλbzZiM'QVN7MO|wd-Ж#mKW/x`Z5|\F!lH -j\MZn0LSg0;.[ͶU#[lv%yG+3-ScayHF -6AbfaV'r<ARhَϲ(U19&X7VV$=]wH *z<FA?ɡp9٬\QTg·,IINC"Y4Y -{;@kmnA8^Rn$NOgzfv )K -̿)7Z)X -v%*X,5>gWy u$07Ǡ~#'!Hhi=QɆH,]6nXё4)SVu}Gp8a?x,vYSKY*@ |4fW1Jqe;a9FfBؕKځx)pip7;S4f($@#i0$ਏ<bi8h$P4t"0j"|J~}Ӳ$N- --`w3ե1:>v> -}/L!IRy,%p=Lð?dNeZ=OΈܱ=.E4*JdE#=/AH(^wN*d*hrUah
!Lowb14Kt مOdeR\ ^8#o<+~s~&lI*B@`8+ kGdTP*A>U8 -TT|62T`+ƈno:9H~ڧLJS>֚y'
e<p衺J-`S =y3svWsബ5$ Fm=i :[I:ȋ1 )$5(¹sאE=#ܴ&;K߶:8Іaj}Zك=Z&2_ޫ3/L \Q,jmNfՃR -xi=m4v.yP6奘@=@~i%&+iyeTieY?<5>upfe첐$7ud[/ZSx" -4SgcR yLa5k̎5[ԱZ\Jr=MzV6yYfTy珞;,,>D0dD1 ~/ 6/Se-7_)f?<Q_%h<
Ny -J$EɌ<ñ]W=죟He^M(l&.N -1Ե#dr% QYPM -[RԬZP@ qa a)7~z_p|+\![ -.`x(67~be/,|rջ4esw9xTEVKk|C[b9U}3~2HOԬOܛMGe"84K=,,=aJ,WV("l^pw4pu;j@suX^ AŐօͦa]8-
d5oʴˌ8b;j?:|>ы~=٠"*C4A4ωh-#б8,$-&gl[pFrq~擛@=C%~d,=o{>'5 F~y-KN#1idDб8'=+Ey UG tX>ѻsѾ|&?#G/*65iY Btz9#V|$InW4%Tm< j\n7=UᲢ?t -M^#i6~?_dy~%ҧ2Yyi\g¥4U!Svo7T] -we:+A>
5&'0V5 -J -zm= q:?{RJL4 -@j]iԖUܽ-Yע-c"sZSKBBrӝXQu)ۄcApV`K^\r+lQb̈́m*ݸ좣7b<?5]u^J6Q>\9$}
5s*ZĔR.wXeSӼtuaף -
I2,EQ5]K[xWڷ:<!m39gkW1DbYW$~#I`!ٜrPɟu/ƍ&ܨ7( t.>%d,gkD4xyscݿU' +xڝy \*2ꌝRZ^W*,a
%[ ! +^ qk)ԔD`LjcJ8](>5KBG.4g8ec~;H=k-,9&˯N60a'ϲ6ROFL1uD鈟%#t{IG=EK&e1sԼoFhiFo(>!gbrHURL*B{wgHӠ_T'8# .A.mEF|M@ +GqZR:ϡ +X$A@D!<=j{0VW=o!F{y,$Yw̘M@EPV^[$L4wlYܤZ$|,jM9ZWÕ,Tˎ1f~ǡ'%T\v*c-{q .`Ѫg-9銟=:,u +.*=+D*ŷ3⽸RK
Ŕ/d7U.Bb̈́ƌ,筋6rzt_`'Y$;9X]IJv%0 +߁l_>#0M1sn].j
r\}!cy}ʷ1h8NC4 C'% FT9ԉqnhjb[
'me7.sFXoCh۠n^/hZp"ASTcSya\,? Nox:T|RA#DB^YLgC0/xur=Gɸ8Wi&U;CcѰi0$dBU +%Ҝo80Ujp{魎MAvtPf|\m.a5s:ͩgkvܡi;v2ߚ@$<S}ӜAö-sCoBd,~SD, k/_;?az$Rf-xs'*N<)n58njQ` +k 'ZQ[PrF6q0{Y|N:OemaƛtÏ{% +ٽ +[c=)}!tghz4A\bk4JQ:Wo'N}m7
mSNqY7fSL5텰'>@g4##ځfwÏ,Dz$M= `&LpG(΄
>ms8|$(4j"0Ij*%=Y9glu7q!GT':ೆl9u4ħulF)9qwHiuwUkXwPk,j;Ay78kO= +9,V1 +T +{q?GMkwT^Nj7i3d8ZWBSa$
f7x9ewಬ +7$a%ꋟꩲ$Y :'>a +fkqHEr!F;?{@?G%;KbD-NhE0z%esu`*nbvgSM9fHp8S,^We59A9h2>{3>˺()?4\tg_.4믘f$~`)$%-)(6
Fޯέ\]p,b9HqC +͕MrSl1$*>qٱhϞ9qQ=oc$BD>5;镎lp;OC.-N1L4Hámd4H(اf32s-o~<Q\#hɝBI{J6#!7g;U+[~tl&[o>CSU :MW'&)l^t`Żv4jUဪ/oǬ=O +s:-HKŽsXYMY)tmj=Ɗc]3Buo$ 2&#ۖ*6}AQwp.&&WG<""T.Ͳs[hgI8:qNQNȨ(6|0֡OlBOPW |oc$\yu"Qe +uo<PU]Zw33($GjSro?Up;|!mlެs0~͆U} `2l7.3 !76:-..ER&gb*BzH +/-KOjuf~e"PG>!}?#j` +aUDҎ=I)A4V!-ZŅ/p;|
gnƬ+rߩ }G-FY"*;.ChOsk}d|I"?m9g9iG;Xx7jˁ-Ɂ9:V +!V%^{XĖ~ +84w^mZ ?֟/z2¬L٢̸b83.l
+9فp^C9Pt endstream endobj -4409 0 obj -<< /Type /FontDescriptor /FontName /SEKAPH+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 4411 0 R /CIDSet 4410 0 R >> +4771 0 obj +<< /Type /FontDescriptor /FontName /SVSURZ+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 4773 0 R /CIDSet 4772 0 R >> endobj -4412 0 obj -<< /Filter /FlateDecode /Length 638 >> +4774 0 obj +<< /Filter /FlateDecode /Length 640 >> stream -x}M0=dɧ
+ -9d;i)/J1}(LMݽܮYzfձ:LGك(e~ʶ+kg*Vuev9d\%Uv2{"?ýeUڙDw.['g-Յ8íi0IVȳ.gUMdey]Ȯrf"F%T_qNgNh忳E~bie -'BpJ-釖6Ȍ,> D1Mс2g IfDfDkĦ rE<S@dF3,"q"rB5f!:p6 p"8X, ;bXǘ`Sqff1ΝL%9\B'%q"L00;&(+d]s43" LI/t~>~=O|oMZ"P -YԾ6wV_7J%?︦n*pQ8 +x}]0+sѱ8HAòwnM쀃O9ONl&O
=]=t/YL&iT,h:?ȞMtA'T~ +9f;i%/>lz?e_Wzr2\̪c_u/̖mWUsfdfTEKd?`ED^QŇ[jεX\v}{-d[~sC\a$g]Z5$ +-Ws9>]E:=/aKV@0~g)t!ϋb(DhXBN*Z-mY +}TAlj/|qdr@&T̈6QMrE<SAdF%ti#"I.DX=ڂН{S1RdIv3uafLP%Is "8i3Ap qF\#0q~f<Cr~/<O'\y1%A$)8}('?O|omZ"P +yԾ6wm/{
w\S7fq
m?4n endstream endobj -345 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SEKAPH+LMRoman8-Regular /DescendantFonts [ 4413 0 R ] /ToUnicode 4412 0 R >> +367 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SVSURZ+LMRoman8-Regular /DescendantFonts [ 4775 0 R ] /ToUnicode 4774 0 R >> endobj -4413 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SEKAPH+LMRoman8-Regular /FontDescriptor 4409 0 R /W 4408 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4775 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SVSURZ+LMRoman8-Regular /FontDescriptor 4771 0 R /W 4770 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4414 0 obj +4776 0 obj [638.9 ] endobj -4415 0 obj +4777 0 obj [446.4 446.4 0 877 0 0 0 0 0 569.4 569.4 ] endobj -4416 0 obj +4778 0 obj [668 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 607.3 ] endobj -4417 0 obj +4779 0 obj [570 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777.8 500 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 520.6 0 0 600.2 0 0 0 0 0 0 0 0 0 571.5 ] endobj -4418 0 obj +4780 0 obj [388.9 388.9 0 777.8 0 0 0 0 500 500 500 0 500 0 0 0 0 0 0 0 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 444.5 0 0 0 0 0 0 0 0 0 0 555.5 0 0 0 391.7 0 388.9 ] endobj -4419 0 obj +4781 0 obj [ 28 [ 525 ] 35 [ 525 525 ] 40 [ 525 525 525 525 ] 47 [ 525 ] 49 [ 525 525 ] 55 [ 525 ] 59 [ 525 ] 61 [ 525 ] 63 [ 525 ] 65 [ 525 525 ] 72 [ 525 525 ] 75 [ 525 ] 77 [ 525 ] 79 [ 525 ] 81 [ 525 525 ] 84 [ 525 525 525 ] 91 [ 525 ] 93 [ 525 525 ] 96 [ 525 525 525 ] 102 [ 525 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 116 [ 525 ] 118 [ 525 ] ] endobj -4421 0 obj +4783 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``(p5OK endstream endobj -4422 0 obj +4784 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4150 >> stream xڭXyT[UnJ[Z8ܫvZZ:tigKG(!%B Co2a @@ -14969,10 +15939,10 @@ FR+擛T4Yhڔ5LV\nĉ |5*I1?bT`km^~R.w:}]!s k:vYP+`/@pKYvm endstream endobj -4420 0 obj -<< /Type /FontDescriptor /FontName /YWBYKK+LMMono10-Italic /Flags 4 /FontBBox [ -491 -316 834 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -15 /StemV 175 /XHeight 431 /FontFile3 4422 0 R /CIDSet 4421 0 R >> +4782 0 obj +<< /Type /FontDescriptor /FontName /YWBYKK+LMMono10-Italic /Flags 4 /FontBBox [ -491 -316 834 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -15 /StemV 175 /XHeight 431 /FontFile3 4784 0 R /CIDSet 4783 0 R >> endobj -4423 0 obj +4785 0 obj << /Filter /FlateDecode /Length 538 >> stream x}[o@+Ha}[Y @@ -14982,128 +15952,60 @@ ZZV RzNA#!ȑS1b(!Xag rP:8K^襮z!v@Vpd"&z uf=i۱b</G]^V_}ݚ}>wMݘ*auC endstream endobj -339 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YWBYKK+LMMono10-Italic /DescendantFonts [ 4424 0 R ] /ToUnicode 4423 0 R >> +361 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YWBYKK+LMMono10-Italic /DescendantFonts [ 4786 0 R ] /ToUnicode 4785 0 R >> endobj -4424 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YWBYKK+LMMono10-Italic /FontDescriptor 4420 0 R /W 4419 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4786 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YWBYKK+LMMono10-Italic /FontDescriptor 4782 0 R /W 4781 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4425 0 obj -[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 ] 66 [ 525 ] 70 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 84 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 114 [ 525 ] 118 [ 525 ] ] +4787 0 obj +[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 525 ] 66 [ 525 ] 70 [ 525 ] 72 [ 525 ] 75 [ 525 ] 77 [ 525 ] 81 [ 525 ] 84 [ 525 ] 96 [ 525 ] 98 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 114 [ 525 ] 116 [ 525 ] 118 [ 525 ] ] endobj -4427 0 obj +4789 0 obj << /Filter /FlateDecode /Length 23 >> stream -xc``TdTe +xc``Td\4Ńa* endstream endobj -4428 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2337 >> +4790 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2472 >> stream -xڕV{TW -&]*!C BmhZCсNziQPmތYo뫗]ڲś-(%z$<~|'Ɇ:Gx&"y4{<=62G^:B -f/j"[dV}ZlfAQm]z>ιwp6& -vB?ٌF ʹfSrpvnO6 -4PO{cWtBjp -y -_C(5H#cM~s´ <%H@i L\p7\/p~o~Q'yZ?t* -\bjHO7t
'N~F6x7$mQdcՈn;I\qRH1M';:Y-c7>F/Iut -Kn+B, -{H(`&@ -,(S{7&._^|X!3AQZcJ4=B-ƮdfT"IqȴF@Q<2#Xī`u{缷.{&P)X/qXz˦/0THG0:"gs1x
$t? QfUzGH!4ѕV -fTKw0V&Q+<NnV-LWN]uIMa&#?/ -7$-`ٛ2/N"CUo72":10;ypeE>nz.ٛ -aA\PQRA HC qp*)9 q\_~R$r +xڕVkTSW䤔+%zm}*XJZ}m +KtSkΔ;=s/QYmǜus{߾J*$Ԕ
[6oX7w
&iɤe&C(gG +OL(%H:y
/-%$\NFȯO)y%Rө_$RId;`:;/)i~pMf%k&5[ϪvCd'wlȦitjC&kdS5[\beSVndۢ1hVMkXXNî)]e2tѪaY֪Ѱ:Tb-W`h350ndM,_qf,lƦ Jvi)M&CcmNLj.HͣQKe**ZGm^RTr(3elT^(Ai4[)UH],<bjRe2ā:yTmahi^*?G7J^9o +6%aOWͻt8hy⥥8hh?uns֓e=rR:HWԫŪ̎ASYp&P(J49v{z5rߞpFW +E1S۸v~8"/i(8{9@sٷy=c:ncWu7UbWS=rዓmch2C?g,k.8joib>Z/݈g]h4ؿ<p~!pOT&_KP/ + endstream endobj -4426 0 obj -<< /Type /FontDescriptor /FontName /ESZHGF+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4428 0 R /CIDSet 4427 0 R >> +4788 0 obj +<< /Type /FontDescriptor /FontName /HMXUMK+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4790 0 R /CIDSet 4789 0 R >> endobj -4429 0 obj -<< /Filter /FlateDecode /Length 459 >> +4791 0 obj +<< /Filter /FlateDecode /Length 467 >> stream -x}n0~ -!RzB[EHv*Q'YKFy=Jl@|?a -}`qtz0|Wd6h>4g -8ʶ?u4t{/&|/-svе5Sm誰WF@GD+^h -?qb,2G)FZ#- -Et"%HrT> %Hk{i\oAz -yJNp]e=k:u:H3}Ȱ_nf>SΝT1{n]NM^ +x}Mo0 +!RzHq[EHhіjҪWbOHFk{L+UE0|ُmS=5%ЫQsl +cm?;w@1˕9Z!XМ,7⛝hkN&6P\@fqn)IRAZ8J$!y季uRBE*|vFzpt#mua>=da&#!Ø{`{`ޏ!ê]uks|l:WFTggYz endstream endobj -338 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ESZHGF+LMMonoLt10-Bold /DescendantFonts [ 4430 0 R ] /ToUnicode 4429 0 R >> -endobj -4430 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ESZHGF+LMMonoLt10-Bold /FontDescriptor 4426 0 R /W 4425 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> -endobj -4431 0 obj -[ 27 [ 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 ] 61 [ 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 ] 101 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 118 [ 525 ] 120 [ 525 525 ] 139 [ 525 ] 163 [ 525 ] 202 [ 525 ] 294 [ 525 ] 602 [ 525 ] ] -endobj -4433 0 obj -<< /Filter /FlateDecode /Length 36 >> -stream -xc```b`P`& -endstream -endobj -4434 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8560 >> -stream -xzy\D$*EeLŌu[wQPu
;B , Kؙ}DVmmX]3=?Bpܙ{=|aiI[w\?e<@ie!~n -ӹuhnkQC8ƂY "+el]NAøVcZ3u8['aKA|Ot ,C#eYgΜJR͚9sTqvn}`_o;v휦m^oI -1FL'f3Ylb1GM'Eb)XN VXK#Gb=p"6wb+N vgb7K>p'2$o%"D %JKT78[7-H4`߀,|-Y:ZFXꅣǤ-@>Yֈb%Q*l=8xp&{]d1D8dҐ!e;숍fM2z;_fWl#-F:|&,Aߦ?nwo( o䃮2b7.FKGyLcS1^5I'+Y/nJP|Xp ļLªiW.<HVek]BMI`bbl ,fT'SUc*Ͽ-e~"KjF/lK[
p`sF*7I-63=}ٕm:ӕ!]Q!Kto5$!H?ud7ArʳJg
=O6vr?xܗm0>1=n7fǵ7ڷ\pQ8IS0fjW͖0}np,WzjDLܗbTqXp^)u}3>xp -ӟy~ჳ-r
J Jd\¢"i-SZ~:̴m")]qi/$ុ K9R8q`:-JzM3QCެ;_p"YSSڒ`5?Oײ#ۋ"w, SnVuE֜#|%ѫ1 Hcr(U7(P2*u@H48RkEt^6*,=HKR5gIItn)Jֶqݶ 0L6Gx*aZi.htiA76VE -l&at|TJE0CaJPCT-
"G7qd]C3]0@#lִ[pO%r66"E^o1?\*vc,/9B<;+nWQx(`Gϯ60[ De=n7~~S']x7Pl6ڸHBaĸ2t齍¡&7VuiHFl$·[pL0FRQT# LA( qip -c3s"*RTw,༧eˋF.E^lko -#sE}O(ߔ=IRl/ -`=dpWߖ?*ftYzS!:6/4cTۻO},L%M`j32eD`>{hW$V2?Ls,گ@d61:?q,1Z%ތ_NϜL7ƕF(gDĦD)>{wX-; :?6!ӂ -3 -u<Idmng.!vՓ'/^>g;c}'.?q4kr{t'ٹ5%q 24'tdX2IQ~?aL|T\TYM!xY9e^z*^RDijs?5`.=k,5]E?7JSS/G;0'xV^\^/+wX;,~<y6YdrHR/pHªN\g5<GjL{e´d4FZMxw,h5c9Ђdh -UMmZ_N'.BY'v/ޔL)Xo%;&Fa tao`0{K=|٣7? aLaz巑x*_w̱ui@>3+(+FH0%r&SVMʓN.*{%Ǽ~rti<ZUg؞=_E,_S&-~㳜ג|g * R)c_M0?0/X&*&/0`s}_0^PqQ3mk*-{&Hˬ.ўڀdP%UzycmF]o(PţɩefD(e⸬((I -.u]AݣbVm.`g(WhA" gGjS_PSTl8m!w<C{I)``:y̱G5W/ÐWJ~|>`-O%.YNCy~\GdW>n,H?pY5ɩS唱-? 9?`9O@t@#T?\}HƩb|&̂/;%ZO>*V)T`o0pFK>lݶyn'*=rVK+B;0S IR <k!FF@іS5OcҾ(>':xJË"* -Ґ?sG1/FbF}Ixh=vN>^N#\:f:8D_`"`??6<j3{=9U#ԘTn6[Na۩0 -+˟ѝLNv6+o.U[]ʙLvg2^Ɩb -f2t[U}E}DeQO7{]yw>cȔ3<il7#eǹs6W Qhg-ꊊļ,L#~A!a_z:ژu>m
xA;@pwKr&;'qMg -PKk2KKtuCr<]YJ`Tx0Rmtz[%8[칤9U(.#BΞtVe&_L^[e %dY#+of?*C7#_K#7;+~8;IM0L3Er%\a+:(>z#ܱ1-Gl-L}s;x
JT5tem.v41cݦ8?X(y<
^R֭@zFzٻ0x_ -IO(m~pbjuVBc;Y0@!U\jtǾMu[]RqIjj/m1TMl*jEG
hUC,8W&K*|3a@ڂ#o?+JGnB%iSP+FE3~xa}]3sϖ -T-dz][<w)Y͟_զ37eAroy9M'$k#ͅ.4,;xlsO FxI݉`t71LbbbB4TU[S^xd,_X\QOA`ǜW98gP"iǍ=nq(J@?l4820g:6GjA7>h'.·Y)]]0gEOlWLW`2Y<mI)[R7*0_]mcF`N_e N&|y
Ntv ~#`.sݡzYzXє(!/955es{C Egxs
NTދݸeK1Y9 /=7sd:Aa0Rɜ1ImO53L^݃Go}* 5x<n-fgЏ?;{[7 -q )ET&<#)q 7=0B%UI?ڄ!vx|hʾ̀Q/H</_~ x`~1(JUi/I7I{kabAB8bwX^}*Rɇ5^d`PSlJa>
\2Ka)hbkRm27ҖZѳԦ$7ۮ,O6uel[.KuI(7 ]a<I, -\]gsaW+-s<&=2De8\"VdײtA5ۚ|ȕL&}=v[pxIc0淤-cΑa*Tu:fxrC/~T;\*J6yu}?
)TfGs
L]Qz%/Y6<0#NQPݖ`n@Ѭ,3ԁ^ N;iLpq=!%GC)A)cYV1|&V^ś+_" -DBRzJlR/0*CzҿpK茷%k8VJ$sI£d_ɨ*:fńe? -k+{lGI'xp?In0[!xPJ,\Y8̰l\
nM-=좤fwGBxʴe!ͿX6ꙢNRjyMx)y"0"<s/Om~3ݽNb:9#!O~LrW6VKC0wG}D6>'U&GH+2
!+biOpGRa-'o d˗ Gd/%KaL yODDEgc HjFA}B[GSOWrCAֶnJJc25Y!ɌcYJVdDU00r09+3%n3cC53=_f;:)C'8 XUs -L -WIObe2Qo"##t?t=m;y<K%ߊQ(TGhRY\F -e"c|*dV -b54IRgo&}}E.d4i1t/,3ߊ晓Hm\RB"%,VN;]0J-nؓŦ0IBMRn&Scؘ) ?}q-r: rnj)a9ItF ,vQ) e#">"F
33y6;&AB{SmbU$?#D[fX
dgL?YVViٺ2]<%;TG -endstream -endobj -4432 0 obj -<< /Type /FontDescriptor /FontName /VSFYBK+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4434 0 R /CIDSet 4433 0 R >> -endobj -4435 0 obj -<< /Filter /FlateDecode /Length 757 >> -stream -x}]K@+f/MS e*Vd&nMJ^d -˺89g:syTc}jrߛ,ׇjZ秽G_\Fod1]Te{&/|w*eֿ'>tq{[~,uUgioOuKUe?QQŨۼXՃn4
̪bR;cg{SVET{xIQyK}(Uxu>~6u2~\IOMᛲڊ/rsVa|DuzE_al_s!.}>"C1a70スMQ6Ά&,iIZ,H9e3I)D i9I1ȁ;=c#S YOk,HяD?%O݁Du4gIS~@#H+F̅F M#dit F50$iAȒ`Q]
#KF̅F$tLHϒ'$:m>?KBN#cD<?Idf'Q ?xs$HfoDo
, ~~\,Ι[;SgaH0R -endstream +360 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HMXUMK+LMMonoLt10-Bold /DescendantFonts [ 4792 0 R ] /ToUnicode 4791 0 R >> endobj -337 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VSFYBK+LMMono10-Regular /DescendantFonts [ 4436 0 R ] /ToUnicode 4435 0 R >> +4792 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HMXUMK+LMMonoLt10-Bold /FontDescriptor 4788 0 R /W 4787 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4436 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VSFYBK+LMMono10-Regular /FontDescriptor 4432 0 R /W 4431 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> -endobj -4437 0 obj +4793 0 obj [ 51 [ 569 ] 56 [ 569 569 ] 78 [ 569 ] 82 [ 569 ] 100 [ 569 569 ] 106 [ 569 569 ] 121 [ 569 ] ] endobj -4439 0 obj +4795 0 obj << /Filter /FlateDecode /Length 21 >> stream xc` < endstream endobj -4440 0 obj +4796 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1685 >> stream xuUkPTGÈ(uG^QWCZ` 00j3GAG@^X"")E0kZ]CP*X,PѾncgVmwӧ;uXL cLqs`<&N~9* @@ -15113,31 +16015,31 @@ GKtdžmBEx}gZ5g:\~Bc"ZOI NbC^r`)|*+%M1=U8⦈kQʁRy Ķ˚Jmѹpr~_9&꾩R58WCW%#B)_o-Zȫ=%-/7l|D%2]DCbTߙir8lkQ(\-:Kϗ:Y endstream endobj -4438 0 obj -<< /Type /FontDescriptor /FontName /TFIASI+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 4440 0 R /CIDSet 4439 0 R >> +4794 0 obj +<< /Type /FontDescriptor /FontName /TFIASI+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 4796 0 R /CIDSet 4795 0 R >> endobj -4441 0 obj +4797 0 obj << /Filter /FlateDecode /Length 405 >> stream x}]K0+wQSetPpC풳X$Qxzޓy[ͥc4ڴV`XhKQ#Y#rlv=gZ5}gZZwyvn,z]mMYic{*l]N5'R/UüяqNjS,}PZڋU;,TrnbYՍ={}oDw۪:)H<ДѺ(bLRU5rٝ+$Fb]mfOa+e:]C@tɵ$>i zݧ,<=yz4J<MFƁ&恆
<M/34܂\@Fiqe*o8hd_K}O endstream endobj -336 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TFIASI+LMRoman7-Regular /DescendantFonts [ 4442 0 R ] /ToUnicode 4441 0 R >> +359 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TFIASI+LMRoman7-Regular /DescendantFonts [ 4798 0 R ] /ToUnicode 4797 0 R >> endobj -4442 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TFIASI+LMRoman7-Regular /FontDescriptor 4438 0 R /W 4437 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4798 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TFIASI+LMRoman7-Regular /FontDescriptor 4794 0 R /W 4793 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4443 0 obj +4799 0 obj [ 28 [ 481 ] 35 [ 517 ] 43 [ 444 ] 47 [ 517 ] 50 [ 444 ] 55 [ 306 ] 59 [ 500 ] 63 [ 517 333 ] 66 [ 239 ] 72 [ 239 ] 75 [ 794 ] 77 [ 517 ] 81 [ 500 ] 84 [ 517 ] 96 [ 342 556 383 ] 105 [ 361 ] 109 [ 517 ] 116 [ 461 ] 118 [ 461 ] ] endobj -4445 0 obj +4801 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``T\0Ń endstream endobj -4446 0 obj +4802 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2056 >> stream xuV Pgf.qj[m` @@ -15152,142 +16054,205 @@ xuV Pgf.qj[m` L8.;1m(`.)p endstream endobj -4444 0 obj -<< /Type /FontDescriptor /FontName /YSFAMU+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 4446 0 R /CIDSet 4445 0 R >> +4800 0 obj +<< /Type /FontDescriptor /FontName /YSFAMU+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 4802 0 R /CIDSet 4801 0 R >> endobj -4447 0 obj +4803 0 obj << /Filter /FlateDecode /Length 464 >> stream x}n0<)=PI" iV%jĞd-8V6(?cg:@
z5jak`6*6 g endstream endobj -335 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YSFAMU+LMSans10-Regular /DescendantFonts [ 4448 0 R ] /ToUnicode 4447 0 R >> +358 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YSFAMU+LMSans10-Regular /DescendantFonts [ 4804 0 R ] /ToUnicode 4803 0 R >> endobj -4448 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YSFAMU+LMSans10-Regular /FontDescriptor 4444 0 R /W 4443 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4804 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YSFAMU+LMSans10-Regular /FontDescriptor 4800 0 R /W 4799 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4449 0 obj -[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 41 [ 278 722 444 278 278 764 556 ] 49 [ 681 444 500 778 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 472 ] 95 [ 736 392 556 394 278 500 500 ] 104 [ 722 389 500 500 750 556 ] 112 [ 528 1028 722 750 528 ] 118 [ 528 ] 120 [ 444 500 583 833 ] 125 [ 556 556 ] 168 [ 500 ] 199 [ 778 ] 251 [ 444 ] 277 [ 444 ] 280 [ 670 ] 284 [ 500 ] 319 [ 556 556 ] 499 [ 472 472 ] 502 [ 278 ] 612 [ 500 ] ] +4805 0 obj +[ 27 [ 850 547 ] 34 [ 800 625 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 54 [ 707 344 563 563 ] 59 [ 563 ] 62 [ 880 625 375 419 313 ] 70 [ 594 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 ] 96 [ 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 112 [ 594 ] 114 [ 813 850 594 ] 118 [ 594 ] 120 [ 500 563 656 ] 125 [ 625 ] 499 [ 551 551 ] ] endobj -4451 0 obj -<< /Filter /FlateDecode /Length 49 >> +4807 0 obj +<< /Filter /FlateDecode /Length 29 >> stream -xc``߿ +xc``0.x߿oz@ endstream endobj -4452 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8702 >> +4808 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6208 >> stream -xڽzxYƀ!{J лŽ&WlEV*ɖ7'@HB )'$$d}wG6 '{?ٞͬ5# @-F-_69`1k=e~! h
]8VY=V"X!A -z]6ڬYlXm=t!DψHAg8vB=&?isݼvK]}#B}얎[1ne`nx`]:MvPP;ϐ@YP舱v뼼C"C|!~Ρnv -66z6F[-/**Iݮe*g0OMd=MT%sC6:Ҕ|Ӑ-,<WCA|,䨔ҎťhziCbDf[Eg{Aoc2_caxZ|Wqwp_ů\|C'dIOS
Saֿ']e*<iĵ -E4r!6 -Z$'k`ݫ.|k1rɀomJ2mr\F[3pP,ӗIHΓJipPE㑤?ܤK -ƠXiLCEcoڅchH:-acuP@})B.W*a|<WT(S$]xZ>C, P`]K*QT̆I{4N̋:E"*J -w~1S{&p/p$At
-|%Jq6ЀjoZi9h+Zb"GRhWTPppaP}~^ZV6\MPh4J:9Us"tN6Y/PaF*Ek1&O.b44fU[@P5Cy&;RقՙSf+72|Κmy[(w,)0BR+#*3۠XgÑ]5&v IAR(Gq̉q7N7
stw y͎(ڦm_ΙTh 2M6;-
!a]uJO}?fM(D<E7L@ɯTTlk"[JsyFA]z$RՊ$55&0]w6`K=jF=,})%#l#a11vϴy7KʪzGJ !͔7Ҙe{$_6>B?xzsFSdMD?
,@?Km]pۢ; -]q>(mJ8}w\,QUA<Ũ4vTa;z!-Gql$(,7q~1,a+~7}y,8ϲ#h]imPQppPhl*ڡ&0YB-ۈ9Il!>hF&5յVk }d߸Ҏ8sĔV_w62M50EYoVQ` -JS#:׀4cP[|9Ma vgo09A:b#^ Ta\uv=Fb3$| -"*KAGQgFϞVG~I[>hu[b<HRREImr
z^}JMfTHKIz%4{xLaa2 -&iPp[i{T[sL{U-#x;3o,5gFd3hOWv*7HH~Q?0fNwׄ/.5㶒%0-&Qe)\Oi.뛎f8T5,*1Rq]E6m235sC:ǭ¶P"5F%r=Y^.#-u
bsMJ_'3x%OMƓ+be{\LϢyd!MR֞_VP`Y|-5}rsQpia|[PX^쬗1c.n -gvDx~*ɕ|A~9z.*Pa
\Ʉ8Am2k7XVXT̓+Wn44S9Lz
+Sttn|AVqz0!
IadR[obK=8,E]ڻK/<b£nاgvrfwk%?+'u7@Y9P1чxkc\ -<K --it)izp\VxYWf@sN˛]ɒbFRu_=v=$/lEGF+#- Z\'yD7uE&2w?
\e3]L賈;]0PkSU65TdEȒY;I]yB>~:vU( -%|+]҃g&*Ł?wZdMg*2nl9oW=jd0<XrZ)(.551gdxvCm&~/x9T5H}Gu>" ť -X(^.ŋ<c,h<).N7 -ߣ<~qhδp!>v0-)3{>_B]QlZ9cfɱ@}@=̾2 - q;`SԾf_r*ΐP}?,8ƶ=Z?Zuٶ%_RYq -~gEf߾`y͇T֩Zh3mcMT׃ϱ,gGYh!Ѐk -GB#m&IƤ6|/Թ%MA jKhJR}V>\?? x%=?#DpTuх -g'f[ȮK,BnǿC}(OF}.->֣@^ΊdGV3\r#jv} i}P)0gx0nFz*e̦ե'k,#55c^TpEȕ
7
t/s %F⾸ӡHrioŋYd- -8ߠm̼Dݯv
G[}a=ՖWk{ݥ$sx&V,Z -sb,|\73H -3(4ăφhYPoB(g@\n42CCH,ESk(R%|zA2`ظ`./yEˮYڕ܄>@If<+!&Dwt:rb 3Ȍ?!btJj1$ZյKk\t$@cC݇-GN噫;N:{lcdX}d[r뙦 5VoUFI -U'3IdM-O`Nâx -ry|Ѡe`Di\&א+̲½-6b7Jm]Ot'V -G\HcP; -*E<r45t)aa}.E&]cmHaѶ6Q^syshF{g{tެFOf'9,(j+lDJ1c-hTā8s82GK+a oG*@'N
,6U9JD)|29GrT7Ql>T
"cۢ#:7Bmͧ9jg'}kvմZ&4XnzQF'rx">%@j-Hzͳ ٗ<Yw،QDL d k+L!=AMI"RTh'MǴiM]%hᴔ7z}:4sM-Su&ߠSvꌸ:&!.EV̚(1-ry_ (|V~UYu}VAl]U1B͑sicu/7D#H(U4QQEs4ߣ9̚:ANCOF2Km0
P1vAj:Yeu#%EfC,;4{tt9@٢G<kUVYuKww#3g-̶,$uOi
b\C:6[Qxe ]Nqgfռ.Ysf{GfN|S>J[Hޱ߁q[m1җ`Q3MLmKb6^ηsT -hO
bFcFLX?o H<#Ҍ! z<UD\ ІT&UL1|zHތ(xՂ<-?}l I7ՠ$F|\H;JZCT<y;@]sff o"y =΅e6FNe91E)S>W/4-K |;eBTk!|<7xmE1Fscqw!zoMRe&yPO1蠟BhuJ6ʙAX`ȇ#`!z=WrˬUl2&!Q -+
<] sPbHO*w[WTYІ, -\!0RY10{~L*
J^c=C XZo+3rQ@vQgZw7wݨYH筭MM4]^OM3Xo? +xڝY \SWBw:Uk;nآX= nXNInol"KVZwLvc:yx}7L${snD5%V-fT5"}"f:}qdrA!8#;NE E7HୄxU;(l%<zx4E0<HC^j7n<EDRQV"%_:{IdT*80(Fiy3|vFC>~U3kf(ފTO"#A>a +#I.aWt2fD&_N`8&bM1Ymo+s\8\/@)U7!~"v¶9s|[[f$q%FT^??IWl7s/x _SbT0X6}NBf_?nNx"Kekdͽp0y.9lu峾ng-y~l<ÓVJֹm21axO`j;/ůfS!Fx}O>h
1=ƇpƋ2JbjkYQgxeѺ +<ktxH3[3oxx8jz0|a{3an'l2CٞL0Ť11/z7@G',vyxHL<\%1n\eUI⾟b 3H;4ڷ&<B? $&U(;Iͭڵ2n=槆BԚuw[oXKm<NJ0w'ΐuش7K&=/M;*<u݃2];K'a?7Żoc`W|B8T.l0=74|qrJN6j$3>~d3bc9[.]@leiOY?8Z@/ޱx +d+|j~v vϑ7;qcBaB&_R)"N8;wA6/
OtWla"ٻ@C0
Խ3E/poKGr8cW`>BK<8*t0ckBħȇ֍|O5=A2_1_ I6=L;Si{ߖٲMOcm!~k7x-2fXi-Pzz2$5k|M%a`KݥF./dtyc^fnvVUxXPҌ1aoDONWWUP,,${ShD)xrT%Қx⟅dMpJ""i :%U ++}0l0)$Ù.tPӾi$ Mi7iOy.- Igc!SH}
7!f=ա;4K)}֬c:UX3@<~j+46#N:S}r;q/R#+g +!`Tޅ\y^_ /OC9Z0$ +9bP)rn#+xr<(]Z椡\M E[RT7mƯak,t\yZ9]b@uH' u"!V-D8+%;k;rv^XG(@fY0*F1W4-Td8ll(N?\"m%3ǜJ.վgi+~y"<y;wa#hkb~!sV?,*wJ-;1ot:iY̷çehg6oeu![Ic&|lH@e6FE3XIH]["]E3E\&+1AkLlj2!8WIQo7Vy,j6[S_m#븸|eP~t-*Jӥgp:զ#SX<vL,Zѱ2?qvO̓rm}MEjK\VPCy1<$R8H/)J*l} gHJ=6F^iIN2k8ڬ.{CTVT.U_L:~s6[2<MVNMud@a 0Ƕ9hQMWQ_Jj@{},RN$N8$,Q%YxnC*ЖiKm|$!M"o)),URB95)d,_q +7UVqըS+]rqI)2 +9CpP&cW/R^9}1?~MZ4S!S6o%jN%I05@-T{4+X>m/ 1P-pѵ83^>nҖIlBHɼ$bn<w~#Lt ʙrٻK3uG?]r z뛎$k9X{!":*d"m]ZmNd硬\yb!˝5e;rT[xsIU[XD/d-qyy i.)8'"=f(yqY6Yn(.BC`SV1v)m0'7uԝ0Յp')cu.\aX-N@y0>H3ƜKt+4;a-KrA!'}?4Ǝ`@J,4?Ki$ǚfglmanYqiW"7A͜u qH*E,9<KϚ%ژe(Xx%ًK9
luao o⪢Ku`ޖ#R뾩m].J%cp2y'|Y<; &?4:G +ٲrF:O\--)#U_XSēB(CrlѿSi\
J+ +|}gYc>kldPYڦwQZ+'`o<ğ N!WvӠ6\U"(.O*Jۗg3F<C⹖'駖- `^Fc7P
8+J?#VDHbOm
QZ~I0Tl(W┴ n1!~bF|"E bbI5bib jE@'Q<//[Ǒ؍G@kjD/'ExeIKIs꾌MCޠo-?,7FׅEo;{9|ĕŗIwaQ<+6=YW +1 P^9w/$]a}'XHp[- m\]BxE"FQ'Q)5\ d#p֔4zH~LpkS9:*=
SjHDOs+oճT%Rhz_
ع%&!O~g}~8|LN'&Uj8L'4P?U>ؘW
4Z/ӷnECzɰ0ƋrČG.GnmѲnSwə8q?%xZ0XF7x|M;N0:f9*,u:F$$gfrO))(璴sJs#d8cZ8@t/ +7eWCz +l +j*.n!kddZsFyza叟ezp07,_F٧%coi[>n0bѐ|}~ޠ/.*kgg*8QPRo()*\(Q endstream endobj -4450 0 obj -<< /Type /FontDescriptor /FontName /GHZSST+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 4452 0 R /CIDSet 4451 0 R >> +4806 0 obj +<< /Type /FontDescriptor /FontName /JEWLMG+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 4808 0 R /CIDSet 4807 0 R >> endobj -4453 0 obj -<< /Filter /FlateDecode /Length 759 >> +4809 0 obj +<< /Filter /FlateDecode /Length 626 >> stream -xڅ_o0)J%V lH4M{a A!<94ZV\7^qټٞū=6q}nnMqۺ{y ^ڦXN颮.xQSiQmU_C|q?z_\.Wo~]'qnOuۋU\"Mw~]n`Vy&QBE,}SeKkTUёb/ߏ/M
2WǮ}?G綴mUoG"]t8$h4ݸ]{+V.ZH'\4=օmFCWx$s3l]5c__oLFqQ<)RIrd& IcO BvMBv9M0:cH&@PIP- "3d[ JAX=H2;٩bdE z B]<h<(T^&B<hU3;Upj9hI(AAI Q܂@`H<%:EO/KԂg]
ՆzPC!{O{p%:DCgiH)'tJfQk2ԉ:P'E
Kⷉz4N91{fȥ:ʑu5Fv}'B4Ǯ6IP +x}[0+$!K +EZQ-+@m_Clh$p$<kL@P@|3o_["mT[]Bu^{*.g}}c_MUlUdž|$tqHg=Nc)V
wc}_osȟV'vͮN&is%~-+ ̃l{kcԲ!lo-{adYtD8!k۩J*o<f ]sug#US#>th2>)^1G~Vld_I- W쮵bfJ@|2OiO<h<Cş©)I99(B,ň%hhXZ"CR8G& d ֽHy9)^L"NDsN9bDC/d 3Ng1v,G#A?t:z +)jr;zPDЋ1k{ġbW8HA/*RLzR嘒 endstream endobj -334 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GHZSST+LMRoman10-Regular /DescendantFonts [ 4454 0 R ] /ToUnicode 4453 0 R >> +357 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JEWLMG+LMRoman12-Bold /DescendantFonts [ 4810 0 R ] /ToUnicode 4809 0 R >> endobj -4454 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GHZSST+LMRoman10-Regular /FontDescriptor 4450 0 R /W 4449 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4810 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JEWLMG+LMRoman12-Bold /FontDescriptor 4806 0 R /W 4805 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4455 0 obj -[ 27 [ 850 547 ] 34 [ 800 625 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 54 [ 707 344 563 563 ] 59 [ 563 ] 62 [ 880 625 ] 65 [ 419 313 ] 70 [ 594 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 ] 96 [ 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 112 [ 594 ] 114 [ 813 850 594 ] 118 [ 594 ] 120 [ 500 563 656 ] 125 [ 625 ] 499 [ 551 551 ] ] +4811 0 obj +[ 27 [ 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 ] 96 [ 525 525 525 525 ] 101 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 118 [ 525 ] 120 [ 525 525 ] 139 [ 525 ] 163 [ 525 ] 202 [ 525 ] 294 [ 525 ] 602 [ 525 ] ] endobj -4457 0 obj -<< /Filter /FlateDecode /Length 29 >> +4813 0 obj +<< /Filter /FlateDecode /Length 35 >> stream -xc``0.߂7v=a H +xc``uA( endstream endobj -4458 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6187 >> +4814 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8455 >> stream -xڝY XSWھr
Bw:u+u
[NINadY%(jjZZgZ֎u*aOn3I|y=Q֔H$r^x5=V E~+8a% -?iE IȃFPj5FPөש,j65GEͧR(wjZI<۔'ZKyQw7RR>/GSTLPTIEQTGS T""dECn%ETR ?a@ -Kz,h6Jc]$sʋElRw5M7ӱ47 88B2vO%ںaGiUȑ cb)Vg#Ff_1DžuyPUBG.ag/l3˧-pMVub)g0619glV`L{y{'R;%-Fu< -vax02I -(=IM"t0] FR>kwt})4`SI@fd0K·2S`zJ By<B'7n.IBL|}#h!ٷfrilIS -Iqr0ӫ^h4mtMfw7+'o~,xa4챎F^Uf{#1$ļY2
/b+.H~(ϛG g2 U*aTJ,MpHDKR\^Ѿ3zI%9LFIڼlnqY<V9>0?Ɩ[;yWc=V<s0=8pDLwݦ`}avu4]y.ޱJC?tzwg.X̟n;qX1}OH -q5տg$v/H_ M3ovpL0ҞE`B}mZiWh{zoO!Ι+js7ץ+(M|;5Ukb~xG -.$M`sF
k/W#zܖe!I܃eVo0@t`{U5=}P]붿uˎNI6kp)7FW&t5:m
w-.MT,2{l*煻tNWUjïvՁ|iGn 0 -+/JPLI٬A!ܪ؊xe|o&bi -oa8kz!]Ԕx;$
{+,a -oʎC1㤗zp>l2 -/aȀU&jՙZ7{]fKD]1siptX?Z`%8ܹkY[9<CᏦo?yg֪MK#>-C;z{
RE0g`CT|ڰA>z`%!}eoWv%L0r)1Ѹ N|3l8 -GEoMZ o#[nVO/tu}E<x5(9+O)7k6c-)
cƖilS#ʸ7̷LZUlʋ'aYE:+-576l=/II=6F|":|
Y eTUs --YUNIQ-X.sb"l
HrY9y6U;0< aQ045i2fG3FrEqU]l.tzTW#<fkeK
qAm#eצGdቻi|TTSb# Hl~cOMKT - /ԤPOOl1}|)TXQ^TĕW9L -i4 Za O~ɛozƣǭxq.sK4v|NVtbaoئOKLYѫCk1bq̛mg9~_^M3tJDWT "0OГ;rx .28 >khbH6|
╗iXk/7s٪b^soʢˬS뾩}6R(\i8,LI&CV@gN-Ȱ.Αk05}bQ!>'ajk™:-ıR^uE<iM/{γe`LBxnWR^7;+@>H^Cg"}E6Zx<{'\J4#ye
Q -ފk34Q96LQY8qxză$KiJ'qyK\4p%G{jjIj3'Nb?n߀Oipk /NIʚ*f'f.BH_T?-0+!4|B,m9cB,[fQUe2I*q4vaWH=J -
{椥9mq_榡B5kBザt\g{9|WHշvaa+6=YW 1IP^9w/ }a]XJpk/-P#M\e "Hӌdc5NG8kd@
j$?!lL)aaJ͆DתƤ*H@WOsO*nձmgUo4m3<EsWhr6qvA,Aqx?C,/uֆOsTa¤ -5i2~Ҭ<}ƚX1h0Gx161ؖ-mG.4=5z) -4mcG +xzy\W$*EeLŌ{^WXa@%a ;[q նѪm&ViLK; iy!Lw=s{Ό"\":wwX~zn7Fx{I!thmջ['| %#hD
֓MnS! 숗^```?;oܹސG*|}Ν?t\bzrUγ]fo^_A2^r/{WNP"[!}eoJ +b%:p Vok#XO8b#Bl"$6o[+N v7b7K'q^7C~?@A&BJ(p"$XxG0͒5oҺM/C,~|lleNVvdyOd#Z+ҋ%V+N
w^1fDw^Yesu䲑#FY6]ؾfi{ +3~LD$ѼY/7-'d\%iz-HƗ/qh:,eSIM qgO4Ll1~pʦ)zhx9lX/nJ +V?>;3A}SՁUѵ:Uf ]I1Ox1`
צ⑻fH8wm9UҏЍl?%~0QQlyh0%3hm4t%tkw^q1dIK(jP˖1ko|GuY!5#vms/wkF&!
ihRڪϾGZPΫMklHZH2M{i3ua]IKL[~! /_ʓR'Շ2kQJ^=sEg/2~%J1eAT֖m8'qbML_[UP8qf8k/+^KJNJDh
_Ǩ|`ytQ"ѥ\\/LLqe!Q_VT6UKm ]KnIbtHQ-kvEŹ, +jY6-)ݴzd_ݐѕoq]IJe㑿,Ηt `"O?7Tdenw'&x
Gx=^6x?J$Kݷ۳ϼ}" +|N*6[Y?mA@1/XvsKܽzvKR +Rsu䄲0ZLȊLb? ҲrT,ἷEElx]EfΛ>0!iRdHa.k3:QWڦ=?hs*sjy\1$v\țU{G#t%J +
M/`AMYAHys4g-_P]< +a.1,5w4|(~B*RxU4OTi{RQz)i4;ᲯDzTzּO'WJSm#<I04`'/QA%_>%L?&CNd[n~ <GrI[(UAiĥ܅txzwi LU0"=[RشooNKbgox_<2[G#Xr^ 4IiDǁ^ƭ5誣Uhjڪ;XwM<~>f +s2ƆF[}JX/Sx5kiA_Lיj O$G=(eM\]F.R쉎MǧF&Ҩ֟.ɳ9AfEe ,X8=;T)Sݫ l' c=, {aL_||䵶P0{
2 w.yd~3fb2G:ԈMެCLq6&ڷ/^=ݺyFVWdsX@pä%xJNq|BrlTYPU[xx0<UD#[lxA XZY *ȫ6){_] 8%f-lMŅ/oIqll)~ܹcVt߳!Aݘ;&H
3=F\qIaUWBy<UW'=$uҶl!faڄ&]5j51$e$Ia +mdBjD"M+W:e4Ȫ +
?H6?N ؝}TD \{}[19M2`{j@䔰ZrCtEl[8QWoؼJ:|l?-c-.նtŮs߿{S +GeSp_ٸpQ73x>>ml&vϴjcc7ǟ0dIΆ}UxnrݒKYZgvc2]=[L;dPw1K"ưj<,L.kln4L?G8K<AjxAt~0[Oeѽin1s,ytYr}lh4y:~qAZ-! +`3mΒcQJ=(^-Xh<4B:Ep0O[ Q4x}u +Q$l-.C
˯Nv^ޖ3y&>\=`>K]<I}dJ%"9apPæ~-1BF.}an` +IhZ|2_\"$J(sVn{K_4QbȉS OUfil= oZ#hdXUfaqupuxzuۦ-FXob|*5r8;IMD˶8t߽NFTgYh__iC hmXԧDQ8_7kr<~^K&İ :-eqq%լ4+$ +e{|zk-hy
0+6I|잭5R~sg${gQ,ɂX%ftlF'ʰ Di_=S
DqI.Zv<{U; UlKs0aקS+PQ-*}i}7`f6zF q8S82k)ڵve-įv "aS=h$^g +s^>%?#𜾺ywcDL韉"UU|T)tJ˱hgݟ1l~/>kyi?YkIEL^>x sMRQMM> &XK,jK2i}EQy@oҵ.Q5\/R886C-4V3EecXomPRиt2|(J+X
ռPŶ^?
`lQ{}щ +Y1ybYv8!(..+c2sKb]oiyͳ{K]03R{#HU@ϘrtHm=jB4Ic{"~+~gJ=X':{=^S匰Fi\O '
G}z0$ȥ +bՙ!(ooC`H؛*)֧EG.N1#9u2t$,i˒n5bknSrpSI8[N]_y`qb_ZӇ3Y9e**п|
Ox
nhGm[/ݯnw}pQ#Jz0?bԦ*^So">xk/80UxBL,ၢ#;@MŦ3jFOޕQ=2O
v%H6FDUd6e =b^ +NӍ&/t}*DU08%.울mhk\H<z|,{mi7~t}]ZaWmW΄,"O2ogX|"\lU.|}n85G +gݐ͋#<2b!T22þ:>p떜T>R)UvFtMtJn0Fj.͍TƞXsCFWtHD}G,秸{W20Z*Bue:RoUo:1nR\ +oW+ًuha*@vɂ:CJxOO78lOSÍT(z{5fuea^ѯNSiLrͧ? cCii-)j6HjZ:CRO/k֍s,<dgT'vcx5Ry1Hr%9ZuwNSO:s)XOmKy5ƕY6)=6ࣽIMHJHM9%1I|-%Cwڱc!ٔն4OxWs=1Dyn~=xJ=yOۗ:_]뿜mkEPB'gC?^=*a*)TR>r؈'Əa#|SCJ|-f{.=L1gGkjz2>]oPVg +#%Ʀ,n®˒K}6 +D%zlv~ZUYw@`WnNi<ɏK>ޓj܄NaU.Lz(@I_;!CoNa*=5J[V n$YVJIy#dXlVo Og gX(/;+V8pxs<
JE$CmN,Moqks.ms~Ui4=6֮xbdH7F;lS#^` +? endstream endobj -4456 0 obj -<< /Type /FontDescriptor /FontName /XVCDCQ+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 4458 0 R /CIDSet 4457 0 R >> +4812 0 obj +<< /Type /FontDescriptor /FontName /HHVATE+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 4814 0 R /CIDSet 4813 0 R >> endobj -4459 0 obj -<< /Filter /FlateDecode /Length 619 >> +4815 0 obj +<< /Filter /FlateDecode /Length 758 >> stream -x}]0+sѱ mGv>VeDii~GAVP|zN&_k&ǀTߜJ[zQTûRRKa]SXzx0K]NR]'վַEj#5z81cwc̕R]_7AZ{&ǻZˎLu5hdKkMV&9~&T]l|סXxYƤڙf6Qm|)M'p[9ECTWf -z]}Čެ%>\XG pɲ-:u9rܞZ6]r\>?r{ +x}]O@+f/LiS
!AH~D[l M)f]qs0su9TC}ls?>bVǽg_Gwt1[Tew&/|w,yֿ'mY}M˕5x||惟OOuUgou;HUۅ(¨fTm}{(NdiU1!2K1<)eO<ɤ(ʼ#ſ>_<:_T:0D.]{Y_%×mYm799c|HX~5z^":|Y/d u:d!_X oy(nQliɒf#9!3'{ $= =Itr8v~?<x?R#πgIS7 )d'Q]?*Ybt9H*#E?fF?я? +jY4gIӨ%яD?B?44, ~yO~H$)tϠ~f~$:f'D%ϑx>'+~0r020r$HDpP8gg endstream endobj -333 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XVCDCQ+LMRoman12-Bold /DescendantFonts [ 4460 0 R ] /ToUnicode 4459 0 R >> +356 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HHVATE+LMMono10-Regular /DescendantFonts [ 4816 0 R ] /ToUnicode 4815 0 R >> endobj -4460 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XVCDCQ+LMRoman12-Bold /FontDescriptor 4456 0 R /W 4455 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4816 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HHVATE+LMMono10-Regular /FontDescriptor 4812 0 R /W 4811 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4461 0 obj +4817 0 obj +[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 41 [ 278 722 444 278 278 764 556 ] 49 [ 681 444 500 778 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 472 ] 95 [ 736 392 556 394 278 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 1028 722 750 528 750 528 ] 120 [ 444 500 583 833 ] 125 [ 556 556 ] 168 [ 500 ] 199 [ 778 ] 251 [ 444 ] 277 [ 444 ] 280 [ 670 ] 283 [ 1000 500 ] 319 [ 556 556 ] 499 [ 472 472 ] 502 [ 278 ] 612 [ 500 ] ] +endobj +4819 0 obj +<< /Filter /FlateDecode /Length 49 >> +stream +xc``߿ +endstream +endobj +4820 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8904 >> +stream +xڽzx +YZx]2kz@w0{ƶ\dQqM\mM9BJBI( ̊wo%K~d{vsʜs;;B ٸiӢ#-_4n5^> +v4-ɧ4yn*L[uq`ԺmZHN-sx֛ܨD,P2/lMɧ?
zp@0Tb.⏎I)y~Λ돞j{FFdv@]tJ%悧%W/A;u}ض +G-p}TXݓ.<4:]!O'g+]
CUQǢJ~jNȍZ9#nqxٺ.ݥq(@a?aL1 +..J>rp4[`F*i4A|J ^"sh0kI`Hsa^J ..$dRILLv~o&WC pߕd3 ʔe _䪟\FɳpFP4˟ILNmtPKd ܨKy/6%LE<(11(%RA˳a>,UUm6kXȽyMz髝C9܃x̖Qf\.efÌx9T$j +4b7* =i4 vE 4;JZͬMBSi9uISϺthqTueiѮf5}{{4I]d^Y<x)D8{iMxEPPxxPPExMMEE
4f5HRE+ZPt3Wl(NISH>Ӡ"0xp9.l@h
f8<Af U^Xg3Zz03=N=-/^?[5i&mXcۯ*zO3ܯ$UN +M]LorH=U{Ys$9G/،;" 0 +`s3l]Ɉ>ɳH>O'9'M:O{-> +$EmZPme[dB34&Dz3tt(i<5sܴ-&-yn}p7Ĺ,5{F0uEq)Xy\#GDYD9_mN\rh<B$5m~ +-(Uj&J1}Z^.%!/Cɡ^'
xZsNݬ,oG3X4l2]њ,O(w@PNr.*-JrQ +2fLlΘt@9 +AiG~=v>jP~5\Bm +o4X^T +U%Wlm+gw743r Wy % + +UteLippLTgx1zZY%KDFr4dq,-Bs23OZLBa +w[CضY$~r4hP#.(h +rVMiZAl{;!K`aF !=9c'gf/柩lER
O_2'hiɡQ#"#&?ns+pwpM
Cv[Ζضznw؟YSd/&y.:~IcH
+`c#IxړWs.b) oX͊e&+~qyaO;;FhZF ̗b1#0GhgwE,+6imC^⮸p,Uu̦fJ}8\61.eCذBOVeVpmr\2BrSzqF;KV@]X|gs8hU8o͎½omuFTKfZb)φ~?lI.9;Vȓm1@M6[q^oF#\sUTx4'l7EZ70z
m}HvAfi-N_/]?2ë9ĕAm)I籚#5ǘ&`/C +="Cݎ"{ =h.z\J"qBLq,B]Oa?XͤwnAz-9x¶rҕDFT*TP]>zO^4#'@Vُ>C9puE{t;5u)N,D{Qk_};ĵNK`4_#>'ѥ$:TK@K ^⪩xN?}?5Rr?Q
sID
pR2[v_gVu:qD#?Ŏ3c%0 cwfo&8-?UNA<@OQI8q4_)c6&,)k:it[mm^o~QU!WK32k:G{O#ɵ}5F/|g4?&XC2sW<D$|wZ& +/Doy_y{EpOg=naXp ++~9a>[ \RU111`<٘3Oy0ԓJ@%ͮ*-khc[F3:aDiOXBÜx9LJр +ߘ0fs;17+օ[X|wb +z
tD-ЯKG4Rbn}Sb7A |: +aQt5yxoþo֗(GzHkj\,r+:fIjO-A4Q tpNc)Zx2_0Ղӗ?]rJB|7SJi-/<yv-OuN +-T0y0El4EIHkD5>L7[!lXµU)R%e۷7͛4+z겦AI*&İx+dhu9 +I$Xi\8]:/[j6BJ\~ ǿغ^7D~pg+ Sj`KNIrb(c""4'H<Ǣ9cƯ= +E͕1jQ+'2MRW>4cr"iSsyt/3s͇20ET[FnŝLh
z5J~H"H\0k/nu
[h;m%6po#DR?Rr▅s(Ttۯނ,N΄c/րq$5WLilX-A6PJהF*ZҶHӉ +yr~ɠc@Dq<&ϐ3Э}j|fn0; +6R dt{4P%[U'r"AF:+m*.hoMM=S}rY'm'qrFпw/
,f%yL.#qAnbI`.0-s햒idh4Ƙ Zթ`,JѥUMcJnBu|6 ̈S{DT>Uj\?/]O
K3j7ېfzooeв9fd}kw>vP%~QA')rx&"'ZisEVKεZ/Y y$%˰OũmE)!iwTYzCF@7E:^d;\5Ѝ7!S,hv崔Z`1ڳHEesCs!kWHȇDz6r,Sgұ +|̟EIPNdjJD[~5f!',ݺz*u$/Ҭd~jLW@k.|"ʔ*褤!@ڻGUM.FýBKۈ
a0iubsat\Tx.ËaQ +/\]f2mйгݬgByDx^A~nbЧVb7c=h\%epGQ&XÃFH6FX|cx lh,xRY!XHWFFD[|^j>s,ѥcB^U :Q
B+";%E` ;"ʱd
OK/%b\U'T:.[(h2ynHmZrnhwȀنqͳ}70'*a?[{5mzjt6\(_ +F\x2'˰G/sɗY&5fh Z;4 +^"OO{ˁG!,Ҩ0z⮆ĈRV+Kw[2g1>t3 +w܈>qm<y0#ޝ6=#T'GѲT3VϿm:WQ\
VZNٞ +;$b5j
Qj+FμBSBIiDi#IHl;3`xlb_PYU0MR&1;Uw#ѪSV;ǬfU2.5Kq4JdxJ)JaHl/|H.+ʌK̘qeW:hWvz[ōJQE1h$eedYjtmݫGg{[XhciNiWW(Sj{7mSZ<?ئ(x+[<ь}ko|-+
++j
eҥZR*JkD5Nn0^[R:^K/o@b(uJF-6Y5xz3]b +Nl0
Zv÷._h:͞K%܈f~rGOT\B$Pok3>t䶷LS
pꋫ*Zu/hYoz@i!)iy˖}_N֕/0`bAe+Y(䜇K2;&^[OtOHAi +I7uct]:;]lBdt]t^nu +endstream +endobj +4818 0 obj +<< /Type /FontDescriptor /FontName /XYMUHK+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 4820 0 R /CIDSet 4819 0 R >> +endobj +4821 0 obj +<< /Filter /FlateDecode /Length 769 >> +stream +xڅ_o0)J%V hhnibX$HP|>2MVU9էeo\6o'oblͱ-l/_iSw-my=܉)b^XsԿ&vSG\_?7UĽg9nWm/^n)ܰhX~P5Hn8vfu7;o)TU]T+(IEY)-vZ~tnQh8}:t)ҶUtA~^HvvuzX +,J7ZuKqr[N hJ{د +ۮꍍHgٺk<Ƭ5ת%Pd(Ai$1FR Ȁ[DXS]]A@)30O 2TkT%V xФqM8NGDG$fv١E-HP +WIPADN$샚G2xPs<h<HT77!<u!eN=CS!cx0$zWC!AuPmH쭆jЙ'4ttJ ١3CgiڐUZUXkӰ$P]sK2r< 3{+._{cawi/Os:sjg +5Nxa h.h +Ҡ=
*w
wn~Ƕuw{x`ooоY7<^<
Y +endstream +endobj +355 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XYMUHK+LMRoman10-Regular /DescendantFonts [ 4822 0 R ] /ToUnicode 4821 0 R >> +endobj +4822 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XYMUHK+LMRoman10-Regular /FontDescriptor 4818 0 R /W 4817 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +4823 0 obj [ 66 [ 245 ] 77 [ 531 ] 81 [ 514 ] 84 [ 531 ] 105 [ 371 ] ] endobj -4463 0 obj +4825 0 obj << /Filter /FlateDecode /Length 17 >> stream xc` endstream endobj -4464 0 obj +4826 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 764 >> stream xmRkHQNmZVf,ac6
! @@ -15296,31 +16261,31 @@ JjB.Ԩ+S-
%Eh/(~UvFȚLOlٹiI}̐UQu5; KWVWv^w4ZybX4=MQ#ch3z6FE: endstream endobj -4462 0 obj -<< /Type /FontDescriptor /FontName /BLRUUF+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 4464 0 R /CIDSet 4463 0 R >> +4824 0 obj +<< /Type /FontDescriptor /FontName /BLRUUF+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 4826 0 R /CIDSet 4825 0 R >> endobj -4465 0 obj +4827 0 obj << /Filter /FlateDecode /Length 382 >> stream x}R]k0}ϯ{6u_X{ڤ~Ij[!'ܓsOy%W'^XZ3f \:GYm9ZN`K,RT=C%j-9i!{tMWqI*˱Kڣ ̐)"8OԥPrARj6Tn+~k,$7pI0 endstream endobj -332 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BLRUUF+LMSans9-Regular /DescendantFonts [ 4466 0 R ] /ToUnicode 4465 0 R >> +354 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BLRUUF+LMSans9-Regular /DescendantFonts [ 4828 0 R ] /ToUnicode 4827 0 R >> endobj -4466 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BLRUUF+LMSans9-Regular /FontDescriptor 4462 0 R /W 4461 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4828 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BLRUUF+LMSans9-Regular /FontDescriptor 4824 0 R /W 4823 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4467 0 obj +4829 0 obj [ 28 [ 514 ] 35 [ 571 ] 43 [ 457 286 286 ] 47 [ 571 ] 49 [ 699 457 ] 55 [ 314 ] 58 [ 807 514 ] 63 [ 571 ] 65 [ 371 286 ] 70 [ 542 642 286 ] 75 [ 856 ] 77 [ 571 ] 80 [ 799 514 ] 83 [ 699 571 400 400 ] 88 [ 286 ] 91 [ 542 ] 96 [ 402 ] 98 [ 405 ] 104 [ 742 400 ] 109 [ 571 ] 112 [ 542 1056 742 771 542 ] 118 [ 542 ] 125 [ 571 ] 251 [ 457 ] 502 [ 286 ] ] endobj -4469 0 obj +4831 0 obj << /Filter /FlateDecode /Length 32 >> stream xc``M4Lro#XP endstream endobj -4470 0 obj +4832 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4535 >> stream xڵXy\PQ;Τ.Tq^.*miqU @@ -15337,31 +16302,31 @@ qn0[CAF"xG+3,YUL݇{,U,x
wZ~/$]T 3B9$.sN8S1zgj^.GIptWW9h]j3I%ttf97~'v͖`[z}knMqz w}
WV a>n endstream endobj -4468 0 obj -<< /Type /FontDescriptor /FontName /KLWBRP+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 4470 0 R /CIDSet 4469 0 R >> +4830 0 obj +<< /Type /FontDescriptor /FontName /KLWBRP+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 4832 0 R /CIDSet 4831 0 R >> endobj -4471 0 obj +4833 0 obj << /Filter /FlateDecode /Length 548 >> stream x}[0炱 qbH<QHK"o۷8f]'O)ًU!{xѺ.JC.m_NAtdڮtVמ!IKq)WCGsoߋK͕OMձ:DGɃ(m~Ֆ|%3T?H+aMJ2tKɕJNFEnm'<|N&zrvfU?yOŅ*兌h9i!KSY} hUs5.j.&/ExsmM<ӟ::aC+(XF&Aj(B4!s endstream endobj -331 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KLWBRP+LMRoman9-Regular /DescendantFonts [ 4472 0 R ] /ToUnicode 4471 0 R >> +353 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KLWBRP+LMRoman9-Regular /DescendantFonts [ 4834 0 R ] /ToUnicode 4833 0 R >> endobj -4472 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KLWBRP+LMRoman9-Regular /FontDescriptor 4468 0 R /W 4467 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4834 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KLWBRP+LMRoman9-Regular /FontDescriptor 4830 0 R /W 4829 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4473 0 obj +4835 0 obj [ 27 [ 893 575 ] 35 [ 657 ] 43 [ 526 ] 96 [ 488 ] 98 [ 467 ] 105 [ 460 ] ] endobj -4475 0 obj +4837 0 obj << /Filter /FlateDecode /Length 18 >> stream xc``` endstream endobj -4476 0 obj +4838 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1258 >> stream xmTmLSW~"]^Gd-DeNNM)R*]mXAQc`lR>TmM[21?̖,f{em̖,9=9xiJ*hen(Hγdmo[M˰)q)-rQ"/J"dZ)}qLKeK)nSO 21w+(&)
POh
kګ=҅Vy-4W*2L(Ӏ
(ZJ
FkW8jTPiq"Q«C @@ -15369,32 +16334,32 @@ F`B56@Jm{7 jг{qU9L*6bӈ<|Hn;`}]{Xn_M3&b-|,#c|)̺nЬ!0d*veX?`=D~M_Ͻ}Z[b#eɶ endstream endobj -4474 0 obj -<< /Type /FontDescriptor /FontName /RMWBFT+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 4476 0 R /CIDSet 4475 0 R >> +4836 0 obj +<< /Type /FontDescriptor /FontName /RMWBFT+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 4838 0 R /CIDSet 4837 0 R >> endobj -4477 0 obj +4839 0 obj << /Filter /FlateDecode /Length 388 >> stream x}RMk@ﯘ=lTEVT+^.ݰIQ(@B^ޛf{WNXV3Vۼ"ZD9*]R4#N%;sQg!;~WɂAڒL4#Ggk!|x|J&BHodh\ܓfCx,SY(\Bx0d; 樅<CA#8UuAk(cXf/DmV4קٵB9yLqħ1,7 JTxhcOm(1}(DC+<ء)uh9#q=~e]U7Z:y6x?JU͢
endstream endobj -330 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RMWBFT+LMRoman9-Bold /DescendantFonts [ 4478 0 R ] /ToUnicode 4477 0 R >> +352 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RMWBFT+LMRoman9-Bold /DescendantFonts [ 4840 0 R ] /ToUnicode 4839 0 R >> endobj -4478 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RMWBFT+LMRoman9-Bold /FontDescriptor 4474 0 R /W 4473 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4840 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RMWBFT+LMRoman9-Bold /FontDescriptor 4836 0 R /W 4835 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4479 0 obj +4841 0 obj [ 28 [ 515 ] 33 [ 515 ] 47 [ 515 ] 55 [ 515 ] 59 [ 515 ] 66 [ 515 ] 77 [ 515 ] 81 [ 515 ] 84 [ 515 ] 88 [ 515 ] 96 [ 515 ] 105 [ 515 ] 114 [ 515 ] 118 [ 515 ] ] endobj -4481 0 obj +4843 0 obj << /Filter /FlateDecode /Length 23 >> stream xc``p`dP`hhpP D) endstream endobj -4482 0 obj +4844 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1845 >> stream xuV}TW!@5ʚiZ3K- _EAE%1LBD<u @@ -15409,77 +16374,76 @@ oRWɧ<| ƠP"{nPq%e}Gܮ(WȗN)QuoYUO&Pn^ g48ԂE>*`zK@E%1άxh@,+&p_(N(/?=u0ݕLDB0O>`RFon0km(VҖ
F"3DgϷ^?@%xSEV!6¶M:GӞ`x#qNf4e'_%#l|ZQuJeq?HR@8(fu\o!du8iw6s;YpoۚiPH&Ng
y[j;rgRsJcOt~w@[fk9RM endstream endobj -4480 0 obj -<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 4482 0 R /CIDSet 4481 0 R >> +4842 0 obj +<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 4844 0 R /CIDSet 4843 0 R >> endobj -4483 0 obj +4845 0 obj << /Filter /FlateDecode /Length 428 >> stream x}]O0+`Dpf!q%Df,[֞&%.m{&F%pkz:=A[2,5P3 endstream endobj -329 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 4484 0 R ] /ToUnicode 4483 0 R >> +351 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 4846 0 R ] /ToUnicode 4845 0 R >> endobj -4484 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 4480 0 R /W 4479 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4846 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 4842 0 R /W 4841 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4485 0 obj -[ 28 [ 490 ] 45 [ 272 ] 54 [ 639 ] 57 [ 490 ] 59 [ 490 ] 66 [ 272 ] 74 [ 897 ] 77 [ 544 ] 83 [ 666 ] 88 [ 272 ] 105 [ 381 490 490 ] 118 [ 517 ] 121 [ 490 ] ] +4847 0 obj +[ 28 [ 490 ] 35 [ 544 ] 43 [ 435 ] 45 [ 272 ] 50 [ 435 490 ] 54 [ 639 ] 57 [ 490 ] 59 [ 490 ] 66 [ 272 ] 77 [ 544 ] 80 [ 762 490 490 666 ] 88 [ 272 ] 96 [ 381 ] 105 [ 381 ] 107 [ 490 ] 118 [ 517 ] 121 [ 490 ] ] endobj -4487 0 obj +4849 0 obj << /Filter /FlateDecode /Length 24 >> stream -xc````a -PPh`(`r +xc``1 +P` endstream endobj -4488 0 obj -<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2153 >> +4850 0 obj +<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2634 >> stream -xuV Pgai81ӎݦ('XQPrD%^!sDp`.aFQhPITp5R-TjfFkT_3"D<<|!Hz2E6)R5y~\
a -X%, -ϻ:OZD7h.N?y~~p?) 9D)@3R]_JP˼/<WS~T`dt2M@E1T'ݓ -VjI2 -S즴jJMũ"O*,>AM)UU)jEc*JCè-JZC%D+h(BAk4)k48O*+Q{%SR{MylspfOMU&2!I_IN Ȥ1(Id rC<Ujd-"ۑPd7B!Ld$H!';8
-uqxg}+p/uRqaT
ekP4D -MVH].lVɺj2w$$O*i&e=Awľ/o
鯺so8M4VA+-VyuIuE%ts#=xIl}A%Ϭ8zl#,DN!d_^Հ4UXqVX!!21M߽^:J[9"օ;!:&c40A(vs"Hݟ 55^~"Bײ&EiSRmچ&NH`)`E<H;A`6g*%=q;"Kn[ -wɤ׆ucɠKEɞ+DLeT&sU %~2o.Y,H/5|{TAh4ޒ]iZY{ݲ\
WBv|C`k7oV&KQRLJ}taYdcCNp?OFy§S̅{GIّs>Gw2* -0ԟ -|YJ$$`}|ႼljsG|6Mbl`jXwUS3˞A!Q>4<~oFv>уX.ɴ9a?d熀d.v}}{@ڕWrz?\8+wEֆt2]ЖzW6ys:Nmӵ;hFjvAt&Hטx1k2FC3UR ZA-F -l7}|x;㉁5PNf Aܩsx{f<%SLw]"ɹꬬTVYD`X{u:3wd.,,).4uVsT\R:r` +xuV
TWAŴ8LhGQ~V(XQDZHB$$GHb[EZqmei8;9=g̹3ν<xW֭8+fM6K370N4eї+X5GS0v*ǰH?Q?c@;L0^K+P4gi~o`c0*Fcp'a̋fTtnHHQ4"H-KԚ*L. jMV%HS2BUHF\*uZc~f4>CL)wr^.5j:!C.JX/]14F/Jz\a0d/6AZ2Xύ~+ލYNwB
2Z?BeҵUrAeø5{bsPl`ak8lیL,s$lh} +X^*=f|g[0S/-*i\>FYs._ހ|C3rpн>Rz+&!Zc/p\=J9<M(ä(,<lX{ݥOuӄgc~B +;EΌز9) 8.ࠍ0-P-X5@dUPMB"!oT4])hk5%I`@<"BA0$ +rYWjSzg& Lʼn>:ڟxF{)|6 +\큮ㄚǑ>At<wax;"DU=+?K%nlX!1?fw@@tlMk_H1BKфxAogłXxы|pc=vM!B`ĭi~ˬ`FpE96i67^ƛϳ~pPݖ00@: ;l!3gD\4M<xS> +TbQ +41WX9 +hgV^95geԒNEp[&]SWc'+%+KpOo+~m0-<\*inw=ԷWv<tw}*`dKͥsA%hRiMn9 +͠xuWtL70G1xVD[ס6Q> +v5ڵ;f?swjyeqrz8 94x[}v:ŭI-qZkȓZJJ@LC|O"М$F.X{8sd&`--~5+?[Bs:+;%ܽy4ѐc?R>eUvJrFx=<IZRЃ$jr͛ +Fc^0IS'O]2o^@EcfP͐}>_4^6u|;7,FO/tL-x8lںV!{Wت**++l
~~wjVY]7> endstream endobj -4486 0 obj -<< /Type /FontDescriptor /FontName /ZYVUUY+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 4488 0 R /CIDSet 4487 0 R >> +4848 0 obj +<< /Type /FontDescriptor /FontName /GSQYLW+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 4850 0 R /CIDSet 4849 0 R >> endobj -4489 0 obj -<< /Filter /FlateDecode /Length 443 >> +4851 0 obj +<< /Filter /FlateDecode /Length 466 >> stream -xڅMk0C =ޖ`h"Ivo4Idd_Il;3F3x]Bo1LӃOuL&K͇U(P^kaZVJҊ+Qo>0GM$\~8&d.m#G 6V7_1{%JݸCvAt2 -h}'0'uރ8!y";->v=6`v]oeF=LϙжtEws DnQώ'isl1YZ`M,X+T8 -x>gm\Q,#Έ(/4Kn)oID5{OӜ~˨CN2D/M<,~+ln,;&,~J[d;zy +xڅOo0C@1@[EH[ҬoC=Z +62pȷ_Tm˛y~ٷ*.-tz0nl|h@ endstream endobj -328 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZYVUUY+LMRoman12-Regular /DescendantFonts [ 4490 0 R ] /ToUnicode 4489 0 R >> +350 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GSQYLW+LMRoman12-Regular /DescendantFonts [ 4852 0 R ] /ToUnicode 4851 0 R >> endobj -4490 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZYVUUY+LMRoman12-Regular /FontDescriptor 4486 0 R /W 4485 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4852 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GSQYLW+LMRoman12-Regular /FontDescriptor 4848 0 R /W 4847 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4491 0 obj +4853 0 obj [777.8 0 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 0 0 0 0 1000 ] endobj -4492 0 obj +4854 0 obj [ 66 [ 223 ] 77 [ 484 ] 81 [ 470 ] 84 [ 484 ] 105 [ 340 ] ] endobj -4494 0 obj +4856 0 obj << /Filter /FlateDecode /Length 17 >> stream xc` endstream endobj -4495 0 obj +4857 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 759 >> stream xuR]HQםuM'״$u&JfZnc;N;23EPaPQ(*YFB>XD܉1h%{{A @@ -15488,10 +16452,10 @@ xuR]HQםuM'״$u&JfZnc;N;23EPaPQ(*YFB> '5;լ{k-MW<sϞ>ҍyPs-T2LDf_LeqgF, .r endstream endobj -4493 0 obj -<< /Type /FontDescriptor /FontName /BTPEXR+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 4495 0 R /CIDSet 4494 0 R >> +4855 0 obj +<< /Type /FontDescriptor /FontName /BTPEXR+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 4857 0 R /CIDSet 4856 0 R >> endobj -4496 0 obj +4858 0 obj << /Filter /FlateDecode /Length 383 >> stream x}R]k0}ϯ{6u:kMn]&%mKR0 @@ -15499,22 +16463,22 @@ x}R]k0}ϯ{6u:kMn]&%mKR0 OdPWBCJXIP"%\HoVd`\ܛ&*ۜ\X抄!dQ\g?h8IS~(6mTE}}ã'#0S2c3yFh<Aiu[h礫L[P9lʡIТuMCq;=Ćz5Z]n4;xR-wfnM~ endstream endobj -326 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTPEXR+LMSans17-Regular /DescendantFonts [ 4497 0 R ] /ToUnicode 4496 0 R >> +348 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BTPEXR+LMSans17-Regular /DescendantFonts [ 4859 0 R ] /ToUnicode 4858 0 R >> endobj -4497 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTPEXR+LMSans17-Regular /FontDescriptor 4493 0 R /W 4492 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4859 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BTPEXR+LMSans17-Regular /FontDescriptor 4855 0 R /W 4854 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4498 0 obj +4860 0 obj [ 28 [ 459 ] 43 [ 406 ] 50 [ 406 ] 59 [ 459 ] 63 [ 511 ] 70 [ 485 ] 84 [ 511 ] 104 [ 668 ] ] endobj -4500 0 obj +4862 0 obj << /Filter /FlateDecode /Length 20 >> stream xc```PdR
endstream endobj -4501 0 obj +4863 0 obj << /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1482 >> stream x}UkPW@Eh{uHרԱTBЊm!%$,y` @@ -15526,10 +16490,10 @@ x}UkPW@Eh{uHרԱTBЊm!%$,y` 6aV<4QB;@U]axs.H~,.?2-®it]SXGH&1))UUU5UGmznv8Ngd{0 endstream endobj -4499 0 obj -<< /Type /FontDescriptor /FontName /RKQUSG+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 4501 0 R /CIDSet 4500 0 R >> +4861 0 obj +<< /Type /FontDescriptor /FontName /RKQUSG+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 4863 0 R /CIDSet 4862 0 R >> endobj -4502 0 obj +4864 0 obj << /Filter /FlateDecode /Length 401 >> stream xڅ_O0)$0ց @@ -15537,13 +16501,13 @@ xڅ_O0)$0ց ag=[[$9Ҥec`\B}tI/4ZC@ImrzJ&pSb?Mc0tyLqddfb1̖ JN}>h狼Lyһ(4{9
=z:ƞ&n<8SGF~q+[ endstream endobj -325 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RKQUSG+LMRoman17-Regular /DescendantFonts [ 4503 0 R ] /ToUnicode 4502 0 R >> +347 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RKQUSG+LMRoman17-Regular /DescendantFonts [ 4865 0 R ] /ToUnicode 4864 0 R >> endobj -4503 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RKQUSG+LMRoman17-Regular /FontDescriptor 4499 0 R /W 4498 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +4865 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RKQUSG+LMRoman17-Regular /FontDescriptor 4861 0 R /W 4860 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -4505 0 obj +4867 0 obj << /Length1 1401 /Length2 5895 /Length3 0 /Filter /FlateDecode /Length 6849 >> stream xڍtTS6EABtHMzB^ҀPH""UDti M:~~Zߙgfgfcf!:4N,RjC `$AaЊ"8M# @@ -15569,10 +16533,10 @@ l/:diAxmiQgwm*ΓC7ˋH<K !O
^v1|k?Ncpvt.:>jsMg}fh A>Egi( oJ*h!cVBԔL4i3$?hA2 endstream endobj -4504 0 obj -<< /Type /FontDescriptor /FontName /DGBCZV+CMTT10 /Flags 4 /FontBBox [ -4 -233 537 696 ] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /visiblespace) /FontFile 4505 0 R >> +4866 0 obj +<< /Type /FontDescriptor /FontName /DGBCZV+CMTT10 /Flags 4 /FontBBox [ -4 -233 537 696 ] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /visiblespace) /FontFile 4867 0 R >> endobj -4507 0 obj +4869 0 obj << /Length1 1808 /Length2 2831 /Length3 0 /Filter /FlateDecode /Length 3963 >> stream xڵUy<T-\65kdoHZ)c挙f3f2JQJQ,7eRٿ(Dpz}Μy>܉( @@ -15588,10 +16552,10 @@ Z,?cj^Ϝ8Sc)5FQަ)u FUg%wR(^Mc[7WΜ ]|pVq{9/>X]#Xa>
k28PCཙ+#
~90/t*̩CUGoIX^ endstream endobj -4506 0 obj -<< /Type /FontDescriptor /FontName /MOFIWY+LMMathItalic10-Regular /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 60 /XHeight 431 /CharSet( /arrowhookleft /greater /k /less /n /pi /slash /x) /FontFile 4507 0 R >> +4868 0 obj +<< /Type /FontDescriptor /FontName /MOFIWY+LMMathItalic10-Regular /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 60 /XHeight 431 /CharSet( /arrowhookleft /greater /k /less /n /pi /slash /x) /FontFile 4869 0 R >> endobj -4509 0 obj +4871 0 obj << /Length1 1670 /Length2 1620 /Length3 0 /Filter /FlateDecode /Length 2652 >> stream xڵT{<Ti_6ɴ#lۓVL;a afD1aiLHzf+E.>[(]-V[Q[P*zw?9| @@ -15615,10 +16579,10 @@ qov&a!)P~(p$/t ϸ>=ޢۗ<c2zRb)mЭ;$.h]xs; endstream endobj -4508 0 obj -<< /Type /FontDescriptor /FontName /KDGSHG+LMMathItalic5-Regular /Flags 4 /FontBBox [ 0 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 84 /XHeight 431 /CharSet( /k) /FontFile 4509 0 R >> +4870 0 obj +<< /Type /FontDescriptor /FontName /KDGSHG+LMMathItalic5-Regular /Flags 4 /FontBBox [ 0 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 84 /XHeight 431 /CharSet( /k) /FontFile 4871 0 R >> endobj -4511 0 obj +4873 0 obj << /Length1 1689 /Length2 1813 /Length3 0 /Filter /FlateDecode /Length 2856 >> stream xڵTy\Lk-uK%(0[ӢBiZGTʵit4s-HD
I(Z墕("D{fs|̈́ 2SE^pIy.,RH Sh4=pC3.A#a B\l @@ -15634,10 +16598,10 @@ ywm>9.!"U3CP- []/&@2qf9>sj۔+W58P2^7*|K֟^LMICi[ΡmaW%JֺvK=,\&X9kHT5.~qϲnZJ|5'҇iѭ{?SWt pl_4W/{fSY9
3s3͜HTHsl_7zHUN%5 vHL_edS(O$#u4"햯RKu^4yoWws{$n-
*ܽ>ao|pWAգk{+|YvcG\cP*oXZAXòu;҈f=3un`̂wu[: endstream endobj -4510 0 obj -<< /Type /FontDescriptor /FontName /GFWWXD+LMMathItalic7-Regular /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /k /pi) /FontFile 4511 0 R >> +4872 0 obj +<< /Type /FontDescriptor /FontName /GFWWXD+LMMathItalic7-Regular /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /k /pi) /FontFile 4873 0 R >> endobj -4513 0 obj +4875 0 obj << /Length1 1677 /Length2 1235 /Length3 0 /Filter /FlateDecode /Length 2254 >> stream xڵTy\WW`"^x!'-9PH$U!y!C830֊*UEQUz(^x`ԅoVa?3NR$2 "2ctaf0l( ⋅Bk01' ) @@ -15653,10 +16617,10 @@ VLfh3Uuvz˩.LElL%yaʗz,u߯!6^sn]q\=S[Xlʲ]XIC />(m-d|!q^kAʫu^IO__~ge#9\gݒ@H2·rM8eCFybmɖns0Rg7HaSOge6x;͖ endstream endobj -4512 0 obj -<< /Type /FontDescriptor /FontName /GLFSGS+LMMathItalic9-Regular /Flags 4 /FontBBox [ -29 -250 1075 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 28 /XHeight 431 /CharSet( /slash) /FontFile 4513 0 R >> +4874 0 obj +<< /Type /FontDescriptor /FontName /GLFSGS+LMMathItalic9-Regular /Flags 4 /FontBBox [ -29 -250 1075 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 28 /XHeight 431 /CharSet( /slash) /FontFile 4875 0 R >> endobj -4515 0 obj +4877 0 obj << /Length1 1846 /Length2 22110 /Length3 0 /Filter /FlateDecode /Length 23294 >> stream xڴsx>7j۶m8ƶƶ7Nac7~=X9:g%'VR67J\x @@ -15752,10 +16716,10 @@ cdw$w(<c|Z_rRIo}[GeAXPzѠμ~m,E&kd&W VhԸh7Sg5T%dԁxtP2{zv5%| wԵn.;Z]Yߓ%gw;d6BtK4B7n3۳Ao-N3K=Q7OJt&
@G,m܂7i'5)>`ט]îqp#
Ezh!EKmI%Z9~`G5[VҎI蹖u}Ibl/YAdK>@uT%s
+ߐR+u
5kEM endstream endobj -4514 0 obj -<< /Type /FontDescriptor /FontName /DDAMXW+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /a /c /equal /four /n /one /parenleft /parenright /plus /r /t /two /zero) /FontFile 4515 0 R >> +4876 0 obj +<< /Type /FontDescriptor /FontName /DDAMXW+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /a /c /equal /four /n /one /parenleft /parenright /plus /r /t /two /zero) /FontFile 4877 0 R >> endobj -4517 0 obj +4879 0 obj << /Length1 1715 /Length2 17571 /Length3 0 /Filter /FlateDecode /Length 18712 >> stream xڴst=Ƕ۶vNlI5vhN۶G~qKs=CA b`twe`adɫ8s1 @@ -15823,10 +16787,10 @@ L ^EuG|Dg#-pAꩇs&eyRq}CI@ͧGG@>;B/ͯtj endstream endobj -4516 0 obj -<< /Type /FontDescriptor /FontName /LNPUMK+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /one /parenleft /parenright /plus /two) /FontFile 4517 0 R >> +4878 0 obj +<< /Type /FontDescriptor /FontName /LNPUMK+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /one /parenleft /parenright /plus /two) /FontFile 4879 0 R >> endobj -4519 0 obj +4881 0 obj << /Length1 1699 /Length2 10474 /Length3 0 /Filter /FlateDecode /Length 11567 >> stream xڵxeTڶ5NqwVݵH)N$/)V)^=s;FFd^s=NFh)5Y% YC tp` @@ -15868,10 +16832,10 @@ lP9'&hfL[mԓ莉y9a\>9Iե_EK1E9 j3zݳQ&-?>kn~Yswź$mt
KFP)*5^*=֢eD><WNR]I:T˩W$2x|̷ecbϑՑp$HLឩD`0àtp1J^"F)áwөЩ)rF endstream endobj -4518 0 obj -<< /Type /FontDescriptor /FontName /QNRZJS+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 96 /XHeight 444 /CharSet( /A /L /S /T /U /Y) /FontFile 4519 0 R >> +4880 0 obj +<< /Type /FontDescriptor /FontName /QNRZJS+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 96 /XHeight 444 /CharSet( /A /L /S /T /U /Y) /FontFile 4881 0 R >> endobj -4521 0 obj +4883 0 obj << /Length1 1740 /Length2 1925 /Length3 0 /Filter /FlateDecode /Length 2996 >> stream xڵTy<TkJefuk'3Vsp9g">nQ V*Y)"K劫ŽJugFݖ۟g>gy~}~hk0Yd0'(CXQ @@ -15886,10 +16850,10 @@ Z8i+w7ċzquߺgw9j.Tq NQPv-.;e>V8Z&/2і?hfx6"PKKku9]_X|wZ_$Ey7$'8X'}b}m"cZrӟڰȺlQy0.jFCGhq6仦{Z{RW!4YT ggf GzCB[oQOoXyV~,"(Y|%-يsg[: endstream endobj -4520 0 obj -<< /Type /FontDescriptor /FontName /TNOUBP+LMMathSymbols10-Regular /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /arrowright /asteriskmath /minus) /FontFile 4521 0 R >> +4882 0 obj +<< /Type /FontDescriptor /FontName /TNOUBP+LMMathSymbols10-Regular /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /arrowright /asteriskmath /minus) /FontFile 4883 0 R >> endobj -4523 0 obj +4885 0 obj << /Length1 1689 /Length2 1347 /Length3 0 /Filter /FlateDecode /Length 2378 >> stream xڵTyTv5R @@ -15906,10 +16870,10 @@ ckG<<[$[nt`1@Y(u/=_z;+ªqPî.ͼ zFyrݮ,Б9vBG/Nr endstream endobj -4522 0 obj -<< /Type /FontDescriptor /FontName /DTFCKV+LMMathSymbols6-Regular /Flags 4 /FontBBox [ -4 -948 1329 786 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 52 /XHeight 431 /CharSet( /asteriskmath) /FontFile 4523 0 R >> +4884 0 obj +<< /Type /FontDescriptor /FontName /DTFCKV+LMMathSymbols6-Regular /Flags 4 /FontBBox [ -4 -948 1329 786 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 52 /XHeight 431 /CharSet( /asteriskmath) /FontFile 4885 0 R >> endobj -4525 0 obj +4887 0 obj << /Length1 1684 /Length2 1529 /Length3 0 /Filter /FlateDecode /Length 2571 >> stream xڵTiX.\
@@ -15927,10 +16891,10 @@ f|ewkǥǫKggYf(lW$n:4/T~V6y(m] 2]lQ1z]dVfg?ù:=\d{76mjfioL䆬8m_ڵ)'7|ndyk%\v9/y`O~}kyW+D(ӂS^rΠрjý3vN< endstream endobj -4524 0 obj -<< /Type /FontDescriptor /FontName /CIXFWA+LMMathSymbols7-Regular /Flags 4 /FontBBox [ -15 -951 1252 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /minus) /FontFile 4525 0 R >> +4886 0 obj +<< /Type /FontDescriptor /FontName /CIXFWA+LMMathSymbols7-Regular /Flags 4 /FontBBox [ -15 -951 1252 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /minus) /FontFile 4887 0 R >> endobj -4527 0 obj +4889 0 obj << /Length1 1748 /Length2 1585 /Length3 0 /Filter /FlateDecode /Length 2661 >> stream xڵTiXWp *\@dѬ @@ -15950,188 +16914,206 @@ g]qb)@Xű,wlu.9ѲgvuQk|Lb(J+&Ļ!gnbWUVI!% {'eF1؊m\Ȫm3Z6\m<Iu3.QW}M1)ZfVٹ6{j~YF]w͆=,v,D8U8714"Pbhni|"MQ"&T{E>~lfÌ[N7?>-`;WG!Q}V9669ğ4*V3m~PTQa7U,/jJݾ}u5[3%}o)CƢ2N'ٷ*75TNCIڃ` Nsoܻ -(44zűS<*Xx3SVhzD2!-7g+^oR/66u4sSVAM۲Z8 endstream endobj -4526 0 obj -<< /Type /FontDescriptor /FontName /SRVGJC+LMMathSymbols9-Regular /Flags 4 /FontBBox [ -30 -958 1146 777 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 43 /XHeight 431 /CharSet( /angbracketleft /angbracketright /asteriskmath) /FontFile 4527 0 R >> +4888 0 obj +<< /Type /FontDescriptor /FontName /SRVGJC+LMMathSymbols9-Regular /Flags 4 /FontBBox [ -30 -958 1146 777 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 43 /XHeight 431 /CharSet( /angbracketleft /angbracketright /asteriskmath) /FontFile 4889 0 R >> endobj -4309 0 obj +4689 0 obj << /Type /Encoding /Differences [ 25 /pi 44 /arrowhookleft 60 /less /slash /greater 107 /k 110 /n 120 /x ] >> endobj -4313 0 obj +4693 0 obj << /Type /Encoding /Differences [ 0 /minus 3 /asteriskmath 33 /arrowright 104 /angbracketleft /angbracketright ] >> endobj -4311 0 obj +4691 0 obj << /Type /Encoding /Differences [ 40 /parenleft /parenright 43 /plus 48 /zero /one /two 52 /four 61 /equal 65 /A 76 /L 83 /S /T /U 89 /Y 97 /a 99 /c 110 /n 114 /r 116 /t ] >> endobj -633 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /DGBCZV+CMTT10 /FontDescriptor 4504 0 R /FirstChar 32 /LastChar 32 /Widths 4315 0 R >> +662 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /DGBCZV+CMTT10 /FontDescriptor 4866 0 R /FirstChar 32 /LastChar 32 /Widths 4695 0 R >> endobj -341 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /MOFIWY+LMMathItalic10-Regular /FontDescriptor 4506 0 R /FirstChar 25 /LastChar 120 /Widths 4417 0 R /Encoding 4309 0 R >> +363 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /MOFIWY+LMMathItalic10-Regular /FontDescriptor 4868 0 R /FirstChar 25 /LastChar 120 /Widths 4779 0 R /Encoding 4689 0 R >> endobj -519 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /KDGSHG+LMMathItalic5-Regular /FontDescriptor 4508 0 R /FirstChar 107 /LastChar 107 /Widths 4340 0 R /Encoding 4309 0 R >> +550 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /KDGSHG+LMMathItalic5-Regular /FontDescriptor 4870 0 R /FirstChar 107 /LastChar 107 /Widths 4702 0 R /Encoding 4689 0 R >> endobj -342 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /GFWWXD+LMMathItalic7-Regular /FontDescriptor 4510 0 R /FirstChar 25 /LastChar 107 /Widths 4416 0 R /Encoding 4309 0 R >> +364 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /GFWWXD+LMMathItalic7-Regular /FontDescriptor 4872 0 R /FirstChar 25 /LastChar 107 /Widths 4778 0 R /Encoding 4689 0 R >> endobj -2313 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /GLFSGS+LMMathItalic9-Regular /FontDescriptor 4512 0 R /FirstChar 61 /LastChar 61 /Widths 4310 0 R /Encoding 4309 0 R >> +2395 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /GLFSGS+LMMathItalic9-Regular /FontDescriptor 4874 0 R /FirstChar 61 /LastChar 61 /Widths 4690 0 R /Encoding 4689 0 R >> endobj -327 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /TNOUBP+LMMathSymbols10-Regular /FontDescriptor 4520 0 R /FirstChar 0 /LastChar 33 /Widths 4491 0 R /Encoding 4313 0 R >> +349 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /TNOUBP+LMMathSymbols10-Regular /FontDescriptor 4882 0 R /FirstChar 0 /LastChar 33 /Widths 4853 0 R /Encoding 4693 0 R >> endobj -344 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /DTFCKV+LMMathSymbols6-Regular /FontDescriptor 4522 0 R /FirstChar 3 /LastChar 3 /Widths 4414 0 R /Encoding 4313 0 R >> +366 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /DTFCKV+LMMathSymbols6-Regular /FontDescriptor 4884 0 R /FirstChar 3 /LastChar 3 /Widths 4776 0 R /Encoding 4693 0 R >> endobj -518 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /CIXFWA+LMMathSymbols7-Regular /FontDescriptor 4524 0 R /FirstChar 0 /LastChar 0 /Widths 4341 0 R /Encoding 4313 0 R >> +549 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /CIXFWA+LMMathSymbols7-Regular /FontDescriptor 4886 0 R /FirstChar 0 /LastChar 0 /Widths 4703 0 R /Encoding 4693 0 R >> endobj -635 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /SRVGJC+LMMathSymbols9-Regular /FontDescriptor 4526 0 R /FirstChar 3 /LastChar 105 /Widths 4314 0 R /Encoding 4313 0 R >> +664 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /SRVGJC+LMMathSymbols9-Regular /FontDescriptor 4888 0 R /FirstChar 3 /LastChar 105 /Widths 4694 0 R /Encoding 4693 0 R >> endobj -340 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /DDAMXW+LMRoman10-Regular /FontDescriptor 4514 0 R /FirstChar 40 /LastChar 116 /Widths 4418 0 R /Encoding 4311 0 R >> +362 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /DDAMXW+LMRoman10-Regular /FontDescriptor 4876 0 R /FirstChar 40 /LastChar 116 /Widths 4780 0 R /Encoding 4691 0 R >> endobj -343 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /LNPUMK+LMRoman7-Regular /FontDescriptor 4516 0 R /FirstChar 40 /LastChar 50 /Widths 4415 0 R /Encoding 4311 0 R >> +365 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /LNPUMK+LMRoman7-Regular /FontDescriptor 4878 0 R /FirstChar 40 /LastChar 50 /Widths 4777 0 R /Encoding 4691 0 R >> endobj -636 0 obj -<< /Type /Font /Subtype /Type1 /BaseFont /QNRZJS+LMSans9-Regular /FontDescriptor 4518 0 R /FirstChar 65 /LastChar 89 /Widths 4312 0 R /Encoding 4311 0 R >> +665 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /QNRZJS+LMSans9-Regular /FontDescriptor 4880 0 R /FirstChar 65 /LastChar 89 /Widths 4692 0 R /Encoding 4691 0 R >> endobj -353 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 317 0 R 363 0 R 374 0 R 389 0 R 411 0 R 422 0 R 434 0 R 445 0 R 455 0 R 460 0 R ] >> +375 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 337 0 R 385 0 R 398 0 R 415 0 R 435 0 R 446 0 R 458 0 R 469 0 R 478 0 R 483 0 R ] >> endobj -472 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 467 0 R 475 0 R 480 0 R 486 0 R 497 0 R 503 0 R 507 0 R 515 0 R 526 0 R 537 0 R ] >> +492 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 489 0 R 494 0 R 498 0 R 506 0 R 516 0 R 524 0 R 533 0 R 540 0 R 546 0 R 557 0 R ] >> endobj -545 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 542 0 R 551 0 R 564 0 R 575 0 R 585 0 R 591 0 R 595 0 R 599 0 R 605 0 R 611 0 R ] >> +567 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 564 0 R 575 0 R 588 0 R 597 0 R 603 0 R 610 0 R 617 0 R 623 0 R 627 0 R 631 0 R ] >> endobj -627 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 620 0 R 630 0 R 673 0 R 724 0 R 779 0 R 807 0 R 832 0 R 853 0 R 895 0 R 931 0 R ] >> +643 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 640 0 R 650 0 R 659 0 R 699 0 R 745 0 R 799 0 R 836 0 R 858 0 R 877 0 R 919 0 R ] >> endobj -1026 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 991 0 R 1029 0 R 1085 0 R 1148 0 R 1207 0 R 1272 0 R 1339 0 R 1387 0 R 1432 0 R 1474 0 R ] >> +1005 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 958 0 R 1009 0 R 1055 0 R 1089 0 R 1146 0 R 1209 0 R 1269 0 R 1336 0 R 1402 0 R 1448 0 R ] >> endobj -1590 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 1532 0 R 1593 0 R 1639 0 R 1687 0 R 1733 0 R 1785 0 R 1846 0 R 1890 0 R 1953 0 R 2008 0 R ] >> +1531 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 1493 0 R 1533 0 R 1587 0 R 1643 0 R 1688 0 R 1736 0 R 1786 0 R 1842 0 R 1902 0 R 1949 0 R ] >> endobj -2099 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 2056 0 R 2101 0 R 2160 0 R 2225 0 R 2283 0 R 2335 0 R 2365 0 R 2403 0 R 2443 0 R 2489 0 R ] >> +2063 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 2013 0 R 2065 0 R 2114 0 R 2158 0 R 2215 0 R 2276 0 R 2339 0 R 2397 0 R 2426 0 R 2470 0 R ] >> endobj -2578 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 2540 0 R 2581 0 R 2636 0 R 2677 0 R 2714 0 R 2767 0 R 2830 0 R 2876 0 R 2923 0 R 2979 0 R ] >> +2555 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 2502 0 R 2557 0 R 2604 0 R 2655 0 R 2695 0 R 2754 0 R 2782 0 R 2822 0 R 2876 0 R 2935 0 R ] >> endobj -3076 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 3034 0 R 3078 0 R 3137 0 R 3197 0 R 3250 0 R 3288 0 R 3341 0 R 3393 0 R 3453 0 R 3509 0 R ] >> +3029 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 2982 0 R 3032 0 R 3067 0 R 3114 0 R 3149 0 R 3204 0 R 3258 0 R 3323 0 R 3380 0 R 3429 0 R ] >> endobj -3630 0 obj -<< /Type /Pages /Parent 4528 0 R /Count 10 /Kids [ 3576 0 R 3632 0 R 3671 0 R 3722 0 R 3767 0 R 3819 0 R 3862 0 R 3918 0 R 3968 0 R 4022 0 R ] >> +3519 0 obj +<< /Type /Pages /Parent 4890 0 R /Count 10 /Kids [ 3466 0 R 3522 0 R 3565 0 R 3610 0 R 3676 0 R 3724 0 R 3777 0 R 3826 0 R 3877 0 R 3914 0 R ] >> endobj -4143 0 obj -<< /Type /Pages /Parent 4529 0 R /Count 6 /Kids [ 4088 0 R 4145 0 R 4197 0 R 4227 0 R 4294 0 R 4305 0 R ] >> +4014 0 obj +<< /Type /Pages /Parent 4891 0 R /Count 10 /Kids [ 3963 0 R 4016 0 R 4060 0 R 4104 0 R 4158 0 R 4196 0 R 4249 0 R 4309 0 R 4358 0 R 4410 0 R ] >> endobj -4528 0 obj -<< /Type /Pages /Parent 4530 0 R /Count 100 /Kids [ 353 0 R 472 0 R 545 0 R 627 0 R 1026 0 R 1590 0 R 2099 0 R 2578 0 R 3076 0 R 3630 0 R ] >> +4532 0 obj +<< /Type /Pages /Parent 4891 0 R /Count 5 /Kids [ 4476 0 R 4534 0 R 4582 0 R 4638 0 R 4685 0 R ] >> endobj -4529 0 obj -<< /Type /Pages /Parent 4530 0 R /Count 6 /Kids [ 4143 0 R ] >> +4890 0 obj +<< /Type /Pages /Parent 4892 0 R /Count 100 /Kids [ 375 0 R 492 0 R 567 0 R 643 0 R 1005 0 R 1531 0 R 2063 0 R 2555 0 R 3029 0 R 3519 0 R ] >> endobj -4530 0 obj -<< /Type /Pages /Count 106 /Kids [ 4528 0 R 4529 0 R ] >> +4891 0 obj +<< /Type /Pages /Parent 4892 0 R /Count 15 /Kids [ 4014 0 R 4532 0 R ] >> endobj -4531 0 obj -<< /Type /Outlines /First 6 0 R /Last 314 0 R /Count 12 >> +4892 0 obj +<< /Type /Pages /Count 115 /Kids [ 4890 0 R 4891 0 R ] >> +endobj +4893 0 obj +<< /Type /Outlines /First 6 0 R /Last 334 0 R /Count 12 >> +endobj +334 0 obj +<< /Title 335 0 R /A 332 0 R /Parent 4893 0 R /Prev 330 0 R >> +endobj +330 0 obj +<< /Title 331 0 R /A 328 0 R /Parent 4893 0 R /Prev 206 0 R /Next 334 0 R >> +endobj +326 0 obj +<< /Title 327 0 R /A 324 0 R /Parent 274 0 R /Prev 322 0 R >> +endobj +322 0 obj +<< /Title 323 0 R /A 320 0 R /Parent 274 0 R /Prev 318 0 R /Next 326 0 R >> +endobj +318 0 obj +<< /Title 319 0 R /A 316 0 R /Parent 274 0 R /Prev 314 0 R /Next 322 0 R >> endobj 314 0 obj -<< /Title 315 0 R /A 312 0 R /Parent 4531 0 R /Prev 310 0 R >> +<< /Title 315 0 R /A 312 0 R /Parent 274 0 R /Prev 310 0 R /Next 318 0 R >> endobj 310 0 obj -<< /Title 311 0 R /A 308 0 R /Parent 4531 0 R /Prev 202 0 R /Next 314 0 R >> +<< /Title 311 0 R /A 308 0 R /Parent 274 0 R /Prev 306 0 R /Next 314 0 R >> endobj 306 0 obj -<< /Title 307 0 R /A 304 0 R /Parent 270 0 R /Prev 302 0 R >> +<< /Title 307 0 R /A 304 0 R /Parent 274 0 R /Prev 302 0 R /Next 310 0 R >> endobj 302 0 obj -<< /Title 303 0 R /A 300 0 R /Parent 270 0 R /Prev 298 0 R /Next 306 0 R >> +<< /Title 303 0 R /A 300 0 R /Parent 274 0 R /Prev 298 0 R /Next 306 0 R >> endobj 298 0 obj -<< /Title 299 0 R /A 296 0 R /Parent 270 0 R /Prev 294 0 R /Next 302 0 R >> +<< /Title 299 0 R /A 296 0 R /Parent 274 0 R /Prev 294 0 R /Next 302 0 R >> endobj 294 0 obj -<< /Title 295 0 R /A 292 0 R /Parent 270 0 R /Prev 290 0 R /Next 298 0 R >> +<< /Title 295 0 R /A 292 0 R /Parent 274 0 R /Prev 290 0 R /Next 298 0 R >> endobj 290 0 obj -<< /Title 291 0 R /A 288 0 R /Parent 270 0 R /Prev 286 0 R /Next 294 0 R >> +<< /Title 291 0 R /A 288 0 R /Parent 274 0 R /Prev 286 0 R /Next 294 0 R >> endobj 286 0 obj -<< /Title 287 0 R /A 284 0 R /Parent 270 0 R /Prev 282 0 R /Next 290 0 R >> +<< /Title 287 0 R /A 284 0 R /Parent 274 0 R /Prev 282 0 R /Next 290 0 R >> endobj 282 0 obj -<< /Title 283 0 R /A 280 0 R /Parent 270 0 R /Prev 278 0 R /Next 286 0 R >> +<< /Title 283 0 R /A 280 0 R /Parent 274 0 R /Prev 278 0 R /Next 286 0 R >> endobj 278 0 obj -<< /Title 279 0 R /A 276 0 R /Parent 270 0 R /Prev 274 0 R /Next 282 0 R >> +<< /Title 279 0 R /A 276 0 R /Parent 274 0 R /Next 282 0 R >> endobj 274 0 obj -<< /Title 275 0 R /A 272 0 R /Parent 270 0 R /Next 278 0 R >> +<< /Title 275 0 R /A 272 0 R /Parent 206 0 R /Prev 214 0 R /First 278 0 R /Last 326 0 R /Count -13 >> endobj 270 0 obj -<< /Title 271 0 R /A 268 0 R /Parent 202 0 R /Prev 210 0 R /First 274 0 R /Last 306 0 R /Count -9 >> +<< /Title 271 0 R /A 268 0 R /Parent 214 0 R /Prev 266 0 R >> endobj 266 0 obj -<< /Title 267 0 R /A 264 0 R /Parent 210 0 R /Prev 262 0 R >> +<< /Title 267 0 R /A 264 0 R /Parent 214 0 R /Prev 262 0 R /Next 270 0 R >> endobj 262 0 obj -<< /Title 263 0 R /A 260 0 R /Parent 210 0 R /Prev 258 0 R /Next 266 0 R >> +<< /Title 263 0 R /A 260 0 R /Parent 214 0 R /Prev 258 0 R /Next 266 0 R >> endobj 258 0 obj -<< /Title 259 0 R /A 256 0 R /Parent 210 0 R /Prev 254 0 R /Next 262 0 R >> +<< /Title 259 0 R /A 256 0 R /Parent 214 0 R /Prev 254 0 R /Next 262 0 R >> endobj 254 0 obj -<< /Title 255 0 R /A 252 0 R /Parent 210 0 R /Prev 250 0 R /Next 258 0 R >> +<< /Title 255 0 R /A 252 0 R /Parent 214 0 R /Prev 250 0 R /Next 258 0 R >> endobj 250 0 obj -<< /Title 251 0 R /A 248 0 R /Parent 210 0 R /Prev 246 0 R /Next 254 0 R >> +<< /Title 251 0 R /A 248 0 R /Parent 214 0 R /Prev 246 0 R /Next 254 0 R >> endobj 246 0 obj -<< /Title 247 0 R /A 244 0 R /Parent 210 0 R /Prev 242 0 R /Next 250 0 R >> +<< /Title 247 0 R /A 244 0 R /Parent 214 0 R /Prev 242 0 R /Next 250 0 R >> endobj 242 0 obj -<< /Title 243 0 R /A 240 0 R /Parent 210 0 R /Prev 238 0 R /Next 246 0 R >> +<< /Title 243 0 R /A 240 0 R /Parent 214 0 R /Prev 238 0 R /Next 246 0 R >> endobj 238 0 obj -<< /Title 239 0 R /A 236 0 R /Parent 210 0 R /Prev 234 0 R /Next 242 0 R >> +<< /Title 239 0 R /A 236 0 R /Parent 214 0 R /Prev 234 0 R /Next 242 0 R >> endobj 234 0 obj -<< /Title 235 0 R /A 232 0 R /Parent 210 0 R /Prev 230 0 R /Next 238 0 R >> +<< /Title 235 0 R /A 232 0 R /Parent 214 0 R /Prev 230 0 R /Next 238 0 R >> endobj 230 0 obj -<< /Title 231 0 R /A 228 0 R /Parent 210 0 R /Prev 226 0 R /Next 234 0 R >> +<< /Title 231 0 R /A 228 0 R /Parent 214 0 R /Prev 226 0 R /Next 234 0 R >> endobj 226 0 obj -<< /Title 227 0 R /A 224 0 R /Parent 210 0 R /Prev 222 0 R /Next 230 0 R >> +<< /Title 227 0 R /A 224 0 R /Parent 214 0 R /Prev 222 0 R /Next 230 0 R >> endobj 222 0 obj -<< /Title 223 0 R /A 220 0 R /Parent 210 0 R /Prev 218 0 R /Next 226 0 R >> +<< /Title 223 0 R /A 220 0 R /Parent 214 0 R /Prev 218 0 R /Next 226 0 R >> endobj 218 0 obj -<< /Title 219 0 R /A 216 0 R /Parent 210 0 R /Prev 214 0 R /Next 222 0 R >> +<< /Title 219 0 R /A 216 0 R /Parent 214 0 R /Next 222 0 R >> endobj 214 0 obj -<< /Title 215 0 R /A 212 0 R /Parent 210 0 R /Next 218 0 R >> +<< /Title 215 0 R /A 212 0 R /Parent 206 0 R /Prev 210 0 R /Next 274 0 R /First 218 0 R /Last 270 0 R /Count -14 >> endobj 210 0 obj -<< /Title 211 0 R /A 208 0 R /Parent 202 0 R /Prev 206 0 R /Next 270 0 R /First 214 0 R /Last 266 0 R /Count -14 >> +<< /Title 211 0 R /A 208 0 R /Parent 206 0 R /Next 214 0 R >> endobj 206 0 obj -<< /Title 207 0 R /A 204 0 R /Parent 202 0 R /Next 210 0 R >> +<< /Title 207 0 R /A 204 0 R /Parent 4893 0 R /Prev 174 0 R /Next 330 0 R /First 210 0 R /Last 274 0 R /Count -3 >> endobj 202 0 obj -<< /Title 203 0 R /A 200 0 R /Parent 4531 0 R /Prev 174 0 R /Next 310 0 R /First 206 0 R /Last 270 0 R /Count -3 >> +<< /Title 203 0 R /A 200 0 R /Parent 174 0 R /Prev 198 0 R >> endobj 198 0 obj -<< /Title 199 0 R /A 196 0 R /Parent 174 0 R /Prev 194 0 R >> +<< /Title 199 0 R /A 196 0 R /Parent 174 0 R /Prev 194 0 R /Next 202 0 R >> endobj 194 0 obj << /Title 195 0 R /A 192 0 R /Parent 174 0 R /Prev 190 0 R /Next 198 0 R >> @@ -16149,64 +17131,64 @@ endobj << /Title 179 0 R /A 176 0 R /Parent 174 0 R /Next 182 0 R >> endobj 174 0 obj -<< /Title 175 0 R /A 172 0 R /Parent 4531 0 R /Prev 150 0 R /Next 202 0 R /First 178 0 R /Last 198 0 R /Count -6 >> +<< /Title 175 0 R /A 172 0 R /Parent 4893 0 R /Prev 154 0 R /Next 206 0 R /First 178 0 R /Last 202 0 R /Count -7 >> endobj 170 0 obj -<< /Title 171 0 R /A 168 0 R /Parent 150 0 R /Prev 166 0 R >> +<< /Title 171 0 R /A 168 0 R /Parent 154 0 R /Prev 166 0 R >> endobj 166 0 obj -<< /Title 167 0 R /A 164 0 R /Parent 150 0 R /Prev 162 0 R /Next 170 0 R >> +<< /Title 167 0 R /A 164 0 R /Parent 154 0 R /Prev 162 0 R /Next 170 0 R >> endobj 162 0 obj -<< /Title 163 0 R /A 160 0 R /Parent 150 0 R /Prev 158 0 R /Next 166 0 R >> +<< /Title 163 0 R /A 160 0 R /Parent 154 0 R /Prev 158 0 R /Next 166 0 R >> endobj 158 0 obj -<< /Title 159 0 R /A 156 0 R /Parent 150 0 R /Prev 154 0 R /Next 162 0 R >> +<< /Title 159 0 R /A 156 0 R /Parent 154 0 R /Next 162 0 R >> endobj 154 0 obj -<< /Title 155 0 R /A 152 0 R /Parent 150 0 R /Next 158 0 R >> +<< /Title 155 0 R /A 152 0 R /Parent 4893 0 R /Prev 150 0 R /Next 174 0 R /First 158 0 R /Last 170 0 R /Count -4 >> endobj 150 0 obj -<< /Title 151 0 R /A 148 0 R /Parent 4531 0 R /Prev 146 0 R /Next 174 0 R /First 154 0 R /Last 170 0 R /Count -5 >> +<< /Title 151 0 R /A 148 0 R /Parent 4893 0 R /Prev 66 0 R /Next 154 0 R >> endobj 146 0 obj -<< /Title 147 0 R /A 144 0 R /Parent 4531 0 R /Prev 66 0 R /Next 150 0 R >> +<< /Title 147 0 R /A 144 0 R /Parent 66 0 R /Prev 142 0 R >> endobj 142 0 obj -<< /Title 143 0 R /A 140 0 R /Parent 66 0 R /Prev 138 0 R >> +<< /Title 143 0 R /A 140 0 R /Parent 66 0 R /Prev 126 0 R /Next 146 0 R >> endobj 138 0 obj -<< /Title 139 0 R /A 136 0 R /Parent 66 0 R /Prev 122 0 R /Next 142 0 R >> +<< /Title 139 0 R /A 136 0 R /Parent 126 0 R /Prev 134 0 R >> endobj 134 0 obj -<< /Title 135 0 R /A 132 0 R /Parent 122 0 R /Prev 130 0 R >> +<< /Title 135 0 R /A 132 0 R /Parent 126 0 R /Prev 130 0 R /Next 138 0 R >> endobj 130 0 obj -<< /Title 131 0 R /A 128 0 R /Parent 122 0 R /Prev 126 0 R /Next 134 0 R >> +<< /Title 131 0 R /A 128 0 R /Parent 126 0 R /Next 134 0 R >> endobj 126 0 obj -<< /Title 127 0 R /A 124 0 R /Parent 122 0 R /Next 130 0 R >> +<< /Title 127 0 R /A 124 0 R /Parent 66 0 R /Prev 102 0 R /Next 142 0 R /First 130 0 R /Last 138 0 R /Count -3 >> endobj 122 0 obj -<< /Title 123 0 R /A 120 0 R /Parent 66 0 R /Prev 98 0 R /Next 138 0 R /First 126 0 R /Last 134 0 R /Count -3 >> +<< /Title 123 0 R /A 120 0 R /Parent 102 0 R /Prev 118 0 R >> endobj 118 0 obj -<< /Title 119 0 R /A 116 0 R /Parent 98 0 R /Prev 114 0 R >> +<< /Title 119 0 R /A 116 0 R /Parent 102 0 R /Prev 114 0 R /Next 122 0 R >> endobj 114 0 obj -<< /Title 115 0 R /A 112 0 R /Parent 98 0 R /Prev 110 0 R /Next 118 0 R >> +<< /Title 115 0 R /A 112 0 R /Parent 102 0 R /Prev 110 0 R /Next 118 0 R >> endobj 110 0 obj -<< /Title 111 0 R /A 108 0 R /Parent 98 0 R /Prev 106 0 R /Next 114 0 R >> +<< /Title 111 0 R /A 108 0 R /Parent 102 0 R /Prev 106 0 R /Next 114 0 R >> endobj 106 0 obj -<< /Title 107 0 R /A 104 0 R /Parent 98 0 R /Prev 102 0 R /Next 110 0 R >> +<< /Title 107 0 R /A 104 0 R /Parent 102 0 R /Next 110 0 R >> endobj 102 0 obj -<< /Title 103 0 R /A 100 0 R /Parent 98 0 R /Next 106 0 R >> +<< /Title 103 0 R /A 100 0 R /Parent 66 0 R /Prev 98 0 R /Next 126 0 R /First 106 0 R /Last 122 0 R /Count -5 >> endobj 98 0 obj -<< /Title 99 0 R /A 96 0 R /Parent 66 0 R /Prev 94 0 R /Next 122 0 R /First 102 0 R /Last 118 0 R /Count -5 >> +<< /Title 99 0 R /A 96 0 R /Parent 66 0 R /Prev 94 0 R /Next 102 0 R >> endobj 94 0 obj << /Title 95 0 R /A 92 0 R /Parent 66 0 R /Prev 82 0 R /Next 98 0 R >> @@ -16230,10 +17212,10 @@ endobj << /Title 71 0 R /A 68 0 R /Parent 66 0 R /Next 82 0 R /First 74 0 R /Last 78 0 R /Count -2 >> endobj 66 0 obj -<< /Title 67 0 R /A 64 0 R /Parent 4531 0 R /Prev 62 0 R /Next 146 0 R /First 70 0 R /Last 142 0 R /Count -7 >> +<< /Title 67 0 R /A 64 0 R /Parent 4893 0 R /Prev 62 0 R /Next 150 0 R /First 70 0 R /Last 146 0 R /Count -8 >> endobj 62 0 obj -<< /Title 63 0 R /A 60 0 R /Parent 4531 0 R /Prev 34 0 R /Next 66 0 R >> +<< /Title 63 0 R /A 60 0 R /Parent 4893 0 R /Prev 34 0 R /Next 66 0 R >> endobj 58 0 obj << /Title 59 0 R /A 56 0 R /Parent 34 0 R /Prev 42 0 R >> @@ -16254,7 +17236,7 @@ endobj << /Title 39 0 R /A 36 0 R /Parent 34 0 R /Next 42 0 R >> endobj 34 0 obj -<< /Title 35 0 R /A 32 0 R /Parent 4531 0 R /Prev 14 0 R /Next 62 0 R /First 38 0 R /Last 58 0 R /Count -3 >> +<< /Title 35 0 R /A 32 0 R /Parent 4893 0 R /Prev 14 0 R /Next 62 0 R /First 38 0 R /Last 58 0 R /Count -3 >> endobj 30 0 obj << /Title 31 0 R /A 28 0 R /Parent 14 0 R /Prev 26 0 R >> @@ -16269,3387 +17251,3305 @@ endobj << /Title 19 0 R /A 16 0 R /Parent 14 0 R /Next 22 0 R >> endobj 14 0 obj -<< /Title 15 0 R /A 12 0 R /Parent 4531 0 R /Prev 10 0 R /Next 34 0 R /First 18 0 R /Last 30 0 R /Count -4 >> +<< /Title 15 0 R /A 12 0 R /Parent 4893 0 R /Prev 10 0 R /Next 34 0 R /First 18 0 R /Last 30 0 R /Count -4 >> endobj 10 0 obj -<< /Title 11 0 R /A 8 0 R /Parent 4531 0 R /Prev 6 0 R /Next 14 0 R >> +<< /Title 11 0 R /A 8 0 R /Parent 4893 0 R /Prev 6 0 R /Next 14 0 R >> endobj 6 0 obj -<< /Title 7 0 R /A 4 0 R /Parent 4531 0 R /Next 10 0 R >> +<< /Title 7 0 R /A 4 0 R /Parent 4893 0 R /Next 10 0 R >> endobj -4532 0 obj -<< /Names [ (Doc-Start) 324 0 R (HD.1) 634 0 R (HD.10) 645 0 R (HD.100) 743 0 R (HD.1000) 1731 0 R (HD.1001) 1736 0 R (HD.1002) 1737 0 R (HD.1003) 1738 0 R (HD.1004) 1739 0 R (HD.1005) 1740 0 R (HD.1006) 1741 0 R (HD.1007) 1742 0 R (HD.1008) 1743 0 R (HD.1009) 1744 0 R (HD.101) 744 0 R (HD.1010) 1745 0 R (HD.1011) 1746 0 R (HD.1012) 1747 0 R (HD.1013) 1748 0 R (HD.1014) 1749 0 R (HD.1015) 1750 0 R (HD.1016) 1751 0 R (HD.1017) 1752 0 R (HD.1018) 1753 0 R (HD.1019) 1754 0 R (HD.102) 745 0 R (HD.1020) 1755 0 R (HD.1021) 1756 0 R (HD.1022) 1757 0 R (HD.1023) 1758 0 R (HD.1024) 1759 0 R (HD.1025) 1760 0 R ] /Limits [ (Doc-Start) (HD.1025) ] >> +4894 0 obj +<< /Names [ (Doc-Start) 346 0 R (HD.1) 663 0 R (HD.10) 674 0 R (HD.100) 772 0 R (HD.1000) 1764 0 R (HD.1001) 1765 0 R (HD.1002) 1766 0 R (HD.1003) 1767 0 R (HD.1004) 1768 0 R (HD.1005) 1769 0 R (HD.1006) 1770 0 R (HD.1007) 1771 0 R (HD.1008) 1772 0 R (HD.1009) 1773 0 R (HD.101) 773 0 R (HD.1010) 1774 0 R (HD.1011) 1775 0 R (HD.1012) 1776 0 R (HD.1013) 1777 0 R (HD.1014) 1778 0 R (HD.1015) 1779 0 R (HD.1016) 1780 0 R (HD.1017) 1781 0 R (HD.1018) 1782 0 R (HD.1019) 1783 0 R (HD.102) 774 0 R (HD.1020) 1784 0 R (HD.1021) 1789 0 R (HD.1022) 1790 0 R (HD.1023) 1791 0 R (HD.1024) 1792 0 R (HD.1025) 1793 0 R ] /Limits [ (Doc-Start) (HD.1025) ] >> endobj -4533 0 obj -<< /Names [ (HD.1026) 1761 0 R (HD.1027) 1762 0 R (HD.1028) 1763 0 R (HD.1029) 1764 0 R (HD.103) 746 0 R (HD.1030) 1765 0 R (HD.1031) 1766 0 R (HD.1032) 1767 0 R (HD.1033) 1768 0 R (HD.1034) 1769 0 R (HD.1035) 1770 0 R (HD.1036) 1771 0 R (HD.1037) 1772 0 R (HD.1038) 1773 0 R (HD.1039) 1774 0 R (HD.104) 747 0 R (HD.1040) 1775 0 R (HD.1041) 1776 0 R (HD.1042) 1777 0 R (HD.1043) 1778 0 R (HD.1044) 1779 0 R (HD.1045) 1780 0 R (HD.1046) 1781 0 R (HD.1047) 1782 0 R (HD.1048) 1783 0 R (HD.1049) 1788 0 R (HD.105) 748 0 R (HD.1050) 1789 0 R (HD.1051) 1790 0 R (HD.1052) 1791 0 R (HD.1053) 1792 0 R (HD.1054) 1793 0 R ] /Limits [ (HD.1026) (HD.1054) ] >> +4895 0 obj +<< /Names [ (HD.1026) 1794 0 R (HD.1027) 1795 0 R (HD.1028) 1796 0 R (HD.1029) 1797 0 R (HD.103) 775 0 R (HD.1030) 1798 0 R (HD.1031) 1799 0 R (HD.1032) 1800 0 R (HD.1033) 1801 0 R (HD.1034) 1802 0 R (HD.1035) 1803 0 R (HD.1036) 1804 0 R (HD.1037) 1805 0 R (HD.1038) 1806 0 R (HD.1039) 1807 0 R (HD.104) 776 0 R (HD.1040) 1808 0 R (HD.1041) 1809 0 R (HD.1042) 1810 0 R (HD.1043) 1811 0 R (HD.1044) 1812 0 R (HD.1045) 1813 0 R (HD.1046) 1814 0 R (HD.1047) 1815 0 R (HD.1048) 1816 0 R (HD.1049) 1817 0 R (HD.105) 777 0 R (HD.1050) 1818 0 R (HD.1051) 1819 0 R (HD.1052) 1820 0 R (HD.1053) 1821 0 R (HD.1054) 1822 0 R ] /Limits [ (HD.1026) (HD.1054) ] >> endobj -4534 0 obj -<< /Names [ (HD.1055) 1794 0 R (HD.1056) 1795 0 R (HD.1057) 1796 0 R (HD.1058) 1797 0 R (HD.1059) 1798 0 R (HD.106) 749 0 R (HD.1060) 1799 0 R (HD.1061) 1800 0 R (HD.1062) 1801 0 R (HD.1063) 1802 0 R (HD.1064) 1803 0 R (HD.1065) 1804 0 R (HD.1066) 1805 0 R (HD.1067) 1806 0 R (HD.1068) 1807 0 R (HD.1069) 1808 0 R (HD.107) 750 0 R (HD.1070) 1809 0 R (HD.1071) 1810 0 R (HD.1072) 1811 0 R (HD.1073) 1812 0 R (HD.1074) 1813 0 R (HD.1075) 1814 0 R (HD.1076) 1815 0 R (HD.1077) 1816 0 R (HD.1078) 1817 0 R (HD.1079) 1818 0 R (HD.108) 751 0 R (HD.1080) 1819 0 R (HD.1081) 1820 0 R (HD.1082) 1821 0 R (HD.1083) 1822 0 R ] /Limits [ (HD.1055) (HD.1083) ] >> +4896 0 obj +<< /Names [ (HD.1055) 1823 0 R (HD.1056) 1824 0 R (HD.1057) 1825 0 R (HD.1058) 1826 0 R (HD.1059) 1827 0 R (HD.106) 778 0 R (HD.1060) 1828 0 R (HD.1061) 1829 0 R (HD.1062) 1830 0 R (HD.1063) 1831 0 R (HD.1064) 1832 0 R (HD.1065) 1833 0 R (HD.1066) 1834 0 R (HD.1067) 1835 0 R (HD.1068) 1836 0 R (HD.1069) 1837 0 R (HD.107) 779 0 R (HD.1070) 1838 0 R (HD.1071) 1839 0 R (HD.1072) 1840 0 R (HD.1073) 1845 0 R (HD.1074) 1846 0 R (HD.1075) 1847 0 R (HD.1076) 1848 0 R (HD.1077) 1849 0 R (HD.1078) 1850 0 R (HD.1079) 1851 0 R (HD.108) 780 0 R (HD.1080) 1852 0 R (HD.1081) 1853 0 R (HD.1082) 1854 0 R (HD.1083) 1855 0 R ] /Limits [ (HD.1055) (HD.1083) ] >> endobj -4535 0 obj -<< /Names [ (HD.1084) 1823 0 R (HD.1085) 1824 0 R (HD.1086) 1825 0 R (HD.1087) 1826 0 R (HD.1088) 1827 0 R (HD.1089) 1828 0 R (HD.109) 752 0 R (HD.1090) 1829 0 R (HD.1091) 1830 0 R (HD.1092) 1831 0 R (HD.1093) 1832 0 R (HD.1094) 1833 0 R (HD.1095) 1834 0 R (HD.1096) 1835 0 R (HD.1097) 1836 0 R (HD.1098) 1837 0 R (HD.1099) 1838 0 R (HD.11) 646 0 R (HD.110) 753 0 R (HD.1100) 1839 0 R (HD.1101) 1840 0 R (HD.1102) 1841 0 R (HD.1103) 1842 0 R (HD.1104) 1843 0 R (HD.1105) 1844 0 R (HD.1106) 1849 0 R (HD.1107) 1850 0 R (HD.1108) 1851 0 R (HD.1109) 1852 0 R (HD.111) 754 0 R (HD.1110) 1853 0 R (HD.1111) 1854 0 R ] /Limits [ (HD.1084) (HD.1111) ] >> +4897 0 obj +<< /Names [ (HD.1084) 1856 0 R (HD.1085) 1857 0 R (HD.1086) 1858 0 R (HD.1087) 1859 0 R (HD.1088) 1860 0 R (HD.1089) 1861 0 R (HD.109) 781 0 R (HD.1090) 1862 0 R (HD.1091) 1863 0 R (HD.1092) 1864 0 R (HD.1093) 1865 0 R (HD.1094) 1866 0 R (HD.1095) 1867 0 R (HD.1096) 1868 0 R (HD.1097) 1869 0 R (HD.1098) 1870 0 R (HD.1099) 1871 0 R (HD.11) 675 0 R (HD.110) 782 0 R (HD.1100) 1872 0 R (HD.1101) 1873 0 R (HD.1102) 1874 0 R (HD.1103) 1875 0 R (HD.1104) 1876 0 R (HD.1105) 1877 0 R (HD.1106) 1878 0 R (HD.1107) 1879 0 R (HD.1108) 1880 0 R (HD.1109) 1881 0 R (HD.111) 783 0 R (HD.1110) 1882 0 R (HD.1111) 1883 0 R ] /Limits [ (HD.1084) (HD.1111) ] >> endobj -4536 0 obj -<< /Names [ (HD.1112) 1855 0 R (HD.1113) 1856 0 R (HD.1114) 1857 0 R (HD.1115) 1858 0 R (HD.1116) 1859 0 R (HD.1117) 1860 0 R (HD.1118) 1861 0 R (HD.1119) 1862 0 R (HD.112) 755 0 R (HD.1120) 1863 0 R (HD.1121) 1864 0 R (HD.1122) 1865 0 R (HD.1123) 1866 0 R (HD.1124) 1867 0 R (HD.1125) 1868 0 R (HD.1126) 1869 0 R (HD.1127) 1870 0 R (HD.1128) 1871 0 R (HD.1129) 1872 0 R (HD.113) 756 0 R (HD.1130) 1873 0 R (HD.1131) 1874 0 R (HD.1132) 1875 0 R (HD.1133) 1876 0 R (HD.1134) 1877 0 R (HD.1135) 1878 0 R (HD.1136) 1879 0 R (HD.1137) 1880 0 R (HD.1138) 1881 0 R (HD.1139) 1882 0 R (HD.114) 757 0 R (HD.1140) 1883 0 R ] /Limits [ (HD.1112) (HD.1140) ] >> +4898 0 obj +<< /Names [ (HD.1112) 1884 0 R (HD.1113) 1885 0 R (HD.1114) 1886 0 R (HD.1115) 1887 0 R (HD.1116) 1888 0 R (HD.1117) 1889 0 R (HD.1118) 1890 0 R (HD.1119) 1891 0 R (HD.112) 784 0 R (HD.1120) 1892 0 R (HD.1121) 1893 0 R (HD.1122) 1894 0 R (HD.1123) 1895 0 R (HD.1124) 1896 0 R (HD.1125) 1897 0 R (HD.1126) 1898 0 R (HD.1127) 1899 0 R (HD.1128) 1900 0 R (HD.1129) 1905 0 R (HD.113) 785 0 R (HD.1130) 1906 0 R (HD.1131) 1907 0 R (HD.1132) 1908 0 R (HD.1133) 1909 0 R (HD.1134) 1910 0 R (HD.1135) 1911 0 R (HD.1136) 1912 0 R (HD.1137) 1913 0 R (HD.1138) 1914 0 R (HD.1139) 1915 0 R (HD.114) 786 0 R (HD.1140) 1916 0 R ] /Limits [ (HD.1112) (HD.1140) ] >> endobj -4537 0 obj -<< /Names [ (HD.1141) 1884 0 R (HD.1142) 1885 0 R (HD.1143) 1886 0 R (HD.1144) 1887 0 R (HD.1145) 1888 0 R (HD.1146) 1893 0 R (HD.1147) 1894 0 R (HD.1148) 1895 0 R (HD.1149) 1896 0 R (HD.115) 758 0 R (HD.1150) 1897 0 R (HD.1151) 1898 0 R (HD.1152) 1899 0 R (HD.1153) 1900 0 R (HD.1154) 1901 0 R (HD.1155) 1902 0 R (HD.1156) 1903 0 R (HD.1157) 1904 0 R (HD.1158) 1905 0 R (HD.1159) 1906 0 R (HD.116) 759 0 R (HD.1160) 1907 0 R (HD.1161) 1908 0 R (HD.1162) 1909 0 R (HD.1163) 1910 0 R (HD.1164) 1911 0 R (HD.1165) 1912 0 R (HD.1166) 1913 0 R (HD.1167) 1914 0 R (HD.1168) 1915 0 R (HD.1169) 1916 0 R (HD.117) 760 0 R ] /Limits [ (HD.1141) (HD.117) ] >> +4899 0 obj +<< /Names [ (HD.1141) 1917 0 R (HD.1142) 1918 0 R (HD.1143) 1919 0 R (HD.1144) 1920 0 R (HD.1145) 1921 0 R (HD.1146) 1922 0 R (HD.1147) 1923 0 R (HD.1148) 1924 0 R (HD.1149) 1925 0 R (HD.115) 787 0 R (HD.1150) 1926 0 R (HD.1151) 1927 0 R (HD.1152) 1928 0 R (HD.1153) 1929 0 R (HD.1154) 1930 0 R (HD.1155) 1931 0 R (HD.1156) 1932 0 R (HD.1157) 1933 0 R (HD.1158) 1934 0 R (HD.1159) 1935 0 R (HD.116) 788 0 R (HD.1160) 1936 0 R (HD.1161) 1937 0 R (HD.1162) 1938 0 R (HD.1163) 1939 0 R (HD.1164) 1940 0 R (HD.1165) 1941 0 R (HD.1166) 1942 0 R (HD.1167) 1943 0 R (HD.1168) 1944 0 R (HD.1169) 1945 0 R (HD.117) 789 0 R ] /Limits [ (HD.1141) (HD.117) ] >> endobj -4538 0 obj -<< /Names [ (HD.1170) 1917 0 R (HD.1171) 1918 0 R (HD.1172) 1919 0 R (HD.1173) 1920 0 R (HD.1174) 1921 0 R (HD.1175) 1922 0 R (HD.1176) 1923 0 R (HD.1177) 1924 0 R (HD.1178) 1925 0 R (HD.1179) 1926 0 R (HD.118) 761 0 R (HD.1180) 1927 0 R (HD.1181) 1928 0 R (HD.1182) 1929 0 R (HD.1183) 1930 0 R (HD.1184) 1931 0 R (HD.1185) 1932 0 R (HD.1186) 1933 0 R (HD.1187) 1934 0 R (HD.1188) 1935 0 R (HD.1189) 1936 0 R (HD.119) 762 0 R (HD.1190) 1937 0 R (HD.1191) 1938 0 R (HD.1192) 1939 0 R (HD.1193) 1940 0 R (HD.1194) 1941 0 R (HD.1195) 1942 0 R (HD.1196) 1943 0 R (HD.1197) 1944 0 R (HD.1198) 1945 0 R (HD.1199) 1946 0 R ] /Limits [ (HD.1170) (HD.1199) ] >> +4900 0 obj +<< /Names [ (HD.1170) 1946 0 R (HD.1171) 1947 0 R (HD.1172) 1952 0 R (HD.1173) 1953 0 R (HD.1174) 1954 0 R (HD.1175) 1955 0 R (HD.1176) 1956 0 R (HD.1177) 1957 0 R (HD.1178) 1958 0 R (HD.1179) 1959 0 R (HD.118) 790 0 R (HD.1180) 1960 0 R (HD.1181) 1961 0 R (HD.1182) 1962 0 R (HD.1183) 1963 0 R (HD.1184) 1964 0 R (HD.1185) 1965 0 R (HD.1186) 1966 0 R (HD.1187) 1967 0 R (HD.1188) 1968 0 R (HD.1189) 1969 0 R (HD.119) 791 0 R (HD.1190) 1970 0 R (HD.1191) 1971 0 R (HD.1192) 1972 0 R (HD.1193) 1973 0 R (HD.1194) 1974 0 R (HD.1195) 1975 0 R (HD.1196) 1976 0 R (HD.1197) 1977 0 R (HD.1198) 1978 0 R (HD.1199) 1979 0 R ] /Limits [ (HD.1170) (HD.1199) ] >> endobj -4539 0 obj -<< /Names [ (HD.12) 647 0 R (HD.120) 763 0 R (HD.1200) 1947 0 R (HD.1201) 1948 0 R (HD.1202) 1949 0 R (HD.1203) 1950 0 R (HD.1204) 1951 0 R (HD.1205) 1956 0 R (HD.1206) 1957 0 R (HD.1207) 1958 0 R (HD.1208) 1959 0 R (HD.1209) 1960 0 R (HD.121) 764 0 R (HD.1210) 1961 0 R (HD.1211) 1962 0 R (HD.1212) 1963 0 R (HD.1213) 1964 0 R (HD.1214) 1965 0 R (HD.1215) 1966 0 R (HD.1216) 1967 0 R (HD.1217) 1968 0 R (HD.1218) 1969 0 R (HD.1219) 1970 0 R (HD.122) 765 0 R (HD.1220) 1971 0 R (HD.1221) 1972 0 R (HD.1222) 1973 0 R (HD.1223) 1974 0 R (HD.1224) 1975 0 R (HD.1225) 1976 0 R (HD.1226) 1977 0 R (HD.1227) 1978 0 R ] /Limits [ (HD.12) (HD.1227) ] >> +4901 0 obj +<< /Names [ (HD.12) 676 0 R (HD.120) 792 0 R (HD.1200) 1980 0 R (HD.1201) 1981 0 R (HD.1202) 1982 0 R (HD.1203) 1983 0 R (HD.1204) 1984 0 R (HD.1205) 1985 0 R (HD.1206) 1986 0 R (HD.1207) 1987 0 R (HD.1208) 1988 0 R (HD.1209) 1989 0 R (HD.121) 793 0 R (HD.1210) 1990 0 R (HD.1211) 1991 0 R (HD.1212) 1992 0 R (HD.1213) 1993 0 R (HD.1214) 1994 0 R (HD.1215) 1995 0 R (HD.1216) 1996 0 R (HD.1217) 1997 0 R (HD.1218) 1998 0 R (HD.1219) 1999 0 R (HD.122) 794 0 R (HD.1220) 2000 0 R (HD.1221) 2001 0 R (HD.1222) 2002 0 R (HD.1223) 2003 0 R (HD.1224) 2004 0 R (HD.1225) 2005 0 R (HD.1226) 2006 0 R (HD.1227) 2007 0 R ] /Limits [ (HD.12) (HD.1227) ] >> endobj -4540 0 obj -<< /Names [ (HD.1228) 1979 0 R (HD.1229) 1980 0 R (HD.123) 766 0 R (HD.1230) 1981 0 R (HD.1231) 1982 0 R (HD.1232) 1983 0 R (HD.1233) 1984 0 R (HD.1234) 1985 0 R (HD.1235) 1986 0 R (HD.1236) 1987 0 R (HD.1237) 1988 0 R (HD.1238) 1989 0 R (HD.1239) 1990 0 R (HD.124) 767 0 R (HD.1240) 1991 0 R (HD.1241) 1992 0 R (HD.1242) 1993 0 R (HD.1243) 1994 0 R (HD.1244) 1995 0 R (HD.1245) 1996 0 R (HD.1246) 1997 0 R (HD.1247) 1998 0 R (HD.1248) 1999 0 R (HD.1249) 2000 0 R (HD.125) 768 0 R (HD.1250) 2001 0 R (HD.1251) 2002 0 R (HD.1252) 2003 0 R (HD.1253) 2004 0 R (HD.1254) 2005 0 R (HD.1255) 2006 0 R (HD.1256) 2011 0 R ] /Limits [ (HD.1228) (HD.1256) ] >> +4902 0 obj +<< /Names [ (HD.1228) 2008 0 R (HD.1229) 2009 0 R (HD.123) 795 0 R (HD.1230) 2010 0 R (HD.1231) 2011 0 R (HD.1232) 2016 0 R (HD.1233) 2017 0 R (HD.1234) 2018 0 R (HD.1235) 2019 0 R (HD.1236) 2020 0 R (HD.1237) 2021 0 R (HD.1238) 2022 0 R (HD.1239) 2023 0 R (HD.124) 796 0 R (HD.1240) 2024 0 R (HD.1241) 2025 0 R (HD.1242) 2026 0 R (HD.1243) 2027 0 R (HD.1244) 2028 0 R (HD.1245) 2029 0 R (HD.1246) 2030 0 R (HD.1247) 2031 0 R (HD.1248) 2032 0 R (HD.1249) 2033 0 R (HD.125) 797 0 R (HD.1250) 2034 0 R (HD.1251) 2035 0 R (HD.1252) 2036 0 R (HD.1253) 2037 0 R (HD.1254) 2038 0 R (HD.1255) 2039 0 R (HD.1256) 2040 0 R ] /Limits [ (HD.1228) (HD.1256) ] >> endobj -4541 0 obj -<< /Names [ (HD.1257) 2012 0 R (HD.1258) 2013 0 R (HD.1259) 2014 0 R (HD.126) 769 0 R (HD.1260) 2015 0 R (HD.1261) 2016 0 R (HD.1262) 2017 0 R (HD.1263) 2018 0 R (HD.1264) 2019 0 R (HD.1265) 2020 0 R (HD.1266) 2021 0 R (HD.1267) 2022 0 R (HD.1268) 2023 0 R (HD.1269) 2024 0 R (HD.127) 770 0 R (HD.1270) 2025 0 R (HD.1271) 2026 0 R (HD.1272) 2027 0 R (HD.1273) 2028 0 R (HD.1274) 2029 0 R (HD.1275) 2030 0 R (HD.1276) 2031 0 R (HD.1277) 2032 0 R (HD.1278) 2033 0 R (HD.1279) 2034 0 R (HD.128) 771 0 R (HD.1280) 2035 0 R (HD.1281) 2036 0 R (HD.1282) 2037 0 R (HD.1283) 2038 0 R (HD.1284) 2039 0 R (HD.1285) 2040 0 R ] /Limits [ (HD.1257) (HD.1285) ] >> +4903 0 obj +<< /Names [ (HD.1257) 2041 0 R (HD.1258) 2042 0 R (HD.1259) 2043 0 R (HD.126) 802 0 R (HD.1260) 2044 0 R (HD.1261) 2045 0 R (HD.1262) 2046 0 R (HD.1263) 2047 0 R (HD.1264) 2048 0 R (HD.1265) 2049 0 R (HD.1266) 2050 0 R (HD.1267) 2051 0 R (HD.1268) 2052 0 R (HD.1269) 2053 0 R (HD.127) 803 0 R (HD.1270) 2054 0 R (HD.1271) 2055 0 R (HD.1272) 2056 0 R (HD.1273) 2057 0 R (HD.1274) 2058 0 R (HD.1275) 2059 0 R (HD.1276) 2060 0 R (HD.1277) 2061 0 R (HD.1278) 2062 0 R (HD.1279) 2068 0 R (HD.128) 804 0 R (HD.1280) 2069 0 R (HD.1281) 2070 0 R (HD.1282) 2071 0 R (HD.1283) 2072 0 R (HD.1284) 2073 0 R (HD.1285) 2074 0 R ] /Limits [ (HD.1257) (HD.1285) ] >> endobj -4542 0 obj -<< /Names [ (HD.1286) 2041 0 R (HD.1287) 2042 0 R (HD.1288) 2043 0 R (HD.1289) 2044 0 R (HD.129) 772 0 R (HD.1290) 2045 0 R (HD.1291) 2046 0 R (HD.1292) 2047 0 R (HD.1293) 2048 0 R (HD.1294) 2049 0 R (HD.1295) 2050 0 R (HD.1296) 2051 0 R (HD.1297) 2052 0 R (HD.1298) 2053 0 R (HD.1299) 2054 0 R (HD.13) 648 0 R (HD.130) 773 0 R (HD.1300) 2059 0 R (HD.1301) 2060 0 R (HD.1302) 2061 0 R (HD.1303) 2062 0 R (HD.1304) 2063 0 R (HD.1305) 2064 0 R (HD.1306) 2065 0 R (HD.1307) 2066 0 R (HD.1308) 2067 0 R (HD.1309) 2068 0 R (HD.131) 774 0 R (HD.1310) 2069 0 R (HD.1311) 2070 0 R (HD.1312) 2071 0 R (HD.1313) 2072 0 R ] /Limits [ (HD.1286) (HD.1313) ] >> +4904 0 obj +<< /Names [ (HD.1286) 2075 0 R (HD.1287) 2076 0 R (HD.1288) 2077 0 R (HD.1289) 2078 0 R (HD.129) 805 0 R (HD.1290) 2079 0 R (HD.1291) 2080 0 R (HD.1292) 2081 0 R (HD.1293) 2082 0 R (HD.1294) 2083 0 R (HD.1295) 2084 0 R (HD.1296) 2085 0 R (HD.1297) 2086 0 R (HD.1298) 2087 0 R (HD.1299) 2088 0 R (HD.13) 677 0 R (HD.130) 806 0 R (HD.1300) 2089 0 R (HD.1301) 2090 0 R (HD.1302) 2091 0 R (HD.1303) 2092 0 R (HD.1304) 2093 0 R (HD.1305) 2094 0 R (HD.1306) 2095 0 R (HD.1307) 2096 0 R (HD.1308) 2097 0 R (HD.1309) 2098 0 R (HD.131) 807 0 R (HD.1310) 2099 0 R (HD.1311) 2100 0 R (HD.1312) 2101 0 R (HD.1313) 2102 0 R ] /Limits [ (HD.1286) (HD.1313) ] >> endobj -4543 0 obj -<< /Names [ (HD.1314) 2073 0 R (HD.1315) 2074 0 R (HD.1316) 2075 0 R (HD.1317) 2076 0 R (HD.1318) 2077 0 R (HD.1319) 2078 0 R (HD.132) 775 0 R (HD.1320) 2079 0 R (HD.1321) 2080 0 R (HD.1322) 2081 0 R (HD.1323) 2082 0 R (HD.1324) 2083 0 R (HD.1325) 2084 0 R (HD.1326) 2085 0 R (HD.1327) 2086 0 R (HD.1328) 2087 0 R (HD.1329) 2088 0 R (HD.133) 776 0 R (HD.1330) 2089 0 R (HD.1331) 2090 0 R (HD.1332) 2091 0 R (HD.1333) 2092 0 R (HD.1334) 2093 0 R (HD.1335) 2094 0 R (HD.1336) 2095 0 R (HD.1337) 2096 0 R (HD.1338) 2097 0 R (HD.1339) 2098 0 R (HD.134) 777 0 R (HD.1340) 2104 0 R (HD.1341) 2105 0 R (HD.1342) 2106 0 R ] /Limits [ (HD.1314) (HD.1342) ] >> +4905 0 obj +<< /Names [ (HD.1314) 2103 0 R (HD.1315) 2104 0 R (HD.1316) 2105 0 R (HD.1317) 2106 0 R (HD.1318) 2107 0 R (HD.1319) 2108 0 R (HD.132) 808 0 R (HD.1320) 2109 0 R (HD.1321) 2110 0 R (HD.1322) 2111 0 R (HD.1323) 2112 0 R (HD.1324) 2117 0 R (HD.1325) 2118 0 R (HD.1326) 2119 0 R (HD.1327) 2120 0 R (HD.1328) 2121 0 R (HD.1329) 2122 0 R (HD.133) 809 0 R (HD.1330) 2123 0 R (HD.1331) 2124 0 R (HD.1332) 2125 0 R (HD.1333) 2126 0 R (HD.1334) 2127 0 R (HD.1335) 2128 0 R (HD.1336) 2129 0 R (HD.1337) 2130 0 R (HD.1338) 2131 0 R (HD.1339) 2132 0 R (HD.134) 810 0 R (HD.1340) 2133 0 R (HD.1341) 2134 0 R (HD.1342) 2135 0 R ] /Limits [ (HD.1314) (HD.1342) ] >> endobj -4544 0 obj -<< /Names [ (HD.1343) 2107 0 R (HD.1344) 2108 0 R (HD.1345) 2109 0 R (HD.1346) 2110 0 R (HD.1347) 2111 0 R (HD.1348) 2112 0 R (HD.1349) 2113 0 R (HD.135) 782 0 R (HD.1350) 2114 0 R (HD.1351) 2115 0 R (HD.1352) 2116 0 R (HD.1353) 2117 0 R (HD.1354) 2118 0 R (HD.1355) 2119 0 R (HD.1356) 2120 0 R (HD.1357) 2121 0 R (HD.1358) 2122 0 R (HD.1359) 2123 0 R (HD.136) 783 0 R (HD.1360) 2124 0 R (HD.1361) 2125 0 R (HD.1362) 2126 0 R (HD.1363) 2127 0 R (HD.1364) 2128 0 R (HD.1365) 2129 0 R (HD.1366) 2130 0 R (HD.1367) 2131 0 R (HD.1368) 2132 0 R (HD.1369) 2133 0 R (HD.137) 784 0 R (HD.1370) 2134 0 R (HD.1371) 2135 0 R ] /Limits [ (HD.1343) (HD.1371) ] >> +4906 0 obj +<< /Names [ (HD.1343) 2136 0 R (HD.1344) 2137 0 R (HD.1345) 2138 0 R (HD.1346) 2139 0 R (HD.1347) 2140 0 R (HD.1348) 2141 0 R (HD.1349) 2142 0 R (HD.135) 811 0 R (HD.1350) 2143 0 R (HD.1351) 2144 0 R (HD.1352) 2145 0 R (HD.1353) 2146 0 R (HD.1354) 2147 0 R (HD.1355) 2148 0 R (HD.1356) 2149 0 R (HD.1357) 2150 0 R (HD.1358) 2151 0 R (HD.1359) 2152 0 R (HD.136) 812 0 R (HD.1360) 2153 0 R (HD.1361) 2154 0 R (HD.1362) 2155 0 R (HD.1363) 2156 0 R (HD.1364) 2161 0 R (HD.1365) 2162 0 R (HD.1366) 2163 0 R (HD.1367) 2164 0 R (HD.1368) 2165 0 R (HD.1369) 2166 0 R (HD.137) 813 0 R (HD.1370) 2167 0 R (HD.1371) 2168 0 R ] /Limits [ (HD.1343) (HD.1371) ] >> endobj -4545 0 obj -<< /Names [ (HD.1372) 2136 0 R (HD.1373) 2137 0 R (HD.1374) 2138 0 R (HD.1375) 2139 0 R (HD.1376) 2140 0 R (HD.1377) 2141 0 R (HD.1378) 2142 0 R (HD.1379) 2143 0 R (HD.138) 785 0 R (HD.1380) 2144 0 R (HD.1381) 2145 0 R (HD.1382) 2146 0 R (HD.1383) 2147 0 R (HD.1384) 2148 0 R (HD.1385) 2149 0 R (HD.1386) 2150 0 R (HD.1387) 2151 0 R (HD.1388) 2152 0 R (HD.1389) 2153 0 R (HD.139) 786 0 R (HD.1390) 2154 0 R (HD.1391) 2155 0 R (HD.1392) 2156 0 R (HD.1393) 2157 0 R (HD.1394) 2158 0 R (HD.1395) 2163 0 R (HD.1396) 2164 0 R (HD.1397) 2165 0 R (HD.1398) 2166 0 R (HD.1399) 2167 0 R (HD.14) 649 0 R (HD.140) 787 0 R ] /Limits [ (HD.1372) (HD.140) ] >> +4907 0 obj +<< /Names [ (HD.1372) 2169 0 R (HD.1373) 2170 0 R (HD.1374) 2171 0 R (HD.1375) 2172 0 R (HD.1376) 2173 0 R (HD.1377) 2174 0 R (HD.1378) 2175 0 R (HD.1379) 2176 0 R (HD.138) 814 0 R (HD.1380) 2177 0 R (HD.1381) 2178 0 R (HD.1382) 2179 0 R (HD.1383) 2180 0 R (HD.1384) 2181 0 R (HD.1385) 2182 0 R (HD.1386) 2183 0 R (HD.1387) 2184 0 R (HD.1388) 2185 0 R (HD.1389) 2186 0 R (HD.139) 815 0 R (HD.1390) 2187 0 R (HD.1391) 2188 0 R (HD.1392) 2189 0 R (HD.1393) 2190 0 R (HD.1394) 2191 0 R (HD.1395) 2192 0 R (HD.1396) 2193 0 R (HD.1397) 2194 0 R (HD.1398) 2195 0 R (HD.1399) 2196 0 R (HD.14) 678 0 R (HD.140) 816 0 R ] /Limits [ (HD.1372) (HD.140) ] >> endobj -4546 0 obj -<< /Names [ (HD.1400) 2168 0 R (HD.1401) 2169 0 R (HD.1402) 2170 0 R (HD.1403) 2171 0 R (HD.1404) 2172 0 R (HD.1405) 2173 0 R (HD.1406) 2174 0 R (HD.1407) 2175 0 R (HD.1408) 2176 0 R (HD.1409) 2177 0 R (HD.141) 788 0 R (HD.1410) 2178 0 R (HD.1411) 2179 0 R (HD.1412) 2180 0 R (HD.1413) 2181 0 R (HD.1414) 2182 0 R (HD.1415) 2183 0 R (HD.1416) 2184 0 R (HD.1417) 2185 0 R (HD.1418) 2186 0 R (HD.1419) 2187 0 R (HD.142) 789 0 R (HD.1420) 2188 0 R (HD.1421) 2189 0 R (HD.1422) 2190 0 R (HD.1423) 2191 0 R (HD.1424) 2192 0 R (HD.1425) 2193 0 R (HD.1426) 2194 0 R (HD.1427) 2195 0 R (HD.1428) 2196 0 R (HD.1429) 2197 0 R ] /Limits [ (HD.1400) (HD.1429) ] >> +4908 0 obj +<< /Names [ (HD.1400) 2197 0 R (HD.1401) 2198 0 R (HD.1402) 2199 0 R (HD.1403) 2200 0 R (HD.1404) 2201 0 R (HD.1405) 2202 0 R (HD.1406) 2203 0 R (HD.1407) 2204 0 R (HD.1408) 2205 0 R (HD.1409) 2206 0 R (HD.141) 817 0 R (HD.1410) 2207 0 R (HD.1411) 2208 0 R (HD.1412) 2209 0 R (HD.1413) 2210 0 R (HD.1414) 2211 0 R (HD.1415) 2212 0 R (HD.1416) 2213 0 R (HD.1417) 2218 0 R (HD.1418) 2219 0 R (HD.1419) 2220 0 R (HD.142) 818 0 R (HD.1420) 2221 0 R (HD.1421) 2222 0 R (HD.1422) 2223 0 R (HD.1423) 2224 0 R (HD.1424) 2225 0 R (HD.1425) 2226 0 R (HD.1426) 2227 0 R (HD.1427) 2228 0 R (HD.1428) 2229 0 R (HD.1429) 2230 0 R ] /Limits [ (HD.1400) (HD.1429) ] >> endobj -4547 0 obj -<< /Names [ (HD.143) 790 0 R (HD.1430) 2198 0 R (HD.1431) 2199 0 R (HD.1432) 2200 0 R (HD.1433) 2201 0 R (HD.1434) 2202 0 R (HD.1435) 2203 0 R (HD.1436) 2204 0 R (HD.1437) 2205 0 R (HD.1438) 2206 0 R (HD.1439) 2207 0 R (HD.144) 791 0 R (HD.1440) 2208 0 R (HD.1441) 2209 0 R (HD.1442) 2210 0 R (HD.1443) 2211 0 R (HD.1444) 2212 0 R (HD.1445) 2213 0 R (HD.1446) 2214 0 R (HD.1447) 2215 0 R (HD.1448) 2216 0 R (HD.1449) 2217 0 R (HD.145) 792 0 R (HD.1450) 2218 0 R (HD.1451) 2219 0 R (HD.1452) 2220 0 R (HD.1453) 2221 0 R (HD.1454) 2222 0 R (HD.1455) 2223 0 R (HD.1456) 2228 0 R (HD.1457) 2229 0 R (HD.1458) 2230 0 R ] /Limits [ (HD.143) (HD.1458) ] >> +4909 0 obj +<< /Names [ (HD.143) 819 0 R (HD.1430) 2231 0 R (HD.1431) 2232 0 R (HD.1432) 2233 0 R (HD.1433) 2234 0 R (HD.1434) 2235 0 R (HD.1435) 2236 0 R (HD.1436) 2237 0 R (HD.1437) 2238 0 R (HD.1438) 2239 0 R (HD.1439) 2240 0 R (HD.144) 820 0 R (HD.1440) 2241 0 R (HD.1441) 2242 0 R (HD.1442) 2243 0 R (HD.1443) 2244 0 R (HD.1444) 2245 0 R (HD.1445) 2246 0 R (HD.1446) 2247 0 R (HD.1447) 2248 0 R (HD.1448) 2249 0 R (HD.1449) 2250 0 R (HD.145) 821 0 R (HD.1450) 2251 0 R (HD.1451) 2252 0 R (HD.1452) 2253 0 R (HD.1453) 2254 0 R (HD.1454) 2255 0 R (HD.1455) 2256 0 R (HD.1456) 2257 0 R (HD.1457) 2258 0 R (HD.1458) 2259 0 R ] /Limits [ (HD.143) (HD.1458) ] >> endobj -4548 0 obj -<< /Names [ (HD.1459) 2231 0 R (HD.146) 793 0 R (HD.1460) 2232 0 R (HD.1461) 2233 0 R (HD.1462) 2234 0 R (HD.1463) 2235 0 R (HD.1464) 2236 0 R (HD.1465) 2237 0 R (HD.1466) 2238 0 R (HD.1467) 2239 0 R (HD.1468) 2240 0 R (HD.1469) 2241 0 R (HD.147) 794 0 R (HD.1470) 2242 0 R (HD.1471) 2243 0 R (HD.1472) 2244 0 R (HD.1473) 2245 0 R (HD.1474) 2246 0 R (HD.1475) 2247 0 R (HD.1476) 2248 0 R (HD.1477) 2249 0 R (HD.1478) 2250 0 R (HD.1479) 2251 0 R (HD.148) 795 0 R (HD.1480) 2252 0 R (HD.1481) 2253 0 R (HD.1482) 2254 0 R (HD.1483) 2255 0 R (HD.1484) 2256 0 R (HD.1485) 2257 0 R (HD.1486) 2258 0 R (HD.1487) 2259 0 R ] /Limits [ (HD.1459) (HD.1487) ] >> +4910 0 obj +<< /Names [ (HD.1459) 2260 0 R (HD.146) 822 0 R (HD.1460) 2261 0 R (HD.1461) 2262 0 R (HD.1462) 2263 0 R (HD.1463) 2264 0 R (HD.1464) 2265 0 R (HD.1465) 2266 0 R (HD.1466) 2267 0 R (HD.1467) 2268 0 R (HD.1468) 2269 0 R (HD.1469) 2270 0 R (HD.147) 823 0 R (HD.1470) 2271 0 R (HD.1471) 2272 0 R (HD.1472) 2273 0 R (HD.1473) 2274 0 R (HD.1474) 2279 0 R (HD.1475) 2280 0 R (HD.1476) 2281 0 R (HD.1477) 2282 0 R (HD.1478) 2283 0 R (HD.1479) 2284 0 R (HD.148) 824 0 R (HD.1480) 2285 0 R (HD.1481) 2286 0 R (HD.1482) 2287 0 R (HD.1483) 2288 0 R (HD.1484) 2289 0 R (HD.1485) 2290 0 R (HD.1486) 2291 0 R (HD.1487) 2292 0 R ] /Limits [ (HD.1459) (HD.1487) ] >> endobj -4549 0 obj -<< /Names [ (HD.1488) 2260 0 R (HD.1489) 2261 0 R (HD.149) 796 0 R (HD.1490) 2262 0 R (HD.1491) 2263 0 R (HD.1492) 2264 0 R (HD.1493) 2265 0 R (HD.1494) 2266 0 R (HD.1495) 2267 0 R (HD.1496) 2268 0 R (HD.1497) 2269 0 R (HD.1498) 2270 0 R (HD.1499) 2271 0 R (HD.15) 650 0 R (HD.150) 797 0 R (HD.1500) 2272 0 R (HD.1501) 2273 0 R (HD.1502) 2274 0 R (HD.1503) 2275 0 R (HD.1504) 2276 0 R (HD.1505) 2277 0 R (HD.1506) 2278 0 R (HD.1507) 2279 0 R (HD.1508) 2280 0 R (HD.1509) 2281 0 R (HD.151) 798 0 R (HD.1510) 2286 0 R (HD.1511) 2287 0 R (HD.1512) 2288 0 R (HD.1513) 2289 0 R (HD.1514) 2290 0 R (HD.1515) 2291 0 R ] /Limits [ (HD.1488) (HD.1515) ] >> +4911 0 obj +<< /Names [ (HD.1488) 2293 0 R (HD.1489) 2294 0 R (HD.149) 825 0 R (HD.1490) 2295 0 R (HD.1491) 2296 0 R (HD.1492) 2297 0 R (HD.1493) 2298 0 R (HD.1494) 2299 0 R (HD.1495) 2300 0 R (HD.1496) 2301 0 R (HD.1497) 2302 0 R (HD.1498) 2303 0 R (HD.1499) 2304 0 R (HD.15) 679 0 R (HD.150) 826 0 R (HD.1500) 2305 0 R (HD.1501) 2306 0 R (HD.1502) 2307 0 R (HD.1503) 2308 0 R (HD.1504) 2309 0 R (HD.1505) 2310 0 R (HD.1506) 2311 0 R (HD.1507) 2312 0 R (HD.1508) 2313 0 R (HD.1509) 2314 0 R (HD.151) 827 0 R (HD.1510) 2315 0 R (HD.1511) 2316 0 R (HD.1512) 2317 0 R (HD.1513) 2318 0 R (HD.1514) 2319 0 R (HD.1515) 2320 0 R ] /Limits [ (HD.1488) (HD.1515) ] >> endobj -4550 0 obj -<< /Names [ (HD.1516) 2292 0 R (HD.1517) 2293 0 R (HD.1518) 2294 0 R (HD.1519) 2295 0 R (HD.152) 799 0 R (HD.1520) 2296 0 R (HD.1521) 2297 0 R (HD.1522) 2298 0 R (HD.1523) 2299 0 R (HD.1524) 2300 0 R (HD.1525) 2301 0 R (HD.1526) 2302 0 R (HD.1527) 2303 0 R (HD.1528) 2304 0 R (HD.1529) 2305 0 R (HD.153) 800 0 R (HD.1530) 2306 0 R (HD.1531) 2307 0 R (HD.1532) 2308 0 R (HD.1533) 2309 0 R (HD.1534) 2310 0 R (HD.1535) 2311 0 R (HD.1536) 2312 0 R (HD.1537) 2314 0 R (HD.1538) 2315 0 R (HD.1539) 2316 0 R (HD.154) 801 0 R (HD.1540) 2317 0 R (HD.1541) 2318 0 R (HD.1542) 2319 0 R (HD.1543) 2320 0 R (HD.1544) 2321 0 R ] /Limits [ (HD.1516) (HD.1544) ] >> +4912 0 obj +<< /Names [ (HD.1516) 2321 0 R (HD.1517) 2322 0 R (HD.1518) 2323 0 R (HD.1519) 2324 0 R (HD.152) 828 0 R (HD.1520) 2325 0 R (HD.1521) 2326 0 R (HD.1522) 2327 0 R (HD.1523) 2328 0 R (HD.1524) 2329 0 R (HD.1525) 2330 0 R (HD.1526) 2331 0 R (HD.1527) 2332 0 R (HD.1528) 2333 0 R (HD.1529) 2334 0 R (HD.153) 829 0 R (HD.1530) 2335 0 R (HD.1531) 2336 0 R (HD.1532) 2337 0 R (HD.1533) 2342 0 R (HD.1534) 2343 0 R (HD.1535) 2344 0 R (HD.1536) 2345 0 R (HD.1537) 2346 0 R (HD.1538) 2347 0 R (HD.1539) 2348 0 R (HD.154) 830 0 R (HD.1540) 2349 0 R (HD.1541) 2350 0 R (HD.1542) 2351 0 R (HD.1543) 2352 0 R (HD.1544) 2353 0 R ] /Limits [ (HD.1516) (HD.1544) ] >> endobj -4551 0 obj -<< /Names [ (HD.1545) 2322 0 R (HD.1546) 2323 0 R (HD.1547) 2324 0 R (HD.1548) 2325 0 R (HD.1549) 2326 0 R (HD.155) 802 0 R (HD.1550) 2327 0 R (HD.1551) 2328 0 R (HD.1552) 2329 0 R (HD.1553) 2330 0 R (HD.1554) 2331 0 R (HD.1555) 2332 0 R (HD.1556) 2333 0 R (HD.1557) 2338 0 R (HD.1558) 2339 0 R (HD.1559) 2340 0 R (HD.156) 803 0 R (HD.1560) 2341 0 R (HD.1561) 2342 0 R (HD.1562) 2343 0 R (HD.1563) 2344 0 R (HD.1564) 2345 0 R (HD.1565) 2346 0 R (HD.1566) 2347 0 R (HD.1567) 2348 0 R (HD.1568) 2349 0 R (HD.1569) 2350 0 R (HD.157) 804 0 R (HD.1570) 2351 0 R (HD.1571) 2352 0 R (HD.1572) 2353 0 R (HD.1573) 2354 0 R ] /Limits [ (HD.1545) (HD.1573) ] >> +4913 0 obj +<< /Names [ (HD.1545) 2354 0 R (HD.1546) 2355 0 R (HD.1547) 2356 0 R (HD.1548) 2357 0 R (HD.1549) 2358 0 R (HD.155) 831 0 R (HD.1550) 2359 0 R (HD.1551) 2360 0 R (HD.1552) 2361 0 R (HD.1553) 2362 0 R (HD.1554) 2363 0 R (HD.1555) 2364 0 R (HD.1556) 2365 0 R (HD.1557) 2366 0 R (HD.1558) 2367 0 R (HD.1559) 2368 0 R (HD.156) 832 0 R (HD.1560) 2369 0 R (HD.1561) 2370 0 R (HD.1562) 2371 0 R (HD.1563) 2372 0 R (HD.1564) 2373 0 R (HD.1565) 2374 0 R (HD.1566) 2375 0 R (HD.1567) 2376 0 R (HD.1568) 2377 0 R (HD.1569) 2378 0 R (HD.157) 833 0 R (HD.1570) 2379 0 R (HD.1571) 2380 0 R (HD.1572) 2381 0 R (HD.1573) 2382 0 R ] /Limits [ (HD.1545) (HD.1573) ] >> endobj -4552 0 obj -<< /Names [ (HD.1574) 2355 0 R (HD.1575) 2356 0 R (HD.1576) 2357 0 R (HD.1577) 2358 0 R (HD.1578) 2359 0 R (HD.1579) 2360 0 R (HD.158) 805 0 R (HD.1580) 2361 0 R (HD.1581) 2362 0 R (HD.1582) 2363 0 R (HD.1583) 2368 0 R (HD.1584) 2369 0 R (HD.1585) 2370 0 R (HD.1586) 2371 0 R (HD.1587) 2372 0 R (HD.1588) 2373 0 R (HD.1589) 2374 0 R (HD.159) 810 0 R (HD.1590) 2375 0 R (HD.1591) 2376 0 R (HD.1592) 2377 0 R (HD.1593) 2378 0 R (HD.1594) 2379 0 R (HD.1595) 2380 0 R (HD.1596) 2381 0 R (HD.1597) 2382 0 R (HD.1598) 2383 0 R (HD.1599) 2384 0 R (HD.16) 651 0 R (HD.160) 811 0 R (HD.1600) 2385 0 R (HD.1601) 2386 0 R ] /Limits [ (HD.1574) (HD.1601) ] >> +4914 0 obj +<< /Names [ (HD.1574) 2383 0 R (HD.1575) 2384 0 R (HD.1576) 2385 0 R (HD.1577) 2386 0 R (HD.1578) 2387 0 R (HD.1579) 2388 0 R (HD.158) 834 0 R (HD.1580) 2389 0 R (HD.1581) 2390 0 R (HD.1582) 2391 0 R (HD.1583) 2392 0 R (HD.1584) 2393 0 R (HD.1585) 2394 0 R (HD.1586) 2400 0 R (HD.1587) 2401 0 R (HD.1588) 2402 0 R (HD.1589) 2403 0 R (HD.159) 839 0 R (HD.1590) 2404 0 R (HD.1591) 2405 0 R (HD.1592) 2406 0 R (HD.1593) 2407 0 R (HD.1594) 2408 0 R (HD.1595) 2409 0 R (HD.1596) 2410 0 R (HD.1597) 2411 0 R (HD.1598) 2412 0 R (HD.1599) 2413 0 R (HD.16) 680 0 R (HD.160) 840 0 R (HD.1600) 2414 0 R (HD.1601) 2415 0 R ] /Limits [ (HD.1574) (HD.1601) ] >> endobj -4553 0 obj -<< /Names [ (HD.1602) 2387 0 R (HD.1603) 2388 0 R (HD.1604) 2389 0 R (HD.1605) 2390 0 R (HD.1606) 2391 0 R (HD.1607) 2393 0 R (HD.1608) 2394 0 R (HD.1609) 2395 0 R (HD.161) 812 0 R (HD.1610) 2396 0 R (HD.1611) 2397 0 R (HD.1612) 2398 0 R (HD.1613) 2399 0 R (HD.1614) 2400 0 R (HD.1615) 2401 0 R (HD.1616) 2406 0 R (HD.1617) 2407 0 R (HD.1618) 2408 0 R (HD.1619) 2409 0 R (HD.162) 813 0 R (HD.1620) 2410 0 R (HD.1621) 2411 0 R (HD.1622) 2412 0 R (HD.1623) 2413 0 R (HD.1624) 2414 0 R (HD.1625) 2415 0 R (HD.1626) 2416 0 R (HD.1627) 2417 0 R (HD.1628) 2418 0 R (HD.1629) 2419 0 R (HD.163) 814 0 R (HD.1630) 2420 0 R ] /Limits [ (HD.1602) (HD.1630) ] >> +4915 0 obj +<< /Names [ (HD.1602) 2416 0 R (HD.1603) 2417 0 R (HD.1604) 2418 0 R (HD.1605) 2419 0 R (HD.1606) 2420 0 R (HD.1607) 2421 0 R (HD.1608) 2422 0 R (HD.1609) 2423 0 R (HD.161) 841 0 R (HD.1610) 2424 0 R (HD.1611) 2429 0 R (HD.1612) 2430 0 R (HD.1613) 2431 0 R (HD.1614) 2432 0 R (HD.1615) 2433 0 R (HD.1616) 2434 0 R (HD.1617) 2435 0 R (HD.1618) 2436 0 R (HD.1619) 2437 0 R (HD.162) 842 0 R (HD.1620) 2438 0 R (HD.1621) 2439 0 R (HD.1622) 2440 0 R (HD.1623) 2441 0 R (HD.1624) 2442 0 R (HD.1625) 2443 0 R (HD.1626) 2444 0 R (HD.1627) 2445 0 R (HD.1628) 2446 0 R (HD.1629) 2447 0 R (HD.163) 843 0 R (HD.1630) 2448 0 R ] /Limits [ (HD.1602) (HD.1630) ] >> endobj -4554 0 obj -<< /Names [ (HD.1631) 2421 0 R (HD.1632) 2422 0 R (HD.1633) 2423 0 R (HD.1634) 2424 0 R (HD.1635) 2425 0 R (HD.1636) 2426 0 R (HD.1637) 2427 0 R (HD.1638) 2428 0 R (HD.1639) 2429 0 R (HD.164) 815 0 R (HD.1640) 2430 0 R (HD.1641) 2431 0 R (HD.1642) 2432 0 R (HD.1643) 2433 0 R (HD.1644) 2434 0 R (HD.1645) 2435 0 R (HD.1646) 2436 0 R (HD.1647) 2437 0 R (HD.1648) 2438 0 R (HD.1649) 2439 0 R (HD.165) 816 0 R (HD.1650) 2440 0 R (HD.1651) 2441 0 R (HD.1652) 2447 0 R (HD.1653) 2448 0 R (HD.1654) 2449 0 R (HD.1655) 2450 0 R (HD.1656) 2451 0 R (HD.1657) 2452 0 R (HD.1658) 2453 0 R (HD.1659) 2454 0 R (HD.166) 817 0 R ] /Limits [ (HD.1631) (HD.166) ] >> +4916 0 obj +<< /Names [ (HD.1631) 2449 0 R (HD.1632) 2450 0 R (HD.1633) 2451 0 R (HD.1634) 2452 0 R (HD.1635) 2453 0 R (HD.1636) 2454 0 R (HD.1637) 2455 0 R (HD.1638) 2456 0 R (HD.1639) 2457 0 R (HD.164) 844 0 R (HD.1640) 2458 0 R (HD.1641) 2459 0 R (HD.1642) 2460 0 R (HD.1643) 2462 0 R (HD.1644) 2463 0 R (HD.1645) 2464 0 R (HD.1646) 2465 0 R (HD.1647) 2466 0 R (HD.1648) 2467 0 R (HD.1649) 2468 0 R (HD.165) 845 0 R (HD.1650) 2473 0 R (HD.1651) 2474 0 R (HD.1652) 2475 0 R (HD.1653) 2476 0 R (HD.1654) 2477 0 R (HD.1655) 2478 0 R (HD.1656) 2479 0 R (HD.1657) 2480 0 R (HD.1658) 2481 0 R (HD.1659) 2482 0 R (HD.166) 846 0 R ] /Limits [ (HD.1631) (HD.166) ] >> endobj -4555 0 obj -<< /Names [ (HD.1660) 2455 0 R (HD.1661) 2456 0 R (HD.1662) 2457 0 R (HD.1663) 2458 0 R (HD.1664) 2459 0 R (HD.1665) 2460 0 R (HD.1666) 2461 0 R (HD.1667) 2462 0 R (HD.1668) 2463 0 R (HD.1669) 2464 0 R (HD.167) 818 0 R (HD.1670) 2465 0 R (HD.1671) 2466 0 R (HD.1672) 2467 0 R (HD.1673) 2468 0 R (HD.1674) 2469 0 R (HD.1675) 2470 0 R (HD.1676) 2471 0 R (HD.1677) 2472 0 R (HD.1678) 2473 0 R (HD.1679) 2474 0 R (HD.168) 819 0 R (HD.1680) 2475 0 R (HD.1681) 2476 0 R (HD.1682) 2477 0 R (HD.1683) 2478 0 R (HD.1684) 2479 0 R (HD.1685) 2480 0 R (HD.1686) 2482 0 R (HD.1687) 2483 0 R (HD.1688) 2484 0 R (HD.1689) 2485 0 R ] /Limits [ (HD.1660) (HD.1689) ] >> +4917 0 obj +<< /Names [ (HD.1660) 2483 0 R (HD.1661) 2484 0 R (HD.1662) 2485 0 R (HD.1663) 2486 0 R (HD.1664) 2487 0 R (HD.1665) 2488 0 R (HD.1666) 2489 0 R (HD.1667) 2490 0 R (HD.1668) 2491 0 R (HD.1669) 2492 0 R (HD.167) 847 0 R (HD.1670) 2493 0 R (HD.1671) 2494 0 R (HD.1672) 2495 0 R (HD.1673) 2496 0 R (HD.1674) 2497 0 R (HD.1675) 2498 0 R (HD.1676) 2499 0 R (HD.1677) 2500 0 R (HD.1678) 2506 0 R (HD.1679) 2507 0 R (HD.168) 848 0 R (HD.1680) 2508 0 R (HD.1681) 2509 0 R (HD.1682) 2510 0 R (HD.1683) 2511 0 R (HD.1684) 2512 0 R (HD.1685) 2513 0 R (HD.1686) 2514 0 R (HD.1687) 2515 0 R (HD.1688) 2516 0 R (HD.1689) 2517 0 R ] /Limits [ (HD.1660) (HD.1689) ] >> endobj -4556 0 obj -<< /Names [ (HD.169) 820 0 R (HD.1690) 2486 0 R (HD.1691) 2487 0 R (HD.1692) 2492 0 R (HD.1693) 2493 0 R (HD.1694) 2494 0 R (HD.1695) 2495 0 R (HD.1696) 2496 0 R (HD.1697) 2497 0 R (HD.1698) 2498 0 R (HD.1699) 2499 0 R (HD.17) 652 0 R (HD.170) 821 0 R (HD.1700) 2500 0 R (HD.1701) 2501 0 R (HD.1702) 2502 0 R (HD.1703) 2503 0 R (HD.1704) 2504 0 R (HD.1705) 2505 0 R (HD.1706) 2506 0 R (HD.1707) 2507 0 R (HD.1708) 2508 0 R (HD.1709) 2509 0 R (HD.171) 822 0 R (HD.1710) 2510 0 R (HD.1711) 2511 0 R (HD.1712) 2512 0 R (HD.1713) 2513 0 R (HD.1714) 2514 0 R (HD.1715) 2515 0 R (HD.1716) 2516 0 R (HD.1717) 2517 0 R ] /Limits [ (HD.169) (HD.1717) ] >> +4918 0 obj +<< /Names [ (HD.169) 849 0 R (HD.1690) 2518 0 R (HD.1691) 2519 0 R (HD.1692) 2520 0 R (HD.1693) 2521 0 R (HD.1694) 2522 0 R (HD.1695) 2523 0 R (HD.1696) 2524 0 R (HD.1697) 2525 0 R (HD.1698) 2526 0 R (HD.1699) 2527 0 R (HD.17) 681 0 R (HD.170) 850 0 R (HD.1700) 2528 0 R (HD.1701) 2529 0 R (HD.1702) 2530 0 R (HD.1703) 2531 0 R (HD.1704) 2532 0 R (HD.1705) 2533 0 R (HD.1706) 2534 0 R (HD.1707) 2535 0 R (HD.1708) 2536 0 R (HD.1709) 2537 0 R (HD.171) 851 0 R (HD.1710) 2538 0 R (HD.1711) 2539 0 R (HD.1712) 2540 0 R (HD.1713) 2541 0 R (HD.1714) 2542 0 R (HD.1715) 2543 0 R (HD.1716) 2544 0 R (HD.1717) 2545 0 R ] /Limits [ (HD.169) (HD.1717) ] >> endobj -4557 0 obj -<< /Names [ (HD.1718) 2518 0 R (HD.1719) 2519 0 R (HD.172) 823 0 R (HD.1720) 2520 0 R (HD.1721) 2521 0 R (HD.1722) 2522 0 R (HD.1723) 2523 0 R (HD.1724) 2524 0 R (HD.1725) 2525 0 R (HD.1726) 2526 0 R (HD.1727) 2527 0 R (HD.1728) 2528 0 R (HD.1729) 2529 0 R (HD.173) 824 0 R (HD.1730) 2530 0 R (HD.1731) 2531 0 R (HD.1732) 2532 0 R (HD.1733) 2533 0 R (HD.1734) 2534 0 R (HD.1735) 2535 0 R (HD.1736) 2536 0 R (HD.1737) 2537 0 R (HD.1738) 2543 0 R (HD.1739) 2544 0 R (HD.174) 825 0 R (HD.1740) 2545 0 R (HD.1741) 2546 0 R (HD.1742) 2547 0 R (HD.1743) 2548 0 R (HD.1744) 2549 0 R (HD.1745) 2550 0 R (HD.1746) 2551 0 R ] /Limits [ (HD.1718) (HD.1746) ] >> +4919 0 obj +<< /Names [ (HD.1718) 2546 0 R (HD.1719) 2547 0 R (HD.172) 852 0 R (HD.1720) 2548 0 R (HD.1721) 2549 0 R (HD.1722) 2550 0 R (HD.1723) 2551 0 R (HD.1724) 2552 0 R (HD.1725) 2553 0 R (HD.1726) 2554 0 R (HD.1727) 2560 0 R (HD.1728) 2561 0 R (HD.1729) 2562 0 R (HD.173) 853 0 R (HD.1730) 2563 0 R (HD.1731) 2564 0 R (HD.1732) 2565 0 R (HD.1733) 2567 0 R (HD.1734) 2568 0 R (HD.1735) 2569 0 R (HD.1736) 2570 0 R (HD.1737) 2571 0 R (HD.1738) 2572 0 R (HD.1739) 2573 0 R (HD.174) 854 0 R (HD.1740) 2574 0 R (HD.1741) 2575 0 R (HD.1742) 2576 0 R (HD.1743) 2577 0 R (HD.1744) 2578 0 R (HD.1745) 2579 0 R (HD.1746) 2580 0 R ] /Limits [ (HD.1718) (HD.1746) ] >> endobj -4558 0 obj -<< /Names [ (HD.1747) 2552 0 R (HD.1748) 2553 0 R (HD.1749) 2554 0 R (HD.175) 826 0 R (HD.1750) 2555 0 R (HD.1751) 2556 0 R (HD.1752) 2557 0 R (HD.1753) 2558 0 R (HD.1754) 2559 0 R (HD.1755) 2560 0 R (HD.1756) 2561 0 R (HD.1757) 2562 0 R (HD.1758) 2564 0 R (HD.1759) 2565 0 R (HD.176) 827 0 R (HD.1760) 2566 0 R (HD.1761) 2567 0 R (HD.1762) 2568 0 R (HD.1763) 2569 0 R (HD.1764) 2570 0 R (HD.1765) 2571 0 R (HD.1766) 2572 0 R (HD.1767) 2573 0 R (HD.1768) 2574 0 R (HD.1769) 2575 0 R (HD.177) 828 0 R (HD.1770) 2576 0 R (HD.1771) 2584 0 R (HD.1772) 2585 0 R (HD.1773) 2586 0 R (HD.1774) 2587 0 R (HD.1775) 2588 0 R ] /Limits [ (HD.1747) (HD.1775) ] >> +4920 0 obj +<< /Names [ (HD.1747) 2581 0 R (HD.1748) 2582 0 R (HD.1749) 2583 0 R (HD.175) 855 0 R (HD.1750) 2584 0 R (HD.1751) 2585 0 R (HD.1752) 2586 0 R (HD.1753) 2587 0 R (HD.1754) 2588 0 R (HD.1755) 2589 0 R (HD.1756) 2590 0 R (HD.1757) 2591 0 R (HD.1758) 2592 0 R (HD.1759) 2593 0 R (HD.176) 856 0 R (HD.1760) 2594 0 R (HD.1761) 2595 0 R (HD.1762) 2596 0 R (HD.1763) 2597 0 R (HD.1764) 2598 0 R (HD.1765) 2599 0 R (HD.1766) 2600 0 R (HD.1767) 2601 0 R (HD.1768) 2602 0 R (HD.1769) 2607 0 R (HD.177) 861 0 R (HD.1770) 2608 0 R (HD.1771) 2609 0 R (HD.1772) 2610 0 R (HD.1773) 2611 0 R (HD.1774) 2612 0 R (HD.1775) 2613 0 R ] /Limits [ (HD.1747) (HD.1775) ] >> endobj -4559 0 obj -<< /Names [ (HD.1776) 2589 0 R (HD.1777) 2590 0 R (HD.1778) 2591 0 R (HD.1779) 2592 0 R (HD.178) 829 0 R (HD.1780) 2593 0 R (HD.1781) 2594 0 R (HD.1782) 2595 0 R (HD.1783) 2596 0 R (HD.1784) 2597 0 R (HD.1785) 2598 0 R (HD.1786) 2599 0 R (HD.1787) 2600 0 R (HD.1788) 2601 0 R (HD.1789) 2602 0 R (HD.179) 830 0 R (HD.1790) 2603 0 R (HD.1791) 2604 0 R (HD.1792) 2605 0 R (HD.1793) 2606 0 R (HD.1794) 2607 0 R (HD.1795) 2608 0 R (HD.1796) 2609 0 R (HD.1797) 2610 0 R (HD.1798) 2611 0 R (HD.1799) 2612 0 R (HD.18) 653 0 R (HD.180) 835 0 R (HD.1800) 2613 0 R (HD.1801) 2614 0 R (HD.1802) 2615 0 R (HD.1803) 2616 0 R ] /Limits [ (HD.1776) (HD.1803) ] >> +4921 0 obj +<< /Names [ (HD.1776) 2614 0 R (HD.1777) 2615 0 R (HD.1778) 2616 0 R (HD.1779) 2617 0 R (HD.178) 862 0 R (HD.1780) 2618 0 R (HD.1781) 2619 0 R (HD.1782) 2620 0 R (HD.1783) 2621 0 R (HD.1784) 2622 0 R (HD.1785) 2623 0 R (HD.1786) 2624 0 R (HD.1787) 2625 0 R (HD.1788) 2626 0 R (HD.1789) 2627 0 R (HD.179) 863 0 R (HD.1790) 2628 0 R (HD.1791) 2629 0 R (HD.1792) 2630 0 R (HD.1793) 2631 0 R (HD.1794) 2632 0 R (HD.1795) 2633 0 R (HD.1796) 2634 0 R (HD.1797) 2635 0 R (HD.1798) 2636 0 R (HD.1799) 2637 0 R (HD.18) 682 0 R (HD.180) 864 0 R (HD.1800) 2638 0 R (HD.1801) 2639 0 R (HD.1802) 2640 0 R (HD.1803) 2641 0 R ] /Limits [ (HD.1776) (HD.1803) ] >> endobj -4560 0 obj -<< /Names [ (HD.1804) 2617 0 R (HD.1805) 2618 0 R (HD.1806) 2619 0 R (HD.1807) 2620 0 R (HD.1808) 2621 0 R (HD.1809) 2622 0 R (HD.181) 836 0 R (HD.1810) 2623 0 R (HD.1811) 2624 0 R (HD.1812) 2625 0 R (HD.1813) 2626 0 R (HD.1814) 2627 0 R (HD.1815) 2628 0 R (HD.1816) 2629 0 R (HD.1817) 2630 0 R (HD.1818) 2631 0 R (HD.1819) 2632 0 R (HD.182) 837 0 R (HD.1820) 2633 0 R (HD.1821) 2634 0 R (HD.1822) 2639 0 R (HD.1823) 2640 0 R (HD.1824) 2641 0 R (HD.1825) 2642 0 R (HD.1826) 2643 0 R (HD.1827) 2644 0 R (HD.1828) 2645 0 R (HD.1829) 2646 0 R (HD.183) 838 0 R (HD.1830) 2647 0 R (HD.1831) 2648 0 R (HD.1832) 2649 0 R ] /Limits [ (HD.1804) (HD.1832) ] >> +4922 0 obj +<< /Names [ (HD.1804) 2642 0 R (HD.1805) 2643 0 R (HD.1806) 2644 0 R (HD.1807) 2645 0 R (HD.1808) 2646 0 R (HD.1809) 2647 0 R (HD.181) 865 0 R (HD.1810) 2648 0 R (HD.1811) 2649 0 R (HD.1812) 2650 0 R (HD.1813) 2651 0 R (HD.1814) 2652 0 R (HD.1815) 2659 0 R (HD.1816) 2660 0 R (HD.1817) 2661 0 R (HD.1818) 2662 0 R (HD.1819) 2663 0 R (HD.182) 866 0 R (HD.1820) 2664 0 R (HD.1821) 2665 0 R (HD.1822) 2666 0 R (HD.1823) 2667 0 R (HD.1824) 2668 0 R (HD.1825) 2669 0 R (HD.1826) 2670 0 R (HD.1827) 2671 0 R (HD.1828) 2672 0 R (HD.1829) 2673 0 R (HD.183) 867 0 R (HD.1830) 2674 0 R (HD.1831) 2675 0 R (HD.1832) 2676 0 R ] /Limits [ (HD.1804) (HD.1832) ] >> endobj -4561 0 obj -<< /Names [ (HD.1833) 2650 0 R (HD.1834) 2651 0 R (HD.1835) 2652 0 R (HD.1836) 2653 0 R (HD.1837) 2654 0 R (HD.1838) 2655 0 R (HD.1839) 2656 0 R (HD.184) 839 0 R (HD.1840) 2657 0 R (HD.1841) 2658 0 R (HD.1842) 2659 0 R (HD.1843) 2660 0 R (HD.1844) 2661 0 R (HD.1845) 2662 0 R (HD.1846) 2663 0 R (HD.1847) 2664 0 R (HD.1848) 2665 0 R (HD.1849) 2666 0 R (HD.185) 840 0 R (HD.1850) 2667 0 R (HD.1851) 2668 0 R (HD.1852) 2669 0 R (HD.1853) 2670 0 R (HD.1854) 2671 0 R (HD.1855) 2672 0 R (HD.1856) 2673 0 R (HD.1857) 2680 0 R (HD.1858) 2681 0 R (HD.1859) 2682 0 R (HD.186) 841 0 R (HD.1860) 2683 0 R (HD.1861) 2685 0 R ] /Limits [ (HD.1833) (HD.1861) ] >> +4923 0 obj +<< /Names [ (HD.1833) 2677 0 R (HD.1834) 2678 0 R (HD.1835) 2679 0 R (HD.1836) 2680 0 R (HD.1837) 2681 0 R (HD.1838) 2682 0 R (HD.1839) 2683 0 R (HD.184) 868 0 R (HD.1840) 2684 0 R (HD.1841) 2685 0 R (HD.1842) 2686 0 R (HD.1843) 2687 0 R (HD.1844) 2688 0 R (HD.1845) 2689 0 R (HD.1846) 2690 0 R (HD.1847) 2691 0 R (HD.1848) 2698 0 R (HD.1849) 2699 0 R (HD.185) 869 0 R (HD.1850) 2700 0 R (HD.1851) 2701 0 R (HD.1852) 2702 0 R (HD.1853) 2703 0 R (HD.1854) 2704 0 R (HD.1855) 2705 0 R (HD.1856) 2706 0 R (HD.1857) 2707 0 R (HD.1858) 2708 0 R (HD.1859) 2709 0 R (HD.186) 870 0 R (HD.1860) 2710 0 R (HD.1861) 2711 0 R ] /Limits [ (HD.1833) (HD.1861) ] >> endobj -4562 0 obj -<< /Names [ (HD.1862) 2686 0 R (HD.1863) 2687 0 R (HD.1864) 2688 0 R (HD.1865) 2689 0 R (HD.1866) 2690 0 R (HD.1867) 2691 0 R (HD.1868) 2692 0 R (HD.1869) 2693 0 R (HD.187) 842 0 R (HD.1870) 2694 0 R (HD.1871) 2695 0 R (HD.1872) 2696 0 R (HD.1873) 2697 0 R (HD.1874) 2698 0 R (HD.1875) 2699 0 R (HD.1876) 2700 0 R (HD.1877) 2701 0 R (HD.1878) 2702 0 R (HD.1879) 2703 0 R (HD.188) 843 0 R (HD.1880) 2704 0 R (HD.1881) 2705 0 R (HD.1882) 2706 0 R (HD.1883) 2707 0 R (HD.1884) 2708 0 R (HD.1885) 2709 0 R (HD.1886) 2717 0 R (HD.1887) 2718 0 R (HD.1888) 2719 0 R (HD.1889) 2720 0 R (HD.189) 844 0 R (HD.1890) 2721 0 R ] /Limits [ (HD.1862) (HD.1890) ] >> +4924 0 obj +<< /Names [ (HD.1862) 2712 0 R (HD.1863) 2713 0 R (HD.1864) 2714 0 R (HD.1865) 2715 0 R (HD.1866) 2716 0 R (HD.1867) 2717 0 R (HD.1868) 2718 0 R (HD.1869) 2719 0 R (HD.187) 871 0 R (HD.1870) 2720 0 R (HD.1871) 2721 0 R (HD.1872) 2722 0 R (HD.1873) 2723 0 R (HD.1874) 2724 0 R (HD.1875) 2725 0 R (HD.1876) 2726 0 R (HD.1877) 2727 0 R (HD.1878) 2728 0 R (HD.1879) 2729 0 R (HD.188) 872 0 R (HD.1880) 2730 0 R (HD.1881) 2731 0 R (HD.1882) 2732 0 R (HD.1883) 2733 0 R (HD.1884) 2734 0 R (HD.1885) 2735 0 R (HD.1886) 2736 0 R (HD.1887) 2737 0 R (HD.1888) 2738 0 R (HD.1889) 2739 0 R (HD.189) 873 0 R (HD.1890) 2740 0 R ] /Limits [ (HD.1862) (HD.1890) ] >> endobj -4563 0 obj -<< /Names [ (HD.1891) 2722 0 R (HD.1892) 2723 0 R (HD.1893) 2724 0 R (HD.1894) 2725 0 R (HD.1895) 2726 0 R (HD.1896) 2727 0 R (HD.1897) 2728 0 R (HD.1898) 2729 0 R (HD.1899) 2730 0 R (HD.19) 654 0 R (HD.190) 845 0 R (HD.1900) 2731 0 R (HD.1901) 2732 0 R (HD.1902) 2733 0 R (HD.1903) 2734 0 R (HD.1904) 2735 0 R (HD.1905) 2736 0 R (HD.1906) 2737 0 R (HD.1907) 2738 0 R (HD.1908) 2739 0 R (HD.1909) 2740 0 R (HD.191) 846 0 R (HD.1910) 2741 0 R (HD.1911) 2742 0 R (HD.1912) 2743 0 R (HD.1913) 2744 0 R (HD.1914) 2745 0 R (HD.1915) 2746 0 R (HD.1916) 2747 0 R (HD.1917) 2748 0 R (HD.1918) 2749 0 R (HD.1919) 2750 0 R ] /Limits [ (HD.1891) (HD.1919) ] >> +4925 0 obj +<< /Names [ (HD.1891) 2741 0 R (HD.1892) 2742 0 R (HD.1893) 2743 0 R (HD.1894) 2744 0 R (HD.1895) 2745 0 R (HD.1896) 2746 0 R (HD.1897) 2747 0 R (HD.1898) 2748 0 R (HD.1899) 2749 0 R (HD.19) 683 0 R (HD.190) 874 0 R (HD.1900) 2750 0 R (HD.1901) 2751 0 R (HD.1902) 2757 0 R (HD.1903) 2758 0 R (HD.1904) 2759 0 R (HD.1905) 2760 0 R (HD.1906) 2761 0 R (HD.1907) 2762 0 R (HD.1908) 2763 0 R (HD.1909) 2764 0 R (HD.191) 875 0 R (HD.1910) 2765 0 R (HD.1911) 2766 0 R (HD.1912) 2767 0 R (HD.1913) 2768 0 R (HD.1914) 2769 0 R (HD.1915) 2770 0 R (HD.1916) 2771 0 R (HD.1917) 2772 0 R (HD.1918) 2773 0 R (HD.1919) 2774 0 R ] /Limits [ (HD.1891) (HD.1919) ] >> endobj -4564 0 obj -<< /Names [ (HD.192) 847 0 R (HD.1920) 2752 0 R (HD.1921) 2753 0 R (HD.1922) 2754 0 R (HD.1923) 2755 0 R (HD.1924) 2756 0 R (HD.1925) 2757 0 R (HD.1926) 2758 0 R (HD.1927) 2759 0 R (HD.1928) 2760 0 R (HD.1929) 2761 0 R (HD.193) 848 0 R (HD.1930) 2763 0 R (HD.1931) 2765 0 R (HD.1932) 2771 0 R (HD.1933) 2772 0 R (HD.1934) 2773 0 R (HD.1935) 2774 0 R (HD.1936) 2775 0 R (HD.1937) 2776 0 R (HD.1938) 2777 0 R (HD.1939) 2778 0 R (HD.194) 849 0 R (HD.1940) 2779 0 R (HD.1941) 2780 0 R (HD.1942) 2781 0 R (HD.1943) 2782 0 R (HD.1944) 2783 0 R (HD.1945) 2784 0 R (HD.1946) 2785 0 R (HD.1947) 2786 0 R (HD.1948) 2787 0 R ] /Limits [ (HD.192) (HD.1948) ] >> +4926 0 obj +<< /Names [ (HD.192) 880 0 R (HD.1920) 2775 0 R (HD.1921) 2776 0 R (HD.1922) 2777 0 R (HD.1923) 2778 0 R (HD.1924) 2779 0 R (HD.1925) 2786 0 R (HD.1926) 2787 0 R (HD.1927) 2788 0 R (HD.1928) 2789 0 R (HD.1929) 2790 0 R (HD.193) 881 0 R (HD.1930) 2791 0 R (HD.1931) 2792 0 R (HD.1932) 2793 0 R (HD.1933) 2794 0 R (HD.1934) 2795 0 R (HD.1935) 2796 0 R (HD.1936) 2797 0 R (HD.1937) 2798 0 R (HD.1938) 2799 0 R (HD.1939) 2800 0 R (HD.194) 882 0 R (HD.1940) 2801 0 R (HD.1941) 2802 0 R (HD.1942) 2803 0 R (HD.1943) 2804 0 R (HD.1944) 2805 0 R (HD.1945) 2806 0 R (HD.1946) 2807 0 R (HD.1947) 2808 0 R (HD.1948) 2809 0 R ] /Limits [ (HD.192) (HD.1948) ] >> endobj -4565 0 obj -<< /Names [ (HD.1949) 2788 0 R (HD.195) 850 0 R (HD.1950) 2789 0 R (HD.1951) 2790 0 R (HD.1952) 2791 0 R (HD.1953) 2792 0 R (HD.1954) 2793 0 R (HD.1955) 2794 0 R (HD.1956) 2795 0 R (HD.1957) 2796 0 R (HD.1958) 2797 0 R (HD.1959) 2798 0 R (HD.196) 851 0 R (HD.1960) 2799 0 R (HD.1961) 2800 0 R (HD.1962) 2801 0 R (HD.1963) 2802 0 R (HD.1964) 2803 0 R (HD.1965) 2804 0 R (HD.1966) 2805 0 R (HD.1967) 2806 0 R (HD.1968) 2807 0 R (HD.1969) 2808 0 R (HD.197) 856 0 R (HD.1970) 2809 0 R (HD.1971) 2810 0 R (HD.1972) 2811 0 R (HD.1973) 2812 0 R (HD.1974) 2813 0 R (HD.1975) 2814 0 R (HD.1976) 2815 0 R (HD.1977) 2816 0 R ] /Limits [ (HD.1949) (HD.1977) ] >> +4927 0 obj +<< /Names [ (HD.1949) 2810 0 R (HD.195) 883 0 R (HD.1950) 2811 0 R (HD.1951) 2812 0 R (HD.1952) 2813 0 R (HD.1953) 2814 0 R (HD.1954) 2815 0 R (HD.1955) 2816 0 R (HD.1956) 2817 0 R (HD.1957) 2825 0 R (HD.1958) 2826 0 R (HD.1959) 2827 0 R (HD.196) 884 0 R (HD.1960) 2828 0 R (HD.1961) 2829 0 R (HD.1962) 2830 0 R (HD.1963) 2831 0 R (HD.1964) 2832 0 R (HD.1965) 2833 0 R (HD.1966) 2834 0 R (HD.1967) 2835 0 R (HD.1968) 2836 0 R (HD.1969) 2837 0 R (HD.197) 885 0 R (HD.1970) 2838 0 R (HD.1971) 2839 0 R (HD.1972) 2840 0 R (HD.1973) 2841 0 R (HD.1974) 2842 0 R (HD.1975) 2843 0 R (HD.1976) 2844 0 R (HD.1977) 2845 0 R ] /Limits [ (HD.1949) (HD.1977) ] >> endobj -4566 0 obj -<< /Names [ (HD.1978) 2817 0 R (HD.1979) 2818 0 R (HD.198) 857 0 R (HD.1980) 2819 0 R (HD.1981) 2820 0 R (HD.1982) 2821 0 R (HD.1983) 2822 0 R (HD.1984) 2823 0 R (HD.1985) 2824 0 R (HD.1986) 2825 0 R (HD.1987) 2826 0 R (HD.1988) 2827 0 R (HD.1989) 2828 0 R (HD.199) 858 0 R (HD.1990) 2833 0 R (HD.1991) 2834 0 R (HD.1992) 2835 0 R (HD.1993) 2836 0 R (HD.1994) 2837 0 R (HD.1995) 2839 0 R (HD.1996) 2840 0 R (HD.1997) 2841 0 R (HD.1998) 2842 0 R (HD.1999) 2844 0 R (HD.2) 637 0 R (HD.20) 655 0 R (HD.200) 859 0 R (HD.2000) 2845 0 R (HD.2001) 2846 0 R (HD.2002) 2847 0 R (HD.2003) 2848 0 R (HD.2004) 2849 0 R ] /Limits [ (HD.1978) (HD.2004) ] >> +4928 0 obj +<< /Names [ (HD.1978) 2846 0 R (HD.1979) 2847 0 R (HD.198) 886 0 R (HD.1980) 2848 0 R (HD.1981) 2850 0 R (HD.1982) 2851 0 R (HD.1983) 2852 0 R (HD.1984) 2853 0 R (HD.1985) 2854 0 R (HD.1986) 2855 0 R (HD.1987) 2856 0 R (HD.1988) 2857 0 R (HD.1989) 2858 0 R (HD.199) 887 0 R (HD.1990) 2859 0 R (HD.1991) 2861 0 R (HD.1992) 2863 0 R (HD.1993) 2865 0 R (HD.1994) 2866 0 R (HD.1995) 2867 0 R (HD.1996) 2868 0 R (HD.1997) 2869 0 R (HD.1998) 2870 0 R (HD.1999) 2871 0 R (HD.2) 666 0 R (HD.20) 684 0 R (HD.200) 888 0 R (HD.2000) 2872 0 R (HD.2001) 2873 0 R (HD.2002) 2874 0 R (HD.2003) 2879 0 R (HD.2004) 2880 0 R ] /Limits [ (HD.1978) (HD.2004) ] >> endobj -4567 0 obj -<< /Names [ (HD.2005) 2850 0 R (HD.2006) 2851 0 R (HD.2007) 2852 0 R (HD.2008) 2853 0 R (HD.2009) 2854 0 R (HD.201) 860 0 R (HD.2010) 2855 0 R (HD.2011) 2856 0 R (HD.2012) 2857 0 R (HD.2013) 2858 0 R (HD.2014) 2859 0 R (HD.2015) 2860 0 R (HD.2016) 2861 0 R (HD.2017) 2862 0 R (HD.2018) 2863 0 R (HD.2019) 2864 0 R (HD.202) 861 0 R (HD.2020) 2865 0 R (HD.2021) 2866 0 R (HD.2022) 2867 0 R (HD.2023) 2868 0 R (HD.2024) 2869 0 R (HD.2025) 2870 0 R (HD.2026) 2871 0 R (HD.2027) 2872 0 R (HD.2028) 2873 0 R (HD.2029) 2879 0 R (HD.203) 862 0 R (HD.2030) 2880 0 R (HD.2031) 2881 0 R (HD.2032) 2882 0 R (HD.2033) 2883 0 R ] /Limits [ (HD.2005) (HD.2033) ] >> +4929 0 obj +<< /Names [ (HD.2005) 2881 0 R (HD.2006) 2882 0 R (HD.2007) 2883 0 R (HD.2008) 2884 0 R (HD.2009) 2885 0 R (HD.201) 889 0 R (HD.2010) 2886 0 R (HD.2011) 2887 0 R (HD.2012) 2888 0 R (HD.2013) 2889 0 R (HD.2014) 2890 0 R (HD.2015) 2891 0 R (HD.2016) 2892 0 R (HD.2017) 2893 0 R (HD.2018) 2894 0 R (HD.2019) 2895 0 R (HD.202) 890 0 R (HD.2020) 2896 0 R (HD.2021) 2897 0 R (HD.2022) 2898 0 R (HD.2023) 2899 0 R (HD.2024) 2900 0 R (HD.2025) 2901 0 R (HD.2026) 2902 0 R (HD.2027) 2903 0 R (HD.2028) 2904 0 R (HD.2029) 2905 0 R (HD.203) 891 0 R (HD.2030) 2906 0 R (HD.2031) 2907 0 R (HD.2032) 2908 0 R (HD.2033) 2909 0 R ] /Limits [ (HD.2005) (HD.2033) ] >> endobj -4568 0 obj -<< /Names [ (HD.2034) 2884 0 R (HD.2035) 2885 0 R (HD.2036) 2886 0 R (HD.2037) 2888 0 R (HD.2038) 2890 0 R (HD.2039) 2891 0 R (HD.204) 863 0 R (HD.2040) 2892 0 R (HD.2041) 2893 0 R (HD.2042) 2894 0 R (HD.2043) 2895 0 R (HD.2044) 2896 0 R (HD.2045) 2897 0 R (HD.2046) 2898 0 R (HD.2047) 2899 0 R (HD.2048) 2900 0 R (HD.2049) 2901 0 R (HD.205) 864 0 R (HD.2050) 2902 0 R (HD.2051) 2903 0 R (HD.2052) 2904 0 R (HD.2053) 2905 0 R (HD.2054) 2906 0 R (HD.2055) 2907 0 R (HD.2056) 2908 0 R (HD.2057) 2909 0 R (HD.2058) 2910 0 R (HD.2059) 2911 0 R (HD.206) 865 0 R (HD.2060) 2912 0 R (HD.2061) 2913 0 R (HD.2062) 2914 0 R ] /Limits [ (HD.2034) (HD.2062) ] >> +4930 0 obj +<< /Names [ (HD.2034) 2910 0 R (HD.2035) 2911 0 R (HD.2036) 2912 0 R (HD.2037) 2913 0 R (HD.2038) 2914 0 R (HD.2039) 2915 0 R (HD.204) 892 0 R (HD.2040) 2916 0 R (HD.2041) 2917 0 R (HD.2042) 2918 0 R (HD.2043) 2919 0 R (HD.2044) 2920 0 R (HD.2045) 2921 0 R (HD.2046) 2922 0 R (HD.2047) 2923 0 R (HD.2048) 2924 0 R (HD.2049) 2925 0 R (HD.205) 893 0 R (HD.2050) 2926 0 R (HD.2051) 2927 0 R (HD.2052) 2928 0 R (HD.2053) 2929 0 R (HD.2054) 2931 0 R (HD.2055) 2932 0 R (HD.2056) 2933 0 R (HD.2057) 2938 0 R (HD.2058) 2939 0 R (HD.2059) 2940 0 R (HD.206) 894 0 R (HD.2060) 2942 0 R (HD.2061) 2943 0 R (HD.2062) 2944 0 R ] /Limits [ (HD.2034) (HD.2062) ] >> endobj -4569 0 obj -<< /Names [ (HD.2063) 2915 0 R (HD.2064) 2916 0 R (HD.2065) 2917 0 R (HD.2066) 2918 0 R (HD.2067) 2919 0 R (HD.2068) 2926 0 R (HD.2069) 2927 0 R (HD.207) 866 0 R (HD.2070) 2928 0 R (HD.2071) 2929 0 R (HD.2072) 2930 0 R (HD.2073) 2931 0 R (HD.2074) 2932 0 R (HD.2075) 2933 0 R (HD.2076) 2934 0 R (HD.2077) 2935 0 R (HD.2078) 2936 0 R (HD.2079) 2937 0 R (HD.208) 867 0 R (HD.2080) 2938 0 R (HD.2081) 2939 0 R (HD.2082) 2940 0 R (HD.2083) 2941 0 R (HD.2084) 2942 0 R (HD.2085) 2943 0 R (HD.2086) 2944 0 R (HD.2087) 2945 0 R (HD.2088) 2946 0 R (HD.2089) 2947 0 R (HD.209) 868 0 R (HD.2090) 2948 0 R (HD.2091) 2949 0 R ] /Limits [ (HD.2063) (HD.2091) ] >> +4931 0 obj +<< /Names [ (HD.2063) 2945 0 R (HD.2064) 2946 0 R (HD.2065) 2947 0 R (HD.2066) 2948 0 R (HD.2067) 2949 0 R (HD.2068) 2950 0 R (HD.2069) 2951 0 R (HD.207) 895 0 R (HD.2070) 2952 0 R (HD.2071) 2953 0 R (HD.2072) 2954 0 R (HD.2073) 2955 0 R (HD.2074) 2956 0 R (HD.2075) 2957 0 R (HD.2076) 2958 0 R (HD.2077) 2959 0 R (HD.2078) 2960 0 R (HD.2079) 2961 0 R (HD.208) 896 0 R (HD.2080) 2962 0 R (HD.2081) 2963 0 R (HD.2082) 2964 0 R (HD.2083) 2965 0 R (HD.2084) 2966 0 R (HD.2085) 2967 0 R (HD.2086) 2968 0 R (HD.2087) 2969 0 R (HD.2088) 2970 0 R (HD.2089) 2971 0 R (HD.209) 897 0 R (HD.2090) 2972 0 R (HD.2091) 2973 0 R ] /Limits [ (HD.2063) (HD.2091) ] >> endobj -4570 0 obj -<< /Names [ (HD.2092) 2950 0 R (HD.2093) 2951 0 R (HD.2094) 2952 0 R (HD.2095) 2953 0 R (HD.2096) 2954 0 R (HD.2097) 2955 0 R (HD.2098) 2956 0 R (HD.2099) 2957 0 R (HD.21) 656 0 R (HD.210) 869 0 R (HD.2100) 2958 0 R (HD.2101) 2959 0 R (HD.2102) 2960 0 R (HD.2103) 2961 0 R (HD.2104) 2962 0 R (HD.2105) 2963 0 R (HD.2106) 2964 0 R (HD.2107) 2965 0 R (HD.2108) 2966 0 R (HD.2109) 2967 0 R (HD.211) 870 0 R (HD.2110) 2968 0 R (HD.2111) 2969 0 R (HD.2112) 2970 0 R (HD.2113) 2971 0 R (HD.2114) 2972 0 R (HD.2115) 2973 0 R (HD.2116) 2974 0 R (HD.2117) 2975 0 R (HD.2118) 2976 0 R (HD.2119) 2977 0 R (HD.212) 871 0 R ] /Limits [ (HD.2092) (HD.212) ] >> +4932 0 obj +<< /Names [ (HD.2092) 2974 0 R (HD.2093) 2975 0 R (HD.2094) 2976 0 R (HD.2095) 2977 0 R (HD.2096) 2978 0 R (HD.2097) 2979 0 R (HD.2098) 2986 0 R (HD.2099) 2988 0 R (HD.21) 685 0 R (HD.210) 898 0 R (HD.2100) 2989 0 R (HD.2101) 2990 0 R (HD.2102) 2991 0 R (HD.2103) 2992 0 R (HD.2104) 2993 0 R (HD.2105) 2994 0 R (HD.2106) 2995 0 R (HD.2107) 2996 0 R (HD.2108) 2997 0 R (HD.2109) 2998 0 R (HD.211) 899 0 R (HD.2110) 2999 0 R (HD.2111) 3000 0 R (HD.2112) 3001 0 R (HD.2113) 3002 0 R (HD.2114) 3003 0 R (HD.2115) 3004 0 R (HD.2116) 3005 0 R (HD.2117) 3006 0 R (HD.2118) 3007 0 R (HD.2119) 3008 0 R (HD.212) 900 0 R ] /Limits [ (HD.2092) (HD.212) ] >> endobj -4571 0 obj -<< /Names [ (HD.2120) 2982 0 R (HD.2121) 2983 0 R (HD.2122) 2984 0 R (HD.2123) 2985 0 R (HD.2124) 2986 0 R (HD.2125) 2987 0 R (HD.2126) 2988 0 R (HD.2127) 2989 0 R (HD.2128) 2990 0 R (HD.2129) 2991 0 R (HD.213) 872 0 R (HD.2130) 2992 0 R (HD.2131) 2993 0 R (HD.2132) 2994 0 R (HD.2133) 2995 0 R (HD.2134) 2996 0 R (HD.2135) 2997 0 R (HD.2136) 2998 0 R (HD.2137) 2999 0 R (HD.2138) 3000 0 R (HD.2139) 3001 0 R (HD.214) 873 0 R (HD.2140) 3002 0 R (HD.2141) 3003 0 R (HD.2142) 3004 0 R (HD.2143) 3005 0 R (HD.2144) 3006 0 R (HD.2145) 3007 0 R (HD.2146) 3008 0 R (HD.2147) 3009 0 R (HD.2148) 3010 0 R (HD.2149) 3011 0 R ] /Limits [ (HD.2120) (HD.2149) ] >> +4933 0 obj +<< /Names [ (HD.2120) 3009 0 R (HD.2121) 3010 0 R (HD.2122) 3011 0 R (HD.2123) 3012 0 R (HD.2124) 3013 0 R (HD.2125) 3014 0 R (HD.2126) 3015 0 R (HD.2127) 3016 0 R (HD.2128) 3017 0 R (HD.2129) 3018 0 R (HD.213) 901 0 R (HD.2130) 3019 0 R (HD.2131) 3020 0 R (HD.2132) 3021 0 R (HD.2133) 3022 0 R (HD.2134) 3023 0 R (HD.2135) 3024 0 R (HD.2136) 3025 0 R (HD.2137) 3026 0 R (HD.2138) 3027 0 R (HD.2139) 3035 0 R (HD.214) 902 0 R (HD.2140) 3036 0 R (HD.2141) 3037 0 R (HD.2142) 3038 0 R (HD.2143) 3039 0 R (HD.2144) 3040 0 R (HD.2145) 3041 0 R (HD.2146) 3042 0 R (HD.2147) 3043 0 R (HD.2148) 3044 0 R (HD.2149) 3045 0 R ] /Limits [ (HD.2120) (HD.2149) ] >> endobj -4572 0 obj -<< /Names [ (HD.215) 874 0 R (HD.2150) 3012 0 R (HD.2151) 3013 0 R (HD.2152) 3014 0 R (HD.2153) 3015 0 R (HD.2154) 3016 0 R (HD.2155) 3017 0 R (HD.2156) 3018 0 R (HD.2157) 3019 0 R (HD.2158) 3020 0 R (HD.2159) 3021 0 R (HD.216) 875 0 R (HD.2160) 3022 0 R (HD.2161) 3023 0 R (HD.2162) 3025 0 R (HD.2163) 3026 0 R (HD.2164) 3028 0 R (HD.2165) 3029 0 R (HD.2166) 3030 0 R (HD.2167) 3031 0 R (HD.2168) 3032 0 R (HD.2169) 3037 0 R (HD.217) 876 0 R (HD.2170) 3039 0 R (HD.2171) 3040 0 R (HD.2172) 3041 0 R (HD.2173) 3042 0 R (HD.2174) 3043 0 R (HD.2175) 3044 0 R (HD.2176) 3045 0 R (HD.2177) 3046 0 R (HD.2178) 3047 0 R ] /Limits [ (HD.215) (HD.2178) ] >> +4934 0 obj +<< /Names [ (HD.215) 903 0 R (HD.2150) 3046 0 R (HD.2151) 3047 0 R (HD.2152) 3048 0 R (HD.2153) 3049 0 R (HD.2154) 3050 0 R (HD.2155) 3051 0 R (HD.2156) 3052 0 R (HD.2157) 3053 0 R (HD.2158) 3054 0 R (HD.2159) 3055 0 R (HD.216) 904 0 R (HD.2160) 3056 0 R (HD.2161) 3057 0 R (HD.2162) 3058 0 R (HD.2163) 3059 0 R (HD.2164) 3060 0 R (HD.2165) 3061 0 R (HD.2166) 3062 0 R (HD.2167) 3063 0 R (HD.2168) 3064 0 R (HD.2169) 3065 0 R (HD.217) 905 0 R (HD.2170) 3071 0 R (HD.2171) 3072 0 R (HD.2172) 3073 0 R (HD.2173) 3074 0 R (HD.2174) 3075 0 R (HD.2175) 3076 0 R (HD.2176) 3077 0 R (HD.2177) 3078 0 R (HD.2178) 3079 0 R ] /Limits [ (HD.215) (HD.2178) ] >> endobj -4573 0 obj -<< /Names [ (HD.2179) 3048 0 R (HD.218) 877 0 R (HD.2180) 3049 0 R (HD.2181) 3050 0 R (HD.2182) 3051 0 R (HD.2183) 3052 0 R (HD.2184) 3053 0 R (HD.2185) 3054 0 R (HD.2186) 3055 0 R (HD.2187) 3056 0 R (HD.2188) 3057 0 R (HD.2189) 3058 0 R (HD.219) 878 0 R (HD.2190) 3059 0 R (HD.2191) 3060 0 R (HD.2192) 3061 0 R (HD.2193) 3062 0 R (HD.2194) 3063 0 R (HD.2195) 3064 0 R (HD.2196) 3065 0 R (HD.2197) 3066 0 R (HD.2198) 3067 0 R (HD.2199) 3069 0 R (HD.22) 657 0 R (HD.220) 879 0 R (HD.2200) 3070 0 R (HD.2201) 3071 0 R (HD.2202) 3072 0 R (HD.2203) 3073 0 R (HD.2204) 3074 0 R (HD.2205) 3075 0 R (HD.2206) 3081 0 R ] /Limits [ (HD.2179) (HD.2206) ] >> +4935 0 obj +<< /Names [ (HD.2179) 3080 0 R (HD.218) 906 0 R (HD.2180) 3081 0 R (HD.2181) 3082 0 R (HD.2182) 3083 0 R (HD.2183) 3084 0 R (HD.2184) 3085 0 R (HD.2185) 3086 0 R (HD.2186) 3087 0 R (HD.2187) 3088 0 R (HD.2188) 3089 0 R (HD.2189) 3090 0 R (HD.219) 907 0 R (HD.2190) 3091 0 R (HD.2191) 3092 0 R (HD.2192) 3093 0 R (HD.2193) 3094 0 R (HD.2194) 3095 0 R (HD.2195) 3096 0 R (HD.2196) 3097 0 R (HD.2197) 3098 0 R (HD.2198) 3099 0 R (HD.2199) 3100 0 R (HD.22) 686 0 R (HD.220) 908 0 R (HD.2200) 3101 0 R (HD.2201) 3102 0 R (HD.2202) 3103 0 R (HD.2203) 3104 0 R (HD.2204) 3105 0 R (HD.2205) 3106 0 R (HD.2206) 3107 0 R ] /Limits [ (HD.2179) (HD.2206) ] >> endobj -4574 0 obj -<< /Names [ (HD.2207) 3082 0 R (HD.2208) 3083 0 R (HD.2209) 3084 0 R (HD.221) 880 0 R (HD.2210) 3085 0 R (HD.2211) 3086 0 R (HD.2212) 3088 0 R (HD.2213) 3089 0 R (HD.2214) 3090 0 R (HD.2215) 3091 0 R (HD.2216) 3092 0 R (HD.2217) 3093 0 R (HD.2218) 3094 0 R (HD.2219) 3095 0 R (HD.222) 881 0 R (HD.2220) 3096 0 R (HD.2221) 3097 0 R (HD.2222) 3098 0 R (HD.2223) 3099 0 R (HD.2224) 3100 0 R (HD.2225) 3101 0 R (HD.2226) 3102 0 R (HD.2227) 3103 0 R (HD.2228) 3104 0 R (HD.2229) 3105 0 R (HD.223) 882 0 R (HD.2230) 3106 0 R (HD.2231) 3107 0 R (HD.2232) 3108 0 R (HD.2233) 3109 0 R (HD.2234) 3110 0 R (HD.2235) 3111 0 R ] /Limits [ (HD.2207) (HD.2235) ] >> +4936 0 obj +<< /Names [ (HD.2207) 3108 0 R (HD.2208) 3109 0 R (HD.2209) 3110 0 R (HD.221) 909 0 R (HD.2210) 3111 0 R (HD.2211) 3112 0 R (HD.2212) 3118 0 R (HD.2213) 3119 0 R (HD.2214) 3120 0 R (HD.2215) 3121 0 R (HD.2216) 3122 0 R (HD.2217) 3123 0 R (HD.2218) 3124 0 R (HD.2219) 3125 0 R (HD.222) 910 0 R (HD.2220) 3126 0 R (HD.2221) 3127 0 R (HD.2222) 3128 0 R (HD.2223) 3129 0 R (HD.2224) 3130 0 R (HD.2225) 3131 0 R (HD.2226) 3132 0 R (HD.2227) 3133 0 R (HD.2228) 3134 0 R (HD.2229) 3135 0 R (HD.223) 911 0 R (HD.2230) 3136 0 R (HD.2231) 3137 0 R (HD.2232) 3138 0 R (HD.2233) 3139 0 R (HD.2234) 3140 0 R (HD.2235) 3141 0 R ] /Limits [ (HD.2207) (HD.2235) ] >> endobj -4575 0 obj -<< /Names [ (HD.2236) 3112 0 R (HD.2237) 3113 0 R (HD.2238) 3114 0 R (HD.2239) 3115 0 R (HD.224) 883 0 R (HD.2240) 3116 0 R (HD.2241) 3118 0 R (HD.2242) 3119 0 R (HD.2243) 3120 0 R (HD.2244) 3121 0 R (HD.2245) 3122 0 R (HD.2246) 3123 0 R (HD.2247) 3124 0 R (HD.2248) 3125 0 R (HD.2249) 3126 0 R (HD.225) 884 0 R (HD.2250) 3127 0 R (HD.2251) 3128 0 R (HD.2252) 3129 0 R (HD.2253) 3130 0 R (HD.2254) 3131 0 R (HD.2255) 3132 0 R (HD.2256) 3133 0 R (HD.2257) 3134 0 R (HD.2258) 3140 0 R (HD.2259) 3141 0 R (HD.226) 885 0 R (HD.2260) 3142 0 R (HD.2261) 3143 0 R (HD.2262) 3144 0 R (HD.2263) 3145 0 R (HD.2264) 3146 0 R ] /Limits [ (HD.2236) (HD.2264) ] >> +4937 0 obj +<< /Names [ (HD.2236) 3142 0 R (HD.2237) 3143 0 R (HD.2238) 3144 0 R (HD.2239) 3145 0 R (HD.224) 912 0 R (HD.2240) 3146 0 R (HD.2241) 3147 0 R (HD.2242) 3152 0 R (HD.2243) 3153 0 R (HD.2244) 3154 0 R (HD.2245) 3155 0 R (HD.2246) 3156 0 R (HD.2247) 3157 0 R (HD.2248) 3158 0 R (HD.2249) 3159 0 R (HD.225) 913 0 R (HD.2250) 3160 0 R (HD.2251) 3161 0 R (HD.2252) 3162 0 R (HD.2253) 3163 0 R (HD.2254) 3164 0 R (HD.2255) 3165 0 R (HD.2256) 3166 0 R (HD.2257) 3167 0 R (HD.2258) 3168 0 R (HD.2259) 3170 0 R (HD.226) 914 0 R (HD.2260) 3171 0 R (HD.2261) 3172 0 R (HD.2262) 3173 0 R (HD.2263) 3174 0 R (HD.2264) 3175 0 R ] /Limits [ (HD.2236) (HD.2264) ] >> endobj -4576 0 obj -<< /Names [ (HD.2265) 3147 0 R (HD.2266) 3148 0 R (HD.2267) 3149 0 R (HD.2268) 3150 0 R (HD.2269) 3151 0 R (HD.227) 886 0 R (HD.2270) 3152 0 R (HD.2271) 3153 0 R (HD.2272) 3154 0 R (HD.2273) 3155 0 R (HD.2274) 3156 0 R (HD.2275) 3157 0 R (HD.2276) 3158 0 R (HD.2277) 3159 0 R (HD.2278) 3160 0 R (HD.2279) 3161 0 R (HD.228) 887 0 R (HD.2280) 3162 0 R (HD.2281) 3163 0 R (HD.2282) 3165 0 R (HD.2283) 3167 0 R (HD.2284) 3168 0 R (HD.2285) 3169 0 R (HD.2286) 3170 0 R (HD.2287) 3171 0 R (HD.2288) 3172 0 R (HD.2289) 3173 0 R (HD.229) 888 0 R (HD.2290) 3174 0 R (HD.2291) 3175 0 R (HD.2292) 3176 0 R (HD.2293) 3177 0 R ] /Limits [ (HD.2265) (HD.2293) ] >> +4938 0 obj +<< /Names [ (HD.2265) 3176 0 R (HD.2266) 3177 0 R (HD.2267) 3178 0 R (HD.2268) 3179 0 R (HD.2269) 3180 0 R (HD.227) 915 0 R (HD.2270) 3181 0 R (HD.2271) 3182 0 R (HD.2272) 3183 0 R (HD.2273) 3184 0 R (HD.2274) 3185 0 R (HD.2275) 3186 0 R (HD.2276) 3187 0 R (HD.2277) 3188 0 R (HD.2278) 3189 0 R (HD.2279) 3190 0 R (HD.228) 916 0 R (HD.2280) 3191 0 R (HD.2281) 3192 0 R (HD.2282) 3193 0 R (HD.2283) 3194 0 R (HD.2284) 3195 0 R (HD.2285) 3196 0 R (HD.2286) 3197 0 R (HD.2287) 3198 0 R (HD.2288) 3199 0 R (HD.2289) 3200 0 R (HD.229) 917 0 R (HD.2290) 3201 0 R (HD.2291) 3202 0 R (HD.2292) 3207 0 R (HD.2293) 3208 0 R ] /Limits [ (HD.2265) (HD.2293) ] >> endobj -4577 0 obj -<< /Names [ (HD.2294) 3178 0 R (HD.2295) 3179 0 R (HD.2296) 3180 0 R (HD.2297) 3181 0 R (HD.2298) 3182 0 R (HD.2299) 3183 0 R (HD.23) 658 0 R (HD.230) 889 0 R (HD.2300) 3184 0 R (HD.2301) 3185 0 R (HD.2302) 3186 0 R (HD.2303) 3187 0 R (HD.2304) 3188 0 R (HD.2305) 3189 0 R (HD.2306) 3190 0 R (HD.2307) 3191 0 R (HD.2308) 3192 0 R (HD.2309) 3193 0 R (HD.231) 890 0 R (HD.2310) 3194 0 R (HD.2311) 3195 0 R (HD.2312) 3200 0 R (HD.2313) 3201 0 R (HD.2314) 3202 0 R (HD.2315) 3203 0 R (HD.2316) 3204 0 R (HD.2317) 3205 0 R (HD.2318) 3206 0 R (HD.2319) 3207 0 R (HD.232) 891 0 R (HD.2320) 3208 0 R (HD.2321) 3209 0 R ] /Limits [ (HD.2294) (HD.2321) ] >> +4939 0 obj +<< /Names [ (HD.2294) 3209 0 R (HD.2295) 3210 0 R (HD.2296) 3211 0 R (HD.2297) 3212 0 R (HD.2298) 3213 0 R (HD.2299) 3214 0 R (HD.23) 687 0 R (HD.230) 922 0 R (HD.2300) 3215 0 R (HD.2301) 3216 0 R (HD.2302) 3217 0 R (HD.2303) 3218 0 R (HD.2304) 3219 0 R (HD.2305) 3220 0 R (HD.2306) 3221 0 R (HD.2307) 3223 0 R (HD.2308) 3224 0 R (HD.2309) 3225 0 R (HD.231) 923 0 R (HD.2310) 3226 0 R (HD.2311) 3227 0 R (HD.2312) 3228 0 R (HD.2313) 3229 0 R (HD.2314) 3230 0 R (HD.2315) 3231 0 R (HD.2316) 3232 0 R (HD.2317) 3233 0 R (HD.2318) 3234 0 R (HD.2319) 3235 0 R (HD.232) 924 0 R (HD.2320) 3236 0 R (HD.2321) 3237 0 R ] /Limits [ (HD.2294) (HD.2321) ] >> endobj -4578 0 obj -<< /Names [ (HD.2322) 3210 0 R (HD.2323) 3211 0 R (HD.2324) 3212 0 R (HD.2325) 3213 0 R (HD.2326) 3214 0 R (HD.2327) 3215 0 R (HD.2328) 3216 0 R (HD.2329) 3217 0 R (HD.233) 892 0 R (HD.2330) 3218 0 R (HD.2331) 3219 0 R (HD.2332) 3220 0 R (HD.2333) 3221 0 R (HD.2334) 3222 0 R (HD.2335) 3223 0 R (HD.2336) 3224 0 R (HD.2337) 3225 0 R (HD.2338) 3226 0 R (HD.2339) 3227 0 R (HD.234) 893 0 R (HD.2340) 3228 0 R (HD.2341) 3229 0 R (HD.2342) 3230 0 R (HD.2343) 3231 0 R (HD.2344) 3232 0 R (HD.2345) 3233 0 R (HD.2346) 3234 0 R (HD.2347) 3235 0 R (HD.2348) 3236 0 R (HD.2349) 3237 0 R (HD.235) 898 0 R (HD.2350) 3238 0 R ] /Limits [ (HD.2322) (HD.2350) ] >> +4940 0 obj +<< /Names [ (HD.2322) 3238 0 R (HD.2323) 3239 0 R (HD.2324) 3240 0 R (HD.2325) 3241 0 R (HD.2326) 3242 0 R (HD.2327) 3243 0 R (HD.2328) 3244 0 R (HD.2329) 3245 0 R (HD.233) 925 0 R (HD.2330) 3246 0 R (HD.2331) 3247 0 R (HD.2332) 3248 0 R (HD.2333) 3249 0 R (HD.2334) 3250 0 R (HD.2335) 3251 0 R (HD.2336) 3252 0 R (HD.2337) 3253 0 R (HD.2338) 3254 0 R (HD.2339) 3255 0 R (HD.234) 926 0 R (HD.2340) 3256 0 R (HD.2341) 3261 0 R (HD.2342) 3262 0 R (HD.2343) 3263 0 R (HD.2344) 3264 0 R (HD.2345) 3265 0 R (HD.2346) 3266 0 R (HD.2347) 3267 0 R (HD.2348) 3268 0 R (HD.2349) 3269 0 R (HD.235) 927 0 R (HD.2350) 3270 0 R ] /Limits [ (HD.2322) (HD.2350) ] >> endobj -4579 0 obj -<< /Names [ (HD.2351) 3239 0 R (HD.2352) 3240 0 R (HD.2353) 3241 0 R (HD.2354) 3242 0 R (HD.2355) 3243 0 R (HD.2356) 3244 0 R (HD.2357) 3245 0 R (HD.2358) 3246 0 R (HD.2359) 3253 0 R (HD.236) 899 0 R (HD.2360) 3254 0 R (HD.2361) 3256 0 R (HD.2362) 3257 0 R (HD.2363) 3258 0 R (HD.2364) 3259 0 R (HD.2365) 3260 0 R (HD.2366) 3261 0 R (HD.2367) 3262 0 R (HD.2368) 3263 0 R (HD.2369) 3264 0 R (HD.237) 900 0 R (HD.2370) 3265 0 R (HD.2371) 3266 0 R (HD.2372) 3268 0 R (HD.2373) 3269 0 R (HD.2374) 3270 0 R (HD.2375) 3271 0 R (HD.2376) 3273 0 R (HD.2377) 3275 0 R (HD.2378) 3276 0 R (HD.2379) 3277 0 R (HD.238) 901 0 R ] /Limits [ (HD.2351) (HD.238) ] >> +4941 0 obj +<< /Names [ (HD.2351) 3271 0 R (HD.2352) 3272 0 R (HD.2353) 3273 0 R (HD.2354) 3274 0 R (HD.2355) 3275 0 R (HD.2356) 3276 0 R (HD.2357) 3277 0 R (HD.2358) 3278 0 R (HD.2359) 3279 0 R (HD.236) 928 0 R (HD.2360) 3280 0 R (HD.2361) 3282 0 R (HD.2362) 3283 0 R (HD.2363) 3284 0 R (HD.2364) 3285 0 R (HD.2365) 3286 0 R (HD.2366) 3287 0 R (HD.2367) 3288 0 R (HD.2368) 3289 0 R (HD.2369) 3290 0 R (HD.237) 929 0 R (HD.2370) 3291 0 R (HD.2371) 3292 0 R (HD.2372) 3293 0 R (HD.2373) 3294 0 R (HD.2374) 3295 0 R (HD.2375) 3296 0 R (HD.2376) 3297 0 R (HD.2377) 3298 0 R (HD.2378) 3299 0 R (HD.2379) 3300 0 R (HD.238) 930 0 R ] /Limits [ (HD.2351) (HD.238) ] >> endobj -4580 0 obj -<< /Names [ (HD.2380) 3278 0 R (HD.2381) 3279 0 R (HD.2382) 3280 0 R (HD.2383) 3281 0 R (HD.2384) 3282 0 R (HD.2385) 3283 0 R (HD.2386) 3284 0 R (HD.2387) 3285 0 R (HD.2388) 3292 0 R (HD.2389) 3293 0 R (HD.239) 902 0 R (HD.2390) 3294 0 R (HD.2391) 3295 0 R (HD.2392) 3296 0 R (HD.2393) 3297 0 R (HD.2394) 3298 0 R (HD.2395) 3299 0 R (HD.2396) 3300 0 R (HD.2397) 3301 0 R (HD.2398) 3302 0 R (HD.2399) 3303 0 R (HD.24) 659 0 R (HD.240) 903 0 R (HD.2400) 3304 0 R (HD.2401) 3305 0 R (HD.2402) 3306 0 R (HD.2403) 3307 0 R (HD.2404) 3308 0 R (HD.2405) 3309 0 R (HD.2406) 3310 0 R (HD.2407) 3311 0 R (HD.2408) 3312 0 R ] /Limits [ (HD.2380) (HD.2408) ] >> +4942 0 obj +<< /Names [ (HD.2380) 3301 0 R (HD.2381) 3302 0 R (HD.2382) 3303 0 R (HD.2383) 3304 0 R (HD.2384) 3305 0 R (HD.2385) 3306 0 R (HD.2386) 3307 0 R (HD.2387) 3308 0 R (HD.2388) 3309 0 R (HD.2389) 3310 0 R (HD.239) 931 0 R (HD.2390) 3311 0 R (HD.2391) 3312 0 R (HD.2392) 3313 0 R (HD.2393) 3314 0 R (HD.2394) 3315 0 R (HD.2395) 3316 0 R (HD.2396) 3317 0 R (HD.2397) 3318 0 R (HD.2398) 3319 0 R (HD.2399) 3320 0 R (HD.24) 688 0 R (HD.240) 932 0 R (HD.2400) 3321 0 R (HD.2401) 3326 0 R (HD.2402) 3327 0 R (HD.2403) 3329 0 R (HD.2404) 3330 0 R (HD.2405) 3331 0 R (HD.2406) 3332 0 R (HD.2407) 3333 0 R (HD.2408) 3334 0 R ] /Limits [ (HD.2380) (HD.2408) ] >> endobj -4581 0 obj -<< /Names [ (HD.2409) 3313 0 R (HD.241) 904 0 R (HD.2410) 3314 0 R (HD.2411) 3315 0 R (HD.2412) 3316 0 R (HD.2413) 3317 0 R (HD.2414) 3318 0 R (HD.2415) 3319 0 R (HD.2416) 3320 0 R (HD.2417) 3321 0 R (HD.2418) 3322 0 R (HD.2419) 3323 0 R (HD.242) 905 0 R (HD.2420) 3324 0 R (HD.2421) 3325 0 R (HD.2422) 3326 0 R (HD.2423) 3327 0 R (HD.2424) 3328 0 R (HD.2425) 3329 0 R (HD.2426) 3330 0 R (HD.2427) 3331 0 R (HD.2428) 3332 0 R (HD.2429) 3333 0 R (HD.243) 906 0 R (HD.2430) 3334 0 R (HD.2431) 3335 0 R (HD.2432) 3336 0 R (HD.2433) 3337 0 R (HD.2434) 3344 0 R (HD.2435) 3345 0 R (HD.2436) 3346 0 R (HD.2437) 3347 0 R ] /Limits [ (HD.2409) (HD.2437) ] >> +4943 0 obj +<< /Names [ (HD.2409) 3335 0 R (HD.241) 933 0 R (HD.2410) 3336 0 R (HD.2411) 3337 0 R (HD.2412) 3338 0 R (HD.2413) 3339 0 R (HD.2414) 3340 0 R (HD.2415) 3341 0 R (HD.2416) 3342 0 R (HD.2417) 3343 0 R (HD.2418) 3344 0 R (HD.2419) 3345 0 R (HD.242) 934 0 R (HD.2420) 3346 0 R (HD.2421) 3347 0 R (HD.2422) 3349 0 R (HD.2423) 3350 0 R (HD.2424) 3351 0 R (HD.2425) 3352 0 R (HD.2426) 3353 0 R (HD.2427) 3354 0 R (HD.2428) 3355 0 R (HD.2429) 3356 0 R (HD.243) 935 0 R (HD.2430) 3357 0 R (HD.2431) 3358 0 R (HD.2432) 3359 0 R (HD.2433) 3360 0 R (HD.2434) 3361 0 R (HD.2435) 3362 0 R (HD.2436) 3363 0 R (HD.2437) 3364 0 R ] /Limits [ (HD.2409) (HD.2437) ] >> endobj -4582 0 obj -<< /Names [ (HD.2438) 3348 0 R (HD.2439) 3349 0 R (HD.244) 907 0 R (HD.2440) 3350 0 R (HD.2441) 3351 0 R (HD.2442) 3352 0 R (HD.2443) 3353 0 R (HD.2444) 3354 0 R (HD.2445) 3355 0 R (HD.2446) 3356 0 R (HD.2447) 3357 0 R (HD.2448) 3358 0 R (HD.2449) 3359 0 R (HD.245) 908 0 R (HD.2450) 3360 0 R (HD.2451) 3361 0 R (HD.2452) 3362 0 R (HD.2453) 3363 0 R (HD.2454) 3364 0 R (HD.2455) 3365 0 R (HD.2456) 3366 0 R (HD.2457) 3367 0 R (HD.2458) 3368 0 R (HD.2459) 3369 0 R (HD.246) 909 0 R (HD.2460) 3370 0 R (HD.2461) 3371 0 R (HD.2462) 3372 0 R (HD.2463) 3373 0 R (HD.2464) 3374 0 R (HD.2465) 3375 0 R (HD.2466) 3376 0 R ] /Limits [ (HD.2438) (HD.2466) ] >> +4944 0 obj +<< /Names [ (HD.2438) 3365 0 R (HD.2439) 3366 0 R (HD.244) 936 0 R (HD.2440) 3367 0 R (HD.2441) 3368 0 R (HD.2442) 3369 0 R (HD.2443) 3370 0 R (HD.2444) 3371 0 R (HD.2445) 3372 0 R (HD.2446) 3373 0 R (HD.2447) 3374 0 R (HD.2448) 3375 0 R (HD.2449) 3376 0 R (HD.245) 937 0 R (HD.2450) 3377 0 R (HD.2451) 3378 0 R (HD.2452) 3383 0 R (HD.2453) 3384 0 R (HD.2454) 3385 0 R (HD.2455) 3386 0 R (HD.2456) 3387 0 R (HD.2457) 3388 0 R (HD.2458) 3389 0 R (HD.2459) 3390 0 R (HD.246) 938 0 R (HD.2460) 3391 0 R (HD.2461) 3392 0 R (HD.2462) 3393 0 R (HD.2463) 3394 0 R (HD.2464) 3395 0 R (HD.2465) 3396 0 R (HD.2466) 3397 0 R ] /Limits [ (HD.2438) (HD.2466) ] >> endobj -4583 0 obj -<< /Names [ (HD.2467) 3377 0 R (HD.2468) 3378 0 R (HD.2469) 3379 0 R (HD.247) 910 0 R (HD.2470) 3380 0 R (HD.2471) 3381 0 R (HD.2472) 3382 0 R (HD.2473) 3383 0 R (HD.2474) 3384 0 R (HD.2475) 3385 0 R (HD.2476) 3386 0 R (HD.2477) 3387 0 R (HD.2478) 3388 0 R (HD.2479) 3389 0 R (HD.248) 911 0 R (HD.2480) 3391 0 R (HD.2481) 3397 0 R (HD.2482) 3398 0 R (HD.2483) 3399 0 R (HD.2484) 3400 0 R (HD.2485) 3402 0 R (HD.2486) 3403 0 R (HD.2487) 3404 0 R (HD.2488) 3405 0 R (HD.2489) 3406 0 R (HD.249) 912 0 R (HD.2490) 3407 0 R (HD.2491) 3408 0 R (HD.2492) 3409 0 R (HD.2493) 3410 0 R (HD.2494) 3411 0 R (HD.2495) 3412 0 R ] /Limits [ (HD.2467) (HD.2495) ] >> +4945 0 obj +<< /Names [ (HD.2467) 3398 0 R (HD.2468) 3399 0 R (HD.2469) 3400 0 R (HD.247) 939 0 R (HD.2470) 3401 0 R (HD.2471) 3402 0 R (HD.2472) 3403 0 R (HD.2473) 3404 0 R (HD.2474) 3405 0 R (HD.2475) 3406 0 R (HD.2476) 3407 0 R (HD.2477) 3408 0 R (HD.2478) 3409 0 R (HD.2479) 3410 0 R (HD.248) 940 0 R (HD.2480) 3411 0 R (HD.2481) 3412 0 R (HD.2482) 3413 0 R (HD.2483) 3414 0 R (HD.2484) 3415 0 R (HD.2485) 3416 0 R (HD.2486) 3417 0 R (HD.2487) 3418 0 R (HD.2488) 3419 0 R (HD.2489) 3420 0 R (HD.249) 941 0 R (HD.2490) 3421 0 R (HD.2491) 3422 0 R (HD.2492) 3423 0 R (HD.2493) 3424 0 R (HD.2494) 3425 0 R (HD.2495) 3426 0 R ] /Limits [ (HD.2467) (HD.2495) ] >> endobj -4584 0 obj -<< /Names [ (HD.2496) 3413 0 R (HD.2497) 3415 0 R (HD.2498) 3416 0 R (HD.2499) 3417 0 R (HD.25) 660 0 R (HD.250) 913 0 R (HD.2500) 3418 0 R (HD.2501) 3419 0 R (HD.2502) 3420 0 R (HD.2503) 3421 0 R (HD.2504) 3422 0 R (HD.2505) 3423 0 R (HD.2506) 3424 0 R (HD.2507) 3425 0 R (HD.2508) 3426 0 R (HD.2509) 3427 0 R (HD.251) 914 0 R (HD.2510) 3428 0 R (HD.2511) 3429 0 R (HD.2512) 3430 0 R (HD.2513) 3431 0 R (HD.2514) 3432 0 R (HD.2515) 3433 0 R (HD.2516) 3434 0 R (HD.2517) 3435 0 R (HD.2518) 3436 0 R (HD.2519) 3437 0 R (HD.252) 915 0 R (HD.2520) 3438 0 R (HD.2521) 3439 0 R (HD.2522) 3440 0 R (HD.2523) 3441 0 R ] /Limits [ (HD.2496) (HD.2523) ] >> +4946 0 obj +<< /Names [ (HD.2496) 3427 0 R (HD.2497) 3432 0 R (HD.2498) 3433 0 R (HD.2499) 3434 0 R (HD.25) 689 0 R (HD.250) 942 0 R (HD.2500) 3435 0 R (HD.2501) 3436 0 R (HD.2502) 3437 0 R (HD.2503) 3438 0 R (HD.2504) 3439 0 R (HD.2505) 3440 0 R (HD.2506) 3441 0 R (HD.2507) 3442 0 R (HD.2508) 3443 0 R (HD.2509) 3444 0 R (HD.251) 943 0 R (HD.2510) 3446 0 R (HD.2511) 3447 0 R (HD.2512) 3448 0 R (HD.2513) 3449 0 R (HD.2514) 3450 0 R (HD.2515) 3451 0 R (HD.2516) 3452 0 R (HD.2517) 3453 0 R (HD.2518) 3454 0 R (HD.2519) 3455 0 R (HD.252) 944 0 R (HD.2520) 3456 0 R (HD.2521) 3458 0 R (HD.2522) 3459 0 R (HD.2523) 3460 0 R ] /Limits [ (HD.2496) (HD.2523) ] >> endobj -4585 0 obj -<< /Names [ (HD.2524) 3442 0 R (HD.2525) 3443 0 R (HD.2526) 3444 0 R (HD.2527) 3445 0 R (HD.2528) 3446 0 R (HD.2529) 3447 0 R (HD.253) 916 0 R (HD.2530) 3448 0 R (HD.2531) 3449 0 R (HD.2532) 3450 0 R (HD.2533) 3456 0 R (HD.2534) 3457 0 R (HD.2535) 3458 0 R (HD.2536) 3459 0 R (HD.2537) 3460 0 R (HD.2538) 3461 0 R (HD.2539) 3462 0 R (HD.254) 917 0 R (HD.2540) 3463 0 R (HD.2541) 3464 0 R (HD.2542) 3465 0 R (HD.2543) 3466 0 R (HD.2544) 3467 0 R (HD.2545) 3468 0 R (HD.2546) 3469 0 R (HD.2547) 3470 0 R (HD.2548) 3471 0 R (HD.2549) 3472 0 R (HD.255) 918 0 R (HD.2550) 3473 0 R (HD.2551) 3474 0 R (HD.2552) 3475 0 R ] /Limits [ (HD.2524) (HD.2552) ] >> +4947 0 obj +<< /Names [ (HD.2524) 3461 0 R (HD.2525) 3463 0 R (HD.2526) 3470 0 R (HD.2527) 3471 0 R (HD.2528) 3472 0 R (HD.2529) 3473 0 R (HD.253) 945 0 R (HD.2530) 3474 0 R (HD.2531) 3475 0 R (HD.2532) 3476 0 R (HD.2533) 3477 0 R (HD.2534) 3478 0 R (HD.2535) 3479 0 R (HD.2536) 3480 0 R (HD.2537) 3482 0 R (HD.2538) 3483 0 R (HD.2539) 3484 0 R (HD.254) 946 0 R (HD.2540) 3485 0 R (HD.2541) 3486 0 R (HD.2542) 3487 0 R (HD.2543) 3488 0 R (HD.2544) 3489 0 R (HD.2545) 3490 0 R (HD.2546) 3491 0 R (HD.2547) 3492 0 R (HD.2548) 3493 0 R (HD.2549) 3494 0 R (HD.255) 947 0 R (HD.2550) 3495 0 R (HD.2551) 3496 0 R (HD.2552) 3497 0 R ] /Limits [ (HD.2524) (HD.2552) ] >> endobj -4586 0 obj -<< /Names [ (HD.2553) 3476 0 R (HD.2554) 3477 0 R (HD.2555) 3478 0 R (HD.2556) 3479 0 R (HD.2557) 3480 0 R (HD.2558) 3481 0 R (HD.2559) 3482 0 R (HD.256) 919 0 R (HD.2560) 3483 0 R (HD.2561) 3484 0 R (HD.2562) 3485 0 R (HD.2563) 3486 0 R (HD.2564) 3487 0 R (HD.2565) 3488 0 R (HD.2566) 3489 0 R (HD.2567) 3490 0 R (HD.2568) 3491 0 R (HD.2569) 3492 0 R (HD.257) 920 0 R (HD.2570) 3493 0 R (HD.2571) 3494 0 R (HD.2572) 3495 0 R (HD.2573) 3496 0 R (HD.2574) 3497 0 R (HD.2575) 3498 0 R (HD.2576) 3499 0 R (HD.2577) 3500 0 R (HD.2578) 3501 0 R (HD.2579) 3502 0 R (HD.258) 921 0 R (HD.2580) 3503 0 R (HD.2581) 3504 0 R ] /Limits [ (HD.2553) (HD.2581) ] >> +4948 0 obj +<< /Names [ (HD.2553) 3498 0 R (HD.2554) 3499 0 R (HD.2555) 3500 0 R (HD.2556) 3501 0 R (HD.2557) 3502 0 R (HD.2558) 3503 0 R (HD.2559) 3504 0 R (HD.256) 948 0 R (HD.2560) 3505 0 R (HD.2561) 3506 0 R (HD.2562) 3507 0 R (HD.2563) 3508 0 R (HD.2564) 3509 0 R (HD.2565) 3510 0 R (HD.2566) 3511 0 R (HD.2567) 3512 0 R (HD.2568) 3513 0 R (HD.2569) 3514 0 R (HD.257) 949 0 R (HD.2570) 3515 0 R (HD.2571) 3516 0 R (HD.2572) 3517 0 R (HD.2573) 3525 0 R (HD.2574) 3526 0 R (HD.2575) 3527 0 R (HD.2576) 3528 0 R (HD.2577) 3529 0 R (HD.2578) 3530 0 R (HD.2579) 3531 0 R (HD.258) 950 0 R (HD.2580) 3532 0 R (HD.2581) 3533 0 R ] /Limits [ (HD.2553) (HD.2581) ] >> endobj -4587 0 obj -<< /Names [ (HD.2582) 3505 0 R (HD.2583) 3512 0 R (HD.2584) 3513 0 R (HD.2585) 3514 0 R (HD.2586) 3515 0 R (HD.2587) 3516 0 R (HD.2588) 3517 0 R (HD.2589) 3518 0 R (HD.259) 922 0 R (HD.2590) 3519 0 R (HD.2591) 3520 0 R (HD.2592) 3521 0 R (HD.2593) 3522 0 R (HD.2594) 3523 0 R (HD.2595) 3524 0 R (HD.2596) 3525 0 R (HD.2597) 3526 0 R (HD.2598) 3527 0 R (HD.2599) 3528 0 R (HD.26) 661 0 R (HD.260) 923 0 R (HD.2600) 3529 0 R (HD.2601) 3530 0 R (HD.2602) 3531 0 R (HD.2603) 3532 0 R (HD.2604) 3533 0 R (HD.2605) 3534 0 R (HD.2606) 3535 0 R (HD.2607) 3536 0 R (HD.2608) 3537 0 R (HD.2609) 3538 0 R (HD.261) 924 0 R ] /Limits [ (HD.2582) (HD.261) ] >> +4949 0 obj +<< /Names [ (HD.2582) 3534 0 R (HD.2583) 3535 0 R (HD.2584) 3536 0 R (HD.2585) 3537 0 R (HD.2586) 3538 0 R (HD.2587) 3539 0 R (HD.2588) 3540 0 R (HD.2589) 3541 0 R (HD.259) 951 0 R (HD.2590) 3542 0 R (HD.2591) 3543 0 R (HD.2592) 3544 0 R (HD.2593) 3545 0 R (HD.2594) 3546 0 R (HD.2595) 3547 0 R (HD.2596) 3548 0 R (HD.2597) 3549 0 R (HD.2598) 3550 0 R (HD.2599) 3551 0 R (HD.26) 690 0 R (HD.260) 952 0 R (HD.2600) 3552 0 R (HD.2601) 3553 0 R (HD.2602) 3554 0 R (HD.2603) 3555 0 R (HD.2604) 3556 0 R (HD.2605) 3557 0 R (HD.2606) 3558 0 R (HD.2607) 3559 0 R (HD.2608) 3560 0 R (HD.2609) 3561 0 R (HD.261) 953 0 R ] /Limits [ (HD.2582) (HD.261) ] >> endobj -4588 0 obj -<< /Names [ (HD.2610) 3539 0 R (HD.2611) 3540 0 R (HD.2612) 3541 0 R (HD.2613) 3542 0 R (HD.2614) 3543 0 R (HD.2615) 3544 0 R (HD.2616) 3545 0 R (HD.2617) 3546 0 R (HD.2618) 3547 0 R (HD.2619) 3548 0 R (HD.262) 925 0 R (HD.2620) 3549 0 R (HD.2621) 3550 0 R (HD.2622) 3551 0 R (HD.2623) 3552 0 R (HD.2624) 3553 0 R (HD.2625) 3554 0 R (HD.2626) 3555 0 R (HD.2627) 3556 0 R (HD.2628) 3557 0 R (HD.2629) 3558 0 R (HD.263) 926 0 R (HD.2630) 3559 0 R (HD.2631) 3560 0 R (HD.2632) 3561 0 R (HD.2633) 3562 0 R (HD.2634) 3563 0 R (HD.2635) 3564 0 R (HD.2636) 3565 0 R (HD.2637) 3566 0 R (HD.2638) 3567 0 R (HD.2639) 3568 0 R ] /Limits [ (HD.2610) (HD.2639) ] >> +4950 0 obj +<< /Names [ (HD.2610) 3562 0 R (HD.2611) 3563 0 R (HD.2612) 3568 0 R (HD.2613) 3569 0 R (HD.2614) 3570 0 R (HD.2615) 3571 0 R (HD.2616) 3572 0 R (HD.2617) 3573 0 R (HD.2618) 3574 0 R (HD.2619) 3575 0 R (HD.262) 954 0 R (HD.2620) 3576 0 R (HD.2621) 3577 0 R (HD.2622) 3578 0 R (HD.2623) 3579 0 R (HD.2624) 3580 0 R (HD.2625) 3581 0 R (HD.2626) 3582 0 R (HD.2627) 3583 0 R (HD.2628) 3584 0 R (HD.2629) 3585 0 R (HD.263) 955 0 R (HD.2630) 3586 0 R (HD.2631) 3587 0 R (HD.2632) 3588 0 R (HD.2633) 3590 0 R (HD.2634) 3592 0 R (HD.2635) 3593 0 R (HD.2636) 3594 0 R (HD.2637) 3595 0 R (HD.2638) 3597 0 R (HD.2639) 3598 0 R ] /Limits [ (HD.2610) (HD.2639) ] >> endobj -4589 0 obj -<< /Names [ (HD.264) 927 0 R (HD.2640) 3569 0 R (HD.2641) 3570 0 R (HD.2642) 3571 0 R (HD.2643) 3572 0 R (HD.2644) 3573 0 R (HD.2645) 3574 0 R (HD.2646) 3579 0 R (HD.2647) 3580 0 R (HD.2648) 3581 0 R (HD.2649) 3582 0 R (HD.265) 928 0 R (HD.2650) 3583 0 R (HD.2651) 3584 0 R (HD.2652) 3585 0 R (HD.2653) 3586 0 R (HD.2654) 3587 0 R (HD.2655) 3588 0 R (HD.2656) 3589 0 R (HD.2657) 3590 0 R (HD.2658) 3591 0 R (HD.2659) 3592 0 R (HD.266) 929 0 R (HD.2660) 3593 0 R (HD.2661) 3594 0 R (HD.2662) 3595 0 R (HD.2663) 3596 0 R (HD.2664) 3597 0 R (HD.2665) 3598 0 R (HD.2666) 3599 0 R (HD.2667) 3600 0 R (HD.2668) 3601 0 R ] /Limits [ (HD.264) (HD.2668) ] >> +4951 0 obj +<< /Names [ (HD.264) 956 0 R (HD.2640) 3599 0 R (HD.2641) 3600 0 R (HD.2642) 3601 0 R (HD.2643) 3602 0 R (HD.2644) 3603 0 R (HD.2645) 3604 0 R (HD.2646) 3605 0 R (HD.2647) 3606 0 R (HD.2648) 3607 0 R (HD.2649) 3608 0 R (HD.265) 961 0 R (HD.2650) 3614 0 R (HD.2651) 3615 0 R (HD.2652) 3616 0 R (HD.2653) 3617 0 R (HD.2654) 3618 0 R (HD.2655) 3619 0 R (HD.2656) 3620 0 R (HD.2657) 3621 0 R (HD.2658) 3622 0 R (HD.2659) 3623 0 R (HD.266) 962 0 R (HD.2660) 3624 0 R (HD.2661) 3625 0 R (HD.2662) 3626 0 R (HD.2663) 3627 0 R (HD.2664) 3628 0 R (HD.2665) 3629 0 R (HD.2666) 3630 0 R (HD.2667) 3631 0 R (HD.2668) 3632 0 R ] /Limits [ (HD.264) (HD.2668) ] >> endobj -4590 0 obj -<< /Names [ (HD.2669) 3602 0 R (HD.267) 934 0 R (HD.2670) 3603 0 R (HD.2671) 3604 0 R (HD.2672) 3605 0 R (HD.2673) 3606 0 R (HD.2674) 3607 0 R (HD.2675) 3608 0 R (HD.2676) 3609 0 R (HD.2677) 3610 0 R (HD.2678) 3611 0 R (HD.2679) 3612 0 R (HD.268) 935 0 R (HD.2680) 3613 0 R (HD.2681) 3614 0 R (HD.2682) 3615 0 R (HD.2683) 3616 0 R (HD.2684) 3617 0 R (HD.2685) 3618 0 R (HD.2686) 3619 0 R (HD.2687) 3620 0 R (HD.2688) 3621 0 R (HD.2689) 3622 0 R (HD.269) 936 0 R (HD.2690) 3623 0 R (HD.2691) 3624 0 R (HD.2692) 3625 0 R (HD.2693) 3626 0 R (HD.2694) 3627 0 R (HD.2695) 3628 0 R (HD.2696) 3629 0 R (HD.2697) 3635 0 R ] /Limits [ (HD.2669) (HD.2697) ] >> +4952 0 obj +<< /Names [ (HD.2669) 3633 0 R (HD.267) 963 0 R (HD.2670) 3634 0 R (HD.2671) 3635 0 R (HD.2672) 3636 0 R (HD.2673) 3637 0 R (HD.2674) 3638 0 R (HD.2675) 3639 0 R (HD.2676) 3640 0 R (HD.2677) 3641 0 R (HD.2678) 3642 0 R (HD.2679) 3643 0 R (HD.268) 964 0 R (HD.2680) 3644 0 R (HD.2681) 3645 0 R (HD.2682) 3646 0 R (HD.2683) 3647 0 R (HD.2684) 3648 0 R (HD.2685) 3649 0 R (HD.2686) 3650 0 R (HD.2687) 3651 0 R (HD.2688) 3652 0 R (HD.2689) 3653 0 R (HD.269) 965 0 R (HD.2690) 3654 0 R (HD.2691) 3655 0 R (HD.2692) 3656 0 R (HD.2693) 3657 0 R (HD.2694) 3658 0 R (HD.2695) 3659 0 R (HD.2696) 3660 0 R (HD.2697) 3661 0 R ] /Limits [ (HD.2669) (HD.2697) ] >> endobj -4591 0 obj -<< /Names [ (HD.2698) 3636 0 R (HD.2699) 3637 0 R (HD.27) 662 0 R (HD.270) 937 0 R (HD.2700) 3638 0 R (HD.2701) 3639 0 R (HD.2702) 3640 0 R (HD.2703) 3641 0 R (HD.2704) 3642 0 R (HD.2705) 3643 0 R (HD.2706) 3644 0 R (HD.2707) 3645 0 R (HD.2708) 3646 0 R (HD.2709) 3647 0 R (HD.271) 938 0 R (HD.2710) 3648 0 R (HD.2711) 3649 0 R (HD.2712) 3650 0 R (HD.2713) 3651 0 R (HD.2714) 3652 0 R (HD.2715) 3653 0 R (HD.2716) 3654 0 R (HD.2717) 3655 0 R (HD.2718) 3656 0 R (HD.2719) 3657 0 R (HD.272) 939 0 R (HD.2720) 3658 0 R (HD.2721) 3659 0 R (HD.2722) 3660 0 R (HD.2723) 3661 0 R (HD.2724) 3662 0 R (HD.2725) 3663 0 R ] /Limits [ (HD.2698) (HD.2725) ] >> +4953 0 obj +<< /Names [ (HD.2698) 3662 0 R (HD.2699) 3663 0 R (HD.27) 691 0 R (HD.270) 966 0 R (HD.2700) 3664 0 R (HD.2701) 3665 0 R (HD.2702) 3666 0 R (HD.2703) 3667 0 R (HD.2704) 3668 0 R (HD.2705) 3669 0 R (HD.2706) 3670 0 R (HD.2707) 3671 0 R (HD.2708) 3672 0 R (HD.2709) 3673 0 R (HD.271) 967 0 R (HD.2710) 3679 0 R (HD.2711) 3680 0 R (HD.2712) 3681 0 R (HD.2713) 3682 0 R (HD.2714) 3683 0 R (HD.2715) 3684 0 R (HD.2716) 3685 0 R (HD.2717) 3686 0 R (HD.2718) 3687 0 R (HD.2719) 3688 0 R (HD.272) 968 0 R (HD.2720) 3689 0 R (HD.2721) 3690 0 R (HD.2722) 3691 0 R (HD.2723) 3692 0 R (HD.2724) 3693 0 R (HD.2725) 3694 0 R ] /Limits [ (HD.2698) (HD.2725) ] >> endobj -4592 0 obj -<< /Names [ (HD.2726) 3664 0 R (HD.2727) 3665 0 R (HD.2728) 3666 0 R (HD.2729) 3667 0 R (HD.273) 940 0 R (HD.2730) 3668 0 R (HD.2731) 3669 0 R (HD.2732) 3674 0 R (HD.2733) 3675 0 R (HD.2734) 3676 0 R (HD.2735) 3677 0 R (HD.2736) 3678 0 R (HD.2737) 3679 0 R (HD.2738) 3680 0 R (HD.2739) 3681 0 R (HD.274) 941 0 R (HD.2740) 3682 0 R (HD.2741) 3683 0 R (HD.2742) 3684 0 R (HD.2743) 3685 0 R (HD.2744) 3686 0 R (HD.2745) 3687 0 R (HD.2746) 3688 0 R (HD.2747) 3689 0 R (HD.2748) 3690 0 R (HD.2749) 3691 0 R (HD.275) 942 0 R (HD.2750) 3692 0 R (HD.2751) 3693 0 R (HD.2752) 3694 0 R (HD.2753) 3695 0 R (HD.2754) 3696 0 R ] /Limits [ (HD.2726) (HD.2754) ] >> +4954 0 obj +<< /Names [ (HD.2726) 3695 0 R (HD.2727) 3696 0 R (HD.2728) 3697 0 R (HD.2729) 3698 0 R (HD.273) 969 0 R (HD.2730) 3699 0 R (HD.2731) 3700 0 R (HD.2732) 3701 0 R (HD.2733) 3702 0 R (HD.2734) 3703 0 R (HD.2735) 3704 0 R (HD.2736) 3705 0 R (HD.2737) 3706 0 R (HD.2738) 3707 0 R (HD.2739) 3708 0 R (HD.274) 970 0 R (HD.2740) 3709 0 R (HD.2741) 3710 0 R (HD.2742) 3711 0 R (HD.2743) 3712 0 R (HD.2744) 3713 0 R (HD.2745) 3714 0 R (HD.2746) 3715 0 R (HD.2747) 3716 0 R (HD.2748) 3717 0 R (HD.2749) 3718 0 R (HD.275) 971 0 R (HD.2750) 3719 0 R (HD.2751) 3720 0 R (HD.2752) 3727 0 R (HD.2753) 3728 0 R (HD.2754) 3729 0 R ] /Limits [ (HD.2726) (HD.2754) ] >> endobj -4593 0 obj -<< /Names [ (HD.2755) 3697 0 R (HD.2756) 3698 0 R (HD.2757) 3699 0 R (HD.2758) 3700 0 R (HD.2759) 3701 0 R (HD.276) 943 0 R (HD.2760) 3702 0 R (HD.2761) 3703 0 R (HD.2762) 3704 0 R (HD.2763) 3705 0 R (HD.2764) 3706 0 R (HD.2765) 3707 0 R (HD.2766) 3708 0 R (HD.2767) 3709 0 R (HD.2768) 3710 0 R (HD.2769) 3711 0 R (HD.277) 944 0 R (HD.2770) 3712 0 R (HD.2771) 3713 0 R (HD.2772) 3714 0 R (HD.2773) 3715 0 R (HD.2774) 3716 0 R (HD.2775) 3717 0 R (HD.2776) 3718 0 R (HD.2777) 3719 0 R (HD.2778) 3720 0 R (HD.2779) 3725 0 R (HD.278) 945 0 R (HD.2780) 3726 0 R (HD.2781) 3727 0 R (HD.2782) 3728 0 R (HD.2783) 3729 0 R ] /Limits [ (HD.2755) (HD.2783) ] >> +4955 0 obj +<< /Names [ (HD.2755) 3730 0 R (HD.2756) 3731 0 R (HD.2757) 3732 0 R (HD.2758) 3733 0 R (HD.2759) 3734 0 R (HD.276) 972 0 R (HD.2760) 3735 0 R (HD.2761) 3736 0 R (HD.2762) 3737 0 R (HD.2763) 3738 0 R (HD.2764) 3739 0 R (HD.2765) 3740 0 R (HD.2766) 3741 0 R (HD.2767) 3742 0 R (HD.2768) 3743 0 R (HD.2769) 3744 0 R (HD.277) 973 0 R (HD.2770) 3745 0 R (HD.2771) 3746 0 R (HD.2772) 3747 0 R (HD.2773) 3748 0 R (HD.2774) 3749 0 R (HD.2775) 3750 0 R (HD.2776) 3751 0 R (HD.2777) 3752 0 R (HD.2778) 3753 0 R (HD.2779) 3754 0 R (HD.278) 974 0 R (HD.2780) 3755 0 R (HD.2781) 3756 0 R (HD.2782) 3757 0 R (HD.2783) 3758 0 R ] /Limits [ (HD.2755) (HD.2783) ] >> endobj -4594 0 obj -<< /Names [ (HD.2784) 3730 0 R (HD.2785) 3731 0 R (HD.2786) 3732 0 R (HD.2787) 3733 0 R (HD.2788) 3734 0 R (HD.2789) 3735 0 R (HD.279) 946 0 R (HD.2790) 3736 0 R (HD.2791) 3737 0 R (HD.2792) 3738 0 R (HD.2793) 3739 0 R (HD.2794) 3740 0 R (HD.2795) 3741 0 R (HD.2796) 3742 0 R (HD.2797) 3743 0 R (HD.2798) 3744 0 R (HD.2799) 3745 0 R (HD.28) 663 0 R (HD.280) 947 0 R (HD.2800) 3746 0 R (HD.2801) 3747 0 R (HD.2802) 3748 0 R (HD.2803) 3749 0 R (HD.2804) 3750 0 R (HD.2805) 3751 0 R (HD.2806) 3752 0 R (HD.2807) 3753 0 R (HD.2808) 3754 0 R (HD.2809) 3755 0 R (HD.281) 948 0 R (HD.2810) 3756 0 R (HD.2811) 3757 0 R ] /Limits [ (HD.2784) (HD.2811) ] >> +4956 0 obj +<< /Names [ (HD.2784) 3759 0 R (HD.2785) 3760 0 R (HD.2786) 3761 0 R (HD.2787) 3762 0 R (HD.2788) 3763 0 R (HD.2789) 3764 0 R (HD.279) 975 0 R (HD.2790) 3765 0 R (HD.2791) 3766 0 R (HD.2792) 3767 0 R (HD.2793) 3768 0 R (HD.2794) 3769 0 R (HD.2795) 3770 0 R (HD.2796) 3771 0 R (HD.2797) 3772 0 R (HD.2798) 3773 0 R (HD.2799) 3774 0 R (HD.28) 692 0 R (HD.280) 976 0 R (HD.2800) 3775 0 R (HD.2801) 3780 0 R (HD.2802) 3781 0 R (HD.2803) 3782 0 R (HD.2804) 3783 0 R (HD.2805) 3784 0 R (HD.2806) 3785 0 R (HD.2807) 3786 0 R (HD.2808) 3787 0 R (HD.2809) 3788 0 R (HD.281) 977 0 R (HD.2810) 3789 0 R (HD.2811) 3790 0 R ] /Limits [ (HD.2784) (HD.2811) ] >> endobj -4595 0 obj -<< /Names [ (HD.2812) 3758 0 R (HD.2813) 3759 0 R (HD.2814) 3760 0 R (HD.2815) 3761 0 R (HD.2816) 3762 0 R (HD.2817) 3763 0 R (HD.2818) 3764 0 R (HD.2819) 3765 0 R (HD.282) 949 0 R (HD.2820) 3770 0 R (HD.2821) 3771 0 R (HD.2822) 3772 0 R (HD.2823) 3773 0 R (HD.2824) 3774 0 R (HD.2825) 3775 0 R (HD.2826) 3776 0 R (HD.2827) 3777 0 R (HD.2828) 3778 0 R (HD.2829) 3779 0 R (HD.283) 950 0 R (HD.2830) 3780 0 R (HD.2831) 3781 0 R (HD.2832) 3782 0 R (HD.2833) 3783 0 R (HD.2834) 3784 0 R (HD.2835) 3785 0 R (HD.2836) 3786 0 R (HD.2837) 3787 0 R (HD.2838) 3788 0 R (HD.2839) 3789 0 R (HD.284) 951 0 R (HD.2840) 3790 0 R ] /Limits [ (HD.2812) (HD.2840) ] >> +4957 0 obj +<< /Names [ (HD.2812) 3791 0 R (HD.2813) 3792 0 R (HD.2814) 3793 0 R (HD.2815) 3794 0 R (HD.2816) 3795 0 R (HD.2817) 3796 0 R (HD.2818) 3797 0 R (HD.2819) 3798 0 R (HD.282) 978 0 R (HD.2820) 3799 0 R (HD.2821) 3800 0 R (HD.2822) 3801 0 R (HD.2823) 3802 0 R (HD.2824) 3803 0 R (HD.2825) 3804 0 R (HD.2826) 3805 0 R (HD.2827) 3806 0 R (HD.2828) 3807 0 R (HD.2829) 3808 0 R (HD.283) 979 0 R (HD.2830) 3809 0 R (HD.2831) 3810 0 R (HD.2832) 3811 0 R (HD.2833) 3812 0 R (HD.2834) 3813 0 R (HD.2835) 3814 0 R (HD.2836) 3815 0 R (HD.2837) 3816 0 R (HD.2838) 3817 0 R (HD.2839) 3818 0 R (HD.284) 980 0 R (HD.2840) 3819 0 R ] /Limits [ (HD.2812) (HD.2840) ] >> endobj -4596 0 obj -<< /Names [ (HD.2841) 3791 0 R (HD.2842) 3792 0 R (HD.2843) 3793 0 R (HD.2844) 3794 0 R (HD.2845) 3795 0 R (HD.2846) 3796 0 R (HD.2847) 3797 0 R (HD.2848) 3798 0 R (HD.2849) 3799 0 R (HD.285) 952 0 R (HD.2850) 3800 0 R (HD.2851) 3801 0 R (HD.2852) 3802 0 R (HD.2853) 3803 0 R (HD.2854) 3804 0 R (HD.2855) 3805 0 R (HD.2856) 3806 0 R (HD.2857) 3807 0 R (HD.2858) 3808 0 R (HD.2859) 3809 0 R (HD.286) 953 0 R (HD.2860) 3810 0 R (HD.2861) 3811 0 R (HD.2862) 3812 0 R (HD.2863) 3813 0 R (HD.2864) 3814 0 R (HD.2865) 3815 0 R (HD.2866) 3816 0 R (HD.2867) 3817 0 R (HD.2868) 3822 0 R (HD.2869) 3823 0 R (HD.287) 954 0 R ] /Limits [ (HD.2841) (HD.287) ] >> +4958 0 obj +<< /Names [ (HD.2841) 3820 0 R (HD.2842) 3821 0 R (HD.2843) 3822 0 R (HD.2844) 3823 0 R (HD.2845) 3824 0 R (HD.2846) 3829 0 R (HD.2847) 3830 0 R (HD.2848) 3831 0 R (HD.2849) 3832 0 R (HD.285) 981 0 R (HD.2850) 3833 0 R (HD.2851) 3834 0 R (HD.2852) 3835 0 R (HD.2853) 3836 0 R (HD.2854) 3837 0 R (HD.2855) 3838 0 R (HD.2856) 3839 0 R (HD.2857) 3840 0 R (HD.2858) 3841 0 R (HD.2859) 3842 0 R (HD.286) 982 0 R (HD.2860) 3843 0 R (HD.2861) 3844 0 R (HD.2862) 3845 0 R (HD.2863) 3846 0 R (HD.2864) 3847 0 R (HD.2865) 3848 0 R (HD.2866) 3849 0 R (HD.2867) 3850 0 R (HD.2868) 3851 0 R (HD.2869) 3852 0 R (HD.287) 983 0 R ] /Limits [ (HD.2841) (HD.287) ] >> endobj -4597 0 obj -<< /Names [ (HD.2870) 3824 0 R (HD.2871) 3825 0 R (HD.2872) 3826 0 R (HD.2873) 3827 0 R (HD.2874) 3828 0 R (HD.2875) 3829 0 R (HD.2876) 3830 0 R (HD.2877) 3831 0 R (HD.2878) 3832 0 R (HD.2879) 3833 0 R (HD.288) 955 0 R (HD.2880) 3834 0 R (HD.2881) 3835 0 R (HD.2882) 3836 0 R (HD.2883) 3837 0 R (HD.2884) 3838 0 R (HD.2885) 3839 0 R (HD.2886) 3840 0 R (HD.2887) 3841 0 R (HD.2888) 3842 0 R (HD.2889) 3843 0 R (HD.289) 956 0 R (HD.2890) 3844 0 R (HD.2891) 3845 0 R (HD.2892) 3846 0 R (HD.2893) 3847 0 R (HD.2894) 3848 0 R (HD.2895) 3849 0 R (HD.2896) 3850 0 R (HD.2897) 3851 0 R (HD.2898) 3852 0 R (HD.2899) 3853 0 R ] /Limits [ (HD.2870) (HD.2899) ] >> +4959 0 obj +<< /Names [ (HD.2870) 3853 0 R (HD.2871) 3854 0 R (HD.2872) 3855 0 R (HD.2873) 3856 0 R (HD.2874) 3857 0 R (HD.2875) 3858 0 R (HD.2876) 3859 0 R (HD.2877) 3860 0 R (HD.2878) 3861 0 R (HD.2879) 3862 0 R (HD.288) 984 0 R (HD.2880) 3863 0 R (HD.2881) 3864 0 R (HD.2882) 3865 0 R (HD.2883) 3866 0 R (HD.2884) 3867 0 R (HD.2885) 3868 0 R (HD.2886) 3869 0 R (HD.2887) 3870 0 R (HD.2888) 3871 0 R (HD.2889) 3872 0 R (HD.289) 985 0 R (HD.2890) 3873 0 R (HD.2891) 3874 0 R (HD.2892) 3875 0 R (HD.2893) 3880 0 R (HD.2894) 3881 0 R (HD.2895) 3882 0 R (HD.2896) 3883 0 R (HD.2897) 3884 0 R (HD.2898) 3885 0 R (HD.2899) 3886 0 R ] /Limits [ (HD.2870) (HD.2899) ] >> endobj -4598 0 obj -<< /Names [ (HD.29) 664 0 R (HD.290) 957 0 R (HD.2900) 3854 0 R (HD.2901) 3855 0 R (HD.2902) 3856 0 R (HD.2903) 3857 0 R (HD.2904) 3858 0 R (HD.2905) 3859 0 R (HD.2906) 3860 0 R (HD.2907) 3865 0 R (HD.2908) 3866 0 R (HD.2909) 3867 0 R (HD.291) 958 0 R (HD.2910) 3868 0 R (HD.2911) 3869 0 R (HD.2912) 3870 0 R (HD.2913) 3871 0 R (HD.2914) 3872 0 R (HD.2915) 3873 0 R (HD.2916) 3874 0 R (HD.2917) 3875 0 R (HD.2918) 3876 0 R (HD.2919) 3877 0 R (HD.292) 959 0 R (HD.2920) 3878 0 R (HD.2921) 3879 0 R (HD.2922) 3880 0 R (HD.2923) 3881 0 R (HD.2924) 3882 0 R (HD.2925) 3883 0 R (HD.2926) 3884 0 R (HD.2927) 3885 0 R ] /Limits [ (HD.29) (HD.2927) ] >> +4960 0 obj +<< /Names [ (HD.29) 693 0 R (HD.290) 986 0 R (HD.2900) 3887 0 R (HD.2901) 3888 0 R (HD.2902) 3889 0 R (HD.2903) 3890 0 R (HD.2904) 3891 0 R (HD.2905) 3892 0 R (HD.2906) 3893 0 R (HD.2907) 3894 0 R (HD.2908) 3895 0 R (HD.2909) 3896 0 R (HD.291) 987 0 R (HD.2910) 3897 0 R (HD.2911) 3898 0 R (HD.2912) 3899 0 R (HD.2913) 3900 0 R (HD.2914) 3901 0 R (HD.2915) 3902 0 R (HD.2916) 3903 0 R (HD.2917) 3904 0 R (HD.2918) 3905 0 R (HD.2919) 3906 0 R (HD.292) 988 0 R (HD.2920) 3907 0 R (HD.2921) 3908 0 R (HD.2922) 3909 0 R (HD.2923) 3910 0 R (HD.2924) 3911 0 R (HD.2925) 3912 0 R (HD.2926) 3917 0 R (HD.2927) 3918 0 R ] /Limits [ (HD.29) (HD.2927) ] >> endobj -4599 0 obj -<< /Names [ (HD.2928) 3886 0 R (HD.2929) 3887 0 R (HD.293) 960 0 R (HD.2930) 3888 0 R (HD.2931) 3889 0 R (HD.2932) 3890 0 R (HD.2933) 3891 0 R (HD.2934) 3892 0 R (HD.2935) 3893 0 R (HD.2936) 3894 0 R (HD.2937) 3895 0 R (HD.2938) 3896 0 R (HD.2939) 3897 0 R (HD.294) 961 0 R (HD.2940) 3898 0 R (HD.2941) 3899 0 R (HD.2942) 3900 0 R (HD.2943) 3901 0 R (HD.2944) 3902 0 R (HD.2945) 3903 0 R (HD.2946) 3904 0 R (HD.2947) 3905 0 R (HD.2948) 3906 0 R (HD.2949) 3907 0 R (HD.295) 962 0 R (HD.2950) 3908 0 R (HD.2951) 3909 0 R (HD.2952) 3910 0 R (HD.2953) 3911 0 R (HD.2954) 3912 0 R (HD.2955) 3913 0 R (HD.2956) 3914 0 R ] /Limits [ (HD.2928) (HD.2956) ] >> +4961 0 obj +<< /Names [ (HD.2928) 3919 0 R (HD.2929) 3920 0 R (HD.293) 989 0 R (HD.2930) 3921 0 R (HD.2931) 3922 0 R (HD.2932) 3923 0 R (HD.2933) 3924 0 R (HD.2934) 3925 0 R (HD.2935) 3926 0 R (HD.2936) 3927 0 R (HD.2937) 3928 0 R (HD.2938) 3929 0 R (HD.2939) 3930 0 R (HD.294) 990 0 R (HD.2940) 3931 0 R (HD.2941) 3932 0 R (HD.2942) 3933 0 R (HD.2943) 3934 0 R (HD.2944) 3935 0 R (HD.2945) 3936 0 R (HD.2946) 3937 0 R (HD.2947) 3938 0 R (HD.2948) 3939 0 R (HD.2949) 3940 0 R (HD.295) 991 0 R (HD.2950) 3941 0 R (HD.2951) 3942 0 R (HD.2952) 3943 0 R (HD.2953) 3944 0 R (HD.2954) 3945 0 R (HD.2955) 3946 0 R (HD.2956) 3947 0 R ] /Limits [ (HD.2928) (HD.2956) ] >> endobj -4600 0 obj -<< /Names [ (HD.2957) 3915 0 R (HD.2958) 3916 0 R (HD.2959) 3921 0 R (HD.296) 963 0 R (HD.2960) 3922 0 R (HD.2961) 3923 0 R (HD.2962) 3924 0 R (HD.2963) 3925 0 R (HD.2964) 3926 0 R (HD.2965) 3927 0 R (HD.2966) 3928 0 R (HD.2967) 3929 0 R (HD.2968) 3930 0 R (HD.2969) 3931 0 R (HD.297) 964 0 R (HD.2970) 3932 0 R (HD.2971) 3933 0 R (HD.2972) 3934 0 R (HD.2973) 3935 0 R (HD.2974) 3936 0 R (HD.2975) 3937 0 R (HD.2976) 3938 0 R (HD.2977) 3939 0 R (HD.2978) 3940 0 R (HD.2979) 3941 0 R (HD.298) 965 0 R (HD.2980) 3942 0 R (HD.2981) 3943 0 R (HD.2982) 3944 0 R (HD.2983) 3945 0 R (HD.2984) 3946 0 R (HD.2985) 3947 0 R ] /Limits [ (HD.2957) (HD.2985) ] >> +4962 0 obj +<< /Names [ (HD.2957) 3948 0 R (HD.2958) 3949 0 R (HD.2959) 3950 0 R (HD.296) 992 0 R (HD.2960) 3951 0 R (HD.2961) 3952 0 R (HD.2962) 3953 0 R (HD.2963) 3954 0 R (HD.2964) 3955 0 R (HD.2965) 3956 0 R (HD.2966) 3957 0 R (HD.2967) 3958 0 R (HD.2968) 3959 0 R (HD.2969) 3960 0 R (HD.297) 993 0 R (HD.2970) 3961 0 R (HD.2971) 3966 0 R (HD.2972) 3967 0 R (HD.2973) 3968 0 R (HD.2974) 3969 0 R (HD.2975) 3970 0 R (HD.2976) 3971 0 R (HD.2977) 3972 0 R (HD.2978) 3973 0 R (HD.2979) 3974 0 R (HD.298) 994 0 R (HD.2980) 3975 0 R (HD.2981) 3976 0 R (HD.2982) 3977 0 R (HD.2983) 3978 0 R (HD.2984) 3979 0 R (HD.2985) 3980 0 R ] /Limits [ (HD.2957) (HD.2985) ] >> endobj -4601 0 obj -<< /Names [ (HD.2986) 3948 0 R (HD.2987) 3949 0 R (HD.2988) 3950 0 R (HD.2989) 3951 0 R (HD.299) 966 0 R (HD.2990) 3952 0 R (HD.2991) 3953 0 R (HD.2992) 3954 0 R (HD.2993) 3955 0 R (HD.2994) 3956 0 R (HD.2995) 3957 0 R (HD.2996) 3958 0 R (HD.2997) 3959 0 R (HD.2998) 3960 0 R (HD.2999) 3961 0 R (HD.3) 638 0 R (HD.30) 665 0 R (HD.300) 967 0 R (HD.3000) 3962 0 R (HD.3001) 3963 0 R (HD.3002) 3964 0 R (HD.3003) 3965 0 R (HD.3004) 3966 0 R (HD.3005) 3971 0 R (HD.3006) 3972 0 R (HD.3007) 3973 0 R (HD.3008) 3974 0 R (HD.3009) 3975 0 R (HD.301) 968 0 R (HD.3010) 3976 0 R (HD.3011) 3977 0 R (HD.3012) 3978 0 R ] /Limits [ (HD.2986) (HD.3012) ] >> +4963 0 obj +<< /Names [ (HD.2986) 3981 0 R (HD.2987) 3982 0 R (HD.2988) 3983 0 R (HD.2989) 3984 0 R (HD.299) 995 0 R (HD.2990) 3985 0 R (HD.2991) 3986 0 R (HD.2992) 3987 0 R (HD.2993) 3988 0 R (HD.2994) 3989 0 R (HD.2995) 3990 0 R (HD.2996) 3991 0 R (HD.2997) 3992 0 R (HD.2998) 3993 0 R (HD.2999) 3994 0 R (HD.3) 667 0 R (HD.30) 694 0 R (HD.300) 996 0 R (HD.3000) 3995 0 R (HD.3001) 3996 0 R (HD.3002) 3997 0 R (HD.3003) 3998 0 R (HD.3004) 3999 0 R (HD.3005) 4000 0 R (HD.3006) 4001 0 R (HD.3007) 4002 0 R (HD.3008) 4003 0 R (HD.3009) 4004 0 R (HD.301) 997 0 R (HD.3010) 4005 0 R (HD.3011) 4006 0 R (HD.3012) 4007 0 R ] /Limits [ (HD.2986) (HD.3012) ] >> endobj -4602 0 obj -<< /Names [ (HD.3013) 3979 0 R (HD.3014) 3980 0 R (HD.3015) 3981 0 R (HD.3016) 3982 0 R (HD.3017) 3983 0 R (HD.3018) 3984 0 R (HD.3019) 3985 0 R (HD.302) 969 0 R (HD.3020) 3986 0 R (HD.3021) 3987 0 R (HD.3022) 3988 0 R (HD.3023) 3989 0 R (HD.3024) 3990 0 R (HD.3025) 3991 0 R (HD.3026) 3992 0 R (HD.3027) 3993 0 R (HD.3028) 3994 0 R (HD.3029) 3995 0 R (HD.303) 970 0 R (HD.3030) 3996 0 R (HD.3031) 3997 0 R (HD.3032) 3998 0 R (HD.3033) 3999 0 R (HD.3034) 4000 0 R (HD.3035) 4001 0 R (HD.3036) 4002 0 R (HD.3037) 4003 0 R (HD.3038) 4004 0 R (HD.3039) 4005 0 R (HD.304) 971 0 R (HD.3040) 4006 0 R (HD.3041) 4007 0 R ] /Limits [ (HD.3013) (HD.3041) ] >> +4964 0 obj +<< /Names [ (HD.3013) 4008 0 R (HD.3014) 4009 0 R (HD.3015) 4010 0 R (HD.3016) 4011 0 R (HD.3017) 4012 0 R (HD.3018) 4013 0 R (HD.3019) 4019 0 R (HD.302) 998 0 R (HD.3020) 4020 0 R (HD.3021) 4021 0 R (HD.3022) 4022 0 R (HD.3023) 4023 0 R (HD.3024) 4024 0 R (HD.3025) 4025 0 R (HD.3026) 4026 0 R (HD.3027) 4027 0 R (HD.3028) 4028 0 R (HD.3029) 4029 0 R (HD.303) 999 0 R (HD.3030) 4030 0 R (HD.3031) 4031 0 R (HD.3032) 4032 0 R (HD.3033) 4033 0 R (HD.3034) 4034 0 R (HD.3035) 4035 0 R (HD.3036) 4036 0 R (HD.3037) 4037 0 R (HD.3038) 4038 0 R (HD.3039) 4039 0 R (HD.304) 1000 0 R (HD.3040) 4040 0 R (HD.3041) 4041 0 R ] /Limits [ (HD.3013) (HD.3041) ] >> endobj -4603 0 obj -<< /Names [ (HD.3042) 4008 0 R (HD.3043) 4009 0 R (HD.3044) 4010 0 R (HD.3045) 4011 0 R (HD.3046) 4012 0 R (HD.3047) 4013 0 R (HD.3048) 4014 0 R (HD.3049) 4015 0 R (HD.305) 972 0 R (HD.3050) 4016 0 R (HD.3051) 4017 0 R (HD.3052) 4018 0 R (HD.3053) 4019 0 R (HD.3054) 4020 0 R (HD.3055) 4025 0 R (HD.3056) 4026 0 R (HD.3057) 4027 0 R (HD.3058) 4028 0 R (HD.3059) 4029 0 R (HD.306) 973 0 R (HD.3060) 4030 0 R (HD.3061) 4031 0 R (HD.3062) 4032 0 R (HD.3063) 4033 0 R (HD.3064) 4034 0 R (HD.3065) 4035 0 R (HD.3066) 4036 0 R (HD.3067) 4037 0 R (HD.3068) 4038 0 R (HD.3069) 4039 0 R (HD.307) 974 0 R (HD.3070) 4040 0 R ] /Limits [ (HD.3042) (HD.3070) ] >> +4965 0 obj +<< /Names [ (HD.3042) 4042 0 R (HD.3043) 4043 0 R (HD.3044) 4044 0 R (HD.3045) 4045 0 R (HD.3046) 4046 0 R (HD.3047) 4047 0 R (HD.3048) 4048 0 R (HD.3049) 4049 0 R (HD.305) 1001 0 R (HD.3050) 4050 0 R (HD.3051) 4051 0 R (HD.3052) 4052 0 R (HD.3053) 4053 0 R (HD.3054) 4054 0 R (HD.3055) 4055 0 R (HD.3056) 4056 0 R (HD.3057) 4057 0 R (HD.3058) 4058 0 R (HD.3059) 4063 0 R (HD.306) 1002 0 R (HD.3060) 4064 0 R (HD.3061) 4065 0 R (HD.3062) 4066 0 R (HD.3063) 4067 0 R (HD.3064) 4068 0 R (HD.3065) 4069 0 R (HD.3066) 4070 0 R (HD.3067) 4071 0 R (HD.3068) 4072 0 R (HD.3069) 4073 0 R (HD.307) 1003 0 R (HD.3070) 4074 0 R ] /Limits [ (HD.3042) (HD.3070) ] >> endobj -4604 0 obj -<< /Names [ (HD.3071) 4041 0 R (HD.3072) 4042 0 R (HD.3073) 4043 0 R (HD.3074) 4044 0 R (HD.3075) 4045 0 R (HD.3076) 4046 0 R (HD.3077) 4047 0 R (HD.3078) 4048 0 R (HD.3079) 4049 0 R (HD.308) 975 0 R (HD.3080) 4050 0 R (HD.3081) 4051 0 R (HD.3082) 4052 0 R (HD.3083) 4053 0 R (HD.3084) 4054 0 R (HD.3085) 4055 0 R (HD.3086) 4056 0 R (HD.3087) 4057 0 R (HD.3088) 4058 0 R (HD.3089) 4059 0 R (HD.309) 976 0 R (HD.3090) 4060 0 R (HD.3091) 4061 0 R (HD.3092) 4062 0 R (HD.3093) 4063 0 R (HD.3094) 4064 0 R (HD.3095) 4065 0 R (HD.3096) 4066 0 R (HD.3097) 4067 0 R (HD.3098) 4068 0 R (HD.3099) 4069 0 R (HD.31) 666 0 R ] /Limits [ (HD.3071) (HD.31) ] >> +4966 0 obj +<< /Names [ (HD.3071) 4075 0 R (HD.3072) 4076 0 R (HD.3073) 4077 0 R (HD.3074) 4078 0 R (HD.3075) 4079 0 R (HD.3076) 4080 0 R (HD.3077) 4081 0 R (HD.3078) 4082 0 R (HD.3079) 4083 0 R (HD.308) 1004 0 R (HD.3080) 4084 0 R (HD.3081) 4085 0 R (HD.3082) 4086 0 R (HD.3083) 4087 0 R (HD.3084) 4088 0 R (HD.3085) 4089 0 R (HD.3086) 4090 0 R (HD.3087) 4091 0 R (HD.3088) 4092 0 R (HD.3089) 4093 0 R (HD.309) 1012 0 R (HD.3090) 4094 0 R (HD.3091) 4095 0 R (HD.3092) 4096 0 R (HD.3093) 4097 0 R (HD.3094) 4098 0 R (HD.3095) 4099 0 R (HD.3096) 4100 0 R (HD.3097) 4101 0 R (HD.3098) 4102 0 R (HD.3099) 4107 0 R (HD.31) 695 0 R ] /Limits [ (HD.3071) (HD.31) ] >> endobj -4605 0 obj -<< /Names [ (HD.310) 977 0 R (HD.3100) 4070 0 R (HD.3101) 4071 0 R (HD.3102) 4072 0 R (HD.3103) 4073 0 R (HD.3104) 4074 0 R (HD.3105) 4075 0 R (HD.3106) 4076 0 R (HD.3107) 4077 0 R (HD.3108) 4078 0 R (HD.3109) 4079 0 R (HD.311) 978 0 R (HD.3110) 4080 0 R (HD.3111) 4081 0 R (HD.3112) 4082 0 R (HD.3113) 4083 0 R (HD.3114) 4084 0 R (HD.3115) 4085 0 R (HD.3116) 4086 0 R (HD.3117) 4091 0 R (HD.3118) 4092 0 R (HD.3119) 4093 0 R (HD.312) 979 0 R (HD.3120) 4094 0 R (HD.3121) 4095 0 R (HD.3122) 4096 0 R (HD.3123) 4097 0 R (HD.3124) 4098 0 R (HD.3125) 4099 0 R (HD.3126) 4100 0 R (HD.3127) 4101 0 R (HD.3128) 4102 0 R ] /Limits [ (HD.310) (HD.3128) ] >> +4967 0 obj +<< /Names [ (HD.310) 1013 0 R (HD.3100) 4108 0 R (HD.3101) 4109 0 R (HD.3102) 4110 0 R (HD.3103) 4111 0 R (HD.3104) 4112 0 R (HD.3105) 4113 0 R (HD.3106) 4114 0 R (HD.3107) 4115 0 R (HD.3108) 4116 0 R (HD.3109) 4117 0 R (HD.311) 1014 0 R (HD.3110) 4118 0 R (HD.3111) 4119 0 R (HD.3112) 4120 0 R (HD.3113) 4121 0 R (HD.3114) 4122 0 R (HD.3115) 4123 0 R (HD.3116) 4124 0 R (HD.3117) 4125 0 R (HD.3118) 4126 0 R (HD.3119) 4127 0 R (HD.312) 1015 0 R (HD.3120) 4128 0 R (HD.3121) 4129 0 R (HD.3122) 4130 0 R (HD.3123) 4131 0 R (HD.3124) 4132 0 R (HD.3125) 4133 0 R (HD.3126) 4134 0 R (HD.3127) 4135 0 R (HD.3128) 4136 0 R ] /Limits [ (HD.310) (HD.3128) ] >> endobj -4606 0 obj -<< /Names [ (HD.3129) 4103 0 R (HD.313) 980 0 R (HD.3130) 4104 0 R (HD.3131) 4105 0 R (HD.3132) 4106 0 R (HD.3133) 4107 0 R (HD.3134) 4108 0 R (HD.3135) 4109 0 R (HD.3136) 4110 0 R (HD.3137) 4111 0 R (HD.3138) 4112 0 R (HD.3139) 4113 0 R (HD.314) 981 0 R (HD.3140) 4114 0 R (HD.3141) 4115 0 R (HD.3142) 4116 0 R (HD.3143) 4117 0 R (HD.3144) 4118 0 R (HD.3145) 4119 0 R (HD.3146) 4120 0 R (HD.3147) 4121 0 R (HD.3148) 4122 0 R (HD.3149) 4123 0 R (HD.315) 982 0 R (HD.3150) 4124 0 R (HD.3151) 4125 0 R (HD.3152) 4126 0 R (HD.3153) 4127 0 R (HD.3154) 4128 0 R (HD.3155) 4129 0 R (HD.3156) 4130 0 R (HD.3157) 4131 0 R ] /Limits [ (HD.3129) (HD.3157) ] >> +4968 0 obj +<< /Names [ (HD.3129) 4137 0 R (HD.313) 1016 0 R (HD.3130) 4138 0 R (HD.3131) 4139 0 R (HD.3132) 4140 0 R (HD.3133) 4141 0 R (HD.3134) 4142 0 R (HD.3135) 4143 0 R (HD.3136) 4144 0 R (HD.3137) 4145 0 R (HD.3138) 4146 0 R (HD.3139) 4147 0 R (HD.314) 1017 0 R (HD.3140) 4148 0 R (HD.3141) 4149 0 R (HD.3142) 4150 0 R (HD.3143) 4151 0 R (HD.3144) 4152 0 R (HD.3145) 4153 0 R (HD.3146) 4154 0 R (HD.3147) 4155 0 R (HD.3148) 4156 0 R (HD.3149) 4161 0 R (HD.315) 1018 0 R (HD.3150) 4162 0 R (HD.3151) 4163 0 R (HD.3152) 4164 0 R (HD.3153) 4165 0 R (HD.3154) 4166 0 R (HD.3155) 4167 0 R (HD.3156) 4168 0 R (HD.3157) 4169 0 R ] /Limits [ (HD.3129) (HD.3157) ] >> endobj -4607 0 obj -<< /Names [ (HD.3158) 4132 0 R (HD.3159) 4133 0 R (HD.316) 983 0 R (HD.3160) 4134 0 R (HD.3161) 4135 0 R (HD.3162) 4136 0 R (HD.3163) 4137 0 R (HD.3164) 4138 0 R (HD.3165) 4139 0 R (HD.3166) 4140 0 R (HD.3167) 4141 0 R (HD.3168) 4142 0 R (HD.3169) 4148 0 R (HD.317) 984 0 R (HD.3170) 4149 0 R (HD.3171) 4150 0 R (HD.3172) 4151 0 R (HD.3173) 4152 0 R (HD.3174) 4153 0 R (HD.3175) 4154 0 R (HD.3176) 4155 0 R (HD.3177) 4156 0 R (HD.3178) 4157 0 R (HD.3179) 4158 0 R (HD.318) 985 0 R (HD.3180) 4159 0 R (HD.3181) 4160 0 R (HD.3182) 4161 0 R (HD.3183) 4162 0 R (HD.3184) 4163 0 R (HD.3185) 4164 0 R (HD.3186) 4165 0 R ] /Limits [ (HD.3158) (HD.3186) ] >> +4969 0 obj +<< /Names [ (HD.3158) 4170 0 R (HD.3159) 4171 0 R (HD.316) 1019 0 R (HD.3160) 4172 0 R (HD.3161) 4173 0 R (HD.3162) 4174 0 R (HD.3163) 4175 0 R (HD.3164) 4176 0 R (HD.3165) 4177 0 R (HD.3166) 4178 0 R (HD.3167) 4179 0 R (HD.3168) 4180 0 R (HD.3169) 4181 0 R (HD.317) 1020 0 R (HD.3170) 4182 0 R (HD.3171) 4183 0 R (HD.3172) 4184 0 R (HD.3173) 4185 0 R (HD.3174) 4186 0 R (HD.3175) 4187 0 R (HD.3176) 4188 0 R (HD.3177) 4189 0 R (HD.3178) 4190 0 R (HD.3179) 4191 0 R (HD.318) 1021 0 R (HD.3180) 4192 0 R (HD.3181) 4193 0 R (HD.3182) 4194 0 R (HD.3183) 4199 0 R (HD.3184) 4200 0 R (HD.3185) 4201 0 R (HD.3186) 4202 0 R ] /Limits [ (HD.3158) (HD.3186) ] >> endobj -4608 0 obj -<< /Names [ (HD.3187) 4166 0 R (HD.3188) 4167 0 R (HD.3189) 4168 0 R (HD.319) 986 0 R (HD.3190) 4169 0 R (HD.3191) 4170 0 R (HD.3192) 4171 0 R (HD.3193) 4172 0 R (HD.3194) 4173 0 R (HD.3195) 4174 0 R (HD.3196) 4175 0 R (HD.3197) 4176 0 R (HD.3198) 4177 0 R (HD.3199) 4178 0 R (HD.32) 667 0 R (HD.320) 987 0 R (HD.3200) 4179 0 R (HD.3201) 4180 0 R (HD.3202) 4181 0 R (HD.3203) 4182 0 R (HD.3204) 4183 0 R (HD.3205) 4184 0 R (HD.3206) 4185 0 R (HD.3207) 4186 0 R (HD.3208) 4187 0 R (HD.3209) 4188 0 R (HD.321) 994 0 R (HD.3210) 4189 0 R (HD.3211) 4190 0 R (HD.3212) 4191 0 R (HD.3213) 4192 0 R (HD.3214) 4193 0 R ] /Limits [ (HD.3187) (HD.3214) ] >> +4970 0 obj +<< /Names [ (HD.3187) 4203 0 R (HD.3188) 4204 0 R (HD.3189) 4205 0 R (HD.319) 1022 0 R (HD.3190) 4206 0 R (HD.3191) 4207 0 R (HD.3192) 4208 0 R (HD.3193) 4209 0 R (HD.3194) 4210 0 R (HD.3195) 4211 0 R (HD.3196) 4212 0 R (HD.3197) 4213 0 R (HD.3198) 4214 0 R (HD.3199) 4215 0 R (HD.32) 696 0 R (HD.320) 1023 0 R (HD.3200) 4216 0 R (HD.3201) 4217 0 R (HD.3202) 4218 0 R (HD.3203) 4219 0 R (HD.3204) 4220 0 R (HD.3205) 4221 0 R (HD.3206) 4222 0 R (HD.3207) 4223 0 R (HD.3208) 4224 0 R (HD.3209) 4225 0 R (HD.321) 1024 0 R (HD.3210) 4226 0 R (HD.3211) 4227 0 R (HD.3212) 4228 0 R (HD.3213) 4229 0 R (HD.3214) 4230 0 R ] /Limits [ (HD.3187) (HD.3214) ] >> endobj -4609 0 obj -<< /Names [ (HD.3215) 4194 0 R (HD.3216) 4195 0 R (HD.322) 995 0 R (HD.323) 996 0 R (HD.324) 997 0 R (HD.325) 998 0 R (HD.326) 999 0 R (HD.327) 1000 0 R (HD.328) 1001 0 R (HD.329) 1002 0 R (HD.33) 668 0 R (HD.330) 1003 0 R (HD.331) 1004 0 R (HD.332) 1005 0 R (HD.333) 1006 0 R (HD.334) 1007 0 R (HD.335) 1008 0 R (HD.336) 1009 0 R (HD.337) 1010 0 R (HD.338) 1011 0 R (HD.339) 1012 0 R (HD.34) 669 0 R (HD.340) 1013 0 R (HD.341) 1014 0 R (HD.342) 1015 0 R (HD.343) 1016 0 R (HD.344) 1017 0 R (HD.345) 1018 0 R (HD.346) 1019 0 R (HD.347) 1020 0 R (HD.348) 1021 0 R (HD.349) 1022 0 R ] /Limits [ (HD.3215) (HD.349) ] >> +4971 0 obj +<< /Names [ (HD.3215) 4231 0 R (HD.3216) 4232 0 R (HD.3217) 4233 0 R (HD.3218) 4234 0 R (HD.3219) 4235 0 R (HD.322) 1025 0 R (HD.3220) 4236 0 R (HD.3221) 4237 0 R (HD.3222) 4238 0 R (HD.3223) 4239 0 R (HD.3224) 4240 0 R (HD.3225) 4241 0 R (HD.3226) 4242 0 R (HD.3227) 4243 0 R (HD.3228) 4244 0 R (HD.3229) 4245 0 R (HD.323) 1026 0 R (HD.3230) 4246 0 R (HD.3231) 4247 0 R (HD.3232) 4252 0 R (HD.3233) 4253 0 R (HD.3234) 4254 0 R (HD.3235) 4255 0 R (HD.3236) 4256 0 R (HD.3237) 4257 0 R (HD.3238) 4258 0 R (HD.3239) 4259 0 R (HD.324) 1027 0 R (HD.3240) 4260 0 R (HD.3241) 4261 0 R (HD.3242) 4262 0 R (HD.3243) 4263 0 R ] /Limits [ (HD.3215) (HD.3243) ] >> endobj -4610 0 obj -<< /Names [ (HD.35) 670 0 R (HD.350) 1023 0 R (HD.351) 1024 0 R (HD.352) 1025 0 R (HD.353) 1032 0 R (HD.354) 1033 0 R (HD.355) 1034 0 R (HD.356) 1035 0 R (HD.357) 1036 0 R (HD.358) 1037 0 R (HD.359) 1038 0 R (HD.36) 671 0 R (HD.360) 1039 0 R (HD.361) 1040 0 R (HD.362) 1041 0 R (HD.363) 1042 0 R (HD.364) 1043 0 R (HD.365) 1044 0 R (HD.366) 1045 0 R (HD.367) 1046 0 R (HD.368) 1047 0 R (HD.369) 1048 0 R (HD.37) 676 0 R (HD.370) 1049 0 R (HD.371) 1050 0 R (HD.372) 1051 0 R (HD.373) 1052 0 R (HD.374) 1053 0 R (HD.375) 1054 0 R (HD.376) 1055 0 R (HD.377) 1056 0 R (HD.378) 1057 0 R ] /Limits [ (HD.35) (HD.378) ] >> +4972 0 obj +<< /Names [ (HD.3244) 4264 0 R (HD.3245) 4265 0 R (HD.3246) 4266 0 R (HD.3247) 4267 0 R (HD.3248) 4268 0 R (HD.3249) 4269 0 R (HD.325) 1028 0 R (HD.3250) 4270 0 R (HD.3251) 4271 0 R (HD.3252) 4272 0 R (HD.3253) 4273 0 R (HD.3254) 4274 0 R (HD.3255) 4275 0 R (HD.3256) 4276 0 R (HD.3257) 4277 0 R (HD.3258) 4278 0 R (HD.3259) 4279 0 R (HD.326) 1029 0 R (HD.3260) 4280 0 R (HD.3261) 4281 0 R (HD.3262) 4282 0 R (HD.3263) 4283 0 R (HD.3264) 4284 0 R (HD.3265) 4285 0 R (HD.3266) 4286 0 R (HD.3267) 4287 0 R (HD.3268) 4288 0 R (HD.3269) 4289 0 R (HD.327) 1030 0 R (HD.3270) 4290 0 R (HD.3271) 4291 0 R (HD.3272) 4292 0 R ] /Limits [ (HD.3244) (HD.3272) ] >> endobj -4611 0 obj -<< /Names [ (HD.379) 1058 0 R (HD.38) 677 0 R (HD.380) 1059 0 R (HD.381) 1060 0 R (HD.382) 1061 0 R (HD.383) 1062 0 R (HD.384) 1063 0 R (HD.385) 1064 0 R (HD.386) 1065 0 R (HD.387) 1066 0 R (HD.388) 1067 0 R (HD.389) 1068 0 R (HD.39) 678 0 R (HD.390) 1069 0 R (HD.391) 1070 0 R (HD.392) 1071 0 R (HD.393) 1072 0 R (HD.394) 1073 0 R (HD.395) 1074 0 R (HD.396) 1075 0 R (HD.397) 1076 0 R (HD.398) 1077 0 R (HD.399) 1078 0 R (HD.4) 639 0 R (HD.40) 679 0 R (HD.400) 1079 0 R (HD.401) 1080 0 R (HD.402) 1081 0 R (HD.403) 1082 0 R (HD.404) 1083 0 R (HD.405) 1088 0 R (HD.406) 1089 0 R ] /Limits [ (HD.379) (HD.406) ] >> +4973 0 obj +<< /Names [ (HD.3273) 4293 0 R (HD.3274) 4294 0 R (HD.3275) 4295 0 R (HD.3276) 4296 0 R (HD.3277) 4297 0 R (HD.3278) 4298 0 R (HD.3279) 4299 0 R (HD.328) 1031 0 R (HD.3280) 4300 0 R (HD.3281) 4301 0 R (HD.3282) 4302 0 R (HD.3283) 4303 0 R (HD.3284) 4304 0 R (HD.3285) 4305 0 R (HD.3286) 4306 0 R (HD.3287) 4307 0 R (HD.3288) 4312 0 R (HD.3289) 4313 0 R (HD.329) 1032 0 R (HD.3290) 4314 0 R (HD.3291) 4315 0 R (HD.3292) 4316 0 R (HD.3293) 4317 0 R (HD.3294) 4318 0 R (HD.3295) 4319 0 R (HD.3296) 4320 0 R (HD.3297) 4321 0 R (HD.3298) 4322 0 R (HD.3299) 4323 0 R (HD.33) 697 0 R (HD.330) 1033 0 R (HD.3300) 4324 0 R ] /Limits [ (HD.3273) (HD.3300) ] >> endobj -4612 0 obj -<< /Names [ (HD.407) 1090 0 R (HD.408) 1091 0 R (HD.409) 1092 0 R (HD.41) 680 0 R (HD.410) 1093 0 R (HD.411) 1094 0 R (HD.412) 1095 0 R (HD.413) 1096 0 R (HD.414) 1097 0 R (HD.415) 1098 0 R (HD.416) 1099 0 R (HD.417) 1100 0 R (HD.418) 1101 0 R (HD.419) 1102 0 R (HD.42) 681 0 R (HD.420) 1103 0 R (HD.421) 1104 0 R (HD.422) 1105 0 R (HD.423) 1106 0 R (HD.424) 1107 0 R (HD.425) 1108 0 R (HD.426) 1109 0 R (HD.427) 1110 0 R (HD.428) 1111 0 R (HD.429) 1112 0 R (HD.43) 682 0 R (HD.430) 1113 0 R (HD.431) 1114 0 R (HD.432) 1115 0 R (HD.433) 1116 0 R (HD.434) 1117 0 R (HD.435) 1118 0 R ] /Limits [ (HD.407) (HD.435) ] >> +4974 0 obj +<< /Names [ (HD.3301) 4325 0 R (HD.3302) 4326 0 R (HD.3303) 4327 0 R (HD.3304) 4328 0 R (HD.3305) 4329 0 R (HD.3306) 4330 0 R (HD.3307) 4331 0 R (HD.3308) 4332 0 R (HD.3309) 4333 0 R (HD.331) 1034 0 R (HD.3310) 4334 0 R (HD.3311) 4335 0 R (HD.3312) 4336 0 R (HD.3313) 4337 0 R (HD.3314) 4338 0 R (HD.3315) 4339 0 R (HD.3316) 4340 0 R (HD.3317) 4341 0 R (HD.3318) 4342 0 R (HD.3319) 4343 0 R (HD.332) 1035 0 R (HD.3320) 4344 0 R (HD.3321) 4345 0 R (HD.3322) 4346 0 R (HD.3323) 4347 0 R (HD.3324) 4348 0 R (HD.3325) 4349 0 R (HD.3326) 4350 0 R (HD.3327) 4351 0 R (HD.3328) 4352 0 R (HD.3329) 4353 0 R (HD.333) 1036 0 R ] /Limits [ (HD.3301) (HD.333) ] >> endobj -4613 0 obj -<< /Names [ (HD.436) 1119 0 R (HD.437) 1120 0 R (HD.438) 1121 0 R (HD.439) 1122 0 R (HD.44) 683 0 R (HD.440) 1123 0 R (HD.441) 1124 0 R (HD.442) 1125 0 R (HD.443) 1126 0 R (HD.444) 1127 0 R (HD.445) 1128 0 R (HD.446) 1129 0 R (HD.447) 1130 0 R (HD.448) 1131 0 R (HD.449) 1132 0 R (HD.45) 684 0 R (HD.450) 1133 0 R (HD.451) 1134 0 R (HD.452) 1135 0 R (HD.453) 1136 0 R (HD.454) 1137 0 R (HD.455) 1138 0 R (HD.456) 1139 0 R (HD.457) 1140 0 R (HD.458) 1141 0 R (HD.459) 1142 0 R (HD.46) 685 0 R (HD.460) 1143 0 R (HD.461) 1144 0 R (HD.462) 1145 0 R (HD.463) 1146 0 R (HD.464) 1151 0 R ] /Limits [ (HD.436) (HD.464) ] >> +4975 0 obj +<< /Names [ (HD.3330) 4354 0 R (HD.3331) 4355 0 R (HD.3332) 4356 0 R (HD.3333) 4361 0 R (HD.3334) 4362 0 R (HD.3335) 4363 0 R (HD.3336) 4364 0 R (HD.3337) 4365 0 R (HD.3338) 4366 0 R (HD.3339) 4367 0 R (HD.334) 1037 0 R (HD.3340) 4368 0 R (HD.3341) 4369 0 R (HD.3342) 4370 0 R (HD.3343) 4371 0 R (HD.3344) 4372 0 R (HD.3345) 4373 0 R (HD.3346) 4374 0 R (HD.3347) 4375 0 R (HD.3348) 4376 0 R (HD.3349) 4377 0 R (HD.335) 1038 0 R (HD.3350) 4378 0 R (HD.3351) 4379 0 R (HD.3352) 4380 0 R (HD.3353) 4381 0 R (HD.3354) 4382 0 R (HD.3355) 4383 0 R (HD.3356) 4384 0 R (HD.3357) 4385 0 R (HD.3358) 4386 0 R (HD.3359) 4387 0 R ] /Limits [ (HD.3330) (HD.3359) ] >> endobj -4614 0 obj -<< /Names [ (HD.465) 1152 0 R (HD.466) 1153 0 R (HD.467) 1154 0 R (HD.468) 1155 0 R (HD.469) 1156 0 R (HD.47) 686 0 R (HD.470) 1157 0 R (HD.471) 1158 0 R (HD.472) 1159 0 R (HD.473) 1160 0 R (HD.474) 1161 0 R (HD.475) 1162 0 R (HD.476) 1163 0 R (HD.477) 1164 0 R (HD.478) 1165 0 R (HD.479) 1166 0 R (HD.48) 687 0 R (HD.480) 1167 0 R (HD.481) 1168 0 R (HD.482) 1169 0 R (HD.483) 1170 0 R (HD.484) 1171 0 R (HD.485) 1172 0 R (HD.486) 1173 0 R (HD.487) 1174 0 R (HD.488) 1175 0 R (HD.489) 1176 0 R (HD.49) 688 0 R (HD.490) 1177 0 R (HD.491) 1178 0 R (HD.492) 1179 0 R (HD.493) 1180 0 R ] /Limits [ (HD.465) (HD.493) ] >> +4976 0 obj +<< /Names [ (HD.336) 1039 0 R (HD.3360) 4388 0 R (HD.3361) 4389 0 R (HD.3362) 4390 0 R (HD.3363) 4391 0 R (HD.3364) 4392 0 R (HD.3365) 4393 0 R (HD.3366) 4394 0 R (HD.3367) 4395 0 R (HD.3368) 4396 0 R (HD.3369) 4397 0 R (HD.337) 1040 0 R (HD.3370) 4398 0 R (HD.3371) 4399 0 R (HD.3372) 4400 0 R (HD.3373) 4401 0 R (HD.3374) 4402 0 R (HD.3375) 4403 0 R (HD.3376) 4404 0 R (HD.3377) 4405 0 R (HD.3378) 4406 0 R (HD.3379) 4407 0 R (HD.338) 1041 0 R (HD.3380) 4408 0 R (HD.3381) 4413 0 R (HD.3382) 4414 0 R (HD.3383) 4415 0 R (HD.3384) 4416 0 R (HD.3385) 4417 0 R (HD.3386) 4418 0 R (HD.3387) 4419 0 R (HD.3388) 4420 0 R ] /Limits [ (HD.336) (HD.3388) ] >> endobj -4615 0 obj -<< /Names [ (HD.494) 1181 0 R (HD.495) 1182 0 R (HD.496) 1183 0 R (HD.497) 1184 0 R (HD.498) 1185 0 R (HD.499) 1186 0 R (HD.5) 640 0 R (HD.50) 689 0 R (HD.500) 1187 0 R (HD.501) 1188 0 R (HD.502) 1189 0 R (HD.503) 1190 0 R (HD.504) 1191 0 R (HD.505) 1192 0 R (HD.506) 1193 0 R (HD.507) 1194 0 R (HD.508) 1195 0 R (HD.509) 1196 0 R (HD.51) 690 0 R (HD.510) 1197 0 R (HD.511) 1198 0 R (HD.512) 1199 0 R (HD.513) 1200 0 R (HD.514) 1201 0 R (HD.515) 1202 0 R (HD.516) 1203 0 R (HD.517) 1204 0 R (HD.518) 1205 0 R (HD.519) 1210 0 R (HD.52) 691 0 R (HD.520) 1211 0 R (HD.521) 1212 0 R ] /Limits [ (HD.494) (HD.521) ] >> +4977 0 obj +<< /Names [ (HD.3389) 4421 0 R (HD.339) 1042 0 R (HD.3390) 4422 0 R (HD.3391) 4423 0 R (HD.3392) 4424 0 R (HD.3393) 4425 0 R (HD.3394) 4426 0 R (HD.3395) 4427 0 R (HD.3396) 4428 0 R (HD.3397) 4429 0 R (HD.3398) 4430 0 R (HD.3399) 4431 0 R (HD.34) 702 0 R (HD.340) 1043 0 R (HD.3400) 4432 0 R (HD.3401) 4433 0 R (HD.3402) 4434 0 R (HD.3403) 4435 0 R (HD.3404) 4436 0 R (HD.3405) 4437 0 R (HD.3406) 4438 0 R (HD.3407) 4439 0 R (HD.3408) 4440 0 R (HD.3409) 4441 0 R (HD.341) 1044 0 R (HD.3410) 4442 0 R (HD.3411) 4443 0 R (HD.3412) 4444 0 R (HD.3413) 4445 0 R (HD.3414) 4446 0 R (HD.3415) 4447 0 R (HD.3416) 4448 0 R ] /Limits [ (HD.3389) (HD.3416) ] >> endobj -4616 0 obj -<< /Names [ (HD.522) 1213 0 R (HD.523) 1214 0 R (HD.524) 1215 0 R (HD.525) 1216 0 R (HD.526) 1217 0 R (HD.527) 1218 0 R (HD.528) 1219 0 R (HD.529) 1220 0 R (HD.53) 692 0 R (HD.530) 1221 0 R (HD.531) 1222 0 R (HD.532) 1223 0 R (HD.533) 1224 0 R (HD.534) 1225 0 R (HD.535) 1226 0 R (HD.536) 1227 0 R (HD.537) 1228 0 R (HD.538) 1229 0 R (HD.539) 1230 0 R (HD.54) 693 0 R (HD.540) 1231 0 R (HD.541) 1232 0 R (HD.542) 1233 0 R (HD.543) 1234 0 R (HD.544) 1235 0 R (HD.545) 1236 0 R (HD.546) 1237 0 R (HD.547) 1238 0 R (HD.548) 1239 0 R (HD.549) 1240 0 R (HD.55) 694 0 R (HD.550) 1241 0 R ] /Limits [ (HD.522) (HD.550) ] >> +4978 0 obj +<< /Names [ (HD.3417) 4449 0 R (HD.3418) 4450 0 R (HD.3419) 4451 0 R (HD.342) 1045 0 R (HD.3420) 4452 0 R (HD.3421) 4453 0 R (HD.3422) 4454 0 R (HD.3423) 4455 0 R (HD.3424) 4456 0 R (HD.3425) 4457 0 R (HD.3426) 4458 0 R (HD.3427) 4459 0 R (HD.3428) 4460 0 R (HD.3429) 4461 0 R (HD.343) 1046 0 R (HD.3430) 4462 0 R (HD.3431) 4463 0 R (HD.3432) 4464 0 R (HD.3433) 4465 0 R (HD.3434) 4466 0 R (HD.3435) 4467 0 R (HD.3436) 4468 0 R (HD.3437) 4469 0 R (HD.3438) 4470 0 R (HD.3439) 4471 0 R (HD.344) 1047 0 R (HD.3440) 4472 0 R (HD.3441) 4473 0 R (HD.3442) 4474 0 R (HD.3443) 4479 0 R (HD.3444) 4480 0 R (HD.3445) 4481 0 R ] /Limits [ (HD.3417) (HD.3445) ] >> endobj -4617 0 obj -<< /Names [ (HD.551) 1242 0 R (HD.552) 1243 0 R (HD.553) 1244 0 R (HD.554) 1245 0 R (HD.555) 1246 0 R (HD.556) 1247 0 R (HD.557) 1248 0 R (HD.558) 1249 0 R (HD.559) 1250 0 R (HD.56) 695 0 R (HD.560) 1251 0 R (HD.561) 1252 0 R (HD.562) 1253 0 R (HD.563) 1254 0 R (HD.564) 1255 0 R (HD.565) 1256 0 R (HD.566) 1257 0 R (HD.567) 1258 0 R (HD.568) 1259 0 R (HD.569) 1260 0 R (HD.57) 696 0 R (HD.570) 1261 0 R (HD.571) 1262 0 R (HD.572) 1263 0 R (HD.573) 1264 0 R (HD.574) 1265 0 R (HD.575) 1266 0 R (HD.576) 1267 0 R (HD.577) 1268 0 R (HD.578) 1269 0 R (HD.579) 1270 0 R (HD.58) 697 0 R ] /Limits [ (HD.551) (HD.58) ] >> +4979 0 obj +<< /Names [ (HD.3446) 4482 0 R (HD.3447) 4483 0 R (HD.3448) 4484 0 R (HD.3449) 4485 0 R (HD.345) 1048 0 R (HD.3450) 4486 0 R (HD.3451) 4487 0 R (HD.3452) 4488 0 R (HD.3453) 4489 0 R (HD.3454) 4490 0 R (HD.3455) 4491 0 R (HD.3456) 4492 0 R (HD.3457) 4493 0 R (HD.3458) 4494 0 R (HD.3459) 4495 0 R (HD.346) 1049 0 R (HD.3460) 4496 0 R (HD.3461) 4497 0 R (HD.3462) 4498 0 R (HD.3463) 4499 0 R (HD.3464) 4500 0 R (HD.3465) 4501 0 R (HD.3466) 4502 0 R (HD.3467) 4503 0 R (HD.3468) 4504 0 R (HD.3469) 4505 0 R (HD.347) 1050 0 R (HD.3470) 4506 0 R (HD.3471) 4507 0 R (HD.3472) 4508 0 R (HD.3473) 4509 0 R (HD.3474) 4510 0 R ] /Limits [ (HD.3446) (HD.3474) ] >> endobj -4618 0 obj -<< /Names [ (HD.580) 1275 0 R (HD.581) 1276 0 R (HD.582) 1277 0 R (HD.583) 1278 0 R (HD.584) 1279 0 R (HD.585) 1280 0 R (HD.586) 1281 0 R (HD.587) 1282 0 R (HD.588) 1283 0 R (HD.589) 1284 0 R (HD.59) 698 0 R (HD.590) 1285 0 R (HD.591) 1286 0 R (HD.592) 1287 0 R (HD.593) 1288 0 R (HD.594) 1289 0 R (HD.595) 1290 0 R (HD.596) 1291 0 R (HD.597) 1292 0 R (HD.598) 1293 0 R (HD.599) 1294 0 R (HD.6) 641 0 R (HD.60) 699 0 R (HD.600) 1295 0 R (HD.601) 1296 0 R (HD.602) 1297 0 R (HD.603) 1298 0 R (HD.604) 1299 0 R (HD.605) 1300 0 R (HD.606) 1301 0 R (HD.607) 1302 0 R (HD.608) 1303 0 R ] /Limits [ (HD.580) (HD.608) ] >> +4980 0 obj +<< /Names [ (HD.3475) 4511 0 R (HD.3476) 4512 0 R (HD.3477) 4513 0 R (HD.3478) 4514 0 R (HD.3479) 4515 0 R (HD.348) 1051 0 R (HD.3480) 4516 0 R (HD.3481) 4517 0 R (HD.3482) 4518 0 R (HD.3483) 4519 0 R (HD.3484) 4520 0 R (HD.3485) 4521 0 R (HD.3486) 4522 0 R (HD.3487) 4523 0 R (HD.3488) 4524 0 R (HD.3489) 4525 0 R (HD.349) 1052 0 R (HD.3490) 4526 0 R (HD.3491) 4527 0 R (HD.3492) 4528 0 R (HD.3493) 4529 0 R (HD.3494) 4530 0 R (HD.3495) 4531 0 R (HD.3496) 4537 0 R (HD.3497) 4538 0 R (HD.3498) 4539 0 R (HD.3499) 4540 0 R (HD.35) 703 0 R (HD.350) 1058 0 R (HD.3500) 4541 0 R (HD.3501) 4542 0 R (HD.3502) 4543 0 R ] /Limits [ (HD.3475) (HD.3502) ] >> endobj -4619 0 obj -<< /Names [ (HD.609) 1304 0 R (HD.61) 700 0 R (HD.610) 1305 0 R (HD.611) 1306 0 R (HD.612) 1307 0 R (HD.613) 1308 0 R (HD.614) 1309 0 R (HD.615) 1310 0 R (HD.616) 1311 0 R (HD.617) 1312 0 R (HD.618) 1313 0 R (HD.619) 1314 0 R (HD.62) 701 0 R (HD.620) 1315 0 R (HD.621) 1316 0 R (HD.622) 1317 0 R (HD.623) 1318 0 R (HD.624) 1319 0 R (HD.625) 1320 0 R (HD.626) 1321 0 R (HD.627) 1322 0 R (HD.628) 1323 0 R (HD.629) 1324 0 R (HD.63) 702 0 R (HD.630) 1325 0 R (HD.631) 1326 0 R (HD.632) 1327 0 R (HD.633) 1328 0 R (HD.634) 1329 0 R (HD.635) 1330 0 R (HD.636) 1331 0 R (HD.637) 1332 0 R ] /Limits [ (HD.609) (HD.637) ] >> +4981 0 obj +<< /Names [ (HD.3503) 4544 0 R (HD.3504) 4545 0 R (HD.3505) 4546 0 R (HD.3506) 4547 0 R (HD.3507) 4548 0 R (HD.3508) 4549 0 R (HD.3509) 4550 0 R (HD.351) 1059 0 R (HD.3510) 4551 0 R (HD.3511) 4552 0 R (HD.3512) 4553 0 R (HD.3513) 4554 0 R (HD.3514) 4555 0 R (HD.3515) 4556 0 R (HD.3516) 4557 0 R (HD.3517) 4558 0 R (HD.3518) 4559 0 R (HD.3519) 4560 0 R (HD.352) 1060 0 R (HD.3520) 4561 0 R (HD.3521) 4562 0 R (HD.3522) 4563 0 R (HD.3523) 4564 0 R (HD.3524) 4565 0 R (HD.3525) 4566 0 R (HD.3526) 4567 0 R (HD.3527) 4568 0 R (HD.3528) 4569 0 R (HD.3529) 4570 0 R (HD.353) 1061 0 R (HD.3530) 4571 0 R (HD.3531) 4572 0 R ] /Limits [ (HD.3503) (HD.3531) ] >> endobj -4620 0 obj -<< /Names [ (HD.638) 1333 0 R (HD.639) 1334 0 R (HD.64) 703 0 R (HD.640) 1335 0 R (HD.641) 1336 0 R (HD.642) 1337 0 R (HD.643) 1342 0 R (HD.644) 1343 0 R (HD.645) 1344 0 R (HD.646) 1345 0 R (HD.647) 1346 0 R (HD.648) 1347 0 R (HD.649) 1348 0 R (HD.65) 704 0 R (HD.650) 1349 0 R (HD.651) 1350 0 R (HD.652) 1351 0 R (HD.653) 1352 0 R (HD.654) 1353 0 R (HD.655) 1354 0 R (HD.656) 1355 0 R (HD.657) 1356 0 R (HD.658) 1357 0 R (HD.659) 1358 0 R (HD.66) 705 0 R (HD.660) 1359 0 R (HD.661) 1360 0 R (HD.662) 1361 0 R (HD.663) 1362 0 R (HD.664) 1363 0 R (HD.665) 1364 0 R (HD.666) 1365 0 R ] /Limits [ (HD.638) (HD.666) ] >> +4982 0 obj +<< /Names [ (HD.3532) 4573 0 R (HD.3533) 4574 0 R (HD.3534) 4575 0 R (HD.3535) 4576 0 R (HD.3536) 4577 0 R (HD.3537) 4578 0 R (HD.3538) 4579 0 R (HD.354) 1062 0 R (HD.355) 1063 0 R (HD.356) 1064 0 R (HD.357) 1065 0 R (HD.358) 1066 0 R (HD.359) 1067 0 R (HD.36) 704 0 R (HD.360) 1068 0 R (HD.361) 1069 0 R (HD.362) 1070 0 R (HD.363) 1071 0 R (HD.364) 1072 0 R (HD.365) 1073 0 R (HD.366) 1074 0 R (HD.367) 1075 0 R (HD.368) 1076 0 R (HD.369) 1077 0 R (HD.37) 705 0 R (HD.370) 1078 0 R (HD.371) 1079 0 R (HD.372) 1080 0 R (HD.373) 1081 0 R (HD.374) 1082 0 R (HD.375) 1083 0 R (HD.376) 1084 0 R ] /Limits [ (HD.3532) (HD.376) ] >> endobj -4621 0 obj -<< /Names [ (HD.667) 1366 0 R (HD.668) 1367 0 R (HD.669) 1368 0 R (HD.67) 706 0 R (HD.670) 1369 0 R (HD.671) 1370 0 R (HD.672) 1371 0 R (HD.673) 1372 0 R (HD.674) 1373 0 R (HD.675) 1374 0 R (HD.676) 1375 0 R (HD.677) 1376 0 R (HD.678) 1377 0 R (HD.679) 1378 0 R (HD.68) 707 0 R (HD.680) 1379 0 R (HD.681) 1380 0 R (HD.682) 1381 0 R (HD.683) 1382 0 R (HD.684) 1383 0 R (HD.685) 1384 0 R (HD.686) 1385 0 R (HD.687) 1390 0 R (HD.688) 1391 0 R (HD.689) 1392 0 R (HD.69) 708 0 R (HD.690) 1393 0 R (HD.691) 1394 0 R (HD.692) 1395 0 R (HD.693) 1396 0 R (HD.694) 1397 0 R (HD.695) 1398 0 R ] /Limits [ (HD.667) (HD.695) ] >> +4983 0 obj +<< /Names [ (HD.377) 1085 0 R (HD.378) 1086 0 R (HD.379) 1087 0 R (HD.38) 706 0 R (HD.380) 1092 0 R (HD.381) 1093 0 R (HD.382) 1094 0 R (HD.383) 1095 0 R (HD.384) 1096 0 R (HD.385) 1097 0 R (HD.386) 1098 0 R (HD.387) 1099 0 R (HD.388) 1100 0 R (HD.389) 1101 0 R (HD.39) 707 0 R (HD.390) 1102 0 R (HD.391) 1103 0 R (HD.392) 1104 0 R (HD.393) 1105 0 R (HD.394) 1106 0 R (HD.395) 1107 0 R (HD.396) 1108 0 R (HD.397) 1109 0 R (HD.398) 1110 0 R (HD.399) 1111 0 R (HD.4) 668 0 R (HD.40) 708 0 R (HD.400) 1112 0 R (HD.401) 1113 0 R (HD.402) 1114 0 R (HD.403) 1115 0 R (HD.404) 1116 0 R ] /Limits [ (HD.377) (HD.404) ] >> endobj -4622 0 obj -<< /Names [ (HD.696) 1399 0 R (HD.697) 1400 0 R (HD.698) 1401 0 R (HD.699) 1402 0 R (HD.7) 642 0 R (HD.70) 709 0 R (HD.700) 1403 0 R (HD.701) 1404 0 R (HD.702) 1405 0 R (HD.703) 1406 0 R (HD.704) 1407 0 R (HD.705) 1408 0 R (HD.706) 1409 0 R (HD.707) 1410 0 R (HD.708) 1411 0 R (HD.709) 1412 0 R (HD.71) 710 0 R (HD.710) 1413 0 R (HD.711) 1414 0 R (HD.712) 1415 0 R (HD.713) 1416 0 R (HD.714) 1417 0 R (HD.715) 1418 0 R (HD.716) 1419 0 R (HD.717) 1420 0 R (HD.718) 1421 0 R (HD.719) 1422 0 R (HD.72) 711 0 R (HD.720) 1423 0 R (HD.721) 1424 0 R (HD.722) 1425 0 R (HD.723) 1426 0 R ] /Limits [ (HD.696) (HD.723) ] >> +4984 0 obj +<< /Names [ (HD.405) 1117 0 R (HD.406) 1118 0 R (HD.407) 1119 0 R (HD.408) 1120 0 R (HD.409) 1121 0 R (HD.41) 709 0 R (HD.410) 1122 0 R (HD.411) 1123 0 R (HD.412) 1124 0 R (HD.413) 1125 0 R (HD.414) 1126 0 R (HD.415) 1127 0 R (HD.416) 1128 0 R (HD.417) 1129 0 R (HD.418) 1130 0 R (HD.419) 1131 0 R (HD.42) 710 0 R (HD.420) 1132 0 R (HD.421) 1133 0 R (HD.422) 1134 0 R (HD.423) 1135 0 R (HD.424) 1136 0 R (HD.425) 1137 0 R (HD.426) 1138 0 R (HD.427) 1139 0 R (HD.428) 1140 0 R (HD.429) 1141 0 R (HD.43) 711 0 R (HD.430) 1142 0 R (HD.431) 1143 0 R (HD.432) 1144 0 R (HD.433) 1149 0 R ] /Limits [ (HD.405) (HD.433) ] >> endobj -4623 0 obj -<< /Names [ (HD.724) 1427 0 R (HD.725) 1428 0 R (HD.726) 1429 0 R (HD.727) 1430 0 R (HD.728) 1435 0 R (HD.729) 1436 0 R (HD.73) 712 0 R (HD.730) 1437 0 R (HD.731) 1438 0 R (HD.732) 1439 0 R (HD.733) 1440 0 R (HD.734) 1441 0 R (HD.735) 1442 0 R (HD.736) 1443 0 R (HD.737) 1444 0 R (HD.738) 1445 0 R (HD.739) 1446 0 R (HD.74) 713 0 R (HD.740) 1447 0 R (HD.741) 1448 0 R (HD.742) 1449 0 R (HD.743) 1450 0 R (HD.744) 1451 0 R (HD.745) 1452 0 R (HD.746) 1453 0 R (HD.747) 1454 0 R (HD.748) 1455 0 R (HD.749) 1456 0 R (HD.75) 714 0 R (HD.750) 1457 0 R (HD.751) 1458 0 R (HD.752) 1459 0 R ] /Limits [ (HD.724) (HD.752) ] >> +4985 0 obj +<< /Names [ (HD.434) 1150 0 R (HD.435) 1151 0 R (HD.436) 1152 0 R (HD.437) 1153 0 R (HD.438) 1154 0 R (HD.439) 1155 0 R (HD.44) 712 0 R (HD.440) 1156 0 R (HD.441) 1157 0 R (HD.442) 1158 0 R (HD.443) 1159 0 R (HD.444) 1160 0 R (HD.445) 1161 0 R (HD.446) 1162 0 R (HD.447) 1163 0 R (HD.448) 1164 0 R (HD.449) 1165 0 R (HD.45) 713 0 R (HD.450) 1166 0 R (HD.451) 1167 0 R (HD.452) 1168 0 R (HD.453) 1169 0 R (HD.454) 1170 0 R (HD.455) 1171 0 R (HD.456) 1172 0 R (HD.457) 1173 0 R (HD.458) 1174 0 R (HD.459) 1175 0 R (HD.46) 714 0 R (HD.460) 1176 0 R (HD.461) 1177 0 R (HD.462) 1178 0 R ] /Limits [ (HD.434) (HD.462) ] >> endobj -4624 0 obj -<< /Names [ (HD.753) 1460 0 R (HD.754) 1461 0 R (HD.755) 1462 0 R (HD.756) 1463 0 R (HD.757) 1464 0 R (HD.758) 1465 0 R (HD.759) 1466 0 R (HD.76) 715 0 R (HD.760) 1467 0 R (HD.761) 1468 0 R (HD.762) 1469 0 R (HD.763) 1470 0 R (HD.764) 1471 0 R (HD.765) 1472 0 R (HD.766) 1477 0 R (HD.767) 1478 0 R (HD.768) 1479 0 R (HD.769) 1480 0 R (HD.77) 716 0 R (HD.770) 1481 0 R (HD.771) 1482 0 R (HD.772) 1483 0 R (HD.773) 1484 0 R (HD.774) 1485 0 R (HD.775) 1486 0 R (HD.776) 1487 0 R (HD.777) 1488 0 R (HD.778) 1489 0 R (HD.779) 1490 0 R (HD.78) 717 0 R (HD.780) 1491 0 R (HD.781) 1492 0 R ] /Limits [ (HD.753) (HD.781) ] >> +4986 0 obj +<< /Names [ (HD.463) 1179 0 R (HD.464) 1180 0 R (HD.465) 1181 0 R (HD.466) 1182 0 R (HD.467) 1183 0 R (HD.468) 1184 0 R (HD.469) 1185 0 R (HD.47) 715 0 R (HD.470) 1186 0 R (HD.471) 1187 0 R (HD.472) 1188 0 R (HD.473) 1189 0 R (HD.474) 1190 0 R (HD.475) 1191 0 R (HD.476) 1192 0 R (HD.477) 1193 0 R (HD.478) 1194 0 R (HD.479) 1195 0 R (HD.48) 716 0 R (HD.480) 1196 0 R (HD.481) 1197 0 R (HD.482) 1198 0 R (HD.483) 1199 0 R (HD.484) 1200 0 R (HD.485) 1201 0 R (HD.486) 1202 0 R (HD.487) 1203 0 R (HD.488) 1204 0 R (HD.489) 1205 0 R (HD.49) 717 0 R (HD.490) 1206 0 R (HD.491) 1207 0 R ] /Limits [ (HD.463) (HD.491) ] >> endobj -4625 0 obj -<< /Names [ (HD.782) 1493 0 R (HD.783) 1494 0 R (HD.784) 1495 0 R (HD.785) 1496 0 R (HD.786) 1497 0 R (HD.787) 1498 0 R (HD.788) 1499 0 R (HD.789) 1500 0 R (HD.79) 718 0 R (HD.790) 1501 0 R (HD.791) 1502 0 R (HD.792) 1503 0 R (HD.793) 1504 0 R (HD.794) 1505 0 R (HD.795) 1506 0 R (HD.796) 1507 0 R (HD.797) 1508 0 R (HD.798) 1509 0 R (HD.799) 1510 0 R (HD.8) 643 0 R (HD.80) 719 0 R (HD.800) 1511 0 R (HD.801) 1512 0 R (HD.802) 1513 0 R (HD.803) 1514 0 R (HD.804) 1515 0 R (HD.805) 1516 0 R (HD.806) 1517 0 R (HD.807) 1518 0 R (HD.808) 1519 0 R (HD.809) 1520 0 R (HD.81) 720 0 R ] /Limits [ (HD.782) (HD.81) ] >> +4987 0 obj +<< /Names [ (HD.492) 1212 0 R (HD.493) 1213 0 R (HD.494) 1214 0 R (HD.495) 1215 0 R (HD.496) 1216 0 R (HD.497) 1217 0 R (HD.498) 1218 0 R (HD.499) 1219 0 R (HD.5) 669 0 R (HD.50) 718 0 R (HD.500) 1220 0 R (HD.501) 1221 0 R (HD.502) 1222 0 R (HD.503) 1223 0 R (HD.504) 1224 0 R (HD.505) 1225 0 R (HD.506) 1226 0 R (HD.507) 1227 0 R (HD.508) 1228 0 R (HD.509) 1229 0 R (HD.51) 719 0 R (HD.510) 1230 0 R (HD.511) 1231 0 R (HD.512) 1232 0 R (HD.513) 1233 0 R (HD.514) 1234 0 R (HD.515) 1235 0 R (HD.516) 1236 0 R (HD.517) 1237 0 R (HD.518) 1238 0 R (HD.519) 1239 0 R (HD.52) 720 0 R ] /Limits [ (HD.492) (HD.52) ] >> endobj -4626 0 obj -<< /Names [ (HD.810) 1521 0 R (HD.811) 1522 0 R (HD.812) 1523 0 R (HD.813) 1524 0 R (HD.814) 1525 0 R (HD.815) 1526 0 R (HD.816) 1527 0 R (HD.817) 1528 0 R (HD.818) 1529 0 R (HD.819) 1530 0 R (HD.82) 721 0 R (HD.820) 1535 0 R (HD.821) 1536 0 R (HD.822) 1537 0 R (HD.823) 1538 0 R (HD.824) 1539 0 R (HD.825) 1540 0 R (HD.826) 1541 0 R (HD.827) 1542 0 R (HD.828) 1543 0 R (HD.829) 1544 0 R (HD.83) 722 0 R (HD.830) 1545 0 R (HD.831) 1546 0 R (HD.832) 1547 0 R (HD.833) 1548 0 R (HD.834) 1549 0 R (HD.835) 1550 0 R (HD.836) 1551 0 R (HD.837) 1552 0 R (HD.838) 1553 0 R (HD.839) 1554 0 R ] /Limits [ (HD.810) (HD.839) ] >> +4988 0 obj +<< /Names [ (HD.520) 1240 0 R (HD.521) 1241 0 R (HD.522) 1242 0 R (HD.523) 1243 0 R (HD.524) 1244 0 R (HD.525) 1245 0 R (HD.526) 1246 0 R (HD.527) 1247 0 R (HD.528) 1248 0 R (HD.529) 1249 0 R (HD.53) 721 0 R (HD.530) 1250 0 R (HD.531) 1251 0 R (HD.532) 1252 0 R (HD.533) 1253 0 R (HD.534) 1254 0 R (HD.535) 1255 0 R (HD.536) 1256 0 R (HD.537) 1257 0 R (HD.538) 1258 0 R (HD.539) 1259 0 R (HD.54) 722 0 R (HD.540) 1260 0 R (HD.541) 1261 0 R (HD.542) 1262 0 R (HD.543) 1263 0 R (HD.544) 1264 0 R (HD.545) 1265 0 R (HD.546) 1266 0 R (HD.547) 1267 0 R (HD.548) 1272 0 R (HD.549) 1273 0 R ] /Limits [ (HD.520) (HD.549) ] >> endobj -4627 0 obj -<< /Names [ (HD.84) 727 0 R (HD.840) 1555 0 R (HD.841) 1556 0 R (HD.842) 1557 0 R (HD.843) 1558 0 R (HD.844) 1559 0 R (HD.845) 1560 0 R (HD.846) 1561 0 R (HD.847) 1562 0 R (HD.848) 1563 0 R (HD.849) 1564 0 R (HD.85) 728 0 R (HD.850) 1565 0 R (HD.851) 1566 0 R (HD.852) 1567 0 R (HD.853) 1568 0 R (HD.854) 1569 0 R (HD.855) 1570 0 R (HD.856) 1571 0 R (HD.857) 1572 0 R (HD.858) 1573 0 R (HD.859) 1574 0 R (HD.86) 729 0 R (HD.860) 1575 0 R (HD.861) 1576 0 R (HD.862) 1577 0 R (HD.863) 1578 0 R (HD.864) 1579 0 R (HD.865) 1580 0 R (HD.866) 1581 0 R (HD.867) 1582 0 R (HD.868) 1583 0 R ] /Limits [ (HD.84) (HD.868) ] >> +4989 0 obj +<< /Names [ (HD.55) 723 0 R (HD.550) 1274 0 R (HD.551) 1275 0 R (HD.552) 1276 0 R (HD.553) 1277 0 R (HD.554) 1278 0 R (HD.555) 1279 0 R (HD.556) 1280 0 R (HD.557) 1281 0 R (HD.558) 1282 0 R (HD.559) 1283 0 R (HD.56) 724 0 R (HD.560) 1284 0 R (HD.561) 1285 0 R (HD.562) 1286 0 R (HD.563) 1287 0 R (HD.564) 1288 0 R (HD.565) 1289 0 R (HD.566) 1290 0 R (HD.567) 1291 0 R (HD.568) 1292 0 R (HD.569) 1293 0 R (HD.57) 725 0 R (HD.570) 1294 0 R (HD.571) 1295 0 R (HD.572) 1296 0 R (HD.573) 1297 0 R (HD.574) 1298 0 R (HD.575) 1299 0 R (HD.576) 1300 0 R (HD.577) 1301 0 R (HD.578) 1302 0 R ] /Limits [ (HD.55) (HD.578) ] >> endobj -4628 0 obj -<< /Names [ (HD.869) 1584 0 R (HD.87) 730 0 R (HD.870) 1585 0 R (HD.871) 1586 0 R (HD.872) 1587 0 R (HD.873) 1588 0 R (HD.874) 1589 0 R (HD.875) 1596 0 R (HD.876) 1597 0 R (HD.877) 1598 0 R (HD.878) 1599 0 R (HD.879) 1600 0 R (HD.88) 731 0 R (HD.880) 1601 0 R (HD.881) 1602 0 R (HD.882) 1603 0 R (HD.883) 1604 0 R (HD.884) 1605 0 R (HD.885) 1606 0 R (HD.886) 1607 0 R (HD.887) 1608 0 R (HD.888) 1609 0 R (HD.889) 1610 0 R (HD.89) 732 0 R (HD.890) 1611 0 R (HD.891) 1612 0 R (HD.892) 1613 0 R (HD.893) 1614 0 R (HD.894) 1615 0 R (HD.895) 1616 0 R (HD.896) 1617 0 R (HD.897) 1618 0 R ] /Limits [ (HD.869) (HD.897) ] >> +4990 0 obj +<< /Names [ (HD.579) 1303 0 R (HD.58) 726 0 R (HD.580) 1304 0 R (HD.581) 1305 0 R (HD.582) 1306 0 R (HD.583) 1307 0 R (HD.584) 1308 0 R (HD.585) 1309 0 R (HD.586) 1310 0 R (HD.587) 1311 0 R (HD.588) 1312 0 R (HD.589) 1313 0 R (HD.59) 727 0 R (HD.590) 1314 0 R (HD.591) 1315 0 R (HD.592) 1316 0 R (HD.593) 1317 0 R (HD.594) 1318 0 R (HD.595) 1319 0 R (HD.596) 1320 0 R (HD.597) 1321 0 R (HD.598) 1322 0 R (HD.599) 1323 0 R (HD.6) 670 0 R (HD.60) 728 0 R (HD.600) 1324 0 R (HD.601) 1325 0 R (HD.602) 1326 0 R (HD.603) 1327 0 R (HD.604) 1328 0 R (HD.605) 1329 0 R (HD.606) 1330 0 R ] /Limits [ (HD.579) (HD.606) ] >> endobj -4629 0 obj -<< /Names [ (HD.898) 1619 0 R (HD.899) 1620 0 R (HD.9) 644 0 R (HD.90) 733 0 R (HD.900) 1621 0 R (HD.901) 1622 0 R (HD.902) 1623 0 R (HD.903) 1624 0 R (HD.904) 1625 0 R (HD.905) 1626 0 R (HD.906) 1627 0 R (HD.907) 1628 0 R (HD.908) 1629 0 R (HD.909) 1630 0 R (HD.91) 734 0 R (HD.910) 1631 0 R (HD.911) 1632 0 R (HD.912) 1633 0 R (HD.913) 1634 0 R (HD.914) 1635 0 R (HD.915) 1636 0 R (HD.916) 1637 0 R (HD.917) 1642 0 R (HD.918) 1643 0 R (HD.919) 1644 0 R (HD.92) 735 0 R (HD.920) 1645 0 R (HD.921) 1646 0 R (HD.922) 1647 0 R (HD.923) 1648 0 R (HD.924) 1649 0 R (HD.925) 1650 0 R ] /Limits [ (HD.898) (HD.925) ] >> +4991 0 obj +<< /Names [ (HD.607) 1331 0 R (HD.608) 1332 0 R (HD.609) 1333 0 R (HD.61) 729 0 R (HD.610) 1334 0 R (HD.611) 1339 0 R (HD.612) 1340 0 R (HD.613) 1341 0 R (HD.614) 1342 0 R (HD.615) 1343 0 R (HD.616) 1344 0 R (HD.617) 1345 0 R (HD.618) 1346 0 R (HD.619) 1347 0 R (HD.62) 730 0 R (HD.620) 1348 0 R (HD.621) 1349 0 R (HD.622) 1350 0 R (HD.623) 1351 0 R (HD.624) 1352 0 R (HD.625) 1353 0 R (HD.626) 1354 0 R (HD.627) 1355 0 R (HD.628) 1356 0 R (HD.629) 1357 0 R (HD.63) 731 0 R (HD.630) 1358 0 R (HD.631) 1359 0 R (HD.632) 1360 0 R (HD.633) 1361 0 R (HD.634) 1362 0 R (HD.635) 1363 0 R ] /Limits [ (HD.607) (HD.635) ] >> endobj -4630 0 obj -<< /Names [ (HD.926) 1651 0 R (HD.927) 1652 0 R (HD.928) 1653 0 R (HD.929) 1654 0 R (HD.93) 736 0 R (HD.930) 1655 0 R (HD.931) 1656 0 R (HD.932) 1657 0 R (HD.933) 1658 0 R (HD.934) 1659 0 R (HD.935) 1660 0 R (HD.936) 1661 0 R (HD.937) 1662 0 R (HD.938) 1663 0 R (HD.939) 1664 0 R (HD.94) 737 0 R (HD.940) 1665 0 R (HD.941) 1666 0 R (HD.942) 1667 0 R (HD.943) 1668 0 R (HD.944) 1669 0 R (HD.945) 1670 0 R (HD.946) 1671 0 R (HD.947) 1672 0 R (HD.948) 1673 0 R (HD.949) 1674 0 R (HD.95) 738 0 R (HD.950) 1675 0 R (HD.951) 1676 0 R (HD.952) 1677 0 R (HD.953) 1678 0 R (HD.954) 1679 0 R ] /Limits [ (HD.926) (HD.954) ] >> +4992 0 obj +<< /Names [ (HD.636) 1364 0 R (HD.637) 1365 0 R (HD.638) 1366 0 R (HD.639) 1367 0 R (HD.64) 732 0 R (HD.640) 1368 0 R (HD.641) 1369 0 R (HD.642) 1370 0 R (HD.643) 1371 0 R (HD.644) 1372 0 R (HD.645) 1373 0 R (HD.646) 1374 0 R (HD.647) 1375 0 R (HD.648) 1376 0 R (HD.649) 1377 0 R (HD.65) 733 0 R (HD.650) 1378 0 R (HD.651) 1379 0 R (HD.652) 1380 0 R (HD.653) 1381 0 R (HD.654) 1382 0 R (HD.655) 1383 0 R (HD.656) 1384 0 R (HD.657) 1385 0 R (HD.658) 1386 0 R (HD.659) 1387 0 R (HD.66) 734 0 R (HD.660) 1388 0 R (HD.661) 1389 0 R (HD.662) 1390 0 R (HD.663) 1391 0 R (HD.664) 1392 0 R ] /Limits [ (HD.636) (HD.664) ] >> endobj -4631 0 obj -<< /Names [ (HD.955) 1680 0 R (HD.956) 1681 0 R (HD.957) 1682 0 R (HD.958) 1683 0 R (HD.959) 1690 0 R (HD.96) 739 0 R (HD.960) 1691 0 R (HD.961) 1692 0 R (HD.962) 1693 0 R (HD.963) 1694 0 R (HD.964) 1695 0 R (HD.965) 1696 0 R (HD.966) 1697 0 R (HD.967) 1698 0 R (HD.968) 1699 0 R (HD.969) 1700 0 R (HD.97) 740 0 R (HD.970) 1701 0 R (HD.971) 1702 0 R (HD.972) 1703 0 R (HD.973) 1704 0 R (HD.974) 1705 0 R (HD.975) 1706 0 R (HD.976) 1707 0 R (HD.977) 1708 0 R (HD.978) 1709 0 R (HD.979) 1710 0 R (HD.98) 741 0 R (HD.980) 1711 0 R (HD.981) 1712 0 R (HD.982) 1713 0 R (HD.983) 1714 0 R ] /Limits [ (HD.955) (HD.983) ] >> +4993 0 obj +<< /Names [ (HD.665) 1393 0 R (HD.666) 1394 0 R (HD.667) 1395 0 R (HD.668) 1396 0 R (HD.669) 1397 0 R (HD.67) 735 0 R (HD.670) 1398 0 R (HD.671) 1399 0 R (HD.672) 1400 0 R (HD.673) 1405 0 R (HD.674) 1406 0 R (HD.675) 1407 0 R (HD.676) 1408 0 R (HD.677) 1409 0 R (HD.678) 1410 0 R (HD.679) 1411 0 R (HD.68) 736 0 R (HD.680) 1412 0 R (HD.681) 1413 0 R (HD.682) 1414 0 R (HD.683) 1415 0 R (HD.684) 1416 0 R (HD.685) 1417 0 R (HD.686) 1418 0 R (HD.687) 1419 0 R (HD.688) 1420 0 R (HD.689) 1421 0 R (HD.69) 737 0 R (HD.690) 1422 0 R (HD.691) 1423 0 R (HD.692) 1424 0 R (HD.693) 1425 0 R ] /Limits [ (HD.665) (HD.693) ] >> endobj -4632 0 obj -<< /Names [ (HD.984) 1715 0 R (HD.985) 1716 0 R (HD.986) 1717 0 R (HD.987) 1718 0 R (HD.988) 1719 0 R (HD.989) 1720 0 R (HD.99) 742 0 R (HD.990) 1721 0 R (HD.991) 1722 0 R (HD.992) 1723 0 R (HD.993) 1724 0 R (HD.994) 1725 0 R (HD.995) 1726 0 R (HD.996) 1727 0 R (HD.997) 1728 0 R (HD.998) 1729 0 R (HD.999) 1730 0 R (Hfootnote.1) 348 0 R (Hfootnote.10) 415 0 R (Hfootnote.11) 416 0 R (Hfootnote.12) 417 0 R (Hfootnote.13) 426 0 R (Hfootnote.14) 427 0 R (Hfootnote.15) 438 0 R (Hfootnote.16) 439 0 R (Hfootnote.17) 450 0 R (Hfootnote.18) 451 0 R (Hfootnote.19) 463 0 R (Hfootnote.2) 352 0 R (Hfootnote.20) 470 0 R (Hfootnote.21) 471 0 R (Hfootnote.22) 489 0 R ] /Limits [ (HD.984) (Hfootnote.22) ] >> +4994 0 obj +<< /Names [ (HD.694) 1426 0 R (HD.695) 1427 0 R (HD.696) 1428 0 R (HD.697) 1429 0 R (HD.698) 1430 0 R (HD.699) 1431 0 R (HD.7) 671 0 R (HD.70) 738 0 R (HD.700) 1432 0 R (HD.701) 1433 0 R (HD.702) 1434 0 R (HD.703) 1435 0 R (HD.704) 1436 0 R (HD.705) 1437 0 R (HD.706) 1438 0 R (HD.707) 1439 0 R (HD.708) 1440 0 R (HD.709) 1441 0 R (HD.71) 739 0 R (HD.710) 1442 0 R (HD.711) 1443 0 R (HD.712) 1444 0 R (HD.713) 1445 0 R (HD.714) 1446 0 R (HD.715) 1451 0 R (HD.716) 1452 0 R (HD.717) 1453 0 R (HD.718) 1454 0 R (HD.719) 1455 0 R (HD.72) 740 0 R (HD.720) 1456 0 R (HD.721) 1457 0 R ] /Limits [ (HD.694) (HD.721) ] >> endobj -4633 0 obj -<< /Names [ (Hfootnote.23) 500 0 R (Hfootnote.24) 520 0 R (Hfootnote.25) 521 0 R (Hfootnote.26) 522 0 R (Hfootnote.27) 523 0 R (Hfootnote.28) 554 0 R (Hfootnote.29) 555 0 R (Hfootnote.3) 368 0 R (Hfootnote.30) 568 0 R (Hfootnote.31) 569 0 R (Hfootnote.32) 570 0 R (Hfootnote.33) 588 0 R (Hfootnote.34) 626 0 R (Hfootnote.35) 623 0 R (Hfootnote.36) 624 0 R (Hfootnote.37) 625 0 R (Hfootnote.38) 1684 0 R (Hfootnote.39) 2577 0 R (Hfootnote.4) 378 0 R (Hfootnote.40) 2710 0 R (Hfootnote.41) 2711 0 R (Hfootnote.42) 2920 0 R (Hfootnote.43) 3247 0 R (Hfootnote.44) 3338 0 R (Hfootnote.45) 3506 0 R (Hfootnote.5) 379 0 R (Hfootnote.6) 393 0 R (Hfootnote.7) 394 0 R (Hfootnote.8) 395 0 R (Hfootnote.9) 396 0 R (page.1) 323 0 R (page.10) 462 0 R ] /Limits [ (Hfootnote.23) (page.10) ] >> +4995 0 obj +<< /Names [ (HD.722) 1458 0 R (HD.723) 1459 0 R (HD.724) 1460 0 R (HD.725) 1461 0 R (HD.726) 1462 0 R (HD.727) 1463 0 R (HD.728) 1464 0 R (HD.729) 1465 0 R (HD.73) 741 0 R (HD.730) 1466 0 R (HD.731) 1467 0 R (HD.732) 1468 0 R (HD.733) 1469 0 R (HD.734) 1470 0 R (HD.735) 1471 0 R (HD.736) 1472 0 R (HD.737) 1473 0 R (HD.738) 1474 0 R (HD.739) 1475 0 R (HD.74) 742 0 R (HD.740) 1476 0 R (HD.741) 1477 0 R (HD.742) 1478 0 R (HD.743) 1479 0 R (HD.744) 1480 0 R (HD.745) 1481 0 R (HD.746) 1482 0 R (HD.747) 1483 0 R (HD.748) 1484 0 R (HD.749) 1485 0 R (HD.75) 743 0 R (HD.750) 1486 0 R ] /Limits [ (HD.722) (HD.750) ] >> endobj -4634 0 obj -<< /Names [ (page.100) 4024 0 R (page.101) 4090 0 R (page.102) 4147 0 R (page.103) 4199 0 R (page.104) 4229 0 R (page.105) 4296 0 R (page.106) 4307 0 R (page.11) 469 0 R (page.12) 477 0 R (page.13) 482 0 R (page.14) 488 0 R (page.15) 499 0 R (page.16) 505 0 R (page.17) 509 0 R (page.18) 517 0 R (page.19) 528 0 R (page.2) 365 0 R (page.20) 539 0 R (page.21) 544 0 R (page.22) 553 0 R (page.23) 566 0 R (page.24) 577 0 R (page.25) 587 0 R (page.26) 593 0 R (page.27) 597 0 R (page.28) 601 0 R (page.29) 607 0 R (page.3) 376 0 R (page.30) 613 0 R (page.31) 622 0 R (page.32) 632 0 R (page.33) 675 0 R ] /Limits [ (page.100) (page.33) ] >> +4996 0 obj +<< /Names [ (HD.751) 1487 0 R (HD.752) 1488 0 R (HD.753) 1489 0 R (HD.754) 1490 0 R (HD.755) 1491 0 R (HD.756) 1496 0 R (HD.757) 1497 0 R (HD.758) 1498 0 R (HD.759) 1499 0 R (HD.76) 748 0 R (HD.760) 1500 0 R (HD.761) 1501 0 R (HD.762) 1502 0 R (HD.763) 1503 0 R (HD.764) 1504 0 R (HD.765) 1505 0 R (HD.766) 1506 0 R (HD.767) 1507 0 R (HD.768) 1508 0 R (HD.769) 1509 0 R (HD.77) 749 0 R (HD.770) 1510 0 R (HD.771) 1511 0 R (HD.772) 1512 0 R (HD.773) 1513 0 R (HD.774) 1514 0 R (HD.775) 1515 0 R (HD.776) 1516 0 R (HD.777) 1517 0 R (HD.778) 1518 0 R (HD.779) 1519 0 R (HD.78) 750 0 R ] /Limits [ (HD.751) (HD.78) ] >> endobj -4635 0 obj -<< /Names [ (page.34) 726 0 R (page.35) 781 0 R (page.36) 809 0 R (page.37) 834 0 R (page.38) 855 0 R (page.39) 897 0 R (page.4) 391 0 R (page.40) 933 0 R (page.41) 993 0 R (page.42) 1031 0 R (page.43) 1087 0 R (page.44) 1150 0 R (page.45) 1209 0 R (page.46) 1274 0 R (page.47) 1341 0 R (page.48) 1389 0 R (page.49) 1434 0 R (page.5) 413 0 R (page.50) 1476 0 R (page.51) 1534 0 R (page.52) 1595 0 R (page.53) 1641 0 R (page.54) 1689 0 R (page.55) 1735 0 R (page.56) 1787 0 R (page.57) 1848 0 R (page.58) 1892 0 R (page.59) 1955 0 R (page.6) 424 0 R (page.60) 2010 0 R (page.61) 2058 0 R (page.62) 2103 0 R ] /Limits [ (page.34) (page.62) ] >> +4997 0 obj +<< /Names [ (HD.780) 1520 0 R (HD.781) 1521 0 R (HD.782) 1522 0 R (HD.783) 1523 0 R (HD.784) 1524 0 R (HD.785) 1525 0 R (HD.786) 1526 0 R (HD.787) 1527 0 R (HD.788) 1528 0 R (HD.789) 1529 0 R (HD.79) 751 0 R (HD.790) 1530 0 R (HD.791) 1536 0 R (HD.792) 1537 0 R (HD.793) 1538 0 R (HD.794) 1539 0 R (HD.795) 1540 0 R (HD.796) 1541 0 R (HD.797) 1542 0 R (HD.798) 1543 0 R (HD.799) 1544 0 R (HD.8) 672 0 R (HD.80) 752 0 R (HD.800) 1545 0 R (HD.801) 1546 0 R (HD.802) 1547 0 R (HD.803) 1548 0 R (HD.804) 1549 0 R (HD.805) 1550 0 R (HD.806) 1551 0 R (HD.807) 1552 0 R (HD.808) 1553 0 R ] /Limits [ (HD.780) (HD.808) ] >> endobj -4636 0 obj -<< /Names [ (page.63) 2162 0 R (page.64) 2227 0 R (page.65) 2285 0 R (page.66) 2337 0 R (page.67) 2367 0 R (page.68) 2405 0 R (page.69) 2445 0 R (page.7) 436 0 R (page.70) 2491 0 R (page.71) 2542 0 R (page.72) 2583 0 R (page.73) 2638 0 R (page.74) 2679 0 R (page.75) 2716 0 R (page.76) 2769 0 R (page.77) 2832 0 R (page.78) 2878 0 R (page.79) 2925 0 R (page.8) 447 0 R (page.80) 2981 0 R (page.81) 3036 0 R (page.82) 3080 0 R (page.83) 3139 0 R (page.84) 3199 0 R (page.85) 3252 0 R (page.86) 3290 0 R (page.87) 3343 0 R (page.88) 3395 0 R (page.89) 3455 0 R (page.9) 457 0 R (page.90) 3511 0 R (page.91) 3578 0 R ] /Limits [ (page.63) (page.91) ] >> +4998 0 obj +<< /Names [ (HD.809) 1554 0 R (HD.81) 753 0 R (HD.810) 1555 0 R (HD.811) 1556 0 R (HD.812) 1557 0 R (HD.813) 1558 0 R (HD.814) 1559 0 R (HD.815) 1560 0 R (HD.816) 1561 0 R (HD.817) 1562 0 R (HD.818) 1563 0 R (HD.819) 1564 0 R (HD.82) 754 0 R (HD.820) 1565 0 R (HD.821) 1566 0 R (HD.822) 1567 0 R (HD.823) 1568 0 R (HD.824) 1569 0 R (HD.825) 1570 0 R (HD.826) 1571 0 R (HD.827) 1572 0 R (HD.828) 1573 0 R (HD.829) 1574 0 R (HD.83) 755 0 R (HD.830) 1575 0 R (HD.831) 1576 0 R (HD.832) 1577 0 R (HD.833) 1578 0 R (HD.834) 1579 0 R (HD.835) 1580 0 R (HD.836) 1581 0 R (HD.837) 1582 0 R ] /Limits [ (HD.809) (HD.837) ] >> endobj -4637 0 obj -<< /Names [ (page.92) 3634 0 R (page.93) 3673 0 R (page.94) 3724 0 R (page.95) 3769 0 R (page.96) 3821 0 R (page.97) 3864 0 R (page.98) 3920 0 R (page.99) 3970 0 R (piton:passe) 449 0 R (piton:transpose) 448 0 R (section*.1) 2392 0 R (section*.10) 2838 0 R (section*.11) 2843 0 R (section*.12) 2887 0 R (section*.13) 2889 0 R (section*.14) 3024 0 R (section*.15) 3027 0 R (section*.16) 3038 0 R (section*.17) 3068 0 R (section*.18) 3087 0 R (section*.19) 3117 0 R (section*.2) 2446 0 R (section*.20) 3164 0 R (section*.21) 3166 0 R (section*.22) 3255 0 R (section*.23) 3267 0 R (section*.24) 3272 0 R (section*.25) 3274 0 R (section*.26) 3291 0 R (section*.27) 3390 0 R (section*.28) 3396 0 R (section*.29) 3401 0 R ] /Limits [ (page.92) (section*.29) ] >> +4999 0 obj +<< /Names [ (HD.838) 1583 0 R (HD.839) 1584 0 R (HD.84) 756 0 R (HD.840) 1585 0 R (HD.841) 1590 0 R (HD.842) 1591 0 R (HD.843) 1592 0 R (HD.844) 1593 0 R (HD.845) 1594 0 R (HD.846) 1595 0 R (HD.847) 1596 0 R (HD.848) 1597 0 R (HD.849) 1598 0 R (HD.85) 757 0 R (HD.850) 1599 0 R (HD.851) 1600 0 R (HD.852) 1601 0 R (HD.853) 1602 0 R (HD.854) 1603 0 R (HD.855) 1604 0 R (HD.856) 1605 0 R (HD.857) 1606 0 R (HD.858) 1607 0 R (HD.859) 1608 0 R (HD.86) 758 0 R (HD.860) 1609 0 R (HD.861) 1610 0 R (HD.862) 1611 0 R (HD.863) 1612 0 R (HD.864) 1613 0 R (HD.865) 1614 0 R (HD.866) 1615 0 R ] /Limits [ (HD.838) (HD.866) ] >> endobj -4638 0 obj -<< /Names [ (section*.3) 2481 0 R (section*.30) 3414 0 R (section*.31) 4200 0 R (section*.32) 4201 0 R (section*.33) 4202 0 R (section*.34) 4203 0 R (section*.35) 4204 0 R (section*.36) 4205 0 R (section*.37) 4206 0 R (section*.38) 4207 0 R (section*.39) 4208 0 R (section*.4) 2563 0 R (section*.40) 4209 0 R (section*.41) 4230 0 R (section*.42) 4231 0 R (section*.43) 4232 0 R (section*.44) 4233 0 R (section*.45) 4234 0 R (section*.46) 4235 0 R (section*.47) 4236 0 R (section*.5) 2684 0 R (section*.6) 2751 0 R (section*.7) 2762 0 R (section*.8) 2764 0 R (section*.9) 2770 0 R (section.0.1) 5 0 R (section.0.10) 201 0 R (section.0.11) 309 0 R (section.0.2) 9 0 R (section.0.3) 13 0 R (section.0.4) 33 0 R (section.0.5) 61 0 R ] /Limits [ (section*.3) (section.0.5) ] >> +5000 0 obj +<< /Names [ (HD.867) 1616 0 R (HD.868) 1617 0 R (HD.869) 1618 0 R (HD.87) 759 0 R (HD.870) 1619 0 R (HD.871) 1620 0 R (HD.872) 1621 0 R (HD.873) 1622 0 R (HD.874) 1623 0 R (HD.875) 1624 0 R (HD.876) 1625 0 R (HD.877) 1626 0 R (HD.878) 1627 0 R (HD.879) 1628 0 R (HD.88) 760 0 R (HD.880) 1629 0 R (HD.881) 1630 0 R (HD.882) 1631 0 R (HD.883) 1632 0 R (HD.884) 1633 0 R (HD.885) 1634 0 R (HD.886) 1635 0 R (HD.887) 1636 0 R (HD.888) 1637 0 R (HD.889) 1638 0 R (HD.89) 761 0 R (HD.890) 1639 0 R (HD.891) 1640 0 R (HD.892) 1646 0 R (HD.893) 1647 0 R (HD.894) 1648 0 R (HD.895) 1649 0 R ] /Limits [ (HD.867) (HD.895) ] >> endobj -4639 0 obj -<< /Names [ (section.0.6) 65 0 R (section.0.7) 145 0 R (section.0.8) 149 0 R (section.0.9) 173 0 R (subsection.0.10.1) 205 0 R (subsection.0.10.2) 209 0 R (subsection.0.10.3) 269 0 R (subsection.0.3.1) 17 0 R (subsection.0.3.2) 21 0 R (subsection.0.3.3) 25 0 R (subsection.0.3.4) 29 0 R (subsection.0.4.1) 37 0 R (subsection.0.4.2) 41 0 R (subsection.0.4.3) 57 0 R (subsection.0.6.1) 69 0 R (subsection.0.6.2) 81 0 R (subsection.0.6.3) 93 0 R (subsection.0.6.4) 97 0 R (subsection.0.6.5) 121 0 R (subsection.0.6.6) 137 0 R (subsection.0.6.7) 141 0 R (subsection.0.8.1) 153 0 R (subsection.0.8.2) 157 0 R (subsection.0.8.3) 161 0 R (subsection.0.8.4) 165 0 R (subsection.0.8.5) 169 0 R (subsection.0.9.1) 177 0 R (subsection.0.9.2) 181 0 R (subsection.0.9.3) 185 0 R (subsection.0.9.4) 189 0 R (subsection.0.9.5) 193 0 R (subsection.0.9.6) 197 0 R ] /Limits [ (section.0.6) (subsection.0.9.6) ] >> +5001 0 obj +<< /Names [ (HD.896) 1650 0 R (HD.897) 1651 0 R (HD.898) 1652 0 R (HD.899) 1653 0 R (HD.9) 673 0 R (HD.90) 762 0 R (HD.900) 1654 0 R (HD.901) 1655 0 R (HD.902) 1656 0 R (HD.903) 1657 0 R (HD.904) 1658 0 R (HD.905) 1659 0 R (HD.906) 1660 0 R (HD.907) 1661 0 R (HD.908) 1662 0 R (HD.909) 1663 0 R (HD.91) 763 0 R (HD.910) 1664 0 R (HD.911) 1665 0 R (HD.912) 1666 0 R (HD.913) 1667 0 R (HD.914) 1668 0 R (HD.915) 1669 0 R (HD.916) 1670 0 R (HD.917) 1671 0 R (HD.918) 1672 0 R (HD.919) 1673 0 R (HD.92) 764 0 R (HD.920) 1674 0 R (HD.921) 1675 0 R (HD.922) 1676 0 R (HD.923) 1677 0 R ] /Limits [ (HD.896) (HD.923) ] >> endobj -4640 0 obj -<< /Names [ (subsubsection.0.10.2.1) 213 0 R (subsubsection.0.10.2.10) 249 0 R (subsubsection.0.10.2.11) 253 0 R (subsubsection.0.10.2.12) 257 0 R (subsubsection.0.10.2.13) 261 0 R (subsubsection.0.10.2.14) 265 0 R (subsubsection.0.10.2.2) 217 0 R (subsubsection.0.10.2.3) 221 0 R (subsubsection.0.10.2.4) 225 0 R (subsubsection.0.10.2.5) 229 0 R (subsubsection.0.10.2.6) 233 0 R (subsubsection.0.10.2.7) 237 0 R (subsubsection.0.10.2.8) 241 0 R (subsubsection.0.10.2.9) 245 0 R (subsubsection.0.10.3.1) 273 0 R (subsubsection.0.10.3.2) 277 0 R (subsubsection.0.10.3.3) 281 0 R (subsubsection.0.10.3.4) 285 0 R (subsubsection.0.10.3.5) 289 0 R (subsubsection.0.10.3.6) 293 0 R (subsubsection.0.10.3.7) 297 0 R (subsubsection.0.10.3.8) 301 0 R (subsubsection.0.10.3.9) 305 0 R (subsubsection.0.4.2.1) 45 0 R (subsubsection.0.4.2.2) 49 0 R (subsubsection.0.4.2.3) 53 0 R (subsubsection.0.6.1.1) 73 0 R (subsubsection.0.6.1.2) 77 0 R (subsubsection.0.6.2.1) 85 0 R (subsubsection.0.6.2.2) 89 0 R (subsubsection.0.6.4.1) 101 0 R (subsubsection.0.6.4.2) 105 0 R ] /Limits [ (subsubsection.0.10.2.1) (subsubsection.0.6.4.2) ] >> +5002 0 obj +<< /Names [ (HD.924) 1678 0 R (HD.925) 1679 0 R (HD.926) 1680 0 R (HD.927) 1681 0 R (HD.928) 1682 0 R (HD.929) 1683 0 R (HD.93) 765 0 R (HD.930) 1684 0 R (HD.931) 1691 0 R (HD.932) 1692 0 R (HD.933) 1693 0 R (HD.934) 1694 0 R (HD.935) 1695 0 R (HD.936) 1696 0 R (HD.937) 1697 0 R (HD.938) 1698 0 R (HD.939) 1699 0 R (HD.94) 766 0 R (HD.940) 1700 0 R (HD.941) 1701 0 R (HD.942) 1702 0 R (HD.943) 1703 0 R (HD.944) 1704 0 R (HD.945) 1705 0 R (HD.946) 1706 0 R (HD.947) 1707 0 R (HD.948) 1708 0 R (HD.949) 1709 0 R (HD.95) 767 0 R (HD.950) 1710 0 R (HD.951) 1711 0 R (HD.952) 1712 0 R ] /Limits [ (HD.924) (HD.952) ] >> endobj -4641 0 obj -<< /Names [ (subsubsection.0.6.4.3) 109 0 R (subsubsection.0.6.4.4) 113 0 R (subsubsection.0.6.4.5) 117 0 R (subsubsection.0.6.5.1) 125 0 R (subsubsection.0.6.5.2) 129 0 R (subsubsection.0.6.5.3) 133 0 R (toc1.1) 313 0 R ] /Limits [ (subsubsection.0.6.4.3) (toc1.1) ] >> +5003 0 obj +<< /Names [ (HD.953) 1713 0 R (HD.954) 1714 0 R (HD.955) 1715 0 R (HD.956) 1716 0 R (HD.957) 1717 0 R (HD.958) 1718 0 R (HD.959) 1719 0 R (HD.96) 768 0 R (HD.960) 1720 0 R (HD.961) 1721 0 R (HD.962) 1722 0 R (HD.963) 1723 0 R (HD.964) 1724 0 R (HD.965) 1725 0 R (HD.966) 1726 0 R (HD.967) 1727 0 R (HD.968) 1728 0 R (HD.969) 1729 0 R (HD.97) 769 0 R (HD.970) 1730 0 R (HD.971) 1731 0 R (HD.972) 1732 0 R (HD.973) 1733 0 R (HD.974) 1734 0 R (HD.975) 1739 0 R (HD.976) 1740 0 R (HD.977) 1741 0 R (HD.978) 1742 0 R (HD.979) 1743 0 R (HD.98) 770 0 R (HD.980) 1744 0 R (HD.981) 1745 0 R ] /Limits [ (HD.953) (HD.981) ] >> endobj -4642 0 obj -<< /Kids [ 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R ] /Limits [ (Doc-Start) (HD.1919) ] >> +5004 0 obj +<< /Names [ (HD.982) 1746 0 R (HD.983) 1747 0 R (HD.984) 1748 0 R (HD.985) 1749 0 R (HD.986) 1750 0 R (HD.987) 1751 0 R (HD.988) 1752 0 R (HD.989) 1753 0 R (HD.99) 771 0 R (HD.990) 1754 0 R (HD.991) 1755 0 R (HD.992) 1756 0 R (HD.993) 1757 0 R (HD.994) 1758 0 R (HD.995) 1759 0 R (HD.996) 1760 0 R (HD.997) 1761 0 R (HD.998) 1762 0 R (HD.999) 1763 0 R (Hfootnote.1) 370 0 R (Hfootnote.10) 439 0 R (Hfootnote.11) 440 0 R (Hfootnote.12) 441 0 R (Hfootnote.13) 450 0 R (Hfootnote.14) 451 0 R (Hfootnote.15) 462 0 R (Hfootnote.16) 463 0 R (Hfootnote.17) 474 0 R (Hfootnote.18) 475 0 R (Hfootnote.19) 486 0 R (Hfootnote.2) 374 0 R (Hfootnote.20) 509 0 R ] /Limits [ (HD.982) (Hfootnote.20) ] >> endobj -4643 0 obj -<< /Kids [ 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R ] /Limits [ (HD.192) (HD.2840) ] >> +5005 0 obj +<< /Names [ (Hfootnote.21) 510 0 R (Hfootnote.22) 519 0 R (Hfootnote.23) 536 0 R (Hfootnote.24) 537 0 R (Hfootnote.25) 551 0 R (Hfootnote.26) 552 0 R (Hfootnote.27) 560 0 R (Hfootnote.28) 561 0 R (Hfootnote.29) 578 0 R (Hfootnote.3) 390 0 R (Hfootnote.30) 579 0 R (Hfootnote.31) 592 0 R (Hfootnote.32) 593 0 R (Hfootnote.33) 594 0 R (Hfootnote.34) 620 0 R (Hfootnote.35) 656 0 R (Hfootnote.36) 653 0 R (Hfootnote.37) 654 0 R (Hfootnote.38) 655 0 R (Hfootnote.39) 1685 0 R (Hfootnote.4) 403 0 R (Hfootnote.40) 2692 0 R (Hfootnote.41) 2818 0 R (Hfootnote.42) 2819 0 R (Hfootnote.43) 3028 0 R (Hfootnote.44) 3518 0 R (Hfootnote.45) 3721 0 R (Hfootnote.5) 404 0 R (Hfootnote.6) 405 0 R (Hfootnote.7) 418 0 R (Hfootnote.8) 419 0 R (Hfootnote.9) 420 0 R ] /Limits [ (Hfootnote.21) (Hfootnote.9) ] >> endobj -4644 0 obj -<< /Kids [ 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R ] /Limits [ (HD.2841) (HD.868) ] >> +5006 0 obj +<< /Names [ (page.1) 345 0 R (page.10) 485 0 R (page.100) 3916 0 R (page.101) 3965 0 R (page.102) 4018 0 R (page.103) 4062 0 R (page.104) 4106 0 R (page.105) 4160 0 R (page.106) 4198 0 R (page.107) 4251 0 R (page.108) 4311 0 R (page.109) 4360 0 R (page.11) 491 0 R (page.110) 4412 0 R (page.111) 4478 0 R (page.112) 4536 0 R (page.113) 4584 0 R (page.114) 4640 0 R (page.115) 4687 0 R (page.12) 496 0 R (page.13) 500 0 R (page.14) 508 0 R (page.15) 518 0 R (page.16) 526 0 R (page.17) 535 0 R (page.18) 542 0 R (page.19) 548 0 R (page.2) 387 0 R (page.20) 559 0 R (page.21) 566 0 R (page.22) 577 0 R (page.23) 590 0 R ] /Limits [ (page.1) (page.23) ] >> endobj -4645 0 obj -<< /Kids [ 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R ] /Limits [ (HD.869) (toc1.1) ] >> +5007 0 obj +<< /Names [ (page.24) 599 0 R (page.25) 605 0 R (page.26) 612 0 R (page.27) 619 0 R (page.28) 625 0 R (page.29) 629 0 R (page.3) 400 0 R (page.30) 633 0 R (page.31) 642 0 R (page.32) 652 0 R (page.33) 661 0 R (page.34) 701 0 R (page.35) 747 0 R (page.36) 801 0 R (page.37) 838 0 R (page.38) 860 0 R (page.39) 879 0 R (page.4) 417 0 R (page.40) 921 0 R (page.41) 960 0 R (page.42) 1011 0 R (page.43) 1057 0 R (page.44) 1091 0 R (page.45) 1148 0 R (page.46) 1211 0 R (page.47) 1271 0 R (page.48) 1338 0 R (page.49) 1404 0 R (page.5) 437 0 R (page.50) 1450 0 R (page.51) 1495 0 R (page.52) 1535 0 R ] /Limits [ (page.24) (page.52) ] >> endobj -4646 0 obj -<< /Kids [ 4642 0 R 4643 0 R 4644 0 R 4645 0 R ] /Limits [ (Doc-Start) (toc1.1) ] >> +5008 0 obj +<< /Names [ (page.53) 1589 0 R (page.54) 1645 0 R (page.55) 1690 0 R (page.56) 1738 0 R (page.57) 1788 0 R (page.58) 1844 0 R (page.59) 1904 0 R (page.6) 448 0 R (page.60) 1951 0 R (page.61) 2015 0 R (page.62) 2067 0 R (page.63) 2116 0 R (page.64) 2160 0 R (page.65) 2217 0 R (page.66) 2278 0 R (page.67) 2341 0 R (page.68) 2399 0 R (page.69) 2428 0 R (page.7) 460 0 R (page.70) 2472 0 R (page.71) 2504 0 R (page.72) 2559 0 R (page.73) 2606 0 R (page.74) 2657 0 R (page.75) 2697 0 R (page.76) 2756 0 R (page.77) 2784 0 R (page.78) 2824 0 R (page.79) 2878 0 R (page.8) 471 0 R (page.80) 2937 0 R (page.81) 2984 0 R ] /Limits [ (page.53) (page.81) ] >> endobj -4647 0 obj -<< /Dests 4646 0 R >> +5009 0 obj +<< /Names [ (page.82) 3034 0 R (page.83) 3069 0 R (page.84) 3116 0 R (page.85) 3151 0 R (page.86) 3206 0 R (page.87) 3260 0 R (page.88) 3325 0 R (page.89) 3382 0 R (page.9) 480 0 R (page.90) 3431 0 R (page.91) 3468 0 R (page.92) 3524 0 R (page.93) 3567 0 R (page.94) 3612 0 R (page.95) 3678 0 R (page.96) 3726 0 R (page.97) 3779 0 R (page.98) 3828 0 R (page.99) 3879 0 R (piton:passe) 473 0 R (piton:transpose) 472 0 R (section*.1) 2461 0 R (section*.10) 2930 0 R (section*.11) 2941 0 R (section*.12) 2985 0 R (section*.13) 2987 0 R (section*.14) 3070 0 R (section*.15) 3117 0 R (section*.16) 3169 0 R (section*.17) 3222 0 R (section*.18) 3281 0 R (section*.19) 3328 0 R ] /Limits [ (page.82) (section*.19) ] >> endobj -4648 0 obj -<< /Type /Catalog /Pages 4530 0 R /Outlines 4531 0 R /Names 4647 0 R /PageMode/UseOutlines /OpenAction 316 0 R >> +5010 0 obj +<< /Names [ (section*.2) 2505 0 R (section*.20) 3348 0 R (section*.21) 3445 0 R (section*.22) 3457 0 R (section*.23) 3462 0 R (section*.24) 3469 0 R (section*.25) 3481 0 R (section*.26) 3589 0 R (section*.27) 3591 0 R (section*.28) 3596 0 R (section*.29) 3613 0 R (section*.3) 2566 0 R (section*.30) 4580 0 R (section*.31) 4585 0 R (section*.32) 4586 0 R (section*.33) 4587 0 R (section*.34) 4588 0 R (section*.35) 4589 0 R (section*.36) 4590 0 R (section*.37) 4591 0 R (section*.38) 4592 0 R (section*.39) 4593 0 R (section*.4) 2658 0 R (section*.40) 4594 0 R (section*.41) 4641 0 R (section*.42) 4642 0 R (section*.5) 2785 0 R (section*.6) 2849 0 R (section*.7) 2860 0 R (section*.8) 2862 0 R (section*.9) 2864 0 R (section.0.1) 5 0 R ] /Limits [ (section*.2) (section.0.1) ] >> endobj -4649 0 obj -<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y\000\040\000,\000\040\000f\000p\000a\000n\000t\000i\000g\000n\000y\000@\000w\000a\000n\000a\000d\000o\000o\000.\000f\000r)/Title(\376\377\000T\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000p\000i\000t\000o\000n)/Subject()/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240523185009+02'00') /ModDate (D:20240523185009+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >> +5011 0 obj +<< /Names [ (section.0.10) 205 0 R (section.0.11) 329 0 R (section.0.2) 9 0 R (section.0.3) 13 0 R (section.0.4) 33 0 R (section.0.5) 61 0 R (section.0.6) 65 0 R (section.0.7) 149 0 R (section.0.8) 153 0 R (section.0.9) 173 0 R (subsection.0.10.1) 209 0 R (subsection.0.10.2) 213 0 R (subsection.0.10.3) 273 0 R (subsection.0.3.1) 17 0 R (subsection.0.3.2) 21 0 R (subsection.0.3.3) 25 0 R (subsection.0.3.4) 29 0 R (subsection.0.4.1) 37 0 R (subsection.0.4.2) 41 0 R (subsection.0.4.3) 57 0 R (subsection.0.6.1) 69 0 R (subsection.0.6.2) 81 0 R (subsection.0.6.3) 93 0 R (subsection.0.6.4) 97 0 R (subsection.0.6.5) 101 0 R (subsection.0.6.6) 125 0 R (subsection.0.6.7) 141 0 R (subsection.0.6.8) 145 0 R (subsection.0.8.1) 157 0 R (subsection.0.8.2) 161 0 R (subsection.0.8.3) 165 0 R (subsection.0.8.4) 169 0 R ] /Limits [ (section.0.10) (subsection.0.8.4) ] >> +endobj +5012 0 obj +<< /Names [ (subsection.0.9.1) 177 0 R (subsection.0.9.2) 181 0 R (subsection.0.9.3) 185 0 R (subsection.0.9.4) 189 0 R (subsection.0.9.5) 193 0 R (subsection.0.9.6) 197 0 R (subsection.0.9.7) 201 0 R (subsubsection.0.10.2.1) 217 0 R (subsubsection.0.10.2.10) 253 0 R (subsubsection.0.10.2.11) 257 0 R (subsubsection.0.10.2.12) 261 0 R (subsubsection.0.10.2.13) 265 0 R (subsubsection.0.10.2.14) 269 0 R (subsubsection.0.10.2.2) 221 0 R (subsubsection.0.10.2.3) 225 0 R (subsubsection.0.10.2.4) 229 0 R (subsubsection.0.10.2.5) 233 0 R (subsubsection.0.10.2.6) 237 0 R (subsubsection.0.10.2.7) 241 0 R (subsubsection.0.10.2.8) 245 0 R (subsubsection.0.10.2.9) 249 0 R (subsubsection.0.10.3.1) 277 0 R (subsubsection.0.10.3.10) 313 0 R (subsubsection.0.10.3.11) 317 0 R (subsubsection.0.10.3.12) 321 0 R (subsubsection.0.10.3.13) 325 0 R (subsubsection.0.10.3.2) 281 0 R (subsubsection.0.10.3.3) 285 0 R (subsubsection.0.10.3.4) 289 0 R (subsubsection.0.10.3.5) 293 0 R (subsubsection.0.10.3.6) 297 0 R (subsubsection.0.10.3.7) 301 0 R ] /Limits [ (subsection.0.9.1) (subsubsection.0.10.3.7) ] >> +endobj +5013 0 obj +<< /Names [ (subsubsection.0.10.3.8) 305 0 R (subsubsection.0.10.3.9) 309 0 R (subsubsection.0.4.2.1) 45 0 R (subsubsection.0.4.2.2) 49 0 R (subsubsection.0.4.2.3) 53 0 R (subsubsection.0.6.1.1) 73 0 R (subsubsection.0.6.1.2) 77 0 R (subsubsection.0.6.2.1) 85 0 R (subsubsection.0.6.2.2) 89 0 R (subsubsection.0.6.5.1) 105 0 R (subsubsection.0.6.5.2) 109 0 R (subsubsection.0.6.5.3) 113 0 R (subsubsection.0.6.5.4) 117 0 R (subsubsection.0.6.5.5) 121 0 R (subsubsection.0.6.6.1) 129 0 R (subsubsection.0.6.6.2) 133 0 R (subsubsection.0.6.6.3) 137 0 R (toc1.1) 333 0 R ] /Limits [ (subsubsection.0.10.3.8) (toc1.1) ] >> +endobj +5014 0 obj +<< /Kids [ 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R ] /Limits [ (Doc-Start) (HD.1919) ] >> +endobj +5015 0 obj +<< /Kids [ 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R ] /Limits [ (HD.192) (HD.2840) ] >> +endobj +5016 0 obj +<< /Kids [ 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R ] /Limits [ (HD.2841) (HD.578) ] >> +endobj +5017 0 obj +<< /Kids [ 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R 5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R 5005 0 R 5006 0 R 5007 0 R 5008 0 R 5009 0 R 5010 0 R 5011 0 R 5012 0 R 5013 0 R ] /Limits [ (HD.579) (toc1.1) ] >> +endobj +5018 0 obj +<< /Kids [ 5014 0 R 5015 0 R 5016 0 R 5017 0 R ] /Limits [ (Doc-Start) (toc1.1) ] >> +endobj +5019 0 obj +<< /Dests 5018 0 R >> +endobj +5020 0 obj +<< /Type /Catalog /Pages 4892 0 R /Outlines 4893 0 R /Names 5019 0 R /PageMode/UseOutlines /OpenAction 336 0 R >> +endobj +5021 0 obj +<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y\000\040\000,\000\040\000f\000p\000a\000n\000t\000i\000g\000n\000y\000@\000w\000a\000n\000a\000d\000o\000o\000.\000f\000r)/Title(\376\377\000T\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000p\000i\000t\000o\000n)/Subject()/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20241018184626+02'00') /ModDate (D:20241018184626+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >> endobj xref -0 4650 +0 5022 0000000000 65535 f -0000606561 00000 n -0000606606 00000 n -0000606626 00000 n +0000665374 00000 n +0000665419 00000 n +0000665439 00000 n 0000000020 00000 n -0000024062 00000 n -0000885545 00000 n +0000026171 00000 n +0000906006 00000 n 0000000067 00000 n 0000000167 00000 n -0000029704 00000 n -0000885458 00000 n +0000032278 00000 n +0000905919 00000 n 0000000214 00000 n 0000000315 00000 n -0000029764 00000 n -0000885332 00000 n +0000032338 00000 n +0000905793 00000 n 0000000363 00000 n 0000000503 00000 n -0000029825 00000 n -0000885258 00000 n +0000032399 00000 n +0000905719 00000 n 0000000556 00000 n 0000000708 00000 n -0000029886 00000 n -0000885171 00000 n +0000032460 00000 n +0000905632 00000 n 0000000761 00000 n 0000000979 00000 n -0000029947 00000 n -0000885084 00000 n +0000032521 00000 n +0000905545 00000 n 0000001032 00000 n 0000001248 00000 n -0000035326 00000 n -0000885010 00000 n +0000037610 00000 n +0000905471 00000 n 0000001301 00000 n 0000001530 00000 n -0000042425 00000 n -0000884884 00000 n +0000037671 00000 n +0000905345 00000 n 0000001578 00000 n 0000001684 00000 n -0000042486 00000 n -0000884810 00000 n +0000037732 00000 n +0000905271 00000 n 0000001737 00000 n 0000001991 00000 n -0000054349 00000 n -0000884686 00000 n +0000057089 00000 n +0000905147 00000 n 0000002044 00000 n 0000002148 00000 n -0000054410 00000 n -0000884612 00000 n +0000057150 00000 n +0000905073 00000 n 0000002206 00000 n 0000002348 00000 n -0000059557 00000 n -0000884525 00000 n +0000062328 00000 n +0000904986 00000 n 0000002406 00000 n 0000002629 00000 n -0000064722 00000 n -0000884451 00000 n +0000067597 00000 n +0000904912 00000 n 0000002687 00000 n 0000002864 00000 n -0000064911 00000 n -0000884377 00000 n +0000067786 00000 n +0000904838 00000 n 0000002917 00000 n 0000003117 00000 n -0000068900 00000 n -0000884288 00000 n +0000071747 00000 n +0000904749 00000 n 0000003165 00000 n 0000003505 00000 n -0000073253 00000 n -0000884160 00000 n +0000079737 00000 n +0000904621 00000 n 0000003553 00000 n 0000003682 00000 n -0000073314 00000 n -0000884049 00000 n +0000079798 00000 n +0000904510 00000 n 0000003735 00000 n -0000003933 00000 n -0000073374 00000 n -0000883975 00000 n -0000003991 00000 n -0000004110 00000 n -0000078664 00000 n -0000883901 00000 n -0000004168 00000 n -0000004287 00000 n -0000082649 00000 n -0000883777 00000 n -0000004340 00000 n -0000004554 00000 n -0000082710 00000 n -0000883703 00000 n -0000004612 00000 n -0000004764 00000 n -0000082771 00000 n -0000883629 00000 n -0000004822 00000 n -0000004989 00000 n -0000089940 00000 n -0000883542 00000 n -0000005042 00000 n -0000005244 00000 n -0000094927 00000 n -0000883415 00000 n -0000005297 00000 n -0000005505 00000 n -0000094988 00000 n -0000883337 00000 n -0000005564 00000 n -0000005742 00000 n -0000098856 00000 n -0000883245 00000 n -0000005801 00000 n -0000005994 00000 n -0000098918 00000 n -0000883153 00000 n -0000006053 00000 n -0000006266 00000 n -0000098980 00000 n -0000883061 00000 n -0000006325 00000 n -0000006513 00000 n -0000102574 00000 n -0000882983 00000 n -0000006572 00000 n -0000006785 00000 n -0000108035 00000 n -0000882853 00000 n -0000006839 00000 n -0000007048 00000 n -0000108097 00000 n -0000882774 00000 n -0000007107 00000 n -0000007430 00000 n -0000108159 00000 n -0000882681 00000 n -0000007489 00000 n -0000007866 00000 n -0000111687 00000 n -0000882602 00000 n -0000007925 00000 n -0000008322 00000 n -0000117723 00000 n -0000882510 00000 n -0000008376 00000 n -0000008633 00000 n -0000117784 00000 n -0000882432 00000 n -0000008687 00000 n -0000008794 00000 n -0000117846 00000 n -0000882339 00000 n -0000008843 00000 n -0000009009 00000 n -0000121909 00000 n -0000882206 00000 n -0000009058 00000 n -0000009140 00000 n -0000121971 00000 n -0000882127 00000 n -0000009194 00000 n -0000009319 00000 n -0000122033 00000 n -0000882034 00000 n -0000009373 00000 n -0000009597 00000 n -0000126540 00000 n -0000881941 00000 n -0000009651 00000 n -0000009817 00000 n -0000131616 00000 n -0000881848 00000 n -0000009871 00000 n -0000010111 00000 n -0000134939 00000 n -0000881769 00000 n -0000010165 00000 n -0000010308 00000 n -0000139455 00000 n -0000881636 00000 n -0000010357 00000 n -0000010652 00000 n -0000139517 00000 n -0000881557 00000 n -0000010706 00000 n -0000010859 00000 n -0000143047 00000 n -0000881464 00000 n -0000010913 00000 n -0000011061 00000 n -0000146638 00000 n -0000881371 00000 n -0000011115 00000 n -0000011305 00000 n -0000150029 00000 n -0000881278 00000 n -0000011359 00000 n -0000011497 00000 n -0000152201 00000 n -0000881185 00000 n -0000011551 00000 n -0000011729 00000 n -0000154201 00000 n -0000881106 00000 n -0000011783 00000 n -0000012060 00000 n -0000158712 00000 n -0000880973 00000 n -0000012110 00000 n -0000012227 00000 n -0000158774 00000 n -0000880894 00000 n -0000012282 00000 n -0000012399 00000 n -0000162705 00000 n -0000880761 00000 n -0000012454 00000 n -0000012691 00000 n -0000162767 00000 n -0000880682 00000 n -0000012751 00000 n -0000012957 00000 n -0000180318 00000 n -0000880589 00000 n -0000013017 00000 n -0000013273 00000 n -0000199859 00000 n -0000880496 00000 n -0000013333 00000 n -0000013550 00000 n -0000220528 00000 n -0000880403 00000 n -0000013610 00000 n -0000013737 00000 n -0000247081 00000 n -0000880310 00000 n -0000013797 00000 n -0000013996 00000 n -0000248313 00000 n -0000880217 00000 n -0000014056 00000 n -0000014324 00000 n -0000252671 00000 n -0000880124 00000 n -0000014384 00000 n -0000014740 00000 n -0000308873 00000 n -0000880031 00000 n -0000014800 00000 n -0000014920 00000 n -0000320013 00000 n -0000879938 00000 n -0000014980 00000 n -0000015143 00000 n -0000325909 00000 n -0000879845 00000 n -0000015204 00000 n -0000015427 00000 n -0000335723 00000 n -0000879752 00000 n -0000015488 00000 n -0000015600 00000 n -0000336434 00000 n -0000879659 00000 n -0000015661 00000 n -0000015913 00000 n -0000350746 00000 n -0000879566 00000 n -0000015974 00000 n -0000016137 00000 n -0000354756 00000 n -0000879487 00000 n -0000016198 00000 n -0000016358 00000 n -0000356117 00000 n -0000879369 00000 n -0000016413 00000 n -0000016655 00000 n -0000393772 00000 n -0000879290 00000 n -0000016715 00000 n -0000016883 00000 n -0000435167 00000 n -0000879197 00000 n -0000016943 00000 n -0000017106 00000 n -0000465155 00000 n -0000879104 00000 n -0000017166 00000 n -0000017309 00000 n -0000477452 00000 n -0000879011 00000 n -0000017369 00000 n -0000017522 00000 n -0000495129 00000 n -0000878918 00000 n -0000017582 00000 n -0000017775 00000 n -0000512527 00000 n -0000878825 00000 n -0000017835 00000 n -0000018246 00000 n -0000513174 00000 n -0000878732 00000 n -0000018306 00000 n -0000018621 00000 n -0000524998 00000 n -0000878639 00000 n -0000018681 00000 n -0000018903 00000 n -0000531630 00000 n -0000878560 00000 n -0000018963 00000 n -0000019309 00000 n -0000575224 00000 n -0000878466 00000 n -0000019359 00000 n -0000019441 00000 n -0000585853 00000 n -0000878386 00000 n -0000019485 00000 n -0000019554 00000 n -0000023057 00000 n -0000023247 00000 n -0000023558 00000 n -0000023402 00000 n -0000024248 00000 n -0000019618 00000 n -0000023938 00000 n -0000024000 00000 n -0000785985 00000 n -0000783093 00000 n -0000875028 00000 n -0000780879 00000 n -0000777205 00000 n -0000773859 00000 n -0000771227 00000 n -0000764868 00000 n -0000762755 00000 n -0000754610 00000 n -0000743649 00000 n -0000739982 00000 n -0000736879 00000 n -0000726167 00000 n -0000722216 00000 n -0000875744 00000 n -0000874306 00000 n -0000874668 00000 n -0000875920 00000 n -0000875208 00000 n -0000715529 00000 n -0000706795 00000 n -0000702560 00000 n -0000024122 00000 n -0000699450 00000 n -0000695727 00000 n -0000023750 00000 n -0000024185 00000 n -0000876267 00000 n -0000023194 00000 n -0000028848 00000 n -0000029482 00000 n -0000029004 00000 n -0000029160 00000 n -0000029321 00000 n -0000034630 00000 n -0000034791 00000 n -0000030071 00000 n -0000028650 00000 n -0000024684 00000 n -0000029642 00000 n -0000688009 00000 n -0000686220 00000 n -0000030008 00000 n -0000028787 00000 n -0000034952 00000 n -0000035108 00000 n -0000041109 00000 n -0000035513 00000 n -0000034440 00000 n -0000030325 00000 n -0000035264 00000 n -0000677253 00000 n -0000035387 00000 n -0000035450 00000 n -0000034577 00000 n -0000041264 00000 n -0000042053 00000 n -0000042208 00000 n -0000041420 00000 n -0000041575 00000 n -0000041731 00000 n -0000041892 00000 n -0000042797 00000 n -0000040887 00000 n -0000035780 00000 n -0000042363 00000 n -0000670492 00000 n -0000042547 00000 n -0000042610 00000 n -0000042673 00000 n -0000042735 00000 n -0000041024 00000 n -0000047964 00000 n -0000048124 00000 n -0000048285 00000 n -0000048450 00000 n -0000048615 00000 n -0000048772 00000 n -0000048931 00000 n -0000049090 00000 n -0000049246 00000 n -0000053482 00000 n -0000053957 00000 n -0000054122 00000 n -0000049652 00000 n -0000047734 00000 n -0000043064 00000 n -0000049402 00000 n -0000667696 00000 n -0000049464 00000 n -0000049527 00000 n -0000049590 00000 n -0000047871 00000 n -0000053639 00000 n -0000053800 00000 n -0000054597 00000 n -0000053284 00000 n -0000049919 00000 n -0000054287 00000 n -0000663960 00000 n -0000054471 00000 n -0000054534 00000 n -0000053421 00000 n -0000058873 00000 n -0000059028 00000 n -0000059184 00000 n -0000059341 00000 n -0000059742 00000 n -0000058683 00000 n -0000054864 00000 n -0000059495 00000 n -0000652434 00000 n -0000059617 00000 n -0000059680 00000 n -0000058820 00000 n -0000064187 00000 n -0000064347 00000 n -0000064504 00000 n -0000065096 00000 n -0000064005 00000 n -0000060009 00000 n -0000064660 00000 n -0000064783 00000 n -0000064847 00000 n -0000064972 00000 n -0000065034 00000 n -0000064142 00000 n -0000073034 00000 n -0000068961 00000 n -0000068717 00000 n -0000065402 00000 n -0000068838 00000 n -0000078290 00000 n -0000073496 00000 n -0000072868 00000 n -0000069202 00000 n -0000073191 00000 n -0000073433 00000 n -0000073005 00000 n -0000078446 00000 n -0000078851 00000 n -0000078116 00000 n -0000073776 00000 n -0000078602 00000 n -0000078725 00000 n -0000078788 00000 n -0000876420 00000 n -0000078253 00000 n -0000082832 00000 n -0000082466 00000 n -0000079105 00000 n -0000082587 00000 n -0000089403 00000 n -0000086172 00000 n -0000085989 00000 n -0000083086 00000 n -0000086110 00000 n -0000089560 00000 n -0000089719 00000 n -0000090064 00000 n -0000089221 00000 n -0000086374 00000 n -0000089878 00000 n -0000090001 00000 n -0000089358 00000 n -0000094065 00000 n +0000003890 00000 n +0000079859 00000 n +0000904436 00000 n +0000003948 00000 n +0000004153 00000 n +0000079920 00000 n +0000904362 00000 n +0000004211 00000 n +0000004435 00000 n +0000087689 00000 n +0000904238 00000 n +0000004488 00000 n +0000004686 00000 n +0000087750 00000 n +0000904164 00000 n +0000004744 00000 n +0000004863 00000 n +0000093687 00000 n +0000904090 00000 n +0000004921 00000 n +0000005040 00000 n +0000093748 00000 n +0000904003 00000 n +0000005093 00000 n +0000005349 00000 n +0000097618 00000 n +0000903915 00000 n +0000005402 00000 n +0000005604 00000 n +0000101856 00000 n +0000903785 00000 n +0000005658 00000 n +0000005867 00000 n +0000101918 00000 n +0000903706 00000 n +0000005926 00000 n +0000006104 00000 n +0000106771 00000 n +0000903613 00000 n +0000006163 00000 n +0000006356 00000 n +0000106829 00000 n +0000903520 00000 n +0000006415 00000 n +0000006628 00000 n +0000110189 00000 n +0000903427 00000 n +0000006687 00000 n +0000006875 00000 n +0000115128 00000 n +0000903348 00000 n +0000006934 00000 n +0000007147 00000 n +0000115190 00000 n +0000903217 00000 n +0000007201 00000 n +0000007410 00000 n +0000119402 00000 n +0000903138 00000 n +0000007469 00000 n +0000007792 00000 n +0000119464 00000 n +0000903045 00000 n +0000007851 00000 n +0000008228 00000 n +0000123529 00000 n +0000902966 00000 n +0000008287 00000 n +0000008684 00000 n +0000123591 00000 n +0000902874 00000 n +0000008738 00000 n +0000008995 00000 n +0000134519 00000 n +0000902796 00000 n +0000009049 00000 n +0000009156 00000 n +0000134580 00000 n +0000902703 00000 n +0000009205 00000 n +0000009371 00000 n +0000134642 00000 n +0000902570 00000 n +0000009420 00000 n +0000009502 00000 n +0000134704 00000 n +0000902491 00000 n +0000009556 00000 n +0000009681 00000 n +0000138677 00000 n +0000902398 00000 n +0000009735 00000 n +0000009959 00000 n +0000142414 00000 n +0000902305 00000 n +0000010013 00000 n +0000010253 00000 n +0000145011 00000 n +0000902226 00000 n +0000010307 00000 n +0000010450 00000 n +0000149506 00000 n +0000902093 00000 n +0000010499 00000 n +0000010794 00000 n +0000149568 00000 n +0000902014 00000 n +0000010848 00000 n +0000011001 00000 n +0000152941 00000 n +0000901921 00000 n +0000011055 00000 n +0000011203 00000 n +0000156359 00000 n +0000901828 00000 n +0000011257 00000 n +0000011447 00000 n +0000159552 00000 n +0000901735 00000 n +0000011501 00000 n +0000011639 00000 n +0000163451 00000 n +0000901642 00000 n +0000011693 00000 n +0000011970 00000 n +0000163513 00000 n +0000901549 00000 n +0000012024 00000 n +0000012202 00000 n +0000163575 00000 n +0000901470 00000 n +0000012256 00000 n +0000012439 00000 n +0000168108 00000 n +0000901337 00000 n +0000012489 00000 n +0000012606 00000 n +0000168170 00000 n +0000901258 00000 n +0000012661 00000 n +0000012778 00000 n +0000172190 00000 n +0000901125 00000 n +0000012833 00000 n +0000013070 00000 n +0000172252 00000 n +0000901046 00000 n +0000013130 00000 n +0000013336 00000 n +0000190639 00000 n +0000900953 00000 n +0000013396 00000 n +0000013652 00000 n +0000210676 00000 n +0000900860 00000 n +0000013712 00000 n +0000013929 00000 n +0000235156 00000 n +0000900767 00000 n +0000013989 00000 n +0000014116 00000 n +0000264758 00000 n +0000900674 00000 n +0000014176 00000 n +0000014375 00000 n +0000265925 00000 n +0000900581 00000 n +0000014435 00000 n +0000014703 00000 n +0000270243 00000 n +0000900488 00000 n +0000014763 00000 n +0000015119 00000 n +0000326250 00000 n +0000900395 00000 n +0000015179 00000 n +0000015299 00000 n +0000338183 00000 n +0000900302 00000 n +0000015359 00000 n +0000015522 00000 n +0000343944 00000 n +0000900209 00000 n +0000015583 00000 n +0000015806 00000 n +0000354111 00000 n +0000900116 00000 n +0000015867 00000 n +0000015979 00000 n +0000354823 00000 n +0000900023 00000 n +0000016040 00000 n +0000016292 00000 n +0000372299 00000 n +0000899930 00000 n +0000016353 00000 n +0000016516 00000 n +0000373271 00000 n +0000899851 00000 n +0000016577 00000 n +0000016737 00000 n +0000379478 00000 n +0000899732 00000 n +0000016792 00000 n +0000017034 00000 n +0000379996 00000 n +0000899653 00000 n +0000017094 00000 n +0000017348 00000 n +0000418960 00000 n +0000899560 00000 n +0000017408 00000 n +0000017576 00000 n +0000459414 00000 n +0000899467 00000 n +0000017636 00000 n +0000017799 00000 n +0000499012 00000 n +0000899374 00000 n +0000017859 00000 n +0000018002 00000 n +0000515113 00000 n +0000899281 00000 n +0000018062 00000 n +0000018215 00000 n +0000532656 00000 n +0000899188 00000 n +0000018275 00000 n +0000018468 00000 n +0000539184 00000 n +0000899095 00000 n +0000018528 00000 n +0000018726 00000 n +0000544599 00000 n +0000899002 00000 n +0000018786 00000 n +0000018949 00000 n +0000555057 00000 n +0000898909 00000 n +0000019009 00000 n +0000019420 00000 n +0000555898 00000 n +0000898816 00000 n +0000019481 00000 n +0000019801 00000 n +0000572877 00000 n +0000898723 00000 n +0000019862 00000 n +0000020089 00000 n +0000580248 00000 n +0000898630 00000 n +0000020150 00000 n +0000020463 00000 n +0000590648 00000 n +0000898551 00000 n +0000020524 00000 n +0000020875 00000 n +0000634603 00000 n +0000898457 00000 n +0000020925 00000 n +0000021007 00000 n +0000650498 00000 n +0000898377 00000 n +0000021051 00000 n +0000021120 00000 n +0000024835 00000 n +0000025041 00000 n +0000025200 00000 n +0000025360 00000 n +0000025669 00000 n +0000025513 00000 n +0000026352 00000 n +0000021184 00000 n +0000026047 00000 n +0000026109 00000 n +0000805811 00000 n +0000802919 00000 n +0000894854 00000 n +0000800705 00000 n +0000796474 00000 n +0000793128 00000 n +0000790496 00000 n +0000784137 00000 n +0000782018 00000 n +0000770840 00000 n +0000760235 00000 n +0000752067 00000 n +0000748400 00000 n +0000745299 00000 n +0000741189 00000 n +0000895570 00000 n +0000894132 00000 n +0000894494 00000 n +0000895746 00000 n +0000895034 00000 n +0000734502 00000 n +0000725915 00000 n +0000721588 00000 n +0000026231 00000 n +0000718478 00000 n +0000714755 00000 n +0000025861 00000 n +0000026294 00000 n +0000896093 00000 n +0000024972 00000 n +0000031101 00000 n +0000032057 00000 n +0000031257 00000 n +0000031413 00000 n +0000031574 00000 n +0000031735 00000 n +0000031896 00000 n +0000032644 00000 n +0000030887 00000 n +0000026788 00000 n +0000032216 00000 n +0000707037 00000 n +0000705248 00000 n +0000032582 00000 n +0000031024 00000 n +0000037081 00000 n +0000037237 00000 n +0000037393 00000 n +0000043829 00000 n +0000043985 00000 n +0000037979 00000 n +0000036899 00000 n +0000032898 00000 n +0000037548 00000 n +0000696208 00000 n +0000690101 00000 n +0000037793 00000 n +0000037855 00000 n +0000037917 00000 n +0000037036 00000 n +0000044141 00000 n +0000044937 00000 n +0000045091 00000 n +0000044297 00000 n +0000044452 00000 n +0000044608 00000 n +0000044772 00000 n +0000045493 00000 n +0000043599 00000 n +0000038259 00000 n +0000045245 00000 n +0000045307 00000 n +0000045369 00000 n +0000045431 00000 n +0000043736 00000 n +0000050707 00000 n +0000050867 00000 n +0000051028 00000 n +0000051194 00000 n +0000051360 00000 n +0000051517 00000 n +0000051678 00000 n +0000051839 00000 n +0000051995 00000 n +0000056223 00000 n +0000056697 00000 n +0000056862 00000 n +0000052401 00000 n +0000050477 00000 n +0000045747 00000 n +0000052152 00000 n +0000687305 00000 n +0000052214 00000 n +0000052277 00000 n +0000052339 00000 n +0000050614 00000 n +0000056380 00000 n +0000056541 00000 n +0000057336 00000 n +0000056025 00000 n +0000052668 00000 n +0000057027 00000 n +0000683569 00000 n +0000057211 00000 n +0000057274 00000 n +0000056162 00000 n +0000061643 00000 n +0000061799 00000 n +0000061955 00000 n +0000062112 00000 n +0000062513 00000 n +0000061453 00000 n +0000057603 00000 n +0000062266 00000 n +0000672043 00000 n +0000062388 00000 n +0000062451 00000 n +0000061590 00000 n +0000067062 00000 n +0000067222 00000 n +0000067379 00000 n +0000067973 00000 n +0000066880 00000 n +0000062780 00000 n +0000067535 00000 n +0000067658 00000 n +0000067722 00000 n +0000067847 00000 n +0000067910 00000 n +0000067017 00000 n +0000071808 00000 n +0000071564 00000 n +0000068279 00000 n +0000071685 00000 n +0000075560 00000 n +0000075842 00000 n +0000075394 00000 n +0000072036 00000 n +0000075717 00000 n +0000075779 00000 n +0000075531 00000 n +0000079981 00000 n +0000079554 00000 n +0000076096 00000 n +0000079675 00000 n +0000896246 00000 n +0000083095 00000 n +0000082912 00000 n +0000080170 00000 n +0000083033 00000 n +0000087811 00000 n +0000087506 00000 n +0000083310 00000 n +0000087627 00000 n +0000092990 00000 n +0000093147 00000 n +0000093303 00000 n +0000093464 00000 n +0000093933 00000 n +0000092800 00000 n +0000088065 00000 n +0000093625 00000 n +0000093809 00000 n +0000093872 00000 n +0000092937 00000 n +0000097080 00000 n +0000097236 00000 n +0000097396 00000 n +0000097742 00000 n +0000096898 00000 n 0000094226 00000 n -0000094387 00000 n -0000094548 00000 n -0000094709 00000 n -0000095113 00000 n -0000093867 00000 n -0000090318 00000 n -0000094865 00000 n -0000095050 00000 n -0000094004 00000 n -0000099042 00000 n -0000098673 00000 n -0000095380 00000 n -0000098794 00000 n -0000102636 00000 n -0000102391 00000 n -0000099270 00000 n -0000102512 00000 n -0000107345 00000 n -0000107502 00000 n -0000107659 00000 n -0000107816 00000 n -0000108471 00000 n -0000107155 00000 n -0000102812 00000 n -0000107973 00000 n -0000875386 00000 n -0000874487 00000 n -0000108220 00000 n -0000108283 00000 n -0000108346 00000 n -0000108409 00000 n -0000107292 00000 n -0000111749 00000 n -0000111504 00000 n -0000108829 00000 n -0000111625 00000 n -0000116529 00000 n -0000116690 00000 n -0000116851 00000 n -0000117011 00000 n -0000117177 00000 n -0000117343 00000 n -0000117502 00000 n -0000117908 00000 n -0000116315 00000 n -0000111938 00000 n -0000117661 00000 n -0000116452 00000 n -0000122095 00000 n -0000121726 00000 n -0000118110 00000 n -0000121847 00000 n -0000876573 00000 n -0000125844 00000 n -0000126005 00000 n -0000126166 00000 n -0000126321 00000 n -0000126727 00000 n -0000125654 00000 n -0000122297 00000 n -0000126478 00000 n -0000126601 00000 n -0000126664 00000 n -0000125791 00000 n -0000130458 00000 n -0000130615 00000 n -0000130772 00000 n -0000130932 00000 n -0000131092 00000 n -0000131249 00000 n -0000131739 00000 n -0000130252 00000 n -0000126968 00000 n -0000131429 00000 n -0000648876 00000 n -0000131491 00000 n -0000131553 00000 n -0000131677 00000 n -0000130389 00000 n -0000134565 00000 n -0000134721 00000 n -0000135001 00000 n -0000134391 00000 n -0000132006 00000 n -0000134877 00000 n -0000646677 00000 n -0000634504 00000 n -0000619850 00000 n -0000134528 00000 n -0000139058 00000 n -0000139215 00000 n -0000139641 00000 n -0000138884 00000 n -0000135245 00000 n -0000139393 00000 n -0000139579 00000 n -0000139021 00000 n -0000143109 00000 n -0000142864 00000 n -0000139882 00000 n -0000142985 00000 n -0000146700 00000 n -0000146455 00000 n -0000143272 00000 n -0000146576 00000 n -0000150091 00000 n -0000149846 00000 n -0000146889 00000 n -0000149967 00000 n -0000151817 00000 n -0000151978 00000 n -0000152263 00000 n -0000151643 00000 n -0000150267 00000 n -0000152139 00000 n -0000151780 00000 n -0000153983 00000 n -0000154263 00000 n -0000153817 00000 n -0000152426 00000 n -0000154139 00000 n -0000153954 00000 n -0000158025 00000 n -0000158180 00000 n -0000158336 00000 n -0000158493 00000 n -0000159087 00000 n -0000157835 00000 n -0000154426 00000 n -0000158650 00000 n -0000158835 00000 n -0000158898 00000 n -0000158961 00000 n -0000159024 00000 n -0000876726 00000 n -0000157972 00000 n -0000165091 00000 n -0000162522 00000 n -0000159380 00000 n -0000162643 00000 n -0000874161 00000 n -0000162829 00000 n -0000875564 00000 n -0000876094 00000 n -0000162892 00000 n -0000162955 00000 n -0000163018 00000 n -0000163081 00000 n -0000163143 00000 n -0000163206 00000 n -0000163269 00000 n -0000163332 00000 n -0000163395 00000 n -0000163458 00000 n -0000163520 00000 n -0000163583 00000 n -0000163646 00000 n -0000163709 00000 n -0000163772 00000 n -0000163835 00000 n -0000163898 00000 n -0000163961 00000 n -0000164024 00000 n -0000164086 00000 n -0000164149 00000 n -0000164212 00000 n -0000164275 00000 n -0000164338 00000 n -0000164401 00000 n -0000164464 00000 n -0000164527 00000 n -0000164590 00000 n -0000164653 00000 n -0000164716 00000 n -0000164779 00000 n -0000164842 00000 n -0000164905 00000 n -0000164967 00000 n -0000165029 00000 n -0000170786 00000 n -0000167648 00000 n -0000165321 00000 n -0000167769 00000 n -0000167831 00000 n -0000167894 00000 n -0000167956 00000 n -0000168019 00000 n -0000168082 00000 n -0000168145 00000 n -0000168208 00000 n -0000168271 00000 n -0000168334 00000 n -0000168397 00000 n -0000168460 00000 n -0000168523 00000 n -0000168586 00000 n -0000168649 00000 n -0000168711 00000 n -0000168774 00000 n -0000168837 00000 n -0000168900 00000 n -0000168963 00000 n -0000169026 00000 n -0000169089 00000 n -0000169152 00000 n -0000169215 00000 n -0000169278 00000 n -0000169341 00000 n -0000169404 00000 n -0000169467 00000 n -0000169530 00000 n -0000169593 00000 n -0000169656 00000 n -0000169719 00000 n -0000169782 00000 n -0000169845 00000 n -0000169908 00000 n -0000169970 00000 n -0000170033 00000 n -0000170096 00000 n -0000170159 00000 n -0000170222 00000 n -0000170285 00000 n -0000170348 00000 n -0000170411 00000 n -0000170474 00000 n -0000170536 00000 n -0000170599 00000 n -0000170662 00000 n -0000170724 00000 n -0000176419 00000 n -0000173033 00000 n -0000170949 00000 n -0000173154 00000 n -0000173216 00000 n -0000173279 00000 n -0000173341 00000 n -0000173404 00000 n -0000173467 00000 n -0000173530 00000 n -0000173593 00000 n -0000173656 00000 n -0000173719 00000 n -0000173782 00000 n -0000173845 00000 n -0000173908 00000 n -0000173971 00000 n -0000174034 00000 n -0000174097 00000 n -0000174160 00000 n -0000174223 00000 n -0000174286 00000 n -0000174349 00000 n -0000174412 00000 n -0000174475 00000 n -0000174538 00000 n -0000174601 00000 n -0000174663 00000 n -0000174726 00000 n -0000174789 00000 n -0000174852 00000 n -0000174915 00000 n -0000174978 00000 n -0000175037 00000 n -0000175100 00000 n -0000175163 00000 n -0000175226 00000 n -0000175289 00000 n -0000175352 00000 n -0000175415 00000 n -0000175478 00000 n -0000175541 00000 n -0000175603 00000 n -0000175666 00000 n -0000175729 00000 n -0000175792 00000 n -0000175855 00000 n -0000175918 00000 n -0000175980 00000 n -0000176043 00000 n -0000176106 00000 n -0000176169 00000 n -0000176232 00000 n -0000176295 00000 n -0000176357 00000 n -0000181135 00000 n -0000179380 00000 n -0000176582 00000 n -0000179501 00000 n -0000179563 00000 n -0000179626 00000 n -0000179688 00000 n -0000179751 00000 n -0000179814 00000 n -0000179877 00000 n -0000179940 00000 n -0000180003 00000 n -0000180066 00000 n -0000180129 00000 n -0000180192 00000 n -0000180255 00000 n -0000180380 00000 n -0000180443 00000 n -0000180506 00000 n -0000180569 00000 n -0000180632 00000 n -0000180695 00000 n -0000180757 00000 n -0000180820 00000 n -0000180883 00000 n -0000180946 00000 n -0000181009 00000 n -0000181072 00000 n -0000185819 00000 n -0000184317 00000 n -0000181337 00000 n -0000184438 00000 n -0000184500 00000 n -0000184563 00000 n -0000184626 00000 n -0000184689 00000 n -0000184752 00000 n -0000184815 00000 n -0000184878 00000 n -0000184941 00000 n -0000185003 00000 n -0000185064 00000 n -0000185127 00000 n -0000185190 00000 n -0000185253 00000 n -0000185316 00000 n -0000185379 00000 n -0000185441 00000 n -0000185504 00000 n -0000185567 00000 n -0000185630 00000 n -0000185693 00000 n -0000185756 00000 n -0000190528 00000 n -0000189276 00000 n -0000185995 00000 n -0000189397 00000 n -0000189459 00000 n -0000189522 00000 n -0000189585 00000 n -0000189648 00000 n -0000189711 00000 n -0000189774 00000 n -0000189837 00000 n -0000189899 00000 n -0000189962 00000 n -0000190025 00000 n -0000190088 00000 n -0000190150 00000 n -0000190213 00000 n -0000190276 00000 n -0000190339 00000 n -0000190402 00000 n -0000190465 00000 n -0000195625 00000 n -0000193053 00000 n -0000190717 00000 n -0000193174 00000 n -0000193236 00000 n -0000193299 00000 n -0000193362 00000 n -0000193425 00000 n -0000193487 00000 n -0000193550 00000 n -0000193613 00000 n -0000193676 00000 n -0000193739 00000 n -0000193802 00000 n -0000193865 00000 n -0000193928 00000 n -0000193991 00000 n -0000194054 00000 n -0000194116 00000 n -0000194179 00000 n -0000194242 00000 n -0000194305 00000 n -0000194368 00000 n -0000194431 00000 n -0000194493 00000 n -0000194556 00000 n -0000194619 00000 n -0000194682 00000 n -0000194745 00000 n -0000194808 00000 n -0000194871 00000 n -0000194933 00000 n -0000194996 00000 n -0000195059 00000 n -0000195122 00000 n -0000195185 00000 n -0000195248 00000 n -0000195311 00000 n -0000195373 00000 n -0000195436 00000 n -0000195499 00000 n -0000195562 00000 n -0000201116 00000 n -0000198858 00000 n -0000195801 00000 n -0000198979 00000 n -0000199041 00000 n -0000199104 00000 n -0000199167 00000 n -0000199230 00000 n -0000199293 00000 n -0000199356 00000 n -0000199419 00000 n -0000199482 00000 n -0000199545 00000 n -0000199608 00000 n -0000199671 00000 n -0000199734 00000 n -0000199796 00000 n -0000199921 00000 n -0000199984 00000 n -0000200047 00000 n -0000200110 00000 n -0000200172 00000 n -0000200235 00000 n -0000200298 00000 n -0000200361 00000 n -0000200424 00000 n -0000200487 00000 n -0000200550 00000 n -0000200613 00000 n -0000200676 00000 n -0000200738 00000 n -0000200801 00000 n -0000200864 00000 n -0000200927 00000 n -0000200990 00000 n -0000201053 00000 n -0000207151 00000 n -0000203577 00000 n -0000201318 00000 n -0000203698 00000 n -0000203760 00000 n -0000203823 00000 n -0000203885 00000 n -0000203948 00000 n -0000204011 00000 n -0000204074 00000 n -0000204137 00000 n -0000204200 00000 n -0000204263 00000 n -0000204326 00000 n -0000204389 00000 n -0000204452 00000 n -0000204515 00000 n -0000204578 00000 n -0000204640 00000 n -0000204703 00000 n -0000204764 00000 n -0000204827 00000 n -0000204890 00000 n -0000204953 00000 n -0000205016 00000 n -0000205079 00000 n -0000205142 00000 n -0000205205 00000 n -0000205268 00000 n -0000205330 00000 n -0000205393 00000 n -0000205456 00000 n -0000205519 00000 n -0000205582 00000 n -0000205645 00000 n -0000205708 00000 n -0000205771 00000 n -0000205834 00000 n -0000205896 00000 n -0000205959 00000 n -0000206022 00000 n -0000206084 00000 n -0000206147 00000 n -0000206209 00000 n -0000206272 00000 n -0000206335 00000 n -0000206398 00000 n -0000206461 00000 n -0000206524 00000 n -0000206587 00000 n -0000206650 00000 n -0000206713 00000 n -0000206776 00000 n -0000206838 00000 n -0000206901 00000 n -0000206964 00000 n -0000207027 00000 n -0000207089 00000 n -0000210421 00000 n -0000210581 00000 n -0000212844 00000 n -0000210244 00000 n -0000207314 00000 n -0000210742 00000 n -0000210804 00000 n -0000210867 00000 n -0000210929 00000 n -0000210992 00000 n -0000211055 00000 n -0000211118 00000 n -0000211181 00000 n -0000211245 00000 n -0000211309 00000 n -0000211373 00000 n -0000211437 00000 n -0000211501 00000 n -0000211565 00000 n -0000211629 00000 n -0000211693 00000 n -0000211756 00000 n -0000211820 00000 n -0000211884 00000 n -0000211948 00000 n -0000212012 00000 n -0000212076 00000 n -0000212140 00000 n -0000212204 00000 n -0000212268 00000 n -0000212332 00000 n -0000212396 00000 n -0000212460 00000 n -0000212524 00000 n -0000212588 00000 n -0000212652 00000 n -0000212716 00000 n -0000212780 00000 n -0000876879 00000 n -0000210383 00000 n -0000218471 00000 n -0000214906 00000 n -0000213007 00000 n -0000215031 00000 n -0000215095 00000 n -0000215160 00000 n -0000215225 00000 n -0000215290 00000 n -0000215354 00000 n -0000215419 00000 n -0000215484 00000 n -0000215549 00000 n -0000215614 00000 n -0000215679 00000 n -0000215744 00000 n -0000215809 00000 n -0000215874 00000 n -0000215939 00000 n -0000216004 00000 n +0000097556 00000 n +0000097679 00000 n +0000097035 00000 n +0000101472 00000 n +0000101633 00000 n +0000101980 00000 n +0000101298 00000 n +0000098022 00000 n +0000101794 00000 n +0000101435 00000 n +0000106075 00000 n +0000106235 00000 n +0000106395 00000 n +0000106552 00000 n +0000107016 00000 n +0000105885 00000 n +0000102182 00000 n +0000106709 00000 n +0000106891 00000 n +0000106954 00000 n +0000106022 00000 n +0000110251 00000 n +0000110006 00000 n +0000107322 00000 n +0000110127 00000 n +0000114752 00000 n +0000114909 00000 n +0000115376 00000 n +0000114578 00000 n +0000110440 00000 n +0000115066 00000 n +0000895212 00000 n +0000894313 00000 n +0000115252 00000 n +0000115315 00000 n +0000114715 00000 n +0000119027 00000 n +0000119184 00000 n +0000119652 00000 n +0000118853 00000 n +0000115734 00000 n +0000119340 00000 n +0000119526 00000 n +0000119589 00000 n +0000118990 00000 n +0000123653 00000 n +0000123346 00000 n +0000119893 00000 n +0000123467 00000 n +0000896399 00000 n +0000127435 00000 n +0000127597 00000 n +0000127759 00000 n +0000127916 00000 n +0000133049 00000 n +0000133206 00000 n +0000128260 00000 n +0000127245 00000 n +0000123855 00000 n +0000128072 00000 n +0000128134 00000 n +0000128197 00000 n +0000127382 00000 n +0000133363 00000 n +0000133519 00000 n +0000133679 00000 n +0000133844 00000 n +0000134009 00000 n +0000134170 00000 n +0000134828 00000 n +0000132827 00000 n +0000128501 00000 n +0000134331 00000 n +0000667683 00000 n +0000134393 00000 n +0000134456 00000 n +0000134766 00000 n +0000132964 00000 n +0000138739 00000 n +0000138494 00000 n +0000135082 00000 n +0000138615 00000 n +0000142038 00000 n +0000142195 00000 n +0000142476 00000 n +0000141864 00000 n +0000138928 00000 n +0000142352 00000 n +0000142001 00000 n +0000144639 00000 n +0000144794 00000 n +0000145073 00000 n +0000144465 00000 n +0000142691 00000 n +0000144949 00000 n +0000144602 00000 n +0000149109 00000 n +0000149266 00000 n +0000149692 00000 n +0000148935 00000 n +0000145275 00000 n +0000149444 00000 n +0000149630 00000 n +0000149072 00000 n +0000153003 00000 n +0000152758 00000 n +0000149933 00000 n +0000152879 00000 n +0000156421 00000 n +0000156176 00000 n +0000153166 00000 n +0000156297 00000 n +0000159614 00000 n +0000159369 00000 n +0000156610 00000 n +0000159490 00000 n +0000162585 00000 n +0000162741 00000 n +0000162902 00000 n +0000163063 00000 n +0000163226 00000 n +0000163637 00000 n +0000162387 00000 n +0000159790 00000 n +0000163389 00000 n +0000896552 00000 n +0000162524 00000 n +0000167421 00000 n +0000167576 00000 n +0000167732 00000 n +0000167889 00000 n +0000168483 00000 n +0000167231 00000 n +0000163813 00000 n +0000168046 00000 n +0000168231 00000 n +0000168294 00000 n +0000168357 00000 n +0000168420 00000 n +0000167368 00000 n +0000174389 00000 n +0000172007 00000 n +0000168776 00000 n +0000172128 00000 n +0000893987 00000 n +0000172314 00000 n +0000895390 00000 n +0000895920 00000 n +0000172377 00000 n +0000172440 00000 n +0000172503 00000 n +0000172565 00000 n +0000172628 00000 n +0000172691 00000 n +0000172754 00000 n +0000172817 00000 n +0000172880 00000 n +0000172943 00000 n +0000173006 00000 n +0000173069 00000 n +0000173132 00000 n +0000173195 00000 n +0000173257 00000 n +0000173320 00000 n +0000173383 00000 n +0000173446 00000 n +0000173509 00000 n +0000173572 00000 n +0000173635 00000 n +0000173698 00000 n +0000173761 00000 n +0000173824 00000 n +0000173887 00000 n +0000173950 00000 n +0000174013 00000 n +0000174076 00000 n +0000174139 00000 n +0000174202 00000 n +0000174265 00000 n +0000174327 00000 n +0000180048 00000 n +0000177229 00000 n +0000174630 00000 n +0000177350 00000 n +0000177412 00000 n +0000177475 00000 n +0000177537 00000 n +0000177600 00000 n +0000177663 00000 n +0000177726 00000 n +0000177789 00000 n +0000177852 00000 n +0000177915 00000 n +0000177978 00000 n +0000178040 00000 n +0000178103 00000 n +0000178166 00000 n +0000178229 00000 n +0000178288 00000 n +0000178351 00000 n +0000178414 00000 n +0000178477 00000 n +0000178539 00000 n +0000178602 00000 n +0000178665 00000 n +0000178728 00000 n +0000178791 00000 n +0000178854 00000 n +0000178917 00000 n +0000178980 00000 n +0000179043 00000 n +0000179106 00000 n +0000179169 00000 n +0000179232 00000 n +0000179295 00000 n +0000179358 00000 n +0000179421 00000 n +0000179484 00000 n +0000179547 00000 n +0000179610 00000 n +0000179673 00000 n +0000179736 00000 n +0000179798 00000 n +0000179861 00000 n +0000179924 00000 n +0000179986 00000 n +0000186049 00000 n +0000182723 00000 n +0000180224 00000 n +0000182844 00000 n +0000182906 00000 n +0000182969 00000 n +0000183032 00000 n +0000183095 00000 n +0000183158 00000 n +0000183221 00000 n +0000183284 00000 n +0000183347 00000 n +0000183410 00000 n +0000183473 00000 n +0000183536 00000 n +0000183598 00000 n +0000183661 00000 n +0000183724 00000 n +0000183787 00000 n +0000183850 00000 n +0000183912 00000 n +0000183975 00000 n +0000184038 00000 n +0000184101 00000 n +0000184164 00000 n +0000184227 00000 n +0000184289 00000 n +0000184352 00000 n +0000184415 00000 n +0000184478 00000 n +0000184541 00000 n +0000184603 00000 n +0000184666 00000 n +0000184729 00000 n +0000184792 00000 n +0000184855 00000 n +0000184918 00000 n +0000184981 00000 n +0000185044 00000 n +0000185107 00000 n +0000185170 00000 n +0000185233 00000 n +0000185296 00000 n +0000185359 00000 n +0000185422 00000 n +0000185485 00000 n +0000185548 00000 n +0000185611 00000 n +0000185674 00000 n +0000185737 00000 n +0000185799 00000 n +0000185862 00000 n +0000185925 00000 n +0000185987 00000 n +0000191390 00000 n +0000189072 00000 n +0000186225 00000 n +0000189193 00000 n +0000189255 00000 n +0000189318 00000 n +0000189381 00000 n +0000189444 00000 n +0000189507 00000 n +0000189570 00000 n +0000189633 00000 n +0000189695 00000 n +0000189758 00000 n +0000189821 00000 n +0000189884 00000 n +0000189947 00000 n +0000190010 00000 n +0000190073 00000 n +0000190136 00000 n +0000190199 00000 n +0000190261 00000 n +0000190324 00000 n +0000190387 00000 n +0000190450 00000 n +0000190513 00000 n +0000190576 00000 n +0000190701 00000 n +0000190764 00000 n +0000190827 00000 n +0000190889 00000 n +0000190952 00000 n +0000191014 00000 n +0000191076 00000 n +0000191139 00000 n +0000191202 00000 n +0000191265 00000 n +0000191328 00000 n +0000196414 00000 n +0000195102 00000 n +0000191592 00000 n +0000195223 00000 n +0000195285 00000 n +0000195348 00000 n +0000195411 00000 n +0000195474 00000 n +0000195536 00000 n +0000195599 00000 n +0000195662 00000 n +0000195724 00000 n +0000195787 00000 n +0000195850 00000 n +0000195912 00000 n +0000195975 00000 n +0000196038 00000 n +0000196101 00000 n +0000196164 00000 n +0000196227 00000 n +0000196290 00000 n +0000196352 00000 n +0000201071 00000 n +0000199946 00000 n +0000196616 00000 n +0000200067 00000 n +0000200129 00000 n +0000200192 00000 n +0000200255 00000 n +0000200318 00000 n +0000200381 00000 n +0000200443 00000 n +0000200506 00000 n +0000200569 00000 n +0000200632 00000 n +0000200695 00000 n +0000200758 00000 n +0000200821 00000 n +0000200884 00000 n +0000200947 00000 n +0000201009 00000 n +0000206544 00000 n +0000203973 00000 n +0000201247 00000 n +0000204094 00000 n +0000204156 00000 n +0000204219 00000 n +0000204281 00000 n +0000204344 00000 n +0000204406 00000 n +0000204469 00000 n +0000204532 00000 n +0000204595 00000 n +0000204658 00000 n +0000204721 00000 n +0000204784 00000 n +0000204847 00000 n +0000204910 00000 n +0000204972 00000 n +0000205035 00000 n +0000205098 00000 n +0000205161 00000 n +0000205224 00000 n +0000205287 00000 n +0000205350 00000 n +0000205413 00000 n +0000205476 00000 n +0000205539 00000 n +0000205602 00000 n +0000205664 00000 n +0000205727 00000 n +0000205790 00000 n +0000205853 00000 n +0000205916 00000 n +0000205979 00000 n +0000206042 00000 n +0000206104 00000 n +0000206167 00000 n +0000206230 00000 n +0000206293 00000 n +0000206356 00000 n +0000206419 00000 n +0000206482 00000 n +0000212182 00000 n +0000209740 00000 n +0000206733 00000 n +0000209861 00000 n +0000209923 00000 n +0000209986 00000 n +0000210049 00000 n +0000210110 00000 n +0000210173 00000 n +0000210235 00000 n +0000210298 00000 n +0000210361 00000 n +0000210424 00000 n +0000210487 00000 n +0000210550 00000 n +0000210613 00000 n +0000210738 00000 n +0000210801 00000 n +0000210864 00000 n +0000210927 00000 n +0000210990 00000 n +0000211053 00000 n +0000211116 00000 n +0000211179 00000 n +0000211242 00000 n +0000211305 00000 n +0000211366 00000 n +0000211428 00000 n +0000211491 00000 n +0000211554 00000 n +0000211617 00000 n +0000211680 00000 n +0000211743 00000 n +0000211806 00000 n +0000211869 00000 n +0000211932 00000 n +0000211995 00000 n +0000212058 00000 n +0000212120 00000 n +0000218207 00000 n +0000215258 00000 n +0000212384 00000 n +0000215380 00000 n +0000215442 00000 n +0000215505 00000 n +0000215567 00000 n +0000215630 00000 n +0000215693 00000 n +0000215755 00000 n +0000215818 00000 n +0000215881 00000 n +0000215944 00000 n +0000216006 00000 n 0000216069 00000 n -0000216134 00000 n -0000216199 00000 n -0000216262 00000 n -0000216327 00000 n -0000216392 00000 n -0000216457 00000 n -0000216522 00000 n -0000216587 00000 n -0000216652 00000 n -0000216717 00000 n -0000216782 00000 n -0000216847 00000 n -0000216912 00000 n -0000216977 00000 n -0000217042 00000 n -0000217107 00000 n -0000217172 00000 n -0000217237 00000 n -0000217301 00000 n -0000217366 00000 n -0000217431 00000 n -0000217496 00000 n -0000217561 00000 n -0000217626 00000 n -0000217691 00000 n -0000217756 00000 n -0000217821 00000 n -0000217886 00000 n -0000217951 00000 n -0000218016 00000 n -0000218081 00000 n -0000218146 00000 n -0000218211 00000 n -0000218276 00000 n -0000218341 00000 n -0000218406 00000 n -0000224416 00000 n -0000220339 00000 n -0000218635 00000 n -0000220464 00000 n -0000220591 00000 n -0000220656 00000 n -0000220721 00000 n -0000220786 00000 n -0000220851 00000 n -0000220916 00000 n -0000220981 00000 n -0000221045 00000 n -0000221110 00000 n -0000221175 00000 n -0000221240 00000 n -0000221305 00000 n -0000221370 00000 n -0000221435 00000 n -0000221500 00000 n -0000221565 00000 n -0000221630 00000 n -0000221693 00000 n -0000221758 00000 n -0000221823 00000 n -0000221888 00000 n -0000221953 00000 n -0000222018 00000 n -0000222083 00000 n -0000222148 00000 n -0000222213 00000 n -0000222278 00000 n -0000222342 00000 n -0000222407 00000 n -0000222472 00000 n -0000222537 00000 n -0000222602 00000 n -0000222667 00000 n -0000222732 00000 n -0000222797 00000 n -0000222862 00000 n -0000222927 00000 n -0000222991 00000 n -0000223056 00000 n -0000223121 00000 n -0000223186 00000 n -0000223251 00000 n -0000223316 00000 n -0000223381 00000 n -0000223446 00000 n -0000223511 00000 n -0000223574 00000 n -0000223639 00000 n -0000223704 00000 n -0000223769 00000 n -0000223834 00000 n -0000223899 00000 n -0000223964 00000 n -0000224029 00000 n -0000224094 00000 n -0000224158 00000 n -0000224223 00000 n -0000224288 00000 n -0000224352 00000 n -0000230474 00000 n -0000226720 00000 n -0000224580 00000 n -0000226845 00000 n -0000226909 00000 n -0000226974 00000 n -0000227038 00000 n -0000227103 00000 n -0000227168 00000 n -0000227233 00000 n -0000227298 00000 n -0000227363 00000 n -0000227428 00000 n -0000227493 00000 n -0000227558 00000 n -0000227622 00000 n -0000227687 00000 n -0000227752 00000 n -0000227817 00000 n -0000227882 00000 n -0000227947 00000 n -0000228011 00000 n -0000228076 00000 n -0000228141 00000 n -0000228205 00000 n -0000228270 00000 n -0000228335 00000 n -0000228400 00000 n -0000228465 00000 n -0000228530 00000 n -0000228595 00000 n -0000228659 00000 n -0000228724 00000 n -0000228789 00000 n -0000228854 00000 n -0000228919 00000 n -0000228984 00000 n -0000229049 00000 n -0000229114 00000 n -0000229179 00000 n -0000229243 00000 n -0000229308 00000 n -0000229373 00000 n -0000229438 00000 n -0000229503 00000 n -0000229568 00000 n -0000229633 00000 n -0000229698 00000 n -0000229763 00000 n -0000229827 00000 n -0000229892 00000 n -0000229957 00000 n -0000230022 00000 n -0000230087 00000 n -0000230152 00000 n -0000230216 00000 n -0000230281 00000 n -0000230346 00000 n -0000230410 00000 n -0000236951 00000 n -0000232807 00000 n -0000230651 00000 n -0000232932 00000 n -0000232996 00000 n -0000233061 00000 n -0000233125 00000 n -0000233190 00000 n -0000233255 00000 n -0000233320 00000 n -0000233385 00000 n -0000233450 00000 n -0000233515 00000 n -0000233580 00000 n -0000233643 00000 n -0000233708 00000 n -0000233773 00000 n -0000233838 00000 n -0000233903 00000 n -0000233968 00000 n -0000234033 00000 n -0000234098 00000 n -0000234163 00000 n -0000234227 00000 n -0000234292 00000 n -0000234357 00000 n -0000234422 00000 n -0000234487 00000 n -0000234552 00000 n -0000234617 00000 n -0000234682 00000 n -0000234747 00000 n -0000234811 00000 n -0000234876 00000 n -0000234941 00000 n -0000235006 00000 n -0000235071 00000 n -0000235136 00000 n -0000235201 00000 n -0000235266 00000 n -0000235331 00000 n -0000235395 00000 n -0000235460 00000 n -0000235525 00000 n -0000235590 00000 n -0000235655 00000 n -0000235720 00000 n -0000235785 00000 n -0000235850 00000 n -0000235915 00000 n -0000235979 00000 n -0000236044 00000 n -0000236109 00000 n -0000236174 00000 n -0000236239 00000 n -0000236304 00000 n -0000236369 00000 n -0000236434 00000 n -0000236499 00000 n -0000236564 00000 n -0000236628 00000 n -0000236693 00000 n -0000236758 00000 n -0000236823 00000 n -0000236887 00000 n -0000243308 00000 n -0000239032 00000 n -0000237115 00000 n -0000239157 00000 n -0000239221 00000 n -0000239286 00000 n -0000239350 00000 n -0000239415 00000 n -0000239480 00000 n -0000239545 00000 n -0000239610 00000 n -0000239675 00000 n -0000239740 00000 n -0000239805 00000 n -0000239870 00000 n -0000239934 00000 n -0000239999 00000 n -0000240064 00000 n -0000240129 00000 n -0000240194 00000 n -0000240259 00000 n -0000240324 00000 n -0000240389 00000 n -0000240454 00000 n -0000240518 00000 n -0000240583 00000 n -0000240648 00000 n -0000240713 00000 n -0000240778 00000 n -0000240843 00000 n -0000240908 00000 n -0000240973 00000 n -0000241038 00000 n -0000241102 00000 n -0000241167 00000 n -0000241232 00000 n -0000241297 00000 n -0000241362 00000 n -0000241427 00000 n -0000241492 00000 n -0000241557 00000 n -0000241622 00000 n -0000241686 00000 n -0000241751 00000 n -0000241816 00000 n -0000241881 00000 n -0000241946 00000 n -0000242011 00000 n -0000242076 00000 n -0000242141 00000 n -0000242206 00000 n -0000242270 00000 n -0000242335 00000 n -0000242400 00000 n -0000242465 00000 n -0000242530 00000 n -0000242595 00000 n -0000242660 00000 n -0000242725 00000 n -0000242790 00000 n -0000242854 00000 n -0000242919 00000 n -0000242984 00000 n -0000243049 00000 n -0000243114 00000 n -0000243179 00000 n -0000243244 00000 n -0000248827 00000 n -0000245661 00000 n -0000243459 00000 n -0000245786 00000 n -0000245850 00000 n -0000245915 00000 n -0000245979 00000 n -0000246044 00000 n -0000246109 00000 n -0000246174 00000 n -0000246239 00000 n -0000246304 00000 n -0000246368 00000 n -0000246433 00000 n -0000246498 00000 n -0000246563 00000 n -0000246628 00000 n -0000246693 00000 n -0000246758 00000 n -0000246823 00000 n -0000246888 00000 n -0000246953 00000 n -0000247018 00000 n -0000247144 00000 n -0000247209 00000 n -0000247274 00000 n -0000247339 00000 n -0000247404 00000 n -0000247469 00000 n -0000247534 00000 n -0000247599 00000 n -0000247664 00000 n -0000247729 00000 n -0000247793 00000 n -0000247858 00000 n -0000247923 00000 n -0000247988 00000 n -0000248053 00000 n -0000248118 00000 n -0000248183 00000 n -0000248248 00000 n -0000248375 00000 n -0000248440 00000 n -0000248505 00000 n -0000248569 00000 n -0000248634 00000 n -0000248699 00000 n -0000248763 00000 n -0000254420 00000 n -0000251509 00000 n -0000249004 00000 n -0000251634 00000 n -0000251698 00000 n -0000251763 00000 n -0000251827 00000 n -0000251892 00000 n -0000251957 00000 n -0000252022 00000 n -0000252087 00000 n -0000252152 00000 n -0000252217 00000 n -0000252282 00000 n -0000252347 00000 n -0000252412 00000 n -0000252477 00000 n -0000252542 00000 n -0000252607 00000 n -0000252734 00000 n -0000252799 00000 n -0000252864 00000 n -0000252929 00000 n -0000252992 00000 n -0000253057 00000 n -0000253122 00000 n -0000253187 00000 n -0000253252 00000 n -0000253317 00000 n -0000253382 00000 n -0000253447 00000 n -0000253512 00000 n -0000253576 00000 n -0000253641 00000 n -0000253706 00000 n -0000253771 00000 n -0000253836 00000 n -0000253901 00000 n -0000253966 00000 n -0000254031 00000 n -0000254096 00000 n -0000254160 00000 n -0000254225 00000 n -0000254290 00000 n -0000254355 00000 n -0000260239 00000 n -0000257586 00000 n -0000254610 00000 n -0000257711 00000 n -0000257775 00000 n -0000257840 00000 n -0000257904 00000 n -0000257969 00000 n -0000258034 00000 n -0000258099 00000 n -0000258164 00000 n -0000258229 00000 n -0000258294 00000 n -0000258359 00000 n -0000258423 00000 n -0000258488 00000 n -0000258553 00000 n -0000258618 00000 n -0000258683 00000 n -0000258748 00000 n -0000258813 00000 n -0000258878 00000 n -0000258943 00000 n -0000259008 00000 n -0000259073 00000 n -0000259138 00000 n -0000259203 00000 n -0000259268 00000 n -0000259333 00000 n -0000259398 00000 n -0000259463 00000 n -0000259528 00000 n -0000259593 00000 n -0000259658 00000 n -0000259723 00000 n -0000259786 00000 n -0000259851 00000 n -0000259916 00000 n -0000259981 00000 n -0000260046 00000 n -0000260111 00000 n -0000260175 00000 n -0000266376 00000 n -0000262684 00000 n -0000260416 00000 n -0000262809 00000 n -0000262873 00000 n -0000262938 00000 n -0000263002 00000 n -0000263067 00000 n -0000263132 00000 n -0000263197 00000 n -0000263262 00000 n -0000263327 00000 n -0000263392 00000 n -0000263457 00000 n -0000263522 00000 n -0000263586 00000 n -0000263651 00000 n -0000263716 00000 n -0000263781 00000 n -0000263845 00000 n -0000263910 00000 n -0000263975 00000 n -0000264040 00000 n -0000264105 00000 n -0000264170 00000 n -0000264235 00000 n -0000264300 00000 n -0000264364 00000 n -0000264429 00000 n -0000264494 00000 n -0000264559 00000 n -0000264624 00000 n -0000264689 00000 n -0000264754 00000 n -0000264819 00000 n -0000264884 00000 n -0000264948 00000 n -0000265013 00000 n -0000265078 00000 n -0000265143 00000 n -0000265208 00000 n -0000265273 00000 n -0000265338 00000 n -0000265403 00000 n -0000265468 00000 n -0000265533 00000 n -0000265598 00000 n -0000265663 00000 n -0000265728 00000 n -0000265793 00000 n -0000265858 00000 n -0000265923 00000 n +0000216132 00000 n +0000216195 00000 n +0000216258 00000 n +0000216321 00000 n +0000216384 00000 n +0000216447 00000 n +0000216510 00000 n +0000216573 00000 n +0000216636 00000 n +0000216699 00000 n +0000216762 00000 n +0000216824 00000 n +0000216887 00000 n +0000216950 00000 n +0000217013 00000 n +0000217075 00000 n +0000217138 00000 n +0000217201 00000 n +0000217264 00000 n +0000217327 00000 n +0000217390 00000 n +0000217453 00000 n +0000217516 00000 n +0000217575 00000 n +0000217638 00000 n +0000217701 00000 n +0000217764 00000 n +0000217827 00000 n +0000217890 00000 n +0000217954 00000 n +0000218018 00000 n +0000218082 00000 n +0000218144 00000 n +0000896705 00000 n +0000221613 00000 n +0000221772 00000 n +0000224655 00000 n +0000221431 00000 n +0000218396 00000 n +0000221932 00000 n +0000221996 00000 n +0000222061 00000 n +0000222126 00000 n +0000222191 00000 n +0000222256 00000 n +0000222321 00000 n +0000222386 00000 n +0000222451 00000 n +0000222516 00000 n +0000222580 00000 n +0000222645 00000 n +0000222710 00000 n +0000222775 00000 n +0000222840 00000 n +0000222905 00000 n +0000222970 00000 n +0000223035 00000 n +0000223098 00000 n +0000223163 00000 n +0000223228 00000 n +0000223293 00000 n +0000223358 00000 n +0000223423 00000 n +0000223488 00000 n +0000223553 00000 n +0000223618 00000 n +0000223682 00000 n +0000223747 00000 n +0000223812 00000 n +0000223877 00000 n +0000223942 00000 n +0000224007 00000 n +0000224072 00000 n +0000224137 00000 n +0000224201 00000 n +0000224266 00000 n +0000224331 00000 n +0000224396 00000 n +0000224461 00000 n +0000224526 00000 n +0000224591 00000 n +0000221573 00000 n +0000230331 00000 n +0000228198 00000 n +0000224819 00000 n +0000228323 00000 n +0000228387 00000 n +0000228452 00000 n +0000228516 00000 n +0000228581 00000 n +0000228645 00000 n +0000228710 00000 n +0000228775 00000 n +0000228840 00000 n +0000228905 00000 n +0000228970 00000 n +0000229035 00000 n +0000229100 00000 n +0000229165 00000 n +0000229230 00000 n +0000229295 00000 n +0000229360 00000 n +0000229424 00000 n +0000229489 00000 n +0000229554 00000 n +0000229619 00000 n +0000229684 00000 n +0000229749 00000 n +0000229814 00000 n +0000229878 00000 n +0000229943 00000 n +0000230008 00000 n +0000230073 00000 n +0000230138 00000 n +0000230203 00000 n +0000230267 00000 n +0000236189 00000 n +0000232501 00000 n +0000230521 00000 n +0000232626 00000 n +0000232690 00000 n +0000232755 00000 n +0000232819 00000 n +0000232884 00000 n +0000232949 00000 n +0000233014 00000 n +0000233079 00000 n +0000233144 00000 n +0000233209 00000 n +0000233274 00000 n +0000233339 00000 n +0000233404 00000 n +0000233469 00000 n +0000233534 00000 n +0000233599 00000 n +0000233664 00000 n +0000233728 00000 n +0000233793 00000 n +0000233858 00000 n +0000233923 00000 n +0000233988 00000 n +0000234053 00000 n +0000234118 00000 n +0000234183 00000 n +0000234248 00000 n +0000234312 00000 n +0000234377 00000 n +0000234442 00000 n +0000234507 00000 n +0000234572 00000 n +0000234637 00000 n +0000234702 00000 n +0000234767 00000 n +0000234832 00000 n +0000234896 00000 n +0000234961 00000 n +0000235026 00000 n +0000235091 00000 n +0000235218 00000 n +0000235282 00000 n +0000235347 00000 n +0000235412 00000 n +0000235477 00000 n +0000235542 00000 n +0000235607 00000 n +0000235672 00000 n +0000235737 00000 n +0000235802 00000 n +0000235866 00000 n +0000235931 00000 n +0000235996 00000 n +0000236061 00000 n +0000236125 00000 n +0000242249 00000 n +0000238231 00000 n +0000236366 00000 n +0000238356 00000 n +0000238420 00000 n +0000238485 00000 n +0000238549 00000 n +0000238614 00000 n +0000238679 00000 n +0000238744 00000 n +0000238809 00000 n +0000238874 00000 n +0000238939 00000 n +0000239004 00000 n +0000239069 00000 n +0000239134 00000 n +0000239199 00000 n +0000239264 00000 n +0000239328 00000 n +0000239393 00000 n +0000239458 00000 n +0000239523 00000 n +0000239588 00000 n +0000239653 00000 n +0000239718 00000 n +0000239783 00000 n +0000239848 00000 n +0000239913 00000 n +0000239978 00000 n +0000240043 00000 n +0000240108 00000 n +0000240173 00000 n +0000240238 00000 n +0000240303 00000 n +0000240368 00000 n +0000240433 00000 n +0000240498 00000 n +0000240562 00000 n +0000240627 00000 n +0000240692 00000 n +0000240757 00000 n +0000240822 00000 n +0000240887 00000 n +0000240952 00000 n +0000241017 00000 n +0000241082 00000 n +0000241146 00000 n +0000241211 00000 n +0000241276 00000 n +0000241341 00000 n +0000241406 00000 n +0000241471 00000 n +0000241536 00000 n +0000241601 00000 n +0000241666 00000 n +0000241730 00000 n +0000241795 00000 n +0000241860 00000 n +0000241925 00000 n +0000241990 00000 n +0000242055 00000 n +0000242120 00000 n +0000242185 00000 n +0000248464 00000 n +0000244643 00000 n +0000242413 00000 n +0000244768 00000 n +0000244832 00000 n +0000244897 00000 n +0000244961 00000 n +0000245026 00000 n +0000245091 00000 n +0000245156 00000 n +0000245221 00000 n +0000245286 00000 n +0000245351 00000 n +0000245416 00000 n +0000245481 00000 n +0000245546 00000 n +0000245611 00000 n +0000245676 00000 n +0000245741 00000 n +0000245806 00000 n +0000245871 00000 n +0000245936 00000 n +0000246001 00000 n +0000246066 00000 n +0000246130 00000 n +0000246195 00000 n +0000246260 00000 n +0000246325 00000 n +0000246390 00000 n +0000246455 00000 n +0000246520 00000 n +0000246585 00000 n +0000246650 00000 n +0000246713 00000 n +0000246778 00000 n +0000246843 00000 n +0000246908 00000 n +0000246973 00000 n +0000247038 00000 n +0000247103 00000 n +0000247168 00000 n +0000247233 00000 n +0000247298 00000 n +0000247363 00000 n +0000247428 00000 n +0000247493 00000 n +0000247558 00000 n +0000247623 00000 n +0000247688 00000 n +0000247753 00000 n +0000247818 00000 n +0000247882 00000 n +0000247947 00000 n +0000248012 00000 n +0000248077 00000 n +0000248142 00000 n +0000248207 00000 n +0000248272 00000 n +0000248337 00000 n +0000248400 00000 n +0000254773 00000 n +0000250497 00000 n +0000248628 00000 n +0000250622 00000 n +0000250686 00000 n +0000250751 00000 n +0000250815 00000 n +0000250880 00000 n +0000250945 00000 n +0000251010 00000 n +0000251075 00000 n +0000251140 00000 n +0000251205 00000 n +0000251270 00000 n +0000251335 00000 n +0000251399 00000 n +0000251464 00000 n +0000251529 00000 n +0000251594 00000 n +0000251659 00000 n +0000251724 00000 n +0000251789 00000 n +0000251854 00000 n +0000251919 00000 n +0000251983 00000 n +0000252048 00000 n +0000252113 00000 n +0000252178 00000 n +0000252243 00000 n +0000252308 00000 n +0000252373 00000 n +0000252438 00000 n +0000252503 00000 n +0000252567 00000 n +0000252632 00000 n +0000252697 00000 n +0000252762 00000 n +0000252827 00000 n +0000252892 00000 n +0000252957 00000 n +0000253022 00000 n +0000253087 00000 n +0000253151 00000 n +0000253216 00000 n +0000253281 00000 n +0000253346 00000 n +0000253411 00000 n +0000253476 00000 n +0000253541 00000 n +0000253606 00000 n +0000253671 00000 n +0000253735 00000 n +0000253800 00000 n +0000253865 00000 n +0000253930 00000 n +0000253995 00000 n +0000254060 00000 n +0000254125 00000 n +0000254190 00000 n +0000254255 00000 n +0000254319 00000 n +0000254384 00000 n +0000254449 00000 n +0000254514 00000 n +0000254579 00000 n +0000254644 00000 n +0000254709 00000 n +0000261066 00000 n +0000256854 00000 n +0000254924 00000 n +0000256979 00000 n +0000257043 00000 n +0000257108 00000 n +0000257172 00000 n +0000257237 00000 n +0000257302 00000 n +0000257367 00000 n +0000257432 00000 n +0000257497 00000 n +0000257562 00000 n +0000257627 00000 n +0000257692 00000 n +0000257756 00000 n +0000257821 00000 n +0000257886 00000 n +0000257951 00000 n +0000258016 00000 n +0000258081 00000 n +0000258146 00000 n +0000258211 00000 n +0000258276 00000 n +0000258340 00000 n +0000258405 00000 n +0000258470 00000 n +0000258535 00000 n +0000258600 00000 n +0000258665 00000 n +0000258730 00000 n +0000258795 00000 n +0000258860 00000 n +0000258924 00000 n +0000258989 00000 n +0000259054 00000 n +0000259119 00000 n +0000259184 00000 n +0000259249 00000 n +0000259314 00000 n +0000259379 00000 n +0000259444 00000 n +0000259508 00000 n +0000259573 00000 n +0000259638 00000 n +0000259703 00000 n +0000259768 00000 n +0000259833 00000 n +0000259898 00000 n +0000259963 00000 n +0000260028 00000 n +0000260092 00000 n +0000260157 00000 n +0000260222 00000 n +0000260287 00000 n +0000260352 00000 n +0000260417 00000 n +0000260482 00000 n +0000260547 00000 n +0000260612 00000 n +0000260676 00000 n +0000260741 00000 n +0000260806 00000 n +0000260871 00000 n +0000260936 00000 n +0000261001 00000 n +0000266700 00000 n +0000263661 00000 n +0000261217 00000 n +0000263786 00000 n +0000263850 00000 n +0000263915 00000 n +0000263979 00000 n +0000264044 00000 n +0000264109 00000 n +0000264174 00000 n +0000264239 00000 n +0000264304 00000 n +0000264369 00000 n +0000264434 00000 n +0000264499 00000 n +0000264564 00000 n +0000264629 00000 n +0000264694 00000 n +0000264821 00000 n +0000264886 00000 n +0000264951 00000 n +0000265016 00000 n +0000265081 00000 n +0000265145 00000 n +0000265210 00000 n +0000265275 00000 n +0000265340 00000 n +0000265405 00000 n +0000265470 00000 n +0000265535 00000 n +0000265600 00000 n +0000265665 00000 n +0000265730 00000 n +0000265795 00000 n +0000265860 00000 n 0000265988 00000 n 0000266053 00000 n 0000266118 00000 n 0000266183 00000 n 0000266248 00000 n -0000266312 00000 n -0000272344 00000 n -0000268587 00000 n -0000266540 00000 n -0000268712 00000 n -0000268776 00000 n -0000268841 00000 n -0000268905 00000 n -0000268970 00000 n -0000269035 00000 n -0000269100 00000 n -0000269165 00000 n -0000269230 00000 n -0000269295 00000 n -0000269360 00000 n -0000269425 00000 n -0000269489 00000 n -0000269554 00000 n -0000269619 00000 n -0000269684 00000 n -0000269749 00000 n -0000269814 00000 n -0000269879 00000 n -0000269944 00000 n -0000270009 00000 n -0000270074 00000 n -0000270139 00000 n -0000270204 00000 n -0000270269 00000 n -0000270333 00000 n -0000270398 00000 n -0000270463 00000 n -0000270528 00000 n -0000270593 00000 n -0000270658 00000 n -0000270723 00000 n -0000270788 00000 n -0000270853 00000 n -0000270917 00000 n -0000270982 00000 n -0000271047 00000 n -0000271112 00000 n -0000271177 00000 n -0000271242 00000 n -0000271307 00000 n -0000271372 00000 n -0000271437 00000 n -0000271501 00000 n -0000271566 00000 n -0000271631 00000 n -0000271696 00000 n -0000271761 00000 n -0000271826 00000 n -0000271891 00000 n -0000271956 00000 n -0000272021 00000 n -0000272086 00000 n -0000272151 00000 n -0000272216 00000 n -0000272281 00000 n -0000877042 00000 n +0000266313 00000 n +0000266378 00000 n +0000266443 00000 n +0000266507 00000 n +0000266572 00000 n +0000266636 00000 n +0000272248 00000 n +0000269340 00000 n +0000266890 00000 n +0000269465 00000 n +0000269529 00000 n +0000269594 00000 n +0000269658 00000 n +0000269723 00000 n +0000269788 00000 n +0000269853 00000 n +0000269918 00000 n +0000269983 00000 n +0000270048 00000 n +0000270113 00000 n +0000270178 00000 n +0000270306 00000 n +0000270371 00000 n +0000270436 00000 n +0000270501 00000 n +0000270566 00000 n +0000270631 00000 n +0000270695 00000 n +0000270760 00000 n +0000270825 00000 n +0000270890 00000 n +0000270955 00000 n +0000271020 00000 n +0000271085 00000 n +0000271150 00000 n +0000271215 00000 n +0000271280 00000 n +0000271345 00000 n +0000271410 00000 n +0000271475 00000 n +0000271538 00000 n +0000271603 00000 n +0000271668 00000 n +0000271733 00000 n +0000271798 00000 n +0000271863 00000 n +0000271926 00000 n +0000271991 00000 n +0000272056 00000 n +0000272121 00000 n +0000272184 00000 n +0000278003 00000 n +0000275549 00000 n +0000272438 00000 n +0000275674 00000 n +0000275738 00000 n +0000275803 00000 n +0000275868 00000 n +0000275933 00000 n +0000275998 00000 n +0000276063 00000 n +0000276128 00000 n +0000276192 00000 n +0000276257 00000 n +0000276322 00000 n +0000276387 00000 n +0000276452 00000 n +0000276517 00000 n +0000276582 00000 n +0000276647 00000 n +0000276712 00000 n +0000276777 00000 n +0000276842 00000 n +0000276907 00000 n +0000276972 00000 n +0000277036 00000 n +0000277101 00000 n +0000277166 00000 n +0000277231 00000 n +0000277294 00000 n +0000277358 00000 n +0000277423 00000 n +0000277488 00000 n +0000277553 00000 n +0000277618 00000 n +0000277682 00000 n +0000277747 00000 n +0000277812 00000 n +0000277877 00000 n +0000277941 00000 n +0000896868 00000 n +0000284212 00000 n +0000280780 00000 n +0000278180 00000 n +0000280905 00000 n +0000280969 00000 n +0000281034 00000 n +0000281098 00000 n +0000281163 00000 n +0000281228 00000 n +0000281293 00000 n +0000281358 00000 n +0000281423 00000 n +0000281488 00000 n +0000281553 00000 n +0000281618 00000 n +0000281683 00000 n +0000281748 00000 n +0000281813 00000 n +0000281878 00000 n +0000281943 00000 n 0000282008 00000 n -0000278345 00000 n -0000275432 00000 n -0000272508 00000 n -0000275557 00000 n -0000275621 00000 n -0000275685 00000 n -0000275750 00000 n -0000275815 00000 n -0000275880 00000 n -0000275945 00000 n -0000276010 00000 n -0000276075 00000 n -0000276140 00000 n -0000276205 00000 n -0000276270 00000 n -0000276335 00000 n -0000276400 00000 n -0000276465 00000 n -0000276529 00000 n -0000276594 00000 n -0000276659 00000 n -0000276724 00000 n -0000276789 00000 n -0000276854 00000 n -0000276919 00000 n -0000276984 00000 n -0000277049 00000 n -0000277112 00000 n -0000277177 00000 n -0000277242 00000 n -0000277307 00000 n -0000277372 00000 n -0000277437 00000 n -0000277502 00000 n -0000277567 00000 n -0000277632 00000 n -0000277697 00000 n -0000277762 00000 n -0000277827 00000 n -0000277892 00000 n -0000277957 00000 n -0000278021 00000 n -0000278086 00000 n -0000278151 00000 n -0000278215 00000 n -0000278280 00000 n -0000285019 00000 n -0000281835 00000 n -0000278509 00000 n -0000282166 00000 n -0000282230 00000 n -0000282295 00000 n -0000282360 00000 n -0000282425 00000 n -0000282490 00000 n -0000282554 00000 n -0000282619 00000 n -0000282684 00000 n -0000282749 00000 n -0000282813 00000 n -0000282878 00000 n -0000282943 00000 n -0000283008 00000 n -0000283073 00000 n -0000283138 00000 n -0000283203 00000 n -0000283268 00000 n -0000283333 00000 n -0000283398 00000 n -0000283463 00000 n -0000283528 00000 n -0000283593 00000 n -0000283658 00000 n -0000283723 00000 n -0000283788 00000 n -0000283853 00000 n -0000283918 00000 n -0000283983 00000 n -0000284047 00000 n -0000284112 00000 n -0000284177 00000 n -0000284241 00000 n -0000284306 00000 n -0000284371 00000 n -0000284436 00000 n -0000284500 00000 n -0000284565 00000 n -0000284630 00000 n -0000284695 00000 n -0000284760 00000 n -0000284825 00000 n -0000284890 00000 n -0000284955 00000 n -0000281977 00000 n -0000290955 00000 n -0000288044 00000 n -0000285248 00000 n -0000288169 00000 n -0000288233 00000 n -0000288298 00000 n -0000288362 00000 n -0000288427 00000 n -0000288492 00000 n -0000288557 00000 n -0000288622 00000 n -0000288687 00000 n -0000288752 00000 n -0000288817 00000 n -0000288880 00000 n -0000288945 00000 n -0000289010 00000 n -0000289075 00000 n -0000289140 00000 n -0000289205 00000 n -0000289270 00000 n -0000289334 00000 n -0000289399 00000 n -0000289464 00000 n -0000289529 00000 n -0000289594 00000 n -0000289659 00000 n -0000289724 00000 n -0000289789 00000 n -0000289854 00000 n -0000289918 00000 n -0000289983 00000 n -0000290048 00000 n -0000290113 00000 n -0000290178 00000 n -0000290243 00000 n -0000290308 00000 n -0000290373 00000 n -0000290438 00000 n -0000290503 00000 n -0000290568 00000 n -0000290633 00000 n -0000290698 00000 n -0000290763 00000 n -0000290828 00000 n -0000290891 00000 n -0000296929 00000 n -0000293627 00000 n -0000291119 00000 n -0000293752 00000 n -0000293816 00000 n -0000293881 00000 n -0000293945 00000 n -0000294010 00000 n -0000294075 00000 n -0000294140 00000 n -0000294205 00000 n -0000294270 00000 n -0000294335 00000 n -0000294400 00000 n -0000294465 00000 n -0000294529 00000 n -0000294594 00000 n -0000294659 00000 n -0000294724 00000 n -0000294789 00000 n -0000294853 00000 n -0000294918 00000 n -0000294983 00000 n -0000295048 00000 n -0000295113 00000 n -0000295178 00000 n -0000295243 00000 n -0000295308 00000 n -0000295373 00000 n -0000295437 00000 n -0000295502 00000 n -0000295567 00000 n -0000295632 00000 n -0000295697 00000 n -0000295762 00000 n -0000295827 00000 n -0000295892 00000 n -0000295957 00000 n -0000296022 00000 n -0000296087 00000 n -0000296152 00000 n -0000296217 00000 n -0000296282 00000 n -0000296346 00000 n -0000296411 00000 n -0000296476 00000 n -0000296541 00000 n -0000296606 00000 n -0000296671 00000 n -0000296736 00000 n -0000296801 00000 n -0000296865 00000 n -0000303419 00000 n -0000299532 00000 n -0000297106 00000 n -0000299657 00000 n -0000299721 00000 n -0000299786 00000 n -0000299851 00000 n -0000299915 00000 n -0000299980 00000 n -0000300045 00000 n -0000300110 00000 n -0000300175 00000 n -0000300240 00000 n -0000300304 00000 n -0000300369 00000 n -0000300434 00000 n -0000300499 00000 n -0000300564 00000 n -0000300629 00000 n -0000300694 00000 n -0000300759 00000 n -0000300823 00000 n -0000300888 00000 n -0000300953 00000 n -0000301018 00000 n -0000301083 00000 n -0000301148 00000 n -0000301213 00000 n -0000301278 00000 n -0000301343 00000 n -0000301407 00000 n -0000301472 00000 n -0000301537 00000 n -0000301602 00000 n -0000301667 00000 n -0000301732 00000 n -0000301797 00000 n -0000301862 00000 n -0000301927 00000 n -0000301991 00000 n -0000302056 00000 n -0000302121 00000 n -0000302186 00000 n -0000302251 00000 n -0000302316 00000 n -0000302381 00000 n -0000302446 00000 n -0000302511 00000 n -0000302575 00000 n -0000302640 00000 n -0000302705 00000 n -0000302770 00000 n -0000302835 00000 n -0000302900 00000 n -0000302965 00000 n -0000303030 00000 n -0000303095 00000 n -0000303160 00000 n -0000303224 00000 n -0000303289 00000 n -0000303354 00000 n -0000309261 00000 n -0000306413 00000 n -0000303583 00000 n -0000306538 00000 n -0000306602 00000 n -0000306667 00000 n -0000306731 00000 n -0000306796 00000 n -0000306861 00000 n -0000306926 00000 n -0000306991 00000 n -0000307056 00000 n -0000307121 00000 n -0000307185 00000 n -0000307250 00000 n -0000307315 00000 n -0000307380 00000 n -0000307445 00000 n -0000307510 00000 n -0000307575 00000 n -0000307640 00000 n -0000307705 00000 n -0000307769 00000 n -0000307834 00000 n -0000307899 00000 n -0000307964 00000 n -0000308029 00000 n -0000308094 00000 n -0000308159 00000 n -0000308224 00000 n -0000308289 00000 n -0000308354 00000 n -0000308419 00000 n -0000308484 00000 n -0000308549 00000 n -0000308614 00000 n -0000308679 00000 n -0000308743 00000 n -0000308808 00000 n -0000308936 00000 n -0000309001 00000 n -0000309066 00000 n -0000309131 00000 n -0000309196 00000 n -0000315397 00000 n -0000311381 00000 n -0000309438 00000 n -0000311506 00000 n -0000311570 00000 n -0000311635 00000 n -0000311699 00000 n -0000311764 00000 n -0000311829 00000 n -0000311894 00000 n -0000311959 00000 n -0000312024 00000 n -0000312089 00000 n -0000312154 00000 n -0000312219 00000 n -0000312283 00000 n -0000312348 00000 n -0000312413 00000 n -0000312478 00000 n -0000312543 00000 n -0000312608 00000 n -0000312673 00000 n -0000312738 00000 n -0000312803 00000 n -0000312867 00000 n -0000312932 00000 n -0000312997 00000 n -0000313062 00000 n -0000313127 00000 n -0000313192 00000 n -0000313257 00000 n -0000313322 00000 n -0000313387 00000 n -0000313450 00000 n -0000313515 00000 n -0000313580 00000 n -0000313645 00000 n -0000313710 00000 n -0000313775 00000 n -0000313840 00000 n -0000313905 00000 n -0000313970 00000 n -0000314035 00000 n -0000314100 00000 n -0000314165 00000 n -0000314230 00000 n -0000314295 00000 n -0000314360 00000 n -0000314425 00000 n -0000314490 00000 n -0000314555 00000 n -0000314620 00000 n -0000314684 00000 n -0000314749 00000 n -0000314814 00000 n -0000314879 00000 n -0000314944 00000 n -0000315009 00000 n -0000315074 00000 n -0000315139 00000 n -0000315204 00000 n -0000315269 00000 n -0000315333 00000 n -0000321306 00000 n -0000317747 00000 n -0000315574 00000 n -0000317872 00000 n -0000317936 00000 n -0000318001 00000 n -0000318065 00000 n -0000318130 00000 n -0000318195 00000 n -0000318260 00000 n -0000318325 00000 n -0000318390 00000 n -0000318455 00000 n -0000318520 00000 n -0000318585 00000 n -0000318649 00000 n -0000318714 00000 n -0000318779 00000 n -0000318844 00000 n -0000318909 00000 n -0000318974 00000 n -0000319039 00000 n -0000319104 00000 n -0000319169 00000 n -0000319233 00000 n -0000319298 00000 n -0000319363 00000 n -0000319428 00000 n -0000319493 00000 n -0000319558 00000 n -0000319623 00000 n -0000319688 00000 n -0000319753 00000 n -0000319818 00000 n -0000319883 00000 n -0000319948 00000 n -0000320076 00000 n -0000320141 00000 n -0000320206 00000 n -0000320271 00000 n -0000320336 00000 n -0000320401 00000 n +0000282073 00000 n +0000282138 00000 n +0000282203 00000 n +0000282268 00000 n +0000282332 00000 n +0000282397 00000 n +0000282462 00000 n +0000282527 00000 n +0000282592 00000 n +0000282656 00000 n +0000282721 00000 n +0000282786 00000 n +0000282851 00000 n +0000282916 00000 n +0000282981 00000 n +0000283046 00000 n +0000283111 00000 n +0000283176 00000 n +0000283240 00000 n +0000283305 00000 n +0000283370 00000 n +0000283435 00000 n +0000283500 00000 n +0000283565 00000 n +0000283630 00000 n +0000283695 00000 n +0000283760 00000 n +0000283825 00000 n +0000283890 00000 n +0000283954 00000 n +0000284019 00000 n +0000284084 00000 n +0000284148 00000 n +0000290776 00000 n +0000287283 00000 n +0000284402 00000 n +0000287408 00000 n +0000287472 00000 n +0000287537 00000 n +0000287601 00000 n +0000287666 00000 n +0000287731 00000 n +0000287796 00000 n +0000287861 00000 n +0000287926 00000 n +0000287991 00000 n +0000288056 00000 n +0000288121 00000 n +0000288185 00000 n +0000288250 00000 n +0000288315 00000 n +0000288380 00000 n +0000288444 00000 n +0000288509 00000 n +0000288574 00000 n +0000288639 00000 n +0000288704 00000 n +0000288769 00000 n +0000288834 00000 n +0000288899 00000 n +0000288964 00000 n +0000289029 00000 n +0000289094 00000 n +0000289159 00000 n +0000289224 00000 n +0000289289 00000 n +0000289354 00000 n +0000289419 00000 n +0000289484 00000 n +0000289548 00000 n +0000289613 00000 n +0000289678 00000 n +0000289743 00000 n +0000289808 00000 n +0000289873 00000 n +0000289938 00000 n +0000290003 00000 n +0000290068 00000 n +0000290129 00000 n +0000290194 00000 n +0000290259 00000 n +0000290324 00000 n +0000290389 00000 n +0000290454 00000 n +0000290519 00000 n +0000290584 00000 n +0000290649 00000 n +0000290712 00000 n +0000294279 00000 n +0000297097 00000 n +0000294106 00000 n +0000290940 00000 n +0000294437 00000 n +0000294501 00000 n +0000294566 00000 n +0000294631 00000 n +0000294696 00000 n +0000294761 00000 n +0000294826 00000 n +0000294890 00000 n +0000294955 00000 n +0000295020 00000 n +0000295085 00000 n +0000295150 00000 n +0000295215 00000 n +0000295280 00000 n +0000295345 00000 n +0000295410 00000 n +0000295475 00000 n +0000295540 00000 n +0000295605 00000 n +0000295670 00000 n +0000295735 00000 n +0000295800 00000 n +0000295864 00000 n +0000295929 00000 n +0000295994 00000 n +0000296059 00000 n +0000296124 00000 n +0000296189 00000 n +0000296254 00000 n +0000296319 00000 n +0000296384 00000 n +0000296449 00000 n +0000296513 00000 n +0000296578 00000 n +0000296643 00000 n +0000296708 00000 n +0000296773 00000 n +0000296838 00000 n +0000296903 00000 n +0000296968 00000 n +0000297033 00000 n +0000294248 00000 n +0000303249 00000 n +0000300206 00000 n +0000297326 00000 n +0000300331 00000 n +0000300395 00000 n +0000300460 00000 n +0000300525 00000 n +0000300590 00000 n +0000300655 00000 n +0000300720 00000 n +0000300785 00000 n +0000300850 00000 n +0000300914 00000 n +0000300979 00000 n +0000301044 00000 n +0000301109 00000 n +0000301174 00000 n +0000301239 00000 n +0000301304 00000 n +0000301369 00000 n +0000301434 00000 n +0000301498 00000 n +0000301563 00000 n +0000301628 00000 n +0000301693 00000 n +0000301758 00000 n +0000301823 00000 n +0000301888 00000 n +0000301953 00000 n +0000302018 00000 n +0000302081 00000 n +0000302146 00000 n +0000302210 00000 n +0000302275 00000 n +0000302340 00000 n +0000302405 00000 n +0000302469 00000 n +0000302534 00000 n +0000302599 00000 n +0000302664 00000 n +0000302729 00000 n +0000302794 00000 n +0000302859 00000 n +0000302924 00000 n +0000302989 00000 n +0000303054 00000 n +0000303119 00000 n +0000303184 00000 n +0000308978 00000 n +0000305804 00000 n +0000303413 00000 n +0000305929 00000 n +0000305993 00000 n +0000306058 00000 n +0000306123 00000 n +0000306188 00000 n +0000306253 00000 n +0000306318 00000 n +0000306383 00000 n +0000306448 00000 n +0000306513 00000 n +0000306578 00000 n +0000306642 00000 n +0000306707 00000 n +0000306772 00000 n +0000306837 00000 n +0000306902 00000 n +0000306967 00000 n +0000307032 00000 n +0000307097 00000 n +0000307161 00000 n +0000307226 00000 n +0000307291 00000 n +0000307356 00000 n +0000307421 00000 n +0000307486 00000 n +0000307551 00000 n +0000307616 00000 n +0000307681 00000 n +0000307745 00000 n +0000307810 00000 n +0000307875 00000 n +0000307940 00000 n +0000308004 00000 n +0000308069 00000 n +0000308134 00000 n +0000308199 00000 n +0000308264 00000 n +0000308329 00000 n +0000308394 00000 n +0000308459 00000 n +0000308524 00000 n +0000308588 00000 n +0000308653 00000 n +0000308718 00000 n +0000308783 00000 n +0000308848 00000 n +0000308913 00000 n +0000315447 00000 n +0000311885 00000 n +0000309155 00000 n +0000312010 00000 n +0000312074 00000 n +0000312138 00000 n +0000312203 00000 n +0000312268 00000 n +0000312333 00000 n +0000312398 00000 n +0000312463 00000 n +0000312528 00000 n +0000312593 00000 n +0000312658 00000 n +0000312721 00000 n +0000312786 00000 n +0000312851 00000 n +0000312916 00000 n +0000312981 00000 n +0000313046 00000 n +0000313111 00000 n +0000313176 00000 n +0000313241 00000 n +0000313305 00000 n +0000313370 00000 n +0000313435 00000 n +0000313500 00000 n +0000313565 00000 n +0000313630 00000 n +0000313695 00000 n +0000313760 00000 n +0000313825 00000 n +0000313890 00000 n +0000313955 00000 n +0000314020 00000 n +0000314085 00000 n +0000314150 00000 n +0000314215 00000 n +0000314280 00000 n +0000314345 00000 n +0000314410 00000 n +0000314475 00000 n +0000314540 00000 n +0000314605 00000 n +0000314670 00000 n +0000314735 00000 n +0000314800 00000 n +0000314865 00000 n +0000314930 00000 n +0000314995 00000 n +0000315060 00000 n +0000315125 00000 n +0000315189 00000 n +0000315254 00000 n +0000315319 00000 n +0000315383 00000 n +0000321824 00000 n +0000318004 00000 n +0000315624 00000 n +0000318129 00000 n +0000318193 00000 n +0000318258 00000 n +0000318322 00000 n +0000318387 00000 n +0000318452 00000 n +0000318517 00000 n +0000318582 00000 n +0000318647 00000 n +0000318712 00000 n +0000318777 00000 n +0000318842 00000 n +0000318906 00000 n +0000318971 00000 n +0000319036 00000 n +0000319101 00000 n +0000319166 00000 n +0000319231 00000 n +0000319296 00000 n +0000319361 00000 n +0000319426 00000 n +0000319490 00000 n +0000319555 00000 n +0000319620 00000 n +0000319685 00000 n +0000319750 00000 n +0000319815 00000 n +0000319880 00000 n +0000319945 00000 n +0000320010 00000 n +0000320074 00000 n +0000320139 00000 n +0000320204 00000 n +0000320269 00000 n +0000320334 00000 n +0000320399 00000 n 0000320464 00000 n 0000320529 00000 n 0000320594 00000 n -0000320659 00000 n -0000320724 00000 n -0000320789 00000 n -0000320854 00000 n -0000320919 00000 n -0000320984 00000 n +0000320658 00000 n +0000320723 00000 n +0000320788 00000 n +0000320853 00000 n +0000320918 00000 n +0000320983 00000 n 0000321048 00000 n -0000321113 00000 n -0000321178 00000 n +0000321112 00000 n +0000321177 00000 n 0000321242 00000 n -0000327399 00000 n -0000324293 00000 n -0000321483 00000 n -0000324418 00000 n -0000324482 00000 n -0000324547 00000 n -0000324611 00000 n -0000324676 00000 n -0000324741 00000 n -0000324806 00000 n -0000324871 00000 n -0000324936 00000 n -0000325001 00000 n -0000325066 00000 n -0000325131 00000 n -0000325195 00000 n -0000325260 00000 n -0000325325 00000 n -0000325390 00000 n -0000325455 00000 n -0000325520 00000 n -0000325585 00000 n -0000325650 00000 n -0000325714 00000 n -0000325779 00000 n -0000325844 00000 n -0000325972 00000 n -0000326037 00000 n -0000326102 00000 n -0000326166 00000 n -0000326231 00000 n -0000326296 00000 n -0000326361 00000 n -0000326426 00000 n -0000326491 00000 n -0000326556 00000 n -0000326621 00000 n -0000326686 00000 n -0000326750 00000 n -0000326815 00000 n -0000326880 00000 n -0000326945 00000 n -0000327010 00000 n -0000327074 00000 n -0000327139 00000 n -0000327204 00000 n -0000327269 00000 n -0000327334 00000 n -0000332954 00000 n -0000330170 00000 n -0000327589 00000 n -0000330295 00000 n -0000330359 00000 n -0000330424 00000 n -0000330488 00000 n -0000330553 00000 n -0000330618 00000 n -0000330683 00000 n -0000330748 00000 n -0000330813 00000 n -0000330877 00000 n -0000330940 00000 n -0000331005 00000 n -0000331070 00000 n -0000331135 00000 n -0000331200 00000 n -0000331265 00000 n -0000331330 00000 n -0000331395 00000 n -0000331460 00000 n -0000331525 00000 n -0000331590 00000 n -0000331655 00000 n -0000331720 00000 n -0000331785 00000 n -0000331850 00000 n -0000331915 00000 n -0000331980 00000 n -0000332045 00000 n -0000332110 00000 n -0000332175 00000 n -0000332240 00000 n -0000332305 00000 n -0000332370 00000 n -0000332435 00000 n -0000332500 00000 n -0000332564 00000 n -0000332629 00000 n -0000332694 00000 n -0000332759 00000 n -0000332824 00000 n -0000332889 00000 n -0000877206 00000 n -0000339091 00000 n -0000335210 00000 n -0000333131 00000 n -0000335335 00000 n -0000335399 00000 n -0000335464 00000 n -0000335528 00000 n -0000335593 00000 n -0000335658 00000 n -0000335786 00000 n -0000335851 00000 n -0000335916 00000 n -0000335981 00000 n -0000336046 00000 n -0000336111 00000 n -0000336174 00000 n -0000336239 00000 n -0000336304 00000 n -0000336369 00000 n -0000336497 00000 n -0000336562 00000 n -0000336627 00000 n -0000336692 00000 n -0000336757 00000 n -0000336822 00000 n -0000336887 00000 n -0000336951 00000 n +0000321307 00000 n +0000321372 00000 n +0000321437 00000 n +0000321502 00000 n +0000321567 00000 n +0000321632 00000 n +0000321696 00000 n +0000321760 00000 n +0000327803 00000 n +0000324763 00000 n +0000321988 00000 n +0000324888 00000 n +0000324952 00000 n +0000325017 00000 n +0000325081 00000 n +0000325146 00000 n +0000325211 00000 n +0000325275 00000 n +0000325340 00000 n +0000325405 00000 n +0000325470 00000 n +0000325535 00000 n +0000325600 00000 n +0000325665 00000 n +0000325730 00000 n +0000325795 00000 n +0000325860 00000 n +0000325925 00000 n +0000325990 00000 n +0000326055 00000 n +0000326120 00000 n +0000326185 00000 n +0000326313 00000 n +0000326378 00000 n +0000326443 00000 n +0000326508 00000 n +0000326572 00000 n +0000326637 00000 n +0000326701 00000 n +0000326766 00000 n +0000326831 00000 n +0000326896 00000 n +0000326961 00000 n +0000327026 00000 n +0000327091 00000 n +0000327156 00000 n +0000327221 00000 n +0000327286 00000 n +0000327351 00000 n +0000327416 00000 n +0000327481 00000 n +0000327545 00000 n +0000327610 00000 n +0000327675 00000 n +0000327739 00000 n +0000333911 00000 n +0000329830 00000 n +0000327980 00000 n +0000329955 00000 n +0000330019 00000 n +0000330084 00000 n +0000330148 00000 n +0000330213 00000 n +0000330278 00000 n +0000330343 00000 n +0000330408 00000 n +0000330473 00000 n +0000330538 00000 n +0000330603 00000 n +0000330668 00000 n +0000330732 00000 n +0000330797 00000 n +0000330862 00000 n +0000330927 00000 n +0000330992 00000 n +0000331057 00000 n +0000331122 00000 n +0000331187 00000 n +0000331252 00000 n +0000331316 00000 n +0000331381 00000 n +0000331446 00000 n +0000331511 00000 n +0000331576 00000 n +0000331641 00000 n +0000331706 00000 n +0000331771 00000 n +0000331836 00000 n +0000331900 00000 n +0000331965 00000 n +0000332030 00000 n +0000332095 00000 n +0000332160 00000 n +0000332225 00000 n +0000332290 00000 n +0000332355 00000 n +0000332420 00000 n +0000332485 00000 n +0000332550 00000 n +0000332615 00000 n +0000332680 00000 n +0000332745 00000 n +0000332810 00000 n +0000332875 00000 n +0000332939 00000 n +0000333004 00000 n +0000333069 00000 n +0000333134 00000 n +0000333199 00000 n +0000333264 00000 n +0000333329 00000 n +0000333394 00000 n +0000333459 00000 n +0000333524 00000 n +0000333588 00000 n +0000333653 00000 n +0000333718 00000 n +0000333783 00000 n +0000333847 00000 n +0000339604 00000 n +0000336307 00000 n +0000334088 00000 n +0000336432 00000 n +0000336496 00000 n +0000336561 00000 n +0000336625 00000 n +0000336690 00000 n +0000336755 00000 n +0000336820 00000 n +0000336885 00000 n +0000336950 00000 n 0000337015 00000 n 0000337080 00000 n 0000337145 00000 n -0000337210 00000 n -0000337275 00000 n -0000337340 00000 n -0000337405 00000 n -0000337470 00000 n -0000337535 00000 n -0000337600 00000 n -0000337665 00000 n +0000337209 00000 n +0000337274 00000 n +0000337339 00000 n +0000337404 00000 n +0000337469 00000 n +0000337534 00000 n +0000337599 00000 n +0000337664 00000 n 0000337729 00000 n 0000337794 00000 n 0000337859 00000 n 0000337924 00000 n 0000337989 00000 n -0000338054 00000 n -0000338119 00000 n -0000338184 00000 n -0000338249 00000 n -0000338314 00000 n -0000338379 00000 n -0000338443 00000 n -0000338508 00000 n -0000338573 00000 n -0000338638 00000 n -0000338703 00000 n -0000338768 00000 n -0000338833 00000 n -0000338898 00000 n -0000338963 00000 n -0000339027 00000 n -0000345427 00000 n -0000341283 00000 n -0000339255 00000 n -0000341408 00000 n -0000341472 00000 n -0000341537 00000 n -0000341601 00000 n -0000341666 00000 n -0000341731 00000 n -0000341796 00000 n -0000341861 00000 n -0000341925 00000 n -0000341990 00000 n -0000342055 00000 n -0000342120 00000 n -0000342185 00000 n -0000342249 00000 n -0000342314 00000 n -0000342379 00000 n -0000342444 00000 n -0000342509 00000 n -0000342574 00000 n -0000342639 00000 n -0000342704 00000 n -0000342769 00000 n -0000342834 00000 n -0000342899 00000 n -0000342964 00000 n -0000343029 00000 n -0000343094 00000 n -0000343159 00000 n -0000343224 00000 n -0000343289 00000 n -0000343354 00000 n -0000343419 00000 n -0000343484 00000 n -0000343549 00000 n -0000343614 00000 n -0000343679 00000 n -0000343744 00000 n -0000343809 00000 n -0000343873 00000 n -0000343938 00000 n -0000344003 00000 n -0000344068 00000 n -0000344133 00000 n -0000344197 00000 n -0000344262 00000 n -0000344327 00000 n -0000344392 00000 n -0000344457 00000 n -0000344522 00000 n -0000344585 00000 n -0000344650 00000 n -0000344715 00000 n -0000344780 00000 n -0000344845 00000 n -0000344910 00000 n -0000344975 00000 n -0000345040 00000 n -0000345105 00000 n -0000345169 00000 n -0000345234 00000 n -0000345299 00000 n -0000345363 00000 n -0000351261 00000 n -0000347507 00000 n -0000345578 00000 n -0000347632 00000 n -0000347696 00000 n -0000347761 00000 n -0000347825 00000 n -0000347890 00000 n -0000347955 00000 n -0000348020 00000 n -0000348085 00000 n -0000348150 00000 n -0000348215 00000 n -0000348280 00000 n -0000348345 00000 n -0000348409 00000 n -0000348474 00000 n -0000348539 00000 n -0000348604 00000 n -0000348669 00000 n -0000348734 00000 n -0000348799 00000 n -0000348864 00000 n -0000348929 00000 n -0000348993 00000 n -0000349058 00000 n -0000349123 00000 n -0000349188 00000 n -0000349253 00000 n -0000349318 00000 n -0000349383 00000 n -0000349447 00000 n -0000349512 00000 n -0000349577 00000 n -0000349642 00000 n -0000349707 00000 n -0000349772 00000 n -0000349837 00000 n -0000349901 00000 n -0000349966 00000 n -0000350031 00000 n -0000350096 00000 n -0000350161 00000 n -0000350226 00000 n -0000350291 00000 n -0000350356 00000 n -0000350421 00000 n -0000350486 00000 n -0000350551 00000 n -0000350616 00000 n -0000350681 00000 n -0000350809 00000 n -0000350874 00000 n -0000350939 00000 n -0000351004 00000 n -0000351069 00000 n -0000351133 00000 n -0000351197 00000 n -0000357475 00000 n -0000354113 00000 n -0000351425 00000 n -0000354238 00000 n -0000354302 00000 n -0000354367 00000 n -0000354431 00000 n -0000354496 00000 n -0000354561 00000 n -0000354626 00000 n -0000354691 00000 n -0000354819 00000 n -0000354884 00000 n -0000354949 00000 n -0000355014 00000 n -0000355078 00000 n -0000355143 00000 n -0000355208 00000 n -0000355273 00000 n -0000355338 00000 n -0000355403 00000 n -0000355468 00000 n -0000355533 00000 n -0000355598 00000 n -0000355662 00000 n -0000355727 00000 n -0000355792 00000 n -0000355857 00000 n -0000355922 00000 n -0000355987 00000 n -0000356052 00000 n -0000874848 00000 n -0000356180 00000 n -0000356245 00000 n -0000356310 00000 n -0000356374 00000 n -0000356439 00000 n -0000356504 00000 n -0000356569 00000 n -0000356634 00000 n -0000356699 00000 n -0000356763 00000 n -0000356828 00000 n -0000356893 00000 n -0000356958 00000 n -0000357023 00000 n -0000357088 00000 n -0000357153 00000 n -0000357217 00000 n -0000357282 00000 n -0000357347 00000 n -0000357411 00000 n -0000362848 00000 n -0000360973 00000 n -0000357706 00000 n -0000361098 00000 n -0000361162 00000 n -0000361227 00000 n -0000361291 00000 n -0000361356 00000 n -0000361421 00000 n -0000361486 00000 n -0000361551 00000 n -0000361616 00000 n -0000361681 00000 n -0000361746 00000 n -0000361809 00000 n -0000361874 00000 n -0000361939 00000 n -0000362004 00000 n -0000362069 00000 n -0000362134 00000 n -0000362199 00000 n -0000362264 00000 n -0000362329 00000 n -0000362394 00000 n -0000362459 00000 n -0000362524 00000 n -0000362589 00000 n -0000362654 00000 n -0000362719 00000 n -0000362783 00000 n -0000368124 00000 n -0000365730 00000 n -0000363064 00000 n -0000365855 00000 n -0000365919 00000 n -0000365984 00000 n -0000366049 00000 n -0000366114 00000 n -0000366178 00000 n -0000366243 00000 n -0000366308 00000 n -0000366373 00000 n -0000366438 00000 n -0000366503 00000 n -0000366568 00000 n -0000366632 00000 n -0000366697 00000 n -0000366762 00000 n -0000366827 00000 n -0000366892 00000 n -0000366957 00000 n -0000367022 00000 n -0000367087 00000 n -0000367152 00000 n -0000367217 00000 n -0000367282 00000 n -0000367346 00000 n -0000367411 00000 n -0000367476 00000 n -0000367540 00000 n -0000367605 00000 n -0000367669 00000 n -0000367734 00000 n -0000367799 00000 n -0000367864 00000 n -0000367929 00000 n -0000367994 00000 n -0000368059 00000 n -0000372967 00000 n -0000370444 00000 n -0000368340 00000 n -0000370569 00000 n -0000370633 00000 n -0000370698 00000 n -0000370763 00000 n -0000370828 00000 n -0000370892 00000 n -0000370957 00000 n -0000371022 00000 n -0000371087 00000 n -0000371152 00000 n -0000371217 00000 n -0000371282 00000 n -0000371347 00000 n -0000371412 00000 n -0000371477 00000 n -0000371542 00000 n -0000371607 00000 n -0000371670 00000 n -0000371735 00000 n -0000371800 00000 n -0000371865 00000 n -0000371930 00000 n -0000371995 00000 n -0000372060 00000 n -0000372125 00000 n -0000372190 00000 n -0000372254 00000 n -0000372319 00000 n -0000372384 00000 n -0000372449 00000 n -0000372514 00000 n -0000372578 00000 n -0000372643 00000 n -0000372708 00000 n -0000372773 00000 n -0000372838 00000 n -0000372902 00000 n -0000378325 00000 n +0000338053 00000 n +0000338118 00000 n +0000338244 00000 n +0000338309 00000 n +0000338374 00000 n +0000338439 00000 n +0000338504 00000 n +0000338569 00000 n +0000338634 00000 n +0000338699 00000 n +0000338762 00000 n +0000338827 00000 n +0000338892 00000 n +0000338957 00000 n +0000339022 00000 n +0000339087 00000 n +0000339152 00000 n +0000339217 00000 n +0000339282 00000 n +0000339346 00000 n +0000339411 00000 n +0000339476 00000 n +0000339540 00000 n +0000897032 00000 n +0000345629 00000 n +0000342456 00000 n +0000339781 00000 n +0000342581 00000 n +0000342645 00000 n +0000342710 00000 n +0000342774 00000 n +0000342839 00000 n +0000342904 00000 n +0000342969 00000 n +0000343034 00000 n +0000343099 00000 n +0000343164 00000 n +0000343229 00000 n +0000343294 00000 n +0000343359 00000 n +0000343424 00000 n +0000343489 00000 n +0000343554 00000 n +0000343619 00000 n +0000343684 00000 n +0000343749 00000 n +0000343814 00000 n +0000343879 00000 n +0000344007 00000 n +0000344072 00000 n +0000344137 00000 n +0000344202 00000 n +0000344266 00000 n +0000344331 00000 n +0000344396 00000 n +0000344461 00000 n +0000344526 00000 n +0000344591 00000 n +0000344656 00000 n +0000344721 00000 n +0000344786 00000 n +0000344850 00000 n +0000344915 00000 n +0000344980 00000 n +0000345045 00000 n +0000345110 00000 n +0000345175 00000 n +0000345240 00000 n +0000345305 00000 n +0000345370 00000 n +0000345435 00000 n +0000345499 00000 n +0000345564 00000 n +0000351293 00000 n +0000348508 00000 n +0000345819 00000 n +0000348633 00000 n +0000348697 00000 n +0000348762 00000 n +0000348827 00000 n +0000348892 00000 n +0000348957 00000 n +0000349022 00000 n +0000349087 00000 n +0000349152 00000 n +0000349216 00000 n +0000349281 00000 n +0000349346 00000 n +0000349411 00000 n +0000349476 00000 n +0000349541 00000 n +0000349606 00000 n +0000349671 00000 n +0000349736 00000 n +0000349801 00000 n +0000349866 00000 n +0000349931 00000 n +0000349996 00000 n +0000350061 00000 n +0000350126 00000 n +0000350191 00000 n +0000350256 00000 n +0000350321 00000 n +0000350386 00000 n +0000350451 00000 n +0000350516 00000 n +0000350581 00000 n +0000350646 00000 n +0000350711 00000 n +0000350775 00000 n +0000350840 00000 n +0000350905 00000 n +0000350970 00000 n +0000351035 00000 n +0000351100 00000 n +0000351165 00000 n +0000351229 00000 n +0000357285 00000 n +0000353532 00000 n +0000351470 00000 n +0000353657 00000 n +0000353721 00000 n +0000353786 00000 n +0000353851 00000 n +0000353916 00000 n +0000353981 00000 n +0000354046 00000 n +0000354174 00000 n +0000354239 00000 n +0000354304 00000 n +0000354369 00000 n +0000354434 00000 n +0000354498 00000 n +0000354563 00000 n +0000354628 00000 n +0000354693 00000 n +0000354758 00000 n +0000354886 00000 n +0000354950 00000 n +0000355015 00000 n +0000355080 00000 n +0000355145 00000 n +0000355210 00000 n +0000355275 00000 n +0000355340 00000 n +0000355405 00000 n +0000355470 00000 n +0000355535 00000 n +0000355600 00000 n +0000355665 00000 n +0000355729 00000 n +0000355794 00000 n +0000355859 00000 n +0000355923 00000 n +0000355988 00000 n +0000356053 00000 n +0000356118 00000 n +0000356183 00000 n +0000356248 00000 n +0000356313 00000 n +0000356378 00000 n +0000356443 00000 n +0000356508 00000 n +0000356573 00000 n +0000356638 00000 n +0000356703 00000 n +0000356768 00000 n +0000356832 00000 n +0000356897 00000 n +0000356962 00000 n +0000357027 00000 n +0000357092 00000 n +0000357157 00000 n +0000357221 00000 n +0000363699 00000 n +0000359815 00000 n +0000357449 00000 n +0000359940 00000 n +0000360004 00000 n +0000360069 00000 n +0000360133 00000 n +0000360198 00000 n +0000360263 00000 n +0000360328 00000 n +0000360393 00000 n +0000360458 00000 n +0000360523 00000 n +0000360588 00000 n +0000360653 00000 n +0000360718 00000 n +0000360781 00000 n +0000360846 00000 n +0000360911 00000 n +0000360976 00000 n +0000361041 00000 n +0000361106 00000 n +0000361171 00000 n +0000361236 00000 n +0000361301 00000 n +0000361366 00000 n +0000361431 00000 n +0000361496 00000 n +0000361561 00000 n +0000361626 00000 n +0000361691 00000 n +0000361756 00000 n +0000361821 00000 n +0000361886 00000 n +0000361951 00000 n +0000362016 00000 n +0000362081 00000 n +0000362146 00000 n +0000362211 00000 n +0000362276 00000 n +0000362341 00000 n +0000362406 00000 n +0000362470 00000 n +0000362535 00000 n +0000362600 00000 n +0000362665 00000 n +0000362730 00000 n +0000362795 00000 n +0000362860 00000 n +0000362925 00000 n +0000362990 00000 n +0000363055 00000 n +0000363116 00000 n +0000363181 00000 n +0000363246 00000 n +0000363311 00000 n +0000363376 00000 n +0000363441 00000 n +0000363506 00000 n +0000363571 00000 n +0000363635 00000 n +0000369754 00000 n +0000365737 00000 n +0000363863 00000 n +0000365862 00000 n +0000365926 00000 n +0000365991 00000 n +0000366055 00000 n +0000366120 00000 n +0000366185 00000 n +0000366250 00000 n +0000366315 00000 n +0000366380 00000 n +0000366445 00000 n +0000366510 00000 n +0000366575 00000 n +0000366639 00000 n +0000366704 00000 n +0000366769 00000 n +0000366834 00000 n +0000366899 00000 n +0000366964 00000 n +0000367029 00000 n +0000367094 00000 n +0000367159 00000 n +0000367223 00000 n +0000367288 00000 n +0000367353 00000 n +0000367418 00000 n +0000367483 00000 n +0000367548 00000 n +0000367613 00000 n +0000367678 00000 n +0000367743 00000 n +0000367807 00000 n +0000367872 00000 n +0000367937 00000 n +0000368002 00000 n +0000368067 00000 n +0000368132 00000 n +0000368197 00000 n +0000368262 00000 n +0000368327 00000 n +0000368391 00000 n +0000368456 00000 n +0000368521 00000 n +0000368586 00000 n +0000368651 00000 n +0000368716 00000 n +0000368781 00000 n +0000368846 00000 n +0000368911 00000 n +0000368976 00000 n +0000369041 00000 n +0000369106 00000 n +0000369171 00000 n +0000369236 00000 n +0000369301 00000 n +0000369366 00000 n +0000369431 00000 n +0000369496 00000 n +0000369561 00000 n +0000369626 00000 n +0000369691 00000 n +0000375863 00000 n +0000372110 00000 n +0000369905 00000 n +0000372235 00000 n +0000372362 00000 n +0000372427 00000 n +0000372492 00000 n +0000372557 00000 n +0000372622 00000 n +0000372687 00000 n +0000372752 00000 n +0000372817 00000 n +0000372882 00000 n +0000372947 00000 n +0000373012 00000 n +0000373077 00000 n +0000373141 00000 n +0000373206 00000 n +0000373334 00000 n +0000373399 00000 n +0000373464 00000 n +0000373529 00000 n +0000373594 00000 n +0000373659 00000 n +0000373724 00000 n +0000373789 00000 n +0000373854 00000 n +0000373918 00000 n +0000373983 00000 n +0000374048 00000 n +0000374113 00000 n +0000374178 00000 n +0000374243 00000 n +0000374308 00000 n +0000374373 00000 n +0000374438 00000 n +0000374503 00000 n +0000374568 00000 n +0000374632 00000 n +0000374697 00000 n +0000374762 00000 n +0000374827 00000 n +0000374892 00000 n +0000374957 00000 n +0000375022 00000 n +0000375087 00000 n +0000375151 00000 n +0000375216 00000 n +0000375281 00000 n +0000375346 00000 n 0000375411 00000 n -0000373157 00000 n -0000375536 00000 n -0000375600 00000 n -0000375664 00000 n -0000375729 00000 n -0000375794 00000 n -0000375859 00000 n -0000375924 00000 n -0000375989 00000 n -0000376054 00000 n -0000376118 00000 n -0000376183 00000 n -0000376248 00000 n -0000376313 00000 n -0000376378 00000 n -0000376443 00000 n -0000376508 00000 n -0000376573 00000 n -0000376638 00000 n -0000376703 00000 n -0000376768 00000 n -0000376833 00000 n -0000376898 00000 n -0000376963 00000 n -0000377028 00000 n -0000377093 00000 n -0000377158 00000 n -0000377222 00000 n -0000377287 00000 n -0000377352 00000 n -0000377417 00000 n -0000377482 00000 n -0000377547 00000 n -0000377612 00000 n -0000377677 00000 n -0000377742 00000 n -0000377807 00000 n -0000377872 00000 n -0000377936 00000 n -0000378001 00000 n -0000378066 00000 n -0000378131 00000 n -0000378196 00000 n -0000378260 00000 n -0000383613 00000 n -0000380437 00000 n -0000378541 00000 n -0000380562 00000 n -0000380626 00000 n -0000380691 00000 n -0000380755 00000 n -0000380820 00000 n -0000380885 00000 n -0000380950 00000 n -0000381015 00000 n -0000381080 00000 n -0000381145 00000 n -0000381209 00000 n -0000381274 00000 n -0000381339 00000 n -0000381404 00000 n -0000381469 00000 n -0000381534 00000 n -0000381599 00000 n -0000381663 00000 n -0000381728 00000 n -0000381793 00000 n -0000381858 00000 n -0000381923 00000 n -0000381988 00000 n -0000382053 00000 n -0000382118 00000 n -0000382183 00000 n -0000382248 00000 n -0000382313 00000 n -0000382378 00000 n -0000382443 00000 n -0000382508 00000 n -0000382573 00000 n -0000382638 00000 n -0000382703 00000 n -0000382768 00000 n -0000382833 00000 n -0000382898 00000 n -0000382963 00000 n -0000383028 00000 n -0000383093 00000 n -0000383158 00000 n -0000383223 00000 n -0000383288 00000 n -0000383353 00000 n -0000383418 00000 n -0000383483 00000 n -0000383548 00000 n -0000386910 00000 n -0000389402 00000 n -0000386737 00000 n -0000383790 00000 n -0000387068 00000 n -0000387132 00000 n -0000387197 00000 n -0000387262 00000 n -0000387327 00000 n -0000387392 00000 n -0000387457 00000 n -0000387522 00000 n -0000387587 00000 n -0000387652 00000 n -0000387716 00000 n -0000387781 00000 n -0000387846 00000 n -0000387911 00000 n -0000387976 00000 n -0000388041 00000 n -0000388106 00000 n -0000388171 00000 n -0000388236 00000 n -0000388301 00000 n -0000388366 00000 n -0000388431 00000 n -0000388495 00000 n -0000388560 00000 n -0000388624 00000 n -0000388689 00000 n -0000388754 00000 n -0000388819 00000 n -0000388884 00000 n -0000388949 00000 n -0000389014 00000 n -0000389079 00000 n -0000389144 00000 n -0000389209 00000 n -0000389274 00000 n -0000389338 00000 n -0000877370 00000 n -0000386879 00000 n -0000396104 00000 n -0000392544 00000 n -0000389670 00000 n -0000392669 00000 n -0000392733 00000 n -0000392798 00000 n -0000392862 00000 n -0000392927 00000 n -0000392992 00000 n -0000393057 00000 n -0000393122 00000 n -0000393187 00000 n -0000393252 00000 n -0000393317 00000 n -0000393382 00000 n -0000393447 00000 n -0000393512 00000 n -0000393577 00000 n -0000393642 00000 n -0000393707 00000 n -0000393835 00000 n -0000393900 00000 n -0000393964 00000 n -0000394029 00000 n -0000394094 00000 n -0000394159 00000 n -0000394224 00000 n -0000394289 00000 n -0000394354 00000 n -0000394419 00000 n -0000394484 00000 n -0000394548 00000 n -0000394613 00000 n -0000394678 00000 n -0000394743 00000 n -0000394808 00000 n -0000394873 00000 n -0000394938 00000 n -0000395003 00000 n -0000395068 00000 n -0000395132 00000 n -0000395197 00000 n -0000395262 00000 n -0000395327 00000 n -0000395392 00000 n -0000395457 00000 n -0000395522 00000 n -0000395587 00000 n -0000395652 00000 n -0000395716 00000 n -0000395781 00000 n -0000395846 00000 n -0000395911 00000 n -0000395976 00000 n -0000396040 00000 n -0000402081 00000 n -0000399622 00000 n -0000396307 00000 n -0000399747 00000 n -0000399811 00000 n -0000399876 00000 n -0000399940 00000 n -0000400005 00000 n -0000400070 00000 n -0000400135 00000 n -0000400200 00000 n -0000400265 00000 n -0000400330 00000 n -0000400395 00000 n -0000400460 00000 n -0000400524 00000 n -0000400589 00000 n -0000400654 00000 n -0000400719 00000 n -0000400784 00000 n -0000400849 00000 n -0000400914 00000 n -0000400979 00000 n -0000401044 00000 n -0000401108 00000 n -0000401173 00000 n -0000401238 00000 n -0000401303 00000 n -0000401368 00000 n -0000401432 00000 n -0000401497 00000 n -0000401562 00000 n -0000401627 00000 n -0000401692 00000 n -0000401757 00000 n -0000401822 00000 n -0000401887 00000 n -0000401952 00000 n -0000402016 00000 n -0000405720 00000 n -0000405877 00000 n -0000408174 00000 n -0000405538 00000 n -0000402297 00000 n -0000406034 00000 n -0000406098 00000 n -0000406161 00000 n -0000406226 00000 n -0000406291 00000 n -0000406356 00000 n -0000406420 00000 n -0000406485 00000 n -0000406550 00000 n -0000406615 00000 n -0000406680 00000 n -0000406745 00000 n -0000406810 00000 n -0000406875 00000 n -0000406940 00000 n -0000407005 00000 n -0000407070 00000 n -0000407135 00000 n -0000407200 00000 n -0000407265 00000 n -0000407330 00000 n -0000407395 00000 n -0000407460 00000 n -0000407525 00000 n -0000407590 00000 n -0000407655 00000 n -0000407720 00000 n -0000407784 00000 n -0000407849 00000 n -0000407914 00000 n -0000407979 00000 n -0000408044 00000 n -0000408109 00000 n -0000405680 00000 n -0000413421 00000 n -0000410056 00000 n -0000408442 00000 n -0000410181 00000 n -0000410245 00000 n -0000410310 00000 n -0000410375 00000 n -0000410440 00000 n -0000410505 00000 n -0000410570 00000 n -0000410635 00000 n -0000410700 00000 n -0000410765 00000 n -0000410829 00000 n -0000410894 00000 n -0000410959 00000 n -0000411024 00000 n -0000411089 00000 n -0000411154 00000 n -0000411219 00000 n -0000411284 00000 n -0000411349 00000 n -0000411413 00000 n -0000411478 00000 n -0000411543 00000 n -0000411608 00000 n -0000411673 00000 n -0000411738 00000 n -0000411803 00000 n -0000411868 00000 n -0000411933 00000 n -0000411997 00000 n -0000412062 00000 n -0000412127 00000 n -0000412192 00000 n -0000412257 00000 n -0000412322 00000 n -0000412387 00000 n -0000412452 00000 n -0000412515 00000 n -0000412580 00000 n -0000412645 00000 n -0000412710 00000 n -0000412775 00000 n -0000412838 00000 n -0000412903 00000 n -0000412968 00000 n -0000413033 00000 n -0000413098 00000 n -0000413163 00000 n -0000413227 00000 n -0000413292 00000 n -0000413356 00000 n -0000419403 00000 n -0000415387 00000 n -0000413585 00000 n -0000415512 00000 n -0000415576 00000 n -0000415640 00000 n -0000415705 00000 n -0000415770 00000 n -0000415835 00000 n -0000415900 00000 n -0000415965 00000 n -0000416030 00000 n -0000416095 00000 n -0000416160 00000 n -0000416224 00000 n -0000416289 00000 n -0000416354 00000 n -0000416419 00000 n -0000416484 00000 n -0000416549 00000 n -0000416614 00000 n -0000416679 00000 n -0000416744 00000 n -0000416808 00000 n -0000416873 00000 n -0000416938 00000 n -0000417003 00000 n -0000417068 00000 n -0000417133 00000 n -0000417198 00000 n -0000417263 00000 n -0000417328 00000 n -0000417392 00000 n -0000417457 00000 n -0000417522 00000 n -0000417587 00000 n -0000417652 00000 n -0000417717 00000 n -0000417782 00000 n -0000417847 00000 n -0000417912 00000 n -0000417976 00000 n -0000418041 00000 n -0000418106 00000 n -0000418171 00000 n -0000418236 00000 n -0000418301 00000 n -0000418366 00000 n -0000418431 00000 n -0000418496 00000 n -0000418560 00000 n -0000418625 00000 n -0000418690 00000 n -0000418755 00000 n -0000418820 00000 n -0000418885 00000 n -0000418950 00000 n -0000419015 00000 n -0000419080 00000 n -0000419144 00000 n -0000419209 00000 n -0000419274 00000 n -0000419339 00000 n -0000425505 00000 n -0000422659 00000 n -0000419593 00000 n -0000422784 00000 n -0000422848 00000 n -0000422913 00000 n -0000422977 00000 n -0000423042 00000 n -0000423107 00000 n -0000423172 00000 n -0000423236 00000 n -0000423301 00000 n -0000423366 00000 n -0000423431 00000 n -0000423496 00000 n -0000423560 00000 n -0000423625 00000 n -0000423690 00000 n -0000423755 00000 n -0000423820 00000 n -0000423885 00000 n -0000423950 00000 n -0000424015 00000 n -0000424079 00000 n -0000424144 00000 n -0000424209 00000 n -0000424274 00000 n -0000424339 00000 n -0000424404 00000 n -0000424469 00000 n -0000424534 00000 n -0000424598 00000 n -0000424663 00000 n -0000424728 00000 n -0000424793 00000 n -0000424858 00000 n -0000424923 00000 n -0000424988 00000 n -0000425053 00000 n -0000425118 00000 n -0000425183 00000 n -0000425247 00000 n -0000425312 00000 n -0000425377 00000 n -0000425441 00000 n -0000428852 00000 n -0000431800 00000 n -0000428679 00000 n -0000425721 00000 n -0000429010 00000 n -0000429074 00000 n -0000429139 00000 n -0000429204 00000 n -0000429269 00000 n -0000429334 00000 n -0000429399 00000 n -0000429464 00000 n -0000429529 00000 n -0000429594 00000 n -0000429658 00000 n -0000429723 00000 n -0000429787 00000 n -0000429852 00000 n -0000429917 00000 n -0000429982 00000 n -0000430047 00000 n -0000430112 00000 n -0000430177 00000 n -0000430242 00000 n -0000430307 00000 n -0000430372 00000 n -0000430437 00000 n -0000430502 00000 n -0000430567 00000 n -0000430632 00000 n -0000430697 00000 n -0000430762 00000 n -0000430827 00000 n -0000430892 00000 n -0000430957 00000 n -0000431021 00000 n -0000431086 00000 n -0000431151 00000 n -0000431216 00000 n -0000431281 00000 n -0000431346 00000 n -0000431411 00000 n -0000431476 00000 n -0000431541 00000 n -0000431606 00000 n -0000431671 00000 n -0000431736 00000 n -0000428821 00000 n -0000437954 00000 n -0000434329 00000 n -0000432081 00000 n -0000434454 00000 n -0000434518 00000 n -0000434583 00000 n -0000434647 00000 n -0000434712 00000 n -0000434777 00000 n -0000434842 00000 n -0000434907 00000 n -0000434972 00000 n -0000435037 00000 n -0000435102 00000 n -0000435230 00000 n -0000435295 00000 n -0000435360 00000 n -0000435425 00000 n -0000435490 00000 n -0000435555 00000 n -0000435620 00000 n -0000435685 00000 n -0000435750 00000 n -0000435815 00000 n -0000435880 00000 n -0000435945 00000 n -0000436008 00000 n -0000436073 00000 n -0000436138 00000 n -0000436203 00000 n -0000436268 00000 n -0000436333 00000 n -0000436398 00000 n -0000436463 00000 n -0000436528 00000 n -0000436593 00000 n -0000436658 00000 n -0000436723 00000 n -0000436788 00000 n -0000436853 00000 n -0000436918 00000 n -0000436983 00000 n -0000437048 00000 n -0000437112 00000 n -0000437177 00000 n -0000437242 00000 n -0000437307 00000 n -0000437372 00000 n -0000437437 00000 n -0000437502 00000 n -0000437567 00000 n -0000437632 00000 n -0000437696 00000 n -0000437761 00000 n -0000437826 00000 n -0000437890 00000 n -0000444002 00000 n -0000440508 00000 n -0000438131 00000 n -0000440633 00000 n -0000440697 00000 n -0000440762 00000 n -0000440826 00000 n -0000440891 00000 n -0000440956 00000 n -0000441021 00000 n -0000441086 00000 n -0000441151 00000 n -0000441215 00000 n -0000441280 00000 n -0000441345 00000 n +0000375476 00000 n +0000375541 00000 n +0000375606 00000 n +0000375671 00000 n +0000375735 00000 n +0000375799 00000 n +0000894674 00000 n +0000381227 00000 n +0000379289 00000 n +0000376080 00000 n +0000379414 00000 n +0000379541 00000 n +0000379606 00000 n +0000379671 00000 n +0000379736 00000 n +0000379801 00000 n +0000379866 00000 n +0000379931 00000 n +0000380059 00000 n +0000380124 00000 n +0000380189 00000 n +0000380254 00000 n +0000380319 00000 n +0000380384 00000 n +0000380449 00000 n +0000380514 00000 n +0000380579 00000 n +0000380644 00000 n +0000380709 00000 n +0000380774 00000 n +0000380839 00000 n +0000380904 00000 n +0000380969 00000 n +0000381034 00000 n +0000381099 00000 n +0000381163 00000 n +0000386939 00000 n +0000384157 00000 n +0000381482 00000 n +0000384282 00000 n +0000384346 00000 n +0000384411 00000 n +0000384475 00000 n +0000384540 00000 n +0000384605 00000 n +0000384670 00000 n +0000384734 00000 n +0000384799 00000 n +0000384864 00000 n +0000384929 00000 n +0000384994 00000 n +0000385059 00000 n +0000385124 00000 n +0000385189 00000 n +0000385254 00000 n +0000385319 00000 n +0000385384 00000 n +0000385449 00000 n +0000385514 00000 n +0000385579 00000 n +0000385644 00000 n +0000385709 00000 n +0000385774 00000 n +0000385839 00000 n +0000385904 00000 n +0000385969 00000 n +0000386034 00000 n +0000386099 00000 n +0000386163 00000 n +0000386228 00000 n +0000386293 00000 n +0000386358 00000 n +0000386423 00000 n +0000386487 00000 n +0000386552 00000 n +0000386617 00000 n +0000386681 00000 n +0000386746 00000 n +0000386811 00000 n +0000386875 00000 n +0000392256 00000 n +0000390249 00000 n +0000387155 00000 n +0000390374 00000 n +0000390438 00000 n +0000390503 00000 n +0000390568 00000 n +0000390633 00000 n +0000390698 00000 n +0000390763 00000 n +0000390828 00000 n +0000390893 00000 n +0000390958 00000 n +0000391023 00000 n +0000391088 00000 n +0000391153 00000 n +0000391218 00000 n +0000391283 00000 n +0000391348 00000 n +0000391413 00000 n +0000391477 00000 n +0000391542 00000 n +0000391607 00000 n +0000391672 00000 n +0000391737 00000 n +0000391802 00000 n +0000391867 00000 n +0000391932 00000 n +0000391997 00000 n +0000392062 00000 n +0000392127 00000 n +0000392192 00000 n +0000398113 00000 n +0000394681 00000 n +0000392459 00000 n +0000394806 00000 n +0000394870 00000 n +0000394934 00000 n +0000394999 00000 n +0000395064 00000 n +0000395129 00000 n +0000395194 00000 n +0000395259 00000 n +0000395324 00000 n +0000395388 00000 n +0000395453 00000 n +0000395518 00000 n +0000395583 00000 n +0000395648 00000 n +0000395713 00000 n +0000395778 00000 n +0000395843 00000 n +0000395908 00000 n +0000395973 00000 n +0000396038 00000 n +0000396103 00000 n +0000396168 00000 n +0000396233 00000 n +0000396298 00000 n +0000396363 00000 n +0000396428 00000 n +0000396492 00000 n +0000396557 00000 n +0000396622 00000 n +0000396687 00000 n +0000396752 00000 n +0000396817 00000 n +0000396882 00000 n +0000396947 00000 n +0000397012 00000 n +0000397075 00000 n +0000397140 00000 n +0000397205 00000 n +0000397270 00000 n +0000397335 00000 n +0000397399 00000 n +0000397464 00000 n +0000397529 00000 n +0000397594 00000 n +0000397659 00000 n +0000397724 00000 n +0000397789 00000 n +0000397854 00000 n +0000397919 00000 n +0000397983 00000 n +0000398048 00000 n +0000897196 00000 n +0000403881 00000 n +0000400904 00000 n +0000398316 00000 n +0000401029 00000 n +0000401093 00000 n +0000401158 00000 n +0000401223 00000 n +0000401288 00000 n +0000401352 00000 n +0000401417 00000 n +0000401482 00000 n +0000401546 00000 n +0000401611 00000 n +0000401676 00000 n +0000401740 00000 n +0000401805 00000 n +0000401870 00000 n +0000401935 00000 n +0000402000 00000 n +0000402064 00000 n +0000402129 00000 n +0000402194 00000 n +0000402259 00000 n +0000402324 00000 n +0000402389 00000 n +0000402454 00000 n +0000402519 00000 n +0000402584 00000 n +0000402649 00000 n +0000402714 00000 n +0000402779 00000 n +0000402844 00000 n +0000402909 00000 n +0000402974 00000 n +0000403039 00000 n +0000403104 00000 n +0000403169 00000 n +0000403234 00000 n +0000403299 00000 n +0000403364 00000 n +0000403429 00000 n +0000403494 00000 n +0000403559 00000 n +0000403623 00000 n +0000403688 00000 n +0000403753 00000 n +0000403817 00000 n +0000409141 00000 n +0000405966 00000 n +0000404097 00000 n +0000406091 00000 n +0000406155 00000 n +0000406220 00000 n +0000406285 00000 n +0000406350 00000 n +0000406415 00000 n +0000406480 00000 n +0000406545 00000 n +0000406610 00000 n +0000406675 00000 n +0000406740 00000 n +0000406805 00000 n +0000406870 00000 n +0000406935 00000 n +0000407000 00000 n +0000407065 00000 n +0000407130 00000 n +0000407194 00000 n +0000407259 00000 n +0000407324 00000 n +0000407389 00000 n +0000407454 00000 n +0000407519 00000 n +0000407584 00000 n +0000407648 00000 n +0000407713 00000 n +0000407778 00000 n +0000407843 00000 n +0000407908 00000 n +0000407973 00000 n +0000408038 00000 n +0000408103 00000 n +0000408168 00000 n +0000408232 00000 n +0000408297 00000 n +0000408362 00000 n +0000408427 00000 n +0000408492 00000 n +0000408557 00000 n +0000408622 00000 n +0000408687 00000 n +0000408752 00000 n +0000408816 00000 n +0000408881 00000 n +0000408946 00000 n +0000409011 00000 n +0000409076 00000 n +0000412914 00000 n +0000415405 00000 n +0000412741 00000 n +0000409305 00000 n +0000413071 00000 n +0000413135 00000 n +0000413199 00000 n +0000413264 00000 n +0000413329 00000 n +0000413394 00000 n +0000413459 00000 n +0000413524 00000 n +0000413589 00000 n +0000413654 00000 n +0000413719 00000 n +0000413783 00000 n +0000413848 00000 n +0000413913 00000 n +0000413977 00000 n +0000414042 00000 n +0000414107 00000 n +0000414172 00000 n +0000414237 00000 n +0000414302 00000 n +0000414367 00000 n +0000414432 00000 n +0000414497 00000 n +0000414562 00000 n +0000414627 00000 n +0000414692 00000 n +0000414757 00000 n +0000414822 00000 n +0000414887 00000 n +0000414952 00000 n +0000415017 00000 n +0000415081 00000 n +0000415146 00000 n +0000415211 00000 n +0000415276 00000 n +0000415341 00000 n +0000412883 00000 n +0000422524 00000 n +0000418771 00000 n +0000415673 00000 n +0000418896 00000 n +0000419023 00000 n +0000419088 00000 n +0000419153 00000 n +0000419218 00000 n +0000419283 00000 n +0000419348 00000 n +0000419413 00000 n +0000419478 00000 n +0000419542 00000 n +0000419607 00000 n +0000419672 00000 n +0000419737 00000 n +0000419802 00000 n +0000419867 00000 n +0000419930 00000 n +0000419995 00000 n +0000420060 00000 n +0000420125 00000 n +0000420190 00000 n +0000420255 00000 n +0000420320 00000 n +0000420385 00000 n +0000420450 00000 n +0000420514 00000 n +0000420579 00000 n +0000420644 00000 n +0000420709 00000 n +0000420774 00000 n +0000420839 00000 n +0000420904 00000 n +0000420969 00000 n +0000421034 00000 n +0000421098 00000 n +0000421163 00000 n +0000421228 00000 n +0000421293 00000 n +0000421358 00000 n +0000421423 00000 n +0000421488 00000 n +0000421553 00000 n +0000421618 00000 n +0000421682 00000 n +0000421747 00000 n +0000421812 00000 n +0000421877 00000 n +0000421942 00000 n +0000422007 00000 n +0000422072 00000 n +0000422137 00000 n +0000422202 00000 n +0000422266 00000 n +0000422331 00000 n +0000422396 00000 n +0000422460 00000 n +0000430809 00000 n +0000427227 00000 n +0000425545 00000 n +0000422714 00000 n +0000425670 00000 n +0000425734 00000 n +0000425799 00000 n +0000425863 00000 n +0000425928 00000 n +0000425993 00000 n +0000426058 00000 n +0000426123 00000 n +0000426188 00000 n +0000426253 00000 n +0000426318 00000 n +0000426383 00000 n +0000426448 00000 n +0000426513 00000 n +0000426578 00000 n +0000426643 00000 n +0000426708 00000 n +0000426772 00000 n +0000426837 00000 n +0000426902 00000 n +0000426967 00000 n +0000427032 00000 n +0000427097 00000 n +0000427162 00000 n +0000430966 00000 n +0000433456 00000 n +0000430627 00000 n +0000427443 00000 n +0000431122 00000 n +0000431186 00000 n +0000431250 00000 n +0000431315 00000 n +0000431380 00000 n +0000431445 00000 n +0000431510 00000 n +0000431575 00000 n +0000431640 00000 n +0000431705 00000 n +0000431768 00000 n +0000431833 00000 n +0000431898 00000 n +0000431963 00000 n +0000432028 00000 n +0000432093 00000 n +0000432158 00000 n +0000432223 00000 n +0000432288 00000 n +0000432353 00000 n +0000432417 00000 n +0000432482 00000 n +0000432547 00000 n +0000432612 00000 n +0000432677 00000 n +0000432742 00000 n +0000432807 00000 n +0000432872 00000 n +0000432937 00000 n +0000433002 00000 n +0000433067 00000 n +0000433132 00000 n +0000433196 00000 n +0000433261 00000 n +0000433326 00000 n +0000433391 00000 n +0000430769 00000 n +0000438983 00000 n +0000435556 00000 n +0000433711 00000 n +0000435681 00000 n +0000435745 00000 n +0000435810 00000 n +0000435874 00000 n +0000435939 00000 n +0000436004 00000 n +0000436069 00000 n +0000436134 00000 n +0000436199 00000 n +0000436264 00000 n +0000436329 00000 n +0000436394 00000 n +0000436458 00000 n +0000436523 00000 n +0000436588 00000 n +0000436653 00000 n +0000436718 00000 n +0000436783 00000 n +0000436848 00000 n +0000436913 00000 n +0000436978 00000 n +0000437042 00000 n +0000437107 00000 n +0000437172 00000 n +0000437237 00000 n +0000437302 00000 n +0000437366 00000 n +0000437431 00000 n +0000437496 00000 n +0000437561 00000 n +0000437626 00000 n +0000437691 00000 n +0000437756 00000 n +0000437821 00000 n +0000437885 00000 n +0000437950 00000 n +0000438015 00000 n +0000438079 00000 n +0000438144 00000 n +0000438207 00000 n +0000438272 00000 n +0000438336 00000 n +0000438401 00000 n +0000438466 00000 n +0000438531 00000 n +0000438596 00000 n +0000438661 00000 n +0000438726 00000 n +0000438790 00000 n +0000438855 00000 n +0000438919 00000 n +0000444845 00000 n +0000441092 00000 n +0000439173 00000 n +0000441217 00000 n +0000441281 00000 n +0000441346 00000 n 0000441410 00000 n 0000441475 00000 n 0000441540 00000 n 0000441605 00000 n 0000441670 00000 n -0000441734 00000 n -0000441799 00000 n -0000441864 00000 n -0000441929 00000 n +0000441735 00000 n +0000441800 00000 n +0000441865 00000 n +0000441930 00000 n 0000441994 00000 n 0000442059 00000 n 0000442124 00000 n 0000442189 00000 n 0000442254 00000 n -0000442318 00000 n -0000442383 00000 n -0000442448 00000 n -0000442513 00000 n -0000442578 00000 n -0000442643 00000 n -0000442708 00000 n -0000442773 00000 n -0000442838 00000 n -0000442902 00000 n +0000442319 00000 n +0000442384 00000 n +0000442449 00000 n +0000442514 00000 n +0000442579 00000 n +0000442644 00000 n +0000442709 00000 n +0000442774 00000 n +0000442839 00000 n +0000442904 00000 n 0000442967 00000 n 0000443032 00000 n 0000443097 00000 n @@ -19658,201 +20558,189 @@ xref 0000443292 00000 n 0000443357 00000 n 0000443422 00000 n -0000443486 00000 n -0000443550 00000 n -0000443615 00000 n -0000443679 00000 n -0000443744 00000 n -0000443809 00000 n -0000443874 00000 n -0000443938 00000 n -0000449578 00000 n -0000446861 00000 n -0000444179 00000 n -0000446986 00000 n -0000447050 00000 n -0000447115 00000 n -0000447179 00000 n -0000447244 00000 n -0000447309 00000 n -0000447374 00000 n -0000447439 00000 n -0000447502 00000 n -0000447567 00000 n -0000447632 00000 n -0000447697 00000 n -0000447762 00000 n -0000447827 00000 n -0000447892 00000 n -0000447957 00000 n -0000448022 00000 n -0000448087 00000 n -0000448152 00000 n -0000448217 00000 n -0000448282 00000 n -0000448347 00000 n -0000448412 00000 n -0000448477 00000 n -0000448542 00000 n -0000448607 00000 n -0000448672 00000 n -0000448737 00000 n -0000448802 00000 n -0000448867 00000 n -0000448932 00000 n -0000448997 00000 n -0000449062 00000 n -0000449126 00000 n -0000449191 00000 n -0000449256 00000 n -0000449320 00000 n -0000449385 00000 n -0000449450 00000 n -0000449514 00000 n -0000877534 00000 n -0000455380 00000 n -0000451690 00000 n -0000449781 00000 n -0000451815 00000 n -0000451879 00000 n -0000451944 00000 n -0000452008 00000 n -0000452073 00000 n -0000452138 00000 n -0000452203 00000 n -0000452268 00000 n -0000452332 00000 n -0000452396 00000 n -0000452461 00000 n -0000452526 00000 n -0000452591 00000 n -0000452656 00000 n -0000452721 00000 n -0000452786 00000 n -0000452851 00000 n -0000452916 00000 n -0000452981 00000 n -0000453046 00000 n -0000453111 00000 n -0000453176 00000 n -0000453241 00000 n -0000453306 00000 n -0000453370 00000 n -0000453435 00000 n -0000453500 00000 n -0000453565 00000 n -0000453630 00000 n -0000453695 00000 n -0000453760 00000 n -0000453825 00000 n -0000453890 00000 n -0000453954 00000 n -0000454019 00000 n -0000454084 00000 n -0000454149 00000 n -0000454214 00000 n -0000454278 00000 n -0000454343 00000 n -0000454408 00000 n -0000454473 00000 n -0000454538 00000 n -0000454603 00000 n -0000454668 00000 n -0000454733 00000 n -0000454798 00000 n -0000454863 00000 n -0000454928 00000 n -0000454993 00000 n -0000455058 00000 n -0000455122 00000 n -0000455187 00000 n -0000455252 00000 n -0000455316 00000 n -0000464284 00000 n -0000461146 00000 n -0000457325 00000 n -0000455583 00000 n -0000457450 00000 n -0000457514 00000 n -0000457579 00000 n -0000457643 00000 n -0000457708 00000 n -0000457773 00000 n -0000457838 00000 n -0000457903 00000 n -0000457968 00000 n -0000458033 00000 n -0000458098 00000 n -0000458163 00000 n -0000458227 00000 n -0000458292 00000 n -0000458357 00000 n -0000458422 00000 n -0000458487 00000 n -0000458552 00000 n -0000458617 00000 n -0000458682 00000 n -0000458747 00000 n -0000458811 00000 n -0000458876 00000 n -0000458941 00000 n -0000459006 00000 n -0000459071 00000 n -0000459135 00000 n -0000459200 00000 n -0000459264 00000 n -0000459329 00000 n -0000459394 00000 n -0000459459 00000 n -0000459524 00000 n -0000459589 00000 n -0000459654 00000 n -0000459719 00000 n -0000459784 00000 n -0000459849 00000 n -0000459913 00000 n -0000459978 00000 n -0000460043 00000 n -0000460108 00000 n -0000460173 00000 n -0000460238 00000 n -0000460303 00000 n -0000460368 00000 n -0000460433 00000 n -0000460497 00000 n -0000460562 00000 n -0000460627 00000 n -0000460692 00000 n -0000460757 00000 n -0000460822 00000 n -0000460887 00000 n -0000460952 00000 n -0000461017 00000 n -0000461081 00000 n -0000467682 00000 n -0000464111 00000 n -0000461310 00000 n -0000464442 00000 n -0000464506 00000 n -0000464571 00000 n -0000464636 00000 n -0000464701 00000 n -0000464766 00000 n -0000464830 00000 n -0000464895 00000 n -0000464960 00000 n -0000465025 00000 n -0000465090 00000 n -0000465218 00000 n -0000465283 00000 n -0000465348 00000 n -0000465413 00000 n -0000465478 00000 n -0000465543 00000 n -0000465608 00000 n -0000465673 00000 n -0000465738 00000 n -0000465803 00000 n +0000443487 00000 n +0000443551 00000 n +0000443616 00000 n +0000443681 00000 n +0000443746 00000 n +0000443811 00000 n +0000443876 00000 n +0000443941 00000 n +0000444006 00000 n +0000444071 00000 n +0000444135 00000 n +0000444200 00000 n +0000444265 00000 n +0000444330 00000 n +0000444393 00000 n +0000444458 00000 n +0000444523 00000 n +0000444588 00000 n +0000444652 00000 n +0000444717 00000 n +0000444781 00000 n +0000450949 00000 n +0000448038 00000 n +0000445035 00000 n +0000448163 00000 n +0000448227 00000 n +0000448292 00000 n +0000448356 00000 n +0000448421 00000 n +0000448485 00000 n +0000448550 00000 n +0000448615 00000 n +0000448680 00000 n +0000448745 00000 n +0000448810 00000 n +0000448874 00000 n +0000448939 00000 n +0000449004 00000 n +0000449069 00000 n +0000449134 00000 n +0000449199 00000 n +0000449264 00000 n +0000449329 00000 n +0000449394 00000 n +0000449459 00000 n +0000449524 00000 n +0000449589 00000 n +0000449654 00000 n +0000449718 00000 n +0000449783 00000 n +0000449848 00000 n +0000449913 00000 n +0000449978 00000 n +0000450042 00000 n +0000450107 00000 n +0000450172 00000 n +0000450237 00000 n +0000450302 00000 n +0000450367 00000 n +0000450432 00000 n +0000450497 00000 n +0000450562 00000 n +0000450627 00000 n +0000450692 00000 n +0000450756 00000 n +0000450821 00000 n +0000450885 00000 n +0000453965 00000 n +0000457037 00000 n +0000453792 00000 n +0000451165 00000 n +0000454123 00000 n +0000454187 00000 n +0000454250 00000 n +0000454315 00000 n +0000454379 00000 n +0000454444 00000 n +0000454509 00000 n +0000454574 00000 n +0000454639 00000 n +0000454704 00000 n +0000454768 00000 n +0000454833 00000 n +0000454898 00000 n +0000454963 00000 n +0000455028 00000 n +0000455093 00000 n +0000455158 00000 n +0000455223 00000 n +0000455288 00000 n +0000455352 00000 n +0000455417 00000 n +0000455482 00000 n +0000455547 00000 n +0000455612 00000 n +0000455677 00000 n +0000455742 00000 n +0000455807 00000 n +0000455872 00000 n +0000455936 00000 n +0000456001 00000 n +0000456066 00000 n +0000456131 00000 n +0000456196 00000 n +0000456261 00000 n +0000456326 00000 n +0000456390 00000 n +0000456455 00000 n +0000456518 00000 n +0000456583 00000 n +0000456648 00000 n +0000456713 00000 n +0000456778 00000 n +0000456843 00000 n +0000456908 00000 n +0000456973 00000 n +0000897360 00000 n +0000453934 00000 n +0000461231 00000 n +0000458966 00000 n +0000457305 00000 n +0000459091 00000 n +0000459155 00000 n +0000459220 00000 n +0000459284 00000 n +0000459349 00000 n +0000459477 00000 n +0000459542 00000 n +0000459607 00000 n +0000459672 00000 n +0000459737 00000 n +0000459801 00000 n +0000459866 00000 n +0000459931 00000 n +0000459996 00000 n +0000460061 00000 n +0000460126 00000 n +0000460191 00000 n +0000460256 00000 n +0000460321 00000 n +0000460386 00000 n +0000460451 00000 n +0000460516 00000 n +0000460581 00000 n +0000460646 00000 n +0000460711 00000 n +0000460776 00000 n +0000460841 00000 n +0000460906 00000 n +0000460971 00000 n +0000461036 00000 n +0000461101 00000 n +0000461166 00000 n +0000466969 00000 n +0000463992 00000 n +0000461408 00000 n +0000464117 00000 n +0000464181 00000 n +0000464245 00000 n +0000464310 00000 n +0000464375 00000 n +0000464440 00000 n +0000464505 00000 n +0000464570 00000 n +0000464635 00000 n +0000464700 00000 n +0000464765 00000 n +0000464829 00000 n +0000464894 00000 n +0000464959 00000 n +0000465024 00000 n +0000465087 00000 n +0000465152 00000 n +0000465217 00000 n +0000465282 00000 n +0000465347 00000 n +0000465412 00000 n +0000465477 00000 n +0000465542 00000 n +0000465607 00000 n +0000465672 00000 n +0000465737 00000 n +0000465802 00000 n 0000465866 00000 n 0000465931 00000 n 0000465996 00000 n @@ -19862,7 +20750,7 @@ xref 0000466256 00000 n 0000466321 00000 n 0000466386 00000 n -0000466450 00000 n +0000466451 00000 n 0000466515 00000 n 0000466580 00000 n 0000466645 00000 n @@ -19870,1421 +20758,1917 @@ xref 0000466775 00000 n 0000466840 00000 n 0000466905 00000 n -0000466970 00000 n -0000467034 00000 n -0000467099 00000 n -0000467164 00000 n -0000467229 00000 n -0000467294 00000 n -0000467359 00000 n -0000467424 00000 n -0000467489 00000 n -0000467554 00000 n -0000467618 00000 n -0000464253 00000 n -0000472259 00000 n -0000469937 00000 n -0000467937 00000 n -0000470062 00000 n -0000470126 00000 n -0000470191 00000 n -0000470256 00000 n -0000470319 00000 n -0000470384 00000 n -0000470449 00000 n -0000470514 00000 n -0000470579 00000 n -0000470643 00000 n -0000470708 00000 n -0000470773 00000 n -0000470838 00000 n -0000470903 00000 n -0000470968 00000 n -0000471033 00000 n -0000471097 00000 n -0000471162 00000 n -0000471226 00000 n -0000471290 00000 n -0000471354 00000 n -0000471417 00000 n -0000471482 00000 n -0000471546 00000 n -0000471611 00000 n -0000471676 00000 n -0000471739 00000 n -0000471804 00000 n -0000471869 00000 n -0000471934 00000 n -0000471999 00000 n -0000472064 00000 n -0000472129 00000 n -0000472194 00000 n -0000474959 00000 n -0000478357 00000 n -0000474786 00000 n -0000472475 00000 n -0000475117 00000 n -0000475181 00000 n -0000475245 00000 n -0000475310 00000 n -0000475375 00000 n -0000475440 00000 n -0000475505 00000 n -0000475570 00000 n -0000475635 00000 n -0000475700 00000 n -0000475765 00000 n -0000475829 00000 n -0000475894 00000 n -0000475959 00000 n -0000476024 00000 n -0000476089 00000 n -0000476154 00000 n -0000476219 00000 n -0000476284 00000 n -0000476349 00000 n -0000476413 00000 n -0000476478 00000 n -0000476543 00000 n -0000476608 00000 n -0000476673 00000 n -0000476738 00000 n -0000476803 00000 n -0000476868 00000 n -0000476933 00000 n -0000476998 00000 n -0000477063 00000 n -0000477128 00000 n -0000477193 00000 n -0000477258 00000 n -0000477322 00000 n -0000477387 00000 n -0000477514 00000 n -0000477579 00000 n -0000477644 00000 n -0000477708 00000 n -0000477773 00000 n -0000477838 00000 n -0000477903 00000 n -0000477968 00000 n -0000478033 00000 n -0000478098 00000 n -0000478163 00000 n -0000478228 00000 n -0000478293 00000 n -0000474928 00000 n -0000484494 00000 n -0000481191 00000 n -0000478586 00000 n -0000481316 00000 n -0000481380 00000 n -0000481445 00000 n -0000481509 00000 n -0000481574 00000 n -0000481639 00000 n -0000481704 00000 n -0000481769 00000 n -0000481834 00000 n -0000481899 00000 n -0000481964 00000 n -0000482028 00000 n -0000482093 00000 n -0000482158 00000 n -0000482223 00000 n -0000482288 00000 n -0000482353 00000 n -0000482418 00000 n -0000482483 00000 n -0000482548 00000 n -0000482612 00000 n -0000482677 00000 n -0000482742 00000 n -0000482807 00000 n -0000482872 00000 n -0000482937 00000 n -0000483002 00000 n -0000483067 00000 n -0000483132 00000 n -0000483196 00000 n -0000483261 00000 n -0000483326 00000 n -0000483391 00000 n -0000483456 00000 n -0000483521 00000 n -0000483586 00000 n -0000483651 00000 n -0000483716 00000 n -0000483781 00000 n -0000483846 00000 n -0000483911 00000 n -0000483975 00000 n -0000484040 00000 n -0000484105 00000 n -0000484170 00000 n -0000484235 00000 n -0000484300 00000 n -0000484365 00000 n -0000484429 00000 n -0000490294 00000 n -0000486541 00000 n -0000484697 00000 n -0000486666 00000 n -0000486730 00000 n -0000486794 00000 n -0000486859 00000 n -0000486924 00000 n -0000486989 00000 n -0000487054 00000 n -0000487118 00000 n -0000487183 00000 n -0000487248 00000 n -0000487313 00000 n -0000487378 00000 n -0000487443 00000 n -0000487508 00000 n -0000487573 00000 n -0000487637 00000 n -0000487702 00000 n -0000487767 00000 n -0000487832 00000 n -0000487897 00000 n -0000487961 00000 n -0000488026 00000 n -0000488091 00000 n -0000488156 00000 n -0000488221 00000 n -0000488286 00000 n -0000488351 00000 n -0000488416 00000 n -0000488480 00000 n -0000488545 00000 n -0000488610 00000 n -0000488675 00000 n -0000488740 00000 n -0000488805 00000 n -0000488870 00000 n -0000488935 00000 n -0000489000 00000 n -0000489063 00000 n -0000489128 00000 n -0000489193 00000 n -0000489258 00000 n -0000489323 00000 n -0000489388 00000 n -0000489453 00000 n -0000489518 00000 n -0000489583 00000 n -0000489647 00000 n -0000489712 00000 n -0000489777 00000 n -0000489842 00000 n -0000489907 00000 n -0000489972 00000 n -0000490037 00000 n -0000490102 00000 n -0000490167 00000 n -0000490230 00000 n -0000492896 00000 n -0000496489 00000 n -0000492723 00000 n -0000490471 00000 n -0000493054 00000 n -0000493118 00000 n -0000493183 00000 n -0000493247 00000 n -0000493312 00000 n -0000493376 00000 n -0000493441 00000 n -0000493506 00000 n -0000493571 00000 n -0000493636 00000 n -0000493701 00000 n -0000493766 00000 n -0000493831 00000 n -0000493896 00000 n -0000493960 00000 n -0000494025 00000 n -0000494090 00000 n -0000494155 00000 n -0000494220 00000 n -0000494285 00000 n -0000494350 00000 n -0000494415 00000 n -0000494480 00000 n -0000494545 00000 n -0000494610 00000 n -0000494675 00000 n -0000494740 00000 n -0000494805 00000 n -0000494870 00000 n -0000494934 00000 n -0000494999 00000 n -0000495064 00000 n -0000495192 00000 n -0000495257 00000 n -0000495322 00000 n -0000495387 00000 n -0000495452 00000 n -0000495517 00000 n -0000495582 00000 n -0000495646 00000 n -0000495711 00000 n -0000495776 00000 n -0000495841 00000 n -0000495906 00000 n -0000495971 00000 n -0000496036 00000 n -0000496101 00000 n -0000496166 00000 n -0000496230 00000 n -0000496295 00000 n -0000496360 00000 n -0000496425 00000 n -0000492865 00000 n -0000503133 00000 n -0000498857 00000 n -0000496718 00000 n -0000498982 00000 n -0000499046 00000 n -0000499111 00000 n -0000499175 00000 n -0000499240 00000 n -0000499305 00000 n -0000499370 00000 n -0000499435 00000 n -0000499500 00000 n -0000499565 00000 n -0000499630 00000 n -0000499695 00000 n -0000499759 00000 n -0000499824 00000 n -0000499889 00000 n -0000499954 00000 n -0000500019 00000 n -0000500084 00000 n -0000500149 00000 n -0000500214 00000 n -0000500279 00000 n -0000500343 00000 n -0000500408 00000 n -0000500473 00000 n -0000500538 00000 n -0000500603 00000 n -0000500668 00000 n -0000500733 00000 n -0000500798 00000 n -0000500863 00000 n -0000500927 00000 n -0000500992 00000 n -0000501057 00000 n -0000501122 00000 n -0000501187 00000 n -0000501252 00000 n -0000501317 00000 n -0000501382 00000 n -0000501447 00000 n -0000501511 00000 n -0000501576 00000 n -0000501641 00000 n -0000501706 00000 n -0000501771 00000 n -0000501836 00000 n -0000501901 00000 n -0000501966 00000 n -0000502031 00000 n -0000502095 00000 n -0000502160 00000 n -0000502225 00000 n -0000502290 00000 n -0000502355 00000 n -0000502420 00000 n -0000502485 00000 n -0000502550 00000 n -0000502615 00000 n -0000502679 00000 n -0000502744 00000 n -0000502809 00000 n -0000502874 00000 n -0000502939 00000 n -0000503004 00000 n -0000503069 00000 n -0000509337 00000 n -0000505841 00000 n -0000503284 00000 n -0000505966 00000 n -0000506030 00000 n -0000506095 00000 n -0000506159 00000 n -0000506224 00000 n -0000506289 00000 n -0000506354 00000 n -0000506419 00000 n -0000506484 00000 n -0000506549 00000 n -0000506614 00000 n -0000506679 00000 n -0000506743 00000 n -0000506808 00000 n -0000506873 00000 n -0000506938 00000 n -0000507003 00000 n -0000507068 00000 n -0000507133 00000 n -0000507197 00000 n -0000507262 00000 n -0000507327 00000 n -0000507392 00000 n -0000507457 00000 n -0000507522 00000 n -0000507587 00000 n -0000507652 00000 n -0000507717 00000 n -0000507781 00000 n -0000507846 00000 n -0000507911 00000 n -0000507976 00000 n -0000508040 00000 n -0000508105 00000 n -0000508170 00000 n -0000508235 00000 n -0000508300 00000 n -0000508365 00000 n -0000508430 00000 n -0000508495 00000 n -0000508560 00000 n -0000508625 00000 n -0000508690 00000 n -0000508755 00000 n -0000508820 00000 n -0000508885 00000 n -0000508950 00000 n -0000509015 00000 n -0000509079 00000 n -0000509144 00000 n -0000509209 00000 n -0000509273 00000 n -0000877698 00000 n -0000514600 00000 n -0000512014 00000 n -0000509501 00000 n -0000512139 00000 n -0000512203 00000 n -0000512268 00000 n -0000512332 00000 n -0000512397 00000 n -0000512462 00000 n -0000512590 00000 n -0000512655 00000 n -0000512720 00000 n -0000512785 00000 n -0000512850 00000 n -0000512915 00000 n -0000512979 00000 n -0000513044 00000 n -0000513109 00000 n -0000513237 00000 n -0000513302 00000 n -0000513367 00000 n -0000513432 00000 n -0000513497 00000 n -0000513562 00000 n -0000513626 00000 n -0000513691 00000 n -0000513756 00000 n -0000513821 00000 n -0000513886 00000 n -0000513951 00000 n -0000514016 00000 n -0000514080 00000 n -0000514145 00000 n -0000514210 00000 n -0000514275 00000 n -0000514340 00000 n -0000514405 00000 n -0000514470 00000 n -0000514535 00000 n -0000520527 00000 n -0000517292 00000 n -0000514803 00000 n -0000517417 00000 n -0000517481 00000 n -0000517546 00000 n -0000517611 00000 n -0000517676 00000 n -0000517741 00000 n -0000517806 00000 n -0000517871 00000 n -0000517936 00000 n -0000518001 00000 n -0000518066 00000 n -0000518130 00000 n -0000518195 00000 n -0000518260 00000 n -0000518325 00000 n -0000518390 00000 n -0000518454 00000 n -0000518519 00000 n -0000518584 00000 n -0000518649 00000 n -0000518714 00000 n -0000518779 00000 n -0000518844 00000 n -0000518909 00000 n -0000518974 00000 n -0000519037 00000 n -0000519102 00000 n -0000519167 00000 n -0000519232 00000 n -0000519297 00000 n -0000519362 00000 n -0000519427 00000 n -0000519492 00000 n -0000519557 00000 n -0000519622 00000 n -0000519686 00000 n -0000519751 00000 n -0000519816 00000 n -0000519881 00000 n -0000519946 00000 n -0000520011 00000 n -0000520076 00000 n -0000520141 00000 n -0000520206 00000 n -0000520271 00000 n -0000520336 00000 n -0000520401 00000 n -0000520465 00000 n -0000526160 00000 n -0000523252 00000 n -0000520717 00000 n -0000523377 00000 n -0000523441 00000 n -0000523506 00000 n -0000523571 00000 n -0000523636 00000 n -0000523700 00000 n -0000523765 00000 n -0000523830 00000 n -0000523895 00000 n -0000523960 00000 n -0000524025 00000 n -0000524090 00000 n -0000524155 00000 n -0000524219 00000 n -0000524284 00000 n -0000524349 00000 n -0000524414 00000 n -0000524479 00000 n -0000524544 00000 n -0000524609 00000 n -0000524674 00000 n -0000524739 00000 n -0000524804 00000 n -0000524868 00000 n -0000524933 00000 n -0000525060 00000 n -0000525123 00000 n -0000525188 00000 n -0000525253 00000 n -0000525318 00000 n -0000525383 00000 n -0000525448 00000 n -0000525513 00000 n -0000525578 00000 n -0000525643 00000 n -0000525708 00000 n -0000525772 00000 n -0000525837 00000 n -0000525902 00000 n -0000525967 00000 n -0000526032 00000 n -0000526097 00000 n -0000532145 00000 n -0000528781 00000 n +0000471737 00000 n +0000469540 00000 n +0000467172 00000 n +0000469665 00000 n +0000469729 00000 n +0000469793 00000 n +0000469858 00000 n +0000469923 00000 n +0000469988 00000 n +0000470053 00000 n +0000470118 00000 n +0000470183 00000 n +0000470247 00000 n +0000470312 00000 n +0000470377 00000 n +0000470441 00000 n +0000470506 00000 n +0000470571 00000 n +0000470636 00000 n +0000470701 00000 n +0000470764 00000 n +0000470829 00000 n +0000470894 00000 n +0000470959 00000 n +0000471024 00000 n +0000471088 00000 n +0000471153 00000 n +0000471218 00000 n +0000471283 00000 n +0000471348 00000 n +0000471413 00000 n +0000471478 00000 n +0000471542 00000 n +0000471607 00000 n +0000471672 00000 n +0000477283 00000 n +0000473787 00000 n +0000471927 00000 n +0000473912 00000 n +0000473976 00000 n +0000474041 00000 n +0000474106 00000 n +0000474171 00000 n +0000474236 00000 n +0000474301 00000 n +0000474366 00000 n +0000474431 00000 n +0000474496 00000 n +0000474560 00000 n +0000474625 00000 n +0000474690 00000 n +0000474755 00000 n +0000474820 00000 n +0000474885 00000 n +0000474950 00000 n +0000475014 00000 n +0000475079 00000 n +0000475143 00000 n +0000475208 00000 n +0000475273 00000 n +0000475338 00000 n +0000475403 00000 n +0000475468 00000 n +0000475533 00000 n +0000475597 00000 n +0000475662 00000 n +0000475727 00000 n +0000475792 00000 n +0000475857 00000 n +0000475921 00000 n +0000475986 00000 n +0000476051 00000 n +0000476116 00000 n +0000476181 00000 n +0000476246 00000 n +0000476311 00000 n +0000476376 00000 n +0000476441 00000 n +0000476505 00000 n +0000476570 00000 n +0000476635 00000 n +0000476700 00000 n +0000476765 00000 n +0000476830 00000 n +0000476895 00000 n +0000476959 00000 n +0000477024 00000 n +0000477089 00000 n +0000477154 00000 n +0000477219 00000 n +0000483217 00000 n +0000479784 00000 n +0000477473 00000 n +0000479909 00000 n +0000479973 00000 n +0000480038 00000 n +0000480103 00000 n +0000480168 00000 n +0000480233 00000 n +0000480298 00000 n +0000480363 00000 n +0000480428 00000 n +0000480493 00000 n +0000480558 00000 n +0000480623 00000 n +0000480688 00000 n +0000480753 00000 n +0000480818 00000 n +0000480883 00000 n +0000480948 00000 n +0000481012 00000 n +0000481077 00000 n +0000481142 00000 n +0000481207 00000 n +0000481272 00000 n +0000481337 00000 n +0000481401 00000 n +0000481466 00000 n +0000481531 00000 n +0000481596 00000 n +0000481661 00000 n +0000481726 00000 n +0000481790 00000 n +0000481855 00000 n +0000481920 00000 n +0000481985 00000 n +0000482050 00000 n +0000482115 00000 n +0000482180 00000 n +0000482245 00000 n +0000482310 00000 n +0000482375 00000 n +0000482440 00000 n +0000482505 00000 n +0000482570 00000 n +0000482635 00000 n +0000482700 00000 n +0000482765 00000 n +0000482830 00000 n +0000482895 00000 n +0000482959 00000 n +0000483024 00000 n +0000483089 00000 n +0000483153 00000 n +0000489273 00000 n +0000485128 00000 n +0000483407 00000 n +0000485253 00000 n +0000485317 00000 n +0000485382 00000 n +0000485447 00000 n +0000485512 00000 n +0000485577 00000 n +0000485642 00000 n +0000485707 00000 n +0000485772 00000 n +0000485837 00000 n +0000485901 00000 n +0000485966 00000 n +0000486031 00000 n +0000486096 00000 n +0000486161 00000 n +0000486226 00000 n +0000486291 00000 n +0000486356 00000 n +0000486421 00000 n +0000486485 00000 n +0000486550 00000 n +0000486615 00000 n +0000486679 00000 n +0000486744 00000 n +0000486809 00000 n +0000486874 00000 n +0000486939 00000 n +0000487004 00000 n +0000487068 00000 n +0000487133 00000 n +0000487198 00000 n +0000487263 00000 n +0000487328 00000 n +0000487393 00000 n +0000487458 00000 n +0000487523 00000 n +0000487588 00000 n +0000487652 00000 n +0000487717 00000 n +0000487782 00000 n +0000487847 00000 n +0000487912 00000 n +0000487977 00000 n +0000488042 00000 n +0000488107 00000 n +0000488172 00000 n +0000488236 00000 n +0000488301 00000 n +0000488366 00000 n +0000488431 00000 n +0000488496 00000 n +0000488561 00000 n +0000488626 00000 n +0000488691 00000 n +0000488756 00000 n +0000488820 00000 n +0000488885 00000 n +0000488950 00000 n +0000489015 00000 n +0000489080 00000 n +0000489145 00000 n +0000489209 00000 n +0000494922 00000 n +0000491297 00000 n +0000489463 00000 n +0000491422 00000 n +0000491486 00000 n +0000491551 00000 n +0000491615 00000 n +0000491679 00000 n +0000491744 00000 n +0000491809 00000 n +0000491874 00000 n +0000491939 00000 n +0000492004 00000 n +0000492069 00000 n +0000492134 00000 n +0000492197 00000 n +0000492262 00000 n +0000492327 00000 n +0000492392 00000 n +0000492457 00000 n +0000492522 00000 n +0000492587 00000 n +0000492652 00000 n +0000492717 00000 n +0000492781 00000 n +0000492846 00000 n +0000492911 00000 n +0000492975 00000 n +0000493039 00000 n +0000493104 00000 n +0000493169 00000 n +0000493234 00000 n +0000493299 00000 n +0000493364 00000 n +0000493429 00000 n +0000493494 00000 n +0000493559 00000 n +0000493623 00000 n +0000493688 00000 n +0000493753 00000 n +0000493818 00000 n +0000493883 00000 n +0000493948 00000 n +0000494013 00000 n +0000494078 00000 n +0000494143 00000 n +0000494208 00000 n +0000494273 00000 n +0000494338 00000 n +0000494402 00000 n +0000494467 00000 n +0000494532 00000 n +0000494597 00000 n +0000494662 00000 n +0000494727 00000 n +0000494792 00000 n +0000494857 00000 n +0000500826 00000 n +0000497656 00000 n +0000495099 00000 n +0000497781 00000 n +0000497845 00000 n +0000497910 00000 n +0000497974 00000 n +0000498039 00000 n +0000498104 00000 n +0000498169 00000 n +0000498234 00000 n +0000498298 00000 n +0000498363 00000 n +0000498428 00000 n +0000498493 00000 n +0000498558 00000 n +0000498623 00000 n +0000498688 00000 n +0000498753 00000 n +0000498818 00000 n +0000498882 00000 n +0000498947 00000 n +0000499075 00000 n +0000499140 00000 n +0000499205 00000 n +0000499270 00000 n +0000499335 00000 n +0000499400 00000 n +0000499464 00000 n +0000499529 00000 n +0000499594 00000 n +0000499659 00000 n +0000499724 00000 n +0000499789 00000 n +0000499854 00000 n +0000499919 00000 n +0000499984 00000 n +0000500048 00000 n +0000500113 00000 n +0000500178 00000 n +0000500243 00000 n +0000500308 00000 n +0000500373 00000 n +0000500438 00000 n +0000500503 00000 n +0000500568 00000 n +0000500633 00000 n +0000500698 00000 n +0000500762 00000 n +0000505576 00000 n +0000503314 00000 n +0000501016 00000 n +0000503439 00000 n +0000503503 00000 n +0000503568 00000 n +0000503632 00000 n +0000503697 00000 n +0000503762 00000 n +0000503827 00000 n +0000503892 00000 n +0000503957 00000 n +0000504022 00000 n +0000504087 00000 n +0000504152 00000 n +0000504216 00000 n +0000504281 00000 n +0000504346 00000 n +0000504410 00000 n +0000504475 00000 n +0000504540 00000 n +0000504605 00000 n +0000504670 00000 n +0000504735 00000 n +0000504800 00000 n +0000504865 00000 n +0000504928 00000 n +0000504993 00000 n +0000505058 00000 n +0000505123 00000 n +0000505187 00000 n +0000505252 00000 n +0000505317 00000 n +0000505382 00000 n +0000505447 00000 n +0000505511 00000 n +0000508304 00000 n +0000511768 00000 n +0000508131 00000 n +0000505805 00000 n +0000508462 00000 n +0000508526 00000 n +0000508590 00000 n +0000508655 00000 n +0000508720 00000 n +0000508784 00000 n +0000508849 00000 n +0000508914 00000 n +0000508979 00000 n +0000509044 00000 n +0000509109 00000 n +0000509174 00000 n +0000509239 00000 n +0000509304 00000 n +0000509368 00000 n +0000509433 00000 n +0000509498 00000 n +0000509563 00000 n +0000509628 00000 n +0000509693 00000 n +0000509758 00000 n +0000509823 00000 n +0000509887 00000 n +0000509952 00000 n +0000510017 00000 n +0000510082 00000 n +0000510147 00000 n +0000510212 00000 n +0000510277 00000 n +0000510342 00000 n +0000510407 00000 n +0000510471 00000 n +0000510536 00000 n +0000510601 00000 n +0000510666 00000 n +0000510731 00000 n +0000510796 00000 n +0000510861 00000 n +0000510926 00000 n +0000510991 00000 n +0000511056 00000 n +0000511121 00000 n +0000511186 00000 n +0000511251 00000 n +0000511316 00000 n +0000511381 00000 n +0000511446 00000 n +0000511511 00000 n +0000511576 00000 n +0000511639 00000 n +0000511704 00000 n +0000897524 00000 n +0000508273 00000 n +0000517642 00000 n +0000514859 00000 n +0000512010 00000 n +0000514984 00000 n +0000515048 00000 n +0000515176 00000 n +0000515241 00000 n +0000515306 00000 n +0000515371 00000 n +0000515436 00000 n +0000515501 00000 n +0000515566 00000 n +0000515631 00000 n +0000515696 00000 n +0000515761 00000 n +0000515826 00000 n +0000515891 00000 n +0000515955 00000 n +0000516020 00000 n +0000516085 00000 n +0000516150 00000 n +0000516215 00000 n +0000516280 00000 n +0000516345 00000 n +0000516410 00000 n +0000516475 00000 n +0000516540 00000 n +0000516605 00000 n +0000516670 00000 n +0000516735 00000 n +0000516800 00000 n +0000516865 00000 n +0000516930 00000 n +0000516995 00000 n +0000517060 00000 n +0000517125 00000 n +0000517189 00000 n +0000517254 00000 n +0000517319 00000 n +0000517384 00000 n +0000517449 00000 n +0000517514 00000 n +0000517578 00000 n +0000522776 00000 n +0000519932 00000 n +0000517819 00000 n +0000520057 00000 n +0000520121 00000 n +0000520186 00000 n +0000520251 00000 n +0000520316 00000 n +0000520380 00000 n +0000520445 00000 n +0000520510 00000 n +0000520574 00000 n +0000520639 00000 n +0000520704 00000 n +0000520769 00000 n +0000520834 00000 n +0000520899 00000 n +0000520964 00000 n +0000521029 00000 n +0000521094 00000 n +0000521158 00000 n +0000521223 00000 n +0000521288 00000 n +0000521353 00000 n +0000521418 00000 n +0000521483 00000 n +0000521547 00000 n +0000521612 00000 n +0000521676 00000 n +0000521741 00000 n +0000521805 00000 n +0000521869 00000 n +0000521934 00000 n +0000521998 00000 n +0000522062 00000 n +0000522127 00000 n +0000522192 00000 n +0000522257 00000 n +0000522322 00000 n +0000522387 00000 n +0000522452 00000 n +0000522517 00000 n +0000522582 00000 n +0000522646 00000 n +0000522711 00000 n +0000528877 00000 n +0000524735 00000 n +0000522979 00000 n +0000524860 00000 n +0000524924 00000 n +0000524988 00000 n +0000525053 00000 n +0000525117 00000 n +0000525182 00000 n +0000525247 00000 n +0000525312 00000 n +0000525377 00000 n +0000525442 00000 n +0000525507 00000 n +0000525571 00000 n +0000525636 00000 n +0000525701 00000 n +0000525766 00000 n +0000525831 00000 n +0000525896 00000 n +0000525961 00000 n +0000526026 00000 n +0000526091 00000 n +0000526155 00000 n +0000526220 00000 n +0000526285 00000 n 0000526350 00000 n -0000528906 00000 n -0000528970 00000 n -0000529035 00000 n -0000529099 00000 n -0000529164 00000 n -0000529229 00000 n -0000529294 00000 n -0000529359 00000 n -0000529424 00000 n -0000529489 00000 n -0000529554 00000 n -0000529619 00000 n -0000529683 00000 n -0000529748 00000 n -0000529813 00000 n -0000529878 00000 n -0000529943 00000 n -0000530008 00000 n -0000530073 00000 n -0000530138 00000 n -0000530203 00000 n -0000530267 00000 n -0000530332 00000 n -0000530397 00000 n -0000530462 00000 n -0000530527 00000 n -0000530592 00000 n -0000530657 00000 n -0000530722 00000 n -0000530787 00000 n -0000530852 00000 n -0000530917 00000 n -0000530982 00000 n -0000531047 00000 n -0000531112 00000 n -0000531177 00000 n -0000531242 00000 n -0000531307 00000 n -0000531372 00000 n -0000531437 00000 n -0000531500 00000 n -0000531565 00000 n -0000531693 00000 n -0000531758 00000 n -0000531822 00000 n -0000531887 00000 n -0000531952 00000 n -0000532017 00000 n -0000532082 00000 n -0000538050 00000 n -0000535334 00000 n -0000532335 00000 n -0000535459 00000 n -0000535523 00000 n -0000535588 00000 n -0000535652 00000 n -0000535717 00000 n -0000535781 00000 n -0000535846 00000 n -0000535911 00000 n -0000535976 00000 n -0000536040 00000 n -0000536105 00000 n -0000536170 00000 n -0000536235 00000 n -0000536300 00000 n -0000536365 00000 n -0000536430 00000 n -0000536495 00000 n -0000536559 00000 n -0000536624 00000 n -0000536689 00000 n -0000536754 00000 n -0000536818 00000 n -0000536883 00000 n -0000536948 00000 n -0000537013 00000 n -0000537078 00000 n -0000537143 00000 n -0000537208 00000 n -0000537273 00000 n -0000537338 00000 n -0000537403 00000 n -0000537468 00000 n -0000537533 00000 n -0000537598 00000 n -0000537663 00000 n -0000537728 00000 n -0000537793 00000 n -0000537857 00000 n -0000537922 00000 n -0000537986 00000 n -0000544459 00000 n -0000540898 00000 n -0000538253 00000 n -0000541023 00000 n -0000541087 00000 n -0000541152 00000 n -0000541217 00000 n -0000541281 00000 n -0000541346 00000 n -0000541411 00000 n -0000541476 00000 n -0000541541 00000 n -0000541606 00000 n -0000541671 00000 n -0000541736 00000 n -0000541801 00000 n -0000541866 00000 n -0000541931 00000 n -0000541996 00000 n -0000542060 00000 n -0000542125 00000 n -0000542190 00000 n -0000542255 00000 n -0000542320 00000 n -0000542385 00000 n -0000542450 00000 n -0000542515 00000 n -0000542580 00000 n -0000542644 00000 n -0000542709 00000 n -0000542774 00000 n -0000542839 00000 n -0000542904 00000 n -0000542969 00000 n -0000543034 00000 n -0000543099 00000 n -0000543164 00000 n -0000543229 00000 n -0000543294 00000 n -0000543359 00000 n -0000543424 00000 n -0000543489 00000 n -0000543554 00000 n -0000543619 00000 n -0000543684 00000 n -0000543749 00000 n -0000543814 00000 n -0000543879 00000 n -0000543944 00000 n -0000544008 00000 n -0000544073 00000 n -0000544138 00000 n -0000544203 00000 n -0000544268 00000 n -0000544333 00000 n -0000544397 00000 n -0000550898 00000 n -0000547725 00000 n -0000544649 00000 n -0000547850 00000 n -0000547914 00000 n -0000547979 00000 n -0000548043 00000 n -0000548108 00000 n -0000548173 00000 n -0000548238 00000 n -0000548303 00000 n -0000548368 00000 n -0000548433 00000 n -0000548498 00000 n -0000548563 00000 n -0000548628 00000 n -0000548693 00000 n -0000548758 00000 n -0000548822 00000 n -0000548887 00000 n -0000548952 00000 n -0000549017 00000 n -0000549081 00000 n -0000549146 00000 n -0000549211 00000 n -0000549276 00000 n -0000549341 00000 n -0000549406 00000 n -0000549471 00000 n -0000549536 00000 n -0000549600 00000 n -0000549665 00000 n -0000549730 00000 n -0000549795 00000 n -0000549860 00000 n -0000549925 00000 n -0000549990 00000 n -0000550055 00000 n -0000550120 00000 n -0000550185 00000 n -0000550250 00000 n -0000550315 00000 n -0000550380 00000 n -0000550445 00000 n -0000550510 00000 n -0000550575 00000 n -0000550640 00000 n -0000550705 00000 n -0000550770 00000 n -0000550834 00000 n -0000557042 00000 n -0000553612 00000 n -0000551101 00000 n -0000553737 00000 n -0000553801 00000 n -0000553866 00000 n -0000553930 00000 n -0000553995 00000 n -0000554060 00000 n -0000554125 00000 n -0000554189 00000 n -0000554254 00000 n -0000554319 00000 n -0000554384 00000 n -0000554449 00000 n -0000554514 00000 n -0000554579 00000 n -0000554644 00000 n -0000554709 00000 n -0000554774 00000 n -0000554838 00000 n -0000554903 00000 n -0000554968 00000 n -0000555033 00000 n -0000555098 00000 n -0000555163 00000 n -0000555226 00000 n -0000555291 00000 n -0000555355 00000 n -0000555420 00000 n -0000555485 00000 n -0000555550 00000 n -0000555615 00000 n -0000555680 00000 n -0000555745 00000 n -0000555810 00000 n -0000555875 00000 n -0000555940 00000 n -0000556005 00000 n -0000556069 00000 n -0000556134 00000 n -0000556199 00000 n -0000556264 00000 n -0000556329 00000 n -0000556394 00000 n -0000556459 00000 n -0000556524 00000 n -0000556589 00000 n -0000556654 00000 n -0000556719 00000 n -0000556784 00000 n -0000556849 00000 n -0000556914 00000 n -0000556978 00000 n -0000563537 00000 n -0000559327 00000 n -0000557245 00000 n -0000559452 00000 n -0000559516 00000 n -0000559581 00000 n -0000559645 00000 n -0000559710 00000 n -0000559775 00000 n -0000559840 00000 n -0000559905 00000 n -0000559970 00000 n -0000560035 00000 n -0000560100 00000 n -0000560165 00000 n -0000560229 00000 n -0000560294 00000 n -0000560359 00000 n -0000560424 00000 n -0000560489 00000 n -0000560554 00000 n -0000560619 00000 n -0000560684 00000 n -0000560749 00000 n -0000560813 00000 n -0000560878 00000 n -0000560943 00000 n -0000561008 00000 n -0000561073 00000 n -0000561138 00000 n -0000561203 00000 n -0000561268 00000 n -0000561333 00000 n -0000561397 00000 n -0000561462 00000 n -0000561527 00000 n -0000561592 00000 n -0000561657 00000 n -0000561722 00000 n -0000561787 00000 n -0000561852 00000 n -0000561917 00000 n -0000561981 00000 n -0000562046 00000 n -0000562111 00000 n -0000562176 00000 n -0000562241 00000 n -0000562306 00000 n -0000562371 00000 n -0000562436 00000 n -0000562501 00000 n -0000562566 00000 n -0000562631 00000 n -0000562696 00000 n -0000562760 00000 n -0000562825 00000 n -0000562890 00000 n -0000562955 00000 n -0000563020 00000 n -0000563085 00000 n -0000563150 00000 n -0000563215 00000 n -0000563280 00000 n -0000563344 00000 n -0000563409 00000 n -0000563473 00000 n -0000569442 00000 n -0000565879 00000 n -0000563701 00000 n -0000566004 00000 n -0000566068 00000 n -0000566133 00000 n -0000566197 00000 n -0000566262 00000 n -0000566327 00000 n -0000566392 00000 n -0000566457 00000 n -0000566522 00000 n -0000566587 00000 n -0000566652 00000 n -0000566717 00000 n -0000566781 00000 n -0000566846 00000 n -0000566911 00000 n -0000566976 00000 n -0000567041 00000 n -0000567106 00000 n -0000567171 00000 n -0000567236 00000 n -0000567301 00000 n -0000567365 00000 n -0000567430 00000 n -0000567495 00000 n -0000567560 00000 n -0000567625 00000 n -0000567690 00000 n -0000567754 00000 n -0000567819 00000 n -0000567884 00000 n -0000567949 00000 n -0000568014 00000 n -0000568079 00000 n -0000568144 00000 n -0000568209 00000 n -0000568274 00000 n -0000568339 00000 n -0000568404 00000 n -0000568469 00000 n -0000568534 00000 n -0000568599 00000 n -0000568664 00000 n -0000568729 00000 n -0000568794 00000 n -0000568858 00000 n -0000568923 00000 n -0000568988 00000 n -0000569053 00000 n -0000569118 00000 n -0000569183 00000 n -0000569248 00000 n -0000569313 00000 n -0000569378 00000 n -0000877862 00000 n -0000575287 00000 n -0000571920 00000 n -0000569619 00000 n -0000572045 00000 n -0000572109 00000 n -0000572174 00000 n -0000572239 00000 n -0000572304 00000 n -0000572369 00000 n -0000572434 00000 n -0000572499 00000 n -0000572564 00000 n -0000572629 00000 n -0000572693 00000 n -0000572758 00000 n -0000572823 00000 n -0000572888 00000 n -0000572953 00000 n -0000573018 00000 n -0000573083 00000 n -0000573148 00000 n -0000573213 00000 n -0000573277 00000 n -0000573342 00000 n -0000573407 00000 n -0000573472 00000 n -0000573537 00000 n -0000573602 00000 n -0000573667 00000 n -0000573732 00000 n -0000573797 00000 n -0000573861 00000 n -0000573926 00000 n -0000573991 00000 n -0000574056 00000 n -0000574121 00000 n -0000574186 00000 n -0000574251 00000 n -0000574316 00000 n -0000574381 00000 n -0000574445 00000 n -0000574510 00000 n -0000574575 00000 n -0000574640 00000 n -0000574705 00000 n -0000574770 00000 n -0000574835 00000 n -0000574900 00000 n -0000574965 00000 n -0000575029 00000 n -0000575094 00000 n -0000575159 00000 n -0000578611 00000 n +0000526415 00000 n +0000526480 00000 n +0000526545 00000 n +0000526610 00000 n +0000526675 00000 n +0000526739 00000 n +0000526804 00000 n +0000526869 00000 n +0000526934 00000 n +0000526999 00000 n +0000527064 00000 n +0000527129 00000 n +0000527194 00000 n +0000527259 00000 n +0000527323 00000 n +0000527388 00000 n +0000527453 00000 n +0000527518 00000 n +0000527583 00000 n +0000527648 00000 n +0000527713 00000 n +0000527777 00000 n +0000527842 00000 n +0000527907 00000 n +0000527972 00000 n +0000528035 00000 n +0000528100 00000 n +0000528165 00000 n +0000528230 00000 n +0000528295 00000 n +0000528360 00000 n +0000528425 00000 n +0000528490 00000 n +0000528555 00000 n +0000528619 00000 n +0000528684 00000 n +0000528749 00000 n +0000528813 00000 n +0000531590 00000 n +0000534663 00000 n +0000531417 00000 n +0000529041 00000 n +0000531748 00000 n +0000531812 00000 n +0000531877 00000 n +0000531942 00000 n +0000532007 00000 n +0000532072 00000 n +0000532137 00000 n +0000532202 00000 n +0000532267 00000 n +0000532332 00000 n +0000532397 00000 n +0000532462 00000 n +0000532527 00000 n +0000532591 00000 n +0000532718 00000 n +0000532782 00000 n +0000532847 00000 n +0000532911 00000 n +0000532976 00000 n +0000533041 00000 n +0000533106 00000 n +0000533171 00000 n +0000533236 00000 n +0000533301 00000 n +0000533366 00000 n +0000533431 00000 n +0000533495 00000 n +0000533560 00000 n +0000533625 00000 n +0000533690 00000 n +0000533755 00000 n +0000533820 00000 n +0000533885 00000 n +0000533950 00000 n +0000534015 00000 n +0000534080 00000 n +0000534145 00000 n +0000534210 00000 n +0000534275 00000 n +0000534340 00000 n +0000534404 00000 n +0000534469 00000 n +0000534534 00000 n +0000534599 00000 n +0000531559 00000 n +0000540413 00000 n +0000536983 00000 n +0000534905 00000 n +0000537108 00000 n +0000537172 00000 n +0000537237 00000 n +0000537301 00000 n +0000537366 00000 n +0000537431 00000 n +0000537496 00000 n +0000537561 00000 n +0000537626 00000 n +0000537691 00000 n +0000537756 00000 n +0000537821 00000 n +0000537885 00000 n +0000537950 00000 n +0000538015 00000 n +0000538080 00000 n +0000538145 00000 n +0000538210 00000 n +0000538275 00000 n +0000538340 00000 n +0000538405 00000 n +0000538470 00000 n +0000538535 00000 n +0000538599 00000 n +0000538664 00000 n +0000538729 00000 n +0000538794 00000 n +0000538859 00000 n +0000538924 00000 n +0000538989 00000 n +0000539054 00000 n +0000539119 00000 n +0000539247 00000 n +0000539312 00000 n +0000539377 00000 n +0000539442 00000 n +0000539507 00000 n +0000539572 00000 n +0000539637 00000 n +0000539701 00000 n +0000539766 00000 n +0000539831 00000 n +0000539896 00000 n +0000539961 00000 n +0000540026 00000 n +0000540091 00000 n +0000540155 00000 n +0000540220 00000 n +0000540285 00000 n +0000540349 00000 n +0000546022 00000 n +0000542853 00000 n +0000540590 00000 n +0000542978 00000 n +0000543042 00000 n +0000543107 00000 n +0000543171 00000 n +0000543236 00000 n +0000543301 00000 n +0000543366 00000 n +0000543431 00000 n +0000543496 00000 n +0000543561 00000 n +0000543626 00000 n +0000543691 00000 n +0000543755 00000 n +0000543820 00000 n +0000543885 00000 n +0000543950 00000 n +0000544015 00000 n +0000544080 00000 n +0000544145 00000 n +0000544209 00000 n +0000544274 00000 n +0000544339 00000 n +0000544404 00000 n +0000544469 00000 n +0000544534 00000 n +0000544662 00000 n +0000544726 00000 n +0000544791 00000 n +0000544856 00000 n +0000544921 00000 n +0000544986 00000 n +0000545050 00000 n +0000545115 00000 n +0000545180 00000 n +0000545245 00000 n +0000545310 00000 n +0000545375 00000 n +0000545440 00000 n +0000545505 00000 n +0000545570 00000 n +0000545634 00000 n +0000545699 00000 n +0000545764 00000 n +0000545829 00000 n +0000545894 00000 n +0000545958 00000 n +0000552131 00000 n +0000548894 00000 n +0000546225 00000 n +0000549019 00000 n +0000549083 00000 n +0000549148 00000 n +0000549213 00000 n +0000549278 00000 n +0000549343 00000 n +0000549407 00000 n +0000549472 00000 n +0000549537 00000 n +0000549602 00000 n +0000549667 00000 n +0000549732 00000 n +0000549797 00000 n +0000549862 00000 n +0000549927 00000 n +0000549991 00000 n +0000550056 00000 n +0000550121 00000 n +0000550186 00000 n +0000550251 00000 n +0000550316 00000 n +0000550381 00000 n +0000550446 00000 n +0000550511 00000 n +0000550576 00000 n +0000550641 00000 n +0000550706 00000 n +0000550771 00000 n +0000550836 00000 n +0000550901 00000 n +0000550966 00000 n +0000551030 00000 n +0000551095 00000 n +0000551160 00000 n +0000551225 00000 n +0000551290 00000 n +0000551355 00000 n +0000551420 00000 n +0000551485 00000 n +0000551550 00000 n +0000551614 00000 n +0000551679 00000 n +0000551744 00000 n +0000551809 00000 n +0000551873 00000 n +0000551938 00000 n +0000552003 00000 n +0000552067 00000 n +0000557324 00000 n +0000554868 00000 n +0000552295 00000 n +0000554993 00000 n +0000555120 00000 n +0000555184 00000 n +0000555249 00000 n +0000555314 00000 n +0000555379 00000 n +0000555444 00000 n +0000555509 00000 n +0000555574 00000 n +0000555639 00000 n +0000555703 00000 n +0000555768 00000 n +0000555833 00000 n +0000555961 00000 n +0000556026 00000 n +0000556091 00000 n +0000556156 00000 n +0000556221 00000 n +0000556286 00000 n +0000556350 00000 n +0000556415 00000 n +0000556480 00000 n +0000556545 00000 n +0000556610 00000 n +0000556675 00000 n +0000556740 00000 n +0000556804 00000 n +0000556869 00000 n +0000556934 00000 n +0000556999 00000 n +0000557064 00000 n +0000557129 00000 n +0000557194 00000 n +0000557259 00000 n +0000563053 00000 n +0000559947 00000 n +0000557527 00000 n +0000560072 00000 n +0000560136 00000 n +0000560201 00000 n +0000560266 00000 n +0000560331 00000 n +0000560396 00000 n +0000560461 00000 n +0000560526 00000 n +0000560591 00000 n +0000560656 00000 n +0000560721 00000 n +0000560785 00000 n +0000560850 00000 n +0000560915 00000 n +0000560980 00000 n +0000561045 00000 n +0000561109 00000 n +0000561174 00000 n +0000561239 00000 n +0000561304 00000 n +0000561369 00000 n +0000561434 00000 n +0000561499 00000 n +0000561564 00000 n +0000561629 00000 n +0000561692 00000 n +0000561757 00000 n +0000561822 00000 n +0000561887 00000 n +0000561952 00000 n +0000562017 00000 n +0000562082 00000 n +0000562147 00000 n +0000562211 00000 n +0000562276 00000 n +0000562340 00000 n +0000562405 00000 n +0000562470 00000 n +0000562535 00000 n +0000562600 00000 n +0000562665 00000 n +0000562730 00000 n +0000562795 00000 n +0000562859 00000 n +0000562924 00000 n +0000562989 00000 n +0000569176 00000 n +0000565874 00000 n +0000563243 00000 n +0000565999 00000 n +0000566063 00000 n +0000566128 00000 n +0000566193 00000 n +0000566258 00000 n +0000566323 00000 n +0000566387 00000 n +0000566451 00000 n +0000566516 00000 n +0000566581 00000 n +0000566646 00000 n +0000566711 00000 n +0000566776 00000 n +0000566841 00000 n +0000566905 00000 n +0000566970 00000 n +0000567035 00000 n +0000567100 00000 n +0000567165 00000 n +0000567230 00000 n +0000567295 00000 n +0000567360 00000 n +0000567425 00000 n +0000567490 00000 n +0000567555 00000 n +0000567620 00000 n +0000567684 00000 n +0000567749 00000 n +0000567814 00000 n +0000567879 00000 n +0000567944 00000 n +0000568009 00000 n +0000568074 00000 n +0000568139 00000 n +0000568204 00000 n +0000568268 00000 n +0000568333 00000 n +0000568398 00000 n +0000568463 00000 n +0000568528 00000 n +0000568593 00000 n +0000568658 00000 n +0000568723 00000 n +0000568788 00000 n +0000568853 00000 n +0000568917 00000 n +0000568982 00000 n +0000569047 00000 n +0000569112 00000 n +0000897688 00000 n +0000574821 00000 n +0000571974 00000 n +0000569340 00000 n +0000572099 00000 n +0000572163 00000 n +0000572228 00000 n +0000572292 00000 n +0000572357 00000 n +0000572422 00000 n +0000572487 00000 n +0000572552 00000 n +0000572617 00000 n +0000572682 00000 n +0000572747 00000 n +0000572812 00000 n +0000572940 00000 n +0000573005 00000 n +0000573070 00000 n +0000573135 00000 n +0000573200 00000 n +0000573265 00000 n +0000573330 00000 n +0000573395 00000 n +0000573460 00000 n +0000573524 00000 n +0000573589 00000 n +0000573654 00000 n +0000573719 00000 n +0000573784 00000 n +0000573849 00000 n +0000573914 00000 n +0000573979 00000 n +0000574042 00000 n +0000574107 00000 n +0000574172 00000 n +0000574237 00000 n +0000574302 00000 n +0000574367 00000 n +0000574432 00000 n +0000574497 00000 n +0000574562 00000 n +0000574627 00000 n +0000574692 00000 n +0000574757 00000 n +0000580375 00000 n +0000577528 00000 n +0000575011 00000 n +0000577653 00000 n +0000577717 00000 n 0000577782 00000 n -0000575531 00000 n -0000577907 00000 n -0000577971 00000 n -0000578035 00000 n -0000578099 00000 n -0000578163 00000 n -0000578227 00000 n -0000578291 00000 n -0000578355 00000 n -0000578419 00000 n -0000578483 00000 n -0000578547 00000 n -0000583005 00000 n -0000583160 00000 n -0000583315 00000 n -0000583471 00000 n -0000583630 00000 n -0000583791 00000 n -0000583952 00000 n -0000584112 00000 n -0000584268 00000 n -0000584429 00000 n -0000584590 00000 n -0000584757 00000 n -0000584924 00000 n -0000585090 00000 n -0000585251 00000 n -0000594578 00000 n -0000585979 00000 n -0000582706 00000 n -0000578788 00000 n -0000585405 00000 n -0000585469 00000 n -0000585533 00000 n -0000585597 00000 n -0000585661 00000 n -0000585725 00000 n -0000585789 00000 n -0000585916 00000 n -0000582848 00000 n -0000594734 00000 n -0000594894 00000 n -0000595061 00000 n -0000595227 00000 n -0000595387 00000 n -0000595553 00000 n -0000595719 00000 n -0000595880 00000 n -0000596040 00000 n -0000596207 00000 n -0000596373 00000 n -0000596540 00000 n -0000596706 00000 n -0000596873 00000 n -0000597033 00000 n -0000597199 00000 n -0000597366 00000 n -0000597533 00000 n -0000597693 00000 n -0000597854 00000 n -0000598010 00000 n -0000598166 00000 n -0000598326 00000 n -0000598487 00000 n -0000598647 00000 n -0000598808 00000 n -0000598968 00000 n -0000599124 00000 n -0000599284 00000 n -0000599445 00000 n -0000599606 00000 n -0000599767 00000 n -0000599928 00000 n -0000600089 00000 n -0000600246 00000 n +0000577846 00000 n +0000577911 00000 n +0000577976 00000 n +0000578041 00000 n +0000578106 00000 n +0000578171 00000 n +0000578236 00000 n +0000578301 00000 n +0000578366 00000 n +0000578431 00000 n +0000578496 00000 n +0000578561 00000 n +0000578626 00000 n +0000578691 00000 n +0000578756 00000 n +0000578820 00000 n +0000578885 00000 n +0000578950 00000 n +0000579015 00000 n +0000579080 00000 n +0000579145 00000 n +0000579210 00000 n +0000579275 00000 n +0000579340 00000 n +0000579404 00000 n +0000579469 00000 n +0000579534 00000 n +0000579599 00000 n +0000579664 00000 n +0000579729 00000 n +0000579794 00000 n +0000579859 00000 n +0000579924 00000 n +0000579988 00000 n +0000580053 00000 n +0000580118 00000 n +0000580183 00000 n +0000580311 00000 n +0000586364 00000 n +0000582933 00000 n +0000580565 00000 n +0000583058 00000 n +0000583122 00000 n +0000583187 00000 n +0000583252 00000 n +0000583317 00000 n +0000583381 00000 n +0000583446 00000 n +0000583511 00000 n +0000583576 00000 n +0000583641 00000 n +0000583706 00000 n +0000583771 00000 n +0000583836 00000 n +0000583901 00000 n +0000583966 00000 n +0000584031 00000 n +0000584095 00000 n +0000584160 00000 n +0000584225 00000 n +0000584290 00000 n +0000584355 00000 n +0000584420 00000 n +0000584485 00000 n +0000584550 00000 n +0000584615 00000 n +0000584679 00000 n +0000584743 00000 n +0000584808 00000 n +0000584873 00000 n +0000584938 00000 n +0000585003 00000 n +0000585068 00000 n +0000585133 00000 n +0000585198 00000 n +0000585263 00000 n +0000585327 00000 n +0000585392 00000 n +0000585457 00000 n +0000585522 00000 n +0000585587 00000 n +0000585652 00000 n +0000585717 00000 n +0000585782 00000 n +0000585847 00000 n +0000585912 00000 n +0000585977 00000 n +0000586042 00000 n +0000586107 00000 n +0000586172 00000 n +0000586236 00000 n +0000586300 00000 n +0000591685 00000 n +0000589227 00000 n +0000586541 00000 n +0000589352 00000 n +0000589416 00000 n +0000589481 00000 n +0000589545 00000 n +0000589610 00000 n +0000589675 00000 n +0000589740 00000 n +0000589805 00000 n +0000589870 00000 n +0000589935 00000 n +0000590000 00000 n +0000590065 00000 n +0000590130 00000 n +0000590194 00000 n +0000590258 00000 n +0000590323 00000 n +0000590388 00000 n +0000590453 00000 n +0000590518 00000 n +0000590583 00000 n +0000590711 00000 n +0000590776 00000 n +0000590841 00000 n +0000590906 00000 n +0000590971 00000 n +0000591036 00000 n +0000591101 00000 n +0000591166 00000 n +0000591231 00000 n +0000591295 00000 n +0000591360 00000 n +0000591425 00000 n +0000591490 00000 n +0000591555 00000 n +0000591620 00000 n +0000597738 00000 n +0000594373 00000 n +0000591875 00000 n +0000594498 00000 n +0000594562 00000 n +0000594627 00000 n +0000594691 00000 n +0000594756 00000 n +0000594821 00000 n +0000594886 00000 n +0000594951 00000 n +0000595016 00000 n +0000595081 00000 n +0000595145 00000 n +0000595210 00000 n +0000595275 00000 n +0000595340 00000 n +0000595405 00000 n +0000595470 00000 n +0000595535 00000 n +0000595600 00000 n +0000595665 00000 n +0000595728 00000 n +0000595793 00000 n +0000595858 00000 n +0000595923 00000 n +0000595988 00000 n +0000596053 00000 n +0000596118 00000 n +0000596183 00000 n +0000596248 00000 n +0000596313 00000 n +0000596378 00000 n +0000596443 00000 n +0000596508 00000 n +0000596573 00000 n +0000596638 00000 n +0000596702 00000 n +0000596767 00000 n +0000596832 00000 n +0000596897 00000 n +0000596962 00000 n +0000597027 00000 n +0000597092 00000 n +0000597157 00000 n +0000597222 00000 n +0000597287 00000 n +0000597352 00000 n +0000597415 00000 n +0000597480 00000 n +0000597545 00000 n +0000597610 00000 n +0000597674 00000 n +0000604230 00000 n 0000600407 00000 n -0000600569 00000 n -0000600737 00000 n -0000600904 00000 n -0000601072 00000 n -0000601240 00000 n -0000601408 00000 n -0000601576 00000 n -0000601744 00000 n -0000601912 00000 n -0000602080 00000 n -0000602249 00000 n -0000602418 00000 n -0000602587 00000 n -0000602756 00000 n -0000602925 00000 n -0000603087 00000 n -0000603254 00000 n -0000603420 00000 n -0000605196 00000 n -0000603650 00000 n -0000593919 00000 n -0000586169 00000 n -0000603586 00000 n -0000594061 00000 n -0000605364 00000 n -0000605532 00000 n -0000605699 00000 n -0000605867 00000 n -0000606034 00000 n -0000606202 00000 n -0000606423 00000 n -0000604969 00000 n -0000603788 00000 n -0000606359 00000 n -0000605111 00000 n -0000873706 00000 n -0000606679 00000 n -0000873968 00000 n -0000606706 00000 n -0000873834 00000 n -0000606799 00000 n -0000607038 00000 n -0000607063 00000 n -0000619048 00000 n -0000607291 00000 n -0000607394 00000 n -0000619290 00000 n -0000620014 00000 n -0000620248 00000 n -0000633680 00000 n -0000620564 00000 n -0000620667 00000 n -0000633914 00000 n -0000634660 00000 n -0000634886 00000 n -0000645920 00000 n -0000635033 00000 n -0000635131 00000 n -0000646160 00000 n -0000646838 00000 n -0000647069 00000 n -0000648180 00000 n -0000647124 00000 n -0000647221 00000 n -0000648423 00000 n -0000649033 00000 n -0000649237 00000 n -0000649264 00000 n -0000649291 00000 n -0000651666 00000 n -0000649483 00000 n -0000649589 00000 n -0000651914 00000 n -0000652597 00000 n -0000652807 00000 n -0000662782 00000 n -0000653420 00000 n -0000653547 00000 n -0000663022 00000 n -0000664117 00000 n -0000664321 00000 n -0000666925 00000 n -0000664522 00000 n -0000664628 00000 n -0000667172 00000 n -0000667859 00000 n -0000668069 00000 n -0000669754 00000 n -0000668182 00000 n -0000668288 00000 n -0000670003 00000 n -0000670656 00000 n -0000670867 00000 n -0000676391 00000 n -0000671220 00000 n -0000671331 00000 n -0000676635 00000 n -0000677411 00000 n -0000677616 00000 n -0000685246 00000 n -0000678074 00000 n -0000678189 00000 n -0000685486 00000 n -0000686376 00000 n -0000686579 00000 n -0000687329 00000 n -0000686613 00000 n -0000686708 00000 n -0000687568 00000 n -0000688164 00000 n -0000688366 00000 n -0000694759 00000 n -0000688823 00000 n -0000688931 00000 n -0000694999 00000 n -0000695884 00000 n -0000696088 00000 n -0000698692 00000 n -0000696278 00000 n -0000696384 00000 n -0000698935 00000 n -0000699607 00000 n -0000699811 00000 n -0000701831 00000 n -0000699925 00000 n -0000700029 00000 n -0000702073 00000 n -0000702718 00000 n -0000702923 00000 n -0000705976 00000 n -0000703214 00000 n -0000703321 00000 n -0000706216 00000 n -0000706952 00000 n -0000707156 00000 n -0000714567 00000 n -0000707621 00000 n -0000707736 00000 n -0000714808 00000 n -0000715687 00000 n -0000715892 00000 n -0000715919 00000 n -0000715980 00000 n -0000716173 00000 n -0000716414 00000 n -0000716631 00000 n -0000721353 00000 n -0000716990 00000 n -0000717096 00000 n -0000721595 00000 n -0000722373 00000 n -0000722577 00000 n -0000725385 00000 n -0000722835 00000 n -0000722941 00000 n -0000725625 00000 n -0000726324 00000 n -0000726528 00000 n -0000735798 00000 n -0000727012 00000 n -0000727131 00000 n -0000736039 00000 n -0000737037 00000 n -0000737242 00000 n -0000739252 00000 n -0000737356 00000 n -0000737460 00000 n -0000739494 00000 n -0000740140 00000 n -0000740345 00000 n -0000742861 00000 n -0000740592 00000 n -0000740698 00000 n -0000743102 00000 n -0000743807 00000 n -0000744012 00000 n -0000753526 00000 n -0000744585 00000 n -0000744717 00000 n -0000753768 00000 n -0000754769 00000 n -0000754975 00000 n -0000761813 00000 n -0000755407 00000 n -0000755519 00000 n -0000762053 00000 n -0000762911 00000 n -0000763114 00000 n -0000764163 00000 n -0000763192 00000 n -0000763292 00000 n -0000764403 00000 n -0000765025 00000 n -0000765229 00000 n -0000770355 00000 n -0000765598 00000 n -0000765713 00000 n -0000770596 00000 n -0000771385 00000 n -0000771590 00000 n -0000773149 00000 n -0000771683 00000 n -0000771784 00000 n -0000773388 00000 n -0000774014 00000 n -0000774216 00000 n -0000776453 00000 n -0000774395 00000 n -0000774501 00000 n -0000776694 00000 n -0000777363 00000 n -0000777568 00000 n -0000780111 00000 n -0000777744 00000 n -0000777851 00000 n -0000780353 00000 n -0000781038 00000 n -0000781244 00000 n -0000781342 00000 n -0000782386 00000 n -0000781420 00000 n -0000781520 00000 n -0000782627 00000 n -0000783251 00000 n -0000783456 00000 n -0000785259 00000 n -0000783567 00000 n -0000783670 00000 n -0000785501 00000 n -0000786144 00000 n -0000793321 00000 n -0000786350 00000 n -0000797639 00000 n -0000793554 00000 n -0000800702 00000 n -0000797928 00000 n -0000803919 00000 n -0000800941 00000 n -0000806539 00000 n -0000804163 00000 n -0000830201 00000 n -0000806784 00000 n -0000849343 00000 n -0000830508 00000 n -0000861305 00000 n -0000849615 00000 n -0000864673 00000 n -0000861555 00000 n -0000867446 00000 n -0000864946 00000 n -0000870391 00000 n -0000867698 00000 n -0000873420 00000 n -0000870637 00000 n -0000877989 00000 n -0000878150 00000 n -0000878232 00000 n -0000878309 00000 n -0000885618 00000 n -0000886283 00000 n -0000886952 00000 n -0000887621 00000 n -0000888287 00000 n -0000888956 00000 n -0000889624 00000 n -0000890295 00000 n -0000890959 00000 n -0000891628 00000 n -0000892297 00000 n -0000892963 00000 n -0000893632 00000 n -0000894301 00000 n -0000894966 00000 n -0000895637 00000 n -0000896305 00000 n -0000896974 00000 n -0000897640 00000 n -0000898309 00000 n -0000898978 00000 n -0000899644 00000 n -0000900313 00000 n -0000900981 00000 n -0000901652 00000 n -0000902317 00000 n -0000902986 00000 n -0000903655 00000 n -0000904321 00000 n -0000904990 00000 n -0000905659 00000 n -0000906328 00000 n -0000906996 00000 n -0000907664 00000 n -0000908333 00000 n -0000908995 00000 n -0000909664 00000 n -0000910333 00000 n -0000911002 00000 n -0000911667 00000 n -0000912338 00000 n -0000913006 00000 n -0000913672 00000 n -0000914341 00000 n -0000915010 00000 n -0000915679 00000 n -0000916345 00000 n -0000917014 00000 n -0000917682 00000 n -0000918350 00000 n -0000919019 00000 n -0000919688 00000 n -0000920357 00000 n -0000921023 00000 n -0000921692 00000 n -0000922361 00000 n -0000923026 00000 n -0000923697 00000 n -0000924365 00000 n -0000925034 00000 n -0000925700 00000 n -0000926369 00000 n -0000927038 00000 n -0000927704 00000 n -0000928373 00000 n -0000929041 00000 n -0000929712 00000 n -0000930376 00000 n -0000931045 00000 n -0000931714 00000 n -0000932376 00000 n -0000933045 00000 n -0000933714 00000 n -0000934380 00000 n -0000935048 00000 n -0000935717 00000 n -0000936386 00000 n -0000937052 00000 n -0000937687 00000 n -0000938321 00000 n -0000938953 00000 n -0000939588 00000 n -0000940223 00000 n -0000940858 00000 n -0000941490 00000 n -0000942125 00000 n -0000942759 00000 n -0000943393 00000 n -0000944028 00000 n -0000944663 00000 n -0000945298 00000 n -0000945930 00000 n -0000946565 00000 n -0000947200 00000 n -0000947831 00000 n -0000948468 00000 n -0000949102 00000 n -0000949737 00000 n -0000950369 00000 n -0000951004 00000 n -0000951639 00000 n -0000952357 00000 n -0000953155 00000 n -0000953811 00000 n -0000954472 00000 n -0000955141 00000 n -0000955916 00000 n -0000956707 00000 n -0000957622 00000 n -0000958763 00000 n -0000959052 00000 n -0000959408 00000 n -0000959761 00000 n -0000960114 00000 n -0000960304 00000 n -0000960407 00000 n -0000960447 00000 n -0000960579 00000 n +0000597941 00000 n +0000600532 00000 n +0000600596 00000 n +0000600661 00000 n +0000600725 00000 n +0000600790 00000 n +0000600855 00000 n +0000600920 00000 n +0000600985 00000 n +0000601050 00000 n +0000601115 00000 n +0000601180 00000 n +0000601245 00000 n +0000601309 00000 n +0000601374 00000 n +0000601439 00000 n +0000601504 00000 n +0000601569 00000 n +0000601634 00000 n +0000601699 00000 n +0000601764 00000 n +0000601829 00000 n +0000601894 00000 n +0000601959 00000 n +0000602024 00000 n +0000602089 00000 n +0000602154 00000 n +0000602219 00000 n +0000602284 00000 n +0000602349 00000 n +0000602414 00000 n +0000602479 00000 n +0000602544 00000 n +0000602609 00000 n +0000602674 00000 n +0000602739 00000 n +0000602804 00000 n +0000602869 00000 n +0000602934 00000 n +0000602999 00000 n +0000603064 00000 n +0000603128 00000 n +0000603193 00000 n +0000603258 00000 n +0000603323 00000 n +0000603388 00000 n +0000603453 00000 n +0000603518 00000 n +0000603583 00000 n +0000603648 00000 n +0000603713 00000 n +0000603778 00000 n +0000603843 00000 n +0000603908 00000 n +0000603972 00000 n +0000604037 00000 n +0000604102 00000 n +0000604166 00000 n +0000610545 00000 n +0000607438 00000 n +0000604420 00000 n +0000607563 00000 n +0000607627 00000 n +0000607691 00000 n +0000607756 00000 n +0000607821 00000 n +0000607886 00000 n +0000607951 00000 n +0000608016 00000 n +0000608081 00000 n +0000608146 00000 n +0000608210 00000 n +0000608275 00000 n +0000608340 00000 n +0000608405 00000 n +0000608470 00000 n +0000608535 00000 n +0000608600 00000 n +0000608665 00000 n +0000608730 00000 n +0000608795 00000 n +0000608859 00000 n +0000608924 00000 n +0000608989 00000 n +0000609054 00000 n +0000609119 00000 n +0000609184 00000 n +0000609248 00000 n +0000609313 00000 n +0000609378 00000 n +0000609443 00000 n +0000609508 00000 n +0000609573 00000 n +0000609638 00000 n +0000609703 00000 n +0000609768 00000 n +0000609833 00000 n +0000609898 00000 n +0000609963 00000 n +0000610028 00000 n +0000610093 00000 n +0000610158 00000 n +0000610223 00000 n +0000610287 00000 n +0000610352 00000 n +0000610417 00000 n +0000610481 00000 n +0000616670 00000 n +0000613368 00000 n +0000610748 00000 n +0000613493 00000 n +0000613557 00000 n +0000613622 00000 n +0000613686 00000 n +0000613751 00000 n +0000613816 00000 n +0000613881 00000 n +0000613946 00000 n +0000614011 00000 n +0000614076 00000 n +0000614140 00000 n +0000614205 00000 n +0000614269 00000 n +0000614334 00000 n +0000614399 00000 n +0000614464 00000 n +0000614529 00000 n +0000614594 00000 n +0000614659 00000 n +0000614724 00000 n +0000614789 00000 n +0000614854 00000 n +0000614919 00000 n +0000614984 00000 n +0000615049 00000 n +0000615114 00000 n +0000615179 00000 n +0000615244 00000 n +0000615309 00000 n +0000615374 00000 n +0000615439 00000 n +0000615504 00000 n +0000615569 00000 n +0000615634 00000 n +0000615698 00000 n +0000615763 00000 n +0000615828 00000 n +0000615893 00000 n +0000615958 00000 n +0000616023 00000 n +0000616088 00000 n +0000616153 00000 n +0000616218 00000 n +0000616283 00000 n +0000616348 00000 n +0000616413 00000 n +0000616478 00000 n +0000616543 00000 n +0000616606 00000 n +0000623077 00000 n +0000618868 00000 n +0000616860 00000 n +0000618993 00000 n +0000619057 00000 n +0000619122 00000 n +0000619186 00000 n +0000619251 00000 n +0000619316 00000 n +0000619381 00000 n +0000619446 00000 n +0000619511 00000 n +0000619576 00000 n +0000619641 00000 n +0000619706 00000 n +0000619770 00000 n +0000619835 00000 n +0000619900 00000 n +0000619965 00000 n +0000620030 00000 n +0000620095 00000 n +0000620160 00000 n +0000620225 00000 n +0000620290 00000 n +0000620354 00000 n +0000620419 00000 n +0000620484 00000 n +0000620549 00000 n +0000620614 00000 n +0000620679 00000 n +0000620744 00000 n +0000620809 00000 n +0000620874 00000 n +0000620938 00000 n +0000621003 00000 n +0000621068 00000 n +0000621133 00000 n +0000621198 00000 n +0000621263 00000 n +0000621328 00000 n +0000621393 00000 n +0000621458 00000 n +0000621522 00000 n +0000621587 00000 n +0000621652 00000 n +0000621716 00000 n +0000621781 00000 n +0000621846 00000 n +0000621911 00000 n +0000621976 00000 n +0000622041 00000 n +0000622106 00000 n +0000622171 00000 n +0000622236 00000 n +0000622300 00000 n +0000622365 00000 n +0000622430 00000 n +0000622495 00000 n +0000622560 00000 n +0000622625 00000 n +0000622690 00000 n +0000622755 00000 n +0000622820 00000 n +0000622884 00000 n +0000622949 00000 n +0000623013 00000 n +0000629323 00000 n +0000625701 00000 n +0000623241 00000 n +0000625826 00000 n +0000625890 00000 n +0000625955 00000 n +0000626019 00000 n +0000626084 00000 n +0000626149 00000 n +0000626214 00000 n +0000626279 00000 n +0000626344 00000 n +0000626409 00000 n +0000626474 00000 n +0000626539 00000 n +0000626603 00000 n +0000626668 00000 n +0000626733 00000 n +0000626798 00000 n +0000626863 00000 n +0000626928 00000 n +0000626993 00000 n +0000627058 00000 n +0000627123 00000 n +0000627187 00000 n +0000627251 00000 n +0000627316 00000 n +0000627381 00000 n +0000627446 00000 n +0000627511 00000 n +0000627576 00000 n +0000627641 00000 n +0000627706 00000 n +0000627771 00000 n +0000627836 00000 n +0000627899 00000 n +0000627964 00000 n +0000628029 00000 n +0000628094 00000 n +0000628159 00000 n +0000628224 00000 n +0000628289 00000 n +0000628354 00000 n +0000628419 00000 n +0000628484 00000 n +0000628549 00000 n +0000628614 00000 n +0000628679 00000 n +0000628744 00000 n +0000628805 00000 n +0000628870 00000 n +0000628935 00000 n +0000629000 00000 n +0000629065 00000 n +0000629130 00000 n +0000629195 00000 n +0000629259 00000 n +0000897852 00000 n +0000634730 00000 n +0000631624 00000 n +0000629500 00000 n +0000631749 00000 n +0000631813 00000 n +0000631878 00000 n +0000631942 00000 n +0000632007 00000 n +0000632072 00000 n +0000632137 00000 n +0000632202 00000 n +0000632267 00000 n +0000632332 00000 n +0000632397 00000 n +0000632462 00000 n +0000632526 00000 n +0000632591 00000 n +0000632656 00000 n +0000632721 00000 n +0000632786 00000 n +0000632851 00000 n +0000632916 00000 n +0000632981 00000 n +0000633046 00000 n +0000633110 00000 n +0000633175 00000 n +0000633240 00000 n +0000633305 00000 n +0000633370 00000 n +0000633435 00000 n +0000633500 00000 n +0000633565 00000 n +0000633630 00000 n +0000633694 00000 n +0000633759 00000 n +0000633824 00000 n +0000633889 00000 n +0000633954 00000 n +0000634019 00000 n +0000634084 00000 n +0000634149 00000 n +0000634214 00000 n +0000634278 00000 n +0000634343 00000 n +0000634408 00000 n +0000634473 00000 n +0000634538 00000 n +0000634666 00000 n +0000638036 00000 n +0000637209 00000 n +0000634973 00000 n +0000637334 00000 n +0000637398 00000 n +0000637462 00000 n +0000637526 00000 n +0000637589 00000 n +0000637653 00000 n +0000637717 00000 n +0000637781 00000 n +0000637845 00000 n +0000637908 00000 n +0000637972 00000 n +0000644381 00000 n +0000644536 00000 n +0000644691 00000 n +0000644847 00000 n +0000645006 00000 n +0000645167 00000 n +0000645327 00000 n +0000645487 00000 n +0000645642 00000 n +0000645803 00000 n +0000645964 00000 n +0000646130 00000 n +0000646297 00000 n +0000646463 00000 n +0000646624 00000 n +0000646780 00000 n +0000646936 00000 n +0000647097 00000 n +0000647264 00000 n +0000647431 00000 n +0000647587 00000 n +0000647754 00000 n +0000647920 00000 n +0000648081 00000 n +0000648242 00000 n +0000648403 00000 n +0000648570 00000 n +0000648737 00000 n +0000648904 00000 n +0000649071 00000 n +0000649238 00000 n +0000649398 00000 n +0000649562 00000 n +0000649727 00000 n +0000649894 00000 n +0000650054 00000 n +0000650214 00000 n +0000657758 00000 n +0000657914 00000 n +0000658074 00000 n +0000658234 00000 n +0000658395 00000 n +0000650624 00000 n +0000643884 00000 n +0000638213 00000 n +0000650370 00000 n +0000650434 00000 n +0000650561 00000 n +0000644026 00000 n +0000658555 00000 n +0000658711 00000 n +0000658872 00000 n +0000659033 00000 n +0000659193 00000 n +0000659354 00000 n +0000659514 00000 n +0000659675 00000 n +0000659836 00000 n +0000659993 00000 n +0000660155 00000 n +0000660317 00000 n +0000660485 00000 n +0000660652 00000 n +0000660820 00000 n +0000660988 00000 n +0000661156 00000 n +0000661324 00000 n +0000661492 00000 n +0000661660 00000 n +0000661828 00000 n +0000661997 00000 n +0000662166 00000 n +0000662335 00000 n +0000662504 00000 n +0000662672 00000 n +0000662832 00000 n +0000663000 00000 n +0000663168 00000 n +0000663336 00000 n +0000663503 00000 n +0000663671 00000 n +0000663838 00000 n +0000664006 00000 n +0000664174 00000 n +0000664342 00000 n +0000664510 00000 n +0000664679 00000 n +0000664846 00000 n +0000665015 00000 n +0000665236 00000 n +0000657189 00000 n +0000650788 00000 n +0000665172 00000 n +0000657331 00000 n +0000893532 00000 n +0000665492 00000 n +0000893794 00000 n +0000665519 00000 n +0000893660 00000 n +0000665612 00000 n +0000665851 00000 n +0000665876 00000 n +0000666987 00000 n +0000665931 00000 n +0000666028 00000 n +0000667230 00000 n +0000667840 00000 n +0000668044 00000 n +0000668071 00000 n +0000668098 00000 n +0000671226 00000 n +0000668373 00000 n +0000668479 00000 n +0000671474 00000 n +0000672206 00000 n +0000672416 00000 n +0000682391 00000 n +0000673029 00000 n +0000673156 00000 n +0000682631 00000 n +0000683726 00000 n +0000683930 00000 n +0000686534 00000 n +0000684131 00000 n +0000684237 00000 n +0000686781 00000 n +0000687468 00000 n +0000687678 00000 n +0000689363 00000 n +0000687791 00000 n +0000687897 00000 n +0000689612 00000 n +0000690265 00000 n +0000690476 00000 n +0000695363 00000 n +0000690809 00000 n +0000690920 00000 n +0000695607 00000 n +0000696366 00000 n +0000696571 00000 n +0000704272 00000 n +0000697025 00000 n +0000697140 00000 n +0000704512 00000 n +0000705404 00000 n +0000705607 00000 n +0000706357 00000 n +0000705641 00000 n +0000705736 00000 n +0000706596 00000 n +0000707192 00000 n +0000707394 00000 n +0000713787 00000 n +0000707851 00000 n +0000707959 00000 n +0000714027 00000 n +0000714912 00000 n +0000715116 00000 n +0000717720 00000 n +0000715306 00000 n +0000715412 00000 n +0000717963 00000 n +0000718635 00000 n +0000718839 00000 n +0000720859 00000 n +0000718953 00000 n +0000719057 00000 n +0000721101 00000 n +0000721746 00000 n +0000721951 00000 n +0000725086 00000 n +0000722258 00000 n +0000722365 00000 n +0000725326 00000 n +0000726072 00000 n +0000726276 00000 n +0000733538 00000 n +0000726740 00000 n +0000726855 00000 n +0000733779 00000 n +0000734660 00000 n +0000734865 00000 n +0000734892 00000 n +0000734953 00000 n +0000735146 00000 n +0000735387 00000 n +0000735604 00000 n +0000740326 00000 n +0000735963 00000 n +0000736069 00000 n +0000740568 00000 n +0000741346 00000 n +0000741550 00000 n +0000744509 00000 n +0000741824 00000 n +0000741930 00000 n +0000744749 00000 n +0000745456 00000 n +0000745660 00000 n +0000747670 00000 n +0000745774 00000 n +0000745878 00000 n +0000747912 00000 n +0000748558 00000 n +0000748763 00000 n +0000751279 00000 n +0000749010 00000 n +0000749116 00000 n +0000751520 00000 n +0000752225 00000 n +0000752430 00000 n +0000759286 00000 n +0000752859 00000 n +0000752971 00000 n +0000759526 00000 n +0000760391 00000 n +0000760594 00000 n +0000769758 00000 n +0000761078 00000 n +0000761196 00000 n +0000769999 00000 n +0000770998 00000 n +0000771203 00000 n +0000780924 00000 n +0000771781 00000 n +0000771913 00000 n +0000781166 00000 n +0000782177 00000 n +0000782383 00000 n +0000783432 00000 n +0000782461 00000 n +0000782561 00000 n +0000783672 00000 n +0000784294 00000 n +0000784498 00000 n +0000789624 00000 n +0000784867 00000 n +0000784982 00000 n +0000789865 00000 n +0000790654 00000 n +0000790859 00000 n +0000792418 00000 n +0000790952 00000 n +0000791053 00000 n +0000792657 00000 n +0000793283 00000 n +0000793485 00000 n +0000795722 00000 n +0000793664 00000 n +0000793770 00000 n +0000795963 00000 n +0000796632 00000 n +0000796837 00000 n +0000799914 00000 n +0000797066 00000 n +0000797173 00000 n +0000800156 00000 n +0000800864 00000 n +0000801070 00000 n +0000801168 00000 n +0000802212 00000 n +0000801246 00000 n +0000801346 00000 n +0000802453 00000 n +0000803077 00000 n +0000803282 00000 n +0000805085 00000 n +0000803393 00000 n +0000803496 00000 n +0000805327 00000 n +0000805970 00000 n +0000813147 00000 n +0000806176 00000 n +0000817465 00000 n +0000813380 00000 n +0000820528 00000 n +0000817754 00000 n +0000823745 00000 n +0000820767 00000 n +0000826365 00000 n +0000823989 00000 n +0000850027 00000 n +0000826610 00000 n +0000869169 00000 n +0000850334 00000 n +0000881131 00000 n +0000869441 00000 n +0000884499 00000 n +0000881381 00000 n +0000887272 00000 n +0000884772 00000 n +0000890217 00000 n +0000887524 00000 n +0000893246 00000 n +0000890463 00000 n +0000897970 00000 n +0000898131 00000 n +0000898223 00000 n +0000898300 00000 n +0000906079 00000 n +0000906744 00000 n +0000907413 00000 n +0000908082 00000 n +0000908748 00000 n +0000909417 00000 n +0000910085 00000 n +0000910756 00000 n +0000911420 00000 n +0000912089 00000 n +0000912758 00000 n +0000913424 00000 n +0000914093 00000 n +0000914762 00000 n +0000915427 00000 n +0000916098 00000 n +0000916766 00000 n +0000917435 00000 n +0000918101 00000 n +0000918770 00000 n +0000919439 00000 n +0000920105 00000 n +0000920774 00000 n +0000921442 00000 n +0000922113 00000 n +0000922778 00000 n +0000923447 00000 n +0000924116 00000 n +0000924782 00000 n +0000925451 00000 n +0000926120 00000 n +0000926789 00000 n +0000927457 00000 n +0000928125 00000 n +0000928794 00000 n +0000929456 00000 n +0000930125 00000 n +0000930794 00000 n +0000931463 00000 n +0000932128 00000 n +0000932799 00000 n +0000933467 00000 n +0000934133 00000 n +0000934802 00000 n +0000935471 00000 n +0000936140 00000 n +0000936806 00000 n +0000937475 00000 n +0000938143 00000 n +0000938811 00000 n +0000939480 00000 n +0000940149 00000 n +0000940818 00000 n +0000941484 00000 n +0000942153 00000 n +0000942822 00000 n +0000943487 00000 n +0000944158 00000 n +0000944826 00000 n +0000945495 00000 n +0000946161 00000 n +0000946830 00000 n +0000947499 00000 n +0000948165 00000 n +0000948834 00000 n +0000949502 00000 n +0000950173 00000 n +0000950837 00000 n +0000951506 00000 n +0000952175 00000 n +0000952837 00000 n +0000953507 00000 n +0000954179 00000 n +0000954847 00000 n +0000955518 00000 n +0000956190 00000 n +0000956862 00000 n +0000957531 00000 n +0000958203 00000 n +0000958875 00000 n +0000959544 00000 n +0000960215 00000 n +0000960888 00000 n +0000961559 00000 n +0000962228 00000 n +0000962900 00000 n +0000963572 00000 n +0000964241 00000 n +0000964913 00000 n +0000965558 00000 n +0000966190 00000 n +0000966825 00000 n +0000967460 00000 n +0000968095 00000 n +0000968726 00000 n +0000969363 00000 n +0000969997 00000 n +0000970629 00000 n +0000971264 00000 n +0000971899 00000 n +0000972534 00000 n +0000973166 00000 n +0000973801 00000 n +0000974435 00000 n +0000975069 00000 n +0000975704 00000 n +0000976339 00000 n +0000976974 00000 n +0000977606 00000 n +0000978241 00000 n +0000978876 00000 n +0000979584 00000 n +0000980396 00000 n +0000981068 00000 n +0000981719 00000 n +0000982388 00000 n +0000983118 00000 n +0000983917 00000 n +0000984800 00000 n +0000985914 00000 n +0000986551 00000 n +0000986907 00000 n +0000987260 00000 n +0000987613 00000 n +0000987893 00000 n +0000987996 00000 n +0000988036 00000 n +0000988168 00000 n trailer -<< /Size 4650 /Root 4648 0 R /Info 4649 0 R /ID [ <D64F3A26FAAB7864F77EB030AC63CA56> <D64F3A26FAAB7864F77EB030AC63CA56> ] >> +<< /Size 5022 /Root 5020 0 R /Info 5021 0 R /ID [ <2A25A82009AD4D2F0056DB374353254A> <2A25A82009AD4D2F0056DB374353254A> ] >> startxref -961140 +988729 %%EOF diff --git a/macros/luatex/latex/plantuml/CHANGELOG.md b/macros/luatex/latex/plantuml/CHANGELOG.md index d52aecffd6..6cc76d6b7c 100644 --- a/macros/luatex/latex/plantuml/CHANGELOG.md +++ b/macros/luatex/latex/plantuml/CHANGELOG.md @@ -5,13 +5,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.0] – 2024-09-17 + +### Fixed + +- Updated command-line parameters for inkscape. [#33](https://github.com/koppor/plantuml/pull/33) +- Updated command-line parameters for plantuml. [#33](https://github.com/koppor/plantuml/pull/33) +- Works if multiple diagrams are present. [#15](https://github.com/koppor/plantuml/issues/15), [#17](https://github.com/koppor/plantuml/issues/17) + ## [0.3.2] – 2023-05-12 ### Changed - Updated file extension for including diagrams to `.tex` to align with changes introduced in PlantUML v1.2023.0. This change is not backwards compatible with - older versions of PlantUML. + older versions of PlantUML. [#29](https://github.com/koppor/plantuml/pull/29) ## [0.3.1] – 2020-05-19 @@ -66,7 +74,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). Initial public release -[unreleased]: https://github.com/koppor/plantuml/compare/0.3.2...HEAD +[0.4.0]: https://github.com/koppor/plantuml/compare/0.3.2...0.4.0 [0.3.2]: https://github.com/koppor/plantuml/compare/0.3.1...0.3.2 [0.3.1]: https://github.com/koppor/plantuml/compare/0.3.0...0.3.1 [0.3.0]: https://github.com/koppor/plantuml/compare/0.2.3...0.3.0 diff --git a/macros/luatex/latex/plantuml/README.md b/macros/luatex/latex/plantuml/README.md index 0a9f37cba9..bbd4adb0e0 100644 --- a/macros/luatex/latex/plantuml/README.md +++ b/macros/luatex/latex/plantuml/README.md @@ -14,7 +14,7 @@ Check [issue #1](https://github.com/koppor/plantuml/issues/1) for the current st 1. Environment variable `PLANTUML_JAR` set to the location of `plantuml.jar`. You get it from <https://sourceforge.net/projects/plantuml/files/plantuml.jar/download>. -2. Enviroment variable `GRAPHVIZ_DOT` set to the location of `dot.exe`. +2. Windows: Environment variable `GRAPHVIZ_DOT` set to the location of `dot.exe`. Example: `C:\Program Files (x86)\Graphviz2.38\bin\dot.exe`. You can install graphviz using `choco install graphviz`. 3. lualatex available with command line parameter `-shell-escape` included. @@ -55,6 +55,29 @@ Check [issue #1](https://github.com/koppor/plantuml/issues/1) for the current st \usepackage{graphics} \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{ + inkscape #1 --export-filename=\OutputFile +} +\usepackage[output=svg]{plantuml} +\begin{document} +\begin{plantuml} +@startuml +class Car + +Driver - Car : drives > +Car *- Wheel : have 4 > +Car -- Person : < owns +@enduml +\end{plantuml} +\end{document} +``` + +**For older Inkscape use this LaTeX source:** + +```latex +\documentclass{scrartcl} +\usepackage{graphics} +\usepackage{epstopdf} +\epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{ inkscape -z --file=#1 --export-pdf=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-class-relations--svg.tex b/macros/luatex/latex/plantuml/example-class-relations--svg.tex index 5d7d9b8ed8..f26045d0f2 100644 --- a/macros/luatex/latex/plantuml/example-class-relations--svg.tex +++ b/macros/luatex/latex/plantuml/example-class-relations--svg.tex @@ -8,7 +8,7 @@ % We just include the SVG as is. \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% - inkscape -z --file=#1 --export-pdf=\OutputFile + inkscape #1 --export-filename=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-component-diagram.tex b/macros/luatex/latex/plantuml/example-component-diagram.tex index 785d2e7a56..5ce270d101 100644 --- a/macros/luatex/latex/plantuml/example-component-diagram.tex +++ b/macros/luatex/latex/plantuml/example-component-diagram.tex @@ -1,13 +1,13 @@ \documentclass{scrartcl} -\usepackage{graphics} +\usepackage{graphics} % Enables inclusion of SVG graphics - 1:1 approach % This is NOT the approach of https://ctan.org/pkg/svg-inkscape % which allows text in SVG to be typeset using LaTeX. % We just include the SVG as is. \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% - inkscape -z --file=#1 --export-pdf=\OutputFile + inkscape #1 --export-filename=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex b/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex new file mode 100644 index 0000000000..359bc6d960 --- /dev/null +++ b/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex @@ -0,0 +1,42 @@ +\documentclass{scrartcl} + +\usepackage{graphics} + +\usepackage{epstopdf} +\epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% + inkscape #1 --export-filename=\OutputFile +} + +\usepackage[output=svg]{plantuml} + +\begin{document} + + \begin{plantuml} + @startuml + () "Interface 2" as I2 + () "Interface 3" as I3 + + [component 1] as c1 + [component 2] as c2 + [component 3] as c3 + + c1 -- I2 + c1 -- I3 + + I2 )-- c2 + I3 )-- c3 + @enduml + \end{plantuml} + +\newpage + + \begin{plantuml} + @startuml + class Car + + Driver - Car : drives > + Car *- Wheel : have 4 > + Car -- Person : < owns + @enduml + \end{plantuml} +\end{document} diff --git a/macros/luatex/latex/plantuml/plantuml.lua b/macros/luatex/latex/plantuml/plantuml.lua index 7edb923d6b..8bb14c8abb 100644 --- a/macros/luatex/latex/plantuml/plantuml.lua +++ b/macros/luatex/latex/plantuml/plantuml.lua @@ -7,9 +7,6 @@ function convertPlantUmlToTikz(jobname, mode) local plantUmlSourceFilename = jobname .. "-plantuml.txt" local plantUmlTargetFilename = jobname .. "-plantuml." .. mode - -- delete generated file to ensure they are really recreated - os.remove(plantUmlTargetFilename) - if not (lfs.attributes(plantUmlSourceFilename)) then texio.write_nl("Source " .. plantUmlSourceFilename .. " does not exist.") return @@ -25,9 +22,15 @@ function convertPlantUmlToTikz(jobname, mode) local cmd = "java -Djava.awt.headless=true -jar " .. plantUmlJar .. " -charset UTF-8 -t" if (mode == "latex") then cmd = cmd .. "latex:nopreamble" + -- plantuml has changed output format in https://github.com/plantuml/plantuml/pull/1237 + plantUmlTargetFilename = jobname .. "-plantuml.tex" else cmd = cmd .. mode end + + -- delete generated file to ensure they are really recreated + os.remove(plantUmlTargetFilename) + cmd = cmd .. " " .. plantUmlSourceFilename texio.write_nl(cmd) local handle,error = io.popen(cmd) diff --git a/macros/luatex/latex/plantuml/plantuml.pdf b/macros/luatex/latex/plantuml/plantuml.pdf Binary files differindex ecb703caef..114c9026ff 100644 --- a/macros/luatex/latex/plantuml/plantuml.pdf +++ b/macros/luatex/latex/plantuml/plantuml.pdf diff --git a/macros/luatex/latex/plantuml/plantuml.sty b/macros/luatex/latex/plantuml/plantuml.sty index bb978dfa9c..91c15789e4 100644 --- a/macros/luatex/latex/plantuml/plantuml.sty +++ b/macros/luatex/latex/plantuml/plantuml.sty @@ -3,7 +3,7 @@ %% SPDX-License-Identifier: LPPL-1.3c+ \NeedsTeXFormat{LaTeX2e}\relax \ProvidesPackage{plantuml} - [2023/05/12 v0.3.2 + [2024/09/17 v0.4.0 Embed PlantUML diagrams in latex documents.] % Required by PlantUML LaTeX output @@ -24,9 +24,11 @@ \RequirePackage{adjustbox} +\newcounter{PlantUmlFigureNumberSVG} +\def\UMLcountUp{\stepcounter{PlantUmlFigureNumberSVG} \def\PlantUMLJobname{PlantUML\thePlantUmlFigureNumberSVG}} % \jobname has an encoding issue if the .tex filename includes a multibyte string. % One needs to redefine PlantUMLJobname to fix it -\def\PlantUMLJobname{\jobname} +\def\PlantUMLJobname{\jobname\thePlantUmlFigureNumberSVG} \ExplSyntaxOn \keys_define:nn { plantuml } { @@ -93,6 +95,7 @@ \end{adjustbox} }{ \includegraphics[width=\maxwidth{\textwidth}]{\PlantUMLJobname-plantuml.\PlantUmlMode} + \UMLcountUp } } \or @@ -102,4 +105,3 @@ }{} \fi \makeatother - diff --git a/macros/luatex/latex/tango/README b/macros/luatex/latex/tango/README new file mode 100644 index 0000000000..014ae456a2 --- /dev/null +++ b/macros/luatex/latex/tango/README @@ -0,0 +1,42 @@ +Tango is a LaTeX document class for use by mathematics teachers. It requires lualatex, some LaTeX packages (see the complete documentation for details), and a recent version of LaTeX (see paragraph 4 below). + +Author: Michel Bovani <Michel.Bovani@icloud.com> +Tango Web Page: https://tango.mathriochka.net + +1 Versions history +0.8.0 (2024-07-17) This version +New: Language complete support for +french, english, british, american, canadian, australian, newzealand, german, ngerman, naustrian, nswissgerman, italian, spanish. + +0.7.2 (2024-07-12) +New in this version +• correction of the countername in subparagraph definition for titlesec. +• fix incorrect vertical space in the \exo command. + +0.7.1 First release (2024-07-08) + +2 License +Tango is released under Latex public project licence (LPPL), version 1.3c +See https://www.latex-project.org/lppl/lppl-1-3c/ + +3 Installation +Just put the tango.cls file in a latex directory of a texmf tree, for example: +TEXMF/tex/lualatex/tango/tango.cls + +4 Usage +\documentclass[<options>]{tango} +The tango document class requires recent versions of LaTeX and lualatex. At my home it runs on TeXLive 2024, TeXLive 2023 and on the last update of TeXlive 2022. + +5 About examples +Example files are provided for testing the tango document class and for learning how to adapt margins, headings &Co. + +The files to typeset are: + +book-mathematics.tex +handout-euler.tex +handout-polynomes-deg2.tex +schoolwork.tex +candide.tex (the result is best in the two-pages mode of your pdf viewer). + +6 Internet website (new french only for now) +https://tango.mathriochka.net
\ No newline at end of file diff --git a/macros/luatex/latex/tango/doc/tango-en.pdf b/macros/luatex/latex/tango/doc/tango-en.pdf Binary files differnew file mode 100644 index 0000000000..d7969f1cb5 --- /dev/null +++ b/macros/luatex/latex/tango/doc/tango-en.pdf diff --git a/macros/luatex/latex/tango/doc/tango-en.tex b/macros/luatex/latex/tango/doc/tango-en.tex new file mode 100644 index 0000000000..bf7995ef17 --- /dev/null +++ b/macros/luatex/latex/tango/doc/tango-en.tex @@ -0,0 +1,753 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[english,ColorTheme=Red,FontSize=10pt]{tango} +%\setmonofont{Latin Modern Mono}[Scale=MatchUppercase] +\usepackage{longtable,csquotes,lipsum,tcolorbox} +\usepackage[dvipsnames]{xcolor} +\newcommand\DO[1]{\textcolor{ColorOne}{\bfseries #1}} +\newcommand\TO[1]{\textsf{#1}} +%% +\NewDocumentCommand\showtheme{m} +{{\tgosetup{ColorTheme=#1} +\parbox{2.1cm}{\centering +\textsf{#1\rule[-3pt]{0pt}{10pt}}\\ +\colorbox{ColorOne}{\parbox{1.5cm}{\rule[-5pt]{0pt}{15pt}}} +\par +\colorbox{ColorTwo}{\parbox{1.5cm}{\rule[-5pt]{0pt}{15pt}}} +\par +}}} +% +%\tgosmartlists +\renewtgolabels1{\lefthand} +\definecolor{ColorThree}{rgb}{0.93,0.95,0.97} +\tcbset{colback=ColorTwo,colframe=ColorTwo,sharp corners} +\frenchspacing +%\setcounter{section}{88} +\begin{document} + +\renewcommand{\arraystretch}{1.1} +\title{\textcolor{ColorOne}{\floweroneleft}\,The tango document class\,\textcolor{ColorOne}{\floweroneright}} +\author{\href{mailto:michel.bovani@icloud.com}{Michel \textsc{Bovani}}\\ +Tango web page: \href{https://tango.mathriochka.net}{https://tango.mathriochka.net}} +\date{\today\\v. 0.8.0} +{\sffamily +\maketitle + +} +\thispagestyle{empty} + +\tgoshorttoc +\section{What the tango document class is} + + +Tango is a Latex document class (\verb=\documentclass[<options>]{tango}=) for use by mathematics teachers (roughly speaking, from high school to undergraduate level). It makes it possible to typeset several types of documents, from the short handout to the complete textbook. The \enquote{maths dedicated aspect} essentially consists in: +\begin{itemize} +\item loading maths packages; +\item offering dedicated commands and environments for statements (definitions, propositions, theorems…), exercises, numbering. +\end{itemize} + +Tango is reasonably configurable, even if certain choices are imposed: mandatory use of lualatex, opentype fonts and recent installation, in particular. The tango class defines eight output formats, five of which are suitable for tablets, e-readers and smartphones; a system currently under development can be used to introduce a particular input for a given output format (for example, forcing a page break for the A5 format only). Finally, the tango class can be used for projects of a more general nature than maths lessons: science courses, but even more general usage with some extra configuration effort (see the Candide directory in the examples). + +Another class of documents for presenting school work (training exercises, test or exam subjects) will soon be available, called \enquote{bravo}. + + + + +\section{Options overview} +Please note that the table below only lists the options actually managed by the tango class. Other options, if used when calling the class, can simply be passed to certain packages. This is the case, for example, with the babel language options, or the \TO{math-style} option, which is systematically passed to the \TO{unicode-math} package. + +Default values are in bold red. Bold options marked with a \TO{\textbf{star*}} can be used in the preamble and in the body of the document with the \verb=\tgosetup{}= command: for example, in order to change the colors inside the document, you can use \verb+\tgosetup{ColorTheme=Navy}+. Other options can only be mentioned when the tango class is called. + + +\begin{longtable}{p{0.23\linewidth}p{0.7\linewidth}} +\caption[]{The tango class options}\\ +\textbf{Option}&\textbf{Usage}\\ +\hline\endhead +\hline\multicolumn{2}{r}{\emph{Continued next page}}\endfoot +\hline\endlastfoot + +\hline +\TO{% +french, english, british, american, canadian, australian, newzealand, german, ngerman, naustrian, nswissgerman, italian, spanish}.& Tango will transmit all language options to the \TO{babel} package. However, the translation of specific names used by tango (such as theorem, exercise, etc.) is only guaranteed for the languages listed opposite. Please note that even English speakers must \emph{imperatively} pass a language option to tango. + +See section~\ref{lang} below.\\ +\hline +\TO{no-statement}&\TO{no-statement=true/\DO{false}}. The \TO{thm}, \TO{defin}, \TO{lem}, \TO{coro}, \TO{propo} environments (for theorems, definitions, lemmas, corollaries, propositions) are defined by default. The no-statement option allows you to define them later, on request (see \verb=\newstatement= and \verb=\renewstatement= commands in section~\ref{st-section} page~\pageref{st-section}).\\ +\hline +\TO{no-hyperref}&\TO{no-hyperref=true/\DO{false}}. If you're only planning a single paper output….\\ +\hline +\TO{no-indent/indent}&\TO{no-indent=true/\DO{false}}. Indents are present by default. The option \TO{noindent} (meaning \TO{no-indent = true}) returns us to the left margin. The \TO{indent} option also exists, but is not very useful!\\ +\hline +\TO{no-titleindent}/\TO{titleindent}&Title indents are present by default only in French (because in French typography, the first paragraph after a title must be indented: so I prefer in this case the titles to be indented too). You can use no-tiltleindent in French and titleindent in English to change the default behavior. These options must be called after the language options.\\ +\hline +\TO{\textbf{ThmNamePos*}}&\TO{ThmNamePos=<value>} where \TO{<value>} can be \TO{\DO{left}} or \TO{right}. The name of the statement (Theorem, Definition, etc.) is displayed to the left or right of the box.\\ +\hline +\TO{PubliClass}&\TO{PubliClass=<value>} where \TO{<value>} can be \TO{\DO{article}} or \TO{book}. Indicates the base document class used (Latex standard \TO{article} document class or Latex standard \TO{book} document class.) The tango class is designed so that short handouts or monographs composed with the \TO{article} version can then be grouped together as chapters in the same volume with the \TO{book} version. See the \texttt{mathematics} directory in the \texttt{examples} documentation. With the \TO{article} version, the \verb=\part= and \verb=\tableofontents= commands are disabled. The \verb=\tgoshorttoc= command can be used to obtain a summary at the beginning of a monograph.\\ +\hline +\TO{oneside/twoside}& The option \TO{twoside} makes recto/verso, \TO{oneside} simply makes recto. The default is \TO{\DO{oneside}}. For now, there's no adjustment of inner and outer margins with twoside but it's easy to adapt it to your needs with the \verb=\geometry= command in the preamble. Note that one may prefer \TO{twoside=false} to \TO{oneside} (why not?).\\ +\hline +\TO{FontSize}&\TO{FontSize=<value>} where \TO{<value>} can be \TO{9pt}, \TO{\DO{10pt}}, \TO{11pt} ou \TO{12pt}.\\ +\hline +\TO{\textbf{ColorTheme*}}&\TO{ColorTheme=<value>} where \TO{<value>} can be \TO{Blue, Navy, USAF, Azur, Red, Framboise, Brique, Sienne, Caramel, Olive, Tannen, \DO{GrayGray}, BlackAndWhite, Ink} or \TO{Steel}. These values are worth trying out: each defines a set of two colors, one solid (ColorOne) for titles and one very light (ColorTwo) for box backgrounds.\\ +\hline +\TO{\textbf{ColorOne*}/\textbf{ColorTwo*}}& These options allow the user to define the colors of a personal theme separately; the argument must be a suitable argument for \verb=\definecolor=. See xcolor package (loaded without options by the tango class) documentation. +\begin{example}[Examples] + \begin{itemize} + \item\TO{ColorOne=}\verb={rgb}{0.75,0.1,0.05}= + \item\TO{ColorOne=}\verb={cmyk}{0,0.8,0.8,0.2}= + \item\TO{ColorTwo=}\verb={{rgb}{0.75,0.96,0.75}}= (note that external braces may be used, but are not mandatory). +\end{itemize} +\end{example} +\\ +\hline +\TO{\textbf{ColorOneNamed*}} / \\ +\TO{\textbf{ColorTwoNamed*}}& +These options allow the user to define the colors of a personal theme separately; the argument must be a suitable argument for \verb=\colorlet=. See xcolor package (loaded without options by the tango class) documentation. +\begin{example}[Examples] + \begin{itemize} + \item\TO{ColorOneNamed=}\verb={red!70!blue}= +\item\TO{ColorTwoNamed=}\verb={yellow!12}= + \end{itemize} +\end{example} +If you want to use a predefined set of colors, say \TO{dvipsnames}, you may reload the \TO{xcolor} package with the \TO{dvipsnames} option in your preamble, and then use the \verb=\tgosetup= command: +\begin{itemize} +\item \verb+\tgosetup{ColorOneNamed={RedOrange!80!BrickRed}}+ + \end{itemize} +\\ +\hline +\TO{Output}&\TO{Output=<value>} where \TO{<value>} can be \TO{\DO{A4paper}, Letter, A5paper, BigTablet, Tablet, SmallTablet, eReader} or \TO{Smartphone}. \TO{BigTablet}, \TO{Tablet} and \TO{SmallTablet} correspond to 13-, 11- and 8.5-inch screens respectively. \TO{eReader} is for a 6-inch e-reader. It should be noted that in the case of \TO{eReader} and \TO{Smartphone}, the requested format is larger than the actual format, so that the font sizes are much smaller than required. So the \TO{FontSize=9pt} option produces a result on their screens that may be difficult to read.\\ +\hline + \TO{Numbers}& \TO{Numbers=<value>} where \TO{<value>} can be \TO{TextOldStyle, OldStyle, MathOldStyle, FullOldstyle}. If you don't ask for anything, you get the \enquote{lining} numbers. +\begin{itemize} +\item \TO{Numbers=TextOldStyle} activates oldstyle (or lower-case) digits (like these {\olddigits 0123456789}) of the erewhon font (basic text font) for the entire document. +\item \TO{Numbers=OldStyle} activates oldsyle (or lower-case) digits for all text fonts used in the document. +\item \TO{Numbers=MathOldStyle} activates lower-case digits only in mathematics (I can't think of any good reason to do this!). +\item \TO{Numbers=FullOldStyle} activates lower-case digits for all text fonts as well as for mathematics. +\end{itemize} +It should be noted that it is always possible to switch locally from the digits selected with this option to one of their variants (for example, section titles are systematically numbered using \enquote{lining} digits, since these titles are themselves capitalized).\\ +\hline +\TO{StylisticSet}&\TO{StylisticSet=\{<value1>, <value2>,…\}} where \TO{<value1>, <value2>,} etc. are to be taken from \TO{upint, leqslant, smaller, subsetneq} and \TO{parallelslant}. These options concern the Erewhon-Math font, which is a (very) extended opentype version by Daniel \textsc{Flipo} of the math fonts of the Fourier-Gutenberg system. For more information, see the Erewhon-Math documentation (\verb=texdoc erewhon-math= in any good terminal).\\ +\hline +\TO{CharacterVariant}&\TO{CharacterVariant=\{<value1>, <value2>,…\}} where \TO{<value1>, <value2>,} etc. can be chosen from \TO{zero, hslash, emptyset, epsilon, kappa, pi, phi, rho, sigma, theta, partial, Ecal, Qcal} and \TO{Tcal}. These options concern the Erewhon-Math font, which is a (very) extended opentype version by Daniel \textsc{Flipo} of the math fonts of the Fourier-Gutenberg system. For more information, see the Erewhon-Math documentation (\verb=texdoc erewhon-math= in any good terminal).\end{longtable} + +%\medskip + +\section{Packages loaded by the tango document class} +I only mention here the packages directly loaded by the tango class. Each of these packages can in turn load others... +\begin{itemize} +\item \verb=\RequirePackage{xcolor}=. The \TO{xcolor} package is used by the tango class to define the colors of the various themes. It is called without any options, but you can reload it in the preamble of your document with options such as \TO{dvipsnames}, \TO{svgnames} or \TO{x11names}. +\item\verb=\RequirePackage{mathtools}=. The \TO{mathtools} package loads the \TO{amsmath} package, to which it adds a complement. +\item\verb=\RequirePackage{geometry}=. Used by the tango class in order to define the page design of the various outputs formats. You can use the \verb=\geometry=. command in the document preamble to modify this layout. +\item\verb=\RequirePackage{enumitem}=. Used by the tango class to configure the various \TO{list}-based environments in its own way (see section~\ref{lists}). These settings can be modified by the user in the preamble. +\item\verb=\RequirePackage{titletoc}=. Used by the tango class to fix the table of contents appearance which can be modified by the user in the preamble. +\item\verb=\RequirePackage[pagestyles,toctitles,newlinetospace,clearempty]{titlesec}=. Used by the tango class to configure the appearance of titles at different levels. This can be modified by the user in the preamble. The default English version adds the \TO{noindentafter} option. +\item\verb=\RequirePackage{ccaption,caption}=. Used by the tango class to configure the captions appearance for figures and tables. (See section~\ref{figtable}). +\item\verb=\RequirePackage{fontspec}\RequirePackage{unicode-math}=. The tango class requires \TO{lualatex}, opentype fonts, and Unicode settings. +\item\verb=\RequirePackage{fourier-orns}=. See the section~\ref{fnts} below. +\item\verb=\RequirePackage{iflang}=. Used by tango to send a class error message if no language option is given. +\item\verb=\RequirePackage{babel}=. The babel package is called without options. It is up to you to pass babel options to the tango class. See section~\ref{lang} below. +\item\verb+\RequirePackage[colorlinks,linkcolor=ColorOne,urlcolor=ColorOne]{hyperref}+. This \TO{hyperref} configuration can be modified using the \verb=\hypersetup= command in your preamble. You can also use the \TO{no-hyperref} option. +\item\verb=\RequirePackage{array,graphicx,microtype,numprint,float,afterpage}=. These packages are provided but not explicitly used by tango. +\end{itemize} + + +\section{Fonts}\label{fnts} + +\subsection{The tango font system} +Tango's main font is Erewhon, an opentype version of Utopia (a PostScript type~1 font which was designed in 1989 by Robert \textsc{Slimbach} and once donated by Adobe to the X-consortium and featured on TeXlive). Unlike Utopia, Erewhon, designed by Michael \textsc{Sharpe}, covers a large number of languages and offers a wide range of functions, available through opentype features. It should be noted that Adobe distributes a commercial opentype version of Utopia, which is less rich in glyphs than Erewhon, but has an intermediate font-weight and optical character sizes. + +The tango mathematical font is Erewhon~Math, a scientific complement to Erewhon designed by Daniel \textsc{Flipo}. Erewhon Math is in a way the opentype counterpart of Fourier-GUTenberg, the scientific complement to Utopia type~1 designed by me in 2002. Erewhon~Math offers a large number of functions made accessible by Daniel through the \TO{fourier-otf} package. The tango class does not load \TO{fourier-otf}, but uses all its functions through a system of options. + +The sans-serif font of the tango system is Noto Sans, scaled. Noto Sans is a sans-serif font for text in Latin, Cyrillic and Greek characters, with multiple weights and widths. + +The main (chapter) title font is Roboto Condensed Bold (as a condensed version of Noto Sans is not available on TeXlive). + +The monospaced font is Inconsolatazi4, scaled. + +Finally, tango calls the \TO{fourier-orns} package, a symbols and logos complement to the fourier system which has now an opentype version. + +\subsection{Replacing the tango font system} +It is, of course, possible to use the \TO{fontspec} \verb=\setmainfont=, \verb=\setsansfont= and \verb=\setmonofont= commands and the \TO{unicode-math} \verb=\setmathfont= command in the preamble in order to modify the parameters of the tango class: this is not advisable, in my humble opinion. But one day there will probably be another class in the tango distribution which will use another font system. Such a document class could be called charlie, or foxtrot or zulu…. + +\subsection{Font commands and text font commands} +Here, I call \enquote{Font commands} commands whose scope can only be limited by a group or an environment. I call \enquote{Text font commands}, on the other hand, commands whose scope is limited to their argument, which must not contain a paragraph break. For example, \verb=\bfseries= is a \enquote{font command} and \verb=\textbf= is a \enquote{text font command}. Here is what is provided by tango (see table~\ref{otfcmd}, \pageref{otfcmd}). All these commands should work with Erewhon and with Noto Sans as well. +\begin{table}[ht] +\XTabletCommand{\centering\setlength\tabcolsep{9pt}} +\TabletCommand{\centering} +\caption{Tango opentype commands}\label{otfcmd} +\ifTgoTabletOutput\begin{tabular}{l | l | l | l}% +\else +\begin{tabular}{llll}% +\fi +\hline +\multicolumn{1}{c}{\textsf{\bfseries Command}}& +\multicolumn{1}{c}{\textsf{\bfseries Nature}}& +\multicolumn{1}{c}{\textsf{\bfseries Example}}& +\multicolumn{1}{c}{\textsf{\bfseries Result}}\\ +\hline +\verb=\superiors=&\textsf{font command} & \verb=M{\superiors rs}=&M{\superiors rs}\\ +\hline +\verb=\scinferiors=&\textsf{font command} &\verb={\scinferiors C6H12O3}= &{\scinferiors C6H12O3}\\ +\hline +\verb=\smartfracs=&\textsf{font command} &\verb=2{\smartfracs1/3}= &2{\smartfracs1/3} \\ +\hline +\verb=\fullsc=&\textsf{text font command} &\verb=\fullsc{Chapter}= &\fullsc{Chapter} \\ +\hline +\verb=\textsup=&\textsf{text font command} &\verb=M\textsup{rs}=&M\textsup{rs} \\ +\hline +\verb=\textscinf=&\textsf{text font command} &\verb=\textscinf{C6H12O3}= &\textscinf{C6H12O3} \\ +\hline +\verb=\smartfrac=&\textsf{text font command} &\verb=2\smartfrac{3/4}= &2\smartfrac{3/4} \\ +\hline +\verb=\olddigits=&\textsf{font command} &\verb={\olddigits01234}= &{\olddigits01234} \\ +\hline +\verb=\liningdigits=&\textsf{font command} &\verb={\olddigits01\liningdigits01}= &{\olddigits01\liningdigits01} \\ +\hline +\verb=\propdigits=&\textsf{font command} &\verb={\propdigits011\olddigits011}= &{\propdigits011\olddigits011} \\ +\hline +\verb=\tabulardigits=&\textsf{font command} &\verb={\tabulardigits011\olddigits011}= &{\tabulardigits011\olddigits011} \\ +\hline +\end{tabular} + + +\end{table} + + +\section{Using tango} + +\subsection{Generalities} +The tango interface is not so different from that of the standard \TO{article} and \TO{book} document classes. Configuration is essentially a matter of choosing options. + +For advanced use, it is useful to refer to the documentation for the various packages: first, of course, \TO{unicode-math}, \TO{fontspec}, \TO{mathtools} and \TO{amsmath}. But if you want to change the style of titles, for example, you could take a look at the \TO{titlesec} documentation, and to change the style of lists (enumerate, itemize, etc.), take a look at \TO{enumitem}. The \TO{geometry} package is essential for anyone wanting to obtain a particular layout. And so on. +\subsection{Modified standard commands} +Since documents designed with the \TO{article} option can become chapters in a book composed later with the \TO{book} option, the \verb+\part+ command inherited from the \TO{article} class has been deactivated (only for article-typeset documents) + +Similarly, the \TO{article} version benefits from a \verb+\tgotitle+ command that lets you define the main title of the document. The \verb+\tgotitle*+ version exists but does nothing more or less than the unstarred command. However, in the \TO{book} version, \verb+\tgotitle+ is an alias for \verb+\chapter+ (and \verb+\tgotitle*+ is an alias for \verb+\chapter*+), so the unnumbered title of a handout very easily becomes the numbered title of a chapter in a book. This, of course, assumes that the \verb+\includeonly+/\verb+\include+ mechanism is used... A model (currently written in French) is provided in the \TO{examples} directory. + +The command \verb+\tableofcontents+ can only be used with the \TO{book} option; it is deactivated with the \TO{article} option: in this case, you have to use \verb+\tgoshorttoc+ instead (of course \verb+\tgoshorttoc+ is in turn deactivated in the \TO{book} version). Note that, if you need multiple or partial tocs, you have to use a dedicated package. + +\subsection{Using two or more output formats} +What I'm describing here is still rudimentary and experimental. It will be developed further if it proves successful. + +For each output format, two particular commands are provided. For example, in case of the \TO{Smartphone} output option, you have \verb+\SmartphoneCommand+ and \verb+\XSmartphoneCommand+. The \verb+\SmartphoneCommand+ argument is only taken into account if \TO{Output=Smartphone} have been used. Conversely, the \verb+\XSmartphoneCommand+ argument is only taken into account if this option has not been used. +\begin{example}[Examples] +\begin{itemize} +\item \verb+\SmartphoneCommand{\pagebreak}+ asks for a page break only for the smartphone output. +\item \verb+\XSmartphoneCommand{\[< long math formula >\]}+ +\par \verb+\SmartphoneCommand{\begin{multline*}<split formula>\end{multine*}}+ +\par asks for a multline version of a formula only for the smartphone output +\end{itemize} +\end{example} + +Provided commands are: +\begin{itemize} +\item\verb+\AfourCommand+ and \verb+\XAfourCommand+ for the A4 format; +\item\verb+\LetterCommand+ and \verb+\XLetterCommand+ for the letter format; +\item\verb+\AfiveCommand+ and \verb+\XAfiveCommand+ for the A5 format; +\item\verb+\BigTabletCommand+ and \verb+\XBigTabletCommand+ for the big tablet format; +\item\verb+\TabletCommand+ and \verb+\XTabletCommand+ for the tablet format; +\item\verb+\SmallTabletCommand+ and \verb+\XSmallTabletCommand+ for the small tablet format; +\item\verb+\eReaderCommand+ and \verb+\XeReaderCommand+ for the e-reader format; +\item\verb+\SmartphoneCommand+ and \verb+\XSmartphoneCommand+ for the smartphone format. +\end{itemize} +\subsection{All the color themes} +\indent\par +\hspace*{0pt}\hfil\showtheme{Blue}\hfil\showtheme{Azur}\hfil\showtheme{Navy}\hfil\showtheme{USAF}\hfil% +\showtheme{Framboise}\hfil\null +\par\bigskip\par +\hspace*{0pt}\hfil\showtheme{Red}\hfil\showtheme{Brique}\hfil\showtheme{Caramel}\hfil\showtheme{Sienne}\hfil\showtheme{Olive}\hfil\null +\par\bigskip\par +\hspace*{0pt}\hfil\showtheme{Tannen}\hfil\showtheme{GrayGray}\hfil\showtheme{Steel}\hfil\showtheme{Ink}\hfil\showtheme{BlackAndWhite}\hfil\null + +\section{Language settings}\label{lang} +A language option \emph{must} be passed to the \TO{babel} package via the tango class: this is true \emph{even} for English-speaking people. A class error message will be generated otherwise. If you ignore this message you will get no hyphenation patterns at all! + +Tango also has some reserved words, which are (when an english language option is passed to tango):\begin{verbatim} +\newcommand\TgoTheoremName{Theorem} +\newcommand\TgoDefinitionName{Definition} +\newcommand\TgoPropositionName{Proposition} +\newcommand\TgoLemmaName{Lemma} +\newcommand\TgoCorollaryName{Corollary} +\newcommand\TgoRemarkName{Remark} +\newcommand\TgoExampleName{Example} +\newcommand\TgoContentsName{Contents} +\newcommand\TgoExerciseName{Exercise} +\newcommand\TgoExercisesSubsectionName{Exercises} +\newcommand\TgoExercisesSectionName{Exercises} +\end{verbatim} + +Although any language option recognized by babel will (in principle) be taken into account as soon as it is passed to tango, the translation of these reserved words only happens for the following languages: +\begin{itemize} +\item\TO{french}; +\item\TO{english, british, american, canadian, australian, newzealand}; +\item\TO{german, ngerman, naustrian, nswissgerman}; +\item\TO{italian}; +\item\TO{spanish}. +\end{itemize} + +Other languages benefit from babel's facilities, but tango's reserved words are not translated. +So here's what concerned users can do. + +\begin{enumerate} +\item Translate these names in your language (for now it is done only for the french language), using \verb+\renewcommand+. +\item (Better) Mail me all the necessary information (at least babel language option used and your translation of the tango names) and I will adapt the tango class to your language. +\end{enumerate} +\section{Statements}\label{st-section} + +\subsection{Predefined statements} +The environments offered by the tango document class for the statements were defined using the \verb+\newstatement+ command, whose syntax is: +\begin{tcolorbox} +\begin{verbatim} +\newstatement{<environment>}{<counter>}{<statement-name>}[<optionnal-font-command>] +\end{verbatim} +\end{tcolorbox} +For example, the \TO{thm}, \TO{defin}, \TO{propo}, \TO{coro} and \TO{lem} environments have been defined using something like: +\begin{tcolorbox} +\begin{verbatim} +\newcounter{thm} \newstatement{thm}{thm}{Theorem}[\itshape] +\newcounter{defin} \newstatement{defin}{defin}{Definition} +\newcounter{propo} \newstatement{propo}{propo}{Proposition}[\itshape] +\newcounter{coro} \newstatement{coro}{coro}{Corollary} +\newcounter{lem} \newstatement{lem}{lem}{Lemma} +\end{verbatim} +\end{tcolorbox} + + +If you type: + +\begin{tcolorbox} +\begin{verbatim} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm}[pons asinorum] +The angles at the base of an isosceles triangle are equal. +\end{thm} +\end{verbatim} +\end{tcolorbox} + +you will obtain: +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm}[pons asinorum] +The angles at the base of an isosceles triangle are equal. +\end{thm} + +As you can see, each statement defined with \verb+\newstatement+ has an optional bracketed argument (which is displayed within parentheses after the statement name and number). Please, note that these environments should not be used inside a \TO{list}-based environment (like center, quote, enumerate, itemize…). + +For each statement defined with \verb+\newstatement+ there is also +\begin{itemize} +\item a starred form with no statement number: +\begin{tcolorbox} +\begin{verbatim} +\begin{coro*} +The angles at the base of an isosceles triangle are equal. +\end{coro*} +\end{verbatim} +\end{tcolorbox} +\end{itemize} +\begin{coro*} +The angles at the base of an isosceles triangle are equal. +\end{coro*} +\begin{itemize} +\item and an optional first argument delimited with \verb+< >+ to replace locally the full theorem name. +\begin{tcolorbox} +\begin{verbatim} +\begin{thm*}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with +complex coefficients has at least one complex root. +\end{thm*} +\end{verbatim} +\end{tcolorbox} +\end{itemize} +\begin{thm*}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with complex coefficients has at least one complex root. +\end{thm*} + +\subsection{Defining your own statements} +If you need a new statement type, say an axm environment for axioms, it's easy: +\begin{tcolorbox} +\begin{verbatim} +\newcounter{axio} \newstatement{axm}{axio}{Axiom} +\end{verbatim} +\end{tcolorbox} +Note that it is up to you to define the counter for this new environment: if this counter does not still exist, it has to be created with \verb+\newcounter+. Of course, the counter name may be different from the environment name. If you have used the \TO{no-statement} option, you will have to define all the statements you need, with the environment names you prefer. + +\subsection{Redefining existing statements} +The \verb+\newstatement+ command has a \verb+\renewstatement+ companion to redefine existing statement environment. Precisely, you need to use \verb+\renewstatement{foo}…+ instead of \verb+\newstatement{foo}…+ if and only if the \verb+foo+ environment has already been defined. + +\begin{example}[Examples] +\begin{enumerate} +\item You can redefine the \TO{propo} environment in such a way that it uses the same counter as the \TO{thm} environment and is displayed in the upright font: +\begin{tcolorbox} +\begin{verbatim} +\renewstatement{propo}{thm}{Proposition} +\setcounter{thm}{0} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm} +The angles at the base of an isosceles triangle are equal. +\end{thm} +\end{verbatim} +\end{tcolorbox} +\end{enumerate} +\renewstatement{propo}{thm}{Proposition} +\setcounter{thm}{0} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm} +The angles at the base of an isosceles triangle are equal. +\end{thm} + +\begin{enumerate}[resume] +\item If you have already written \emph{all} your algebra book in Latex, with propositions, theorems and corollaries and you realize that, \emph{now}, you want there is no more difference between propositions, theorems and corollaries: the three types of statements should be typeset in italic, named \enquote{Proposition} and numbered with the same counter, you can just use in your preamble: + +\begin{tcolorbox} +\begin{verbatim} +\renewstatement{coro}{thm}{Proposition}[\itshape] +\renewstatement{propo}{thm}{Proposition}[\itshape] +\renewstatement{thm}{thm}{Proposition}[\itshape] +\setcounter{thm}{0} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm} +The sum of two even integers is an even integer. +\end{thm} +\begin{coro} +If two integers have the same parity, their sum is even. +\end{coro} +\end{verbatim} +\end{tcolorbox} +and you will get + +\end{enumerate} +\renewstatement{coro}{thm}{Proposition}[\itshape] +\renewstatement{propo}{thm}{Proposition}[\itshape] +\renewstatement{thm}{thm}{Proposition}[\itshape] +\setcounter{thm}{0} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm} +The sum of two even integers is an even integer. +\end{thm} +\begin{coro} +If two integers have the same parity, their sum is even. +\end{coro} + + +instead of + +\setcounter{thm}{0}\setcounter{propo}{0} +\renewstatement{thm}{thm}{Theorem}[\itshape] +\renewstatement{propo}{propo}{Proposition}[\itshape] +\renewstatement{coro}{coro}{Corollary} +\begin{propo} +The sum of two odd integers is an even integer. +\end{propo} +\begin{thm} +The sum of two even integers is an even integer. +\end{thm} +\begin{coro} +If two integers have the same parity, their sum is even. +\end{coro} +\begin{enumerate}[resume] +\item And finally \verb+\renewstatement+ and \verb+\newstatement+ have a starred form with which statement numbers are displayed \emph{before} the statement name. More, if the statement counter is the subsection or subsubsection counter, the concerned statement titles are displayed in the same form and placement as subsection or subsubsection titles; of course the placement depends on the value of \TO{notitleindent}. +\begin{tcolorbox} +\begin{verbatim} +\renewstatement*{thm}{thm}{Theorem} +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with +complex coefficients has at least one complex root. +\end{thm} +\renewstatement*{thm}{subsection}{Theorem}[\itshape] +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with +complex coefficients has at least one complex root. +\end{thm} +\renewstatement*{thm}{subsubsection}{Theorem} +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with +complex coefficients has at least one complex root. +\end{thm} +\end{verbatim} +\end{tcolorbox} +\end{enumerate} +\end{example} +\renewstatement*{thm}{thm}{Theorem} +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with complex coefficients has +at least one complex root. +\end{thm} +\renewstatement*{thm}{subsection}{Theorem}[\itshape] +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with complex coefficients has +at least one complex root. +\end{thm} +\renewstatement*{thm}{subsubsection}{Theorem} +\begin{thm}<D'Alembert-Gauss theorem>[fundamental theorem of algebra] +Every non-constant single-variable polynomial with complex coefficients has +at least one complex root. +\end{thm} + + + +\section{Exercises} +\subsection{Typesetting exercises} +Tango provides the \verb+\exo+ command which lets you typeset a numbered exercise (the counter is \TO{tgoexo}). There is a starred version, which is not numbered. As for the statements, the bracketed option provides a complementary title between parenthesis and the \enquote{\TO{< >}} marked first option provides a substitution title. +\begin{tcolorbox} +\begin{verbatim} +\exo +Prove that if $G$ is a finite group and $H$ a subgroup of $G$, +then the order of $H$ divides the order of $G$. +\exo[Lagrange theorem] +Prove that if $G$ is a finite group and $H$ a subgroup of $G$, +then the order of $H$ divides the order of $G$. +\end{verbatim} +\end{tcolorbox} +\exo +Prove that if $G$ is a finite group and $H$ a subgroup of $G$, then the order of $H$ divides the order of $G$. +\exo[Lagrange theorem] +Prove that if $G$ is a finite group and $H$ a subgroup of $G$, +then the order of $H$ divides the order of $G$. +\begin{tcolorbox} +\begin{verbatim} +\newcommand\tgostar{\raisebox{-0.5ex}{\large\textborn}} +\exo*<Chinese remainder problem>[\tgostar\tgostar\tgostar] +Let $n_1,\ldots, n_k$ be integers greater than $1$ and let us denote by $N$ +the product of the $n_i$. Prove that if the $n_i are pairwise coprime, and if +$a_1,\ldots, a_k$ are any integers, then the system +\begin{align*} +x&\equiv a_1 \pmod{n_1}\\ +&\!\vdots\\ +x&\equiv a_k \pmod{n_k} +\end{align*} +has a solution, and any two solutions are congruent modulo $N$. +\end{verbatim} +\end{tcolorbox} +\newcommand\tgostar{\raisebox{-0.5ex}{\large\textborn}} +\exo*<Chinese remainder problem>[\tgostar\tgostar\tgostar] +Let $n_1,\ldots, n_k$ be integers greater than $1$ and let us denote by $N$ the product of the $n_i$. +Prove that if the $n_i$ are pairwise coprime, and if $a_1,\ldots, a_k$ are any integers, then the system +\begin{align*} +x&\equiv a_1 \pmod{n_1}\\ +&\!\vdots\\ +x&\equiv a_k \pmod{n_k} +\end{align*} +has a solution, and any two solutions are congruent modulo $N$. +\subsection{The secexo and chapexo environments} +These environments are designed to present a part devoted to exercises at the end of a section (in the case of \TO{secexo}) or a chapter (in the case of \TO{chapexo}). Within these environments, you can use the command \verb+\exo+ + +The title, in capitals and centred, is \enquote{EXERCISES} by default. The optional argument in square brackets allows you to choose another. This title is added to the table of contents. + +Finally, there is a starred form (\verb+\begin{secexo*)+…\verb+\end{secexo*}+ which allows you to compose the exercises within these sections in a smaller font size (exept if the main font size is nine points). + +\begin{tcolorbox} +\begin{verbatim} +\begin{secexo*}[Example of an exercises subsection] +\exo Prove that the sum of two even integers is an even integer. +\exo Prove that the sum of two odd integers is an even integer. +\end{secexo*} +\end{verbatim} +\end{tcolorbox} +\begin{secexo*}[Example of an exercises subsection] +\exo Prove that the sum of two even integers is an even integer. +\exo Prove that the sum of two odd integers is an even integer. +\end{secexo*} + +\section{Lists}\label{lists} +\subsection{General principles} +All the horizontal motion in tango is performed in steps equal to an integer multiple of the \verb+\TgoStandardMargin+ length parameter. When the tango class is loaded, the value of this parameter is set to 1.5em, as are paragraph indentation and title indentation (unless these two values are fixed to zero). Successive labels in the enumerate and itemize environments are therefore successively positioned at 1.5em, 3em, 4.5em, etc. from the main margin. It could be unadvised to change these settings (or this should be done using the enumitem package). +\subsection{List based environments} +There are two main lists configurations. The first, active by default, is set with \verb+\tgostandardlists+; the second is set with \verb+\tgosmartlists+. +% +With \verb+\tgostandardlists+ the text corresponding to a given level is shifted to the right (by a value equal to \verb+\TgoStandardMargin+...) with respect to the corresponding label. +% +With \verb+\tgosmartlists+, conversely, the text corresponding to a given level is shifted to the left (by a value equal to \verb+\TgoStandardMargin+...) in relation to the corresponding label. +\renewtgolabels*\tgostandardlists + +Here is the default behaviour of the \TO{itemize} environment (\TO{enumerate} is not different). +\begin{itemize} +\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\begin{itemize} +\item Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\begin{itemize} +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +\begin{itemize} +\item Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\end{itemize} +\item Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. +\end{itemize}\end{itemize} +\item Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\end{itemize} + +\bigskip + +And now with \verb+\tgosmartlists+ \tgosmartlists +\begin{itemize} +\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\begin{itemize} +\item Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\begin{itemize} +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +\begin{itemize} +\item Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\end{itemize} +\item Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. +\end{itemize}\end{itemize} +\item Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\end{itemize} + +Note that \verb+\tgosmartlists+ seems most interesting when you use mainly the first level of these environments. +Since the \verb+\tgosmartlists+ doesn't support very well a construction like +\begin{tcolorbox} +\begin{verbatim} +\begin{enumerate} +\item\begin{enumerate}\item +… +\end{verbatim} +\end{tcolorbox} +that is frequent in exercises questions, +the \TO{secexo} and \TO{chapexo} environments set locally the lists to \verb+\tgostandardlists+. It is not the case with the \verb+\exo+ command which has no local context. \tgostandardlists + +\subsection{Redefining labels of itemize lists} +Tango provides a \verb+\renewtgolabels+ command which permits to modify the labels of the \TO{itemize} environment. Arguments are numbered from 1 to 4 (there is four levels of itemize lists in Latex) and must be used like in the examples below. +\begin{example}[Examples] +\begin{itemize} +\item\verb=\renewtgolabels1{\lefthand}= will replace the first label by the \verb=\lefthand= symbol. +\renewtgolabels1{\lefthand} +\item\verb=\renewtgolabels4{\textbullet}1{\openbullet}3{\textemdash}= changes the label for the first (again), the third and the fourth levels. Level 2 remains unchanged. As you can see, the order of the arguments is unimportant. \renewtgolabels4{\textbullet}1{\openbullet}3{\textemdash} +\end{itemize} +\end{example} + +There is also a starred form that restore the initial label (as at the load of the class) which are \verb=\textbullet=, \textbullet, for the level 1, \verb=\textopenbullet=, \textopenbullet, for the level 2, \verb=\starredbullet=, \starredbullet, for the level 3 and \verb=\textperiodcentered=, \textperiodcentered{} for the level 4 (note that this is the tango default, but \emph{not} the Latex default). + +\renewtgolabels* +\begin{example}[Examples] +\begin{itemize} +\item\verb=\renewtgolabels*= restore all the initial values. +\item\verb=\renewtgolabels*2{\textendash}= restore initial values except for the second level which is changed to \textendash. +\end{itemize} +\end{example} + + +\section{Other environments} +In addition to the statements environments, the tango class offers the following environments: +\subsection{The remark and example environments} +\begin{tcolorbox} +\begin{verbatim} +\begin{remark} +This is a very good remark. +\end{remark} +\begin{example} +This is a very short example. +\end{example} +\end{verbatim} +\end{tcolorbox} +\begin{remark} +This is a very good remark. +\end{remark} +\begin{example} +This is a very short example. +\end{example} + +These two environments have a bracketed optional argument which displays a replacement title. For example: +\begin{tcolorbox} +\begin{verbatim} +\begin{example}[Remarks] +\begin{enumerate} +\item A first (very good) remark. +\item A second remark (which is best, if possible). +\end{enumerate} +\end{example} +\end{verbatim} +\end{tcolorbox} +\begin{example}[Remarks] +\begin{enumerate} +\item A first (very good) remark. +\item A second remark (which is best, if possible). +\end{enumerate} +\end{example} + +\subsection{The alert environment} +\begin{tcolorbox} +\begin{verbatim} +\begin{alert} +You should not even try to use \verb+\expandafter\expandafter\expandafter+ +unless you are actually a very experimented \TeX{} user, because you could get +a terrible headhache. +\end{alert} +\end{verbatim} +\end{tcolorbox} +\begin{alert} + You should not even try to use \verb+\expandafter\expandafter\expandafter+ +unless you are actually a very experimented \TeX{} user, because you could get +a terrible headhache. +\end{alert} + +The \TO{alert} environment also support an optional bracketed argument. +\begin{tcolorbox} +\begin{verbatim} +\begin{alert}[\bomb] +You should not even try to use \verb+\expandafter\expandafter\expandafter+ +unless you are actually a very experimented \TeX{} user, because you could get +a terrible headhache. +\end{alert} +\end{verbatim} +\end{tcolorbox} +\begin{alert}[\bomb] + You should not even try to use \verb+\expandafter\expandafter\expandafter+ +unless you are actually a very experimented \TeX{} user, because you could get +a terrible headhache. +\end{alert} + +\subsection{The proof environment} +The \TO{proof} environment is adapted from the \TO{amsthm} package. It also support a bracketed optional argument for a replacement title. The \verb+\qedhere+ command is also usable. +\renewstatement{thm}{thm}{Theorem}[\itshape] +\setcounter{thm}{0} +\begin{tcolorbox} +\begin{verbatim} +\begin{thm} +The sum of two odd integers is an even integer. +\end{thm} +\begin{proof} +Let $p$ and $q$ be two odd integers. We have to prove that there +exists an integer $n$ such that $p+q=2n$. +We know that there is an integer $p_1$ and an integer $q_1$ such that +\[p=2p_1+1\text{ and } q=2q_1+1,\] +hence +\begin{align*}p+q&=(2p_1+1)+(2q_1+1)\\ +&=2\underbrace{(p_1+q_1+1)}_{n}\qedhere +\end{align*} +\end{proof} +\end{verbatim} +\end{tcolorbox} +\begin{thm} +The sum of two odd integers is an even integer. +\end{thm} +\begin{proof} +Let $p$ and $q$ be two odd integers. We have to prove that there exists an integer $n$ such that $p+q=2n$. +We know that there is an integer $p_1$ and an integer $q_1$ such that +\[p=2p_1+1\text{ and } q=2q_1+1,\] +hence +\begin{align*}p+q&=(2p_1+1)+(2q_1+1)\\ +&=2\underbrace{(p_1+q_1+1)}_{n}\qedhere +\end{align*} +\end{proof} + +\section{Figures, tables, floats and captions}\label{figtable} +Thanks to the \TO{caption} package, the following have been defined: +\begin{itemize} +\item\verb+\tgofigcaption+ (for figures); +\item and \verb+\tgotabcaption+ (for tables). +\end{itemize} +These two commands provide captions similar in appearance to what could be obtained with \verb+\caption+, but also work in the case of non-floating objects. + +In this way it is possible to include small tables and figures in a fixed position, with nothing in their appearance to distinguish them from floating objects (whose use is still recommended in most cases). + +\end{document} diff --git a/macros/luatex/latex/tango/doc/tango-fr.pdf b/macros/luatex/latex/tango/doc/tango-fr.pdf Binary files differnew file mode 100644 index 0000000000..a4438d58de --- /dev/null +++ b/macros/luatex/latex/tango/doc/tango-fr.pdf diff --git a/macros/luatex/latex/tango/doc/tango-fr.tex b/macros/luatex/latex/tango/doc/tango-fr.tex new file mode 100644 index 0000000000..1ed1a70abf --- /dev/null +++ b/macros/luatex/latex/tango/doc/tango-fr.tex @@ -0,0 +1,786 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[french,ColorTheme=USAF,FontSize=10pt]{tango} +%\setmonofont{Latin Modern Mono}[Scale=MatchUppercase] +\usepackage{longtable,csquotes,lipsum,tcolorbox} +\usepackage[dvipsnames]{xcolor} +\newcommand\DO[1]{\textcolor{ColorOne}{\bfseries #1}} +\newcommand\TO[1]{\textsf{#1}} +%% +\NewDocumentCommand\showtheme{m} +{{\tgosetup{ColorTheme=#1} +\parbox{2.1cm}{\centering +\textsf{#1\rule[-3pt]{0pt}{10pt}}\\ +\colorbox{ColorOne}{\parbox{1.5cm}{\rule[-5pt]{0pt}{15pt}}} +\par +\colorbox{ColorTwo}{\parbox{1.5cm}{\rule[-5pt]{0pt}{15pt}}} +\par +}}} +% +%\tgosmartlists +\renewtgolabels1{\lefthand} +\definecolor{ColorThree}{rgb}{0.93,0.95,0.97} +\tcbset{colback=ColorTwo,colframe=ColorTwo,sharp corners} +\frenchspacing +%\setcounter{section}{88} +\begin{document} + +\renewcommand{\arraystretch}{1.1} +\title{\textcolor{ColorOne}{\floweroneleft}\,La classe de documents tango\,\textcolor{ColorOne}{\floweroneright}} +\author{\href{mailto:michel.bovani@icloud.com}{Michel \textsc{Bovani}}\\ +Page internet de tango: \href{https://tango.mathriochka.net}{https://tango.mathriochka.net}} +\date{\today\\v. 0.8.0} +{\sffamily +\maketitle + +} +\thispagestyle{empty} + +\tgoshorttoc +\section{Qu'est-ce que la classe tango ?} + + +Tango est une classe de documents pour le système de composition Latex (au début du document source, il convient donc de saisir \verb=\documentclass[<options>]{tango}=) à l'usage des professeurs de mathématiques (\emph{grosso modo}, sur le segment bac$-3$-bac$+3$). Elle est conçue pour la composition de divers types de documents, du petit polycopié au livre complet. Pour l'essentiel, le côté \frquote{dédié aux maths} consiste à : +\begin{itemize} +\item Charger des packages dédiés (amsmath, unicode-math \&Co). +\item Proposer des commandes et des environnements pour les théorèmes, propositions, définitions, exercices, etc. +\end{itemize} + +Tango est raisonnablement configurable, même si j'ai dû imposer certains choix : utilisation obligatoire de lualatex, des fontes opentype, et d'une installation récente, notamment. La classe propose huit formats de sortie, dont cinq sont adaptés aux tablettes, liseuses ou smartphones. Un procédé encore imparfait permet d'introduire une saisie particulière pour un format de sortie donné (par exemple de forcer un saut de page pour le format A5 seulement). La classe tango peut aussi être utilisée pour des projets de portée plus générale que des cours de mathématiques : des cours de sciences, bien sûr, mais aussi des choses très différentes, si l'on est prêt à un effort de configuration supplémentaire (voir le répertoire \TO{candide} dans les exemples). + +Une autre classe Latex, conçue pour réaliser des documents support au travail scolaire (énoncés d'exercices, sujets de devoirs ou d'examens) devrait être disponible sous peu. Il est prévu qu'elle se nomme \frquote{\TO{bravo}}. + +\section{Panorama des options} +Veuillez noter que le tableau ci-dessous mentionne pour l’essentiel les options effectivement traitées par tango. D'autres options peuvent être, lorsqu’elles sont utilisées à l'appel de la classe, simplement transmises à certains packages. C'est le cas par exemple des options de langues de babel, ou de l'option \TO{math-style} passée au package unicode-math. + +Les valeurs par défaut sont présentées en bleu gras. Les options en gras, marquées d'un astérisque, peuvent être activées dans le préambule ou le corps du document à l'aide de la commande \verb+\tgosetup+ : par exemple, vous pouvez utiliser \verb+\tgosetup{ColorTheme=Navy}+ pour changer les couleurs à l'intérieur de votre document. Les autres options ne peuvent être utilisées qu'à l'appel de la classe. + +\begin{longtable}{p{0.23\linewidth}p{0.7\linewidth}} +\caption[]{Les options de la classe tango}\\ +\textbf{Option}&\textbf{Utilisation}\\ +\hline\endhead +\hline\multicolumn{2}{r}{\emph{Voir page suivante}}\endfoot +\hline\endlastfoot +\TO{% +french, english, british, american, canadian, australian, newzealand, german, ngerman, naustrian, nswissgerman, italian, spanish}.& Tango transmettra au package \TO{babel} toutes les options de langue. En revanche, la traduction des noms spécifiques employés par tango (comme théorème, exercice, etc.) n'est assurée que pour les langues listées ci-contre. Notez bien que même les locuteurs anglais doivent \emph{impérativement} passer une option de langue à tango. + +Voir la section~\ref{lang} plus loin.\\ +\hline +\TO{no-statement}&\TO{no-statement=true/\DO{false}}. Des environnements \TO{thm}, \TO{defin}, \TO{lem}, \TO{coro}, \TO{propo} (pour présenter les théorèmes, définitions, lemmes, corollaires et propositions) sont définis par défaut. L'option \DO{no-statement} vous permet de définir ces environnements vous-même avec une configuration plus personnelle (voir les commandes \verb=\newstatement= and \verb=\renewstatement= dans la section~\ref{st-section} page~\pageref{st-section}).\\ +\hline +\TO{no-hyperref}&\TO{no-hyperref=true/\DO{false}}. Si vous souhaitez vous contenter d'une sortie papier…\\ +\hline +\TO{no-indent/indent}&\TO{no-indent=true/\DO{false}}. Les retraits d'alinéa sont présents par défaut. L'option \TO{no-indent} (alias court de \TO{no-indent = true}) les supprime. Une option \TO{indent} existe également, quoiqu'elle ne soit pas très utile.\\ +\hline +\TO{no-titleindent}/\TO{titleindent}&Les retraits d'alinéa pour les titres sont présents par défaut en français uniquement. (La raison en est qu'en typographie française le premier paragraphe après un titre subit ce retrait comme les autres paragraphes, ce qui n'est pas le cas en typo anglaise : je préfère donc dans ce cas, mais cela peut être débattu, que le titre subisse lui aussi ce retrait.) Vous pouvez utiliser \TO{no-tiltleindent} en français ou \TO{titleindent} en anglais pour changer le comportement pas défaut. Ces deux options doivent être appelées \emph{après} l'option de langue.\\ +\hline +\TO{\textbf{ThmNamePos*}}&\TO{ThmNamePos=<valeur>} ou \TO{<valeur>} peut être \TO{\DO{left}} ou \TO{right}. Le nom de l'énoncé (Théorème, Définition, etc.) est affiché à gauche ou à droite de l'encadré.\\ +\hline +\TO{PubliClass}&\TO{PubliClass=<valeur>} où \TO{<valeur>} peut être \TO{\DO{article}} ou \TO{book}. Indique la classe de base souhaitée (la classe standard \TO{article} ou la classe standard \TO{book}). La classe tango est conçue de telle sorte que des petits polycopiés fabriqués au jour le jour et composés avec l'option \TO{article} puissent être regroupés et devenir les chapitres d'un même volume avec l'option \TO{book}. Voyez le répertoire \texttt{mathematics} dans la partie exemples de la documentation. Avec l'option \TO{article}, les commandes \verb=\part= et \verb=\tableofontents= sont désactivées. La commande \verb=\tgoshorttoc= peut être utilisée pour obtenir un sommaire au début d'une monographie ou d'un polycopié.\\ +\hline +\TO{oneside/twoside}& L'option \TO{twoside} est pour une sortie en recto verso, alors que \TO{oneside} est adaptée au recto simple. La valeur par défaut est \TO{\DO{oneside}}. Pour l'instant, il n'y a pas d'ajustement des marges intérieures et extérieures avec \TO{twoside} mais il est techniquement facile de réaliser des blancs tournants à votre convenance grâce à la commande \verb=\geometry= employée dans le préambule. Notez que les gens compliqués ou amateurs de détours pourront préférer \TO{twoside=false} à \TO{oneside}.\\ +\hline +\TO{FontSize}&\TO{FontSize=<valeur>} où \TO{<valeur>} peut être \TO{9pt}, \TO{\DO{10pt}}, \TO{11pt} ou \TO{12pt}.\\ +\hline +\TO{\textbf{ColorTheme*}}&\TO{ColorTheme=<valeur>} où \TO{<valeur>} peut être \TO{Blue, Navy, USAF, Azur, Red, Framboise, Brique, Sienne, Caramel, Olive, Tannen, \DO{GrayGray}, BlackAndWhite, Ink} or \TO{Steel}. Chaque choix définit un ensemble de deux couleurs, une soutenue (ColorOne) pour les titres et une très claire (ColorTwo) pour le fond des encadrés.\\ +\hline +\TO{\textbf{ColorOne*}/\textbf{ColorTwo*}}& Ces options permettent à l'utilisateur de définir les couleurs d'un thème personnel; dans les deux cas la valeur doit être un argument acceptable pour la commande \verb=\definecolor=. Voir la documentation du package xcolor, chargé sans option par tango. +\begin{example}[Exemples] + \begin{itemize} + \item\TO{ColorOne=}\verb={rgb}{0.75,0.1,0.05}= + \item\TO{ColorOne=}\verb={cmyk}{0,0.8,0.8,0.2}= + \item\TO{ColorTwo=}\verb={{rgb}{0.75,0.96,0.75}}= (notez que les accolades extérieures sont acceptées sans être obligatoires). +\end{itemize} +\end{example} +\\ +\hline +\TO{\textbf{ColorOneNamed*}} / \\ +\TO{\textbf{ColorTwoNamed*}}& + Ces options permettent à l'utilisateur de définir les couleurs d'un thème personnel; dans les deux cas la valeur doit être un argument acceptable pour la commande \verb=\colorlet=. Voir la documentation du package xcolor, chargé sans options par tango. +\begin{example}[Exemples] + \begin{itemize} + \item\TO{ColorOneNamed=}\verb={red!70!blue}= +\item\TO{ColorTwoNamed=}\verb={yellow!12}= + \end{itemize} +\end{example} +Si vous souhaitez utiliser un ensemble de couleurs prédéfinies, disons par exemple \TO{dvipsnames}, il vous suffit de recharger le package \TO{xcolor} avec l'option \TO{dvipsnames} dans le préambule, puis d'utiliser la commande \verb=\tgosetup= : +\begin{itemize} +\item \verb+\tgosetup{ColorOneNamed={RedOrange!80!BrickRed}}+ + \end{itemize} +\\ +\hline +\TO{Output}&\TO{Output=<valeur>} où \TO{<valeur>} peut être \TO{\DO{A4paper}, Letter, A5paper, BigTablet, Tablet, SmallTablet, eReader} ou \TO{Smartphone}. \TO{BigTablet}, \TO{Tablet} et \TO{SmallTablet} correspondent à des écrans de 13, 11 et 8.5 pouces respectivement; \TO{eReader} configurée pour une liseuse 6 pouces. Veuillez noter qu'en ce qui concerne les formats \TO{eReader} et \TO{Smartphone}, tango demande à Latex un format supérieur au format réel, si bien que les tailles des polices sont inférieures à ce que l'on pourrait attendre. Ainsi, l'option \TO{FontSize=9pt} peut fournir des résultats qui sembleront difficilement lisibles.\\ +\hline + \TO{Numbers}& \TO{Numbers=<valeur>} où \TO{<valeur>} peut être \TO{TextOldStyle, OldStyle, MathOldStyle, FullOldstyle}. Si vous ne demandez rien, vous obtenez les chiffres habituels, à hauteur d'une lettre capitale, parfois nommés \frquote{lining}. +\begin{itemize} +\item \TO{Numbers=TextOldStyle} sélectionne les chiffres bas de casse ({\olddigits 0123456789}) of de la police erewhon (fonte texte de base) pour tout. +\item \TO{Numbers=OldStyle} sélectionne les chiffres bas de casse pour toutes les fontes de texte du document. +\item \TO{Numbers=MathOldStyle} sélectionne les chiffres bas de casse uniquement pour les mathématiques (je ne vois aucune bonne raison de procéder ainsi). +\item \TO{Numbers=FullOldStyle} sélectionne les chiffres bas de casse aussi bien pour les fontes de texte que pour les mathématiques. +\end{itemize} +Remarquons qu'il est toujours possible de basculer localement des chiffres sélectionnés par cette option à une de leurs variantes (par exemple les titres de section sont numérotés à l'aide de \frquote{grands} chiffres, dans la mesure où ces titres sont eux-mêmes en capitales).\\ +\hline +\TO{StylisticSet}&\TO{StylisticSet=\{<valeur1>, <valeur2>,…\}} où \TO{<valeur1>, <valeur2>,} etc. sont à prendre parmi \TO{upint, leqslant, smaller, subsetneq} et \TO{parallelslant}. Ces options concernent la fonte Erewhon-Math, qui est une version opentype du système scientifique Fourier-Gutenberg, (très) étendue par Daniel \textsc{Flipo}. Pour plus d'informations, voir la documentation d'Erewhon-Math (\verb=texdoc erewhon-math= dans un terminal).\\ +\hline +\TO{CharacterVariant}&\TO{CharacterVariant=\{<valeur1>, <valeur2>,…\}} \TO{<valeur1>, <valeur2>,} etc. sont à prendre parmi \TO{zero, hslash, emptyset, epsilon, kappa, pi, phi, rho, sigma, theta, partial, Ecal, Qcal} et \TO{Tcal}. Ces options concernent la fonte Erewhon-Math, qui est une version opentype du système scientifique Fourier-Gutenberg, (très) étendue par Daniel \textsc{Flipo}. Pour plus d'informations, voir la documentation d'Erewhon-Math (\verb=texdoc erewhon-math= dans un terminal).\\ +\end{longtable} + +\section{Liste des packages chargés par la classe tango} +Je ne mentionne ici que les packages directement chargés par tango. Chacun d'eux peut à son tour charger d'autres packages. + +\begin{itemize} +\item \verb=\RequirePackage{xcolor}=. Le package \TO{xcolor} est utilisé par la classe tango pour définir les couleurs des différents thèmes. Il est appelé sans option, mais vous pouvez le recharger dans le préambule avec des options comme \TO{dvipsnames}, \TO{svgnames} ou \TO{x11names}. +\item\verb=\RequirePackage{mathtools}=. Le package \TO{mathtools} charge le package \TO{amsmath}. +\item\verb=\RequirePackage{geometry}=. Utilisé par tango pour définir l'empagement des différents formats de sortie. Vous pouvez utiliser la commande \verb=\geometry= dans votre préambule pour modifier ce empagement, et même la maquette entière. +\item\verb=\RequirePackage{enumitem}=. Utilisé par la classe tango pour configurer les différents environnements basés sur \TO{list} (voir la section~\ref{lists}). Ces configurations peuvent être modifiées par l'utilisateur dans le préambule. +\item\verb=\RequirePackage{titletoc}=. Utilisé par la classe tango pour fixer l'apparence de la table des matières, que l'utilisateur peut modifier dans le préambule. +\item\verb=\RequirePackage[pagestyles,toctitles,newlinetospace,clearempty,noindentafter]{titlesec}=. Utilisé par la classe tango pour modifier l'apparence des titres de différents niveaux. Ces configurations peuvent être modifiées par l'utilisateur dans le préambule. +\item\verb=\RequirePackage{ccaption,caption}=. Utilisé par la classe tango pour configurer l'apparence des légendes des figures et des tables. (voir la section~\ref{figtable}). +\item\verb=\RequirePackage{fontspec}\RequirePackage{unicode-math}=. La classe tango requiert \TO{lualatex} et les fontes opentype, y compris pour la composition des mathématiques. Voir la section~\ref{fnts} ci-dessous. +\item\verb=\RequirePackage{iflang}=. La classe tango utilise ce package pour envoyer un message d'erreur dans le cas où elle n'a reçu aucune option de langue pour \TO{babel}. +\item\verb=\RequirePackage{babel}=. Le package babel est appelé sans option. Les options de babel lui seront transmises par la classe tango. %See section~\ref{lang} below. +\item\verb+\RequirePackage[colorlinks,linkcolor=ColorOne,urlcolor=ColorOne]{hyperref}+.\par Cette configuration d'\TO{hyperref} peut être modifiée en utilisant la commande \verb=\hypersetup= dans le préambule. Vous pouvez aussi utiliser l'option \TO{no-hyperref}. +\item\verb=\RequirePackage{array,graphicx,microtype,numprint,float,afterpage}=. Ces packages sont chargés mais non explicitement utilisés par tango. +\end{itemize} + +\section{Fontes}\label{fnts} + +\subsection{Le système de fontes de tango} +La fonte principale est Erewhon, une version opentype d'Utopia (une fonte PosScript de type~1 qui fut conçue par Robert \textsc{Slimbach} en 1989, puis donnée au X-consortium par Adobe et figurant finalement sur TeXlive. Contrairement à Utopia, Erewhon, dessinée par Michael \textsc{Sharpe}, couvre un assez grand nombre de langues et offre de nombreuses possibilités accessibles à travers les fonctionnalités du format opentype. Il faut savoir également qu'Adobe commercialise une version opentype d'Utopia, moins riche en glyphes qu'Erewhon, mais pourvue d'une graisse intermédiaire et de corps optiques. + +La fonte scientifique est Erewhon~Math, un complément scientifique à Erewhon, conçu par Daniel \textsc{Flipo}. D'un certain point de vue, Erewhon est le pendant opentype de Fourier-Gutenberg, le complément scientifique d'Utopia type~1 conçu par mes soins en 2002. Erewhon~Math offre un grand nombre de fonctionnalités, rendues accessibles par Daniel à travers le package \TO{fourier-otf}. La classe tango ne charge pas le package \TO{fourier-otf} mais propose toutes ses fonctionnalités à travers son système d'options. + +La fonte sans sérif de tango est Noto Sans, mise à l'échelle. Il s'agit d'une fonte de texte, supportant les alphabets latin, grec et cyrillique, et pourvue de graisses multiples. + +La fonte utilisée pour les Titres de premier niveau (commande \verb=\tgotitle=) est Roboto Condensed Bold (puisque les graisses condensées de Noto Sans ne figurent pas sur TeXlive). + +La fonte à chasse fixe est Inconsolatazi4, mise à l'échelle. + +Enfin, tango appelle le package fourier-orns: il s'agit d'une fonte de logos et de symboles conçue par mes soins comme complément au système fourier et récemment pourvue d'une version opentype. + +\subsection{Utiliser tango avec un autre système de fontes} +Il est évidemment possible d'utiliser les commandes \verb=\setmainfont=, \verb=\setsansfont= et \verb=\setmonofont= du package \TO{fontspec}, ainsi que la commande \verb=\setmathfont= du package \TO{unicode-math} dans le préambule de votre document afin de modifier les paramètres de la classe tango. Ce ne sont pas des modifications que je recommande. En revanche, la distribution tango pourrait à l'avenir proposer une autre classe pourvue d'un autre système de fontes. Une telle classe Latex pourrait se nommer charlie, ou foxtrot ou zulu… + + +\subsection{“Font commands” et “text font commands”} +Je nomme ici “Font commands” des commandes dont la portée n'est limitée que par un groupe ou un environnement. Je nomme “Text font commands”, à l'opposé, des commandes dont la portée est limitée à leur argument, lequel ne doit contenir aucun saut de paragraphe. Par exemple, \verb=\bfseries= est une “font command” et \verb=\textbf= est une “text font command”. La raison de ces dénominations, dont j'admets qu'elles sont fort critiquables, est que \verb+\textbf+ est défini de façon interne par : +\begin{tcolorbox} +\begin{verbatim} +\DeclareTextFontCommand{\textbf}{\bfseries} +\end{verbatim} +\end{tcolorbox} + +Voici ce qui est proposé par la classe tango (voir le tableau~\ref{otfcmd}, \pageref{otfcmd}). Toutes ces commandes devraient fonctionner aussi bien avec Erewhon qu'avec Noto Sans. + +\begin{table}[ht] +\XTabletCommand{\centering\setlength\tabcolsep{9pt}} +\TabletCommand{\centering} +\caption{Les commandes opentype de la classe tango}\label{otfcmd} +\ifTgoTabletOutput\begin{tabular}{l | l | l | l}% +\else +\begin{tabular}{llll}% +\fi +\hline +\multicolumn{1}{c}{\textsf{\bfseries Commande}}& +\multicolumn{1}{c}{\textsf{\bfseries Nature}}& +\multicolumn{1}{c}{\textsf{\bfseries Exemple}}& +\multicolumn{1}{c}{\textsf{\bfseries Resultat}}\\ +\hline +\verb=\superiors=&\textsf{font command} & \verb=1{\superiors re}=&1{\superiors re}\\ +\hline +\verb=\scinferiors=&\textsf{font command} &\verb={\scinferiors C6H12O3}= &{\scinferiors C6H12O3}\\ +\hline +\verb=\smartfracs=&\textsf{font command} &\verb=2{\smartfracs1/3}= &2{\smartfracs1/3} \\ +\hline +\verb=\fullsc=&\textsf{text font command} &\verb=\fullsc{Chapitre}= &\fullsc{Chapitre} \\ +\hline +\verb=\textsup=&\textsf{text font command} &\verb=1\textsup{re}=&1\textsup{re} \\ +\hline +\verb=\textscinf=&\textsf{text font command} &\verb=\textscinf{C6H12O3}= &\textscinf{C6H12O3} \\ +\hline +\verb=\smartfrac=&\textsf{text font command} &\verb=2\smartfrac{3/4}= &2\smartfrac{3/4} \\ +\hline +\verb=\olddigits=&\textsf{font command} &\verb={\olddigits01234}= &{\olddigits01234} \\ +\hline +\verb=\liningdigits=&\textsf{font command} &\verb={\olddigits01\liningdigits01}= &{\olddigits01\liningdigits01} \\ +\hline +\verb=\propdigits=&\textsf{font command} &\verb={\propdigits011\olddigits011}= &{\propdigits011\olddigits011} \\ +\hline +\verb=\tabulardigits=&\textsf{font command} &\verb={\tabulardigits011\olddigits011}= &{\tabulardigits011\olddigits011} \\ +\hline +\end{tabular} + + +\end{table} + + + +%\medskip + + +\section{Utilisation de la classe tango} + +\subsection{Généralités} +Concernant l'interface utilisateur, tango n'est pas très différente des classes \TO{article} ou \TO{book}. La configuration se fait essentiellement à travers le choix des options. + +Les utilisateurs avancés devraient se référer à la documentation des différents packages : tout d'abord \TO{unicode-math}, \TO{fontspec}, \TO{mathtools} et \TO{amsmath}. Mais si vous souhaitez, par exemple, changer le style des titres, vous pourrez consulter la documentation \TO{titlesec} ; afin de changer le style d'une liste (enumerate, itemize, etc.), voyez plutôt \TO{enumitem}. Le package \TO{geometry} est essentiel pour quiconque souhaiterait obtenir une mise en page particulière. Et ainsi de suite. + + + +\subsection{Modification de commandes standard par la classe tango} + +Afin que des documents composés avec l'option \TO{article} puissent devenir les chapitres d'un livre composé de façon ultérieure avec l'option \TO{book}, la commande \verb+\part+, héritée de la classe \TO{article}, a été désactivée (seulement pour les documents composés avec l'option \TO{article}). + + +De même, la version \TO{article} bénéficie de la commande \verb+\tgotitle+ qui permet de définir le titre principal du document. La version étoilée \verb+\tgotitle*+ existe, mais fait exactement la même chose que la commande non étoilée. Cependant, dans la version \TO{book}, \verb+\tgotitle+ est un alias pour \verb+\chapter+ (et \verb+\tgotitle*+ est de même un alias de \verb+\chapter*+), ainsi, un titre non numéroté dans un polycopié peut facilement devenir le titre numéroté d'un chapitre de livre. Sous réserve évidemment qu'un mécanisme comme \verb+\includeonly+/\verb+\include+ ait été utilisé. Un modèle (pour l'instant en français) est fourni dans le répertoire \TO{examples}. + +La commande \verb+\tableofcontents+ ne peut être utilisée qu'avec l'option \TO{book}; elle est désactivée avec l'option \TO{article}: elle est alors remplacée par la commande \verb+\tgoshortoc+ (qui est elle-même désactivée avec l'option \TO{book}). Si vous avez besoin de tables des matières multiples et/ou partielles, il faudra vous tourner vers un package spécialisé. + +\subsection{Utiliser deux ou plusieurs formats de sortie} +Les fonctionnalités décrites ici ont un caractère rudimentaire et sont de nature expérimentale. Elles pourront, selon leur succès, être développées dans les versions ultérieures de la classe tango. + +Pour chaque format de sortie, deux commandes particulières sont fournies. Par exemple, dans le cas de l'option \TO{Output=Smartphone}, vous disposez de \verb+\SmartphoneCommand+ et \verb+\XSmartphoneCommand+. L'argument de la commande \verb+\SmartphoneCommand+ n'est pris en compte que si le format de sortie \TO{Smartphone} a été sélectionné. Inversement, l'argument de \verb+\XSmartphoneCommand+ n'est pris en compte que si ce format \emph{n'a pas été} utilisé. +\begin{example}[Exemples] +\begin{itemize} +\item \verb+\SmartphoneCommand{\pagebreak}+ crée un saut de page uniquement pour la sortie smartphone. +\item \verb+\XSmartphoneCommand{\[<longue formule de maths>\]}+ +\par \verb+\SmartphoneCommand{\begin{multline*}<formule sur plusieurs lignes>\end{multine*}}+ +\par crée une version \TO{multline} (cf. \TO{amsmath}) d'une formule pour la sortie smartphone uniquement. +\end{itemize} +\end{example} + +Les commandes proposées par tango sont : +\begin{itemize} +\item\verb+\AfourCommand+ and \verb+\XAfourCommand+ pour la sortie A4paper; +\item\verb+\LetterCommand+ and \verb+\XLetterCommand+pour la sortie letter; +\item\verb+\AfiveCommand+ and \verb+\XAfiveCommand+ pour la sortie A5paper; +\item\verb+\BigTabletCommand+ and \verb+\XBigTabletCommand+ pour la sortie BigTablet; +\item\verb+\TabletCommand+ and \verb+\XTabletCommand+ pour la sortie Tablet; +\item\verb+\SmallTabletCommand+ and \verb+\XSmallTabletCommand+ pour la sortie SmallTablet; +\item\verb+\eReaderCommand+ and \verb+\XeReaderCommand+ pour la sortie eReader; +\item\verb+\SmartphoneCommand+ and \verb+\XSmartphoneCommand+ pour la sortie Smartphone. +\end{itemize} +\subsection{Tous les thèmes de couleur} +\indent\par +\hspace*{0pt}\hfil\showtheme{Blue}\hfil\showtheme{Azur}\hfil\showtheme{Navy}\hfil\showtheme{USAF}\hfil% +\showtheme{Framboise}\hfil\null +\par\bigskip\par +\hspace*{0pt}\hfil\showtheme{Red}\hfil\showtheme{Brique}\hfil\showtheme{Caramel}\hfil\showtheme{Sienne}\hfil\showtheme{Olive}\hfil\null +\par\bigskip\par +\hspace*{0pt}\hfil\showtheme{Tannen}\hfil\showtheme{GrayGray}\hfil\showtheme{Steel}\hfil\showtheme{Ink}\hfil\showtheme{BlackAndWhite}\hfil\null + +\section{Sélection de la langue}\label{lang} +Il est impératif de passer une option de langue à babel par l'intermédiaire de la classe tango : cela est vrai même pour les personnes de langue anglaise. Un message d'erreur sera généré par la classe tango si celle-ci n'a reçu aucune option de langue à transmettre à \TO{babel} ; si vous ignorez ce message, vous devrez travailler sans aucun motif de césure. + +Tango possède également certains mots réservés qui sont (lorsque l'option french est passée à tango) : + +\begin{tcolorbox} +\begin{verbatim} +\renewcommand\TgoTheoremName{Théorème} +\renewcommand\TgoDefinitionName{Définition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemme} +\renewcommand\TgoCorollaryName{Corollaire} +\renewcommand\TgoRemarkName{Remarque} +\renewcommand\TgoExampleName{Exemple} +\renewcommand\TgoContentsName{Sommaire} +\renewcommand\TgoExerciseName{Exercice} +\renewcommand\TgoExercisesSubsectionName{Exercices} +\renewcommand\TgoExercisesSectionName{Exercices} +\end{verbatim} +\end{tcolorbox} + +Même si toute option de langue reconnue par babel sera (en principe) prise en compte dès lors qu'elle est passée à tango, la traduction de ces mots réservés n'a lieu que pour les langues suivantes : +\begin{itemize} +\item\TO{french}; +\item\TO{english, british, american, canadian, australian, newzealand}; +\item\TO{german, ngerman, naustrian, nswissgerman}; +\item\TO{italian}; +\item\TO{spanish}. +\end{itemize} + +Les autres langues bénéficient des facilités offertes par babel, mais les mots réservés de tango ne sont pas traduits. +Voici donc ce que peuvent faire les utilisateurs concernés. +\begin{enumerate} +\item Utiliser \verb+\renewcommand+ pour faire ces traductions eux-mêmes. +\item (Mieux) me communiquer par mail toute l'information nécessaire (au moins l'option de langue utilisée pour babel et une traduction des mots réservés) de façon à ce que je puisse procéder aux adaptations nécessaires. +\end{enumerate} + +\section{Théorèmes et énoncés divers}\label{st-section} + +\subsection{Éléments prédéfinis} +Les environnements permettant de saisir les divers énoncés indispensables aux enseignants de mathématiques (définitions, théorèmes, propositions, etc.) sont définis grâce à la commande \verb+\newstatement+ dont la syntaxe est : +\begin{tcolorbox} +\begin{verbatim} +\newstatement{<environnement>}{<compteur>}{<nom-générique-de-l'énoncé>}[<font-command-optionnelle>] +\end{verbatim} +\end{tcolorbox} +Par exemple, les environnements, \TO{thm}, \TO{defin}, \TO{propo}, \TO{coro} et \TO{lem} ont été définis par quelque chose comme : +\begin{tcolorbox} +\begin{verbatim} +\newcounter{thm} \newstatement{thm}{thm}{Théorème}[\itshape] +\newcounter{defin} \newstatement{defin}{defin}{Définition} +\newcounter{propo} \newstatement{propo}{propo}{Proposition}[\itshape] +\newcounter{coro} \newstatement{coro}{coro}{Corollaire} +\newcounter{lem} \newstatement{lem}{lem}{Lemme} +\end{verbatim} +\end{tcolorbox} + +Si vous saisissez +% +\begin{tcolorbox} +\begin{verbatim} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm}[pons asinorum] +Les angles à la base d'un triangle isocèle sont égaux. +\end{thm} +\end{verbatim} +\end{tcolorbox} +% +vous obtenez +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm}[pons asinorum] +Les angles à la base d'un triangle isocèle sont égaux. +\end{thm} + +Comme vous pouvez le voir, chaque énoncé défini à l'aide de \verb+\newstatement+ dispose d'un argument optionnel délimité par des crochets (dont le contenu s'affiche entre parenthèses après le nom et le numéro de l'énoncé). Notez également que ces environnements ne devraient pas être utilisés à l'intérieur d'un autre environnement basé sur \TO{list} (comme \TO{center, quote, enumerate, itemize}…). + +Pour chaque type d'énoncé défini à l'aide de \verb+\newstatement+ existe également +\begin{itemize} +\item une forme étoilée non numérotée: +\begin{tcolorbox} +\begin{verbatim} +\begin{coro*} +Les angles à la base d'un triangle isocèle sont égaux. +\end{coro*} +\end{verbatim} +\end{tcolorbox} +\end{itemize} +\begin{coro*} +Les angles à la base d'un triangle isocèle sont égaux. +\end{coro*} +\begin{itemize} +\item un premier argument optionnel délimité par \verb+< >+ qui permet de remplacer localement le nom générique de l'énoncé. +\begin{tcolorbox} +\begin{verbatim} +\begin{thm*}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes +possède au moins une racine complexe. +\end{thm*} +\end{verbatim} +\end{tcolorbox} +\end{itemize} +\begin{thm*}<Théorème de d'Alembert-Gauss>[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes possède au moins une racine complexe. +\end{thm*} + + +\subsection{Configurer vos propres types énoncés} +Si vous avez besoin d'un nouveau type d'énoncé, disons un environnement \TO{axm} pour les axiomes, c'est tout simple: +\begin{tcolorbox} +\begin{verbatim} +\newcounter{axio} \newstatement{axm}{axio}{Axiom} +\end{verbatim} +\end{tcolorbox} +Remarquez bien qu'il vous revient alors de définir le compteur utilisé par cet environnement : si ce compteur n'existe pas déjà, il vous faut le créer à l'aide de la commande \verb+\newcounter+. Bien sûr, le nom du compteur peut être différent de celui de l'environnement. Si vous avez utilisé l'option \TO{no-statement}, vous aurez d'ailleurs à définir tous les types d'énoncé dont vous avez besoin, avec des noms et des compteurs de votre choix. + +\subsection{Redéfinir des types d'énoncés} +La commande \verb+\newstatement+ a pour compagnon \verb+\renewstatement+ qui permet de redéfinir l'environnement associé à un type d'énoncé préexistant. Précisément, vous devez employer \verb+\renewstatement{foo}…+ plutôt que \verb+\newstatement{foo}…+ si et seulement si l'environnement \verb+foo+ a déjà été défini. + +\begin{example}[Exemples] +\begin{enumerate} +\item Vous pouvez redéfinir l'environnement \TO{propo} de telle façon qu'il utilise le même compteur que l'environnement \TO{thm} avec un contenu affiché en caractères romains: +\begin{tcolorbox} +\begin{verbatim} +\renewstatement{propo}{thm}{Proposition} +\setcounter{thm}{0} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm} +Les angles à la base d'un triangle isocèle sont égaux. +\end{thm} +\end{verbatim} +\end{tcolorbox} +\end{enumerate} +\renewstatement{propo}{thm}{Proposition} +\setcounter{thm}{0} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm} +Les angles à la base d'un triangle isocèle sont égaux. +\end{thm} + +\begin{enumerate}[resume] +\item Si vous venez de terminer la saisie en Latex de \emph{l'intégralité} de votre traité d'algèbre, lequel contient propositions, théorèmes et corollaires, et que vous réalisez maintenant que ce que vous voulez c'est qu'il n'y ait plus de différence entre propositions, théorèmes et corollaires, les trois types d'énoncés devant être composés en italique, se nommer \frquote{proposition} et être numérotés avec le même compteur, vous pouvez simplement saisir dans le préambule: + +\begin{tcolorbox} +\begin{verbatim} +\renewstatement{coro}{thm}{Proposition}[\itshape] +\renewstatement{propo}{thm}{Proposition}[\itshape] +\renewstatement{thm}{thm}{Proposition}[\itshape] +\end{verbatim} +\end{tcolorbox} +Alors avec +\begin{tcolorbox} +\begin{verbatim} +\setcounter{thm}{0} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm} +La somme de deux entiers pairs est un entier pair.\end{thm} +\begin{coro} +Si deux entiers ont la même parité, leur somme est un entier pair. +\end{coro} +\end{verbatim} +\end{tcolorbox} +vous obtiendrez: +\end{enumerate} +\renewstatement{coro}{thm}{Proposition}[\itshape] +\renewstatement{propo}{thm}{Proposition}[\itshape] +\renewstatement{thm}{thm}{Proposition}[\itshape] +\setcounter{thm}{0} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm} +La somme de deux entiers pairs est un entier pair. +\end{thm} +\begin{coro} +Si deux entiers ont la même parité, leur somme est un entier pair. +\end{coro} +% +au lieu de +% +\setcounter{thm}{0}\setcounter{propo}{0} +\renewstatement{thm}{thm}{Théorème}[\itshape] +\renewstatement{propo}{propo}{Proposition}[\itshape] +\renewstatement{coro}{coro}{Corollaire} +\begin{propo} +La somme de deux entiers impairs est un entier pair. +\end{propo} +\begin{thm} +La somme de deux entiers pairs est un entier pair. +\end{thm} +\begin{coro} +Si deux entiers ont la même parité, leur somme est un entier pair. +\end{coro} +\begin{enumerate}[resume] +\item Pour finir, \verb+\renewstatement+ et \verb+\newstatement+ ont une forme étoilée qui permet d'obtenir un type d'énoncé dont le numéro est affiché avant le nom. Mieux, si le compteur utilisé pour ce type d'énoncé est \TO{subsection} ou \TO{subsubsection}, les titres de ces énoncés sont affichés avec la même apparence et le même placement que les titres de subsection ou de subsubsection; bien sûr ce placement dépend de la valeur de \TO{notitleindent}. +\begin{tcolorbox} +\begin{verbatim} +\renewstatement*{thm}{thm}{Theorème} +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} +\renewstatement*{thm}{subsection}{Theorème}[\itshape] +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} +\renewstatement*{thm}{subsubsection}{Theorème} +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} +\end{verbatim} +\end{tcolorbox} +\end{enumerate} +\end{example} +\renewstatement*{thm}{thm}{Theorème} +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} +\renewstatement*{thm}{subsection}{Theorème}[\itshape] +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} +\renewstatement*{thm}{subsubsection}{Theorème} +\begin{thm}<Théorème de d'Alembert-Gauss> +[théorème fondamental de l'algèbre] +Tout polynôme non constant à coefficients complexes + possède au moins une racine complexe. +\end{thm} + + + +\section{Exercices} +\subsection{Commandes permettant la mise en forme d'exercices} +La classe tango fournit la commande \verb+\exo+ qui permet de présenter des énoncés d'exercices numérotés (le compteur est \TO{tgoexo}). Il existe une version étoilée, sans numéro. Comme pour les types d'énoncés, l'argument optionnel entre crochets permet d'obtenir un complément au titre, composé entre parenthèses et la première option, balisée par \frquote{\TO{< >}} permet d'obtenir un titre de substitution. +\begin{tcolorbox} +\begin{verbatim} +\exo +Démontrer que si $G$ est un groupe fini et $H$ un +sous-groupe de $G$, l'ordre de $H$ divise l'ordre de $G$. +\exo[théorème de Lagrange] +Démontrer que si $G$ est un groupe fini et $H$ un +sous-groupe de $G$, l'ordre de $H$ divise l'ordre de $G$. +\end{verbatim} +\end{tcolorbox} +\exo +Démontrer que si $G$ est un groupe fini et $H$ un +sous-groupe de $G$, l'ordre de $H$ divise l'ordre de $G$. +\exo[théorème de Lagrange] +Démontrer que si $G$ est un groupe fini et $H$ un +sous-groupe de $G$, l'ordre de $H$ divise l'ordre de $G$. +\begin{tcolorbox} +\begin{verbatim} +\newcommand\tgostar{\raisebox{-0.5ex}{\large\textborn}} +\exo*<Problème des restes chinois>[\tgostar\tgostar\tgostar] +Soit $n_1,\ldots, n_k$ $k$ entiers strictement supérieurs à $1$. Notons $N$ +le produit des $n_i$. Démontrer que si les $n_i$ sont premiers entre eux deux +à deux et si $a_1,\ldots, a_k$ sont des entiers quelconques, le système +\begin{align*} +x&\equiv a_1 \pmod{n_1}\\ +&\!\vdots\\ +x&\equiv a_k \pmod{n_k} +\end{align*} +possède une solution, unique modulo $N$. +\end{verbatim} +\end{tcolorbox} +\newcommand\tgostar{\raisebox{-0.5ex}{\large\textborn}} +\exo*<Problème des restes chinois>[\tgostar\tgostar\tgostar] +Soit $n_1,\ldots, n_k$ $k$ entiers strictement supérieurs à $1$. Notons $N$ +le produit des $n_i$. Démontrer que si les $n_i$ sont premiers entre eux deux à deux et si +$a_1,\ldots, a_k$ sont des entiers quelconques, le système +\begin{align*} +x&\equiv a_1 \pmod{n_1}\\ +&\!\vdots\\ +x&\equiv a_k \pmod{n_k} +\end{align*} +possède une solution, unique modulo $N$. +\subsection{Environnements secexo et chapexo} +Ces deux environnements conçus pour présenter une partie consacrée aux exercices à la fin d'une section (dans le cas de \TO{secexo}) ou d'un chapitre (dans le cas de \TO{chapexo}). À l'intérieur de ces environnements, on utilise en principe la commande \verb+\exo+. + +Le titre, en capitales et centré, est \frquote{EXERCICES} par défaut; l'argument optionnel entre crochets vous permet d'en choisir un autre. Ce titre est ajouté à la table des matières ou au sommaire. + +Enfin, ces commandes possèdent des formes étoilées (\verb+\begin{secexo*)+…\verb+\end{secexo*}+) qui vous permettront de composer ces parties consacrées aux exercices dans un corps plus petit (excepté si la taille de la fonte principale du document est 9pt). + +\begin{tcolorbox} +\begin{verbatim} +\begin{secexo*}[Exemple d'une partie consacrée aux exercices] +\exo Démontrer que la somme de deux entiers pairs est un entier pair. +\exo Démontrer que la somme de deux entiers impairs est un entier pair. +\end{secexo*} +\end{verbatim} +\end{tcolorbox} +\begin{secexo*}[Exemple d'une partie consacrée aux exercices] +\exo Démontrer que la somme de deux entiers pairs est un entier pair. +\exo Démontrer que la somme de deux entiers impairs est un entier pair. +\end{secexo*} + +\section{Listes}\label{lists} +\subsection{Principes généraux} +En ce qui concerne les marges, les déplacements horizontaux dans tango se font par pas multiples entiers de \verb+\TgoStandardMargin+. Au chargement de la classe, la valeur de ce paramètre est fixée à 1.5em, ainsi que les retraits d'alinéas et les retraits subis par les titres (à moins que ces valeurs ne soient fixées à zéro). les marqueurs successifs des environnements itemize et enumerate sont donc positionnés à 1.5em, 3em, 4.5em, etc. de la marge principale. Il n'est pas forcément recommandé de changer cette configuration (si vous souhaitez le faire, il convient d'utiliser le package \TO{enumitem}). + +\subsection{Environnements basés sur l'environnement list} +Il existe deux façons de configurer les listes dans tango. La première, active par défaut, est obtenue grâce à la commande \verb+\tgostandardlists+; la seconde grâce à la commande \verb+\tgosmartlists+. +% +Avec \verb+\tgostandardlists+, le texte correspondant à un niveau donné est décalé vers la droite (d'une quantité égale à \verb+\TgoStandardMargin+...) par rapport au marqueur correspondant. +% +Avec \verb+\tgosmartlists+, à l'inverse, le texte correspondant à un niveau donné est décalé vers la gauche (d'une quantité égale à \verb+\TgoStandardMargin+...) par rapport au marqueur correspondant. +\renewtgolabels*\tgostandardlists + +Voici le comportement par défaut de l'environnement \TO{itemize} (de ce point de vue \TO{enumerate} n'est pas différent). +\begin{itemize} +\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\begin{itemize} +\item Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\begin{itemize} +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +\begin{itemize} +\item Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\end{itemize} +\item Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. +\end{itemize}\end{itemize} +\item Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\end{itemize} + +\bigskip + +Et maintenant, avec \verb+\tgosmartlists+ \tgosmartlists +\begin{itemize} +\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\begin{itemize} +\item Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\begin{itemize} +\item Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +\begin{itemize} +\item Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. +\end{itemize} +\item Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. +\end{itemize}\end{itemize} +\item Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. +\end{itemize} + +Notez que \verb+\tgosmartlists+ peut sembler intéressant lorsque l'on utilise essentiellement le premier niveau de ces environnements. +Dans la mesure où \verb+\tgosmartlists+ supporte assez mal une construction comme +\begin{tcolorbox} +\begin{verbatim} +\begin{enumerate} +\item\begin{enumerate}\item +… +\end{verbatim} +\end{tcolorbox} +fréquente dans la numérotation des questions d'exercices, +les environnements \TO{secexo} et \TO{chapexo} basculent localement vers \verb+\tgostandardlists+. Cela n'est pas le cas de \verb+\exo+ qui, en en tant que commande, n'a pas de contexte propre, contrairement aux environnements. \tgostandardlists + +\subsection{Redéfinition de certains marqueurs de liste pour itemize} +La classe tango fournit la commande \verb+\renewtgolabels+ qui permet de modifier les marqueurs de l'environnement \TO{itemize}. Les arguments des quatre niveaux sont numérotés de 1 à 4 et doivent être utilisés comme ci-dessous. + +\begin{example}[Exemples] +\begin{itemize} +\item\verb=\renewtgolabels1{\lefthand}= remplace le marqueur du niveau 1 par le symbole \lefthand. +\renewtgolabels1{\lefthand} +\item\verb=\renewtgolabels4{\textbullet}1{\openbullet}3{\textemdash}= change les marqueurs des premier, troisième et quatrième niveaux. Le marquer du niveau 2 est inchangé. Comme vous le voyez, l'ordre des arguments est sans importance. \renewtgolabels4{\textbullet}1{\openbullet}3{\textemdash} +\end{itemize} +\end{example} + +Il existe également une version étoilée, qui restaure l'état initial des marqueurs (tel qu'au chargement de la classe), soit \verb=\textbullet=, \textbullet, pour le niveaul~1, \verb=\textopenbullet=, \textopenbullet, pour le niveau~2, \verb=\starredbullet=, \starredbullet, pour le niveau~3 et \verb=\textperiodcentered=, \textperiodcentered{} pour le niveau~4 (remarquez que ce sont les valeurs par défaut pour tango, mais \emph{non} pour Latex). + +\renewtgolabels* +\begin{example}[Exemples] +\begin{itemize} +\item\verb=\renewtgolabels*= restaure toutes les valeurs initiales. +\item\verb=\renewtgolabels*2{\textendash}= restaure les valeurs initiales, sauf pour le deuxième niveau qui utilisera désormais \textendash. +\end{itemize} +\end{example} + + +\section{Autres environnements} +En plus des environnements définis pour les types d'énoncés, la classe tango offre les quatre environnements suivants. + +\subsection{Environnements remark et example} +\begin{tcolorbox} +\begin{verbatim} +\begin{remark} +Voici une excellente remarque. +\end{remark} +\begin{example} +Voici un très court exemple. +\end{example} +\end{verbatim} +\end{tcolorbox} +\begin{remark} +Voici une excellente remarque. +\end{remark} +\begin{example} +Voici un très court exemple. +\end{example} + +Ces deux environnements ont un argument optionnel entre crochets qui permet de définir un titre alternatif. Par exemple: +\begin{tcolorbox} +\begin{verbatim} +\begin{example}[Remarques] +\begin{enumerate} +\item Une première (et excellente) remarque. +\item Une seconde remarque (encore meilleure, si cela est possible). +\end{enumerate} +\end{example} +\end{verbatim} +\end{tcolorbox} +\begin{example}[Remarques] +\begin{enumerate} +\item Une première (et excellente) remarque. +\item Une seconde remarque (encore meilleure, si cela est possible). +\end{enumerate} +\end{example} + +\subsection{Environnement alert} +\begin{tcolorbox} +\begin{verbatim} +\begin{alert} +Vous ne devriez pas envisager d'utiliser +\verb+\expandafter\expandafter\expandafter+ +à moins que vous ne soyez un utilisateur expérimenté de +\TeX{}, car vous pourriez attraper une terrible migraine. +\end{alert} +\end{verbatim} +\end{tcolorbox} +\begin{alert} +Vous ne devriez pas envisager d'utiliser \verb+\expandafter\expandafter\expandafter+ +à moins que vous ne soyez un utilisateur expérimenté de \TeX{}, car vous pourriez attraper une terrible migraine. +\end{alert} + +L'environnement \TO{alert} propose lui aussi un argument optionnel entre crochets. +\begin{tcolorbox} +\begin{verbatim} +\begin{alert}[\bomb] +Vous ne devriez pas envisager d'utiliser +\verb+\expandafter\expandafter\expandafter+ +à moins que vous ne soyez un utilisateur expérimenté de +\TeX{}, car vous pourriez attraper une terrible migraine. +\end{alert} +\end{verbatim} +\end{tcolorbox} +\begin{alert}[\bomb] +Vous ne devriez pas envisager d'utiliser +\verb+\expandafter\expandafter\expandafter+ +à moins que vous ne soyez un utilisateur expérimenté de +\TeX{}, car vous pourriez attraper une terrible migraine. +\end{alert} + +\subsection{Environnement proof} +L'environnement \TO{proof} est une adaptation de ce que fournit le package \TO{amsthm}. Un titre alternatif est rendu possible grâce à l'argument optionnel entre crochets. La commande \verb+\qedhere+ est également utilisable. +\renewstatement{thm}{thm}{Théorème}[\itshape] +\setcounter{thm}{0} +\begin{tcolorbox} +\begin{verbatim} +\begin{thm} +La somme de deux entiers impairs est un entier pair. +\end{thm} +\begin{proof} +Soit $p$ et $q$ deux entiers impairs. Nous devons +établir qu'il existe un entier $n$ tel que $p+q=2n$. +Nous connaissons l'existence d'un entier $p_1$ +et d'un entier $q_1$ tels que +\[p=2p_1+1\text{ et } q=2q_1+1,\] +par conséquent +\begin{align*}p+q&=(2p_1+1)+(2q_1+1)\\ +&=2\underbrace{(p_1+q_1+1)}_{n}\qedhere +\end{align*} +\end{proof} +\end{verbatim} +\end{tcolorbox} +\begin{thm} +La somme de deux entiers impairs est un entier pair. +\end{thm} +\begin{proof} +Soit $p$ et $q$ deux entiers impairs. Nous devons +établir qu'il existe un entier $n$ tel que $p+q=2n$. +Nous connaissons l'existence d'un entier $p_1$ +et d'un entier $q_1$ tels que +\[p=2p_1+1\text{ et } q=2q_1+1,\] +par conséquent +\begin{align*}p+q&=(2p_1+1)+(2q_1+1)\\ +&=2\underbrace{(p_1+q_1+1)}_{n}\qedhere +\end{align*} +\end{proof} + +\section{Figures, tableaux, flottants et légendes}\label{figtable} +Grâce au package \TO{caption}, les commandes suivantes ont été définies: +\begin{itemize} +\item\verb+\tgofigcaption+ (pour les figures); +\item and \verb+\tgotabcaption+ (pour les tableaux). +\end{itemize} +Ces deux commandes permettent d'obtenir des légendes de même apparence que ce que ferait la commande \verb+\caption+, mais fonctionnent également dans le cas d'objets non flottants. + +Ainsi il devient possible d'inclure des tableaux et des figures en position fixe, sans que rien ne permette de les distinguer des objets flottants (dont l'usage reste recommandé dans la plupart des cas). + +\end{document} diff --git a/macros/luatex/latex/tango/examples/Ch-1-15.tex b/macros/luatex/latex/tango/examples/Ch-1-15.tex new file mode 100644 index 0000000000..4f3d7984d1 --- /dev/null +++ b/macros/luatex/latex/tango/examples/Ch-1-15.tex @@ -0,0 +1,1312 @@ +\chapter[Comment \bname{Candide} fut élevé…] +{Comment \bname{Candide} fut élevé dans un\\ beau château,\\ et comment il fut +chassé d’icelui} + + +\lettrine{I}{l y avait} en \bname{Westphalie}, dans le château de M.~le baron de +Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné les +mœurs les plus douces. Sa physionomie annonçait son âme. Il avait le +jugement assez droit, avec l’esprit le plus simple; c’est, je crois, +pour cette raison qu’on le nommait \bname{Candide}. Les anciens domestiques de +la maison soupçonnaient qu’il était fils de la sœur de M.~le +baron et d’un bon et honnête gentilhomme du voisinage, que cette +demoiselle ne voulut jamais épouser parce qu’il n’avait pu prouver que +soixante et onze quartiers, et que le reste de son arbre généalogique +avait été perdu par l’injure du temps. + +M. le baron était un des plus puissants seigneurs de la +\bname{Westphalie}, car son château avait une porte et des fenêtres. Sa grande +salle même était ornée d’une tapisserie. Tous les chiens de ses +basses-cours composaient une meute dans le besoin; ses palefreniers +étaient ses piqueurs; le vicaire du village était son grand-aumônier. +Ils l’appelaient tous \bname{Monseigneur}, et ils riaient quand il faisait des +contes. + +M\up{me} la baronne, qui pesait environ trois cent cinquante livres, +s’attirait par là une très grande considération, et faisait les honneurs +de la maison avec une dignité qui la rendait encore plus respectable. +Sa fille \bname{Cunégonde}, âgée de dix-sept ans, était haute en couleur, +fraîche, grasse, appétissante. Le fils du baron paraissait en tout +digne de son père. Le précepteur \bname{Pangloss} était l’oracle de la +maison, et le petit \bname{Candide} écoutait ses leçons avec toute la bonne foi +de son âge et de son caractère. + + + + +\bname{Pangloss} enseignait la métaphysico-théologo-cosmo\-lo\-ni\-go\-logie. Il +prouvait admirablement qu’il n’y a point d’effet sans cause, et que, +dans ce meilleur des mondes possibles, le château de monseigneur le +baron était le plus beau des châteaux, et madame la meilleure des +baronnes possibles. + + + +\frquote{Il est démontré, disait-il, que les choses ne peuvent être autrement; +car tout étant fait pour une fin, tout est nécessairement pour la +meilleure fin. Remarquez bien que les nez ont été faits pour porter des +lunettes; aussi avons-nous des lunettes. Les jambes sont visiblement +instituées pour être chaussées, et nous avons des chausses. Les pierres +ont été formées pour être taillées et pour en faire des châteaux; aussi +monseigneur a un très beau château: le plus grand baron de la province +doit être le mieux logé; et les cochons étant faits pour être mangés, +nous mangeons du porc toute l’année: par conséquent, ceux qui ont +avancé que tout est bien ont dit une sottise; il fallait dire que tout +est au mieux.} + + + +\bname{Candide} écoutait attentivement, et croyait innocemment; car il trouvait +M\up{lle}~\bname{Cunégonde} extrêmement belle, quoiqu’il ne prît jamais la +hardiesse de le lui dire. Il concluait qu’après le bonheur d’être né +baron de Thunder-ten-tronckh, le second degré de bonheur était d’être +M\up{lle}~\bname{Cunégonde}; le troisième, de la voir tous les jours; et le +quatrième, d’entendre maître \bname{Pangloss}, le plus grand philosophe de la +province, et par conséquent de toute la terre. + + +Un jour \bname{Cunégonde}, en se promenant auprès du château, dans le petit +bois qu’on appelait \emph{parc}, vit entre des broussailes le docteur +\bname{Pangloss} qui donnait une leçon de physique expérimentale à la femme de +chambre de sa mère, petite brune très jolie et très docile. Comme +M\up{lle}~\bname{Cunégonde} avait beaucoup de dispositions pour les sciences, +elle observa, sans souffler, les expériences réitérées dont elle fut +témoin; elle vit clairement la raison suffisante du docteur, les effets +et les causes, et s’en retourna tout agitée, toute pensive, toute +remplie du désir d’être savante, songeant qu’elle pourrait bien être la +raison suffisante du jeune \bname{Candide},\linebreak qui pouvait aussi être la sienne. + +Elle rencontra \bname{Candide} en revenant au château, et rougit: \bname{Candide} +rougit aussi. Elle lui dit bonjour d’une voix entrecoupée; et \bname{Candide} +lui parla sans savoir ce qu’il disait. Le lendemain, après le dîner, +comme on sortait de table, \bname{Cunégonde} et \bname{Candide} se trouvèrent derrière +un paravent; \bname{Cunégonde} laissa tomber son mouchoir, \bname{Candide} le ramassa; +elle lui prit innocemment la main; le jeune homme baisa innocemment la +main de la jeune demoiselle avec une vivacité, une sensibilité, une +grâce toute particulière; leurs bouches se rencontrèrent, leurs yeux +s’enflammèrent, leurs genoux tremblèrent, leurs mains s’égarèrent. +M.~le baron de Thunder-ten-tronckh passa auprès du paravent, et voyant +cette cause et cet effet, chassa \bname{Candide} du château à grands coups de +pied dans le derrière. \bname{Cunégonde} s’évanouit: elle fut souffletée par +M\up{me}~la baronne dès qu’elle fut revenue à elle-même; et tout fut +consterné dans le plus beau et le plus agréable des châteaux possibles. + + + + +\chapter{Ce que devint \bname{Candide} parmi les Bulgares} + + +\lettrine{C}{andide}, chassé du paradis terrestre, marcha longtemps sans savoir où, +pleurant, levant les yeux au ciel, les tournant souvent vers le plus +beau des châteaux qui renfermait la plus belle des baronnettes; il se +coucha sans souper au milieu des champs entre deux sillons; la neige +tombait à gros flocons. \bname{Candide}, tout transi, se traîna le lendemain +vers la ville voisine, qui s’appelle Valdberghoff-trarbk-dikdorff, +n’ayant point d’argent, mourant de faim et de lassitude. Il s’arrêta +tristement à la porte d’un cabaret. Deux hommes habillés de bleu le +remarquèrent: «Camarade, dit l’un, voilà un jeune homme très bien fait, +et qui a la taille requise.» Ils s’avancèrent vers \bname{Candide} et le +prièrent à dîner très civilement. «Messieurs, leur dit \bname{Candide} avec une +modestie charmante, vous me faites beaucoup d’honneur, mais je n’ai pas +de quoi payer mon écot. — Ah! monsieur, lui dit un des bleus, les +personnes de votre figure et de votre mérite ne paient jamais rien: +n’avez-vous pas cinq pieds cinq pouces de haut? — Oui, messieurs, c’est +ma taille, dit-il en faisant la révérence. — Ah! monsieur, mettez-vous à +table; non seulement nous vous défraierons, mais nous ne souffrirons +jamais qu’un homme comme vous manque d’argent; les hommes ne sont faits +que pour se secourir les uns les autres. — Vous avez raison, dit \bname{Candide}; +c’est ce que M. \bname{Pangloss} m’a toujours dit, et je vois bien que tout est +au mieux.» On le prie d’accepter quelques écus, il les prend et veut +faire son billet; on n’en veut point, on se met à table. «N’aimez-vous +pas tendrement?… — Oh! oui, répond-il, j’aime tendrement M\up{lle}~\bname{Cunégonde}. — Non, dit l’un de ces messieurs, nous vous demandons si vous +n’aimez pas tendrement le roi des Bulgares? — Point du tout, dit-il, car +je ne l’ai jamais vu. — Comment! c’est le plus charmant des rois, et il +faut boire à sa santé. — Oh! très volontiers, messieurs.» Et il boit. «C’en +est assez, lui dit-on, vous voilà l’appui, le soutien, le défenseur, le +héros des Bulgares; votre fortune est faite, et votre gloire est +assurée.» On lui met sur-le-champ les fers aux pieds, et on le mène au +régiment. On le fait tourner à droite, à gauche, hausser la baguette, +remettre la baguette, coucher en joue, tirer, doubler le pas, et on lui +donne trente coups de bâton; le lendemain, il fait l’exercice un peu +moins mal, et il ne reçoit que vingt coups; le surlendemain, on ne lui +en donne que dix, et il est regardé par ses camarades comme un prodige. + + +\bname{Candide}, tout stupéfait, ne démêlait pas encore trop bien comment il +était un héros. Il s’avisa un beau jour de printemps de s’aller +promener, marchant tout droit devant lui, croyant que c’était un +privilège de l’espèce humaine, comme de l’espèce animale, de se servir +de ses jambes à son plaisir. Il n’eut pas fait deux lieues que voilà +quatre autres héros de six pieds qui l’atteignent, qui le lient, qui le +mènent dans un cachot. On lui demanda juridiquement ce qu’il aimait le +mieux d’être fustigé trente-six fois par tout le régiment, ou de +recevoir à-la-fois douze balles de plomb dans la cervelle. Il eut beau +dire que les volontés sont libres, et qu’il ne voulait ni l’un ni +l’autre, il fallut faire un choix; il se détermina, en vertu du don de +Dieu qu’on nomme \textit{liberté}, à passer trente-six fois par les baguettes; +il essuya deux promenades. Le régiment était composé de deux mille +hommes; cela lui composa quatre mille coups de baguette, qui, depuis la +nuque du cou jusqu’au cul, lui découvrirent les muscles et les nerfs. +Comme on allait procéder à la troisième course, \bname{Candide}, n’en pouvant +plus, demanda en grâce qu’on voulût bien avoir la bonté de lui casser +la tête; il obtint cette faveur; on lui bande les yeux; on le fait +mettre à genoux. Le roi des Bulgares passe dans ce moment, s’informe du +crime du patient; et comme ce roi avait un grand génie, il comprit, par +tout ce qu’il apprit de \bname{Candide}, que c’était un jeune métaphysicien +fort ignorant des choses de ce monde, et il lui accorda sa grâce avec +une clémence qui sera louée dans tous les journaux et dans tous les +siècles. Un brave chirurgien guérit \bname{Candide} en trois semaines avec les +émollients enseignés par \bname{Dioscoride}. Il avait déjà un peu de peau et +pouvait marcher, quand le roi des Bulgares livra bataille au roi des +Abares. + + + +\chapter[Comment \bname{Candide} se sauva…]{Comment \bname{Candide} se sauva d’entre\\ les Bulgares, et ce qu’il devint} + + +\lettrine{R}{ien} n’était si beau, si leste, si brillant, si bien ordonné que les +deux armées. Les trompettes, les fifres, les hautbois, les tambours, +les canons, formaient une harmonie telle qu’il n’y en eut jamais en +enfer. Les canons renversèrent d’abord à peu près six mille hommes de +chaque côté; ensuite la mousqueterie ôta du meilleur des mondes environ +neuf à dix mille coquins qui en infectaient la surface. La baïonnette +fut aussi la raison suffisante de la mort de quelques milliers +d’hommes. Le tout pouvait bien se monter à une trentaine de mille âmes. +\bname{Candide}, qui tremblait comme un philosophe, se cacha du mieux qu’il put +pendant cette boucherie héroïque. + +Enfin, tandis que les deux rois faisaient chanter des \textit{Te Deum}, chacun +dans son camp, il prit le parti d’aller raisonner ailleurs des effets +et des causes. Il passa par-dessus des tas de morts et de mourants, et +gagna d’abord un village voisin; il était en cendres: c’était un +village abare que les Bulgares avaient brûlé, selon les lois du droit +public. Ici des vieillards criblés de coups regardaient mourir leurs +femmes égorgées, qui tenaient leurs enfants à leurs mamelles +sanglantes; là des filles éventrées après avoir assouvi les besoins +naturels de quelques héros, rendaient les derniers soupirs; d’autres à +demi brûlées criaient qu’on achevât de leur donner la mort. Des +cervelles étaient répandues sur la terre à côté de bras et de jambes +\bname{coupés}. + +\bname{Candide} s’enfuit au plus vite dans un autre village: il appartenait à +des Bulgares, et les héros abares l’avaient traité de même. \bname{Candide}, +toujours marchant sur des membres palpitants ou à travers des ruines, +arriva enfin hors du théâtre de la guerre, portant quelques petites +provisions dans son bissac, et n’oubliant jamais M\up{lle}~\bname{Cunégonde}. Ses provisions lui manquèrent quand il fut en \bname{Hollande}; mais +ayant entendu dire que tout le monde était riche dans ce pays-là, et +qu’on y était chrétien, il ne douta pas qu’on ne le traitât aussi bien +qu’il l’avait été dans le château de M.~le baron, avant qu’il en eût +été chassé pour les beaux yeux de M\up{lle}~\bname{Cunégonde}. + +Il demanda l’aumône à plusieurs graves personnages, qui lui répondirent +tous que, s’il continuait à faire ce métier, on l’enfermerait dans une +maison de correction pour lui apprendre à vivre. + +Il s’adressa ensuite à un homme qui venait de parler tout seul une +heure de suite sur la charité dans une grande assemblée. Cet orateur le +regardant de travers lui dit: «Que venez-vous faire ici? y êtes-vous +pour la bonne cause? — Il n’y a point d’effet sans cause, répondit +modestement \bname{Candide}; tout est enchaîné nécessairement et arrangé pour +le mieux. Il a fallu que je fusse chassé d’auprès de M\up{lle}~\bname{Cunégonde}, que j’aie passé par les baguettes, et il faut que je demande +mon pain, jusqu’à ce que je puisse en gagner; tout cela ne pouvait être +autrement. — Mon ami, lui dit l’orateur, croyez-vous que le pape soit +l’antechrist? — Je ne l’avais pas encore entendu dire, répondit \bname{Candide}: +mais qu’il le soit, ou qu’il ne le soit pas, je manque de pain. — Tu ne +mérites pas d’en manger, dit l’autre: va, coquin, va, misérable, ne +m’approche de ta vie.» La femme de l’orateur ayant mis la tête à la +fenêtre, et avisant un homme qui doutait que le pape fût antechrist, +lui répandit sur le chef un plein… Ô ciel! à quel excès se porte le +zèle de la religion dans les dames! + +Un homme qui n’avait point été baptisé, un bon anabaptiste, nommé +Jacques, vit la manière cruelle et +ignominieuse dont on traitait ainsi +un de ses frères, un être à deux pieds sans plumes, qui avait une âme; +il l’amena chez lui, le nettoya, lui donna du pain et de la bière, lui +fit présent de deux florins, et voulut même lui apprendre à travailler +dans ses manufactures aux étoffes de Perse qu’on fabrique en \bname{Hollande}. +\bname{Candide} se prosternant presque devant lui, s’écriait: «Maître \bname{Pangloss} +me l’avait bien dit que tout est au mieux dans ce monde, car je suis +infiniment plus touché de votre extrême générosité que de la dureté de +ce monsieur à manteau noir, et de madame son épouse.» + +Le lendemain, en se promenant, il rencontra un gueux tout couvert de +pustules, les yeux morts, le bout du nez rongé, la bouche de travers, +les dents noires, et parlant de la gorge, tourmenté d’une toux +violente, et crachant une dent à chaque effort. + + + + + +\chapter[Comment \bname{Candide} rencontra…]{Comment \bname{Candide} rencontra son ancien maître de\\ philosophie, le docteur +\bname{Pangloss}, et ce qui en advint} + + +\lettrine{C}{andide}, plus ému encore de compassion que d’horreur, donna à cet +épouvantable gueux les deux florins qu’il avait reçus de son honnête +anabaptiste Jacques. \textls[-10]{Le fantôme le regarda fixement, versa des larmes, +et sauta à son cou. \bname{Candide} effrayé recule. «Hélas! dit le misérable à +l’autre misérable, ne reconnaissez-vous plus votre cher \bname{Pangloss}? +— Qu’entends-je? vous, mon cher maître! vous, dans cet état horrible! +Quel malheur vous est-il donc arrivé? Pourquoi n’êtes-vous plus dans le +plus beau des châteaux? qu’est devenue M\up{lle}~\bname{Cunégonde}, la perle +des filles, le chef-d’œuvre de la nature? — Je n’en peux plus, dit +\bname{Pangloss}.» Aussitôt \bname{Candide} le mena dans l’étable de l’anabaptiste, où +il lui fit manger un peu de pain; et quand \bname{Pangloss} fut refait: «Eh +bien! lui dit-il, \bname{Cunégonde}? — Elle est morte, reprit l’autre.»} \bname{Candide} +s’évanouit à ce mot: son ami rappela ses sens avec un peu de mauvais +vinaigre qui se trouva par hasard dans l’étable. \bname{Candide} rouvre les +yeux. «\bname{Cunégonde} est morte! Ah! meilleur des mondes, où êtes-vous? Mais +de quelle maladie est-elle morte? ne serait-ce point de m’avoir vu +chasser du beau château de monsieur son père à grands coups de pied? +— Non, dit \bname{Pangloss}, elle a été éventrée par des soldats bulgares, après +avoir été violée autant qu’on peut l’être; ils ont cassé la tête à +M. le baron qui voulait la défendre; M\up{me}~la baronne a été +coupée en morceaux; mon pauvre pupille traité précisément comme sa +sœur; et quant au château, il n’est pas resté pierre sur pierre, pas +une grange, pas un mouton, pas un canard, pas un arbre; mais nous avons +été bien vengés, car les Abares en ont fait autant dans une baronnie +voisine qui appartenait à un seigneur bulgare.» + +À ce discours, \bname{Candide} s’évanouit encore; mais revenu à soi, et ayant +dit tout ce qu’il devait dire, il s’enquit de la cause et de l’effet, +et de la raison suffisante qui avait mis \bname{Pangloss} dans un si piteux +état. «Hélas! dit l’autre, c’est l’amour: l’amour, le consolateur du +genre humain, le conservateur de l’univers, l’âme de tous les êtres +sensibles, le tendre amour. — Hélas! dit \bname{Candide}, je l’ai connu cet +amour, ce souverain des cœurs, cette âme de notre âme; il ne m’a +jamais valu qu’un baiser et vingt coups de pied au cul. Comment cette +belle cause a-t-elle pu produire en vous un effet si abominable?» + +\bname{Pangloss} répondit en ces termes: «Ô mon cher \bname{Candide}! vous avez connu +\bname{Paquette}, cette jolie suivante de notre auguste baronne: j’ai goûté +dans ses bras les délices du paradis, qui ont produit ces tourments +d’enfer dont vous me voyez dévoré; elle en était infectée, elle en est +peut-être morte. \bname{Paquette} tenait ce présent d’un cordelier très savant +qui avait remonté à la source, car il l’avait eu d’une vieille +comtesse, qui l’avait reçu d’un capitaine de cavalerie, qui le devait à +une marquise, qui le tenait d’un page, qui l’avait reçu d’un jésuite, +qui, étant novice, l’avait eu en droite ligne d’un des compagnons de +Christophe Colomb. Pour moi, je ne le donnerai à personne, car je me +meurs. + + +— Ô \bname{Pangloss}! s’écria \bname{Candide}, voilà une étrange généalogie! n’est-ce pas +le diable qui en fut la souche? — Point du tout, répliqua ce grand homme; +c’était une chose indispensable dans le meilleur des mondes, un +ingrédient nécessaire; car si \bname{Colomb} n’avait pas attrapé dans une île +de \mbox{l’Amérique} cette maladie qui empoisonne la source de la +génération, + qui souvent même empêche la génération, et qui est +évidemment l’opposé du grand but de la nature, nous n’aurions ni le +chocolat ni la cochenille; il faut encore observer que +jusqu’aujourd’hui, dans notre continent, cette maladie nous est +particulière, comme la controverse. Les \bname{Turcs}, les \bname{Indiens}, les +\bname{Persans}, les \bname{Chinois}, les \bname{Siamois}, les \bname{Japonais}, ne la connaissent pas +encore; mais il y a une raison suffisante pour qu’ils la connaissent à +leur tour dans quelques siècles. En attendant elle a fait un +merveilleux progrès parmi nous, et surtout dans ces grandes armées +composées d’honnêtes stipendiaires bien élevés, qui décident du destin +des états; on peut assurer que, quand trente mille hommes combattent en +bataille rangée contre des troupes égales en nombre, il y a environ +vingt mille vérolés de chaque côté. + +— Voilà qui est admirable, dit \bname{Candide}; mais il faut vous faire guérir. +— Et comment le puis-je? dit \bname{Pangloss}; je n’ai pas le sou, mon ami, et +dans toute l’étendue de ce globe on ne peut ni se faire saigner, ni +prendre un lavement sans payer, ou sans qu’il y ait quelqu’un qui paie +pour nous.» + +\looseness=-1 +Ce dernier discours détermina \bname{Candide}; il alla se jeter aux pieds de +son charitable anabaptiste Jacques, et lui fit une peinture si +touchante de l’état où son ami était réduit, que le bonhomme n’hésita +pas à recueillir le docteur \bname{Pangloss}; il le fit guérir à ses dépens. +\bname{Pangloss}, dans la cure, ne perdit qu’un œil et une oreille. Il +écrivait bien, et savait parfaitement l’arithmétique. L’anabaptiste +Jacques en fit son teneur de livres. Au bout de deux mois, étant obligé +d’aller à \bname{Lisbonne} pour les affaires de son commerce, il mena dans son +vaisseau ses deux philosophes. \bname{Pangloss} lui expliqua comment tout était +on ne peut mieux. Jacques n’était pas de cet avis. «Il faut bien, +disait-il, que les hommes aient un peu corrompu la nature, car ils ne +sont point nés loups, et ils sont devenus loups. Dieu ne leur a donné +ni canons de vingt-quatre, ni baïonnettes, et ils se sont fait des +baïonnettes et des canons pour se détruire. Je pourrais mettre en ligne +de compte les banqueroutes, et la justice qui s’empare des biens des +banqueroutiers pour en frustrer les créanciers. — Tout cela était +indispensable, répliquait le docteur borgne, et les malheurs +particuliers font le bien général; de sorte que plus il y a de malheurs +particuliers, et plus tout est bien.» Tandis qu’il raisonnait, l’air +s’obscurcit, les vents soufflèrent des quatre coins du monde, et le +vaisseau fut assailli de la plus horrible tempête, à la vue du port de +\bname{Lisbonne}. + + + + + +\chapter[Tempête, naufrage, tremblement de terre…]{Tempête, naufrage, tremblement de terre,\\et ce qui advint du docteur +\bname{Pangloss}, de \bname{Candide},\\et de l’anabaptiste Jacques} + + +\lettrine[findent=-3pt,nindent=0.6em]{L}{a moitié} +des passagers affaiblis, expirants de ces angoisses +inconcevables que le roulis d’un vaisseau porte dans les nerfs et dans +toutes les humeurs du corps agitées en sens contraires, n’avait pas +même la force de s’inquiéter du danger. L’autre moitié jetait des cris +et faisait des prières; les voiles étaient déchirées, les mâts brisés, +le vaisseau entr’ouvert. Travaillait qui pouvait, personne ne +s’entendait, personne ne commandait. L’anabaptiste aidait un peu à la +manœuvre; il était sur le tillac; un matelot furieux le frappe +rudement et l’étend sur les planches; mais du coup qu’il lui donna, il +eut lui-même une si violente secousse, qu’il tomba hors du vaisseau, la +tête la première. Il restait suspendu et accroché à une partie de mât +rompu. Le bon Jacques court à son secours, l’aide à remonter, et de +l’effort qu’il fait, il est précipité dans la mer à la vue du matelot, +qui le laissa périr sans daigner seulement le regarder. \bname{Candide} +approche, voit son bienfaiteur qui reparaît un moment, et qui est +englouti pour jamais. Il veut se jeter après lui dans la mer: le +philosophe \bname{Pangloss} l’en empêche, en lui prouvant que la rade de +\bname{\bname{Lisbonne}} avait été formée exprès pour que cet anabaptiste s’y noyât. +Tandis qu’il le prouvait \textit{a priori}, le vaisseau s’entr’ouvre, tout +périt à la réserve de \bname{Pangloss}, de \bname{Candide}, et de ce brutal de +matelot +qui avait noyé le vertueux anabaptiste; le coquin nagea heureusement +jusqu’au rivage, où \bname{Pangloss} et \bname{Candide} furent portés sur une planche. + +Quand ils furent revenus un peu à eux, ils marchèrent vers \bname{Lisbonne}; il +leur restait quelque argent, avec lequel ils espéraient se sauver de la +faim après avoir échappé à la \bname{tempête}. + + +À peine ont-ils mis le pied dans la ville, en pleurant la mort de leur +bienfaiteur, qu’ils sentent la terre trembler sous leurs pas; la mer +s’élève en bouillonnant dans le port, et brise les vaisseaux qui sont à +l’ancre. Des tourbillons de flammes et de cendres couvrent les rues et +les places publiques; les maisons s’écroulent, les toits sont renversés +sur les fondements, et les fondements se dispersent; trente mille +habitants de tout âge et de tout sexe sont écrasés sous des ruines. Le +matelot disait en sifflant et en jurant: «Il y aura quelque chose à +gagner ici. — Quelle peut être la raison suffisante de ce phénomène? +disait \bname{Pangloss}. — Voici le dernier jour du monde!» s’écriait \bname{Candide}. Le matelot court incontinent au milieu des débris, affronte la mort pour +trouver de l’argent, en trouve, s’en empare, s’enivre, et ayant cuvé +son vin, achète les faveurs de la première fille de bonne volonté qu’il +rencontre sur les ruines des maisons détruites, et au milieu des +mourants et des morts. \bname{Pangloss} le tirait cependant par la manche: «Mon +ami, lui disait-il, cela n’est pas bien, vous manquez à la raison +universelle, vous prenez mal votre temps. — Tête et sang, répondit +l’autre, je suis matelot et né à Batavia; j’ai marché quatre fois sur +le crucifix dans quatre voyages au Japon; tu as bien trouvé ton +homme avec ta \linebreak raison universelle!» + + +Quelques éclats de pierre avaient blessé \bname{Candide}; il était étendu dans +la rue et couvert de débris. Il disait à \bname{Pangloss}: «Hélas! procure-moi +un peu de vin et d’huile; je me meurs. — Ce tremblement de terre n’est +pas une chose nouvelle, répondit \bname{Pangloss}; la ville de Lima éprouva les +mêmes secousses en Amérique l’année passée; mêmes causes, mêmes effets; +il y a certainement une traînée de soufre sous terre depuis Lima +jusqu’à \bname{Lisbonne}. — Rien n’est plus probable, dit \bname{Candide}; mais, pour +Dieu, un peu d’huile et de vin. — Comment probable? répliqua le +philosophe, je soutiens que la chose est démontrée.» \bname{Candide} perdit +connaissance, et \bname{Pangloss} lui apporta un peu d’eau d’une fontaine +voisine. + +\textls[-10]{Le lendemain, ayant trouvé quelques provisions de bouche en se glissant +à travers des décombres,} ils réparèrent un peu leurs forces. Ensuite +ils travaillèrent comme les autres à soulager les habitants échappés à +la mort. Quelques citoyens, secourus par eux, leur donnèrent un aussi +bon dîner qu’on le pouvait dans un tel désastre: il est vrai que le +repas était triste; les convives arrosaient leur pain de leurs larmes; +mais \bname{Pangloss} les consola, en les assurant que les choses ne pouvaient +être autrement: «Car, dit-il, tout ceci est ce qu’il y a de mieux; car +s’il y a un volcan à \bname{Lisbonne}, il ne pouvait être ailleurs; car il est +impossible que les choses ne soient pas où elles sont, car tout est +bien.» + + +Un petit homme noir, familier de l’inquisition, lequel était à côté de +lui, prit poliment la parole et dit: «Apparemment que monsieur ne croit +pas au péché originel; car si tout est au mieux, il n’y a donc eu ni +chute ni punition. + +— Je demande très humblement pardon à votre excellence, répondit \bname{Pangloss} +encore plus poliment, car la chute de l’homme et la malédiction +entraient nécessairement dans le meilleur des mondes possibles. +— \bname{Monsieur} ne croit donc pas à la liberté? dit le familier. — Votre +excellence m’excusera, dit \bname{Pangloss}; la liberté peut subsister avec la +nécessité absolue; car il était nécessaire que nous fussions libres; +car enfin la volonté déterminée…» \bname{Pangloss} était au milieu de sa +phrase, quand le familier fit un signe de tête à son estafier qui lui +servait à boire du vin de Porto ou d’Oporto. + + + + + +\chapter[Comment on fit un bel auto-da-fé…]{Comment on fit un bel auto-da-fé pour empêcher les\\tremblements de +terre, et comment \bname{Candide} fut fessé} + + +\lettrine{A}{près} le tremblement de terre qui avait détruit les trois quarts de +\bname{Lisbonne}, les sages du pays n’avaient pas trouvé un moyen plus efficace +pour prévenir une ruine totale que de donner au peuple un bel +auto-da-fé; il était décidé par l’université de Coïmbre que le +spectacle de quelques personnes brûlées à petit feu, en grande +cérémonie, est un secret infaillible pour empêcher la terre de +trembler. + +On avait en conséquence saisi un Biscayen convaincu d’avoir épousé sa +commère, et deux Portugais qui en mangeant un poulet en avaient arraché +le lard: on vint lier après le dîner le docteur \bname{Pangloss} et son +disciple \bname{Candide}, l’un pour avoir parlé, et l’autre pour l’avoir écouté +avec un air d’approbation: tous deux furent menés séparément dans des +appartements d’une extrême fraîcheur, dans lesquels on n’était jamais +incommodé du soleil: huit jours après ils furent tous deux +revêtus d’un +\emph{san-benito}, et on orna leurs têtes de mitres de papier: la mitre et le +san-benito de \bname{Candide} étaient peints de flammes renversées, et de +diables qui n’avaient ni queues ni griffes; mais les diables de +\bname{Pangloss} portaient griffes et queues, et les flammes étaient droites. +Ils marchèrent en procession ainsi vêtus, et entendirent un sermon très +pathétique, suivi d’une belle musique en faux-bourdon. \bname{Candide} fut +fessé en cadence, pendant qu’on chantait; le Biscayen et les deux +hommes qui n’avaient point voulu manger de lard furent +brûlés, et +\bname{Pangloss} fut pendu, quoique ce ne soit pas la coutume. Le même jour la +terre trembla de nouveau avec un fracas épouvantable. + +\bname{Candide} épouvanté, interdit, éperdu, tout sanglant, tout palpitant, se +disait à lui-même: «Si c’est ici le meilleur des mondes possibles, que +sont donc les autres? passe encore si je n’étais que fessé, je l’ai été +chez les Bulgares; mais, ô mon cher \bname{Pangloss}! le plus grand des +philosophes, faut-il vous avoir vu pendre, sans que je sache pourquoi! +ô mon cher anabaptiste! le meilleur des hommes, faut-il que vous ayez +été noyé dans le port! Ô mademoiselle~\bname{Cunégonde}! la perle des filles, +faut-il qu’on vous ait fendu le ventre!» + +Il s’en retournait, se soutenant à peine, prêché, fessé, absous, et +béni, lorsqu’une vieille l’aborda, et lui dit: «Mon fils, prenez +courage, suivez-moi.» + + + + + + +\chapter[Comment une vieille prit soin de \bname{Candide}…]{Comment une vieille prit soin de \bname{Candide},\\et comment il retrouva ce +qu’il aimait} + +\lettrine{C}{andide} ne prit point courage, mais il suivit la vieille dans une +masure: elle lui donna un pot de pommade pour se frotter, lui laissa à +manger et à boire; elle lui montra un petit lit assez propre; il y +avait auprès du lit un habit complet. «Mangez, buvez, dormez, lui +dit-elle, et que Notre-Dame d’Atocha, M\up{gr} saint Antoine de +Padoue, et M\up{gr} saint Jacques de Compostelle prennent soin de +vous! je reviendrai demain.» \bname{Candide}, toujours étonné de tout ce qu’il +avait vu, de tout ce qu’il avait souffert, et encore plus de la charité +de la vieille, voulut lui baiser la main. «Ce n’est pas ma main qu’il +faut baiser, dit la vieille; je reviendrai demain. Frottez-vous de +pommade, mangez et dormez.» + + + +\bname{Candide}, malgré tant de malheurs, mangea et dormit. Le lendemain la +vieille lui apporte à déjeuner, visite son dos, le frotte elle-même +d’une autre pommade: elle lui apporte ensuite à dîner: elle revient sur +le soir et apporte à souper. Le surlendemain elle fit encore les mêmes +cérémonies. «Qui êtes-vous? lui disait toujours \bname{Candide}; qui vous a +inspiré tant de bonté? quelles grâces puis-je vous rendre?» La bonne +femme ne répondait jamais rien. Elle revint sur le soir, et n’apporta +point à souper: «Venez avec moi, dit-elle, et ne dites mot.» Elle le +prend sous le bras, et marche avec lui dans la campagne environ un +quart de mille: ils arrivent à une maison isolée, entourée de jardins +et de canaux. La vieille frappe à une petite porte. On ouvre; elle mène +\bname{Candide}, par un escalier dérobé, dans un cabinet doré, le laisse sur un +canapé de brocart, referme la porte, et s’en va. \bname{Candide} croyait rêver, +et regardait toute sa vie comme un songe funeste, et le moment présent +comme un songe agréable. + +\textls[-5] +{La vieille reparut bientôt; elle soutenait avec peine une femme +tremblante, d’une taille majestueuse, brillante de pierreries, et +couverte d’un voile. «Ôtez ce voile», dit la vieille à \bname{Candide}. Le jeune +homme approche; il lève le voile d’une main timide. Quel moment! quelle +surprise! il croit voir M\up{lle}~\bname{Cunégonde}; il la voyait en effet, +c’était elle-même. La force lui manque, il ne peut proférer une parole, +il tombe à ses pieds. \bname{Cunégonde} tombe sur le canapé. La vieille les +accable d’eaux spiritueuses, ils reprennent leurs sens, ils se parlent: +ce sont d’abord des mots entrecoupés, des demandes et des réponses qui +se croisent, des soupirs, des larmes, des cris. La vieille leur +recommande de faire moins de bruit, et les laisse en liberté. «Quoi! +c’est vous, lui dit \bname{Candide}, vous vivez! Je vous retrouve en Portugal! +On ne vous a donc pas violée? on ne vous a point fendu le ventre, comme +le philosophe \bname{Pangloss} me l’avait assuré?» — Si fait, dit la belle +\bname{Cunégonde}; mais on ne meurt pas toujours de ces deux accidents. — Mais +votre père et votre mère ont-ils été tués? — Il n’est que trop vrai, dit +\bname{Cunégonde} en pleurant. — Et votre frère? — Mon frère a été tué aussi. — Et +pourquoi êtes-vous en Portugal? et comment avez-vous su que j’y étais? +et par quelle étrange aventure m’avez-vous fait conduire dans cette +maison? — Je vous dirai tout cela, répliqua la dame; mais il faut +auparavant que vous m’appreniez tout ce qui vous est arrivé depuis le +baiser innocent que vous me donnâtes, et les coups de pied que vous +reçûtes.»} + + + +\bname{Candide} lui obéit avec un profond respect; et quoiqu’il fût interdit, +quoique sa voix fût faible et tremblante, quoique l’échine lui fît +encore un peu mal, il lui raconta de la manière la plus naïve tout ce +qu’il avait éprouvé depuis le moment de leur séparation. \bname{Cunégonde} +levait les yeux au ciel: elle donna des larmes à la mort du bon +anabaptiste et de \bname{\bname{Pangloss}}; après quoi elle parla en ces termes à +\bname{Candide}, qui ne perdait pas une parole, et qui la dévorait des yeux. + + + + + + +\chapter{Histoire de Cunégonde} + + +\lettrine[ante={«}]{J'}{étais} dans mon lit et je dormais profondément, quand il plut au ciel +d’envoyer les Bulgares dans notre beau château de Thunder-ten-tronckh; +ils égorgèrent mon père et mon frère, et coupèrent ma mère par +morceaux. Un grand Bulgare, haut de six pieds, voyant qu’à ce spectacle +j’avais perdu connaissance, se mit à me violer; cela me fit revenir, je +repris mes sens, je criai, je me débattis, je mordis, j’égratignai, je +voulais arracher les yeux à ce grand Bulgare, ne sachant pas que tout +ce qui arrivait dans le château de mon père était une chose d’usage: le +brutal me donna un coup de couteau dans le flanc gauche dont je porte +encore la marque. — Hélas! j’espère bien la voir, dit le naïf \bname{Candide}. +— Vous la verrez, dit \bname{Cunégonde}; mais continuons. — Continuez», dit \bname{Candide}. + +{\parfillskip=1em +Elle reprit ainsi le fil de son histoire: «Un capitaine bulgare entra, +il me vit toute sanglante, et le soldat ne se dérangeait pas. Le +capitaine se mit en colère du peu de respect que lui témoignait, ce +brutal, et le tua sur mon corps. Ensuite il me fit panser, et m’emmena +prisonnière de guerre dans son quartier. Je blanchissais le peu de +chemises qu’il avait, je faisais sa cuisine; il me trouvait fort jolie, +il faut l’avouer; et je ne nierai pas qu’il ne fût très bien fait, et +qu’il n’eût la peau blanche et douce; d’ailleurs peu d’esprit, peu de +philosophie: on voyait bien qu’il n’avait pas été élevé par le docteur +\bname{Pangloss}. Au bout de trois mois, ayant perdu tout son argent, et +s’étant dégoûté de moi, il me vendit à un Juif nommé don Issachar, qui +trafiquait en \bname{Hollande} et en Portugal, et qui aimait passionnément les +femmes. Ce Juif s’attacha beaucoup à ma personne, mais il ne pouvait en +triompher; je lui ai mieux résisté qu’au soldat bulgare. Une personne +d’honneur peut être violée une fois, mais sa vertu s’en affermit. Le +Juif, pour m’apprivoiser, me mena dans cette maison de campagne que +vous voyez. J’avais cru jusque-là qu’il n’y avait rien sur la terre de +si beau que le château de Thunder-ten-tronckh; j’ai été détrompée. + +} + +«Le grand inquisiteur m’aperçut un jour à la messe; il me lorgna +beaucoup, et me fit dire qu’il avait à me parler pour des affaires +secrètes. Je fus conduite à son palais; je lui appris ma naissance; il +me représenta combien il était au-dessous de mon rang d’appartenir à un +Israélite. On proposa de sa part à don Issachar de me céder à +monseigneur. Don Issachar, qui est le banquier de la cour, et homme de +crédit, n’en voulut rien faire. L’inquisiteur le menaça d’un +auto-da-fé. Enfin mon Juif intimidé conclut un marché par lequel la +maison et moi leur appartiendraient à tous deux en commun; que le Juif +aurait pour lui les lundis, mercredis, et le jour du sabbat, et que +l’inquisiteur aurait les autres jours de la semaine. Il y a six mois +que cette convention subsiste. Ce n’a pas été sans querelles; car +souvent il a été indécis si la nuit du samedi au dimanche appartenait à +l’ancienne loi ou à la nouvelle. Pour moi, j’ai résisté jusqu’à présent +à toutes les deux; et je crois que c’est pour cette raison que j’ai +toujours été aimée. + +«Enfin, pour détourner le fléau des tremblements de terre, et pour +intimider don Issachar, il plut à \bname{monseigneur} l’inquisiteur de célébrer +un auto-da-fé. Il me fit l’honneur de m’y inviter. Je fus très bien +placée; on servit aux dames des rafraîchissements entre la messe et +l’exécution. Je fus, à la vérité, saisie d’horreur en voyant brûler ces +deux Juifs et cet honnête Biscayen qui avait épousé sa commère: mais +quelle fut ma surprise, mon effroi, mon trouble, quand je vis dans un +san-benito, + et sous une mitre, une figure qui ressemblait à celle de +\bname{Pangloss}! Je me +frottai les yeux, je regardai attentivement, je le vis +pendre; je tombai en faiblesse. À peine reprenais-je mes sens, que je +vous vis dépouillé tout nu; ce fut là le comble de l’horreur, de la +consternation, de la douleur, du désespoir. Je vous dirai, avec vérité, +que votre peau est encore plus blanche, et d’un incarnat plus parfait +que celle de mon capitaine des Bulgares. Cette vue redoubla tous les +sentiments qui m’accablaient, qui me dévoraient. Je m’écriai, je voulus +dire, «Arrêtez, barbares!» mais la voix me manqua, et mes cris auraient +été inutiles. Quand vous eûtes été bien fessé: \frquote{\localleftbox{« }Comment se peut-il +faire, disais-je, que l’aimable \bname{Candide} et le sage \bname{Pangloss} se trouvent +à \bname{Lisbonne}, l’un pour recevoir cent coups de fouet, et l’autre pour +être pendu par l’ordre de \bname{Monseigneur} l’inquisiteur, dont je suis la +bien-aimée? \bname{Pangloss} m’a donc bien cruellement trompée, quand il me +disait que tout va le mieux du monde!}\localleftbox{} + +«Agitée, éperdue, tantôt hors de moi-même, et tantôt prête de mourir de +faiblesse, j’avais la tête remplie du massacre de mon père, de ma mère, +de mon frère, de l’insolence de mon vilain soldat bulgare, du coup de +couteau qu’il me donna, de ma servitude, de mon métier de cuisinière, +de mon capitaine bulgare, de mon vilain don~\bname{Issachar}, de mon abominable +inquisiteur, de la pendaison du docteur \bname{Pangloss}, de ce grand \emph{Miserere} +en faux-bourdon pendant lequel on vous fessait, et surtout du baiser +que je vous avais donné derrière un paravent, le jour que je vous avais +vu pour la dernière fois. Je louai Dieu, qui vous ramenait à moi par +tant d’épreuves. Je recommandai à ma vieille d’avoir soin de vous, et +de vous amener ici dès qu’elle le pourrait. Elle a très bien exécuté ma +commission; j’ai goûté le plaisir inexprimable de vous revoir, de vous +entendre, de vous parler. Vous devez avoir une faim dévorante; j’ai +grand appétit; commençons par souper.» + +Les voilà qui se mettent tous deux à table; et, après le souper, ils se +replacent sur ce beau canapé dont on a déjà parlé; ils y étaient quand +le signor don Issachar, l’un des maîtres de la maison, arriva. C’était +le jour du sabbat. Il venait jouir de ses droits, et expliquer son +tendre amour. + + + + + +\chapter[Ce qui advint de Cunégonde, de Candide…]{Ce qui advint de \bname{Cunégonde}, de \bname{Candide},\\du grand inquisiteur, et d’un +Juif} + + +\lettrine{C}{et} Issachar était le plus colérique Hébreu qu’on eût vu dans Israël, +depuis la captivité en Babylone. «Quoi! dit-il, chienne de galiléenne, +ce n’est pas assez de M. l’inquisiteur? il faut que ce coquin +partage aussi avec moi?» En disant cela il tire un long poignard dont il +était toujours pourvu, et, ne croyant pas que son adverse partie eût +des armes, il se jette sur \bname{Candide}; mais notre bon Westphalien avait +reçu une belle épée de la vieille avec l’habit complet. Il tire son +épée, quoiqu’il eût les mœurs fort douces, et vous étend l’Israélite +roide mort sur le carreau, aux pieds de la belle \bname{Cunégonde}. + +«Sainte Vierge! s’écria-t-elle, qu’allons-nous devenir? un homme tué +chez moi! si la justice vient, nous sommes perdus. — Si \bname{Pangloss} n’avait +pas été pendu, dit \bname{Candide}, il nous donnerait un bon conseil dans cette +extrémité, car c’était un grand philosophe. À son défaut, consultons la +vieille.» Elle était fort prudente, et commençait à dire son avis quand +une autre petite porte s’ouvrit. Il était une heure après minuit, +c’était le commencement du dimanche. Ce jour appartenait à monseigneur +l’inquisiteur. Il entre et voit le fessé \bname{Candide}, l’épée à la main, un +mort étendu par terre, \bname{Cunégonde} effarée, et la vieille donnant des +conseils. + +Voici dans ce moment ce qui se passa dans l’âme de \bname{Candide}, et comment +il raisonna: «Si ce saint homme appelle du secours, il me fera +infailliblement brûler, il pourra en faire autant de \bname{Cunégonde}; il m’a +fait fouetter impitoyablement; il est mon rival; je suis en train de +tuer; il n’y a pas à balancer.» Ce raisonnement fut net et rapide; et, +sans donner le temps à l’inquisiteur de revenir de sa surprise, il le +perce d’outre en outre, et le jette à côté du Juif. «En voici bien d’une +autre, dit \bname{Cunégonde}; il n’y a plus de rémission; nous sommes +excommuniés, notre dernière heure est venue! Comment avez-vous fait, +vous qui êtes né si doux, pour tuer en deux minutes un Juif et un +prélat? — Ma belle demoiselle, répondit\bname{Candide}, quand on est amoureux, +jaloux, et fouetté par l’inquisition, on ne se connaît plus.» + +La vieille prit alors la parole, et dit: «Il y a trois chevaux andalous +dans l’écurie, avec leurs selles et leurs brides, que le brave \bname{Candide} +les prépare; madame a des moyadors et des diamants, montons vite à +cheval, quoique je ne puisse me tenir que sur une fesse, et allons à +Cadix; il fait le plus beau temps du monde, et c’est un grand plaisir +de voyager pendant la fraîcheur de la nuit.» + +Aussitôt \bname{Candide} selle les trois chevaux; \bname{Cunégonde}, la vieille, et +lui, font trente milles d’une traite. Pendant qu’ils s’éloignaient, la +Sainte-Hermandad arrive dans la maison, on enterre monseigneur dans une +belle église, on jette Issachar à la voirie. + +\bname{Candide}, \bname{Cunégonde}, et la vieille, étaient déjà dans la petite ville +\bname{d’Avacéna}, au milieu des montagnes de la Sierra Morena; et ils +parlaient ainsi dans un cabaret. + + + + +\chapter[Dans quelle détresse Candide…]{Dans quelle détresse \bname{Candide}, \bname{Cunégonde},\\et la vieille, arrivent à +Cadix, et leur embarquement} + + +\lettrine[ante={«}]{Q}{ui a donc} pu me voler mes pistoles et mes diamants? disait en pleurant +\bname{Cunégonde}; de quoi vivrons-nous? comment ferons-nous? où trouver des +inquisiteurs et des Juifs qui m’en donnent d’autres? — Hélas! dit la +vieille, je soupçonne fort un révérend père cordelier, qui coucha hier +dans la même auberge que nous à \bname{Badajos}; Dieu me garde de faire un +jugement téméraire! mais il entra deux fois dans notre chambre, et il +partit longtemps avant nous. — Hélas! dit \bname{Candide}, le bon \bname{Pangloss} +m’avait souvent prouvé que les biens de la terre sont communs à tous +les hommes, que chacun y a un droit égal. Ce cordelier devait bien, +suivant ces principes, nous laisser de quoi achever notre voyage. Il ne +vous reste donc rien du tout, ma belle \bname{Cunégonde}? — Pas un maravédis, +dit-elle. — Quel parti prendre? dit \bname{Candide}. — Vendons un des chevaux, dit +la vieille; je monterai en croupe derrière mademoiselle, quoique je ne +puisse me tenir que sur une fesse, et nous arriverons à Cadix.» + +Il y avait dans la même hôtellerie un prieur de bénédictins; il acheta +le cheval bon marché. \bname{Candide}, \bname{Cunégonde}, et la vieille, passèrent par +Lucena, par Chillas, par Lebrixa, et arrivèrent enfin à Cadix. On y +équipait une flotte, et on y assemblait des troupes pour mettre à la +raison les révérends pères jésuites du Paraguay, qu’on accusait d’avoir +fait révolter une de leurs hordes contre les rois d’Espagne et de +Portugal, auprès de la ville du Saint-Sacrement. \bname{Candide}, ayant +servi chez les Bulgares, fit l’exercice bulgarien devant le général de +la petite armée avec tant de grâce, de célérité, d’adresse, de fierté, +d’agilité, qu’on lui donna une compagnie d’infanterie à commander. Le +voilà capitaine; il s’embarque avec M\up{lle}~\bname{Cunégonde}, la vieille, +deux valets, et les deux chevaux andalous qui avaient appartenu à M. le +grand inquisiteur de Portugal. + +\looseness=-1 +Pendant toute la traversée ils raisonnèrent beaucoup sur la philosophie +du pauvre \bname{Pangloss}. «Nous allons dans un autre univers, disait \bname{Candide}; +c’est dans celui-là, sans doute, que tout est bien: car il faut avouer +qu’on pourrait gémir un peu de ce qui se passe dans le nôtre en +physique et en morale. — Je vous aime de tout mon cœur, disait +\bname{Cunégonde}; mais j’ai encore l’âme tout effarouchée de ce que j’ai vu, +de ce que j’ai éprouvé. — Tout ira bien, répliquait \bname{Candide}; la mer de ce +nouveau monde vaut déjà mieux que les mers de notre Europe; elle est +plus calme, les vents plus constants. C’est certainement le +nouveau monde qui est le meilleur des univers possibles. — Dieu le +veuille! disait \bname{Cunégonde}: mais j’ai été si horriblement malheureuse +dans le mien, que mon cœur est presque fermé à l’espérance. — Vous vous +plaignez, leur dit la vieille; hélas! vous n’avez pas éprouvé des +infortunes telles que les miennes.» \bname{Cunégonde} se mit presque à rire, et +trouva cette bonne femme fort plaisante de prétendre être plus +malheureuse qu’elle. «Hélas! lui dit-elle, ma bonne, à moins que vous +n’ayez été violée par deux Bulgares, que vous n’ayez reçu deux coups de +couteau dans le ventre, qu’on n’ait démoli deux de vos châteaux, qu’on +n’ait égorgé à vos yeux deux mères et deux pères, et que vous n’ayez vu +deux de vos amants fouettés dans un auto-da-fé, je ne vois pas que vous +puissiez l’emporter sur moi; ajoutez que je suis née baronne avec +soixante et douze quartiers, et que j’ai été cuisinière. — Mademoiselle, +répondit la vieille, vous ne savez pas quelle est ma naissance; et si +je vous montrais mon derrière, vous ne parleriez pas comme vous faites, +et vous suspendriez votre jugement.» Ce discours fit naître une extrême +curiosité dans l’esprit de \bname{Cunégonde} et de \bname{Candide}. La vieille leur +parla en ces termes.\quad\null + + +\chapter{Histoire de la vieille} + + +\lettrine[ante=«]{J}{e n’ai} pas eu toujours les yeux éraillés et bordés d’écarlate; mon nez +n’a pas toujours touché à mon menton, et je n’ai pas toujours été +servante. Je suis la fille du pape \bname{Urbain}~X et de la princesse de +\bname{Palestrine}. +On m’éleva jusqu’à quatorze ans dans un palais auquel +tous les châteaux de vos barons allemands n’auraient pas servi +d’écurie; et une de mes robes valait mieux que toutes les magnificences +de la \bname{Westphalie}. Je croissais en beauté, en grâces, en talents, au +milieu des plaisirs, des respects, et des espérances: j’inspirais déjà +de l’amour; ma gorge se formait; et quelle gorge! blanche, ferme, +taillée comme celle de la Vénus de \bname{Médicis}; et quels yeux! quelles +paupières! quels sourcils noirs! quelles flammes brillaient dans mes +deux prunelles, et effaçaient la scintillation des étoiles! comme me +disaient les poètes du quartier. Les femmes qui m’habillaient et qui me +déshabillaient tombaient en extase en me regardant par-devant et +par-derrière; et tous les hommes auraient voulu être à leur place. + + +«Je fus fiancée à un prince souverain de Massa-Carrara: quel prince! +aussi beau que moi, pétri de douceur et d’agréments, brillant d’esprit +et brûlant d’amour; je l’aimais comme on aime pour la première fois, +avec idolâtrie, avec emportement. Les noces furent préparées: c’était +une pompe, une magnificence inouïe; c’étaient des fêtes, des +carrousels, des opéra-buffa continuels; et toute l’Italie fit pour moi +des sonnets dont il n’y eut pas un seul de passable. Je touchais au +moment +de mon bonheur, quand une vieille marquise, qui avait été +maîtresse de mon prince, l’invita à prendre du chocolat chez elle; il +mourut en moins de deux heures avec des convulsions épouvantables; mais +ce n’est qu’une bagatelle. Ma mère au désespoir, et bien moins affligée +que moi, voulut s’arracher pour quelque temps à un séjour si funeste. +Elle avait une très belle terre auprès de Gaète: nous nous embarquâmes +sur une galère du pays, dorée comme l’autel de Saint-Pierre de Rome. +Voilà qu’un corsaire de Salé fond sur nous et nous aborde: nos soldats +se défendirent comme des soldats du pape; ils se mirent tous à genoux +en jetant leurs armes, et en demandant au corsaire une absolution \emph{in +articulo mortis}. + +«Aussitôt on les dépouilla nus comme des singes, et ma mère aussi, nos +filles d’honneur aussi, et moi aussi. C’est une chose admirable que la +diligence avec laquelle ces messieurs déshabillent le monde; mais ce +qui me surprit davantage, c’est qu’ils nous mirent à tous le doigt dans +un endroit où nous autres femmes nous ne nous laissons mettre +d’ordinaire que des canules. Cette cérémonie me paraissait bien +étrange: voilà comme on juge de tout quand on n’est pas sorti de son +pays. J’appris bientôt que c’était pour voir si nous n’avions pas caché +là quelques diamants; c’est un usage établi de temps immémorial parmi +les nations policées qui courent sur mer. J’ai su que messieurs les +religieux chevaliers de Malte n’y manquent jamais quand ils prennent +des Turcs et des Turques; c’est une loi du droit des gens à laquelle on +n’a jamais dérogé. + +«Je ne vous dirai point combien il est dur pour une jeune princesse +d’être menée esclave à Maroc avec sa mère: vous concevez assez tout ce +que nous eûmes à souffrir dans le vaisseau corsaire. Ma mère était +encore très belle: nos filles d’honneur, nos simples femmes de chambre +avaient plus de charmes qu’on n’en peut trouver dans toute l’Afrique. +Pour moi, j’étais ravissante, j’étais la beauté, la grâce même, et +j’étais pucelle: je ne le fus pas longtemps; cette fleur, qui avait +été réservée pour le beau prince de Massa-Carrara, me fut ravie par le +capitaine corsaire; c’était un nègre abominable, qui croyait encore me +faire beaucoup d’honneur. Certes il fallait que M\up{me} la princesse de +\bname{Palestrine} et moi fussions bien fortes pour résister à tout ce que nous +éprouvâmes jusqu’à notre arrivée à Maroc! Mais passons; ce sont des +choses si communes, qu’elles ne valent pas la peine qu’on en parle. + +«Maroc nageait dans le sang quand nous arrivâmes. Cinquante fils de +l’empereur Muley-Ismaël avaient chacun leur parti; ce qui produisait +en effet cinquante guerres civiles, de noirs contre noirs, de noirs +contre basanés, de basanés contre basanés, de mulâtres contre mulâtres: +c’était un carnage continuel dans toute l’étendue de l’empire. + + + +«À peine fûmes-nous débarquées, que des noirs d’une faction ennemie de +celle de mon corsaire se présentèrent pour lui enlever son butin. Nous +étions, après les diamants et l’or, ce qu’il avait de plus précieux. Je +fus témoin d’un combat tel que vous n’en voyez jamais dans vos climats +d’Europe. Les peuples septentrionaux n’ont pas le sang assez ardent; +ils n’ont pas la rage des femmes au point où elle est commune en +Afrique. Il semble que vos Européens aient du lait dans les veines; +c’est du vitriol, c’est du feu qui coule dans celles des habitants du +mont Atlas et des pays voisins. On combattit avec la fureur des lions, +des tigres, et des serpents de la contrée, pour savoir qui nous aurait. +Un Maure saisit ma mère par le bras droit, le lieutenant de mon +capitaine la retint par le bras gauche; un soldat maure la prit par une +jambe, un de nos pirates la tenait par l’autre. Nos filles se +trouvèrent presque toutes en un moment tirées ainsi à quatre soldats. +Mon capitaine me tenait cachée derrière lui; il avait le cimeterre au +poing, et tuait tout ce qui s’opposait à sa rage. Enfin je vis toutes +nos Italiennes et ma mère déchirées, coupées, massacrées par les +monstres qui se les disputaient. Les captifs, mes compagnons, ceux qui +les avaient pris, soldats, matelots, noirs, basanés, blancs, mulâtres, +et enfin mon capitaine, tout fut tué, et je demeurai mourante sur un +tas de morts. Des scènes pareilles se passaient, comme on sait, dans +l’étendue de plus de trois cents lieues, sans qu’on manquât aux cinq +prières par jour ordonnées par Mahomet. + +«Je me débarrassai avec beaucoup de peine de la foule de tant de +cadavres sanglants entassés, et je me traînai sous un grand oranger au +bord d’un ruisseau voisin; j’y tombai d’effroi, de lassitude, +d’horreur, de désespoir, et de faim. Bientôt après, mes sens accablés se +livrèrent à un sommeil qui tenait plus de l’évanouissement que du +repos. J’étais dans cet état de faiblesse et d’insensibilité, entre la +mort et la vie, quand je me sentis pressée de quelque chose qui +s’agitait sur mon corps; j’ouvris les yeux, je vis un homme blanc et de +bonne mine qui soupirait, et qui disait entre ses dents: \emph{O che +sciagura d’essere senza coglioni!} + + + + +\chapter{Suite des malheurs de la vieille} + + +\lettrine[ante=«]{É}{tonnée} et ravie d’entendre la langue de ma patrie, et non moins +surprise des paroles que proférait cet homme, je lui répondis qu’il y +avait de plus grands malheurs que celui dont il se plaignait; je +l’instruisis en peu de mots des horreurs que j’avais essuyées, et je +retombai en faiblesse. Il m’emporta dans une maison voisine, me fit +mettre au lit, me fit donner à manger, me servit, me consola, me +flatta, me dit qu’il n’avait rien vu de si beau que moi, et que jamais +il n’avait tant regretté ce que personne ne pouvait lui rendre. \frquote{\localleftbox{« }Je suis +né à Naples, me dit-il; on y chaponne deux ou trois mille enfants tous +les ans; les uns en meurent, les autres acquièrent une voix plus belle +que celle des femmes, les autres vont gouverner des états. On me fit +cette opération avec un très grand succès, et j’ai été musicien de la +chapelle de M\up{me} la princesse de \bname{Palestrine}. — De ma mère! m’écriai-je. +— De votre mère! s’écria-t-il en pleurant. Quoi! vous seriez cette jeune +princesse que j’ai élevée jusqu’à l’âge de six ans, et qui promettait +déjà d’être aussi belle que vous êtes? — C’est moi-même; ma mère est à +quatre cents pas d’ici coupée en quartiers sous un tas de morts…}\localleftbox{} + + + + +«Je lui contai tout ce qui m’était arrivé; il me conta aussi ses +aventures, et m’apprit comment il avait été envoyé chez le roi de Maroc +par une puissance chrétienne, pour conclure avec ce monarque un traité +par lequel on lui fournirait de la poudre, des canons, et des +vaisseaux, pour l’aider à exterminer le commerce des autres chrétiens. +\frquote{\localleftbox{« }Ma mission est faite, dit cet honnête eunuque; je vais m’embarquer à +Ceuta, et je vous ramènerai en Italie. \emph{Ma che sciagura d’essere senza +coglioni!}}\localleftbox{} + + +«Je le remerciai avec des larmes d’attendrissement; et au lieu de me +mener en Italie, il me conduisit à Alger, et me vendit au dey de cette +province. À peine fus-je vendue, que cette peste qui a fait le tour de +l’Afrique, de l’Asie, de l’Europe, se déclara dans Alger avec fureur. +«Vous avez vu des tremblements de terre; mais, mademoiselle, avez-vous +jamais eu la peste? — Jamais, répondit la baronne. + +%\looseness=1 +— Si vous l’aviez eue, reprit la vieille, vous avoueriez qu’elle est bien +au-dessus d’un tremblement de terre. Elle est fort commune en Afrique; +j’en fus attaquée. Figurez-vous quelle situation pour la fille d’un +pape, âgée de quinze ans, qui en trois mois de temps avait éprouvé la +pauvreté, l’esclavage, avait été violée presque tous les jours, avait +vu couper sa mère en quatre, avait essuyé la faim et la guerre, et +mourait pestiférée dans Alger! Je n’en mourus pourtant pas; mais mon +eunuque et le dey, et presque tout le sérail \linebreak d’Alger périrent. + + + +«Quand les premiers ravages de cette épouvantable peste furent passés, +on vendit les esclaves du dey. Un marchand m’acheta, et me mena à +Tunis; il me vendit à un autre marchand qui me revendit à Tripoli; de +Tripoli je fus revendue à Alexandrie, d’Alexandrie revendue à Smyrne; +de Smyrne à Constantinople. J’appartins enfin à un aga des janissaires, +qui fut bientôt commandé pour aller défendre Azof contre les Russes qui +l’assiégeaient. + +«L’aga, qui était un très galant homme, mena avec lui tout son sérail, +et nous logea dans un petit fort sur les Palus-Méotides, gardé par deux +eunuques noirs et vingt soldats. On tua prodigieusement de Russes, mais +ils nous le rendirent bien: Azof fut mis à feu et à sang, et on ne +pardonna ni au sexe, ni à l’âge; il ne resta que notre petit fort; les +ennemis voulurent nous prendre par famine. Les vingt janissaires +avaient juré de ne se jamais rendre. Les extrémités de la faim où ils +furent réduits les contraignirent à manger nos deux eunuques, de peur +de violer leur serment. Au bout de quelques jours ils résolurent de +manger les femmes. + + +«Nous avions un iman très pieux et très compatissant, qui leur fit un +beau sermon par lequel il leur persuada de ne nous pas tuer +tout-à-fait. \frquote{\localleftbox{« }Coupez, dit-il, seulement une fesse à chacune de ces +dames, vous ferez très bonne chère; s’il faut y revenir, vous en aurez +encore autant dans quelques jours; le ciel vous saura gré d’une action +si charitable, et vous serez secourus.}\localleftbox{} + +«Il avait beaucoup d’éloquence; il les persuada: on nous fit cette +horrible opération; l’iman nous appliqua le même baume qu’on met aux +enfants qu’on vient de circoncire: nous étions toutes à la mort. + + +«À peine les janissaires eurent-ils fait le repas que nous leur avions +fourni, que les Russes arrivent sur des bateaux plats; pas un +janissaire ne réchappa. Les Russes ne firent aucune attention à l’état +où nous étions. Il y a partout des chirurgiens français: un d’eux qui +était fort adroit prit soin de nous, il nous guérit; et je me +souviendrai toute ma vie, que quand mes plaies furent bien fermées, il +me fit des propositions. Au reste, il nous dit à toutes de nous +consoler; il nous assura que dans plusieurs sièges pareille chose était +arrivée, et que c’était la loi de la guerre. + + +«Dès que mes compagnes purent marcher, on les fit aller à Moscou; +j’échus en partage à un boyard qui me fit sa jardinière, et qui me +donnait vingt coups de fouet par jour; mais ce seigneur ayant été roué +au bout de deux ans avec une trentaine de boyards pour quelque +tracasserie de cour, je profitai de cette aventure; je m’enfuis; je +traversai toute la Russie; je fus longtemps servante de cabaret à +Riga, puis à Rostock, à Vismar, à Leipsick, à Cassel, à Utrecht, à +Leyde, à La Haye, à Rotterdam: j’ai vieilli dans la misère et dans +l’opprobre, n’ayant que la moitié d’un derrière, me souvenant toujours +que j’étais fille d’un pape; je voulus cent fois me tuer, mais j’aimais +encore la vie. Cette faiblesse ridicule est peut-être un de nos +penchants les plus funestes; car y a-t-il rien de plus sot que de +vouloir porter continuellement un fardeau qu’on veut toujours jeter par +terre; d’avoir son être en horreur, et de tenir à son être; enfin de +\bname{caresser} le serpent qui nous dévore, jusqu’à ce qu’il nous ait \linebreak mangé le +cœur? + + + +«J’ai vu dans les pays que le sort m’a fait parcourir, et dans les +cabarets où j’ai servi, un nombre prodigieux de personnes qui avaient +leur existence en exécration; mais je n’en ai vu que douze qui aient +mis volontairement fin à leur misère, trois nègres, quatre Anglais, +quatre Genevois, et un professeur allemand nommé Robeck. J’ai fini +par être servante chez le Juif don Issachar; il me mit auprès de vous, +ma belle demoiselle; je me suis attachée à votre destinée, et j’ai été +plus occupée de vos aventures que des miennes. Je ne vous aurais même +jamais parlé de mes malheurs, si vous ne m’aviez pas un peu piquée, et +s’il n’était d’usage, dans un vaisseau, de conter des histoires pour se +désennuyer. Enfin, mademoiselle, j’ai de l’expérience, je connais le +monde; donnez-vous un plaisir, engagez chaque passager à vous conter +son histoire, et s’il s’en trouve un seul qui n’ait souvent maudit sa +vie, qui ne se soit souvent dit à lui-même qu’il était le plus +malheureux des hommes, jetez-moi dans la mer la tête la première.» + + + + +\chapter[Comment Candide fut obligé de se séparer…]{Comment \bname{Candide} fut obligé de se séparer\\de la belle \bname{Cunégonde} et de la +vieille} + + +\lettrine{L}{a belle} \bname{Cunégonde}, ayant entendu l’histoire de la vieille, lui fit +toutes les politesses qu’on devait à une personne de son rang et de son +mérite. Elle accepta la proposition; elle engagea tous les passagers, +l’un après l’autre, à lui conter leurs aventures. \bname{Candide} et elle +avouèrent que la vieille avait raison. C’est bien dommage, disait +\bname{Candide}, que le sage \bname{Pangloss} ait été pendu contre la coutume dans un +auto-da-fé; il nous dirait des choses admirables sur le mal physique et +sur le mal moral qui couvrent la terre et la mer, et je me sentirais +assez de force pour oser lui faire respectueusement quelques +objections. + +À mesure que chacun racontait son histoire, le vaisseau avançait. On +aborda dans \bname{Buenos} Aires. \bname{Cunégonde}, le capitaine \bname{Candide}, et la +vieille, allèrent chez le gouverneur don \bname{Fernando} \bname{d’Ibaraa}, y Figueora, +y \bname{Mascarenes}, y \bname{Lampourdos}, y Souza. Ce seigneur avait une fierté +convenable à un homme qui portait tant de noms. Il parlait aux hommes +avec le dédain le plus noble, portant le nez si haut, élevant si +impitoyablement la voix, prenant un ton si imposant, affectant une +démarche si altière, que tous ceux qui le saluaient étaient tentés de +le battre. Il aimait les femmes à la fureur. \bname{Cunégonde} lui parut ce +qu’il avait jamais vu de plus beau. La première chose qu’il fit fut de +demander si elle n’était point la femme du capitaine. L’air dont il fit +cette question alarma \bname{Candide}: il n’osa pas dire qu’elle était sa +femme, parce qu’en effet elle ne l’était point; il n’osait pas dire que +c’était sa sœur, parce qu’elle ne l’était pas non plus; et quoique ce +mensonge officieux eût été autrefois très à la mode chez les +anciens, et qu’il pût être utile aux modernes, son âme était trop +pure pour trahir la vérité. «M\up{lle}~\bname{Cunégonde}, dit-il, doit me +faire l’honneur de m’épouser, et nous supplions Votre Excellence de +daigner faire notre noce.» + +Don Fernando d’Ibaraa, y Figueora, y Mascarenes, y \bname{Lampourdos}, y Souza, +relevant sa moustache, sourit amèrement, et ordonna au \mbox{capitaine} +\bname{Candide} d’aller faire la revue de sa compagnie. \bname{Candide} obéit; le +gouverneur demeura avec M\up{lle}~\bname{Cunégonde}. Il lui déclara sa +passion, lui protesta que le lendemain il l’épouserait à la face de +l’Église, ou autrement, ainsi qu’il plairait à ses charmes. \bname{Cunégonde} +lui demanda un quart d’heure pour se recueillir, pour consulter la +vieille, et pour se déterminer. + +La vieille dit à \bname{Cunégonde}: «Mademoiselle, vous avez soixante et douze +quartiers et pas une obole; il ne tient qu’à vous d’être la femme du +plus grand seigneur de l’Amérique méridionale, qui a une très belle +moustache; est-ce à vous de vous piquer d’une fidélité à toute épreuve? +Vous avez été violée par les Bulgares; un Juif et un inquisiteur ont eu +vos bonnes grâces: les malheurs donnent des droits. J’avoue que si +j’étais à votre place, je ne ferais aucun scrupule d’épouser M.~le gouverneur, et de faire la fortune de M.~le capitaine \bname{Candide}.» +Tandis que la vieille parlait avec toute la prudence que l’âge et +l’expérience donnent, on vit entrer dans le port un petit vaisseau; il +portait un alcade et des alguazils, et voici ce qui était arrivé. + +La vieille avait très bien deviné que ce fut un cordelier à la grande +manche qui vola l’argent et les bijoux de \bname{Cunégonde} dans la ville de +\bname{Badajos}, lorsqu’elle fuyait en hâte avec \bname{Candide}. Ce moine voulut +vendre quelques unes des +pierreries +à un joaillier. Le marchand les +reconnut pour celles du grand-inquisiteur. Le cordelier, avant d’être +pendu, avoua qu’il les avait volées: il indiqua les personnes, et la +route qu’elles prenaient. La fuite de \bname{Cunégonde} et de \bname{Candide} était +déjà connue. On les suivit à Cadix: on envoya, sans perdre de temps, un +vaisseau à leur poursuite. Le vaisseau était déjà dans le port de +\bname{Buenos} Aires. Le bruit se répandit qu’un alcade allait débarquer, et +qu’on poursuivait les meurtriers de monseigneur le grand inquisiteur. +La prudente vieille vit dans l’instant tout ce qui était à faire. «Vous +ne pouvez fuir, dit-elle à \bname{Cunégonde}, et vous n’avez rien à craindre; +ce n’est pas vous qui avez tué monseigneur, et d’ailleurs le +gouverneur, qui vous aime, ne souffrira pas qu’on vous maltraite; +demeurez.» Elle court sur-le-champ à \bname{Candide}: «Fuyez, dit-elle, ou dans +une heure vous allez être brûlé. Il n’y avait pas un moment à perdre»; +mais comment se séparer de \bname{Cunégonde}, et où se réfugier? + + + + +\chapter[Comment Candide et \bname{Cacambo} furent reçus…]{Comment \bname{Candide} et \bname{Cacambo} furent reçus\\chez les jésuites du Paraguay} + + +\lettrine{C}{andide} avait amené de Cadix un valet tel qu’on en trouve beaucoup sur +les côtes d’Espagne et dans les colonies. C’était un quart \bname{d’Espagnol}, +né d’un métis dans le Tucuman; il avait été enfant de chœur, +sacristain, matelot, moine, facteur, soldat, laquais. Il s’appelait +\bname{Cacambo}, et aimait fort son maître, parce que son maître était un fort +bon homme. Il sella au plus vite les deux chevaux andalous. «Allons, mon +maître, suivons le conseil de la vieille, partons, et courons sans +regarder derrière nous.» \bname{Candide} versa des larmes: «Ô ma chère \bname{Cunégonde}! +faut-il vous abandonner dans le temps que M. le gouverneur va +faire nos noces! \bname{Cunégonde} amenée de si loin, que deviendrez-vous? — Elle +deviendra ce qu’elle pourra, dit \bname{Cacambo}; les femmes ne sont jamais +embarrassées d’elles; Dieu y pourvoit; courons. — Où me mènes-tu? où +allons-nous? que ferons-nous sans \bname{Cunégonde}? disait \bname{Candide}. — Par saint +Jacques de Compostelle, dit \bname{Cacambo}, vous alliez faire la guerre aux +jésuites, allons la faire pour eux; je sais assez les chemins, je vous +mènerai dans leur royaume, ils seront charmés d’avoir un capitaine qui +fasse l’exercice à la bulgare; vous ferez une fortune prodigieuse; +quand on n’a pas son compte dans un monde, on le trouve dans un autre. +C’est un très grand plaisir de voir et de faire des choses nouvelles. + + +— Tu as donc été déjà dans le Paraguay? dit \bname{Candide}. — Eh vraiment oui! dit +\bname{Cacambo}; j’ai été cuistre dans le collège de l’Assomption, et je +connais le gouvernement de Los Padres comme je connais les rues de +Cadix. C’est une chose admirable que ce gouvernement. Le royaume a déjà +plus de trois cents lieues de diamètre; il est divisé en trente +provinces. Los Padres y ont tout, et les peuples rien; c’est le +chef-d’œuvre de la raison et de la justice. Pour moi, je ne vois rien +de si divin que Los Padres, qui font ici la guerre au roi d’Espagne et +au roi de Portugal, et qui en Europe confessent ces rois; qui tuent ici +des Espagnols, et qui à Madrid les envoient au ciel; cela me ravit; +avançons: vous allez être le plus heureux de tous les hommes. Quel +plaisir auront Los Padres, quand ils sauront qu’il leur vient un +capitaine qui sait l’exercice bulgare!» + + + +Dès qu’ils furent arrivés à la première barrière, \bname{Cacambo} dit à la +garde avancée qu’un capitaine demandait à parler à monseigneur le +commandant. On alla avertir la grande garde. Un officier paraguain +courut aux pieds du commandant lui donner part de la nouvelle. \bname{Candide} +et \bname{Cacambo} furent d’abord désarmés; on se saisit de leurs deux chevaux +andalous. Les deux étrangers sont introduits au milieu de deux files de +soldats; le commandant était au bout, le bonnet à trois cornes en tête, +la robe retroussée, l’épée au côté, l’esponton à la main. Il fit un +signe; aussitôt vingt-quatre soldats entourent les deux nouveaux venus. +Un sergent leur dit qu’il faut attendre, que le commandant ne peut leur +parler, que le révérend père provincial ne permet pas qu’aucun Espagnol +ouvre la bouche qu’en sa présence, et demeure plus de trois heures dans +le pays. «Et où est le révérend père provincial? dit \bname{Cacambo}. — Il est à +la parade après avoir dit sa messe, répondit le sergent, et vous ne +pourrez baiser ses éperons que dans trois heures. — Mais, dit \bname{Cacambo}, +M. le capitaine, qui meurt de faim comme moi, n’est point +espagnol, il est allemand; ne pourrions-nous point déjeuner en +attendant Sa Révérence?» + +Le sergent alla sur-le-champ rendre compte de ce discours au +commandant. «Dieu soit béni! dit ce seigneur, puisqu’il est allemand, je +peux lui parler; qu’on le mène dans ma feuillée.» Aussitôt on conduit +\bname{Candide} dans un cabinet de verdure, orné d’une très jolie colonnade de +marbre vert et or, et de treillages qui renfermaient des perroquets, +des colibris, des oiseaux-mouches, des pintades, et tous les oiseaux +les plus rares. Un excellent déjeuner était préparé dans des vases +d’or; et tandis que les Paraguains mangèrent du maïs dans des écuelles +de bois, en plein champ, à l’ardeur du soleil, le révérend père +commandant entra dans la feuillée. + +C’était un très beau jeune homme, le visage plein, assez blanc, haut en +couleur, le sourcil relevé, l’œil vif, l’oreille rouge, les lèvres +vermeilles, l’air fier, mais d’une fierté qui n’était ni celle d’un +Espagnol ni celle d’un jésuite. On rendit à \bname{Candide} et à \bname{Cacambo} leurs +armes, qu’on leur avait saisies, ainsi que les deux +chevaux + andalous; +\bname{Cacambo} leur fit manger l’avoine auprès de la feuillée, ayant toujours +l’œil sur eux, crainte de surprise. + + +\bname{Candide} baisa d’abord le bas de la robe du commandant, ensuite ils se +mirent à table. «Vous êtes donc allemand? lui dit le jésuite en cette +langue. — Oui, mon +Révérend +Père», dit \bname{Candide}. L’un et l’autre, en +prononçant ces paroles, se regardaient avec une extrême surprise, et +une émotion dont ils n’étaient pas les maîtres. «Et de quel pays +d’Allemagne êtes-vous? dit le jésuite. — De la sale province de +\bname{Westphalie}, dit \bname{Candide}: je suis né dans le château de +Thunder-ten-tronckh. — Ô ciel! est-il possible! s’écria le commandant. +— Quel miracle! s’écria \bname{Candide}. — Serait-ce vous? dit le commandant. — Cela +n’est pas possible», dit \bname{Candide}. Ils se laissent tomber tous deux à la +renverse, ils s’embrassent, ils versent des ruisseaux de larmes. «Quoi! +serait-ce vous, mon Révérend Père? vous, le frère de la belle +\bname{Cunégonde}! vous qui fûtes tué par les Bulgares! vous le fils de +M. le baron! vous jésuite au Paraguay! Il faut avouer que ce +monde est une étrange chose. Ô \bname{Pangloss}! \bname{Pangloss}! que vous seriez aise +si vous n’aviez pas été pendu!» + + +Le commandant fit retirer les esclaves nègres et les \bname{Paraguains} qui +servaient à boire dans des gobelets de cristal de roche. Il remercia +Dieu et saint Ignace mille fois; il serrait \bname{Candide} entre ses bras, +leurs visages étaient baignés de pleurs. «Vous seriez bien plus étonné, +plus attendri, plus hors de vous-même, dit \bname{Candide}, si je vous disais +que M\up{lle}~\bname{Cunégonde}, votre sœur, que vous avez crue éventrée, +est pleine de santé. — Où? — Dans votre voisinage, chez M.~le gouverneur de +\bname{Buenos} \bname{Aires}; et je venais pour vous faire la guerre.» Chaque mot qu’ils +prononcèrent dans cette longue conversation accumulait prodige sur +prodige. Leur âme tout entière volait sur leur langue, était attentive +dans leurs oreilles, et étincelante dans leurs yeux. Comme ils étaient +Allemands, ils tinrent table longtemps, en attendant le révérend père +provincial; et le commandant parla ainsi à son cher \bname{Candide}. + + + + +\chapter[Comment \bname{Candide} tua le frère…]{Comment \bname{Candide} tua le frère de sa chère \bname{Cunégonde}} + + +\lettrine[ante=«]{J’}{aurai} toute ma vie présent à la mémoire le jour horrible où je vis +tuer mon père et ma mère, et violer ma sœur. \textls[-5]{Quand les Bulgares furent +retirés, on ne trouva point cette sœur adorable, et on mit dans une +charrette ma mère, mon père, et moi, deux servantes et trois petits +garçons égorgés, pour nous aller enterrer dans une chapelle de +jésuites, à deux lieues du château de mes pères. Un jésuite nous jeta +de l’eau bénite; elle était horriblement salée; il en entra quelques +gouttes dans mes yeux; le père s’aperçut que ma paupière faisait un +petit mouvement: il mit la main sur mon cœur, et le sentit palpiter; +je fus secouru, et au bout de trois semaines il n’y paraissait pas. +Vous savez, mon cher \bname{Candide}, que j’étais fort joli; je le devins +encore davantage; aussi le révérend père Croust, supérieur de la +maison, prit pour moi la plus tendre amitié; il me donna l’habit de +novice; quelque temps après je fus envoyé à Rome. Le père général avait +besoin d’une recrue de jeunes jésuites allemands. Les +souverains +du +Paraguay reçoivent le moins qu’ils peuvent de jésuites espagnols; ils +aiment mieux les étrangers, dont ils se croient plus maîtres. Je fus +jugé propre par le révérend père général pour aller travailler dans +cette vigne. +Nous partîmes, un Polonais, un Tyrolien, et moi. Je fus +honoré, en arrivant, du sous-diaconat et d’une lieutenance: je suis +aujourd’hui colonel et prêtre. Nous recevrons vigoureusement les +troupes du roi d’Espagne; je vous réponds qu’elles seront excommuniées +et battues. La Providence vous envoie ici pour nous seconder. Mais +est-il bien vrai que ma chère sœur \bname{Cunégonde} soit dans le voisinage, +chez le gouverneur de \bname{Buenos} Aires?» \bname{Candide} l’assura par serment que +rien n’était plus vrai. Leurs larmes recommencèrent à couler.} + + +Le baron ne pouvait se lasser d’embrasser \bname{Candide}; il l’appelait son +frère, son sauveur. «Ah! peut-être, lui dit-il, nous pourrons ensemble, +mon cher \bname{Candide}, entrer en vainqueurs dans la ville, et reprendre ma +sœur \bname{Cunégonde}. — C’est tout ce que je souhaite, dit \bname{Candide}; car je +comptais l’épouser, et je l’espère encore. — Vous, insolent! répondit le +baron, vous auriez l’impudence d’épouser ma sœur qui a soixante et +douze quartiers! Je vous trouve bien effronté d’oser me parler d’un +dessein si téméraire!» \bname{Candide}, pétrifié d’un tel discours, lui +répondit: «Mon Révérend Père, tous les quartiers du monde n’y font rien; +j’ai tiré votre sœur des bras d’un Juif et d’un inquisiteur; elle m’a +assez d’obligations, elle veut m’épouser. Maître \bname{Pangloss} m’a toujours +dit que les hommes sont égaux; et assurément je l’épouserai. — C’est ce +que nous verrons, coquin!» dit le jésuite baron de Thunder-ten-tronckh; +et en même temps il lui donna un grand coup du plat de son épée sur le +visage. \bname{Candide} dans l’instant tire la sienne, et l’enfonce jusqu’à la +garde dans le ventre du baron jésuite; mais en la retirant toute +fumante, il se mit à pleurer: «Hélas! mon Dieu! dit-il, j’ai tué mon +ancien maître, mon ami, mon beau-frère; je suis le meilleur homme du +monde, et voilà déjà trois hommes que je tue; et dans ces trois il y a +deux prêtres.» + +\bname{Cacambo}, qui faisait sentinelle à la porte de la feuillée, accourut. «Il +ne nous reste qu’à vendre cher notre vie, lui dit son maître; on va, +sans doute, entrer dans la feuillée; il faut mourir les armes à la +main.» \bname{Cacambo}, qui en avait bien vu d’autres, ne perdit point la tête; +il prit la robe de jésuite que portait le baron, la mit sur le corps de +\bname{Candide}, lui donna le bonnet carré du mort, et le fit monter à cheval. +Tout cela se fit en un clin d’œil. «Galopons, mon maître; tout le monde +vous prendra pour un jésuite qui va donner des ordres; et nous aurons +passé les frontières avant qu’on puisse courir après nous.» Il volait +déjà en prononçant ces paroles, et en criant en espagnol: «Place, place +pour le révérend père colonel!» + +\endinput + + diff --git a/macros/luatex/latex/tango/examples/Ch-16-30.tex b/macros/luatex/latex/tango/examples/Ch-16-30.tex new file mode 100644 index 0000000000..ca52af53a8 --- /dev/null +++ b/macros/luatex/latex/tango/examples/Ch-16-30.tex @@ -0,0 +1,2061 @@ + + +\chapter[Ce qui advint aux deux voyageurs…]{Ce qui advint aux deux voyageurs avec deux filles,\\ deux singes, et les +sauvages nommés Oreillons} + + +\lettrine{C}{andide} et son valet furent au-delà des barrières, et personne ne +savait encore dans le camp la mort du jésuite allemand. Le vigilant +\bname{Cacambo} avait eu soin de remplir sa valise de pain, de chocolat, de +jambon, de fruits, et de quelques mesures de vin. Ils s’enfoncèrent +avec leurs chevaux andalous dans un pays inconnu où ils ne découvrirent +aucune route. Enfin une belle prairie entrecoupée de ruisseaux se +présenta devant eux. Nos deux voyageurs font repaître leurs montures. +\bname{Cacambo} propose à son maître de manger, et lui en donne l’exemple. +«Comment veux-tu, disait \bname{Candide}, que je mange du jambon, quand j’ai tué +le fils de M.~le baron, et que je me vois condamné à ne revoir la +belle \bname{Cunégonde} de ma vie? à quoi me servira de prolonger mes +misérables jours, puisque je dois les traîner loin d’elle dans les +remords et dans le désespoir? et que dira le Journal de Trévoux?» + + +En parlant ainsi, il ne laissa pas de manger. Le soleil se couchait. +Les deux égarés entendirent quelques petits cris qui paraissaient +poussés par des femmes. Ils ne savaient si ces cris étaient de douleur +ou de joie; mais ils se levèrent précipitamment avec cette inquiétude +et cette alarme que tout inspire dans un pays inconnu. Ces clameurs +partaient de deux filles toutes nues qui couraient légèrement au bord +de la prairie, tandis que deux singes les suivaient en leur mordant les +fesses. \bname{Candide} fut touché de pitié; il avait appris à tirer chez les +Bulgares, et il aurait abattu une noisette dans un buisson sans toucher +aux feuilles. Il prend son fusil espagnol à deux coups, tire, et tue +les deux singes. «Dieu soit loué, mon cher \bname{Cacambo}! j’ai délivré d’un +grand péril ces deux pauvres créatures: si j’ai commis un péché en +tuant un inquisiteur et un jésuite, je l’ai bien réparé en sauvant la +vie à deux filles. Ce sont peut-être deux demoiselles de condition, et +cette aventure nous peut procurer de très grands avantages dans le +pays.» + + +Il allait continuer, mais sa langue devint percluse quand il vit ces +deux filles embrasser tendrement les deux singes, fondre en larmes sur +leurs corps, et remplir l’air des cris les plus douloureux. «Je ne +m’attendais pas à tant de bonté d’âme», dit-il enfin à \bname{Cacambo}; lequel +lui répliqua: «Vous avez fait là un beau chef d’œuvre, mon maître; vous +avez tué les deux amants de ces demoiselles. — Leurs amants! serait-il +possible? vous vous moquez de moi, \bname{Cacambo}; le moyen de vous croire? +— Mon cher maître, repartit \bname{Cacambo}, vous êtes toujours étonné de tout; +pourquoi trouvez-vous si étrange que dans quelques pays il y ait des +singes qui obtiennent les bonnes grâces des dames? Ils sont des quarts +d’homme, comme je suis un quart d’Espagnol. — Hélas! reprit \bname{Candide}, je +me souviens d’avoir entendu dire à maître \bname{Pangloss} qu’autrefois pareils +accidents étaient arrivés, et que ces mélanges avaient produit des +égypans, des faunes, des satyres; que plusieurs grands personnages de +l’antiquité en avaient vu; mais je prenais cela pour des fables. — Vous +devez être convaincu à présent, dit \bname{Cacambo}, que c’est une vérité, et +vous voyez comment en usent les personnes qui n’ont pas reçu une +certaine éducation; tout ce que je crains, c’est que ces dames ne nous +fassent quelque méchante affaire.» + +Ces réflexions solides engagèrent \bname{Candide} à quitter la prairie, et à +s’enfoncer dans un bois. Il y soupa avec \bname{Cacambo}; et tous deux, après +avoir maudit l’inquisiteur de Portugal, le gouverneur de \bname{Buenos} Aires, +et le baron, s’endormirent sur de la mousse. À leur réveil, ils +sentirent qu’ils ne pouvaient remuer; la raison en était que pendant la +nuit les Oreillons, habitants du pays, à qui les deux dames les avaient +dénoncés, les avaient garrottés avec des cordes d’écorces d’arbre. +Ils étaient entourés d’une cinquantaine d’Oreillons tout nus, armés de +flèches, de massues, et de haches de caillou: les uns faisaient bouillir +une grande chaudière; les autres préparaient des broches, et tous +criaient: «C’est un jésuite, c’est un jésuite! nous serons vengés, et +nous ferons bonne chère; mangeons du jésuite, mangeons du jésuite!» + +«Je vous l’avais bien dit, mon cher maître, s’écria tristement \bname{Cacambo}, +que ces deux filles nous joueraient d’un mauvais tour.» \bname{Candide} +apercevant la chaudière et les broches s’écria: «Nous allons +certainement être rôtis ou bouillis. Ah! que dirait maître \bname{Pangloss}, +s’il voyait comme la pure nature est faite? Tout est bien; soit, mais +j’avoue qu’il est bien cruel, d’avoir perdu M\up{lle}~\bname{Cunégonde}, et +d’être mis à la broche par des Oreillons.» \bname{Cacambo} ne perdait jamais la +tête. «Ne désespérez de rien, dit-il au désolé \bname{Candide}; j’entends un peu +le jargon de ces peuples, je vais leur parler. — Ne manquez pas, dit +\bname{Candide}, de leur représenter quelle est l’inhumanité affreuse de faire +cuire des hommes, et combien cela est peu chrétien.» + +«Messieurs, dit \bname{Cacambo}, vous comptez donc manger aujourd’hui un +jésuite : c’est très bien fait; rien n’est plus juste que de traiter +ainsi ses ennemis. En effet le droit naturel nous enseigne à tuer notre +prochain, et c’est ainsi qu’on en agit dans toute la terre. Si nous +n’usons pas du droit de le manger, c’est que nous avons d’ailleurs de +quoi faire bonne chère; mais vous n’avez pas les mêmes ressources que +nous: certainement il vaut mieux manger ses ennemis que +d’abandonner + aux corbeaux et aux corneilles le fruit de sa victoire. Mais, +messieurs, vous ne voudriez pas manger vos amis. Vous croyez aller +mettre un jésuite en broche, et c’est votre défenseur, c’est l’ennemi +de vos ennemis que vous allez rôtir. Pour moi, je suis né dans votre +pays; monsieur que vous voyez est mon maître, et bien loin d’être +jésuite, il vient de tuer un jésuite, il en porte les dépouilles; voilà +le sujet de votre méprise. Pour vérifier ce que je vous dis, prenez sa +robe, portez-la à la première barrière du royaume de Los Padres; +informez-vous si mon maître n’a pas tué un officier jésuite. Il vous +faudra peu de temps; vous pourrez toujours nous manger, si vous trouvez +que je vous ai menti. Mais, si je vous ai dit la vérité, vous +connaissez trop les principes du droit public, les mœurs, et les lois, +pour ne nous pas faire grâce.» + +Les Oreillons trouvèrent ce discours très raisonnable; ils députèrent +deux notables pour aller en diligence s’informer de la vérité; les deux +députés s’acquittèrent de leur commission en gens d’esprit, et +revinrent bientôt apporter de bonnes nouvelles. Les Oreillons délièrent +leurs deux prisonniers, leur firent toutes sortes de civilités, leur +offrirent des filles, leur donnèrent des rafraîchissements, et les +reconduisirent jusqu’aux confins de leurs états, en criant avec +allégresse: «Il n’est point jésuite, il n’est point jésuite!» + +\bname{Candide} ne se lassait point d’admirer le sujet de sa délivrance. «Quel +peuple! disait-il, quels hommes! quelles mœurs! si je n’avais pas eu +le bonheur de donner un grand coup d’épée au travers du corps du frère +de M\up{lle}~\bname{Cunégonde}, j’étais mangé sans rémission. Mais, après +tout, la pure nature est bonne, puisque ces gens-ci, au lieu de me +manger, m’ont fait mille honnêtetés, dès qu’ils ont su que je n’étais +pas jésuite.» + + + +\chapter[Arrivée de \bname{Candide} et de son valet…]{Arrivée de \bname{Candide} et de son valet\\au pays d’Eldorado, et ce qu’ils y +virent} + + +\lettrine{Q}{uand} ils furent aux frontières des Oreillons: «Vous voyez, dit \bname{Cacambo} +à \bname{Candide}, que cet hémisphère-ci ne vaut pas mieux que l’autre; +croyez-moi, retournons en Europe par le plus court chemin. — Comment y +retourner, dit \bname{Candide}; et où aller? Si je vais dans mon pays, les +Bulgares et les Abares y égorgent tout; si je retourne en Portugal, j’y +suis brûlé; si nous restons dans ce pays-ci, nous risquons à tout +moment d’être mis en broche. Mais comment se résoudre à quitter la +partie du monde que M\up{lle}~\bname{Cunégonde} habite? + + — Tournons vers la Cayenne, dit \bname{Cacambo}, nous y trouverons des Français +qui vont par tout le monde; ils pourront nous aider. Dieu aura +peut-être pitié de nous.» + +Il n’était pas facile d’aller à la Cayenne: ils savaient bien à peu +près de quel côté il fallait marcher; mais des montagnes, des fleuves, +des précipices, des brigands, des sauvages, étaient partout de +terribles obstacles. Leurs +chevaux + moururent de fatigue; leurs +provisions furent consumées; ils se nourrirent un mois entier de fruits +sauvages, et se trouvèrent enfin auprès d’une petite rivière bordée de +cocotiers qui soutinrent leur vie et leurs espérances. + +\bname{Cacambo}, qui donnait toujours d’aussi bons conseils que la vieille, dit +à \bname{Candide}: «Nous n’en pouvons plus, nous avons assez marché; j’aperçois +un canot vide sur le rivage, emplissons-le de cocos, jetons-nous dans +cette petite barque, laissons-nous aller au courant; une rivière mène +toujours à quelque endroit habité. Si nous ne trouvons pas des choses +agréables, nous trouverons du moins des choses nouvelles. — Allons, dit +\bname{Candide}, recommandons-nous à la \bname{Providence}.» + + +Ils voguèrent quelques lieues entre des bords, tantôt fleuris, tantôt +arides, tantôt unis, tantôt escarpés. La rivière s’élargissait +toujours; enfin elle se perdait sous une voûte de rochers épouvantables +qui s’élevaient jusqu’au ciel. Les deux voyageurs eurent la hardiesse +de s’abandonner aux flots sous cette voûte. Le fleuve resserré en cet +endroit les porta avec une rapidité et un bruit horrible. Au bout de +vingt-quatre heures ils revirent le jour; mais leur canot se fracassa +contre les écueils; il fallut se traîner de rocher en rocher pendant +une lieue entière; enfin ils découvrirent un horizon immense, bordé de +montagnes inaccessibles. Le pays était cultivé pour le plaisir comme +pour le besoin; partout l’utile était agréable: les chemins étaient +couverts ou plutôt ornés de voitures d’une forme et d’une matière +brillante, portant des hommes et des femmes d’une beauté singulière, +traînés rapidement par de gros moutons rouges qui surpassaient en +vitesse les plus beaux chevaux d’\bname{Andalousie}, de \bname{Tétuan}, et de \bname{Méquinez}. + + + + +«Voilà pourtant, dit \bname{Candide}, un pays qui vaut mieux que la \bname{Westphalie}.» +Il mit pied à terre avec \bname{Cacambo} auprès du premier village qu’il +rencontra. Quelques enfants du village, couverts de brocarts d’or tout +déchirés, jouaient au palet à l’entrée du bourg; nos deux hommes de +l’autre monde s’amusèrent à les regarder: leurs palets étaient d’assez +larges pièces rondes, jaunes, rouges, vertes, qui jetaient un éclat +singulier. Il prit envie aux voyageurs d’en ramasser quelques uns; +c’était de l’or, c’était des émeraudes, des rubis, dont le moindre +aurait été le plus grand ornement du trône du Mogol. «Sans doute, dit +\bname{Cacambo}, ces enfants sont les fils du roi du pays qui jouent au petit +palet.» Le magister du village parut dans ce moment pour les faire +rentrer à l’école. «Voilà, dit \bname{Candide}, le précepteur de la famille +royale.» + +Les petits gueux quittèrent aussitôt le jeu, en laissant à terre leurs +palets, et tout ce qui avait servi à leurs divertissements.\bname{Candide} les +ramasse, court au précepteur et les lui présente humblement, lui faisant +entendre par signes que leurs altesses royales avaient oublié leur or +et leurs pierreries. Le magister du village, en souriant, les jeta par +terre, regarda un moment la figure de \bname{Candide} avec beaucoup de +surprise, et continua son chemin. + + +Les voyageurs ne manquèrent pas de ramasser l’or, les rubis, et les +émeraudes. «Où sommes-nous? s’écria \bname{Candide}. Il faut que les enfants des +rois de ce pays soient bien élevés, puisqu’on leur apprend à mépriser +l’or et les pierreries.» \bname{Cacambo} était aussi surpris que \bname{Candide}. Ils +approchèrent enfin de la première maison du village; elle était bâtie +comme un palais d’Europe. Une foule de monde s’empressait à la porte, +et encore plus dans le logis; une musique très agréable se faisait +entendre, et une odeur délicieuse de cuisine se faisait sentir. \bname{Cacambo} +s’approcha de la porte, et entendit qu’on parlait péruvien; c’était sa +langue maternelle; car tout le monde sait que \bname{Cacambo} était né au +Tucuman, dans un village où l’on ne connaissait que cette langue. «Je +vous servirai d’interprète, dit-il à \bname{Candide}; entrons, c’est ici un +cabaret.» + +Aussitôt deux garçons et deux filles de l’hôtellerie, vêtus de drap +d’or, et les cheveux renoués avec des rubans, les invitent à se mettre +à la table de l’hôte. On servit quatre potages garnis chacun de deux +perroquets, un contour bouilli qui pesait deux cents livres, deux +singes rôtis d’un goût excellent, trois cents colibris dans un plat, et +six cents oiseaux-mouches dans un autre; des ragoûts exquis, des +pâtisseries délicieuses; le tout dans des plats d’une espèce de cristal +de roche. Les garçons et les filles de l’hôtellerie versaient plusieurs +liqueurs faites de cannes de sucre. + +Les convives étaient pour la plupart des marchands et des voituriers, +tous d’une politesse extrême, qui firent quelques questions à \bname{Cacambo} +avec la discrétion la plus circonspecte, et qui répondirent aux siennes +d’une manière à le satisfaire. + +Quand le repas fut fini, \bname{Cacambo} crut, ainsi que \bname{Candide}, bien payer +son écot, en jetant sur la table de l’hôte deux de ces larges pièces +d’or qu’il avait ramassées; l’hôte et l’hôtesse éclatèrent de rire, et +se tinrent longtemps les côtés. Enfin ils se remirent. «Messieurs, dit +l’hôte, nous voyons bien que vous êtes des étrangers; nous ne sommes +pas accoutumés à en voir. Pardonnez-nous si nous nous sommes mis à rire +quand vous nous avez offert en paiement les cailloux de nos grands +chemins. Vous n’avez pas sans doute de la monnaie du pays, mais il +n’est pas nécessaire d’en avoir pour dîner ici. Toutes les hôtelleries +établies pour la commodité du commerce sont payées par le gouvernement. +Vous avez fait mauvaise chère ici, parce que c’est un pauvre village, +mais partout ailleurs vous serez reçus comme vous méritez de l’être.» +\bname{Cacambo} expliquait à \bname{Candide} tous les discours de l’hôte, et \bname{Candide} +les écoutait avec la même admiration et le même égarement que son ami +\bname{Cacambo} les rendait. «Quel est donc ce pays, disaient-ils l’un et +l’autre, inconnu à tout le reste de la terre, et où toute la nature est +d’une espèce si différente de la nôtre? C’est probablement le pays où +tout va bien; car il faut absolument qu’il y en ait un de cette espèce. +Et, quoi qu’en dît maître \bname{Pangloss}, je me suis souvent aperçu que tout +allait assez mal en \bname{Westphalie}.» + + +\chapter{Ce qu’ils virent dans le pays d’Eldorado} + + + +\lettrine{C}{acambo} témoigna à son hôte toute sa curiosité; l’hôte lui dit: «Je suis +fort ignorant, et je m’en trouve bien; mais nous avons ici un vieillard +retiré de la cour qui est le plus savant homme du royaume, et le plus +communicatif.» \textls[5]{Aussitôt il mène \bname{Cacambo} chez le vieillard. \bname{Candide} ne +jouait plus que le second personnage, et accompagnait son valet. Ils +entrèrent dans une maison fort simple, car la porte n’était que +d’argent, et les lambris des appartements n’étaient que d’or, mais +travaillés avec tant de goût, que les plus riches lambris ne +l’effaçaient pas. L’antichambre n’était à la vérité incrustée que de +rubis et d’émeraudes; mais l’ordre dans lequel tout était arrangé +réparait bien cette extrême simplicité. + +Le vieillard reçut les deux étrangers sur un sofa matelassé de plumes +de colibri, et leur fit présenter des liqueurs dans des vases de +diamant; après quoi il satisfit à leur curiosité en ces termes: + + +«Je suis âgé de cent soixante et douze ans, et j’ai appris de feu mon +père, écuyer du roi, les étonnantes révolutions du Pérou dont il avait +été témoin. Le royaume où nous sommes est l’ancienne patrie des Incas, +qui en sortirent très imprudemment pour aller subjuguer une partie du +monde, et qui furent enfin détruits par les Espagnols. + +«Les princes de leur famille qui restèrent dans leur pays natal furent +plus sages; ils ordonnèrent, du consentement de la nation, qu’aucun +habitant ne sortirait jamais de notre petit royaume; et c’est ce qui +nous a conservé notre innocence et notre félicité. Les Espagnols ont eu +une connaissance confuse de ce pays, ils l’ont appelé El Dorado; et un +\bname{Anglais}, nommé le chevalier Raleigh, en a même approché il y a environ +cent années; mais, comme nous sommes entourés de rochers inabordables +et de précipices, nous avons toujours été jusqu’à présent à l’abri de +la rapacité des nations de l’Europe, qui ont une fureur inconcevable +pour les cailloux et pour la fange de notre terre, et qui, pour en +avoir, nous tueraient tous jusqu’au dernier.» + +La conversation fut longue; elle roula sur la forme du gouvernement, +sur les mœurs, sur les femmes, sur les spectacles publics, sur les +arts. Enfin \bname{Candide}, qui avait +toujours + du goût pour la métaphysique, +fit demander par \bname{Cacambo} si dans le pays il y avait une religion. + +%\looseness=1 +Le vieillard rougit un peu. «Comment donc! dit-il, en pouvez-vous +douter? Est-ce que vous nous prenez pour des ingrats?» \bname{Cacambo} demanda +humblement quelle était la religion d’Eldorado. Le vieillard rougit +encore: «Est-ce qu’il peut y avoir deux religions? dit-il. Nous avons, +je crois, la religion de tout le monde; nous adorons Dieu du soir +jusqu’au matin. — N’adorez vous qu’un seul Dieu? dit \bname{Cacambo}, qui servait +toujours d’interprète aux doutes de \bname{Candide}. — Apparemment, dit le +vieillard, qu’il n’y en a ni deux, ni trois, ni quatre. Je vous avoue +que les gens de votre monde font des questions bien singulières.» +\bname{Candide} ne se lassait pas de faire interroger ce bon vieillard; il +voulut savoir comment on priait Dieu dans Eldorado. «Nous ne le prions +point, dit le bon et respectable sage; nous n’avons rien à lui +demander, il nous a donné tout ce qu’il nous faut; nous le remercions +sans cesse.» \bname{Candide} eut la curiosité de voir des prêtres; il fit +demander où ils étaient. Le bon vieillard sourit. «Mes amis, dit-il, +nous sommes tous prêtres; le roi et tous les chefs de famille chantent +des +cantiques d’actions de grâces solennellement tous les matins, et +cinq ou six mille musiciens les accompagnent. + +— Quoi! vous n’avez point +de moines qui enseignent, qui disputent, qui gouvernent, qui cabalent, +et qui font brûler les gens qui ne sont pas de leur avis? — Il faudrait +que nous fussions fous, dit le vieillard; nous sommes tous ici du même +avis, et nous n’entendons pas ce que vous voulez dire avec vos moines.» +\bname{Candide} à tous ces discours demeurait en extase, et disait en lui-même: +«Ceci est bien différent de la \bname{Westphalie} et du château de monsieur le +baron: si notre ami \bname{Pangloss} avait vu Eldorado, il n’aurait plus dit +que le château de Thunder-ten-tronckh était ce qu’il y avait de mieux +sur la terre; il est certain qu’il faut voyager.» + + +Après cette longue conversation, le bon vieillard fit atteler un +carrosse à six moutons, et donna douze de ses domestiques aux deux +voyageurs pour les conduire à la cour. «Excusez-moi, leur dit-il, si mon +âge me prive de l’honneur de vous accompagner. Le roi vous recevra +d’une manière dont vous ne serez pas mécontents, et vous pardonnerez +sans doute aux usages du pays, s’il y en a quelques uns qui vous +déplaisent.» + + +\bname{Candide} et \bname{Cacambo} montent en carrosse; les six moutons volaient, et en +moins de quatre heures on arriva au palais du roi, situé à un bout de +la capitale. Le portail était de deux cent vingt pieds de haut, et de +cent de large; il est impossible d’exprimer quelle en était la matière. +On voit assez quelle supériorité prodigieuse elle devait avoir sur ces +cailloux et sur ce sable que nous nommons \emph{or} et {pierreries}. + + +Vingt belles filles de la garde reçurent \bname{Candide} et \bname{Cacambo} à la +descente du carrosse, les conduisirent aux bains, les vêtirent de robes +d’un tissu de duvet de colibri; après quoi les grands officiers et les +grandes officières de la couronne les +menèrent à l’appartement de Sa +Majesté au milieu de deux files, chacune de mille musiciens, selon +l’usage ordinaire. Quand ils approchèrent de la salle du trône, \bname{Cacambo} +demanda à un grand officier comment il fallait s’y prendre pour saluer +Sa Majesté: si on se jetait à genoux ou ventre à terre; si on mettait +les mains sur la tête ou sur le derrière; si on léchait la poussière de +la salle: en un mot, quelle était la cérémonie. «L’usage, dit le +grand-officier, est d’embrasser le roi et de le baiser des deux côtés.» +\bname{Candide} et \bname{Cacambo} sautèrent au cou de Sa Majesté, qui les reçut avec +toute la grâce imaginable, et qui les pria poliment à souper. + + +En attendant, on leur fit voir la ville, les édifices publics élevés +jusqu’aux nues, les marchés ornés de mille colonnes, les fontaines +d’eau pure, les fontaines d’eau rose, celles de liqueurs de canne de +sucre qui coulaient continuellement dans de grandes places pavées d’une +espèce de pierreries qui répandaient une odeur semblable à celle du +girofle et de la cannelle. \bname{Candide} demanda à voir la cour de justice, +le parlement; on lui dit qu’il n’y en avait point, et qu’on ne plaidait +jamais. Il s’informa s’il y avait des prisons, et on lui dit que non. +Ce qui le surprit davantage, et qui lui fit le plus de plaisir, ce fut +le palais des sciences, dans lequel il vit une galerie de deux mille +pas, toute pleine d’instruments de mathématiques et de physique.} + + +Après avoir parcouru toute l’après-dinée à peu près la millième partie +de la ville, on les ramena chez le roi. \bname{Candide} se mit à table entre Sa +\bname{Majesté}, son valet \bname{Cacambo}, et plusieurs dames. Jamais on ne fit +meilleure chère, et jamais on n’eut plus d’esprit à souper qu’en eut Sa +\bname{Majesté}. \bname{Cacambo} expliquait les bons mots du roi à \bname{Candide}, et quoique +traduits, ils paraissaient toujours des bons mots. De tout ce qui +étonnait \bname{Candide}, ce n’était pas ce qui l’étonna le moins. + +Ils passèrent un mois dans cet hospice. \bname{Candide} ne cessait de dire à +\bname{Cacambo}: «Il est vrai, mon ami, encore une fois, que le château où je +suis né ne vaut pas le pays où nous sommes; mais enfin M\up{lle}~\bname{Cunégonde} n’y est pas, et vous avez sans doute quelque maîtresse en +Europe. Si nous restons ici, nous n’y serons que comme les autres; au +lieu que si nous retournons dans notre monde, seulement avec douze +moutons chargés de cailloux d’Eldorado, nous serons plus riches que +tous les rois ensemble, nous n’aurons plus d’inquisiteurs à craindre, +et nous pourrons aisément reprendre M\up{lle}~\bname{Cunégonde}.» + +Ce discours plut à \bname{Cacambo}; on aime tant à courir, à se faire valoir +chez les siens, à faire parade de ce qu’on a vu dans ses voyages, que +les deux heureux résolurent de ne plus l’être, et de demander leur +congé à Sa Majesté. + +«Vous faites une sottise, leur dit le roi: je sais bien que mon pays est +peu de chose; mais, quand on est passablement quelque part, il faut y +rester. Je n’ai pas assurément le droit de retenir des étrangers; c’est +une tyrannie qui n’est ni dans nos mœurs ni dans nos lois; tous les +hommes sont libres; partez quand vous voudrez, mais la sortie est bien +difficile. Il est impossible de remonter la rivière rapide sur laquelle +vous êtes arrivés par miracle, et qui court sous des voûtes de rochers. +Les montagnes qui entourent tout mon royaume ont dix mille pieds de +hauteur, et sont droites comme des murailles: elles occupent chacune en +largeur un espace de plus de dix lieues; on ne peut en descendre que +par des précipices. Cependant, puisque vous voulez absolument partir, +je vais donner ordre aux intendants des machines d’en faire une qui +puisse vous transporter commodément. Quand on vous aura conduits au +revers des montagnes, personne ne pourra vous accompagner; car mes +sujets ont fait vœu de ne jamais sortir de leur enceinte, et ils sont +trop sages pour rompre leur vœu. Demandez-moi d’ailleurs tout ce qu’il +vous plaira. — Nous ne demandons à Votre Majesté, dit \bname{Cacambo}, que +quelques moutons chargés de vivres, de cailloux, et de la boue du pays.» +Le roi rit: «Je ne conçois pas, dit-il, quel goût vos gens d’Europe ont +pour notre boue jaune: mais emportez-en tant que vous voudrez, et grand +bien vous fasse.» + +Il donna l’ordre sur-le-champ à ses ingénieurs de faire une machine +pour guinder ces deux hommes extraordinaires hors du royaume. Trois +mille bons physiciens y travaillèrent; elle fut prête au bout de quinze +jours, et ne coûta pas plus de vingt millions de livres sterling, +monnaie du pays. On mit sur la machine \bname{Candide} et \bname{Cacambo}; il y avait +deux grands moutons rouges sellés et bridés pour leur servir de monture +quand ils auraient franchi les montagnes, vingt moutons de bât chargés +de vivres, trente qui portaient des présents de ce que le pays a de +plus curieux, et cinquante chargés d’or, de pierreries, et de diamants. +Le roi embrassa tendrement les deux vagabonds. + +Ce fut un beau spectacle que leur départ, et la manière ingénieuse dont +ils furent hissés eux et leurs moutons au haut des montagnes. Les +physiciens prirent congé d’eux après les avoir mis en sûreté, et +\bname{Candide} n’eut plus d’autre désir et d’autre objet que d’aller présenter +ses moutons à M\up{lle}~\bname{Cunégonde}. «Nous avons, dit-il, de quoi payer +le gouverneur de \bname{Buenos} Aires, si M\up{lle}~\bname{Cunégonde} peut être mise +à prix. Marchons vers la Cayenne, embarquons-nous, et nous verrons +ensuite quel royaume nous pourrons acheter.» + + + + +\chapter[Ce qui leur arriva à Surinam…]{Ce qui leur arriva à Surinam, et comment \bname{Candide} fit connaissance avec +\bname{Martin}} + + +\lettrine{L}{a première} journée de nos deux voyageurs fut assez agréable. Ils +étaient encouragés par l’idée de se voir possesseurs de plus de trésors +que l’Asie, \bname{l’Europe}, et l’Afrique, n’en pouvaient rassembler. \bname{Candide} +transporté écrivit le nom de \bname{Cunégonde} sur les arbres. À la seconde +journée deux de leurs moutons s’enfoncèrent dans des marais, et y +furent abîmés avec leurs charges; deux autres moutons moururent de +fatigue quelques jours après; sept ou huit périrent ensuite de faim +dans un désert; d’autres tombèrent au bout de quelques jours dans des +précipices. Enfin, après cent jours de marche, il ne leur resta que +deux moutons. \bname{Candide} dit à \bname{Cacambo}: «Mon ami, vous voyez comme les +richesses de ce monde sont périssables; il n’y a rien de solide que la +vertu et le bonheur de revoir M\up{lle}~\bname{Cunégonde}. — Je l’avoue, dit +\bname{Cacambo}; mais il nous reste encore deux moutons avec plus de trésors +que n’en aura jamais le roi d’Espagne; et je vois bien de loin une +ville que je soupçonne être Surinam, appartenante aux Hollandais. Nous +sommes au bout de nos peines et au commencement de notre félicité.» + +%\looseness=1 +En approchant de la ville, ils rencontrèrent un nègre étendu par terre, +n’ayant plus que la moitié de son habit, c’est-à-dire d’un caleçon de +toile bleue; il manquait à ce pauvre homme la jambe gauche et la main +droite. «Eh! mon Dieu! lui dit \bname{Candide} en hollandais, que fais-tu là, +mon ami, dans l’état horrible où je te vois? — J’attends mon maître, M.~\bname{Vanderdendur}, le fameux négociant, répondit le nègre. — Est-ce M.~\bname{Vanderdendur}, dit \bname{Candide}, qui t’a traité ainsi? — Oui, monsieur, dit le +nègre, c’est l’usage. On nous donne un caleçon de toile pour tout +vêtement deux fois l’année. Quand nous travaillons aux sucreries, et +que la meule nous attrape le doigt, on nous coupe la main: quand nous +voulons nous enfuir, on nous coupe la jambe: je me suis trouvé dans les +deux cas. C’est à ce prix que vous mangez du sucre en Europe. +Cependant, lorsque ma mère me vendit dix écus patagons sur la côte de +Guinée, elle me disait: \frquote{\localleftbox{« }Mon cher enfant, bénis nos fétiches, adore-les +toujours, ils te feront vivre heureux; tu as l’honneur d’être esclave +de nos seigneurs les blancs, et tu fais par là la fortune de ton père +et de ta mère.}\localleftbox{} Hélas! je ne sais pas si j’ai fait leur fortune, mais +ils n’ont pas fait la mienne. Les chiens, les singes, et les +perroquets, sont mille fois moins malheureux que nous: les fétiches +hollandais qui m’ont converti me disent tous les dimanches que nous +sommes tous enfants d’Adam, blancs et noirs. Je ne suis pas +généalogiste; mais si ces prêcheurs disent vrai, nous sommes tous +cousins issus de germain. Or vous m’avouerez qu’on ne peut pas en user +avec ses parents d’une manière \linebreak plus horrible. + + +— Ô \bname{Pangloss}! s’écria \bname{Candide}, tu n’avais pas deviné cette abomination; +c’en est fait, il faudra qu’à la fin je renonce à ton optimisme. +— Qu’est-ce qu’optimisme? disait \bname{Cacambo}. — Hélas! dit \bname{Candide}, c’est la +rage de soutenir que tout est bien quand on est mal»; et il versait des +larmes en regardant son nègre; et en pleurant, il entra dans \bname{Surinam}. + +La première chose dont ils s’informent, c’est s’il n’y a point au port +quelque vaisseau qu’on pût envoyer à \bname{Buenos} Aires. Celui à qui ils +s’adressèrent était justement un patron espagnol qui s’offrit à faire +avec eux un marché honnête. Il leur donna rendez-vous dans un cabaret. +\bname{Candide} et le fidèle \bname{Cacambo} allèrent l’y attendre avec leurs deux +moutons. + + +\bname{Candide}, qui avait le cœur sur les lèvres, conta à \bname{l’Espagnol} toutes +ses aventures, et lui avoua qu’il voulait enlever mademoiselle +\bname{Cunégonde}. «Je me garderai bien de vous passer à \bname{Buenos} Aires, dit le +patron: je serais pendu, et vous aussi; la belle \bname{Cunégonde} est la +maîtresse favorite de monseigneur.» Ce fut un coup de foudre pour +\bname{Candide}, il pleura longtemps; enfin il tira à part \bname{Cacambo}. «Voici, mon +cher ami, lui dit-il, ce qu’il faut que tu fasses. Nous avons chacun +dans nos poches pour cinq ou six millions de diamants, tu es plus +habile que moi; va prendre M\up{lle}~\bname{Cunégonde} à \bname{Buenos} Aires. Si le +gouverneur fait quelque difficulté, donne-lui un million: s’il ne se +rend pas, donne-lui-en deux; tu n’as point tué d’inquisiteur, on ne se +défiera point de toi. J’équiperai un autre vaisseau, j’irai t’attendre +à \bname{Venise}: c’est un pays libre où l’on n’a rien à craindre ni des +Bulgares, ni des Abares, ni des Juifs, ni des inquisiteurs.» \bname{Cacambo} +applaudit, à cette sage résolution. Il était au désespoir de se séparer +d’un bon maître devenu son ami intime; mais le plaisir de lui être +utile l’emporta sur la douleur de le quitter. Ils s’embrassèrent en +versant des larmes: \bname{Candide} lui recommanda de ne point oublier la bonne +vieille. \bname{Cacambo} partit dès le jour même: c’était un très bon homme que +ce \bname{Cacambo}. + +\bname{Candide} resta encore quelque temps à Surinam, et attendit qu’un autre +patron voulût le mener en Italie lui et les deux moutons qui lui +restaient. Il prit des domestiques, et acheta tout ce qui lui était +nécessaire pour un long voyage; enfin M.~\bname{Vanderdendur}, maître d’un gros +vaisseau, vint se présenter à lui. «Combien voulez-vous, demanda-t-il à +cet homme, pour me mener en droiture à \bname{Venise}, moi, mes gens, mon +bagage, et les deux moutons que voilà?» Le patron s’accorda à dix mille +piastres: \bname{Candide} n’hésita pas. + + +«Oh! oh! dit à part soi le prudent Vanderdendur, cet étranger donne dix +mille piastres tout d’un coup! il faut qu’il soit bien riche.» Puis +revenant un moment après, il signifia qu’il ne pouvait partir à moins +de vingt mille. «Eh bien! vous les aurez, dit \bname{Candide}. + +«Ouais, se dit tout bas le marchand, cet homme donne vingt mille +piastres aussi aisément que dix mille.» Il revint encore, et dit qu’il +ne pouvait le conduire à \bname{Venise} à moins de trente mille piastres. «Vous +en aurez donc trente mille», répondit \bname{Candide}. + +«Oh! oh! se dit encore le marchand hollandais, trente mille piastres ne +coûtent rien à cet homme-ci; sans doute les deux moutons portent des +trésors immenses; n’insistons pas davantage: faisons-nous d’abord payer +les trente mille piastres, et puis nous verrons.» \bname{Candide}, vendit deux +petits diamants, dont le moindre valait plus que tout l’argent que +demandait le patron. Il le paya d’avance. Les deux moutons furent +embarqués. \bname{Candide} suivait dans un petit bateau pour joindre le +vaisseau à la rade; le patron prend son temps, met à la voile, démarre; +le vent le favorise. \bname{Candide} éperdu et stupéfait le perd bientôt de +vue. «Hélas! cria-t-il, voilà un tour digne de l’Ancien Monde.» Il +retourne au rivage, abîmé dans la douleur; car enfin il avait perdu de +quoi faire la fortune de vingt monarques. + +Il se transporte chez le juge hollandais; et, comme il était un peu +troublé, il frappe rudement à la porte; il entre, expose son aventure, +et crie un peu plus haut qu’il ne convenait. Le juge commença par lui +faire payer dix mille piastres pour le bruit qu’il avait fait: ensuite +il l’écouta patiemment, lui promit d’examiner son affaire sitôt que le +marchand serait revenu, et se fit payer dix mille autres piastres pour +les frais de l’audience. + +Ce procédé acheva de désespérer \bname{Candide}; il avait à la vérité essuyé +des malheurs mille fois plus douloureux; mais le sang froid du juge, et +celui du patron dont il était volé, alluma sa bile, et le plongea dans +une noire +mélancolie. La méchanceté des hommes se présentait à son +esprit dans toute sa laideur, il ne se nourrissait que d’idées tristes. +Enfin un vaisseau français étant sur le point de partir pour Bordeaux, +comme il n’avait plus de moutons chargés de diamants à embarquer, il +loua une chambre du vaisseau à juste prix, et fit signifier dans la +ville qu’il paierait le passage, la nourriture, et donnerait deux mille +piastres à un honnête homme qui voudrait faire le voyage avec lui, à +condition que cet homme serait le plus dégoûté de son état, et le plus +malheureux de la province. + + +Il se présenta une foule de prétendants qu’une flotte n’aurait pu +contenir. \bname{Candide}, voulant choisir entre les plus apparents, il +distingua une vingtaine de personnes qui lui paraissaient sociables, et +qui toutes prétendaient mériter la préférence. Il les assembla dans son +cabaret, et leur donna à souper, à condition que chacun ferait serment +de raconter fidèlement son histoire, promettant de choisir celui qui +lui paraîtrait le plus à plaindre et le plus mécontent de son état, à +plus juste titre, et de donner aux autres quelques gratifications. + +La séance dura jusqu’à quatre heures du matin. \bname{Candide}, en écoutant +toutes leurs aventures, se ressouvenait de ce que lui avait dit la +vieille en allant à \bname{Buenos} Aires, et de la gageure qu’elle avait faite, +qu’il n’y avait personne sur le vaisseau à qui il ne fût arrivé de très +grands malheurs. Il songeait à \bname{Pangloss} à chaque aventure qu’on lui +contait. Ce \bname{Pangloss}, disait-il, serait bien embarrassé à démontrer son +système. Je voudrais qu’il fût ici. Certainement si tout va bien, c’est +dans Eldorado, et non pas dans le reste de la terre. Enfin il se +détermina en faveur d’un pauvre savant qui avait travaillé dix ans pour +les libraires à Amsterdam. Il jugea qu’il n’y avait point de métier au +monde dont on dût être plus dégoûté. + +Ce savant, qui était d’ailleurs un bon homme, avait été volé par sa +femme, battu par son fils, et abandonné de sa fille, qui s’était fait +enlever par un Portugais. Il venait d’être privé d’un petit emploi +duquel il subsistait; et les prédicants de Surinam le persécutaient, +parce qu’ils le prenaient pour un socinien. Il faut avouer que les +autres étaient pour le moins aussi malheureux que lui; mais \bname{Candide} +espérait que le \bname{savant} le désennuierait dans le voyage. Tous ses autres +rivaux trouvèrent que \bname{Candide} leur faisait une grande injustice; mais il +les apaisa en leur donnant à chacun cent piastres. + + + +\chapter{Ce qui arriva sur mer à \bname{Candide} et à \bname{Martin}} + + +\lettrine{L}{e vieux} savant, qui s’appelait \bname{Martin}, s’embarqua donc pour Bordeaux +avec \bname{Candide}. L’un et l’autre avaient beaucoup vu et beaucoup souffert; +et quand le vaisseau aurait dû faire voile de Surinam au Japon par le +cap de Bonne-Espérance, ils auraient eu de quoi s’entretenir du mal +moral et du mal physique pendant tout le voyage. + + +Cependant \bname{Candide} avait un grand avantage sur \bname{Martin}, c’est qu’il +espérait toujours revoir M\up{lle}~\bname{Cunégonde}, et que \bname{Martin} n’avait +rien à espérer; de plus il avait de l’or et des diamants; et, quoiqu’il +eût perdu cent gros moutons rouges chargés des plus grands trésors de +la terre, quoiqu’il eût toujours sur le cœur la friponnerie du patron +hollandais, cependant quand il songeait à ce qui lui restait dans ses +poches, et quand il parlait de \bname{Cunégonde}, surtout à la fin du repas, il +penchait alors pour le système de \bname{Pangloss}. + + +«Mais vous, monsieur \bname{Martin}, dit-il au savant, que pensez-vous de tout +cela? quelle est votre idée sur le mal moral et le mal physique? +— Monsieur, répondit \bname{Martin}, mes prêtres m’ont accusé d’être socinien; +mais la vérité du fait est que je suis manichéen. — Vous vous moquez +de moi, dit \bname{Candide}; il n’y a plus de manichéens dans le monde. — Il y a +moi, dit \bname{Martin}: je ne sais qu’y faire; mais je ne peux penser +autrement. — Il faut que vous ayez le diable au corps, dit \bname{Candide}. — Il se +mêle si fort des affaires de ce monde, dit \bname{Martin}, qu’il pourrait bien +être dans mon corps, comme partout ailleurs; mais je vous avoue qu’en +jetant la vue sur ce globe, ou plutôt sur ce globule, je pense que Dieu +l’a abandonné à quelque être malfaisant; j’en excepte toujours +Eldorado. Je n’ai guère vu de ville qui ne désirât la ruine de la ville +voisine, point de famille qui ne voulût exterminer quelque autre +famille. Partout les faibles ont en exécration les puissants devant +lesquels ils rampent, et les puissants les traitent comme des troupeaux +dont on vend la laine et la chair. Un million d’assassins enrégimentés, +courant d’un bout de \bname{l’Europe} à + l’autre, exerce le meurtre et le +brigandage avec discipline pour gagner son pain, parce qu’il n’a pas de +métier plus honnête; et dans les villes qui paraissent jouir de la +paix, et où les arts fleurissent, les hommes sont dévorés de plus +d’envie, de soins, et d’inquiétudes, qu’une ville assiégée n’éprouve de +fléaux. Les chagrins secrets sont encore plus cruels que les misères +publiques. En un mot j’en ai tant vu et tant éprouvé, que \linebreak je suis +manichéen. + + + +— Il y a pourtant du bon, répliquait \bname{Candide}. — Cela peut être, disait +\bname{Martin}; mais je ne le connais pas.» + + + +Au milieu de cette dispute, on entendit un bruit de canon. Le bruit +redouble de moment en moment. Chacun prend sa lunette. On aperçoit deux +vaisseaux qui combattaient à la distance d’environ trois milles: le +vent les amena l’un et l’autre si près du vaisseau français, qu’on eut +le plaisir de voir le combat tout à son aise. Enfin l’un des deux +vaisseaux lâcha à l’autre une bordée si bas et si juste, qu’il le coula +à fond. \bname{Candide} et \bname{Martin} aperçurent distinctement une centaine +d’hommes sur le tillac du vaisseau qui s’enfonçait; ils levaient tous +les mains au ciel, et jetaient des clameurs effroyables; en un moment +tout fut englouti. + +Eh bien! dit \bname{Martin}, voilà comme les hommes se traitent les uns les +autres. Il est vrai, dit \bname{Candide}, qu’il y a quelque chose de diabolique +dans cette affaire. En parlant ainsi, il aperçut je ne sais quoi d’un +rouge éclatant, qui nageait auprès de son vaisseau. On détacha la +chaloupe pour voir ce que ce pouvait être; c’était un de ses moutons. +\bname{Candide} eut plus de joie de retrouver ce mouton, qu’il n’avait été +affligé d’en perdre cent tous chargés de gros diamants d’Eldorado. + +Le capitaine français aperçut bientôt que le capitaine du vaisseau +submergeant était espagnol, et que celui du vaisseau submergé était un +pirate hollandais; c’était celui-là même qui avait volé \bname{Candide}. Les +richesses immenses dont ce scélérat s’était emparé furent ensevelies +avec lui dans la mer, et il n’y eut qu’un mouton de sauvé. «Vous voyez, +dit \bname{Candide} à \bname{Martin}, que le crime est puni quelquefois; ce coquin de +patron hollandais a eu le sort qu’il méritait. — Oui, dit \bname{Martin}; mais +fallait-il que les passagers qui étaient sur son vaisseau périssent +aussi? Dieu a puni ce fripon, le diable a noyé \linebreak les autres.» + +Cependant le vaisseau français et l’espagnol continuèrent leur route, +et \bname{Candide} continua ses conversations avec \bname{Martin}. Ils disputèrent +quinze jours de suite, et au bout de quinze jours ils étaient aussi +avancés que le premier. Mais enfin ils parlaient, ils se communiquaient +des idées, ils se consolaient. \bname{Candide} caressait son mouton. «Puisque je +t’ai retrouvé, dit-il, je pourrai bien retrouver \bname{Cunégonde}.» + + + +\chapter[Candide et \bname{Martin} approchent des côtes…]{Candide et \bname{Martin} approchent des côtes\\ de France, et raisonnent.} + + +\lettrine{O}{n aperçut} enfin les côtes de France. «Avez-vous jamais été en France, +monsieur \bname{Martin}? dit \bname{Candide}. — Oui, dit \bname{Martin}, j’ai parcouru plusieurs +provinces. Il y en a où la moitié des habitants est folle, quelques +unes où l’on est trop rusé, d’autres où l’on est communément assez doux +et assez bête, d’autres où l’on fait le bel esprit; et, dans toutes, la +principale occupation est l’amour, la seconde, de médire; et la +troisième, de dire des sottises. — Mais, monsieur \bname{Martin}, avez-vous vu +Paris? — Oui, j’ai vu Paris; il tient de toutes ces espèces-là; c’est un +chaos, c’est une presse dans laquelle tout le monde cherche le plaisir, +et où presque personne ne le trouve, du moins à ce qu’il m’a paru. J’y +ai séjourné peu; j’y fus volé, en arrivant, de tout ce que j’avais, par +des filous, à la foire Saint-Germain; on me prit moi-même pour un +voleur, et je fus huit jours en prison; après quoi je me fis correcteur +d’imprimerie pour gagner de quoi retourner à pied en \bname{Hollande}. Je +connus la canaille écrivante, la canaille cabalante, et la canaille +convulsionnaire. On dit qu’il y a des gens fort polis dans cette +ville-là: je le veux croire. + +— Pour moi, je n’ai nulle curiosité de voir la France, dit \bname{Candide}; vous +devinez aisément que quand on a passé un mois dans Eldorado, on ne se +soucie plus de rien voir sur la terre que M\up{lle}~\bname{Cunégonde}; je +vais l’attendre à \bname{Venise}; nous +traverserons + la France pour aller en +Italie; ne m’accompagnerez-vous pas? — Très volontiers, dit \bname{Martin}: on +dit que \bname{Venise} n’est bonne que pour les nobles Vénitiens, mais que +cependant on y reçoit très bien les étrangers quand ils ont beaucoup +d’argent; je n’en ai point; vous en avez, je vous suivrai partout. — À +propos, dit \bname{Candide}, pensez-vous que la terre ait été originairement +une mer, comme on l’assure dans ce gros livre qui appartient au +capitaine du vaisseau? — Je n’en crois rien du tout, dit \bname{Martin}, non +plus que de toutes les rêveries qu’on nous débite depuis quelque temps. +— Mais à quelle fin ce monde a-t-il donc été formé? dit \bname{Candide}. — Pour +nous faire enrager, répondit \bname{Martin}. — N’êtes-vous pas bien étonné, +continua \bname{Candide}, de l’amour que ces deux filles du pays des Oreillons +avaient pour ces deux singes, et dont je vous ai conté l’aventure? +— Point du tout, dit \bname{Martin}, je ne vois pas ce que cette passion a +d’étrange; j’ai tant vu de choses extraordinaires, qu’il n’y a plus +rien d’extraordinaire pour moi. — Croyez-vous, dit \bname{Candide}, que les +hommes se soient toujours mutuellement massacrés comme ils font +aujourd’hui? qu’ils aient toujours été menteurs, fourbes, perfides, +ingrats, brigands, faibles, volages, lâches, envieux, gourmands, +ivrognes, avares, ambitieux, sanguinaires, calomniateurs, débauchés, +fanatiques, hypocrites, et sots? — Croyez-vous, dit \bname{Martin}, que les +éperviers aient toujours mangé des pigeons quand ils en ont trouvé? +— Oui, sans doute, dit \bname{Candide}. — Eh bien! dit \bname{Martin}, si les éperviers ont +toujours eu le même caractère, pourquoi voulez-vous que les hommes +aient changé le leur? — Oh! dit \bname{Candide}, il y a bien de la différence, +car le libre arbitre…» En raisonnant ainsi, ils arrivèrent à Bordeaux. + + + +\chapter[Ce qui arriva en France…]{Ce qui arriva en France à Candide et à \bname{Martin}} + + + +\lettrine{C}{andide} ne s’arrêta dans Bordeaux qu’autant de temps qu’il en fallait +pour vendre quelques cailloux du \bname{Dorado}, et pour s’accommoder d’une +bonne chaise à deux places; car il ne pouvait plus se passer de son +philosophe \bname{Martin}; il fut seulement très fâché de se séparer de son +mouton, qu’il laissa à l’académie des sciences de Bordeaux, laquelle +proposa pour le sujet du prix de cette année de trouver pourquoi la +laine de ce mouton était rouge; et le prix fut adjugé à un savant du +Nord, qui démontra par A, plus B, moins C divisé par Z, que le mouton +devait être rouge, et mourir de la clavelée. + + + +Cependant tous les voyageurs que \bname{Candide} rencontra dans les cabarets de +la route lui disaient: «Nous allons à Paris.» Cet empressement général +lui donna enfin l’envie de voir cette capitale; ce n’était pas beaucoup +se détourner du chemin de \bname{Venise}. + +Il entra par le faubourg Saint-Marceau, et crut être dans le plus +vilain village de la \bname{Westphalie}. + + +À peine \bname{Candide} fut-il dans son auberge, qu’il fut attaqué d’une +maladie légère, causée par ses fatigues. Comme il avait au doigt un +diamant énorme, et qu’on avait aperçu dans son équipage une cassette +prodigieusement pesante, il eut aussitôt auprès de lui deux médecins +qu’il n’avait pas mandés, quelques amis intimes qui ne le quittèrent +pas, et deux dévotes qui faisaient chauffer ses bouillons. \bname{Martin} +disait: «Je me souviens d’avoir été malade aussi à Paris dans mon +premier voyage; j’étais fort pauvre: aussi n’eus-je ni amis, ni +dévotes, ni médecins, et je guéris.» + +Cependant, à force de médecines et de saignées, la maladie de \bname{Candide} +devint sérieuse. Un habitué du quartier vint avec douceur lui demander +un billet payable au porteur pour l’autre monde: \bname{Candide} n’en voulut +rien faire; les dévotes l’assurèrent que c’était une nouvelle mode: +\bname{Candide} répondit qu’il n’était point homme à la mode. \bname{Martin} voulut +jeter l’habitué par les fenêtres. Le clerc jura qu’on n’enterrerait +point \bname{Candide}. \bname{Martin} jura qu’il enterrerait le clerc, s’il continuait +à les importuner. La querelle s’échauffa: \bname{Martin} le prit par les +épaules, et le chassa rudement; ce qui causa un grand scandale, dont on +fit un procès-verbal. + +\bname{Candide} guérit; et pendant sa convalescence il eut très bonne compagnie +à souper chez lui. On jouait gros jeu. \bname{Candide} était tout étonné que +jamais les as ne lui vinssent; et \bname{Martin} ne s’en étonnait pas. + +Parmi ceux qui lui faisaient les honneurs de la ville, il y avait un +petit abbé périgourdin, l’un de ces gens empressés, toujours alertes, +toujours serviables, effrontés, caressants, accommodants, qui guettent +les étrangers à leur passage, leur content l’histoire scandaleuse de la +ville, et leur offrent des plaisirs à tout prix. Celui-ci mena d’abord +\bname{Candide} et \bname{Martin} à la comédie. On y jouait une tragédie nouvelle. +\bname{Candide} se trouva placé auprès de quelques beaux esprits. Cela ne +l’empêcha pas de pleurer à des scènes jouées parfaitement. Un des +raisonneurs qui étaient à ses côtés lui dit dans un entr’acte: «Vous +avez grand tort de pleurer, cette actrice est fort mauvaise; l’acteur +qui joue avec elle est plus mauvais acteur encore; la pièce est encore +plus mauvaise que les acteurs; l’auteur ne sait pas un mot d’arabe, et +cependant la scène est en \bname{Arabie}; et, de plus, c’est un homme qui ne +croit pas aux idées innées; je vous apporterai demain vingt +brochures +contre lui. — Monsieur, combien avez-vous de pièces de théâtre en +France?» dit \bname{Candide} à l’abbé; lequel répondit: «Cinq ou six mille. — C’est +beaucoup, dit \bname{Candide}: combien y en a-t-il de bonnes? —Quinze ou seize, +répliqua l’autre. — C’est beaucoup», dit \bname{Martin}. + + + +\bname{Candide} fut très content d’une actrice qui faisait la reine Élisabeth, +dans une assez plate tragédie, que l’on joue quelquefois. «Cette +actrice, dit-il à \bname{Martin}, me plaît beaucoup; elle a un faux air de +M\up{lle}~\bname{Cunégonde}; je serais bien aise de la saluer.» L’abbé +périgourdin s’offrit à l’introduire chez elle. \bname{Candide}, élevé en +\bname{Allemagne}, demanda quelle était l’étiquette, et comment on traitait en +France les reines d’Angleterre. «Il faut distinguer, dit l’abbé: en +province, on les mène au cabaret; à Paris, on les respecte quand elles +sont belles, et on les jette à la voirie quand elles sont mortes. — Des +reines à la voirie! dit \bname{Candide}. — Oui vraiment, dit \bname{Martin}; monsieur +l’abbé a raison; j’étais à Paris quand M\up{lle}~Monime passa, +comme on dit, de cette vie à l’autre; on lui refusa, ce que ces gens-ci +appellent les \emph{honneurs de la sépulture}, c’est-à-dire de pourrir avec +tous les gueux du quartier dans un vilain cimetière; elle fut enterrée +toute seule de sa bande au coin de la rue de Bourgogne; ce qui dut lui +faire une peine extrême, car elle pensait très noblement. — Cela est bien +impoli, dit \bname{Candide}. — Que voulez-vous? dit \bname{Martin}; ces gens-ci sont +ainsi faits. Imaginez toutes les contradictions, toutes les +incompatibilités possibles, vous les verrez dans le gouvernement, dans +les tribunaux, dans les églises, dans les spectacles de cette drôle de +nation. — Est-il vrai qu’on rit toujours à Paris? dit \bname{Candide}. — Oui, dit +l’abbé, mais c’est en enrageant; car on s’y plaint de tout avec de +grands éclats de rire; même on y fait en riant les actions les plus +\linebreak détestables. + + + +— Quel est, dit \bname{Candide}, ce gros cochon qui me disait tant de mal de la +pièce où j’ai tant pleuré, et des acteurs qui m’ont fait tant de +plaisir? — C’est un mal-vivant, répondit l’abbé, qui gagne sa vie à dire +du mal de toutes les pièces et de tous les livres; il hait quiconque +réussit, comme les eunuques haïssent les jouissants; c’est un de ces +serpents de la littérature qui se nourrissent de fange et de venin; +c’est un folliculaire. — Qu’appelez-vous folliculaire? dit \bname{Candide}. +— C’est, dit l’abbé, un faiseur de feuilles, un \emph{Fréron}.» + +C’est ainsi que \bname{Candide}, \bname{Martin}, et le Périgourdin, raisonnaient sur +l’escalier, en voyant défiler le monde au sortir de la pièce. «Quoique +je sois très empressé de revoir M\up{lle}~\bname{Cunégonde}, dit \bname{Candide}, je +voudrais pourtant souper avec M\up{lle}~Clairon, car elle m’a paru +admirable.» + +L’abbé n’était pas homme à approcher de M\up{lle}~\bname{Clairon}, qui ne +voyait que bonne compagnie. «Elle est engagée pour ce soir, dit-il; mais +j’aurai l’honneur de vous mener chez une dame de qualité, et là vous +connaîtrez Paris comme si vous y aviez été quatre ans.» + +\bname{Candide}, qui était naturellement curieux, se laissa mener chez la dame, +au fond du faubourg Saint-Honoré; on y était occupé d’un pharaon; douze +tristes pontes tenaient chacun en main un petit livre de cartes, +registre cornu de leurs infortunes. Un profond silence régnait, la +pâleur était sur le front des pontes, l’inquiétude sur celui du +banquier; et la dame du logis, assise auprès de ce banquier +impitoyable, remarquait avec des yeux de lynx tous les parolis, tous +les sept et le va de campagne, dont chaque joueur cornait ses cartes; +elle les faisait décorner avec une attention sévère, mais polie, et ne +se fâchait point, de peur de perdre ses pratiques. La dame se faisait +appeler la marquise de Parolignac. Sa fille, âgée de quinze ans, était +au nombre des pontes, et avertissait d’un clin d’œil des friponneries +de ces pauvres gens qui tâchaient de réparer les cruautés du sort. +L’abbé périgourdin, \bname{Candide}, et \bname{Martin}, entrèrent; personne ne se leva, +ni les salua, ni les regarda; tous étaient profondément occupés de +leurs cartes. «M\up{me} la baronne de Thunder-ten-tronckh était plus +civile», dit \bname{Candide}. + +Cependant l’abbé s’approcha de l’oreille de la marquise, qui se leva à +moitié, honora \bname{Candide} d’un sourire gracieux, et \bname{Martin} d’un air de +tête tout-à-fait noble; elle fit donner un siège et un jeu de cartes à +\bname{Candide}, qui perdit cinquante mille francs en deux tailles: après quoi +on soupa très gaiement; et tout le monde était étonné que \bname{Candide} ne +fût pas ému de sa perte; les laquais disaient entre eux, dans leur +langage de laquais: «Il faut que ce soit quelque milord anglais.» Le +souper fut comme la plupart des soupers de Paris, d’abord du silence, +ensuite un bruit de paroles qu’on ne distingue point, puis des +plaisanteries dont la plupart sont insipides, de fausses nouvelles, de +mauvais raisonnements, un peu de politique, et beaucoup de médisance; +on parla même de livres nouveaux. «Avez-vous vu, dit l’abbé périgourdin, +le roman du sieur Gauchat, docteur en théologie? — Oui, répondit un des +convives, mais je n’ai pu l’achever. Nous avons une foule d’écrits +impertinents; mais tous ensemble n’approchent pas de l’impertinence de +\bname{Gauchat}, docteur en théologie; je suis si rassasié de cette +immensité de détestables livres qui nous inondent, que je me suis mis à +ponter au pharaon. — Et les \emph{\bname{Mélanges}} de l’archidiacre Trublet, qu’en +dites-vous? dit l’abbé. — Ah! dit M\up{me} de Parolignac, l’ennuyeux +mortel! comme il vous dit curieusement ce que tout le monde sait! comme +il discute pesamment ce qui ne vaut pas la peine d’être remarqué +légèrement! comme il s’approprie, sans esprit, l’esprit des autres! +comme il gâte ce qu’il pille! comme il me dégoûte! mais il ne me +dégoûtera plus; c’est assez d’avoir lu quelques pages de l’archidiacre.» + + +Il y avait à table un homme savant et de goût qui appuya ce que disait +la marquise. On parla ensuite de +tragédies; + la dame demanda pourquoi il +y avait des tragédies qu’on jouait quelquefois, et qu’on ne pouvait +lire. L’homme de goût expliqua très bien comment une pièce pouvait +avoir quelque intérêt, et n’avoir presque aucun mérite; il prouva en +peu de mots que ce n’était pas assez d’amener une ou deux de ces +situations qu’on trouve dans tous les romans, et qui séduisent toujours +les spectateurs; mais qu’il faut être neuf sans être bizarre, souvent +sublime et toujours naturel, connaître le cœur humain et le faire +parler; être grand poète, sans que jamais aucun personnage de la pièce +paraisse poète; savoir parfaitement sa langue, la parler avec pureté, +avec une harmonie continue, sans que jamais la rime coûte rien au sens. +«\bname{Quiconque}, ajouta-t-il, +n’observe + pas toutes ces règles, peut faire une +ou deux tragédies applaudies au théâtre, mais il ne sera jamais compté +au rang des bons écrivains; il y a très peu de bonnes tragédies: les +unes sont des idylles en dialogues bien écrits et bien rimés; les +autres, des raisonnements politiques qui endorment, ou des +amplifications qui rebutent; les autres, des rêves d’énergumène, en +style barbare, des propos interrompus, de longues apostrophes aux +dieux, parce qu’on ne sait point parler aux hommes, des maximes fausses, +des lieux communs ampoulés.» + + +\bname{Candide} écouta ce propos avec attention, et conçut une grande idée du +discoureur; et, comme la marquise avait eu soin de le placer à côté +d’elle, il s’approcha de son oreille, et prit la liberté de lui +demander qui était cet homme qui parlait si bien. «C’est un savant, dit +la dame, qui ne ponte point, et que l’abbé m’amène quelquefois à +souper; il se connaît parfaitement en tragédies et en livres, et il a +fait une tragédie sifflée, et un livre dont on n’a jamais vu hors de la +boutique de son libraire qu’un exemplaire qu’il m’a dédié. — Le grand +homme! dit \bname{Candide}, c’est un autre \bname{Pangloss}.» + +Alors se tournant vers lui, il lui dit: «Monsieur, vous pensez, sans +doute, que tout est au mieux dans le monde physique et dans le moral, +et que rien ne pouvait être autrement? — Moi, monsieur, lui répondit le +savant, je ne pense rien de tout cela; je trouve que tout va de travers +chez nous; que personne ne sait ni quel est son rang, ni quelle est sa +charge, ni ce qu’il fait, ni ce qu’il doit faire, et qu’excepté le +souper, qui est assez gai, et où il paraît assez d’union, tout le reste +du temps se passe en querelles impertinentes; jansénistes contre +molinistes, gens du parlement contre gens d’église, gens de lettres +contre gens de lettres, courtisans contre courtisans, financiers contre +le peuple, femmes contre maris, parents contre parents; c’est une +guerre éternelle.» + + +\bname{Candide} lui répliqua: «J’ai vu pis; mais un sage, qui depuis a eu le +malheur d’être pendu, m’apprit que tout cela est à merveille; ce sont +des ombres à un beau tableau. — Votre pendu se moquait du monde, dit +\bname{Martin}; vos ombres sont des taches horribles. — Ce sont les hommes qui +font les taches, dit \bname{Candide}, et ils ne peuvent pas s’en dispenser. — Ce +n’est donc pas leur faute», dit \bname{Martin}. La plupart des pontes, qui +n’entendaient rien à ce langage, buvaient; et \bname{Martin} raisonna avec le +savant, et \bname{Candide} raconta une partie de ses aventures à la dame du +logis. + +Après souper, la marquise mena \bname{Candide} dans son cabinet, et le fit +asseoir sur un canapé. «Eh bien! lui dit-elle, vous aimez donc toujours +éperdument M\up{lle}~\bname{Cunégonde} de Thunder-ten-tronckh? — Oui, madame, +répondit \bname{Candide}.» La marquise lui répliqua avec un souris tendre: «Vous +me répondez comme un jeune homme de \bname{Westphalie}; un Français m’aurait +dit: Il est vrai que j’ai aimé M\up{lle}~\bname{Cunégonde}; mais en vous +voyant, madame, je crains de ne la plus aimer. — Hélas! madame, dit +\bname{Candide}, je répondrai comme vous voudrez. — Votre passion pour elle, dit +la marquise, a commencé en ramassant son mouchoir; je veux que vous +ramassiez ma jarretière. — De tout mon cœur, dit \bname{Candide}; et il la +ramassa. — Mais je veux que vous me la remettiez», dit la dame; et \bname{Candide} +la lui remit. «Voyez-vous, dit la dame, vous êtes étranger; je fais +quelquefois languir mes amants de Paris quinze jours, mais je me rends +à vous dès la première nuit, parce qu’il faut faire les honneurs de son +pays à un jeune homme de \bname{Westphalie}.» La belle ayant aperçu deux énormes +diamants aux deux mains de son jeune étranger, les loua de si bonne +foi, que des doigts de \bname{Candide} ils passèrent aux doigts de la marquise. + +\looseness=1 +\bname{Candide}, en s’en retournant avec son abbé périgourdin, sentit quelques +remords d’avoir fait une infidélité à M\up{lle}~\bname{Cunégonde}. M. l’abbé +entra dans sa peine; il n’avait qu’une légère part aux cinquante mille +livres perdues au jeu par \bname{Candide}, et à la valeur des deux brillants +moitié donnés, moitié extorqués. Son dessein était de profiter, autant +qu’il le pourrait, des avantages que la connaissance de \bname{Candide} pouvait +lui procurer. Il lui parla beaucoup de \bname{Cunégonde}; et \bname{Candide} lui dit +qu’il demanderait bien pardon à cette belle de son infidélité, quand il +la verrait à \bname{ \bname{Venise}}. + +Le Périgourdin redoublait de politesses et d’attentions, et prenait un +intérêt tendre à tout ce que \bname{Candide} disait, à tout ce qu’il faisait, à +tout ce qu’il voulait faire. + +«Vous avez donc, monsieur, lui dit-il, un rendez-vous à \bname{Venise}? — Oui, +monsieur l’abbé, dit \bname{Candide}; il faut absolument que j’aille trouver +M\up{lle}~\bname{Cunégonde}.» Alors, engagé par le plaisir de parler de ce +qu’il aimait, il conta, selon son usage, une partie de ses aventures +avec cette illustre \bname{Westphalienne}. + + +«Je crois, dit l’abbé, que M\up{lle}~\bname{Cunégonde} a bien de l’esprit, et +qu’elle écrit des lettres charmantes. — Je n’en ai jamais reçu, dit +\bname{Candide}; car, figurez-vous qu’ayant été chassé du château pour l’amour +d’elle, je ne pus lui écrire; que bientôt après j’appris qu’elle était +morte, qu’ensuite je la retrouvai, et que je la perdis, et que je lui +ai envoyé à deux mille cinq cents lieues d’ici un exprès dont j’attends +la réponse.» + +L’abbé écoutait attentivement, et paraissait un peu rêveur. Il prit +bientôt congé des deux étrangers, après les avoir tendrement embrassés. +Le lendemain \bname{Candide} reçut à son réveil une lettre conçue en ces +termes: +\par\vspace{\baselineskip}\par +{\itshape Monsieur mon très cher amant, il y a huit jours que je suis malade en +cette ville; j’apprends que vous y êtes. Je volerais dans vos bras si +je pouvais remuer. J’ai su votre passage à Bordeaux; j’y ai laissé le +fidèle \bname{Cacambo} et la vieille, qui doivent bientôt me suivre. Le +gouverneur de \bname{Buenos} Aires a tout pris, mais il me reste votre cœur. +Venez; votre présence me rendra la vie ou me fera mourir de plaisir. + +} +\par\vspace{\baselineskip}\par +Cette lettre charmante, cette lettre inespérée, transporta \bname{Candide} +d’une joie inexprimable; et la maladie de sa chère \bname{Cunégonde} l’accabla +de douleur. Partagé entre ces deux sentiments, il prend son or et ses +diamants, et se fait conduire avec \bname{Martin} à l’hôtel où +mademoiselle +\bname{Cunégonde} demeurait. Il entre en tremblant d’émotion, son cœur +palpite, sa voix sanglote; il veut ouvrir les rideaux du lit; il veut +faire apporter de la lumière. «Gardez-vous-en bien, lui dit la suivante; +la lumière la tue»; et soudain elle referme le rideau. «Ma chère +\bname{Cunégonde}, dit \bname{Candide} en pleurant, comment vous portez-vous? si vous +ne pouvez me voir, parlez-moi du moins. — Elle ne peut parler», dit la +suivante, la dame alors tire du lit une main potelée que \bname{Candide} arrose +longtemps de ses larmes, et qu’il remplit ensuite de diamants, en +laissant un sac plein d’or sur le fauteuil. + + +Au milieu de ses transports arrive un exempt suivi de l’abbé +périgourdin et d’une escouade. «Voilà donc, dit-il, ces deux étrangers +suspects?» Il les fait incontinent saisir, et ordonne à ses braves de +les traîner en prison. «Ce n’est pas ainsi qu’on traite les voyageurs +dans Eldorado, dit \bname{Candide}. — Je suis plus manichéen que jamais, dit +\bname{Martin}. — Mais, monsieur, où nous menez-vous? dit \bname{Candide}. — Dans un cul de +basse-fosse», dit l’exempt. + +\bname{Martin}, ayant repris son sang froid, jugea que la dame qui se +prétendait \bname{Cunégonde} était une friponne, M. l’abbé périgourdin un +fripon, qui avait abusé au plus vite de +l'innocence + de \bname{Candide}, et +l’exempt un autre fripon dont on pouvait aisément se débarrasser. + + +Plutôt que de s’exposer aux procédures de la justice, \bname{Candide}, éclairé +par son conseil, et d’ailleurs toujours impatient de revoir la +véritable \bname{Cunégonde}, propose à l’exempt trois petits diamants d’environ +trois mille pistoles chacun. — Ah! monsieur, lui dit l’homme au bâton +d’ivoire, eussiez-vous commis tous les crimes imaginables, vous êtes le +plus honnête homme du monde; trois diamants! chacun de trois mille +pistoles! Monsieur! je me ferais tuer pour vous, au lieu de vous mener +dans un cachot. On arrête tous les étrangers, mais laissez-moi faire; +j’ai un frère à Dieppe en Normandie; je vais vous y mener; et si vous +avez quelque diamant à lui donner, il aura soin de vous comme moi-même. + +— Et pourquoi arrête-t-on tous les étrangers? dit \bname{Candide}. L’abbé +périgourdin prit alors la parole, et dit: «C’est parce qu’un gueux du +pays d’Atrébatie a entendu dire des sottises; cela seul lui a fait +commettre un parricide, non pas tel que celui de 1610 au mois de +mai, mais tel que celui de 1594 au mois de décembre, et tel que +plusieurs autres commis dans d’autres années et dans d’autres mois par +d’autres gueux qui avaient entendu dire des sottises.» + + + +L’exempt alors expliqua de quoi il s’agissait. «Ah! les monstres! +s’écria \bname{Candide}; quoi! de telles horreurs chez un peuple qui danse et +qui chante! Ne pourrai-je sortir au plus vite de ce pays où des singes +agacent des tigres? J’ai vu des ours dans mon pays; je n’ai vu des +hommes que dans le Dorado. Au nom de Dieu, monsieur l’exempt, menez-moi +à \bname{Venise}, où je dois attendre M\up{lle}~\bname{Cunégonde}. — Je ne peux vous +mener qu’en Basse-Normandie, dit le barigel.» Aussitôt il lui fait +ôter ses fers, dit qu’il s’est mépris, renvoie ses gens, emmène à +Dieppe \bname{Candide} et \bname{Martin}, et les laisse entre les mains de son frère. +Il y avait un petit vaisseau hollandais à la rade. Le Normand, à l’aide +de trois autres diamants, devenu le plus serviable des hommes, embarque +\bname{Candide} et ses gens dans le vaisseau qui allait faire voile pour +Portsmouth en Angleterre. Ce n’était pas le chemin de \bname{Venise}; mais +\bname{Candide} croyait être délivré de l’enfer; et il comptait bien reprendre +la route de \bname{Venise} à la première occasion. + + + + + +\chapter[Candide et \bname{Martin} vont sur les côtes…]{Candide et \bname{Martin} vont sur les côtes d’Angleterre;\\ ce qu’ils y voient} + + +\lettrine[ante=«]{A}{h! \bname{Pangloss}!} \bname{Pangloss}! Ah! \bname{Martin}! \bname{Martin}! Ah! ma chère \bname{Cunégonde}! +qu’est-ce que ce monde-ci?» disait \bname{Candide} sur le vaisseau hollandais. +— Quelque chose de bien fou et de bien abominable, répondait \bname{Martin}. — Vous +connaissez l’Angleterre; y est-on aussi fou qu’en France? — C’est une +autre espèce de folie, dit \bname{Martin}. Vous savez que ces deux nations sont +en guerre pour quelques arpents de neige vers le Canada, et qu’elles +dépensent pour cette belle guerre beaucoup plus que tout le Canada ne +vaut. +De vous dire précisément s’il y a plus de gens à lier dans un +pays que dans un autre, c’est ce que mes faibles lumières ne me +permettent pas; je sais seulement qu’en général les gens que nous +allons voir sont fort atrabilaires.» + + +En causant ainsi ils abordèrent à Portsmouth; une multitude de peuple +couvrait le rivage, et regardait attentivement un assez gros homme qui +était à genoux, les yeux bandés, sur le tillac d’un des vaisseaux de la +flotte; quatre soldats, postés vis-à-vis de cet homme, lui tirèrent +chacun trois balles dans le crâne, le plus paisiblement du monde; et +toute l’assemblée s’en retourna extrêmement satisfaite. «Qu’est-ce +donc que tout ceci? dit \bname{Candide}; et quel démon exerce partout son +empire?» Il demanda qui était ce gros homme qu’on venait de tuer en +cérémonie. +«C’est un amiral, lui répondit-on. — Et pourquoi tuer cet +amiral? — C’est, lui dit-on, parce qu’il n’a pas fait tuer assez de monde; +il a livré un combat à un amiral français, et on a trouvé qu’il n’était +pas assez près de lui. — Mais, dit \bname{Candide}, l’amiral français était aussi +loin de l’amiral anglais que celui-ci l’était de l’autre! — Cela est +incontestable, lui répliqua-t-on; mais dans ce pays-ci il est bon de +tuer de temps en temps un amiral pour encourager les autres.» + + +\bname{Candide} fut si étourdi et si choqué de ce qu’il voyait et de ce qu’il +entendait, qu’il ne voulut pas seulement mettre pied à terre, et qu’il +fit son marché avec le patron hollandais (dût-il le voler comme celui +de Surinam), pour le conduire sans délai à \bname{Venise}. + +Le patron fut prêt au bout de deux jours. On côtoya la France; on passa +à la vue de Lisbonne, et \bname{Candide} frémit. On entra dans le détroit et +dans la \bname{Méditerranée}, enfin on aborda à \bname{Venise}. «Dieu soit loué! dit +\bname{Candide}, en embrassant \bname{Martin}; c’est ici que je reverrai la belle +\bname{Cunégonde}. Je compte sur \bname{Cacambo} comme sur moi-même. Tout est bien, +tout va bien, tout va le mieux qu’il soit possible.» + + +\chapter{De \bname{Paquette}, et de frère Giroflée} + + +\lettrine{D}{ès} qu’il fut à \bname{Venise}, il fit chercher \bname{Cacambo} dans tous les cabarets, +dans tous les cafés, chez toutes les filles de joie, et ne le trouva +point. Il envoyait tous les jours à la découverte de tous les vaisseaux +et de toutes les barques: nulles nouvelles de \bname{Cacambo}. «Quoi! disait-il +à \bname{Martin}, j’ai eu le temps de passer de Surinam à Bordeaux, d’aller de +Bordeaux à Paris, de Paris à Dieppe, de Dieppe à Portsmouth, de côtoyer +le Portugal et l’Espagne, de traverser toute la Méditerranée, de passer +quelques mois à \bname{Venise}; et la belle \bname{Cunégonde} n’est point venue! Je +n’ai rencontré au lieu d’elle qu’une drôlesse et un abbé périgourdin! +\bname{Cunégonde} est morte, sans doute; je n’ai plus qu’à mourir. Ah! il +valait mieux rester dans le paradis du Dorado que de revenir dans cette +maudite Europe. Que vous avez raison, mon cher \bname{Martin}! tout n’est +qu’illusion et calamité.» + +Il tomba dans une mélancolie noire, et ne prit aucune part à l’opéra +\emph{alla moda}, ni aux autres divertissements du carnaval; pas une dame ne +lui donna la moindre +tentation. \bname{Martin} lui dit: «Vous êtes bien simple, +en vérité, de vous figurer qu’un valet métis, qui a cinq ou six +millions dans ses poches, ira chercher votre maîtresse au bout du +monde, et vous l’amènera à \bname{Venise}. Il la prendra pour lui, s’il la +trouve; s’il ne la trouve pas, il en prendra une autre: je vous +conseille d’oublier votre valet \bname{Cacambo} et votre maîtresse \bname{Cunégonde}.» +\bname{Martin} n’était pas consolant. La mélancolie de \bname{Candide} augmenta, et +\bname{Martin} ne cessait de lui prouver qu’il y avait peu de vertu et peu de +bonheur sur la terre; excepté peut-être dans Eldorado, où personne +ne pouvait aller. + + + +En disputant sur cette matière importante, et en attendant \bname{Cunégonde}, +\bname{Candide} aperçut un jeune théatin dans la place Saint-Marc, qui tenait +sous le bras une fille. Le théatin paraissait frais, potelé, vigoureux; +ses yeux étaient brillants, son air assuré, sa mine haute, sa démarche +fière. La fille était très jolie, et chantait; elle regardait +amoureusement son théatin, et de temps en temps lui pinçait ses grosses +joues. «Vous m’avouerez du moins, dit \bname{Candide} à \bname{Martin}, que ces gens-ci +sont heureux. Je n’ai trouvé jusqu’à présent dans toute la terre +habitable, excepté dans Eldorado, que des infortunés; mais pour cette +fille et ce théatin, je gage que ce sont des créatures très heureuses. +«Je gage que non, dit \bname{Martin}. — Il n’y a qu’à les prier à dîner, dit +\bname{Candide}, et vous verrez si je me trompe.» + +Aussitôt il les aborde, il leur fait son compliment, et les invite à +venir à son hôtellerie manger des macaronis, des perdrix de Lombardie, +des œufs d’esturgeon, et à boire du vin de Montepulciano, du +lacryma-christi, du chypre, et du samos. La demoiselle rougit, le +théatin accepta la partie, et la fille le suivit en regardant \bname{Candide} +avec des yeux de surprise et de confusion, qui furent obscurcis de +quelques larmes. À peine fut-elle entrée dans la chambre de \bname{Candide}, +qu’elle lui dit: «Eh quoi! monsieur \bname{Candide} ne reconnaît plus \bname{Paquette}!» +À ces mots \bname{Candide}, qui ne l’avait pas considérée jusque-là avec +attention, parce qu’il n’était occupé que de \bname{Cunégonde}, lui dit: «Hélas! +ma pauvre enfant, c’est donc vous qui avez mis le docteur \bname{Pangloss} dans +le bel état où je l’ai vu? + + +— Hélas! monsieur, c’est moi-même, dit \bname{Paquette}; je vois que vous êtes +instruit de tout. J’ai su les malheurs +épouvantables + arrivés à toute la +maison de M\up{me} la baronne et à la belle \bname{Cunégonde}. Je vous jure que +ma destinée n’a guère été moins triste. J’étais fort innocente quand +vous m’avez vue. Un cordelier, qui était mon confesseur, me séduisit +aisément. Les suites en furent affreuses; je fus obligée de sortir du +château quelque temps après que M.~le baron vous eut renvoyé à grands +coups de pied dans le derrière. Si un fameux médecin n’avait pas pris +pitié de moi, j’étais morte. Je fus quelque temps par reconnaissance la +maîtresse de ce médecin. Sa femme, qui était jalouse à la rage, me +battait tous les jours impitoyablement; c’était une furie. Ce médecin +était le plus laid de tous les hommes, et moi la plus malheureuse de +toutes les créatures d’être battue continuellement pour un homme que je +n’aimais pas. Vous savez, monsieur, combien il est dangereux pour une +femme acariâtre d’être l’épouse d’un médecin. Celui-ci, outré des +procédés de sa femme, lui donna un jour, pour la guérir d’un petit +rhume, une médecine si efficace, qu’elle en mourut en deux heures de +temps dans des convulsions horribles. Les parents de madame intentèrent +à monsieur un procès criminel; il prit la fuite, et moi je fus mise en +prison. Mon innocence ne m’aurait pas sauvée, si je n’avais été un peu +jolie. Le juge m’élargit à condition qu’il succéderait au médecin. Je +fus bientôt supplantée par une rivale, chassée sans récompense, et +obligée de continuer ce métier abominable qui vous paraît si plaisant à +vous autres hommes, et qui n’est pour nous qu’un abîme de misère. +J’allai exercer la profession à \bname{Venise}. Ah! monsieur, si vous pouviez +vous imaginer ce que c’est que d’être obligée de caresser +indifféremment un vieux marchand, un avocat, un moine, un gondolier, un +abbé; d’être exposée à toutes les insultes, à toutes les avanies; +d’être souvent réduite à emprunter une jupe pour aller se la faire +lever par un homme dégoûtant; d’être volée par l’un de ce qu’on a gagné +avec l’autre; d’être rançonnée par les officiers de justice, et de +n’avoir en perspective qu’une vieillesse affreuse, un hôpital, et un +fumier, vous concluriez que je suis une des plus malheureuses créatures +du monde.» + +\bname{Paquette} ouvrait ainsi son cœur au bon \bname{Candide}, dans un cabinet, en +présence de \bname{Martin}, qui disait à \bname{Candide}: «Vous voyez que j’ai déjà +gagné la moitié de la gageure.» + + +Frère Giroflée était resté dans la salle à manger, et buvait un coup en +attendant le dîner. «Mais, dit \bname{Candide} à \bname{Paquette}, vous aviez l’air si +gai, si content, quand je vous ai rencontrée; vous chantiez, vous +caressiez le théatin avec une complaisance naturelle; vous m’avez paru +aussi heureuse que vous prétendez être infortunée. — Ah! monsieur, +répondit \bname{Paquette}, c’est encore là une des misères du métier. J’ai été +hier volée et battue par un officier, et il faut aujourd’hui que je +paraisse de bonne humeur pour plaire à un moine.» + +\bname{Candide} n’en voulut pas davantage; il avoua que \bname{Martin} avait raison. On +se mit à table avec \bname{Paquette} et le théatin; le repas fut assez amusant, +et sur la fin on se parla avec quelque confiance. «Mon père, dit \bname{Candide} +au moine, vous me paraissez jouir d’une destinée que tout le monde doit +envier; la fleur de la santé brille sur votre visage, votre physionomie +annonce le bonheur; vous avez une très jolie fille pour votre +récréation, et vous paraissez très content de votre état de théatin. + + +— Ma foi, monsieur, dit frère Giroflée, je voudrais que tous les théatins +fussent au fond de la mer. J’ai été tenté cent fois de mettre le feu au +couvent, et d’aller me faire turc. Mes parents me forcèrent, à l’âge de +quinze ans, d’endosser cette détestable robe, pour laisser plus de +fortune à un maudit frère aîné, que Dieu confonde! La jalousie, la +discorde, la rage, habitent dans le couvent. Il est vrai que j’ai +prêché quelques mauvais sermons qui m’ont valu un peu d’argent dont le +prieur me vole la moitié; le reste me sert à entretenir des filles: +mais quand je rentre le soir dans le monastère, je suis prêt à me +casser la tête contre les murs du dortoir; et tous mes confrères sont +dans le même cas.» + +\bname{Martin} se tournant vers \bname{Candide} avec son sang froid ordinaire: «Eh bien! +lui dit-il, n’ai-je pas gagné la gageure tout entière?» \bname{Candide} donna +deux mille piastres à \bname{Paquette}, et mille piastres à frère Giroflée. «Je +vous réponds, dit-il, qu’avec cela ils seront heureux. — Je n’en crois +rien du tout, dit \bname{Martin}; vous les rendrez peut-être avec ces piastres +beaucoup plus malheureux encore. — Il en sera ce qui pourra, dit \bname{Candide}: +mais une chose me console, je vois qu’on retrouve souvent les gens +qu’on ne croyait jamais retrouver; il se pourra bien faire qu’ayant +rencontré mon mouton rouge et \bname{Paquette}, je rencontre aussi \bname{Cunégonde}. +— Je souhaite, dit \bname{Martin}, qu’elle fasse un jour votre bonheur; mais +c’est de quoi je doute fort. — Vous êtes bien dur, dit \bname{Candide}. — C’est que +j’ai vécu, dit \bname{Martin}. + +— Mais regardez ces gondoliers, dit \bname{Candide}: ne +chantent-ils pas sans cesse? — Vous ne les voyez pas dans leur ménage, +avec leurs femmes et leurs marmots d’enfants, dit \bname{Martin}. Le doge a ses +chagrins, les gondoliers ont les leurs. Il est vrai qu’à tout prendre +le sort d’un gondolier est préférable à celui d’un doge; mais je crois +la différence si médiocre, que cela ne vaut pas la peine d’être +examiné. + +— On parle, dit \bname{Candide}, du sénateur \bname{Pococurante}, qui demeure dans ce +beau palais sur la Brenta, et qui reçoit assez bien les étrangers. On +prétend que c’est un homme qui n’a jamais eu de chagrin. — Je voudrais +voir une espèce si rare, dit \bname{Martin}.» \bname{Candide} aussitôt fit demander au +seigneur \bname{Pococurante} la permission de venir le voir le lendemain. + + + +\chapter[Visite chez le seigneur \bname{Pococurante}…]{Visite chez le seigneur \bname{Pococurante}, noble vénitien} + + +\lettrine{C}{andide} et \bname{Martin} allèrent en gondole sur la Brenta, et arrivèrent au +palais du noble \bname{Pococurante}. Les jardins étaient bien entendus, et +ornés de belles statues de marbre; le palais d’une belle architecture. +Le maître du logis, homme de soixante ans, fort riche, reçut très +poliment les deux curieux, mais avec très peu d’empressement, ce qui +déconcerta \bname{Candide}, et ne déplut point à \bname{Martin}. + + + D’abord deux filles jolies et proprement mises servirent du chocolat, +qu’elles firent très bien mousser. \bname{Candide} ne put s’empêcher de les +louer sur leur beauté, sur leur bonne grâce, et sur leur adresse. «Ce +sont d’assez bonnes créatures, dit le sénateur \bname{Pococurante}; je les fais +quelquefois coucher dans mon lit; car je suis bien las des dames de la +ville, de leurs coquetteries, de leurs jalousies, de leurs querelles, +de leurs humeurs, de leurs petitesses, de leur orgueil, de leurs +sottises, et des sonnets qu’il faut faire ou commander pour elles; +mais, après tout, ces deux filles commencent fort à m’ennuyer.» + + +\bname{Candide}, après le déjeuner, se promenant dans une longue galerie, fut +surpris de la beauté des tableaux. Il demanda de quel maître étaient +les deux premiers. «Ils sont de \bname{Raphaël}, dit le sénateur; je les achetai +fort cher par vanité, il y a quelques années; on dit que c’est ce qu’il +y a de plus beau en Italie, mais ils ne me plaisent point du tout: la +couleur en est très rembrunie, les figures ne sont pas assez arrondies, +et ne sortent point assez; les draperies ne ressemblent en rien à une +étoffe: en un mot, quoi qu’on en dise, je ne trouve point là une +imitation vraie de la nature. Je n’aimerai un tableau que quand je +croirai voir la nature elle-même: il n’y en a point de cette espèce. +J’ai beaucoup de tableaux, mais je ne les regarde plus.» + +\bname{Pococurante}, en attendant le dîner, se fit donner un concerto. \bname{Candide} +trouva la musique délicieuse. «Ce bruit, dit \bname{Pococurante}, peut amuser +une demi-heure; mais s’il dure plus long-temps, il fatigue tout le +monde, quoique personne n’ose l’avouer. La musique aujourd’hui n’est +plus que l’art d’exécuter des choses difficiles, et ce qui n’est que +difficile ne plaît point à la longue. + +«J’aimerais peut être mieux l’opéra, si on n’avait pas trouvé le secret +d’en faire un monstre qui me révolte. Ira voir qui voudra de mauvaises +tragédies en musique, où les scènes ne sont faites que pour amener très +mal à propos deux ou trois chansons ridicules qui font valoir le gosier +d’une actrice; se pâmera de plaisir qui voudra ou qui pourra, en voyant +un châtré fredonner le rôle de \bname{César} et de \bname{Caton}, et se promener d’un +air gauche sur des planches: pour moi, il y a long-temps que j’ai +renoncé à ces pauvretés qui font aujourd’hui la gloire de l’Italie, et +que des souverains paient si chèrement.» \bname{Candide} disputa un peu, mais +avec discrétion. \bname{Martin} fut entièrement de l’avis du sénateur. + + +On se mit à table; et, après un excellent dîner, on entra dans la +bibliothèque. \bname{Candide}, en voyant un Homère magnifiquement relié, loua +l’illustrissime sur son bon goût. «Voilà, dit-il, un livre qui faisait +les délices du grand \bname{Pangloss}, le meilleur philosophe de l’Allemagne. +— Il ne fait pas les miennes, dit froidement \bname{Pococurante}: on me fit +accroire autrefois que j’avais du plaisir en le lisant; mais cette +répétition continuelle de combats qui se ressemblent tous, ces dieux +qui agissent toujours pour ne rien faire de décisif, cette Hélène qui +est le sujet de la guerre, et qui à peine est une actrice de la pièce; +cette Troie qu’on assiège et qu’on ne prend point; tout cela me causait +le plus mortel ennui. J’ai demandé quelquefois à des savants s’ils +s’ennuyaient autant que moi à cette lecture: tous les gens sincères +m’ont avoué que le livre leur tombait des mains, mais qu’il fallait +toujours l’avoir dans sa bibliothèque, comme un monument de +l’antiquité, et comme ces médailles rouillées qui ne peuvent être de +commerce. + +— Votre excellence ne pense pas ainsi de Virgile? dit \bname{Candide}. — Je +conviens, dit \bname{Pococurante}, que le second, le quatrième, et le sixième +livre de son Énéide, sont excellents; mais pour son pieux Énée, et le +fort Cloanthe, et l’ami Achates, et le petit Ascanius, et l’imbécile +roi \bname{Latinus}, et la bourgeoise Amata, et l’insipide Lavinia, je ne crois +pas qu’il y ait rien de si froid et de plus désagréable. J’aime mieux +le Tasse et les contes à dormir debout de l’Arioste. + + +— Oserais-je vous demander, monsieur, dit \bname{Candide}, si vous n’avez pas un +grand plaisir à lire Horace? — Il y a des maximes, dit \bname{Pococurante}, dont +un homme du monde peut faire son profit, et qui, étant resserrées dans +des vers énergiques, se gravent plus aisément dans la mémoire: mais je +me soucie fort peu de son voyage à Brindes, et de sa description d’un +mauvais dîner, et de la querelle de crocheteurs entre je ne sais quel +Pupilus dont les paroles, dit-il, \emph{étaient pleines de pus}, et un +autre dont les paroles \emph{étaient du vinaigre}. Je n’ai lu qu’avec un +extrême dégoût ses vers grossiers contre des vieilles et contre des +sorcières; et je ne vois pas quel mérite il peut y avoir à dire à son +ami Mæcenas que, s’il est mis par lui au rang des poètes lyriques, il +frappera les astres de son front sublime. Les sots admirent tout +dans un auteur estimé. Je ne lis que pour moi; je n’aime que ce qui est +à mon usage.» \bname{Candide}, qui avait été élevé à ne jamais juger de rien par +lui-même, était fort étonné de ce qu’il entendait; et \bname{Martin} trouvait +la façon de penser de \bname{Pococurante} assez raisonnable. + + +\looseness=1 +«Oh! voici un Cicéron, dit \bname{Candide}: pour ce grand homme-là, je pense que +vous ne vous lassez point de le lire. +% +— Je ne le lis jamais, répondit le +Vénitien. Que m’importe qu’il ait plaidé pour Rabirius ou pour +Cluentius? J’ai bien assez des procès que je juge; je me serais mieux +accommodé de ses œuvres philosophiques; mais quand j’ai vu qu’il +doutait de tout, j’ai conclu que j’en savais autant que lui, et que je +n’avais besoin de personne pour être ignorant. + + + +— Ah! voilà quatre-vingts volumes de recueils d’une académie des +sciences, s’écria \bname{Martin}; il se peut qu’il y ait là du bon. — Il y en +aurait, dit \bname{Pococurante}, si un seul des auteurs de ces fatras avait +inventé seulement l’art de faire des épingles; mais il n’y a dans tous +ces livres que de vains systèmes, et pas une seule chose utile. + +— Que de pièces de théâtre je vois là, dit \bname{Candide}, en italien, en +espagnol, en français! — Oui, dit le sénateur, il y en a trois mille, et +pas trois douzaines de bonnes. Pour ces recueils de sermons, qui tous +ensemble ne valent pas une page de Sénèque, et tous ces gros volumes de +théologie, vous pensez bien que je ne les ouvre jamais, ni moi ni +personne.» + + + +\bname{Martin} aperçut des rayons chargés de livres anglais. «Je crois, dit-il, +qu’un républicain doit se plaire à la plupart de ces ouvrages écrits si +librement. — Oui, répondit \bname{Pococurante}, il est beau d’écrire ce qu’on +pense; c’est le privilège de l’homme. Dans toute notre Italie, on +n’écrit que ce qu’on ne pense pas; ceux qui habitent la patrie des +Césars et des \bname{Antonins} n’osent avoir une idée sans la permission d’un +jacobin. Je serais content de la liberté qui inspire les génies +anglais, si la passion et l’esprit de parti ne corrompaient pas tout ce +que cette précieuse liberté a d’estimable.» + +\looseness=1 +\bname{Candide} apercevant un Milton, lui demanda s’il ne regardait pas cet +auteur comme un grand homme. «Qui? dit \bname{Pococurante}, ce barbare, qui fait +un long commentaire du premier chapitre de la Genèse, en dix livres de +vers durs? ce grossier imitateur des Grecs, qui défigure la création, +et qui, tandis que Moïse représente l’Être éternel produisant le monde +par la parole, fait prendre un grand compas par le Messiah dans une +armoire du ciel pour tracer son ouvrage? Moi, j’estimerais celui qui a +gâté l’enfer et le diable du Tasse; qui déguise Lucifer tantôt en +crapaud, tantôt en pygmée; qui lui fait rebattre cent fois les mêmes +discours; qui le fait disputer sur la théologie; qui, en imitant +sérieusement l’invention comique des armes à feu de l’Arioste, fait +tirer le canon dans le ciel par les diables? Ni moi, ni personne en +Italie n’a pu se plaire à toutes ces tristes extravagances. Le mariage +du péché et de la mort et les couleuvres dont le péché accouche, font +vomir tout homme qui a le goût un peu délicat; et sa longue description +d’un hôpital n’est bonne que pour un fossoyeur. Ce poème obscur, +bizarre, et dégoûtant, fut méprisé à sa naissance; je le traite +aujourd’hui comme il fut traité dans sa patrie par les +contemporains. Au reste je dis ce que je pense, et je me soucie fort +peu que les autres pensent comme moi.» \bname{Candide} était affligé de ces +discours; il respectait Homère, il aimait un peu Milton. «Hélas! dit-il +tout bas à \bname{Martin}, j’ai bien peur que cet homme-ci n’ait un souverain +mépris pour nos poètes allemands. — Il n’y aurait pas grand mal à cela, +dit \bname{Martin}. — Oh! quel homme supérieur! disait encore \bname{Candide} entre ses +dents, quel grand génie que ce \bname{Pococurante}! rien ne peut lui plaire. + + + +Après avoir fait ainsi la revue de tous les livres, ils descendirent +dans le jardin. \bname{Candide} en loua toutes les beautés. «Je ne sais rien de +si mauvais goût, dit le maître; nous n’avons ici que des colifichets: +mais je vais dès demain en faire planter un d’un dessin plus noble.» + + +Quand les deux curieux eurent pris congé de son excellence: «Or çà, dit +\bname{Candide} à \bname{Martin}, vous conviendrez que voilà le plus heureux de tous +les hommes, car il est au-dessus de tout ce qu’il possède. — Ne +voyez-vous pas, dit \bname{Martin}, qu’il est dégoûté de tout ce qu’il possède? +Platon a dit, il y a long-temps, que les meilleurs estomacs ne sont pas +ceux qui rebutent tous les aliments. — Mais, dit \bname{Candide}, n’y a-t-il pas +du plaisir à tout critiquer, à sentir des défauts où les autres hommes +croient voir des +beautés? — C’est-à-dire, reprit \bname{Martin}, qu’il y a du +plaisir à n’avoir pas de plaisir? — Oh bien! dit \bname{Candide}, il n’y a donc +d’heureux que moi, quand je reverrai M\up{lle}~\bname{Cunégonde}. — C’est +toujours bien fait d’espérer, dit \bname{Martin}. + +Cependant les jours, les semaines, s’écoulaient; \bname{Cacambo} ne revenait +point, et \bname{Candide} était si abîmé dans sa douleur, qu’il ne fit pas même +réflexion que \bname{Paquette} et frère Giroflée n’étaient pas venus seulement +le remercier. + + +\chapter[D’un souper que Candide et Martin firent…]{D’un souper que \bname{Candide} et \bname{Martin} firent\\avec six étrangers, et qui ils +étaient} + + +\lettrine{U}{n soir} que \bname{Candide}, suivi de \bname{Martin}, allait se mettre à table avec les +étrangers qui logeaient dans la même hôtellerie, un homme à visage +couleur de suie l’aborda par derrière, et, le prenant par le bras, lui +dit: «Soyez prêt à partir avec nous, n’y manquez pas.» Il se retourne, et +voit \bname{Cacambo}. Il n’y avait que la vue de \bname{Cunégonde} qui pût l’étonner et +lui plaire davantage. Il fut sur le point de devenir fou de joie. Il +embrasse son cher ami. «\bname{Cunégonde} est ici, sans doute? où est-elle? +Mène-moi vers elle, que je meure de joie avec elle. — \bname{Cunégonde} n’est +point ici, dit \bname{Cacambo}, elle est à Constantinople. — Ah ciel! à +Constantinople! mais fût-elle à la Chine, j’y vole, partons. — Nous +partirons après souper, reprit \bname{Cacambo}; je ne peux vous en dire +davantage; je suis esclave, mon maître m’attend; il faut que j’aille le +servir à table: ne dites mot, soupez, et tenez-vous prêt.» + +\bname{Candide}, partagé entre la joie et la douleur, charmé d’avoir revu son +agent fidèle, étonné de le voir esclave, plein de l’idée de retrouver +sa maîtresse, le cœur agité, l’esprit bouleversé, se mit à table avec +\bname{Martin}, qui voyait de sang froid toutes ces aventures, et avec six +étrangers, qui étaient venus passer le carnaval à \bname{Venise}. + + +\bname{Cacambo}, qui versait à boire à l’un de ces six étrangers, s’approcha de +l’oreille de son maître, sur la fin du repas, et lui dit: «Sire, Votre +Majesté partira quand elle voudra, le vaisseau est prêt.» Ayant dit ces +mots, il sortit. Les convives étonnés se regardaient sans proférer une +seule parole, lorsqu’un autre domestique s’approchant de son maître, +lui dit: «Sire, la chaise de Votre Majesté est à Padoue, et la barque +est prête.» Le maître fit un signe, et le domestique partit. Tous les +convives se regardèrent encore, et la surprise commune redoubla. Un +troisième valet s’approchant aussi d’un troisième étranger, lui dit: +«Sire, croyez-moi, Votre Majesté ne doit pas rester ici plus longtemps, +je vais tout préparer»; et aussitôt il disparut. + +\bname{Candide} et \bname{Martin} ne doutèrent pas alors que ce ne fût une mascarade du +carnaval. Un quatrième domestique dit au quatrième maître: «Votre +Majesté partira quand elle voudra», et sortit comme les autres. Le +cinquième valet en dit autant au cinquième maître. Mais le sixième +valet parla différemment au sixième étranger qui était auprès de +\bname{Candide}; il lui dit: «Ma foi, sire, on ne veut plus faire crédit à Votre +Majesté ni à moi non plus, et nous pourrions bien être coffrés cette +nuit vous et moi; je vais pourvoir à mes affaires: adieu.» + +Tous les domestiques ayant disparu, les six étrangers, \bname{Candide}, et +\bname{Martin}, demeurèrent dans un profond silence. Enfin \bname{Candide} le rompit: +«Messieurs, dit-il, voilà une singulière plaisanterie. Pourquoi +êtes-vous tous rois? pour moi, je vous avoue que ni moi ni \bname{Martin} nous +ne le sommes.» + +Le maître de \bname{Cacambo} prit alors gravement la parole, et dit en italien: +«Je ne suis point plaisant, je m’appelle Achmet III; j’ai été +grand-sultan plusieurs années; je détrônai mon frère; mon neveu m’a +détrôné; on a coupé le cou à mes vizirs; j’achève ma vie dans le vieux +sérail; mon neveu le grand-sultan Mahmoud me permet de voyager +quelquefois pour ma santé; et je suis venu passer le carnaval à \bname{Venise}.» + +Un jeune homme qui était auprès d’Achmet parla après lui, et dit: «Je +m’appelle Ivan; j’ai été empereur de toutes les Russies; j’ai été +détrôné au berceau; mon père et ma mère ont été enfermés; on m’a élevé +en prison; j’ai quelquefois la permission de voyager, accompagné de +ceux qui me gardent; et je suis venu passer le carnaval à \bname{Venise}.» + + + +Le troisième dit: «Je suis Charles-Édouard, roi \bname{d’Angleterre}; + mon +père m’a cédé ses droits au royaume; j’ai combattu pour les soutenir; +on a arraché le cœur à huit cents de mes partisans, et on leur en a +battu les joues; j’ai été mis en prison; je vais à Rome faire une +visite au roi mon père, détrôné ainsi que moi et mon grand-père; et je +suis venu passer le carnaval à \bname{Venise}.» + + + +Le quatrième prit alors la parole et dit: «Je suis roi des Polaques; le +sort de la guerre m’a privé de mes états héréditaires; mon père a +éprouvé les mêmes revers; je me résigne à la Providence comme le sultan +Achmet, l’empereur Ivan, et le roi Charles-Édouard, à qui Dieu donne +une longue vie; et je suis venu passer le carnaval à \bname{Venise}.» + + + +Le cinquième dit: «Je suis aussi roi des Polaques; j’ai perdu mon +royaume deux fois; mais la Providence m’a donné un autre état dans +lequel j’ai fait plus de bien que tous les rois des Sarmates ensemble +n’en ont jamais pu faire sur les bords de la Vistule. Je me résigne +aussi à la Providence; et je suis venu passer le carnaval à \bname{Venise}.» + + + +Il restait au sixième monarque à parler. «Messieurs, dit-il, je ne suis +pas si grand seigneur que vous; mais enfin j’ai été roi tout comme un +autre; je suis Théodore; on m’a élu roi en Corse; on m’a appelé +\textit{Votre Majesté}, et à présent à peine m’appelle-t-on \textit{monsieur}; j’ai +fait frapper de la monnaie, et je ne possède pas un denier; j’ai eu +deux secrétaires d’état, et j’ai à peine un valet; je me suis vu sur un +trône, et j’ai longtemps été à Londres en prison sur la paille; j’ai +bien peur d’être traité de même ici, quoique je sois venu, comme Vos +Majestés, passer le carnaval à \bname{Venise}.» + + +Les cinq autres rois écoutèrent ce discours avec une noble compassion. +Chacun d’eux donna vingt sequins au roi \bname{Théodore} pour avoir des habits +et des chemises; \bname{Candide} lui fit présent d’un diamant de deux mille +sequins. «Quel est donc, disaient les cinq rois, cet homme qui est en +état de donner cent fois autant que chacun de nous, et qui le donne? +Êtes-vous roi aussi, monsieur? — Non, messieurs, et n’en ai nulle envie.» + +Dans l’instant qu’on sortait de table, il arriva dans la même +hôtellerie quatre altesses sérénissimes qui avaient aussi perdu leurs +états par le sort de la guerre, et qui venaient passer le reste du +carnaval à \bname{Venise}; mais \bname{Candide} ne prit pas seulement garde à ces +nouveaux venus. Il n’était occupé que d’aller trouver sa chère +\bname{Cunégonde} à \bname{Constantinople}. + + + +\chapter{Voyage de \bname{Candide} à Constantinople} + + +\lettrine{L}{e fidèle} \bname{Cacambo} avait déjà obtenu du patron turc qui allait +reconduire le sultan Achmet à Constantinople qu’il recevrait \bname{Candide} et +\bname{Martin} sur son bord. L’un et l’autre s’y rendirent après s’être +prosternés devant Sa misérable Hautesse. \bname{Candide}, chemin faisant, disait +à \bname{Martin}: «Voilà pourtant six rois détrônés avec qui nous avons soupé! +et encore dans ces six rois il y en a un à qui j’ai fait l’aumône. +Peut-être y a-t-il beaucoup d’autres princes plus infortunés. Pour moi, +je n’ai perdu que cent moutons, et je vole dans les bras de \bname{Cunégonde}. +Mon cher \bname{Martin}, encore une fois, \bname{Pangloss} avait raison, tout est bien. +— Je le souhaite, dit \bname{Martin}. — Mais, dit \bname{Candide}, voilà une aventure bien +peu vraisemblable que nous avons eue à \bname{Venise}. On n’avait jamais vu ni +ouï conter que six rois détrônés soupassent ensemble au cabaret. — Cela +n’est pas plus extraordinaire, dit \bname{Martin}, que la plupart des choses +qui nous sont arrivées. Il est très commun que des rois soient +détrônés; et à l’égard de l’honneur que nous avons eu de souper avec +eux, c’est une bagatelle qui ne mérite pas notre attention.» +% Qu’importe avec qui l’on soupe, pourvu qu’on fasse bonne chère?» + +À peine \bname{Candide} fut-il dans le vaisseau, qu’il sauta au cou de son +ancien valet, de son ami \bname{Cacambo}. «Eh bien! lui dit-il, que fait +\bname{Cunégonde}? est-elle toujours un prodige de beauté? m’aime-t-elle +toujours? comment se porte-t-elle? Tu lui as, sans doute, acheté un +palais à Constantinople? + + + +— Mon cher maître, répondit \bname{Cacambo}, \bname{Cunégonde} lave les écuelles sur le +bord de la Propontide, chez un prince qui a très peu d’écuelles; elle +est esclave dans la maison d’un ancien souverain, nommé \bname{Ragotski}, à +qui le Grand-Turc donne trois écus par jour dans son asile; mais, ce +qui est bien plus triste, c’est qu’elle a perdu sa beauté, et qu’elle +est devenue horriblement laide. — Ah! belle ou laide, dit \bname{Candide}, je +suis honnête homme, et mon devoir est de l’aimer toujours. Mais comment +peut-elle être réduite à un état si abject avec les cinq ou six +millions que tu avais emportés? — Bon, dit \bname{Cacambo}, ne m’en a-t-il pas +fallu donner deux au senor don \bname{Fernando} d’Ibaraa, y Figueora, y +Mascarenès, y \bname{Lampourdos}, y Souza, gouverneur de \bname{Buenos} Aires, pour +avoir la permission de reprendre M\up{lle}~\bname{Cunégonde}? et un pirate +ne nous a-t-il pas bravement dépouillés de tout le reste? Ce pirate ne +nous a-t-il pas menés au cap de Matapan, à Milo, à Nicarie, à Samos, à +Petra, aux \bname{Dardanelles}, à Marmara, à \bname{Scutari}? \bname{Cunégonde} et la vieille +servent chez ce prince dont je vous ai parlé, et moi je suis esclave du +sultan détrôné. — Que d’épouvantables calamités enchaînées les unes aux +autres! dit \bname{Candide}. Mais, après tout, j’ai encore quelques diamants; +je délivrerai aisément \bname{Cunégonde}. C’est bien dommage qu’elle soit +devenue si laide.» + + + +Ensuite, se tournant vers \bname{Martin}: «Que pensez-vous, dit-il, qui soit le +plus à plaindre, de l’empereur Achmet, de l’empereur Ivan, du roi +Charles-Édouard, ou de moi? — Je n’en sais rien, dit \bname{Martin}; il faudrait +que je fusse dans vos cœurs pour le savoir. — Ah! dit \bname{Candide}, si +\bname{Pangloss} était ici, il le saurait, et nous l’apprendrait. — Je ne sais, +dit \bname{Martin}, avec quelles balances votre \bname{Pangloss} aurait pu peser les +infortunes des hommes, et apprécier leurs douleurs. Tout ce que je +présume c’est qu’il y a des millions d’hommes sur la terre cent fois +plus à plaindre que le roi Charles-Édouard, l’empereur Ivan, et le +sultan Achmet. — Cela pourrait bien être», dit \bname{Candide}. + +On arriva en peu de jours sur le canal de la mer Noire. \bname{Candide} +commença par racheter \bname{Cacambo} fort cher; et, sans perdre de temps, il +se jeta dans une galère, avec ses compagnons, pour aller sur le rivage +de la Propontide chercher \bname{Cunégonde}, quelque laide qu’elle pût être. + + +Il y avait dans la chiourme deux forçats qui ramaient fort mal, et à +qui le levanti patron appliquait de temps en temps quelques coups de +nerf de bœuf sur leurs épaules nues; \bname{Candide}, par un mouvement +naturel, les regarda plus attentivement que les autres galériens, et +s’approcha d’eux avec pitié. Quelques traits de leurs visages défigurés +lui parurent avoir un peu de ressemblance avec \bname{Pangloss} et avec ce +malheureux jésuite, ce baron, ce frère de M\up{lle}~\bname{Cunégonde}. Cette +idée l’émut et l’attrista. Il les considéra encore plus attentivement. +«En vérité, dit-il à \bname{Cacambo}, si je n’avais pas vu pendre maître +\bname{Pangloss}, et si je n’avais pas eu le malheur de tuer le baron, je +croirais que ce sont eux qui rament dans cette galère.» + + +Au nom du baron et de \bname{Pangloss} les deux forçats poussèrent un grand +cri, s’arrêtèrent sur leur banc, et laissèrent tomber leurs rames. Le +levanti patron accourait sur eux, et les coups de nerf de bœuf +\bname{redoublaient}. «Arrêtez! arrêtez! seigneur, s’écria \bname{Candide}; je vous +donnerai tant d’argent que vous voudrez. — Quoi! c’est \bname{Candide}! disait +l’un des forçats; — quoi! c’est \bname{Candide}! disait l’autre. — Est-ce un songe? +dit \bname{Candide}; veillé-je? suis-je dans cette galère? Est-ce là M. +le baron, que j’ai tué? est-ce là maître \bname{Pangloss}, que j’ai vu pendre? + + +— C’est nous-mêmes, c’est nous-mêmes, répondaient-ils. — Quoi! c’est là ce +grand philosophe? disait \bname{Martin}. — Eh! monsieur le levanti patron, dit +\bname{Candide}, combien voulez-vous d’argent pour la rançon de M. de +Thunder-ten-tronckh, un des premiers barons de l’empire, et de M.~\bname{Pangloss}, le plus profond métaphysicien d’Allemagne? — Chien de chrétien, +répondit le levanti patron, puisque ces deux chiens de forçats +chrétiens sont des barons et des métaphysiciens, ce qui est sans doute +une grande dignité dans leur pays, tu m’en donneras cinquante mille +sequins. — Vous les aurez, monsieur; ramenez-moi comme un éclair à +Constantinople, et vous serez payé sur-le-champ. Mais non, menez-moi +chez M\up{lle}~\bname{Cunégonde}.» Le levanti patron, sur la première offre +de \bname{Candide}, avait déjà tourné la proue vers la ville, et il faisait +ramer plus vite qu’un oiseau ne fend les airs. + +\bname{Candide} embrassa cent fois le baron et \bname{Pangloss}. «Et comment ne vous +ai-je pas tué, mon cher baron? et mon cher \bname{Pangloss}, comment êtes-vous +en vie, après avoir été pendu? et pourquoi êtes-vous tous deux aux +galères en Turquie? — Est-il bien vrai que ma chère sœur soit dans ce +pays? disait le baron. — Oui, répondait \bname{Cacambo}. — Je revois donc mon cher +\bname{Candide}! s’écriait \bname{Pangloss}.» \bname{Candide} leur présentait \bname{Martin} et \bname{Cacambo}. +Ils s’embrassaient tous; ils parlaient tous à-la-fois. La galère +volait, ils étaient déjà dans le port. On fit venir un Juif, à qui +\bname{Candide} vendit pour cinquante mille sequins un diamant de la valeur de +cent mille, et qui lui jura par Abraham qu’il n’en pouvait donner +davantage. Il paya incontinent la rançon du baron et de \bname{Pangloss}. +Celui-ci se jeta aux pieds de son libérateur, et les baigna de larmes; +l’autre le remercia par un signe de tête, et lui promit de lui rendre +cet argent à la première occasion. «Mais est-il bien possible que ma +sœur soit en Turquie? disait-il. — Rien n’est si possible, reprit +\bname{Cacambo}, puisqu’elle écure la vaisselle chez un prince de \bname{Transylvanie}.» +On fit aussitôt venir deux Juifs; \bname{Candide} vendit encore des diamants; +et ils repartirent tous dans une autre galère pour aller délivrer +\bname{Cunégonde}. + + +\chapter[Ce qui arriva à Candide, à Cunégonde…]{Ce qui arriva à \bname{Candide}, à \bname{Cunégonde},\\à \bname{Pangloss}, à \bname{Martin}, etc.} + + +\lettrine[findent=1pt,ante=«]{P}{ardon}, encore une fois, dit \bname{Candide} au baron; pardon, mon Révérend +Père, de vous avoir donné un grand coup d’épée au travers du corps. +— N’en parlons plus, dit le baron; je fus un peu trop vif, je l’avoue; +mais puisque vous voulez savoir par quel hasard vous m’avez vu aux +galères, je vous dirai qu’après avoir été guéri de ma blessure par le +frère apothicaire du collège, je fus attaqué et enlevé par un parti +espagnol; on me mit en prison à \bname{Buenos} Aires dans le temps que ma sœur +venait d’en partir. Je demandai à retourner à Rome auprès du père +général. Je fus nommé pour aller servir d’aumônier à Constantinople +auprès de M. l’ambassadeur de France. Il n’y avait pas huit jours +que j’étais entré en fonction, quand je trouvai sur le soir un jeune +icoglan très bien fait. Il faisait fort chaud: le jeune homme voulut se +baigner; je pris cette occasion de me baigner aussi. Je ne savais pas +que ce fût un crime capital pour un chrétien d’être trouvé tout nu avec +un jeune musulman. Un cadi me fit donner cent coups de bâton sous la +plante des pieds, et me condamna aux galères. Je ne crois pas qu’on ait +fait une plus horrible injustice. Mais je voudrais bien savoir pourquoi +ma sœur est dans la cuisine d’un souverain de \bname{Transylvanie} réfugié +chez les Turcs. + + +— Mais vous, mon cher \bname{Pangloss}, dit \bname{Candide}, comment se peut-il que je +vous revoie? — Il est vrai, dit \bname{Pangloss}, que vous m’avez vu pendre; je +devais naturellement être brûlé mais vous vous souvenez qu’il plut à +verse lorsqu’on allait me cuire: l’orage fut si violent qu’on désespéra +d’allumer le feu; je fus pendu, parce qu’on ne put mieux faire: un +chirurgien acheta mon corps, m’emporta chez lui, et me disséqua. Il me +fit d’abord une incision cruciale depuis le nombril jusqu’à la +clavicule. On ne pouvait pas avoir été plus mal pendu que je l’avais +été. L’exécuteur des hautes œuvres de la sainte inquisition, lequel +était sous-diacre, brûlait à la vérité les gens à merveille, mais il +n’était pas accoutumé à pendre: la corde était mouillée et glissa mal, +elle fut mal nouée; enfin je respirais encore: l’incision cruciale me +fit jeter un si grand cri, que mon chirurgien tomba à la renverse; et +croyant qu’il disséquait le diable, il s’enfuit en mourant de peur, et +tomba encore sur l’escalier en fuyant. Sa femme accourut au bruit d’un +cabinet voisin: elle me vit sur la table étendu avec mon incision +cruciale; elle eut encore plus de peur que son mari, s’enfuit, et tomba +sur lui. Quand ils furent un peu revenus à eux, j’entendis la +chirurgienne qui disait au chirurgien: \frquote{\localleftbox{« }Mon bon, de quoi vous +avisez-vous aussi de disséquer un hérétique? ne savez-vous pas que le diable est toujours dans le corps de ces gens-là? je vais vite chercher un prêtre pour l’exorciser.}\localleftbox{} +Je frémis à ce propos, et je ramassai le +peu de forces qui me restaient pour crier: «Ayez pitié de moi!» Enfin le +barbier portugais s’enhardit: il recousit ma peau; sa femme même eut +soin de moi; je fus sur pied au bout de quinze jours. Le barbier me +trouva une condition, et me fit laquais d’un chevalier de Malte qui +allait à \bname{Venise}: mais mon maître n’ayant pas de quoi me payer, je me +mis au service d’un marchand vénitien, et je le suivis à +Constantinople. + + +«Un jour il me prit fantaisie d’entrer dans une mosquée; il n’y avait +qu’un vieil iman et une jeune dévote très jolie qui disait ses +patenôtres; sa gorge était toute découverte: elle avait entre ses deux +tétons un beau bouquet de tulipes, de roses, d’anémones, de renoncules, +d’hyacinthes, et d’oreilles d’ours: elle laissa tomber son +bouquet; je +le ramassai, et je le lui remis avec un empressement très respectueux. +Je fus si longtemps à le lui remettre, que l’iman se mit en colère, et +voyant que j’étais chrétien, il cria à l’aide. On me mena chez le cadi, +qui me fit donner cent coups de latte sous la plante des pieds, et +m’envoya aux galères. Je fus enchaîné précisément dans la même galère +et au même banc que M.~le baron. Il y avait dans cette galère +quatre jeunes gens de Marseille, cinq prêtres napolitains, et deux +moines de Corfou, qui nous dirent que de pareilles aventures arrivaient +tous les jours. M.~le baron prétendait qu’il avait essuyé une +plus grande injustice que moi: je prétendais, moi, qu’il était beaucoup +plus permis de remettre un bouquet sur la gorge d’une femme que d’être +tout nu avec un icoglan. Nous disputions sans cesse, et nous recevions +vingt coups de nerf de bœuf par jour, lorsque l’enchaînement des +événements de cet univers vous a conduit dans notre galère, et que vous +nous avez rachetés. + +— Eh bien! mon cher \bname{Pangloss}, lui dit \bname{Candide}, quand vous avez été pendu, +disséqué, roué de coups, et que vous avez ramé aux galères, avez-vous +toujours pensé que tout allait le mieux du monde? — Je suis toujours de +mon premier sentiment, répondit \bname{Pangloss}; car enfin je suis philosophe; +il ne me convient pas de me dédire, Leibnitz ne pouvant pas avoir tort, +et l’harmonie préétablie étant d’ailleurs la plus belle chose du monde, +aussi bien que le plein et la matière subtile.» + + + +\chapter{Comment \bname{Candide} retrouva \bname{Cunégonde} et la vieille} + + +\lettrine{P}{endant} que \bname{Candide}, le baron, \bname{Pangloss}, \bname{Martin}, et \bname{Cacambo}, contaient +leurs aventures, qu’ils raisonnaient sur les événements contingents ou +non contingents de cet univers, qu’ils disputaient sur les effets et +les causes, sur le mal moral et sur le mal physique, sur la liberté et +la nécessité, sur les consolations que l’on peut éprouver lorsqu’on est +aux galères en Turquie, ils abordèrent sur le rivage de la Propontide, +à la maison du prince de \bname{Transylvanie}. Les premiers objets qui se +présentèrent furent \bname{Cunégonde} et la vieille, qui étendaient des +serviettes sur des ficelles pour les faire sécher. + +Le baron pâlit à cette vue. Le tendre amant \bname{Candide} en voyant sa belle +\bname{Cunégonde} rembrunie, les yeux éraillés, la gorge sèche, les joues +ridées, les bras rouges et écaillés, recula trois pas, saisi d’horreur, +et avança ensuite par bon procédé. Elle embrassa \bname{Candide} et son frère: +on embrassa la vieille: \bname{Candide} les racheta toutes deux. + +Il y avait une petite métairie dans le voisinage; la vieille proposa à +\bname{Candide} de s’en accommoder, en attendant que toute la troupe eût une +meilleure destinée. \bname{Cunégonde} ne savait pas qu’elle était enlaidie, +personne ne l’en avait avertie: elle fit souvenir \bname{Candide} de ses +promesses avec un ton si absolu, que le bon \bname{Candide} n’osa pas la +refuser. Il signifia donc au baron qu’il allait se marier avec sa +sœur. «Je ne souffrirai jamais, dit le baron, une telle bassesse de sa +part, et une telle insolence de la vôtre; cette infamie ne me sera +jamais reprochée: les enfants de ma sœur ne pourraient entrer dans les +chapitres d’Allemagne. Non, jamais ma sœur n’épousera qu’un baron de +l’empire.» \bname{Cunégonde} se jeta à ses pieds, et les baigna de larmes; il +fut inflexible. «Maître fou, lui dit \bname{Candide}, je t’ai réchappé des +galères, j’ai payé ta rançon, j’ai payé celle de ta sœur; elle lavait +ici des écuelles, elle est laide, j’ai la bonté d’en faire ma femme; et +tu prétends encore t’y opposer! je te retuerais si j’en croyais ma +colère. — Tu peux me tuer encore, dit le baron, mais tu n’épouseras pas +ma sœur de mon vivant.» + + + + +\chapter{Conclusion} + + +\lettrine{C}{andide}, dans le fond de son cœur, n’avait aucune envie d’épouser +\bname{Cunégonde}; mais l’impertinence extrême du baron le déterminait à +conclure le mariage; et \bname{Cunégonde} le pressait si vivement qu’il ne +pouvait s’en dédire. Il consulta \bname{Pangloss}, \bname{Martin}, et le fidèle +\bname{Cacambo}. \bname{Pangloss} fit un beau mémoire par lequel il prouvait que le +baron n’avait nul droit sur sa sœur, et qu’elle pouvait, selon toutes +les lois de l’empire, épouser \bname{Candide} de la main gauche. \bname{Martin} conclut +à jeter le baron dans la mer; \bname{Cacambo} décida qu’il fallait le rendre au +levanti patron, et le remettre aux galères, après quoi on l’enverrait à +Rome au père général par le premier vaisseau. L’avis fut trouvé fort +bon; la vieille l’approuva; on n’en dit rien à sa sœur; la chose fut +exécutée pour quelque argent, et on eut le plaisir d’attraper un +jésuite, et de punir l’orgueil d’un baron allemand. + + +Il était tout naturel d’imaginer qu’après tant de désastres, \bname{Candide} +marié avec sa maîtresse, et vivant avec le philosophe \bname{Pangloss}, le +philosophe \bname{Martin}, le prudent \bname{Cacambo}, et la vieille, ayant d’ailleurs +rapporté tant de diamants de la patrie des anciens Incas, mènerait la +vie du monde la plus agréable; mais il fut tant friponné par les Juifs, +qu’il ne lui resta plus rien que sa petite métairie; sa femme devenant +tous les jours plus laide devint acariâtre et insupportable: la vieille +était infirme, et fut encore de plus mauvaise humeur que \bname{Cunégonde}. +\bname{Cacambo}, qui travaillait au jardin, et qui allait vendre des \bname{légumes} à +Constantinople, était excédé de travail, et maudissait sa destinée. +\bname{Pangloss} était au désespoir de ne pas briller dans quelque université +d’Allemagne. Pour \bname{Martin}, il était fermement persuadé qu’on est +également mal partout; il prenait les choses en patience. \bname{Candide}, +\bname{Martin}, et \bname{Pangloss}, disputaient quelquefois de métaphysique et de +morale. On voyait souvent passer sous les fenêtres de la métairie des +bateaux chargés d’effendis, de bachas, de cadis, qu’on envoyait en exil +à Lemnos, à Mytilène, à Erzeroum: on voyait venir d’autres cadis, +d’autres bachas, d’autres effendis, qui prenaient la place des +expulsés, et qui étaient expulsés à leur tour: on voyait des têtes +proprement empaillées qu’on allait présenter à la sublime Porte. Ces +spectacles faisaient redoubler les dissertations; et quand on ne +disputait pas, l’ennui était si excessif, que la vieille osa un jour +leur dire: «Je voudrais savoir lequel est le pire, ou d’être violée cent +fois par des pirates nègres, d’avoir une fesse coupée, de passer par +les baguettes chez les \bname{Bulgares}, d’être fouetté et pendu dans un +auto-da-fé, d’être disséqué, de ramer en galère, d’éprouver enfin +toutes les misères par lesquelles nous avons tous passé, ou bien de +rester ici à ne rien faire? — C’est une grande question», dit \bname{Candide}. + + + + + + +Ce discours fit naître de nouvelles réflexions, et \bname{Martin} surtout +conclut que l’homme était né pour vivre dans les convulsions de +l’inquiétude, ou dans la léthargie de l’ennui. \bname{Candide} n’en convenait +pas, mais il n’assurait rien. \bname{Pangloss} avouait qu’il avait toujours +horriblement souffert; mais ayant soutenu une fois que tout allait à +merveille, il le soutenait toujours, et n’en croyait rien. + +Une chose acheva de confirmer \bname{Martin} dans ses détestables principes, de +faire hésiter plus que jamais \bname{Candide} et d’embarrasser \bname{Pangloss}. C’est +qu’ils virent un jour aborder dans leur métairie \bname{Paquette} et le frère +Giroflée, qui étaient dans la plus extrême misère; ils avaient bien +vite mangé leurs trois mille piastres, s’étaient quittés, s’étaient +raccommodés, s’étaient brouillés, avaient été mis en +prison; s’étaient +enfuis, et enfin frère Giroflée s’était fait turc. \bname{Paquette} continuait +son métier partout, et n’y gagnait plus rien. «Je l’avais bien prévu, +dit \bname{Martin} à \bname{Candide}, que vos présents seraient bientôt dissipés, et ne +les rendraient que plus misérables. Vous avez regorgé de millions de +piastres, vous et \bname{Cacambo}, et vous n’êtes pas plus heureux que frère +Giroflée et \bname{Paquette}. — Ah! ah! dit \bname{Pangloss} à \bname{Paquette}, le ciel vous +ramène donc ici parmi nous. Ma pauvre enfant! savez-vous bien que vous +m’avez coûté le bout du nez, un œil, et une oreille? Comme vous voilà +faite! Eh! qu’est-ce que ce monde!» Cette nouvelle aventure les engagea +à philosopher plus que jamais. + +Il y avait dans le voisinage un derviche très fameux qui passait pour +le meilleur philosophe de la Turquie; ils allèrent le consulter; +\bname{Pangloss} porta la parole, et lui dit: «Maître, nous venons vous prier de +nous dire pourquoi un aussi étrange animal que l’homme a été formé. + + + + + + +— De quoi te mêles-tu? lui dit le derviche; est-ce là ton affaire? — Mais, +mon Révérend Père, dit \bname{Candide}, il y a horriblement de mal sur la +terre. — Qu’importe, dit le derviche, qu’il y ait du mal ou du bien? +quand Sa Hautesse envoie un vaisseau en Égypte, s’embarrasse-t-elle si +les souris qui sont dans le vaisseau sont à leur aise ou non? — Que +faut-il donc faire? dit \bname{Pangloss}. — Te taire, dit le derviche. — Je me +flattais, dit \bname{Pangloss}, de raisonner un peu avec vous des effets et des +causes, du meilleur des mondes possibles, de l’origine du mal, de la +nature de l’âme, et de l’harmonie préétablie.» Le derviche, à ces mots, +leur ferma la porte au nez. + + + +Pendant cette conversation, la nouvelle s’était répandue qu’on venait +d’étrangler à Constantinople deux vizirs du banc et le muphti, et qu’on +avait empalé plusieurs de leurs amis. Cette catastrophe faisait partout +un grand bruit pendant quelques heures. \bname{Pangloss}, \bname{Candide}, et \bname{Martin}, +en retournant à la petite métairie, rencontrèrent un bon vieillard qui +prenait le frais à sa porte sous un berceau d’orangers. \bname{Pangloss}, qui +était aussi curieux que raisonneur, lui demanda comment se nommait le +muphti qu’on venait d’étrangler. «Je n’en sais rien, répondit le +bonhomme, et je n’ai jamais su le nom d’aucun muphti ni d’aucun vizir. +J’ignore absolument l’aventure dont vous me parlez; je présume qu’en +général ceux qui se mêlent des affaires publiques périssent quelquefois +misérablement, et qu’ils le méritent; mais je ne m’informe jamais de ce +qu’on fait à Constantinople; je me contente d’y envoyer vendre les +fruits du jardin que je cultive.» Ayant dit ces mots, il fit entrer les +étrangers dans sa maison; ses deux filles et ses deux fils leur +présentèrent plusieurs sortes de sorbets qu’ils faisaient eux-mêmes, du +kaïmak piqué d’écorces de cédrat confit, des oranges, des citrons, des +limons, des ananas, des dattes, des pistaches, du café de Moka qui +n’était point mêlé avec le mauvais café de Batavia et des îles. Après +quoi les deux filles de ce bon musulman parfumèrent les barbes de +\bname{Candide}, de \bname{Pangloss}, et de \bname{Martin}. + + + +«Vous devez avoir, dit \bname{Candide} au Turc, une vaste et magnifique terre? +— Je n’ai que vingt arpents, répondit le Turc; je les cultive avec mes +enfants; le travail éloigne de nous trois grands maux, l’ennui, le +vice, et le besoin.» + + +\bname{Candide} en retournant dans sa métairie fit de profondes réflexions sur +le discours du Turc. Il dit à \bname{Pangloss} et à \bname{Martin}: «Ce bon vieillard me +paraît s’être fait un sort bien préférable à celui des six rois avec +qui nous avons eu l’honneur de souper. — Les grandeurs, dit \bname{Pangloss}, +sont fort dangereuses, selon le rapport de tous les philosophes; car +enfin Églon, roi des Moabites, fut assassiné par Aod; \bname{Absalon} fut pendu +par les cheveux et percé de trois dards; le roi \bname{Nadab}, fils de +\bname{Jéroboam}, fut tué par \bname{Baasa}; le roi Éla, par \bname{Zambri}; \bname{Ochosias}, par +\bname{Jéhu}; \bname{Athalie}, par \bname{Joïada}; les rois \bname{Joachim}, \bname{Jéchonias}, \bname{Sédécias}, +furent esclaves. Vous savez comment périrent \bname{Crésus}, \bname{Astyage}, \bname{Darius}, +\bname{Denys} de \bname{Syracuse}, \bname{Pyrrhus}, \bname{Persée}, \bname{Annibal}, \bname{Jugurtha}, \bname{Arioviste}, +\bname{César}, \bname{Pompée}, \bname{Néron}, \bname{Othon}, \bname{Vitellius}, \bname{Domitien}, \bname{Richard}~II +\bname{d’Angleterre}, \bname{Édouard}~II, \bname{Henri}~VI, \bname{Richard}~III, \mbox{Marie Stuart}, Charles~I\up{er}, les trois \bname{Henri} de France, l’empereur \bname{Henri}~IV? Vous savez… — Je +sais aussi, dit \bname{Candide}, qu’il faut cultiver notre jardin. — Vous avez +raison, dit \bname{Pangloss}; car, quand l’homme fut mis dans le jardin d’Éden, +il y fut mis \emph{ut operaretur eum}, pour qu’il travaillât; ce qui prouve +que l’homme n’est pas né pour le repos. — Travaillons sans raisonner, dit +\bname{Martin}, c’est le seul moyen de rendre la vie supportable. + +Toute la petite société entra dans ce louable dessein; chacun se mit à +exercer ses talents. La petite terre rapporta beaucoup. \bname{Cunégonde} +était, à la vérité, bien laide; mais elle devint une excellente +pâtissière; \bname{Paquette} broda; la vieille eut soin du linge. Il n’y eut +pas jusqu’à frère Giroflée qui ne rendît service; il fut un très bon +menuisier, et même devint honnête homme: et \bname{Pangloss} disait quelquefois +à \bname{Candide}: «Tous les événements sont enchaînés dans le meilleur des +mondes possibles; car enfin si vous n’aviez pas été chassé d’un beau +château à grands coups de pied dans le derrière pour l’amour de +M\up{lle}~\bname{Cunégonde}, si vous n’aviez pas été mis à l’inquisition, si +vous n’aviez pas couru l’Amérique à pied, si vous n’aviez pas donné un +bon coup d’épée au baron, si vous n’aviez pas perdu tous vos moutons du +bon pays d’Eldorado, vous ne mangeriez pas ici des cédrats confits et +des pistaches. — Cela est bien dit, répondit \bname{Candide}, mais il faut +cultiver notre jardin.» + + +\endinput + + + diff --git a/macros/luatex/latex/tango/examples/book-mathematics.tex b/macros/luatex/latex/tango/examples/book-mathematics.tex new file mode 100644 index 0000000000..cbcebe1ae4 --- /dev/null +++ b/macros/luatex/latex/tango/examples/book-mathematics.tex @@ -0,0 +1,44 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[french,PubliClass=book,ColorTheme=Steel,FontSize=11pt, +StylisticSet={parallelslant,leqslant}]{tango} +\renewcommand{\arraystretch}{1.3} +\usepackage{tikz} +\usetikzlibrary{calc,through,arrows} +\tgosmartlists +\AtBeginDocument{% +\RenewCommandCopy{\setminus}{\smallsetminus} +} +\NewDocumentCommand\N{}{\ensuremath{\symbb{N}}} +\NewDocumentCommand\Z{}{\ensuremath{\symbb{Z}}} +\NewDocumentCommand\Q{}{\ensuremath{\symbb{Q}}} +\NewDocumentCommand\R{}{\ensuremath{\symbb{R}}} +\NewDocumentCommand\C{}{\ensuremath{\symbb{C}}} +\NewDocumentCommand\Pt{m}{\ensuremath{\symfrak{P}(#1)}} +\NewDocumentCommand\rond{}{\mathrel{\circ}} +\NewDocumentCommand\mesalg{m}{\overline{#1}} +\NewDocumentCommand\Vector{m}{\overrightarrow{#1}} +\DeclareMathOperator{\cl}{cl} +\DeclareMathOperator{\sgn}{sgn} +\newcounter{prop} +\newstatement{prop}{prop}{Propriété} +\newfixedcaption{\figcaption}{figure} +%% +\includeonly{rel-bin,recurrence,polynome-deg2,euler,puissance-cercle} +%\includeonly{polynome-deg2} +%% +%\tangoSmartLists +\begin{document} +\frontmatter +\tableofcontents +\mainmatter +%\tgosetup{ColorTheme=Framboise} +\part{Algèbre} +\include{rel-bin} +\include{recurrence} +\include{polynome-deg2} +%\tgosetup{ColorTheme=Sapin} +\part{Géométrie} +\include{euler} +\include{puissance-cercle} +\backmatter +\end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/tango/examples/candide.tex b/macros/luatex/latex/tango/examples/candide.tex new file mode 100644 index 0000000000..bd3432e7bf --- /dev/null +++ b/macros/luatex/latex/tango/examples/candide.tex @@ -0,0 +1,61 @@ +% !TEX TS-program = LuaLaTeX +% +\documentclass[french,Output=SmallTablet,PubliClass=book,twoside,Numbers=OldStyle,FontSize=9pt]{tango} + +\geometry{paperheight=18.5cm,paperwidth=11.2cm,heightrounded,top=1.2cm,bottom=2.8cm,headheight=14pt,headsep=12pt,footskip=13pt,inner=1.2cm,outer=2cm,} +% +\titleformat{\chapter}[display]{\filcenter\large\itshape\addfontfeature{RawFeature={-onum}}} +{\normalfont\Large\scshape\addfontfeature{RawFeature={+c2sc}} \chaptername\space\thechapter}{1em}{} +\titleformat{name=\chapter,numberless}[display]{\filcenter\large\itshape\addfontfeature{RawFeature={-onum}}} +{}{0em}{}% +\titlespacing{\chapter}{0pt}{20pt plus 8pt}{20pt plus 8pt}% +% +\newpagestyle{candide}{% + \sethead + [\addfontfeature{RawFeature=+onum}\thepage] +[\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitlename\space\thechapter][] % even + {}{\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitle} + {\addfontfeature{RawFeature=+onum}\thepage} % odd + } + \newpagestyle{candidetoc}{% + \sethead + [\addfontfeature{RawFeature=+onum}\thepage] +[\addfontfeature{RawFeature=+c2sc}\MakeUppercase\frenchcontentsname][] % even + {}{\addfontfeature{RawFeature=+c2sc}\MakeUppercase\frenchcontentsname} + {\addfontfeature{RawFeature=+onum}\thepage} % odd + } + + \renewcommand\thechapter{\Roman{chapter}} + \titlecontents{chapter} + [3.5em] % ie, 1.5em (chapter) + 2.3em + {\normalfont} + {\contentslabel{3.5em}} + {\hspace*{-1.5em}} + {\titlerule*[1pc]{.}\contentspage} + + %%%%%%%%%%%% +\pagestyle{candide} +% + +\usepackage{lettrine} + + +\includeonly{Ch-1-15, Ch-16-30} + +\hypersetup{pdfpagelayout=TwoPageRight} + +\begin{document} + + + +\include{Ch-1-15} +\include{Ch-16-30} +\backmatter +\pagestyle{candidetoc} +\tableofcontents + +\end{document} + + + + diff --git a/macros/luatex/latex/tango/examples/euler.tex b/macros/luatex/latex/tango/examples/euler.tex new file mode 100644 index 0000000000..4d3ea54571 --- /dev/null +++ b/macros/luatex/latex/tango/examples/euler.tex @@ -0,0 +1,512 @@ + +\tgotitle{Droite et cercle d'Euler} +\tgoshorttoc +\section{Cercle circonscrit à un triangle} +\subsection{Un résultat préliminaire} +On sait depuis le collège que la droite qui joint les milieux de deux côtés d'un triangle est parallèle au troisième côté. Nous précisons ce résultat à l'aide d'un théorème qui nous sera utile par la suite (voir figure \ref{figmilieux}). + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$B$](B) at (0,0); +\coordinate[label=right:$C$](C) at (4,0); +\coordinate (T) at ($(B)!1!38:(C)$); +\coordinate (S) at ($(C)!1!105:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B); +\draw (A)--(C); +\coordinate [label=right:$B'$] (B') at ($(A)!0.5!(C)$); +\coordinate [label=left:$C'$] (C') at ($(A)!0.5!(B)$); +\draw[>=stealth,->,semithick](B)--(C); +\draw[>=stealth,->,semithick](C')--(B'); +\foreach \point in {A,B,C,C',B'} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figmilieux} +\end{figure} + +\begin{thm} +Soit un triangle $ABC$ et soit $B'$ et $C'$ les milieux respectifs de $[AC]$ et $[AB]$. Alors +les droites $(BC)$ et $(C'B')$ sont parallèles et $\overrightarrow{BC}=2\overrightarrow{C'B'}$. +\label{thmilieux} +\end{thm} + +\begin{proof} +La relation de Chasles permet d'écrire +\begin{align*} +\overrightarrow{BC}&=\overrightarrow{BA}+\overrightarrow{AC},\\ +\intertext{puis, en utilisant une caractérisation vectorielle du milieu,} +\overrightarrow{BC}&=2\overrightarrow{C'A}+2\overrightarrow{AB'},\\ +\overrightarrow{BC}&=2\left(\overrightarrow{C'A}+\overrightarrow{AB'}\right),\\ +\overrightarrow{BC}&=2\overrightarrow{C'B'}.\qedhere +\end{align*} +\end{proof} + +\subsection{Médiatrices des côtés d'un triangle} +%%%%% Version 1 + La médiatrice d'un segment est par définition la droite perpendiculaire à ce segment en son milieu. Nous admettrons que la médiatrice d'un segment est aussi l'ensemble des points qui sont équidistants des extrémités de ce segment (voir figure \ref{figcerccir}). Nous formulons alors le théorème suivant : +%%%%%% +%%%%%% +%%%%%% +%%%%% Version 2 +%La médiatrice d'un segment est par définition l'ensemble des points équidistants des extrémités de ce segment. Il est clair que le milieu du segment appartient à la médiatrice. On a même : +% % +%\begin{thm} +%La médiatrice d'un segment est la droite perpendiculaire à ce segment en son milieu. +%\end{thm}\label{caracmed} +% +%\begin{proof} +%Soit un segment $[AB]$ et $I$ son milieu. Notons $\symcal{E}$ la médiatrice de $[AB]$ et $\symcal{D}$ la droite perpendiculaire à $[AB]$ en $I$. Montrons que $\symcal{E}=\symcal{D}$ par double inclusion. +%Soit un point $M$ appartenant à la médiatrice $\symcal{E}$ de $[AB]$. On a $IA=IB$ et $MA=MB$ par définition de la médiatrice. Les triangles $MIA$ et $MIB$ sont donc superposables. Si $\alpha$ et $\beta$ sont les mesures respectives de $\widehat{MIA}$ et $\widehat{MIB}$, on en déduit que $\alpha=\beta$. L'angle $\widehat{AIB}$ et plat de mesure $\alpha+\beta$ : +%\[\left.\begin{aligned} \alpha=\beta&\\\alpha+\beta=180\degre\end{aligned}\right\}\implies \alpha=\beta=90\degre.\] +%Le point $M$ appartient donc à la droite $\symcal{D}$ : $\symcal{E}\subset\symcal{D}$. +% +%Réciproquement, supposons que $M\in\symcal{D}$. Considérons la réflexion $s$ d'axe $\symcal{D}$ : on a $s(A)=B$ et $s(M)=M$ (car l'ensemble des points invariants de $s$ est la droite $\symcal{D}$). Par conservation des distances, on a $MA=s(M)s(A)=MB$. Donc $M$ appartient à $\symcal{E}$ : $\symcal{E}\subset\symcal{D}$. +% +%On a donc bien $\symcal{E}=\symcal{D}$. +%\end{proof} +% +% + +\begin{thm} +Les médiatrices des trois côtés d'un triangle sont concourantes en un point équidistant des trois sommets et centre de l'unique cercle passant par ces derniers. +\end{thm} + +\vspace{1ex} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$B$](B) at (0,0); +\coordinate[label=right:$C$](C) at (4,0); +\coordinate (T) at ($(B)!1!38:(C)$); +\coordinate (S) at ($(C)!1!105:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=right:$B'$] (B') at ($(A)!0.5!(C)$); +\coordinate [label=left:$C'$] (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate [label=above:$O${\rule[-1mm]{0mm}{1mm}}](O) at (intersection of C'--X and B'--Y); +\draw(C')--(O); +\draw (B')--(O); +\draw[dotted,semithick](A')--(O); +\node [draw] at (O) [circle through={(C)}] {}; +\draw[gray](O)--(A); +\draw[gray](O)--(B); +\draw[gray](O)--(C); +\foreach \point in {A,B,C,C',A',B',O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figcerccir} +\end{figure} + + + +\begin{proof} +Reprenons la figure \ref{figmilieux} et nommons $A'$ le milieu de $[BC]$. Les médatrices des côtés $[AB]$ et $[AC]$ sont sécantes en un point $O$. (On rappelle qu'un triangle est la donnée de trois points non alignés, autrement dit, un triangle aplati ne peut être considéré comme un triangle : cela assure que les deux médiatrices sont bien sécantes.) Le point $O$ se trouve à la fois sur la médiatrice de $[AB]$ et sur la médiatrice de $[AC]$ : il est donc à la fois équidistant de $A$ et $B$ ($OA=OB$) et équidistant de $A$ et $C$ ($OA=OC$). On a donc finalement $OB=OC$, ce qui assure que la médiatrice de $[BC]$ passe par $O$. Les trois médiatrices sont donc concourantes en $O$, point équidistant des trois sommets du triangle et par conséquent centre d'un cercle passant par ces sommets. Pour établir l'unicité d'un tel cercle, il suffit de remarquer que le centre d'un cercle passant par les sommets est nécessairement équidistant des sommets donc point de concours des médiatrices. +\end{proof} + +Le cercle en question est le \emph{cercle circonscrit} au triangle. + +\subsection{Un cas particulier} +Le cas du cercle circonscrit au triangle rectangle est bien connu (voir figure \ref{figtrec}). + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$B$](B) at (0,0); +\coordinate[label=right:$C$](C) at (4,0); +\coordinate (T) at ($(B)!1!30:(C)$); +\coordinate (S) at ($(C)!1!120:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=left:$B'${\rule{1.3mm}{0mm}}] (B') at ($(A)!0.5!(C)$); +\coordinate [label=right:{\rule{1.3mm}{0mm}}$C'$] (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate(O) at (intersection of C'--X and B'--Y); +\draw(C')--(O); +\draw (B')--(O); +\draw[dotted,semithick](A')--(O); +\node [draw] at (O) [circle through={(C)}] {}; +\draw[gray](O)--(A); +\draw[gray](O)--(B); +\draw[gray](O)--(C); +\foreach \point in {A,B,C,C',A',B',O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figtrec} +\end{figure} + + +\begin{thm} +Si un triangle est rectangle, alors le centre de son cercle circonscrit est le milieu de l'hypoténuse qui est donc un diamètre du cercle. Réciproquement si le cercle circonscrit à un triangle admet l'un des côtés comme diamètre, alors ce triangle est rectangle et admet le côté en question pour hypoténuse. +\label{diamtrrec} +\end{thm} + +\begin{proof} +Supposons le triangle $ABC$ rectangle en $A$. La droite $(AB)$ est alors perpendiculaire à la droite $(AC)$. +D'après le théorème \ref{thmilieux} on sait que $\overrightarrow{AB}=2\overrightarrow{B'A'}$ et en particulier que les droites $(AB)$ et $(B'A')$ sont parallèles. On en déduit que les droites $(B'A')$ et $(AC)$ sont perpendiculaires: +\[\left.\begin{aligned} &(AB)\parallel(A'B')\\ +\text{et}&\\ +&(AB)\perp(AC)\end{aligned}\right\}\implies (A'B')\perp(AC). +\] + +La droite $(B'A')$, perpendiculaire au segment $[AC]$ en son milieu, en est la médiatrice. De même, $(C'A')$ est la médiatrice du segment $[AB]$. Le point $A'$, milieu de $[BC]$, est commun à ces deux médiatrices : il est donc le centre du cercle circonscrit au triangle. + + + +Réciproquement, supposons que le milieu $A'$ de $[BC]$ soit le centre du cercle circonscrit. Ce point est alors équidistant de $A$ et $C$, donc est un point de la médiatrice du segment $[AC]$; il en est de même pour $B'$, milieu de ce segment. La droite $(A'B')$ est donc la médiatrice du segment $[AC]$ et lui est perpendiculaire. Cette droite est aussi parallèle à $(AB)$, en vertu du théorème \ref{thmilieux}. De la même façon que précédemment, on en déduit que les droites $(AB)$ et $(AC)$ sont perpendiculaires. Le triangle $ABC$ est donc rectangle en $A$. +\end{proof} + +\begin{remark} La situation représentée sur la figure \ref{figcerccir} est celle d'un triangle acutangle. On comprend assez rapidement (mais ceci ne constitue pas une démonstration) que le centre du cercle circonscrit est intérieur au triangle si les trois angles sont aigus et extérieur dans le cas où l'un des angles est obtus (voir figure \ref{figtrobtu}). Le cas du triangle rectangle constitue en quelque sorte une situation limite… +\end{remark} + + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$B$](B) at (0,0); +\coordinate[label=right:$C$](C) at (4,0); +\coordinate (T) at ($(B)!1!25:(C)$); +\coordinate (S) at ($(C)!1!140:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=above:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=left:$B'${\rule{1.3mm}{0mm}}] (B') at ($(A)!0.5!(C)$); +\coordinate [label=right:{\rule{1.3mm}{0mm}}$C'$] (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate [label=below:$O${\rule[-1mm]{0mm}{1mm}}](O) at (intersection of C'--X and B'--Y); +\draw(C')--(O); +\draw (B')--(O); +\draw[dotted,semithick](A')--(O); +\node [draw] at (O) [circle through={(C)}] {}; +\draw[gray](O)--(A); +\draw[gray](O)--(B); +\draw[gray](O)--(C); +\foreach \point in {A,B,C,C',A',B',O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figtrobtu} +\end{figure} + + + +\section{Centre de gravité d'un triangle} +Il est connu que les médianes d'un triangle sont concourantes en un point situé aux deux tiers de chacune d'elles à partir du sommet. C'est à cette propriété que nous allons maintenant nous intéresser, sous un angle vectoriel (voir figure \ref{figmedianes}). + + +\begin{thm}\label{thgravit}% +Soit un triangle $ABC$ et soit $A'$, $B'$ et $C'$ les milieux respectifs des côtés $[BC]$, $[AC]$ et $[AB]$. +Les médianes de ce triangle sont concourantes en un point $G$, nommé centre de gravité du triangle et qui est l'unique point du plan à vérifier les relations vectorielles suivantes : +\begin{gather} +\overrightarrow{GA}+\overrightarrow{GB}+\overrightarrow{GC}=\vec{0}\,,\label{eqisobar}\\ +\overrightarrow{AG}=\frac23\overrightarrow{AA'}\,,\quad\overrightarrow{BG}=\frac23\overrightarrow{BB'}\quad\text{et}\quad\overrightarrow{CG}=\frac23\overrightarrow{CC'}\,.\label{eqGmediane} +\end{gather}% +\end{thm} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$B$](B) at (0,0); +\coordinate[label=below:$C$](C) at (4,0); +\coordinate (T) at ($(B)!1!36:(C)$); +\coordinate (S) at ($(C)!1!107:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=right:$B'$](B') at ($(A)!0.5!(C)$); +\coordinate[label=left:$C'$](C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate (O) at (intersection of C'--X and B'--Y); +\coordinate[label=above:$G${\rule[-1mm]{0mm}{1mm}}] (G) at ($(A')!0.333!(A)$); +\coordinate (H) at ($(O)!3!(G)$); +\draw (A)--(A'); +\draw[dotted,semithick] (B)--(B'); +\draw[dotted,semithick] (C)--(C'); +\foreach \point in {A,B,C,A',G,C',B'} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figmedianes} +\end{figure} + + + +\begin{proof} +Pour tout point $M$ du plan, on considère le vecteur +\[ +\overrightarrow{v(M)}=\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}. +\] + + Nous nous proposons de prouver qu'il existe un point $M$ et un seul pour lequel ce vecteur est nul : cet unique point $M$ sera le point $G$ que nous cherchons. À cet effet nous allons transformer le vecteur $\overrightarrow{v(M)}$, en faisant notamment intervenir un des milieux, ici $A'$, grâce à la relation de Chasles. Nous rappelons que ce milieu est caractérisé par $\overrightarrow{A'B}+\overrightarrow{A'C}=\vec{0}$. +%\DinoXiPhoneCommand{% +\begin{align*} +\overrightarrow{v(M)}&= +(\overrightarrow{MA'}+\overrightarrow{A'A})+ +(\overrightarrow{MA'}+\overrightarrow{A'B})+ +(\overrightarrow{MA'}+\overrightarrow{A'C}),\\ +&= +3\overrightarrow{MA'}+\overrightarrow{A'A}+\underbrace{\overrightarrow{A'B}+\overrightarrow{A'C}}_{\vec{0}}. +\end{align*} + +Nous transformons alors le vecteur $\overrightarrow{MA'}$ en faisant intervenir le point $A$ grâce à la relation de Chasles : +\begin{align*} +\overrightarrow{v(M)}&=3(\overrightarrow{MA}+\overrightarrow{AA'})+\overrightarrow{A'A},\\ +\intertext{puis, en développant et en remarquant que $\overrightarrow{A'A}=-\overrightarrow{AA'}$,} +\overrightarrow{v(M)}&=3\overrightarrow{MA}+2\overrightarrow{AA'}. +\end{align*}%} +%\DinoiPhoneCommand{% +%\begin{multline*} +%\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}= +%(\overrightarrow{MA'}+\overrightarrow{A'A})\\ +%+(\overrightarrow{MA'}+\overrightarrow{A'B})+ +%(\overrightarrow{MA'}+\overrightarrow{A'C}),\end{multline*} +%soit +%\begin{align*} +%\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}&= +%3\overrightarrow{MA'}+\overrightarrow{A'A}+\underbrace{\overrightarrow{A'B}+\overrightarrow{A'C}}_{\vec{0}},\\ +%&=3\overrightarrow{MA}+3\overrightarrow{AA'}+\overrightarrow{A'A},\\ +%&=3\overrightarrow{MA}+2\overrightarrow{AA'}. +%\end{align*}} +En tenant compte de $\overrightarrow{v(M)}=\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}$, + \begin{align}\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}=\vec{0} + &\iff 3\overrightarrow{MA}+2\overrightarrow{AA'}=\vec{0},\notag\\ + &\iff 3\overrightarrow{AM}=2\overrightarrow{AA'},\notag\\ + &\iff\overrightarrow{AM}=\dfrac23\overrightarrow{AA'}.\label{caraccg}\end{align} + +La relation \eqref{caraccg} définit l'unique point $M$ vérifiant $\overrightarrow{MA}+\overrightarrow{MB}+\overrightarrow{MC}=\vec{0}$. Ce point est par définition le centre de gravité du triangle $ABC$ et on le note traditionnellement $G$. Le calcul vectoriel ci-dessus aurait tout aussi bien pu être mené en utilisant $B'$ ou $C'$ plutôt que $A'$. On en déduit les trois relations annoncées en \eqref{eqGmediane}. +\end{proof} + +\section{Orthocentre et droite d'Euler} +\subsection{Orthocentre d'un triangle} +\begin{thm} +Les hauteurs issues des trois sommets de tout triangle sont concourantes en un point $H$ nommé orthocentre de ce triangle. +\end{thm} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$B$](B) at (0,0); +\coordinate[label=below:$C$](C) at (5,0); +\coordinate (T) at ($(B)!1!36:(C)$); +\coordinate (S) at ($(C)!1!107:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate (B') at ($(A)!0.5!(C)$); +\coordinate (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate [label=above:$O$](O) at (intersection of C'--X and B'--Y); +\coordinate[label=above:$G${\rule[-1mm]{0mm}{1mm}}] (G) at ($(A')!0.333!(A)$); +\coordinate[label=below:$H$] (H) at ($(O)!3!(G)$); +\draw (A')--(O)--(H)--(A); +\draw (A)--(A'); +\foreach \point in {A,B,C,A',O,G,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figeuler} +\end{figure} + + +\begin{proof} +Nous en restons aux notations utilisées précédemment. +Si le triangle $ABC$ est équilatéral, la hauteur, la médiane et la médiatrice relatives à chaque côté sont confondues, les points $O$, centre du cercle circonscrit, et $G$, centre de gravité de $ABC$ le sont également. Ce point unique est évidemment aussi point de concours des hauteurs. Nous supposerons désormais que le triangle $ABC$ n'est pas équilatéral. + +La démonstration repose alors sur la remarque qui suit. +\begin{remark}[Remarque préliminaire] +La hauteur issue de $A$ et la médiatrice de $[BC]$ sont deux droites parallèles, car perpendiculaires à une même troisième. +L'observation de la figure \ref{figeuler} nous incite alors à prolonger la droite $(OG)$ et à fabriquer ainsi une configuration de Thales. Comme nous savons, de par la position de $G$ aux deux tiers de la médiane $[AA']$, que $\overrightarrow{GA}=-2\overrightarrow{GA'}$ nous allons introduire un point $H$ défini par $\overrightarrow{GH}=-2\overrightarrow{GO}$ pour ensuite ensuite établir (en exploitant de façon vectorielle notre configuration de Thales) que les vecteurs $ \overrightarrow{AH}$ et $\overrightarrow{OA'}$ sont colinéaires, ce qui établira, sauf cas particulier, que la médiatrice $(OA')$ et la droite $(AH)$ sont parallèles donc que $(AH)$ est la hauteur issue de $A$. +\end{remark} + +Soit donc le point $H$ défini par $\overrightarrow{GH}=-2\overrightarrow{GO}$. +De l'égalité \eqref{eqGmediane}, nous déduisons que $3\overrightarrow{AG}=2\overrightarrow{AA'}$, puis que $\overrightarrow{AG}=2\overrightarrow{GA'}$. Par conséquent : +\[\begin{split} \overrightarrow{AH}&=\overrightarrow{AG}+\overrightarrow{GH},\\ +&=2\overrightarrow{GA'}+2\overrightarrow{OG},\\ +&=2(\overrightarrow{OG}+\overrightarrow{GA'}),\\ +&=2\overrightarrow{OA'}. +\end{split} +\] +Les vecteurs $\overrightarrow{OA'}$ et $\overrightarrow{AH}$ sont donc colinéaires. + +\begin{alert} +Si le triangle $ABC$ est rectangle, les points $O$ et $A'$ (et par conséquent les points $A$ et $H$) sont confondus. On ne peut parler des droites $(OA')$ et $(AH)$ : ce cas sera examiné plus tard. +\end{alert} +Supposons provisoirement que le triangle $ABC$ \emph{n'est pas} rectangle : le point $O$, centre du cercle circonscrit n'est pas confondu avec $A'$ (cf. théorème \ref{diamtrrec}) ou encore $\overrightarrow{OA'}\neq\vec{0}$. On peut dire alors que la droite $(AH)$ est parallèle à la droite $(OA')$, elle même perpendiculaire au côté $[BC]$, en tant que médiatrice. La droite $(AH)$ est donc perpendiculaire à $[BC]$ : c'est la hauteur issue de $A$. + + +Le raisonnement qui vient d'être fait tient toujours si l'on remplace les points $A$ et $A'$ par $B$ et $B'$ ou par $C$ et $C'$. Le point $H$ quant à lui est fixe (il ne dépend que de $O$ et $G$) : il appartient donc à chacune des trois hauteurs. On a donc démontré que les trois hauteurs sont concourantes en $H$ : ce point $H$ est \emph{l'orthocentre} du triangle $ABC$. +\begin{alert} +Si maintenant le triangle est rectangle, par exemple en $A$ : les hauteurs issues de $B$ et $C$ sont respectivement $(BA)$ et $(CA)$ : les hauteurs sont concourantes en $A$. L'orthocentre $H$ est alors confondu avec $A$ de même que le centre du cercle circonscrit $O$ est confondu avec $A'$. La relation $\overrightarrow{GH} = -2\overrightarrow{GO}$ est toujours vérifiée.\qedhere +\end{alert} +\end{proof} +\subsection{Droite d'Euler} + + + +Nous avons en fait montré un peu plus que ce que nous avions annoncé. +La relation vectorielle liant $O$, $G$ et $H$ montre que si le triangle $ABC$ n'est pas équilatéral ces trois points sont alignés. La droite support est la \emph{droite d'Euler}. Résumons-nous maintenant : +\begin{thm} +Le centre $O$ du cercle circonscrit, le centre de gravité $G$ et l'orthocentre $H$ d'un triangle $ABC$ vérifient la relation vectorielle +\begin{equation}\overrightarrow{GH}=-2\overrightarrow{GO}\,.\label{eulerposition}\end{equation} +Ces trois points sont confondus si $ABC$ est équilatéral. Dans le cas contraire, ils sont alignés sur une droite nommée droite d'Euler. +\label{eulerprecis} +\end{thm} + +\section{Cercle d'Euler} +\subsection{Neuf points remarquables} +Le cercle d'Euler est également connu comme cercle des neuf points ou encore cercle de Feuerbach (voir figure \ref{figcercleuler}). + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$B$](B) at (0,0); +\coordinate[label=below:$C$](C) at (5,0); +\coordinate (T) at ($(B)!1!61:(C)$); +\coordinate (S) at ($(C)!1!130:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=right:$B'${\rule[-1mm]{0mm}{1mm}}] (B') at ($(A)!0.5!(C)$); +\coordinate [label=left:$C'$] (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate(O) at (intersection of C'--X and B'--Y); +\coordinate (G) at ($(A')!0.333!(A)$); +\coordinate[label=below:$H$] (H) at ($(O)!3!(G)$); +\draw[dashed] (A)--(H); +\draw[dashed] (B)--(H); +\draw[dashed] (C)--(H); +\coordinate[label=below:$D$](D) at at (intersection of A--H and B--C); +\coordinate[label=right:$E${\rule[-1mm]{0mm}{1mm}}](E) at at (intersection of B--H and A--C); +\coordinate[label=left:$F$](F) at at (intersection of C--H and B--A); +\coordinate [label=left:$A''$] (A'') at ($(A)!0.5!(H)$); +\coordinate [label=below:$B''$] (B'') at ($(B)!0.5!(H)$); +\coordinate [label=below:$C''$] (C'') at ($(C)!0.5!(H)$); +\draw (A')--(C')--(A'')--(C'')--cycle ; +\draw (B')--(C')--(B'')--(C'')--cycle ; +\coordinate (O') at ($(O)!1.5!(G)$); +\node [draw,dotted,semithick] at (O') [circle through={(A')}] {\rule{2.2cm}{0mm}$\symcal{C}$}; +\foreach \point in {A,B,C,B',C',A',H,D,E,F,A'',B'',C''} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figcercleuler} +\end{figure} + + +\begin{thm} +Pour tout triangle, les pieds des hauteurs, les milieux des côtés et les milieux des segments joignant l'orthocentre aux sommets sont situés sur un même cercle. +\end{thm} +\begin{remark} +Suivant les configurations, certains de ces points peuvent être confondus. +\end{remark} +\begin{proof} Soit un triangle $ABC$ d'orthocentre $H$, $A'$, $B'$ et $C'$ les milieux respectifs des côtés $[BC]$, $[CA]$ et $[AB]$, $D$, $E$ et $F$ les pieds des hauteurs issues respectivement de $A$, $B$ et $C$ et $A''$, $B''$ et $C''$ les milieux respectifs des segments $[AH]$, $[BH]$ et $[CH]$. + +En vertu du théorème \ref{thmilieux}, appliqué successivement aux triangles $ABC$ et $HBC$ +\XSmartphoneCommand{% +\begin{equation} +\left.\begin{aligned} +\overrightarrow{C'B'}=\frac12\overrightarrow{BC}&\\ +\overrightarrow{B''C''}=\frac12\overrightarrow{BC}& +\end{aligned}\right\}\implies \overrightarrow{C'B'}=\overrightarrow{B''C''}\text{ et }(C'B')\parallel(B''C'')\parallel(BC).\label{parallelBC} +\end{equation}} +\SmartphoneCommand{ +\begin{equation} +\left.\begin{aligned} +\overrightarrow{C'B'}=\frac12\overrightarrow{BC}&\\ +\overrightarrow{B''C''}=\frac12\overrightarrow{BC}& +\end{aligned}\right\}\implies \left\{\begin{aligned}&\overrightarrow{C'B'}=\overrightarrow{B''C''}\\ \text{et}&\\(&C'B')\parallel(B''C'')\parallel(BC).\end{aligned}\right.\label{parallelBC} +\end{equation}} + +De même, en appliquant ce même théorème aux triangles $BAH$ et $CAH$ +\XSmartphoneCommand{% +\begin{equation} +\left.\begin{aligned} +\overrightarrow{C'B''}=\frac12\overrightarrow{AH}&\\ +\overrightarrow{B'C''}=\frac12\overrightarrow{AH}& +\end{aligned}\right\}\implies \overrightarrow{C'B''}=\overrightarrow{B'C''}\text{ et }(C'B'')\parallel(B'C'')\parallel(AH).\label{parallelAH} +\end{equation}} +\SmartphoneCommand{% +\begin{equation} +\left.\begin{aligned} +\overrightarrow{C'B''}=\frac12\overrightarrow{AH}&\\ +\overrightarrow{B'C''}=\frac12\overrightarrow{AH}& +\end{aligned}\right\}\implies\left\{\begin{aligned}&\overrightarrow{C'B''}=\overrightarrow{B'C''}\\ \text{et}&\\(&C'B'')\parallel(B'C'')\parallel(AH).\end{aligned}\right.\label{parallelAH} +\end{equation}} + +À ce stade nous avons établi que $B'C'B''C''$ est un parallélogramme. Nous savons également que $(AH)$, en tant que hauteur du triangle, est perpendiculaire à $(BC)$. Grâce à cette remarque et aux relations de parallélisme avec $(BC)$ et $(AH)$ établies ci-dessus dans les implications \eqref{parallelBC} et \eqref{parallelAH}, nous pouvons affirmer que $B'C'B''C''$ est un rectangle. Ce rectangle est inscriptible dans le cercle admettant $[B'B'']$ et $[C'C'']$ pour diamètres. + +On montre de la même façon que $A'C'A''C''$ est un rectangle inscriptible dans le même cercle de diamètres $[C'C'']$ et $[A'A'']$. Les six points $A'$, $A''$, $B'$, $B''$, $C'$ et $C''$ appartiennent donc au cercle $\symcal{C}$ de diamètre, par exemple, $[A'A'']$. + +Considérons alors le point $D$ : si le triangle $ABC$ est isocèle en $A$, il est confondu avec $A'$ et appartient donc au cercle $\symcal{C}$. Sinon $D$ et $A'$ sont distincts et le triangle $ADA'$ est rectangle en $D$ : d'après le théorème \ref{diamtrrec}, $D$ appartient au cercle $\symcal{C}$ de diamètre $[AA']$. On montre de la même façon que les points $E$ et $F$ appartiennent à $\symcal{C}$. +\end{proof} +\begin{remark} Le cercle d'Euler est le cercle circonscrit au triangle des milieux $A'B'C'$. +\end{remark} +% +\subsection{Centre du cercle d'Euler} +Nous allons préciser la remarque précédente (voir figure \ref{centreeuler}). +\begin{thm} +Soit un triangle $ABC$ et soit $A'$, $B'$ et $C'$ les milieux respectifs de $[BC]$, $[CA]$ et $[AB]$. +Soit $O$ le centre du cercle circonscrit à $ABC$, $G$ son centre de gravité et $H$ son orthocentre : +\begin{itemize} +\item le point $O$ est l'orthocentre du triangle $A'B'C'$ ; +\item le point $G$ est le centre de gravité du triangle $A'B'C'$ ; +\item le centre $O'$ du cercle circonscrit au triangle $A'B'C'$ appartient à la droite d'Euler et vérifie la relation vectorielle +\[\overrightarrow{GO'}=-\frac12\overrightarrow{GO}.\] +\end{itemize} +\end{thm} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$B$](B) at (0,0); +\coordinate[label=below:$C$](C) at (5,0); +\coordinate (T) at ($(B)!1!32:(C)$); +\coordinate (S) at ($(C)!1!100:(B)$); +\coordinate[label=above:$A$](A) at at (intersection of C--S and B--T); +\draw (A)--(B)--(C)--cycle; +\coordinate [label=below:$A'$] (A') at ($(B)!0.5!(C)$); +\coordinate [label=right:$B'${\rule[-1mm]{0mm}{1mm}}] (B') at ($(A)!0.5!(C)$); +\coordinate [label=left:$C'${\rule[-1mm]{0mm}{1mm}}] (C') at ($(A)!0.5!(B)$); +\coordinate (X) at ($(C')!1!90:(B)$); +\coordinate (Y) at ($(B')!1!90:(C)$); +\coordinate[label=above:$O$] (O) at (intersection of C'--X and B'--Y); +\coordinate [label=above:$G$] (G) at ($(A')!0.333!(A)$); +\coordinate[label=below:$H$] (H) at ($(O)!3!(G)$); +\draw (A)--(B)--(C)--cycle ; +\coordinate[label=above:$O'$] (O') at ($(O)!1.5!(G)$); +\draw [dotted,semithick](A')--(B')--(C')--cycle; +\draw (O)--(H); +\foreach \point in {A,B,C,B',C',A',O,O',G,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{centreeuler} +\end{figure} + + +%%\DinoiPadAirCommand{\pagebreak} + +\begin{proof} +\begin{itemize} +\item La droite $(A'O)$, médiatrice de $[BC]$, est perpendiculaire à la droite $(BC)$, donc également à la droite $(C'B')$ parallèle à $(BC)$ d'après le théorème \ref{thmilieux}. Dans le triangle $A'B'C'$, le point $O$ appartient donc à la hauteur issue de $A'$. On montre de la même façon que $O$ appartient à la hauteur issue de $B'$. Le point $O$ est donc l'orthocentre de $A'B'C'$. +\item Grâce à la relation \eqref{eqGmediane} du théorème \ref{thgravit}, on obtient +\[\overrightarrow{GA'}=-\frac12\overrightarrow{GA},\quad \overrightarrow{GB'}=-\frac12\overrightarrow{GC}\quad\text{et}\quad\overrightarrow{GC'}=-\frac12\overrightarrow{GC}.\] +On en déduit +\begin{align*} +\overrightarrow{GA'}+\overrightarrow{GB'}+\overrightarrow{GC'}&=-\frac12\Bigl(\,\underbrace{\overrightarrow{GA}+\overrightarrow{GB}+\overrightarrow{GC}}_{\vec{0}}\,\Bigr),\\ +\overrightarrow{GA'}+\overrightarrow{GB'}+\overrightarrow{GC'}&=\vec{0}, +\end{align*} +qui prouve que $G$ est le centre de gravité de $A'B'C'$. +\item Si l'on applique la relation \eqref{eulerposition} du théorème \ref{eulerprecis} au triangle $A'B'C'$, on obtient $\overrightarrow{GO}=-2\overrightarrow{GO'}$. On en déduit la relation +\[\overrightarrow{GO'}=-\frac12\overrightarrow{GO}.\qedhere\]\end{itemize} +\end{proof} + +\begin{remark} +La configuration des points $(O, O', G, H)$ est remarquable. On dit qu'ils sont en \emph{division harmonique} ; cette notion fera l'objet d'une prochaine parution de la \emph{Mathematica dinosaurorum}. +\end{remark} +\endinput diff --git a/macros/luatex/latex/tango/examples/handout-euler.tex b/macros/luatex/latex/tango/examples/handout-euler.tex new file mode 100644 index 0000000000..533d96b904 --- /dev/null +++ b/macros/luatex/latex/tango/examples/handout-euler.tex @@ -0,0 +1,29 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[french,ColorTheme=Tannen,FontSize=11pt, +StylisticSet={parallelslant,leqslant},Numbers=OldStyle]{tango} +\renewcommand{\arraystretch}{1.3} +\usepackage{tikz} +\usetikzlibrary{calc,through,arrows} +\tgosmartlists +\AtBeginDocument{% +\RenewCommandCopy{\setminus}{\smallsetminus} +} +\NewDocumentCommand\N{}{\ensuremath{\symbb{N}}} +\NewDocumentCommand\Z{}{\ensuremath{\symbb{Z}}} +\NewDocumentCommand\Q{}{\ensuremath{\symbb{Q}}} +\NewDocumentCommand\R{}{\ensuremath{\symbb{R}}} +\NewDocumentCommand\C{}{\ensuremath{\symbb{C}}} +\NewDocumentCommand\Pt{m}{\ensuremath{\symfrak{P}(#1)}} +\NewDocumentCommand\rond{}{\mathrel{\circ}} +\NewDocumentCommand\mesalg{m}{\overline{#1}} +\NewDocumentCommand\Vector{m}{\overrightarrow{#1}} +\DeclareMathOperator{\cl}{cl} +\DeclareMathOperator{\sgn}{sgn} +\newcounter{prop} +\newstatement{prop}{prop}{Propriété} +\newfixedcaption{\figcaption}{figure} +%% +%\tangoSmartLists +\begin{document} +\include{euler} +\end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/tango/examples/handout-polynomes-deg2.tex b/macros/luatex/latex/tango/examples/handout-polynomes-deg2.tex new file mode 100644 index 0000000000..3e260be4a9 --- /dev/null +++ b/macros/luatex/latex/tango/examples/handout-polynomes-deg2.tex @@ -0,0 +1,27 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[french,ColorTheme=BlackAndWhite,FontSize=11pt]{tango} +\renewcommand{\arraystretch}{1.3} +\usepackage{tikz} +\usetikzlibrary{calc,through,arrows} +\tgosmartlists +\AtBeginDocument{% +\RenewCommandCopy{\setminus}{\smallsetminus} +} +\NewDocumentCommand\N{}{\ensuremath{\symbb{N}}} +\NewDocumentCommand\Z{}{\ensuremath{\symbb{Z}}} +\NewDocumentCommand\Q{}{\ensuremath{\symbb{Q}}} +\NewDocumentCommand\R{}{\ensuremath{\symbb{R}}} +\NewDocumentCommand\C{}{\ensuremath{\symbb{C}}} +\NewDocumentCommand\Pt{m}{\ensuremath{\symfrak{P}(#1)}} +\NewDocumentCommand\rond{}{\mathrel{\circ}} +\NewDocumentCommand\mesalg{m}{\overline{#1}} +\NewDocumentCommand\Vector{m}{\overrightarrow{#1}} +\DeclareMathOperator{\cl}{cl} +\DeclareMathOperator{\sgn}{sgn} +\newcounter{prop} +\newstatement{prop}{prop}{Propriété} +\newfixedcaption{\figcaption}{figure} +%% +\begin{document} +\input{polynome-deg2} +\end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/tango/examples/polynome-deg2.tex b/macros/luatex/latex/tango/examples/polynome-deg2.tex new file mode 100644 index 0000000000..bf91400a55 --- /dev/null +++ b/macros/luatex/latex/tango/examples/polynome-deg2.tex @@ -0,0 +1,557 @@ +\renewcommand{\arraystretch}{1.3} +%\renewcommand*{\DinoThmLogo}{\textcolor{ColorOne}{\oldpilcrowfour}\ignorespaces} +%\renewcommand*{\DinoThmLogo}{\hspace*{\DinoTitleIndent-3pt}\ignorespaces} + +%\textcolor{ColorOne}{\oldpilcrowfour}\ignorespaces + +%%%%%% quelques figures, le début arrive ensuite +\newcommand{\paraone}{ +\begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-3.5) rectangle (3.5,3); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-2.5) grid (3.5,3); + \draw [->](-2,0) -- (3.5,0) node[above=15mm,left=4mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-2.5) -- (-1.9,3) node[above] {}; + \draw[semithick,domain=-2:3.5,label=left:$\symcal{C}_P$] plot (\x,{0.5(\x+1)*(\x-2)}); + \draw [fill=white] (-1,0) circle (1.2pt) node[below=2mm,left] {$\beta$}; +\draw [fill=white] (2,0) circle (1.2pt) node[below=2mm,right] {$\alpha$}; +\node[below] at (.75,-2.5){$\Delta>0\;\text{ et }\; a>0$}; + \end{tikzpicture} +} +\newcommand{\paratwo}{ + \begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-4) rectangle (3.5,2.5); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-3) grid (3.5,2.5); + \draw [->](-2,0) -- (3.5,0) node[above=12mm,left=8mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-3) -- (-1.9,2.5) node[above] {}; + \draw[semithick,domain=-2:3.5,label=left:$\symcal{C}_P$] plot (\x,{-(\x+1)*(\x-2)}); + \draw [fill=white] (-1,0) circle (1.2pt) node[above=2mm,left] {$\alpha$}; +\draw [fill=white] (2,0) circle (1.2pt) node[above=2mm,right] {$\beta$}; +\draw[fill=white,white] (-2,-4) rectangle (3.5,-3); +\node[below] at (.75,-3){$\Delta>0\;\text{ et }\; a<0$}; + \end{tikzpicture} +} + +\newcommand{\parathree}{ +\begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-1.5) rectangle (3.5,5); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-.5) grid (3.5,5); + \draw [->](-2,0) -- (3.5,0) node[above=25mm,left=6mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-.5) -- (-1.9,5) node[above] {}; + \draw[semithick,domain=-2:3.5] plot (\x,{(\x+1)*(\x-2)+2.25}); + \draw [fill=white] (0.5,0) circle (1.2pt) node[above=1mm] {$\frac{-b}{2a}$}; +\node[below] at (.75,-0.5){$\Delta=0\;\text{ et }\; a>0$}; + \end{tikzpicture} +} + +\newcommand{\parafour}{ +\begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-6) rectangle (3.5,0.5); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-5) grid (3.5,.5); + \draw [->](-2,0) -- (3.5,0) node[below=25mm,left=6mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-5) -- (-1.9,.5) node[above] {}; + \draw[semithick,domain=-2:3.5] plot (\x,{-(\x+1)*(\x-2)-2.25}); + \draw [fill=white] (0.5,0) circle (1.2pt) node[below=1mm] {$\frac{-b}{2a}$}; +\draw[fill=white,white] (-2,-6) rectangle (3.5,-5); +\node[below] at (.75,-5){$\Delta=0\;\text{ et }\; a<0$}; + \end{tikzpicture} +} + +\newcommand{\parafive}{ +\begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-1.5) rectangle (3.5,5); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-.5) grid (3.5,5); + \draw [->](-2,0) -- (3.5,0) node[above=25mm,left=6mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-.5) -- (-1.9,5) node[above] {}; + \draw[semithick,domain=-2:3.5] plot (\x,{(\x+1)*(\x-2)+2.75}); +\node[below] at (.75,-.5){$\Delta<0\;\text{ et }\; a>0$}; + \end{tikzpicture} +} + +\newcommand{\parasix}{ + \begin{tikzpicture}[domain=-5:5,samples=100,x=6mm,y=6mm] + \clip (-2,-6) rectangle (3.5,0.5); + \draw[very thin,color=gray,xstep=0.5,ystep=0.5] (-2,-5) grid (3.5,.5); + \draw [->](-2,0) -- (3.5,0) node[below=25mm,left=6mm] {$\symcal{C}_P$}; + \draw[->] (-1.9,-5) -- (-1.9,.5) node[above] {}; + \draw[semithick,domain=-2:3.5] plot (\x,{-(\x+1)*(\x-2)-2.75}); +\draw[fill=white,white] (-2,-6) rectangle (3.5,-5); +\node[below] at (.75,-5){$\Delta<0\;\text{ et }\; a<0$}; + \end{tikzpicture} +} +%%%% +\tgotitle{Polynômes du second degré} +\tgoshorttoc +\section{Généralités} +\subsection{Fonction polynôme du second degré} +On dit qu'une fonction $P$, définie sur l'ensemble $\R$ des nombres réels et à valeurs dans $\R$, est une fonction polynôme du second degré s'il existe un réel $a$ non nul ainsi que deux réels $b$ et $c$ tels que +\[\forall x\in\R,\; P(x)=ax^2+bx+c.\] +On convient alors de dire que $ax^2+bx+c$ est un polynôme du second degré. + +\begin{remark} +Cette définition n'entraîne évidemment pas qu'une fonction polynôme de degré 2 donnée ne puisse pas s'écrire sous une forme différente. Par exemple : +\begin{itemize} +\item Cas de $P : \R\rightarrow\R,\; x\mapsto x^2-3x+2$ : $\forall\,x\in\R$, $P(x)=(x-1)(x-2)$. +\item Cas de $Q : \R\rightarrow\R,\; x\mapsto x^2-1$ : $\forall\,x\in\R$, + \[Q(x)=\frac{x^4-1}{x^2+1}.\] + \item Cas de $R : \R\rightarrow\R,\; x\mapsto x^2-2x+5$ : $\forall\,x\in\R$, $R(x)=\left(\left({x-1}\right)^2\right)+4$. +\end{itemize} +\end{remark} +\subsection{Écriture unique} +Il existe cependant un certaine unicité de l'écriture d'un polynôme de degré~2, qui concerne plus précisément ses \emph{coefficients} $a$, $b$ et $c$. +\begin{thm} +Soit $(a,a')\in\R^*\times\R^*$, $(b,b')\in\R\times\R$ et $(c,c')\in\R\times\R$ tels que +\[\forall x\in\R,\; ax^2+bx+c=a'x^2+b'x+c',\] +alors $a=a'$, $b=b'$ et $c=c'$. +\label{thunicite} +\end{thm} +\begin{proof} +L'égalité entre les deux expressions étant vraie pour tout $x\in\R$, elle l'est en particulier pour $x=0$. On en déduit que $c=c'$ et par conséquent +\begin{align*} +\forall x\in\R,\; ax^2+bx&=a'x^2+b'x,\\ +\forall x\in\R,\; x(ax+b)&=x(a'x+b'),\\ +\intertext{Soit, en simplifiant par $x\neq0$} +\forall x\in\R^*,\;ax+b&=a'x+b'. +\end{align*} + +En donnant alors successivement à $x$ les valeurs $1$ et $2$, on obtient : +\[\left\{\begin{aligned} +(a-a')+(b-b')&=0\\ +2(a-a')+(b-b')&=0 +\end{aligned}\right.\;,\] +dont la résolution amène à $a-a'=0$ et $b-b'=0$, c.-à-d. : $a=a'$ et $b=b'$. +\end{proof} + +\section{Forme canonique} +\subsection{Méthode de complétion au carré}\label{sec2-1} +Fixons nous un réel $m$. On rappelle que, pour tout $x\in\R$, $(x+m)^2=x^2+2mx+m^2$. Ou encore : +\begin{equation} +\forall x\in\R, \; x^2+2mx=\left(x+m\right)^2-m^2. +\end{equation} + +Dans le cas de $P : \R\rightarrow\R, x\mapsto x^2+2mx+p$, on remarque que l'on peut alors écrire +\begin{equation} +x^2+2mx+p=\left(x+m\right)^2-m^2+p.\label{eqfcreduite} +\end{equation} + +Cette remarque fonde la \emph{méthode de complétion au carré}. + +\begin{example}[Exemples] +\begin{enumerate} +\item \label{explefactor} +On souhaite résoudre l'équation $x^2-6x+7=0$. On remarque que \[x^2-6x+7=(x-3)^2-9+7\] et on se ramène ainsi à +\begin{align*} +(x-3)^2-2&=0,\\ +(x-3)^2-\bigl(\sqrt{2}\bigr)^2&=0,\\ +\intertext{puis en employant une identité remarquable} +\bigl(x-3+\sqrt{2}\bigr)\bigl(x-3-\sqrt{2}\bigr)&=0. +\end{align*} +D'où l'on déduit que l'ensemble des solutions de $x^2-6x+7=0$ est +\[ +\symcal{S}=\bigl\{3-\sqrt{2}, 3+\sqrt{2}\bigr\}. +\] +\item Démontrer que $x^2+x+1$ est strictement positif pour tout $x\in\R$. +On écrit +\begin{align*} +x^2+x+1&=x^2+2\times\frac12x+1,\\ +&=\left(x+\frac12\right)^2-\frac14+1,\\ +&=\left(x+\frac12\right)^2+\frac34\,. +\end{align*} + +On en déduit que, pour tout $x\in\R$, +\[x^2+x+1≥\frac34\:.\] +On a donc finalement : $\forall x\in\R,\; x^2+x+1>0$. +\end{enumerate} +\end{example} +\subsection{Cas général} +En factorisant $a$ dans $P(x)$, on obtient le théorème suivant : +\begin{thm} +Soit $P$, la fonction polynôme de degré 2 définie sur $\R$ par $P(x)=ax^2+bx+c$. On a +\begin{equation} +\forall x\in\R,\;P(x)=a\left(\left(x+\frac{b}{2a}\right)^2-\frac{\Delta}{4a^2}\vphantom{\frac{b^2}{4a^2}}\right),\label{eqformcan} +\end{equation} +où $\Delta$, que l'on nomme \emph{discriminant} du polynôme $P(x)$, vaut $\Delta=b^2-4ac$. +\label{thformcan} +\end{thm} +\begin{proof} +On commence par factoriser $a$ dans $P(x)$ : +\[P(x)=a\left(x^2+\frac{b}{a}x+\frac{c}{a}\right),\] +puis on utilise l'égalité \eqref{eqfcreduite} avec $m=b/(2a)$ et $p=c/a$. On obtient +\[P(x)=a\left(\left(x+\frac{b}{2a}\right)^2-\frac{b^2}{4a^2}+\frac{c}{a}\right). +\] +%D'où le résultat annoncé. +Une réduction au même dénominateur amène alors au résultat annoncé. +\end{proof} + +\subsubsection{Discriminant réduit} +Dans le cas où $b$ se met agréablement sous la forme $2b'$ (par exemple, lorsque $b$ est un entier pair) on peut remarquer que $b/2a=b'/a$ et que $\Delta=4b'^2-4ac$. + On est alors amené à poser $\Delta'=b'^2-ac$ et l'on obtient +\begin{equation} +\forall x\in\R,\;P(x)=a\left(\left(x+\frac{b'}{a}\right)^2-\frac{\Delta'}{a^2}\vphantom{\frac{b^2}{4a^2}}\right). +\end{equation} +Le nombre $\Delta'$ est souvent nommé \emph{discriminant réduit} + +\subsubsection{Extrémums} +La forme canonique de la fonction $P$ met en évidence l'existence d'un extrémum dont la nature dépend du signe de $a$. +\begin{thm} +Soit $P$, la fonction polynôme de degré 2 définie sur $\R$ par $P(x)=ax^2+bx+c$. +\XSmartphoneCommand{\vspace{\baselineskip}} + +La fonction $P$ admet en\SmartphoneCommand{\\} $-\dfrac{b}{2a}\left\{\begin{aligned} +\text{un \emph{minimum} égal à $\smash{-\dfrac{\Delta}{4a}}$}\; &\text{si $a>0$,}\\[2.5ex] +\text{un \emph{maximum} égal à $\smash{-\dfrac{\Delta}{4a}}$}\; &\text{si $a<0$.} +\end{aligned}\right.$ +\vspace{1ex}\par +\label{thextrem} +\end{thm} + +\begin{proof} +On voit tout d'abord que +\[\forall x\in\R,\;\left(x+\frac{b}{2a}\right)^2≥0, +\] +donc que +\[ +\forall x\in\R,\;\left(x+\frac{b}{2a}\right)^2-\frac{\Delta}{4a^2}≥-\frac{\Delta}{4a^2}, +\] +l'égalité n'étant atteinte que si le carré est nul, donc si $x=-b/(2a)$. On fait alors apparaître $P(x)$ (compte tenu de l'égalité \eqref{eqformcan} du théorème \ref{thformcan}) en multipliant chaque membre de cette inégalité par $a\neq0$, ce qui change ou non son sens, selon que a est positif ou négatif. Il vient alors : +\begin{itemize} +\item si $a>0$, +\[ +\forall x\in\R,\; P(x)≥-\frac{\Delta}{4a}\;; +\] +\item et si $a<0$, +\[ +\forall x\in\R,\; P(x)≤-\frac{\Delta}{4a}\,. +\] +\end{itemize} +On sait de plus que dans les deux cas, l'égalité est atteinte si et seulement si $x=-b/(2a)$. +\end{proof} + +\section{Factorisation} +\subsection{Théorème de factorisation} +La méthode vue dans l'exemple \ref{explefactor} de la section \ref{sec2-1} se généralise, pourvu que $\Delta$ soit positif. Précisément, on a le théorème +\begin{thm}\label{thfactor}% +Soit $P$, la fonction polynôme de degré 2 définie sur $\R$ par $P(x)=ax^2+bx+c$. Si le discriminant $\Delta$ de $P$ est positif ($\Delta≥0$), alors +\begin{align*} +\forall x \in\R,\;P(x)&=a(x-\alpha)(x-\beta)\\ +\text{où}\quad\alpha=\frac{-b+\sqrt{\Delta}}{2a}&\text{ et }\beta=\frac{-b-\sqrt{\Delta}}{2a}. +\end{align*} +\end{thm} +\begin{remark} +Le cas où $\Delta=0$ est particulier, puisque l'on a alors +\[ +\alpha=\beta=\frac{-b}{2a}\quad\text{soit :}\quad\forall x\in\R,\;P(x)=a\left(x-\frac{-b}{2a}\right)^2. +\] +\end{remark} + +\begin{proof} +On remarque que si $\Delta≥0$, on peut écrire +\[ +\frac{\Delta}{4a^2}=\left(\frac{\sqrt{\Delta}}{2a}\right)^2. +\] + +En reportant dans l'égalité \eqref{eqformcan} du théorème \ref{thformcan}, on obtient +\[ +\forall x\in\R,\;P(x)=a\left(\left(x+\frac{b}{2a}\right)^2-\left(\frac{\sqrt{\Delta}}{2a}\right)^2\right). +\] + +On obtient alors le résultat annoncé en factorisant la différence de deux carrés grâce à l'identité remarquable $A^2-B^2=(A+B)(A-B)$. +\end{proof} + +\subsection{Racines} +Soit $P$ une fonction polynôme du second degré. +On dit que $P$ est factorisable par $(x-x_0)$ s'il existe $m\in\R^*$ et $p\in\R$ tels que +\begin{equation}\forall x\in\R,\;P(x)=(x-x_0)(mx+p).\label{eqfactorx0}\end{equation} +On dit qu'un réel $x_0$ est une racine de $P$ si $P(x_0)=0$ : une racine de $P$ n'est donc rien d'autre qu'une solution de l'équation $P(x)=0$. + +Nous pouvons maintenant formuler le théorème qui suit : +\begin{thm} +Soit $P$ une fonction polynôme du second degré et $x_0\in\R$. Le réel $x_0$ est une racine de $P$ si et seulement si $P$ est factorisable par $(x-x_0)$. +\end{thm} + +\begin{proof} +Tout d'abord, si $P$ est factorisable par $x_0$, il suffit de calculer $P(x_0)$ en utilisant l'égalité \eqref{eqfactorx0} pour constater que $P(x_0)=0$, donc que $x_0$ est une racine de $P$. + +Réciproquement supposons que $x_0$ est une racine de $P$, donc que $P(x_0)=0$. Soit alors $a$, $b$ et $c$ les coefficients de $P(x)$ : on a +\[ax_0^2+bx_0+c=P(x_0)=0,\] + d'où $c=-ax_0^2-bx_0$. Et en substituant cette écriture de $c$ dans l'expression de $P(x)$ : +\begin{align*} +P(x)&=ax^2+bx+c\\ +&= ax^2+bx-ax_0^2-bx_0,\\ +&= a(x^2-x_0^2)+b(x-x_0),\\ +&= a(x-x_0)(x+x_0)+b(x-x_0),\\ +&=(x-x_0)(ax+ax_0+b). +\end{align*} + +On en arrive à $P(x)=(x-x_0)(mx+p)$, en prenant $m=a$ et $p=ax_0+b$. +\end{proof} + +\subsubsection{Racines et équation du second degré} +Nous faisons ici le point sur les racines de $P$, autrement dit sur la résolution de l'équation +$P(x)=0$. + + +\begin{itemize} +\item \textit{Si $\Delta<0$,} nous reprenons le théorème \ref{thextrem} : dans ce cas, la fonction $P$ possède un minimum strictement positif si $a>0$ ou un maximum strictement négatif si $a<0$. Dans chaque cas, si $\Delta<0$, l'équation $P(x)=0$ ne possède pas de solution, autrement dit $P$ n'admet aucune racine. + +\item \textit{Si maintenant $\Delta=0$,} la remarque qui suit le théorème \ref{thfactor} prouve que l'équation $P(x)=0$ équivaut à +\[ +\left(x-\frac{-b}{2a}\right)^2=0 +\] + et admet $-b/(2a)$ pour seule solution, ou encore que ce nombre est la seule racine de $P$. Dans la mesure où le facteur $x-(-b/(2a))$ intervient par son carré, on parle alors de \emph{racine double}. + + \item \textit{Enfin si $\Delta>0$,} d'après le théorème \ref{thfactor}, $P(x)=0$ équivaut à $(x-\alpha)(x-\beta)=0$. +%\DinoXiPadminiCommand{$(x-\alpha)(x-\beta)=0$.} +%\DinoiPadminiCommand{\[(x-\alpha)(x-\beta)=0.\]} + Cette équation admet donc deux solutions, ou encore $P$ admet deux racines qui sont + \[ + \alpha=\frac{-b+\sqrt{\Delta}}{2a}\quad\text{et}\quad\beta=\frac{-b-\sqrt{\Delta}}{2a}. + \] +\end{itemize} + + +\begin{remark} +Dons le cas où l'on a posé $b=2b'$ et utilisé le discriminant réduit $\Delta'$, il est facile de vérifier que les racines s'expriment comme suit : +\[ +\alpha=\frac{-b'+\sqrt{\Delta'}}{a}\quad\text{et}\quad\beta=\frac{-b'-\sqrt{\Delta'}}{a}. +\] +\end{remark} + +\begin{example}[Exemples] +\begin{enumerate} +\item Résoudre l'équation $3x^2-5x+1=0$ : calculons $\Delta=25-12=13$. L'équation a deux solutions qui sont les racines de $3x^2-5x+1$ : +\[ +\alpha=\frac{5+\sqrt{13}}{6}\quad\text{et}\quad\beta=\frac{5-\sqrt{13}}{6}. +\] +L'ensemble des solutions est $\symcal{S}=\{\alpha,\beta\}$. +\item Factoriser si possible $-2x^2+3x+2$ : on calcule $\Delta=9+16=5^2$. Il existe deux racines qui sont $2$ et $-1/2$ ; d'où +\[ +\forall x\in\R,\;-2x^2+3x+2=-2(x-2)\left(x+\frac12\right). +\] +\item Factoriser si possible $A(x)=2x^2-8$ : utilisons l'identité remarquable +\[ +a^2-b^2=(a+b)(a-b). +\] +\[\forall x\in\R,\;2x^2-8=2(x^2-4)=2(x-2)(x+2).\] +Dans un cas de ce genre, il est bien sûr inutile de calculer $\Delta$. En revanche, l'existence de deux racines distinctes nous prouve que $\Delta>0$. +\item Résoudre l'équation $3x^2+2=0$. La fonction polynôme $x\mapsto3x^2+2$ admet un minimum strictement positif égal à $2$. Il n'y a aucune solution, l'ensemble des solutions est $\symcal{S}=\emptyset$. +\item Factoriser $9x^2-6x+1=0$. On pourrait envisager de calculer $\Delta$, mais en observant l'expression, on reconnait un membre d'identité remarquable : +\[\forall x\in\R,\;9x^2-6x+1=(3x-1)^2.\] +\item Résoudre $x^2+2x=0$. La factorisation est immédiate : +\[x^2+2x=0\iff x(x+2)=0\iff x=0\text{ ou }x+2=0.\] +L'ensemble des solutions de cette équation est donc $\symcal{S}=\{0,-2\}$. +\end{enumerate} +\end{example} +% +% + +\subsection{Problème de signe} +Nous rappelons ici que la fonction \emph{signe} est définie sur $\R$ comme suit : +\[\forall x \in \R,\; \sgn(x)=\begin{cases} +-1 &\text{si $x<0$,}\\ +0 &\text{si $x=0$,}\\ +1 &\text{si $x>0$.} +\end{cases} +\] +Cette définition est beaucoup plus pertinente que l'usage des symboles ${+}$ et ${-}$, ne serait-ce que parce qu'elle rend exacte et claire une formulation comme \emph{le signe du produit est le produit des signes}. +\begin{thm} +Soit $P$, la fonction polynôme de degré 2 définie sur $\R$ par $P(x)=ax^2+bx+c$. +\begin{itemize} +\item Si $\Delta<0$, le signe de $P(x)$ est égal à celui de $a$ en tout $x$ réel. +\item Si $\Delta=0$, le signe de $P(x)$ est égal au signe de $a$ en tout $x$ réel différent de $-b/(2a)$ et s'annule en $-b/(2a)$. +\item Si $\Delta>0$, le signe de $P(x)$ est égal au signe de $-a$ en tout $x$ intérieur à l'intervalle des racines, au signe de $a$ en tout $x$ extérieur à l'intervalle des racines et s'annule aux racines. +\end{itemize} +\label{thsgn} +\end{thm} + +Ces résultats s'interprètent sur la représentation graphique $\symcal{C}_P$ de $P$, selon les signes de $\Delta$ et $a$ (voir figure \ref{figracines}). +\afterpage{\clearpage\begin{figure}[H]\centering +\AfourCommand{% +\noindent\hfill\paraone\hfill\parathree\hfill\parafive\hfill\null +\par +\noindent\hfill\paratwo\hfill\parafour\hfill\parasix\hfill\null +} +\BigTabletCommand{% +\noindent\hfill\paraone\hfill\parathree\hfill\parafive\hfill\null +\par +\noindent\hfill\paratwo\hfill\parafour\hfill\parasix\hfill\null +} +\TabletCommand{% +\noindent\hfill\paraone\hfill\parathree\hfill\parafive\hfill\null +\par +\noindent\hfill\paratwo\hfill\parafour\hfill\parasix\hfill\null +} +\SmartphoneCommand{% +\noindent\hfill\paraone\hfill\paratwo\hfill\null +\par +\noindent\hfill\parathree\hfill\parafour\hfill\null +\par +\noindent\hfill\parafive\hfill\parasix\hfill\null +} +\SmallTabletCommand{% +\vspace*{1.5cm}\par +\noindent\hfill\paraone\hfill\paratwo\hfill\null +\par +\noindent\hfill\parathree\hfill\parafour\hfill\null +\par +\noindent\hfill\parafive\hfill\parasix\hfill\null +} +\figcaption{}\label{figracines} +\end{figure} +} + +\begin{proof} +Examinons successivement les trois cas du théorème. +\begin{itemize} +\item Si $\Delta<0$, le résultat provient d'une remarque déjà faite : dans ce cas, la fonction $P$ possède un minimum strictement positif si $a>0$ ou un maximum strictement négatif si $a<0$. +\item Si $\Delta=0$, on a +\[ +P(x)=a\left(x+\frac{b}{2a}\right)^2. +\] +% La fonction $P$ admet donc $0$ pour minimum lorsque $a>0$ ou pour maximum lorsque $a>0$. Dans les deux cas cet extrémum n'est atteint qu'une fois en $-b/(2a)$. +Le résultat annoncé se déduit du tableau de signes +\[\begin{array}{c|ccccc} +\hline +x&-\infty&&-b/(2a)&&\infty\\ +\hline +\sgn\bigl(\bigl(x+\frac{b}{2a}\bigr)^2\bigr)&&1&0&1&\\ +\hline +\sgn(P(x))&&\sgn(a)&0&\sgn(a)&\\ +\hline +\end{array}\] +\item Si $\Delta>0$, on constate, en se référant à l'expression des racines $\alpha$ et $\beta$ dans théorème \ref{thfactor}, que $\alpha$ est la plus grande des deux racines si $a>0$ et la plus petite si $a<0$. En posant +\begin{align*}\alpha'=\min(\alpha,\beta)&\text{ et }\beta'=\max(\alpha,\beta),\\ +\intertext{on obtient} +P(x)=a(x-\alpha')(x-\beta'),\quad&\text{ avec $\alpha'<\beta'$}. +\end{align*} +On établit alors le tableau de signes +{\SmartphoneCommand{\small} +\[\begin{array}{c|ccccccc} +\hline +x&-\infty&&\alpha'&&\beta'&&\infty\\ +\hline +\sgn(x-\alpha')&&-1&0&1&1&1&\\ +\hline +\sgn(x-\beta')&&-1&-1&-1&0&1&\\ +\hline +\sgn(P(x))&&\sgn(a)&0&\sgn(-a)&0&\sgn(a)&\\ +\hline +\end{array} +\]} +Le résultat annoncé s'en déduit.\qedhere +\end{itemize} +\end{proof} + +\begin{example}[Exemples] +\begin{enumerate} +\item Résoudre $x^2-x-6≤0$ : le discriminant vaut $\Delta=1+24=25$. Il existe deux racines qui sont $-2$ et $3$. On veut que $x^2-x-6$ soit négatif donc nul ou du signe de~$-a$ : cela se produit aux racines ou à l'intérieur de l'intervalle des racines. L'ensemble des solutions est $\symcal{S}=[-2,3]$. + +On aurait pu également, une fois les racines calculées, utiliser la forme factorisée du polynôme $P(x)=x^2-x-6$. Ainsi $P(x)=(x+2)(x-3)$, d'où le tableau de signes : +\[\begin{array}{c|ccccccc} +\hline +x&-\infty&&\quad-2\quad&&\quad3\quad&&\infty\\ +\hline +\sgn(x+2)&&-1&0&1&1&1&\\ +\hline +\sgn(x-3)&&-1&-1&-1&0&1&\\ +\hline +\sgn(P(x))&&1&0&-1&0&1&\\ +\hline +\end{array} +\] +On retrouve la solution donnée par la première méthode. + +\item Résoudre $(2x-6)^2>0$ : ce carré est positif pour tout $x\in\R$ et s'annule si et seulement si $x=3$. Par conséquent, l'ensemble des solutions de cette inéquation est $\symcal{S}=\R\smallsetminus\{3\}$. Si l'on avait eu la très mauvaise idée de développer pour calculer le discriminant, on aurait trouvé $\Delta=0$ et une racine double égale à $3$. +\item Résoudre $3x^2-4x-1≥0$ : c'est l'occasion d'utiliser le discriminant réduit. + +On trouve $\Delta'=4+3=7$. +Il existe deux racines : +\[ +\alpha=\frac{2+\sqrt{7}}{3}\quad\text{et}\quad\beta=\frac{2-\sqrt{7}}{3}. +\] +On veut que $3x^2-4x-1$ soit positif, donc nul ou du signe de $a$ : cela se produit aux racines ou à l'extérieur de l'intervalle des racines. L'ensemble des solutions est donc +\[ +\symcal{S}=\left]-\infty, \beta\right] \cup \left[\alpha, \infty\right[. +\] +\item Résoudre $5x-2x^2>0$. La factorisation se fait à vue : +\[ +5x-2x^2=-2x\left(x-\frac52\right), +\] + il y a donc deux racines : $\alpha=0$ et $\beta=5/2$. + +On peut ensuite soit faire un tableau de signes, soit utiliser le théorème \ref{thsgn}, ce que nous ferons ici. +On veut que $5x-2x^2$ soit strictement positif, donc du signe de $-a$ : cela se produit si et seulement si $x$ est à l'intérieur de l'intervalle des racines. L'ensemble des solutions est donc +$\symcal{S}=\left]0,\, 5/2\right[$. +\item Résoudre $x^2-x+1>0$ : on trouve $\Delta=-3$. Il n'y a pas de racines, donc $x^2-x+1$ admet pour signe $1$ pour tout $x\in\R$. Tout $x$ réel est donc solution : l'ensemble des solutions est $\symcal{S}=\R$. +\end{enumerate} +\end{example} +\section{Somme et produit des racines} +\subsection{Expression de la somme et du produit des racines} +On suppose ici que $\Delta≥0$, c'est-à-dire que le polynôme $P$ deux racines $\alpha$ et $\beta$, confondues en une racine double au cas où $\Delta=0$. On a le théorème suivant: +\begin{thm}\label{thsomprod}% +Soit $P$, la fonction polynôme de degré 2 définie sur $\R$ par $P(x)=ax^2+bx+c$. Si le discriminant $\Delta$ de $P$ est positif, la somme et le produit des racines de $P$ sont données par +\[ +\alpha+\beta=-\frac{b}{a} \quad\text{et}\quad \alpha\beta=\frac{c}{a}\:. +\] +\end{thm} + +\begin{remark} +On sait que si $\Delta=0$, on a $\alpha=\beta=-b/(2a)$. On retrouve bien +\[\alpha+\beta=2\times\left(-\frac{b}{2a}\right)=-\frac{b}{a}\;;\] +on remarque également que, puisque $\Delta=0$, on a $b^2=4ac$ et par conséquent +\[ +\alpha\beta=\left(-\frac{b}{2a}\right)^2=\frac{b^2}{4a^2}=\frac{4ac}{4a^2}=\frac{c}{a}\:. +\] +\end{remark} + +\begin{proof}On utilise la forme factorisée de $P(x)$ : +\begin{align*} +\forall x\in\R,\;P(x)&=a(x-\alpha)(x-\beta),\\ +&=a(x^2-\alpha x-\beta x +\alpha\beta),\\ +&=a\left(x^2-(\alpha+\beta)x+\alpha\beta\right),\\ +&=ax^2-a(\alpha+\beta)x +a\alpha\beta. +\end{align*} + +D'après le théorème \ref{thunicite}, on peut identifier les coefficients : $-a(\alpha+\beta)=b$ et $a\alpha\beta=c$. Le résultat annoncé en découle immédiatement. +\end{proof} +\subsubsection{Racine apparente ou connue} +On dit que $\alpha$ est une \frquote{racine apparente} (on dit également \frquote{évidente}) du polynôme $P$ lorsqu'un simple calcul à vue permet de montrer que $P(\alpha)=0$. On parle de racine connue lorsqu'un calcul antérieur a permis d'établir cette égalité. Dans une telle situation, il est facile de déterminer $\beta$, l'autre racine de $P$, grâce à la somme ou au produit : +\[ + \beta=-\frac{b}{a}-\alpha \quad \text{ou (dans le cas où $\alpha\neq0$)}\quad\beta=\frac{c}{a\alpha}. +\] +\begin{example}[Exemples] +\begin{enumerate} +\item Factoriser le polynôme $P$, défini sur $\R$ par $P(x)=3x^2+9x+6$. Un calcul immédiat montre que $P(-1)=0$ : le réel $-1$ est donc racine de $P$, tandis que l'autre racine $\beta$ vérifie~\mbox{$-1\times\beta=6/3=2$}. D'où $\beta=-2$ et la factorisation : \[P(x)=3(x+1)(x+2).\] +\item On pose $Q(x)=2x^2-13x+15$. Calculer $Q(5)$ et résoudre l'équation $Q(x)=0$. On trouve $Q(5)=0$ : le réel $5$ est donc racine de $Q$. L'autre racine vérifie $5+\beta=6{,}5$, d'où $\beta=1{,}5$ : l'ensemble des solutions de l'équation proposée est \[\symcal{S}=\left\{5, \frac32\right\}\,.\] + +\end{enumerate} +\end{example} + +\subsection{Trouver deux nombres connaissant leur somme et leur produit} + +\begin{thm} +Deux réels $s$ et $p$ étant donnés, il existe deux nombres réels $\alpha$ et $\beta$ dont la somme vaut $s$ et le produit $p$ si et seulement si le nombre $\Delta=s^2-4p$ est positif. Dans ce cas, les nombres $\alpha$ et $\beta$ sont les racines de la fonction polynôme de degré $2$ définie par $P(x)=x^2-sx+p$, de discriminant $\Delta$. +\end{thm} +\begin{proof} +\begin{itemize} +\item Tout d'abord, si $s^2-4p≥0$, la fonction polynôme $P$, de discriminant $\Delta=s^2-4p$ admet deux racines dont la somme est $s$ et le produit $p$ d'après le théorème \ref{thsomprod}. + +\item Réciproquement, s'il existe deux nombres $\alpha$ et $\beta$ tels que +\[ +\alpha+\beta=s \quad\text{et}\quad \alpha\beta=p, +\] +on a, d'après la première équation, $\beta=s-\alpha$, puis en substituant dans la seconde +\[\alpha(s-\alpha)=p\quad\text{soit}\quad\alpha^2-s\alpha+p=0,\] +c'est-à-dire $P(\alpha)=0$. + +Il est donc nécessaire que $\alpha$ soit une racine de $P$, ce qui entraîne que le discriminant $s^2-4p$ soit positif. Enfin, la relation $\beta=s-\alpha$ entraîne que $\beta$ est alors la seconde racine de $P$.\qedhere +\end{itemize} +\end{proof} +\begin{example}[Exemples] +\begin{enumerate} +\item Trouver deux nombres dont la somme vaut $1$ et le produit $-12$. Ces deux nombres doivent être racines de $x^2+x-12$ dont le discriminant est $49$ et qui admet $-3$ et $4$ pour racines. Les deux nombres cherchés sont donc $-3$ et $4$. +\item Trouver deux nombres dont la somme vaut $6$ et le produit $9$. On forme le polynôme $x^2-6x+9$, égal à $(x-3)^2$, dont le discriminant est nul et qui admet $3$ pour racine double : les nombres $\alpha$ et $\beta$ dont le produit vaut $9$ et la somme $6$ sont tous deux égaux à $3$. +\item Trouver deux nombres dont la somme vaut $s=5$ et le produit $p=8$. On calcule $s^2-4p=-7$ : le problème n'a pas de solution (tout comme le polynôme $x^2-5x+8$ n'admet pas de racines). +\end{enumerate} +\end{example} +\endinput + diff --git a/macros/luatex/latex/tango/examples/puissance-cercle.tex b/macros/luatex/latex/tango/examples/puissance-cercle.tex new file mode 100644 index 0000000000..0263bcb20f --- /dev/null +++ b/macros/luatex/latex/tango/examples/puissance-cercle.tex @@ -0,0 +1,713 @@ +\tgotitle{Puissance d'un point par rapport à un cercle} + +\section{Mesure algébrique} +On définit la mesure algébrique d'un bipoint~$(A,B)$ dans un repère de la droite~$(AB)$ comme la différence des abscisses $x_B-x_A$ (voir figure~\ref{figmesalg}). Dans le contexte euclidien qui nous intéresse ici, les repères des droites sont normés : la mesure algébrique ne dépend que de l'orientation de la droite (elle est définie \frquote{au signe près}). On notera cependant que le produit ou le quotient de deux mesures algébriques sont quant à eux indépendants du choix du repère, puisqu'en cas de changement d'orientation les signes des deux quantités considérées changent simultanément. + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=above:$A$] (A) at (-1.3,0); +\coordinate [label=below:$x_A$] (xA) at (-1.3,0); +\coordinate[label=above:$B$] (B) at (1.7,0); +\coordinate [label=below:$x_B$] (xB) at (1.7,0); +\coordinate (Z) at ($(A)!1.1!(B)$); +\coordinate (T) at ($(B)!1.1!(A)$); +\draw (Z)--(T); +\node[below] at ($(A)!0.5!(B)$){$\mesalg{AB}=x_B-x_A$}; +\foreach \point in {A,B} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figmesalg} +\end{figure} + +De la définition qui vient d'être donnée, on déduit immédiatement que : +\begin{itemize} +\item Pour tout point $A$, $\mesalg{AA}=0$. +\item Pour tout couple de points $A$ et $B$, $\mesalg{BA}$ et $\mesalg{AB}$ sont deux nombres opposés. +\end{itemize} +Plus généralement, on peut énoncer le +\begin{thm}\label{thchasles}% +Soit $A$, $B$ et $C$ trois points donnés sur une droite dans un ordre quelconque. On a l'égalité suivante (relation de Chasles pour les mesures algébriques) +\[\mesalg{AC}=\mesalg{AB}+\mesalg{BC}.\] +\end{thm} + +\begin{proof} La vérification est immédiate. +\begin{align*}\mesalg{AB}+\mesalg{BC}&=(x_B-x_A)+(x_C-x_B),\\ +&=x_C-x_A,\\ +&=\mesalg{AC}.\qedhere +\end{align*} +\end{proof} + +Nous donnons maintenant deux compléments sur la notion de mesure algébrique, qui faciliteront la compréhension de la suite. + +\begin{remark}[Lien avec le produit d'un vecteur par un réel] +La notion de mesure algébrique est fortement liée à celle de produit d'un vecteur par un réel. Si $O$ et $A$ sont deux points distincts, $\lambda$ un réel et $M$ un point quelconque du plan, on a l'équivalence +\[ +(\Vector{OM}=\lambda\Vector{OA})\iff(M\in (OA) \text{ et }\mesalg{OM}=\lambda\mesalg{OA}). +\] +Il s'en déduit que le milieu $I$ d'un segment $[AB]$ peut être caractérisé par des relations entre mesures algébriques, qu'il est parfois intéressant de substituer aux égalités vectorielles correspondantes : +\begin{align} +I \text{ est le milieu de }[AB]&\iff \mesalg{AI}=\mesalg{IB}=\frac12\mesalg{AB},\\ +&\iff\mesalg{IA}+\mesalg{IB}=0.\label{eqcaracmilieu} +\end{align} +\end{remark} + +\begin{remark}[Lien avec le produit scalaire] +La mesure algébrique peut également intervenir dans l'expression du cosinus d'un angle et du produit scalaire. Précisément, si $A$ et $B$ sont deux points tous deux distincts du point $O$, le produit scalaire $\Vector{OA}\cdot\Vector{OB}$ peut être défini par +\begin{equation}\Vector{OA}\cdot\Vector{OB}=OA\times OB\times \cos(\widehat{AOB}).\label{pscal1} +\end{equation} +%\[ +%\Vector{OA}\cdot\Vector{OB}=OA\times OB\times \rho([OA),[OB)), +%\] +%où $\rho([OA),[OB))$ désigne le rapport de projection orthogonale de la demi-droite $[OB)$ sur la demi-droite $[OA)$. + +On désigne par $H$ le projeté orthogonal de $B$ sur la \emph{droite} $(OA)$. +La définition~\eqref{pscal1} permet d'affirmer que le produit scalaire $\Vector{OA}\cdot\Vector{OB}$ est de même signe que $\cos(\widehat{AOB})$, soit positif, si l'angle $\widehat{AOB}$ est aigu et négatif si cet angle est obtus. Le point $H$ appartient dans ce dernier cas à la demi-droite opposée à $[OA)$ (voir figure~\ref{figpscal0}). On a donc : +\begin{equation*} +\cos(\widehat{AOB})= +\begin{cases} +\hphantom{-}OH/OB&\text{si $\widehat{AOB}$ est aigu},\\ +-OH/OB&\text{si $\widehat{AOB}$ est obtus}.\\ +\end{cases} +\end{equation*} + +%\[\cos(\widehat{AOB})=\frac{\mesalg{OH}}{\mesalg{OB}}.\] +En reportant dans~\eqref{pscal1} et en simplifiant par $OB$, on obtient une autre expression du produit scalaire : +\begin{equation*} +\Vector{OA}\cdot\Vector{OB}= +\begin{cases} +\hphantom{-}OA\times OH&\text{si $\widehat{AOB}$ est aigu},\\ +-OA\times OH&\text{si $\widehat{AOB}$ est obtus}. +\end{cases}%\label{pscal0} +\end{equation*} + + + +On remarque alors que les demi-droites $[OA)$ et $[OH)$ sont de même sens si $\widehat{AOB}$ est aigu, et de sens contraire si $\widehat{AOB}$ est obtus. D'où une expression du produit scalaire utilisant les mesures algébriques : +\begin{equation} +\Vector{OA}\cdot\Vector{OB}=\mesalg{OA}\times\mesalg{OH}.\label{pscal0} +\end{equation} + +%\dinofig{\figcaption{}\label{figpscal0}} +\XSmartphoneCommand{ +\begin{figure}[ht] +\hfill +\begin{tikzpicture} +\coordinate[label=left:$O$] (O) at (0,0); +\coordinate(X) at (1,0); +\coordinate[label=below:$B$](B) at ($(O)!3!350:(X)$); +\coordinate(Y) at ($(O)!0.5!(B)$); +\coordinate[label=above:$H$](H) at ($(Y)!1!50:(B)$); +\coordinate[label=right:$A$](A) at ($(O)!1.3!(H)$); +\draw[semithick,->] (O)--(B); +\draw[semithick,->] (O)--(A); +\draw[dashed](B)--(H); +\foreach \point in {O,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\hfill\hfill +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (0,0); +\coordinate(X) at (1,0); +\coordinate[label=above:$B$](B) at ($(O)!2.9!160:(X)$); +\coordinate(Y) at ($(O)!0.5!(B)$); +\coordinate[label=below:$H$](H) at ($(Y)!1!50:(B)$); +\coordinate(Z) at ($(O)!1.2!(H)$); +\coordinate[label=above:$A$](A) at ($(O)!-0.6!(H)$); +\draw[semithick,->] (O)--(B); +\draw[semithick,->] (O)--(A); +\draw(O)--(Z); +\draw[dashed](B)--(H); +\foreach \point in {O,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\hfill\null +\figcaption{}\label{figpscal0} +\end{figure} +} +\SmartphoneCommand{ +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$O$] (O) at (0,0); +\coordinate(X) at (1,0); +\coordinate[label=below:$B$](B) at ($(O)!3!350:(X)$); +\coordinate(Y) at ($(O)!0.5!(B)$); +\coordinate[label=above:$H$](H) at ($(Y)!1!50:(B)$); +\coordinate[label=right:$A$](A) at ($(O)!1.3!(H)$); +\draw[semithick,->] (O)--(B); +\draw[semithick,->] (O)--(A); +\draw[dashed](B)--(H); +\foreach \point in {O,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\\[1ex] +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (0,0); +\coordinate(X) at (1,0); +\coordinate[label=above:$B$](B) at ($(O)!2.9!160:(X)$); +\coordinate(Y) at ($(O)!0.5!(B)$); +\coordinate[label=below:$H$](H) at ($(Y)!1!50:(B)$); +\coordinate(Z) at ($(O)!1.2!(H)$); +\coordinate[label=above:$A$](A) at ($(O)!-0.6!(H)$); +\draw[semithick,->] (O)--(B); +\draw[semithick,->] (O)--(A); +\draw(O)--(Z); +\draw[dashed](B)--(H); +\foreach \point in {O,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figpscal0} +\end{figure} +} +\begin{example}[Remarques] +\begin{enumerate} +\item L'angle noté $\widehat{AOB}$ est un angle \emph{non orienté} de demi-droites ; autrement dit, il n'y a pas lieu de distinguer $\widehat{AOB}$ et $\widehat{BOA}$. Il en découle que le produit scalaire est commutatif (le terme \frquote{symétrique} serait sans doute plus adapté). + +On aurait donc pu tout aussi bien utiliser le projeté de $A$ sur $(OB)$. +\item L'indépendance du cosinus par rapport à l'ordre des deux demi droites $[OA)$ et $[OB)$ provient de ce que $\cos(\widehat{AOB})$ est égal au rapport de projection orthogonale, noté $\rho([OA),[OB))$, de la demi-droite $[OB)$ sur la demi-droite $[OA)$. On sait en effet (c'est en général considéré comme un des axiomes de la géométrie plane) que +\[\rho([OA),[OB))=\rho([OB),[OA)).\] + + \item Lorsque les points $A$ et $B$ sont confondus, on a + \begin{align*} + \Vector{OA}\cdot\Vector{OB}&=\Vector{OA}\cdot\Vector{OA},\\ + &=OA^2\times \cos(\widehat{AOA}). + \end{align*} + L'angle $\widehat{AOA}$ est nul : on a donc $\cos(\widehat{AOA})=1$ d'où finalement + \begin{equation} +\Vector{OA}\cdot\Vector{OA}=\bigl({\Vector{OA}}\bigr)^2=OA^2.\label{eqcarres} +\end{equation} +\end{enumerate} +\end{example} +\end{remark} + +\section{Point et cercle} +\subsection{Une définition} +Étant donné un cercle $\symcal{C}$, de centre $O$ et de rayon $r$, et un point $P$ quelconque, la puissance du point $P$ par rapport au cercle $\symcal{C}$ est par définition le nombre +\[\symcal{C}(P)=OP^2-r^2 \text{ (voir figure~\ref{figdefppc})}.\] + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (2,0); +\coordinate(X) at (3,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=right:$P$] (P) at ($(O)!3.2!15:(X)$); +\coordinate[label=right:$A$](A) at ($(O)!1!312:(X)$); +\draw[semithick](P)--(O)--(A); +\node[right] at (X){$\symcal{C}(P)=OP^2-OA^2$}; +\node[right=1.3cm,below=1mm] at (X){$\text{pour tout }A\in\symcal{C}$}; +\foreach \point in {P,O,A} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figdefppc} +\end{figure} + +Par conséquent, la puissance d'un point $P$ par rapport à un cercle est : +\begin{itemize} +\item strictement positive si le point $P$ est extérieur au cercle; +\item nulle si le point $P$ appartient au cercle; +\item strictement négative et au minimum égale à $-r^2$ si le point $P$ est intérieur au cercle. +\end{itemize} + +\subsection{Avec une tangente}\label{subsectangente} +On se place ici dans le cas où le point $P$ est extérieur au cercle. Il est alors possible de s'intéresser aux tangentes issues de $P$. +\begin{thm} +Soit un cercle $\symcal{C}$ de centre $O$, un point $P$ extérieur au cercle et $T$ le point de contact de l'une des tangentes à $\symcal{C}$ issues de $P$. La puissance de $P$ par rapport à $\symcal{C}$ vaut +\[\symcal{C}(P)=PT^2.\] +\end{thm} + + +\begin{proof} +On pourra se référer à la figure \ref{figtangente}. La droite $(PT)$ étant tangente à $\symcal{C}$, le triangle $OTP$ est rectangle en $T$. D'après le théorème de Pythagore, on a +\[\symcal{C}(P)=OP^2-OT^2=PT^2.\qedhere\] +\end{proof} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=left:$O$] (O) at (2,0); +\coordinate(X) at (3.5,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=right:$P$] (P) at ($(O)!1.7!345:(X)$); +\coordinate(Y) at ($(O)!0.5!(P)$); +\node[draw,dashed] (x) at (Y) [circle through={(P)}]{}; +\coordinate[label=above:$T$](T) at (intersection 2 of c and x); +\draw (P)--(T)--(O)--cycle; +\foreach \point in {P,T,O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figtangente} +\end{figure} + +\subsection{Avec une sécante}\label{subsecsecante} +Le point $P$ est cette fois-ci quelconque. On considère alors une droite sécante au cercle et passant par $P$ (voir la figure \ref{figsecante}). +\begin{thm} +Soit un cercle $\symcal{C}$ de centre $O$, un point $P$ quelconque et une droite passant par $P$ sécante au cercle en $A$ et $B$. La puissance de $P$ par rapport à $\symcal{C}$ vaut alors +\[\symcal{C}(P)=\mesalg{PA}\times\mesalg{PB}.\] +\end{thm} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (2,0); +\coordinate(X) at (3.5,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=left:$A$] (A) at ($(O)!1!155:(X)$); +\coordinate(A') at ($(A)!2!(O)$); +\coordinate[label=right:$P$] (P) at ($(O)!1.8!35:(X)$); +\coordinate(Z) at ($(A')!0.5!(P)$); +\node (x) at (Z) [circle through={(P)}]{}; +\coordinate[label=above:$B$](B) at (intersection 2 of c and x); +\coordinate[label=above:$I$](I) at ($(A)!0.5!(B)$); +\draw (P)--(B)--(I)--(A); +\draw(A)--(O)--(B); +\draw(P)--(O)--(I); +\foreach \point in {A,P,B,O,I} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figsecante} +\end{figure} + +\begin{proof} +Soit $I$ le milieu de $[AB]$ : $AOB$ étant isocèle en $O$, la droite $(OI)$ est la médiatrice de $[AB]$. Les triangles $OIP$ et $OIA$ sont rectangles en $I$. On a donc $OP^2=OI^2+IP^2$ et $OA^2=OI^2+IA^2$. + + Par conséquent, +\begin{align*} +\symcal{C}(P)&=PO^2-OA^2,\\ +&=(OI^2+IP^2)-(OI^2+IA^2),\\ +\intertext{soit en réduisant,} +\symcal{C}(P)&=IP^2-IA^2,\\ +\intertext{puis en utilisant une identité remarquable et les égalités~\eqref{eqcarres} et~\eqref{eqcaracmilieu}} +\symcal{C}(P)&=\mesalg{PI}^2-\mesalg{IA}^2,\\ +&=(\mesalg{PI}+\mesalg{IA})(\mesalg{PI}-\mesalg{IA}),\\ +&=(\mesalg{PI}+\mesalg{IA})(\mesalg{PI}+\mesalg{IB}),\\ +\intertext{et enfin, grâce au théorème~\ref{thchasles}} +\symcal{C}(P)&=\mesalg{PA}\times\mesalg{PB}.\qedhere +\end{align*} + +\end{proof} + +\begin{example}[Remarques] +\begin{enumerate} +\item Il est remarquable que la quantité $\mesalg{PA}\times\mesalg{PB}$ ne dépende pas de la sécante choisie : autrement dit, si deux sécantes passant par $P$ coupent le cercle respectivement en $A$ et $B$ et en $C$ et $D$, alors +\[\mesalg{PA}\times\mesalg{PB}=\mesalg{PC}\times\mesalg{PD}.\] +\item Si $P$ est intérieur au cercle, les demi-droites $[PA)$ et $[PB)$ sont de sens contraires : on retrouve le fait que $\symcal{C}(P)$ est dans ce cas négatif. +\item Une tangente issue de $P$, comme on l'a évoqué en \ref{subsectangente}, peut être considérée comme une position limite d'une sécante pivotant autour de $P$, les points $A$ et $B$ étant alors confondus en $T$ : on aura bien de ce point de vue $\mesalg{PA}\times\mesalg{PB}=PT^2$. +\end{enumerate} +\end{example} + +\subsection{Utilisation du produit scalaire} +On utilise ici la relation~\eqref{pscal0} pour donner une autre expression de la puissance d'un point par rapport à un cercle (voir figure~\ref{figpscal2}). +\begin{thm} +Soit un cercle $\symcal{C}$ de centre $O$, un point $P$ quelconque, et deux points de $\symcal{C}$ diamétralement opposés $A_1$ et $A_2$. La puissance de $P$ par rapport à $\symcal{C}$ vaut alors +\[\symcal{C}(P)=\Vector{PA_1}\cdot\Vector{PA_2}.\] +\end{thm} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (2,0); +\coordinate(X) at (3.5,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=left:$A_1$] (A) at ($(O)!1!160:(X)$); +\coordinate[label=right:$A_2$] (A') at ($(A)!2!(O)$); +\coordinate[label=right:$P$] (P) at ($(O)!2.2!32:(X)$); +\coordinate(Z) at ($(A')!0.5!(P)$); +\node (x) at (Z) [circle through={(P)}]{}; +\coordinate[label=above:$B$](B) at (intersection 2 of c and x); +\draw [semithick,->](P)--(A); +\draw[semithick,->](P)--(A'); +\draw(A')--(B); +\foreach \point in {P,B,O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figpscal2} +\end{figure} + +\begin{proof}%\sloppy +Tout d'abord, les droites $(PA_1)$ et $(PA_2)$ ne peuvent être toutes les deux tangentes à $\symcal{C}$ : en effet, deux tangentes en des points diamétralement opposés sont parallèles disjointes et ne peuvent avoir le point $P$ en commun. Quitte à permuter $A_1$ et $A_2$, il n'est donc pas restrictif de supposer que la droite $(PA_1)$ est sécante (et non tangente) à $\symcal{C}$. + +Soit alors $B$ la seconde intersection de la droite $(PA_1)$ avec le cercle. Le segment $[A_1A_2]$ étant un diamètre du cercle, le point $B$ est le projeté orthogonal de $A_2$ sur $(PA_1)$. On a donc d'après \ref{subsectangente} +\begin{align*} +\symcal{C}(P)&=\mesalg{PA_1}\times\mesalg{PB},\\ +&=\Vector{PA_1}\cdot\Vector{PA_2}.\qedhere +\end{align*} +\end{proof} + + +\begin{remark} +On se persuadera facilement, en observant la figure \ref{figpscal3}, que le raisonnement précédent est indépendant de la position de $P$ par rapport au cercle. +\end{remark} +%\dinofig[-0.5]{\figcaption{}\label{figpscal3}} + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O$] (O) at (2,0); +\coordinate(X) at (3.5,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=left:$A_1$] (A) at ($(O)!1!160:(X)$); +\coordinate[label=right:$A_2$] (A') at ($(A)!2!(O)$); +\coordinate[label=above:$P$] (P) at ($(O)!0.6!70:(X)$); +\coordinate(Z) at ($(A')!0.5!(P)$); +\node (x) at (Z) [circle through={(P)}]{}; +\coordinate[label=above:$B$](B) at (intersection 2 of c and x); +\draw [semithick,->](P)--(A); +\draw[semithick,->](P)--(A'); +\draw(P)--(B); +\draw(A')--(B); +\foreach \point in {P,B,O} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figpscal3} +\end{figure} + +\subsection{Dans un repère orthonormal} +On se place ici dans un repère orthonormal et l'on considère un cercle $\symcal{C}$ de centre $\Omega(a,b)$ et de rayon $r$. On s'intéresse alors à l'expression de la puissance d'un point $M(x,y)$ quelconque par rapport au cercle $\symcal{C}$. +\begin{thm}\label{threp} +Soit dans le plan rapporté à un repère orthonormal un cercle $\symcal{C}$ de centre $\Omega(a,b)$ et de rayon $r$. Soit un point $M(x,y)$. La puissance de $M$ par rapport à $\symcal{C}$ est +\[\symcal{C}(M) = x^2+y^2-2ax-2by+a^2+b^2-r^2.\] +\end{thm} + +\begin{proof} +On a +\begin{align*}\symcal{C}(M)&=\Omega M^2-r^2\\ +&={(x-a)}^2+{(y-b)}^2-r^2,\\ +&=x^2-2ax+a^2+y^2-2by+b^2-r^2.\qedhere +\end{align*} +\end{proof} + +De plus, en remarquant que $M\in\symcal{C}$ si et seulement si la puissance de $M$ par rapport à $\symcal{C}$ est nulle, on établit le corollaire suivant : +%\DinoAfourNBCommand{\par\pagebreak} +\begin{coro*} +Dans le plan rapporté à un repère orthonormal, le cercle $\symcal{C}$ de centre $\Omega(a,b)$ et de rayon $r$ admet pour équation +\[x^2+y^2-2ax-2by+c=0,\] +où $c=a^2+b^2-r^2$. +\end{coro*} + +\section{Cocyclicité} +On dit que quatre points distincts sont cocycliques s'ils appartiennent à un même cercle (un tel cercle est évidemment unique : ce que l'on affirme en disant que les points sont cocycliques est que cercle circonscrit au triangle formé par trois quelconques de ces points passe par le quatrième). On se propose d'établir le théorème suivant (voir figure~\ref{figcocy}). + +\begin{thm} Soit quatre points distincts $A$, $B$, $C$ et $D$ tels que les droites $(AB)$ et $(CD)$ soient sécantes en $P$. Les points $A$, $B$, $C$, $D$ sont cocycliques si et seulement si +\[\mesalg{PA}\times\mesalg{PB}=\mesalg{PC}\times\mesalg{PD}.\] +\end{thm} + +%\dinofig{\figcaption{}\label{figcocy}} +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate (O) at (2,0); +\coordinate(X) at (4,0); +\node[draw,label=above:$\symcal{C}$] (c) at (O) [circle through={(X)}]{}; +\coordinate[label=left:$A$] (A) at ($(O)!1!140:(X)$); +\coordinate[label=below:$B$] (B) at ($(O)!1!310:(X)$); +\coordinate[label=left:$C$] (C) at ($(O)!1!210:(X)$); +\coordinate[label=above:$D$] (D) at ($(O)!1!65:(X)$); +\coordinate[label=right:$\kern3pt P$](P) at (intersection of A--B and C--D); +\draw(A)--(B); +\draw(C)--(D); +\foreach \point in {A,B,C,D,P} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figcocy} +\end{figure} + +\begin{proof} +Il s'agit de démontrer une équivalence. Nous procéderons donc classiquement en deux temps : d'abord le sens direct, puis la réciproque. + +Supposons pour commencer que les points $A$, $B$, $C$, $D$ soient sur un même cercle $\symcal{C}$. Alors les droites $(AB)$ et $(CD)$ étant des sécantes au cercle contenant chacune le point $P$, on a +\[\symcal{C}(P)=\mesalg{PA}\times\mesalg{PB}=\mesalg{PC}\times\mesalg{PD}.\] + +Réciproquement, supposons que $\mesalg{PA}\times\mesalg{PB}=\mesalg{PC}\times\mesalg{PD}$. Soit alors $\symcal{C}\;$ le cercle circonscrit au triangle $ABC$ : il nous suffit de prouver que $D\in\symcal{C}$. La droite $(CD)$ coupe le cercle en $C$ et en un second point $M$ tel que +\begin{align*}\mesalg{PC}\times\mesalg{PM}&=\symcal{C}(P)\\ +&=\mesalg{PA}\times\mesalg{PB}\\ +&=\mesalg{PC}\times\mesalg{PD}, \text{ par hypothèse.} +\end{align*} +On en déduit que $\mesalg{PD}=\mesalg{PM}$, donc que $D=M$ ($P$ ne peut être confondu avec $C$, car alors il serait lui même confondu avec $A$ ou $B$). +\end{proof} + + +\section{Axe radical de deux cercles} + +\subsection{Définition} +On s'intéresse ici à l'ensemble des points qui ont même puissance par rapport à deux cercles non concentriques donnés. + +\begin{thm} +Étant donné deux cercles non concentriques $\symcal{C}_1$ et $\symcal{C}_2$ de centres et de rayons respectifs $(O_1,r_1)$ et $(O_2,r_2)$, l'ensemble des points qui ont la même puissance par rapport à chacun des cercles est une droite $\Delta$ perpendiculaire à $(O_1O_2)$, nommée \emph{axe radical} des deux cercles. +\end{thm} + +%\dinofig{\figcaption{}\label{figaxerad0}} +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\clip (0.3,-1.3) rectangle (5.1,1.9); +\coordinate[label=below:$O_1$] (O1) at (1,0); +\coordinate(X1) at (1.6,0); +\node[draw,label=above:$\symcal{C_1}$] (c1) at (O1) [circle through={(X1)}]{}; +\coordinate[label=below:$O_2$] (O2) at (3.8,0); +\coordinate[label=below:$I$] (I) at ($(O1)!0.5!(O2)$); +\coordinate(X2) at (5,0); +\node[draw,label=above:$\symcal{C_2}$] (c2) at (O2) [circle through={(X2)}]{}; +\coordinate(Y1) at ($(O1)!-1.2!(X1)$); +\coordinate(Y2) at ($(O2)!1.1!(X2)$); +\draw (Y1)--(Y2); +\coordinate(Y) at (2,-1); +\coordinate(U) at (2,0.5); +\node (x) at (Y) [circle through={(U)}]{}; +\coordinate(Z1) at (intersection 1 of c1 and x); +\coordinate(T1) at (intersection 2 of c1 and x); +\coordinate(Z2) at (intersection 1 of c2 and x); +\coordinate(T2) at (intersection 2 of c2 and x); +\coordinate[label=left:$M$](M) at (intersection of Z1--T1 and Z2--T2); +\coordinate(W1) at ($(O1)!0.5!(M)$); +\coordinate(W2) at ($(O2)!0.5!(M)$); +\node (w1) at (W1) [circle through={(M)}]{}; +\node(w2) at (W2) [circle through={(M)}]{}; +\coordinate[label=below:$H\kern13pt$](H) at (intersection 1 of w1 and w2); +\coordinate[label=left:$\Delta$](V1) at ($(H)!1.5!(M)$); +\coordinate(V2) at ($(H)!-1.1!(M)$); +\draw[semithick](V1)--(V2); +\foreach \point in {O1,O2,I,M,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figaxerad0} +\end{figure} + +\begin{remark} +Si les deux cercles sont concentriques et distincts, aucun point $M$ du plan n'est tel que $\symcal{C}_1(M)=\symcal{C}_2(M)$, c'est une conséquence immédiate de la définition de la puissance d'un point par rapport à un cercle. +\end{remark} + +\begin{proof} +Soit un point $M$ du plan et $H$ son projeté orthogonal sur la droite $(O_1O_2)$. Nous supposons que $\symcal{C}_1(M)=\symcal{C}_2(M)$ ; nous allons prouver que le point $H$ occupe une position fixe (indépendante de $M$) sur $(O_1O_2)$, ce qui prouvera que $M$ appartient à la perpendiculaire en $H$ à cette droite. Pour nous éviter une réciproque fastidieuse, nous procéderons par équivalence. Désignons par $I$ le milieu de $[O_1O_2]$ et exprimons l'égalité des puissances (voir la figure~\ref{figaxerad0}). +\begin{align*} +\symcal{C}_1(M)=\symcal{C}_2(M) &\iff O_1M^2-r_1^2=O_2M^2-r_2^2,\\ +\intertext{soit, en posant $k=r_1^2-r_2^2$,} +\symcal{C}_1(M)=\symcal{C}_2(M) &\iff O_1M_1^2-O_2M2^2=k,\\ +&\iff (\Vector{O_1M}+\Vector{O_2M})\cdot(\Vector{O_1M}-\Vector{O_2M})=k. +\end{align*} + +On remarque alors que +\begin{equation*} +\Vector{O_1M}+\Vector{O_2M}=\hspace{-0.5em}\underbrace{\Vector{O_1I}+\Vector{O_2I}}_{\substack{\vec{0}\text{, car } I\\\text{milieu de }[O_1O_2]}}\hspace{-0.5em}+\,2\Vector{IM}=2\Vector{IM} +\end{equation*} +et que +\begin{equation*} +\Vector{O_1M}-\Vector{O_2M}=\Vector{O_1M}+\Vector{MO_2}=\Vector{O_1O_2}. +\end{equation*} + +On en déduit +\begin{align*} +\symcal{C}_1(M)=\symcal{C}_2(M) &\iff 2\Vector{IM}\cdot\Vector{O_1O2}=k,\\ +&\iff 2(\underbrace{\Vector{IH}+\Vector{HM}}_{\Vector{IM}})\cdot\Vector{O_1O_2}=k,\\ +&\iff 2\Vector{IH}\cdot\Vector{O_1O_2}+2\underbrace{\Vector{HM}\cdot\Vector{O_1O_2}}_{\substack{0 \text{, car}\\(HM)\perp(O_1O_2)}}=k. +\end{align*} + +Puisque les points $I$, $H$, $O_1$ et $O_2$ sont sur la même droite, on peut passer aux mesures algébriques, et on obtient finalement : +\begin{align} +\symcal{C}_1(M)=\symcal{C}_2(M)&\iff 2\mesalg{IH}\cdot\mesalg{O_1O_2}=k,\notag\\ +&\iff\mesalg{IH}=\frac{r_1^2-r_2^2}{2\mesalg{O_1O_2}}.\label{eqposH} +\end{align} + + +On en déduit que $\symcal{C}_1(M)=\symcal{C}_2(M)$ si et seulement si le projeté orthogonal $H$ de $M$ sur $(O_1O_2)$ occupe la position (fixe) définie par la relation~\eqref{eqposH}. L'ensemble des points $M$ est donc la droite $\Delta$ perpendiculaire à $(O_1O_2)$ passant par $H$. +\end{proof} + +\subsection{Détermination pratique}\label{subsecdetprat} +On s'intéresse ici à la position relative des cercles $\symcal{C_1}$ et $\symcal{C_2}$. +\subsubsection{Cercles sécants} +Supposons que les cercles $\symcal{C_1}$ et $\symcal{C_2}$ soient sécants en deux points $A$ et $B$ (voir la figure~\ref{figaxerad1}). On a +\[\symcal{C}_1(A)=\symcal{C}_2(A)=0 \text{ et }\symcal{C}_1(B)=\symcal{C}_2(B)=0 . +\] +Les points $A$ et $B$ ont tous deux la même puissance par rapport à chacun des deux cercles : l'axe radical $\Delta$ de $\symcal{C}_1$ et $\symcal{C}_2$ est donc la droite $(AB)$. + + +%\dinofig{\figcaption{}\label{figaxerad1}} +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O_1$] (O1) at (0.8,0); +\coordinate(X1) at (2,0); +\node[draw,label=above:$\symcal{C_1}$] (c1) at (O1) [circle through={(X1)}]{}; +\coordinate[label=below:$O_2$] (O2) at (3,0); +\coordinate(X2) at (4.8,0); +\node[draw,label=above:$\symcal{C_2}$] (c2) at (O2) [circle through={(X2)}]{}; +\coordinate(Y1) at ($(O1)!-1.2!(X1)$); +\coordinate(Y2) at ($(O2)!1.1!(X2)$); +\draw (Y1)--(Y2); +\coordinate[label=right:$\kern2pt A$](A) at (intersection 2 of c1 and c2); +\coordinate[label=right:$\kern2pt B$](B) at (intersection 1 of c1 and c2); +\coordinate[label=below:$H\kern-13pt$](H) at (intersection of O1--O2 and A--B); +\coordinate[label=left:$\Delta$](V1) at ($(H)!1.7!(A)$); +\coordinate(V2) at ($(H)!1.3!(B)$); +\draw[semithick](V1)--(V2); +\foreach \point in {O1,O2,A,B,H} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figaxerad1} +\end{figure} + +\subsubsection{Cercles tangents} +Supposons que les cercles $\symcal{C_1}$ et $\symcal{C_2}$ soient tangents (intérieurement ou extérieurement) en un point $T$ (voir la figure~\ref{figaxerad2}). On a +$\symcal{C}_1(T)=\symcal{C}_2(T)=0$. +Le point $T$ a la même puissance par rapport à chacun des deux cercles : l'axe radical $\Delta$ de $\symcal{C}_1$ et $\symcal{C}_2$ est donc la droite perpendiculaire en $T$ à $(O_1O_2)$. + +%\dinofig{\figcaption{}\label{figaxerad2}} +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O_1$] (O1) at (1.2,0); +\coordinate[label=below:$\kern10pt T$](T) at (3,0); +\node[draw,label=above:$\symcal{C_1}$] (c1) at (O1) [circle through={(T)}]{}; +\coordinate[label=below:$O_2$] (O2) at (1.8,0); +%\coordinate(X2) at (4.8,0); +\node[draw,label=above:$\symcal{C_2}$] (c2) at (O2) [circle through={(T)}]{}; +\coordinate(Y1) at ($(O1)!-1.3!(T)$); +\coordinate(Y2) at ($(O2)!1.3!(T)$); +\draw (Y1)--(Y2); +\coordinate[label=left:$\Delta$](V1) at ($(T)!1!270:(O1)$); +\coordinate(V2) at ($(T)!1!90:(O1)$); +\draw[semithick](V1)--(V2); +\foreach \point in {O1,O2,T} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figaxerad2} +\end{figure} + + +\subsubsection{Cas général} +Il est toujours possible de tracer un cercle auxiliaire $\Gamma$ sécant à $\symcal{C}_1$ en $A_1$ et $B_1$, à $\symcal{C}_2$ en $A_2$ et $B_2$, et de telle sorte que les droites $(A_1B_1)$ et $(A_2B_2)$ soient elles-mêmes sécantes en un point $P$ (voir la figure~\ref{figaxerad3}). On est ainsi ramené à des constructions ans le cas de cercles sécants. + +Le point $P$ appartient à l'axe radical de $(A_1B_1)$ de $\symcal{C}_1$ et $\Gamma$, donc $\symcal{C}_1(P)=\Gamma(P)$. De même, $\symcal{C}_2(P)=\Gamma(P)$ et par conséquent $\symcal{C}_1(P)=\symcal{C}_2(P)$. Le point $P$ appartient donc à l'axe radical $\Delta$ de $\symcal{C}_1$ et $\symcal{C}_2$ : $\Delta$ est la perpendiculaire à $(O_1O_2)$ passant par $P$. + +\begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate[label=below:$O_1$] (O1) at (0.4,0); +\coordinate(X1) at (1.5,0); +\node[draw,label=above:$\symcal{C_1}$] (c1) at (O1) [circle through={(X1)}]{}; +\coordinate[label=below:$O_2$] (O2) at (3.6,0); +\coordinate(X2) at (5,0); +\node[draw,label=above:$\symcal{C_2}$] (c2) at (O2) [circle through={(X2)}]{}; +\coordinate(Y1) at ($(O1)!-1.2!(X1)$); +\coordinate(Y2) at ($(O2)!1.1!(X2)$); +\draw (Y1)--(Y2); +\coordinate(Y) at (2,-1); +\coordinate(U) at (2,0.5); +\node[draw,label=below:$\kern10pt\Gamma$] (g) at (Y) [circle through={(U)}]{}; +\coordinate[label=left:$A_1${\rule[-8pt]{0pt}{10pt}}](A1) at (intersection 2 of c1 and g); +\coordinate[label=below:$B_1\kern10pt$](B1) at (intersection 1 of c1 and g); +\coordinate[label=right: $A_2${\rule[-8pt]{0pt}{10pt}}](A2) at (intersection 1 of c2 and g); +\coordinate[label=below:$\kern10pt B_2$](B2) at (intersection 2 of c2 and g); +\coordinate[label=left:$P$](P) at (intersection of A1--B1 and A2--B2); +\draw (P)--(B1); +\draw (P)--(B2); +\coordinate(W1) at ($(O1)!0.5!(P)$); +\coordinate(W2) at ($(O2)!0.5!(P)$); +\node (w1) at (W1) [circle through={(P)}]{}; +\node(w2) at (W2) [circle through={(P)}]{}; +\coordinate[label=below:$H\kern13pt$](H) at (intersection 1 of w1 and w2); +\coordinate[label=left:$\Delta$](V1) at ($(H)!1.5!(P)$); +\coordinate(V2) at ($(H)!-2.4!(P)$); +\draw[semithick](V1)--(V2); +\foreach \point in {O1,O2,P,H,A1,B1,A2,B2} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figaxerad3} +\end{figure} + +\subsubsection{Dans un repère orthonormal} +Soit un cercle $\symcal{C}_1$ de centre $\Omega_1(a_1,b_1)$ et de rayon $r_2$, un cercle $\symcal{C}_2$ de centre $\Omega_2(a_2,b_2)$ et de rayon $r_2$. On suppose $\Omega_1\neq\Omega_2$ et on nomme $\Delta$ l'axe radical de ces deux cercles. D'après le théorème~\ref{threp} page \pageref{threp}, l'appartenance de $M(x,y)$ à $\Delta$ se traduit par +\begin{equation*} +x^2+y^2-2a_1x-2b_1y+c_1=x^2+y^2-2a_2x-2b_2y+c_2, +\end{equation*} +où $c_1=a_1^2+b_1^2-r_1^2$ et $c_2=a_2^2+b_2^2-r_2^2$. + +\vspace\baselineskip\par Donc, après simplification : +\[P\in \Delta \iff (a_2-a_1)x+(b_2-b_1)y+(c_1-c_2)/2=0.\] +L'axe radical $\Delta$ admet pour équation +\[(a_2-a_1)x+(b_2-b_1)y+(c_1-c_2)/2=0,\] + où l'on constate bien que $\Delta$ admet $\Vector{\Omega_1\Omega_2}$ pour vecteur normal. + + \subsection{Centre radical} + Lorsqu'au~\ref{subsecdetprat} nous avons, pour traiter le cas général, exploité l'idée d'un cercle auxiliaire, nous avons implicitement démontré le théorème suivant (voir la figure~\ref{figcentrerad}). + \begin{thm} + Soient trois cercles $\symcal{C}_1$, $\symcal{C}_2$ et $\Gamma$ dont les centres sont distincts et non alignés. Les axes radicaux $\Delta$ de $\symcal{C}_1$ et $\symcal{C}_2$, $\symcal{D}_1$ de $\symcal{C}_1$ et $\Gamma$ et finalement $\symcal{D}_2$ de $\symcal{C}_2$ et $\Gamma$ sont concourants en un point $P$ nommé \emph{centre radical} des trois cercles. + \end{thm} + +\newcommand{\figurecentrerad}{% + \begin{figure}[ht] +\centering +\begin{tikzpicture} +\coordinate (O1) at (0.4,0); +\coordinate(X1) at (1.5,0); +\node[draw,label=above:$\symcal{C_1}$] (c1) at (O1) [circle through={(X1)}]{}; +\coordinate (O2) at (3.6,0); +\coordinate(X2) at (5,0); +\node[draw,label=above:$\symcal{C_2}$] (c2) at (O2) [circle through={(X2)}]{}; +\coordinate(Y) at (2,-1); +\coordinate(U) at (2,0.5); +\node[draw,label=below:$\kern10pt\Gamma$] (g) at (Y) [circle through={(U)}]{}; +\coordinate(A1) at (intersection 2 of c1 and g); +\coordinate(B1) at (intersection 1 of c1 and g); +\coordinate(A2) at (intersection 1 of c2 and g); +\coordinate(B2) at (intersection 2 of c2 and g); +\coordinate[label=right:$\symcal{D}_1$](Y1) at ($(A1)!1.8!(B1)$); +\coordinate[label=left:$\symcal{D}_2$](Y2) at ($(A2)!1.5!(B2)$); +\coordinate[label=left:$P$](P) at (intersection of A1--B1 and A2--B2); +\draw (P)--(Y1); +\draw (P)--(Y2); +\coordinate(W1) at ($(O1)!0.5!(P)$); +\coordinate(W2) at ($(O2)!0.5!(P)$); +\node (w1) at (W1) [circle through={(P)}]{}; +\node(w2) at (W2) [circle through={(P)}]{}; +\coordinate(H) at (intersection 1 of w1 and w2); +\coordinate[label=left:$\Delta$](V1) at ($(H)!1.5!(P)$); +\coordinate(V2) at ($(H)!-2.4!(P)$); +\draw(V1)--(V2); +\foreach \point in {P,A1,B1,A2,B2} +\draw[black,fill=white](\point) circle (1.2pt); +\end{tikzpicture} +\figcaption{}\label{figcentrerad} +\end{figure} +} + +%\DinoiPhoneCommand{% +%\afterpage{\clearpage +%\figurecentrerad +%\par +%\vspace{0.7cm} +%{ +%\centering\LARGE\textcolor{ColorOne}\decoone + +%} +%}} + +%\DinoiPadStdCommand{\figurecentrerad} +%\DinoiPadAirCommand{\figurecentrerad} +%\DinoiPadProCommand{\figurecentrerad} +%%\DinoAfourNBCommand{\figurecentrerad} +%\DinoAfourColorCommand{\figurecentrerad} +%\DinoiPadminiCommand{\figurecentrerad} +%%\DinoSaisieCommand{\figurecentrerad} +%\DinoiPhoneCommand{\figurecentrerad} +\figurecentrerad + +\begin{proof} +On définit $P$ comme intersection de $\symcal{D}_1$ et $\symcal{D}_2$ (le fait que les centres ne soient pas alignés garantit l'existence de $P$) : +\begin{align*} +P\in \symcal{D}_1&\implies \symcal{C}_1(P)=\Gamma(P)\text{ et }\\ +P\in \symcal{D}_2&\implies \symcal{C}_2(P)=\Gamma(P), +\end{align*} +dont on déduit que $\symcal{C}_1(P)=\symcal{C}_2(P)$. Autrement dit $P\in \Delta$. +\end{proof} +%\DinoAfourColorCommand{% +%\par +%\vspace{1.5cm} +%{ +%\centering\LARGE\textcolor{ColorOne}\decoone +% +%} +%} + +\endinput
\ No newline at end of file diff --git a/macros/luatex/latex/tango/examples/recurrence.tex b/macros/luatex/latex/tango/examples/recurrence.tex new file mode 100644 index 0000000000..ee823068c4 --- /dev/null +++ b/macros/luatex/latex/tango/examples/recurrence.tex @@ -0,0 +1,189 @@ +% !TEX TS-program = LuaLaTeX + +\renewcommand{\theprop}{(\ensuremath{\fnsymbol{prop}})} + +\tgotitle{Raisonnement par récurrence} +% +\section{Une propriété des entiers naturels} +La propriété énoncée dans cette section est parfois présentée comme un axiome. Il n'entre toutefois pas dans nos intentions de construire une ou des axiomatiques, ne serait-ce que parce que cette notion est délicate. On se contentera donc d'un point de vue naïf, selon lequel un axiome est un énoncé dont on admet qu'il est vrai. Le lecteur doit toutefois savoir que les énoncés de la propriété~\ref{propppe} et du théorème~\ref{threc} ont des rôles en quelque sorte interchangeables : dans les axiomatiques classiques permettant de fonder l'arithmétique, prendre l'un comme axiome permet de démontrer l'autre comme théorème. Pour cette raison, le lecteur pourra trouver ailleurs des présentations proposant un axiome (ou parfois un principe) de \emph{récurrence}, la propriété~\ref{propppe} devenant alors un théorème. +\par +\vspace{0.5\baselineskip}\par +Nous supposons donc connu l'ensemble $\N$ des entiers naturels, muni notamment d'une relation d'ordre notée ${≤}$ et nous admettons que cet ensemble possède la propriété suivante: +% +\begin{prop} +Toute partie non vide de $\N$ possède un plus petit élément.\label{propppe} +\end{prop} + +On traduit souvent cette propriété en disant que \N{} est \emph{bien ordonné}. +%x +%\par\noindent{\color{gray}\rule{\linewidth}{5pt}}\par\addvspace{-3pt}\par\nobreak + +%Cette propriété peut être considérée comme un des axiomes qui permettent de décrire l'ensemble \N{} des entiers naturels. Elle peut également se démontrer à partir d'un autre système d'axiomes, de portée équivalente (axiomes de Peano, notamment) ou de portée plus générale (Zermelo-Fraenkel, par exemple). + +%\par\noindent\hrulefill +\section{Récurrence} +\subsection{Introduction} +\label{secexplerec} +La propriété \ref{propppe} permet de formaliser une méthode consistant à établir la validité d'une assertion \frquote{de proche en proche}. Fixons-nous par exemple un réel $a$ strictement positif et, pour tout entier naturel $n$, considérons la propriété $P(n)$ +\[(1+a)^n\geq 1+na.\] + +Nous nous proposons de démontrer que cette propriété est vraie pour tout entier naturel~$n$. + +Prouvons dans un premier temps que $P(0)$ est vraie (\mbox{c.-à-d.} que si $n=0$ alors $P(n)$ est vraie) : puisqu'il est vrai que $(1+a)^0=1$ et $1+0\times a=1$, il est établi que $(1+a)^0\geq1+0\times a$, donc que $P(0)$ est vraie. + +Donnons-nous alors un entier naturel $n$ et supposons que $P(n)$ est vraie. Prouvons alors que nécessairement $P(n+1)$ est vraie : +\begin{align*} +(1+a)^n&\geq1+na,\\ +\intertext{soit, en multipliant les deux membres par $1+a$, qui est strictement positif,} +(1+a)^{n+1}&\geq(1+a)(1+na),\\ +\intertext{d'où} +(1+a)^{n+1}&\geq 1+(n+1)a+na^2,\\ +\intertext{et enfin} +(1+a)^{n+1}&\geq 1+(n+1)a,\quad \text{car $na^2\geq0$.} +\end{align*} + +Nous venons d'établir que, pour tout entier naturel $n$, si $P(n)$ est vraie alors $P(n+1)$ est vraie. En termes plus formels : +\begin{equation} +\forall n\in\N,\; P(n)\implies P(n+1). +\label{eqhered} +\end{equation} + +Nous notons maintenant $\symcal{A}$ l'ensemble des valeurs de l'entier naturel $n$ pour lesquelles $P(n)$ \emph{est fausse}. Nous allons prouver \emph{par l'absurde} que $\symcal{A}$ est vide, autrement dit que $P(n)$ est vraie pour tout entier naturel $n$. + +Supposons donc que $\symcal{A}$ est non vide. En vertu de la propriété \ref{propppe}, $\symcal{A}$ possède un plus petit élément que nous notons $m$. Puisque $P(0)$ est vraie, on peut affirmer que $0\notin\symcal{A}$ donc que $m>0$, ce qui nous assure que $m-1\in\N$. Le fait que $m-1<m$ nous prouve maintenant que $m-1\notin\symcal{A}$, puisque $m$ est le plus petit élément de $\symcal{A}$. Alors $P(m-1)$ est vraie, ce qui entraîne, d'après la proposition \eqref{eqhered}, que $P(m)$ est vraie également. L'entier $m$ étant élément de $\symcal{A}$ on aboutit à une contradiction. Finalement $\symcal{A}$ est vide et la propriété $P(n)$ est vraie pour tout entier $n$. + +\begin{remark} +On traduit la proposition \eqref{eqhered} en disant que la propriété $P$ est \emph{héréditaire} à partir du rang $0$. +\end{remark} + +\subsection{Un théorème} +Nous souhaitons maintenant nous éviter le recours direct à la propriété \ref{propppe}, et en particulier un raisonnement par l'absurde nécessitant l'introduction un peu lourde d'une partie telle que $\symcal{A}$. Nous souhaitons également pouvoir facilement établir qu'une propriété est vraie non pas sur \N{} tout entier, mais plutôt pour tout entier supérieur à un entier $n_0$ donné. À cet effet nous formulons maintenant le \emph{théorème de récurrence}, dont la démonstration ne sera pas très différente de celle qui a été faite sur l'exemple de la section \ref{secexplerec}. +\begin{thm} +Soit un entier $n_0$ fixé et une propriété $P(n)$ dont l'énoncé dépend d'un entier $n$. Si $P(n_0)$ est vraie et si pour tout entier $n$ supérieur à $n_0$ l'implication +\[P(n)\implies P(n+1)\] +est vraie, alors la propriété $P(n)$ est vraie pour tout entier $n$ supérieur à $n_0$. +\label{threc} +\end{thm} +\begin{proof}Considérons une propriété $P(n)$ vérifiant les hypothèses de notre théorème et montrons alors que $P(n)$ est vraie pour tout entier $n\geq n_0$. +Nous noterons $\symcal{A}$ l'ensemble des entiers naturels $k$ pour lesquels que $P(n_0+k)$ est fausse. Le fait que $P(n_0)$ est vrai se traduit par +\[ +0\notin\symcal{A} +\] + et plus généralement, pour $n≥n_0$, en remarquant que $n$ peut s'écrire $n_0+(n-n_0)$, + \frquote{$P(n)$ est vrai} se traduit par $(n-n_0)\notin\symcal{A}$. + En posant $k=n-n_0$, l'hypothèse + \begin{align} + \forall n≥n_0,\; P(n)&\implies P(n+1)\notag\\ + \intertext{nous assure donc que} + \forall k\in\N,\;k\notin\symcal{A}&\implies(k+1)\notin\symcal{A}. \label{eqheredA} + \end{align} + +Prouver que la propriété $P(n)$ est vraie pour tout entier $n$ supérieur à $n_0$ revient à prouver que $\symcal{A}$ est vide. Raisonnons par l'absurde et supposons que $\symcal{A}$ est non vide : en vertu de la propriété \ref{propppe}, $\symcal{A}$ possède alors un plus petit élément que nous notons~$m$. Nous savons que $m>0$, puisque $0\notin\symcal{A}$, et cela nous assure que $m-1\in\N$. Le fait que $m-1<m$ nous prouve maintenant que $m-1\notin\symcal{A}$, puisque $m$ est le plus petit élément de $\symcal{A}$. Alors d'après la proposition \eqref{eqheredA}, $m\notin\symcal{A}$, ce qui est en contradiction avec le fait que $m$ est le plus petit élément de $\symcal{A}$. Il est alors établi que la propriété $P(n)$ est vraie pour tout $n≥n_0$. + \end{proof} +% +\begin{remark} +Un raisonnement par récurrence consiste donc à appliquer le théorème \ref{threc} pour démontrer qu'une propriété $P(n)$ est vraie pour tout entier $n$ supérieur à un certain entier $n_0$. Il se fait en trois étapes qui doivent, pour la clarté du propos, être suffisamment mises en évidence. +\begin{enumerate} +\item \textit{Initialisation :} on établit que $P(n_0)$ est vraie. +\item \textit{Preuve du caractère héréditaire de la propriété :} on démontre que +\[ +\forall n≥n_0,\; P(n)\implies P(n+1). +\] +\item \textit{Conclusion :} on a ainsi établi par récurrence que $P(n)$ est vraie pour tout $n≥n_0$. +\end{enumerate} +\end{remark} + +\subsection{Applications et exemples} + +\subsubsection{Une somme} +On se propose de démontrer par récurrence que la somme $S_n$ des $n$ premiers entiers non nuls est égale à $n(n+1)/2$. Par définition on a donc +\[ +S_n=\sum_{k=1}^n k\;\text{ ou si l'on préfère }\; S_n=1+2+\cdots+n-1+n. +\] +On veut démontrer par récurrence que la propriété $P(n)$, définie par +\[ +S_n=\frac{n(n+1)}{2}\;, +\] +est vraie pour tout $n≥1$. +\begin{enumerate} +\item \textit{Initialisation :} on a $S_1=1$ et pour $n=1$, $n(n+1)/2=2/2=1$. Donc $P(1)$ est vraie. +\item \textit{Hérédité :} donnons nous un entier $n≥1$ et supposons que $P(n)$ est vraie. +Montrons alors que $P(n+1)$ est vraie c'est à dire que $S_{n+1}=((n+1)(n+2))/2$. +On sait que $S_{n+1}=S_{n}+n+1$, donc +\begin{align*} +S_{n+1}&=\frac{n(n+1)}{2}+n+1,\\ +&=\frac{n(n+1)+2(n+1)}{2}\;,\\ +&=\frac{(n+1)(n+2)}{2}\:. +\end{align*} +On vient d'établir que $\forall n≥1,\;P(n)\implies P(n+1)$. La propriété $P(n)$ est donc héréditaire à partir du rang $1$. +\item \textit{Conclusion :} la propriété $P(n)$ est vraie pour tout $n≥1$. +\[ +\forall n≥1,\;S_n=\frac{n(n+1)}{2}\:. +\] +\end{enumerate} + +\subsubsection{Une autre somme} +On se propose cette fois de démontrer par récurrence que la somme $T_n$ des carrés des $n$ premiers entiers non nuls est égale à $\bigl(n(n+1)(2n+1)\bigr)/6$. Par définition on a donc +\[ +T_n=\sum_{k=1}^n k^2\;\text{ ou si l'on préfère }\; T_n=1^2+2^2+\cdots+(n-1)^2+n^2. +\] +On veut démontrer par récurrence que la propriété $P(n)$, définie par +\[ +T_n=\frac{n(n+1)(2n+1)}{6}\;, +\] +est vraie pour tout $n≥1$. +\begin{enumerate} +\item \textit{Initialisation :} on a $T_1=1$ et pour $n=1$, +\[\frac{n(n+1)(2n+1)}{6}=\frac{2\times3}{6}=1.\] + Donc $P(1)$ est vraie. +\item \textit{Hérédité :} donnons nous un entier $n≥1$ et supposons que $P(n)$ est vraie. +Montrons alors que $P(n+1)$ est vraie c'est à dire que +\begin{align*} +T_{n+1}&=\frac{(n+1)\bigl((n+1)+1)(2(n+1)+1\bigr)}{6}\;,\\ +&=\frac{(n+1)(n+2)(2n+3)}{6}\:. +\end{align*} +On sait que $T_{n+1}=T_{n}+(n+1)^2$, donc +\begin{align*} +T_{n+1}&=\frac{n(n+1)(2n+1)}{6}+(n+1)^2,\\ +&=\frac{n(n+1)(2n+1)+6(n+1)(n+1)}{6}\;,\\ +\intertext{soit, en factorisant $n+1$} +T_{n+1}&=\frac{(n+1)\bigl(n(2n+1)+6(n+1)\bigr)}{6}\;,\\ +&=\frac{(n+1)(2n^2+n+6n+6)}{6}\;.\\ +\intertext{On remarque alors que $n+6n=7n$, que l'on peut aussi écrire $3n+4n$ d'où} +T_{n+1}&=\frac{(n+1)(2n^2+3n+4n+6)}{6}\;,\\ +&=\frac{(n+1)\bigl(n(2n+3)+2(2n+3)\bigr)}{6}\;,\\ +&=\frac{(n+1)(n+2)(2n+3)}{6}\:. +\end{align*} +On vient d'établir que $\forall n≥1,\;P(n)\implies P(n+1)$. La propriété $P(n)$ est donc héréditaire à partir du rang $1$. +\item \textit{Conclusion :} la propriété $P(n)$ est vraie pour tout $n≥1$. +\[ +\forall n≥1,\;T_n=\frac{n(n+1)(2n+1)}{6}\:. +\] +\end{enumerate} + +\subsubsection{Divisibilité} +Démontrer par récurrence que, pour tout entier naturel $n$, $n^3+2n$ est un multiple de $3$. +On veut démontrer par récurrence que la propriété $P(n)$, définie par +\[ +\exists\, k\in\N \text{ tel que }n^3+2n=3k, +\] +est vraie pour tout $n≥0$. +\begin{enumerate} +\item \textit{Initialisation :} Si $n=0$, $n^3+2n=0$ qui s'écrit aussi $3\times0$. Donc $P(0)$ est vraie. +\item \textit{Hérédité :} Donnons nous un entier naturel $n$ et supposons que $P(n)$ est vraie. Montrons alors que $P(n+1)$ est vraie, c.-à-d. que $(n+1)^3+2(n+1)$ est divisible par~$3$. +\begin{align*} +(n+1)^3+2(n+1)&=n^3+3n^2+3n+1+2n+2,\\ +&=(n^3+2n)+3(n^2+n+1). +\end{align*} +L'hypothèse de récurrence nous dit que $P(n)$ est vraie, donc qu'il existe un entier $k$ tel que \mbox{$n^3+2n=3k$}. Alors +\[(n+1)^3+2(n+1)=3(k+n^2+n+1),\] +Ce qui prouve que $(n+1)^3+2(n+1)$ est un multiple de 3. + +On vient d'établir que $\forall n\in\N,\;P(n)\implies P(n+1)$. La propriété $P(n)$ est donc héréditaire à partir du rang $0$. +\item \textit{Conclusion :} la propriété $P(n)$ est vraie pour tout $n\in\N$. +\[ +\forall n\in\N,\; n^3+2n \text{ est divisible par $3$.} +\] +\end{enumerate} + +\endinput diff --git a/macros/luatex/latex/tango/examples/rel-bin.tex b/macros/luatex/latex/tango/examples/rel-bin.tex new file mode 100644 index 0000000000..ae2633e9d5 --- /dev/null +++ b/macros/luatex/latex/tango/examples/rel-bin.tex @@ -0,0 +1,443 @@ +% !TEX TS-program = LuaLaTeX +%\documentclass[ColorTheme=Red]{dino-iPhone} + +\tgotitle{Relations binaires} +\tgoshorttoc +\section*{Avertissement} +{\itshape +Ce chapitre de la \emph{Mathematica dinosaurorum} a un statut un peu particulier, dans la mesure où il regroupe des notions somme toute assez basiques et que je ne tiens pas à présenter en introduction à d'autres chapitres. Il s'agit donc d'un texte destiné à servir de référence, et pas nécessairement à être lu d'une traite. Les exemples y sont donc peu nombreux, de même que les théorèmes, car tout ceci figure ou figurera dans les chapitres qui font référence à celui-ci. + +} + +\section{Généralités} +\subsection{Produit cartésien} +Deux ensembles $E$ et $F$ étant donnés, on appelle produit cartésien de $E$ et $F$ l'ensemble noté~$E\times F$ des couples $(x,y)$ où $x\in E$ et $y\in F$ : +\[z\in E\times F \iff \exists\, x \in E, \exists\, y\in F,\;\text{tels que}\; z=(x,y).\] + +Dans le cas où $E=F$, on peut noter $E^2$ au lieu de $E\times E$. Ce cas particulier est important : par exemple, l'ensemble des couples des coordonnées des points du plan rapporté à un repère donné est~$\mathbb{R}^2$. On comprend alors que l'ordre de chaque couple est important et qu'il faut distinguer $(x,y)$ et~$(y,x)$, dans le cas de l'exemple qui vient d'être donné, mais aussi d'une façon générale. + +Cette notion se généralise à plus de deux ensembles : par exemple~$\R^3$ est l'ensemble~\mbox{$\R\times\R\times\R$} des triplets ordonnés de réels. + +\subsection{Parties d'un ensemble} +On dit qu'un ensemble $X$ est une partie d'un ensemble $E$ si tout élément de $X$ est un élément de $E$. On dit aussi que~$X$ est un sous-ensemble de $E$ ou que $X$ est inclus dans $E$, ce que l'on note $X \subset E$ : +\[X\subset E \iff \forall x,\; (x\in X\implies x\in E).\] + +L'ensemble vide $\emptyset$ et l'ensemble $E$ lui-même sont des parties de $E$, et l'on note~$\Pt{E}$ l'ensemble de toutes les parties de $E$. +\[X\in \Pt{E}\iff X\subset E.\] + +\begin{alert} +La propriété ci-dessus exprime le fait qu'une inclusion dans $E$ se traduit par une appartenance à $\Pt{E}$. Si $A$ et $B$ sont des parties de $E$, ce sont des \emph{éléments} de $\Pt{E}$, de même que~$\emptyset$ et~$E$. En revanche $\{A\}$, qui est un ensemble admettant pour seul élément la partie $A$ de $E$, est une partie de~$\Pt{E}$ de même que $\{\emptyset\}$ et $\{\emptyset, A, B,E\}$. En tant que parties de $\Pt{E}$, ce sont aussi des éléments de $\Pt{\Pt{E}}$! On notera aussi que l'ensemble vide~$\emptyset$, qui ne contient aucun élément, ne doit pas être confondu avec $\{\emptyset\}$, qui est un ensemble qui contient l'ensemble vide pour seul élément : ces deux ensembles sont des parties de $\Pt{E}$, distinctes l'une de l'autre. Enfin, il apparaît que $\emptyset$ est à la fois un élément et une partie de $\Pt{E}$… +\end{alert} + +\begin{example}[Exemples] +\begin{enumerate} +\item Si $E=\{a,b\}$, $\Pt{E}=\{\emptyset,\{a\},\{b\},E\}$. +\item Si $E=\emptyset$, $\Pt{E}=\{\emptyset\}$, $\Pt{\Pt{E}}=\{\emptyset,\{\emptyset\}\}$ et \[\Pt{\Pt{\Pt{E}}}=\{\emptyset,\{\emptyset\},\{\{\emptyset\}\},\{\emptyset,\{\emptyset\}\}\}.\] +\end{enumerate} +\end{example} + +\subsubsection{Opérations dans l'ensemble des parties} +On définit l'union (notée $\cup$) et l'intersection (notée $\cap$) de deux parties de $E$ de la façon suivante : + +\smallskip\par +\begin{itemize} +\item\textit{Union :} $x\in A\cup B \iff ((x\in A)\;\text{ou}\;(x\in B))$. +\item\textit{Intersection :} $x\in A\cap B \iff ((x\in A)\;\text{et}\;(x\in B))$. +\end{itemize} +\smallskip\par + +À propos de l'union, on notera qu'en mathématique le mot \frquote{ou} a \emph{toujours} un sens inclusif, c'est-à-dire \frquote{l'un ou l'autre ou les deux}. L'union et l'intersection de deux parties de $E$ sont elles-mêmes des parties de $E$. + +De même on définit le complémentaire d'une partie $A$ de $E$ comme étant la partie de $E$ constituée des éléments de $E$ qui n'appartiennent pas à~$A$. Ce complémentaire est noté $E\smallsetminus A$ ou~$\complement_{E} A$. Lorsque qu'il n'y a aucune ambiguïté concernant l'ensemble $E$, on peut même le noter~$\bar{A}$. +\smallskip\par +\begin{itemize} +\item\textit{Complémentaire :} $x\in \complement_E A \iff ((x\in E)\;\text{et}\;(x\notin A))$. +\end{itemize} + +\smallskip +Enfin on définit également la \emph{différence ensembliste} de deux parties $A$ et $B$ de $E$, notée~$A\smallsetminus B$ comme étant l'ensemble des éléments de $A$ qui ne sont pas éléments de $B$. +\smallskip\par +\begin{itemize} +\item\textit{Différence ensembliste :} $x\in A\smallsetminus B \iff ((x\in A)\;\text{et}\;(x\notin B))$. +\end{itemize} + +\subsubsection{Partition d'un ensemble} +Soit un ensemble $E$ et $\symcal{C}$ une ensemble de parties de $E$ (c'est-à-dire un sous-ensemble ou encore une partie de $\Pt{E}$), on dit que $\symcal{C}$ est une partition de $E$ si les deux conditions suivantes sont vérifiées : +\begin{enumerate} +\item Tout élément de $\symcal{C}$ est non vide. +\item Tout élément de $E$ appartient à un élément de $\symcal{C}$ et un seul.\label{cond2} +\end{enumerate} + +\begin{remark}On notera que la condition~\ref{cond2} ci-dessus peut s'expliciter en disant que les parties qui constituent $\symcal{C}$ sont deux à deux disjointes (c'est-à-dire d'intersection vide) et que leur réunion est égale à$E$. +\end{remark} + +\subsection{Relation binaire entre deux ensembles}\label{relbin} +Une \emph{relation binaire} $\symcal{R}$ entre deux ensembles $E$ et $F$ est définie par la donnée d'une partie~$\symcal{G}$ du produit cartésien~$E\times F$ (on a donc $\symcal{G}\in\Pt{E\times F}$). Cette partie, qui est donc un ensemble de couples, est le \emph{graphe} de la relation : par définition, un couple~$(x,y)$ de~$E\times F$ est lié par la relation~$\symcal{R}$ si~$(x,y)\in \symcal{G}$. Donner une relation binaire revient donc à donner son graphe. Si la relation est notée $\symcal{R}$, on écrit $x\mathrel{\symcal{R}}y$ ou $\symcal{R}(x,y)$ pour exprimer que~$x$ et~$y$, dans cet ordre, sont liés par la relation $\symcal{R}$. On a donc pour une relation~$\symcal{R}$ dont le graphe est $\symcal{G}$: +\[\forall (x,y)\in E\times F, \; x\mathrel{\symcal{R}}y\iff(x,y)\in \symcal{G}.\] + +\begin{example}[Exemples] +\begin{enumerate} +\item L'égalité est une relation binaire qui peut être définie sur tout ensemble $E$. Son graphe est ce que l'on nomme la \emph{diagonale} de $E$, c'est à dire l'ensemble des couples $(x,y)$ de~$E^2$ tels que~$x=y$. + +%\item L'ordre strict dans l'ensemble des réels est une relation binaire notée~$<$ (on aurait également pu considérer un ordre large ou l'ordre inverse). Par définition, $x<y$ traduit le fait que $y-x$ est un réel strictement positif : +%\[\forall (x,y) \in \R^2, \; x<y \iff (y-x)\in \R^{*}_+.\] +%Le graphe de cette relation peut être représenté par l'ensemble des points du plan repéré dont l'ordonnée est strictement supérieure à l'abscisse, c'est à dire les points situés strictement au dessus de la droite d'équation $y=x$ (première bissectrice du repère). +%\label{ord-strict} +%On notera que la \emph{règle des signes}, reposant sur la \emph{partition} de $\R$ en trois ensembles qui sont $\R^*_-$, le singleton $\{0\}$ et $\R^*_+$, préexiste à la définition d'un ordre dans $\R$. + +\item Le relation $p$ définie entre $\R$ et $\R_+$ par +\[\forall (x,y)\in \R\times \R_+,\; p(x,y)\iff y=x^2.\] +Le graphe de $p$ peut être représenté, dans le demi-plan repéré des points d'ordonnée positive, par la parabole d'équation~$y=x^2$. On notera que cette relation est en réalité une fonction et que la notation $y=p(x)$ aurait été plus habituelle; nous y reviendrons. +\end{enumerate} +\end{example} + +% Dans le cas d'une +%relation fonctionnelle (voir \S~\ref{Rfonc} ci-dessous), pour laquelle un seul élément y de $F$ est en relation avec un élément $x$ donné dans $E$, on écrit en général $y=\symcal{R}(x)$. +% + +\section{Relations d'équivalence} +\subsection{Définition} +On dit qu'une relation $\symcal{R}$, définie sur $E$ (on se place donc dans le cas où $E=F$) est une relation d'équivalence si elle possède les trois propriétés suivantes : +\begin{enumerate} +\item Elle est \emph{réflexive}, c'est-à-dire que tout élément de $E$ est en relation avec lui même : +\[\forall x \in E,\; x\mathrel{\symcal{R}}x.\] +\item Elle est \emph{symétrique}: +\[\forall (x,y)\in E\times E,\; (x\mathrel{\symcal{R}}y \implies y\mathrel{\symcal{R}}x).\] +\item Elle est \emph{transitive} : +%\[ +%\forall (x,y,z)\in E^3,\quad \left.\begin{aligned} +%x&\mathrel{\symcal{R}}y\\ +%&\text{et}\\ +%y&\mathrel{\symcal{R}}z +%\end{aligned}\right\} +%\implies x\mathrel{\symcal{R}}z +%\] +\[ +\forall (x,y,z)\in E^3,\; \bigl((x\mathrel{\symcal{R}}y\;\text{ et }\;y\mathrel{\symcal{R}}z)\implies x\mathrel{\symcal{R}}z\bigr). +\] +\end{enumerate} + +\begin{example}[Exemples] +\begin{enumerate} +\item L'égalité est une relation d'équivalence sur tout ensemble, c'est une conséquence directe de la définition. +\item Si l'on désigne par $\symfrak{D}$ l'ensemble des droites du plan, le parallélisme est une relation d'équivalence sur $\symfrak{D}$ : c'est immédiat également, on peut noter au passage que la transitivité traduit le fait que \frquote{deux droites parallèles à une même troisième sont parallèles entre elles}. +\item Pour un ensemble $E$ donné, la relation dont le graphe est $E\times E$ est une relation d'équivalence. Tous les couples d'éléments de $E$ sont donc liés par cette relation. +\item La relation $\equiv$ définie dans l'ensemble $\Z$ des entiers par +\[\forall (m,n)\in\Z\times\Z,\; m\equiv n \iff (m-n) \text{ est un entier pair.}\] +est une relation d'équivalence. + +Rappelons qu'un élément $p$ de $\Z$ est un entier pair s'il est divisible par~$2$, c'est-à-dire s'il existe $k$ appartenant à $\Z$ tel que~$p=2k$ et montrons que la relation~$\equiv$ remplit bien les conditions requises : +\begin{enumerate} +\item \emph{Réflexivité. — }Soit $m\in\Z$ un entier quelconque : $m-m=0=2\times0$. Donc~$m-m$ est pair. La relation $\equiv$ est réflexive. +\item \emph{Symétrie. — }Soit $m$ et $n$ deux entiers tels que $m\equiv n$. Alors il existe un entier~$k$ tel que~$m-n=2k$. Il suffit alors d'écrire $n-m=2\times(-k)$ pour constater que $n\equiv m$. La relation~$\equiv$ est symétrique. +\item\emph{Transitivité. — }Soit $(m,n,p)$ dans $\Z^3$ tels que $m\equiv n$ et $n\equiv p$. Il existe alors deux entiers~$k$ et~$k'$ tels que \mbox{$m-n=2k$} et $n-p=2k'$. Il suffit de remarquer que +\[m-p=(m-n)+(n-p)=2(k+k'), \text{ où $(k+k')\in\Z$}\] +pour établir que $m\equiv p$. La relation $\equiv$ est donc transitive. +\end{enumerate} +\end{enumerate} +\end{example} +%\subsection{Exemples} + +\subsection{Classes d'équivalence} +Soit un ensemble $E$ et une relation d'équivalence $\symcal{R}$ sur$E$. On dit qu'une partie~$A$ de~$E$ est une classe d'équivalence modulo la relation~$\symcal{R}$ s'il existe un élément $x$ de~$E$ tel que~$A$ soit l'ensemble des éléments~$y$ de~$E$ pour lesquels la relation~$x\mathrel{\symcal{R}}y$ est vérifiée. On note alors~$A=\cl_{\symcal{R}} (x)$ ou~$A=\cl (x)$ s'il n'y a pas d'ambiguité. +\[y\in\cl_{\symcal{R}} (x)\iff x\mathrel{\symcal{R}}y.\] + +\begin{thm} +Soit un ensemble $E$ et une relation d'équivalence $\symcal{R}$ sur $E$. L'ensemble des classes d'équivalence modulo $\symcal{R}$ constitue une partition de $E$. +\end{thm} + +\begin{proof} +Tout d'abord la réflexivité de la relation $\symcal{R}$ entraîne que pour tout~$x$ appartenant à~$E$,~$x$ appartient à~$\cl(x)$. Par conséquent, tout $x\in E$ appartient à une classe et toute classe est non vide. Il nous reste à prouver que tout élément $x$ de $E$ appartient à une seule classe, c'est à dire que s'il existe un élément $y$ de $E$ tel que $x\in \cl(y)$, alors $\cl(x)=\cl(y)$. + +Nous allons procéder par double inclusion. +\begin{itemize} +\item Soit donc $y\in E$ tel que $x\in\cl(y)$. On sait que $y\mathrel{\symcal{R}}x$, donc, +pour tout~$z\in \cl(x)$, on a à la fois $y\mathrel{\symcal{R}}x$ et $x\mathrel{\symcal{R}}z$ : par transitivité on obtient~$y\mathrel{\symcal{R}}z$, soit~$z\in\cl(y)$ : +\[\forall z\in E, (z\in\cl(x)\implies z\in\cl(y), \text{ donc }\cl (x)\subset\cl (y).\] + \item Par symétrie de la relation d'équivalence $\symcal{R}$, on a aussi~$x\mathrel{\symcal{R}}y$. On peut alors refaire le même raisonnement que ci-dessus : + pour tout $z$ appartenant à $\cl(y)$ on a à la fois~$x\mathrel{\symcal{R}}y$ et~$y\mathrel{\symcal{R}}z$, + donc par transitivité $x\mathrel{\symcal{R}}z$, soit~\mbox{$z\in\cl(x)$} : +\[\forall z\in E, (z\in\cl(y))\implies z\in\cl(x), \text{ donc }\cl (y)\subset\cl (x).\] +\item Finalement $\cl(x)=\cl(y)$.\qedhere +\end{itemize} +\end{proof} + +\begin{remark} +Réciproquement, toute partition $\symcal{C}$ d'un ensemble $E$ est l'ensemble des classes d'une relation d'équivalence. Il suffit en effet de considérer la relation $\sim$ telle que pour tout~$(x,y)$ dans $E^2$, on ait \textit{$x\sim y$ si $x$ appartient au même élément de $\symcal{C}$ que~$y$}, laquelle répond à la question. +\end{remark} +%\end{document} +%\subsubsection{Notion de structure quotient} + +\section{Relations d'ordre} +\subsection{Définition} +On dit qu'une relation $\preccurlyeq$, définie sur $E$ (on se place donc ici encore dans le cas où~$E=F$) est une relation d'ordre si elle possède les trois propriétés suivantes : +\begin{enumerate} +\item Elle est \emph{réflexive}, c'est-à-dire que tout élément de $E$ est en relation avec lui même : +\[\forall x \in E,\; x\preccurlyeq x.\] +\item Elle est \emph{antisymétrique}: +\[\forall (x,y)\in E\times E,\; \bigl((x\preccurlyeq y)\text{ et }(y\preccurlyeq x)\implies x=y\bigr).\] +\item Elle est \emph{transitive} : +%\[ +%\forall (x,y,z)\in E^3,\quad \left.\begin{aligned} +%x&\mathrel{\symcal{R}}y\\ +%&\text{et}\\ +%y&\mathrel{\symcal{R}}z +%\end{aligned}\right\} +%\implies x\mathrel{\symcal{R}}z +%\] +\[ +\forall (x,y,z)\in E^3,\; \bigl((x\preccurlyeq y\;\text{ et }\;y\preccurlyeq z)\implies x\preccurlyeq z\bigr). +\] +\end{enumerate} + +\begin{remark} +La démonstration du résultat suivant est immédiate. + +Une relation d'ordre $\preccurlyeq$ sur un ensemble $E$ étant donnée, la relation~$\succcurlyeq$, définie par +\[\forall (x,y) \in E^2, x\succcurlyeq y \iff y\preccurlyeq x\,,\] +est une relation d'ordre sur $\R$ nommée \emph{ordre inverse} de $\preccurlyeq$. +\end{remark} + +%\begin{exemple}[Exemples] +%\begin{enumerate} +%\item La relation d'ordre strict sur l'ensemble $\R$ des réels, telle que nous l'avons rencontrée dans l'exemple~\ref{ord-strict} du paragraphe~\ref{relbin} n'est pas une relation d'ordre, car elle n'est pas réflexive. En revanche l'ordre large correspondant, défini par +%\[\forall (x,y) \in \R^2, \; x\leq y \iff (y-x)\in \R_+\,,\] +%est bien une relation d'ordre. En effet : +%\begin{itemize} +%\item Pour tout $x$ réel, $x-x=0$ et $0\in \R_+$, ce qui assure que la relation~$\leq$ est \emph{réflexive}. +%\item Pour tout couple de réels $(x,y)$, si $x\leq y$ et $y\leq x$ alors $x=y$. En effet, en effet, $y\leq x$ signifie que $(x-y)\in \R_+$. Le réel $(y-x)$ se retrouve donc appartenir à la fois à $\R_+$ (car $x\leq y$) et à $\R_-$ (en tant qu'opposé de $(x-y)$) ; on en déduit que $y-x=0$ donc que $x=y$. La relation~$\leq$ est donc \emph{antisymétrique}. +%\item Soit $(x,y,z)\in\R^3$, on a $z-x=(z-y)+(y-x)$. On en déduit que si $x\leq y$ et $y\leq z$, $z-x$ est élément de $\R_+$ et tant que somme de deux éléments de $\R_+$, ce qui revient à dire que $x\leq z$. Le relation~$\leq$ est donc \emph{transitive}. +%\end{itemize} +%\end{enumerate} +%\end{exemple} + +\subsection{Ordre dans les ensembles de nombres} +Les relations usuelles $<$ et $>$, définies sur les ensembles de nombres, \emph{ne sont pas} des relations d'ordre, il est facile de l'établir : ces relations \emph{ne sont pas} réflexives. Il est en revanche plus délicat de démontrer que les relations~$\leq$ et~$\geq$ sont des relations d'ordre, et même de tout simplement définir ces relations. + On pourrait songer à définir l'ordre dans $\R$ en disant que~$x\leq y$ si $(y-x)\in \R_{+}$… Mais alors il resterait à définir $\R_{+}$ sans utiliser l'ordre, ce qui ne semble nullement évident. C'est pour cette raison que nous nous contenterons d'affirmer que la relation $\leq$, telle que chacun la connaît, est bien une relation d'ordre sur $\R$ (ainsi d'ailleurs que sur $\N$, $\Z$, $\symbb{D}$ et $\Q$). + +% +\subsection{Un peu de vocabulaire} +On se donne dans ce paragraphe un ensemble $\symcal{E}$ sur lequel est définie une relation d'ordre~$\preccurlyeq$. +\subsubsection{Ordre total} + On dit que la relation $\preccurlyeq$ définit un ordre total sur $\symcal{E}$ si pour tout couple~$(x,y)$ d'éléments de~$\symcal{E}$, la proposition + \XSmartphoneCommand{$\bigl((x\preccurlyeq y)\text{ ou }(y\preccurlyeq x)\bigr)$} + \SmartphoneCommand{% + \[ + \bigl((x\preccurlyeq y)\text{ ou }(y\preccurlyeq x)\bigr) + \]% + } + est vraie. + +\subsubsection{Majorants, minorants \& C\up{ie}} +Soit maintenant $\symcal{A}$ une partie de $\symcal{E}$. + +\begin{itemize} +\item On dit qu'un élément $M$ de $\symcal{E}$ est un majorant de $\symcal{A}$, si $\forall x\in \symcal{A},\, x\preccurlyeq M$. +\item On dit qu'un élément $m$ de $\symcal{E}$ est un minorant de $\symcal{A}$, si $\forall x\in \symcal{A},\, m\preccurlyeq x$. +\item On dit que $\symcal{A}$ admet $A$ pour plus grand élément si $A\in \symcal{A}$ et si $A$ est un majorant de $\symcal{A}$. +\item On dit que $\symcal{A}$ admet $a$ pour plus petit élément si $a\in \symcal{A}$ et si $a$ est un minorant de~$\symcal{A}$. +\end{itemize} + + + +\begin{remark} +Dans un ensemble muni d'une relation d'ordre, l'existence d'un majorant, d'un minorant, d'un plus petit ou d'un plus grand élément n'est nullement assurée. On a en revanche le résutat suivant. +\end{remark} + +\begin{thm} +Soit un ensemble $\symcal{E}$ sur lequel est définie une relation d'ordre $\preccurlyeq$ et soit $\symcal{A}$ une partie de~$\symcal{E}$. Si~$\symcal{A}$ admet une plus grand élément (respectivement un plus petit élément) pour la relation $\preccurlyeq$, ce plus grand élément (respectivement ce plus petit élément) est unique. +\end{thm} +\begin{proof} +Nous proposons la démonstration dans le cas du plus petit élément, celle de l'autre cas est identique. Supposons que~$a$ et~$a'$ soient des plus petits éléments de $\symcal{A}$. D'après la définition d'un plus petit élément, on sait que pour tout~$x$ de~$\symcal{A}$, $a\preccurlyeq x$ et en particulier~\mbox{$a\preccurlyeq a'$}. Et de la même façon, on sait que pour tout $x$ de $\symcal{A}$, $a'\preccurlyeq x$ et en particulier~\mbox{$a'\preccurlyeq a$}. L'antisymétrie de la relation $\preccurlyeq$ nous assure alors que $a=a'$, d'où l'unicité du plus petit élément. +\end{proof} + +Supposons maintenant que $\symcal{A}$ admette $A$ pour plus grand élément et soit $\symcal{M}$ l'ensemble de tous les majorants de $\symcal{A}$. Il va de soi que $\symcal{A}\cap\symcal{M}=\{A\}$. L'élément $A$ apparaît ainsi également comme le plus petit élément de $\symcal{M}$. De la même façon, si $\symcal{A}$ admet un plus petit élément, ce dernier est le plus grand des minorants de $\symcal{A}$. + +\begin{alert} +Dans le cas où $\symcal{A}$ ne possède pas de plus grand élément, il n'est nullement assuré que~$\symcal{M}$ possède un plus petit élément, ni même d'ailleurs que $\symcal{M}$ soit non vide. Néanmoins il est possible que $\symcal{M}$ possède un plus petit élément, et ceci que $\symcal{A}$ possède ou non un plus grand élément. Ce plus petit élément de $\symcal{M}$ est alors par définition la \emph{borne supérieure} de~$\symcal{A}$ dans l'ensemble $\symcal{E}$ ordonné par $\preccurlyeq$. +\end{alert} + + \section{Applications, fonctions}\label{Rfonc} +%%%Fonction caractéristique, cardinal de $\symcal{P}(E)$ ou $\symfrak{P}(E)$ +\subsection{Définition} +On dit qu'une relation binaire $f$ entre deux ensembles $E$ et~$F$ est fonctionnelle ou qu'elle est une \emph{fonction} définie sur~$E$ et à valeurs dans $F$ ou encore une \emph{application} de~$E$ dans $F$ si tout élément $x$ de $E$ est en relation avec un élément~$y$ de~$F$ et un seul. Cet élément $y$ est appelé \emph{image} de~$x$ par~$f$ et noté $f(x)$ (autrement dit on écrit plus volontiers~$y=f(x)$ que~$x \mathrel{f}y$). L'ensemble $E$ est l'ensemble de départ de la fonction et l'ensemble $F$ son ensemble d'arrivée. + +Une application est donc déterminée par la donnée de son ensemble de départ, de son ensemble d'arrivée et d'un procédé décrivant une correspondance fonctionnelle entre ces deux ensembles. On note souvent : + +\begin{align*}&f\::\;E\to F\;,\quad x\longmapsto f(x)\,.\\ +\intertext{Par exemple :} +&f\::\;\left]-1,1\right[\to\R\;,\quad x \longmapsto \frac{1}{x^2-1}\;,\\ +\intertext{ou} +&g\::\;\Z\to\{0,1\}\;,\quad p\longmapsto +\begin{cases} 0&\text{ si $p$ est pair,}\\ +1&\text{ sinon.} +\end{cases} +\end{align*} + +Il n'y a pas de distinction entre fonction et application, mais le contexte peut introduire certaines nuances. En effet, lorsque $E$ est une partie de l'ensemble $\R$ des nombres réels, $f(x)$ est souvent donné par une expression, sa valeur étant le résultat d'un calcul. On emploie alors plus volontiers le vocable \emph{fonction} et dans ce cas l'ensemble de départ peut ne pas être précisé et correspond alors à l'ensemble des valeurs de $x$ pour lesquelles le calcul de $f(x)$ est possible. On parle alors plutôt d'ensemble de définition que d'ensemble de départ. + +\begin{example}[Exemples] +\begin{enumerate} +\item Soit la fonction $f$ de la variable réelle $x$, telle que +\[f(x)=\frac{x}{x^2-4}\;. +\] +Déterminons l'ensemble de définition $\symcal{D}_f$ de la fonction $f$. On a +\begin{align*} +x\in \symcal{D}_f &\iff x^2-4\neq 0\\ +&\iff x\neq -2 \text{ et } x\neq 2. +\end{align*} + +Donc $\symcal{D}_f= \R\smallsetminus\{-2,2\}$. +\item Soit la fonction $g$ telle que $g(x)=\sqrt{1-x^2}$. Déterminons l'ensemble de définition de $g$. On a +\[ +x\in \symcal{D}_g \iff 1-x^2\geq 0. +\] + +Il nous faut donc résoudre l'inéquation $1-x^2\geq0$. Le polynôme $1-x^2$ admet les nombres~$-1$ et~$1$ pour racines et le coefficient de $x^2$ est négatif :~\mbox{$1-x^2$} est donc positif dans l'intervalle des racines (on pourra consulter le volet consacré aux polynômes du second degré). + +Donc $\symcal{D}_g= \left[-1,1\right]$. +\end{enumerate} +\end{example} + +\subsection{Antécédents, surjections, injections \& bijections} +\subsubsection{Notion d'antécédent} +Soit une application $f$ de $E$ dans $F$ et soit~$b$ élément de~$F$. On dit qu'un élément~$a$ de~$E$ est un \emph{antécédent} de $b$ si $f(a)=b$, autrement dit si~$b$ est l'image de~$a$ par $f$. +Alors que la définition d'une fonction entraîne que l'image d'un quelconque élément de $E$ existe et est unique, dans le cas d'une recherche d'antécédent, rien de ce genre n'est assuré. + +Considérons par exemple la fonction \emph{carré} définie par +\[f\::\;\R\to\R\;,\quad x\longmapsto f(x)=x^2 \] +et recherchons les antécédents par $f$ d'un élément~$y$ de~$\R$, c.-à-d. les solutions de l'équation d'inconnue~$x$ :~\mbox{$x^2=y$}. +\begin{itemize} +\item \textit{Si $y>0$} : $y$ admet deux antécédents qui sont $\sqrt{y}$ et $-\sqrt{y}$. +\item \textit{Si $y=0$} : le seul antécédent de $0$ est $0$. +\item \textit{Si $y<0$} : $y$ ne possède aucun antécédent. +\end{itemize} +\begin{remark} +Il faut remarquer ici que la connaissance précise des ensembles de départ et d'arrivée est indispensable à la recherche des antécédents. Considérons la fonction +\[g\::\;\R_+\to\R_+\;,\quad x\longmapsto g(x)=x^2. \] +Les expressions de $g(x)$ et de $f(x)$ sont parfaitement identiques, mais, contrairement à ce que nous venons d'étudier pour la fonction $f$, dans le cas de la fonction $g$ tout élément~$y$ de l'ensemble d'arrivée possède un antécédent unique qui est $\sqrt{y}$. +\end{remark} +\subsubsection{Surjections, injections et bijections} +\begin{remark}[Surjections] +On dit qu'une application $f$ de $E$ dans $F$ est \emph{surjective} (ou encore que~$f$ est une \emph{surjection}) si tout élément de $F$ possède au moins un antécédent dans~$E$. +\end{remark} +\begin{remark}[Injections] +On dit qu'une application $f$ de $E$ dans $F$ est \emph{injective} (ou encore que $f$ est une \emph{injection}) ou encore si deux éléments distincts quelconques de $E$, ont des images distinctes. De façon plus formelle,~\mbox{$f\::\;E\to F$} est injective si +\begin{gather}\forall(x,y)\in E\times E, \;\bigl(x\neq y\implies f(x)\neq f(y)\bigr).\label{condinj1}\\ +\intertext{Ou, par contraposition, $f\::\;E\to F$ est injective si} +\forall(x,y)\in E\times E, \;\bigl(f(x)= f(y)\implies x=y\bigr).\label{condinj2} +\end{gather} + +On peut dire également que $f$ est injective si et seulement si tout élément de $F$ possède au plus un antécédent dans~$E$. +\end{remark} + +\begin{remark}[Bijections] +On dit qu'une application $f$ de $E$ dans $F$ est \emph{bijective} (ou encore que $f$ est une \emph{bijection}) si tout élément de $F$ possède un antécédent dans $E$ et un seul, autrement dit si $f$ est à la fois surjective et injective. + +Si l'application $f\::\;E\to F$ est bijective, l'application qui à tout élément de $F$ associe son unique antécédent dans $E$ est évidemment bijective : c'est la \emph{bijection réciproque} de~$f$, notée~$f^{-1}$. +\end{remark} +\begin{example}[Exemples] +\begin{enumerate} +\item \label{phi} Soit l'application +\[ +\phi\::\;\R\smallsetminus\{1\}\to\R\,,\quad x\longmapsto \frac{2x}{x-1}\;. +\] + +Donnons-nous un réel $y$ quelconque et recherchons ses antécédents, qui sont les solutions dans $\R\smallsetminus\{1\}$ de l'équation $\phi(x)=y$, que nous résolvons ici : +\begin{align*} +\frac{2x}{x-1}=y &\iff 2x=y(x-1)\text{ et } x\neq 1\,,\\ +&\iff x(2-y)=-y\text{ et } x\neq 1\,,\\ +&\iff x(y-2)=y\text{ et } x\neq 1\,. +\end{align*} +\begin{itemize} +\item\textit{Si $y=2$}, l'équation est équivalente à $0=2$ et n'a donc pas de solution. Le réel $2$ n'a pas d'antécédent par $\phi$. +\item\textit{Si $y\neq 2$}, l'équation admet \[x=\frac{y}{y-2}\] pour unique solution (il est clair en effet que $y/(y-2)$ ne peut être égal à $1$). +\end{itemize} + + +En résumé, le réel $2$ ne possède aucun antécédent et les réels différents de $2$ possèdent un antécédent et un seul. L'application $\phi$ est donc injective, mais n'est pas surjective. +\item Soit maintenant l'application +\[ +\psi\::\;\R\smallsetminus\{1\}\to\R\smallsetminus\{2\}\,,\quad x\longmapsto \frac{2x}{x-1}\;. +\] + +On notera que les applications $\phi$ et $\psi$ ne diffèrent que par leur ensemble d'arrivée. Cependant, l'étude faite ci-dessus en \ref{phi} prouve que $\psi$ est bijective et que sa bijection réciproque est +\[ +\psi^{-1}\::\;\R\smallsetminus\{2\}\to\R\smallsetminus\{1\}\,,\quad x\longmapsto \frac{x}{x-2}\;. +\] +\item L'application $\theta$ définie par +\[ +\theta\::\;\R\to\R\,,\quad x\longmapsto x^2-1 +\] +n'est ni injective ni surjective. En effet $\theta(x)$ est nul si et seulement si $x^2=1$, c.-à-d si et seulement si $x=-1$ ou $x=1$ : le réel $0$ possède donc deux antécedents pour $\theta$. Par ailleurs, pour tout réel~$x$,~$x^2\geq0$, donc $\theta(x)\geq-1$ : le réel $-2$, par exemple, ne possède aucun antécédent par $\theta$. +\end{enumerate} +\end{example} +\subsection{Composée de deux applications} + +Soit deux applications $f\::\;E\to F$ et $g\::\;F\to G$, on appelle \emph{application composée de~$f$ par~$g$} et on note $g\rond f$ l'application de $E$ dans $G$ définie par : +\[g\rond f\::\; E\to G\,,\quad x\longmapsto g\rond f(x) = g\bigl(f(x)\bigr).\] + +Notons qu'il est important pour définir $g\rond f$ que l'ensemble d'arrivée de $f$ coïncide avec l'ensemble de départ de~$g$. + +\begin{example} +Soit +\[ +f\::\;\R^*\to\R\,,\; x\mapsto \frac1x\;\text{ et }\;g\::\:\R\to\R\,,\; x\mapsto x^2+1\,. +\] +Déterminons $g\rond f$ qui est une application de $\R^*$ dans $\R$. + +On a pour tout $x\in\R^*$, +\begin{align*} +g\rond f(x) &= g\bigl(f(x)\bigr),\\ +&={\bigl(f(x)\bigr)}^2+1,\\ +&={\left(\frac1x\right)}^2+1,\\ +\intertext{ou, en réduisant au même dénominateur,} +g\rond f(x)&= \frac{1+x^2}{x^2}\;. +\end{align*} +\begin{remark} +On notera que la même lettre $x$ intervient dans les définitions de~$f$ et~$g$. Il s'agit bien sûr d'une lettre muette, qui pourrait dans chaque cas être remplacée par n'importe quelle autre lettre (en évitant tout de même les lettres $f$ et $g$!). +\end{remark} +\end{example} + +\begin{thm}Soit deux applications $f\::\;E\to F$ et $g\::\;F\to G$. Si $f$ et $g$ sont des bijections, alors l'application composée $g\rond f$ est une bijection dont la bijection réciproque est $f^{-1}\rond g^{-1}$. +\end{thm} + +\begin{proof} +Soit deux bijections $f\::\;E\to F$ et $g\::\;F\to G$. % et un élément $a$ de $E$. +%Si $a$ est un antécédent de $b$ par $g\rond f$, on a $g\rond f(a)=c$, soit $g\bigl(f(a)\bigr)=c$. +\begin{enumerate} +\item\label{gofsurj} Donnons nous un élément $c$ quelconque de $G$. Les applications~$g$ et~$f$ étant surjectives, $c$ possède un antécédent~$b$ par $g$ et $b$ possède lui-même un antécédent $a$ par $f$. On a alors +\[g\rond f(a) =g\bigl(f(a)\bigr)=g(b)=c.\] +L'élément $c$ admet $a$ pour antécédent par $g\rond f$ qui est donc est donc application surjective. +\item Supposons maintenant qu'il existe un élément $c$ de $G$ et $a$ et $a'$ éléments de $E$ tels que~$g\rond f(a)=g\rond f(a')$. Alors $g\bigl(f(a)\bigr)=g\bigl(f(a')\bigr)$ et puisque $g$ est injective on a, d'après la proposition \eqref{condinj2} p.~\pageref{condinj2}, $f(a) = f(a')$; l'application $f$ étant elle-même injective, on obtient finalement~$a=a'$. On a donc prouvé que +\[\forall(a,a')\in E\times E, \;\bigl(g\rond f(a)= g\rond f(a')\implies a=a'\bigr),\] +autrement dit que $g\rond f$ est injective. +\item L'application $g\rond f$ est donc surjective et injective : elle est bijective. On remarque alors en employant les notations du point \ref{gofsurj} ci-dessus \mbox{que $a=f^{-1}(b)$} et $b=g^{-1}(c)$, \mbox{d'où $a=f^{-1}\bigl(g^{-1}(c)\bigr)$}, ce qui achève la démonstration en prouvant que +\[{\bigl(g\rond f\bigr)}^{-1}=f^{-1}\rond g^{-1}.\qedhere\] +\end{enumerate} +\end{proof} + +\begin{remark} +La réciproque de ce théorème est fausse. Considérons par exemple les applications suivantes : +\[ +f\::\;\R_+\to\R\,,\; x\mapsto \sqrt{x}\;\text{ et }\;g\::\;\R\to\R_+\,,\; x\mapsto x^2. +\] +Pour tout réel $x$ positif, on a $g\bigl(f(x)\bigr)=\bigl(\sqrt{x}\bigr)^2=x$, par définition de la racine carrée. Par conséquent, on a +\[g\rond f \::\;\R_+\to\R_+\,,\quad x\longmapsto x,\] +qui est à l'évidence une bijection. Cependant, $f$ n'est pas surjective (les nombres strictement négatifs n'ont pas d'antécédent) et $g$ n'est pas injective (deux nombres opposés non nuls ont la même image). +\end{remark} + +On a néanmoins le théorème suivant: +\begin{thm} +Soit deux applications $f\::\;E\to F$ et $g\::\;F\to G$. Si $g\rond f$ est injective, $f$ est injective. Si $g\rond f$ est surjective, $g$ est surjective. +\end{thm} + +\begin{proof} +\begin{itemize} +\item Supposons $g\rond f$ injective et soit $x$ et $y$ éléments de $E$ tels que~\mbox{$f(x)=f(y)$}. Montrons que nécessairement $x=y$, ce qui établira que~$f$ est injective. + +Puisque $f(x)=f(y)$, $g\bigl(f(x)\bigr)=g\bigl(f(y)\bigr)$, soit $g\rond f(x)=g\rond f(y)$ : on en déduit que~$x=y$, car $g\rond f$ est injective par hypothèse. Par conséquent~$f$ est injective. +\item Supposons $g\rond f$ surjective et soit $z$ un élément de $G$. L'application~$g\rond f$ étant surjective, il existe un élément $x$ de $E$ tel que $g\rond f(x)=z$, soit~$g\bigl(f(x)\bigr)=z$. L'élément~$z$ admet donc $f(x)$ pour antécédent par $g$, ce qui prouve que~$g$ est surjective. \qedhere +\end{itemize} +\end{proof} +\endinput
\ No newline at end of file diff --git a/macros/luatex/latex/tango/examples/schoolwork.tex b/macros/luatex/latex/tango/examples/schoolwork.tex new file mode 100644 index 0000000000..9ea9f9a2f0 --- /dev/null +++ b/macros/luatex/latex/tango/examples/schoolwork.tex @@ -0,0 +1,238 @@ +% !TEX TS-program = LuaLaTeX +\documentclass[french,no-indent,FontSize=11pt]{tango} +\usepackage{numprint} +% +\NewCommandCopy{\np}{\numprint} +% +\newcommand\headcontentL{} +\newcommand\headcontentC{} +\newcommand\headcontentR{} +\newcommand\footcontentL{} +\newcommand\footcontentC{} +\newcommand\footcontentR{} +\newlength\SWruleheight +\setlength\SWruleheight{0.4pt} +\NewDocumentCommand\headL{m}{\renewcommand\headcontentL% +{\sffamily\fontseries{l}\selectfont#1}} +% +\NewDocumentCommand\headC{m}{\renewcommand\headcontentC% +{\sffamily\fontseries{l}\selectfont#1}} +% +\NewDocumentCommand\headR{m}{\renewcommand\headcontentR% +{\sffamily\fontseries{l}\selectfont#1}} +% +\NewDocumentCommand\footL{m}{\renewcommand\footcontentL% +{\sffamily\fontseries{l}\selectfont#1}} +% +\NewDocumentCommand\footC{m}{\renewcommand\footcontentC% +{\sffamily\fontseries{l}\selectfont#1}} +% +% +\NewDocumentCommand\footR{m}{\renewcommand\footcontentR% +{\sffamily\fontseries{l}\selectfont#1}} +% +\newpagestyle{schoolwork}{% +\setheadrule{\SWruleheight}% +\setfootrule{\SWruleheight}% +\sethead{\headcontentL}% +{\headcontentC}% +{\headcontentR}% +\setfoot{\footcontentL}% +{\footcontentC}% +{\footcontentR} +} + + +\headL{Le 13 novembre 2024} +\headC{Entraînement au Devoir Commun \no 1} +\headR{Durée : 2 heures} +\footL{Lycée Jean-Baptiste \textsc{Colbert}} +\footC{Classe de 1\iere~3} +\footR{page~\thepage} +% +% +\pagestyle{schoolwork} +\geometry{top=2cm,outer=2cm,bottom=2cm,inner=2cm,headheight=18pt,headsep=25pt,footskip=34pt} + +\begin{document} + + +\exo[Thème : suites — 4 points] + + +On considère la suite $\left(u_n\right)$ définie par $u_0 = \numprint{10000}$ et pour tout entier naturel $n$ +\[u_{n+1} = 0{,}95u_n + 200.\] + +\begin{enumerate} +\item Calculer $u_1$ et vérifier que $u_2 = \np{9415}$. +\item + \begin{enumerate} + \item Démontrer, à l'aide d'un raisonnement par récurrence, que pour tout entier naturel $n$ +\[u_n >\np{4000}.\] +\item Démontrer que la suite $\left(u_n\right)$ est décroissante. \end{enumerate} +\item Pour tout entier naturel $n$, on considère la suite $\left(v_n\right)$ définie par $v_n = u_n - \np{4000}$. + \begin{enumerate} + \item Calculer $v_0$. + \item Démontrer que la suite $\left(v_n\right)$ est géométrique de raison égale à $0{,}95$. + \item En déduire que pour tout entier naturel $n$ : +\[u_n = \np{4000} + \np{6000} \times 0{,}95^n.\] + \item Émettre une conjecture quant à la limite de la suite $\left(u_n\right)$ ? + \end{enumerate} +\item En 2020, une espèce animale comptait \np{10000} individus. L'évolution observée les années précédentes conduit à estimer qu'à partir de l'année 2021, cette population baissera de 5~\% chaque début d'année. + +Pour ralentir cette baisse, il a été décidé de réintroduire $200$ individus à la fin de chaque année, à partir de 2021. + +Une responsable d'une association soutenant cette stratégie affirme que : \og l'espèce ne devrait pas s'éteindre, mais malheureusement, nous n'empêcherons pas une disparition de plus de la moitié de la population \fg. + +Que pensez-vous de cette affirmation ? Justifier la réponse. +\end{enumerate} + + + +\exo[Thème : probablités — 4 points] + +Selon les autorités sanitaires d'un pays, 7~\% des habitants sont affectés par une certaine maladie. + +Dans ce pays, un test est mis au point pour détecter cette maladie. Ce test a les caractéristiques suivantes : +\begin{itemize} +\item Pour les individus malades, le test donne un résultat négatif dans $20 \,\%$ des cas ; +\item Pour les individus sains, le test donne un résultat positif dans $1\,\%$ des cas. +\end{itemize} + +Une personne est choisie au hasard dans la population et testée. + +On considère les événements suivants : +\begin{itemize} +\item $M$ : \og la personne est malade \fg{} ; +\item $T$ : \og le test est positif \fg{}. +\end{itemize} + +\begin{enumerate} +\item Calculer la probabilité de l'événement $M \cap T$. On pourra s'appuyer sur un arbre pondéré. +\item Démontrer que la probabilité que le test de la personne choisie au hasard soit positif, est de $\np{0,0653}$. +\item On considère dans cette question que la personne choisie au hasard a eu un test positif. +Quelle est la probabilité qu'elle soit malade ? On arrondira le résultat à $10^{-2}$. +\item On choisit des personnes au hasard dans la population. La taille de la population de ce pays permet d'assimiler ce prélèvement à un tirage avec remise. + +On note $X$ la variable aléatoire qui donne le nombre d'individus ayant un test positif parmi les 10 personnes. + \begin{enumerate} + \item Préciser la nature et les paramètres de la loi de probabilité suivie par $X$. + \item Déterminer la probabilité pour qu'exactement deux personnes aient un test positif. On arrondira le résultat à $10^{-2}$ près. + \end{enumerate} +\end{enumerate} + +\exo[Thème : géométrie dans l'espace — 2 points] + + + +Dans l'espace rapporté à un repère orthonormé $(O,\vec\imath,\vec\jmath,\vec k)$ , on considère les points +\[A(-1,-1,3),\qquad B(1,1,2),\qquad C(1,-1,7).\] + +On considère également la droite $\Delta$ passant par les points $D(-1,6,8)$ et $E(11,- 9,2)$. + +Pour chacune des questions posées, quatre affirmations \textbf{dont une seule est correcte} sont proposées. +Entourer la bonne réponse directement sur l'énoncé. + +Aucune justification n'est attendue. + +Une réponse correcte apporte 0,5 point. Une réponse incorrecte ou une absence de réponse n'enlève pas de point. + + + \begin{enumerate} + \item Une représentation paramétrique de la droite $\Delta$ est +\medskip + +\textbf{a.} $\left\{ + \begin{aligned} + x&= -1 + 11t\\ + y&= 6 - 9t\\ + z&= 8 +2t\\ + \end{aligned} \right.~(t \in \symbb{R})$ + \hfill +\textbf{b.} $\left\{ + \begin{aligned} + x&= -1 + 4t\\ + y&= 6 - 5t\\ + z&= 8 -2t\\ + \end{aligned} \right.~(t \in \symbb{R})$ + \hfill +\textbf{c.} $\left\{ + \begin{aligned} + x&= 11 -t\\ + y&= - 9+6t\\ + z&= 2 +8t\\ + \end{aligned} \right.~(t \in \symbb{R})$ + \hfill + \textbf{d.} + $\left\{ + \begin{aligned} + x&= 4 -t\\ + y&= -5 +6t\\ + z&= -2 + 8 t\\ + \end{aligned} \right.~(t \in \symbb{R})$\hfill\null + +\bigskip + + \item Lequel de ces points appartient-il à la droite $\Delta$ ? + +\medskip + + \textbf{a.} Le point $F(-3,1,6)$ + \hfill \textbf{b.} Le point $G (5,\:-1{,}5,\:5)$ + \hfill \textbf{c.} Le point $H (10,-3,10)$ + \hfill \textbf{d.} Le point $K (12,-15,-6)$ + +\bigskip + + \item Pour savoir si les points $A$, $B$ et $C$ définissent un plan, il faut vérifier que $\overrightarrow{AB}$ et $\overrightarrow{AC}$ : + +\medskip + + \textbf{a.} sont colinéaires. + \hfill \textbf{b.} sont coplanaires. + \hfill \textbf{c.} ne sont pas colinéaires. + \hfill \textbf{d.} ne sont pas coplanaires. + +\bigskip + + \item La droite $\Delta$ et le plan (ABC) : + +\medskip + + \begin{tabular}{ll} + \textbf{a.} sont strictement parallèles. + &\textbf{b.} ont une infinité de points communs.\\[12pt] + \textbf{c.} sont sécants en $I(-13,21,14)$ + &\textbf{d.} sont sécants en $J(3,1,6)$ + \end{tabular} + + \bigskip + +\item Les droites $\delta$ et $\delta'$ de représentations paramétriques respectives : + + $ \delta : \left\{ + \begin{aligned} + x&= -1 + 11k\\ + y&= 6 - 9k\\ + z&= 8 +2k\\ + \end{aligned} \right.~(k \in \symbb{R})$ + \quad et\quad $\delta' : \left\{ + \begin{aligned} + x&= 11 -\ell\\ + y&= - 9+6\ell\\ + z&= 2 +8\ell\\ + \end{aligned} \right.~(\ell \in \symbb{R})$\quad sont : + + \medskip + + \begin{tabular}{ll} + \textbf{a.} sécantes au point de coordonnées $(1,1,1)$. + & \textbf{b.} sécantes au point de coordonnées $(-12,15,6)$.\\[12pt] + \textbf{c.} sécantes en un autre point + &\textbf{d.} non sécantes. + \end{tabular} + + +\end{enumerate} + +\end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/tango/lualatex/tango.cls b/macros/luatex/latex/tango/lualatex/tango.cls new file mode 100644 index 0000000000..f188200b4c --- /dev/null +++ b/macros/luatex/latex/tango/lualatex/tango.cls @@ -0,0 +1,2182 @@ +\NeedsTeXFormat{LaTeX2e}% +\ProvidesClass{tango}% +[2024/07/15 v0.8.0 tango document class. Michel Bovani]% % +% +% Ensure luatex engine +\RequirePackage{iftex}[2019/10/24] +\RequireLuaTeX +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand\TgoTempa{} +\newcommand\TgoTempb{} +\newcommand\TgoTempc{} +\newcommand\TgoSmallerSize{} +\newcommand\TgoStatementNumberSuffix{} +\newcommand\TgoStatementNumberPrefix{} +\newcommand\TgoStatementSuffix{} +\newcommand\TgoStatementName{} +\newcommand\TgoTheoremName{Theorem} +\newcommand\TgoDefinitionName{Definition} +\newcommand\TgoPropositionName{Proposition} +\newcommand\TgoLemmaName{Lemma} +\newcommand\TgoCorollaryName{Corollary} +\newcommand\TgoRemarkName{Remark} +\newcommand\TgoExampleName{Example} +\newcommand\TgoContentsName{Contents} +\newcommand\TgoExerciseName{Exercise} +\newcommand\TgoExercisesSubsectionName{Exercises} +\newcommand\TgoExercisesSectionName{Exercises} +\newcommand\TgoPublicationClass{article} +\newcommand\TgoStatementIndent{\indent} +\newif\ifTgoFrenchLanguage +\newif\ifTgoNGermanLanguage +\newif\ifTgoGermanLanguage +\newif\ifTgoNAustrianLanguage +\newif\ifTgoNSwissGermanLanguage +\newif\ifTgoItalianLanguage +\newif\ifTgoSpanishLanguage +\newif\ifTgoEnglishLanguage +\newif\ifTgoBritishLanguage +\newif\ifTgoAmericanLanguage +\newif\ifTgoCanadianLanguage +\newif\ifTgoAustralianLanguage +\newif\ifTgoNewZealandLanguage +\newif\ifTgoNoStatement +\newif\ifTgoBook +\newif\ifTgoOneSide\TgoOneSidetrue +\newif\ifTgoAfourPaperOutput\TgoAfourPaperOutputtrue +\newif\ifTgoLetterOutput +\newif\ifTgoBigTabletOutput +\newif\ifTgoAfivePaperOutput +\newif\ifTgoTabletOutput +\newif\ifTgoSmallTabletOutput +\newif\ifTgoeReaderOutput +\newif\ifTgoSmartphoneOutput +\newif\ifTgoSmallerSizeCommand +\newif\ifTgoTitleIndentZero\TgoTitleIndentZerotrue +\newcommand\TgoChapterTitleFont{RobotoCondensedBold} +\NewDocumentCommand\TgoStatementNameOffset{}{} +\NewDocumentCommand\SetTgoBaseFonts{}{% + \setmainfont{erewhon}% + \setmathfont{Erewhon Math}% + }% + \newlength\TgoAfterChapterSkip + \newlength\TgoStandardMargin + \newlength\TgoStatementParindent + \newlength\TgoTitleIndent + %%% +\AddToHook{package/xcolor/after} +{% +\definecolor{ColorOne}{rgb}{0.15,0.15,0.15} +\definecolor{ColorTwo}{rgb}{0.93,0.93,0.93} +} +\AddToHook{class/article/after}{% +\TgoTenPointsFonts} +\AddToHook{class/book/after}{% +\TgoTenPointsFonts} +%% +% + %% + \DeclareKeys[tango]{ + %%%%%% languages,%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + french.code= {% + \TgoFrenchLanguagetrue + \TgoTitleIndentZerofalse + }, + ngerman.code= {% + \TgoNGermanLanguagetrue + }, + german.code= {% + \TgoGermanLanguagetrue + }, +naustrian.code= {% + \TgoNAustrianLanguagetrue + }, +nswissgerman.code= {% + \TgoNSwissGermanLanguagetrue + }, + italian.code= {% + \TgoItalianLanguagetrue + }, + spanish.code= {% + \TgoSpanishLanguagetrue + }, +english.code= {% + \TgoEnglishLanguagetrue + }, +british.code= {% + \TgoBritishLanguagetrue + }, +american.code= {% + \TgoAmericanLanguagetrue + }, +canadian.code= {% + \TgoCanadianLanguagetrue + }, +australian.code= {% + \TgoAustralianLanguagetrue + }, +newzealand.code= {% + \TgoNewZealandLanguagetrue + }, + %%%%%% Default Statements %%%%%%%%%%%%%%%%%%%%%%%% + no-statement.if = TgoNoStatement, + %%%%%% No Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%% + no-hyperref.if = TgoNoHyperref, + %%%%%% Parindentzero %%%%%%%%%%%%%%%%%%%%%%%%%%% + no-indent.if = TgoParindentZero, + indent.ifnot = TgoParindentZero, +%%%%%% Parindentzero %%%%%%%%%%%%%%%%%%%%%%%%%%% + no-titleindent.if = TgoTitleIndentZero, + titleindent.ifnot = TgoTitleIndentZero, + %%%%%% ThmNamePos left/right %%%%%%%%%%%%%%%%%%%%%%% + ThmNamePos.choice:, + ThmNamePos / left.code:n = + { + \RenewDocumentCommand\TgoStatementNameOffset{}{} + }, + ThmNamePos / right.code:n = + { + \RenewDocumentCommand\TgoStatementNameOffset{}{\hspace*{\fill}} + }, +%%%% book or article %%%%%%%%%%%%%%%%%%%%%%%%%%% +PubliClass.choice:, +PubliClass / article.code:n = +{% +\renewcommand\TgoPublicationClass{article} +\TgoBookfalse +}, +PubliClass / book.code:n = +{% +\renewcommand\TgoPublicationClass{book} +\TgoBooktrue +}, +%%%% oneside or two sides %%%%%%%%%%%%%%%%%%%%%%%% +oneside.if = TgoOneSide , +twoside.ifnot = TgoOneSide , +%%%% Font Size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +FontSize.choice:, +FontSize / 9pt.code:n = +{ +\RemoveFromHook{class/article/after} +\AddToHook{class/article/after}{% +\TgoNinePointsFonts} +\RemoveFromHook{class/book/after} +\AddToHook{class/book/after}{% +\TgoNinePointsFonts} +}, +FontSize / 10pt.code:n = +{ +\RemoveFromHook{class/article/after} +\AddToHook{class/article/after}{% +\TgoTenPointsFonts} +\RemoveFromHook{class/book/after} +\AddToHook{class/book/after}{% +\TgoTenPointsFonts} +}, +FontSize / 11pt.code:n = +{ +\RemoveFromHook{class/article/after} +\AddToHook{class/article/after}{% +\TgoElevenPointsFonts} +\RemoveFromHook{class/book/after} +\AddToHook{class/book/after}{% +\TgoElevenPointsFonts} +}, +FontSize / 12pt.code:n = +{ +\RemoveFromHook{class/article/after} +\AddToHook{class/article/after}{% +\TgoTwelvePointsFonts} +\RemoveFromHook{class/book/after} +\AddToHook{class/book/after}{% +\TgoTwelvePointsFonts} +}, +FontSize / unknown.code:n = +{ + \ClassWarning{tango}{\MessageBreak Value #1 is unknown \MessageBreak + Possible choices are 9pt, 10pt, 11pt and 12pt. + \MessageBreak Selecting 10pt.} +}, +%%%% ColorTheme %%%%%%%%%%%%%%%%%%%%%%%%%%%% +ColorTheme.choice:, +ColorTheme / Blue.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % + \definecolor{ColorOne}{rgb}{0.08, 0.05, 0.55} + \definecolor{ColorTwo}{rgb}{0.87, 0.94, 0.97} + } +}, + ColorTheme / Navy.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % + \definecolor{ColorOne}{rgb}{0.07, 0.37, 0.65} + \definecolor{ColorTwo}{rgb}{0.87, 0.95, 0.97} + } + }, +ColorTheme / USAF.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % + \definecolor{ColorOne}{rgb}{0.24, 0.41, 0.54} + \definecolor{ColorTwo}{rgb}{0.92, 0.94, 0.96} + } + }, + ColorTheme / Azur.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.15, 0.32, 0.75} +\definecolor{ColorTwo}{rgb}{0.88, 0.94, 0.97} +} +}, + ColorTheme / Red.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.75,0.05,0.1} +\definecolor{ColorTwo}{rgb}{1,0.94,0.9} +} + }, + ColorTheme / Framboise.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.64, 0.25, 0.45} +\definecolor{ColorTwo}{rgb}{1, 0.95, 0.94} +} + }, + ColorTheme / Brique.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.68, 0.1, 0.0} +\definecolor{ColorTwo}{rgb}{1, 0.95, 0.89} +} +}, + ColorTheme / Sienne.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.55, 0.27, 0.1} +\definecolor{ColorTwo}{rgb}{1, 0.95, 0.87} + } + }, + ColorTheme / Caramel.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.66, 0.26, 0.0} +\definecolor{ColorTwo}{rgb}{1, 0.96, 0.86} +} +}, + ColorTheme / Olive.code:n = + {% + \RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.28, 0.43, 0.03} +\definecolor{ColorTwo}{rgb}{0.95, 0.98, 0.9} +} + }, + ColorTheme / Tannen.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.09, 0.44, 0.28} +\definecolor{ColorTwo}{rgb}{0.92, 0.97, 0.94} +} +}, + ColorTheme / GrayGray.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.25,0.25,0.25} +\definecolor{ColorTwo}{rgb}{0.95,0.95,0.95} +} +}, + ColorTheme / BlackAndWhite.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0,0,0} +\definecolor{ColorTwo}{rgb}{1,1,1} +} +}, + ColorTheme / Ink.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.25, 0.25, 0.33} +\definecolor{ColorTwo}{rgb}{0.94, 0.95, 0.97} +} +}, + ColorTheme / Steel.code:n = +{% +\RemoveFromHook{package/xcolor/after} + \AddToHook{package/xcolor/after}% +{ % +\definecolor{ColorOne}{rgb}{0.27, 0.25, 0.2} +\definecolor{ColorTwo}{rgb}{0.96, 0.96, 0.93} +} +}, + ColorTheme / unknown.code:n = + { + \ClassWarning{tango}{\MessageBreak “ColorTheme” #1 is unknown!\MessageBreak +Possible choices are: \MessageBreak +Blue, Navy, USAF, Azur, Red, Framboise, Brique, + \MessageBreak Sienne, Caramel, Olive, Tannen, GrayGray, BlackAndWhite, Ink and Steel. +\MessageBreak Stay in GrayGray} +}, +%%%% User defined colors %%%%%%%%%%%%%%%%%%%%%%%% +ColorOne.code = \AddToHook{package/xcolor/after}{\definecolor{ColorOne}#1}, +ColorTwo.code = \AddToHook{package/xcolor/after}{\definecolor{ColorTwo}#1}, +ColorOneNamed.code = \AddToHook{package/xcolor/after}{\colorlet{ColorOne}{#1}}, +ColorTwoNamed.code = \AddToHook{package/xcolor/after}{\colorlet{ColorTwo}{#1}}, +%%%% Output %%%%%%%%%%%%%%%%%%%%%%%%%% + Output.choice:, + Output / A4paper.code:n = + { +\TgoAfourPaperOutputtrue + }, +Output / Letter.code:n = +{ +\TgoLetterOutputtrue +\TgoBigTabletOutputtrue +\TgoAfourPaperOutputfalse +}, +Output / BigTablet.code:n = + { +\TgoBigTabletOutputtrue +\TgoAfourPaperOutputfalse + }, +Output / A5paper.code:n = + { +\TgoAfivePaperOutputtrue +\TgoTabletOutputtrue +\TgoAfourPaperOutputfalse + }, +Output / Tablet.code:n = + { +\TgoTabletOutputtrue +\TgoAfourPaperOutputfalse + }, +Output / SmallTablet.code:n = + { +\TgoSmallTabletOutputtrue +\TgoAfourPaperOutputfalse + }, +Output / eReader.code:n = + { +\TgoeReaderOutputtrue +\TgoAfourPaperOutputfalse + }, +Output / Smartphone.code:n = + { +\TgoSmartphoneOutputtrue +\TgoAfourPaperOutputfalse + }, + Output / unknown.code:n = + { + \ClassWarning{tango}{\MessageBreak Value #1 is unknown \MessageBreak + Possible choices are A4paper, A5paper, Letter, BigTablet,\MessageBreak + Tablet, SmallTablet, eReader and Smartphone. + \MessageBreak Selecting A4paper.} +\TgoAfourPaperOutputtrue + }, + %%%%% Stylistic Set %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + StylisticSet.multichoice:, + StylisticSet / upint.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss03}} + }, + StylisticSet / leqslant.code:n = + { +\AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss04}} + }, +StylisticSet / smaller.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss05}} + }, +StylisticSet / subsetneq.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss06}} + }, +StylisticSet / parallelslant.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss07}} + }, + %%%%%%% Character Variants %%%%%%%%%%%%%%%%%%%%%%%%%% + CharacterVariant.multichoice:, + CharacterVariant / zero.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=0}} + }, + CharacterVariant / hslash.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=1}} + }, + CharacterVariant / emptyset.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=2}} + }, + CharacterVariant / epsilon.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=3}} + }, + CharacterVariant / kappa.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=4}} + }, + CharacterVariant / pi.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=5}} + }, + CharacterVariant / phi.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=6}} + }, + CharacterVariant / rho.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=7}} + }, + CharacterVariant / sigma.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=8}} + }, + CharacterVariant / theta.code:n = + { + \AddToHook{package/fontspec/after}% +{ \defaultfontfeatures+[Erewhon Math]{CharacterVariant=9}} + }, +CharacterVariant / Theta.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=10}} + }, +CharacterVariant / partial.code:n = + { + \AddToHook{package/fontspec/after}% + {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=11}} + }, +CharacterVariant / Ecal.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=20}} + }, +CharacterVariant / Qcal.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=21}} + }, +CharacterVariant / Tcal.code:n = + { + \AddToHook{package/fontspec/after}% + { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=22}} + }, + %%%%%%% Numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Numbers.choice:, + Numbers / MathOldStyle.code:n = + { + \AddToHook{package/fontspec/after}% +{\defaultfontfeatures+[Erewhon Math]{Numbers=OldStyle}} + }, + Numbers / TextOldStyle.code:n = + { + \AddToHook{package/fontspec/after}% +{ \defaultfontfeatures+[erewhon]{Numbers=OldStyle}} + }, +Numbers / OldStyle.code:n = + { + \AddToHook{package/fontspec/after}% +{ \defaultfontfeatures+{Numbers=OldStyle} + \defaultfontfeatures+[Erewhon Math]{RawFeature=-onum}} + }, + Numbers / FullOldStyle.code:n = + { + \AddToHook{package/fontspec/after}% +{ \defaultfontfeatures+{Numbers=OldStyle}} + }, + %%%% usage + french.usage=load, + no-statement.usage=load, + no-hyperref.usage=load, + indent.usage=load, +no-indent.usage=load, +ThmNamePos.usage=general, +oneside.usage=load, +twoside.usage=load, +PubliClass.usage=load, +FontSize.usage=general, +ColorTheme.usage=general, +ColorOne.usage=general, +ColorTwo.usage=general, +Output.usage=load, +StylisticSet.usage=load, +CharacterVariant.usage=load, +Numbers.usage=load +} +%%%%% +\ProcessKeyOptions[tango] +%%%%% +\NewDocumentCommand\tgosetup{}{\SetKeys[tango]} +%%%%%%%% +%%%%%%% 10pt %%%%%%%%%%%%% +\NewDocumentCommand\TgoTenPointsFonts{}{% +\renewcommand\TgoSmallerSize{% +\TgoSmallerSizeCommandtrue% +\tgosetup{FontSize=9pt}% +\TgoSmallerSizeCommandfalse% +}% +\renewcommand\normalsize{% + \fontsize{10}{12.7}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip{4.5pt plus 2.5pt minus 1.5pt}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI% + }% +\normalsize% +\ifTgoSmallerSizeCommand% +\else% +\setlength\TgoStandardMargin{1.5em}% +\fi% +\ifx\MakeRobust\@undefined \else% + \MakeRobust\normalsize% +\fi% +\DeclareRobustCommand\small{% + \fontsize{9}{11.45}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip {0pt plus 3pt}% + \setlength\belowdisplayshortskip {4pt plus 2pt minus 2pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 6\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus2\p@ \@minus\p@% + \itemsep \parsep}% + \setlength \belowdisplayskip {\abovedisplayskip}% + \let\@listi\@listI% + }% +\DeclareRobustCommand\footnotesize{% + \fontsize{8}{10.2}\selectfont% + \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}% + \setlength\abovedisplayshortskip{0pt plus 1 pt}% + \setlength\belowdisplayshortskip{3pt plus 2pt minus 1 pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 4\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus\p@ \@minus\p@% + \itemsep \parsep}% + \setlength \belowdisplayskip {\abovedisplayskip}% + }% +\DeclareRobustCommand\scriptsize{\fontsize{7}{8.9}\selectfont}% +\DeclareRobustCommand\tiny{\fontsize{5}{6.4}\selectfont}% +\DeclareRobustCommand\large{\fontsize{11.5}{14.6}\selectfont}% +\DeclareRobustCommand\Large{\fontsize{14}{17}\selectfont}% +\DeclareRobustCommand\LARGE{\fontsize{17}{20}\selectfont}% +\DeclareRobustCommand\huge{\fontsize{20}{23}\selectfont}% +\DeclareRobustCommand\Huge{\fontsize{24}{27}\selectfont}% +\DeclareRobustCommand\HUGE{\fontsize{58}{58}\selectfont}% +}% +%%%%%%%%%%%%%% 11pt %%%%%%%%%%%%%%%%%%%%%% +\NewDocumentCommand\TgoElevenPointsFonts{}{% +\renewcommand\TgoSmallerSize{% +\TgoSmallerSizeCommandtrue% +\tgosetup{FontSize=10pt}% +\TgoSmallerSizeCommandfalse% +}% +\renewcommand\normalsize{% + \fontsize{11}{13.9}\selectfont% + \setlength\abovedisplayskip {6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip {4.5pt plus 2.5pt minus 2 pt}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI}% +\normalsize% +\ifTgoSmallerSizeCommand% +\else% +\setlength\TgoStandardMargin{1.5em}% +\fi% +\ifx\MakeRobust\@undefined \else% + \MakeRobust\normalsize% +\fi% +\DeclareRobustCommand\small{% + \fontsize{10}{12.7}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip {4pt plus 2 pt minus 2pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 6\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus2\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI% + }% +\DeclareRobustCommand\footnotesize{% + \fontsize{9}{11.35}\selectfont% + \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}% + \setlength\abovedisplayshortskip{0pt plus 1pt}% + \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 4\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% +}% +\DeclareRobustCommand\scriptsize{\fontsize{8}{10.2}\selectfont}% +\DeclareRobustCommand\tiny{\fontsize{6}{7.6}\selectfont}% +\DeclareRobustCommand\large{\fontsize{13}{15.85}\selectfont}% +\DeclareRobustCommand\Large{\fontsize{15}{18}\selectfont}% +\DeclareRobustCommand\LARGE{\fontsize{18}{21}\selectfont}% +\DeclareRobustCommand\huge{\fontsize{21}{24}\selectfont}% +\DeclareRobustCommand\Huge{\fontsize{24}{27}\selectfont}% +\DeclareRobustCommand\HUGE{\fontsize{60}{60}\selectfont}% +}% +%%%%%%% 12pt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NewDocumentCommand\TgoTwelvePointsFonts{}{% +\renewcommand\TgoSmallerSize{% +\TgoSmallerSizeCommandtrue% +\tgosetup{FontSize=11pt}% +\TgoSmallerSizeCommandfalse% +}% +\renewcommand\normalsize{% + \fontsize{12}{15.1}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip {4.5pt plus 2.5pt minus2pt}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI}% +\normalsize% +\ifTgoSmallerSizeCommand% +\else% +\setlength\TgoStandardMargin{1.5em}% +\fi% +\ifx\MakeRobust\@undefined \else% + \MakeRobust\normalsize% +\fi% +\DeclareRobustCommand\small{% + \fontsize{11}{13.9}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip{4pt plus 2pt minus 2pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 6\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus2\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI% + }% +\DeclareRobustCommand\footnotesize{% + \fontsize{10}{12.7}\selectfont% + \setlength\abovedisplayskip {6pt plus 2pt minus 4pt}% + \setlength\abovedisplayshortskip{0pt plus 1pt}% + \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 4\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% +}% +\DeclareRobustCommand\scriptsize{\fontsize{9}{11.45}\selectfont}% +\DeclareRobustCommand\tiny{\fontsize{7}{8.9}\selectfont}% +\DeclareRobustCommand\large{\fontsize{14.2}{16.85}\selectfont}% +\DeclareRobustCommand\Large{\fontsize{16.5}{19.2}\selectfont}% +\DeclareRobustCommand\LARGE{\fontsize{19.2}{22}\selectfont}% +\DeclareRobustCommand\huge{\fontsize{22}{25}\selectfont}% +\DeclareRobustCommand\Huge{\fontsize{25}{28}\selectfont}% +\DeclareRobustCommand\HUGE{\fontsize{63}{63}\selectfont}% +}% +%% +%%%%%%% 9pt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NewDocumentCommand\TgoNinePointsFonts{}{% +\renewcommand\TgoSmallerSize{} +\renewcommand\normalsize{% + \fontsize{9}{11.45}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip{4.5pt plus 2.5pt minus 2pt}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI}% +\normalsize% +\setlength\TgoStandardMargin{1.5em}% +\ifx\MakeRobust\@undefined\else% + \MakeRobust\normalsize% +\fi% +\DeclareRobustCommand\small{% + \fontsize{8}{10.25}\selectfont% + \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}% + \setlength\abovedisplayshortskip{0pt plus 3pt}% + \setlength\belowdisplayshortskip{4pt plus 2pt minus 2pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 6\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus2\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \let\@listi\@listI% + }% +\DeclareRobustCommand\footnotesize{% + \fontsize{7}{9}\selectfont% + \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}% + \setlength\abovedisplayshortskip{0pt plus 1pt}% + \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}% + \def\@listi{\leftmargin\leftmargini% + \topsep 4\p@ \@plus2\p@ \@minus2\p@% + \parsep 2\p@ \@plus\p@ \@minus\p@% + \itemsep \parsep}% + \setlength\belowdisplayskip{\abovedisplayskip}% +}% +\DeclareRobustCommand\scriptsize{\fontsize{6}{7.7}\selectfont}% +\DeclareRobustCommand\tiny{\fontsize{5}{6.4}\selectfont}% +\DeclareRobustCommand\large{\fontsize{10.3}{13}\selectfont}% +\DeclareRobustCommand\Large{\fontsize{12.7}{15.4}\selectfont}% +\DeclareRobustCommand\LARGE{\fontsize{15.2}{17.3}\selectfont}% +\DeclareRobustCommand\huge{\fontsize{18}{20}\selectfont}% +\DeclareRobustCommand\Huge{\fontsize{20}{24}\selectfont}% +\DeclareRobustCommand\HUGE{\fontsize{52}{52}\selectfont}% +}% +%% +%% +\ifTgoOneSide% + \LoadClass[oneside]{\TgoPublicationClass}% + \else% + \LoadClass[twoside]{\TgoPublicationClass}% +\fi% +%%%%%%%%%%% +\RequirePackage{xcolor} +%%%% +\RequirePackage{mathtools} +\RequirePackage{amsthm} +%%%% +\RequirePackage{graphicx,microtype,geometry,enumitem,float,afterpage} +% +\RequirePackage{titletoc} +% +\RequirePackage[pagestyles,toctitles,newlinetospace,clearempty,noindentafter]{titlesec} +% +% +\assignpagestyle{\chapter}{empty} +\assignpagestyle{\part}{empty} +\RequirePackage{ccaption,caption} +\DeclareCaptionLabelFormat{tango}{\sffamily\fontseries{sb}\selectfont#1\nobreakspace#2} +\captionsetup{font={sf,small},labelformat=tango,labelfont={color=ColorOne}} +\newfixedcaption{\tgofigcaption}{figure} +\newfixedcaption{\tgotabcaption}{table} + %%% Fontes + %% + \RequirePackage{fontspec} +\RequirePackage{unicode-math}[2020/01/31] + \defaultfontfeatures+{Ligatures=TeX,RawFeature={+pnum}} +% + \SetTgoBaseFonts + %% + \thinmuskip=2.5mu + \medmuskip=3mu plus 1mu minus 3mu + \thickmuskip=4mu plus 3mu minus 0.5mu + %% +\setmonofont{Inconsolatazi4}[Scale=MatchLowercase] +% + \setsansfont{NotoSans}[% + Scale=0.9, + Ligatures=TeX, + UprightFeatures={ +Font=NotoSansMedium +}, +ItalicFeatures={ +Font=NotoSansMediumItalic +}, +BoldFeatures={ +Font=NotoSansBold +}, +BoldItalicFeatures={ +Font=NotoSansBoldItalic +}, +FontFace={ul}{n}{Font=NotoSansThin}, +FontFace={ul}{it}{Font=NotoSansThinItalic}, +FontFace={el}{n}{Font=NotoSansExtraLight}, +FontFace={el}{it}{Font=NotoSansExtraLightItalic}, +FontFace={l}{n}{Font=NotoSansLight}, +FontFace={l}{it}{Font=NotoSansLightItalic}, +FontFace={sl}{n}{Font=NotoSansRegular}, +FontFace={sl}{it}{Font=NotoSansItalic}, +FontFace={sb}{n}{Font=NotoSansSemiBold}, +FontFace={sb}{it}{Font=NotoSansSemiBoldItalic}, +FontFace={eb}{n}{Font=NotoSansExtraBold}, +FontFace={eb}{it}{Font=NotoSansExtraBoldItalic}, +FontFace={ub}{n}{Font=NotoSansBlack}, +FontFace={ub}{it}{Font=NotoSansBlackItalic}, +] +%% +\DeclareFontSeriesDefault[sf]{md}{sl} +% +% +\RequirePackage{fourier-orns}% +% +%% OTF Fonts Commands +%% +\NewDocumentCommand{\superiors}{}{\addfontfeature{RawFeature=+sups}} +\NewDocumentCommand{\scinferiors}{}{\addfontfeature{RawFeature=+sinf}} +\NewDocumentCommand{\smartfracs}{}{\addfontfeature{RawFeature=+frac}} +\NewDocumentCommand{\fullsc}{m}{{\addfontfeature{RawFeature=+c2sc}\MakeUppercase{#1}}} +\DeclareTextFontCommand{\textsup}{\superiors} +\DeclareTextFontCommand{\textscinf}{\scinferiors} +\DeclareTextFontCommand{\smartfrac}{\smartfracs} +\NewDocumentCommand{\olddigits}{}{\addfontfeature{RawFeature={-lnum,+onum}}} +\NewDocumentCommand{\propdigits}{}{\addfontfeature{RawFeature={-tnum,+pnum}}} +\NewDocumentCommand{\liningdigits}{}{\addfontfeature{RawFeature={-onum,+lnum}}} +\NewDocumentCommand{\tabulardigits}{}{\addfontfeature{RawFeature={-pnum,+tnum}}} +% + % + %%%%%%%% My taylor is rich %%%%%%%%%%% +% +\RequirePackage{iflang} +\RequirePackage{babel} +\IfLanguageName{nil}{% +\ClassError{tango}{No language option is given} +{% +You *must* pass at least one language\MessageBreak +option for babel to the tango class.} +}{} +% +% +\ifTgoFrenchLanguage +\frenchsetup{StandardLists,og=«, fg=»,PartNameFull=false, +SmallCapsFigTabCaptions=false, +CustomiseFigTabCaptions=false} +\addto\captionsfrench{% DF +\renewcommand\TgoTheoremName{Théorème} +\renewcommand\TgoDefinitionName{Définition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemme} +\renewcommand\TgoCorollaryName{Corollaire} +\renewcommand\TgoRemarkName{Remarque} +\renewcommand\TgoExampleName{Exemple} +\renewcommand\TgoContentsName{Sommaire} +\renewcommand\TgoExerciseName{Exercice} +\renewcommand\TgoExercisesSubsectionName{Exercices} +\renewcommand\TgoExercisesSectionName{Exercices} +} +\fi +%%% +\ifTgoNGermanLanguage +\addto\captionsngerman{% +\renewcommand\TgoTheoremName{Satz} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Korollar}%% ???? +\renewcommand\TgoRemarkName{Bemerkung} +\renewcommand\TgoExampleName{Beispiel} +\renewcommand\TgoContentsName{Inhaltsverzeichnis} +\renewcommand\TgoExerciseName{Übung} +\renewcommand\TgoExercisesSubsectionName{Übungen} +\renewcommand\TgoExercisesSectionName{Übungen} +} +\fi +% +%%% +\ifTgoGermanLanguage +\addto\captionsgerman{% +\renewcommand\TgoTheoremName{Satz} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Korollar}%% ???? +\renewcommand\TgoRemarkName{Bemerkung} +\renewcommand\TgoExampleName{Beispiel} +\renewcommand\TgoContentsName{Inhaltsverzeichnis} +\renewcommand\TgoExerciseName{Übung} +\renewcommand\TgoExercisesSubsectionName{Übungen} +\renewcommand\TgoExercisesSectionName{Übungen} +} +\fi +% +%%% +\ifTgoNAustrianLanguage +\addto\captionsnaustrian{% +\renewcommand\TgoTheoremName{Satz} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Korollar}%% ???? +\renewcommand\TgoRemarkName{Bemerkung} +\renewcommand\TgoExampleName{Beispiel} +\renewcommand\TgoContentsName{Inhaltsverzeichnis} +\renewcommand\TgoExerciseName{Übung} +\renewcommand\TgoExercisesSubsectionName{Übungen} +\renewcommand\TgoExercisesSectionName{Übungen} +} +\fi +% +%%% +\ifTgoNSwissGermanLanguage +\addto\captionsnswissgerman{% +\renewcommand\TgoTheoremName{Satz} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Korollar}%% ???? +\renewcommand\TgoRemarkName{Bemerkung} +\renewcommand\TgoExampleName{Beispiel} +\renewcommand\TgoContentsName{Inhaltsverzeichnis} +\renewcommand\TgoExerciseName{Übung} +\renewcommand\TgoExercisesSubsectionName{Übungen} +\renewcommand\TgoExercisesSectionName{Übungen} +} +\fi +% +%%% +\ifTgoItalianLanguage +\addto\captionsitalian{% +\renewcommand\TgoTheoremName{Teorema} +\renewcommand\TgoDefinitionName{Definizione} +\renewcommand\TgoPropositionName{Proposizione} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollario} +\renewcommand\TgoRemarkName{Nota}%%???? +\renewcommand\TgoExampleName{Esempio} +\renewcommand\TgoContentsName{Sommario}%%Contenuti???? +\renewcommand\TgoExerciseName{Esercizio} +\renewcommand\TgoExercisesSubsectionName{Esercizi} +\renewcommand\TgoExercisesSectionName{Esercizi} +} +\fi +% +%%% +\ifTgoSpanishLanguage +\addto\captionsspanish{% +\renewcommand\TgoTheoremName{Teorema} +\renewcommand\TgoDefinitionName{Definición} +\renewcommand\TgoPropositionName{Proposición} +\renewcommand\TgoLemmaName{Lema} +\renewcommand\TgoCorollaryName{Corolario} +\renewcommand\TgoRemarkName{Osservación}%%???? +\renewcommand\TgoExampleName{Ejemplo} +\renewcommand\TgoContentsName{Sumario}%%???? +\renewcommand\TgoExerciseName{Ejercicio} +\renewcommand\TgoExercisesSubsectionName{Ejercicios} +\renewcommand\TgoExercisesSectionName{Ejercicios} +} +\fi +% +%%% +\ifTgoEnglishLanguage +\addto\captionsenglish{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% +\ifTgoBritishLanguage +\addto\captionsbritish{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% +\ifTgoAmericanLanguage +\addto\captionsamerican{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% +\ifTgoCanadianLanguage +\addto\captionscanadian{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% +\ifTgoAustralianLanguage +\addto\captionsaustralian{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% +\ifTgoNewZealandLanguage +\addto\captionsnewzealand{% +\renewcommand\TgoTheoremName{Theorem} +\renewcommand\TgoDefinitionName{Definition} +\renewcommand\TgoPropositionName{Proposition} +\renewcommand\TgoLemmaName{Lemma} +\renewcommand\TgoCorollaryName{Corollary} +\renewcommand\TgoRemarkName{Remark} +\renewcommand\TgoExampleName{Example} +\renewcommand\TgoContentsName{Contents} +\renewcommand\TgoExerciseName{Exercise} +\renewcommand\TgoExercisesSubsectionName{Exercises} +\renewcommand\TgoExercisesSectionName{Exercises} +} +\fi +% +%%% Last package +\ifTgoNoHyperref +\else +\RequirePackage[colorlinks,linkcolor=ColorOne,urlcolor=ColorOne]{hyperref} +\fi +%% + %%% +%%%%%%% parindent %%%%%%%%%%%%%%%%%%%%%%%% +\setlength\parindent{\TgoStandardMargin} +\setlength{\parskip}{0pt plus 1pt} +\ifTgoSmartphoneOutput +\setlength{\parindent}{0pt} +\setlength{\parskip}{3pt plus 2pt minus1pt} +\else +\ifTgoParindentZero +\setlength{\parindent}{0pt} +\setlength{\parskip}{3pt plus 1pt} +\fi\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand\TgoCurrentLists{} +%\ifTgoFrenchLanguage +%\setlength{\TgoTitleIndent}{\parindent} +%\else +%\setlength{\TgoTitleIndent}{0em} +%\fi +\ifTgoTitleIndentZero +\setlength{\TgoTitleIndent}{0em} +\else +\setlength{\TgoTitleIndent}{\parindent} +\fi +% +% +\renewcommand\labelitemi{\textbullet} +\renewcommand\labelitemii{\textopenbullet} +\renewcommand\labelitemiii{\starredbullet} +\renewcommand\labelitemiv{\textperiodcentered} +%%%%% +\NewDocumentCommand\renewtgolabels{% +s E{1234}{ {} {} {} {} }% +} +{% +\IfBooleanTF{#1}% +{% +\IfBlankTF{#2}% +{\renewcommand\labelitemi{\textbullet}}% +{\renewcommand\labelitemi{#2}}% +\IfBlankTF{#3}% +{\renewcommand\labelitemii{\textopenbullet}}% +{\renewcommand\labelitemii{#3}}% +\IfBlankTF{#4}% +{\renewcommand\labelitemiii{\starredbullet}}% +{\renewcommand\labelitemiii{#4}}% +\IfBlankTF{#5}% +{\renewcommand\labelitemiv{\textperiodcentered}}% +{\renewcommand\labelitemiv{#5}}% +}% +{% +\IfBlankF{#2}{\renewcommand\labelitemi{#2}}% +\IfBlankF{#3}{\renewcommand\labelitemii{#3}}% +\IfBlankF{#4}{\renewcommand\labelitemiii{#4}}% +\IfBlankF{#5}{\renewcommand\labelitemiv{#5}}% +}% +\TgoCurrentLists% +}% +\NewDocumentCommand\tgosmartlists{} +{% +\RenewDocumentCommand\TgoCurrentLists{}{\tgosmartlists} +\setlength{\leftmargini}{\TgoStandardMargin} +\setlength{\leftmarginii}{\TgoStandardMargin} +\setlength{\leftmarginiii}{\TgoStandardMargin} +\setlength{\leftmarginiv}{\TgoStandardMargin} +\setlist{ + itemsep=0.3ex plus 0.1ex minus 0.1ex, + parsep=0.3ex plus 0.1ex minus 0.1ex, + topsep=0.3ex plus 0.2ex minus 0.1ex, + partopsep=0.3ex plus 0.1ex minus 0.1ex +} +\setlist[itemize]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, labelindent=\TgoStandardMargin+\parindent, +itemindent=*} +% +\setlist[itemize,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* } +% +\setlist[enumerate]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, +labelindent=\TgoStandardMargin+\parindent,widest=0, itemindent=*} +% +\setlist[enumerate,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* } +% +} +%%% +\NewDocumentCommand\tgostandardlists{} +{% +\RenewDocumentCommand\TgoCurrentLists{}{\tgostandardlists} +\setlength{\leftmargini}{\TgoStandardMargin} +\setlength{\leftmarginii}{\TgoStandardMargin} +\setlength{\leftmarginiii}{\TgoStandardMargin} +\setlength{\leftmarginiv}{\TgoStandardMargin} +\setlist{ + itemsep=0.4ex plus 0.2ex minus 0.2ex, + parsep=0.4ex plus 0.2ex minus 0.2ex, + topsep=0.8ex plus 0.4ex minus 0.4ex, + partopsep=0.4ex plus 0.2ex minus 0.2ex +} +\setlist[itemize]{leftmargin=\TgoStandardMargin, align=left, labelindent=0em, +labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!} +%% +\setlist[itemize,1]{leftmargin=2\TgoStandardMargin, align=left, labelindent=\TgoStandardMargin, labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!} +% +\setlist[enumerate]{leftmargin=\TgoStandardMargin, align=left, labelindent=0em, +labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!} +% +\setlist[enumerate,1]{leftmargin=2\TgoStandardMargin, align=left, labelindent=\TgoStandardMargin, labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!} +} +\renewcommand{\labelenumii}{\alph{enumii}.} + +\tgostandardlists +% +% +%\NewDocumentCommand\testlists{}{ +%\setlength{\leftmargini}{\TgoStandardMargin} +%\setlength{\leftmarginii}{\TgoStandardMargin} +%\setlength{\leftmarginiii}{\TgoStandardMargin} +%\setlength{\leftmarginiv}{\TgoStandardMargin} +%\setlist{ +% itemsep=0.4ex plus 0.2ex minus 0.2ex, +% parsep=0.4ex plus 0.2ex minus 0.2ex, +% topsep=0.8ex plus 0.4ex minus 0.4ex, +% partopsep=0.4ex plus 0.2ex minus 0.2ex +%} +%\setlist[itemize]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, labelindent=\TgoStandardMargin+\parindent, +%itemindent=*} +%% +%\setlist[itemize,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* } +%% +%\setlist[enumerate]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, +%labelindent=\TgoStandardMargin+\parindent,widest=0, itemindent=*} +%% +%\setlist[enumerate,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* } +%% +%} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpagestyle{tango}{ + \ifTgoOneSide +\ifTgoBook + \sethead {\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitle}{} + {\sffamily\thepage} % all + \else + \sethead{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle}{} + {\sffamily\thepage}% all + \fi +\else +\ifTgoBook +\sethead[\sffamily\thepage] +[\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitle][] % even + {}{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle} + {\sffamily\thepage} % odd +\else + \sethead[\sffamily\thepage][\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle][] % even + {}{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle} + {\sffamily\thepage}% odd +\fi +\fi} + %%%%%%%%%%%% +\pagestyle{tango} +%%%%%%%%%%%%%% +%%% Mise en forme des titres %%%%%%%%%%%%%%% +\setcounter{secnumdepth}{2} +%%% +\ifTgoBook +\newcommand\TgoChapterBox[1]{% +{\filright\sffamily\addfontfeature{RawFeature=-onum}\fontseries{eb}\selectfont\HUGE\hspace*{-0.06em}\thechapter}% +\quad\parbox{0.75\textwidth}{\filright#1} +} +\titleformat{\part}[display]{\centering\color{ColorOne}\sffamily +\addfontfeature{RawFeature=-onum}\fontseries{eb}\selectfont\Huge} +{\LARGE\partname~\thepart}{\baselineskip}{} +%% +\titleformat{name=\chapter}[block]{\filright\color{ColorOne}\fontspec{\TgoChapterTitleFont}\addfontfeature{RawFeature=-onum}\huge} +{}{0em}{\TgoChapterBox} +%%% +\titleformat{name=\chapter,numberless}[block]{\filright\color{ColorOne}\fontspec{\TgoChapterTitleFont}\addfontfeature{RawFeature=-onum}\huge} +{}{0em}{} +\fi% +\titleformat{\section}{\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}% +\fontseries{b}\selectfont\large}{\thesection}{1em}{\uppercase}% +\titleformat{\subsection}{\color{ColorOne}\sffamily\fontseries{sb}\selectfont\large}{\thesubsection}{1em}{}% +\titleformat{\subsubsection}{\color{ColorOne}\sffamily\fontseries{sb}\selectfont}{\thesubsubsection}{0.7em}{}% +\titleformat{\paragraph}[runin]{\itshape}{\theparagraph.}{0.5em}{}[. — ]% +\titleformat{\subparagraph}[runin]{}{\thesubparagraph.}{0.5em}{}[. — ]% +\titlespacing{\chapter}{\TgoTitleIndent}{0pt}{6ex}% +\titlespacing{\section}{\TgoTitleIndent}{12pt plus 5pt minus 4pt}{6pt plus 3pt minus 2pt}% +\titlespacing{\subsection}{\TgoTitleIndent}{12pt plus 5pt minus 4pt}{6pt plus 3pt minus 2pt}% +\titlespacing{\subsubsection}{\TgoTitleIndent}{7pt plus 3pt minus 2pt}{3pt plus 2pt minus 1pt}% +\titlespacing{\paragraph}{\TgoTitleIndent}{7pt plus 3pt minus 2pt}{3pt plus 1pt minus 1pt}% +\titlespacing{\subparagraph}{\TgoTitleIndent}{4pt plus 2pt minus 2pt}{3pt plus 1pt minus 1pt}% +% +\ifTgoBook +\NewCommandCopy{\tgotitle}{\chapter} +\else%%article +\NewDocumentCommand\tgotitle{s m}{% +\IfBooleanTF{#1}{% +\clearpage\thispagestyle{empty} +% \vspace*{5\p@}% + {\parindent=0pt \raggedright + \normalfont + \interlinepenalty\@M +\advance\leftskip by \TgoTitleIndent +\fontspec{\TgoChapterTitleFont}\huge\color{ColorOne}#2 +\par} \vspace {\TgoAfterChapterSkip}\par} + {% +\clearpage\thispagestyle{empty} +% \vspace*{5\p@}% + {\parindent=0pt \raggedright + \normalfont + \interlinepenalty\@M +\advance\leftskip by \TgoTitleIndent +\fontspec{\TgoChapterTitleFont}\huge\color{ColorOne}#2 +\par} \vspace {\TgoAfterChapterSkip}\par} + } + \fi +%%%%%%% +%%%%%%%Table des matières +%%%%%%% +\ifTgoBook\else +\RenewDocumentCommand\tableofcontents{}{% +{\color{ColorOne}\parskip=0pt% +\noindent\titlerule[1.3pt]% +\vspace{-1\baselineskip}\vspace{1.6pt} \par % +\noindent\titlerule[.5pt]% +}% + \vspace{-10pt}\par% + \section*{\contentsname} + \@starttoc{toc}% +{\color{ColorOne}\parskip=0pt% +\noindent\titlerule[0.5pt]% +\vspace{-1\baselineskip}\vspace{2.4pt} \par % +\noindent\titlerule[1.3pt]% +}% +\par % +\vspace{2\baselineskip}% +\par % + }% + \fi + \IfPackageLoadedTF{hyperref}% +{% +\NewCommandCopy{\TgoOriginalToc}{\tableofcontents}% +\RenewDocumentCommand\tableofcontents{}{{\hypersetup{hidelinks}\TgoOriginalToc}}% +}% +{} +%% +%% +\ifTgoBook +\NewDocumentCommand\tgoshorttoc{}{} +\titlecontents{part} + [50pt] % ie, 1.5em (chapter) + 2.3em + {\large\sffamily\fontseries{sb}\selectfont\color{ColorOne}} + {\contentslabel{50pt}} + {\hspace*{-50pt}} + {\titlerule*[1pc]{}\contentspage} +\titlecontents{chapter} + [16pt] % ie, 1.5em (chapter) + 2.3em + {\sffamily\fontseries{b}\selectfont\color{ColorOne}} + {\contentslabel{16pt}} + {\hspace*{-6pt}} + {\titlerule*[1pc]{}\contentspage} +\titlecontents{section} + [3.6em] % ie, 1.5em (chapter) + 2.3em + {\sffamily\fontseries{m}\selectfont} + {\contentslabel{2.5em}} + {\hspace*{-2.5em}} + {\titlerule*[1pc]{.}\contentspage} +\titlecontents{subsection} + [6.4em] % ie, 1.5em (chapter) + 2.3em + {\sffamily\fontseries{l}\selectfont} + {\contentslabel{3.2em}} + {\hspace*{-3.2em}} + {\titlerule*[1pc]{.}\contentspage} + \else + \NewCommandCopy{\tgoshorttoc}{\tableofcontents} + \RenewDocumentCommand\tableofcontents{}{} + \ifTgoFrenchLanguage + \renewcommand{\frenchcontentsname}{\TgoContentsName} +\fi + \setcounter{tocdepth}{2} + \titlecontents{section} + [1.7em] % ie, 1.5em (chapter) + 2.3em + {\sffamily\fontseries{sb}\selectfont} + {\contentslabel{2.em}} + {\hspace*{-2.em}} + {\titlerule*[1pc]{}\contentspage} +\titlecontents{subsection} + [4em] % ie, 1.5em (chapter) + 2.3em + {\sffamily} + {\contentslabel{2.7em}} + {\hspace*{-2.7em}} + {\titlerule*[1pc]{.}\contentspage} +\titlecontents{subsubsection} + [6em] % ie, 1.5em (chapter) + 2.3em + {\sffamily\fontseries{l}\selectfont} + {\contentslabel{3.5em}} + {\hspace*{-3.5em}} + {\titlerule*[1pc]{.}\contentspage} + \fi +% +%%Init +\NewDocumentCommand\AfourCommand{+m}{} +% +\NewDocumentCommand\LetterCommand{+m}{} +% +\NewDocumentCommand\BigTabletCommand{+m}{} +% +\NewDocumentCommand\TabletCommand{+m}{} +% +\NewDocumentCommand\AfiveCommand{+m}{} +% +\NewDocumentCommand\SmallTabletCommand{+m}{} +% +\NewDocumentCommand\eReaderCommand{+m}{} +% +\NewDocumentCommand\SmartphoneCommand{+m}{} +% +\NewDocumentCommand\XAfourCommand{+m}{} +% +\NewDocumentCommand\XLetterCommand{+m}{} +% +\NewDocumentCommand\XBigTabletCommand{+m}{} +% +\NewDocumentCommand\XTabletCommand{+m}{} +% +\NewDocumentCommand\XAfiveCommand{+m}{} +% +\NewDocumentCommand\XSmallTabletCommand{+m}{} +% +\NewDocumentCommand\XeReaderCommand{+m}{} +% +\NewDocumentCommand\XSmartphoneCommand{+m}{} + % +%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%Output Format %%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%%%%% Afour %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +\ifTgoAfourPaperOutput +% +\RenewDocumentCommand\AfourCommand{+m}{#1} +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XeReaderCommand{+m}{#1} +% +\RenewDocumentCommand\XSmartphoneCommand{+m}{#1} + % + %% +%\ifTgoOneSide +\geometry{paperwidth=21cm,paperheight=29.7cm, +heightrounded,top=2cm,inner=2.75cm,outer=2.75cm,bottom=3.6cm, +headheight=16pt,headsep=21pt,footskip=50pt} +%\else +%\geometry{paperwidth=21cm,paperheight=29.7cm, +%heightrounded,top=2cm,inner=2.3cm,outer=3.2cm,bottom=3.6cm, +%headheight=16pt,headsep=21pt,footskip=50pt} +%\fi +% +\setlength{\TgoAfterChapterSkip}{21pt} +% +\NewDocumentCommand\tgocover{O{A4Cover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +% +\fi +%%%%%%% +%%%%%% Big Tablet or Letter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoBigTabletOutput +% +\ifTgoLetterOutput +% +\RenewDocumentCommand\LetterCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\else +% +\RenewDocumentCommand\BigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\fi +% +\RenewDocumentCommand\XAfourCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XeReaderCommand{+m}{#1} +% +\RenewDocumentCommand\XSmartphoneCommand{+m}{#1} + % +%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%% +% +%% +\ifTgoLetterOutput +%\ifTgoOneSide +\geometry{paperwidth=8.5in,paperheight=11in, +heightrounded,top=1.9cm,inner=2.8cm,outer=2.8cm,bottom=3cm, +headheight=16pt,headsep=20pt,footskip=14pt} +%\else +%\geometry{paperwidth=8.5in,paperheight=11in, +%heightrounded,top=1.9cm,inner=2.4cm,outer=3.2cm,bottom=3.6cm, +%headheight=16pt,headsep=20pt,footskip=14pt} +%\fi +% +\setlength{\TgoAfterChapterSkip}{22pt} +% +\NewDocumentCommand\tgocover{O{LetterCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +% +\else +% +\setlength{\TgoAfterChapterSkip}{21pt} +% +\geometry{paperwidth=19.8cm,paperheight=26.4cm, +heightrounded,top=1.8cm,inner=2.4cm,outer=2.4cm,bottom=2.7cm, +headheight=16pt,headsep=14pt,footskip=14pt} +% +\NewDocumentCommand\tgocover{O{BigTabletCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +\fi +\fi +%%%%%%% +%%%%%% Tablet or A5%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoTabletOutput +% +\ifTgoAfivePaperOutput +\RenewDocumentCommand\AfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\else +% +\RenewDocumentCommand\TabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\fi +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\RenewDocumentCommand\XAfourCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XeReaderCommand{+m}{#1} +% +\RenewDocumentCommand\XSmartphoneCommand{+m}{#1} + % +% +%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%% +% +%% +\ifTgoAfivePaperOutput +%\ifTgoOneSide +\geometry{paperwidth=14.85cm,paperheight=21cm, +heightrounded,top=1.2cm,inner=1.8cm,outer=1.8cm,bottom=2.4cm, +headheight=16pt,headsep=11pt,footskip=14pt} +%\else +%\geometry{paperwidth=14.85cm,paperheight=21cm, +%heightrounded,top=1.3cm,inner=1.5cm,outer=2.1cm,bottom=2.4cm, +%headheight=16pt,headsep=11pt,footskip=14pt} +%\fi +% +\setlength{\TgoAfterChapterSkip}{15pt} +% +\NewDocumentCommand\tgocover{O{A5Cover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +%% +\else +%%% +\geometry{paperwidth=16cm,paperheight=22.88cm, +heightrounded,top=1.2cm,inner=1.4cm,outer=1.4cm,bottom=1.8cm, +headheight=16pt,headsep=11pt,footskip=14pt} +% +\setlength{\TgoAfterChapterSkip}{18pt} +% +\NewDocumentCommand\tgocover{O{TabletCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +\fi +\fi +%%%%%% Small Tablet%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoSmallTabletOutput +% +\RenewDocumentCommand\SmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfourCommand{+m}{#1} +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XeReaderCommand{+m}{#1} +% +\RenewDocumentCommand\XSmartphoneCommand{+m}{#1} + % +%%%%%%%%%%%%%%%%%%%%% +\setlength{\TgoAfterChapterSkip}{11pt} +%% + \geometry{paperwidth=12cm,paperheight=18.24cm, +heightrounded,top=1.1cm,inner=0.75cm,outer=0.75cm,bottom=1.3cm, +headheight=14pt,headsep=6pt,footskip=13pt} +% +\NewDocumentCommand\tgocover{O{SmallTabletCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\emergencystretch=2.5em +\tolerance800 +\clubpenalty1000 +\widowpenalty1000% +\fi +%%%%%% eReader %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoeReaderOutput +% +\RenewDocumentCommand\eReaderCommand{+m}{#1} +% +\RenewDocumentCommand\XAfourCommand{+m}{#1} +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmartphoneCommand{+m}{#1} + % +%%%%%%%%%%%%%%%%%%%%% +\setlength{\TgoAfterChapterSkip}{3pt} +%%%%%%%%%%% +% +% +\geometry{paperwidth=10.7cm,paperheight=14.4cm, +heightrounded,top=0.82cm,left=0.5cm,right=0.5cm,bottom=0.8cm, +headheight=18pt,headsep=5pt,footskip=10pt} +%% +% +\NewDocumentCommand\tgocover{O{eReaderCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\sloppy +\fi +%%%%%%%% Smartphone %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoSmartphoneOutput +% +\RenewDocumentCommand\SmartphoneCommand{+m}{#1} +% +\RenewDocumentCommand\XLetterCommand{+m}{#1} +% +\RenewDocumentCommand\XAfourCommand{+m}{#1} +% +\RenewDocumentCommand\XBigTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XAfiveCommand{+m}{#1} +% +\RenewDocumentCommand\XTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XSmallTabletCommand{+m}{#1} +% +\RenewDocumentCommand\XeReaderCommand{+m}{#1} + % +%%%%%%%%%%%%%%%%%%%%% +\setlength{\TgoAfterChapterSkip}{7pt}% +%%%%%%%%%%% +% +%% +\geometry{paperwidth=10cm,paperheight=18cm, +heightrounded,top=1.1cm,inner=0.32cm,outer=0.32cm,bottom=1cm, +headheight=14pt,headsep=10pt,footskip=17pt} +% +\NewDocumentCommand\tgocover{O{SmartphoneCover}}{\InputIfFileExists{#1}{}{% +\ClassWarning{tango}{Fichier #1.tex absent}}} +\flushbottom\sloppy +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setlength{\abovecaptionskip}{4pt plus 1pt minus 1pt} +\setlength{\belowcaptionskip}{4pt plus 1 pt minus 1pt} +% +% +\setlength{\textfloatsep}{10pt plus 4 pt minus 3pt} +\setlength{\intextsep}{4pt plus 2pt minus 1 pt} +% +%%%Environnements %%%%%%%%%%%%%%%%%%% +% +%%%%%% Stolen to amsthm %%%%%%%%%%%%%%% +% +\RenewDocumentCommand\qedsymbol{}{{\ensuremath{\color{ColorOne}\rule{7pt}{7pt}}}}% +\RenewDocumentEnvironment{proof}{o}{% +\IfValueTF{#1}% +{\renewcommand\TgoTempa{#1}} +{\renewcommand\TgoTempa{\proofname}} +\pushQED{\qed}% +\par\nobreak\addvspace{6pt plus 3pt minus 2pt}% +{\color{ColorOne}\sffamily\fontseries{m}\selectfont\itshape% + \TgoTempa}\par\nobreak + }% +{\popQED\par\addvspace{6pt plus 3pt minus 2pt}} +%%%% +%%%% +\newcounter{tgoexo}% +%% +\NewDocumentCommand\exo{s d<> o}{% +\IfValueTF{#2}% +{% +\renewcommand\TgoTempa{#2}% +}% +{% +\renewcommand\TgoTempa{\TgoExerciseName}% +}% +\IfBooleanTF{#1}% +{% +\renewcommand\TgoTempb{\TgoTempa}% +}% +{% +\refstepcounter{tgoexo}% +\renewcommand\TgoTempb{\TgoTempa~\thetgoexo}% +}% +\IfValueTF{#3}% +{% +\renewcommand\TgoTempc{\TgoTempb\space(#3)}% +}% +{% +\renewcommand\TgoTempc{\TgoTempb}% +}% +\@afterindenttrue +\vspace{5pt plus 2pt minus 2pt} +\par% +\textsf{\fontseries{sb}\selectfont\TgoTempc}% +\par\nobreak\vspace{0pt plus 1pt}\par% +}% +% +\newsavebox{\TgoBox} +%%%% +% +\NewDocumentCommand\sec@exo{m}{% +\titleformat{\subsection}[block]{\filcenter\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}% +\fontseries{b}\selectfont}{\thesubsection}{1em}{\MakeUppercase}% +\titlespacing{\subsection}{0em}{10pt plus 10pt minus 4pt}{8pt plus 5pt minus 3pt}% +\subsection*{#1} +\addcontentsline{toc}{subsection}{\protect\numberline{}#1} +} +% +\NewDocumentCommand\secexo{O{\TgoExercisesSubsectionName}}{% +\sec@exo{#1} +\tgostandardlists +}% +\ExpandArgs{c}\NewDocumentCommand{secexo*}{O{\TgoExercisesSubsectionName}}{% +\sec@exo{#1} +\TgoSmallerSize +\tgostandardlists +}% +\NewDocumentCommand\endsecexo{} +{\renewtgolabels\par\addvspace{10pt plus 3pt minus 2pt}\par}% +% +\ExpandArgs{c}\NewDocumentCommand{endsecexo*}{} +{\renewtgolabels\par\addvspace{10pt plus 3pt minus 2pt}\par}% +% +\NewDocumentCommand\chap@exo{m}{% +\titleformat{\section}[block]{\filcenter\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}% +\fontseries{b}\selectfont\large}{\thesection}{1em}{\MakeUppercase}% +\tgostandardlists +\titlespacing{\section}{0em}{18pt plus 10pt minus 4pt}{8pt plus 5pt minus 3pt}% +\section*{#1} +\addcontentsline{toc}{section}{\protect\numberline{}#1} +} +% +\NewDocumentCommand\chapexo{O{\TgoExercisesSectionName}}{% +\chap@exo{#1} +}% +\ExpandArgs{c}\NewDocumentCommand{chapexo*}{O{\TgoExercisesSectionName}}{% +\chap@exo{#1} +\TgoSmallerSize +}% +\NewDocumentCommand\endchapexo{} +{\renewlabelitems\par\addvspace{18pt plus 3pt minus 2pt}\par}% +% +\ExpandArgs{c}\NewDocumentCommand{endchapexo*}{} +{\renewlabelitems\par\addvspace{18pt plus 3pt minus 2pt}\par}% +%%%% +%% +\NewDocumentEnvironment{example}{O{\TgoExampleName}}{% +\par\addvspace{6pt plus 3pt minus 2pt}% +{\sffamily\itshape #1}\par\nobreak% +\@afterheading}% +{\par\addvspace{6pt plus 3pt minus 2pt}\par} +%%% +\NewDocumentEnvironment{remark}{O{\TgoRemarkName}}{% +\par\addvspace{6pt plus 3pt minus 2pt}% +{\sffamily\itshape #1. \textemdash~}\ignorespaces}% +{\par\addvspace{6pt plus 3pt minus 2pt}} +%%% +%%% +\NewDocumentEnvironment{alert}{O{\caution}}{% +\par\addvspace{6pt plus 3pt minus 2pt}\noindent% +{\color{ColorOne}\Large #1}\hspace{1ex}\ignorespaces}% +{\par\addvspace{6pt plus 3pt minus 2pt}} +% +%% +\NewDocumentCommand\newstatement{s m m m o}{% +\setlength\TgoStatementParindent{\parindent} +\ExpandArgs{c}\NewDocumentCommand{#2}{d<> o}% +{% beginning env commands +\refstepcounter{#3} +\IfBooleanTF{#1} +{% +\renewcommand\TgoTempa{#3} +\renewcommand\TgoTempb{subsection} +\ifx\TgoTempa\TgoTempb +\ifTgoTitleIndentZero +\renewcommand\TgoStatementIndent{\noindent} +\setlength\TgoStatementParindent{0em} +\fi +\renewcommand\TgoStatementNumberPrefix{\large\fontseries{sb}\selectfont% +\UseName{the#3}\hspace{1em}}% +\else +\renewcommand\TgoTempb{subsubsection} +\ifx\TgoTempa\TgoTempb +\ifTgoTitleIndentZero +\renewcommand\TgoStatementIndent{\noindent} +\setlength\TgoStatementParindent{0em} +\fi +\fi +\renewcommand\TgoStatementNumberPrefix{\fontseries{sb}\selectfont% +\UseName{the#3}\hspace{1em}}% +\fi +\renewcommand\TgoStatementNumberSuffix{}% +} +{ +\renewcommand\TgoStatementNumberSuffix{~\UseName{the#3}}% +\renewcommand\TgoStatementNumberPrefix{}% +} +\IfValueTF{##2}% +{% +\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}% +}% +{% +\renewcommand\TgoStatementSuffix{}% +}% +\renewcommand\TgoStatementName{#4} +\IfValueT{##1}{% +\renewcommand\TgoStatementName{##1} +} +\par% +\addvspace{8pt plus 3pt minus 2pt}% +\begin{lrbox}{\TgoBox}% +\par% +%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}% +\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5}% +}% +\ExpandArgs{c}\NewDocumentCommand{end#2}{} +{% end env commands +\end{minipage}\end{lrbox} +\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{ +{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset% +\TgoStatementNumberPrefix\fontseries{sb}\selectfont\TgoStatementName% +\TgoStatementNumberSuffix\TgoStatementSuffix\par\nobreak}% +\vspace{2pt}\par% +\addtolength\leftskip{-\fboxsep} +\addtolength\rightskip{-\fboxsep} +\colorbox{ColorTwo}{% +\usebox{\TgoBox}}}% +\par\addvspace{6pt plus 3pt minus 2pt}\par% +}% +\ExpandArgs{c}\NewDocumentCommand{#2*}{d<> o}% +{% beginning env commands +\IfValueTF{##2}% +{% +\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}% +}% +{% +\renewcommand\TgoStatementSuffix{}% +}% +\renewcommand\TgoStatementName{#4} +\IfValueT{##1}{% +\renewcommand\TgoStatementName{##1} +} +\par% +\addvspace{8pt plus 3pt minus 2pt}% +\begin{lrbox}{\TgoBox}% +\par% +%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}% +\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5} +}% +\ExpandArgs{c}\NewDocumentCommand{end#2*}{} +{% end env commands +\end{minipage}\end{lrbox} +\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{ +{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset% +\fontseries{sb}\selectfont\TgoStatementName\TgoStatementSuffix\par\nobreak}% +\vspace{2pt}\par% +\addtolength\leftskip{-\fboxsep} +\addtolength\rightskip{-\fboxsep} +\colorbox{ColorTwo}{% +\usebox{\TgoBox}}}% +\par\addvspace{6pt plus 3pt minus 2pt}\par% +}% +}%%%% +%%%%%%%%%%%% +%%%%%%%%%%%%% +%%%%%%%%%%%% +\NewDocumentCommand\renewstatement{s m m m o}{% +\setlength\TgoStatementParindent{\parindent} +\ExpandArgs{c}\RenewDocumentCommand{#2}{d<> o}% +{% beginning env commands +\refstepcounter{#3} +\IfBooleanTF{#1} +{% +\renewcommand\TgoTempa{#3} +\renewcommand\TgoTempb{subsection} +\ifx\TgoTempa\TgoTempb +\ifTgoTitleIndentZero +\renewcommand\TgoStatementIndent{\noindent} +\setlength\TgoStatementParindent{0em} +\fi +\renewcommand\TgoStatementNumberPrefix{\large\fontseries{sb}\selectfont% +\UseName{the#3}\hspace{1em}}% +\else +\renewcommand\TgoTempb{subsubsection} +\ifx\TgoTempa\TgoTempb +\ifTgoTitleIndentZero +\renewcommand\TgoStatementIndent{\noindent} +\setlength\TgoStatementParindent{0em} +\fi +\fi +\renewcommand\TgoStatementNumberPrefix{\fontseries{sb}\selectfont% +\UseName{the#3}\hspace{1em}}% +\fi +\renewcommand\TgoStatementNumberSuffix{}% +} +{ +\renewcommand\TgoStatementNumberSuffix{~\UseName{the#3}}% +\renewcommand\TgoStatementNumberPrefix{}% +} +\IfValueTF{##2}% +{% +\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}% +}% +{% +\renewcommand\TgoStatementSuffix{}% +}% +\renewcommand\TgoStatementName{#4} +\IfValueT{##1}{% +\renewcommand\TgoStatementName{##1} +} +\par% +\addvspace{8pt plus 3pt minus 2pt}% +\begin{lrbox}{\TgoBox}% +\par% +%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}% +\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5} +}% +\ExpandArgs{c}\RenewDocumentCommand{end#2}{} +{% end env commands +\end{minipage}\end{lrbox} +\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{ +{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset% +\TgoStatementNumberPrefix\fontseries{sb}\selectfont\TgoStatementName% +\TgoStatementNumberSuffix\TgoStatementSuffix\par\nobreak}% +\vspace{2pt}\par% +\addtolength\leftskip{-\fboxsep} +\addtolength\rightskip{-\fboxsep} +\colorbox{ColorTwo}{% +\usebox{\TgoBox}}}% +\par\addvspace{6pt plus 3pt minus 2pt}\par% +}% +\ExpandArgs{c}\RenewDocumentCommand{#2*}{d<> o}% +{% beginning env commands +\IfValueTF{##2}% +{% +\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}% +}% +{% +\renewcommand\TgoStatementSuffix{}% +}% +\renewcommand\TgoStatementName{#4} +\IfValueT{##1}{% +\renewcommand\TgoStatementName{##1} +} +\par% +\addvspace{8pt plus 3pt minus 2pt}% +\begin{lrbox}{\TgoBox}% +\par% +%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}% +\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5} +}% +\ExpandArgs{c}\RenewDocumentCommand{end#2*}{} +{% end env commands +\end{minipage}\end{lrbox} +\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{ +{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset% +\fontseries{sb}\selectfont\TgoStatementName\TgoStatementSuffix\par\nobreak}% +\vspace{2pt}\par% +\addtolength\leftskip{-\fboxsep} +\addtolength\rightskip{-\fboxsep} +\colorbox{ColorTwo}{% +\usebox{\TgoBox}}}% +\par\addvspace{6pt plus 3pt minus 2pt}\par% +}% +}%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifTgoNoStatement +\else +\newcounter{thm} +\newstatement{thm}{thm}{\TgoTheoremName}[\itshape] +\newcounter{defin} +\newstatement{defin}{defin}{\TgoDefinitionName} +\newcounter{coro} +\newstatement{coro}{coro}{\TgoCorollaryName} +\newcounter{propo} +\newstatement{propo}{propo}{\TgoPropositionName}[\itshape] +\newcounter{lem} +\newstatement{lem}{lem}{\TgoLemmaName} +\fi +%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%% +\AtBeginDocument{% + \Umathchardef\Bbbbackslash = 0 0 "E020 \relax + \Umathchardef\varemptyset = 0 0 "E021 \relax + \Umathchardef\mupvarzero = 0 0 "E022 \relax + \Umathchardef\mbfvarzero = 0 0 "E023 \relax + \Umathchardef\mupvarpartial = 0 0 "E030 \relax + \Umathchardef\mupvarvarpi = 0 0 "E032 \relax + \Umathchardef\mbfvarpartial = 0 0 "E040 \relax + \Umathchardef\mbfvarvarrho = 0 0 "E041 \relax + \Umathchardef\mbfvarvarpi = 0 0 "E042 \relax + \Umathchardef\mbfvec = 0 0 "E044 \relax + \Umathchardef\mbfwp = 0 0 "E045 \relax + \Umathchardef\mbfdotlessi = 0 0 "E046 \relax + \Umathchardef\mbfdotlessj = 0 0 "E047 \relax + \Umathchardef\mbfhbar = 0 0 "E048 \relax + \Umathchardef\mbfell = 0 0 "E049 \relax + \Umathchardef\mbftriangleleft = 0 0 "E04E \relax + \Umathchardef\mbftriangleright = 0 0 "E04F \relax + \Umathchardef\mbfitvarpartial = 0 0 "E060 \relax + \Umathchardef\mbfitvarvarrho = 0 0 "E061 \relax + \Umathchardef\mbfitvarvarpi = 0 0 "E062 \relax + \Umathchardef\mbfitwp = 0 0 "E065 \relax + \Umathchardef\mbfimath = 0 0 "E066 \relax + \Umathchardef\mbfjmath = 0 0 "E067 \relax + \Umathchardef\mbfithbar = 0 0 "E068 \relax + \Umathchardef\mbfitell = 0 0 "E069 \relax + \Umathchardef\mitvarpartial = 0 0 "E070 \relax + \Umathchardef\mitvarvarrho = 0 0 "E071 \relax + \Umathchardef\mitvarvarpi = 0 0 "E072 \relax + \Umathchardef\mithbar = 0 0 "E078 \relax + \Umathchardef\mapstochar = 3 0 "E08D \relax + \Umathchardef\lhook = 3 0 "E08E \relax + \Umathchardef\rhook = 3 0 "E08F \relax + \Umathchardef\parallelslant = 3 0 "E090 \relax + \Umathchardef\nparallelslant = 3 0 "E091 \relax + \Umathchardef\shortparallelslant = 3 0 "E092 \relax + \Umathchardef\nshortparallelslant = 3 0 "E093 \relax + \Umathchardef\lesseqslantgtr = 3 0 "E094 \relax + \Umathchardef\gtreqslantless = 3 0 "E095 \relax + \Umathchardef\lesseqqslantgtr = 3 0 "E096 \relax + \Umathchardef\gtreqqslantless = 3 0 "E097 \relax + \Umathchardef\nleqqslant = 3 0 "E098 \relax + \Umathchardef\ngeqqslant = 3 0 "E099 \relax + \Umathchardef\varsymscrE = 0 0 "E07D \relax + \Umathchardef\varsymscrQ = 0 0 "E07E \relax + \Umathchardef\varsymscrT = 0 0 "E07F \relax + \Umathchardef\varsymbfscrE = 0 0 "E06D \relax + \Umathchardef\varsymbfscrQ = 0 0 "E06E \relax + \Umathchardef\varsymbfscrT = 0 0 "E06F \relax + % \widearc and\overrightarc + \newcommand*{\widearc}{\Umathaccent 0 0 "E540 }% + \newcommand*{\overrightarc}{\Umathaccent 0 0 "20D5 }% + % From FourierOrns + \Umathchardef\forbidden = 0 0 "E0B0 \relax + \Umathchardef\beware = 0 0 "E0B1 \relax + \Umathchardef\boom = 0 0 "E0B2 \relax + \Umathchardef\thething = 0 0 "E0B4 \relax + \Umathchardef\xswordsup = 0 0 "E0B5 \relax + \Umathchardef\xswordsdown = 0 0 "E0B6 \relax + % amssymb + \IfPackageLoadedTF{amssymb}% + {\ClassWarning{tango}{% + Tango provides all AMS symbols.\MessageBreak + Loading amssymb.sty is not advisable.\MessageBreak + Reported}% + }% + {% AMS Symbols not referenced in unicode-math-table.tex + % \Umathchardef\<cmd> = <math type> <family> <slot> + % <math type> : \mathord=0 \mathrel=3 ; <family>=0 + \Umathchardef\circledR = 0 0 "24C7 \relax + \Umathchardef\circledS = 0 0 "24C8 \relax + \Umathchardef\diagup = 0 0 "27CB \relax + \Umathchardef\diagdown = 0 0 "27CD \relax + \Umathchardef\shortmid = 3 0 "E0A2 \relax + \Umathchardef\shortparallel = 3 0 "E0A3 \relax + \Umathchardef\nshortmid = 3 0 "E0A4 \relax + \Umathchardef\nshortparallel = 3 0 "E0A5 \relax + \Umathchardef\lvertneqq = 3 0 "E0A6 \relax + \Umathchardef\gvertneqq = 3 0 "E0A7 \relax + \Umathchardef\nleqslant = 3 0 "E0A8 \relax + \Umathchardef\ngeqslant = 3 0 "E0A9 \relax + \Umathchardef\nleqq = 3 0 "E0AA \relax + \Umathchardef\ngeqq = 3 0 "E0AB \relax + \Umathchardef\varsubsetneq = 3 0 "E0AC \relax + \Umathchardef\varsupsetneq = 3 0 "E0AD \relax + \Umathchardef\nsubseteqq = 3 0 "E0AE \relax + \Umathchardef\nsupseteqq = 3 0 "E0AF \relax + \Umathchardef\varsubsetneqq = 3 0 "E09C \relax + \Umathchardef\varsupsetneqq = 3 0 "E09D \relax + \Umathchardef\npreceq = 3 0 "E09E \relax + \Umathchardef\nsucceq = 3 0 "E09F \relax + \let\centerdot\cdotp + \let\restriction\upharpoonright + \let\doteqdot\Doteq + \let\doublecup\Cup + \let\doublecap\Cap + \let\llless\lll + \let\gggtr\ggg + \let\circlearrowleft\acwopencirclearrow + \let\circlearrowright\cwopencirclearrow + \let\lozenge\mdlgwhtlozenge + \let\blacklozenge\mdlgblklozenge + \let\square\mdlgwhtsquare + \let\blacksquare\mdlgblksquare + \let\dashleftarrow\leftdasharrow + \let\dashrightarrow\rightdasharrow + \let\ntriangleleft\nvartriangleleft + \let\ntriangleright\nvartriangleright + \let\varpropto\propto + \let\thicksim\sim + \let\thickapprox\approx + \let\smallsmile\smile + \let\smallfrown\frown + }% + % latexsym + \IfPackageLoadedTF{latexsym}% + {\ClassWarning{tango}{% + Tango provides all LaTeX symbols.\MessageBreak + Loading latexsym.sty is not advisable.\MessageBreak + Reported}% + }% + {\let\lhd\vartriangleleft + \let\rhd\vartriangleright + \let\unlhd\trianglelefteq + \let\unrhd\trianglerighteq + \let\leadsto\rightcurvedarrow + \let\Box\lgwhtsquare + \let\Diamond\mdlgwhtdiamond + }% +} +\endinput
\ No newline at end of file diff --git a/macros/luatex/latex/yamlvars/yamlvars.lua b/macros/luatex/latex/yamlvars/yamlvars.lua index 29393bd5a1..b63dabeccb 100644 --- a/macros/luatex/latex/yamlvars/yamlvars.lua +++ b/macros/luatex/latex/yamlvars/yamlvars.lua @@ -1,5 +1,5 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2023-12-08 +--% 2024-08-17 --% Copyright (C) 2021-2023 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy @@ -55,6 +55,7 @@ YAMLvars.setts.decstr = 'xfm' -- if in declaration key the value is a string (in YAMLvars.setts.undeclared = false YAMLvars.setts.overwrite = false YAMLvars.setts.lowercase = false +YAMLvars.setts.stripvars = true -- todo add this as an option accessible in latex YAMLvars.setts.tabmidrule = 'midrule' YAMLvars.setts.prcstring = true YAMLvars.setts.xfm = {} @@ -86,7 +87,7 @@ end function YAMLvars.debugtalk(s, ss) if YAMLvars.debug then - pl.tex.help_wrt(s, ss) + pl.tex.wrth(s, ss) end end @@ -100,7 +101,7 @@ end function YAMLvars.xfm.markdown(var, val) --return '\\begin{markdown} '..val..'\n \\end{markdown}' - pl.tex.help_wrt(val, md) + pl.tex.wrth(val, md) return [[begin markdown ..val.. par end markdown]] @@ -206,6 +207,7 @@ function YAMLvars.dec.toggle(var, dft) end function YAMLvars.dec.length(var, dft) + dft = dft or '0pt' tex.print('\\global\\newlength{\\'..var..'}') YAMLvars.prc.length(var, dft) end @@ -337,7 +339,10 @@ function YAMLvars.declareYAMLvarsStr(y) var = var:lower() YAMLvars.varslowcase:append(var) end - YAMLvars.varspecs[var] = default_stuff() + if YAMLvars.setts.stripvars then -- todo move to a func for easier use + var = var:gsub("%s+", "") + end + YAMLvars.varspecs[var] = default_stuff() -- assign default specs of a variable to the current var if type(specs) == 'string' then if YAMLvars.setts.decstr == 'xfm' then specs = {xfm={specs}} end if YAMLvars.setts.decstr == 'dft' then specs = {dft=specs} end @@ -437,6 +442,9 @@ function YAMLvars.parseYAMLvarsStr(y) if YAMLvars.varslowcase:contains(var:lower()) then var = var:lower() end + if YAMLvars.setts.stripvars then -- todo move to a func for easier use + var = var:gsub("%s+", "") + end if YAMLvars.varspecs[var] == nil and YAMLvars.setts.undeclared then YAMLvars.debugtalk(YAMLvars.setts, 'XYZ') YAMLvars.varspecs[var] = default_stuff() -- if undeclared and allowing, add to varspec set to default xfm, prc, dft diff --git a/macros/luatex/latex/yamlvars/yamlvars.pdf b/macros/luatex/latex/yamlvars/yamlvars.pdf Binary files differindex 3a820bb148..ae8bb01507 100644 --- a/macros/luatex/latex/yamlvars/yamlvars.pdf +++ b/macros/luatex/latex/yamlvars/yamlvars.pdf diff --git a/macros/luatex/latex/yamlvars/yamlvars.sty b/macros/luatex/latex/yamlvars/yamlvars.sty index 524b290f34..8bc387a0f5 100644 --- a/macros/luatex/latex/yamlvars/yamlvars.sty +++ b/macros/luatex/latex/yamlvars/yamlvars.sty @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2023-12-08 +% 2024-08-17 % Copyright (C) 2021-2023 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -25,7 +25,7 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{yamlvars}[2023-12-08] +\ProvidesPackage{yamlvars}[2024-08-17] \RequirePackage{luacode} \RequirePackage{etoolbox} diff --git a/macros/luatex/latex/yamlvars/yamlvars.tex b/macros/luatex/latex/yamlvars/yamlvars.tex index 3b00000feb..3e08dc883d 100644 --- a/macros/luatex/latex/yamlvars/yamlvars.tex +++ b/macros/luatex/latex/yamlvars/yamlvars.tex @@ -1,5 +1,5 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2023-12-08 +% 2024-08-17 % Copyright (C) 2021-2023 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy @@ -229,6 +229,7 @@ Rhead: \today \end{parseYAMLvars} \end{verbatim} +Note: all whitespace is stripped from the variable name when parsing. \section{xfm -- Transform Functions} These functions accept two arguments: \texttt{(var, val)} where \texttt{var} is the variable (or key) and val is the value. |