diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/algorithmicx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/algorithmicx')
-rw-r--r-- | macros/latex/contrib/algorithmicx/README | 4 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algc.sty | 49 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algcompatible.sty | 89 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algmatlab.sty | 68 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algorithmicx.pdf | 2899 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algorithmicx.sty | 786 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algorithmicx.tex | 1768 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algpascal.sty | 44 | ||||
-rw-r--r-- | macros/latex/contrib/algorithmicx/algpseudocode.sty | 92 |
9 files changed, 5799 insertions, 0 deletions
diff --git a/macros/latex/contrib/algorithmicx/README b/macros/latex/contrib/algorithmicx/README new file mode 100644 index 0000000000..97b93dc13c --- /dev/null +++ b/macros/latex/contrib/algorithmicx/README @@ -0,0 +1,4 @@ +This package provides many possibilities to customize the layout of algorithms. +You can use one of the predefined layouts (pseudocode, pascal, +c, and others), with or without modifications, or you can define a +completely new layout for your specific needs.
\ No newline at end of file diff --git a/macros/latex/contrib/algorithmicx/algc.sty b/macros/latex/contrib/algorithmicx/algc.sty new file mode 100644 index 0000000000..c42b44f2d1 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algc.sty @@ -0,0 +1,49 @@ +% C ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algc}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - c/c++ environments for use with the `algorithmicx' style}% +% +\ProcessOptions% +% +% +% *** DECLARATIONS *** +% +% +\algnewlanguage{c}% +\alglanguage{c}% +% +% *** KEYWORDS *** +% +\let\ALG@cbegin\{% +\let\ALG@cend\}% +\algnewcommand\algorithmicbegin{\ALG@cbegin}% +\algnewcommand\algorithmicend{\ALG@cend}% +\algnewcommand\textkeyword{\textbf}% +% +% *** DECLARED BLOCKS AND LOOPS *** +% +\algdef{SEi}{Begin}{End}{0cm}{\algorithmicbegin}{\algorithmicend}% +% +\algdef{lS}{For}[3]{\textkeyword{for}\ (\(#1\); \(#2\); \(#3\))}% +\algdef{lS}{While}[1]{\textkeyword{while}\ (\(#1\))}% +\algdef{lS}{Do}{\textkeyword{do}}% +\algdef{Lc}{Do}{While}{0}% +\algdef{lS}{If}[1]{\textkeyword{if}\ (\(#1\))}% +\algdef{lC}{If}{Else}{\textkeyword{else}}% +% +% *** OTHER DECLARATIONS *** +% +%\def\ALG@beginalgorithmic{\let\{\Begin\let\}\End}% +% +%\newcommand\Function[3]{\State#1 #32(#3)}%\textit{#2}(#3)} +%\newcommand\Return{\State\textkeyword{return}\space}% +% +\algrenewcomment[1]{\hfill// #1}% +% diff --git a/macros/latex/contrib/algorithmicx/algcompatible.sty b/macros/latex/contrib/algorithmicx/algcompatible.sty new file mode 100644 index 0000000000..075f8512e2 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algcompatible.sty @@ -0,0 +1,89 @@ +% ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% Based on Peter Williams's algorithmic.sty +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algcompatible}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - algorithmic compatible environments for the `algorithmicx' style}% +% +\def\ALG@noend{f}% +% +\DeclareOption{noend}{\def\ALG@noend{t}}% +\DeclareOption{end}{\def\ALG@noend{f}}% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{algorithmic}% +\alglanguage{algorithmic}% +% +% *** KEYWORDS *** +% +\algnewcommand\algorithmicend{\textbf{end}} +\algnewcommand\algorithmicdo{\textbf{do}} +\algnewcommand\algorithmicwhile{\textbf{while}} +\algnewcommand\algorithmicfor{\textbf{for}} +\algnewcommand\algorithmicforall{\textbf{for all}} +\algnewcommand\algorithmicloop{\textbf{loop}} +\algnewcommand\algorithmicrepeat{\textbf{repeat}} +\algnewcommand\algorithmicuntil{\textbf{until}} +\algnewcommand\algorithmicif{\textbf{if}} +\algnewcommand\algorithmicthen{\textbf{then}} +\algnewcommand\algorithmicelse{\textbf{else}} +\algnewcommand\algorithmicrequire{\textbf{Require:}} +\algnewcommand\algorithmicensure{\textbf{Ensure:}} +% +% *** DECLARED LOOPS *** +% +% lines... +\let\ALG@loopmark\ALG@x@nomark% +% default line and marks +\def\ALG@startmark{nomark}% +\def\ALG@blockline{noline}% +\def\ALG@continuemark{nomark}% +\def\ALG@endmark{nomark}% +% +\newcommand\ALG@compatcomm[1]{\ifthenelse{\equal{#1}{default}}{}{\ \algorithmiccomment{#1}}}% +\algrenewcomment[1]{\{#1\}}% +\algdef{SE}[WHILE]{WHILE}{ENDWHILE}% + [2][default]{\algorithmicwhile\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicwhile}% +\algdef{SE}[FOR]{FOR}{ENDFOR}% + [2][default]{\algorithmicfor\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicfor}% +\algdef{S}[FOR]{FORALL}% + [2][default]{\algorithmicforall\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% +\algdef{SE}[LOOP]{LOOP}{ENDLOOP}% + [1][default]{\algorithmicloop\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicloop}% +\algdef{SE}[REPEAT]{REPEAT}{UNTIL}% + [1][default]{\algorithmicrepeat\ALG@compatcomm{#1}}% + [1]{\algorithmicuntil\ #1}% +\algdef{SE}[IF]{IF}{ENDIF}% + [2][default]{\algorithmicif\ #2\ \algorithmicthen\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicif}% +\algdef{C}[IF]{IF}{ELSIF}% + [2][default]{\algorithmicelse\ \algorithmicif\ #2\ \algorithmicthen\ALG@compatcomm{#1}}% +\algdef{Ce}[ELSE]{IF}{ELSE}{ENDIF}% + [1][default]{\algorithmicelse\ALG@compatcomm{#1}}% +\algnewcommand\REQUIRE{\item[\algorithmicrequire]}% +\algnewcommand\ENSURE{\item[\algorithmicensure]}% +\algnewcommand\STATE{\State}% +\algnewcommand\STATEx{\Statex}% +\algnewcommand\COMMENT{\Comment}% +% +\ifthenelse{\equal{\ALG@noend}{t}}% + {% + \algtext*{ENDWHILE}% + \algtext*{ENDFOR}% + \algtext*{ENDLOOP}% + \algtext*{ENDIF}% + }{}% +% +\algrenewcommand\algorithmicindent{1em}% +% diff --git a/macros/latex/contrib/algorithmicx/algmatlab.sty b/macros/latex/contrib/algorithmicx/algmatlab.sty new file mode 100644 index 0000000000..e274a7dfa9 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algmatlab.sty @@ -0,0 +1,68 @@ +% Matlab ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algmatlab}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - matlab environments for use with the `algorithmicx' style}% +% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{matlab}% +\alglanguage{matlab}% +% +% *** KEYWORDS *** +% +\newcommand\textkeyword{\textbf} +\newcommand\textfunc{\texttt} +% +% *** DECLARED LOOPS *** +% +\algdef{SE}[WHILE]{While}{End}[1]{\textkeyword{while}\ #1}{\textkeyword{end}}% +\algdef{Se}[FOR]{For}{End}[1]{\textkeyword{for}\ #1}% +\algdef{Se}[IF]{If}{End}[1]{\textkeyword{if}\ #1}% +\algdef{C}[IF]{IF}{ElseIf}[1]{\textkeyword{else}\textkeyword{if}\ #1}% +\algdef{Ce}[ELSE]{IF}{Else}{End}{\textkeyword{else}}% +\algdef{LSxnE}[FUNCTION]{Function}{End}{65535}% + [2]{\textkeyword{function}\ \textfunc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% +% +\algdef{SxE}[SWITCH]{Switch}{End}[1]{\let\Case\ALG@thecase\textkeyword{switch}\ #1}% + {\textkeyword{end}}% +\algdef{LS}[CASE]{Case}{65535}[1]{\let\Case\Case@continue\textkeyword{case}\ #1:}% +\let\ALG@thecase\Case% +\algdef{LxC}[CASE]{CASE}{Case@continue}{65535}[1]{\let\Case\Case@continue\textkeyword{case}\ #1:}% +\algdef{LC}[OTHERWISE]{CASE}{Otherwise}{65535}{\textkeyword{otherwise}:}% +% +\renewcommand\algorithmiccomment[1]{\hskip 1.5em\textit{\% #1}}% +% +\newcommand\algnewfunction[2]% + {% + \expandafter\newcommand\csname #1\endcsname[1]{\textfunc{#2}\((\)##1\()\)}% + }% +% +\algnewfunction{Line}{line}% +\algnewfunction{Scatter}{scatter}% +\algnewfunction{Plot}{plot}% +\algnewfunction{Zeros}{zeros}% +\algnewfunction{Ones}{ones}% +\algnewfunction{Load}{load}% +\algnewfunction{Size}{size}% +\algnewfunction{Disp}{disp}% +\algnewfunction{Min}{min}% +\algnewfunction{Max}{max}% +% +\def\Break{\textkeyword{break}}% +\def\Return{\textkeyword{return}}% +\def\Global{\textkeyword{global}}% +\def\Hold#1{\textkeyword{hold} #1}% +% +% *** OTHER DECLARATIONS *** +% +\algrenewcommand\ALG@beginalgorithmic{\let\leftbr[\let\rightbr]\def\[{\textbf{\leftbr}}\def\]{\textbf{\rightbr}}}% +% diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.pdf b/macros/latex/contrib/algorithmicx/algorithmicx.pdf new file mode 100644 index 0000000000..a142d0135f --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.pdf @@ -0,0 +1,2899 @@ +%PDF-1.2 +7 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +10 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F1 +/FontDescriptor 9 0 R +/BaseFont/KUVUVS+CMR17 +/FirstChar 33 +/LastChar 196 +/Widths[249.6 458.6 772.1 458.6 772.1 719.8 249.6 354.1 354.1 458.6 719.8 249.6 301.9 +249.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 249.6 249.6 +249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 +471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 +693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 +458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1 +510.9 484.7 667.6 484.7 484.7 406.4 458.6 917.2 458.6 458.6 458.6 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 576 772.1 719.8 641.1 615.3 693.3 +667.6 719.8 667.6 719.8 0 0 667.6 525.4 499.3 499.3 748.9 748.9 249.6 275.8 458.6 +458.6 458.6 458.6 458.6 693.3 406.4 458.6 667.6 719.8 458.6 837.2 941.7 719.8 249.6 +458.6] +>> +endobj +11 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis] +>> +endobj +14 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F2 +/FontDescriptor 13 0 R +/BaseFont/MCOAAW+CMTT12 +/FirstChar 33 +/LastChar 196 +/Widths[514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 0 0 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6] +>> +endobj +15 0 obj +<< +/Type/Encoding +/Differences[0/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft +161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus +173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade] +>> +endobj +18 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F3 +/FontDescriptor 17 0 R +/BaseFont/FTGPAX+CMSY10 +/FirstChar 33 +/LastChar 196 +/Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 +275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 +611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 +820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 +666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 +500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4 +444.4 611.1 777.8 777.8 777.8 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 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8 +777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 +777.8 777.8 1000 1000 777.8 777.8 1000 777.8] +>> +endobj +21 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F4 +/FontDescriptor 20 0 R +/BaseFont/OQGBBN+CMR12 +/FirstChar 33 +/LastChar 196 +/Widths[272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 +489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 +462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 +734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 +272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 +544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8 435.2 489.6 979.2 489.6 489.6 +489.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611.8 816 +761.6 679.6 652.8 734 707.2 761.6 707.2 761.6 0 0 707.2 571.2 544 544 816 816 272 +299.2 489.6 489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6 +761.6 272 489.6] +>> +endobj +24 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F5 +/FontDescriptor 23 0 R +/BaseFont/LUZJQO+CMBX9 +/FirstChar 33 +/LastChar 196 +/Widths[360.2 617.6 986.1 591.7 986.1 920.4 328.7 460.2 460.2 591.7 920.4 328.7 394.4 +328.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 328.7 328.7 +360.2 920.4 558.8 558.8 920.4 892.9 840.9 854.6 906.6 776.5 743.7 929.9 924.4 446.3 +610.8 925.8 710.8 1121.6 924.4 888.9 808 888.9 886.7 657.4 823.1 908.6 892.9 1221.6 +892.9 892.9 723.1 328.7 617.6 328.7 591.7 328.7 328.7 575.2 657.4 525.9 657.4 543 +361.6 591.7 657.4 328.7 361.6 624.5 328.7 986.1 657.4 591.7 657.4 624.5 488.1 466.8 +460.2 657.4 624.5 854.6 624.5 624.5 525.9 591.7 1183.3 591.7 591.7 591.7 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 710.8 986.1 920.4 827.2 +788.9 924.4 854.6 920.4 854.6 920.4 0 0 854.6 690.3 657.4 657.4 986.1 986.1 328.7 +361.6 591.7 591.7 591.7 591.7 591.7 892.9 525.9 616.8 854.6 920.4 591.7 1071 1202.5 +920.4 328.7 591.7] +>> +endobj +27 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F6 +/FontDescriptor 26 0 R +/BaseFont/PCKLZH+CMR9 +/FirstChar 33 +/LastChar 196 +/Widths[285.5 513.9 856.5 513.9 856.5 799.4 285.5 399.7 399.7 513.9 799.4 285.5 342.6 +285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 +285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 +799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 +770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 +571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4 742.3 +542.4 542.4 456.8 513.9 1027.8 513.9 513.9 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 642.3 856.5 799.4 713.6 685.2 770.7 742.3 799.4 +742.3 799.4 0 0 742.3 599.5 571 571 856.5 856.5 285.5 314 513.9 513.9 513.9 513.9 +513.9 770.7 456.8 513.9 742.3 799.4 513.9 927.8 1042 799.4 285.5 513.9] +>> +endobj +30 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F7 +/FontDescriptor 29 0 R +/BaseFont/DLKTLK+CMTT9 +/FirstChar 33 +/LastChar 196 +/Widths[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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525] +>> +endobj +33 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F8 +/FontDescriptor 32 0 R +/BaseFont/SSFYJF+CMBX12 +/FirstChar 33 +/LastChar 196 +/Widths[342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 +562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 +875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 +675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 +687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 +343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 +593.7 500 562.5 1125 562.5 562.5 562.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 675.9 937.5 875 787 750 879.6 812.5 875 812.5 875 0 0 812.5 +656.2 625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 +812.5 875 562.5 1018.5 1143.5 875 312.5 562.5] +>> +endobj +36 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F9 +/FontDescriptor 35 0 R +/BaseFont/XXVFAZ+CMBX10 +/FirstChar 33 +/LastChar 196 +/Widths[350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 +575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 +869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 +863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 +319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 +319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 +511.1 575 1150 575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 691.7 958.3 894.4 805.6 766.7 900 830.6 894.4 830.6 894.4 0 0 830.6 670.8 +638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 +575 1041.7 1169.4 894.4 319.4 575] +>> +endobj +39 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F10 +/FontDescriptor 38 0 R +/BaseFont/SOTTXL+CMR10 +/FirstChar 33 +/LastChar 196 +/Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 +500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 +750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 +680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 +277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 +500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 +500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625 833.3 +777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3 +277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 +277.8 500] +>> +endobj +42 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F11 +/FontDescriptor 41 0 R +/BaseFont/HPNSAM+CMSY6 +/FirstChar 33 +/LastChar 196 +/Widths[1222.2 638.9 638.9 1222.2 1222.2 1222.2 963 1222.2 1222.2 768.5 768.5 1222.2 +1222.2 1222.2 963 365.7 1222.2 833.3 833.3 1092.6 1092.6 0 0 703.7 703.7 833.3 638.9 +898.1 898.1 963 963 768.5 989.9 813.3 678.4 961.2 671.3 879.9 746.7 1059.3 709.3 +846.3 938.8 854.5 1427.2 1005.7 973 878.4 1008.3 1061.4 762 711.3 774.4 785.2 1222.7 +883.7 823.9 884 833.3 833.3 833.3 833.3 833.3 768.5 768.5 574.1 574.1 574.1 574.1 +638.9 638.9 509.3 509.3 379.6 638.9 638.9 768.5 638.9 379.6 1000 924.1 1027.8 541.7 +833.3 833.3 963 963 574.1 574.1 574.1 768.5 963 963 963 963 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 963 379.6 963 638.9 963 638.9 963 963 +963 963 0 0 963 963 963 1222.2 638.9 638.9 963 963 963 963 963 963 963 963 963 963 +963 963 1222.2 1222.2 963 963 1222.2 963] +>> +endobj +45 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F12 +/FontDescriptor 44 0 R +/BaseFont/BFZLAM+CMR8 +/FirstChar 33 +/LastChar 196 +/Widths[295.1 531.3 885.4 531.3 885.4 826.4 295.1 413.2 413.2 531.3 826.4 295.1 354.2 +295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 +295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 +545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 +795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 +324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 +413.2 590.3 560.8 767.4 560.8 560.8 472.2 531.3 1062.5 531.3 531.3 531.3 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 663.6 885.4 826.4 736.8 +708.3 795.8 767.4 826.4 767.4 826.4 0 0 767.4 619.8 590.3 590.3 885.4 885.4 295.1 +324.7 531.3 531.3 531.3 531.3 531.3 795.8 472.2 531.3 767.4 826.4 531.3 958.7 1076.8 +826.4 295.1 531.3] +>> +endobj +47 0 obj +<< +/Filter[/FlateDecode] +/Length 1440 +>> +stream +xXK6W(#[ 5dHr3Jeok@^L>oIr]wɛ< ,o.+L\1]$~Ko^L +lkjVz%j!tyeZU%0QXKLbAZ(E2j/qQ0Ljex-Y¥e$~մ=d|`#zow߶ݝg4eX 8 +vUM +?l*\QuR0gɔf7Е$q.XfCn9fœ39Lm._gS6piMUWCER.ZhevnGO:M8;@Һ
'&
zR. +
r$N,4mƏBF>~_ۘ#ҹ$=tcPsQ|)0We=,9% m,s<s-L* +V
h!@a*'c<̧c(G"8=MZt[Mn+e<F9wp
3s4uDa +ްOeks3̞{5ѣݞ_ŌzW/%k;5ED,88z`咰_]|z\ᱦBT@] +endstream +endobj +49 0 obj +<< +/F1 10 0 R +/F2 14 0 R +/F3 18 0 R +/F4 21 0 R +/F5 24 0 R +/F6 27 0 R +/F7 30 0 R +/F8 33 0 R +/F9 36 0 R +/F10 39 0 R +/F11 42 0 R +/F12 45 0 R +>> +endobj +6 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 49 0 R +>> +endobj +54 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F13 +/FontDescriptor 53 0 R +/BaseFont/YSHDRQ+CMR7 +/FirstChar 33 +/LastChar 196 +/Widths[323.4 569.4 938.5 569.4 938.5 877 323.4 446.4 446.4 569.4 877 323.4 384.9 +323.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 323.4 323.4 +323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3 +874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3 +692.5 323.4 569.4 323.4 569.4 323.4 323.4 569.4 631 507.9 631 507.9 354.2 569.4 631 +323.4 354.2 600.2 323.4 938.5 631 569.4 631 600.2 446.4 452.6 446.4 631 600.2 815.5 +600.2 600.2 507.9 569.4 1138.9 569.4 569.4 569.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 706.4 938.5 877 781.8 754 843.3 815.5 877 815.5 +877 0 0 815.5 677.6 646.8 646.8 970.2 970.2 323.4 354.2 569.4 569.4 569.4 569.4 569.4 +843.3 507.9 569.4 815.5 877 569.4 1013.9 1136.9 877 323.4 569.4] +>> +endobj +57 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F14 +/FontDescriptor 56 0 R +/BaseFont/JQOGWQ+CMTT10 +/FirstChar 33 +/LastChar 196 +/Widths[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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525] +>> +endobj +58 0 obj +<< +/Filter[/FlateDecode] +/Length 2170 +>> +stream +xYYF~_!e)bS`;B`@&;#hC +8x]]{ +=-_}n)goЙd]r
ELw+6A^q{*}{
nXqw_6^8q<ZWc
{XRk}7P%V+f +(IACw٦s~=ma/'Tar$С#)r5ںt?Kͯ~GL2 @9:QiEϝgy湔m: +zqN2>wDu3ܲtWɉ;ÈP#ֿz&h72nU[{5Zp-@4LGkwԝq%of2}ƳNL+
8-lnRgDHwrፌV|AvU1%KbUM8}wm+?hR)|/>Mɬ |g%c#b;CdJے@ŖQ=qJ'M8`?R37N@ܻb&gue$:0@iJŮ>7Օ +Q&3[ͬ5ǂ_~p +2Qnv +-=io.-${˝[|?q +jn'n]^ Bqa喲~%.J
V:~ydq))¤a_[r TB*<KI4 ] +RϲD<zg,{'N y#:Im<Ti L'Phݐsţb?'il-8ewyb{ŹH./$UW:zǹ 9(.a$J6: +SH +endstream +endobj +59 0 obj +<< +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F13 54 0 R +/F14 57 0 R +>> +endobj +51 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 59 0 R +>> +endobj +62 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie] +>> +endobj +65 0 obj +<< +/Encoding 62 0 R +/Type/Font +/Subtype/Type1 +/Name/F15 +/FontDescriptor 64 0 R +/BaseFont/FQGAMG+CMMI10 +/FirstChar 33 +/LastChar 196 +/Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 +500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 +750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5 +762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 +388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 +298.4 878 600.2 484.7 503.1 446.4 451.2 468.7 361.1 572.5 484.7 715.9 571.5 490.3 +465 322.5 384 636.5 500 277.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 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4 +639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5 +570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8] +>> +endobj +68 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F16 +/FontDescriptor 67 0 R +/BaseFont/LTVBNX+CMR6 +/FirstChar 33 +/LastChar 196 +/Widths[351.8 611.1 1000 611.1 1000 935.2 351.8 481.5 481.5 611.1 935.2 351.8 416.7 +351.8 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 351.8 351.8 +351.8 935.2 578.7 578.7 935.2 896.3 850.9 870.4 915.7 818.5 786.1 941.7 896.3 442.6 +624.1 928.7 753.7 1090.7 896.3 935.2 818.5 935.2 883.3 675.9 870.4 896.3 896.3 1220.4 +896.3 896.3 740.7 351.8 611.1 351.8 611.1 351.8 351.8 611.1 675.9 546.3 675.9 546.3 +384.3 611.1 675.9 351.8 384.3 643.5 351.8 1000 675.9 611.1 675.9 643.5 481.5 488 +481.5 675.9 643.5 870.4 643.5 643.5 546.3 611.1 1222.2 611.1 611.1 611.1 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 753.7 1000 935.2 831.5 +805.5 896.3 870.4 935.2 870.4 935.2 0 0 870.4 736.1 703.7 703.7 1055.5 1055.5 351.8 +384.3 611.1 611.1 611.1 611.1 611.1 896.3 546.3 611.1 870.4 935.2 611.1 1077.8 1207.4 +935.2 351.8 611.1] +>> +endobj +69 0 obj +<< +/Filter[/FlateDecode] +/Length 2167 +>> +stream +xڝXKW0PU#@ܛwu9eU-0gS|xHINx7Q"$z>zcD(L{F +EN}6[ev-~wеpxCz^OEw?wЬk6.yn?mEIE,ӵ>lZ&@"-uTlm"U㩛F^{?p&!H䙶[ʞw=1,y=tXCl-|, +ЙPfW?v=TxBSoG qu&HMUY=hw5Hfq>t}ƪk39J|ZTgwب4~r!><v- <ml>5$7 +j@?Cϔ{ٖco80x5`,!ؚ̖̅ +'[Q6~><t%-q;߃~kD9]|~ ֚M.q +kܺxǑC^jL."(iXw]$~:S_w<A- +V\kf&0k߂mrqFoRsQ^Nc.e$ԒI";J% +$W5QZA:䆝)qA/YP!l:J!f7k 4)`Ilʳ1| +endstream +endobj +70 0 obj +<< +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F13 54 0 R +/F14 57 0 R +/F15 65 0 R +/F16 68 0 R +/F12 45 0 R +>> +endobj +61 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 70 0 R +>> +endobj +73 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +76 0 obj +<< +/Encoding 73 0 R +/Type/Font +/Subtype/Type1 +/Name/F17 +/FontDescriptor 75 0 R +/BaseFont/PPCPCC+CMTI10 +/FirstChar 33 +/LastChar 196 +/Widths[306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 +306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 +306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 +525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 +743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 +460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 +460 664.4 463.9 485.6 408.9 511.1 1022.2 511.1 511.1 511.1 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 627.2 817.8 766.7 692.2 664.4 743.3 715.6 +766.7 715.6 766.7 0 0 715.6 613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 +511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 511.1] +>> +endobj +77 0 obj +<< +/Filter[/FlateDecode] +/Length 2015 +>> +stream +xڅXɎF+df.>xkЇ,)%E.%7 +K&">12E$7yC_67i"6X$)ߦ:;ˋ +&y,*%xTWnڪ$[mcwyutDLCӁyvNUTg.v7;iDf#EƊfHjSiJ'2Fuq՞C'њvE3αpf-Pf!uygt4Mk~hjI_?[-ؑmbeo<@]AQCoXvK"IN.L.*wGJp6(i'XOکkݬmL[+P$~+1ȑ_{C#v{2=Dʹp3Vr&T̗>0a$,BA~OЉV*fiV&:vD)VF(vYL{yy
98/U"Ҕ+aMEe~p. Aˠ#NEi963}1R|&OWarad`*j@X^[@r5U"E"WZ+Q g)Z&"ܣXU߲ZH݅1*3Us@4^BX=̴m2*,%085>vK9
c}`+N!bkϓOJD0aePΫ_Gh>+ŅfQ+b&h!Np3Uk_ˀ +8_ss$"c_ikt'H(4Zɑwcё1˚Owظœo8_ +>R{Cf#vA 2'`BCEk"G8ɴ3KonZo&x#B.X]`]T`dʥF\q-NuzGb1( ٛdfa;2WLe ;`9x>z[[*U(~+u!2RcC"Ȼҝ*"NvaM!w]ì9QMdDiΙL:IHnE,rO,C +JybCY)[y2GmFLs](>e0?mdr-( >'#&Sc$Lw619P8kDwJ@ؕ̕?2+UV_mW\Qe p< %P910>6*k':M:x4L0( v-*ge,,[Gޫ8@?oSП|_&`OkMTeZt.]d|Ս}y϶N6:Φ0'G3k掋]5JBS83eC'?LՑRÀ?z.8~gI%
*8?@BDd~TkyvAS6(Wۍt'Փ'@"(KK_ +G:YXGR x={3z +MKT{0Sk!tKV +endstream +endobj +78 0 obj +<< +/F10 39 0 R +/F14 57 0 R +/F17 76 0 R +/F8 33 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F9 36 0 R +>> +endobj +72 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 78 0 R +>> +endobj +81 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +84 0 obj +<< +/Encoding 81 0 R +/Type/Font +/Subtype/Type1 +/Name/F18 +/FontDescriptor 83 0 R +/BaseFont/BAXKGQ+CMCSC10 +/FirstChar 33 +/LastChar 196 +/Widths[319.4 552.8 902.8 552.8 902.8 844.4 319.4 436.1 436.1 552.8 844.4 319.4 377.8 +319.4 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 319.4 319.4 +844.4 844.4 844.4 523.6 844.4 813.9 770.8 786.1 829.2 741.7 712.5 851.4 813.9 405.6 +566.7 843 683.3 988.9 813.9 844.4 741.7 844.4 800 611.1 786.1 813.9 813.9 1105.5 +813.9 813.9 669.4 319.4 552.8 319.4 552.8 319.4 319.4 613.3 580 591.1 624.4 557.8 +535.6 641.1 613.3 302.2 424.4 635.6 513.3 746.7 613.3 635.6 557.8 635.6 602.2 457.8 +591.1 613.3 613.3 835.6 613.3 613.3 502.2 552.8 1105.5 552.8 552.8 552.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 683.3 902.8 844.4 755.5 +727.8 813.9 786.1 844.4 786.1 844.4 0 0 786.1 552.8 552.8 319.4 319.4 523.6 302.2 +424.4 552.8 552.8 552.8 552.8 552.8 813.9 494.4 915.6 735.6 824.4 635.6 975 1091.7 +844.4 319.4 552.8] +>> +endobj +85 0 obj +<< +/Filter[/FlateDecode] +/Length 1801 +>> +stream +xX[6~ےj`inVӎTUMHd9>68/\UxuXˏooUtu{JS&,KVmE}L?뫾xoh{e<~ɅbyW~Q{C1zѣlvp}YLxtjJӹ}'',NYN'3I@Vz#EF#jhW
@دG?SofhlNE;XGGOrH ++ fM EdQf0n}Uk|J4*K`Kt:RҨ I +ЍVa5t#`=n{gCq|VnQ4R鄩2L +77j'r`
v.zdITkɣ'iOJ#S2jA>Q,h:e
31lA2%F̢-J# m]&8rKQAQ"BDyADdB,-l +{~UVj'/T6pCA4f;FP]4Sq<[ObHjjN}"= gxWDL1g\eAm,:}qL~78T
MhCUS~e5ɋQ$ m$(&,Wv#"`&n2pYLSKƯW{sQB2x\cCFqg$Z):CXUGrYm*+O9K**&l:`Vbz"{KbIcLx5E`.j_84Mg1PàqXO^X9Pj3c#Ln&*Q{$2bZU)W.`N*Y&4r)GrfJ$k; +jWذֲ>)9ٿ)
WPӞhlKT%3>miX?<v +=(k^'<L$1&DRL90wLT +-k +&l<n-lϙh BI.-Ȟ\A3N
-֙5L0Ab1*\/{*W1i4?GE`VZ%=KPPd!t$`w)w֦m?<۷noFDqm5Me
g +endstream +endobj +86 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F17 76 0 R +/F12 45 0 R +/F18 84 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +80 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 86 0 R +>> +endobj +89 0 obj +<< +/Filter[/FlateDecode] +/Length 1997 +>> +stream +xڕXm۸_YzO +T.q'ypi; +gQ +
+mQj +)$d`e@1o*|`Y0 +endstream +endobj +90 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F9 36 0 R +/F12 45 0 R +/F15 65 0 R +/F13 54 0 R +>> +endobj +88 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 90 0 R +>> +endobj +93 0 obj +<< +/Filter[/FlateDecode] +/Length 882 +>> +stream +xWKO@WG}MQVJ=8 1 0*GXg +8+
*Eb
8Dt^@Կ?sEDH vYk>D瓱<8 +(sx;_qc`
aYq<MtJ<9{8!yk`;IlŽ@P{7pg;#sS{xv\-MUv]
ZR<d9"Tղm[A٨铳0'$ЮcCT)-C'%pC=â1y+FmU=t%φQ6zդ>N'5*Tfq(͒;NRa?1_8#̊n5-XXu4rgz20Щ?]1d9:M0swBɍcqtlnd.C#[@gc+L`ҕ~s>Pg!ފ5iJ,7JiKlJl uYބ/{hGrc C6k$Mъ[ݛ'n=G|;6ȿ,r%:_ŗ9ǣݶn iɳ$/-erkvȒ(
*p{t{0}Ԉ.b8庯NhJiq/W7~uw@Q?n.1+WMauyuiX~"~( +endstream +endobj +94 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F15 65 0 R +/F10 39 0 R +/F3 18 0 R +>> +endobj +92 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 94 0 R +>> +endobj +97 0 obj +<< +/Filter[/FlateDecode] +/Length 1028 +>> +stream +xXKoJWxaWRY0]0))QޙMMhy|m̳?y^SOE`~! +X'c4|H>Uͧ}-V @>%w̰TYF%x``RSkͲaqm%RK +S-!ޘ?eV/t^^|؎O pu AI-N_Yݼrp fF;{v9 +
+(zd, t"DY$"ZY +s(E0ϬR۹+ytC7/Zzy>VR\O{<vmȌ"]ֶKC06NIon]q]d.κaƾΊS`+˓wtImвA_r/4^&7/x/7g-vر<wch{oD7RiV7vY! '-BnlR]vH9A;70v@NX;eT81#)JvO>oM*-ų"'837_,ʼnq6:g|/q;u&z5W:ur ok95Yׅ}Һgt#`V +覦1_ +endstream +endobj +98 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F18 84 0 R +>> +endobj +96 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 98 0 R +>> +endobj +101 0 obj +<< +/Filter[/FlateDecode] +/Length 1623 +>> +stream +xXKo6W!-P1K@&E)Z=dsW-D+m%mlIi驗]V I{*V9*DU&flmΚbEW_WT4_Ŕ\gmyn`qyהFJ\T)B$7'@LWY:U#'!!j6*.Cn& Nܭ&K7QL^j#n$e/:z.Bn/M\JK\LE-fQy$3C=SdJo6)1$=ˈY8p\^D76e<Hvon]s}\LP/ч:fv1Gs-LTB1vR8aM[c%Ul-P~Ka{CQ͝f:)e` wԶ튦j_@n+7S5>_\,hC
UsmG۶)+~oǀ0X<*붫P4)-u*7Uڹ[t5O2.PPu:p vR^īmp1[w?ԃF%1O$SÂ
\9pRhiblKjE]O5ѫbt>\R-`y*.("a3 +um;5Ēɨow0Ay(}]ݓ+Vuma&AiQw [h|u-c$_70]~G@Gi
8K SO{ӂj GVkv$jꭶ駥|$fs嫯j/>oZ?;K +r ϛ*l/ +
ɐj#;d/_ucOoӜH5YjL9f. fp
]Pzz7<K`/eD6)G^N/@44ItLL$#w$$u*ڰZ(z'Pj^vۖa*W&ԙ +4J7w'\Ybn?=ʃL]p/2dߖeTB`^o18o9^5mҽt-¼,uh+؆YD6~ +endstream +endobj +102 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F15 65 0 R +/F18 84 0 R +/F10 39 0 R +/F3 18 0 R +/F17 76 0 R +>> +endobj +100 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 102 0 R +>> +endobj +105 0 obj +<< +/Filter[/FlateDecode] +/Length 1493 +>> +stream +xXK6W 2Z1")RR6i EaX>)˖l{ra!>gyp."E~~_rMXWYcvP[~x
"f"etC5lAPLEtǃsdBcv$0**1%Ru}*[Iy([<9G,ܥjMUPjL c/St{:6BkPA &?@bv't +6 +FW +(pc"X4x_xz(Ac5Ȉ4v3Zٙl+T+7wFl84$4*2, +
)nkb@IElEkOR1 +Nk.a+1QQiaRe +^ +JY'S`ұiBFPJxɦۓp&4rO'Nu֝w3 +]pa[9=(}%6tJcἅ[GN݁(LZfHyMeh.Nʮu[dGĪa0r!JM:'-EĭXyw7֘i +endstream +endobj +106 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +104 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 106 0 R +>> +endobj +109 0 obj +<< +/Filter[/FlateDecode] +/Length 1900 +>> +stream +xڭXYo6~ۚOI +80$apGČ]ל [x!a;ϧ)K7<Nʉt0 jrHMT_ fA3ⰷW>*cg'ZsG^,"h*~u\Mu,\ڥӲ)6JqH7++t]%6my^nc3eqSX;% {>mab,)#":)^Ju
~#1V,:kn[V ЈȺ:#Vs2c̨i"@m̵Jwl~S`c;SKdYU/(^{(f(Xݦ%:Cdg%[p cXѦbtٜ5kyc2aaiáR:?5k}cwc[X` +v! 7HV"XMQ$701(3]6g +kd5.Fo羰{./n+4=L'LMt>c53 Q]чE.Ps&Tt(yXgz_
Dt\tRQw{\oWo7' +X<AC wWrGh)
Um&lj/iAw=M;ڬ#a+lH#yE[3!D\RƄj IN7ĕ"!߫>,v:8`csbEFe8nzCo:[Gb xdw 4wҼDTr}1$\pFMDk +bh!B +OVl6[2OAaU.t ]zdBt+A7\ h[y@WSF/BFh3&<m_qOSF&ЅĔ^0LrG(iA85Ӆ] +endstream +endobj +110 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F17 76 0 R +>> +endobj +108 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 110 0 R +>> +endobj +113 0 obj +<< +/Filter[/FlateDecode] +/Length 1360 +>> +stream +xXKo6W.K$MrӢuQq~ȉY2lyA!)ٴ(+N@/!gyPFY~n`8@" "A!
|Iv< +42uwmyjI +T_nk*qbhQ߇~hI's#f=UshH^d]%2p\FsO +dvދrsK!-f MKxCGHBB2% +u+OӒ +endstream +endobj +114 0 obj +<< +/F10 39 0 R +/F9 36 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +112 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 114 0 R +>> +endobj +117 0 obj +<< +/Filter[/FlateDecode] +/Length 1757 +>> +stream +xڝXK6W7Wz&[H/==hmV,̃dKf{1%r83fȫnW
n&+)EH8\m"-z# +]otYqSwU*mWOu<Z
oB&ȵBD:b
:U8v*=ۃXo1{2N`Ix1k;PT6 +0dz"|3nuƯK2xaV%#1wJt_
G0oEAwv#q`kF1kYְu=O2UHPv~Txv~аI缘[t7%|w":]^W3 cu2s@h?=u]̭kR=4h@k%RC[̟ˁ5T#OZOJ)t\m]& +?nu9xk2$GR}؆(jRڍN]i +J>`76W顄z)u0Җgw&gVPAS3vs_fBzGL$xT +\dS>0-KZo{h٦ ~rlNr>ҭŏC\$OyH8Q>,Sn- +b3#ԏ>X
u"o≢킂T|=gB=lxP؏ͿlǴrϻQaW8Z :Yϊb4uC\E#m]Z6.$Nb*EoR/`
>#}eOumSFić;th]frՏ'y< sվ9VKM/f]A |ަM"/'
Ap:;ҋ"YV3/gǎ9o,=NE| ~iHhrh+S"#ۄqQ:.,<#i5uW ]nWPZPŵ(rgGS>5KŎzz:1Ӡ+Y2>qtlN!8 DIBy|ie!Y7A=!uy3\c(Aඖ2݇;\ RLI8rߋl`Щ\4)W +_. +@U&h,@]^ˋCV!6l,,Q_̶B8.p{ǕE`'2IwAK J/@Hm'jg5l&3O)84rsrGvwR3.(4l?fQUl_Gdz/l1F3U=44& +endstream +endobj +118 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F9 36 0 R +/F3 18 0 R +/F14 57 0 R +>> +endobj +116 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 118 0 R +>> +endobj +121 0 obj +<< +/Filter[/FlateDecode] +/Length 2142 +>> +stream +x]o6b>td6X-zח + +~vI`;i]'&i +^A]
|c6U:<>GT~o'AI@媓dRy^0Nq.t>/2c!D \iП8gMqb.T|8En&FH!I(XDA}"2]Q҈xe>۱tPƉ:Fo7A-rJ(*چfVd9X +EgsfgP=|.cQ%;S],%8vG2nxsEz5n@ܶpMPNuw?|~xs%_\Op8 34tk$\5 +ei]ꪎ0t-r_i\]}r_m땈)}"N0XQxWaiGg0>lJ/X_tr+X`ZBCRRa(yPRT߹.&quKJRER2PA{.HL:PX\"7z^UoB!Pw(YYr1rBܯ "n,Z"o\m9sJJf/8|U%0Zt!cLx%ĒWuӊ@0 +hE3!T86}Wo(01_"0jTVּtۼL[#oP(1'?@v>Ҏ +WzޠDCszz.mm\*(5Ul^2pP6<*k\LJdfV\YC/! dsהB.Tɾ|\WK얍K`Eqׁ9&|.|Ζn~R$h[PM(gLBiPopO
E$BǙ8S;{L*h&2RrA^N> #p5w;`Jw vpL1.Y5"܈`fr;p=yLi5XAt(QKH&̃R86{W.JNVXqr? .`TKSeυ{HXTL m^voNz+.d<ʂ6q'7A/>RGCt}[҆1 I`<\,p1PNMcFR +pGu}^ViʃhkѴw}*3ȣ +endstream +endobj +122 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F14 57 0 R +/F15 65 0 R +>> +endobj +120 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 122 0 R +>> +endobj +125 0 obj +<< +/Filter[/FlateDecode] +/Length 1047 +>> +stream +xڭVQo8~_:H*uޝNڮKBh4* ۮ8('{o;>}ѯ?OȑLNvbxBnnc,V-zu-8Zo>߁Gv5ïڅKrm,sݼ&A~!g ~"ya%%&|"9R1>C-Ͷ\ +6ILP<,璉@;d$WrLF%-F +-g20(I~"҆],B%K)Hq腒Ɉ3 +)|w5ƃml֊VѠ+eUd74
eLsX0&X6"74ݒɦcБQ`,eP713S^4ٴ]O]_7Ka'H>Fhܴ +nz#KcqcأoeĒI1hg0-"8G/8087i]['Ҫi^,nl^BVGW*ᴥ- [ޮ_Ԇ:Uw +7<F|p8 0B}@O_z갯e2955_.]_/W_*s^T;5ʞdH{~iȑ`Kʪ!9^98ykIS{!^V<8y<Gճ,C 82!pXIMNN-ŸU:w4G<aPkmQdtB&W +9?4ZKJ[A~5TjrS-Fcrݛr/ +endstream +endobj +126 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F10 39 0 R +/F8 33 0 R +>> +endobj +124 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 126 0 R +>> +endobj +129 0 obj +<< +/Filter[/FlateDecode] +/Length 1485 +>> +stream +xX[F~@jb)0CZ)IjZVY{ΜpNJ}}:|,<>,}摗4k/,\,wwaWe2_ޜs]_frww~nk2J +b5n^ΓA$N.) +&<
o0ڀkpM&Ș kh#'8 Ax7AϢجx#9ф8(,IM +uz.]:Y,d +]XL|X4Hb&l-fsD>x~>Ev|A97"Fz.Y>7s_ޙQΖ3}sۯ8Ҵ=hUӨdߕ٢0ein(H7+c褮"J.+41K##!t4+qinͶ6 +9GnH i8?^;rAكwh? KǐH~voYP4W (;b-_ +CGAƭؖcAKE4*MIܘ5sڒcXY*ivu
dևЊg,h?6#a6&5ACG)-lae~ܷ}Gzv>.S,Jfoꤛ `&I2G%XmOņ]rv[O%7J_mĺ_irx
j:G^ +Ë*WhlAbd80cEIJK[Iu5uˎi;幭ԖD!{2^M1J/Fl:m,]?:l-'~6-
0'SȂ˻jĻ.HErntO_a' +endstream +endobj +130 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F15 65 0 R +/F8 33 0 R +/F10 39 0 R +>> +endobj +128 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 130 0 R +>> +endobj +133 0 obj +<< +/Filter[/FlateDecode] +/Length 1018 +>> +stream +xڭWK8@ً#-Շ\民rpI&8 +ӭ(}6iMWr0,lYP5BRc`3LjaE˶q&uysӳ=$W;m:xLߟWxI5gE݆'JªEFJZj\l9l@/`mh({|ବY=%Mؘ|+ c/]O6ۆa)=z=RA ^hC.Ľѽno;kwV}K?/p|#_Q߬`i\n|Ev@q$ v6t|70̱~,TzduKu>M!_oymsXM1du"Dk<IfZ<"6,NZGњo!-vi|C>?&J_qZ A+h+f>cR]/(7ρ˽"uJۆC_?N1EoG`>v¦؛@Pqg +Moz.|w-@IQ +`ɿ(d\Aڜ.z(Zg<}2n*l
}7bl p<X=$ΤCIBC +-It]L:I#w%oϲ`f(#W{x +endstream +endobj +134 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F12 45 0 R +/F9 36 0 R +/F8 33 0 R +>> +endobj +132 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 134 0 R +>> +endobj +137 0 obj +<< +/Filter[/FlateDecode] +/Length 878 +>> +stream +xVKo0W=)ږ%@P`Î= E(Q趮vB~c2i7;Q4r<ONt6OXJU7(&Dֽ?#s6
Y:;n"FkWIv63RuﭔsQ1v +bnn +/yUT'mjJ9)Q:ֳ(#\doF9܍*d]?2F $r`T+{&2P4>j<%)!.-\^M^"ZuD3'3F웝TzÒÀ:Q_^S;ή!s,Ξ]H"ǰ}ZJQXRis͏jj_WJulkM +endstream +endobj +138 0 obj +<< +/F10 39 0 R +/F3 18 0 R +/F14 57 0 R +>> +endobj +136 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 138 0 R +>> +endobj +141 0 obj +<< +/Filter[/FlateDecode] +/Length 1329 +>> +stream +xڵX]6}H`CڇjJԇ>ɢ%j$jS03cO|8_h$bJdxaLi><$VS^/?zI +T8 &)߱F$E"z b- +T~l)ƭBrhc *UV2-i8&Nr'pf6yu{U\^n +ޗx-I&Ϡx,1dg;GR}C" Ov6Պ5p7[:,qMVSz[(ӵ*6n77QNξ?LwZVi/J}ޘ;k&! +endstream +endobj +142 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F10 39 0 R +/F3 18 0 R +/F8 33 0 R +>> +endobj +140 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 142 0 R +>> +endobj +145 0 obj +<< +/Filter[/FlateDecode] +/Length 2183 +>> +stream +xYKW{6WKT l&Kރږeob=U,h{'@MQb}_UQZ,_TE*-tJX~vá|oMݷ˕*tcn?+ +*XUU+rVܾvȜJev=pOOM[بm/EMYr=c:tȵCK|zB/Vp/KiaZ!3]I!CA[Snm[&8Ef
NI1BËIA +.4I^'fz>mE.Ynݡ~?{?Mh +3#ܮm"[sd@nj!Ju{(!/+#(G1}ae$V(8Ad8R
0xP//$ +*;b@T9Ϧ=Rb$jI9T3Ap4@^2N
#A +)|a_UvtA(d7rۑ`]GD +R
@ ጻ ԌIH1&ܵ\^g%\QG*Fqez3%ؠgT
YX/g {1~v">4SdaL2FN[&pRaOР(_6|?Xm0n]X"^eW3ŵ/3ܸigF'M0Gbԑ;0093AKĬHQu0kf;C,F&'u84PsT9,Õ3u1]0X1j]澤(&t6˸#F%6J@q49Uz{v=Mv2ǎk/Կb"s1| +C!|ſ4OaevwCϯ^'kyji=B,%|ÂBP>wylP + +endstream +endobj +146 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F8 33 0 R +/F9 36 0 R +>> +endobj +144 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 146 0 R +>> +endobj +149 0 obj +<< +/Filter[/FlateDecode] +/Length 1167 +>> +stream +xڍKo6ZSbadvZhW]Ɩ3H v +OC#zߚ-u/~X
/$t[o2ɴSqkpm֮k֬[u֍s~.Cds>ڱ?_chӐ pq͢
2m]ΟVL&_}ڙ!He)iu5V)XϩRR\2R;=kzJAM[;`l{j
mlwSS#{EJW(("\Cp"=dK){sЎ'~^ LFJW((UK(|lBL[IBղ#hDZ= +-!NH +eKJ*2psw%h"mv;0loEJW((5Gf<Vs{CǝMqFEJWȕČ6Ռ0ϵ'=xVY䩥` +ZIC\((ik*B<n@@x{{Ӆ)L<RBAk{zḥ7>:j+{G +Zo0r y$ƣ"+٣3FK<w3{0"4sO<'x[BL1`.Rڃ3FKYD{ GK@sTe2]iܽ+sOL'z[B$!E\((^T7f*|#B'ǿ+*+I`..eymKن$
aXH0r%QU?hE27PY|Qzo +s<FKu>҃?,]~r2Wsdp +endstream +endobj +150 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F9 36 0 R +>> +endobj +148 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 150 0 R +>> +endobj +153 0 obj +<< +/Filter[/FlateDecode] +/Length 662 +>> +stream +xڝV0+8 bphD^vjC:$[{
68!=̼7c$]u)e!Mh,9+ڝ)Q,Η' +G`0#Px<2KQ?0@9ÊL<)/.QüebL.cz08 +sg͘1oSD$p !`', +#ry!_ّfeϣhi\q!v;<qyI!E5aI!W\RO"ՉBU{1.12!.w@1m'WXT4bOiܝ*z.ŝ$DV6i|*M6]ƾ0]HU,E!1v2+<Ϫ +F+;{ +=Bu%^ZxG7$HRG2s㓅 +endstream +endobj +154 0 obj +<< +/F8 33 0 R +/F14 57 0 R +/F10 39 0 R +>> +endobj +152 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 154 0 R +>> +endobj +159 0 obj +<< +/Encoding 62 0 R +/Type/Font +/Subtype/Type1 +/Name/F19 +/FontDescriptor 158 0 R +/BaseFont/BPGRXE+CMMI7 +/FirstChar 33 +/LastChar 196 +/Widths[719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3 +339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3 +339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 +506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 +1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 +594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6 +530.4 539.2 431.6 675.4 571.4 826.4 647.8 579.4 545.8 398.6 442 730.1 585.3 339.3 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693.8 954.4 868.9 +797.6 844.5 935.6 886.3 677.6 769.8 716.9 0 0 880 742.7 647.8 600.1 519.2 476.1 519.8 +588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8 +756 339.3] +>> +endobj +162 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F20 +/FontDescriptor 161 0 R +/BaseFont/HDXOFJ+CMSY7 +/FirstChar 33 +/LastChar 196 +/Widths[1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 +1138.9 1138.9 892.9 329.4 1138.9 769.8 769.8 1015.9 1015.9 0 0 646.8 646.8 769.8 +585.3 831.4 831.4 892.9 892.9 708.3 917.6 753.4 620.2 889.5 616.1 818.4 688.5 978.6 +646.5 782.1 871.7 791.7 1342.7 935.6 905.8 809.2 935.9 981 702.2 647.8 717.8 719.9 +1135.1 818.9 764.4 823.1 769.8 769.8 769.8 769.8 769.8 708.3 708.3 523.8 523.8 523.8 +523.8 585.3 585.3 462.3 462.3 339.3 585.3 585.3 708.3 585.3 339.3 938.5 859.1 954.4 +493.6 769.8 769.8 892.9 892.9 523.8 523.8 523.8 708.3 892.9 892.9 892.9 892.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 892.9 339.3 892.9 585.3 +892.9 585.3 892.9 892.9 892.9 892.9 0 0 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 +892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 +892.9 1138.9 892.9] +>> +endobj +163 0 obj +<< +/Filter[/FlateDecode] +/Length 1177 +>> +stream +xXKo6W(,ߏ-ZAjk%v8DJ<ړ`s8oY .1šP,m!XUW-]R_6l
/w;VVxEU^~]v-{MNE("@ +
VipZ3}g +Wqu2gYiHȝnGNA C;˝nO) F4xmupmJtAA\$Q(*>3K!(("j*1 +F$vFH
f@$4W9Tii)ΖɃܰ@x +hHvl?Tr, +*"hp +H'ιl0 +d:E n=R*%,'dOGR=QK6W!FQ3|LYaҀz^ISLFzn"5.3挱{aSwegۯm4q-ixʮ.@GӉMD"la%q]RGfHd6S=V3LS&5^Ax<z*ԷHU'
ic^NUdboW1Zaq*x׀ JOf'k ^nBUV16n3 + +ņ5|JOX'y:)>Ki_6OY=a#0a;o
Ś(!)C|e#sx3Rf8c'_"CiΜN/=Ur]}].g{yӧ(\=a,4'hc╠X;<M8rW8jA|&Dv2?t9;4! ?M,I&>32eDXc\:K%!1OY~d|e!L3|BF`=iL!ΑW$_29R*N.$KtGQ=4i^^w?Ɣ +endstream +endobj +164 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F18 84 0 R +/F15 65 0 R +/F3 18 0 R +/F19 159 0 R +/F20 162 0 R +>> +endobj +156 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 164 0 R +>> +endobj +167 0 obj +<< +/Filter[/FlateDecode] +/Length 649 +>> +stream +xڭVю@}WЄDL+렠>n}ٴ/b6#\!{XXv4#93^PzxJ)XAHlXHJ2ey!d4
FbŤXF>[ﺋٗ[4T&(J8m:s)pNHHLb{hIa u O23fqp|JAgr%\sQ$N!v|^cީ?jRjB5isK pC-UmD~ڝݭ70Rvd`pVs醸<Y0HZ57 /,UZTHN]ٰ+;!z0kl=UyUxܔ.ŶsTEg.kA2'ML(3b]fcIl[Q~>4`hr+Ѭ/b*1'9/&yulࠀ¯v +endstream +endobj +168 0 obj +<< +/F8 33 0 R +/F14 57 0 R +/F10 39 0 R +>> +endobj +166 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 168 0 R +>> +endobj +171 0 obj +<< +/Filter[/FlateDecode] +/Length 1135 +>> +stream +xXK6W7 '%n
\ +AkwfKDn6If8o*RyS!)(Q,M +HVیccŮ9@Sgi)ڨ\МExp;FX@\ hmYc$JΈd}/ICaBL,QEsѮ}OJ$29yU
)"N +:2&
'ܳY6 "k6^ss[ =m2%u42q9 !R*=LIb B6oSԊ,Ce>Mnu4b{r4|H1@rc8}
ŋ<m +Apl$%/9pف$Ĵh큻.OlFcn"fftIϚg4PbhP}qxr<Ǝ\Hu7g,-37h6Vε,h2)SPS|a?ysZB=mjYEprNԴ[YHLLA#0;DɇT¦Qfb,Qb
+?C +endstream +endobj +172 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F18 84 0 R +/F15 65 0 R +/F3 18 0 R +/F19 159 0 R +/F20 162 0 R +>> +endobj +170 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 172 0 R +>> +endobj +175 0 obj +<< +/Filter[/FlateDecode] +/Length 437 +>> +stream +xڭO0= +ӟd&ᣢiˑ1Su5_"/68$Ůo:cƱ([lQ/cE5= ! +endstream +endobj +176 0 obj +<< +/F8 33 0 R +/F14 57 0 R +/F10 39 0 R +>> +endobj +174 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 176 0 R +>> +endobj +179 0 obj +<< +/Filter[/FlateDecode] +/Length 577 +>> +stream +xڭUM0+|L2q +>n%΄шn'^ܓIf0F9A8e<JzTXkZ`SV\5<wtbJ~?1:A-7IFu3isd,n3nzf0Ԥ$yDɤh88i>,'ğ6=yĨ=' T|֞hKNs)7ܭ:1+e-% +endstream +endobj +180 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +178 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 180 0 R +>> +endobj +183 0 obj +<< +/Filter[/FlateDecode] +/Length 334 +>> +stream +xeN0D|]:qGf-pS7%qzةTuud'$r.p8{S3:q(&h96(_k" ĔL}3_Ds'RBG߃Awަ4ͻwH/m\*ެ\˪BBdwybc&d{%;mVR{mj;_"(vmn(iNeE3ʦaܳXP8Ӟ+ɄPHqFxq5ڛA+[艌jvZKRi11ݘ +endstream +endobj +184 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F9 36 0 R +/F13 54 0 R +>> +endobj +182 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 184 0 R +>> +endobj +9 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-33 -250 945 749] +/FontName/KUVUVS+CMR17 +/ItalicAngle 0 +/StemV 53 +/FontFile 8 0 R +/Flags 4 +>> +endobj +8 0 obj +<< +/Filter[/FlateDecode] +/Length1 714 +/Length2 2452 +/Length3 533 +/Length 2993 +>> +stream +xi8Ǔ}dHck,ɚH3h̘,ه,e %BdBeilӂQ\sޜ;y7>s[F +&DS,21$H +H0BR@-@YSSЧ*p@"|IX@P{$, +I +(,H>XXdtD ee +E +SpaDF_S]ŭpCRAF}BSUH7UHj7+Hf1/R/Ll`Q;oU{ uv^I'/Vi1ŎonQ:Ӡ3z +b5J: sEYEEw~[Ioz{knf^sTz:
"r12F0F|K +m/^_AGJv'DJD.1r|`~#_JnI5MYESnDڭJu].6#yHm_VZR6En¹'p5ݛAj{'^4t5YnZB.J3CƉLt@$,ʬ[XFCa60/lLᏎPkws<: Rt:kBN\h /aɆ1]kL3R\7JQىOl?ۇWkh5\nh8 +Rop|]>Xb=Qd$_L15hc\\sk/b.zLjsz(@tBԷcChu] +aOkʊf~3Ãͩ XҘ(v3bS&I9tlUKo58EF4]{C#coOFvB{q/sO['utu|e)>PK)-;OQy@0) vհN)o6sv)I7wJw&.z"{:vq\mU
hcߠr}uo;Δ+ck^>lC W٩@uO~18رw,mb/aO]`FTb8P4=֒P>!39.Qsg:mӱOv]-ҼzL")fhzm~2LB`V͘'z7ϊ=p2T2< +2y%ѐO+fߵylDބS%!{U_/pg8;rxhpYjABt%ggö__F'?oJE8 +wc8Ʃ(͡l(S0suճD}L;Mgp曾0<mq\^ŒeiO~9F]abQ0D1%= +rF]w +#-_g4h夶 +Xgb5ܡ;'6dCáR'+Ng+=5At6Sx{*qBDjQBci%/rAXnS~fi=(<$QHq# +endstream +endobj +13 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-1 -234 524 695] +/FontName/MCOAAW+CMTT12 +/ItalicAngle 0 +/StemV 65 +/FontFile 12 0 R +/Flags 4 +>> +endobj +12 0 obj +<< +/Filter[/FlateDecode] +/Length1 715 +/Length2 2721 +/Length3 533 +/Length 3261 +>> +stream +xy<kOcwwY`",c,ca0nQdl!gIjcy==?>)k. +(B ll +DP@M +C +z`1Ń % +HP$H&hC8]# + +P~w$~d8wJ\WNϮOy#{g}42>p+#XOt)"CCw_%@ +Sث6ΐ('7fTz[GWvh~AY*a|r2t\7-l24GbehvzRJ zvV.R:VMS0Ϲ?BWdl\h_۽J#ZibVI_q:%XjX';PIR-DˌyLV+|%Fy# g_=PW#?g>{kOzS^v=:\?Tv&u4g)9Ⓖ51̔zW+~̺-Is-Ky2J?dw)-/T +gZ
T.C@ny)cBY8%Z\6 +}.+{kJjMm%R";?qJ.5&^ҕa
LT嫲 s$M.8Q?ӵea)*c2}X.d?i<>ȣόTSY-GGN? +;i{qHfMȨ/ +|s"[4rvwcħF{͔}L3s=ӻajIY"w}Xc&+:[_a;j>|\H.-K;8`Dh<vӱ!
\s/jםdO9.|-`۴'yLy뒙܌0*Ш^`M&!۶:).s"m\sCsR!zP +"%ݝu9Xp}<5"+}%=AsÿI;'ЩV;kW;.DezMQ}'%7[# +^2yǴ35q'nTϑ8i_QU[nNKSSpvXqs,hGy]iFM +Ͱ*W2%S˱bBק$usZH{T鵜W'6Cf>hX/?}#!1Z yI''1H}3>cm@@lȖ#l $nXul +*x7{[QB%9E}p<3*tO^~# +endstream +endobj +17 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-29 -960 1116 775] +/FontName/FTGPAX+CMSY10 +/ItalicAngle -14.035 +/StemV 85 +/FontFile 16 0 R +/Flags 68 +>> +endobj +16 0 obj +<< +/Filter[/FlateDecode] +/Length1 724 +/Length2 2335 +/Length3 533 +/Length 2882 +>> +stream +xy<!HY"e3%$Kd<d0f طPNC"K)$\9ns_~>~SA`)@VCz#0 DqD1p]]8`& +8 +b2&hPy]M^Z]P
u5tR]lEr4ڊ;oȉUk_Py7dy"o#8펙@ՃcgM8aK]ݟ|l`9Z\Rգy{
k<Mo2=>Rr*Idjg閮}UTਜ਼]_&nȁh>{;]}dvsYKPoۗȭ gG^S>pk_Kg-DٛVJul+2tL@>5~R3V~ +4E/ktYdl婬?ePXb!vnfgQK'~LNl{^XB3]}37SBC%XA=BzǟI,rrU$V
+[|5cﴩ7tV2S@tak
|
NmN[#V()>LwƑԺ[aCBbne%J̱Hqn={2n,bs,{綌F:Vf'LIWME)89ރ{k«5"
fǴ9=~1νCjeVX5Y4v9Z*B\Hq,Џ61.:1]pK~0y!{T%>|AƢ_w5C/~izgųoᯫCSrhnM_Rh<SNz99Ew+?Ea<C6P9&,~OvQQzd3c"\O"O\}ߤpw>~ͽ3U☆A`1LzZ&hmeuEgy'58b%\iu3Nrgʦ:gВakV +T^= ulj%pyNܛ"[GX"Ɠ\ܯԢN4'VᔯC)&VU/<yuG-q{o7J1vl07pa~|KEϣWsĥ/&!CjL
Ćdf}z_Pt6{On2,Z7ke߭Hd]Ê#Ԍ.^kYY7428ly"^M3^h]k}3z*yAS6ko<eWT鎊cYhJuE#U磥CYݭ
.]P%94zw #Ƿ>aV,^nig|tB:GMk-̋&[N)nç6č.ַAOu2t=tI|R&%ckU%_*tKC̸1IH@*W49ky8O@m<qzQ%KWbt?vo9b.^\2)渙t]Mgv?άP<ą33zׯ!
1OgVVX=9u(k沜eYǬt Ic{^D)|Gbq?ǟ[/QOmm,)
+JHpDj W#Di=o̦ grM1>5-jKBJm
l}Cˡ<w`BDtzI
{Fho^od'I"납K,k5pb.L.B8WA^ \`Gu29>VIшQ ]^T0,ziW0uQ'Ԕ_^O D&zH^? +endstream +endobj +20 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-34 -251 988 750] +/FontName/OQGBBN+CMR12 +/ItalicAngle 0 +/StemV 65 +/FontFile 19 0 R +/Flags 4 +>> +endobj +19 0 obj +<< +/Filter[/FlateDecode] +/Length1 714 +/Length2 5120 +/Length3 533 +/Length 5673 +>> +stream +xeXkiiFzA)afZPBAPRJ:so{}>}}=s>3k䓃:Z|@~ +Cn5Ŧ ں9 +a +HD}OnS}S!0=!4e98m`1Eؘ"zI5sHd?:䝝VD%LhdL˹Y;IW4GmՏ6^>GnPTa 4"̍+x2Ep握NMG̴?'EF<MS0@ E8tR<ԈY*D(VDORư<*st9;sCEEJrtէS䔗eZ@IˀZg8$>nXQi
Hj:x|4qWrTI +E2d'Nrhέt#SEOS#ZՍnL(N_.S\ gv/"XsF\u{d
: +Ou +iIgT-~=..S:$هJzDYI/C-at].caaj]]H[CR}Ofx_GX34čXdvVjo0}*sB:ɢBz}Ȟ%,Mk}Ɗ&0c*ǢzaݥԖnk谋z@iX#γc6mM;vmGeDd7qc[VЛON?oC0D;}-z +q(6ރ`ZIy)7QF?V23kك6"hΙtUo8`y6(`5(+kYztOGJwd,}꿞hyC(LAo{$yX8qz|D7G{hM^Hk +N5Nx}4~~Yv#\+ЯtItlI1CfWx@bf Lٌq8+SćNJ۞]Sؗz_7g<Mk +cnd1M~(">89}$?i
!{q" +sg/<h8@[*ݖzW8aۄotr}^*i*`>E.̴kmޅvÜ(Z1)]IYxz\m5vk?i.#$%xTxjqQ醾 [j9j/7?
;eW5i2Li˸f8+x!+>) +>OJ` yU,_La~Ip.g7>QWOp2!x%˧YjuP$[*]V,p/B$Z~~*Z2!ߚ/צr#?VMKXwR@&AѴ 6 Nt{I]z PݡskmJ?+}w@ڭ*:}aWd0S;_<$$X$
~fducp{zU?ꫮ\TT?~^[1/pڃ3⌢fN쫎 H݊M)Ond9;v4T@TK+bl/$ݤz1SsoI}{r|vyEܗ +Vz#`R\)/LQJT+:GN%O +Anwf3dG_>ɱCr9_yq&hjqMoZ
:{z.fysCGM=Ԧ*EP;dYKe=]ZXG~hQO1jj +U}WiwE$}O8%5Z1ɯ-
Ucp?,'Yu}vh5ˌuQC]4ikeM,[вa5dWͳ?_l굳V,$E"dR"rhUr~V>k|[>jZ[B 2 |]9{IaSl{y B"v\4_fycs+Q,=__?BY[Uc3bX5*= nW-ف.%''|!6>O&]!OYnp\<ׯFC9k2WպO'NW_ie%?b]ЍϽ+*~j0OpGe3RT2䥕j +@U-.Nه=[Dywqv!UMiۛ[$_%䊥/M!ƴ[+SĶ0A
cD,+mSךݮ>3jz<90y%o^-:+<2y+o+X,㯰)ӆFԘv̑לlKgpSl +˟oZ +E?!E;'(x3a""zڌݷa[
u]3Ƥٷ}Q:G!K"ZT;RI+!JcI_,0aame9IO-EZ|LN b{θh,e}Uh6 jg@&ߍӏKAg + V{%75qp|Zp(w.&[ *e^>':u!ɔM +endstream +endobj +23 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-58 -250 1195 750] +/FontName/LUZJQO+CMBX9 +/ItalicAngle 0 +/StemV 117 +/FontFile 22 0 R +/Flags 4 +>> +endobj +22 0 obj +<< +/Filter[/FlateDecode] +/Length1 713 +/Length2 2856 +/Length3 533 +/Length 3397 +>> +stream +xy<T-
eɚLJ`PT>b3BBDd-B
VZ,)Edܪw?{_9s}\s/Tg;J{t@!&V'}BBM +13do.]Q*$ 4PB +ĎN$`
(J +H(?εYՔo\*2|98X䵴W{)KJ>G5C /lUOJ\=|>șM7<p(}LeBr
.Ӓah議]m{mvS
[ήø~WR{;͎XȥTfM1&Nff+=Twvs+Л/(o]c- +/HL`~R[J>%cvn
bGQzn +ۄwr05w +Xr4mg]Bf1QPɂnX#|y).':/!mNd;p5)`
4pLgOqB:<z/fa¬'jdx(#"9wHIm.7m杭; vtq|cm~s +q2LK0'YGoǙ]%bZDSL=B'ej%U#B6 )oY&%5z,H|L +qIPL2(' +n1ShTaoW1wl8Cƹ[u2_
W!W^1:xyc'dWBݢ*) +endstream +endobj +26 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-39 -250 1036 750] +/FontName/PCKLZH+CMR9 +/ItalicAngle 0 +/StemV 74 +/FontFile 25 0 R +/Flags 4 +>> +endobj +25 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 5682 +/Length3 533 +/Length 6239 +>> +stream +xeXi$$T$d`bnPiA:]>uo\ᖅ"`JH37?P(Uq# +g_T(b D YH{G3]_]@Y;# +sD5_h`P?]g-\aiK;)aP0 +huB`y5ʜ<0pԿwg8pw!?" #,:O2!ݽE?OP(?p',*jC8} k`0s¬l*8;.F3ӮYןG KA#"[\9<.8:tx+sjbpL&f{-o,;F| .2lqD|3۱ +M&ƈ` +9\eYkteUt9|BcPV_j8KSC3"XDpj/8b~L
_ėXݯ/&RC+en֣StH-5̞3"SmK&n1n7ff^&h>K:`#jX46i +U嵑>/-iVM&<k-N#/uLY31~*ۄ8>GI 2q@
̌P@_#Zu1!5)C[r<8e4\?/(Ӆ@aK
],?)L?O+Z/ɖ!\I25(y>K`B*⌿G-XA%6?uxQ$3nqTԣ6:܍ݘ߹'9փVCȘf2E)?R0;rMێ[*$k +s Z?]_tL$?-8.C~$pǺnYIJu+jNL1y#P&{p$\IF1lܻ8$XC QXǍ"2/Fz9l1Xv%;ʯAA79 "~KpS:˯1ך"%]akun#Z=lusyD~)?/&t{r}Z +NQh업<I"w˿0 +ԛoW[B=E+dga=\Dg3-J~NpK[_7PKDs C7 U%lOQ
R[vb[Nr$dytFĂظsZiORAv9wVb)ƆOPlfd6l$YtX6pЁȷ +TE2GܔᱜiCd@0Vl=x)'ѕZ+CDfP/\"PemP. l>#]+w5 (G +WLa٨p{pd<Z.ڋ-JELOIDOF_& +]Pa7i6ێ;e1w)Ŭxr) 2և,v||J|F%)mxwq}IN:ޒf2Pvjy0E;jeb'\?m;I߹xY|81}MR˩8ffg +@hOD2>~WiM0c\`uC6
w@uǪ +Ԃq~e3brT1oP +Ȼm潲}xј-LIƋooFtdˏg1h4zdM.;ys6B +KI)kڒ[Hqѹ%-R}7Wzͳƀ" "7F큺jB*
gӄӽF +l
QkI-V0*]x(:|$DitGn= +"<AHy"kǔ_?qÿ?ضqtY3鲇%Gq|hf6Ǜ'~ѬZZ#☖jgg&5.:*+S-#RˬuXOXZ3sNk9g3_,tfu6brL }>0v,;i7jQ-V*Zhgk>^Zvt>}h\H.fk쯎2ԝPnUIHKFFvtz[;66Sag\}oVxn)Xa-J+ӟ+б)Cm ]BӭUcs~wҔ<chv}тNCBCSWF&d_~OX.V<0iS0C%Irc
U'O:W!oi+ +pLU,_?{λz/ QrIjglQ)MԄ=ե&L,2μyQ @ϋ ޱY$0L?u8R-!Uqq(O2$%c}ㅟ%+wK`x\IӨUS[/`Lk6Dv^JOZ՚U;NwاtO)&rZc)T_ؤ[nh'}(~u;V2ީM
03xm&'^Sm}k)WӃd/M}QL.FvԽa<dE!D5%y|M}q1!JkeXŢ_]S\PYVH;jfxdp}[!\sQW۠]g&fy
Q*+ᘽ?麐zLwǭS,ai%4؆tW^\ޜ^O oj>V;ȝciu>y.@M[yǩ6DH~L89&-Bk =ET8Pw<x) 9c:!kQЃ;zo-#c&~/U<2?=;GOR 螺&,\l}/.;(3vvCtgt,O4qBӈ^8dvU1p[fq"YFMM3)R2!uRc$˞ƭ~;>\(:`:mTp,jL-Ct#gh%Ѓ)syA"9]ͨê/̰Nţ@6]Ps!';ˑHx?ce}4 +Rq9Ϻgfd~P}EvCiu*v졹v1^`WUT-(eCX%L|C굻7<>ukcKC4 +2! {fS
ĀLNӑD4|4AV'N"%3ζkX.[vھ(3<<"(/`j +~1XrBmjmaƈ&uݜwͺٺF}:l|ìC;@D$k-:GAk&P)WNM79?ZBܮ۾VߺT+AH a
ʘ_ʒ/TRd*i8_2AoYuJ`n2&*u?u!>u.=g7~g;^6Щ7ƦhQ^V<<- +endstream +endobj +29 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-6 -233 542 698] +/FontName/DLKTLK+CMTT9 +/ItalicAngle 0 +/StemV 74 +/FontFile 28 0 R +/Flags 4 +>> +endobj +28 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 2631 +/Length3 533 +/Length 3166 +>> +stream +x{8%ˈ5.100Ea$0f0Q"*[$wȝv)`K$) Cvg<Y~w}ֻLnD':L,t:@HqtP@"#' +G#W(ccj`0\kji(M@GH?)D_x +
h##Z?
# nA<$3JrUۯ<pzD/$q֫û?-Z'm(^On^?d+8<w/q+Vhz&<tuV>#<Bȥ4~萗yIXtz6U_'̯fWtb +MPrVW5fL2'B^>-{O`;ǘ}juh1TONʾWW!^dG|<v;mfY-ZuC ]{?A;5iNKdF 脜ڕ2ܝ2Hk$+3I8L:UCAděMhwRgELyT-wմ~R펀_mÉNqdZux`gZUl _ҝ;scƱ#~eI;YotCW_DE#;3=~;̈́s1:b(Mh3`|.+/Vz;:1SU/-zJX*3}i=Z6Pɯ|:bѥ_3miJ5N߷R"05 LzF9}ouol>>:ʺ.L4LMxwbklR.=gYu[@mꗲ4n庘1Ggbb^sK +7_]iб~e5'te6TUƙu[R%9r}wº!l"Ԫ/pNve"+he9a[;o
<3/(:*澮e#";re.ȭj3ј}+/
QG8e{A7XKzg,MyTHMk&iԘ$:̺R>lQTQZh;3pxB@n8d+a5w,UC, +K6I@}1 r34ʑ +bŞ[<p)34nŞw:5ջ^#ZA)(UD#ܰ/+Sl?y}B/
W3r)\Cm/*}]NM>34Qf:^~h +
HH6^ruX´@$DlcNvDT9<]qSG z=nqk3%UrFUh /+AsI](:?ev0.qS87)c?B-i$.1>]>biJV䛰VA v愵`yҊnFpd#[>~w u/ +{23'·uHMgXփYND[kJӖr8ZЫn*[Lc8߽(hOȊ1)rrװZ"ʑC"I7=y".8ZEOZBJ-.<6MnAu١dCS簆{(|%M/O5_sX3]eC< +okm[7.C~Y> 88_4= +;D,a281gîڛHR**&C34l
LS2"b $VpZ[c-`䚒<;1*?)#}A*;$5g +W22N6ơAߡ|C(R)k"O)26m 8bWDn ;]`e$Ccb5Q-uan,w-.uF6&=7ρ|ݕɉ(Hhy<cw}dj5غF˳AYaNtA*ݽgp7{Cy]$7+풽EG7;hU[d?,hT6Fj=e5PS}n3ixz=jjhuV*.azumQޝv'7L"harO^2%<6X#|Wнibm3ZQJSg1YǂfXN)"-Hb7SZޘ32ﴹ|iX, +endstream +endobj +32 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-53 -251 1139 750] +/FontName/SSFYJF+CMBX12 +/ItalicAngle 0 +/StemV 109 +/FontFile 31 0 R +/Flags 4 +>> +endobj +31 0 obj +<< +/Filter[/FlateDecode] +/Length1 716 +/Length2 8026 +/Length3 533 +/Length 8577 +>> +stream +xUTqwk=6\hq`]C;- Ҹw39{g2kfMKjU
HC"#Qprc00ȸ@nPGYD#,rrxDމ` +g`O +,[P@Ysw?og%| /9FV6!ބgVm|YrO42/P["(&펙}DhBϭq7Y%r`F*vcIĠ-{"ͩ
iגE>[bNn;R[m-Ä>>w-/g+IFjC{u3#Gui
xOsabo~..S)5;y"d-kӳ +0sK9ueb/Ԑ4a=h`u*(t)cy9d7(kU.IY`KZk<((?,̂N7֝O>).FQН`ynGgI?<t3ϩMHf=PcV? AYԮsk7"C@xFf7[;oAk_WО+÷bx7dAcFWw%6u}<4&6͢NEgȣ 0~lKhl:K'7G05^:K=!oX!?9
!$0u6#S`M}C8r˞="%*ީ1aPfeu8 t,ܤeyM" p$$TfˡA +iny4[i<B̠nâħ^Z=8FYjW#Yw%HD5>~i_Kw ++,ӿ6`[ R_&ԢleS>OKf_'!";_Ihޛc]QnNJNpXXW=MXWW̸_?Sעxu@p@M!ub-1 +:^)C?
@Z8Sʐoc,5.a6(X8rI1H{?x{f6HlU_PKeدqj4O|S5Z<
|~Em.<s
59!%5G0x<'%m
U_!]DlrK=IՖ/Yl>L",1~p8kH}B +o){nͥFf綃x:i]in"lvK3'O@hQVÇw]s-1]E=9҇ck!3G/:@O^39ޑ̭m$ϹZ&D +=HWw5|#_Gjxz3;=_<f]$b+
B~Pv{q؈Q:F +4̉]){yDQƎhv,>ӆ +ecGZs[v$KL
.Sinj8X(ÏQ[TF}WJaRo.(j|-d)nt{kAp *2ߟ[y5[B30̻ +L*\{~8 vVح]=V2>k܋[W)XsFJ U+7ra<L4JT&~LV|ahod`]ڷL+ƧZŖ!O#J ֕0d+}0(sE +k(U\:W +ĶN[r.m@"5-)+[U[WE6WvfLjU|q@>c͈{AWvћ2b++wYN)t +O4Y;!W⇚<Qeֺ#93o[n'ewlXYʽHf)ʚ~}h{!Y +bjNe!dгXC0ʼnG20"zX^d1ޔ&y8q֖^)Tvp0e<In;
7z~WCH4uS.C]UMg1j8UP~^NoaVbu$A4o5ۦJxk.퓵C3cu<:9E4p#4G*l0voپ65)GfLDId'4L5NOuE
5cK^CIW1D&psZ8j?,F=& s։2i{5LAN1cR$%YĭN\'mTPH;oDJ>k;H)IWkq +87q5K*W(0n۬JRu=쬤[QXdVm;xZ݇xL uQU)%E.~eWmK+j.ۿ9gVEKY$E]n}F1k)O;a-J1xG#6
EC=?ǼC=sr1 +U&O/
pz[ f8m:h_IPm%[0V`yŤPP8tVmvC9F2 $NҮP57'ʶ!#i>$[i[NC&ҭ>OBiND'%]yE huG++^1)^*Sۊ+~闀Nv&j͙Prn'@+uM +fRᾒ;7Z` ܼ=|-߰FqҹjVL/
N'/mTT6k(0rD4]mF[{E|oBi1 +N-ШStaЯ\{H ]^S{e?Rn}jf5Jֳ:fr `Wzflk>+-}xdH,MN+1)',zF`tf|8~O&+SFㅓ]&!GuF){gWI%yiZ@F;,2ZdY>,607{G)$QΡ2e.ko]M;T< +JmнQ-h +Q;gX +0bkN֎Z
-?'HqtgL!K
7hƨFOn~x/J[kܜέ7($-c|&5csc:6Uӣ"SB%bYߛݐ۪ذpQʇqMCVύA+}ޟY`ՋE+a +ƛ l i?Ж2psȃwu<h68X2G&kk +FA5c KG?w!\Q"r?aeg|Rjxɘ[rf)%
Ka:r\Ҵ7ESb;^U*HL;?u2b^ʐ=j~jl:>;(
HCʚ7|ϝ8R_=J1dc6
]z_{:$RcFioT˝GuL뗐XLD4"xψa/uOnQHln2If+ +%h)ԁ{"S-PIJmSaU `//s&S 9=jHCwuO}^>HRER1l&GOer%6\lϤGڗQq*N:|ߍ.^ͺr:_^H;BHsIf]]`8n)Æ +b߄( +MTDD8*[5
( >3.ƠYd:A@g/9^8n@xۮ(Hm%ޮH7/IC+n,Iʹg.9E><U!.G&bѷܯ !Ip,t^zy
<+SǛ?]-IY6&؝vzuW-b):cxPDћm_ECF|0kgzlÙߟ̦ *48;3Ա~^r:cftoi,"4T ;TlsA#N>Z쑪Kx
Tr_;3/5Y|';9q"F<bKĈ\W
A:vxY%o^CBf
`yv#=b]M3pڟ{f;o/QCPYT^])y$)1-OvMɅ/cQONa&FF`%"XX4h4O>f9>䇩6Zv&'P87 IZt%=\Cl0mzK!d\m +:FKaK8ΧNow8|I /yx>ߌHP+/ffczab1$nTOY4gHz6}?ҳZn[1d\36ݥ˪xc]"̰OAn\ b~֕:'$~黓* +ܣh
}B70?t AÚM{P,;p8<"Lĸ@xIH.:I?
qVx²sH=;j[d
b +[0rJ @i3CނJj
hB{_K[I2(q܇{Ay?? -xT*Jifbz˸@G
2ɪ)Q.o4؍ېE:RО)"53Knr2rqu'A7rƪ_8Х0v<_c&d6 |a@rH% +k:o4
(ѵ$ӕ<?N/Mf8\|}a*U:.]䣾0(T/WwDžf%g?LwKO_BDa?z)W.S8Z4fNcjUZYVghcO5d:۩QgL}u<ߍ_fb]Vo|b,
'ԡ+\EIJujYlu'_a?cB Gu@ +h]CruC7\{E2-%A%+u$55Ę8Hd&^~5Fm'í] +A<.GpR[5)%=Eߓ$жbܢqhLKR-j[Ο=y1dCWb1$V%m"]B'8o}JX +9(iuFizM<7ϼly醑rszSX-$E"m9U)$FxP$">S#]%2
Ye>)O$"$m +H7Z$u1L_,bG]~<z@DEF*muԬ0&J݈[KGd<Ĥ/rMyŇYau!U8B{_tE1!&1/^*.?)<1xnVc4S(۲ߙ:Ň^3"տ7#p%Fw-7: ^1C`!L_X̂wJ~OalIZ
c.۷ Vk9LfA*%R~D8*5{dW'u餹Gu- +.Mzh-M_ס/k]=ʩpߧ90g*6OFĸX&(hN)%L)6W11T
VI)пRfƷSVy}@ǘiocе| +T>QtQiP=(ߴdkR\U{3~]goYD{J~:Zb`}$2)]+N
`HL#u|/m}U~|s3>'͘}Ȼiͤ{Ũ}GKi#QyrG˻FL))E@wDۛ"Qp!M^~Djà<Asobw<-~"{ac֪L(73YJuóX"FM}BIB^
N&z{.ŷ|$$j7/eC:@;=LU,C]ZXؔNCc_n#(ZC=%2Nv>6OGxzU!a' `7G{- +endstream +endobj +35 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-301 -250 1164 946] +/FontName/XXVFAZ+CMBX10 +/ItalicAngle 0 +/StemV 114 +/FontFile 34 0 R +/Flags 4 +>> +endobj +34 0 obj +<< +/Filter[/FlateDecode] +/Length1 721 +/Length2 11493 +/Length3 533 +/Length 12048 +>> +stream +xS&_曶|3zӶmVVm۶]iVڪmݣ3'".֜gbƺX$*B&FvLL +-2 +MP;ߎ}1[(PB
tKfdӻY6vs
뵵(p_Q9G3}0
Ia6DR;l] > +dɵj7^:PM5}zGkce6!W%T'I=Gɻ1N^JKr,;&[mԢ<Fqkb7/,D0sU½2`1+-ع@,ta+ݟff0,Ð)^`m\} 7Z8AraF"ze[pe6'")1t|mtL8QJs?JAq'Sgõ?m#_ ++X|}b0> :"I-265==d[1Y/˜iǝ.$2GWj'EnRX1Y+G%aۻƝ%8IK6?yE-F@Jw誀,+.
9u-5SFFm&6_W%(_deXE.DfaLΨcMkFZa{@K-Đ+G-ߛ|Y SoޤLJ?x_ԆH?aQЪ?1S}y鲇;ܖz5
`<$;ci
L 9hE +z3]E>~"@
mXKGЅ(R/΄f(A[&~<XQe獌Y@ǵx.5oN؆`{C7JZ~wʊD7̴qrs=^ryY?`kR$q4C!˩XYalRP0,2Z땮ZVx&־?ɼהϾ4XchB{fȫxՑkr~U(jpu"K7f +C+90Yz*T{lR{ZB.jTv5a +8Bۻ(.*lo(v +*fܞG[3 8^&yd:U +dRXWS.\K="UƦjk-[ .1!?ζ*d@P;/Edn/+iw~RD͊?թ2VPiHhȢ +oBEF40hK;\o<
]db!}.tK8']DpOD-B]7).I5$cxL2h#tج`̡?ZxX +;-R#7Hq"{e +`ێ@]l'\P&A9Ѭ4;C3( ?
T 8QhEd|)r*hv̹|$ 9Rư/ںAuI|Q,OG#mXy Jd:d(8%i6/p,_v`9jس\],zOpN?u,چ?'`\a:*;>(un]x +gsLwZ8su5"Kc)&@#ZR=_&3N;AdGә5t2l?3]R(ͥC8cLx^Ȧ`n))orb}sn,?_WET+t<ngP:p&V,8ۂ.QœJM`=(6C_h8\˚q>+wds\o+ö̹Ҏ??ɋ[gOS$bR2Eb:頻'TIY˴ʳ]RiaINrLci*k8S[H!&i.K"IajOwM1lT}&T.AFz٪9?1_nмAJ=m2Tln +PYJuWV+rT0j^|RѠa^oRÓ ?6]|nݲ3K:eܤ)ecBMyFA62?Q?^ DI=((&Fǻ H,e2m+@N0Ɲ<EV~̺h]6G2YXBvIDK =ۦY(g:yh'29=8N̊+G;7D;4
jٮkql +ōTPmzFq5v{ +纴wSKSS +yYk漁M]sfTbeGR^~Lye2 Sl7v¬>n팜̜| My.8S<ӇS5WV=fp]۸0\%Lz4f@@"# +z7x42*%>6wԘV>;֩Htl7PAPiߨj{?+4Ot`hS +趑㍷P>Ug !ҵm!0vz8Y6~w#P;/|TZ̼*^
^c3@;9~h, +)Fhi,챲c"R&z
"wI""I3}] jntGn sZ2C +#Wmi2(h^+Ō8 1NQ2dvTriQAw72j|W+҆[cs_fh~=}-?O|ϡDW{,ޛdtWe#jfBe<i\UB^?.ɧkٔ. VL*m(g1bk͏@ +ePf[#՛[5dž_c
%Af&b?E3R}&Mq`uEeц! +@.aG^}B3A+@6ja/ +{XY'7AJqf~UyvFÎ6ue2paַlyڍb<ЭkV́SH\1Yaj@fY}!Mv|i|=~)+w<{f0S?zQ`zsUxY,OYƃ% +&=jz +ӵd/ +^zY<5,D^NXJS="ե +iY(vI*^jߛY+Y"'[J( A('eZ,Yf8J7FKz(<I17ArP<ْNtS{b
nvcJ(ALj{L#9 L*1hr$TQFiuҺF(9$y85 o胞V)^F;Xsͺ4.#v" +nuEO~r&JcI`p3u2Cghlz1'IJ!tB[|X]Q)kjM8%oP[ps-gW3"~V}G Oը88>{Opx @E/0`0k1dz~ |[8QtjS,=K&~kA6*~#LqAb+?lԑQ{-п)a^zE7M +%}TIN%{"N/pK<#:2}
',GӕAv%.(/BҭxT<jo
ъWZıTTX9ً\"wI?q8C$@">yi.Xrҗ6y4I2qyHOaLpVIs'
*'hvz#*'#J`y`_q8n#OHn@>&zvβnKX啘JMadll\g!3Įg9a_tͻ6|գ|oC{LcƬwF3iSDyhH4Rw7ʼnUmH),d6VjT͟M&jal9),Cz>ܷy*8뜄=<JDoKZk{EVyv:sMv. 2Ab(P}SWم\$ww,kᒻrؖ`:st<o!茑@~M
k'ޥn2-Z)7㤊(U$'XAUmP>,KNe.۠A:It335m9_KP4gʁͺ1=8ujUv|[~kbu| +t*cEd_rhxB%^[/4^L)<seqf8#!\wWlSyڀ)bÙwu2-#u8VZ+Ev2QynN~H6$<z + +vi\۞ۺuY'v$I{x^xfU4d\F{lxJ.6Ѡ5-j퓮*Oae=2x(Dfۘ`=fbYKټ0[_-#śׂ2"k11j ӟ`oq}m<R1fF^]fc!4&4%GY`nƑUQ8)1}9Zox49KTx3,P ^th" gW4^va)ח?_l4XEWPc:a>Ymn0ҡ7d4&N
Sch*:\xfLXk[Ma795lf3粲DǹXH@ݺ훦;jyTƴkV=4,uLK|&,!'Jxp11"䂮KXR5)MS!1`ukzqJt +syѲMpuͨXGfxl*yZKQn^ (CE9Gw%g"ܦne'4_`-j|bݸ'sϋ/$>hsu[e n[[dkNJZz;7^fķ }?&kSx~a4s>rΦ_Ӵot*em.-# +2S ?Y'Ͱ;iy.L;vS>PnJ N:RL/P
h"pt,/s} +0U$^+pnscp<--
dqqpmMiR!Eh{Ygts) B MU{qφQCf1Rf{DM1|EVG$B6:*p6~Km7oiFzQ?#gqUU'kZ5o8K^4cumf֫|E +2CenS +"%3YY0CsW<^S$v@J$R=mj_s*3}zb%sӼz9G#鶖3G/J 8É,$~Ui$ԠoAUr UBP@ x}wvN|pEh+,p=/8۩w!(ݝ͍rN<;U,q|[48)#SVIWW̭?
$ +@bO.ow77#JI$'cˈS {`ͻjPS͆iXf<z;mqBڄ0ޓ!F㚑`ty/4qk\4tuDo~KaP +r]=OPlwηM<YH&5I
ӳ.PbJeW!MRm4Z͠J%_#'MQkv}$ +r@m&ў
6t)bptkHQLwme\24PIYUmExPj[Yq +tqK_/m@ߚJ C VGg݆%z<u [~J8^n̷%W +pB8>0h-,ruJFP`YDo]q3#ROf,U^7'ZrvO +PTBt~~ߴsKXub3ǾVct dxe%;E*67_2fRX91EWSu|$(~$ +QE<ߑmVI^au|`1ʬi3rA#֬41!LOOFϧE +f>[xyUV=ކ7W(9?ClΥ,h4BZ{H]5U/54:$W D횗 W: X%&& nN\xz{0 +BkMp21V^V +&ߕHzz <B +~gsГcyk$L5neyٸkB¢4㙡 :a⊽bJ|CMηӭ@͔f-MFyzMY01E7<,b.^( +??u_bIr$
+-_W 馰{Joj@ԝ۟Kh|̪2!JqƇUidGSlɞ,Ň)P3Aɒk +r,D<~dt|ƏSqčx;ESt۬`3mއYS_մ;^_^p'mL
m
MY +endstream +endobj +38 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-251 -250 1009 969] +/FontName/SOTTXL+CMR10 +/ItalicAngle 0 +/StemV 69 +/FontFile 37 0 R +/Flags 4 +>> +endobj +37 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 15276 +/Length3 533 +/Length 15833 +>> +stream +xcp/]vqb۶m۶m+Ίm۶m'+<ݧλϗ]۩5W_cΪn2"eZA{#S1{;ZF:F.#ALNŔ35gCwt4pP +SK5u46XcblhP74u +'^Lb66rW%upu1uڛ:wdMM,]m{UX🔥yS;O@,!CeOQEKi@2#Lbhgbd?+7-+#?TY:J +r&0juvI9Ӆ-'"LGҳW|N#&X3kL'n,/S(#7@;+6+.imX&wl +" +s^/?[FdOEIh!h jhA:e/ZW *7]!Oؕ?x3*mfb?Cyn"佻U_`<%VO=k.MO?F%<a_`Q&*KVH(CvuI{8P>o]ZM5) +הߣ!otF3fe9'ى2 +/m&4CP@V?OvD&
)!kg:rYZ˸^e
=JoY\¯
-EpޟL OqOJd1]/fnw gX
zVR +I/ڱ_a>&[03> ,ZAjVPBɨ;cDMx$ +EL&/qI$ =s)S=ST0d-!dT$gezPy=hƤ>w^6ʖ,"gT<Q#ُMvf*,
*$z0 =q}P$nr/HڪI\|5Gu&&.^nJ8a拏C
wWpf[tBT +EԪκo@e7N_WKHls+zSY|+#ϻ)j'i3f2f×ԡmS/Ч><B vZ鐱C"^9:h^EEK+-y> +MD$+p98O!hn?oO0'eRV/cΦFݲ^=\1!3dShi |6:G>CtMlee÷&^#c9f2cmY\2U
ΐpvn28XsI'W`)AEY\vWAmXEE<$$C?ܮ+sQURU6ܥ}f^HE/bųKE r7618!*(' +J}s]PpZ
#,GB$&IeI[lJQ J}")ϗ`zf2v<V6/'RgXM(%&YJ$j +bQhS +TrP}aF2gi)~]^*.wt6<u,c]dm*<@IjusZ /sr_uh-Ѕq>wHАrPi+?o5_kҺ+yKeo1qu-բYD?&y?3_ukM&KάP->h#<g0<,"pa9YZdK=,)ش{2O> 1'O= '?{̨ /;)_OZnumݖs YKC3
7kj)Cldչ
:HkBdFEtYVnti0QtCy
39D/4F;tC[!#|_mWu +YŹ9vb<{_@k"xxDԜu#\i;rtw-%o34d z)&zuP5KcݱőlwR_Cp_eCp} 0~3IJڼBUy9~i^|TDS7kriG68D'xr9'wAoV*9nsvB^ +nfSj<iSBF۞{D٤
<lk
{p9~ZaTǑ@`*P0zybIeW?Ɍo=Iz0YX^97f4D+V +;{BpSwzVO"E:?YjX
h4 +DSTEة +qURG"L|Ć eeO֨Dq% !I?}mU
Xu +v|2l%=0 +8S{F{}N)hxD +#)5͉^lJM~-HG?ҙ%@zKTDAyWGNp)nԩ1g(;\5E10Wƨ?еU"kgvM +;!g'-7$/\_fˤ"WDXSgZ3;++]}0mICEX0V;d?8t%d/_!75_1V: + 5|M9w䁀%cRֺK +l6!5E6PWNk#C;KРqC5\wϰجj <Q?8sD(M<d +JOL[rĠ.sh߁Zd+Xl*SNΏA#[Y!J-Ӏ߉h
+9P
1`k\[ZF-iF)'[ +L1νVc/t1O;bG;Suİ@hJd>.
߯R"4 +\[aMތ%ݞ=(W[H@+-n맹DtkJd7߱ܦU1lIuƸӣww'u74gD%}<g欔h{rciSP~:y
w~.7?)J>Gl7af,ovQ!i0Y5{ +NγBs +=<N>w_Zi +":Y%[G4_8b%(֯\rKʐ"4(\w\LɃ鋾[>9 +D-KFL`Z\?4?wdîX&7wXtG# +*0\6JCvAWz#Y=&S<PN1SL
GTCbPrA&= +MdMev9؉R."Ծ` Wh%K~`F+L!,U+M(6fԊ2,S\
k+f:Y-Ҷ&X91aW;;zmG!U5Cx{Q&r#6H^%;i_N&[{QV3.K4(2lA1q2kkO" h +b?7P(3.lsy@G3X=N@D$Re9rWO{Ge
&sLXuu:c<77hcpHemf8zk*,J+>(V$YKRre<Is 36ja_
b5BjkJ8nȢ٪^Ѽ\Þj[pXȚ#{-0Rm$k?R.[ +6,q^Ci^(97V9Ӵ3mӜ.khIp2r∧onH0u9/26
tB`mSoN/Ү?%9>ҪkVܚmWWnLOQ~lN5n7Tǐ1+ӡfJv5 GvNY<%A7p:4~*Hх'=[cO+U:އԯ%F3:,r!ε H\:ܞxHo6l@NtӾ +de)ɠ!=Ov9osfe3pT)EN
r'6&Xnw+N|UYrQK?g*+Ro +"V]Ql]Czo ޗf\h&CP@B0 Cz+KC:%)MofImx3$]9lDqu/O"ZV0
NY! +gr+xUYwB
|9_LgаMnԤ~~K +Jh^d>ueR7%":V#9]bfH.;Dbp+>1 ]*Z7qn{*0tT~ #/+8O` d|Kk 7ӎh2QEՇE՞ɷwhE9ւ_²%Owz2(NZ#F0d݊TV̏`Cw+)9ּ8z +ZE0Ҋ7܈SFw#[3h +R;\d*"
P(xHڨ+?uV",q7/vU0o0$p
.u,H*
VJ<M#uwMZ|]V7125״<_(2a릀fߘg%G=Inxe[1I +NHp&ɢ +H -2l]Hp$Kmg'aW
͘3SkS:MK<)\Φ^gy?dàe<Mt=ct6g&T}(SL
ϰjqҏ]}W
![8gyĈnmxx[-.0">%gH'9ض\-<Ks߶ԺXc/hz9<݈٢Ӛq <YzRYm%o$n/"/&Eevo3
gL^RH3r?ޒ\7JEӺ4(Wr_c'D +,q_xNIkL;BD kDrR +8!%:qO
XjF΅Yiz02cL!`)KCf!p@)ס➧1;1Xk&*)e}gU/8MԮG~/z|du #04#ι1 + +aub!(:/2d2&$ҕOFE1U8\O+)&7@zZ{1hZ}:fMAxY4l + tR4m}ۆKp(1PH_*{_gnpn[?cThUmc}<y}du\b.l <~Y
7ؼeY}F +mb][Y$UTxl1r>*$6C$D?4
[hwsz̼$LI~BrΚ$J?pTYcT6CoQpj/H7:y/jԔ+j.Vf)cAF&|-}#V3;͒*Xbg7vB+tܪ/'*Oَ˲FxEo8%J} ]V+':
%" I:'8-)oi{0A[P'-%{$SJimL
8mtג0 +,4{h˞ݒxQ2{.;Qn{PAzBtL^2Jp":Y! WܺQbA^f6-}W-sySSRl5{kuyYfSE۾Otq2VV>}s}L=n$ +0Dq5ğ8a6`v5 UV[߾ɡ61FRE6 +SAWm_?[Piiz\q_^?S,ra,euS1qJ(qD<vwD(ݏ]
G(%`QP9bL=a`c|=6p\䩙a43&'%ul=g;hvy7B}mƉ}
3H mZ:NYc(`S[ a!Z<O^N,<tfKsPNlߨPF/L-hD#;!WY%hk&P6xU"PUfy1BMwrߏ;DgF(\y<7l(-5
_X;c3Vl-o7 6i!",o)K=31VwCTٙe1`{?;pc;4*%ܣUD[g˄&(fi,ZRb
#Lm
:!@eNDT*-tG +aOpnzW!,i%Hks>:uR#A~@́;Ң +`}sa¶,t#(@,[ҩZU_Ҳב:mF3lB}p_YYqKJٍm +%Fh6QUB0$Tq`"Eh("% wFg'd$GqK\e2K)3ONJ|kb'\=MHNzc&kMu҄{P*0^y/LE;/$3K4نl1z|kW>8nXٮh4ފuq7{gl?}CNO-gf&"ÒwAAS;w%C/#h^
RJS/$wq8R*DܝDN&gf4A?yЇX%4_*a\i#mE<XHT}̷%8%|0EJ\Bad><x)sTgpxj&m
MJJ2!&GΠogoUDD="!ٕ'77Gbۧ(fY^%/gdulMO@n}9\ ^W2@3gQ V7¬KRgȣ@)0bzH(a2vp?D<LInYp pȲ +{z·>i0kzɨ
Vn]s;$n2ނX fNc)$D<;rT<y2['wbOjd?ԋǑtD{l-ML~+?짖.CB})i#?Uz&/۟2rxCa;}ZF<{;#P;B~%w!Қ̃pr-,nGԛ.10q( +&a<[K?8K$沐ݧ'lY5/NpɆSͅʹ#j!Nzg#[<р]B^A< +pS{zQ S uu̖*N\(H5"_ŎDžl5WQR +ܙoO?*- +^ծW6EcSAq7|"0ٕ,<d.p@i;#Is4WɕqZ0]8)ɮ6H_EvZ7!
NR.,EBcJ;Kd*('<kV}..De=i\2, +Qpn]jaG+>376pm q,X}3ມc>QRsy"<Ϸ"-?]bmbR7.qaURě3fQZ-}ѮͦMnfy
~,odt|w%U-+rP':%Cz[Cn +w^̓ s3F̢X8b{IMmpS#-x]Ω,38Ug7_ϱҙP)at댷Y*IKvUTxY +9Pz9?ldE pK +Z#/fBkq$L\u%rݍ8,#njqt5ZPc_g2V摏 qMwv@`a"40_V=j>\ooQ=U?xG.^t]pb53+䭋":fV.x+pG"'I(TN8i%Cry|F+ugp_M1^*Y9gb]g-sdg1kevS+-EQ#,ΝlY"HG=4pzU[{!i@Z)7ZSkY4VҒ_E F{K}YJ<bP+0:zz0ŞY~ArTq^XhlP{'
s.f9QRW@z!X]2Gkz]acGJ'
8`uG=63zr{g{5_{ +3ĸ̧;~.<\[I3?#t97Q +endstream +endobj +41 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-4 -948 1329 786] +/FontName/HPNSAM+CMSY6 +/ItalicAngle -14.035 +/StemV 93 +/FontFile 40 0 R +/Flags 68 +>> +endobj +40 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 751 +/Length3 533 +/Length 1267 +>> +stream +xSUuLOJu+53Rp
4S03RUu.JM,sI,IR04Tp,MW04U002226RUp/,L(Qp2WpM-LNSM,HZRRZZTeh\ǥrg^Z9D8 +@WT*qmKdgaqn99~ A!S U[PZZZ4<6Ԕ\tYϒĜdǼT]C=cSDf[fEjJ@fIrBZbNq*X<5/);D#/Wɀ̼ʂTj0RQfB!P!Xh%d+$$0_Qkkib`hld`naV.4/4E,\ZTWN@i0JMHM=G41^GVkWw8ws,M~&6M=w3ܓizan5gα6w."?lQI;iaz˰8=ٗc/8XsýZGKl8n.zAmjQY0XuuC,U{.YGq'^KQx`5,V)ij:91Uz8wlSBAO},F@+dzIg߅sDEx\w`F<4 +_0^ +mB?=jiy_?/emuVs +sI+".ճZdaIk4VAZQlHm-m + )?>})snevf;5I:&Vj_JMwvRjͯhP)['M:g_71[G +p6as=}8p.<*`mȒ5ߌWll9mW2@Ĵ;8 +6p0,HIM,*M, +endstream +endobj +44 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-36 -250 1070 750] +/FontName/BFZLAM+CMR8 +/ItalicAngle 0 +/StemV 76 +/FontFile 43 0 R +/Flags 4 +>> +endobj +43 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 6440 +/Length3 533 +/Length 6989 +>> +stream +xUT{q[pw{@8 + +t=Ln~܂" +_Nc;,9FE8\ƽN&>XK2ڪߟ+)x/Yf3$ޞO捜V|{ =Epp +ڌ{t[^hAW#3#، +c*$&
c6|Zۏ*}B'm22$W(vd3L&&9:ǃ$vDY";wqə_UX +#c\&q4"|2VV~NZ luE*>.uY}V<oT?th(ӸK5E&p-3OyU2ؑXX1ojʝWCl!xyL@S65ms+Zr
v)&{8QG.~"#O8Bxelp_Z5EmGd:lrjRk?(L@n4N3eJ{ }lUA{ף%r0]'FnS]IZ|~n&&<N/@Qnhv&j>ᡠ`cbQ\ +RnbO2;#Ol(|>Cl㞭oQvzB5O)W{E? +Fw4CrhEp&qN#˜n{J̌{KT־a=:nFKD[TY9!-5"
4XW(g퍟3bÌ*Ix5ྍ\Z@gpv:h +!n>e +M䏶36cB$q~Nb<Tf~[ˈp!OжdZ>q>XS|dm*luЩDg-qkt]ZAQۤ.o'o29'ݕe"/]Hs>B#$g~>.OUf.!㻰}iY/45$RA!\vt@D Hgt|}_6tM(GH^SwO7:*r} #udj'̏Ҍ:ݎ|iiqqzwol϶X,:xjxeewqq&S7%쨿m=4Xߡwg +49+̬ax& +WOaHtVG.+q7
!H?1w%^vq?u{ʦk-͡&}FIӻ5W_7I6<YY#7v оÍz."ͭrg&mKYvLqw+^}Z$[Fûla5\flQ
HO*{A5 +GIBŃ +f.1G:g Gf@e163dM",>pQ}4*bґG^aޑ$3dg#P$&pㄸ}t +5M +^B @ge2"z@[v% +:]hƼg3Qa':,fmb}?jUnNc^x0;\ֳ1dà4x0)Vgxwnmҿgj8wIr$Ibb<<ngqcDT +j¤ԏ`_ẑپFH):!m 0bUF*/6\6>Su*k,Dc/ὸS0;kc;;obf6<d +i
VplAm*k9jy$/s#MۻD+'J[hL-@ͼߋz:8CߗH);WRԖOr%?b6nbaI6ZH|]6~N\{xJ&7Dfipwhp{D
QiˀX^J;F"ɘؑq7h?9Of%lZ'{x>z!S}<3AΎxҌz\m'`ЀE|\
WUrU\b/K/%RJ5"?l_mWG$}wĵWiK0ϒ#`qˀnQ"GbaYS vJȷa}GN){JѮ]_LȩERXOiߒ 12+[(_T^,rF\<^m1*G1Wcvw2ټ -^_+`Wm U.V}`-y685us:{PnR\u2el.{Bb65rVDULkNůG "p@=!q.qW0K.vxS~
Hk
߷yu` +w[=(Zc;8+7iQ$&Hا@M!z(s8ԈQjmZVc=5
<.ǭ+j{S "rkߌfohIH
mlf<_ԴDzi5w +bX2vͤl!]Dtmwϴ^If?)zFǷKnυ#H|bt[m@[xlCݯsR-[ ڋ@]/z 5ϟnx!yL!>]: {ʚ6ݿP7Ipl7:i78V^bFhh/D +endstream +endobj +53 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-27 -250 1122 750] +/FontName/YSHDRQ+CMR7 +/ItalicAngle 0 +/StemV 79 +/FontFile 52 0 R +/Flags 4 +>> +endobj +52 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 1325 +/Length3 533 +/Length 1856 +>> +stream +xi8\iE4QإTEط)SI:ʡ)U%XHPi 3֔},%!-ֈ$6$e +k59<>m
,HhT1f +AÀDI٭0d`K%A +rhDJp<mΎ}00F .0C!bx +a. +@Pt:Hel_~?`:
`7=GO/=쇟=/ZWy2/Ap04914$vΟS0WZYJz]ƗќigFށiM~_ȼ?i6l?k&7wN|;yWMwrҿR%J}jOWaURL'mNO/5KkI²\ϥʾeSON]_}sQmggk\Ņcp؊_e,xw%'ܵiܛQ9k3x)Nʑ6<1 r! +ɶSx*qOh2|/|jUK=?>9=?KEɒFg)ྙ.GN'jT-q&].b\;6L)z?Z٩(gtϖHT-x5a:lmLl+=t}]'|ݓ72P7TJdY8C<9on_6>]\EHX>%lZl|x!p*?z~zkFv\h0OY}ERʰ+#Ec +|< )ܥ],颤-g+S$SOjrtz'YoMuvG].ёmj"!*i-tBy* sۑlgeX[q72uwc(b9
ӴС-ߍasOZ~nxbEtaܴ iiy[O_%Up߈bd㚥LRqvm-\Mj+{Qh~!2;+Sihƚٌhޏqä3$|-6_xaI=,@ZVR<TȍGrۼm0*HS@5ܺN(iSڟXZɫpFRT+L}xJ;HouG6Ȣ"ǏiaܨVrK*Zdݯ +Q*q=\/ج|>ɴr{oJǜ>o t} pQjĹյؿև5LHVH(1̗6%<r69Ӆ~28IXf36*ߋPDbn?$YWlDd4KN9Su!f$<c1zUe0|P.q]'UDpֆBD? +cIT:pSW,xMtCy\zgF]I7霼5w)K㪐kco)8i23h<=' +endstream +endobj +56 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-4 -235 731 800] +/FontName/JQOGWQ+CMTT10 +/ItalicAngle 0 +/StemV 69 +/FontFile 55 0 R +/Flags 4 +>> +endobj +55 0 obj +<< +/Filter[/FlateDecode] +/Length1 719 +/Length2 13288 +/Length3 533 +/Length 13845 +>> +stream +xUT%֥@wwwwwgqwwO!%=qunz]Xs͘+b$j"掦@IGWF^:3YBhj n +D@ + bt63q +X?lKz#lKltrk"@!8s"aޏLf{,9ZQX n5=Q>ݦ9 ԃGê@٪D,LԞpWVk!J22)n>)oĝ*Df#I)rqU9 zCOb(ԍޑ0H"<9 R<̟^ӽk 7XpUp&b^!R#Q>Z^ +bℊwͅ`&8ѹE86U3!d'd_#9$-0/fO(vq!3MȒ(5<x'Z/b?< /<̢~MZ6=gz4",/WZ)LRlA>BY>,> +^< +6!4L(K^,~G4l6|n}d}Nbg,UQ0S. +NąT{
5kCP29E{9s{]H4t9]Ƹ؝״v-:reIC{ +P;`'x
M5P3TfΏ3K|Ѕͩ윲+^2RTޘcbv6{|-IJц}m>+*u@c\$(rU8,Q:BPNIh}E!AJ>P|hW@HEpe<BRxVQ=M\$n/%SKe))m<|\*aIh2l;KuGlMy{
5УԂcl3>JNkRɨa~1IϟL2r2[ĖgnB**jvϔ/ B\".cBTx+cL5'[מh#Y+a~!YKf,]>^&'D1q"Д +:eziSܷخoUTܷX?Eٚ.))ܔ |%7tlOB{6A^ҡ{ϩՋ(7 +-)߶ܥ>D0\u2fY~C7ULC =jL~(1)(lƠ݇_tƩ0pu}x1Sp a; Foee'2+}(7 /8.ESyIsI.mm +i349uDd`GC~ıxyӱgC.f{¹~-Gjê +
Y$SM)Y*%D\0˵/ړXH4$M2BY.Tcq4*]'3M358etԲ#XfnnM*G XGX8(ſ<8Nޱ/~brEs!f^D>T_FԊ}y橀Q0$:pIN`$̗&KeMF5@xOepUۛ#^od~tr.p&:!z:)۟1ܞ8z0MN+1a^W.(z6.ލn&C`?$@/J{ +0ʀId[6 +F@
]ҧؠ屨yho?n`="zPS,V|Ma}}9t9d&YdNavG̾+y2$#{X_udېMQgw[+am~GKNGek)*шWSN!!!I|9Ȓx2Juf\Ӛo2{ +E7Ӊ9)Ns\ahkl::katR$j|Aʤe +%Jp|;!Ii2DXz\)8^3LOK)0?Z4P[=iqoܾ +om#+ +]vth}<|VɎ&<Qq=m'4$^ bi{8߫@TjWPFNCiλnWXCkꗺJ|;}KS+1J6ߙ=joD뿎rb`#x% (!`FQ>5툓*"|;rF'tn~{%g몘:n~%|6m]h6N+Jninw|Zj +^¤IpD~g[3ݕ +8kO|>>WJ6pW-FN|SJ3}4e)ΧሧG=XF&$ӶF0x3UQR5ᯡ;+c0|uI#.͢1ܧ0;:vXy+ÏdxpQFs>NXUkp/IҪUc-#,x]oD(I+v財>i16unh&`߆2c鲛Iъݒ\O4#qFy:h:=]Ռ*GY;6R/R}U| xJ7a0#Y'ja/6AdS2Кv6uxE<eQa]Jsy]jV)l~<ǿ&Unl7m@5cR]>;/O$DMDƱC=Z7
Q2ACUt6{P04G/gm8cQ`UUd]Yʞϟ?F2yC"p/T-sA_52';`mt=]+dz~εR1fԮ= +~mԖEb=RA#{|{wNfo͡ y.`ޯ#paYN㡏ԝ!?@G*pڪ_@m}- ([3pu/ +ޱ1 b]ݤ%āR$z5meߤ)1kKyX۸7dBxS}^TG|Η蓴DV=fX~ԝ>wݹ~UvߤEWs# y]O%#9Τ˝{ />P#,;N0cB!Q=é~bB<|#)ظ,WZCITh15-jQYtQ7wQL`ң gU)@kRt=@~x(.MYpX[1xsj#Qkj'(\`[]jJ"?+sbGmlO8jYl4<ik&PoφPAgݰ0?:z(PdbU"rR@eb]ܖz~09:c0ca?fARcO,5 +q&衾#KIk%ۊTcIs]9soe[AMi +5E.Pfm=|C<%~"w5UD9FOU=aFEMvm=B?ۼFN 9LQ{@0ht]}r@/ů{Ol|%=^e*`~SETܷY,IΎ3YmIi;i +H$1٤CUhF取ao-x$N/%[k8ҫ6Qp?P;WzsSa?<g&0q/gyD#$;mWvp'hNc~ICd
af<}zfU+J,mэ6[d57xX[.M,㏹} +[>|.@A99zMR%Oa|hƾ|U hu6@aE<"ϓB)]o2; M)Y1\o`fĎz`bfiObǯr:UrGެ3|eu.[1I0`q4JpHV/kuO26dn#ryU6(yɠjvZR m@YAݍ<Ho|!sgSvo +ÔͻKZr$q.w)xE:a3bevolg2G^M=qZ%A GH2$)a_$OTYA9n*7;u>Ol{ +`1xT%W +Voo1`%[hrA_uIXLBokGCTbRfO̻)vXh +%/Z +K4lp%ڮz21;
k.j_=/B>(D2:8eiHy.rorca`eyT&T(-Vڮ$H=~DPk3)#dXa>H*J~-) +ͭ<*qxw?9DȸRYQHCCjM`F/ Mwx'E +=ij8FOn}YRnQ6s8cn4nu('p +R`'9D7tӆUϲKښJ<M?shȕV1Qw>pJC1RV4e_ eeW ԅq{9ꩉ|V*fF
:!vd*Dk(?FW@RMY\Ws?>Yf祍zaQ\eMb)@Y<*
&]Dq CBtjx:yFW)!K`Тu%O썍tSuڇ[)9^r)kd-_LG^2A@aKͨÏ
2$ű2
=-
{bNWd皒cnns.dtޝ=f%HѴ˱Nu~I.<=jK~#&xzs +qjTf/5 + +->ǡMM})VRfF sضBTC8kR`<cx_qNY}VZhOڌ5-JbDhIp/4$/Z͕z~9L.D~OY\܃z{Y3G8=V]4g]e4|{RWi +>zq:1:ci:
ËXIdI
P |K["_KQY~eez6?&t&a%=By$DV}c<Mپc㒡 Ά0js~!U6bk.Xo5oMqZǗr1IPΛ
+f
Sސyq--Y)Ok9ۼQS?ԉGT⣫G.t,R`g&u,9#WọʂzL.H(켈y :wdF[B~O:5 -W"?k
h#\`&Kq5|EXfEU;p$/]$~y03i]er[lRJ߿KLD.$-4!L]0H{7JBz̫KRk mW +Z}@wXszϢ?.R$-9!v~K9j4ED +
0͎O?!IZݽД)QGppsAe8V +&̏@C`ڜἰ-D\Fו["QyX;ELhCKy}HbuJo*ސ[F1V5}zmQ3_fB7NlzWNߒӓ i7c&@ "c: +[3~'ˮ*|z~~/[lrYf6r)W`%qwFP
,d[<J»a=OA4%X +WXj"'z4<7{YdACd2vI=V,/{)G3͠iiqc8^gaۮ\>Z0XH3y87\\}m? +N?Yqp905 N,J)ΣwNƶΆ9Xgs~8NS +xiwMvx*dSgU@q`y99!_R*"n46C~Y%#%*f٦ܺvJmJN\ٱ<UGK+7n)B$"mZ4+}
Qs ;[Ly +sG6S>5G;:Fi}kYUdcv~$xݓiس()aNvU,?M<8*>I&.[Yړ Mz_$aG7b"ϑ#kyHSɷ\~23 LR5ecjbK#RWJ&bWh0e\3
=}QA> t {~|X!/9JA#U'ebM3ȯn +ڄ&;a,o7ay#TLnX]b!L]:,'[|!XZO +ڶw_ :FU@@,$tMjT
e5P;Qb/ȃI + /FvÝYt6K#7SܻH!%DrLVxe@2ܐCi%x +3Qi +M? +LUjf#Efͨ\0%ȡbe`+2QMmQ)7:z_` B&tKo::9M*D6q=!EMiqT98>T}]g^p6D~YVb
5BՍ@Z5˼'Oڄ⮬@+ ym=+E K\Ĺ +-)Ca<f{Y h9&m0 +1Qy%*ʨv b=U:7A"Q.* L!|0(c*#IGN +UנrN
4wqkA +ydko+AmJ˫
:M@IO>Þi^v8#۽qDdOI[3FNqQFpF&nIWYq>_vIV[Jd(Bp)l$vjh%YGJR_~ª1m?^ךÏ) +
rt,6gh6>ח.Op7A!
`khhgu!{gy\nbXE_s9nS.Tu)VZ2ՏfxzRꬥǍtyxNe0lLJ:+/NhJ +rP7ٹh́^ #!B.Z#p~r&,iml*lr,_8}i/Kv}<s=6dKEp6_an?ބ +5McgQXln
+$RLH}ǺFȏ(1c絴H6v?LkrghYT:2s<T.+!zXCCG+Wg|b ++\Z(_1sw|`+kTiE)!cW%UARI{T5-uD@t}eD +W +QO5(fi}EUE'LVVl|*W0
@hS:.VU9*"\=# 5a'RSoH̩TX+8+j&q\\X>i1Ov-5OH?(&hɾ fy 08:ڛ8" _"` +endstream +endobj +64 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-32 -250 1048 750] +/FontName/FQGAMG+CMMI10 +/ItalicAngle -14.04 +/StemV 72 +/FontFile 63 0 R +/Flags 68 +>> +endobj +63 0 obj +<< +/Filter[/FlateDecode] +/Length1 727 +/Length2 6670 +/Length3 533 +/Length 7232 +>> +stream +xUX\ݖ +w
4\ ܝ@p}sswc|k^m=n[Wk+
Dr* ^5//6ptCPQ +3vD8 +/_1?]pyyAvnC@LO*YYW +Gu|c;?MB}6ء~`uR<<eE 2m[D3ۯT#F_7syHV.!ܵ5!#=Q+^垎QHd}!աI)tSG@HɎCWX<|lmv9JD"-iQl7.Ga'E"S["Zo34뙸%lTqX AMy<O5>Fl\ra!{"D[3{>hd@>2Չ
s\J2d<QnO-Hu)Doepw/I`^XZyt=aa0ՈWp$g'>6=˴XzLb0#ycBwE$v9L^֑utW(82YpΏHZ +ԫה%IT`q'[:$$I~k$v;⹜0K<,қ@(=-{fD$6c
t<-<#JS!sU@%E6yend;tXZbkbxëVӁ<M,cS
Zt^D 66ca{h|r{=ŎRt̷;K.!V`Gon͠ѧe
Tk@A$Q a7" ,?T!>`Zĸ/ToQK?% +|l#C sJͷ#̚nL)8:&y|=CzeDrp7?Q.d|D#wi4>p*baUT GALfjĄ6߶)@0D8RTӍd^n0E5
n`zQL]od8tBzv.gwLwQO@9o&~y!1mWͬu̜u|oUA'y=y+ +j柧L]tW8k2
Ňܦ6
l$懤ytHHNP86[$_<cc9;hjZ!:052JI ly0l@1M"(IUoRx(Vq\ҧ6[읡_#3`} 7*ѫ]pVW\LV~KIy#Ʉ~#+ ҙ.짊^hJ5A:ewoE嘷ST%Y8
Ex$\9R)!=҅,dl<BHn8J;) '␢4]5;ݫRh=^DmIf%RՒ:. [^/l{|j{¯]9s+
H{(%\|-Cв8\+Zm$o}U*~ig~$6HP{?Fi}YE⒱Q>OɆPP9`I?zCN +Db Im Q؊Y>PA%{ZNdzO9ZbZyy21Yd%ydHx0]jd.m}6 vΒ":QJ̥ ݼNƏp4tC%>ıU+&^fahQCpuK/DuoWWϭcK#XP+C +9Z2wF]wAVyn^"[G.UbuoF2ZXIOUC +2J_4MכE<XߛswIRavyf1y:a ϗ
V[z~^ +ɸBK{IU"xH{v;B=* +a +5QKaCk\},fJ{W="24+ܵ&^+UD
\@d.KO*>EVH3#0焍 +6O3wnQh?s[/`#>1+&!WXRfOꡗ^ȵ^ _8٤4(yE&RcP9;w:f8-OlD>af.{b$N<'ҢHDx?mK;m^B&}D^r{dL=ma)̼DDIf$r`BiS|bMUµۙ+Ò%!==EtxK$Cxء*qp5&{'bIE`3`(͙ɣςdr;vxW2!ÏjZV㦏{0ֈaێJbB6iQPNX5Ҳg7Q>1,ڏ$?|lyEgbO.#UⲢF5qL/Uf
h}>]->\jH3#ST3?tRŻ'ĺKR5(!ۥH%LCf7)=pUx글ɼo&Xwڋ-S:P +ZەEf~xVKh k̓y1P#2JX"3v0'4>`6Lۍy=AZt/?xζ_.PYh3OhoX.>WaXKl#r9 +(ǟy +fmN=OcG3*l1Nl[a>h$措8,n{V:gTc0k52k̠ҏbo4puٙEIdޭM@2Յ6u쟵B'V?CXK 3!bSRO|i]-O3?5!ܸ +~Q)!2UV^<{ qЮPoWS'dr`Ig,|d}"C&V4M.M1J͠|8#$༰>+u<&9ekg_*8]4BC'ހ`5BH/*7[{%_xAt@ h!?xjuJ4k2ׅQ'oy,xoѾZOP|̜emJ]W;cΧy%P2͋ˍ9K'_W]/7(I/䆏pډf* Ñ '@Wzo]Ѧ9ohbX5]ybN?#|/9
Ys٩:-̟B^/92S>UdGRsauR!. +v)'6pb:U8_>x4jgs!ԇb8ψCؒ.VKVt.'4V +v+TsK$g=(jVT;E]
G_'YneLc,P3sj,M^X~ P-6*uy:mhJ8ȭv (lJx"u*E{04tZ8x@s)jT=T5RC5=S7ɛ:MKwgwy!' +daL0ݫ='JO<Yቲnn .U7 L"N?VVZ4lu'un]XQ_xreSc ̛xa7w_}P)ӆSԱH,峽9{'S/rt#I5Qx.3%r;*D r09zxc/[(-D};t&MWC(˲*Ơ+6#=Ӑ6_$FKGz(7Ho댘;Rݐt$K<=V苘"zGӦa'ҋVGƜf矺92Dx6rZ +_ЇBGnJ?"(1IHy-S݇I eo=*~1ճ7DC|Kɨ9ymW?49p7[ٜC£Hև .mgU̿-m +`1Ѵ3rž^Jh}ljfc˅}dB?z4CF*oi*\sf 9S +̹ͮkJwa;79vS]Vh|-|60(p? +endstream +endobj +67 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-20 -250 1193 750] +/FontName/LTVBNX+CMR6 +/ItalicAngle 0 +/StemV 83 +/FontFile 66 0 R +/Flags 4 +>> +endobj +66 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 1158 +/Length3 533 +/Length 1688 +>> +stream +xYTwK$Vc" 2`Y$0BjA$ + +L4D!J,8}`L RhVp.vlzxf諞F0MyQk± +ڿwPkkNٓzH2;5=7ϫBJRvcw\kC_IcЍ'=5F\5nK`EL"8GouMdB?Kn\`}u\b8]xaSո;O'wTT,u.rk6gs-3)gm"/k&j*Jh`a4:kovQC7{VȯAnM.
^C:6죙y焖O&2FpʪaQCvh"/,aLwF2ZNMOޅM< +endstream +endobj +75 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-163 -250 1146 969] +/FontName/PPCPCC+CMTI10 +/ItalicAngle -14.04 +/StemV 68 +/FontFile 74 0 R +/Flags 68 +>> +endobj +74 0 obj +<< +/Filter[/FlateDecode] +/Length1 728 +/Length2 6322 +/Length3 533 +/Length 6881 +>> +stream +xeT\ݖq$@p Npw +*,VC;,{9ݣ?wwܽ5|\~{l
mv)%H-QQpspqIc10ȸ, v.β0[H 3ssca1 +RܤC]M:^&Lo.?YֵM1F}0w1^-<Ϫ6go{>1E u5fȓ2KV֡ +GTʗ&gX(I);5Q@vh2Nu +e[;]i&~},/6$<f</~VmQ%2/gq^Z"L"5LPKz1>t/"7^5uUI 'MLA5z]<C4^X{F$eeZV+Eu +^\FMr
]\?L"bfS~{iq + npĶ)OC)e".M.8Ѯm="{a>=T+N&Z^LޔV
/蠥Ȋ7:lMw̆pxa;gh& sE{1d8s,'<Ij>E^>.e&YؓDj
!_LvkCx1\dRi!3`>m[nH^@@hWZ%jԇçZKQq9)wKe8ZtQ^8/§:lkfƣh=Mνq1ӑK>E-{>¥keyy>Ռа5dCdP4H{u)}`@c1u۳ +顁{ +;5$nq-_p^}/e1,(0$>kKȢd>cj3pgjvVn~ʖuǩ;5čI}1]X=n&̹+ǎ~Jxi:%٭{rh凙voYˣ4^+p0gRF8ߗU~6Bm䪲pmIKZ,/]I*#!w3o7A\LQV_Y%'D + +eN8kх&H!f8ffmXNɸr%*Avb#@ q)(݅Z63i +1fMSуES4k_LHh/F7'}uD}V9?i6'g/$KLO ]hEyjpȮ697wQ[*!pq"FDwsCu.И|xP`[io& +"}gg_-.@IDW|ݷ(zBaCԿˌ#ku#9)9ڜ,G!ō<t= 1@2VB.կnܖ&ƌ;ȅw!MT߀4>*-\w-! +qv kZDa\5E+\UtЉO< +TयՅ%UCIWK~S!bԏ51C^B L"Av2;`ڧ~ECpᝈr ܻ`+VB7'M_I/\90ۮ|F\Amܚ$eUȧZK Zh5.?=!Y|37`-mGeilf8l<HPqD +c|boH\?"¸7_?mRWKhe <(8/>#"f=)GuSuH@[gy#?^ɋ%lPw+ ¹jA%mS
b +j-1ZA3r}HteOf*8 +t + +Ƣ2qJyLSf]XP%]Fr?W'Lƛ7'sOW9lyw.AE| +J[+V?@]8VA]BMAWkgM +RMw!l'C[Hgk\ 3i-G&JE`Fp}@Bn5Ƕ5M|<XA @(Y]Wxh_;pCiu|~֤SV+*xC
5 +L\(v8 y2;=Vb%!C0cB#Cuu&y%HMRQ_^}9ÍR(dtUab;@"|FdP ++eZ|~녪mH(E#&BD坬Y ۜvj/hJ=4jlb~8((D4z>rOYh+z +E;twc_k)v}Qn\'hG\mt("RZY;ěV5ȐA9=ѯ;2?cwt/*+0==Har7B#ʔx;gX(Nn347;ҁ>A퉵YJSo,"A_AkA8kLX5WiD@N[dzD${Ndc^{:coa
6#F'XOu3zҲ>L.#P/,yeD8cS%W(fzqzeNL]'fGj[4&bJ랤kO]du7-Hn!oe4@;&:SZQE07JZK>ԵR' S`~c+"!#zA?ETsl075QY^
=^);2/:M<V.$Օ//V w +endstream +endobj +83 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[14 -250 1077 750] +/FontName/BAXKGQ+CMCSC10 +/ItalicAngle 0 +/StemV 72 +/FontFile 82 0 R +/Flags 4 +>> +endobj +82 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 3944 +/Length3 533 +/Length 4498 +>> +stream +xgXSۗ#% JD":H@B!tEA&;X%"M5týw3_o9_z{ko[& 0#\eA*z*&*`XHãC4J˂22`d%ee@ +3 +ųDn#.4m^4ɊP7VoG-1͆L4o6,ovI$pmeY? +ߘ|d9vɶL[iK73 $I$IM,ٱ#y'][X;hReO-~KJL~+Mm2Sro翷A@PM~(P+m*lo0cUSB/`g|D@_
A'IwKD`ڀx}ـԡ9'IAy;uvx} Xu3:qҽ+ֿ/̬vAZ0Agvg|Yj;l0wA`P,NK"70CfL<|^qiadK\8R[&6,'W5$3Oϗq6 +zHg7zߝmʦqbRt10sR7ad=Ld<YgU<^v+<a{(Xdm^E^A6PJDr<PK)/:^/ԩ[*s9&HR[MΩ~&&fVQ/PcƲB +yXnq~8Jm +o`R v #*N[gkj!8'N/c
R>ʲJޡD^Cڂ'\J^UxaGHI0Ky?jdži8;2za9wΜ,\S)(9Kں[SWWhUciu"fheY=cjwgi:Kү4PdY'dh6zEDt{ކd
BW^XihhCʏ_"0dV8H-[]sdyИtʩ95*1FM,)Rr&%Zz^,V+~eT
ѓ'f[F| +Jw{b dV2=L;r\o[6mF@Zr$sHYɫs kI(T+~x\k +3:~3mnDu>
HCoU~>.C:zG G1HpZ+="$Rg +;MXA?6(+o,Kw+{[~a̼ZpΩRD]=k~Zܻ9ˁ7>Y-M.n,n>5iPE.<d|:sQ큰2N^Q +yΒ`Z`N9AųN͗vO*LeF]d9V@h.t;Ռ;$DDfN{Ie% +&&>^Dg6 θڝy9='W(P:S^}^s
8u%{w:J6[U%$7ED8s
+c{g/+cDM"j풵G 6Pi"+1o||#`zZku{fQ^a ޖmސ4B=7S"pDdoR7I`;Ytw(.1!#g|vс`C_\} .|nS;pYQ_NZWi@>E[Z9RdU|j=O4cpopv`<JOr_m`iSy2&|}"IEպ$!6AqpccW*MK
J<6+tӷ1a~2oSQVhY'y}Dj8j5-\4%So;=;B;4\x帽WV}\hzj|P37'訅JgNH8E{@1@n/} +endstream +endobj +158 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[0 -250 1171 750] +/FontName/BPGRXE+CMMI7 +/ItalicAngle -14.04 +/StemV 81 +/FontFile 157 0 R +/Flags 68 +>> +endobj +157 0 obj +<< +/Filter[/FlateDecode] +/Length1 722 +/Length2 1384 +/Length3 533 +/Length 1918 +>> +stream +x}<T#,HX[bs0a,ɘј3\yXyZW!\OEy(OY-V뺃u9|~=?ug7%hTĂ#,q85j1`S +X9t$8hZkm +`@,`[G"&;#RQ"-wƷškly\{n7!p +$ +[wUwcv.*5E*_Pr?4P'oQP;o촼|)~RnZi!H72ԡ_ss(fWE/5W!扉Vn<qOxQꀸフvwz 5Y_r"vr2!*;?Yh1r=l}]#^婷DT;0E}67>+5.9pjbY=QL48$*wo@ vƺjoۓ.>zt泫5ӟ'ò3>KZ _hOg$\;ľ>Ό*кkK(ڏ7zW7DV`v}D
Zr0g3>=uhAϯ<$n0:+3#>Wl\Y*̖ixX=ҭ½}Y"~-vr|?
(5ΥU+`Vh_q>eh:jrU"V)˰x'jEu?v:!B0:}P鈚hyˏU{ZqSm3*?O@g/ez/:߈Qpa٫ȣa +ﷺomsynp/fT +;CSޗ%N֤оRŭ>6;"o+>,GVvJm5Ke^#-hhiiJ ZXwB MEm%cz?q~^]2dȂBTe$ +YR>Ȏ}4<7i4-}c3-<k{ROm\QaJA|etnIF[n"A#AUj}}T=5 Qb#]n7&ynQwylw}H@gz̯lፙ)yǹ(3U+z*1,o79XHt[ײFbZNd]cgv\GOҗ9.*CM̿ޥ=R\(>fNXmKr)AZe=j!ɐE1K^go5ۤ$ܭs;3,S'ky31֞]פ9OnKyy)5[8=2dq8h̺P@[ӽTl|<t4}6ν7ґ̙
}Y+3ωU&"Ab tqFdy"_s5&8rf.--tNEp@1+d{n_ii-(BV&Rntw?x Q`ΠAP +endstream +endobj +161 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-15 -951 1252 782] +/FontName/HDXOFJ+CMSY7 +/ItalicAngle -14.035 +/StemV 93 +/FontFile 160 0 R +/Flags 68 +>> +endobj +160 0 obj +<< +/Filter[/FlateDecode] +/Length1 721 +/Length2 621 +/Length3 533 +/Length 1132 +>> +stream +xSUuLOJu+53Rp
4W03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp2WpM-LNSM,HZRRZZTeh\ǥrg^Z9D8 +@WT*qmKdgaqn99~ A!S U[PZZZ4<6Ԕ\tYϒĜdǼT]C=cSDf[fEjJ@fIrBZbNq*X<5/);D%Kɀ̼ʂTj0RQfB!P!Xh%d+$$0_QLC +FF +F +C2KS=]L
,ɥEEy% +רĢĢl.. +endstream +endobj +1 0 obj +<< +/Creator( TeX output 2005.04.27:2303) +/Producer(dvipdfm 0.13.2c, Copyright \251 1998, by Mark A. Wicks) +/CreationDate(D:20050427230307+01'00') +>> +endobj +5 0 obj +<< +/Type/Page +/Resources 6 0 R +/Contents[46 0 R 4 0 R 47 0 R 48 0 R] +/Parent 185 0 R +>> +endobj +50 0 obj +<< +/Type/Page +/Resources 51 0 R +/Contents[46 0 R 4 0 R 58 0 R 48 0 R] +/Parent 186 0 R +>> +endobj +60 0 obj +<< +/Type/Page +/Resources 61 0 R +/Contents[46 0 R 4 0 R 69 0 R 48 0 R] +/Parent 186 0 R +>> +endobj +186 0 obj +<< +/Type/Pages +/Count 2 +/Kids[50 0 R 60 0 R] +/Parent 185 0 R +>> +endobj +71 0 obj +<< +/Type/Page +/Resources 72 0 R +/Contents[46 0 R 4 0 R 77 0 R 48 0 R] +/Parent 187 0 R +>> +endobj +79 0 obj +<< +/Type/Page +/Resources 80 0 R +/Contents[46 0 R 4 0 R 85 0 R 48 0 R] +/Parent 187 0 R +>> +endobj +187 0 obj +<< +/Type/Pages +/Count 2 +/Kids[71 0 R 79 0 R] +/Parent 185 0 R +>> +endobj +87 0 obj +<< +/Type/Page +/Resources 88 0 R +/Contents[46 0 R 4 0 R 89 0 R 48 0 R] +/Parent 188 0 R +>> +endobj +91 0 obj +<< +/Type/Page +/Resources 92 0 R +/Contents[46 0 R 4 0 R 93 0 R 48 0 R] +/Parent 188 0 R +>> +endobj +188 0 obj +<< +/Type/Pages +/Count 2 +/Kids[87 0 R 91 0 R] +/Parent 185 0 R +>> +endobj +185 0 obj +<< +/Type/Pages +/Count 7 +/Kids[5 0 R 186 0 R 187 0 R 188 0 R] +/Parent 3 0 R +>> +endobj +95 0 obj +<< +/Type/Page +/Resources 96 0 R +/Contents[46 0 R 4 0 R 97 0 R 48 0 R] +/Parent 189 0 R +>> +endobj +99 0 obj +<< +/Type/Page +/Resources 100 0 R +/Contents[46 0 R 4 0 R 101 0 R 48 0 R] +/Parent 190 0 R +>> +endobj +103 0 obj +<< +/Type/Page +/Resources 104 0 R +/Contents[46 0 R 4 0 R 105 0 R 48 0 R] +/Parent 190 0 R +>> +endobj +190 0 obj +<< +/Type/Pages +/Count 2 +/Kids[99 0 R 103 0 R] +/Parent 189 0 R +>> +endobj +107 0 obj +<< +/Type/Page +/Resources 108 0 R +/Contents[46 0 R 4 0 R 109 0 R 48 0 R] +/Parent 191 0 R +>> +endobj +111 0 obj +<< +/Type/Page +/Resources 112 0 R +/Contents[46 0 R 4 0 R 113 0 R 48 0 R] +/Parent 191 0 R +>> +endobj +191 0 obj +<< +/Type/Pages +/Count 2 +/Kids[107 0 R 111 0 R] +/Parent 189 0 R +>> +endobj +115 0 obj +<< +/Type/Page +/Resources 116 0 R +/Contents[46 0 R 4 0 R 117 0 R 48 0 R] +/Parent 192 0 R +>> +endobj +119 0 obj +<< +/Type/Page +/Resources 120 0 R +/Contents[46 0 R 4 0 R 121 0 R 48 0 R] +/Parent 192 0 R +>> +endobj +192 0 obj +<< +/Type/Pages +/Count 2 +/Kids[115 0 R 119 0 R] +/Parent 189 0 R +>> +endobj +189 0 obj +<< +/Type/Pages +/Count 7 +/Kids[95 0 R 190 0 R 191 0 R 192 0 R] +/Parent 3 0 R +>> +endobj +123 0 obj +<< +/Type/Page +/Resources 124 0 R +/Contents[46 0 R 4 0 R 125 0 R 48 0 R] +/Parent 193 0 R +>> +endobj +127 0 obj +<< +/Type/Page +/Resources 128 0 R +/Contents[46 0 R 4 0 R 129 0 R 48 0 R] +/Parent 194 0 R +>> +endobj +131 0 obj +<< +/Type/Page +/Resources 132 0 R +/Contents[46 0 R 4 0 R 133 0 R 48 0 R] +/Parent 194 0 R +>> +endobj +194 0 obj +<< +/Type/Pages +/Count 2 +/Kids[127 0 R 131 0 R] +/Parent 193 0 R +>> +endobj +135 0 obj +<< +/Type/Page +/Resources 136 0 R +/Contents[46 0 R 4 0 R 137 0 R 48 0 R] +/Parent 195 0 R +>> +endobj +139 0 obj +<< +/Type/Page +/Resources 140 0 R +/Contents[46 0 R 4 0 R 141 0 R 48 0 R] +/Parent 195 0 R +>> +endobj +195 0 obj +<< +/Type/Pages +/Count 2 +/Kids[135 0 R 139 0 R] +/Parent 193 0 R +>> +endobj +143 0 obj +<< +/Type/Page +/Resources 144 0 R +/Contents[46 0 R 4 0 R 145 0 R 48 0 R] +/Parent 196 0 R +>> +endobj +147 0 obj +<< +/Type/Page +/Resources 148 0 R +/Contents[46 0 R 4 0 R 149 0 R 48 0 R] +/Parent 196 0 R +>> +endobj +196 0 obj +<< +/Type/Pages +/Count 2 +/Kids[143 0 R 147 0 R] +/Parent 193 0 R +>> +endobj +193 0 obj +<< +/Type/Pages +/Count 7 +/Kids[123 0 R 194 0 R 195 0 R 196 0 R] +/Parent 3 0 R +>> +endobj +151 0 obj +<< +/Type/Page +/Resources 152 0 R +/Contents[46 0 R 4 0 R 153 0 R 48 0 R] +/Parent 197 0 R +>> +endobj +155 0 obj +<< +/Type/Page +/Resources 156 0 R +/Contents[46 0 R 4 0 R 163 0 R 48 0 R] +/Parent 198 0 R +>> +endobj +165 0 obj +<< +/Type/Page +/Resources 166 0 R +/Contents[46 0 R 4 0 R 167 0 R 48 0 R] +/Parent 198 0 R +>> +endobj +198 0 obj +<< +/Type/Pages +/Count 2 +/Kids[155 0 R 165 0 R] +/Parent 197 0 R +>> +endobj +169 0 obj +<< +/Type/Page +/Resources 170 0 R +/Contents[46 0 R 4 0 R 171 0 R 48 0 R] +/Parent 199 0 R +>> +endobj +173 0 obj +<< +/Type/Page +/Resources 174 0 R +/Contents[46 0 R 4 0 R 175 0 R 48 0 R] +/Parent 199 0 R +>> +endobj +199 0 obj +<< +/Type/Pages +/Count 2 +/Kids[169 0 R 173 0 R] +/Parent 197 0 R +>> +endobj +177 0 obj +<< +/Type/Page +/Resources 178 0 R +/Contents[46 0 R 4 0 R 179 0 R 48 0 R] +/Parent 200 0 R +>> +endobj +181 0 obj +<< +/Type/Page +/Resources 182 0 R +/Contents[46 0 R 4 0 R 183 0 R 48 0 R] +/Parent 200 0 R +>> +endobj +200 0 obj +<< +/Type/Pages +/Count 2 +/Kids[177 0 R 181 0 R] +/Parent 197 0 R +>> +endobj +197 0 obj +<< +/Type/Pages +/Count 7 +/Kids[151 0 R 198 0 R 199 0 R 200 0 R] +/Parent 3 0 R +>> +endobj +3 0 obj +<< +/Type/Pages +/Count 28 +/Kids[185 0 R 189 0 R 193 0 R 197 0 R] +/MediaBox[0 0 595 842] +>> +endobj +46 0 obj +<< +/Length 1 +>> +stream + +endstream +endobj +48 0 obj +<< +/Length 1 +>> +stream + +endstream +endobj +4 0 obj +<< +/Length 33 +>> +stream +1.00028 0 0 1.00028 72 769.82 cm +endstream +endobj +201 0 obj +<< +>> +endobj +202 0 obj +null +endobj +203 0 obj +<< +>> +endobj +2 0 obj +<< +/Type/Catalog +/Pages 3 0 R +/Outlines 201 0 R +/Threads 202 0 R +/Names 203 0 R +>> +endobj +xref +0 204 +0000000000 65535 f +0000186997 00000 n +0000191887 00000 n +0000191532 00000 n +0000191737 00000 n +0000187161 00000 n +0000016491 00000 n +0000000009 00000 n +0000069741 00000 n +0000069557 00000 n +0000000913 00000 n +0000001906 00000 n +0000073033 00000 n +0000072847 00000 n +0000002883 00000 n +0000003885 00000 n +0000076603 00000 n +0000076408 00000 n +0000005501 00000 n +0000079785 00000 n +0000079599 00000 n +0000006452 00000 n +0000085760 00000 n +0000085572 00000 n +0000007369 00000 n +0000089457 00000 n +0000089271 00000 n +0000008368 00000 n +0000095995 00000 n +0000095810 00000 n +0000009336 00000 n +0000099464 00000 n +0000099275 00000 n +0000010079 00000 n +0000108345 00000 n +0000108155 00000 n +0000011025 00000 n +0000120697 00000 n +0000120509 00000 n +0000011961 00000 n +0000136839 00000 n +0000136646 00000 n +0000012879 00000 n +0000138405 00000 n +0000138219 00000 n +0000013819 00000 n +0000191637 00000 n +0000014820 00000 n +0000191687 00000 n +0000016334 00000 n +0000187264 00000 n +0000020586 00000 n +0000145694 00000 n +0000145508 00000 n +0000016552 00000 n +0000147850 00000 n +0000147664 00000 n +0000017517 00000 n +0000018262 00000 n +0000020506 00000 n +0000187369 00000 n +0000025907 00000 n +0000020648 00000 n +0000162005 00000 n +0000161811 00000 n +0000021602 00000 n +0000169537 00000 n +0000169351 00000 n +0000022549 00000 n +0000023550 00000 n +0000025791 00000 n +0000187555 00000 n +0000030062 00000 n +0000025969 00000 n +0000171534 00000 n +0000171339 00000 n +0000026876 00000 n +0000027858 00000 n +0000029947 00000 n +0000187660 00000 n +0000034093 00000 n +0000030124 00000 n +0000178717 00000 n +0000178529 00000 n +0000031092 00000 n +0000032091 00000 n +0000033966 00000 n +0000187846 00000 n +0000036319 00000 n +0000034155 00000 n +0000036226 00000 n +0000187951 00000 n +0000037428 00000 n +0000036381 00000 n +0000037336 00000 n +0000188232 00000 n +0000038696 00000 n +0000037490 00000 n +0000038592 00000 n +0000188337 00000 n +0000040573 00000 n +0000038758 00000 n +0000040456 00000 n +0000188444 00000 n +0000042298 00000 n +0000040637 00000 n +0000042205 00000 n +0000188634 00000 n +0000044453 00000 n +0000042362 00000 n +0000044337 00000 n +0000188742 00000 n +0000046045 00000 n +0000044517 00000 n +0000045952 00000 n +0000188933 00000 n +0000048021 00000 n +0000046109 00000 n +0000047941 00000 n +0000189041 00000 n +0000050372 00000 n +0000048085 00000 n +0000050302 00000 n +0000189328 00000 n +0000051639 00000 n +0000050436 00000 n +0000051558 00000 n +0000189436 00000 n +0000053356 00000 n +0000051703 00000 n +0000053263 00000 n +0000189544 00000 n +0000054594 00000 n +0000053420 00000 n +0000054513 00000 n +0000189735 00000 n +0000055668 00000 n +0000054658 00000 n +0000055610 00000 n +0000189843 00000 n +0000057228 00000 n +0000055732 00000 n +0000057136 00000 n +0000190034 00000 n +0000059619 00000 n +0000057292 00000 n +0000059550 00000 n +0000190142 00000 n +0000060983 00000 n +0000059683 00000 n +0000060925 00000 n +0000190430 00000 n +0000061841 00000 n +0000061047 00000 n +0000061783 00000 n +0000190538 00000 n +0000065285 00000 n +0000183522 00000 n +0000183329 00000 n +0000061905 00000 n +0000185751 00000 n +0000185555 00000 n +0000062902 00000 n +0000063914 00000 n +0000065166 00000 n +0000190646 00000 n +0000066130 00000 n +0000065349 00000 n +0000066072 00000 n +0000190837 00000 n +0000067523 00000 n +0000066194 00000 n +0000067404 00000 n +0000190945 00000 n +0000068156 00000 n +0000067587 00000 n +0000068098 00000 n +0000191136 00000 n +0000068952 00000 n +0000068220 00000 n +0000068871 00000 n +0000191244 00000 n +0000069493 00000 n +0000069016 00000 n +0000069424 00000 n +0000188137 00000 n +0000187474 00000 n +0000187765 00000 n +0000188056 00000 n +0000189232 00000 n +0000188552 00000 n +0000188850 00000 n +0000189149 00000 n +0000190333 00000 n +0000189652 00000 n +0000189951 00000 n +0000190250 00000 n +0000191435 00000 n +0000190754 00000 n +0000191053 00000 n +0000191352 00000 n +0000191819 00000 n +0000191842 00000 n +0000191864 00000 n +trailer +<< +/Size 204 +/Root 2 0 R +/Info 1 0 R +>> +startxref +191985 +%%EOF diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.sty b/macros/latex/contrib/algorithmicx/algorithmicx.sty new file mode 100644 index 0000000000..bfb7dabafe --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.sty @@ -0,0 +1,786 @@ +% ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% +% +% *** INITIALISING *** +% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{algorithmicx}[2005/04/27 v1.2 Algorithmicx] +\RequirePackage{ifthen} +\typeout{Document Style algorithmicx 1.2 - a greatly improved `algorithmic' style} +% +\newcounter{ALG@line} +\newcounter{ALG@rem} +\newcounter{ALG@nested} +\newlength{\ALG@tlm} +\newlength{\ALG@thistlm} +\newcounter{ALG@Lnr}% the number of defined languages +\setcounter{ALG@Lnr}{0} +\newcounter{ALG@blocknr}% the number of defined blocks +\setcounter{ALG@blocknr}{0} +\newcounter{ALG@storecount}% number of stored but not restored algorithmic environments +\setcounter{ALG@storecount}{0} +\newcounter{ALG@tmpcounter}% only to decrement things +\newlength\ALG@tmplength% +%\def\algorithmicnoindent{-\ALG@tlm} +% \def\algbackskipbegin{\hskip\ALG@ctlm} +%\def\algbackskip{\hskip-\ALG@thistlm} +%\def\algbackskipend{\hskip-\ALG@tlm} +\def\ALG@defaultindent{\algorithmicindent} +% +% conditional states +% +\def\ALG@newcondstate#1% + {% + \expandafter\edef\csname ALG@x@#1\endcsname% + {\expandafter\noexpand\csname @@ALG@x@#1\endcsname}% + }% +\ALG@newcondstate{notext}% +\ALG@newcondstate{default}% +% +% +% *** ALGORITHMIC *** +% +% +\newcommand\ALG@beginblock[1]% #1 - indentation + {% + \ALG@thistlm\ALG@tlm% + \addtolength\ALG@tlm{#1}% + \addtocounter{ALG@nested}{1}% + \setlength\ALG@tmplength{#1}% + \expandafter\edef\csname ALG@ind@\theALG@nested\endcsname{\the\ALG@tmplength}% + }% +\newcommand\ALG@endblock% + {% + \addtolength\ALG@tlm{-\csname ALG@ind@\theALG@nested\endcsname}% + \addtocounter{ALG@nested}{-1}% + \ALG@thistlm\ALG@tlm% + }% +% +% algorithmic environment +% +\def\ALG@step% + {% + \addtocounter{ALG@line}{1}% + \addtocounter{ALG@rem}{1}% + \ifthenelse{\equal{\arabic{ALG@rem}}{\ALG@numberfreq}}% + {\setcounter{ALG@rem}{0}\alglinenumber{\arabic{ALG@line}}}% + {}% + }% +\newenvironment{algorithmic}[1][0]% + {% + \edef\ALG@numberfreq{#1}% + \def\@currentlabel{\theALG@line}% + % + \setcounter{ALG@line}{0}% + \setcounter{ALG@rem}{0}% + % + \let\\\algbreak% + % + \expandafter\edef\csname ALG@currentblock@\theALG@nested\endcsname{0}% + \expandafter\let\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + % + \begin{list}% + {\ALG@step}% + {% + \rightmargin\z@% + \itemsep\z@ \itemindent\z@ \listparindent2em% + \partopsep\z@ \parskip\z@ \parsep\z@% + \labelsep 0.5em \topsep 0.2em%\skip 1.2em + \ifthenelse{\equal{#1}{0}}% + {\labelwidth 0.5em}% + {\labelwidth 1.2em}% + \leftmargin\labelwidth \addtolength{\leftmargin}{\labelsep}% Ok. the perfect leftmargin :-)) + \ALG@tlm\z@% + }% + \setcounter{ALG@nested}{0}% + \ALG@beginalgorithmic% + }% + {% end{algorithmic} + % check if all blocks are closed + \ALG@closeloops% + \expandafter\ifnum\csname ALG@currentblock@\theALG@nested\endcsname=0\relax% + \else% + \PackageError{algorithmicx}{Some blocks are not closed!!!}{}% + \fi% + \ALG@endalgorithmic% + \end{list}% + }% +% +% +% *** Functional core *** +% +% +\def\ALG@makeentity#1% execute the entity (#1) + {% + \def\ALG@thisentity{#1}% + \expandafter\ifx\csname ALG@b@\ALG@L @#1@0\endcsname\relax% + \let\ALG@makenobeginrepeat\ALG@makenobegin\ALG@makenobeginrepeat% this entitie ends or continues blocks + \else% + \let\ALG@makebeginrepeat\ALG@makebegin\ALG@makebeginrepeat% this entitie can open blocks + \fi% + \ALG@entitiecommand% + }% +% +\def\ALG@makebegin% executes an entitie that can open blocks + {% + \expandafter\let\expandafter\ALG@thislifetime\csname ALG@currentlifetime@\theALG@nested\endcsname% + \ifx\ALG@thislifetime\relax% + \let\ALG@makebeginrepeat\ALG@doentity% in infinite block I can open my block + \else% + \ifnum\ALG@thislifetime>0\relax% + \ifnum\ALG@thislifetime>65534\else% + \setcounter{ALG@tmpcounter}{\ALG@thislifetime}% the block has 'space' for another included block + \addtocounter{ALG@tmpcounter}{-1}% + \expandafter\edef\csname ALG@currentlifetime@\theALG@nested\endcsname{\arabic{ALG@tmpcounter}}% + \fi% + \let\ALG@makebeginrepeat\ALG@doentity% + \else% the block needs to be closed + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\csname ALG@currentblock@\theALG@nested\endcsname\endcsname\relax% + \ALG@closebyforce% I can not close this block, continue after it is closed by force +% \ALG@makebegin% + \else% + % the block would be closed automatically, but this entitie can close it, so let's do it with the entity + \let\ALG@makebeginrepeat\ALG@doentity% + \fi% + \fi% + \fi% + \ALG@makebeginrepeat% + }% +% +\def\ALG@makenobegin% executes an entitie that can not open blocks + {% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \let\ALG@makenobeginrepeat\ALG@doentity% an infinite block must be broken + \else% + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\csname ALG@currentblock@\theALG@nested\endcsname\endcsname\relax% + \ALG@closebyforce% the block must be ended by force, + \else% + \let\ALG@makenobeginrepeat\ALG@doentity% I can continue / end this block, let's do it + \fi% + \fi% + \ALG@makenobeginrepeat% + }% +% +\def\ALG@dobegin% + {% + \ALG@beginblock{\csname ALG@i@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \expandafter\edef\csname ALG@currentblock@\theALG@nested\endcsname{\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \expandafter\ifx\csname ALG@c@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\relax% + \expandafter\let\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% + \expandafter\edef\csname ALG@currentlifetime@\theALG@nested\endcsname{\csname ALG@c@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \fi% + }% +% +\def\ALG@doend% + {% + \ALG@endblock% + }% +% +\def\ALG@doentity% the number of the closed block, the entitie + {% + \edef\ALG@thisblock{\csname ALG@currentblock@\theALG@nested\endcsname}% + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\relax% + \def\ALG@thisblock{0}% + \fi% + \ALG@getentitytext% + \ifnum\ALG@thisblock=0\else\ALG@doend\fi% + \ifx\ALG@text\ALG@x@notext% + \item[]\nointerlineskip%\vskip-\prevdepth\nointerlineskip% bug: if there are no text and no lines, then this is wrong + \else% + \item% + \fi% + \noindent\hskip\ALG@tlm% + \expandafter\ifnum0=\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\else% + \ALG@dobegin% + \fi% + \def\ALG@entitiecommand{\ALG@displayentity}% + }% +% +\def\ALG@getentitytext% + {% + \expandafter\let\expandafter\ALG@text\csname ALG@t@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname% + \ifx\ALG@text\ALG@x@default% + % block specific - default + \expandafter\let\expandafter\ALG@text\csname ALG@t@\ALG@L @\ALG@thisentity\endcsname% + \ifx\ALG@text\ALG@x@default% + % block specific - default, language specific - default + \def\ALG@text{\ALG@deftext{\ALG@thisentity}}% + \fi% + \fi% + }% +% +\def\ALG@deftext{\csname ALG@deftext@\ALG@L\endcsname}% +% +\def\ALG@displayentity% + {% + \ifx\ALG@text\ALG@x@notext% + \let\ALG@text\relax% + \fi + \ALG@text% + }% +% +\def\ALG@closebyforce% + {% + \ALG@endblock% + }% +% +\def\ALG@closeloops% closes all finite blocks + {% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% only if it is finite + \ALG@closebyforce% the block must be ended by force, + \ALG@closeloops% the command still runs + \fi% + }% +% +% +% *** Low level block/entitie defining commands *** +% +% +\def\ALG@bl@{0}% the BIG block +\let\ALG@bl@@\ALG@bl@% the BIG block +% +% Create a block +% +\def\ALG@createblock#1% create the block #1, if it does not exists + {% + \@ifundefined{ALG@bl@\ALG@Ld @#1}% needs to be created? + {% + \addtocounter{ALG@blocknr}{1}% increment the block counter + \expandafter\edef\csname ALG@bl@\ALG@Ld @#1\endcsname{\arabic{ALG@blocknr}}% set the block number + }% + {}% + }% +% +% Get the block number +% +\def\ALG@getblocknumber#1{\csname ALG@bl@\ALG@Ld @#1\endcsname}% +% +% Create an entitie +% +\def\ALG@createentitie#1% create the entitie #1, if it does not exists + {% + \expandafter\ALG@edefcmd\csname #1\endcsname{\noexpand\ALG@makeentity{#1}}% + \@ifundefined{ALG@t@\ALG@Ld @#1}% the entity text is defined in this language? + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#1\endcsname\ALG@x@default% + }% + {}% + }% +% +\def\ALG@createtext#1#2% #1 = closed block; #2 = entitie; creates \ALG@t@#2@#1 + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@#1\endcsname\ALG@x@default% + }% +% +% End and Continue block +% +\def\ALG@endandcontinueblock#1#2#3#4#5% #1 = new block; #2 = old block; #3 = entitie; #4 = credits; #5 = indent + {% + \ifthenelse{\equal{#3}{}}{}% execute only if the entity is not empty + {% + \ALG@createentitie{#3}% create the entitie + \ALG@createblock{#2}% create the old block, if needed + \ifthenelse{\equal{#1}{}}% whe need to open a new block? + {\expandafter\edef\csname ALG@b@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{0}}% no, just close the old one + {% yes, + \ALG@createblock{#1}% create the block + \expandafter\edef\csname ALG@b@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{\ALG@getblocknumber{#1}}% ending the old block opens a new one + \ifthenelse{\equal{#4}{}}% infinite or finite credits? + {\expandafter\let\csname ALG@c@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname\relax}% infinite credits + {\expandafter\edef\csname ALG@c@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{#4}}% finite credits + \ifthenelse{\equal{#5}{}}% default or specified indentation + {\expandafter\let\csname ALG@i@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname\ALG@defaultindent}% default indentation + {\expandafter\edef\csname ALG@i@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{#5}}% indentation is specified + }% + \ALG@createtext{\ALG@getblocknumber{#2}}{#3}% + }% + }% +% +% macros used in declarations +% +\def\ALG@p@endtext@E{\algrenewtext{\ALG@v@end}}% +\def\ALG@p@endtext@xE{\algrenewtext[\ALG@v@newblock]{\ALG@v@end}}% +\def\ALG@p@endtext@nE{\algnotext{\ALG@v@end}}% +\def\ALG@p@endtext@xnE{\algnotext[\ALG@v@newblock]{\ALG@v@end}}% +\def\ALG@p@endtext@{}% +% starttext defines are more compex -- care must be taken for the optional parameters +\def\ALG@p@starttext@S{\ALG@p@s@process{\algrenewtext}}% +\def\ALG@p@starttext@C{\ALG@p@s@process{\algrenewtext}}% +\def\ALG@p@starttext@xC{\ALG@p@s@process{\algrenewtext[\ALG@v@oldblock]}}% +\def\ALG@p@s@process#1% + {% + \ifthenelse{\equal{\ALG@v@start}{}}% + {\ALG@p@endtext}% + {\@ifnextchar{[}{\ALG@p@s@getparamcount{#1}}{\ALG@p@s@simple{#1}}}% + }% +\def\ALG@p@s@getparamcount#1[#2]% + {% + \@ifnextchar{[}{\ALG@p@s@getdefparam{#1}{#2}}{\ALG@p@s@param{#1}{#2}}% + }% +\def\ALG@p@s@getdefparam#1#2[#3]% + {% + \ALG@p@s@defparam{#1}{#2}{#3}% + }% +\def\ALG@p@s@simple#1#2{#1{\ALG@v@start}{#2}\ALG@p@endtext}% +\def\ALG@p@s@param#1#2#3{#1{\ALG@v@start}[#2]{#3}\ALG@p@endtext}% +\def\ALG@p@s@defparam#1#2#3#4{#1{\ALG@v@start}[#2][#3]{#4}\ALG@p@endtext}% +% the rest of the crew +\def\ALG@p@starttext@nS{\algnotext{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@nC{\algnotext{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@xnC{\algnotext[\ALG@v@oldblock]{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@{\ALG@p@endtext}% +\def\ALG@p@indent@def#1{\def\ALG@v@indent{#1}\ALG@p@setup}% +\def\ALG@p@indent@{\def\ALG@v@indent{}\ALG@p@setup}% +\def\ALG@p@credits@def#1{\def\ALG@v@credits{#1}\ALG@p@indent}% +\def\ALG@p@credits@{\ALG@p@indent}% +\def\ALG@p@end@def#1{\def\ALG@v@end{#1}\ALG@p@credits}% +\def\ALG@p@end@{\def\ALG@v@end{}\ALG@p@credits}% +\def\ALG@p@start@def#1{\def\ALG@v@start{#1}\ALG@p@end}% +\def\ALG@p@start@{\def\ALG@v@start{}\ALG@p@end}% +\def\ALG@p@oldblock@def#1{\def\ALG@v@oldblock{#1}\ALG@p@start}% +\def\ALG@p@oldblock@{\def\ALG@v@oldblock{}\ALG@p@start}% +\newcommand\ALG@p@newblock[1][]{\def\ALG@v@newblock{#1}\ALG@p@oldblock}% +\def\ALG@p@setup% + {% + \ifthenelse{\equal{\ALG@v@newblock}{}}% + {% + \ifthenelse{\equal{\ALG@v@start}{}}% + {% + \PackageError{algorithmicx}{Block or starting entitie must be specified!!!}{}% + }% + {% + \let\ALG@v@newblock\ALG@v@start% + }% + }% + {% + }% + \ALG@endandcontinueblock% + {\ALG@v@newblock}{\ALG@v@oldblock}{\ALG@v@start}% + {\ALG@v@credits}{\ALG@v@indent}% + \ALG@endandcontinueblock% + {}{\ALG@v@newblock}{\ALG@v@end}% + {}{}% + \ALG@p@starttext% + }% +% +% param handling +% +\newcommand\ALG@p@def[2][def]% + {% + \expandafter\let\csname ALG@p@#2\expandafter\endcsname\csname ALG@p@#2@#1\endcsname% + }% +\def\ALG@p@undef{\ALG@p@def[]}% +% +\def\ALG@p@ons{\ALG@p@def{start}}% +\def\ALG@p@onS{\ALG@p@def{start}\ALG@p@def[S]{starttext}}% +\def\ALG@p@onc{\ALG@p@def{oldblock}\ALG@p@def{start}}% +\def\ALG@p@onC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[C]{starttext}}% +\def\ALG@p@one{\ALG@p@def{end}}% +\def\ALG@p@onE{\ALG@p@def{end}\ALG@p@def[E]{endtext}}% +\def\ALG@p@onxC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[xC]{starttext}}% +\def\ALG@p@onxE{\ALG@p@def{end}\ALG@p@def[xE]{endtext}}% +\def\ALG@p@onnS{\ALG@p@def{start}\ALG@p@def[nS]{starttext}}% +\def\ALG@p@onnC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[nC]{starttext}}% +\def\ALG@p@onnE{\ALG@p@def{end}\ALG@p@def[nE]{endtext}}% +\def\ALG@p@onxnC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[xnC]{starttext}}% +\def\ALG@p@onxnE{\ALG@p@def{end}\ALG@p@def[xnE]{endtext}}% +\def\ALG@p@onb{\def\ALG@v@credits{}}% +\def\ALG@p@onl{\def\ALG@v@credits{1}}% +\def\ALG@p@onL{\ALG@p@def{credits}}% +\def\ALG@p@oni{\ALG@p@def{indent}}% +% +\def\ALG@p@main#1% + {% + \@ifundefined{ALG@ps@\ALG@p@state @#1}% + {% + \csname ALG@ps@\ALG@p@state @other\endcsname{#1}% + }% + {% + \csname ALG@ps@\ALG@p@state @#1\endcsname% + }% + \ALG@p@rec% + }% +% STATE : <<starting state>> +\expandafter\def\csname ALG@ps@@]\endcsname{\let\ALG@p@rec\relax}% +\def\ALG@ps@@s{\ALG@p@ons}% +\def\ALG@ps@@S{\ALG@p@onS}% +\def\ALG@ps@@c{\ALG@p@onc}% +\def\ALG@ps@@C{\ALG@p@onC}% +\def\ALG@ps@@e{\ALG@p@one}% +\def\ALG@ps@@E{\ALG@p@onE}% +\def\ALG@ps@@N{\typeout{algdef: 'N' obsoloted, use 'nE'.}\ALG@p@onnE}% +\def\ALG@ps@@b{\ALG@p@onb}% +\def\ALG@ps@@l{\ALG@p@onl}% +\def\ALG@ps@@L{\ALG@p@onL}% +\def\ALG@ps@@i{\ALG@p@oni}% +\def\ALG@ps@@x{\def\ALG@p@state{x}}% +\def\ALG@ps@@n{\def\ALG@p@state{n}}% +\def\ALG@ps@@other#1{\typeout{algdef: Ignoring unknown token #1}}% +% STATE : x +\def\ALG@ps@x@C{\def\ALG@p@state{}\ALG@p@onxC}% +\def\ALG@ps@x@E{\def\ALG@p@state{}\ALG@p@onxE}% +\def\ALG@ps@x@N{\def\ALG@p@state{}\typeout{algdef: 'xN' obsoloted, use 'xnE'.}\ALG@p@onxnE}% +\def\ALG@ps@x@n{\def\ALG@p@state{xn}}% +\def\ALG@ps@x@other#1% + {% + \typeout{algdef: Ignoring 'x' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : n +\def\ALG@ps@n@S{\def\ALG@p@state{}\ALG@p@onnS}% +\def\ALG@ps@n@C{\def\ALG@p@state{}\ALG@p@onnC}% +\def\ALG@ps@n@E{\def\ALG@p@state{}\ALG@p@onnE}% +\def\ALG@ps@n@x{\def\ALG@p@state{nx}}% +\def\ALG@ps@n@other#1% + {% + \typeout{algdef: Ignoring 'n' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : xn +\def\ALG@ps@xn@C{\def\ALG@p@state{}\ALG@p@onxnC}% +\def\ALG@ps@xn@E{\def\ALG@p@state{}\ALG@p@onxnE}% +\def\ALG@ps@xn@x{\typeout{algdef: Ignoring 'x' after 'xn'.}}% +\def\ALG@ps@xn@n{\typeout{algdef: Ignoring 'n' after 'xn'.}}% +\def\ALG@ps@xn@other#1% + {% + \typeout{algdef: Ignoring 'xn' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : nx +\def\ALG@ps@nx@C{\def\ALG@p@state{}\ALG@p@onxnC}% +\def\ALG@ps@nx@E{\def\ALG@p@state{}\ALG@p@onxnE}% +\def\ALG@ps@nx@x{\typeout{algdef: Ignoring 'x' after 'nx'.}}% +\def\ALG@ps@nx@n{\typeout{algdef: Ignoring 'n' after 'nx'.}}% +\def\ALG@ps@nx@other#1% + {% + \typeout{algdef: Ignoring 'nx' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% +% +% *** User level block/entitie commands *** +% +% +% +% algdef{switches}... -- the king of all definitions in the algorithmicx package +% +\newcommand\algdef[1]% + {% + \ALG@p@undef{oldblock}% + \ALG@p@undef{start}% + \ALG@p@undef{end}% + \def\ALG@v@credits{}% + \ALG@p@undef{credits}% + \ALG@p@undef{indent}% + \ALG@p@undef{starttext}% + \ALG@p@undef{endtext}% + \def\ALG@p@state{}% + \let\ALG@p@rec\ALG@p@main% + \ALG@p@rec#1]% + \ALG@p@newblock% + }% +% +% a lot of other macros are provided for convenience +% +\def\algblock{\algdef{se}}% +\def\algcblock{\algdef{ce}}% +\def\algloop{\algdef{sl}}% +\def\algcloop{\algdef{cl}}% +\def\algsetblock{\algdef{seLi}}% +\def\algsetcblock{\algdef{ceLi}}% +\def\algblockx{\algdef{SxE}}% +\def\algblockdefx{\algdef{SE}}% +\def\algcblockx{\algdef{CxE}}% +\def\algcblockdefx{\algdef{CE}}% +\def\algsetblockx{\algdef{SxELi}}% +\def\algsetblockdefx{\algdef{SELi}}% +\def\algsetcblockx{\algdef{CxELi}}% +\def\algsetcblockdefx{\algdef{CELi}}% +\def\algloopdefx{\algdef{Sl}}% +\def\algcloopx{\algdef{xCl}}% +\def\algcloopdefx{\algdef{Cl}}% +% algloopx is not correct, use algloopdefx +% +% Text output commands +% +\newcommand\algrenewtext[2][]% [block]{entity} + {% + \ifthenelse{\equal{#2}{}}{}% + {% + \ifthenelse{\equal{#1}{}}% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2\endcsname\relax% + \expandafter\newcommand\csname ALG@t@\ALG@Ld @#2\endcsname% + }% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname\relax% + \expandafter\newcommand\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname% + }% + }% + }% +% +\def\ALG@letentitytext#1#2% [block]{entity} + {% + \ifthenelse{\equal{#2}{}}{}% + {% + \ifthenelse{\equal{#1}{}}% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2\endcsname% + }% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname% + }% + }% + }% +% +\newcommand\algnotext[2][]% [block]{entity} + {% + \ALG@letentitytext{#1}{#2}\ALG@x@notext% + }% +% +\newcommand\algdefaulttext[2][]% [block]{entity} + {% + \ALG@letentitytext{#1}{#2}\ALG@x@default% + }% +% +\def\ALG@notext*{\algnotext}% +\def\algtext{\@ifnextchar{*}{\ALG@notext}{\algrenewtext}}% +% +% +% *** LANGUAGE SWITCHING *** +% +% +% +\newcommand\algnewlanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {}% + {% + \PackageError{algorithmicx}{Language '#1' already defined!}{}% + }% + \addtocounter{ALG@Lnr}{1}% increment the language counter + \expandafter\edef\csname ALG@L@#1\endcsname{\arabic{ALG@Lnr}}% set the language number + \edef\ALG@Ld{\csname ALG@L@#1\endcsname}% + \expandafter\let\csname ALG@bl@\ALG@Ld @\endcsname\ALG@bl@% the BIG block + \expandafter\let\csname ALG@bl@\ALG@Ld @@\endcsname\ALG@bl@% the BIG block + \algdef{SL}[STATE]{State}{0}{}% + \expandafter\def\csname ALG@deftext@\ALG@Ld\endcsname{\textbf}% + \algnewcommand\algorithmiccomment[1]{\hfill\(\triangleright\) ##1}% + \algnewcommand\algorithmicindent{1.5em}% + \algnewcommand\alglinenumber[1]{\footnotesize ##1:}% + \algnewcommand\ALG@beginalgorithmic\relax% for user overrides + \algnewcommand\ALG@endalgorithmic\relax% for user overrides + }% +% +\newcommand\algsetlanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {% + \PackageError{algorithmicx}{Language '#1' is not yet defined!}{}% + }{}% + \edef\ALG@L{\csname ALG@L@#1\endcsname}% + }% +% +\newcommand\algdeflanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {% + \PackageError{algorithmicx}{Language '#1' is not yet defined!}{}% + }{}% + \edef\ALG@Ld{\csname ALG@L@#1\endcsname}% + }% +% +\newcommand\alglanguage[1]% + {% + \algdeflanguage{#1}% + \algsetlanguage{#1}% + }% +% +% +% *** Defining language dependent stuff *** +% +% +\def\ALG@eatoneparam#1{}% +\def\ALG@defbasecmd#1#2% + {% + \edef\ALG@tmp{\expandafter\ALG@eatoneparam\string #2}% + \@ifundefined\ALG@tmp{\edef #2{\noexpand\csname ALG@cmd@\noexpand\ALG@L @\ALG@tmp\endcsname}}{}% + \expandafter#1\csname ALG@cmd@\ALG@Ld @\ALG@tmp\endcsname% + }% +\newcommand\algnewcommand{\ALG@defbasecmd\newcommand}% +\newcommand\algrenewcommand{\ALG@defbasecmd\renewcommand}% +\def\ALG@letcmd{\ALG@defbasecmd\let}% +\def\ALG@defcmd{\ALG@defbasecmd\def}% +\def\ALG@edefcmd{\ALG@defbasecmd\edef}% +% +% +% *** OTHERS *** +% +% +\def\BState{\State \algbackskip}% +\def\Statex{\item[]}% an empty line +\newcommand\algrenewcomment{\algrenewcommand\algorithmiccomment}% +\def\Comment{\algorithmiccomment}% +\def\algref#1#2{\ref{#1}.\ref{#2}}% +\algnewlanguage{default}% +\algsetlanguage{default}% +% +% +% *** Line breaks *** +% +% +\newcommand\algbreak% for multiline parameters !!! needs fix + {% + \item% +% \hskip\ALG@parindent%!!! not yet implemented +% \hskip-\algorithmicindent% + }% +% +\def\ALG@noputindents% + {% + \hskip\ALG@tlm% + }% +% +% +% *** algorithm store / restore *** +% +% +% store +% +\ALG@newcondstate{mustrestore}% +\def\algstore% + {% + \renewcommand\ALG@beginblock% + {% + \PackageError{algorithmicx}{The environment must be closed after store!}{}% + }% + \@ifstar{\ALG@starstore}{\ALG@nostarstore}% + }% +\def\ALG@nostarstore#1% save all infos into #1 and terminate the algorithmic block + {% + \addtocounter{ALG@storecount}{1}% + \expandafter\global\expandafter\let\csname ALG@save@mustrestore@#1\endcsname\ALG@x@mustrestore% + \ALG@starstore{#1}% + }% +\def\ALG@starstore#1% + {% + \@ifundefined{ALG@save@line@#1}{}% + {\PackageError{algorithmicx}{This save name '#1' is already used!}{}}% + \def\ALG@savename{#1}% + \expandafter\xdef\csname ALG@save@totalnr@\ALG@savename\endcsname{\theALG@nested}% + \expandafter\xdef\csname ALG@save@line@\ALG@savename\endcsname{\theALG@line}% + \expandafter\xdef\csname ALG@save@numberfreq@\ALG@savename\endcsname{\ALG@numberfreq}% + \expandafter\xdef\csname ALG@save@rem@\ALG@savename\endcsname{\theALG@rem}% + \let\ALG@storerepeat\ALG@store% + \ALG@storerepeat% + }% +\def\ALG@store% simply terminate all open blocks + {% + \ifnum\theALG@nested=0\let\ALG@storerepeat\relax% + \else% + \expandafter\xdef\csname ALG@save@currentblock@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@currentblock@\theALG@nested\endcsname}% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% + \expandafter\xdef\csname ALG@save@currentlifetime@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@currentlifetime@\theALG@nested\endcsname}% + \fi% + \expandafter\xdef\csname ALG@save@ind@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@ind@\theALG@nested\endcsname}% + \ALG@closebyforce% + \fi% + \ALG@storerepeat% + }% +% +% restore +% +\def\algrestore% + {% + \@ifstar{\ALG@starrestore}{\ALG@nostarrestore}% + }% +\def\ALG@starrestore% + {% + \let\ALG@restorerem\relax% + \let\ALG@restorereprem\relax% + \ALG@restoremain% + }% +\def\ALG@nostarrestore% + {% + \let\ALG@restorerem\ALG@restoreremovesave% + \let\ALG@restorereprem\ALG@restorerepremovesave% + \ALG@restoremain% + }% +\def\ALG@restoreremovesave% + {% + \expandafter\global\expandafter\let\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@line@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@rem@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@numberfreq@\ALG@savename\endcsname\relax% + }% +\def\ALG@restorerepremovesave% + {% + \expandafter\global\expandafter\let\csname ALG@save@currentblock@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@ind@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + }% +\def\ALG@restoremain#1% restore all infos from #1 in an open algorithmic block + {% + \ifnum\theALG@line=0% + \else\PackageError{algorithmicx}{Restore might be used only at the beginning of the environment!}{}% + \fi% + \def\ALG@savename{#1}% + \expandafter\ifx\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \PackageError{algorithmicx}{Save '\ALG@savename'\space not defined!!!}{}% + \fi% + \@ifundefined{ALG@save@mustrestore@\ALG@savename}{}% + {% + \addtocounter{ALG@storecount}{-1}% + \expandafter\global\expandafter\let\csname ALG@save@mustrestore@\ALG@savename\endcsname\relax% + }% + \setcounter{ALG@line}{\csname ALG@save@line@\ALG@savename\endcsname}% + \edef\ALG@numberfreq{\csname ALG@save@numberfreq@\ALG@savename\endcsname}% + \setcounter{ALG@rem}{\csname ALG@save@rem@\ALG@savename\endcsname}% + \setcounter{ALG@tmpcounter}{\csname ALG@save@totalnr@\ALG@savename\endcsname}% + \setcounter{ALG@nested}{0}% + \ALG@restorerem% + \let\ALG@restorerepeat\ALG@restore% + \ALG@restorerepeat% + }% +\def\ALG@restore% + {% + \ifnum\theALG@tmpcounter>0% + \expandafter\edef\csname ALG@currentblock@\theALG@tmpcounter\endcsname% + {\csname ALG@save@currentblock@\ALG@savename @\theALG@tmpcounter\endcsname}% + \expandafter\ifx\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\let\csname ALG@currentlifetime@\theALG@tmpcounter\endcsname\relax% + \else% + \expandafter\edef\csname ALG@currentlifetime@\theALG@tmpcounter\endcsname% + {\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname}% + \fi% + % + \ALG@beginblock{\csname ALG@save@ind@\ALG@savename @\theALG@tmpcounter\endcsname}% + \ALG@restorereprem% + \addtocounter{ALG@tmpcounter}{-1}% + \else\let\ALG@restorerepeat\relax% + \fi% + \ALG@restorerepeat% + }% +\AtEndDocument% + {% + \ifnum\theALG@storecount>0\relax% + \PackageError{algorithmicx}{Some stored algorithms are not restored!}{}% + \fi% + }% diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.tex b/macros/latex/contrib/algorithmicx/algorithmicx.tex new file mode 100644 index 0000000000..a92c017f7a --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.tex @@ -0,0 +1,1768 @@ +\documentclass{article} +\usepackage{algorithmicx} +\usepackage[ruled]{algorithm} +\usepackage{algpseudocode} +\usepackage{algpascal} +\usepackage{algc} +%\algdisablelines + + +\newcommand{\alg}{\texttt{algorithmicx}} +\newcommand{\old}{\texttt{algorithmic}} +\newcommand{\euk}{Euclid} +\newcommand\ASTART{\bigskip\noindent\begin{minipage}[b]{0.5\linewidth}} +\newcommand\ACONTINUE{\end{minipage}\begin{minipage}[b]{0.5\linewidth}} +\newcommand\AENDSKIP{\end{minipage}\bigskip} +\newcommand\AEND{\end{minipage}} + + + +\title{The \alg\ package\footnote{This is the documentation for the version 1.2 +of the package. This package is released under LPPL.}} +\author{Sz\'asz J\'anos\\szaszjanos@users.sourceforge.net} + + + +\begin{document} +\maketitle +\begin{abstract} +The \alg\ package provides many possibilities to customize the layout of algorithms. +You can use one of the predefined layouts (\textbf{pseudocode}, \textbf{pascal} +and \textbf{c} and others), with or without modifications, or you can define a +completely new layout for your specific needs. +\end{abstract} +\tableofcontents + + + + +\section{Introduction} +All this has begun in my last year at the university. The only thing that I knew of +\LaTeX\ was that it exists, and that it is ``good''. I started using it, but I needed to typeset some +algorithms. So I begun searching for a good algorithmic style, and I have found the \old\ package. +It was a great joy for me, and I started to use it\dots\ +Well\dots\ Everything went nice, until I needed some block that wasn't defined in there. What to do? +I was no \LaTeX\ guru, in fact I only knew the few basic macros. But there was no other way, so I opened +the style file, and I copied one existing block, renamed a few things, and voil\`a! This (and some other +small changes) where enough for me\dots + +One year later --- for one good soul --- I had to make some really big changes on the style. And there on +a sunny day came the idea. What if I would write some macros to let others create blocks automatically? +And so I did! Since then the style was completely rewritten\dots\ several times\dots + +I had fun writing it, may you have fun using it! I am still no \LaTeX\ guru, so if you are, and you find +something really ugly in the style, please mail me! All ideas for improvements are welcome! + +Thanks go to Benedek Zsuzsa, Ionescu Clara, Sz\H ocs Zolt\'an, Cseke Botond, Kanoc +%Szotyori Zolt\'an Csaba +and many-many others. Without them I would have never started or continued \textbf{algorithmicx}. + + + + +\section{General informations} + +\subsection{The package} +The package \textbf{algorithmicx} itself doesn't define any algorithmic commands, but gives +a set of macros to define such a command set. You may use only \textbf{algorithmicx}, and define +the commands yourself, or you may use one of the predefined command sets. + +These predefined command sets (layouts) are: +\begin{description} +\item[algpseudocode] has the same look\footnote{almost :-)} as the one defined in the +\old\ package. The main difference is that while the \old\ package doesn't +allow you to modify predefined structures, or to create new ones, the \alg\ +package gives you full control over the definitions (ok, there are some +limitations --- you can not send mail with a, say, \verb:\For: command). +\item[algcompatible] is fully compatible with the \old\ package, it should be +used only in old documents. +\item[algpascal] aims to create a formatted pascal program, it performs +automatic indentation (!), so you can transform a pascal program into an +\textbf{algpascal} algorithm description with some basic substitution rules. +\item[algc] -- yeah, just like the \textbf{algpascal}\dots\ but for c\dots\ +This layout is incomplete. +\end{description} + +To create floating algorithms you will need \verb:algorithm.sty:. This file may or may not be +included in the \alg\ package. You can find it on CTAN, in the \old\ package. + + + +\subsection{The algorithmic block} +Each algorithm begins with the \verb:\begin{algorithmic}[lines]: command, the +optional \verb:lines: controls the line numbering: $0$ means no line numbering, +$1$ means number every line, and $n$ means number lines $n$, $2n$, $3n$\dots\ until the +\verb:\end{algorithmic}: command, witch ends the algorithm. + + + +\subsection{Simple lines} + +A simple line of text is beginned with \verb:\State:. This macro marks the begin of every +line. You don't need to use \verb:\State: before a command defined in the package, since +these commands use automatically a new line. + +To obtain a line that is not numbered, and not counted when counting the lines for line numbering +(in case you choose to number lines), use the \verb:Statex: macro. This macro jumps into a new line, +the line gets no number, and any label will point to the previous numbered line. + +We will call \textit{statament\/}s the lines starting with \verb:\State:. The \verb:\Statex: +lines are not stataments. + + + +\subsection{Placing comments in sources}\label{Putting comments in sources} + +Comments may be placed everywhere in the source using the \verb:\Comment: macro +(there are no limitations like those in the \old\ package), feel the freedom! +If you would like to change the form in witch comments are displayed, just +change the \verb:\algorithmiccomment: macro: + +\begin{verbatim} +\algrenewcommand{\algorithmiccomment}[1]{\hskip3em$\rightarrow$ #1} +\end{verbatim} + +will result: +\medskip +\begin{algorithmic}[1] +\algrenewcommand{\algorithmiccomment}[1]{\hskip3em$\rightarrow$ #1} +\State $x\gets x+1$\Comment{Here is the new comment} +\end{algorithmic} + + + +\subsection{Labels and references} +Use the \verb:\label: macro, as usual to label a line. When you use \verb:\ref: to reference +the line, the \verb:\ref: will be subtitued with the corresponding line number. When using the +\textbf{algorithmicx} package togedher with the \textbf{algorithm} package, then you can label +both the algorithm and the line, and use the \verb:\algref: macro to reference a given line +from a given algorithm: + +\begin{verbatim} +\algref{<algorithm>}{<line>} +\end{verbatim} + +\noindent\begin{minipage}[t]{0.5\linewidth} +\begin{verbatim} +The \textbf{while} in algorithm +\ref{euclid} ends in line +\ref{euclidendwhile}, so +\algref{euclid}{euclidendwhile} +is the line we seek. +\end{verbatim} +\end{minipage}\begin{minipage}[t]{0.5\linewidth} +The \textbf{while} in algorithm \ref{euclid} ends in line \ref{euclidendwhile}, +so \algref{euclid}{euclidendwhile} is the line we seek. +\end{minipage} + +\subsection{Breaking up long algorithms} + +Sometimes you have a long algorithm that needs to be broken into parts, each on a +separate float. For this you can use the following: + +\begin{description} +\item[]\verb:\algstore{<savename>}: saves the line number, indentation, open blocks of +the current algorithm and closes all blocks. If used, then this must be the last command +before closing the algorithmic block. Each saved algorithm must be continued later in the +document. +\item[]\verb:\algstore*{<savename>}: Like the above, but the algorithm must not be continued. +\item[]\verb:\algrestore{<savename>}: restores the state of the algorithm saved under +\verb:<savename>: in this algorithmic block. If used, then this must be the first command +in an algorithmic block. A save is deleted while restoring. +\item[]\verb:\algrestore*{<savename>}: Like the above, but the save will not be deleted, so it +can be restored again. +\end{description} + +See example in the \textbf{Examples} section. + +\subsection{Multiple layouts in the same document} + +You can load multiple algorithmicx layouts in the same document. You can switch between the layouts +using the \verb:\alglanguage{<layoutname>}: command. After this command all new algorithmic +environments will use the given layout until the layout is changed again. + + + + +\section{The predefined layouts} + +\subsection{The \textbf{algpseudocode} layout}\label{algpseudocode} +\alglanguage{pseudocode} +If you are familiar with the \old\ package, then you'll find it easy to +switch. You can use the old algorithms with the \textbf{algcompatible} layout, but please +use the \textbf{algpseudocode} layout for new algorithms. + +To use \textbf{algpseudocode}, simply load \verb:algpseudocode.sty:: + +\begin{verbatim} +\usepackage{algpseudocode} +\end{verbatim} + +You don't need to manually load the \textbf{algorithmicx} package, as this is done by +\textbf{algpseudocode}. + +The first algorithm one should write is the first algorithm ever (ok, +an improved version), \textit{\euk's algorithm}: + +\begin{algorithm}[H] +\caption{\euk's algorithm}\label{euclid} +\begin{algorithmic}[1] +\Procedure{\euk}{$a,b$}\Comment{The g.c.d. of a and b} + \State $r\gets a\bmod b$ + \While{$r\not=0$}\Comment{We have the answer if r is 0} + \State $a\gets b$ + \State $b\gets r$ + \State $r\gets a\bmod b$ + \EndWhile\label{euclidendwhile} + \State \Return $b$\Comment{The gcd is b} +\EndProcedure +\end{algorithmic} +\end{algorithm} + + +Created with the following source: +\begin{verbatim} +\begin{algorithm} +\caption{Euclid's algorithm}\label{euclid} +\begin{algorithmic}[1] +\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b} + \State $r\gets a\bmod b$ + \While{$r\not=0$}\Comment{We have the answer if r is 0} + \State $a\gets b$ + \State $b\gets r$ + \State $r\gets a\bmod b$ + \EndWhile\label{euclidendwhile} + \State \textbf{return} $b$\Comment{The gcd is b} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{verbatim} + +The \verb:\State: stands at the beginning of each simple statement; the respective +statement is put in a new line, with the needed indentation. +The \verb:\Procedure: \dots\verb:\EndProcedure: and +\verb:\While: \dots\verb:\EndWhile: blocks (like any block defined in the +\textbf{algpseudocode} layout) automatically indent their content. +The indentation of the source doesn't matter, so + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Repeat +\Comment{forever} +\State this\Until{you die.} +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat +\Comment{forever} +\State this\Until{you die.} +\Statex +\end{algorithmic} +\AENDSKIP + +But, generally, it is a good idea to keep the source indented, since you will find +errors much easier. And your tex file looks better! + +All examples and syntax descriptions will be shown as the previous +example --- the left side shows the \LaTeX\ input, and the right side +the algorithm, as it appears in your document. I'm cheating! Don't look +in the \verb:algorithmicx.tex: file! Believe what the examples state! I may use some +undocumented and dirty stuff to create all these examples. You might be more +confused after opening \verb:algorithmicx.tex: as you was before. + +In the case of syntax +descriptions the text between $<$ and $>$ is symbolic, so if you type +what you see on the left side, you will not get the algorithm on the +right side. But if you replace the text between $<$ $>$ with a proper piece of +algorithm, then you will probably get what you want. The parts between +$[$ and $]$ are optional. + + +\subsubsection{The \textbf{for} block} +The \textbf{for} block may have one of the forms: + +\ASTART +\begin{verbatim} +\For{<text>} + <body> +\EndFor +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\For{$<$text$>$} + \State $<$body$>$ +\EndFor +\end{algorithmic} +\AEND + +\ASTART +\begin{verbatim} +\ForAll{<text>} + <body> +\EndFor +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\ForAll{$<$text$>$} + \State $<$body$>$ +\EndFor +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\For{$i\gets 1, n$} + \State $sum\gets sum+i$ +\EndFor +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\For{$i\gets 1, n$} + \State $sum\gets sum+i$ +\EndFor +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{while} block} +The \textbf{while} block has the form: + +\ASTART +\begin{verbatim} +\While{<text>} + <body> +\EndWhile +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\While{$<$text$>$} + \State $<$body$>$ +\EndWhile +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\While{$i\le n$} + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\While{$i\le n$} + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\EndWhile +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{repeat} block} +The \textbf{repeat} block has the form: + +\ASTART +\begin{verbatim} +\Repeat + <body> +\Until{<text>} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat + \State $<$body$>$ +\Until{$<$text$>$} +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\Repeat + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\Until{$i>n$} +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\Repeat + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\Until{$i>n$} +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{if} block} +The \textbf{if} block has the form: + +\ASTART +\begin{verbatim} +\If{<text>} + <body> +[ +\ElsIf{<text>} + <body> +... +] +[ +\Else + <body> +] +\EndIf +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{$<$text$>$} + \State $<$body$>$ +\Statex [ +\ElsIf{$<$text$>$} + \State $<$body$>$ +\Statex \dots +\Statex ] +\Statex [ +\Else + \State $<$body$>$ +\Statex ] +\EndIf +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\If{$quality\ge 9$} + \State $a\gets perfect$ +\ElsIf{$quality\ge 7$} + \State $a\gets good$ +\ElsIf{$quality\ge 5$} + \State $a\gets medium$ +\ElsIf{$quality\ge 3$} + \State $a\gets bad$ +\Else + \State $a\gets unusable$ +\EndIf +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{$quality\ge 9$} + \State $a\gets perfect$ +\ElsIf{$quality\ge 7$} + \State $a\gets good$ +\ElsIf{$quality\ge 5$} + \State $a\gets medium$ +\ElsIf{$quality\ge 3$} + \State $a\gets bad$ +\Else + \State $a\gets unusable$ +\EndIf +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{procedure} block} +The \textbf{procedure} block has the form: + +\ASTART +\begin{verbatim} +\Procedure{<name>}{<params>} + <body> +\EndProcedure +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Procedure{$<$name$>$}{$<$params$>$} + \State $<$body$>$ +\EndProcedure +\end{algorithmic} +\AENDSKIP + +\noindent Example: See \euk's\ algorithm on page \pageref{euclid}. + +\subsubsection{The \textbf{function} block}The +\textbf{function} block has the same syntax as the \textbf{procedure} block: + +\ASTART +\begin{verbatim} +\Function{<name>}{<params>} + <body> +\EndFunction +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Function{$<$name$>$}{$<$params$>$} + \State $<$body$>$ +\EndFunction +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{loop} block} +The \textbf{loop} block has the form: + +\ASTART +\begin{verbatim} +\Loop + <body> +\EndLoop +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Loop + \State $<$body$>$ +\EndLoop +\end{algorithmic} +\AEND + +\subsubsection{Other commands in this layout} + +The starting conditions for the algorithm can be described with the \textbf{require} +instruction, and its result with the \textbf{ensure} instruction. + +A procedure call can be formatted with \verb:\Call:. + +\ASTART +\begin{verbatim} +\Require something +\Ensure something +\Statex +\State \Call{Create}{10} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Require something +\Ensure something +\Statex +\State \Call{Create}{10} +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Require $x\ge5$ +\Ensure $x\le-5$ +\Statex +\While{$x>-5$} + \State $x\gets x-1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Require $x\ge5$ +\Ensure $x\le-5$ +\Statex +\While{$x>-5$} + \State $x\gets x-1$ +\EndWhile +\Statex +\end{algorithmic} +\AEND + + + + + +\subsubsection{Package options}\label{algpseudocode package options} + +The \texttt{algpseudocode} package supports the following options: + +\begin{description} +\item[compatible/noncompatible]\ \textit{Obsolote, use the algcompatible layout instead.}\\ +If you would like to use old +algorithms, written with the \old\ package without (too much) +modification, then use the \textbf{compatible} option. This option +defines the uppercase version of the commands. Note that you still need +to remove the \verb:[...]: comments (these comments appeared due to some +limitations in the \old\ package, these limitations and comments are gone now). +The default \textbf{noncompatible} does not define the all uppercase +commands. +\item[noend/end]\ \\With \textbf{noend} specified all \textbf{end \dots} +lines are omitted. You get a somewhat smaller algorithm, and the ugly +feeling, that something is missing\dots{} The \textbf{end} value is the +default, it means, that all \textbf{end \dots} lines are in their right +place. +\end{description} + + +\subsubsection{Changing command names} +One common thing for a pseudocode is to change the command names. Many people +use many different kind of pseudocode command names. In \textbf{algpseudocode} +all keywords are declared as \verb:\algorithmic<keyword>:. You can change them +to output the text you need: + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\begin{algorithmic}[1] +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x + 1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x + 1$ +\EndWhile +\Statex +\end{algorithmic} +\end{minipage}\bigskip + +In some cases you may need to change even more (in the above example +\textbf{am\'\i g} and \textbf{v\'ege} should be interchanged in the \verb:\EndWhile: +text). Maybe the number of the parameters taken by some commands must be changed too. +this can be done with the command text customizing macros (see section +\ref{custom text}). Here I'll give only some examples of the most common usage: + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\algrenewtext{EndWhile}{\algorithmicwhile\ \algorithmicend} +\begin{algorithmic}[1] +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x - 1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\algrenewtext{EndWhile}{\algorithmicwhile\ \algorithmicend} +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x - 1$ +\EndWhile +\Statex +\end{algorithmic} +\end{minipage} + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algnewcommand\algorithmicto{\textbf{to}} +\algrenewtext{For}[3]% + {\algorithmicfor\ #1 \gets #2 \algorithmicto\ #3 \algorithmicdo} +\begin{algorithmic}[1] +\State $p \gets 1$ +\For{i}{1}{n} + \State $p \gets p * i$ +\EndFor +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algnewcommand\algorithmicto{\textbf{to}} +\algrenewtext{For}[3]% + {\algorithmicfor\ $#1 \gets #2$ \algorithmicto\ $#3$ \algorithmicdo} +\State $p \gets 1$ +\For{i}{1}{n} + \State $p \gets p * i$ +\EndFor +\Statex +\end{algorithmic} +\end{minipage}\bigskip + +You could create a translation package, that included after the \textbf{algpseudocode} +package translates the keywords to the language you need. + + + + + +\subsection{The \textbf{algpascal} layout} +\alglanguage{pascal} + + + +The most important feature of the \textbf{algpascal} layout is that +\textit{it performs automatically the block indentation}. In +section \ref{algorithmicx} you will see how to define such +automatically indented loops. Here is an example to demonstrate this +feature: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Begin +\State $sum:=0$; +\For{i=1}{n}\Comment{sum(i)} + \State $sum:=sum+i$; +\State writeln($sum$); +\End. +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin +\State $sum:=0$; +\For{i=1}{n}\Comment{sum(i)} + \State $sum:=sum+i$; +\State writeln($sum$); +\End. +\Statex +\end{algorithmic} +\AENDSKIP + +Note, that the \verb:\For: is not closed explicitly, its end is +detected automatically. Again, the indentation in the source doesn't +affect the output. +In this layout every parameter passed to a command is put in +mathematical mode. + +\subsubsection{The \textbf{begin} \dots{} \textbf{end} block} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Begin + <body> +\End +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin + \State $<$body$>$ +\End +\end{algorithmic} +\AENDSKIP + +The \verb:\Begin: \dots{} \verb:\End: block and the +\verb:\Repeat: \dots{} \verb:\Until: block are the only blocks in +the \textbf{algpascal} style (instead of \verb:\Begin: you may write +\verb:\Asm:). This means, that every other loop is ended automatically +after the following command (another loop, or a block). + + + +\subsubsection{The \textbf{for} loop} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\For{<assign>}{<expr>} + <command> +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\For{<$\relax$assign$\relax$>}{<$\relax$expr$\relax$>} + \State $<$command$>$ +\end{algorithmic} +\AENDSKIP + +The \textbf{For} loop (as all other loops) ends after the following command (a block counts +also as a single command). + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Begin + \State $sum:=0$; + \State $prod:=1$; + \For{i:=1}{10} + \Begin + \State $sum:=sum+i$; + \State $prod:=prod*i$; + \End +\End. +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin + \State $sum:=0$; + \State $prod:=1$; + \For{i:=1}{10} + \Begin + \State $sum:=sum+i$; + \State $prod:=prod*i$; + \End +\End. +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{while} loop} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\While{<expression>} + <command> +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\While{<$\relax$expression$\relax$>} + \State $<$command$>$ +\end{algorithmic} +\AEND + + +\subsubsection{The \textbf{repeat}\dots\ \textbf{until} block} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Repeat + <body> +\Until{<expression>} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat + \State $<$body$>$ +\Until{<$\relax$expression$\relax$>} +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{if} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\If{<expression>} + <command> +[ +\Else + <command> +] +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{<$\relax$expression$\relax$>} + \State $<$command$>$ +\Statex \hskip-\algorithmicindent\hskip-\algorithmicindent[ +\Else + \State $<$command$>$ +\Statex \hskip-\algorithmicindent\hskip-\algorithmicindent] +\end{algorithmic} +\AENDSKIP + +Every \verb:\Else: matches the nearest \verb:\If:. + +\subsubsection{The \textbf{procedure} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Procedure <some text> +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Procedure $<$some text$>$ +\end{algorithmic} +\AENDSKIP + +\verb:\Procedure: just writes the ``procedure'' word on a new +line... You will probably put a \verb:\Begin:\dots\ \verb:\End: +block after it. + + +\subsubsection{The \textbf{function} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Function<some text> +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Function $<$some text$>$ +\end{algorithmic} +\AENDSKIP + +Just like \textbf{Procedure}. + + + +\subsection{The \textbf{algc} layout} + +Sorry, the \textbf{algc} layout is unfinished. +The commands defined are: + +\begin{itemize} +\item\verb:\{:\dots\ \verb:\}: block +\item\verb:\For: with 3 params +\item\verb:\If: with 1 param +\item\verb:\Else: with no params +\item\verb:\While: with 1 param +\item\verb:\Do: with no params +\item\verb:\Function: with 3 params +\item\verb:\Return: with no params +\end{itemize} + + + + +\section{Custom algorithmic blocks}\label{algorithmicx} +\alglanguage{default} + + + +\subsection{Blocks and loops} + +Most of the environments defined in the standard layouts (and most probably +the ones you will define) are divided in two categories: + +\begin{description} +\item[Blocks] are the environments witch contain an arbitrary number of +commands or nested blocks. Each block has a name, begins with a starting command +and ends with an ending command. The commands in a block are +indented by \verb:\algorithmicindent: (or another amount). + +If your algorithm ends without closing all blocks, the \alg\ package gives +you a nice error. So be good, and close them all! + +Blocks are all the environments defined in the \verb:algpseudocode: +package, the \verb:\Begin: \dots \verb:\End: block in the +\verb:algpascal: package, and some other ones. +\item[Loops] (Let us call them loops\dots) The loops are environments +that include only one command, loop or block; a loop is closed +automatically after this command. So loops have no ending commands. If +your algorithm (or a block) ends before the single command of a loop, +then this is considered an empty command, and the loop is closed. Feel +free to leave open loops at the end of blocks! + +Loops are most of the environments in the \verb:algpascal: and +\verb:algc: packages. +\end{description} + +For some rare constructions you can create mixtures of the two +environments (see section \ref{setblock}). +Each block and loop may be continued with another one (like the \verb:If: +with \verb:Else:). + +\subsection{Defining blocks}\label{defblocks} + +There are several commands to define blocks. The difference is in what is defined +beyond the block. The macro \verb:\algblock: defines a new block with starting and +ending entity. + +\begin{verbatim} +\algblock[<block>]{<start>}{<end>} +\end{verbatim} + +The defined commands have no parameters, and the text displayed by them is +\verb:\textbf{<start>}: and \verb:\textbf{<end>}:. You can change these texts later +(\ref{custom text}). + +With \verb:\algblockdefx: you can give the text to be output by the starting +and ending command and the number of parameters for these commands. In the text +reference with \#$n$ to the parameter number $n$. Observe that the text +is given in the form you define or redefine macros, and really, this is what happens. + +\begin{verbatim} +\algblockdefx[<block>]{<start>}{<end>} + [<startparamcount>][<default value>]{<start text>} + [<endparamcount>][<default value>]{<end text>} +\end{verbatim} + +This defines a new block called \verb:<block>:, \verb:<start>: opens the block, +\verb:<end>: closes the block, +\verb:<start>: displays \verb:<start text>:, and has \verb:<startparamcount>: parameters, +\verb:<end>: displays \verb:<end text>:, and has \verb:<endparamcount>: parameters. +For both \verb:<start>: and \verb:<end>:, if +\verb:<default value>: is given, then the first parameter is optional, and its default value +is \verb:<default value>:. + +If you want to display different text (and to have a different number of parameters) +for \verb:<end>: at the end of different blocks, then use +the \verb:\algblockx: macro. Note that it is not possible to display different starting texts, +since it is not possible to start different blocks with the same command. The \verb:<start text>: +defined with \verb:\algblockx: has the same behavior as if defined with \verb:\algblockdefx:. All ending commands +not defined with \verb:\algblockx: will display the same text, and the ones defined with this +macro will display the different texts you specified. + +\begin{verbatim} +\algblockx[<block>]{<start>}{<end>} + [<startparamcount>][<default value>]{<start text>} + [<endparamcount>][<default value>]{<end text>} +\end{verbatim} + +If in the above definitions the \verb:<block>: is missing, then the name of the starting command +is used as block name. If a block with the given name +already exists, these macros don't define a new block, instead this it will be used the defined +block. If \verb:<start>: or \verb:<end>: is empty, then +the definition does not define a new starting/ending command for the block, and then the +respective text must be missing from the definition. You may have more starting and ending commands +for one block. If the block name is missing, then a starting command must be given. + + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algblock[Name]{Start}{End} +\algblockdefx[NAME]{START}{END}% + [2][Unknown]{Start #1(#2)}% + {Ending} +\algblockdefx[NAME]{}{OTHEREND}% + [1]{Until (#1)} +\begin{algorithmic}[1] +\Start + \Start + \START[One]{x} + \END + \START{0} + \OTHEREND{\texttt{True}} + \End + \Start + \End +\End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algblock[Name]{Start}{End} +\algblockdefx[NAME]{START}{END}% + [2][Unknown]{Start #1(#2)}% + {Ending} +\algblockdefx[NAME]{}{OTHEREND}% + [1]{Until (#1)} +\begin{algorithmic}[1] +\Start + \Start + \START[One]{x} + \END + \START{0} + \OTHEREND{\texttt{True}} + \End + \Start + \End +\End +\Statex +\end{algorithmic} +} +\end{minipage} + +\subsection{Defining loops} + +The loop defining macros are similar to the block defining macros. A loop has no ending command +and ends after the first state, block or loop that follows the loop. +Since loops have no ending command, the macro \verb:\algloopx: would not have mutch sense. +The loop defining macros are: + +\begin{verbatim} +\algloop[<loop>]{<start>} + +\algloopdefx[<loop>]{<start>} + [<startparamcount>][<default value>]{<start text>} +\end{verbatim} + +Both create a loop named \verb:<loop>: with the starting command \verb:<start>:. +The second also sets the number of parameters, and the text displayed by the starting command. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algloop{For} +\algloopdefx{If}[1]{\textbf{If} #1 \textbf{then}} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\For + \Begin + \If{$a < b$} + \For + \Begin + \End + \Begin + \End + \End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algloop{For} +\algloopdefx{If}% + [1]{\textbf{If} #1 \textbf{then}} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\For + \Begin + \If{$a < b$} + \For + \Begin + \End + \Begin + \End + \End +\Statex +\end{algorithmic} +} +\end{minipage} + +\subsection{Continuing blocks and loops} + +For each block/loop you may give commands that close the block or loop and open another +block or loop. A good example for this is the \textbf{if}~\dots~\textbf{then}~\dots~\textbf{else} +construct. The new block or loop can be closed or continued, as any other blocks and loops. + +To create a continuing block use one of the following: + +\begin{verbatim} +\algcblock[<new block>]{<old block>}{<continue>}{<end>} + +\algcblockdefx[<new block>]{<old block>}{<continue>}{<end>} + [<continueparamcount>][<default value>]{<continue text>} + [<endparamcount>][<default value>]{<end text>} + +\algcblockx[<new block>]{<old block>}{<continue>}{<end>} + [<continueparamcount>][<default value>]{<continue text>} + [<endparamcount>][<default value>]{<end text>} +\end{verbatim} + +All three macros define a new block named \verb:<new block>:. If \verb:<new block>: is not given, +then \verb:<continue>: is used as the new block name. It is not allowed to have both +\verb:<new block>: missing, and \verb:<continue>: empty. The \verb:<continue>: command ends the +\verb:<old block>: block/loop and opens the \verb:<new block>: block. Since \verb:<continue>: may +end different blocks and loops, it can have different text +at the end of the different blocks/loops. If the \verb:<continue>: command doesn't find an +\verb:<old block>: to close, then an error is reported. + +Create continuing loops with the followings: + +\begin{verbatim} +\algcloop[<new loop>]{<old block>}{<continue>} + +\algcloopdefx[<new loop>]{<old block>}{<continue>} + [<continueparamcount>][<default value>]{<continue text>} + +\algcloopx[<new loop>]{<old block>}{<continue>} + [<continueparamcount>][<default value>]{<continue text>} +\end{verbatim} + +These macros create a continuing loop, the \verb:<continue>: closes the \verb:<old block>: +block/loop, and opens a \verb:<new loop>: loop. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algblock{If}{EndIf} +\algcblock[If]{If}{ElsIf}{EndIf} +\algcblock{If}{Else}{EndIf} +\algcblockdefx[Strange]{If}{Eeee}{Oooo} + [1]{\textbf{Eeee} "#1"} + {\textbf{Wuuuups\dots}} +\begin{algorithmic}[1] +\If + \If + \ElsIf + \ElsIf + \If + \ElsIf + \Else + \EndIf + \EndIf + \If + \EndIf +\Eeee{Creep} +\Oooo +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algblock{If}{EndIf} +\algcblock[If]{If}{ElsIf}{EndIf} +\algcblock{If}{Else}{EndIf} +\algcblockdefx[Strange]{If}{Eeee}{Oooo} + [1]{\textbf{Eeee} "#1"} + {\textbf{Wuuuups\dots}} +\begin{algorithmic}[1] +\If + \If + \ElsIf + \ElsIf + \If + \ElsIf + \Else + \EndIf + \EndIf + \If + \EndIf +\Eeee{Creep} +\Oooo +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algloop{If} +\algcloop{If}{Else} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\If + \Begin + \End +\Else + \If + \Begin + \End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algloop{If} +\algcloop{If}{Else} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\If + \Begin + \End +\Else + \If + \Begin + \End +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + + + +\subsection{Even more customisation}\label{setblock} + +With the following macros you can give the indentation used by the new block (or loop), +and the number of stataments after that the "block" is automatically closed. This value is $\infty$ +for blocks, 1 for loops, and 0 for stataments. There is a special value, 65535, meaning that the +defined "block" does not end automatically, but if it is enclosed in a block, then the ending +command of the block closes this "block" as well. + +\begin{verbatim} +\algsetblock[<block>]{<start>}{<end>} + {<lifetime>}{<indent>} + +\algsetblockdefx[<block>]{<start>}{<end>} + {<lifetime>}{<indent>} + [<startparamcount>][<default value>]{<start text>} + [<endparamcount>][<default value>]{<end text>} + +\algsetblockx[<block>]{<start>}{<end>} + {<lifetime>}{<indent>} + [<startparamcount>][<default value>]{<start text>} + [<endparamcount>][<default value>]{<end text>} + +\algcsetblock[<new block>]{<old block>}{<continue>}{<end>} + {<lifetime>}{<indent>} + +\algcsetblockdefx[<new block>]{<old block>}{<continue>}{<stop>} + {<lifetime>}{<indent>} + [<continueparamcount>][<default value>]{<continue text>} + [<endparamcount>][<default value>]{<end text>} + +\algcsetblockx[<new block>]{<old block>}{<continue>}{<stop>} + {<lifetime>}{<indent>} + [<continueparamcount>][<default value>]{<continue text>} + [<endparamcount>][<default value>]{<end text>} +\end{verbatim} + +The \verb:<lifetime>: is the number of stataments after that the block is closed. An empty +\verb:<lifetime>: field means $\infty$. The \verb:<indent>: gives the indentation of the block. +Leave this field empty for the default indentation. The rest of the parameters has the same +function as for the previous macros. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algsetblock[Name]{Start}{Stop}{3}{1cm} +\algsetcblock[CName]{Name}{CStart}{CStop}{2}{2cm} +\begin{algorithmic}[1] +\Start + \State 1 + \State 2 + \State 3 +\State 4 +\Start + \State 1 +\Stop +\State 2 +\Start + \State 1 +\CStart + \State 1 + \State 2 +\State 3 +\Start + \State 1 +\CStart + \State 1 +\CStop +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algsetblock[Name]{Start}{Stop}{3}{1cm} +\algsetcblock[CName]{Name}{CStart}{CStop}{2}{2cm} +\begin{algorithmic}[1] +\Start + \State 1 + \State 2 + \State 3 +\State 4 +\Start + \State 1 +\Stop +\State 2 +\Start + \State 1 +\CStart + \State 1 + \State 2 +\State 3 +\Start + \State 1 +\CStart + \State 1 +\CStop +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + +The created environments behave as follows: + +\begin{itemize} +\item It starts with \verb:\Start:. The nested environments are +indented by 1 cm. +\item If it is followed by at least 3 environments (stataments), then it closes +automatically after the third one. +\item If you put a \verb:\Stop: before the automatic closure, then this +\verb:\Stop: closes the environment. \verb:CStart: closes a block called \verb:Name: +and opens a new one called \verb:CName: and having an indentaion of 2 cm. +\item \verb:CName: can be closed with \verb:CStop: or it is closed automatically after +2 environments. +\end{itemize} + + + +\subsection{Parameters, custom text}\label{custom text} + +With \verb:\algrenewtext: you can change the number of parameters, and the text displayed by the +commands. With \verb:algnotext: you can makes the vole output line disappear, but +it works only for ending commands, for beginning commands you will get an incorrect output. + +\begin{verbatim} +\algrenewcommand[<block>]{<command>} + [<paramcount>][<default value>]{<text>} + +\algnotext[<block>]{<ending command>} +\end{verbatim} + +If \verb:<block>: is missing, then the default text is changed, and if \verb:<block>: is given, +then the text displayed at the end of \verb:<block>: is changed. + +To make a command output the default text at the end of a block (say, you have changed the text +for this block), use \verb:\algdefaulttext:. + +\begin{verbatim} +\algdefaulttext[<block>]{<command>} +\end{verbatim} + +If the \verb:<block>: is missing, than the default text itself will be set to the default value +(this is \verb:\textbf{<command>}:). + + + +\subsection{The ONE defining macro} + +All block and loop defining macros call the same macro. You may use this macro to gain a +better acces to what will be defined. This macro is \verb:\algdef:. + +\begin{verbatim} +\algdef{<flags>}... +\end{verbatim} + +Depending on the flags the macro can have many forms. + +\begin{center} +\begin{tabular}{|c|l|} +\hline +\textbf{Flag}&\textbf{Meaning}\\ +\hline +s&starting command, without text\\ +S&starting command with text\\ +c&continuing command, without text\\ +C&continuing command, with default text\\ +xC&continuing command, with block specific text\\ +\hline +e&ending command, without text\\ +E&continuing command, with default text\\ +xE&continuing command, with block specific text\\ +N&ending command, with default "no text"\\ +xN&ending command, with no text for this block\\ +\hline +b&block(default)\\ +l&loop\\ +L&loop closes after the given number of stataments\\ +\hline +i&indentation specified\\ +\hline +\end{tabular} +\end{center} + +The \verb:<new block>: may be given for any combination of flags, and it is not allowed to have +\verb:<new block>: missing and \verb:<start>: missing/empty. +For c, C, xC an old block is expected. For s, S, c, C, xC the \verb:<start>: must be given. +For e, E, xE, N, xN the \verb:<end>: must be given. For L the \verb:<lifetime>: must be given. +For i the \verb:<indent>: must be given. +For S, C, xC the starting text and related infos must be given. For E, xE the ending text must be given. +For each combination of flags give only the needed parameters, in the following order: + +\begin{verbatim} +\algdef{<flags>}[<new block>]{<old block>}{<start>}{<end>} + {<lifetime>}{<indent>} + [<startparamcount>][<default value>]{<start text>} + [<endparamcount>][<default value>]{<end text>} +\end{verbatim} + +The block and loop defining macros call \verb:\algdef: with the following flags: +\begin{center} +\begin{tabular}{|l|l|} +\hline +\textbf{Macro}&\textbf{Meaning}\\ +\hline +\verb:\algblock:&\verb:\algdef{se}:\\ +\hline +\verb:\algcblock:&\verb:\algdef{ce}:\\ +\hline +\verb:\algloop:&\verb:\algdef{sl}:\\ +\hline +\verb:\algcloop:&\verb:\algdef{cl}:\\ +\hline +\verb:\algsetblock:&\verb:\algdef{seLi}:\\ +\hline +\verb:\algsetcblock:&\verb:\algdef{ceLi}:\\ +\hline +\verb:\algblockx:&\verb:\algdef{SxE}:\\ +\hline +\verb:\algblockdefx:&\verb:\algdef{SE}:\\ +\hline +\verb:\algcblockx:&\verb:\algdef{CxE}:\\ +\hline +\verb:\algcblockdefx:&\verb:\algdef{CE}:\\ +\hline +\verb:\algsetblockx:&\verb:\algdef{SxELi}:\\ +\hline +\verb:\algsetblockdefx:&\verb:\algdef{SELi}:\\ +\hline +\verb:\algsetcblockx:&\verb:\algdef{CxELi}:\\ +\hline +\verb:\algsetcblockdefx:&\verb:\algdef{CELi}:\\ +\hline +\verb:\algloopdefx:&\verb:\algdef{Sl}:\\ +\hline +\verb:\algcloopx:&\verb:\algdef{Cxl}:\\ +\hline +\verb:\algcloopdefx:&\verb:\algdef{Cl}:\\ +\hline +\end{tabular} +\end{center} + + +\vfill +\section{Examples} +\subsection{A full example using \textbf{algpseudocode}} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\begin{document} +\begin{algorithm} +\caption{The Bellman-Kalaba algorithm} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\Statex +\Procedure {FindPathBK}{$v$, $u$, $p$} + \If {$v = u$} + \State \textbf{Write} $v$ + \Else + \State $w \leftarrow v$ + \While {$w \not= u$} + \State \textbf{Write} $w$ + \State $w \leftarrow p(w)$ + \EndWhile + \EndIf +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm}[h] +\caption{The Bellman-Kalaba algorithm} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\Statex +\Procedure {FindPathBK}{$v$, $u$, $p$} + \If {$v = u$} + \State \textbf{Write} $v$ + \Else + \State $w \leftarrow v$ + \While {$w \not= u$} + \State \textbf{Write} $w$ + \State $w \leftarrow p(w)$ + \EndWhile + \EndIf +\EndProcedure +\end{algorithmic} +\end{algorithm} +\eject + + + + +\subsection{Breaking up an algorithm} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\begin{document} +\begin{algorithm} +\caption{Part 1} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State \Comment For some reason we need to break here! +\algstore{bkbreak} +\end{algorithmic} +\end{algorithm} + +And we need to put some additional text between\dots + +\begin{algorithm}[h] +\caption{Part 2} +\begin{algorithmic}[1] +\algrestore{bkbreak} + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm}[h] +\caption{Part 1} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State \Comment For some reason we need to break here! +\algstore{bkbreak} +\end{algorithmic} +\end{algorithm} + +And we need to put some additional text between\dots + +\begin{algorithm}[h] +\caption{Part 2} +\begin{algorithmic}[1] +\algrestore{bkbreak} + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\eject + + + + +\subsection{Using multiple layouts} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\usepackage{algpascal} +\begin{document} + +\alglanguage{pseudocode} +\begin{algorithm} +\caption{A small pseudocode} +\begin{algorithmic}[1] +\State $s \gets 0$ +\State $p \gets 0$ +\For{$i \gets 1,\, 10$} + \State $s \gets s + i$ + \State $p \gets p + s$ +\EndFor +\end{algorithmic} +\end{algorithm} + +\alglanguage{pascal} +\begin{algorithm} +\caption{The pascal version} +\begin{algorithmic}[1] +\State $s := 0$ +\State $p := 0$ +\For{i = 1}{10} + \Begin + \State $s := s + i$ + \State $p := p + s$ + \End +\end{algorithmic} +\end{algorithm} + +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm} +\caption{A small pseudocode} +\begin{algorithmic}[1] +\State $s \gets 0$ +\State $p \gets 0$ +\For{$i \gets 1,\, 10$} + \State $s \gets s + i$ + \State $p \gets p + s$ +\EndFor +\end{algorithmic} +\end{algorithm} + +\alglanguage{pascal} +\begin{algorithm} +\caption{The pascal version} +\begin{algorithmic}[1] +\State $s := 0$ +\State $p := 0$ +\For{i = 1}{10} + \Begin + \State $s := s + i$ + \State $p := p + s$ + \End +\end{algorithmic} +\end{algorithm} +\eject + + + +\section{Bugs} + +If you have a question or find a bug you can contact me on: + +\medskip +\textbf{szaszjanos@users.sourceforge.net} + +\medskip +\noindent If possible, please create a small \LaTeX{} example related to your problem. + + + +\end{document} diff --git a/macros/latex/contrib/algorithmicx/algpascal.sty b/macros/latex/contrib/algorithmicx/algpascal.sty new file mode 100644 index 0000000000..0c9a57779f --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algpascal.sty @@ -0,0 +1,44 @@ +% A PASCAL LIKE ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algpascal}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - pascal environments for the `algorithmicx' style}% +% +\ProcessOptions% +% +% +% *** DECLARATIONS *** +% +% +\algnewlanguage{pascal}% +\alglanguage{pascal}% +% +% *** KEYWORDS *** +% +\algnewcommand\textkeyword{\textbf}% +% +% *** DECLARED BLOCKS AND LOOPS *** +% +\algdef{SEi}{Begin}{End}{0cm}{\textkeyword{begin}}{\textkeyword{end}}% +\algdef{Sei}{Asm}{End}{0cm}{\textkeyword{asm}}% +% +\algdef{lS}{For}[2]{\textkeyword{for} \(#1\) \textkeyword{to} \(#2\) \textkeyword{do}}% +\algdef{lS}{While}[1]{\textkeyword{while} \(#1\) \textkeyword{do}}% +\algdef{lS}{With}[1]{\textkeyword{with}\ \(#1\) \textkeyword{do}}% +\algdef{SE}{Repeat}{Until}{\textkeyword{repeat}}[1]{\textkeyword{until}\ \(#1\)}% +\algdef{lS}{If}[1]{\textkeyword{if}\ \(#1\) \textkeyword{then}}% +\algdef{lC}{If}{Else}{\textkeyword{else}}% +% +% *** OTHER DECLARATIONS *** +% +\algnewcommand\Procedure{\State\textkeyword{procedure}\space}% +\algnewcommand\Function{\State\textkeyword{function}\space}% +% +\algrenewcomment[1]{\hfill\{#1\}}% +% diff --git a/macros/latex/contrib/algorithmicx/algpseudocode.sty b/macros/latex/contrib/algorithmicx/algpseudocode.sty new file mode 100644 index 0000000000..fca966ac65 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algpseudocode.sty @@ -0,0 +1,92 @@ +% PSEUDOCODE ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% Based on Peter Williams's algorithmic.sty +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algpseudocode}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - pseudocode environments for use with the `algorithmicx' style}% +% +\def\ALG@noend{f}% +\newboolean{ALG@compatible}% +\setboolean{ALG@compatible}{false}% +% +\DeclareOption{noend}{\def\ALG@noend{t}}% +\DeclareOption{end}{\def\ALG@noend{f}}% +\DeclareOption{compatible}{\typeout{For compatibility mode use algcompatible.sty!!!}\setboolean{ALG@compatible}{true}}% +\DeclareOption{noncompatible}{\setboolean{ALG@noncompatible}{false}}% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{pseudocode}% +\alglanguage{pseudocode}% +% +% *** KEYWORDS *** +% +\algnewcommand\algorithmicend{\textbf{end}} +\algnewcommand\algorithmicdo{\textbf{do}} +\algnewcommand\algorithmicwhile{\textbf{while}} +\algnewcommand\algorithmicfor{\textbf{for}} +\algnewcommand\algorithmicforall{\textbf{for all}} +\algnewcommand\algorithmicloop{\textbf{loop}} +\algnewcommand\algorithmicrepeat{\textbf{repeat}} +\algnewcommand\algorithmicuntil{\textbf{until}} +\algnewcommand\algorithmicprocedure{\textbf{procedure}} +\algnewcommand\algorithmicfunction{\textbf{function}} +\algnewcommand\algorithmicif{\textbf{if}} +\algnewcommand\algorithmicthen{\textbf{then}} +\algnewcommand\algorithmicelse{\textbf{else}} +\algnewcommand\algorithmicrequire{\textbf{Require:}} +\algnewcommand\algorithmicensure{\textbf{Ensure:}} +\algnewcommand\algorithmicreturn{\textbf{return}} +\algnewcommand\textproc{\textsc} +% +% *** DECLARED LOOPS *** +% +\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicwhile}% +\algdef{SE}[FOR]{For}{EndFor}[1]{\algorithmicfor\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicfor}% +\algdef{S}[FOR]{ForAll}[1]{\algorithmicforall\ #1\ \algorithmicdo}% +\algdef{SE}[LOOP]{Loop}{EndLoop}{\algorithmicloop}{\algorithmicend\ \algorithmicloop}% +\algdef{SE}[REPEAT]{Repeat}{Until}{\algorithmicrepeat}[1]{\algorithmicuntil\ #1}% +\algdef{SE}[IF]{If}{EndIf}[1]{\algorithmicif\ #1\ \algorithmicthen}{\algorithmicend\ \algorithmicif}% +\algdef{C}[IF]{IF}{ElsIf}[1]{\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}% +\algdef{Ce}[ELSE]{IF}{Else}{EndIf}{\algorithmicelse}% +\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}% + [2]{\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% + {\algorithmicend\ \algorithmicprocedure}% +\algdef{SE}[FUNCTION]{Function}{EndFunction}% + [2]{\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% + {\algorithmicend\ \algorithmicfunction}% +% +\ifthenelse{\equal{\ALG@noend}{t}}% + {% + \algtext*{EndWhile}% + \algtext*{EndFor}% + \algtext*{EndLoop}% + \algtext*{EndIf}% + \algtext*{EndProcedure}% + \algtext*{EndFunction}% + }{}% +% +% *** OTHER DECLARATIONS *** +% +\algnewcommand\Require{\item[\algorithmicrequire]}% +\algnewcommand\Ensure{\item[\algorithmicensure]}% +\algnewcommand\Return{\algorithmicreturn{} }% +\algnewcommand\Call[2]{\textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% +% +% +% +\ifthenelse{\boolean{ALG@compatible}}% + {% + \ifthenelse{\equal{\ALG@noend}{t}}% + {\RequirePackage[noend]{algcompatible}}% + {\RequirePackage{algcompatible}}% + }% + {}% +% |