diff --git a/books/bookvol7.1.pamphlet b/books/bookvol7.1.pamphlet
index d76b336..9f6e885 100644
--- a/books/bookvol7.1.pamphlet
+++ b/books/bookvol7.1.pamphlet
@@ -33,38 +33,45 @@ The Blue Bayou image Copyright (c) 2004 Jocelyn Guidry
 
 Portions Copyright (c) 2004 Martin Dunstan
 
-Portions Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
+Portions Copyright (c) 1991-2002, 
+The Numerical ALgorithms Group Ltd.
 All rights reserved.
 
 This book and the Axiom software is licensed as follows:
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
+Redistribution and use in source and binary forms, with or 
+without modification, are permitted provided that the following 
+conditions are
 met:
 
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+    - Redistributions of source code must retain the above 
+      copyright notice, this list of conditions and the 
+      following disclaimer.
+
+    - Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the 
+      following disclaimer in the documentation and/or other 
+      materials provided with the distribution.
+
+    - Neither the name of The Numerical ALgorithms Group Ltd. 
+      nor the names of its contributors may be used to endorse 
+      or promote products derived from this software without 
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+SUCH DAMAGE.
 
 \end{verbatim}
 
@@ -200,6 +207,8 @@ November 10, 2003 ((iHy))
 \label{releaseNotes}
 \includegraphics[scale=.5]{ps/v71releasenotes.eps}
 \index{images!releasenotes}
+
+Called from ``Root Page'' (RootPage) \ref{RootPage} on page~\pageref{RootPage}
 \begin{itemize}
 \item ``Online information'' (onlineInformation) \ref{onlineInformation}
 on page~\pageref{onlineInformation}
@@ -892,7 +901,8 @@ individual .ht files that are of a local nature.
 All unix commands should be done as macros defined here so we don't
 have to go hunting when moving between Unix versions.
 <<util.ht>>=
-\newcommand{\newspadclient}[1]{xterm -n "#1" -e \$SPAD/bin/clef \$SPAD/bin/server/spadclient}
+\newcommand{\newspadclient}[1]
+{xterm -n "#1" -e \$SPAD/bin/clef \$SPAD/bin/server/spadclient}
 \newcommand{\searchwindow}[2]{\unixwindow{#1}{\$SPAD/lib/htsearch "#2"}}
 \newcommand{\unixwindow}[2]{\unixlink{#1}{#2}}
 \newcommand{\menuunixlink}[2]{\item\unixlink{\menuitemstyle{#1}}{#2}}
@@ -932,15 +942,21 @@ have to go hunting when moving between Unix versions.
 \newcommand{\menuwindowlink}[2]    {\item\windowlink{\menuitemstyle{#1}}{#2}}
 
 %   These execute lisp commands in various flavors
-\newcommand{\menulispcommand}[2] {\item\lispcommand{\menuitemstyle{#1}}{#2}}
-\newcommand{\menulispdownlink}[2]{\item\lispdownlink{\menuitemstyle{#1}}{#2}}
-\newcommand{\menulispmemolink}[2]{\item\lispmemolink{\menuitemstyle{#1}}{#2}}
-\newcommand{\menulispwindowlink}[2]{\item\lispwindowlink{\menuitemstyle{#1}}{#2}}
+\newcommand{\menulispcommand}[2]
+{\item\lispcommand{\menuitemstyle{#1}}{#2}}
+\newcommand{\menulispdownlink}[2]
+{\item\lispdownlink{\menuitemstyle{#1}}{#2}}
+\newcommand{\menulispmemolink}[2]
+{\item\lispmemolink{\menuitemstyle{#1}}{#2}}
+\newcommand{\menulispwindowlink}[2]
+{\item\lispwindowlink{\menuitemstyle{#1}}{#2}}
 
 %   This executes a unix command
-\newcommand{\menuunixcmd}[2]     {\item\unixcommand{\menuitemstyle{#1}}{#2}}
-\newcommand{\searchresultentry}[3]{\tab{3}\item#3\tab{8}\downlink{\menuitemstyle{#1}}{#2}\newline}
-\newcommand{\newsearchresultentry}[3]{\tab{3}\item#1\tab{8}\downlink{\menuitemstyle{#2}}{#3}\newline}
+\newcommand{\menuunixcmd}[2]{\item\unixcommand{\menuitemstyle{#1}}{#2}}
+\newcommand{\searchresultentry}[3]
+{\tab{3}\item#3\tab{8}\downlink{\menuitemstyle{#1}}{#2}\newline}
+\newcommand{\newsearchresultentry}[3]
+{\tab{3}\item#1\tab{8}\downlink{\menuitemstyle{#2}}{#3}\newline}
 
 @
 \subsection{Bitmaps and bitmap manipulation macros}
@@ -963,7 +979,8 @@ have to go hunting when moving between Unix versions.
 
 % Including control panel pixmaps for help pages:
 
-\newcommand{\helpbit}[1]{\centerline{\inputpixmap{\env{AXIOM}/doc/hypertex/pixmaps/{#1}}}}
+\newcommand{\helpbit}[1]
+{\centerline{\inputpixmap{\env{AXIOM}/doc/hypertex/pixmaps/{#1}}}}
 
 @
 \subsection{HyperDoc button objects}
@@ -993,7 +1010,8 @@ have to go hunting when moving between Unix versions.
 
 % Macro for downward compatibility (?).
 
-\newcommand{\simplebox}[2]{\inputbox[#1]{#2}{\htbitmap{xbox}}{\htbitmap{xopenbox}}}
+\newcommand{\simplebox}[2]
+{\inputbox[#1]{#2}{\htbitmap{xbox}}{\htbitmap{xopenbox}}}
 
 @
 \subsection{HyperDoc graphics macros}
@@ -1001,19 +1019,24 @@ have to go hunting when moving between Unix versions.
 % Including viewport bitmaps within \HyperName pages:
 
 \newcommand{\viewport}[1]{\inputimage{{#1}.view/image}}
-\newcommand{\axiomViewport}[1]{\inputimage{\env{AXIOM}/doc/viewports/{#1}.view/image}}
+\newcommand{\axiomViewport}[1]
+{\inputimage{\env{AXIOM}/doc/viewports/{#1}.view/image}}
 \newcommand{\spadviewport}[1]{\axiomViewport{#1}}
 
 % Creating a real live viewport:
 
 \newcommand{\viewportbutton}[2]{\unixcommand{#1}{viewalone #2}}
-\newcommand{\axiomViewportbutton}[2]{\unixcommand{#1}{viewalone \$AXIOM/doc/viewports/{#2}}}
+\newcommand{\axiomViewportbutton}[2]
+{\unixcommand{#1}{viewalone \$AXIOM/doc/viewports/{#2}}}
 \newcommand{\spadviewportbutton}[2]{\axiomViewportbutton{#1}{#2}}
 
 % Making active viewport buttons:
 
-\newcommand{\viewportasbutton}[1]{\unixcommand{\inputimage{{#1}.view/image}}{viewalone {#1}}}
-\newcommand{\axiomViewportasbutton}[1]{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/{#1}.view/image}}{viewalone \$AXIOM/doc/viewports/{#1}}}
+\newcommand{\viewportasbutton}[1]
+{\unixcommand{\inputimage{{#1}.view/image}}{viewalone {#1}}}
+\newcommand{\axiomViewportasbutton}[1]
+{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/{#1}.view/image}}
+{viewalone \$AXIOM/doc/viewports/{#1}}}
 \newcommand{\spadviewportasbutton}[1]{\axiomViewportasbutton{#1}}
 
 @
@@ -1146,15 +1169,21 @@ have to go hunting when moving between Unix versions.
 \newcommand{\mathOrSpad}[1]{{\spad{#1}}}
 \newcommand{\menuspadref}[2]{\menudownlink{#1}{#2Page}}
 \newcommand{\menuxmpref}[1]{\menudownlink{`#1'}{#1XmpPage}}
-\newcommand{\noOutputXtc}[2]{\xtc{#1}{#2}}  % comment and then \spadcommand or spadsrc
+% comment and then \spadcommand or spadsrc
+\newcommand{\noOutputXtc}[2]{\xtc{#1}{#2}}  
 \newcommand{\not=}{\inputbitmap{\htbmdir{}/not=.bitmap}}
 \newcommand{\notequal}{\inputbitmap{\htbmdir{}/notequal.bitmap}}
-\newcommand{\nullXtc}[2]{\xtc{#1}{#2}}      % comment and then \spadcommand or spadsrc
+% comment and then \spadcommand or spadsrc
+\newcommand{\nullXtc}[2]{\xtc{#1}{#2}}      
 \newcommand{\nullspadcommand}[1]{\spadcommand}
-\newcommand{\pp}{\newline}              % Use this instead of \par for now.
-\newcommand{\psXtc}[3]{\xtc{#1}{#2}}        % comment and then \spadcommand or spadsrc
+% Use this instead of \par for now.
+\newcommand{\pp}{\newline}
+% comment and then \spadcommand or spadsrc
+\newcommand{\psXtc}[3]{\xtc{#1}{#2}}        
 \newcommand{\ref}[1]{(see the graph)}
-\newcommand{\showBlurb}[1]{Issue the system command \spadcmd{)show #1} to display the full list of operations defined by \spadtype{#1}.}
+\newcommand{\showBlurb}[1]
+{Issue the system command \spadcmd{)show #1} to display the full list 
+of operations defined by \spadtype{#1}.}
 \newcommand{\smath}[1]{\mathOrSpad{#1}}
 \newcommand{\spadFileExt}{.spad}
 \newcommand{\spadkey}[1]{}
@@ -1172,7 +1201,8 @@ have to go hunting when moving between Unix versions.
 \newcommand{\xdefault}[1]{The default value is {\tt "#1"}.}
 \newcommand{\xmpLine}[2]{{\tt #1}\newline}   % have to improve someday
 \newcommand{\xmpref}[1]{\downlink{`#1'}{#1XmpPage}}
-\newcommand{\xtc}[2]{#1 #2}                 % comment and then \spadcommand or spadsrc
+% comment and then \spadcommand or spadsrc
+\newcommand{\xtc}[2]{#1 #2} 
 
 % glossary terms
 \newcommand{\axiomGloss}[1]{\lispdownlink{#1}{(|htGloss| '|#1|)}}
@@ -1187,12 +1217,14 @@ have to go hunting when moving between Unix versions.
 % constructors
 \newcommand{\axiomType}[1]{\lispdownlink{#1}{(|spadType| '|#1|)}}
 \newcommand{\spadtype}[1]{\axiomType{#1}}
-\newcommand{\nonLibAxiomType}[1]{{\it #1}}       % things that browse can't handle
+% things that browse can't handle
+\newcommand{\nonLibAxiomType}[1]{{\it #1}}
 \newcommand{\pspadtype}[1]{\nonLibAxiomType{#1}}
 
-\newcommand{\axiom}   [1]{{\tt #1}}              % note font
+\newcommand{\axiom}   [1]{{\tt #1}} % note font
 \newcommand{\spad}    [1]{\axiom{#1}}
-\newcommand{\spadvar} [1]{\axiom{#1}}            % exists in ++ comments; to be removed
+% exists in ++ comments; to be removed
+\newcommand{\spadvar} [1]{\axiom{#1}}
 \newcommand{\s}       [1]{\axiom{#1}}
 
 \newcommand{\httex}[2]{#1}
@@ -1205,14 +1237,14 @@ have to go hunting when moving between Unix versions.
 %
 % Example: \spadfunFromX{reverse}{List} prints as   reverse!
 %
-% In the "From" versions, the first arg is function name, second is constructor
-% where exported.
+% In the "From" versions, the first arg is function name,
+% second is constructor where exported.
 %
 % Use the "op" flavors of "-", "+", "*" etc, otherwise the "fun" flavors
 
-\newcommand{\userfun} [1]{{\bf #1}}              % example, non-library function names
+\newcommand{\userfun} [1]{{\bf #1}} % example, non-library function names
 
-\newcommand{\fakeAxiomFun}[1]{{\bf #1}}          % not really a library function
+\newcommand{\fakeAxiomFun}[1]{{\bf #1}} % not really a library function
 \newcommand{\pspadfun} [1]{\fakeAxiomFun{#1}}
 
 \newcommand{\axiomFun} [1]{\lispdownlink{#1}{(|oPage| '|#1|)}}
@@ -1269,10 +1301,12 @@ have to go hunting when moving between Unix versions.
 
 \newcommand{\dlink}[2]{\downlink{#2}{#1}}
 \newcommand{\dom}[1]{\lispdownlink{#1}{(|conPage| '|#1|)}}
-\newcommand{\example}[1]{\newline\indent{5}\spadcommand{#1}\indent{0}\newline}
+\newcommand{\example}[1]
+{\newline\indent{5}\spadcommand{#1}\indent{0}\newline}
 \newcommand{\lisp}[2]{\lispdownlink{#2}{#1}}
 \newcommand{\spadatt} [1]{{\it #1}}
-\newcommand{\indented}[2]{\indentrel{#1}\newline #2\indentrel{-#1}\newline}
+\newcommand{\indented}[2]
+{\indentrel{#1}\newline #2\indentrel{-#1}\newline}
 \newcommand{\keyword}[1]{\lispdownlink{#1}{(|htsn| '|#1|)}}
 \newcommand{\op}[1]{\lispdownlink{#1}{(|htsn| '|#1|)}}
 \newcommand{\spadignore}[1]{#1}
@@ -1290,7 +1324,8 @@ have to go hunting when moving between Unix versions.
 \newcommand{\hidepaste}{\htbitmap{sup3d}}
 \newcommand{\spadpaste}[1]{
   \newline
-  \begin{paste}{\pagename Empty \examplenumber}{\pagename Patch \examplenumber}
+  \begin{paste}{\pagename Empty \examplenumber}
+{\pagename Patch \examplenumber}
   \pastebutton{\pagename Empty \examplenumber}{\showpaste}
   \tab{5}\spadcommand{#1}
   \end{paste}
@@ -1298,7 +1333,8 @@ have to go hunting when moving between Unix versions.
 
 \newcommand{\graphpaste}[1]{
   \newline
-  \begin{paste}{\pagename Empty \examplenumber}{\pagename Patch \examplenumber}
+  \begin{paste}{\pagename Empty \examplenumber}
+{\pagename Patch \examplenumber}
   \pastebutton{\pagename Empty \examplenumber}{\showpaste}
   \tab{5}\spadgraph{#1}
   \end{paste}
@@ -1312,6 +1348,7 @@ have to go hunting when moving between Unix versions.
 @
 \section{Special Hyperdoc pages}
 \subsection{Not Connected to Axiom}
+\label{SpadNotConnectedPage}
 \index{pages!SpadNotConnectedPage!util.ht}
 \index{util.ht!pages!SpadNotConnectedPage}
 \index{SpadNotConnectedPage!util.ht!pages}
@@ -1327,6 +1364,7 @@ the button you pressed.
 
 @
 \subsection{Do You Really Want to Exit?}
+\label{ProtectedQuitPage}
 \index{pages!ProtectedQuitPage!util.ht}
 \index{util.ht!pages!ProtectedQuitPage}
 \index{ProtectedQuitPage!util.ht!pages}
@@ -1343,6 +1381,7 @@ the button you pressed.
 
 @
 \subsection{Missing Page}
+\label{UnknownPage}
 \index{pages!UnknownPage!util.ht}
 \index{util.ht!pages!UnknownPage}
 \index{UnknownPage!util.ht!pages}
@@ -1357,6 +1396,7 @@ The page you requested was not found in the \HyperName{} database.
 
 @
 \subsection{Something is Wrong}
+\label{ErrorPage}
 \index{pages!ErrorPage!util.ht}
 \index{util.ht!pages!ErrorPage}
 \index{ErrorPage!util.ht!pages}
@@ -1371,6 +1411,7 @@ The page you requested was not found in the \HyperName{} database.
 
 @
 \subsection{Sorry!}
+\label{Unlinked}
 \index{pages!Unlinked!util.ht}
 \index{util.ht!pages!Unlinked}
 \index{Unlinked!util.ht!pages}
@@ -1471,6 +1512,9 @@ What would you like to do?
 \label{RootPageLogo}
 \includegraphics[scale=.5]{ps/v71rootpagelogo.eps}
 \index{images!rootpagelogo}
+
+Called from ``Root Page'' (RootPage) 
+\ref{RootPage} on page~\pageref{RootPage}
 \index{pages!RootPageLogo!rootpage.ht}
 \index{rootpage.ht!pages!RootPageLogo}
 \index{RootPageLogo!rootpage.ht!pages}
@@ -1484,12 +1528,13 @@ BSD license. For further information visit
 http://axiom.axiom-developer.org
 \newline
 Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997 by
-the Numerical Algorithms Group Limited, which is also the proprietor of the
-trademarks Axiom and the Axiom logo and of the registered
-trademarks NAG and the NAG logo.
+the Numerical Algorithms Group Limited, which is also the 
+proprietor of the trademarks Axiom and the Axiom logo and 
+of the registered trademarks NAG and the NAG logo.
 \newline
-Axiom was originally developed by the Research Division of the International
-Business Machines Corporation, Yorktown Heights, New York, USA.
+Axiom was originally developed by the Research Division of 
+the International Business Machines Corporation, Yorktown 
+Heights, New York, USA.
 \endscroll
 \end{page}
 
@@ -1499,6 +1544,9 @@ Business Machines Corporation, Yorktown Heights, New York, USA.
 \includegraphics[scale=.5]{ps/v71topsettingspage.eps}
 \index{images!topsettingspage}
 
+Called from ``Root Page'' (RootPage) \ref{RootPage} on 
+page~\pageref{RootPage}
+
 See ``Commands'' (ugSysCmdPage) 
 \ref{ugSysCmdPage} on page~\pageref{ugSysCmdPage}
 
@@ -1527,6 +1575,9 @@ management and change Axiom system variables.
 \label{TopExamplePage}
 \includegraphics[scale=.5]{ps/v71topexamplepage.eps}
 \index{images!topexamplepage}
+
+Called from ``Root Page'' (RootPage) \ref{RootPage} on 
+page~\pageref{RootPage}
 \begin{itemize}
 \item ``Graphics'' (GraphicsExamplePage) \ref{GraphicsExamplePage} on 
 page~\pageref{GraphicsExamplePage}.
@@ -1571,6 +1622,9 @@ What would you like to see?
 \label{TopReferencePage}
 \includegraphics[scale=.5]{ps/v71topreferencepage.eps}
 \index{images!topreferencepage}
+
+Called from ``Root Page'' (RootPage) \ref{RootPage} on 
+page~\pageref{RootPage}
 \begin{itemize}
 \item ``this font'' (YouTriedIt) \ref{YouTriedIt} on 
 page~\pageref{YouTriedIt}
@@ -1659,16 +1713,19 @@ A glossary of Axiom terms.
 \begin{scroll}
 
 \beginitems
-\item\downlink{\menuitemstyle{Essential Introduction to the NAG Foundation Library}}{manpageXXintro}
+\item\downlink{\menuitemstyle
+{Essential Introduction to the NAG Foundation Library}}{manpageXXintro}
 \item Foundation Library Chapter Manual Pages
 \beginitems
-\item\downlink{\menuitemstyle{C02}}{manpageXXc02}\tab{8} Zeros of Polynomials
+\item\downlink{\menuitemstyle{C02}}
+{manpageXXc02}\tab{8} Zeros of Polynomials
 \indentrel{8}\newline
 \table{
 {\downlink{c02aff}{manpageXXc02aff}}
 {\downlink{c02agf}{manpageXXc02agf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{C05}}{manpageXXc05}\tab{8} Roots of One or More Transcendental Equations
+\item\downlink{\menuitemstyle{C05}}
+{manpageXXc05}\tab{8} Roots of One or More Transcendental Equations
 \indentrel{8}\newline
 \table{
 {\downlink{c05adf}{manpageXXc05adf}}
@@ -1676,7 +1733,8 @@ A glossary of Axiom terms.
 {\downlink{c05pbf}{manpageXXc05pbf}}
 {\downlink{c05zaf}{manpageXXc05zaf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{C06}}{manpageXXc06}\tab{8} Summation of Series
+\item\downlink{\menuitemstyle{C06}}
+{manpageXXc06}\tab{8} Summation of Series
 \indentrel{8}\newline
 \table{
 {\downlink{c06eaf}{manpageXXc06eaf}}
@@ -1708,7 +1766,8 @@ A glossary of Axiom terms.
 {\downlink{d01gaf}{manpageXXd01gaf}}
 {\downlink{d01gbf}{manpageXXd01gbf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{D02}}{manpageXXd02}\tab{8} Ordinary Differential Equations
+\item\downlink{\menuitemstyle{D02}}
+{manpageXXd02}\tab{8} Ordinary Differential Equations
 \indentrel{8}\newline
 \table{
 {\downlink{d02bbf}{manpageXXd02bbf}}
@@ -1720,7 +1779,8 @@ A glossary of Axiom terms.
 {\downlink{d02kef}{manpageXXd02kef}}
 {\downlink{d02raf}{manpageXXd02raf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{D03}}{manpageXXd03}\tab{8} Partial Differential Equations
+\item\downlink{\menuitemstyle{D03}}
+{manpageXXd03}\tab{8} Partial Differential Equations
 \indentrel{8}\newline
 \table{
 {\downlink{d03edf}{manpageXXd03edf}}
@@ -1741,7 +1801,8 @@ A glossary of Axiom terms.
 {\downlink{e01sef}{manpageXXe01sef}}
 {\downlink{e01sff}{manpageXXe01sff}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{E02}}{manpageXXe02}\tab{8} Curve and Surface Fitting
+\item\downlink{\menuitemstyle{E02}}
+{manpageXXe02}\tab{8} Curve and Surface Fitting
 \indentrel{8}\newline
 \table{
 {\downlink{e02adf}{manpageXXe02adf}}
@@ -1763,7 +1824,8 @@ A glossary of Axiom terms.
 {\downlink{e02gaf}{manpageXXe02gaf}}
 {\downlink{e02zaf}{manpageXXe02zaf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{E04}}{manpageXXe04}\tab{8} Minimizing or Maximizing a Function
+\item\downlink{\menuitemstyle{E04}}
+{manpageXXe04}\tab{8} Minimizing or Maximizing a Function
 \indentrel{8}\newline
 \table{
 {\downlink{e04dgf}{manpageXXe04dgf}}
@@ -1780,7 +1842,8 @@ A glossary of Axiom terms.
 {\downlink{e04ycf}{manpageXXe04ycf}}
 }\indentrel{-8}
 \item\downlink{\menuitemstyle{F}}{manpageXXf}\tab{8} Linear Algebra
-\item\downlink{\menuitemstyle{F01}}{manpageXXf01}\tab{8} Matrix Operations, Including Inversion
+\item\downlink{\menuitemstyle{F01}}
+{manpageXXf01}\tab{8} Matrix Operations, Including Inversion
 \indentrel{8}\newline
 \table{
 {\downlink{f01brf}{manpageXXf01brf}}
@@ -1794,7 +1857,8 @@ A glossary of Axiom terms.
 {\downlink{f01rdf}{manpageXXf01rdf}}
 {\downlink{f01ref}{manpageXXf01ref}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{F02}}{manpageXXf02}\tab{8} Eigenvalues and Eigenvectors
+\item\downlink{\menuitemstyle{F02}}
+{manpageXXf02}\tab{8} Eigenvalues and Eigenvectors
 \indentrel{8}\newline
 \table{
 {\downlink{f02aaf}{manpageXXf02aaf}}
@@ -1813,7 +1877,8 @@ A glossary of Axiom terms.
 {\downlink{f02wef}{manpageXXf02wef}}
 {\downlink{f02xef}{manpageXXf02xef}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{F04}}{manpageXXf04}\tab{8} Simultaneous Linear Equations
+\item\downlink{\menuitemstyle{F04}}
+{manpageXXf04}\tab{8} Simultaneous Linear Equations
 \indentrel{8}\newline
 \table{
 {\downlink{f04adf}{manpageXXf04adf}}
@@ -1828,7 +1893,8 @@ A glossary of Axiom terms.
 {\downlink{f04mcf}{manpageXXf04mcf}}
 {\downlink{f04qaf}{manpageXXf04qaf}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{F07}}{manpageXXf07}\tab{8} Linear Equations (LAPACK)
+\item\downlink{\menuitemstyle{F07}}
+{manpageXXf07}\tab{8} Linear Equations (LAPACK)
 \indentrel{8}\newline
 \table{
 {\downlink{f07adf}{manpageXXf07adf}}
@@ -1836,7 +1902,8 @@ A glossary of Axiom terms.
 {\downlink{f07fdf}{manpageXXf07fdf}}
 {\downlink{f07fef}{manpageXXf07fef}}
 }\indentrel{-8}
-\item\downlink{\menuitemstyle{S}}{manpageXXs}\tab{8} Approximations of Special Functions
+\item\downlink{\menuitemstyle{S}}
+{manpageXXs}\tab{8} Approximations of Special Functions
 \indentrel{8}\newline
 \table{
 {\downlink{s01eaf}{manpageXXs01eaf}}
@@ -1879,10 +1946,13 @@ A glossary of Axiom terms.
 {\downlink{s21bdf}{manpageXXs21bdf}}
 }\indentrel{-8}
 \enditems
-\item\downlink{\menuitemstyle{Introduction to NAG On-Line Documentation}}{manpageXXonline}
+\item\downlink{\menuitemstyle
+{Introduction to NAG On-Line Documentation}}{manpageXXonline}
 \item\downlink{\menuitemstyle{Keywords in Context}}{manpageXXkwic}
-\item\downlink{\menuitemstyle{List of all \naglib{} Routines}}{manpageXXsummary}
-\item\downlink{\menuitemstyle{Converting from the Workstation Library}}{manpageXXconvert}
+\item\downlink{\menuitemstyle{List of all \naglib{} Routines}}
+{manpageXXsummary}
+\item\downlink{\menuitemstyle
+{Converting from the Workstation Library}}{manpageXXconvert}
 \enditems
 \end{scroll}
 \end{page}
@@ -1892,11 +1962,16 @@ A glossary of Axiom terms.
 @
 \subsection{Abstract Algebra}
 \label{AlgebraPage}
+\includegraphics[scale=.5]{ps/v71algebrapage.eps}
+\index{images!algebrapage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on 
+page~\pageref{TopicPage}
 \begin{itemize}
-\item NumberTheoryPage \ref{NumberTheoryPage} on
-page~pageref{NumberTheoryPage}
-\item GroupTheoryPage \ref{GroupTheoryPage} on
-page~pageref{GroupTheoryPage}
+\item ``Number Theory'' (NumberTheoryPage)\\
+\ref{NumberTheoryPage} on page~pageref{NumberTheoryPage}
+\item ``Group Theory'' (GroupTheoryPage)\\
+\ref{GroupTheoryPage} on page~pageref{GroupTheoryPage}
 \end{itemize}
 \index{pages!AlgebraPage!algebra.ht}
 \index{algebra.ht!pages!AlgebraPage}
@@ -1925,8 +2000,8 @@ Permutation groups; representation theory.
 \begin{itemize}
 \item ugProblemGaloisPage \ref{ugProblemGaloisPage} on
 page~pageref{ugProblemGaloisPage}
-\item IntegerNumberTheoryFunctionsXmpPage 
-\ref{IntegerNumberTheoryFunctionsXmpPage} on
+\item IntegerNumberTheoryFunctionsXmpPage \\
+\ref{IntegerNumberTheoryFunctionsXmpPage} on\\
 page~pageref{IntegerNumberTheoryFunctionsXmpPage}
 \end{itemize}
 \index{pages!NumberTheoryPage!algebra.ht}
@@ -1940,7 +2015,8 @@ facilities.
 \beginmenu
 \menulink{Galois Groups}{ugProblemGaloisPage} \newline
 Computation of Galois groups using factorizations over number fields.
-\menulink{Number Theory Functions}{IntegerNumberTheoryFunctionsXmpPage}\newline
+\menulink{Number Theory Functions}
+{IntegerNumberTheoryFunctionsXmpPage}\newline
 Some functions of interest to number theorists.
 \endmenu
 \endscroll
@@ -1967,18 +2043,17 @@ Some functions of interest to number theorists.
 \begin{page}{AssociationListXmpPage}{AssociationList}
 \beginscroll
 
-The \spadtype{AssociationList} constructor provides a general structure for
-associative storage.
-This type provides association lists in which data objects can be saved
-according to keys of any type.
-For a given association list, specific types must be chosen for the keys and
-entries.
-You can think of the representation of an association list as a list
-of records with key and entry fields.
+The \spadtype{AssociationList} constructor provides a general
+structure for associative storage.  This type provides association
+lists in which data objects can be saved according to keys of any
+type.  For a given association list, specific types must be chosen for
+the keys and entries.  You can think of the representation of an
+association list as a list of records with key and entry fields.
 
-Association lists are a form of table and so most of the operations available
-for \spadtype{Table} are also available for \spadtype{AssociationList}.
-They can also be viewed as lists and can be manipulated accordingly.
+Association lists are a form of table and so most of the operations
+available for \spadtype{Table} are also available for
+\spadtype{AssociationList}.  They can also be viewed as lists and can
+be manipulated accordingly.
 
 \xtc{
 This is a \pspadtype{Record} type with age and gender fields.
@@ -2036,856 +2111,16 @@ The second argument is the index of the element to delete.
 \spadpaste{delete!(al,1) \free{al6}\bound{al7}}
 }
 
-For more information about tables, see \downlink{`Table'}{TableXmpPage}\ignore{Table}.
-For more information about lists, see \downlink{`List'}{ListXmpPage}\ignore{List}.
+For more information about tables, 
+see \downlink{`Table'}{TableXmpPage}\ignore{Table}.
+For more information about lists, 
+see \downlink{`List'}{ListXmpPage}\ignore{List}.
 \showBlurb{AssociationList}
 \endscroll
 \autobuttons
 \end{page}
 
 @
-\section{annaex.ht}
-\subsection{Axiom/NAG Expert System}
-\label{UXANNA}
-\index{pages!UXANNA!annaex.ht}
-\index{annaex.ht!pages!UXANNA}
-\index{UXANNA!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNA}{Axiom/NAG Expert System}
-\centerline{\tt{\inputbitmap{\htbmdir{}/anna_logo.xbm}}\rm}
-\newline
-\centerline{This expert system chooses, and uses, NAG numerical routines.}
-\begin{scroll}
-\blankline
-\indent{2}
-\beginmenu
-\menumemolink{Integration}{UXANNAInt}
-\blankline
-\menumemolink{Ordinary Differential Equations}{UXANNAOde}
-\blankline
-\menumemolink{Partial Differential Equations}{UXANNAPde}
-\blankline
-\menumemolink{Optimization}{UXANNAOpt}
-\vspace{10}
-\menumemolink{About the Axiom/NAG Expert System}{UXANNATxt}
-%\unixcommand{(Postscript)}{ghostview \ \htbmdir{}/anna.ps}
-%\blankline
-%\menumemolink{How to use the NAGLINK}{nagLinkIntroPage}
-%\blankline
-%\menumemolink{Tutorial}{tutorialIntroPage}
-%\blankline
-%\item \menulispdownlink{Interpolation}{(|interp1|}
-\endmenu
-\indent{0}
-\end{scroll}
-%\unixcommand{Netscape}{netscape \ http:\/\/www.bath.ac.uk\/\~masbjd\/anna.html}
-\autobutt{HelpContents}
-\end{page}
-
-@
-\subsection{Integration}
-\label{UXANNAInt}
-\index{pages!UXANNAInt!annaex.ht}
-\index{annaex.ht!pages!UXANNAInt}
-\index{UXANNAInt!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAInt}{Integration}
-Welcome to the Integration section of {\tt
-\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em Axiom/NAG Expert
-System}.  This system chooses, and uses, NAG numerical routines.
-\begin{scroll}
-\blankline
-\indent{2}
-\beginmenu
-\item \menulispdownlink{Integration}{(|annaInt|)}\space{}\newline
-\indent{5} Integrating a function over a finite or infinite range.
-\blankline
-\item \menulispdownlink{Multiple Integration}{(|annaMInt|)}\space{}\newline
-\indent{5} Integrating a multivariate function over a finite space.  
-The dimensions of the space need to be 2 <= n <= 15.
-\blankline
-\menudownlink{Examples}{UXANNAIntEx}\space{}\newline
-\indent{5} Examples of integration.  These examples cover all of the major 
-methods.  Parameters can be changed to investigate the effect 
-on the choice of method.
-\endmenu
-\indent{0}
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-@
-\subsection{Ordinary Differential Equations}
-\label{UXANNAOde}
-\index{pages!UXANNAOde!annaex.ht}
-\index{annaex.ht!pages!UXANNAOde}
-\index{UXANNAOde!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAOde}{Ordinary Differential Equations}
-Welcome to the Ordinary Differential Equations section of {\tt
-\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the 
-{\em Axiom/NAG Expert System}.  
-This system chooses, and uses, NAG numerical routines.
-\begin{scroll}
-\blankline
-\blankline
-\indent{2}
-\beginmenu
-\item \menulispdownlink{Ordinary Differential Equations}{(|annaOde|)}\space{}\newline
-\indent{5} Finding a solution to an Initial Value Problem of a set of Ordinary Differential Equations.
-\blankline
-\menudownlink{Examples}{UXANNAOdeEx}\newline
-\indent{5} Examples of ODE problems with various features using both stiff
-and non-stiff methods.  Parameters can be changed to investigate the effect 
-on the choice of method.
-\autobutt{MainHelp}
-\endmenu
-\indent{0}
-\end{scroll}
-\end{page}
-
-@
-\subsection{Optimization}
-\label{UXANNAOpt}
-\index{pages!UXANNAOpt!annaex.ht}
-\index{annaex.ht!pages!UXANNAOpt}
-\index{UXANNAOpt!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAOpt}{Optimization}
-Welcome to the Optimization section of {\tt
-\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em Axiom/NAG Expert System}.  
-This system chooses, and uses, NAG numerical routines.
-\begin{scroll}
-\blankline
-\indent{2}
-\beginmenu
-\item \menulispdownlink{Optimization of a Single Multivariate Function}
-{(|annaOpt|)}\space{}\newline
-\indent{6} Finding the minimum of a function in n variables. 
-\newline
-\indent{6} Linear Programming and Quadratic Programming problems.
-\blankline
-\indent{4} 
-\beginmenu
-\menudownlink{Examples}{UXANNAOptEx}\newline
-\indent{8} Examples of optimization problems with various constraint features.
-\endmenu
-\blankline
-\item \menulispdownlink{Optimization of a set of observations of a data set}
-{(|annaOpt2|)}\space{}\newline
-\indent{6} Least-squares problems.
-\newline
-\indent{6} Checking the goodness of fit of a least-squares model.
-\blankline
-\indent{4} 
-\beginmenu
-\menudownlink{Examples}{UXANNAOpt2Ex}\newline
-\indent{8} Examples of least squares problems.
-\endmenu
-\endmenu
-\indent{0}
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-@
-\subsection{Partial Differential Equations}
-\label{UXANNAPde}
-\index{pages!UXANNAPde!annaex.ht}
-\index{annaex.ht!pages!UXANNAPde}
-\index{UXANNAPde!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAPde}{Partial Differential Equations}
-Welcome to the Partial Differential Equations section of {\tt
-\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the
-{\em Axiom/NAG Expert System}.  
-\begin{scroll}
-\indent{2}
-\beginmenu
-\menulispdownlink{Second Order Elliptic Partial Differential Equation}{(|annaPDESolve|)}
-\newline
-\indent{4} Discretizing the PDE:
-\newline
-\centerline{\inputbitmap{\htbmdir{}/d03eef.xbm}}
-defined on a rectangular region with boundary conditions of the form 
-\centerline{\inputbitmap{\htbmdir{}/d03eef1.bitmap}} 
-and solving the resulting
-seven-diagonal finite difference equations using a multigrid technique.
-\blankline
-%\menulispdownlink{Helmholtz Equation in 3-D, Cartesian Coordinates}{(|d03fafVars|)}
-%\newline
-%\indent{4} Descretizing the PDE:
-%\newline
-%\centerline{\inputbitmap{\htbmdir{}/d03faf.xbm}}
-%and solving the resulting
-%seven-diagonal finite difference equations using a method based on the Fast
-%Fourier Transform.
-\endmenu
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-@
-\subsection{Examples Using the Axiom/NAG Expert System}
-\label{UXANNAOptEx}
-\index{pages!UXANNAOptEx!annaex.ht}
-\index{annaex.ht!pages!UXANNAOptEx}
-\index{UXANNAOptEx!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAOptEx}{Examples Using the Axiom/NAG Expert System}
-\begin{scroll}
-Select any of these examples and you will be presented with a page which
-contains active areas for the function and its parameters.
-\blankline
-These parameters can be altered by selecting the area and replacing the
-default parameters by the new values. 
-\blankline
-\beginmenu
-\item \menulispdownlink{Example 1: \newline 
-\indent{2} Minimize the function: 
-\centerline{\inputbitmap{\htbmdir{}/opt1.xbm}}}{(|annaOptDefaultSolve1|)}\space{}
-\blankline
-\item \menulispdownlink{Example 2: \newline 
-\indent{2} Minimize the function: 
-\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}{(|annaOptDefaultSolve2|)}\space{}
-\newline \indent{3} With conditions: 
-\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}
-\blankline
-\item \menulispdownlink{Example 3: \newline 
-\indent{2} Minimize the function: 
-\centerline{\inputbitmap{\htbmdir{}/opt3.xbm}}}{(|annaOptDefaultSolve3|)}\space{}
-\newline \indent{3} With conditions: 
-\centerline{\inputbitmap{\htbmdir{}/opt3c1.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt3c2.xbm}}
-\blankline
-\item \menulispdownlink{Example 4: \newline 
-\indent{2} Minimize the function: 
-\centerline{\inputbitmap{\htbmdir{}/opt4.xbm}}
-}{(|annaOptDefaultSolve4|)}\space{}
-\newline \indent{3} With conditions: 
-\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
-\blankline
-\item \menulispdownlink{Example 5: \newline 
-\indent{2} Minimize the function: 
-\centerline{\inputbitmap{\htbmdir{}/opt5.xbm}}
-}{(|annaOptDefaultSolve5|)}\space{}
-\newline \indent{3} With conditions: 
-\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
-\blankline
-\endmenu
-\end{scroll}
-\autobutt{Mainhelp}
-\end{page}
-
-@
-\subsection{Examples Using the Axiom/NAG Expert System}
-\label{UXANNAOpt2Ex}
-\index{pages!UXANNAOpt2Ex!annaex.ht}
-\index{annaex.ht!pages!UXANNAOpt2Ex}
-\index{UXANNAOpt2Ex!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAOpt2Ex}{Examples Using the Axiom/NAG Expert System}
-\begin{scroll}
-Select this example and you will be presented with a page which
-contains active areas for the function and its parameters.
-\blankline
-These parameters can be altered by selecting the area and replacing the
-default parameters by the new values. 
-\blankline
-\beginmenu
-\blankline
-\item \menulispdownlink{Example 1: \newline 
-\indent{2} Calculate a least-squares minimization of the following functions: 
-\centerline{\inputbitmap{\htbmdir{}/opt61.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt62.xbm}}
-\centerline{\inputbitmap{\htbmdir{}/opt63.xbm}}}
-{(|annaOpt2DefaultSolve|)}\space{}
-\endmenu
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-
-@
-\subsection{Examples Using the Axiom/NAG Expert System}
-\label{UXANNAIntEx}
-\index{pages!UXANNAIntEx!annaex.ht}
-\index{annaex.ht!pages!UXANNAIntEx}
-\index{UXANNAIntEx!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAIntEx}{Examples Using the Axiom/NAG Expert System}
-\begin{scroll}
-Select any of these examples and you will be presented with a page which
-contains active areas for the function and its parameters.
-\blankline
-These parameters can be altered by selecting the area and replacing the
-default parameters by the new values.  In this way you can investigate the
-effect of the new parameters on the choice of method.
-\blankline
-\beginmenu
-\item \menulispdownlink{Example 1: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}{(|annaFoo|)}\space{}
-\blankline
-\item \menulispdownlink{Example 2: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int2.xbm}}}{(|annaBar|)}\space{}
-\blankline
-\item \menulispdownlink{Example 3: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int3.xbm}}}{(|annaJoe|)}\space{}
-\blankline
-\item \menulispdownlink{Example 4: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int4.xbm}}}{(|annaSue|)}\space{}
-\blankline
-\item \menulispdownlink{Example 5: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int5.xbm}}}{(|annaAnn|)}\space{}
-\blankline
-\item \menulispdownlink{Example 6: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int6.xbm}}}{(|annaBab|)}\space{}
-\blankline
-\item \menulispdownlink{Example 7: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int7.xbm}}}{(|annaFnar|)}\space{}
-\blankline
-\item \menulispdownlink{Example 8: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int8.xbm}}}{(|annaDan|)}\space{}
-\blankline
-\item \menulispdownlink{Example 9: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int9.xbm}}}{(|annaBlah|)}\space{}
-\blankline
-\item \menulispdownlink{Example 10: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int10.xbm}}}{(|annaTub|)}\space{}
-\blankline
-\item \menulispdownlink{Example 11: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int13.xbm}}}{(|annaRats|)}\space{}
-\blankline
-\item \menulispdownlink{Example 12: \newline 
-\centerline{\inputbitmap{\htbmdir{}/int11.xbm}}}{(|annaMInt|)}\space{}
-\endmenu
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-@
-\subsection{Examples Using the Axiom/NAG Expert System}
-\label{UXANNAOdeEx}
-\index{pages!UXANNAOdeEx!annaex.ht}
-\index{annaex.ht!pages!UXANNAOdeEx}
-\index{UXANNAOdeEx!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAOdeEx}{Examples Using the Axiom/NAG Expert System}
-\begin{scroll}
-Analyses the function for various attributes, chooses and 
-then uses a suitable ODE solver to provide a 
-solution to the system of n ODEs \center{\htbitmap{d02gaf},}
-for i = 1,2,...,n.
-\blankline
-Select either of these examples and you will be presented with a page which
-contains active areas for the function and its parameters.
-\blankline
-These parameters can be altered by selecting the area and replacing the
-default parameters by the new values.  In this way you can investigate the
-effect of the new parameters on the choice of method.
-\blankline
-\beginmenu
-\item \menulispdownlink{Example 1: \tab{12}
-\inputbitmap{\htbmdir{}/ode1.xbm}}{(|annaOdeDefaultSolve1|)}
-\blankline with initial conditions: \newline
-\tab{12}\inputbitmap{\htbmdir{}/y1.xbm} \space{1} and \space{1}
-\inputbitmap{\htbmdir{}/x1.xbm}
-\blankline
-\blankline
-\blankline
-\item \menulispdownlink{Example 2: \tab{12}
-\inputbitmap{\htbmdir{}/ode2.xbm}}{(|annaOdeDefaultSolve2|)}
-\blankline with initial conditions: \newline
-\tab{12}\inputbitmap{\htbmdir{}/y2.xbm} \space{1} and \space{1}
-\inputbitmap{\htbmdir{}/x1.xbm}
-\blankline
-\blankline
-\blankline
-\endmenu
-\end{scroll}
-\autobutt{MainHelp}
-\end{page}
-
-@
-\subsection{About the Axiom/NAG Expert System}
-\label{UXANNATxt}
-\begin{itemize}
-\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
-\item UXANNAIntro \ref{UXANNAIntro} on page~\pageref{UXANNAIntro}
-\item UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
-\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
-\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
-\end{itemize}
-\index{pages!UXANNATxt!annaex.ht}
-\index{annaex.ht!pages!UXANNATxt}
-\index{UXANNATxt!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNATxt}{About the Axiom/NAG Expert System}
-\begin{scroll}
-\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm} 
-\vspace{-30}\horizontalline
-In applied mathematics, electronic and chemical engineering, the modelling
-process can produce a number of mathematical problems which require numerical
-solutions for which symbolic methods are either not possible or not obvious. 
-With the plethora of numerical library routines for the solution of these
-problems often the numerical analyst has to answer the question {\em Which
-routine to choose?} 
-\blankline
-Some analysis needs to be carried out before the
-appropriate routine can be identified i.e. {\em How stiff is this ODE?} and
-{\em Is this function continuous?}  It may well be the case that more than
-one routine is applicable to the problem.  So the question may become {\em
-Which is likely to be the best?}  Such a choice may be critical for both
-accuracy and efficiency.
-\blankline
-An expert system is thus required to make this choice based on the result of
-its own analysis of the problem, call the routine and act on the outcome. 
-This may be to put the answer in a relevant form or react to an apparent
-failure of the chosen routine and thus choose and call an alternative.  
-It should also have sufficient explanation mechanisms to inform on the choice
-of routine and the reasons for that choice.
-\blankline
-\end{scroll}
-\downlink{ Examples }{UXANNAEx}
-\downlink{ Introduction }{UXANNAIntro}
-\downlink{ Decision Agents }{UXANNADec}
-\downlink{ Inference Mechanisms }{UXANNAInfer}
-\downlink{ Measure Functions }{UXANNAMeas}
-\end{page}
-
-@
-\subsection{Introduction to the Axiom/NAG Expert System}
-\label{UXANNAIntro}
-\begin{itemize}
-\item UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
-\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
-\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
-\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
-\end{itemize}
-\index{pages!UXANNAIntro!annaex.ht}
-\index{annaex.ht!pages!UXANNAIntro}
-\index{UXANNAIntro!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAIntro}{Introduction to the Axiom/NAG Expert System}
-\begin{scroll}
-\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm}
-\vspace{-30}\horizontalline
-Deciding amongst, and then implementing, several possible approaches to
-solving a numerical problem can be daunting for a novice user, or tedious for
-an expert.  Different attributes of the problem need to be
-identified and their possible interactions weighed up before a final decision
-about which method to use can be made. 
-\blankline
-The implementation is then largely an
-automatic, if laborious, process of writing, compiling and linking usually
-Fortran code.  The aim is to build an expert system which will use computer
-algebra to analyse such features of a problem, inference mechanisms and a
-knowledge base to choose a numerical method appropriate to the solution of a
-given problem.  
-\blankline
-Any interactive system is constrained by the need to provide a reasonable
-response time for the user.  Given the complexity of some of the analysis our
-system will need to do, it is clear that we should only aim to select a good
-method, rather than try to identify the best one available.  The overall goal
-is to provide a ``black-box'' interface to numerical software which allows
-non-experts access to its full potential.  It will also provide explanation
-mechanisms commensurate with its role as a teaching aid.
-\blankline
-Given, say, an integration to perform (which may or may not be able to be
-handled symbolically), the system should choose and apply an appropriate
-method, thus mirroring as closely as possible the way that an experienced
-numerical analyst would think so, for example, given an integration to
-perform:\newline
-{\it \centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
-\newline
-the experienced analyst would see that the integral is semi-infinite and
-transform it by splitting the range and transforming the integral over {\it
-[1,\inputbitmap{\htbmdir{}/infty.xbm}]} into an integral over 
-{\it [0,1] } using the transformation {\it x -> 1/t}.  
-A different numerical routine might be used over each
-sub-region and the results added to give the final answer. 
-\blankline
-It then requires
-the translation of the problem into Fortran code which may be extensive.
-Even with this simple example, the process is quite involved.
-\blankline
-\end{scroll}
-\autobuttons
-\downlink{ Decision Agents }{UXANNADec}
-\downlink{ Inference Mechanisms }{UXANNAInfer}
-\downlink{ Method Domains }{UXANNAMeth}
-\downlink{ Measure Functions }{UXANNAMeas}
-\end{page}
-
-@
-\subsection{Example using the Axiom/NAG Expert System}
-\label{UXANNAEx}
-See UXANNAEx2 \ref{UXANNAEx2} on page~\pageref{UXANNAEx2}
-\index{pages!UXANNAEx!annaex.ht}
-\index{annaex.ht!pages!UXANNAEx}
-\index{UXANNAEx!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAEx}{Example using the Axiom/NAG Expert System}
-\begin{scroll}
-\xtc{
-{\bf Example 1}: The integral
-{\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
-\newline
-is performed as follows:
-\blankline
-}{}
-\xtc{
-}{
-\spadpaste{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans} }
-}
-\blankline
-\xtc{
-It creates a composite structure for which the field containing the result can be 
-expanded as required.\blankline
-}{
-\spadpaste{ans . 'result\free{ans}}
-}
-\blankline
-\xtc{
-}{
-\spadpaste{ans . 'abserr\free{ans}}
-}
-\blankline
-This system has performed the analysis described above, done the necessary
-problem transformation, written any necessary Fortran, called two different
-numerical routines, and amalgamated their
-results.  This whole process was transparent to the user.
-\end{scroll}
-\autobuttons
-\downlink{Example 2}{UXANNAEx2}
-%\downlink{Decision Agents}{UXANNADec}
-\end{page}
-
-@
-\subsection{Example using the Axiom/NAG Expert System}
-\label{UXANNAEx2}
-See UXANNAEx3 \ref{UXANNAEx3} on page~\pageref{UXANNAEx3}
-\index{pages!UXANNAEx2!annaex.ht}
-\index{annaex.ht!pages!UXANNAEx2}
-\index{UXANNAEx2!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAEx2}{Example using the Axiom/NAG Expert System}
-\begin{scroll}
-\xtc{
-{\bf Example 2}: The ODE
-{\centerline{\inputbitmap{\htbmdir{}/ode3.xbm}\space{1}with
-\space{1}
-{\inputbitmap{\htbmdir{}/y3.xbm}}}}
-\newline
-could be solved as follows:
-\blankline
-}{}
-\xtc{
-}{
-\spadpaste{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0,
-[1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2} }
-}
-\blankline
-\xtc{
-It creates a composite structure for which the field containing the result can be 
-expanded as required.\blankline
-}{
-\spadpaste{ans2 . 'result\free{ans2}}
-}
-\blankline
-\xtc{
-}{
-\spadpaste{ans2 . 'y\free{ans2}}
-}
-\blankline
-\end{scroll}
-\autobuttons
-\downlink{Example 3}{UXANNAEx3}
-%\downlink{Decision Agents}{UXANNADec}
-\end{page}
-
-@
-\subsection{Example using the Axiom/NAG Expert System}
-\label{UXANNAEx3}
-See UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
-\index{pages!UXANNAEx3!annaex.ht}
-\index{annaex.ht!pages!UXANNAEx3}
-\index{UXANNAEx3!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAEx3}{Example using the Axiom/NAG Expert System}
-\begin{scroll}
-\xtc{
-{\bf Example 3}: The function
-{\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}
-with simple bounds
-{\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}}
-\newline
-could be minimized as follows:
-\blankline
-}{}
-\xtc{
-}{
-\spadpaste{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + 
-(X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], 
-[3,0,\%plusInfinity,3])\bound{ans3} }
-}
-\blankline
-\xtc{
-It creates a composite structure for which the field containing the minimum can be 
-expanded as required.\blankline
-}{
-\spadpaste{ans3 . objf\free{ans3}}
-}
-\blankline
-\xtc{
-}{
-\spadpaste{ans3 . x\free{ans3}}
-}
-\blankline
-\xtc{
-}{
-\spadpaste{ans3 . attributes\free{ans3}}
-}
-\blankline
-\end{scroll}
-\autobuttons
-\downlink{Decision Agents}{UXANNADec}
-\end{page}
-
-@
-\subsection{Decision Agents}
-\label{UXANNADec}
-\begin{itemize}
-\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
-\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
-\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
-\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
-\end{itemize}
-\index{pages!UXANNADec!annaex.ht}
-\index{annaex.ht!pages!UXANNADec}
-\index{UXANNADec!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNADec}{Decision Agents}
-\begin{scroll}
-\blankline
-Some features are either present or absent in a problem.  Examples of such
-binary decisions include {\em is a matrix symmetric?} and {\em is a
-function continuous?}  However in practice many questions are about the {\em
-degree} to which a problem exhibits a property: {\em how much does a
-function oscillate?}, or {\em how stiff are these differential equations?}
-\blankline
-We have therefore created decision agents of two types, reflecting their
-property --- {\em Binary Agents} are Boolean functions returning either true
-or false and {\em Intensity Functions} are quantitative and return a range of
-different values, either numerical or structured types. The framework we are
-developing is able to deal with both these forms of information.  
-\blankline
-
-In any given problem area (for example solving ordinary differential
-equations, optimization etc.) we have a selection of {\em methods}.  These
-might be to use a particular NAG routine, or they might involve employing a
-higher-level strategy such as transforming the problem into an equivalent,
-but easier to solve, form.  
-\blankline
-Associated with every method we define a {\em
-measure function} which assesses the suitability of that method to a
-particular problem.  Each measure function has access to a range of symbolic
-{\em agents} which can answer questions about the various properties of the
-problem in hand.
-\blankline
-\end{scroll}
-\downlink{ Inference Mechanisms }{UXANNAInfer}
-\downlink{ Method Domains }{UXANNAMeth}
-\downlink{ Measure Functions }{UXANNAMeas}
-\downlink{ Computational Agents }{UXANNAAgent}
-
-\end{page}
-
-@
-\subsection{Inference Mechanisms}
-\label{UXANNAInfer}
-\begin{itemize}
-\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
-\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
-\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
-\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
-\end{itemize}
-\index{pages!UXANNAInfer!annaex.ht}
-\index{annaex.ht!pages!UXANNAInfer}
-\index{UXANNAInfer!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAInfer}{Inference Mechanisms}
-\begin{scroll}
-\blankline
-The inference machine will take the problem description as provided by the
-user and perform an initial analysis to verify its validity.  It will
-consider, in turn, all of the available methods within its knowledge base
-which might solve that problem.  In doing so it analyses the input problem to
-find out about any attributes that could affect the ability of the methods
-under consideration to perform effectively.  
-\blankline
-Some of these
-measures may use lazy evaluation in the sense that, if a method already
-assessed is believed to be a good candidate, and if evaluating the current
-measure will be relatively expensive, then that measure will not be evaluated
-unless later evidence shows that the selected method is not, in fact, a
-successful strategy, for example if it has failed.
-\end{scroll}
-\downlink{ Method Domains }{UXANNAMeth}
-\downlink{ Measure Functions }{UXANNAMeas}
-\downlink{ Computational Agents }{UXANNAAgent}
-\downlink{ Examples }{UXANNAEx}
-\end{page}
-
-@
-\subsection{Method Domains}
-\label{UXANNAMeth}
-\begin{itemize}
-\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
-\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
-\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
-\end{itemize}
-\index{pages!UXANNAMeth!annaex.ht}
-\index{annaex.ht!pages!UXANNAMeth}
-\index{UXANNAMeth!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAMeth}{Method Domains}
-\begin{scroll}
-\blankline
-An Axiom {\em domain} has been created for each method or strategy for
-solving the problem.  These method domains each implement two functions with
-a uniform (method independant) interface.
-\blankline {\bf measure:} A function which calculates an estimate of suitability of
-this particular method to the problem if there is a possibility that the
-method under consideration is more appropriate than one already investigated.
-\blankline
-If it may be possible to improve on the current favourite method, the function
-will call computational agents to analyse the problem for specific features
-and calculate the measure from the results these agents return, 
-using a variation on the Lucks/Gladwell intensity and compatibility
-model if conflict between attributes, as investigated by these computational
-agents, may be present.
-\blankline
-{\bf implementation:} A function which may be one of two distinct kinds. 
-The first kind uses the interface to the NAG Library to call a particular 
-routine with the required parameters.  Some of the parameters may need to be
-calculated from the data provided before the external function call.  
-\blankline
-The other kind will apply a ``high level'' strategy to try to solve the
-problem e.g.~a transformation of an expression from one that is difficult to
-solve to one which is easier, or a splitting of the problem into several more
-easily solvable parts.  For example, for a solution of the equation above,
-since the integral is semi-infinite we might wish to transform the range by,
-say, using the mapping {\it y -> 1/x} on the section {\it 1
-< x < \inputbitmap{\htbmdir{}/infty.xbm}}) and
-adding the result to the unmapped section {\it 0 < x < 1}.
-\blankline
-\end{scroll}
-\downlink{ Measure Functions }{UXANNAMeas}
-\downlink{ Computational Agents }{UXANNAAgent}
-\downlink{ Examples }{UXANNAEx}
-\end{page}
-
-@
-\subsection{Measure Functions}
-\label{UXANNAMeas}
-\begin{itemize}
-\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
-\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
-\end{itemize}
-\index{pages!UXANNAMeas!annaex.ht}
-\index{annaex.ht!pages!UXANNAMeas}
-\index{UXANNAMeas!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAMeas}{Measure Functions}
-\begin{scroll}
-\blankline
-Each measure function will estimate the ability of a particular method to
-solve a problem.  It will consult whichever agents are needed to perform
-analysis on the problem in order to calculate the measure.  There is a
-parameter which would contain the best compatibility
-value found so far.  
-\blankline
-However, the interpretation we give to the results of some tests is not
-always clear-cut.  If a set of tests give
-conflicting advice as to the appropriateness of a particular method, it
-becomes important to decide not only {\it whether} certain properties are
-present but also their {\it degree}.  This gives us a basis for estimating the
-compatibility of each property.  
-\blankline
-We have taken for our model the system recommended by Lucks and Gladwell
-which uses a system of measurement of compatibility allowing for interaction
-and conflict between a number of attributes.  All of these processes may not
-be required if the choice is clear-cut e.g. we have an integral to calculate
-which has a particular singularity structure for which one particular method
-has been specifically constructed.  However, for more difficult cases a
-composite picture should be built up to calculate a true measurement. 
-\blankline
-How the compatibility functions interpret the measurements of various
-attributes is up to them and may vary between differing methods.  It is this
-area that takes as its basis the {\it judgement} of Numerical Analysis
-`experts' whether that be from the documentation (which may be deficient in
-certain respects) or from alternative sources.  However, its assessment of
-the suitability or otherwise of a particular method is reflected in a single
-normalised value facilitating the direct comparison of the suitability of a
-number of possible methods.
-\blankline
-\end{scroll}
-\downlink{ Computational Agents }{UXANNAAgent}
-\downlink{ Examples }{UXANNAEx}
-\end{page}
-
-@
-\subsection{Computational Agents}
-\label{UXANNAAgent}
-See UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
-\index{pages!UXANNAAgent!annaex.ht}
-\index{annaex.ht!pages!UXANNAAgent}
-\index{UXANNAAgent!annaex.ht!pages}
-<<annaex.ht>>=
-\begin{page}{UXANNAAgent}{Computational Agents}
-\begin{scroll}
-\blankline
-Computational Agents are those program segments which investigate the
-attributes of the input function or functions, such as 
-{\bf stiffnessAndStabilityOfODEIF}
-(the {\em IF} indicates that it is an {\em Intensity Function} i.e. one that
-returns a normalised real number or a set of normalised real numbers).  They
-are usually functions or programs written completely in the Axiom
-language and implemented using computer algebra.
-\blankline
-Some agents will be common to more than one problem domain whereas others
-will be specific to a single domain.  They also vary greatly in their
-complexity.  It is a fairly simple task to return details about the range of
-a function since this information will have been included in the problem
-specification.  It is a different order of complexity to return details of
-its singularity structure.
-\blankline
-\xtc{
-As an example, here is a call to the computational agent {\bf
-singularitiesOf} to obtain the list of singularities of the function 
-{\it tan x} which are in the range 
-{\it 0..12\inputbitmap{\htbmdir{}/pi.xbm}}:
-\blankline
-}{
-}
-\xtc{
-}{
-\spadpaste{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT \free{lib3} }
-}
-\blankline
-Each of these computational agents which may be called by a number of method
-domains retain their output in a dynamic hash-table, so speeding the process
-and retaining efficiency.
-\end{scroll}
-\downlink{ Examples }{UXANNAEx}
-\end{page}
-
-@
 \section{array1.ht}
 <<array1.ht>>=
 \newcommand{\OneDimensionalArrayXmpTitle}{OneDimensionalArray}
@@ -2926,7 +2161,8 @@ operation \spadfun{oneDimensionalArray} to a list.
 \xtc{
 Another approach is to first create \spad{a}, a one-dimensional 
 array of 10 \spad{0}'s.
-\spadtype{OneDimensionalArray} has the convenient abbreviation \spadtype{ARRAY1}.
+\spadtype{OneDimensionalArray} has the convenient 
+abbreviation \spadtype{ARRAY1}.
 }{
 \spadpaste{a : ARRAY1 INT := new(10,0)\bound{a}}
 }
@@ -2957,7 +2193,8 @@ Sort the elements in place.
 \spadpaste{sort! a \bound{a6}\free{a5}}
 }
 \xtc{
-Create a new one-dimensional array \spad{b} containing the last 5 elements of \spad{a}.
+Create a new one-dimensional array \spad{b} containing the 
+last 5 elements of \spad{a}.
 }{
 \spadpaste{b := a(6..10)\bound{b}\free{a6}}
 }
@@ -2995,26 +2232,24 @@ page~pageref{OneDimensionalArrayXmpPage}
 \begin{page}{TwoDimensionalArrayXmpPage}{TwoDimensionalArray}
 \beginscroll
 
-The \spadtype{TwoDimensionalArray} domain is used for storing data in a
-\twodim{} data structure indexed by row and by column.
-Such an array is a homogeneous data structure in that all the entries of
-the array must belong to the same Axiom domain (although see
-\downlink{``\ugTypesAnyNoneTitle''}{ugTypesAnyNonePage} in 
-Section \ugTypesAnyNoneNumber\ignore{ugTypesAnyNone}).
-Each array has a fixed number of rows and columns specified by the user
-and arrays are not extensible.
-In Axiom, the indexing of two-dimensional arrays is one-based.
-This means that both the ``first'' row of an array and the ``first''
-column of an array are given the index \spad{1}.
-Thus, the entry in the upper left corner of an array is in position
+The \spadtype{TwoDimensionalArray} domain is used for storing data in
+a \twodim{} data structure indexed by row and by column.  Such an
+array is a homogeneous data structure in that all the entries of the
+array must belong to the same Axiom domain (although see
+\downlink{``\ugTypesAnyNoneTitle''}{ugTypesAnyNonePage} in Section
+\ugTypesAnyNoneNumber\ignore{ugTypesAnyNone}).  Each array has a fixed
+number of rows and columns specified by the user and arrays are not
+extensible.  In Axiom, the indexing of two-dimensional arrays is
+one-based.  This means that both the ``first'' row of an array and the
+``first'' column of an array are given the index \spad{1}.  Thus, the
+entry in the upper left corner of an array is in position
 \spad{(1,1)}.
 
 
-The operation \spadfunFrom{new}{TwoDimensionalArray} creates
-an array with a specified number of rows and columns and fills the components
-of that array with a specified entry.
-The arguments of this operation specify the number of rows, the number
-of columns, and the entry.
+The operation \spadfunFrom{new}{TwoDimensionalArray} creates an array
+with a specified number of rows and columns and fills the components
+of that array with a specified entry.  The arguments of this operation
+specify the number of rows, the number of columns, and the entry.
 \xtc{
 This creates a five-by-four array of integers, all of whose entries are
 zero.
@@ -3158,1030 +2393,14 @@ For information on related topics, see
 %
 
 @
-\section{aspex.ht}
-\subsection{Asp1 Example Code}
-\label{Asp1ExampleCode}
-\index{pages!Asp1ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp1ExampleCode}
-\index{Asp1ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp1ExampleCode}{Asp1 Example Code}
-\begin{verbatim}
-      DOUBLE PRECISION FUNCTION F(X)
-      DOUBLE PRECISION X
-      F=DSIN(X)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp10 Example Code}
-\label{Asp10ExampleCode}
-\index{pages!Asp10ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp10ExampleCode}
-\index{Asp10ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp10ExampleCode}{Asp10 Example Code}
-\begin{verbatim}
-      SUBROUTINE COEFFN(P,Q,DQDL,X,ELAM,JINT)
-      DOUBLE PRECISION ELAM,P,Q,X,DQDL
-      INTEGER JINT
-      P=1.0D0
-      Q=((-1.0D0*X**3)+ELAM*X*X-2.0D0)/(X*X)
-      DQDL=1.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-
-@
-\subsection{Asp12 Example Code}
-\label{Asp12ExampleCode}
-\index{pages!Asp12ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp12ExampleCode}
-\index{Asp12ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp12ExampleCode}{Asp12 Example Code}
-\begin{verbatim}
-      SUBROUTINE MONIT (MAXIT,IFLAG,ELAM,FINFO)
-      DOUBLE PRECISION ELAM,FINFO(15)
-      INTEGER MAXIT,IFLAG
-      IF(MAXIT.EQ.-1)THEN
-        PRINT*,"Output from Monit"
-      ENDIF
-      PRINT*,MAXIT,IFLAG,ELAM,(FINFO(I),I=1,4)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp19 Example Code}
-\label{Asp19ExampleCode}
-\index{pages!Asp19ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp19ExampleCode}
-\index{Asp19ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp19ExampleCode}{Asp19 Example Code}
-\begin{verbatim}
-      SUBROUTINE LSFUN2(M,N,XC,FVECC,FJACC,LJC)
-      DOUBLE PRECISION FVECC(M),FJACC(LJC,N),XC(N)
-      INTEGER M,N,LJC
-      INTEGER I,J
-      DO 25003 I=1,LJC
-        DO 25004 J=1,N
-          FJACC(I,J)=0.0D0
-25004   CONTINUE
-25003 CONTINUE
-      FVECC(1)=((XC(1)-0.14D0)*XC(3)+(15.0D0*XC(1)-2.1D0)*XC(2)+1.0D0)/(
-     &XC(3)+15.0D0*XC(2))
-      FVECC(2)=((XC(1)-0.18D0)*XC(3)+(7.0D0*XC(1)-1.26D0)*XC(2)+1.0D0)/(
-     &XC(3)+7.0D0*XC(2))
-      FVECC(3)=((XC(1)-0.22D0)*XC(3)+(4.333333333333333D0*XC(1)-0.953333
-     &3333333333D0)*XC(2)+1.0D0)/(XC(3)+4.333333333333333D0*XC(2))
-      FVECC(4)=((XC(1)-0.25D0)*XC(3)+(3.0D0*XC(1)-0.75D0)*XC(2)+1.0D0)/(
-     &XC(3)+3.0D0*XC(2))
-      FVECC(5)=((XC(1)-0.29D0)*XC(3)+(2.2D0*XC(1)-0.6379999999999999D0)*
-     &XC(2)+1.0D0)/(XC(3)+2.2D0*XC(2))
-      FVECC(6)=((XC(1)-0.32D0)*XC(3)+(1.666666666666667D0*XC(1)-0.533333
-     &3333333333D0)*XC(2)+1.0D0)/(XC(3)+1.666666666666667D0*XC(2))
-      FVECC(7)=((XC(1)-0.35D0)*XC(3)+(1.285714285714286D0*XC(1)-0.45D0)*
-     &XC(2)+1.0D0)/(XC(3)+1.285714285714286D0*XC(2))
-      FVECC(8)=((XC(1)-0.39D0)*XC(3)+(XC(1)-0.39D0)*XC(2)+1.0D0)/(XC(3)+
-     &XC(2))
-      FVECC(9)=((XC(1)-0.37D0)*XC(3)+(XC(1)-0.37D0)*XC(2)+1.285714285714
-     &286D0)/(XC(3)+XC(2))
-      FVECC(10)=((XC(1)-0.58D0)*XC(3)+(XC(1)-0.58D0)*XC(2)+1.66666666666
-     &6667D0)/(XC(3)+XC(2))
-      FVECC(11)=((XC(1)-0.73D0)*XC(3)+(XC(1)-0.73D0)*XC(2)+2.2D0)/(XC(3)
-     &+XC(2))
-      FVECC(12)=((XC(1)-0.96D0)*XC(3)+(XC(1)-0.96D0)*XC(2)+3.0D0)/(XC(3)
-     &+XC(2))
-      FVECC(13)=((XC(1)-1.34D0)*XC(3)+(XC(1)-1.34D0)*XC(2)+4.33333333333
-     &3333D0)/(XC(3)+XC(2))
-      FVECC(14)=((XC(1)-2.1D0)*XC(3)+(XC(1)-2.1D0)*XC(2)+7.0D0)/(XC(3)+X
-     &C(2))
-      FVECC(15)=((XC(1)-4.39D0)*XC(3)+(XC(1)-4.39D0)*XC(2)+15.0D0)/(XC(3
-     &)+XC(2))
-      FJACC(1,1)=1.0D0
-      FJACC(1,2)=-15.0D0/(XC(3)**2+30.0D0*XC(2)*XC(3)+225.0D0*XC(2)**2)
-      FJACC(1,3)=-1.0D0/(XC(3)**2+30.0D0*XC(2)*XC(3)+225.0D0*XC(2)**2)
-      FJACC(2,1)=1.0D0
-      FJACC(2,2)=-7.0D0/(XC(3)**2+14.0D0*XC(2)*XC(3)+49.0D0*XC(2)**2)
-      FJACC(2,3)=-1.0D0/(XC(3)**2+14.0D0*XC(2)*XC(3)+49.0D0*XC(2)**2)
-      FJACC(3,1)=1.0D0
-      FJACC(3,2)=((-0.1110223024625157D-15*XC(3))-4.333333333333333D0)/(
-     &XC(3)**2+8.666666666666666D0*XC(2)*XC(3)+18.77777777777778D0*XC(2)
-     &**2)
-      FJACC(3,3)=(0.1110223024625157D-15*XC(2)-1.0D0)/(XC(3)**2+8.666666
-     &666666666D0*XC(2)*XC(3)+18.77777777777778D0*XC(2)**2)
-      FJACC(4,1)=1.0D0
-      FJACC(4,2)=-3.0D0/(XC(3)**2+6.0D0*XC(2)*XC(3)+9.0D0*XC(2)**2)
-      FJACC(4,3)=-1.0D0/(XC(3)**2+6.0D0*XC(2)*XC(3)+9.0D0*XC(2)**2)
-      FJACC(5,1)=1.0D0
-      FJACC(5,2)=((-0.1110223024625157D-15*XC(3))-2.2D0)/(XC(3)**2+4.399
-     &999999999999D0*XC(2)*XC(3)+4.839999999999998D0*XC(2)**2)
-      FJACC(5,3)=(0.1110223024625157D-15*XC(2)-1.0D0)/(XC(3)**2+4.399999
-     &999999999D0*XC(2)*XC(3)+4.839999999999998D0*XC(2)**2)
-      FJACC(6,1)=1.0D0
-      FJACC(6,2)=((-0.2220446049250313D-15*XC(3))-1.666666666666667D0)/(
-     &XC(3)**2+3.333333333333333D0*XC(2)*XC(3)+2.777777777777777D0*XC(2)
-     &**2)
-      FJACC(6,3)=(0.2220446049250313D-15*XC(2)-1.0D0)/(XC(3)**2+3.333333
-     &333333333D0*XC(2)*XC(3)+2.777777777777777D0*XC(2)**2)
-      FJACC(7,1)=1.0D0
-      FJACC(7,2)=((-0.5551115123125783D-16*XC(3))-1.285714285714286D0)/(
-     &XC(3)**2+2.571428571428571D0*XC(2)*XC(3)+1.653061224489796D0*XC(2)
-     &**2)
-      FJACC(7,3)=(0.5551115123125783D-16*XC(2)-1.0D0)/(XC(3)**2+2.571428
-     &571428571D0*XC(2)*XC(3)+1.653061224489796D0*XC(2)**2)
-      FJACC(8,1)=1.0D0
-      FJACC(8,2)=-1.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(8,3)=-1.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(9,1)=1.0D0
-      FJACC(9,2)=-1.285714285714286D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)*
-     &*2)
-      FJACC(9,3)=-1.285714285714286D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)*
-     &*2)
-      FJACC(10,1)=1.0D0
-      FJACC(10,2)=-1.666666666666667D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
-     &**2)
-      FJACC(10,3)=-1.666666666666667D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
-     &**2)
-      FJACC(11,1)=1.0D0
-      FJACC(11,2)=-2.2D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(11,3)=-2.2D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(12,1)=1.0D0
-      FJACC(12,2)=-3.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(12,3)=-3.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(13,1)=1.0D0
-      FJACC(13,2)=-4.333333333333333D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
-     &**2)
-      FJACC(13,3)=-4.333333333333333D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
-     &**2)
-      FJACC(14,1)=1.0D0
-      FJACC(14,2)=-7.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(14,3)=-7.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(15,1)=1.0D0
-      FJACC(15,2)=-15.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      FJACC(15,3)=-15.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp20 Example Code}
-\label{Asp20ExampleCode}
-\index{pages!Asp20ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp20ExampleCode}
-\index{Asp20ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp20ExampleCode}{Asp20 Example Code}
-\begin{verbatim}
-      SUBROUTINE QPHESS(N,NROWH,NCOLH,JTHCOL,HESS,X,HX)
-      DOUBLE PRECISION HX(N),X(N),HESS(NROWH,NCOLH)
-      INTEGER JTHCOL,N,NROWH,NCOLH
-      HX(1)=2.0D0*X(1)
-      HX(2)=2.0D0*X(2)
-      HX(3)=2.0D0*X(4)+2.0D0*X(3)
-      HX(4)=2.0D0*X(4)+2.0D0*X(3)
-      HX(5)=2.0D0*X(5)
-      HX(6)=(-2.0D0*X(7))+(-2.0D0*X(6))
-      HX(7)=(-2.0D0*X(7))+(-2.0D0*X(6))
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp24 Example Code}
-\label{Asp24ExampleCode}
-\index{pages!Asp24ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp24ExampleCode}
-\index{Asp24ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp24ExampleCode}{Asp24 Example Code}
-\begin{verbatim}
-      SUBROUTINE FUNCT1(N,XC,FC)
-      DOUBLE PRECISION FC,XC(N)
-      INTEGER N
-      FC=10.0D0*XC(4)**4+(-40.0D0*XC(1)*XC(4)**3)+(60.0D0*XC(1)**2+5
-     &.0D0)*XC(4)**2+((-10.0D0*XC(3))+(-40.0D0*XC(1)**3))*XC(4)+16.0D0*X
-     &C(3)**4+(-32.0D0*XC(2)*XC(3)**3)+(24.0D0*XC(2)**2+5.0D0)*XC(3)**2+
-     &(-8.0D0*XC(2)**3*XC(3))+XC(2)**4+100.0D0*XC(2)**2+20.0D0*XC(1)*XC(
-     &2)+10.0D0*XC(1)**4+XC(1)**2
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp27 Example Code}
-\label{Asp27ExampleCode}
-\index{pages!Asp27ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp27ExampleCode}
-\index{Asp27ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp27ExampleCode}{Asp27 Example Code}
-\begin{verbatim}
-      FUNCTION DOT(IFLAG,N,Z,W,RWORK,LRWORK,IWORK,LIWORK)
-      DOUBLE PRECISION W(N),Z(N),RWORK(LRWORK)
-      INTEGER N,LIWORK,IFLAG,LRWORK,IWORK(LIWORK)
-      DOT=(W(16)+(-0.5D0*W(15)))*Z(16)+((-0.5D0*W(16))+W(15)+(-0.5D0*W(1
-     &4)))*Z(15)+((-0.5D0*W(15))+W(14)+(-0.5D0*W(13)))*Z(14)+((-0.5D0*W(
-     &14))+W(13)+(-0.5D0*W(12)))*Z(13)+((-0.5D0*W(13))+W(12)+(-0.5D0*W(1
-     &1)))*Z(12)+((-0.5D0*W(12))+W(11)+(-0.5D0*W(10)))*Z(11)+((-0.5D0*W(
-     &11))+W(10)+(-0.5D0*W(9)))*Z(10)+((-0.5D0*W(10))+W(9)+(-0.5D0*W(8))
-     &)*Z(9)+((-0.5D0*W(9))+W(8)+(-0.5D0*W(7)))*Z(8)+((-0.5D0*W(8))+W(7)
-     &+(-0.5D0*W(6)))*Z(7)+((-0.5D0*W(7))+W(6)+(-0.5D0*W(5)))*Z(6)+((-0.
-     &5D0*W(6))+W(5)+(-0.5D0*W(4)))*Z(5)+((-0.5D0*W(5))+W(4)+(-0.5D0*W(3
-     &)))*Z(4)+((-0.5D0*W(4))+W(3)+(-0.5D0*W(2)))*Z(3)+((-0.5D0*W(3))+W(
-     &2)+(-0.5D0*W(1)))*Z(2)+((-0.5D0*W(2))+W(1))*Z(1)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp28 Example Code}
-\label{Asp28ExampleCode}
-\index{pages!Asp28ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp28ExampleCode}
-\index{Asp28ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp28ExampleCode}{Asp28 Example Code}
-\begin{verbatim}
-      SUBROUTINE IMAGE(IFLAG,N,Z,W,RWORK,LRWORK,IWORK,LIWORK)
-      DOUBLE PRECISION Z(N),W(N),IWORK(LRWORK),RWORK(LRWORK)
-      INTEGER N,LIWORK,IFLAG,LRWORK
-      W(1)=0.01707454969713436D0*Z(16)+0.001747395874954051D0*Z(15)+0.00
-     &2106973900813502D0*Z(14)+0.002957434991769087D0*Z(13)+(-0.00700554
-     &0882865317D0*Z(12))+(-0.01219194009813166D0*Z(11))+0.0037230647365
-     &3087D0*Z(10)+0.04932374658377151D0*Z(9)+(-0.03586220812223305D0*Z(
-     &8))+(-0.04723268012114625D0*Z(7))+(-0.02434652144032987D0*Z(6))+0.
-     &2264766947290192D0*Z(5)+(-0.1385343580686922D0*Z(4))+(-0.116530050
-     &8238904D0*Z(3))+(-0.2803531651057233D0*Z(2))+1.019463911841327D0*Z
-     &(1)
-      W(2)=0.0227345011107737D0*Z(16)+0.008812321197398072D0*Z(15)+0.010
-     &94012210519586D0*Z(14)+(-0.01764072463999744D0*Z(13))+(-0.01357136
-     &72105995D0*Z(12))+0.00157466157362272D0*Z(11)+0.05258889186338282D
-     &0*Z(10)+(-0.01981532388243379D0*Z(9))+(-0.06095390688679697D0*Z(8)
-     &)+(-0.04153119955569051D0*Z(7))+0.2176561076571465D0*Z(6)+(-0.0532
-     &5555586632358D0*Z(5))+(-0.1688977368984641D0*Z(4))+(-0.32440166056
-     &67343D0*Z(3))+0.9128222941872173D0*Z(2)+(-0.2419652703415429D0*Z(1
-     &))
-      W(3)=0.03371198197190302D0*Z(16)+0.02021603150122265D0*Z(15)+(-0.0
-     &06607305534689702D0*Z(14))+(-0.03032392238968179D0*Z(13))+0.002033
-     &305231024948D0*Z(12)+0.05375944956767728D0*Z(11)+(-0.0163213312502
-     &9967D0*Z(10))+(-0.05483186562035512D0*Z(9))+(-0.04901428822579872D
-     &0*Z(8))+0.2091097927887612D0*Z(7)+(-0.05760560341383113D0*Z(6))+(-
-     &0.1236679206156403D0*Z(5))+(-0.3523683853026259D0*Z(4))+0.88929961
-     &32269974D0*Z(3)+(-0.2995429545781457D0*Z(2))+(-0.02986582812574917
-     &D0*Z(1))
-      W(4)=0.05141563713660119D0*Z(16)+0.005239165960779299D0*Z(15)+(-0.
-     &01623427735779699D0*Z(14))+(-0.01965809746040371D0*Z(13))+0.054688
-     &97337339577D0*Z(12)+(-0.014224695935687D0*Z(11))+(-0.0505181779315
-     &6355D0*Z(10))+(-0.04353074206076491D0*Z(9))+0.2012230497530726D0*Z
-     &(8)+(-0.06630874514535952D0*Z(7))+(-0.1280829963720053D0*Z(6))+(-0
-     &.305169742604165D0*Z(5))+0.8600427128450191D0*Z(4)+(-0.32415033802
-     &68184D0*Z(3))+(-0.09033531980693314D0*Z(2))+0.09089205517109111D0*
-     &Z(1)
-      W(5)=0.04556369767776375D0*Z(16)+(-0.001822737697581869D0*Z(15))+(
-     &-0.002512226501941856D0*Z(14))+0.02947046460707379D0*Z(13)+(-0.014
-     &45079632086177D0*Z(12))+(-0.05034242196614937D0*Z(11))+(-0.0376966
-     &3291725935D0*Z(10))+0.2171103102175198D0*Z(9)+(-0.0824949256021352
-     &4D0*Z(8))+(-0.1473995209288945D0*Z(7))+(-0.315042193418466D0*Z(6))
-     &+0.9591623347824002D0*Z(5)+(-0.3852396953763045D0*Z(4))+(-0.141718
-     &5427288274D0*Z(3))+(-0.03423495461011043D0*Z(2))+0.319820917706851
-     &6D0*Z(1)
-      W(6)=0.04015147277405744D0*Z(16)+0.01328585741341559D0*Z(15)+0.048
-     &26082005465965D0*Z(14)+(-0.04319641116207706D0*Z(13))+(-0.04931323
-     &319055762D0*Z(12))+(-0.03526886317505474D0*Z(11))+0.22295383396730
-     &01D0*Z(10)+(-0.07375317649315155D0*Z(9))+(-0.1589391311991561D0*Z(
-     &8))+(-0.328001910890377D0*Z(7))+0.952576555482747D0*Z(6)+(-0.31583
-     &09975786731D0*Z(5))+(-0.1846882042225383D0*Z(4))+(-0.0703762046700
-     &4427D0*Z(3))+0.2311852964327382D0*Z(2)+0.04254083491825025D0*Z(1)
-      W(7)=0.06069778964023718D0*Z(16)+0.06681263884671322D0*Z(15)+(-0.0
-     &2113506688615768D0*Z(14))+(-0.083996867458326D0*Z(13))+(-0.0329843
-     &8523869648D0*Z(12))+0.2276878326327734D0*Z(11)+(-0.067356038933017
-     &95D0*Z(10))+(-0.1559813965382218D0*Z(9))+(-0.3363262957694705D0*Z(
-     &8))+0.9442791158560948D0*Z(7)+(-0.3199955249404657D0*Z(6))+(-0.136
-     &2463839920727D0*Z(5))+(-0.1006185171570586D0*Z(4))+0.2057504515015
-     &423D0*Z(3)+(-0.02065879269286707D0*Z(2))+0.03160990266745513D0*Z(1
-     &)
-      W(8)=0.126386868896738D0*Z(16)+0.002563370039476418D0*Z(15)+(-0.05
-     &581757739455641D0*Z(14))+(-0.07777893205900685D0*Z(13))+0.23117338
-     &45834199D0*Z(12)+(-0.06031581134427592D0*Z(11))+(-0.14805474755869
-     &52D0*Z(10))+(-0.3364014128402243D0*Z(9))+0.9364014128402244D0*Z(8)
-     &+(-0.3269452524413048D0*Z(7))+(-0.1396841886557241D0*Z(6))+(-0.056
-     &1733845834199D0*Z(5))+0.1777789320590069D0*Z(4)+(-0.04418242260544
-     &359D0*Z(3))+(-0.02756337003947642D0*Z(2))+0.07361313110326199D0*Z(
-     &1)
-      W(9)=0.07361313110326199D0*Z(16)+(-0.02756337003947642D0*Z(15))+(-
-     &0.04418242260544359D0*Z(14))+0.1777789320590069D0*Z(13)+(-0.056173
-     &3845834199D0*Z(12))+(-0.1396841886557241D0*Z(11))+(-0.326945252441
-     &3048D0*Z(10))+0.9364014128402244D0*Z(9)+(-0.3364014128402243D0*Z(8
-     &))+(-0.1480547475586952D0*Z(7))+(-0.06031581134427592D0*Z(6))+0.23
-     &11733845834199D0*Z(5)+(-0.07777893205900685D0*Z(4))+(-0.0558175773
-     &9455641D0*Z(3))+0.002563370039476418D0*Z(2)+0.126386868896738D0*Z(
-     &1)
-      W(10)=0.03160990266745513D0*Z(16)+(-0.02065879269286707D0*Z(15))+0
-     &.2057504515015423D0*Z(14)+(-0.1006185171570586D0*Z(13))+(-0.136246
-     &3839920727D0*Z(12))+(-0.3199955249404657D0*Z(11))+0.94427911585609
-     &48D0*Z(10)+(-0.3363262957694705D0*Z(9))+(-0.1559813965382218D0*Z(8
-     &))+(-0.06735603893301795D0*Z(7))+0.2276878326327734D0*Z(6)+(-0.032
-     &98438523869648D0*Z(5))+(-0.083996867458326D0*Z(4))+(-0.02113506688
-     &615768D0*Z(3))+0.06681263884671322D0*Z(2)+0.06069778964023718D0*Z(
-     &1)
-      W(11)=0.04254083491825025D0*Z(16)+0.2311852964327382D0*Z(15)+(-0.0
-     &7037620467004427D0*Z(14))+(-0.1846882042225383D0*Z(13))+(-0.315830
-     &9975786731D0*Z(12))+0.952576555482747D0*Z(11)+(-0.328001910890377D
-     &0*Z(10))+(-0.1589391311991561D0*Z(9))+(-0.07375317649315155D0*Z(8)
-     &)+0.2229538339673001D0*Z(7)+(-0.03526886317505474D0*Z(6))+(-0.0493
-     &1323319055762D0*Z(5))+(-0.04319641116207706D0*Z(4))+0.048260820054
-     &65965D0*Z(3)+0.01328585741341559D0*Z(2)+0.04015147277405744D0*Z(1)
-      W(12)=0.3198209177068516D0*Z(16)+(-0.03423495461011043D0*Z(15))+(-
-     &0.1417185427288274D0*Z(14))+(-0.3852396953763045D0*Z(13))+0.959162
-     &3347824002D0*Z(12)+(-0.315042193418466D0*Z(11))+(-0.14739952092889
-     &45D0*Z(10))+(-0.08249492560213524D0*Z(9))+0.2171103102175198D0*Z(8
-     &)+(-0.03769663291725935D0*Z(7))+(-0.05034242196614937D0*Z(6))+(-0.
-     &01445079632086177D0*Z(5))+0.02947046460707379D0*Z(4)+(-0.002512226
-     &501941856D0*Z(3))+(-0.001822737697581869D0*Z(2))+0.045563697677763
-     &75D0*Z(1)
-      W(13)=0.09089205517109111D0*Z(16)+(-0.09033531980693314D0*Z(15))+(
-     &-0.3241503380268184D0*Z(14))+0.8600427128450191D0*Z(13)+(-0.305169
-     &742604165D0*Z(12))+(-0.1280829963720053D0*Z(11))+(-0.0663087451453
-     &5952D0*Z(10))+0.2012230497530726D0*Z(9)+(-0.04353074206076491D0*Z(
-     &8))+(-0.05051817793156355D0*Z(7))+(-0.014224695935687D0*Z(6))+0.05
-     &468897337339577D0*Z(5)+(-0.01965809746040371D0*Z(4))+(-0.016234277
-     &35779699D0*Z(3))+0.005239165960779299D0*Z(2)+0.05141563713660119D0
-     &*Z(1)
-      W(14)=(-0.02986582812574917D0*Z(16))+(-0.2995429545781457D0*Z(15))
-     &+0.8892996132269974D0*Z(14)+(-0.3523683853026259D0*Z(13))+(-0.1236
-     &679206156403D0*Z(12))+(-0.05760560341383113D0*Z(11))+0.20910979278
-     &87612D0*Z(10)+(-0.04901428822579872D0*Z(9))+(-0.05483186562035512D
-     &0*Z(8))+(-0.01632133125029967D0*Z(7))+0.05375944956767728D0*Z(6)+0
-     &.002033305231024948D0*Z(5)+(-0.03032392238968179D0*Z(4))+(-0.00660
-     &7305534689702D0*Z(3))+0.02021603150122265D0*Z(2)+0.033711981971903
-     &02D0*Z(1)
-      W(15)=(-0.2419652703415429D0*Z(16))+0.9128222941872173D0*Z(15)+(-0
-     &.3244016605667343D0*Z(14))+(-0.1688977368984641D0*Z(13))+(-0.05325
-     &555586632358D0*Z(12))+0.2176561076571465D0*Z(11)+(-0.0415311995556
-     &9051D0*Z(10))+(-0.06095390688679697D0*Z(9))+(-0.01981532388243379D
-     &0*Z(8))+0.05258889186338282D0*Z(7)+0.00157466157362272D0*Z(6)+(-0.
-     &0135713672105995D0*Z(5))+(-0.01764072463999744D0*Z(4))+0.010940122
-     &10519586D0*Z(3)+0.008812321197398072D0*Z(2)+0.0227345011107737D0*Z
-     &(1)
-      W(16)=1.019463911841327D0*Z(16)+(-0.2803531651057233D0*Z(15))+(-0.
-     &1165300508238904D0*Z(14))+(-0.1385343580686922D0*Z(13))+0.22647669
-     &47290192D0*Z(12)+(-0.02434652144032987D0*Z(11))+(-0.04723268012114
-     &625D0*Z(10))+(-0.03586220812223305D0*Z(9))+0.04932374658377151D0*Z
-     &(8)+0.00372306473653087D0*Z(7)+(-0.01219194009813166D0*Z(6))+(-0.0
-     &07005540882865317D0*Z(5))+0.002957434991769087D0*Z(4)+0.0021069739
-     &00813502D0*Z(3)+0.001747395874954051D0*Z(2)+0.01707454969713436D0*
-     &Z(1)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp29 Example Code}
-\label{Asp29ExampleCode}
-\index{pages!Asp29ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp29ExampleCode}
-\index{Asp29ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp29ExampleCode}{Asp29 Example Code}
-\begin{verbatim}
-      SUBROUTINE MONIT(ISTATE,NEXTIT,NEVALS,NEVECS,K,F,D)
-      DOUBLE PRECISION D(K),F(K)
-      INTEGER K,NEXTIT,NEVALS,NVECS,ISTATE
-      CALL F02FJZ(ISTATE,NEXTIT,NEVALS,NEVECS,K,F,D)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp30 Example Code}
-\label{Asp30ExampleCode}
-\index{pages!Asp30ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp30ExampleCode}
-\index{Asp30ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp30ExampleCode}{Asp30 Example Code}
-\begin{verbatim}
-      SUBROUTINE APROD(MODE,M,N,X,Y,RWORK,LRWORK,IWORK,LIWORK)
-      DOUBLE PRECISION X(N),Y(M),RWORK(LRWORK)
-      INTEGER M,N,LIWORK,IFAIL,LRWORK,IWORK(LIWORK),MODE
-      DOUBLE PRECISION A(5,5)
-      EXTERNAL F06PAF
-      A(1,1)=1.0D0
-      A(1,2)=0.0D0
-      A(1,3)=0.0D0
-      A(1,4)=-1.0D0
-      A(1,5)=0.0D0
-      A(2,1)=0.0D0
-      A(2,2)=1.0D0
-      A(2,3)=0.0D0
-      A(2,4)=0.0D0
-      A(2,5)=-1.0D0
-      A(3,1)=0.0D0
-      A(3,2)=0.0D0
-      A(3,3)=1.0D0
-      A(3,4)=-1.0D0
-      A(3,5)=0.0D0
-      A(4,1)=-1.0D0
-      A(4,2)=0.0D0
-      A(4,3)=-1.0D0
-      A(4,4)=4.0D0
-      A(4,5)=-1.0D0
-      A(5,1)=0.0D0
-      A(5,2)=-1.0D0
-      A(5,3)=0.0D0
-      A(5,4)=-1.0D0
-      A(5,5)=4.0D0
-      IF(MODE.EQ.1)THEN
-        CALL F06PAF('N',M,N,1.0D0,A,M,X,1,1.0D0,Y,1)
-      ELSEIF(MODE.EQ.2)THEN
-        CALL F06PAF('T',M,N,1.0D0,A,M,Y,1,1.0D0,X,1)
-      ENDIF
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp31 Example Code}
-\label{Asp31ExampleCode}
-\index{pages!Asp31ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp31ExampleCode}
-\index{Asp31ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp31ExampleCode}{Asp31 Example Code}
-\begin{verbatim}
-      SUBROUTINE PEDERV(X,Y,PW)
-      DOUBLE PRECISION X,Y(*)
-      DOUBLE PRECISION PW(3,3)
-      PW(1,1)=-0.03999999999999999D0
-      PW(1,2)=10000.0D0*Y(3)
-      PW(1,3)=10000.0D0*Y(2)
-      PW(2,1)=0.03999999999999999D0
-      PW(2,2)=(-10000.0D0*Y(3))+(-60000000.0D0*Y(2))
-      PW(2,3)=-10000.0D0*Y(2)
-      PW(3,1)=0.0D0
-      PW(3,2)=60000000.0D0*Y(2)
-      PW(3,3)=0.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp33 Example Code}
-\label{Asp33ExampleCode}
-\index{pages!Asp33ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp33ExampleCode}
-\index{Asp33ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp33ExampleCode}{Asp33 Example Code}
-\begin{verbatim}
-      SUBROUTINE REPORT(X,V,JINT)
-      DOUBLE PRECISION V(3),X
-      INTEGER JINT
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp34 Example Code}
-\label{Asp34ExampleCode}
-\index{pages!Asp34ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp34ExampleCode}
-\index{Asp34ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp34ExampleCode}{Asp34 Example Code}
-\begin{verbatim}
-      SUBROUTINE MSOLVE(IFLAG,N,X,Y,RWORK,LRWORK,IWORK,LIWORK)
-      DOUBLE PRECISION RWORK(LRWORK),X(N),Y(N)
-      INTEGER I,J,N,LIWORK,IFLAG,LRWORK,IWORK(LIWORK)
-      DOUBLE PRECISION W1(3),W2(3),MS(3,3)
-      IFLAG=-1
-      MS(1,1)=2.0D0
-      MS(1,2)=1.0D0
-      MS(1,3)=0.0D0
-      MS(2,1)=1.0D0
-      MS(2,2)=2.0D0
-      MS(2,3)=1.0D0
-      MS(3,1)=0.0D0
-      MS(3,2)=1.0D0
-      MS(3,3)=2.0D0
-      CALL F04ASF(MS,N,X,N,Y,W1,W2,IFLAG)
-      IFLAG=-IFLAG
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp35 Example Code}
-\label{Asp35ExampleCode}
-\index{pages!Asp35ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp35ExampleCode}
-\index{Asp35ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp35ExampleCode}{Asp35 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCN(N,X,FVEC,FJAC,LDFJAC,IFLAG)
-      DOUBLE PRECISION X(N),FVEC(N),FJAC(LDFJAC,N)
-      INTEGER LDFJAC,N,IFLAG
-      IF(IFLAG.EQ.1)THEN
-        FVEC(1)=(-1.0D0*X(2))+X(1)
-        FVEC(2)=(-1.0D0*X(3))+2.0D0*X(2)
-        FVEC(3)=3.0D0*X(3)
-      ELSEIF(IFLAG.EQ.2)THEN
-        FJAC(1,1)=1.0D0
-        FJAC(1,2)=-1.0D0
-        FJAC(1,3)=0.0D0
-        FJAC(2,1)=0.0D0
-        FJAC(2,2)=2.0D0
-        FJAC(2,3)=-1.0D0
-        FJAC(3,1)=0.0D0
-        FJAC(3,2)=0.0D0
-        FJAC(3,3)=3.0D0
-      ENDIF
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp4 Example Code}
-\label{Asp4ExampleCode}
-\index{pages!Asp4ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp4ExampleCode}
-\index{Asp4ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp4ExampleCode}{Asp4 Example Code}
-\begin{verbatim}
-      DOUBLE PRECISION FUNCTION FUNCTN(NDIM,X)
-      DOUBLE PRECISION X(NDIM)
-      INTEGER NDIM
-      FUNCTN=(4.0D0*X(1)*X(3)**2*DEXP(2.0D0*X(1)*X(3)))/(X(4)**2+(2.0D0*
-     &X(2)+2.0D0)*X(4)+X(2)**2+2.0D0*X(2)+1.0D0)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp41 Example Code}
-\label{Asp41ExampleCode}
-\index{pages!Asp41ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp41ExampleCode}
-\index{Asp41ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp41ExampleCode}{Asp41 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCN(X,EPS,Y,F,N)
-      DOUBLE PRECISION EPS,F(N),X,Y(N)
-      INTEGER N
-      F(1)=Y(2)
-      F(2)=Y(3)
-      F(3)=(-1.0D0*Y(1)*Y(3))+2.0D0*EPS*Y(2)**2+(-2.0D0*EPS)
-      RETURN
-      END
-      SUBROUTINE JACOBF(X,EPS,Y,F,N)
-      DOUBLE PRECISION EPS,F(N,N),X,Y(N)
-      INTEGER N
-      F(1,1)=0.0D0
-      F(1,2)=1.0D0
-      F(1,3)=0.0D0
-      F(2,1)=0.0D0
-      F(2,2)=0.0D0
-      F(2,3)=1.0D0
-      F(3,1)=-1.0D0*Y(3)
-      F(3,2)=4.0D0*EPS*Y(2)
-      F(3,3)=-1.0D0*Y(1)
-      RETURN
-      END
-      SUBROUTINE JACEPS(X,EPS,Y,F,N)
-      DOUBLE PRECISION EPS,F(N),X,Y(N)
-      INTEGER N
-      F(1)=0.0D0
-      F(2)=0.0D0
-      F(3)=2.0D0*Y(2)**2-2.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp42 Example Code}
-\label{Asp42ExampleCode}
-\index{pages!Asp42ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp42ExampleCode}
-\index{Asp42ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp42ExampleCode}{Asp42 Example Code}
-\begin{verbatim}
-      SUBROUTINE G(EPS,YA,YB,BC,N)
-      DOUBLE PRECISION EPS,YA(N),YB(N),BC(N)
-      INTEGER N
-      BC(1)=YA(1)
-      BC(2)=YA(2)
-      BC(3)=YB(2)-1.0D0
-      RETURN
-      END
-      SUBROUTINE JACOBG(EPS,YA,YB,AJ,BJ,N)
-      DOUBLE PRECISION EPS,YA(N),AJ(N,N),BJ(N,N),YB(N)
-      INTEGER N
-      AJ(1,1)=1.0D0
-      AJ(1,2)=0.0D0
-      AJ(1,3)=0.0D0
-      AJ(2,1)=0.0D0
-      AJ(2,2)=1.0D0
-      AJ(2,3)=0.0D0
-      AJ(3,1)=0.0D0
-      AJ(3,2)=0.0D0
-      AJ(3,3)=0.0D0
-      BJ(1,1)=0.0D0
-      BJ(1,2)=0.0D0
-      BJ(1,3)=0.0D0
-      BJ(2,1)=0.0D0
-      BJ(2,2)=0.0D0
-      BJ(2,3)=0.0D0
-      BJ(3,1)=0.0D0
-      BJ(3,2)=1.0D0
-      BJ(3,3)=0.0D0
-      RETURN
-      END
-      SUBROUTINE JACGEP(EPS,YA,YB,BCEP,N)
-      DOUBLE PRECISION EPS,YA(N),YB(N),BCEP(N)
-      INTEGER N
-      BCEP(1)=0.0D0
-      BCEP(2)=0.0D0
-      BCEP(3)=0.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp49 Example Code}
-\label{Asp49ExampleCode}
-\index{pages!Asp49ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp49ExampleCode}
-\index{Asp49ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp49ExampleCode}{Asp49 Example Code}
-\begin{verbatim}
-      SUBROUTINE OBJFUN(MODE,N,X,OBJF,OBJGRD,NSTATE,IUSER,USER)
-      DOUBLE PRECISION X(N),OBJF,OBJGRD(N),USER(*)
-      INTEGER N,IUSER(*),MODE,NSTATE
-      OBJF=X(4)*X(9)+((-1.0D0*X(5))+X(3))*X(8)+((-1.0D0*X(3))+X(1))*X(7)
-     &+(-1.0D0*X(2)*X(6))
-      OBJGRD(1)=X(7)
-      OBJGRD(2)=-1.0D0*X(6)
-      OBJGRD(3)=X(8)+(-1.0D0*X(7))
-      OBJGRD(4)=X(9)
-      OBJGRD(5)=-1.0D0*X(8)
-      OBJGRD(6)=-1.0D0*X(2)
-      OBJGRD(7)=(-1.0D0*X(3))+X(1)
-      OBJGRD(8)=(-1.0D0*X(5))+X(3)
-      OBJGRD(9)=X(4)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp50 Example Code}
-\label{Asp50ExampleCode}
-\index{pages!Asp50ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp50ExampleCode}
-\index{Asp50ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp50ExampleCode}{Asp50 Example Code}
-\begin{verbatim}
-      SUBROUTINE LSFUN1(M,N,XC,FVECC)
-      DOUBLE PRECISION FVECC(M),XC(N)
-      INTEGER I,M,N
-      FVECC(1)=((XC(1)-2.4D0)*XC(3)+(15.0D0*XC(1)-36.0D0)*XC(2)+1.0D0)/(
-     &XC(3)+15.0D0*XC(2))
-      FVECC(2)=((XC(1)-2.8D0)*XC(3)+(7.0D0*XC(1)-19.6D0)*XC(2)+1.0D0)/(X
-     &C(3)+7.0D0*XC(2))
-      FVECC(3)=((XC(1)-3.2D0)*XC(3)+(4.333333333333333D0*XC(1)-13.866666
-     &66666667D0)*XC(2)+1.0D0)/(XC(3)+4.333333333333333D0*XC(2))
-      FVECC(4)=((XC(1)-3.5D0)*XC(3)+(3.0D0*XC(1)-10.5D0)*XC(2)+1.0D0)/(X
-     &C(3)+3.0D0*XC(2))
-      FVECC(5)=((XC(1)-3.9D0)*XC(3)+(2.2D0*XC(1)-8.579999999999998D0)*XC
-     &(2)+1.0D0)/(XC(3)+2.2D0*XC(2))
-      FVECC(6)=((XC(1)-4.199999999999999D0)*XC(3)+(1.666666666666667D0*X
-     &C(1)-7.0D0)*XC(2)+1.0D0)/(XC(3)+1.666666666666667D0*XC(2))
-      FVECC(7)=((XC(1)-4.5D0)*XC(3)+(1.285714285714286D0*XC(1)-5.7857142
-     &85714286D0)*XC(2)+1.0D0)/(XC(3)+1.285714285714286D0*XC(2))
-      FVECC(8)=((XC(1)-4.899999999999999D0)*XC(3)+(XC(1)-4.8999999999999
-     &99D0)*XC(2)+1.0D0)/(XC(3)+XC(2))
-      FVECC(9)=((XC(1)-4.699999999999999D0)*XC(3)+(XC(1)-4.6999999999999
-     &99D0)*XC(2)+1.285714285714286D0)/(XC(3)+XC(2))
-      FVECC(10)=((XC(1)-6.8D0)*XC(3)+(XC(1)-6.8D0)*XC(2)+1.6666666666666
-     &67D0)/(XC(3)+XC(2))
-      FVECC(11)=((XC(1)-8.299999999999999D0)*XC(3)+(XC(1)-8.299999999999
-     &999D0)*XC(2)+2.2D0)/(XC(3)+XC(2))
-      FVECC(12)=((XC(1)-10.6D0)*XC(3)+(XC(1)-10.6D0)*XC(2)+3.0D0)/(XC(3)
-     &+XC(2))
-      FVECC(13)=((XC(1)-1.34D0)*XC(3)+(XC(1)-1.34D0)*XC(2)+4.33333333333
-     &3333D0)/(XC(3)+XC(2))
-      FVECC(14)=((XC(1)-2.1D0)*XC(3)+(XC(1)-2.1D0)*XC(2)+7.0D0)/(XC(3)+X
-     &C(2))
-      FVECC(15)=((XC(1)-4.39D0)*XC(3)+(XC(1)-4.39D0)*XC(2)+15.0D0)/(XC(3
-     &)+XC(2))
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp55 Example Code}
-\label{Asp55ExampleCode}
-\index{pages!Asp55ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp55ExampleCode}
-\index{Asp55ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp55ExampleCode}{Asp55 Example Code}
-\begin{verbatim}
-      SUBROUTINE CONFUN(MODE,NCNLN,N,NROWJ,NEEDC,X,C,CJAC,NSTATE,IUSER
-     &,USER)
-      DOUBLE PRECISION C(NCNLN),X(N),CJAC(NROWJ,N),USER(*)
-      INTEGER N,IUSER(*),NEEDC(NCNLN),NROWJ,MODE,NCNLN,NSTATE
-      IF(NEEDC(1).GT.0)THEN
-        C(1)=X(6)**2+X(1)**2
-        CJAC(1,1)=2.0D0*X(1)
-        CJAC(1,2)=0.0D0
-        CJAC(1,3)=0.0D0
-        CJAC(1,4)=0.0D0
-        CJAC(1,5)=0.0D0
-        CJAC(1,6)=2.0D0*X(6)
-      ENDIF
-      IF(NEEDC(2).GT.0)THEN
-        C(2)=X(2)**2+(-2.0D0*X(1)*X(2))+X(1)**2
-        CJAC(2,1)=(-2.0D0*X(2))+2.0D0*X(1)
-        CJAC(2,2)=2.0D0*X(2)+(-2.0D0*X(1))
-        CJAC(2,3)=0.0D0
-        CJAC(2,4)=0.0D0
-        CJAC(2,5)=0.0D0
-        CJAC(2,6)=0.0D0
-      ENDIF
-      IF(NEEDC(3).GT.0)THEN
-        C(3)=X(3)**2+(-2.0D0*X(1)*X(3))+X(2)**2+X(1)**2
-        CJAC(3,1)=(-2.0D0*X(3))+2.0D0*X(1)
-        CJAC(3,2)=2.0D0*X(2)
-        CJAC(3,3)=2.0D0*X(3)+(-2.0D0*X(1))
-        CJAC(3,4)=0.0D0
-        CJAC(3,5)=0.0D0
-        CJAC(3,6)=0.0D0
-      ENDIF
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp6 Example Code}
-\label{Asp6ExampleCode}
-\index{pages!Asp6ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp6ExampleCode}
-\index{Asp6ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp6ExampleCode}{Asp6 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCN(N,X,FVEC,IFLAG)
-      DOUBLE PRECISION X(N),FVEC(N)
-      INTEGER N,IFLAG
-      FVEC(1)=(-2.0D0*X(2))+(-2.0D0*X(1)**2)+3.0D0*X(1)+1.0D0
-      FVEC(2)=(-2.0D0*X(3))+(-2.0D0*X(2)**2)+3.0D0*X(2)+(-1.0D0*X(1))+1.
-     &0D0
-      FVEC(3)=(-2.0D0*X(4))+(-2.0D0*X(3)**2)+3.0D0*X(3)+(-1.0D0*X(2))+1.
-     &0D0
-      FVEC(4)=(-2.0D0*X(5))+(-2.0D0*X(4)**2)+3.0D0*X(4)+(-1.0D0*X(3))+1.
-     &0D0
-      FVEC(5)=(-2.0D0*X(6))+(-2.0D0*X(5)**2)+3.0D0*X(5)+(-1.0D0*X(4))+1.
-     &0D0
-      FVEC(6)=(-2.0D0*X(7))+(-2.0D0*X(6)**2)+3.0D0*X(6)+(-1.0D0*X(5))+1.
-     &0D0
-      FVEC(7)=(-2.0D0*X(8))+(-2.0D0*X(7)**2)+3.0D0*X(7)+(-1.0D0*X(6))+1.
-     &0D0
-      FVEC(8)=(-2.0D0*X(9))+(-2.0D0*X(8)**2)+3.0D0*X(8)+(-1.0D0*X(7))+1.
-     &0D0
-      FVEC(9)=(-2.0D0*X(9)**2)+3.0D0*X(9)+(-1.0D0*X(8))+1.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp7 Example Code}
-\label{Asp7ExampleCode}
-\index{pages!Asp7ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp7ExampleCode}
-\index{Asp7ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp7ExampleCode}{Asp7 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCN(X,Z,F)
-      DOUBLE PRECISION F(*),X,Z(*)
-      F(1)=DTAN(Z(3))
-      F(2)=((-0.03199999999999999D0*DCOS(Z(3))*DTAN(Z(3)))+(-0.02D0*Z(2)
-     &**2))/(Z(2)*DCOS(Z(3)))
-      F(3)=-0.03199999999999999D0/(X*Z(2)**2)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp73 Example Code}
-\label{Asp73ExampleCode}
-\index{pages!Asp73ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp73ExampleCode}
-\index{Asp73ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp73ExampleCode}{Asp73 Example Code}
-\begin{verbatim}
-      SUBROUTINE PDEF(X,Y,ALPHA,BETA,GAMMA,DELTA,EPSOLN,PHI,PSI)
-      DOUBLE PRECISION ALPHA,EPSOLN,PHI,X,Y,BETA,DELTA,GAMMA,PSI
-      ALPHA=DSIN(X)
-      BETA=Y
-      GAMMA=X*Y
-      DELTA=DCOS(X)*DSIN(Y)
-      EPSOLN=Y+X
-      PHI=X
-      PSI=Y
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp74 Example Code}
-\label{Asp74ExampleCode}
-\index{pages!Asp74ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp74ExampleCode}
-\index{Asp74ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp74ExampleCode}{Asp74 Example Code}
-\begin{verbatim}
-      SUBROUTINE BNDY(X,Y,A,B,C,IBND)
-      DOUBLE PRECISION A,B,C,X,Y
-      INTEGER IBND
-      IF(IBND.EQ.0)THEN
-        A=0.0D0
-        B=1.0D0
-        C=-1.0D0*DSIN(X)
-      ELSEIF(IBND.EQ.1)THEN
-        A=1.0D0
-        B=0.0D0
-        C=DSIN(X)*DSIN(Y)
-      ELSEIF(IBND.EQ.2)THEN
-        A=1.0D0
-        B=0.0D0
-        C=DSIN(X)*DSIN(Y)
-      ELSEIF(IBND.EQ.3)THEN
-        A=0.0D0
-        B=1.0D0
-        C=-1.0D0*DSIN(Y)
-      ENDIF
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp77 Example Code}
-\label{Asp77ExampleCode}
-\index{pages!Asp77ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp77ExampleCode}
-\index{Asp77ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp77ExampleCode}{Asp77 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCNF(X,F)
-      DOUBLE PRECISION X
-      DOUBLE PRECISION F(2,2)
-      F(1,1)=0.0D0
-      F(1,2)=1.0D0
-      F(2,1)=0.0D0
-      F(2,2)=-10.0D0
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp78 Example Code}
-\label{Asp78ExampleCode}
-\index{pages!Asp78ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp78ExampleCode}
-\index{Asp78ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp78ExampleCode}{Asp78 Example Code}
-\begin{verbatim}
-      SUBROUTINE FCNG(X,G)
-      DOUBLE PRECISION G(*),X
-      G(1)=0.0D0
-      G(2)=0.0D0
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp8 Example Code}
-\label{Asp8ExampleCode}
-\index{pages!Asp8ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp8ExampleCode}
-\index{Asp8ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp8ExampleCode}{Asp8 Example Code}
-\begin{verbatim}
-      SUBROUTINE OUTPUT(XSOL,Y,COUNT,M,N,RESULT,FORWRD)
-      DOUBLE PRECISION Y(N),RESULT(M,N),XSOL
-      INTEGER M,N,COUNT
-      LOGICAL FORWRD
-      DOUBLE PRECISION X02ALF,POINTS(8)
-      EXTERNAL X02ALF
-      INTEGER I
-      POINTS(1)=1.0D0
-      POINTS(2)=2.0D0
-      POINTS(3)=3.0D0
-      POINTS(4)=4.0D0
-      POINTS(5)=5.0D0
-      POINTS(6)=6.0D0
-      POINTS(7)=7.0D0
-      POINTS(8)=8.0D0
-      COUNT=COUNT+1
-      DO 25001 I=1,N
-        RESULT(COUNT,I)=Y(I)
-25001 CONTINUE
-      IF(COUNT.EQ.M)THEN
-        IF(FORWRD)THEN
-          XSOL=X02ALF()
-        ELSE
-          XSOL=-X02ALF()
-        ENDIF
-      ELSE
-        XSOL=POINTS(COUNT)
-      ENDIF
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp80 Example Code}
-\label{Asp80ExampleCode}
-\index{pages!Asp80ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp80ExampleCode}
-\index{Asp80ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp80ExampleCode}{Asp80 Example Code}
-\begin{verbatim}
-      SUBROUTINE BDYVAL(XL,XR,ELAM,YL,YR)
-      DOUBLE PRECISION ELAM,XL,YL(3),XR,YR(3)
-      YL(1)=XL
-      YL(2)=2.0D0
-      YR(1)=1.0D0
-      YR(2)=-1.0D0*DSQRT(XR+(-1.0D0*ELAM))
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
-\subsection{Asp9 Example Code}
-\label{Asp9ExampleCode}
-\index{pages!Asp9ExampleCode!aspex.ht}
-\index{aspex.ht!pages!Asp9ExampleCode}
-\index{Asp9ExampleCode!aspex.ht!pages}
-<<aspex.ht>>=
-\begin{page}{Asp9ExampleCode}{Asp9 Example Code}
-\begin{verbatim}
-      DOUBLE PRECISION FUNCTION G(X,Y)
-      DOUBLE PRECISION X,Y(*)
-      G=X+Y(1)
-      RETURN
-      END
-\end{verbatim}
-\end{page}
-
-@
 \section{basic.ht}
 \subsection{Basic Commands}
 \label{BasicCommand}
 \includegraphics[scale=.5]{ps/v71basiccommand.eps}
 \index{images!basiccommand}
 
+Called from ``Root Page'' (RootPage) \ref{RootPage} on page~\pageref{RootPage}
+
 See Calculus \ref{Calculus} on page~\pageref{Calculus}.
 
 The other links on the page call lisp code. 
@@ -4222,6 +2441,11 @@ The other links on the page call lisp code.
 @
 \subsection{Calculus}
 \label{Calculus}
+\includegraphics[scale=.5]{ps/v71calculus.eps}
+\index{images!calculus}
+
+Called from ``Basic Commands'' \ref{BasicCommand} on 
+page~\pageref{BasicCommand}
 \index{pages!Calculus!basic.ht}
 \index{basic.ht!pages!Calculus}
 \index{Calculus!basic.ht!pages}
@@ -4243,7 +2467,8 @@ The other links on the page call lisp code.
 What would you like to do?
 \beginmenu
 \menulispdownlink{Differentiate}{(|bcDifferentiate|)}\space{}
-\menulispdownlink{Do an Indefinite Integral}{(|bcIndefiniteIntegrate|)}\space{}
+\menulispdownlink{Do an Indefinite Integral}
+{(|bcIndefiniteIntegrate|)}\space{}
 \menulispdownlink{Do a Definite Integral}{(|bcDefiniteIntegrate|)}\space{}
 \menulispdownlink{Find a limit}{(|bcLimit|)}\space{}
 \menulispdownlink{Do a summation}{(|bcSum|)}\space{}
@@ -4280,29 +2505,24 @@ the \spadfun{left} and \spadfun{right}
 branch of every interior node is identical in shape.
 
 Balanced binary trees are useful in algebraic computation for
-so-called ``divide-and-conquer'' algorithms.
-Conceptually, the data for a problem is initially placed at the
-root of the tree.
-The original data is then split into two subproblems, one for each
-subtree.
-And so on.
-Eventually, the problem is solved at the leaves of the tree.
-A solution to the original problem is obtained by some mechanism
-that can reassemble the pieces.
-In fact, an implementation of the Chinese Remainder Algorithm
-using balanced binary trees was first proposed by David Y. Y.
-Yun at the IBM T. J.
-Watson Research Center in Yorktown Heights, New York, in 1978.
-It served as the prototype for polymorphic algorithms in
-Axiom.
+so-called ``divide-and-conquer'' algorithms.  Conceptually, the data
+for a problem is initially placed at the root of the tree.  The
+original data is then split into two subproblems, one for each
+subtree.  And so on.  Eventually, the problem is solved at the leaves
+of the tree.  A solution to the original problem is obtained by some
+mechanism that can reassemble the pieces.  In fact, an implementation
+of the Chinese Remainder Algorithm using balanced binary trees was
+first proposed by David Y. Y.  Yun at the IBM T. J.  Watson Research
+Center in Yorktown Heights, New York, in 1978.  It served as the
+prototype for polymorphic algorithms in Axiom.
 
 In what follows, rather than perform a series of computations with
 a single expression, the expression is reduced modulo a number of
 integer primes, a computation is done with modular arithmetic for
 each prime, and the Chinese Remainder Algorithm is used to obtain
 the answer to the original problem.
-We illustrate this principle with the computation of \texht{$12^2
-= 144$}{12 ** 2 = 144}.
+We illustrate this principle with the computation of 
+\texht{$12^2 = 144$}{12 ** 2 = 144}.
 
 \xtc{
 A list of moduli.
@@ -4382,10 +2602,10 @@ answer for \texht{$12^2$}{12**2}.
 \subsection{BinaryExpansion}
 \label{BinaryExpansionXmpPage}
 \begin{itemize}
-\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
-page~pageref{DecimalExpansionXmpPage}
-\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
-page~pageref{RadixExpansionXmpPage}
+\item DecimalExpansionXmpPage\\
+\ref{DecimalExpansionXmpPage} on page~pageref{DecimalExpansionXmpPage}
+\item RadixExpansionXmpPage\\ 
+\ref{RadixExpansionXmpPage} on page~pageref{RadixExpansionXmpPage}
 \end{itemize}
 \index{pages!BinaryExpansionXmpPage!binary.ht}
 \index{binary.ht!pages!BinaryExpansionXmpPage}
@@ -4398,8 +2618,10 @@ All rational numbers have repeating binary expansions.
 Operations to access the individual bits of a binary expansion can
 be obtained by converting the value to \spadtype{RadixExpansion(2)}.
 More examples of expansions are available in
-\downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}\ignore{DecimalExpansion},
-\downlink{`HexadecimalExpansion'}{HexadecimalExpansionXmpPage}\ignore{HexadecimalExpansion}, and
+\downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}
+\ignore{DecimalExpansion},
+\downlink{`HexadecimalExpansion'}{HexadecimalExpansionXmpPage}
+\ignore{HexadecimalExpansion}, and
 \downlink{`RadixExpansion'}{RadixExpansionXmpPage}\ignore{RadixExpansion}.
  
 \xtc{
@@ -4450,40 +2672,6 @@ These numbers are bona fide algebraic objects.
 <<bmcat.ht>>=
 \begin{page}{BitMaps}{Bit Map Catalog}
 \beginscroll
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/1x1}}   1x1
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/2x2}}   2x2
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/black}}   black
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/boxes}}   boxes
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/cntr_ptr}}   cntr_ptr
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/cntr_ptrmsk}}   cntr_ptrmsk
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/cross_weave}}   cross_weave
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/dimple1}}   dimple1
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/dimple3}}   dimple3
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/dot}}   dot
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/flipped_gray}}   flipped_gray
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/gray}}   gray
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/gray1}}   gray1
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/gray3}}   gray3
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/icon}}   icon
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/left_ptr}}   left_ptr
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/left_ptrmsk}}   left_ptrmsk
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/light_gray}}   light_gray
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/opendot}}   opendot
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/opendotMask}}   opendotMask
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/right_ptr}}   right_ptr
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/right_ptrmsk}}   right_ptrmsk
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/root_weave}}   root_weave
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/scales}}   scales
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/sipb}}   sipb
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/star}}   star
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/starMask}}   starMask
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/stipple}}   stipple
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/target}}   target
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/tie_fighter}}   tie_fighter
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/wide_weave}}   wide_weave
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/wierd_size}}   wierd_size
-%\space{} {\inputbitmap{/usr/include/X11/bitmaps/wingdogs}}   wingdogs
-%\horizontalline
 \space{} {\inputbitmap{\htbmdir{}/xfbox.bitmap}}      xfbox    \space{4}
 \space{} {\inputbitmap{\htbmdir{}/xfcirc.bitmap}}     xfcirc   \space{4}
 \space{} {\inputbitmap{\htbmdir{}/xnobox.bitmap}}     Xnobox   \space{2}
@@ -4564,8 +2752,10 @@ These numbers are bona fide algebraic objects.
 A basic operator is an object that can be symbolically
 applied to a list of arguments from a set, the result being
 a kernel over that set or an expression.
-In addition to this section, please see \downlink{`Expression'}{ExpressionXmpPage}\ignore{Expression}
-and \downlink{`Kernel'}{KernelXmpPage}\ignore{Kernel} for additional information and examples.
+In addition to this section, please see 
+\downlink{`Expression'}{ExpressionXmpPage}\ignore{Expression}
+and \downlink{`Kernel'}{KernelXmpPage}\ignore{Kernel} 
+for additional information and examples.
 
 You create an object of type \axiomType{BasicOperator} by using the
 \axiomFunFrom{operator}{BasicOperator} operation.
@@ -4596,7 +2786,8 @@ To solve the above equation, enter this.
 }{
 \spadpaste{solve(deq, y, x) \free{e1}\free{y}}
 }
-See \downlink{``\ugProblemDEQTitle''}{ugProblemDEQPage} in Section \ugProblemDEQNumber\ignore{ugProblemDEQ}
+See \downlink{``\ugProblemDEQTitle''}{ugProblemDEQPage} 
+in Section \ugProblemDEQNumber\ignore{ugProblemDEQ}
 for this kind of use of \axiomType{BasicOperator}.
 
 Use the single argument form of
@@ -4669,7 +2860,8 @@ because the property values are stored as values of type
 \xtc{
 Attach a property by using \axiomFunFrom{setProperty}{BasicOperator}.
 }{
-\spadpaste{setProperty(y, "use", "unknown function" :: None ) \free{y}\bound{spy}}
+\spadpaste{setProperty(y, "use", "unknown function" :: None ) 
+\free{y}\bound{spy}}
 }
 \xtc{
 }{
@@ -4709,12 +2901,12 @@ remove a property.
 <<bstree.ht>>=
 \begin{page}{BinarySearchTreeXmpPage}{BinarySearchTree}
 \beginscroll
+
 \spadtype{BinarySearchTree(R)} is the domain of binary trees with
-elements of type \spad{R}, ordered across the nodes of the tree.
-A non-empty binary search tree has a value
-of type \spad{R}, and \spadfun{right} and \spadfun{left}
-binary search subtrees.
-If a subtree is empty, it is displayed as a period (``.'').
+elements of type \spad{R}, ordered across the nodes of the tree.  A
+non-empty binary search tree has a value of type \spad{R}, and
+\spadfun{right} and \spadfun{left} binary search subtrees.  If a
+subtree is empty, it is displayed as a period (``.'').
 
 \xtc{
 Define a list of values to be placed across the tree.
@@ -4786,7 +2978,8 @@ Function \userfun{buildFromRoot} builds
 a binary search tree from a list of elements \spad{ls}
 and the empty tree \spad{emptybst}.
 }{
-\spadpaste{buildFromRoot ls == reduce(insertRoot,ls,emptybst)\bound{x2}\free{x1 e}}
+\spadpaste{buildFromRoot ls == reduce(insertRoot,ls,emptybst)
+\bound{x2}\free{x1 e}}
 }
 \xtc{
 Apply this to the reverse of the list \spad{lv}.
@@ -4885,10 +3078,14 @@ Arithmetic operations are defined on cardinal numbers as follows:
 If \spad{x = \#X}  and  \spad{y = \#Y} then
 
 \indent{0}
-\spad{x+y  = \#(X+Y)} \tab{20} cardinality of the disjoint union \newline
-\spad{x-y  = \#(X-Y)} \tab{20} cardinality of the relative complement \newline
-\spad{x*y  = \#(X*Y)} \tab{20} cardinality of the Cartesian product \newline
-\spad{x**y = \#(X**Y)}\tab{20} cardinality of the set of maps from \spad{Y} to \spad{X} \newline
+\spad{x+y  = \#(X+Y)} 
+\tab{20} cardinality of the disjoint union \newline
+\spad{x-y  = \#(X-Y)} 
+\tab{20} cardinality of the relative complement \newline
+\spad{x*y  = \#(X*Y)} 
+\tab{20} cardinality of the Cartesian product \newline
+\spad{x**y = \#(X**Y)}
+\tab{20} cardinality of the set of maps from \spad{Y} to \spad{X} \newline
 
 \xtc{
 Here are some arithmetic examples.
@@ -4897,18 +3094,21 @@ Here are some arithmetic examples.
 }
 \xtc{
 }{
-\spadpaste{[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1] \free{c0,c1,c2,A0,A1}}
+\spadpaste{[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1] 
+\free{c0,c1,c2,A0,A1}}
 }
 \xtc{
 }{
-\spadpaste{[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2] \free{c0,c1,c2,A1}}
+\spadpaste{[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2] 
+\free{c0,c1,c2,A1}}
 }
 \xtc{
 Subtraction is a partial operation: it is not defined
 when subtracting a larger cardinal from a smaller one, nor
 when subtracting two equal infinite cardinals.
 }{
-\spadpaste{[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1] \free{c1,c2,c3,A0,A1}}
+\spadpaste{[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1] 
+\free{c1,c2,c3,A0,A1}}
 }
 The generalized continuum hypothesis asserts that
 \begin{verbatim}
@@ -4927,7 +3127,8 @@ whether the hypothesis is to be assumed.
 When the generalized continuum hypothesis
 is assumed, exponentiation to a transfinite power is allowed.
 }{
-\spadpaste{[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1] \free{c0,c1,c2,A0,A1,GCH}}
+\spadpaste{[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1] 
+\free{c0,c1,c2,A0,A1,GCH}}
 }
 
 Three commonly encountered cardinal numbers are
@@ -5398,7 +3599,9 @@ defined and manipulated efficiently.
 Character classes can be created by giving either a string or a list
 of characters.
 }{
-\spadpaste{cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char "y"] \bound{cl1}}
+\spadpaste{cl1 := 
+charClass [char "a", char "e", char "i", char "o", char "u", char "y"] 
+\bound{cl1}}
 }
 \xtc{
 }{
@@ -5771,7 +3974,8 @@ We use Hamilton's notation for \spad{i},\spad{j},\spad{k}.
 \spadpaste{x * y \free{x y}}
 }
 \xtc{
-See \downlink{`Quaternion'}{QuaternionXmpPage}\ignore{Quaternion} for examples of Axiom's constructor
+See \downlink{`Quaternion'}{QuaternionXmpPage}
+\ignore{Quaternion} for examples of Axiom's constructor
 implementing quaternions.
 }{
 \spadpaste{y * x \free{x y}}
@@ -5845,7 +4049,8 @@ On an \spad{n} space, a grade \spad{p} form has a dual \spad{n-p} form.
 In particular, in three space the dual of a grade two element identifies
 \spad{e1*e2->e3, e2*e3->e1, e3*e1->e2}.
 }{
-\spadpaste{dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k \free{i j k}\bound{dual2}}
+\spadpaste{dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * 
+j + coefficient(a,[1,2]) * k \free{i j k}\bound{dual2}}
 }
 \xtc{
 The vector cross product is then given by this.
@@ -5913,11 +4118,15 @@ Verify this identity for particular values of \spad{m,n,r,s}.
 }
 \xtc{
 }{
-\spadpaste{lhs := reduce(+, [reduce(+, [ g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) for l in 1..4]) for t in 1..4]) \bound{lhs}\free{g gam m n r s}}
+\spadpaste{lhs := 
+reduce(+, [reduce(+, 
+[ g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) for l in 1..4]) 
+for t in 1..4]) \bound{lhs}\free{g gam m n r s}}
 }
 \xtc{
 }{
-\spadpaste{rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s) \bound{rhs}\free{lhs g gam m n r s}}
+\spadpaste{rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)
+\bound{rhs}\free{lhs g gam m n r s}}
 }
 \endscroll
 \autobuttons
@@ -5983,7 +4192,8 @@ If \spad{R} is a field, you can also divide the complex objects.
 \spadpaste{a / b \free{a b}\bound{adb}}
 }
 \xtc{
-Use a conversion (\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} in Section \ugTypesConvertNumber\ignore{ugTypesConvert}) to view the last
+Use a conversion (\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert}) to view the last
 object as a fraction of complex integers.
 }{
 \spadpaste{\% :: Fraction Complex Integer \free{adb}}
@@ -6766,7 +4976,7 @@ The smallest is
 DO NOT EDIT! Created by ex2ht.
 \begin{itemize}
 \item Menuexdiff \ref{Menuexdiff} on page~\pageref{Menuexdiff}
-\item menuexint \ref{menuexint} on page~\pageref{menuexint}
+\item Menuexint \ref{Menuexint} on page~\pageref{Menuexint}
 \item Menuexlap \ref{Menuexlap} on page~\pageref{Menuexlap}
 \item Menuexlimit \ref{Menuexlimit} on page~\pageref{Menuexlimit}
 \item Menuexmatrix \ref{Menuexmatrix} on page~\pageref{Menuexmatrix}
@@ -7152,8 +5362,8 @@ page~\pageref{ExSumGeneralFunction}
 page~pageref{BinaryExpansionXmpPage}
 \item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
 page~pageref{HexadecimalExpansionXmpPage}
-\item RadicExpansionPage \ref{RadicExpansionPage} on
-page~pageref{RadicExpansionPage}
+\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
+page~pageref{RadixExpansionXmpPage}
 \end{itemize}
 \index{pages!DecimalExpansionXmpPage!decimal.ht}
 \index{decimal.ht!pages!DecimalExpansionXmpPage}
@@ -7555,8 +5765,8 @@ facilities, see
 \begin{itemize}
 \item ugIntroVariablesPage \ref{ugIntroVariablesPage} on
 page~pageref{ugIntroVariablesPage}
-\item utTypesConvertPage \ref{utTypesConvertPage} on
-page~pageref{utTypesConvertPage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~pageref{ugTypesConvertPage}
 \item PolynomialXmpPage \ref{PolynomialXmpPage} on
 page~pageref{PolynomialXmpPage}
 \item UnivariatePolynomialXmpPage \ref{UnivariatePolynomialXmpPage} on
@@ -9061,11 +7271,11 @@ Here is the {\em twisted cubic curve}:
 
 @
 \section{expose.ht}
-\subsection{TITLE}
-\label{TPD}
-\index{pages!TPD!expose.ht}
-\index{expose.ht!pages!TPD}
-\index{TPD!expose.ht!pages}
+\subsection{Exposure}
+\label{helpExpose}
+\index{pages!helpExpose!expose.ht}
+\index{expose.ht!pages!helpExpose}
+\index{helpExpose!expose.ht!pages}
 <<expose.ht>>=
 \begin{page}{helpExpose}{Exposure}
 \beginscroll
@@ -9725,10 +7935,10 @@ page~pageref{ugGraphPage}
 page~pageref{ugProblemNumericPage}
 \item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
 page~pageref{DoubleFloatXmpPage}
-\item ugFloatIntroPage \ref{ugFloatIntroPage} on
-page~pageref{ugFloatIntroPage}
-\item ugFloatConvertPage \ref{ugFloatConvertPage} on
-page~pageref{ugFloatConvertPage}
+\item ugxFloatIntroPage \ref{ugxFloatIntroPage} on
+page~pageref{ugxFloatIntroPage}
+\item ugxFloatConvertPage \ref{ugxFloatConvertPage} on
+page~pageref{ugxFloatConvertPage}
 \item ugxFloatOutputPage \ref{ugxFloatOutputPage} on
 page~pageref{ugxFloatOutputPage}
 \item ugxFloatHilbertPage \ref{ugxFloatHilbertPage} on
@@ -10905,15 +9115,23 @@ decompositions.
 \section{function.ht}
 \subsection{Functions in Axiom}
 \label{FunctionPage}
+\includegraphics[scale=.5]{ps/v71functionpage.eps}
+\index{images!functionpage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
 \begin{itemize}
-\item RationalFunctionPage \ref{RationalFunctionPage} on
-page~\pageref{RationalFunctionPage}
-\item AlgebraicFunctionPage \ref{AlgebraicFunctionPage} on
-page~\pageref{AlgebraicFunctionPage}
-\item ElementaryFunctionPage \ref{ElementaryFunctionPage} on
-page~\pageref{ElementaryFunctionPage}
-\item FunctionSimplificationPage \ref{FunctionSimplificationPage} on
-page~\pageref{FunctionSimplificationPage}
+\item ``Rational Functions'' (RationalFunctionPage) 
+\ref{RationalFunctionPage} on page~\pageref{RationalFunctionPage}
+\item ``Algebraic Functions'' (AlgebraicFunctionPage) 
+\ref{AlgebraicFunctionPage} on page~\pageref{AlgebraicFunctionPage}
+\item ``Elementary Functions'' (ElementaryFunctionPage) 
+\ref{ElementaryFunctionPage} on page~\pageref{ElementaryFunctionPage}
+\item ``Simplification'' (FunctionSimplificationPage) 
+\ref{FunctionSimplificationPage} on page~\pageref{FunctionSimplificationPage}
+\item ``Pattern Matching'' (ugUserRulesPage) 
+\ref{ugUserRulesPage} on page~\pageref{ugUserRulesPage}
+\item ``Operator Algebra'' (OperatorXmpPage)
+\ref{OperatorXmpPage} on page~\pageref{OperatorXmpPage}
 \end{itemize}
 \index{pages!FunctionPage!function.ht}
 \index{function.ht!pages!FunctionPage}
@@ -10927,7 +9145,7 @@ You can also define a function by rules or use a built-in function
 Axiom lets you convert expressions to compiled functions.
 \beginscroll
 \beginmenu
-\menulink{Rational Functions}{RationatFunctionPage} \tab{22}
+\menulink{Rational Functions}{RationalFunctionPage} \tab{22}
 Quotients of polynomials.
 
 \menulink{Algebraic Functions}{AlgebraicFunctionPage} \tab{22}
@@ -10955,12 +9173,12 @@ The operator algebra facility.
 
 @
 \subsection{Rational Functions}
-\label{RationatFunctionPage}
-\index{pages!RationatFunctionPage!function.ht}
-\index{function.ht!pages!RationatFunctionPage}
-\index{RationatFunctionPage!function.ht!pages}
+\label{RationalFunctionPage}
+\index{pages!RationalFunctionPage!function.ht}
+\index{function.ht!pages!RationalFunctionPage}
+\index{RationalFunctionPage!function.ht!pages}
 <<function.ht>>=
-\begin{page}{RationatFunctionPage}{Rational Functions}
+\begin{page}{RationalFunctionPage}{Rational Functions}
 \beginscroll
 To create a rational function, just compute the
 quotient of two polynomials:
@@ -12262,16 +10480,22 @@ for glossary entry matching \inputstring{pattern}{24}{*}\end{page}
 @
 \section{graphics.ht}
 \subsection{Graphics}
+\label{GraphicsPage}
+\includegraphics[scale=.5]{ps/v71graphicspage.eps}
+\index{images!graphicspage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
 \begin{itemize}
-\item GraphicsExamplePage \ref{GraphicsExamplePage} on 
-page~\pageref{GraphicsExamplePage}
-\item TwoDimensionalGraphicsPage \ref{TwoDimensionalGraphicsPage} on 
-page~\pageref{TwoDimensionalGraphicsPage}
-\item ThreeDimensionalGraphicsPage \ref{ThreeDimensionalGraphicsPage} on 
+\item ``Examples'' (GraphicsExamplePage) 
+\ref{GraphicsExamplePage} on page~\pageref{GraphicsExamplePage}
+\item ``2D Graphics'' (TwoDimensionalGraphicsPage) 
+\ref{TwoDimensionalGraphicsPage} on page~\pageref{TwoDimensionalGraphicsPage}
+\item ``3D Graphics'' (ThreeDimensionalGraphicsPage) 
+\ref{ThreeDimensionalGraphicsPage} on 
 page~\pageref{ThreeDimensionalGraphicsPage}
-\item ViewportPage \ref{ViewportPage} on page~\pageref{ViewportPage}
+\item ``Viewports'' (ViewportPage) 
+\ref{ViewportPage} on page~\pageref{ViewportPage}
 \end{itemize}
-\label{GraphicsPage}
 \index{pages!GraphicsPage!graphics.ht}
 \index{graphics.ht!pages!GraphicsPage}
 \index{GraphicsPage!graphics.ht!pages}
@@ -12868,8 +11092,8 @@ page~\pageref{ParametricCurveGraphicsPage}
 page~\pageref{PolarGraphicsPage}
 \item ImplicitCurveGraphicsPage \ref{ImplicitCurveGraphicsPage} on 
 page~\pageref{ImplicitCurveGraphicsPage}
-\item ListPoinstsGraphicsPage \ref{ListPoinstsGraphicsPage} on 
-page~\pageref{ListPoinstsGraphicsPage}
+\item ListPointsGraphicsPage \ref{ListPointsGraphicsPage} on 
+page~\pageref{ListPointsGraphicsPage}
 \end{itemize}
 \index{pages!TwoDimensionalGraphicsPage!graphics.ht}
 \index{graphics.ht!pages!TwoDimensionalGraphicsPage}
@@ -13589,12 +11813,12 @@ Apply \spadfun{heapsort} to present elements in order.
 \subsection{HexadecimalExpansion}
 \label{HexadecimalExpansionXmpPage}
 \begin{itemize}
-\item DecimalExpansion \ref{DecimalExpansion} on
-page~pageref{DecimalExpansion}
-\item BinaryExpansion \ref{BinaryExpansion} on
-page~pageref{BinaryExpansion}
-\item RadixExpansion \ref{RadixExpansion} on
-page~pageref{RadixExpansion}
+\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
+page~pageref{DecimalExpansionXmpPage}
+\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on
+page~pageref{BinaryExpansionXmpPage}
+\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
+page~pageref{RadixExpansionXmpPage}
 \end{itemize}
 \index{pages!HexadecimalExpansionXmpPage!hexadec.ht}
 \index{hexadec.ht!pages!HexadecimalExpansionXmpPage}
@@ -13653,4164 +11877,6 @@ These numbers are bona fide algebraic objects.
 \end{page}
 
 @
-\section{htxadvpage1.ht}
-\subsection{Input Areas}
-\label{HTXAdvPage1}
-See HTXAdvPage2 \ref{HTXAdvPage2} on page~\pageref{HTXAdvPage2}
-\index{pages!HTXAdvPage1!htxadvpage1.ht}
-\index{htxadvpage1.ht!pages!HTXAdvPage1}
-\index{HTXAdvPage1!htxadvpage1.ht!pages}
-<<htxadvpage1.ht>>=
-\begin{page}{HTXAdvPage1}{Input areas}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-You have probably seen input areas in other \HyperName{}
-pages. They provide {\it dynamic link} capabilities.
-Instead of having a choice between certain actions,
-they allow you to specify an action on--the--fly.
-To use them, you need the following commands:
-\beginImportant
-\newline
-{\tt \\inputstring\{{\it label}\}\{{\it length}\}\{{\it default value}\}}
-\newline
-{\tt \\stringvalue\{{\it label}\}}
-\endImportant
-
-The first command puts up an input area of the {\it length}
-specified. The {\it default value} is placed in it.
-The first argument, {\it label} gives a name to the
-contents of the input area.
-You can refer to those contents by using
-the second command. Never place a {\tt \\stringvalue} command
-in an "exposed" part of the page. It is only meant
-to be used as an argument to an {\it action}.
-Here are some examples.
-
-
-
-
-
-\beginImportant
-\begin{paste}{HTXAdvPage1xPaste1}{HTXAdvPage1xPatch1}
-\pastebutton{HTXAdvPage1xPaste1}{Interpret}
-\newline
-{\tt Page name \\tab\{16\} }
-{\tt \\inputstring\{pagetogo\}\{30\}\{RootPage\}}\newline
-{\tt \\newline}\newline
-{\tt \\downlink\{GO!\}\{\\stringvalue\{pagetogo\}\}}\newline
-\end{paste}
-\endImportant
-
-\beginImportant
-\begin{paste}{HTXAdvPage1xPaste2}{HTXAdvPage1xPatch2}
-\pastebutton{HTXAdvPage1xPaste2}{Interpret}
-\newline
-{\tt File to edit \\tab\{16\}}\newline
-{\tt \\inputstring\{filetoedit\}\{30\}\{/etc/passwd\}}\newline
-{\tt \\newline}\newline
-{\tt \\unixcommand\{Ready!\}\{xterm  -e vi \\stringvalue\{filetoedit\}\}}
-\end{paste}
-\endImportant
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next Page --- Radio boxes}{HTXAdvPage2}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXAdvPage1xPatch1 patch}
-\label{HTXAdvPage1xPatch1}
-\index{patch!HTXAdvPage1xPatch1!htxadvpage1.ht}
-\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch1}
-\index{HTXAdvPage1xPatch1!htxadvpage1.ht!patch}
-<<htxadvpage1.ht>>=
-\begin{patch}{HTXAdvPage1xPatch1}
-\begin{paste}{HTXAdvPage1xPaste1A}{HTXAdvPage1xPatch1A}
-\pastebutton{HTXAdvPage1xPaste1A}{Source}
-\newline
-Page name \tab{16}
-\inputstring{pagetogo}{30}{RootPage}
-\newline
-\downlink{GO!}{\stringvalue{pagetogo}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage1xPatch1A patch}
-\label{HTXAdvPage1xPatch1A}
-\index{patch!HTXAdvPage1xPatch1A!htxadvpage1.ht}
-\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch1A}
-\index{HTXAdvPage1xPatch1A!htxadvpage1.ht!patch}
-<<htxadvpage1.ht>>=
-\begin{patch}{HTXAdvPage1xPatch1A}
-\begin{paste}{HTXAdvPage1xPaste1B}{HTXAdvPage1xPatch1}
-\pastebutton{HTXAdvPage1xPaste1B}{Interpret}
-\newline
-{\tt Page name \\tab\{16\} }
-{\tt \\inputstring\{pagetogo\}\{30\}\{RootPage\}}\newline
-{\tt \\newline}\newline
-{\tt \\downlink\{GO!\}\{\\stringvalue\{pagetogo\}\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage1xPatch2 patch}
-\label{HTXAdvPage1xPatch2}
-\index{patch!HTXAdvPage1xPatch2!htxadvpage1.ht}
-\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch2}
-\index{HTXAdvPage1xPatch2!htxadvpage1.ht!patch}
-<<htxadvpage1.ht>>=
-\begin{patch}{HTXAdvPage1xPatch2}
-\begin{paste}{HTXAdvPage1xPaste2A}{HTXAdvPage1xPatch2A}
-\pastebutton{HTXAdvPage1xPaste2A}{Source}
-\newline
-File to edit \tab{16}
-\inputstring{filetoedit}{30}{/etc/passwd}
-\newline
-\unixcommand{Ready!}{xterm  -e vi \stringvalue{filetoedit}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage1xPatch2A patch}
-\label{HTXAdvPage1xPatch2A}
-\index{patch!HTXAdvPage1xPatch2A!htxadvpage1.ht}
-\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch2A}
-\index{HTXAdvPage1xPatch2A!htxadvpage1.ht!patch}
-<<htxadvpage1.ht>>=
-\begin{patch}{HTXAdvPage1xPatch2A}
-\begin{paste}{HTXAdvPage1xPaste2B}{HTXAdvPage1xPatch2}
-\pastebutton{HTXAdvPage1xPaste2B}{Interpret}
-\newline
-{\tt File to edit \\tab\{16\}}\newline
-{\tt \\inputstring\{filetoedit\}\{30\}\{/etc/passwd\}}\newline
-{\tt \\newline}\newline
-{\tt \\unixcommand\{Ready!\}\{xterm  -e vi \\stringvalue\{filetoedit\}\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxadvpage2.ht}
-\subsection{Radio buttons}
-\label{HTXAdvPage2}
-See HTXAdvPage3 \ref{HTXAdvPage3} on page~\pageref{HTXAdvPage3}
-\index{pages!HTXAdvPage2!htxadvpage2.ht}
-\index{htxadvpage2.ht!pages!HTXAdvPage2}
-\index{HTXAdvPage2!htxadvpage2.ht!pages}
-<<htxadvpage2.ht>>=
-\begin{page}{HTXAdvPage2}{Radio buttons}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-
-If you just want to make a multiple-choice
-type selection, why not use the {\it radio buttons}.
-
-You need to use bitmaps for the active areas (the buttons) but
-\HyperName{} will keep track of the currently activated button.
-You can use this boolean information somewhere else on your page.
-The commands to use are:
-\beginImportant
-\newline
-{\tt \\radioboxes\{{\it group name}\}\{{\it bitmap file1}\}\{{\it bitmap file0}\}}
-\newline
-{\tt \\radiobox[{\it initial state}]\{{\it label}\}\{{\it group name}\}}
-\newline
-{\tt \\boxvalue\{{\it label}\}}
-\endImportant
-
-The {\tt \\radioboxes} command sets up a group of {\tt \\radiobox}
-buttons. The {\it group name} is a label for the group. The filenames
-for the bitmaps are specified in {\it bitmap file1} and {\it bitmap file0}.
-The first one should denote an activated button and the second
-a de-activated one.
-
-To display each button in a group, use {\tt \\radiobox}.
-The {\it initial state} should be either {\tt 1} or {\tt 0}
-depending on whether the button should first be displayed as activated or not.
-The second {\it label} argument defines the name by which the
-current state of the button can be referred to.
-The third argument specifies which group this button belongs to.
-
-The {\tt \\boxvalue} command can then be used in various
-actions. The value of it will
-be either {\tt t} or {\tt nil}.
-
-In the example below, we use the {\tt \\htbmfile} macro
-defined in {\bf util.ht} so that we do not have to write
-the full bitmap file pathnames.
-
-This is how we set up the group. The {\tt \\radioboxes} command does not display
-anything.
-Note that these commands cannot be included in a {\it patch}.
-This is why we display this time the source and the result
-at the same time.
-\beginImportant
-\newline
-{\tt \\radioboxes\{group\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}}\newline
-{\tt \\newline \\table\{}\newline
-{\tt \{\\radiobox[1]\{b1\}\{group\}\}}\newline
-{\tt \{\\radiobox[0]\{b2\}\{group\}\}}\newline
-{\tt \{\\radiobox[0]\{b3\}\{group\}\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{lisp\}\{(pprint (list}\newline
-{\tt \\boxvalue\{b1\} \\boxvalue\{b2\} \\boxvalue\{b3\}))\}}\newline
-{\tt \\newline}\newline
-{\tt \\unixcommand\{unix\}\{echo '\\boxvalue\{b1\}}\newline
-{\tt \\boxvalue\{b2\} \\boxvalue\{b3\}'\}}
-\endImportant
-\radioboxes{group}{\htbmfile{pick}}{\htbmfile{unpick}}
-\table{
-{\radiobox[1]{b1}{group}}
-{\radiobox[0]{b2}{group}}
-{\radiobox[0]{b3}{group}}}
-\newline
-\lispcommand{lisp}{(pprint (list
-\boxvalue{b1} \boxvalue{b2} \boxvalue{b3}))}
-\newline
-\unixcommand{unix}{echo '\boxvalue{b1}
-\boxvalue{b2} \boxvalue{b3}'}
-\endImportant
-
-
-
-
-You can only set one radio button at a time. If you want
-a non--exclusive selection, try {\tt \\inputbox}.
-The syntax for this command is
-\beginImportant
-\newline
-{\tt \\inputbox[{\it initial state}]\{{\it label}\}\{{\it bitmap file1}\}\{{\it bitmap file0}\}}
-\endImportant
-
-There is no group command for these.
-\beginImportant
-\newline
-{\tt \\table\{}\newline
-{\tt \{\\inputbox[1]\{c1\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}}\newline
-{\tt \{\\inputbox\{c2\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}}\newline
-{\tt \{\\inputbox[1]\{c3\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{lisp\}\{(pprint (list}\newline
-{\tt \\boxvalue\{c1\} \\boxvalue\{c2\} \\boxvalue\{c3\}))\}}\newline
-{\tt \\newline}\newline
-{\tt \\unixcommand\{unix\}\{echo }\newline
-{\tt '\\boxvalue\{c1\} \\boxvalue\{c2\} \\boxvalue\{c3\}'\}}\newline
-\endImportant
-\table{
-{\inputbox[1]{c1}{\htbmfile{pick}}{\htbmfile{unpick}}}
-{\inputbox{c2}{\htbmfile{pick}}{\htbmfile{unpick}}}
-{\inputbox[1]{c3}{\htbmfile{pick}}{\htbmfile{unpick}}}}
-\newline
-\lispcommand{lisp}{(pprint (list
-\boxvalue{c1} \boxvalue{c2} \boxvalue{c3}))}
-\newline
-\unixcommand{unix}{echo
-'\boxvalue{c1} \boxvalue{c2} \boxvalue{c3}'}
-\endImportant
-
-
-Note that the {\it initial state} is an
-optional argument. If omitted
-the button will initially
-be deactivated.
-
-\end{scroll}
-\beginmenu
-\menulink{Next Page --- Macros}{HTXAdvPage3}
-\endmenu
-
-\end{page}
-
-@
-\section{htxadvpage3.ht}
-\subsection{Macros}
-\label{HTXAdvPage3}
-See HTXAdvPage4 \ref{HTXAdvPage4} on page~\ref{HTXAdvPage4}p
-\index{pages!HTXAdvPage3!htxadvpage3.ht}
-\index{htxadvpage3.ht!pages!HTXAdvPage3}
-\index{HTXAdvPage3!htxadvpage3.ht!pages}
-<<htxadvpage3.ht>>=
-\begin{page}{HTXAdvPage3}{Macros}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-
-Sometimes you may find yourself having to
-write
-almost the same piece of \HyperName{}
-text many times. Thankfully, there is a command to ease
-the work.
-It is the {\tt \\newcommand} command and provides
-a macro facility for \HyperName{}.
-In this way, you can give a short name to a sequence of \HyperName{}
-text and use that name to include the sequence in your pages.
-The way this works is the following
-\beginImportant
-\newline
-\centerline{{\tt \\newcommand\{\\{\it name}\}[{\it number of arguments}]\{{\it \HyperName{} text}\}}}
-\endImportant
-and here is an example from {\bf util.ht}
-\beginImportant
-\newline
-{\tt \\newcommand\{\\axiomSig\}[2]\{\\axiomType\{\#1\} \{\\tt ->\} \\axiomType\{\#2\}\}}
-\newline
-{\tt \\newcommand\{\\axiomType\}[1]\{\\lispdownlink\{\#1\}\{(|spadType| '|\#1|)\}\}}
-\endImportant
-
-You see that a macro's definition can invoke another.
-Don't create a circular definition though!
-Notice how the arguments of the macro are used
-in the definition. The {\tt \#{\it n}} construct
-is the place--holder of the {\it n}'th argument.
-
-To use the macro, just treat it as an ordinary command.
-For instance
-\beginImportant
-\newline
-{\tt \\axiomSig\{Integer\}\{List Integer\}}
-\endImportant
-displays and acts like this
-\beginImportant
-\newline
-\axiomSig{Integer}{List Integer}
-\endImportant
-
-The best way to familiarise yourself to
-macros is to study the macros defined in
-\centerline{
-{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}
-}
-It is highly probable that a good many of them
-will prove useful to you.
-Clever use of macros will allow you to
-create \HyperName{} text that can be
-formatted by other programs (such as TeX).
-The Axiom User Guide was written
-in such a way as to make translation in
-\HyperName{} form and TeX form a mechanical process.
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next Page --- Patch and Paste}{HTXAdvPage4}
-\endmenu
-
-\end{page}
-
-@
-\section{htxadvpage4.ht}
-\subsection{Patch and Paste}
-\label{HTXAdvPage4}
-See HTXAdvPage5 \ref{HTXAdvPage5} on page~\pageref{HTXAdvPage5}
-\index{pages!HTXAdvPage4!htxadvpage4.ht}
-\index{htxadvpage4.ht!pages!HTXAdvPage4}
-\index{HTXAdvPage4!htxadvpage4.ht!pages}
-<<htxadvpage4.ht>>=
-\begin{page}{HTXAdvPage4}{Patch and Paste}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-
-A powerful \HyperName{} feature is
-the ability to {\it replace}
-part of a displayed page with another part
-when an active area is clicked. The group commands
-{\it patch} and {\it paste} offer this facility.
-A {\it paste} region can appear anywhere
-within a page or a {\it patch}. A {\it patch} region must be defined
-outside a page definition.
-
-We need a few  objects to define the {\it paste}
-region. These are a {\it name} with which to
-refer to it, some way of specifying what it
-is to be replaced by and a {\it trigger} for the
-replacement. A {\it patch} is how we specify the
-second of these objects.
-The {\it patch} is generally a sequence of \HyperName{}
-text.
-
-If we want to have the option of returning to the original
-(or ,indeed, proceeding to a {\it third} alternative)
-we clearly must include a {\it paste} in the {\it patch}.
-
-Let us start with a simple example. We wish to
-have the word {\tt initial} somewhere on the page replaced by the
-word {\tt final} at a click of a button.
-Let us first define the {\it patch}. It will just contain
-the word {\tt final}. Here is a definition of a
-patch called {\tt patch1} (note that
-the actual definition must be outside this page's definition).
-\beginImportant
-\newline
-{\tt \\begin\{patch\}\{patch1\}} \newline
-{\tt final}\newline
-{\tt \\end\{patch\}}
-\endImportant
-We now define a {\it paste} region exactly where we
-want the word {\tt initial} to appear.
-\beginImportant
-\newline
-{\tt \\begin\{paste\}\{paste1\}\{patch1\}}\newline
-{\tt initial}\newline
-{\tt \\end\{paste\}}
-\centerline{{\it results in}}
-\begin{paste}{paste1}{patch1}
-initial
-\end{paste}
-\endImportant
-We have specified first the name of the {\it paste} region
-which is {\tt paste1} and then the name of the
-replacement {\it patch} which is {\tt patch1}.
-Something is missing -- the trigger.
-To include a trigger we write
-\beginImportant
-\newline
-{\tt \\pastebutton\{paste1\}\{trigger\}
-\centerline{{\it results in}}
-\pastebutton{paste1}{trigger}
-\endImportant
-This new command {\tt \\pastebutton} displays the second argument
-as an active area. The first argument specifies the {\it paste}
-region it refers to. Clicking on {\tt trigger} above will
-replace the word {\tt initial} with the word {\tt final}.
-
-We can, if we like, include the {\tt \\pastebutton} in the {\it paste}
-region.
-Let us improve on the situation by providing a way
-of going back to the original word {\tt initial} on the page.
-The {\it patch} must itself include a {\it paste}.
-What will the replacement {\it patch} for this new {\it paste}
-be ? Well, we  have to define a second {\it patch}
-that contains all the stuff in the original {\it paste}
-region. Here is the updated {\it patch} for the first replacement.
-The {\tt \\MenuDotBitmap} macro is defined in {\bf util.ht}.
-It displays a button bitmap.
-This time we put the {\tt \\pastebutton}
-inside the {\it paste}.
-\beginImportant
-\newline
-{\tt \\begin\{patch\}\{Patch1\}}\newline
-{\tt \\begin\{paste\}\{Paste2\}\{Patch2\}}\newline
-{\tt \\pastebutton\{Paste2\}\{\\MenuDotBitmap\}}\newline
-{\tt final}\newline
-{\tt \\end\{paste\}}\newline
-{\tt \\end\{patch\}}\newline
-\endImportant
-and the new {\tt Patch2} {\it patch}
-\beginImportant
-\newline
-{\tt \\begin\{patch\}\{Patch2\}}\newline
-{\tt \\begin\{paste\}\{Paste3\}\{Patch1\}}\newline
-{\tt \\pastebutton\{Paste3\}\{\\MenuDotBitmap\}}\newline
-{\tt initial}\newline
-{\tt \\end\{paste\}}\newline
-{\tt \\end\{patch\}}\newline
-\endImportant
-
-Remember that these {\it patch} definitons must
-occur outside a {\tt \\begin\{page\} - \\end\{page\}} group.
-What is left now is to define the starting {\it paste}
-region.
-\beginImportant
-\newline
-{\tt \\begin\{paste\}\{Paste1\}\{Patch1\}}\newline
-{\tt \\pastebutton\{Paste1\}\{\\MenuDotBitmap\}}\newline
-{\tt initial}\newline
-{\tt \\end\{paste\}}
-\centerline{{\it results in}}
-\begin{paste}{Paste1}{Patch1}
-\pastebutton{Paste1}{\MenuDotBitmap}
-initial
-\end{paste}
-\endImportant
-
-Clicking on the button above next to {\tt initial}
-will replace the {\tt Paste1} region with
-{\tt Patch1}. That {\it patch}
-also contains a {\it paste} region ({\tt Paste2}).
-Clicking on {\it its} button will put up
-{\tt Patch2} which has a {\it paste} region ({\tt Paste3}).
-Clicking on {\it its} button will put up {\tt Patch1}
-again. In that way, we close the chain of replacements.
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next Page --- Axiom paste-ins}{HTXAdvPage5}
-\endmenu
-
-\end{page}
-
-@
-\subsection{patch1 patch}
-\label{patch1}
-\index{patch!patch1!htxadvpage4.ht}
-\index{htxadvpage4.ht!patch!patch1}
-\index{patch1!htxadvpage4.ht!patch}
-<<htxadvpage4.ht>>=
-\begin{patch}{patch1}
-final
-\end{patch}
-
-@
-\subsection{Patch1 patch}
-\label{Patch1}
-\index{patch!Patch1!htxadvpage4.ht}
-\index{htxadvpage4.ht!patch!Patch1}
-\index{Patch1!htxadvpage4.ht!patch}
-<<htxadvpage4.ht>>=
-\begin{patch}{Patch1}
-\begin{paste}{Paste2}{Patch2}
-\pastebutton{Paste2}{\MenuDotBitmap}
-final
-\end{paste}
-\end{patch}
-
-@
-\subsection{Patch2 patch}
-\label{Patch2}
-\index{patch!Patch2!htxadvpage4.ht}
-\index{htxadvpage4.ht!patch!Patch2}
-\index{Patch2!htxadvpage4.ht!patch}
-<<htxadvpage4.ht>>=
-\begin{patch}{Patch2}
-\begin{paste}{Paste3}{Patch1}
-\pastebutton{Paste3}{\MenuDotBitmap}
-initial
-\end{paste}
-\end{patch}
-
-@
-\section{htxadvpage5.ht}
-\subsection{Axiom paste-ins}
-\label{HTXAdvPage5}
-See HTXAdvPage6 \ref{HTXAdvPage6} on page~\pageref{HTXAdvPage6}
-\index{pages!HTXAdvPage5!htxadvpage5.ht}
-\index{htxadvpage5.ht!pages!HTXAdvPage5}
-\index{HTXAdvPage5!htxadvpage5.ht!pages}
-<<htxadvpage5.ht>>=
-\begin{page}{HTXAdvPage5}{Axiom paste-ins}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-The {\it paste} and {\it patch} facility (see \downlink{previous page}{HTXAdvPage4})
-is used to display (or hide) the Axiom output
-of an Axiom command ({\tt\\axiomcommand})
-included in a
-\HyperName{} page.
-
-A mechanism has been set up to {\it automatically} generate
-these paste-ins. It amounts to replacing an
-{\tt \\axiomcommand} by a {\tt \\pastecommand} in the
-\HyperName{} page.
-
-In the case of a \axiomOp{draw} Axiom command
-, where the result is to create an interactive viewport,
-the appropriate command to use is {\tt \\pastegraph}.
-The effect of this is to include (as the output)
-the Axiom generated {\it image} of the graph
-as an active area. Clicking on it will put up an
-interactive viewport.
-The {\tt \\pastegraph} command should be used only when
-the result of the associated Axiom operation is
-to {\it create} an interactive viewport. It is {\it not} necessarily
-appropriate for all commands whose result
-is a \axiomType{Two{}Dimensional{}Viewport} or \axiomType{Three{}Dimensional{}Viewport}.
-The {\tt \\pastecommand} and {\tt \\pastegraph}
-are  macros defined in {\bf util.ht}.
-
-
-
-There is no automatic paste-in generation facility
-for Axiom piles (the {\tt \\begin\{axiomsrc\}} command).
-
-
-The automatic paste-in generation mechanism works
-by invoking Axiom with a particular option.
-\HyperName{} is also started automatically. It reads
-the {\tt \\pastecommand} and {\tt \\pastegraph}
-commands in all pages in a specified
-{\bf somefile.ht}  and passes them to
-Axiom for evaluation. \HyperName{}
-captures the output and writes it out (to a
-file called {\bf somefile.pht}) as the body of
-some {\it patch} definitions. The commands
-encountered are written to a file
-{\bf somefile.input} which you can {\tt )read} from an Axiom session.
-It also creates directories for the graphics
-images encountered. Those files and directories
-will be written under the {\it current} directory.
-The idea is that you then include the {\it patch} definitions
-in {\bf somefile.pht} in your local database using {\bf htadd}.
-
-
-You can try this feature now. Edit a file called, say, {\bf trypaste.ht}
-in a directory, say {\bf /tmp}. Put the following \HyperName{} text
-in it.
-\beginImportant
-\newline
-{\tt \\begin\{page\}\{TryPaste\}\{Trying out paste-in generation\}}\newline
-{\tt \\begin\{scroll\}}\newline
-{\tt \\pastecommand\{f z == z**2 \\bound\{f\}\}}\newline
-{\tt \\pastegraph\{draw(f,-1..1) \\free\{f\}\}}\newline
-{\tt \\pastecommand\{x:= f 3 \\free\{f\}\}}\newline
-{\tt \\end\{scroll\}}\newline
-{\tt \\end\{page\}}\newline
-\endImportant
-
-From the directory that contains the {\bf trypaste.ht},
-issue
-\centerline{
-{\tt htadd -l ./trypaste.ht}
-}
-You will get the
-{\bf ht.db} database file.
-Set the environment variable {\tt HTPATH} so that
-it points first to your directory and then the system directory.
-In the {\bf /bin/csh}, you might use
-\centerline{
-{\tt setenv HTPATH /tmp:\$AXIOM/doc/hypertex/pages}
-}
-Make sure that no {\bf trypaste.input} or {\bf trypaste.pht}
-files exist in the directory.
-Then issue
-\centerline{
-{\tt axiom -paste trypaste.ht}
-}
- and wait for
-Axiom to finish.
-
-There is a modification you will wish to make to
-the {\bf trypaste.pht} file.
-This is because the generated \HyperName{} text will assume that
-the {\it viewport} data will be located in the
-{\it system} directory.
-\centerline{{\bf \env{AXIOM}/doc/viewports}}
-You may want to place your images in a different directory,
-say, {\bf /u/sugar/viewports}.
-If so, then change all occurences of
-\beginImportant
-\newline
-{\tt \\env\{AXIOM\}/doc/viewports/}
-\centerline{{\it by}}
-{\tt /u/sugar/viewports/}
-\endImportant
-in the file {\bf trypaste.pht}. The last step
-is to include the {\it patch} definitions
-in {\bf trypaste.pht} to your local database.
-Issue
-\centerline{
-{\tt htadd -l ./trypaste.pht}
-}
-to update the database. If you have provided
-a link to your pages from the {\tt RootPage}
-via the {\tt \\localinfo} macro, you should now
-be able to start Axiom or \HyperName{}
-and see the computed Axiom output whenever you
-click on the buttons to the left of each command.
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next Page --- Miscellaneous}{HTXAdvPage6}
-\endmenu
-
-\end{page}
-
-@
-\section{htxadvpage6.ht}
-\subsection{Miscellaneous}
-\label{HTXAdvPage6}
-See HTXAdvTopPage \ref{HTXAdvTopPage} on page~\pageref{HTXAdvTopPage}
-\index{pages!HTXAdvPage6!htxadvpage6.ht}
-\index{htxadvpage6.ht!pages!HTXAdvPage6}
-\index{HTXAdvPage6!htxadvpage6.ht!pages}
-<<htxadvpage6.ht>>=
-\begin{page}{HTXAdvPage6}{Miscellaneous}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-
-We present here a few commands that may be of some use
-to you.
-You may want to know certain parameters so that you can pass
-them to one of the action {\tt \\command}s.
-
-The {\tt \\thispage} command shows the name of the
-current page.
-
-\beginImportant
-\begin{paste}{HTXAdvPage6xPaste1}{HTXAdvPage6xPatch1}
-\pastebutton{HTXAdvPage6xPaste1}{Interpret}
-\newline
-{\tt \\thispage}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Lisp\}\{(pprint "\\thispage")\}}\newline
-\end{paste}
-\endImportant
-
-
-The {\tt \\windowid} command shows the X Windows
-{\it WindowID} of the current window.
-
-\beginImportant
-\begin{paste}{HTXAdvPage6xPaste2}{HTXAdvPage6xPatch2}
-\pastebutton{HTXAdvPage6xPaste2}{Interpret}
-\newline
-{\tt \\windowid}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Lisp\}\{(pprint \\windowid)\}}\newline
-\end{paste}
-\endImportant
-
-% \examplenumber not documented
-
-The {\tt \\env} command gets the value of an environment
-variable. It is an error to use {\tt \\env} with an undefined
-environment variable.
-
-\beginImportant
-\begin{paste}{HTXAdvPage6xPaste3}{HTXAdvPage6xPatch3}
-\pastebutton{HTXAdvPage6xPaste3}{Interpret}
-\newline
-{\tt \\env\{AXIOM\}}
-\end{paste}
-\endImportant
-
-
-The {\tt \\nolines} command, if included somewhere
-in the page, eliminates the horizontal lines that
-delimit the header and footer regions.
-
-
-% \beep not documented
-
-%\returnbutton{homebutton}{ReturnPage}
-
-%\upbutton{upbutton}{UpPage}
-
-
-\end{scroll}
-\beginmenu
-\menulink{Back to Menu}{HTXAdvTopPage}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXAdvPage6xPatch1 patch}
-\label{HTXAdvPage6xPatch1}
-\index{patch!HTXAdvPage6xPatch1!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch1}
-\index{HTXAdvPage6xPatch1!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch1}
-\begin{paste}{HTXAdvPage6xPaste1A}{HTXAdvPage6xPatch1A}
-\pastebutton{HTXAdvPage6xPaste1A}{Source}
-\newline
-\thispage
-\newline
-\lispcommand{Lisp}{(pprint "\thispage")}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage6xPatch1A patch}
-\label{HTXAdvPage6xPatch1A}
-\index{patch!HTXAdvPage6xPatch1A!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch1A}
-\index{HTXAdvPage6xPatch1A!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch1A}
-\begin{paste}{HTXAdvPage6xPaste1B}{HTXAdvPage6xPatch1}
-\pastebutton{HTXAdvPage6xPaste1B}{Interpret}
-\newline
-{\tt \\thispage}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Lisp\}\{(pprint "\\thispage")\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage6xPatch2 patch}
-\label{HTXAdvPage6xPatch2}
-\index{patch!HTXAdvPage6xPatch2!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch2}
-\index{HTXAdvPage6xPatch2!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch2}
-\begin{paste}{HTXAdvPage6xPaste2A}{HTXAdvPage6xPatch2A}
-\pastebutton{HTXAdvPage6xPaste2A}{Source}
-\newline
-\windowid
-\newline
-\lispcommand{Lisp}{(pprint \windowid)}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage6xPatch2A patch}
-\label{HTXAdvPage6xPatch2A}
-\index{patch!HTXAdvPage6xPatch2A!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch2A}
-\index{HTXAdvPage6xPatch2A!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch2A}
-\begin{paste}{HTXAdvPage6xPaste2B}{HTXAdvPage6xPatch2}
-\pastebutton{HTXAdvPage6xPaste2B}{Interpret}
-\newline
-{\tt \\windowid}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Lisp\}\{(pprint \\windowid)\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage6xPatch3 patch}
-\label{HTXAdvPage6xPatch3}
-\index{patch!HTXAdvPage6xPatch3!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch3}
-\index{HTXAdvPage6xPatch3!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch3}
-\begin{paste}{HTXAdvPage6xPaste3A}{HTXAdvPage6xPatch3A}
-\pastebutton{HTXAdvPage6xPaste3A}{Source}
-\newline
-\env{AXIOM}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXAdvPage6xPatch3A patch}
-\label{HTXAdvPage6xPatch3A}
-\index{patch!HTXAdvPage6xPatch3A!htxadvpage6.ht}
-\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch3A}
-\index{HTXAdvPage6xPatch3A!htxadvpage6.ht!patch}
-<<htxadvpage6.ht>>=
-\begin{patch}{HTXAdvPage6xPatch3A}
-\begin{paste}{HTXAdvPage6xPaste3B}{HTXAdvPage6xPatch3}
-\pastebutton{HTXAdvPage6xPaste3B}{Interpret}
-\newline
-{\tt \\env\{AXIOM\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxadvtoppage.ht}
-\subsection{Advanced features in Hyperdoc}
-\label{HTXAdvTopPage}
-\begin{itemize}
-\item HTXAdvPage1 \ref{HTXAdvPage1} on page~\pageref{HTXAdvPage1}
-\item HTXAdvPage2 \ref{HTXAdvPage2} on page~\pageref{HTXAdvPage2}
-\item HTXAdvPage3 \ref{HTXAdvPage3} on page~\pageref{HTXAdvPage3}
-\item HTXAdvPage4 \ref{HTXAdvPage4} on page~\pageref{HTXAdvPage4}
-\item HTXAdvPage5 \ref{HTXAdvPage5} on page~\pageref{HTXAdvPage5}
-\item HTXAdvPage6 \ref{HTXAdvPage6} on page~\pageref{HTXAdvPage6}
-\end{itemize}
-\index{pages!HTXAdvTopPage!htxadvtoppage.ht}
-\index{htxadvtoppage.ht!pages!HTXAdvTopPage}
-\index{HTXAdvTopPage!htxadvtoppage.ht!pages}
-<<htxadvtoppage.ht>>=
-\begin{page}{HTXAdvTopPage}{Advanced features in Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\beginscroll
-\beginmenu
-\menudownlink{Creating input areas}{HTXAdvPage1}
-\menudownlink{Creating radio boxes}{HTXAdvPage2}
-\menudownlink{Define new macros     }{HTXAdvPage3}
-\menudownlink{Using patch and paste}{HTXAdvPage4}
-\menudownlink{Generate paste-ins for Axiom commands}{HTXAdvPage5}
-\menudownlink{Miscellaneous}{HTXAdvPage6}
-\endmenu
-\endscroll
-\end{page}
-
-@
-\section{htxformatpage1.ht}
-\subsection{Using the special characters}
-\label{HTXFormatPage1}
-See HTXFormatPage2 \ref{HTXFormatPage2} on page~\pageref{HTXFormatPage2}
-\index{pages!HTXFormatPage1!htxformatpage1.ht}
-\index{htxformatpage1.ht!pages!HTXFormatPage1}
-\index{HTXFormatPage1!htxformatpage1.ht!pages}
-<<htxformatpage1.ht>>=
-\begin{page}{HTXFormatPage1}{Using the special characters}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-You can display the special characters ({\tt \$ \\ \{ \{ \[ \] \% \#})
-by simply inserting the backslash {\tt \\} character just before any 
-one of them. So,
-\beginImportant
-\begin{paste}{HTXFormatPage1xPaste1}{HTXFormatPage1xPatch1}
-\pastebutton{HTXFormatPage1xPaste1}{Interpret}
-\newline
-{\tt the characters \\\$, \\\\, \\\{, \\\}, \\\[, \\\], \\\%, \\\# }
-\end{paste}
-\endImportant
-
-
-The {\tt \%} character is used in \HyperName{} as a comment marker.
-If it is encountered on any line (without being preceded by the {\tt \\}
- character,
-of course), \HyperName{} will ignore all remaining characters on that line.
-\beginImportant
-\begin{paste}{HTXFormatPage1xPaste2}{HTXFormatPage1xPatch2}
-\pastebutton{HTXFormatPage1xPaste2}{Interpret}
-\newline
-{\tt  the latest figures indicate \% GET THE LATEST FIGURES}\newline
-{\tt a steady rise}\indent{0}
-\end{paste}
-\endImportant
-
-Earlier versions of \HyperName{} merged the words "indicate" and "a"
-into one word in the example above. This no longer occurs.
-
-%The two lines below are from Release 1.x
-%Note that you must leave a space at the beginning of the line after the comment,
-%otherwise \HyperName{} would treat "indicate" and "a" as one word.
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Formatting without commands}{HTXFormatPage2}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage1xPatch1 patch}
-\label{HTXFormatPage1xPatch1}
-\index{patch!HTXFormatPage1xPatch1!htxformatpage1.ht}
-\index{htxformatpage1.ht!patch!HTXFormatPage1xPatch1}
-\index{HTXFormatPage1xPatch1!htxformatpage1.ht!patch}
-<<htxformatpage1.ht>>=
-\begin{patch}{HTXFormatPage1xPatch1}
-\begin{paste}{HTXFormatPage1xPaste1A}{HTXFormatPage1xPatch1A}
-\pastebutton{HTXFormatPage1xPaste1A}{Source}
-\newline
-the characters \$, \\, \{, \}, \[, \],  \%, \#
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage1xPatch1A}
-\begin{paste}{HTXFormatPage1xPaste1B}{HTXFormatPage1xPatch1}
-\pastebutton{HTXFormatPage1xPaste1B}{Interpret}
-\newline
-{\tt the characters \\\$, \\\\, \\\{, \\\}, \\\[, \\\], \\\%, \\\# }
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage1xPatch2 patch}
-\label{HTXFormatPage1xPatch2}
-\index{patch!HTXFormatPage1xPatch2!htxformatpage1.ht}
-\index{htxformatpage1.ht!patch!HTXFormatPage1xPatch2}
-\index{HTXFormatPage1xPatch2!htxformatpage1.ht!patch}
-<<htxformatpage1.ht>>=
-\begin{patch}{HTXFormatPage1xPatch2}
-\begin{paste}{HTXFormatPage1xPaste2A}{HTXFormatPage1xPatch2A}
-\pastebutton{HTXFormatPage1xPaste2A}{Source}
-\newline
-the latest figures indicate % GET THE LATEST FIGURES
-a steady rise
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage1xPatch2A}
-\begin{paste}{HTXFormatPage1xPaste2B}{HTXFormatPage1xPatch2}
-\pastebutton{HTXFormatPage1xPaste2B}{Interpret}
-\newline
-{\tt  the latest figures indicate \% GET THE LATEST FIGURES}\newline
-{\tt a steady rise}\indent{0}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage2.ht}
-\subsection{Formatting without commands}
-\label{HTXFormatPage2}
-\index{pages!HTXFormatPage2!htxformatpage2.ht}
-\index{htxformatpage2.ht!pages!HTXFormatPage2}
-\index{HTXFormatPage2!htxformatpage2.ht!pages}
-<<htxformatpage2.ht>>=
-\begin{page}{HTXFormatPage2}{Formatting without commands}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-\HyperName{} will interpret normal text in a {\em source file}
-according to the following rules. \newline
-\menuitemstyle{\indentrel{4}
-Spaces mark the ends of words. The number of spaces between
-words is {\em not} significant, that is, you cannot control word spacing
-by inserting or removing extra space characters.
-\indentrel{-4}}
-\beginImportant
-\begin{paste}{HTXFormatPage2xxPaste1}{HTXFormatPage2xPatch1}
-\pastebutton{HTXFormatPage2xxPaste1}{Interpret}
-\begin{verbatim}
-word    spacing is       not  important
-\end{verbatim}
-\end{paste}
-\endImportant
-\menuitemstyle{\indentrel{4}
-End-of-line  characters are not significant.
-You can break up lines in the source file as you like. The end-of-line
-will be interpreted as a space. 
-Take advantage of this feature to improve the readability of the
-source file.
-\indentrel{-4}}
-\beginImportant
-\begin{paste}{HTXFormatPage2xxPaste2}{HTXFormatPage2xPatch2}
-\pastebutton{HTXFormatPage2xxPaste2}{Interpret}
-\begin{verbatim}
-This is
-one
-sentence.
-\end{verbatim}
-\end{paste}
-\endImportant
-\menuitemstyle{\indentrel{4}
-A blank line marks the end of a paragraph. 
-Leaving more blank lines that necessary has no effect.
-\indentrel{-4}}
-\beginImportant
-\begin{paste}{HTXFormatPage2xxPaste3}{HTXFormatPage2xPatch3}
-\pastebutton{HTXFormatPage2xxPaste3}{Interpret}
-\begin{verbatim}
-some end.% A COMMENT
-
-
-Start a paragraph
-
-Start another paragraph.
-\end{verbatim}
-\end{paste}
-\endImportant
-\menuitemstyle{\indentrel{4}
-The two-character combination {\tt \{\}} can be used to indicate
-possible breaking of long words. It does not affect the formatting
-in any other way.
-\indentrel{-4}}
-\beginImportant
-\begin{paste}{HTXFormatPage2xxPaste4}{HTXFormatPage2xPatch4}
-\pastebutton{HTXFormatPage2xxPaste4}{Interpret}
-\begin{verbatim}
-Generalized{}Multivariate{}Factorize
-One{}Dimensional{}Array{}Aggregate
-Elementary{}Function{}Definite{}Integration
-Elementary{}Functions{}Univariate{}Puiseux{}Series
-Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
-\end{verbatim}
-\end{paste}
-\endImportant
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Using different fonts}{HTXFormatPage3}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage2xPatch1 patch}
-\label{HTXFormatPage2xPatch1}
-\index{patch!HTXFormatPage2xPatch1!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch1}
-\index{HTXFormatPage2xPatch1!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch1}
-\begin{paste}{HTXFormatPage2xxPaste1A}{HTXFormatPage2xPatch1A}
-\pastebutton{HTXFormatPage2xxPaste1A}{Source}
-\newline
-word    spacing is       not  important
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage2xPatch1A}
-\begin{paste}{HTXFormatPage2xxPaste1B}{HTXFormatPage2xPatch1}
-\pastebutton{HTXFormatPage2xxPaste1B}{Interpret}
-\begin{verbatim}
-word    spacing is       not  important
-\end{verbatim}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch2 patch}
-\label{HTXFormatPage2xPatch2}
-\index{patch!HTXFormatPage2xPatch2!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch2}
-\index{HTXFormatPage2xPatch2!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch2}
-\begin{paste}{HTXFormatPage2xxPaste2A}{HTXFormatPage2xPatch2A}
-\pastebutton{HTXFormatPage2xxPaste2A}{Source}
-\newline
-This is
-one
-sentence.
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch2A patch}
-\label{HTXFormatPage2xPatch2A}
-\index{patch!HTXFormatPage2xPatch2A!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch2A}
-\index{HTXFormatPage2xPatch2A!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch2A}
-\begin{paste}{HTXFormatPage2xxPaste2B}{HTXFormatPage2xPatch2}
-\pastebutton{HTXFormatPage2xxPaste2B}{Interpret}
-\begin{verbatim}
-This is
-one
-sentence.
-\end{verbatim}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch3 patch}
-\label{HTXFormatPage2xPatch3}
-\index{patch!HTXFormatPage2xPatch3!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch3}
-\index{HTXFormatPage2xPatch3!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch3}
-\begin{paste}{HTXFormatPage2xxPaste3A}{HTXFormatPage2xPatch3A}
-\pastebutton{HTXFormatPage2xxPaste3A}{Source}
-\newline
-some end.% A COMMENT
-
-
-Start a paragraph.
-
-Start another paragraph.
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch3A patch}
-\label{HTXFormatPage2xPatch3A}
-\index{patch!HTXFormatPage2xPatch3A!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch3A}
-\index{HTXFormatPage2xPatch3A!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch3A}
-\begin{paste}{HTXFormatPage2xxPaste3B}{HTXFormatPage2xPatch3}
-\pastebutton{HTXFormatPage2xxPaste3B}{Interpret}
-\begin{verbatim}
-some end.% A COMMENT
-
-
-Start a paragraph
-
-Start another paragraph.
-\end{verbatim}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch4 patch}
-\label{HTXFormatPage2xPatch4}
-\index{patch!HTXFormatPage2xPatch4!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch4}
-\index{HTXFormatPage2xPatch4!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch4}
-\begin{paste}{HTXFormatPage2xxPaste4A}{HTXFormatPage2xPatch4A}
-\pastebutton{HTXFormatPage2xxPaste4A}{Source}
-\newline
-Generalized{}Multivariate{}Factorize
-One{}Dimensional{}Array{}Aggregate
-Elementary{}Function{}Definite{}Integration
-Elementary{}Functions{}Univariate{}Puiseux{}Series
-Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage2xPatch4A patch}
-\label{HTXFormatPage2xPatch4A}
-\index{patch!HTXFormatPage2xPatch4A!htxformatpage2.ht}
-\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch4A}
-\index{HTXFormatPage2xPatch4A!htxformatpage2.ht!patch}
-<<htxformatpage2.ht>>=
-\begin{patch}{HTXFormatPage2xPatch4A}
-\begin{paste}{HTXFormatPage2xxPaste4B}{HTXFormatPage2xPatch4}
-\pastebutton{HTXFormatPage2xxPaste4B}{Interpret}
-\begin{verbatim}
-Generalized{}Multivariate{}Factorize
-One{}Dimensional{}Array{}Aggregate
-Elementary{}Function{}Definite{}Integration
-Elementary{}Functions{}Univariate{}Puiseux{}Series
-Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
-\end{verbatim}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage3.ht}
-\subsection{Using different fonts}
-\label{HTXFormatPage3}
-\index{pages!HTXFormatPage3!htxformatpage3.ht}
-\index{htxformatpage3.ht!pages!HTXFormatPage3}
-\index{HTXFormatPage3!htxformatpage3.ht!pages}
-<<htxformatpage3.ht>>=
-\begin{page}{HTXFormatPage3}{Using different fonts}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-You can use various fonts for the text. \HyperName{} makes
-four {\em logical} fonts available to you: a {\em roman} font, an
-{\em emphasised} font, a {\em bold} font and a
-{\em typewriter} font. The actual font that corresponds to
-each logical font is determined by the end user via a
-defaults file. The colour for each of these fonts can also
-be specified.
-
-Normal text is displayed with the roman font.
-If you want to emphasize some text, use the {\tt \\em}
-command in the following way.
-\beginImportant
-\begin{paste}{HTXFormatPage3xPaste1}{HTXFormatPage3xPatch1}
-\pastebutton{HTXFormatPage3xPaste1}{Interpret}
-\newline
-{\tt this is \{\\em emphasised\} text}
-\end{paste}
-\endImportant
-
-Note the use of the braces to enclose command and "arguments".
-All font commands are specified in the same way. The {\tt \\em} command
-will in fact {\em switch} between roman and emphasised
-font every time it is used.
-\beginImportant
-\begin{paste}{HTXFormatPage3xPaste2}{HTXFormatPage3xPatch2}
-\pastebutton{HTXFormatPage3xPaste2}{Interpret}
-\newline
-{\tt \{\\em this is \{\\em emphasised\} text\}}
-\end{paste}
-\endImportant
-
-If you want to be sure that the emphasized font will be used, specify
-the {\tt \\it} command. Similarly, you can explicitly select the roman font
-with the {\tt \\rm} command.
-\beginImportant
-\begin{paste}{HTXFormatPage3xPaste3}{HTXFormatPage3xPatch3}
-\pastebutton{HTXFormatPage3xPaste3}{Interpret}
-\newline
-{\tt \{\\em this is \{\\it emphasised\} text and this is \{\\rm roman\}\}}
-\end{paste}
-\endImportant
-
-
-The bold font is selected with the {\tt \\bf} command and the typewriter
-font with the {\tt \\tt} command. All these commands can be applied to
-individual characters, words, sentences etc.
-\beginImportant
-\begin{paste}{HTXFormatPage3xPaste4}{HTXFormatPage3xPatch4}
-\pastebutton{HTXFormatPage3xPaste4}{Interpret}
-\newline
-{\tt \{\\bf U\}\{\\tt g\}\{\\it l\}\{\\rm y\}}
-\end{paste}
-\endImportant
-
-
-Currently, \HyperName{} does not adjust its internal spacing rules
-to each font individually. This means that, for consistent results,
-users are encouraged to specify (in the defaults file)
-"character-cell" fonts that are not
-too small or too large for \HyperName{}. Here is the correspondence
-between the above font commands and the defaults names:\newline
-\menuitemstyle{RmFont \tab{26} {\tt \\rm} or {\tt \\em} }\newline
-\menuitemstyle{BoldFont \tab{26} {\tt \\bf} }\newline
-\menuitemstyle{EmphasizeFont \tab{26} {\tt \\it} or {\tt \\em} }\newline
-\menuitemstyle{Ttfont \tab{26} {\tt \\tt} }\newline
-
-\HyperName{} uses two more logical fonts that can be specified by
-the end user : AxiomFont and ActiveFont. However, you cannot
-explicitly use these fonts in your text. The ActiveFont is automatically
-used for active area text and the AxiomFont is reserved for
-active Axiom commands.
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Indentation}{HTXFormatPage4}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage3xPatch1 patch}
-\label{HTXFormatPage3xPatch1}
-\index{patch!HTXFormatPage3xPatch1!htxformatpage3.ht}
-\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch1}
-\index{HTXFormatPage3xPatch1!htxformatpage3.ht!patch}
-<<htxformatpage3.ht>>=
-\begin{patch}{HTXFormatPage3xPatch1}
-\begin{paste}{HTXFormatPage3xPaste1A}{HTXFormatPage3xPatch1A}
-\pastebutton{HTXFormatPage3xPaste1A}{Source}
-\newline
-this is {\em emphasised} text
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage3xPatch1A}
-\begin{paste}{HTXFormatPage3xPaste1B}{HTXFormatPage3xPatch1}
-\pastebutton{HTXFormatPage3xPaste1B}{Interpret}
-\newline
-{\tt this is \{\\em emphasised\} text}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage3xPatch2 patch}
-\label{HTXFormatPage3xPatch2}
-\index{patch!HTXFormatPage3xPatch2!htxformatpage3.ht}
-\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch2}
-\index{HTXFormatPage3xPatch2!htxformatpage3.ht!patch}
-<<htxformatpage3.ht>>=
-\begin{patch}{HTXFormatPage3xPatch2}
-\begin{paste}{HTXFormatPage3xPaste2A}{HTXFormatPage3xPatch2A}
-\pastebutton{HTXFormatPage3xPaste2A}{Source}
-\newline
-{\em this is {\em emphasised} text}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage3xPatch2A}
-\begin{paste}{HTXFormatPage3xPaste2B}{HTXFormatPage3xPatch2}
-\pastebutton{HTXFormatPage3xPaste2B}{Interpret}
-\newline
-{\tt \{\\em this is \{\\em emphasised\} text\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage3xPatch3 patch}
-\label{HTXFormatPage3xPatch3}
-\index{patch!HTXFormatPage3xPatch3!htxformatpage3.ht}
-\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch3}
-\index{HTXFormatPage3xPatch3!htxformatpage3.ht!patch}
-<<htxformatpage3.ht>>=
-\begin{patch}{HTXFormatPage3xPatch3}
-\begin{paste}{HTXFormatPage3xPaste3A}{HTXFormatPage3xPatch3A}
-\pastebutton{HTXFormatPage3xPaste3A}{Source}
-\newline
-{\em this is {\it emphasised} text and this is {\rm roman}}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage3xPatch3A}
-\begin{paste}{HTXFormatPage3xPaste3B}{HTXFormatPage3xPatch3}
-\pastebutton{HTXFormatPage3xPaste3B}{Interpret}
-\newline
-{\tt \{\\em this is \{\\it emphasised\} text and this is \{\\rm roman\}\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage3xPatch4 patch}
-\label{HTXFormatPage3xPatch4}
-\index{patch!HTXFormatPage3xPatch4!htxformatpage3.ht}
-\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch4}
-\index{HTXFormatPage3xPatch4!htxformatpage3.ht!patch}
-<<htxformatpage3.ht>>=
-\begin{patch}{HTXFormatPage3xPatch4}
-\begin{paste}{HTXFormatPage3xPaste4A}{HTXFormatPage3xPatch4A}
-\pastebutton{HTXFormatPage3xPaste4A}{Source}
-\newline
-{\bf U}{\tt g}{\it l}{\rm y}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage3xPatch4A}
-\begin{paste}{HTXFormatPage3xPaste4B}{HTXFormatPage3xPatch4}
-\pastebutton{HTXFormatPage3xPaste4B}{Interpret}
-\newline
-{\tt \{\\bf U\}\{\\tt g\}\{\\it l\}\{\\rm y\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage4.ht}
-\subsection{Indentation}
-\label{HTXFormatPage4}
-\index{pages!HTXFormatPage4!htxformatpage4.ht}
-\index{htxformatpage4.ht!pages!HTXFormatPage4}
-\index{HTXFormatPage4!htxformatpage4.ht!pages}
-<<htxformatpage4.ht>>=
-\begin{page}{HTXFormatPage4}{Indentation}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-You can control the indentation of lines of text in \HyperName{} with
-some useful commands.
-Use the command {\tt \\par} to force a new paragraph if you don't want
-to use the blank-line rule. The first line of a new paragraph
-will normally be indented by a standard small amount. If you
-just want to start on a new line, use the {\tt \\newline}
-command.
-\beginImportant
-\begin{paste}{HTXFormatPage4xPaste1}{HTXFormatPage4xPatch1}
-\pastebutton{HTXFormatPage4xPaste1}{Interpret}
-\newline
-{\tt let us start a new line \\newline here }
-\end{paste}
-\endImportant
-
-The  command {\tt \\indent\{{\it value}\}} will
-set the left-page-margin {\it value} characters
-to the right of the standard left-page-margin.
-The initial (standard) state of a page can be reset by the
-{\tt \\indent\{0\}} command.
-The first lines of paragraphs will be indented
-by the {\it extra} standard  amount. The {\tt \\indent\{{\it value}\}}
-command does {\em not} force a new line or paragraph.
-
-You can also use the {\tt \\indentrel\{{\it value}\}} command.
-Here, the {\it value} argument is a {\em relative} indentation
-which can be positive or negative.
-Otherwise, it behaves in the same way as the {\tt \\indent} command.
-\beginImportant
-\begin{paste}{HTXFormatPage4xPaste2}{HTXFormatPage4xPatch2}
-\pastebutton{HTXFormatPage4xPaste2}{Interpret}
-\newline
-{\tt let us start a new line \\newline \\indent\{10\} here }\newline
-{\tt \\newline \\indentrel\{-5\} there}\newline
-{\tt \\newline \\indentrel\{-5\} back}
-\end{paste}
-\endImportant
-
-The {\tt \\centerline\{{\it some text}\}} command will center its
-argument between the current left and right margins. The argument of
-the command should not be more than a paragraph of text and should not contain
-any commands that change the left margin. The centered text will
-start on a new line.
-\beginImportant
-\begin{paste}{HTXFormatPage4xPaste3}{HTXFormatPage4xPatch3}
-\pastebutton{HTXFormatPage4xPaste3}{Interpret}
-\newline
-{\tt previous text. \\centerline\{This could}\newline
-{\tt be some heading.\} Carry on}
-\end{paste}
-\endImportant
-
-Placing text in vertically aligned columns is easily done with the
-{\tt \\tab\{{\it value}\}} command. The {\tt \\tab} command has the
-immediate effect of placing the next word {\it value} characters to
-the right of the current left margin.
-\beginImportant
-\begin{paste}{HTXFormatPage4xPaste4}{HTXFormatPage4xPatch4}
-\pastebutton{HTXFormatPage4xPaste4}{Interpret}
-\newline
-{\tt \\indent\{5\}\\newline}\newline
-{\tt Team A \\tab\{17\}Score\\tab\{25\}Team B\\tab\{42\}Score\\newline}\newline
-{\tt 012345678901234567890123456789012345678901234567890\\newline}\newline
-{\tt Green-Red\\tab\{17\}4\\tab\{25\}Blue-Black\\tab\{42\}6\\newline}\newline
-{\tt \\indent\{0\}}
-\end{paste}
-\endImportant
-
-If you wish to preserve the indentation of a piece of text
-you can use the {\tt verbatim} group command. Simply place
-a {\tt \\begin\{verbatim\}} and {\tt \\end\{verbatim\}} around
-the text. Note that \HyperName{} commands will
-not be interpreted within the {\tt verbatim} group.
-\beginImportant
-\begin{paste}{HTXFormatPage4xPaste5}{HTXFormatPage4xPatch5}
-\pastebutton{HTXFormatPage4xPaste5}{Interpret}
-\newline
-{\tt \\begin\{verbatim\}}
-\begin{verbatim}
-This    spacing     will be      preserved
-                    {\bf is}     preserved
-\end{verbatim}
-{\tt \\end\{verbatim\}}\newline
-\end{paste}
-
-
-
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Creating Lists and Tables}{HTXFormatPage5}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage4xPatch1 patch}
-\label{HTXFormatPage4xPatch1}
-\index{patch!HTXFormatPage4xPatch1!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch1}
-\index{HTXFormatPage4xPatch1!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch1}
-\begin{paste}{HTXFormatPage4xPaste1A}{HTXFormatPage4xPatch1A}
-\pastebutton{HTXFormatPage4xPaste1A}{Source}
-\newline
-let us start a new line \newline here
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch1A patch}
-\label{HTXFormatPage4xPatch1A}
-\index{patch!HTXFormatPage4xPatch1A!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch1A}
-\index{HTXFormatPage4xPatch1A!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch1A}
-\begin{paste}{HTXFormatPage4xPaste1B}{HTXFormatPage4xPatch1}
-\pastebutton{HTXFormatPage4xPaste1B}{Interpret}
-\newline
-{\tt let us start a new line \\newline here }
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch2 patch}
-\label{HTXFormatPage4xPatch2}
-\index{patch!HTXFormatPage4xPatch2!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch2}
-\index{HTXFormatPage4xPatch2!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch2}
-\begin{paste}{HTXFormatPage4xPaste2A}{HTXFormatPage4xPatch2A}
-\pastebutton{HTXFormatPage4xPaste2A}{Source}
-\newline
-let us start a new line\newline\indent{10} here
-\newline\indentrel{-5} there
-\newline\indentrel{-5} back
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch2A patch}
-\label{HTXFormatPage4xPatch2A}
-\index{patch!HTXFormatPage4xPatch2A!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch2A}
-\index{HTXFormatPage4xPatch2A!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch2A}
-\begin{paste}{HTXFormatPage4xPaste2B}{HTXFormatPage4xPatch2}
-\pastebutton{HTXFormatPage4xPaste2B}{Interpret}
-\newline
-{\tt let us start a new line \\newline \\indent\{10\} here }\newline
-{\tt \\newline \\indentrel\{-5\} there}\newline
-{\tt \\newline \\indentrel\{-5\} back}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch3 patch}
-\label{HTXFormatPage4xPatch3}
-\index{patch!HTXFormatPage4xPatch3!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch3}
-\index{HTXFormatPage4xPatch3!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch3}
-\begin{paste}{HTXFormatPage4xPaste3A}{HTXFormatPage4xPatch3A}
-\pastebutton{HTXFormatPage4xPaste3A}{Source}
-\newline
-previous text. \centerline{This could
-be some heading.} Carry on
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch3A patch}
-\label{HTXFormatPage4xPatch3A}
-\index{patch!HTXFormatPage4xPatch3A!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch3A}
-\index{HTXFormatPage4xPatch3A!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch3A}
-\begin{paste}{HTXFormatPage4xPaste3B}{HTXFormatPage4xPatch3}
-\pastebutton{HTXFormatPage4xPaste3B}{Interpret}
-\newline
-{\tt previous text. \\centerline\{This could}\newline
-{\tt be some heading.\} Carry on}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch4 patch}
-\label{HTXFormatPage4xPatch4}
-\index{patch!HTXFormatPage4xPatch4!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch4}
-\index{HTXFormatPage4xPatch4!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch4}
-\begin{paste}{HTXFormatPage4xPaste4A}{HTXFormatPage4xPatch4A}
-\pastebutton{HTXFormatPage4xPaste4A}{Source}
-\newline
-\indent{5}\newline
-Team A \tab{17}Score\tab{25}Team B\tab{42}Score\newline
-012345678901234567890123456789012345678901234567890\newline
-Green-Red\tab{17}4\tab{25}Blue-Black\tab{42}6\newline
-\indent{0}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage4xPatch4A}
-\begin{paste}{HTXFormatPage4xPaste4B}{HTXFormatPage4xPatch4}
-\pastebutton{HTXFormatPage4xPaste4B}{Interpret}
-\newline
-{\tt \\indent\{5\}\\newline}\newline
-{\tt Team A \\tab\{17\}Score\\tab\{25\}Team B\\tab\{42\}Score\\newline}\newline
-{\tt 012345678901234567890123456789012345678901234567890\\newline}\newline
-{\tt Green-Red\\tab\{17\}4\\tab\{25\}Blue-Black\\tab\{42\}6\\newline}\newline
-{\tt \\indent\{0\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch5 patch}
-\label{HTXFormatPage4xPatch5}
-\index{patch!HTXFormatPage4xPatch5!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch5}
-\index{HTXFormatPage4xPatch5!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch5}
-\begin{paste}{HTXFormatPage4xPaste5A}{HTXFormatPage4xPatch5A}
-\pastebutton{HTXFormatPage4xPaste5A}{Source}
-\begin{verbatim}
-This    spacing     will be      preserved
-                    {\bf is}     preserved
-\end{verbatim}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage4xPatch5A patch}
-\label{HTXFormatPage4xPatch5A}
-\index{patch!HTXFormatPage4xPatch5A!htxformatpage4.ht}
-\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch5A}
-\index{HTXFormatPage4xPatch5A!htxformatpage4.ht!patch}
-<<htxformatpage4.ht>>=
-\begin{patch}{HTXFormatPage4xPatch5A}
-\begin{paste}{HTXFormatPage4xPaste5B}{HTXFormatPage4xPatch5}
-\pastebutton{HTXFormatPage4xPaste5B}{Interpret}
-\newline
-{\tt \\begin\{verbatim\}}
-\begin{verbatim}
-This    spacing     will be      preserved
-                    {\bf is}     preserved
-\end{verbatim}
-{\tt \\end\{verbatim\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage5.ht}
-\subsection{Creating Lists and Tables}
-\label{HTXFormatPage5}
-See HTXFormatPage6 \ref{HTXFormatPage6} on page~\pageref{HTXFormatPage6}
-\index{pages!HTXFormatPage5!htxformatpage5.ht}
-\index{htxformatpage5.ht!pages!HTXFormatPage5}
-\index{HTXFormatPage5!htxformatpage5.ht!pages}
-<<htxformatpage5.ht>>=
-\begin{page}{HTXFormatPage5}{Creating Lists and Tables}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-The {\tt \\begin\{items\} {\rm -}  \\end\{items\}} 
-group command constructs itemized lists.
-The {\tt \\item} command separates the items in the list.
-The indentation rules for the list group are different from those
-of a paragraph. The first line of an item will
-normally extend further to the left than the rest of the lines.
-Both commands accept {\em optional} arguments.
-Optional arguments are enclosed in square brackets ({\tt \[ \]}) rather
-than braces.
-
-The indentation of subsequent lines in an item is determined by the
-optional argument {\it some text} in the 
-{\tt \\begin\{items\}\[{\it some text}\]}
-command. The optional argument is {\em not} displayed. Its width is calculated
-and used to indent all subsequent lines in the group except from the
-first line of each new item. This indentation rule applies to all text
-{\em before} the first {\tt \\item} command as well.
-
-The {\tt \\item\[{\it some text}\]} command specifies the start of a new item.
-The {\it some text} optional argument will be displayed in {\em bold}
-font at the current left-page-margin. Then, the text following the command
-will be displayed in normal fashion with the above indentation rule.
-\beginImportant
-\begin{paste}{HTXFormatPage5xPaste1}{HTXFormatPage5xPatch1}
-\pastebutton{HTXFormatPage5xPaste1}{Interpret}
-\newline
-{\tt \\indent\{5\}}\newline
-{\tt \\begin\{items\}\[how wide am I\]}\newline
-{\tt Here we carry on but a \\newline} \newline
-{\tt new line will be indented } \newline
-{\tt \\item\[how wide am I\] fits nicely. 
-Here is a \\newline new line in an item.}\newline
-{\tt \\item\[again\] to show another item}\newline
-{\tt \\item\[\\\\tab\]\\tab\{0\} can be used \\tab\{15\} effectively}\newline
-{\tt \\end\{items\}}\newline
-{\tt \\indent\{0\}}\newline
-\end{paste}
-\endImportant
-
-
-Note that the {\tt \\begin\{items\}} command immediately sets the left-
-page-margin to a new value. Subsequent 
-{\tt \\tab} or {\tt \\centerline} commands
-refer to this new margin.
-Any explicit margin setting commands included
-in the group {\em will} have the normal effect.
-The {\tt \\par} command does not produce
-the standard paragraph indentation within a list group --- it behaves
-instead like {\tt \\newline}.
-
-
-You can nest list groups like the following example suggests.
-\beginImportant
-\begin{paste}{HTXFormatPage5xPaste2}{HTXFormatPage5xPatch2}
-\pastebutton{HTXFormatPage5xPaste2}{Interpret}
-\newline
-{\tt \\begin\{items\}\[quitealot\]}\newline
-{\tt A nested list:}\newline
-{\tt \\item\[The first\] item of an itemized list is on this line.}\newline
-{\tt \\item\[The second\] item of the list starts here.  It contains another}\newline
-{\tt list nested inside it.}\newline
-{\tt \\begin\{items\}\[somuchmore\]}\newline
-{\tt \\item \[First\]\\tab\{0\}This is the first item of an enumerated}\newline
-{\tt list that is nested within the itemized list.}\newline
-{\tt \\item \[Second\]\\tab\{0\}This is the second item of the inner list.}\newline
-{\tt \\end\{items\}}\newline
-{\tt This is the rest of the second item of the outer list.  It}\newline
-{\tt is no more interesting than any other part of the item.}\newline
-{\tt \\item\[The third\] item of the list.}\newline
-{\tt \\end\{items\}}\newline
-\end{paste}
-\endImportant
-
-Another facility for presenting lists is the {\tt \\table} command.
-The correct syntax for it is : {\tt \\table\{\{{\it item a}\} \{{\it item b}\} {\it ..}\}}.
-The items in the braces will be placed in as many aligned columns
-as is possible for the current window dimensions or page width.
-If one item is particularly long there will probably be only one column
-in the table. Here is a table of color names.
-\beginImportant
-\begin{paste}{HTXFormatPage5xPaste3}{HTXFormatPage5xPatch3}
-\pastebutton{HTXFormatPage5xPaste3}{Interpret}
-\newline
-{\tt
-\\table\{
-\{Dark Orchid\} \{Dark Salmon\} \{Dark Sea Green\} \{Dark Slate Blue\}
-\{Dark Slate Gray\} \{Dark Turquoise\} \{Dark Violet\} \{Deep Pink\}
-\{Deep Sky Blue\} \{Dodger Blue\} \{Floral White\} \{Forest Green\}
-\{Ghost White\} \{Hot Pink\} \{Indian Red\} \{Lavender Blush\}
-\}
-}
-\end{paste}
-\endImportant
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Boxes and Lines}{HTXFormatPage6}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage5xPatch1 patch}
-\label{HTXFormatPage5xPatch1}
-\index{patch!HTXFormatPage5xPatch1!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch1}
-\index{HTXFormatPage5xPatch1!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch1}
-\begin{paste}{HTXFormatPage5xPaste1A}{HTXFormatPage5xPatch1A}
-\pastebutton{HTXFormatPage5xPaste1A}{Source}
-\newline
-\indent{5}
-\begin{items}[how wide am I]
-Here we carry on but a \newline
-new line will be indented
-\item[how wide am I] fits nicely. Here is a \newline new line in an item.
-\item[again] to show another item
-\item[\\tab]\tab{0} can be used \tab{15} effectively
-\end{items}
-\indent{0}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage5xPatch1A patch}
-\label{HTXFormatPage5xPatch1A}
-\index{patch!HTXFormatPage5xPatch1A!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch1A}
-\index{HTXFormatPage5xPatch1A!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch1A}
-\begin{paste}{HTXFormatPage5xPaste1B}{HTXFormatPage5xPatch1}
-\pastebutton{HTXFormatPage5xPaste1B}{Interpret}
-\newline
-{\tt \\indent\{5\}}\newline
-{\tt \\begin\{items\}\[how wide am I\]}\newline
-{\tt Here we carry on but a \\newline} \newline
-{\tt new line will be indented } \newline
-{\tt \\item\[how wide am I\] fits nicely. Here is a \\newline new line in an item.}\newline
-{\tt \\item\[again\] to show another item}\newline
-{\tt \\item\[\\\\tab\]\\tab\{0\} can be used \\tab\{15\} effectively}\newline
-{\tt \\end\{items\}}\newline
-{\tt \\indent\{0\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage5xPatch2 patch}
-\label{HTXFormatPage5xPatch2}
-\index{patch!HTXFormatPage5xPatch2!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch2}
-\index{HTXFormatPage5xPatch2!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch2}
-\begin{paste}{HTXFormatPage5xPaste2A}{HTXFormatPage5xPatch2A}
-\pastebutton{HTXFormatPage5xPaste2A}{Source}
-\newline
-\begin{items}[quitealot]
-A nested list:
-\item[The first] item of an itemized list is on this line.
-\item[The second] item of the list starts here.  It contains another
-list nested inside it.
-\begin{items}[somuchmore]
-\item [First]\tab{0}This is the first item of the
-list that is nested within the itemized list.
-\item [Second]\tab{0}This is the second item of the inner list.
-\end{items}
-This is the rest of the second item of the outer list.  It
-is no more interesting than any other part of the item.
-\item [The third] item of the list.
-\end{items}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage5xPatch2A patch}
-\label{HTXFormatPage5xPatch2A}
-\index{patch!HTXFormatPage5xPatch2A!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch2A}
-\index{HTXFormatPage5xPatch2A!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch2A}
-\begin{paste}{HTXFormatPage5xPaste2B}{HTXFormatPage5xPatch2}
-\pastebutton{HTXFormatPage5xPaste2B}{Interpret}
-\newline
-{\tt \\begin\{items\}\[quitealot\]}\newline
-{\tt A nested list:}\newline
-{\tt \\item\[The first\] item of an itemized list is on this line.}\newline
-{\tt \\item\[The second\] item of the list starts here.  It contains another}\newline
-{\tt list nested inside it.}\newline
-{\tt \\begin\{items\}\[somuchmore\]}\newline
-{\tt \\item \[First\]\\tab\{0\}This is the first item of an enumerated}\newline
-{\tt list that is nested within the itemized list.}\newline
-{\tt \\item \[Second\]\\tab\{0\}This is the second item of the inner list.}\newline
-{\tt \\end\{items\}}\newline
-{\tt This is the rest of the second item of the outer list.  It}\newline
-{\tt is no more interesting than any other part of the item.}\newline
-{\tt \\item\[The third\] item of the list.}\newline
-{\tt \\end\{items\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage5xPatch3 patch}
-\label{HTXFormatPage5xPatch3}
-\index{patch!HTXFormatPage5xPatch3!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch3}
-\index{HTXFormatPage5xPatch3!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch3}
-\begin{paste}{HTXFormatPage5xPaste3A}{HTXFormatPage5xPatch3A}
-\pastebutton{HTXFormatPage5xPaste3A}{Source}
-\newline
-\table{
-{Dark Orchid} {Dark Salmon} {Dark Sea Green} {Dark Slate Blue} {Dark Slate Gray}
-{Dark Turquoise} {Dark Violet} {Deep Pink} {Deep Sky Blue} {Dodger Blue}
-{Floral White} {Forest Green} {Ghost White} {Hot Pink} {Indian Red}
-{Lavender Blush}
-}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage5xPatch3A patch}
-\label{HTXFormatPage5xPatch3A}
-\index{patch!HTXFormatPage5xPatch3A!htxformatpage5.ht}
-\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch3A}
-\index{HTXFormatPage5xPatch3A!htxformatpage5.ht!patch}
-<<htxformatpage5.ht>>=
-\begin{patch}{HTXFormatPage5xPatch3A}
-\begin{paste}{HTXFormatPage5xPaste3B}{HTXFormatPage5xPatch3}
-\pastebutton{HTXFormatPage5xPaste3B}{Interpret}
-\newline
-{\tt
-\\table\{
-\{Dark Orchid\} \{Dark Salmon\} \{Dark Sea Green\} \{Dark Slate Blue\}
-\{Dark Slate Gray\} \{Dark Turquoise\} \{Dark Violet\} \{Deep Pink\}
-\{Deep Sky Blue\} \{Dodger Blue\} \{Floral White\} \{Forest Green\}
-\{Ghost White\} \{Hot Pink\} \{Indian Red\} \{Lavender Blush\}
-\}
-}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage6}
-\subsection{Boxes and Lines}
-\label{HTXFormatPage6}
-\index{pages!HTXFormatPage6!htxformatpage6.ht}
-\index{htxformatpage6.ht!pages!HTXFormatPage6}
-\index{HTXFormatPage6!htxformatpage6.ht!pages}
-<<htxformatpage6.ht>>=
-\begin{page}{HTXFormatPage6}{Boxes and Lines}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-The {\tt \\fbox} command can be used to place a box around one or more
-words. The argument of the {\tt \\fbox} command is the text that will be
-placed in the box. This command should only be used for text that can fit
-in one line.
-
-\beginImportant
-\begin{paste}{HTXFormatPage6xPaste1}{HTXFormatPage6xPatch1}
-\pastebutton{HTXFormatPage6xPaste1}{Interpret}
-\newline
-{\tt \\fbox\{Boxed!\}}\newline
-\end{paste}
-\endImportant
-
-
-Use the {\tt \\horizontalline} command to draw a horizontal line
-across the window. This might be useful for added emphasis.
-
-\beginImportant
-\begin{paste}{HTXFormatPage6xPaste2}{HTXFormatPage6xPatch2}
-\pastebutton{HTXFormatPage6xPaste2}{Interpret}
-\newline
-{\tt \\horizontalline}\newline
-\end{paste}
-\endImportant
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Micro-Spacing}{HTXFormatPage7}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage6xPatch1 patch}
-\label{HTXFormatPage6xPatch1}
-\index{patch!HTXFormatPage6xPatch1!htxformatpage6.ht}
-\index{htxformatpage6.ht!patch!HTXFormatPage6xPatch1}
-\index{HTXFormatPage6xPatch1!htxformatpage6.ht!patch}
-<<htxformatpage6.ht>>=
-\begin{patch}{HTXFormatPage6xPatch1}
-\begin{paste}{HTXFormatPage6xPaste1A}{HTXFormatPage6xPatch1A}
-\pastebutton{HTXFormatPage6xPaste1A}{Source}
-\newline
-\fbox{Boxed!}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage6xPatch1A}
-\begin{paste}{HTXFormatPage6xPaste1B}{HTXFormatPage6xPatch1}
-\pastebutton{HTXFormatPage6xPaste1B}{Interpret}
-\newline
-{\tt \\fbox\{Boxed!\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage6xPatch2 patch}
-\label{HTXFormatPage6xPatch2}
-\index{patch!HTXFormatPage6xPatch2!htxformatpage6.ht}
-\index{htxformatpage6.ht!patch!HTXFormatPage6xPatch2}
-\index{HTXFormatPage6xPatch2!htxformatpage6.ht!patch}
-<<htxformatpage6.ht>>=
-\begin{patch}{HTXFormatPage6xPatch2}
-\begin{paste}{HTXFormatPage6xPaste2A}{HTXFormatPage6xPatch2A}
-\pastebutton{HTXFormatPage6xPaste2A}{Source}
-\newline
-\horizontalline
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage6xPatch2A}
-\begin{paste}{HTXFormatPage6xPaste2B}{HTXFormatPage6xPatch2}
-\pastebutton{HTXFormatPage6xPaste2B}{Interpret}
-\newline
-{\tt \\horizontalline}\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage7}
-\subsection{Micro-Spacing}
-\label{HTXFormatPage7}
-\index{pages!HTXFormatPage7!htxformatpage7.ht}
-\index{htxformatpage7.ht!pages!HTXFormatPage7}
-\index{HTXFormatPage7!htxformatpage7.ht!pages}
-<<htxformatpage7.ht>>=
-\begin{page}{HTXFormatPage7}{Micro-Spacing}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-There are three commands that one can use to exercise finer control
-over the appearance of text on a page: {\tt \\space}, {\tt \\hspace}
-and {\tt \\vspace}.
-
-The {\tt \\space\{{\it value}\}} command accepts an integer argument and simply
-changes the position of the next character to the right or to the left.
-A negative argument will move the next character to the left and a
-positive one to the right. The unit of movement is {\it the width
-of a character}. In this way one can overstrike characters to produce
-various effects.
-
-\beginImportant
-\begin{paste}{HTXFormatPage7xPaste1}{HTXFormatPage7xPatch1}
-\pastebutton{HTXFormatPage7xPaste1}{Interpret}
-\newline
-{\tt 0\\space\{-1\}\\}\newline
-{\tt underlined\\space\{-10\}__________}\newline
-\end{paste}
-\endImportant
-
-
-The {\tt \\hspace\{{\it value}\}} command
-is similar to the {\tt \\space\{{\it value}\}} command.
-It also accepts an integer argument and
-changes the position of the next character to the right or to the left.
-A negative argument will move the next character to the left and a
-positive one to the right. The unit of movement is {\it a pixel}.
-The {\it value} argument specifies an offset from the default placement
-of the character.
-
-\beginImportant
-\begin{paste}{HTXFormatPage7xPaste2}{HTXFormatPage7xPatch2}
-\pastebutton{HTXFormatPage7xPaste2}{Interpret}
-\newline
-{\tt x\\hspace\{-4\}x\\hspace\{-3\}x\\hspace\{-2\}x\\hspace\{-1\}x\%}\newline
-{\tt x\\hspace\{1\}x\\hspace\{2\}x\\hspace\{3\}x\\hspace\{4\}x}
-\end{paste}
-\endImportant
-
-The {\tt \\vspace\{{\it value}\}} command is similar to the
-{\tt \\hspace\{{\it value}\}} command but (as the name suggests)
-works in the vertical direction. The unit of movement is {\it a
-pixel}. The {\it value} argument specifies an offset from {\it
-the next line}. A negative argument moves the next character up
-and a positive down. This command can be used for subscripts and
-superscripts. One drawback in the use of {\tt \\vspace} is that
-it can only work with a particular font at a time. This is
-because the inter-line spacing depends on the font being used
-and the value of it is needed to get "back" on the line.
-In general, the command {\tt \\vspace\{{\it - ils}\}} will
-have a null effect when {\it ils} = ( font ascent + font descent + 5 ).
-The example below assumes that {\it ils} = 25 e.g. the Rom14 font
-on the RISC System/6000.
-
-\beginImportant
-\begin{paste}{HTXFormatPage7xPaste3}{HTXFormatPage7xPatch3}
-\pastebutton{HTXFormatPage7xPaste3}{Interpret}
-\newline
-{\tt CO\\vspace\{-18\}2\\vspace\{-32\} + CaO ->}\newline
-{\tt CaCO\\vspace\{-18\}3\\vspace\{-32\}\\newline}\newline
-{\tt R\\space\{-1\}~\\vspace\{-18\}æv\\vspace\{-32\}}\newline
-{\tt \\hspace\{4\}-\\hspace\{8\}---\\hspace\{-12\}}\newline
-{\tt \\vspace\{-32\}1\\space\{-1\}\\vspace\{-7\}2}\newline
-{\tt \\vspace\{-36\}\\hspace\{8\}g\\space\{-1\}~}\newline
-{\tt \\vspace\{-18\}æv\\vspace\{-32\}\\hspace\{2\}R}\newline
-{\tt \\space\{-1\}~ = T\\vspace\{-18\}æv\\vspace\{-32\}}\newline
-{\tt \\vspace\{-25\}}
-\end{paste}
-\endImportant
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Bitmaps and Images}{HTXFormatPage8}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage7xPatch1 patch}
-\label{HTXFormatPage7xPatch1}
-\index{patch!HTXFormatPage7xPatch1!htxformatpage7.ht}
-\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch1}
-\index{HTXFormatPage7xPatch1!htxformatpage7.ht!patch}
-<<htxformatpage7.ht>>=
-\begin{patch}{HTXFormatPage7xPatch1}
-\begin{paste}{HTXFormatPage7xPaste1A}{HTXFormatPage7xPatch1A}
-\pastebutton{HTXFormatPage7xPaste1A}{Source}
-\newline
-0\space{-1}\\
-underlined\space{-10}__________
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage7xPatch1A}
-\begin{paste}{HTXFormatPage7xPaste1B}{HTXFormatPage7xPatch1}
-\pastebutton{HTXFormatPage7xPaste1B}{Interpret}
-\newline
-{\tt 0\\space\{-1\}\\}\newline
-{\tt underlined\\space\{-10\}__________}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage7xPatch2 patch}
-\label{HTXFormatPage7xPatch2}
-\index{patch!HTXFormatPage7xPatch2!htxformatpage7.ht}
-\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch2}
-\index{HTXFormatPage7xPatch2!htxformatpage7.ht!patch}
-<<htxformatpage7.ht>>=
-\begin{patch}{HTXFormatPage7xPatch2}
-\begin{paste}{HTXFormatPage7xPaste2A}{HTXFormatPage7xPatch2A}
-\pastebutton{HTXFormatPage7xPaste2A}{Source}
-\newline
-x\hspace{-4}x\hspace{-3}x\hspace{-2}x\hspace{-1}x%
-x\hspace{1}x\hspace{2}x\hspace{3}x\hspace{4}x
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage7xPatch2A patch}
-\label{HTXFormatPage7xPatch2A}
-\index{patch!HTXFormatPage7xPatch2A!htxformatpage7.ht}
-\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch2A}
-\index{HTXFormatPage7xPatch2A!htxformatpage7.ht!patch}
-<<htxformatpage7.ht>>=
-\begin{patch}{HTXFormatPage7xPatch2A}
-\begin{paste}{HTXFormatPage7xPaste2B}{HTXFormatPage7xPatch2}
-\pastebutton{HTXFormatPage7xPaste2B}{Interpret}
-\newline
-{\tt x\\hspace\{-4\}x\\hspace\{-3\}x\\hspace\{-2\}x\\hspace\{-1\}x\%}\newline
-{\tt x\\hspace\{1\}x\\hspace\{2\}x\\hspace\{3\}x\\hspace\{4\}x}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage7xPatch3 patch}
-\label{HTXFormatPage7xPatch3}
-\index{patch!HTXFormatPage7xPatch3!htxformatpage7.ht}
-\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch3}
-\index{HTXFormatPage7xPatch3!htxformatpage7.ht!patch}
-<<htxformatpage7.ht>>=
-\begin{patch}{HTXFormatPage7xPatch3}
-\begin{paste}{HTXFormatPage7xPaste3A}{HTXFormatPage7xPatch3A}
-\pastebutton{HTXFormatPage7xPaste3A}{Source}
-\newline
-CO\vspace{-18}2\vspace{-32} + CaO ->
-CaCO\vspace{-18}3\vspace{-32}\newline
-R\space{-1}~\vspace{-18}æv\vspace{-32}
-\hspace{4}-\hspace{8}---\hspace{-12}
-\vspace{-32}1\space{-1}\vspace{-7}2
-\vspace{-36}\hspace{8}g\space{-1}~
-\vspace{-18}æv\vspace{-32}\hspace{2}R
-\space{-1}~ = T\vspace{-18}æv\vspace{-32}
-\vspace{-25}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage7xPatch3A patch}
-\label{HTXFormatPage7xPatch3A}
-\index{patch!HTXFormatPage7xPatch3A!htxformatpage7.ht}
-\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch3A}
-\index{HTXFormatPage7xPatch3A!htxformatpage7.ht!patch}
-<<htxformatpage7.ht>>=
-\begin{patch}{HTXFormatPage7xPatch3A}
-\begin{paste}{HTXFormatPage7xPaste3B}{HTXFormatPage7xPatch3}
-\pastebutton{HTXFormatPage7xPaste3B}{Interpret}
-\newline
-{\tt CO\\vspace\{-18\}2\\vspace\{-32\} + CaO ->}\newline
-{\tt CaCO\\vspace\{-18\}3\\vspace\{-32\}\\newline}\newline
-{\tt R\\space\{-1\}~\\vspace\{-18\}æv\\vspace\{-32\}}\newline
-{\tt \\hspace\{4\}-\\hspace\{8\}---\\hspace\{-12\}}\newline
-{\tt \\vspace\{-32\}1\\space\{-1\}\\vspace\{-7\}2}\newline
-{\tt \\vspace\{-36\}\\hspace\{8\}g\\space\{-1\}~}\newline
-{\tt \\vspace\{-18\}æv\\vspace\{-32\}\\hspace\{2\}R}\newline
-{\tt \\space\{-1\}~ = T\\vspace\{-18\}æv\\vspace\{-32\}}\newline
-{\tt \\vspace\{-25\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformatpage8}
-\subsection{Bitmaps and Images}
-\label{HTXFormatPage8}
-\index{pages!HTXFormatPage8!htxformatpage8.ht}
-\index{htxformatpage8.ht!pages!HTXFormatPage8}
-\index{HTXFormatPage8!htxformatpage8.ht!pages}
-<<htxformatpage8.ht>>=
-\begin{page}{HTXFormatPage8}{Bitmaps and Images}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-The commands {\tt \\inputbitmap\{{\it filename}\}}
-and {\tt \\inputimage\{{\it filename}\}}
-allow you to include an X11 bitmap or an
-Axiom-generated viewport in a \HyperName{}
-page.
-
-In the case of the {\tt \\inputbitmap} command
-the {\it filename} parameter must be the full pathname
-of an X11 bitmap file.
-
-\beginImportant
-\begin{paste}{HTXFormatPage8xPaste1}{HTXFormatPage8xPatch1}
-\pastebutton{HTXFormatPage8xPaste1}{Interpret}
-\newline
-{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
-\end{paste}
-\endImportant
-
-The {\it filename} parameter of the {\tt \\inputimage}
-command must be the full pathname of a {\it compressed XPM image} file without the name extensions.
-\HyperName{} always adds ".xpm.Z" to whatever filename you give and looks for the augmented filename.
-Such files can be generated by Axiom command
-\axiomOp{write} with the {\tt "image"} or {\tt "pixmap"}
-options.
-
-\beginImportant
-\begin{paste}{HTXFormatPage8xPaste2}{HTXFormatPage8xPatch2}
-\pastebutton{HTXFormatPage8xPaste2}{Interpret}
-\newline
-{\tt \\inputimage\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image\}}
-\end{paste}
-\endImportant
-
-Be careful not to break the pathname across lines.
-
-The {\tt \\inputimage} command will automatically select
-the {\it image.xpm} or the {\it image.bm} file for you
-based on the capabilities of your X server. 
-
-For your convenience, there are two macros defined
-in \centerline{ {\bf \env{AXIOM}{}/doc/hypertex/pages/util.ht}.}
-The {\tt \\viewport} macro eliminates the need to specify
-the {\tt .view/image} part and the
-{\tt \\axiomViewport} macro automatically selects viewport
-files in the system directories. The above {\tt \\inputimage}
-could have been written
-\beginImportant
-{\tt \\viewport\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30\}}
-\endImportant
-or
-\beginImportant
-{\tt \\axiomViewport\{ugProblemNumericPage30\}}
-\endImportant
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Back to Formatting menu}{HTXFormatTopPage}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXFormatPage8xPatch1 patch}
-\label{HTXFormatPage8xPatch1}
-\index{patch!HTXFormatPage8xPatch1!htxformatpage8.ht}
-\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch1}
-\index{HTXFormatPage8xPatch1!htxformatpage8.ht!patch}
-<<htxformatpage8.ht>>=
-\begin{patch}{HTXFormatPage8xPatch1}
-\begin{paste}{HTXFormatPage8xPaste1A}{HTXFormatPage8xPatch1A}
-\pastebutton{HTXFormatPage8xPaste1A}{Source}
-\newline
-\inputbitmap{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap}
-\end{paste}
-\end{patch}
-\begin{patch}{HTXFormatPage8xPatch1A}
-\begin{paste}{HTXFormatPage8xPaste1B}{HTXFormatPage8xPatch1}
-\pastebutton{HTXFormatPage8xPaste1B}{Interpret}
-\newline
-{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXFormatPage8xPatch2 patch}
-\label{HTXFormatPage8xPatch2}
-\index{patch!HTXFormatPage8xPatch2!htxformatpage8.ht}
-\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch2}
-\index{HTXFormatPage8xPatch2!htxformatpage8.ht!patch}
-<<htxformatpage8.ht>>=
-\begin{patch}{HTXFormatPage8xPatch2}
-\begin{paste}{HTXFormatPage8xPaste2A}{HTXFormatPage8xPatch2A}
-\pastebutton{HTXFormatPage8xPaste2A}{Source}
-\newline
-\inputimage{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image}
-\end{paste}
-\end{patch}
-@
-\subsection{HTXFormatPage8xPatch2A patch}
-\label{HTXFormatPage8xPatch2A}
-\index{patch!HTXFormatPage8xPatch2A!htxformatpage8.ht}
-\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch2A}
-\index{HTXFormatPage8xPatch2A!htxformatpage8.ht!patch}
-<<htxformatpage8.ht>>=
-\begin{patch}{HTXFormatPage8xPatch2A}
-\begin{paste}{HTXFormatPage8xPaste2B}{HTXFormatPage8xPatch2}
-\pastebutton{HTXFormatPage8xPaste2B}{Interpret}
-\newline
-{\tt \\inputimage\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxformattoppage.ht}
-\subsection{Formatting in Hyperdoc}
-\begin{itemize}
-\item HTXFormatPage1 \ref{HTXFormatPage1} on page~\pageref{HTXFormatPage1}
-\item HTXFormatPage2 \ref{HTXFormatPage2} on page~\pageref{HTXFormatPage2}
-\item HTXFormatPage3 \ref{HTXFormatPage3} on page~\pageref{HTXFormatPage3}
-\item HTXFormatPage4 \ref{HTXFormatPage4} on page~\pageref{HTXFormatPage4}
-\item HTXFormatPage5 \ref{HTXFormatPage5} on page~\pageref{HTXFormatPage5}
-\item HTXFormatPage6 \ref{HTXFormatPage6} on page~\pageref{HTXFormatPage6}
-\item HTXFormatPage7 \ref{HTXFormatPage7} on page~\pageref{HTXFormatPage7}
-\item HTXFormatPage8 \ref{HTXFormatPage8} on page~\pageref{HTXFormatPage8}
-\end{itemize}
-\label{HTXFormatTopPage}
-\index{pages!HTXFormatTopPage!htxformattoppage.ht}
-\index{htxformattoppage.ht!pages!HTXFormatTopPage}
-\index{HTXFormatTopPage!htxformattoppage.ht!pages}
-<<htxformattoppage.ht>>=
-\begin{page}{HTXFormatTopPage}{Formatting in Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-
-\HyperName{} offers various facilities for formatting text and images.
-You can learn about these facilities by clicking on the topics below.
-\begin{scroll}
-\beginmenu
-\menudownlink{Special Characters}{HTXFormatPage1}
-\menudownlink{Formatting without commands}{HTXFormatPage2}
-\menudownlink{Using different fonts}{HTXFormatPage3}
-\menudownlink{Indentation}{HTXFormatPage4}
-\menudownlink{Creating Lists and Tables}{HTXFormatPage5}
-\menudownlink{Boxes and Lines}{HTXFormatPage6}
-\menudownlink{Micro-Spacing}{HTXFormatPage7}
-\menudownlink{Bitmaps and Images}{HTXFormatPage8}
-\endmenu
-\end{scroll}
-\end{page}
-
-
-@
-\section{htxintropage1.ht}
-\subsection{What Hyperdoc does}
-\label{HTXIntroPage1}
-\begin{itemize}
-\item HTXIntroPage2 \ref{HTXIntroPage2} on page~\pageref{HTXIntroPage2}
-\item ugHyperPage \ref{ugHyperPage} on page~\pageref{ugHyperPage}
-\end{itemize}
-\index{pages!HTXIntroPage1!htxintropage1.ht}
-\index{htxintropage1.ht!pages!HTXIntroPage1}
-\index{HTXIntroPage1!htxintropage1.ht!pages}
-<<htxintropage1.ht>>=
-\begin{page}{HTXIntroPage1}{What Hyperdoc does}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\beginscroll
-
-Take a close look at the objects in the \HyperName{} window you are now reading.
-Most of them are text. Resize the window using the window manager
-facilities. The text is reformatted to fit the window
-border. This action is performed by \HyperName{}. At the simplest
-level, it provides a method for {\em formatting} text in a window.
-In fact, it can place other things on the window as well, such as
-bitmaps or color images. The {\em buttons} you see at either
-side at the top of the window are bitmaps.
-
-Move the cursor so that it rests on one of those buttons. You notice that
-the cursor has changed appearance. This indicates that there is an action associated
-with the button. This action will be performed when you click the mouse button
-over the {\em active area}. If you are familiar with \HyperName{}, you know
-that the active area can be words, bitmaps, images or {\em input areas}. In
-fact, anything that can be displayed in a \HyperName{} window can be an
-active area.
-
-So, what can the action associated with an active area be? \HyperName{}
-allows quite a bit of freedom in defining that action. We will have a close
-look at this issue \downlink{later on}{HTXLinkTopPage}. For now, recall
-the various actions that you have encountered so far --- executing Axiom
-commands, popping up new windows, providing parameters for other active areas,
-and replacing or changing the contents of the window. The most common action
-is to bring up some \HyperName{} text in the same or a different window.
-This lets us create {\em links} between pieces of text and images. A
-system with such capability is usually called a {\em hypertext} system.
-\HyperName{} is in fact much more.
-
-\endscroll
-\beginmenu
-\menulink{Next -- How \HyperName{} does it}{HTXIntroPage2}
-\menuwindowlink{Review some features of \HyperName{}}{ugHyperPage}
-\endmenu
-
-\helppage{ugHyperPage}
-\end{page}
-
-@
-\section{htxintropage2.ht}
-\subsection{How Hyperdoc does it}
-\label{HTXIntroPage2}
-See HTXIntroPage3 \ref{HTXIntroPage3} on page~\pageref{HTXIntroPage3}
-\index{pages!HTXIntroPage2!htxintropage2.ht}
-\index{htxintropage2.ht!pages!HTXIntroPage2}
-\index{HTXIntroPage2!htxintropage2.ht!pages}
-<<htxintropage2.ht>>=
-\begin{page}{HTXIntroPage2}{How Hyperdoc does it}
-{\centerline{\fbox{{\tt \thispage}}}\newline}
-\beginscroll
-
-\HyperName{} can read the {\em hypertext} information from standard text
-files. This means that you can create or change this information with any
-text editor. Once this information has been entered into the files, a
-special program, called {\bf htadd}, scans these files and produces
-a database (another file called {\bf ht.db}) of {\em objects}
-encountered in the files. \HyperName{}
-consults this database when it first starts and so knows where it might
-find the definitions of these objects. You can maintain several such
-databases on different directories. You indicate which database you
-want \HyperName{} to consult by setting an {\em environment variable}
-called {\bf HTPATH}.
-
-In general, hypertext must obviously use some kind of special (that is,
-non-textual) marks for all the  extra functionality it provides. In
-\HyperName{}, these marks are some special characters --- special
-in the sense that they are not interpreted as ordinary displayable text.
-These characters, however, are part of the standard ASCII set.
-There is also a way to display these special characters as text .
-The \HyperName{} special characters are :
-
-\beginImportant
-\noindent{\em Special Characters}: {\tt \table{{\$}{\\}{\{}{\}}{\[}{\]}{\%}{\#}}}
-\endImportant
-
-
-
-\HyperName{} uses the special characters to distinguish between
-{\em text} and {\em commands} (by {\em text}, we mean here anything
-displayable). The commands are instructions to
-\HyperName{} to treat some text in a particular way. Some commands
-define special \HyperName{} objects. The most important objects
-are {\em pages}, {\em patches}, and {\em macros}.
-A {\em page} is a description of the contents of a
-\HyperName{} window. A {\em patch} is a portion of a page.
-A {\em macro} is a user-defined new \HyperName{} command.
-Some commands allow special text {\em formatting} and others
-associate some text with an action.
-
-In order to display anything at all in \HyperName, you must define a
-{\em page}. The next section explains how to define a {\em page} and put
-some simple text into it.
-\endscroll
-\beginmenu
-\menudownlink{Next -- Define a simple text page}{HTXIntroPage3}
-\endmenu
-
-\end{page}
-
-
-@
-\section{htxintropage3.ht}
-\subsection{A simple text page}
-\begin{itemize}
-\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
-\item HTXTryPage \ref{HTXTryPage} on page~\pageref{HTXTryPage}
-\item HTXFormatTopPage \ref{HTXFormatTopPage} on 
-page~\pageref{HTXFormatTopPage}
-\end{itemize}
-\label{HTXIntroPage3}
-\index{pages!HTXIntroPage3!htxintropage3.ht}
-\index{htxintropage3.ht!pages!HTXIntroPage3}
-\index{HTXIntroPage3!htxintropage3.ht!pages}
-<<htxintropage3.ht>>=
-\begin{page}{HTXIntroPage3}{A simple text page}
-{\centerline{\fbox{{\tt \thispage}}}\newline}
-\begin{scroll}
-
-
-A page is defined by a {\em group} command. Group commands are used to
-delimit a group, that is, to declare where a group starts and where it
-ends. The proper syntax for a page definition is as follows:
-\beginImportant
-{\tt \\begin\{page\}\{{\it name}\}\{{\it a title}\}}
-\newline
-.
-\newline
-.
-\newline
-.
-\newline
-{\tt \\end\{page\}}
-\beginImportant
-
-Note the use of the special characters {\tt \\}, {\tt \{} and {\tt
-\}}.  The {\tt \\} (backslash) character introduces a command, in this
-case, {\tt begin}.  The {\tt \{ \}} (braces) delimit the {\em
-parameters} to the command.  The first parameter (the word {\tt page})
-specifies this as a page definition command.
-
-The second parameter can be any single unbroken word consisting of
-alphanumeric characters only, and specifies the name of the page by which
-it can be referred to by other commands. You should choose
-this internal name with care so as to avoid potential conflict with
-page names that are defined by the Axiom system. This caveat only
-applies in the case where you have started \HyperName{} with the Axiom
-database --- see \downlink{later on}{HTXLinkPage6}. It is suggested that
-the page names you define start with the letters {\tt UX} (standing for
-{\tt U}ser e{\tt X}tensions). You can have a look at the Axiom
-system database file {\centerline{\bf \env{AXIOM}/doc/hypertex/pages/ht.db} }
-which contains the names of all pages, macros and patches used by Axiom.
-
-The third parameter specifies a title for the page.
-The title of a page is the area at the very top
-of the window, between the buttons. Virtually anything
-that can be put in the main page can also be put in the
-title. As an example, {\em this} page's
-declaration is like this:\newline
-{\tt \\begin\{page\}\{\thispage\}\{A simple text page\}}
-
-Everything you type between the {\tt \\begin\{page\}} command and the next
-{\tt \\end\{page\}} command will become the body of the page. It is
-an error to insert another {\tt \\begin\{page\}} between the two, that is,
-this group command cannot be nested.
-
-There is another useful group command that should be mentioned here
---- the {\em scroll} command. It controls the portion of the page that
-will be scrollable. \HyperName{} will split a page in three sections:
-a {\em header}, a {\em scroll region} and a {\em footer}. \HyperName{}
-will always try to keep the header and footer regions visible on the
-page; the header at the top and the footer at the bottom. The middle
-scroll region will be truncated and a scroll bar will be automatically
-provided if the window becomes too small for the whole contents of the
-page. Only one scroll region can be defined in a page and the correct
-syntax is as follows:
-\beginImportant
-{\tt \\begin\{scroll\}}
-\newline
-.
-\newline
-.
-\newline
-.
-\newline
-{\tt \\end\{scroll\}}
-\beginImportant
-
-This group should be placed inside the relevant page group. The text
-between the {\tt \\begin\{page\}} and {\tt \\begin\{scroll\}} commands
-defines the header region, the text inside the scroll group defines
-the scroll region and the text between the {\tt \\end\{scroll\}} and
-{\tt \\end\{page\}} commands defines the footer region. It is
-important to keep the header and footer areas small.  Use them to
-display information that might be needed at any time by the user.  If
-you don't define a scroll region in your page, you may find that a
-portion of the page is truncated.
-
-You are now ready to experiment with a page of your own. If you just
-want to display some text on a page, you don't need any other
-\HyperName{} commands. Just make sure that the text you type for the
-title, header, scroll and footer regions does not contain (for the
-moment) any of the \HyperName{} special characters.
-
-\end{scroll}
-\beginmenu
-\menuwindowlink{Try out what you learned}{HTXTryPage}
-\menudownlink{Next -- Learn how to format text}{HTXFormatTopPage}
-\endmenu
-\end{page}
-
-
-@
-\section{htxintrotoppage.ht}
-\subsection{First Steps}
-\begin{itemize}
-\item HTXIntroPage1 \ref{HTXIntroPage1} on page~\pageref{HTXIntroPage1}
-\item HTXIntroPage2 \ref{HTXIntroPage2} on page~\pageref{HTXIntroPage2}
-\item HTXIntroPage3 \ref{HTXIntroPage3} on page~\pageref{HTXIntroPage3}
-\end{itemize}
-\label{HTXIntroTopPage}
-\index{pages!HTXIntroTopPage!htxintrotoppage.ht}
-\index{htxintrotoppage.ht!pages!HTXIntroTopPage}
-\index{HTXIntroTopPage!htxintrotoppage.ht!pages}
-<<htxintrotoppage.ht>>=
-\begin{page}{HTXIntroTopPage}{First Steps}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\beginscroll
-
-\HyperName{} is both a way of presenting information and
-a customisable front-end. Axiom uses
-it for its own purpose as a front-end and documentation system.
-\HyperName{} has special facilities that allow it to interact
-very closely with Axiom.  The \Browse{} facility, the Basic
-Commands section and the ability to execute Axiom commands
-by clicking on \HyperName{} text are witness to this.
-
-These pages will show you the features of \HyperName{} that might
-make it appropriate for your own use in, for example, providing
-documentation for Axiom code that you write or some other purpose.
-
-It is recommended that you get familiar with the {\em use} of
-\HyperName{} before proceeding.
-
-\endscroll
-\beginmenu
-\menudownlink{What \HyperName{} does}{HTXIntroPage1}
-\menudownlink{How \HyperName{} does it}{HTXIntroPage2}
-\menudownlink{Define a simple text page}{HTXIntroPage3}
-\endmenu
-
-\end{page}
-
-@
-\section{htxlinkpage1.ht}
-\subsection{Linking to a named page}
-\label{HTXLinkPage1}
-\begin{itemize}
-\item HTXLinkTopPage \ref{HTXLinkTopPage} on page~\pageref{HTXLinkTopPage}
-\item TestHelpPage \ref{TestHelpPage} on page~\pageref{TestHelpPage}
-\item HTXLinkPage2 \ref{HTXLinkPage2} on page~pageref{HTXLinkPage2}
-\end{itemize}
-\index{pages!HTXLinkPage1!htxlinkpage1.ht}
-\index{htxlinkpage1.ht!pages!HTXLinkPage1}
-\index{HTXLinkPage1!htxlinkpage1.ht!pages}
-<<htxlinkpage1.ht>>=
-\begin{page}{HTXLinkPage1}{Linking to a named page}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-In \HyperName{}, hypertext links are specified by different
-flavors of the {\tt \\link} command. These commands take two
-arguments. One argument specifies the active area, that
-is, the {\it trigger} of the link. The second argument specifies the
-{\it target} of the link, that is, a page. The trigger can be quite arbitrary
-\HyperName{} text and can include images or whole paragraphs. The trigger
-text will be formatted in the normal fashion but its default font will be
-the font specified by the ActiveFont resource.
-
-The simplest kind of \HyperName{} link is a link to a named page.
-Clicking on the trigger will cause the named page to appear in a
-\HyperName{} window.
-There are three flavors for such a link.
-\begin{items}[123456]
-\item\menuitemstyle{{\tt \\windowlink\{{\it trigger}\}\{{\it page name}\}}}
-\newline
-This link command, when activated, will create a new window for the named page.
-\newline
-There will be no \centerline{\UpBitmap{}  or \ReturnBitmap{}}  
-buttons on the new page.
-The new page will have a \centerline{\ExitBitmap{}} button, however.
-The original page containing the {\tt \\windowlink} command will be unaffected.
-\item\menuitemstyle{{\tt \\downlink\{{\it trigger}\}\{{\it page name}\}} }
-\newline This link command, when activated, will cause the
-current page to be replaced by the target page
-in the same \HyperName{} window.
-A \centerline{\UpBitmap{}}  button will automatically be placed
-on the new page allowing you to get back to the page
-containing the {\tt \\downlink} command.
-If the current page has a \centerline{\ReturnBitmap{}} button then
-the target page will also carry it. The associated
-target page of that button will be the same as it is
-in the current page.
-\item\menuitemstyle{{\tt \\memolink\{{\it trigger}\}\{{\it page name}\}}}
-\newline This link command is similar to the {\tt \\downlink} command.
-In addition, it will cause a \centerline{\ReturnBitmap{}}  
-button to be included in
-the target page and all pages {\tt \\downlink}ed from it. 
-This button will act as a
-direct link to the page containing the {\tt \\memolink} command allowing
-a short-cut to be taken.
-\end{items}
-
-\beginImportant
-\begin{paste}{HTXLinkPage1xPaste1}{HTXLinkPage1xPatch1}
-\pastebutton{HTXLinkPage1xPaste1}{Interpret}
-\newline
-{\tt \\windowlink\{windowlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
-{\tt \\downlink\{downlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
-{\tt \\memolink\{memolink to Actions menu\}\{HTXLinkTopPage\}}
-\end{paste}
-\endImportant
-
-
-There is a fourth button that can appear at the top of the page
-next to the \centerline{\ExitBitmap{}} button.
-Its purpose is to provide access to a particular {\it help page}
-associated with the current page.
-That is the \centerline{\HelpBitmap{}} button. The command to use
-is
-\centerline{{\tt \\helppage\{{\it help page name}\}}}
-The {\tt \\helppage} command {\it must } be placed
-just before the {\tt \\end\{page\}} command.
-For instance, to get a help button on this page
-the following command is used.
-\centerline{{\tt {\\helppage\{TestHelpPage\}}}}
-Clicking on the help button at the top
-will display the {\tt TestHelpPage} page in a new window.
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Standard Pages}{HTXLinkPage2}
-\endmenu
-
-\helppage{TestHelpPage}
-\end{page}
-
-@
-\subsection{HTXLinkPage1xPatch1 patch}
-\label{HTXLinkPage1xPatch1}
-\index{patch!HTXLinkPage1xPatch1!htxlinkpage1.ht}
-\index{htxlinkpage1.ht!patch!HTXLinkPage1xPatch1}
-\index{HTXLinkPage1xPatch1!htxlinkpage1.ht!patch}
-<<htxlinkpage1.ht>>=
-\begin{patch}{HTXLinkPage1xPatch1}
-\begin{paste}{HTXLinkPage1xPaste1A}{HTXLinkPage1xPatch1A}
-\pastebutton{HTXLinkPage1xPaste1A}{Source}
-\newline
-\windowlink{windowlink to Actions
-menu}{HTXLinkTopPage}\newline
-\downlink{downlink to Actions menu}{HTXLinkTopPage}\newline
-\memolink{memolink to Actions menu}{HTXLinkTopPage}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage1xPatch1A patch}
-\label{HTXLinkPage1xPatch1A}
-\index{patch!HTXLinkPage1xPatch1A!htxlinkpage1.ht}
-\index{htxlinkpage1.ht!patch!HTXLinkPage1xPatch1A}
-\index{HTXLinkPage1xPatch1A!htxlinkpage1.ht!patch}
-<<htxlinkpage1.ht>>=
-\begin{patch}{HTXLinkPage1xPatch1A}
-\begin{paste}{HTXLinkPage1xPaste1B}{HTXLinkPage1xPatch1}
-\pastebutton{HTXLinkPage1xPaste1B}{Interpret}
-\newline
-{\tt \\windowlink\{windowlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
-{\tt \\downlink\{downlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
-{\tt \\memolink\{memolink to Actions menu\}\{HTXLinkTopPage\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{Test Help Page}
-\label{TestHelpPage}
-\index{pages!TestHelpPage!htxlinkpage1.ht}
-\index{htxlinkpage1.ht!pages!TestHelpPage}
-\index{TestHelpPage!htxlinkpage1.ht!pages}
-<<htxlinkpage1.ht>>=
-\begin{page}{TestHelpPage}{Test Help Page}
-\begin{scroll}
-
-\vspace{100}
-\centerline{Is this any help?}
-\end{scroll}
-\end{page}
-
-@
-\section{htxlinkpage2.ht}
-\subsection{Standard Pages}
-\label{HTXLinkPage2}
-\begin{itemize}
-\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
-\item SpadNotConnectedPage \ref{SpadNotConnectedPage} on 
-page~\pageref{SpadNotConnectedPage}
-\item UnknownPage \ref{UnknownPage} on page~\pageref{UnknownPage}
-\item ErrorPage \ref{ErrorPage} on page~\pageref{ErrorPage}
-\item ProtectedQuitPage \ref{ProtectedQuitPage} on 
-page~\pageref{ProtectedQuitPage}
-\item HTXLinkPage3 \ref{HTXLinkPage3} on page~\pageref{HTXLinkPage3}
-\end{itemize}
-\index{pages!HTXLinkPage2!htxlinkpage2.ht}
-\index{htxlinkpage2.ht!pages!HTXLinkPage2}
-\index{HTXLinkPage2!htxlinkpage2.ht!pages}
-<<htxlinkpage2.ht>>=
-\begin{page}{HTXLinkPage2}{Standard Pages}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-You have reached this page after performing
-a series of mouse clicks on \HyperName{}
-active areas. Each time, a {\tt \\link}
-command was activated. Well, how does it all
-start?
-The answer is that \HyperName{} always puts up
-a particular page called {\tt RootPage} when
-it starts up. If this page is not found in the database,
-\HyperName{} will immediately exit.
-It is, of course, desirable that the {\tt RootPage}
-contains links to other pages!
-It is possible to override
-Axiom's choice of {\tt RootPage} and provide your own
-to \HyperName{}. This is done in the same way as
-you would override any Axiom-defined page and is
-discussed in \downlink{How to use your pages with \HyperName{}}{HTXLinkPage6}.
-
-
-
-You may have noticed that \HyperName{}
-uses some pages when certain events occur.
-There is a page that is put up, for instance,
-whenever \HyperName{} cannot connect to Axiom.
-Another page is put up whenever there is a formatting
-error and yet another when a request for an unknown page
-is made. Finally, there is a page that prompts
-for confirmation when you press the
-exit button on the initial page.
-
-
-These pages have standard names and must be provided
-in the \HyperName{} page database.
-They are already defined in the Axiom system
-\HyperName{} page database so that you do not have to
-define them yourself.
-
-Here are the pages required by \HyperName{}. You can click on any of these
-to see their contents. Click on their exit buttons when you are finished.
-
-\beginImportant
-\begin{paste}{HTXLinkPage2xPaste1}{HTXLinkPage2xPatch1}
-\pastebutton{HTXLinkPage2xPaste1}{Interpret}
-\newline
-{\tt \\table\{}\newline
-{\tt \{\\windowlink\{SpadNotConnectedPage\}\{SpadNotConnectedPage\}\}}\newline
-{\tt \{\\windowlink\{UnknownPage\}\{UnknownPage\}\}}\newline
-{\tt \{\\windowlink\{ErrorPage\}\{ErrorPage\}\}}\newline
-{\tt \{\\windowlink\{ProtectedQuitPage\}\{ProtectedQuitPage\}\}}\newline
-{\tt \}}\newline
-\end{paste}
-\endImportant
-
-
-In addition, \HyperName{} uses certain bitmaps for its buttons.
-They are also provided in the Axiom system
-bitmap directory and \HyperName{} knows where to find them.
-
-The bitmap files required by \HyperName{} are the following.
-\newline
-\tab{7}{\it exit.bitmap}\tab{22} = \tab{25}{\ExitBitmap{}} \newline
-\tab{7}{\it help2.bitmap}\tab{22} = \tab{25}{\HelpBitmap{}} \newline
-\tab{7}{\it up3.bitmap}\tab{22} = \tab{25}{\UpBitmap{}}\newline
-\tab{7}{\it return3.bitmap}\tab{22} = \tab{25}{\ReturnBitmap{}}\newline
-\tab{7}{\it noop.bitmap}\tab{22} = \tab{25}{\NoopBitmap{}}
-
-These files must exist in your current directory if
-the {\tt AXIOM} environment variable is not set.
-If it is, then \HyperName{} will assume that it points
-to the Axiom system directory and will look for
-these files in
-{\bf \$AXIOM/doc/hypertex/bitmaps}.
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Active Axiom commands}{HTXLinkPage3}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXLinkPage2xPatch1 patch}
-\label{HTXLinkPage2xPatch1}
-\index{patch!HTXLinkPage2xPatch1!htxlinkpage2.ht}
-\index{htxlinkpage2.ht!patch!HTXLinkPage2xPatch1}
-\index{HTXLinkPage2xPatch1!htxlinkpage2.ht!patch}
-<<htxlinkpage2.ht>>=
-\begin{patch}{HTXLinkPage2xPatch1}
-\begin{paste}{HTXLinkPage2xPaste1A}{HTXLinkPage2xPatch1A}
-\pastebutton{HTXLinkPage2xPaste1A}{Source}
-\newline
-\table{
-{\windowlink{SpadNotConnectedPage}{SpadNotConnectedPage}}
-{\windowlink{UnknownPage}{UnknownPage}}
-{\windowlink{ErrorPage}{ErrorPage}}
-{\windowlink{ProtectedQuitPage}{ProtectedQuitPage}}
-}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage2xPatch1A patch}
-\label{HTXLinkPage2xPatch1A}
-\index{patch!HTXLinkPage2xPatch1A!htxlinkpage2.ht}
-\index{htxlinkpage2.ht!patch!HTXLinkPage2xPatch1A}
-\index{HTXLinkPage2xPatch1A!htxlinkpage2.ht!patch}
-<<htxlinkpage2.ht>>=
-\begin{patch}{HTXLinkPage2xPatch1A}
-\begin{paste}{HTXLinkPage2xPaste1B}{HTXLinkPage2xPatch1}
-\pastebutton{HTXLinkPage2xPaste1B}{Interpret}
-\newline
-{\tt \\table\{}\newline
-{\tt \{\\windowlink\{SpadNotConnectedPage\}\{SpadNotConnectedPage\}\}}\newline
-{\tt \{\\windowlink\{UnknownPage\}\{UnknownPage\}\}}\newline
-{\tt \{\\windowlink\{ErrorPage\}\{ErrorPage\}\}}\newline
-{\tt \{\\windowlink\{ProtectedQuitPage\}\{ProtectedQuitPage\}\}}\newline
-{\tt \}}\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxlinkpage3.ht}
-\subsection{Active Axiom commands}
-\label{HTXLinkPage3}
-See HTXLinkPage4 \ref{HTXLinkPage4} on page~\pageref{HTXLinkPage4}
-\index{pages!HTXLinkPage3!htxlinkpage3.ht.ht}
-\index{htxlinkpage3.ht.ht!pages!HTXLinkPage3}
-\index{HTXLinkPage3!htxlinkpage3.ht.ht!pages}
-<<htxlinkpage3.ht.ht>>=
-\begin{page}{HTXLinkPage3}{Active Axiom commands}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-This section explains how to include Axiom
-commands in your page. The commands we will
-introduce are actually {\it macros} that are defined
-in
-\centerline{{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
-This means that you can use them only if you include
-this file in your \HyperName{} database.
-
-The first command to learn is
-\horizontalline
-{\tt \\axiomcommand\{ {\it command }{\tt \ \\free\{}{\it var1 var2 ...}{\tt \}\ \\bound\{}{\it var}{\tt \}\ \}} }
-\horizontalline
-
-
-The {\tt \\free\{\}} and {\tt \\bound\{\}} directives are optional.
-We will come to them in a minute. The {\it command} above is the
-text of the Axiom command. Only single line commands are allowed
-here.
-This text will be displayed in the reserved AxiomFont logical
-font.  The area of the text will be active and clicking on it
-will attempt to send the command to Axiom for evaluation.
-A new Axiom interpreter window (and Axiom frame)
-will be created if this was the first Axiom command
-activated in the current page. If not, the command will be sent
-to the already opened Axiom interpreter window for the current page.
-Note that it {\it is} necessary to escape special
-\HyperName{} characters with the {\tt '\\'} backslash character.
-The exceptions are the characters {\tt \[\]}; they do not
-need to be escaped in this context.
-
-\beginImportant
-\begin{paste}{HTXLinkPage3xPaste1}{HTXLinkPage3xPatch1}
-\pastebutton{HTXLinkPage3xPaste1}{Interpret}
-\newline
-{\tt \\axiomcommand\{ l:=brace[1,2,3] ; length:=\\\# l ; m:=[1,2]\}}
-\end{paste}
-\endImportant
-
-
-The optional {\tt \\free\{\}} and {\tt \\bound\{\}} directives
-provide dependency control. The reader of a \HyperName{}
-page is not forced to click on the commands in the
-order in which in they appear on the page.  If the
-correct {\tt \\free\{\}} and {\tt \\bound\{\}}
-specifications are made, clicking on a command
-will result in execution of all those other
-commands that should be executed before it.
-This will {\it only} happen the first time the command is
-clicked.
-
-So, how are the dependencies specified?
-The arguments of the {\tt \\free\{\}} directive must
-be space-separated words (labels). The argument of {\tt \\bound\{\}}
-must be a single (unique for the page) label. Each label in the {\tt \\free\{\}} list
-must exist as an argument to one (and only one) {\tt \\bound\{\}} directive
-somewhere in the current page.
-When the command is activated, \HyperName{} will look
-in the {\tt \\free\{\}} list and check each label.
-For each label, it will find the command that specifies that label
-in its {\tt \\bound\{\}} directive and
-execute it if it has not been already executed.
-The order of labels in the {\tt \\free\{\}} directive list
-is respected. \HyperName{} will follow all
-dependency links recursively.
-
-Here is  an example.
-Clicking on the third command will automatically
-execute all of them in the correct sequence.
-Note that in this case the order of labels in the last
-line is immaterial since {\tt v2} explicitly depends on {\tt v1}.
-
-\beginImportant
-\begin{paste}{HTXLinkPage3xPaste2}{HTXLinkPage3xPatch2}
-\pastebutton{HTXLinkPage3xPaste2}{Interpret}
-\newline
-{\tt \\axiomcommand\{a:=1;d:=4 \\bound\{v1\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\axiomcommand\{b:=a+3 \\free\{v1\} \\bound\{v2\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\axiomcommand\{c:=b+d \\free\{v1 v2\} \\bound\{v3\}\}}\newline
-\end{paste}
-\endImportant
-
-The second command deals with multi-line Axiom
-code. This is the command to use for execution of
-an Axiom {\it pile}. It is a {\it group}
-command. The proper syntax for it is as follows:
-\horizontalline
-{\tt \\begin\{spadsrc\}\ [\\free\{{\it var1 var2} ...\}\ \\bound\{{\it var}\}]}
-\newline
-.
-\newline
-.
-\newline
-{\tt \\end\{spadsrc\}}
-\horizontalline
-
-Again, the {\tt \\free} and {\tt \\bound} directives are
-optional. If they are specified (in exactly the same way
-as {\tt \\axiomcommand}), they must be enclosed in
-square brackets {\tt []}.
-The lines between the {\tt \\begin} and {\tt \\end}
-contain the Axiom statements. Indentation
-will be respected. \HyperName{} will
-actually save this part in a temporary file
-and instruct Axiom to read the file
-with the {\tt )read} system command.
-
-Here is an example. The execution of the following
-fragment is dependent on the {\tt v3} label.
-Make sure that previous commands are active (and
-hence the label {\tt v3} is "visible") before
-trying to execute it. If the label {\tt v3}
-is not seen in the page, \HyperName{} will
-print an error message on standard output
-and ignore the dependency.
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage3xPaste3}{HTXLinkPage3xPatch3}
-\pastebutton{HTXLinkPage3xPaste3}{Interpret}
-\newline
-{\tt \\begin\{spadsrc\}\ [\\free\{v3\}\ \\bound\{v4\}]}\newline
-{\tt f\ x\ ==}\newline
-{\tt \ \ \ x+c}\newline
-{\tt f\ 3}\newline
-{\tt \\end\{spadsrc\}}
-\end{paste}
-\endImportant
-
-There is, in fact, more that one can do
-with Axiom commands. In pages elsewhere
-in the system, Axiom commands appear next
-to button like this \ \MenuDotBitmap{}.
-Clicking on this button, one can see the output
-for that command. The output has been
-pre-computed and is also stored in
-\HyperName{} files. This is done using
-{\it patch} and {\it paste}.
-It is the same mechanism that
-is used to alternatively display
-\HyperName{} source and interpreted
-result in this and other pages.
-It is explained \downlink{later on}{HTXAdvPage5}.
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Linking to Lisp}{HTXLinkPage4}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXLinkPage3xPatch1 patch}
-\label{HTXLinkPage3xPatch1}
-\index{patch!HTXLinkPage3xPatch1!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch1}
-\index{HTXLinkPage3xPatch1!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch1}
-\begin{paste}{HTXLinkPage3xPaste1A}{HTXLinkPage3xPatch1A}
-\pastebutton{HTXLinkPage3xPaste1A}{Source}
-\newline
-\axiomcommand{ l:=brace[1,2,3] ; length:=\# l ; m:=[1,2]}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage3xPatch1A patch}
-\label{HTXLinkPage3xPatch1A}
-\index{patch!HTXLinkPage3xPatch1A!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch1A}
-\index{HTXLinkPage3xPatch1A!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch1A}
-\begin{paste}{HTXLinkPage3xPaste1B}{HTXLinkPage3xPatch1}
-\pastebutton{HTXLinkPage3xPaste1B}{Interpret}
-\newline
-{\tt \\axiomcommand\{ l:=brace[1,2,3] ; length:=\\\# l ; m:=[1,2]\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage3xPatch2 patch}
-\label{HTXLinkPage3xPatch2}
-\index{patch!HTXLinkPage3xPatch2!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch2}
-\index{HTXLinkPage3xPatch2!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch2}
-\begin{paste}{HTXLinkPage3xPaste2A}{HTXLinkPage3xPatch2A}
-\pastebutton{HTXLinkPage3xPaste2A}{Source}
-\newline
-\axiomcommand{a:=1;d:=4 \bound{v1}}
-\newline
-\axiomcommand{b:=a+3 \free{v1} \bound{v2}}
-\newline
-\axiomcommand{c:=b+d \free{v1 v2} \bound{v3}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage3xPatch2A patch}
-\label{HTXLinkPage3xPatch2A}
-\index{patch!HTXLinkPage3xPatch2A!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch2A}
-\index{HTXLinkPage3xPatch2A!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch2A}
-\begin{paste}{HTXLinkPage3xPaste2B}{HTXLinkPage3xPatch2}
-\pastebutton{HTXLinkPage3xPaste2B}{Interpret}
-\newline
-{\tt \\axiomcommand\{a:=1;d:=4 \\bound\{v1\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\axiomcommand\{b:=a+3 \\free\{v1\} \\bound\{v2\}\}}\newline
-{\tt \\newline}\newline
-{\tt \\axiomcommand\{c:=b+d \\free\{v1 v2\} \\bound\{v3\}\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage3xPatch3 patch}
-\label{HTXLinkPage3xPatch3}
-\index{patch!HTXLinkPage3xPatch3!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch3}
-\index{HTXLinkPage3xPatch3!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch3}
-\begin{paste}{HTXLinkPage3xPaste3A}{HTXLinkPage3xPatch3A}
-\pastebutton{HTXLinkPage3xPaste3A}{Source}
-\newline
-\begin{spadsrc} [\free{v3} \bound{v4}]
-f x ==
-   x+c
-f 3
-\end{spadsrc}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage3xPatch3A patch}
-\label{HTXLinkPage3xPatch3A}
-\index{patch!HTXLinkPage3xPatch3A!htxlinkpage3.ht}
-\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch3A}
-\index{HTXLinkPage3xPatch3A!htxlinkpage3.ht!patch}
-<<htxlinkpage3.ht>>=
-\begin{patch}{HTXLinkPage3xPatch3A}
-\begin{paste}{HTXLinkPage3xPaste3B}{HTXLinkPage3xPatch3}
-\pastebutton{HTXLinkPage3xPaste3B}{Interpret}
-\newline
-{\tt \\begin\{spadsrc\}\ [\\free\{v3\}\ \\bound\{v4\}]}\newline
-{\tt f\ x\ ==}\newline
-{\tt \ \ \ x+c}\newline
-{\tt f\ 3}\newline
-{\tt \\end\{spadsrc\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxlinkpage4.ht}
-\subsection{Linking to Lisp}
-\label{HTXLinkPage4}
-See HTXLinkPage5 \ref{HTXLinkPage5} on page~\pageref{HTXLinkPage5}
-\index{pages!HTXLinkPage4!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!pages!HTXLinkPage4}
-\index{HTXLinkPage4!htxlinkpage4.ht!pages}
-<<htxlinkpage4.ht>>=
-\begin{page}{HTXLinkPage4}{Linking to Lisp}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-Another feature of the Axiom\hspace{2}--\HyperName{}
-link is the ability to execute {\it Lisp}
-code at a click of a button.
-There are two things one can do.
-
-The first is to cause the evaluation
-of a {\it Lisp} form and ignore (as far as \HyperName{}
-is concerned) its value. The evaluation of the function
-might have an effect however on your Axiom session.
-
-The command for this is
-\horizontalline
-\centerline{ {\tt \\lispcommand\{{\it text}\}\{{\it Lisp form}\}}}
-\horizontalline
-
-Here is an example. We will first define a {\it Lisp} function
-and then execute it.  Notice that the \HyperName{}
-special characters must be escaped (this is on top
-of {\it Lisp} escaping conventions).
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage4xPaste1}{HTXLinkPage4xPatch1}
-\pastebutton{HTXLinkPage4xPaste1}{Interpret}
-\newline
-{\tt \\lispcommand\{Definition\}\{(defun HTXTESTFUNCTION ()}\newline
-{\tt  (print "Hello from HyperDoc \\\\\\\\ \\\% \\\{ \\\}"))\}} \newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Execution\}\{(HTXTESTFUNCTION)\}} \newline
-\end{paste}
-\endImportant
-
-Your command will be executed as soon as
-Axiom completes any computation it might be
-carrying out.
-
-
-%\axiomcommand{)lisp (defun f () (pprint "hello"))}
-%\lispcommand{f}{(|f|)}
-
-
-The second thing you can do is quite powerful. It allows you
-to delegate to a {\it Lisp} function
-the {\it dynamic} creation of a page. This is used
-in \Browse{} to present
-the Axiom Library in a hypertext form.
-
-The command to use is a lot like the {\tt link} commands
-you encountered \downlink{earlier}{HTXLinkPage1} and comes in three flavours.
-\centerline{{\tt \\lispwindowlink\{{\it trigger}\}\{{\it Lisp form}\}}}
-\centerline{{\tt \\lispdownlink\{{\it trigger}\}\{{\it Lisp form}\}}}
-\centerline{{\tt \\lispmemolink\{{\it trigger}\}\{{\it Lisp form}\}}}
-
-The difference between the three versions is the same as before.
-When such a link is activated, \HyperName{} issues the
-{\it Lisp form} to Axiom and waits for a full
-page definition. An important point to note is that
-\HyperName{} does {\it not} use
-the value of the {\it Lisp form} but, instead, it
-depends on its {\it side-effects}.
-What {\it must} happen during evaluation
-of the form is enough evaluations of a special {\it Lisp}
-function called {\bf issueHT} to define a page.
-The argument of {\bf issueHT} is a string
-containing \HyperName{} text. Perhaps an example will clarify
-matters.
-
-First we will define a {\it Lisp} function that accepts
-a string argument and calls {\bf issueHT} a few times.
-The strings that are passed to {\bf issueHT} construct
-a \HyperName{} page that would just contain our
-original argument centered roughly on the page.
-Then we write the {\tt \\lisplink} with a call to
-the function. Finally, we execute a {\it Lisp}
-command that just pretty--prints the function's definition.
-
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage4xPaste2}{HTXLinkPage4xPatch2}
-\pastebutton{HTXLinkPage4xPaste2}{Interpret}
-\newline
-{\tt \\lispcommand\{Definition\}\{(defun HTXTESTPAGE (x) (|issueHT|}\newline
-{\tt  "\\\\\\\\begin\\\{page\\\}\\\{LispTestPage\\\}\\\{Lisp Test Page\\\}}\newline
-{\tt  \\\\\\\\vspace\\\{150\\\} \\\\\\\\centerline\\\{") (|issueHT| x) (|issueHT|}\newline
-{\tt  "\\\} \\\\\\\\end\\\{page\\\}" ) ) \}}\newline
-{\tt \\newline}\newline
-{\tt \\lispwindowlink\{Link to it\}\{(HTXTESTPAGE "Hi there")\}}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Show Lisp definition\}\{(pprint (symbol-function 'HTXTESTPAGE))\}}\newline
-\end{paste}
-\endImportant
-
-The {\tt '\\\{'} and {\tt '\\\}'} is required to escape
-\HyperName{}'s special characters {\tt '\{'} and {\tt  '\}'}.
-The {\tt '\\\\\\\\'} has the following rationale.
-We need to send to \HyperName{} (from {\it Lisp}) the sequence
-{\tt \\begin}. But {\tt '\\'} is a special {\it Lisp}
-character. Therefore the {\it Lisp} string must be
-{\tt '\\\\begin'}. But to specify this
-in \HyperName{} we need to escape the two {\tt '\\'}.
-Therefore, we write {\tt '\\\\\\\\begin'}.
-
-
-The definition of {\tt HTXTESTPAGE} would have been written in {\it Lisp}
-as follows.
-\begin{verbatim}
-(defun HTXTESTPAGE (X)
-   (|issueHT|
-      "\\begin{page}{LispTestPage}{Lisp Test Page} \\vspace{200} \\centerline{")
-   (|issueHT| X)
-   (|issueHT| "} \\end{page}"))
-\end{verbatim}
-
-
-
-You should not execute {\tt HTXTESTPAGE} in the
-{\it Lisp} environment manually. It is meant to
-be executed {\it only} in response to a
-\HyperName{} request.
-
-Can you pop-up a named page from {\it Lisp} regardless of
-user action? Yes --- use {\it Lisp} function {\bf linkToHTPage}
-with the page name as a string argument. Click on the
-{\tt \\axiomcommand} below. Then, in your Axiom
-session, you can repeat it if you like.
-
-\beginImportant
-\begin{paste}{HTXLinkPage4xPaste3}{HTXLinkPage4xPatch3}
-\pastebutton{HTXLinkPage4xPaste3}{Interpret}
-\newline
-{\tt \\axiomcommand\{)lisp (|linkToHTPage| "RootPage")\}}
-\end{paste}
-\endImportant
-
-You can also pop-up a {\it dynamic} page regardless of user action.
-To do this, make sure you evaluate the {\it Lisp form}
-{\bf (|startHTPage| 50)} before using {\bf issueHT}.
-The example below requires the {\tt HTXTESTPAGE} function
-to be defined in {\it Lisp} so you should make sure
-you have executed the command above that defines it.
-
-\beginImportant
-\begin{paste}{HTXLinkPage4xPaste4}{HTXLinkPage4xPatch4}
-\pastebutton{HTXLinkPage4xPaste4}{Interpret}
-\newline
-{\tt \\axiomcommand\{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))\}}
-\end{paste}
-\endImportant
-
-Now, the most important use of this facility
-so far has been in the \Browse{} and Basic Commands components of
-\HyperName{}. Instead of giving you details of the various
-\Browse{} {\it Lisp} functions, a few macros are defined in
-\centerline{{\bf \$AXIOM/doc/hypertex/pages/util.ht}}
-
-The most important defined macros are
-\beginImportant
-\table{
-{ {\tt \\axiomType\{{\it constructor}\}} }
-{ {\tt \\axiomOp\{{\it operation}\}} }
-{ {\tt \\axiomOpFrom\{{\it operation }\}\{{\it constructor}\}}}
-}
-\endImportant
-
-Here are some examples of their use.
-\beginImportant
-\begin{paste}{HTXLinkPage4xPaste5}{HTXLinkPage4xPatch5}
-\pastebutton{HTXLinkPage4xPaste5}{Interpret}
-\newline
-{\tt \\axiomType\{Expression Integer\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomType\{Expression\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomType\{EXPR\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOp\{reduce\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOp\{as*\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOpFrom\{reduce\}\{Expression\}}\newline
-\end{paste}
-\endImportant
-
-The macro {\tt \\axiomType} brings up the \Browse{}
-constructor page for the constructor specified.
-You can specify a full name, or an abbreviation
-or just the top level name.
-The macro {\tt \\axiomOp} brings up a list of operations
-matching the argument.
-The macro {\tt \\axiomOpFrom} shows documentation
-about the specified operation whose origin is
-constructor. No wildcard in the operation name
-or type abbreviation is
-allowed here.  You should also specify just the top level type.
-
-
-
-
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- Linking to Unix}{HTXLinkPage5}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXLinkPage4xPatch1 patch}
-\label{HTXLinkPage4xPatch1}
-\index{patch!HTXLinkPage4xPatch1!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch1}
-\index{HTXLinkPage4xPatch1!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch1}
-\begin{paste}{HTXLinkPage4xPaste1A}{HTXLinkPage4xPatch1A}
-\pastebutton{HTXLinkPage4xPaste1A}{Source}
-\newline
-\lispcommand{Definition}{(defun HTXTESTFUNCTION ()
-(print "Hello from HyperDoc \\\\ \% \{ \}"))}
-\newline
-\lispcommand{Execution}{(HTXTESTFUNCTION)}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch1A patch}
-\label{HTXLinkPage4xPatch1A}
-\index{patch!HTXLinkPage4xPatch1A!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch1A}
-\index{HTXLinkPage4xPatch1A!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch1A}
-\begin{paste}{HTXLinkPage4xPaste1B}{HTXLinkPage4xPatch1}
-\pastebutton{HTXLinkPage4xPaste1B}{Interpret}
-\newline
-{\tt \\lispcommand\{Definition\}\{(defun HTXTESTFUNCTION () (print "Hello from HyperDoc \\\\\\\\ \\\% \\\{ \\\}"))\}} \newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Execution\}\{(HTXTESTFUNCTION)\}} \newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch2 patch}
-\label{HTXLinkPage4xPatch2}
-\index{patch!HTXLinkPage4xPatch2!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch2}
-\index{HTXLinkPage4xPatch2!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch2}
-\begin{paste}{HTXLinkPage4xPaste2A}{HTXLinkPage4xPatch2A}
-\pastebutton{HTXLinkPage4xPaste2A}{Source}
-\newline
-\lispcommand{Definition}{(defun HTXTESTPAGE (x) (|issueHT|
-"\\\\begin\{page\}\{LispTestPage\}\{Lisp Test Page\}
-\\\\vspace\{150\} \\\\centerline\{") (|issueHT| x) (|issueHT|
-"\} \\\\end\{page\}" ) ) }
-\newline
-\lispwindowlink{Link to it}{(HTXTESTPAGE "Hi there")}
-\newline
-\lispcommand{Show Lisp definition}{(pprint (symbol-function 'HTXTESTPAGE))}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch2A patch}
-\label{HTXLinkPage4xPatch2A}
-\index{patch!HTXLinkPage4xPatch2A!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch2A}
-\index{HTXLinkPage4xPatch2A!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch2A}
-\begin{paste}{HTXLinkPage4xPaste2B}{HTXLinkPage4xPatch2}
-\pastebutton{HTXLinkPage4xPaste2B}{Interpret}
-\newline
-{\tt \\lispcommand\{Definition\}\{(defun HTXTESTPAGE (x) (|issueHT|}\newline
-{\tt  "\\\\\\\\begin\\\{page\\\}\\\{LispTestPage\\\}\\\{Lisp Test Page\\\}}\newline
-{\tt  \\\\\\\\vspace\\\{150\\\} \\\\\\\\centerline\\\{") (|issueHT| x) (|issueHT|}\newline
-{\tt  "\\\} \\\\\\\\end\\\{page\\\}" ) ) \}}\newline
-{\tt \\newline}\newline
-{\tt \\lispwindowlink\{Link to it\}\{(HTXTESTPAGE "Hi there")\}}\newline
-{\tt \\newline}\newline
-{\tt \\lispcommand\{Show Lisp definition\}\{(pprint (symbol-function 'HTXTESTPAGE))\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch3 patch}
-\label{HTXLinkPage4xPatch3}
-\index{patch!HTXLinkPage4xPatch3!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch3}
-\index{HTXLinkPage4xPatch3!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch3}
-\begin{paste}{HTXLinkPage4xPaste3A}{HTXLinkPage4xPatch3A}
-\pastebutton{HTXLinkPage4xPaste3A}{Source}
-\newline
-\axiomcommand{)lisp (|linkToHTPage| "RootPage")}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch3A patch}
-\label{HTXLinkPage4xPatch3A}
-\index{patch!HTXLinkPage4xPatch3A!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch3A}
-\index{HTXLinkPage4xPatch3A!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch3A}
-\begin{paste}{HTXLinkPage4xPaste3B}{HTXLinkPage4xPatch3}
-\pastebutton{HTXLinkPage4xPaste3B}{Interpret}
-\newline
-{\tt \\axiomcommand\{)lisp (|linkToHTPage| "RootPage")\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch4 patch}
-\label{HTXLinkPage4xPatch4}
-\index{patch!HTXLinkPage4xPatch4!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch4}
-\index{HTXLinkPage4xPatch4!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch4}
-\begin{paste}{HTXLinkPage4xPaste4A}{HTXLinkPage4xPatch4A}
-\pastebutton{HTXLinkPage4xPaste4A}{Source}
-\newline
-\axiomcommand{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch4A patch}
-\label{HTXLinkPage4xPatch4A}
-\index{patch!HTXLinkPage4xPatch4A!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch4A}
-\index{HTXLinkPage4xPatch4A!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch4A}
-\begin{paste}{HTXLinkPage4xPaste4B}{HTXLinkPage4xPatch4}
-\pastebutton{HTXLinkPage4xPaste4B}{Interpret}
-\newline
-{\tt \\axiomcommand\{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))\}}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch5 patch}
-\label{HTXLinkPage4xPatch5}
-\index{patch!HTXLinkPage4xPatch5!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch5}
-\index{HTXLinkPage4xPatch5!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch5}
-\begin{paste}{HTXLinkPage4xPaste5A}{HTXLinkPage4xPatch5A}
-\pastebutton{HTXLinkPage4xPaste5A}{Source}
-\newline
-\axiomType{Expression Integer}
-\newline
-\axiomType{Expression}
-\newline
-\axiomType{EXPR}
-\newline
-\axiomOp{reduce}
-\newline
-\axiomOp{as*}
-\newline
-\axiomOpFrom{reduce}{Expression}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage4xPatch5A patch}
-\label{HTXLinkPage4xPatch5A}
-\index{patch!HTXLinkPage4xPatch5A!htxlinkpage4.ht}
-\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch5A}
-\index{HTXLinkPage4xPatch5A!htxlinkpage4.ht!patch}
-<<htxlinkpage4.ht>>=
-\begin{patch}{HTXLinkPage4xPatch5A}
-\begin{paste}{HTXLinkPage4xPaste5B}{HTXLinkPage4xPatch5}
-\pastebutton{HTXLinkPage4xPaste5B}{Interpret}
-\newline
-{\tt \\axiomType\{Expression Integer\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomType\{Expression\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomType\{EXPR\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOp\{reduce\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOp\{as*\}}\newline
-{\tt \newline}\newline
-{\tt \\axiomOpFrom\{reduce\}\{Expression\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxlinkpage5.ht}
-\subsection{Linking to Unix}
-\label{HTXLinkPage5}
-\index{pages!HTXLinkPage5!htxlinkpage5.ht}
-\index{htxlinkpage5.ht!pages!HTXLinkPage5}
-\index{HTXLinkPage5!htxlinkpage5.ht!pages}
-<<htxlinkpage5.ht>>=
-\begin{page}{HTXLinkPage5}{Linking to Unix}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-Let us conclude the tour of \HyperName{}
-actions that can be triggered with a click of a button
-with two more facilities. These are
-\beginImportant
-\table{
-{ {\tt \\unixcommand\{{\it trigger text}\}\{{\it unix command}\}}}
-{ {\tt \\unixlink\{{\it trigger text}\}\{{\it unix command}\}}}
-}
-\endImportant
-
-
-The first one, {\tt \\unixcommand}, is very much like
-{\tt \\axiomcommand} and {\tt \\lispcommand}.
-The trigger text becomes an active area. Clicking on it
-will force \HyperName{} to pass the second argument
-to the system as a shell command to be executed.
-The shell used is {\bf /bin/sh}.
-\HyperName{} ignores the output of the command.
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage5xPaste1}{HTXLinkPage5xPatch1}
-\pastebutton{HTXLinkPage5xPaste1}{Interpret}
-\newline
-{\tt \\unixcommand\{List \\\$HOME directory\}\{ls \\\$HOME\}}\newline
-\end{paste}
-\endImportant
-
-The {\tt \\unixlink} command delegates to a another
-program the creation of a dynamic page. When the trigger
-text is activated, \HyperName{} will invoke the command
-specified in the second argument. It will then start reading
-the {\it standard output} of the command until
-a complete page has been received. It is important that
-a single page and nothing more is written by the command.
-This command is essentially a {\tt \\downlink}, i.e.
-the new page replaces the current page in the window.
-There aren't any other flavours of {\tt \\unixlink}.
-A trivial example is to use {\bf cat} on a \HyperName{}
-file known to contain just one page.
-
-\beginImportant
-\begin{paste}{HTXLinkPage5xPaste2}{HTXLinkPage5xPatch2}
-\pastebutton{HTXLinkPage5xPaste2}{Interpret}
-\newline
-{\tt \\unixlink\{Some file\}} \newline
-{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
-\end{paste}
-\endImportant
-
-
-Two things to notice in the second argument of
-{\tt \\unixlink}: You must use a {\it hard space}
-{\tt '\\\ '} to preserve the spacing in the command.
-Also, the {\tt \\env} command allows you to use
-an environment variable in \HyperName{} text.
-
-With a little ingenuity (and maybe some shell and {\bf awk} scripts !)
-, one can use these
-facilities to create, say, a point-and-click
-directory viewer which allows you to edit
-a file by clicking on its name.
-
-\end{scroll}
-\beginmenu
-\menulink{Next -- How to use your pages with \HyperName{}}{HTXLinkPage6}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXLinkPage5xPatch1 patch}
-\label{HTXLinkPage5xPatch1}
-\index{patch!HTXLinkPage5xPatch1!htxlinkpage5.ht}
-\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch1}
-\index{HTXLinkPage5xPatch1!htxlinkpage5.ht!patch}
-<<htxlinkpage5.ht>>=
-\begin{patch}{HTXLinkPage5xPatch1}
-\begin{paste}{HTXLinkPage5xPaste1A}{HTXLinkPage5xPatch1A}
-\pastebutton{HTXLinkPage5xPaste1A}{Source}
-\newline
-\unixcommand{List \$HOME directory}{ls \$HOME}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage5xPatch1A patch}
-\label{HTXLinkPage5xPatch1A}
-\index{patch!HTXLinkPage5xPatch1A!htxlinkpage5.ht}
-\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch1A}
-\index{HTXLinkPage5xPatch1A!htxlinkpage5.ht!patch}
-<<htxlinkpage5.ht>>=
-\begin{patch}{HTXLinkPage5xPatch1A}
-\begin{paste}{HTXLinkPage5xPaste1B}{HTXLinkPage5xPatch1}
-\pastebutton{HTXLinkPage5xPaste1B}{Interpret}
-\newline
-{\tt \\unixcommand\{List \\\$HOME directory\}\{ls \\\$HOME\}}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage5xPatch2 patch}
-\label{HTXLinkPage5xPatch2}
-\index{patch!HTXLinkPage5xPatch2!htxlinkpage5.ht}
-\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch2}
-\index{HTXLinkPage5xPatch2!htxlinkpage5.ht!patch}
-<<htxlinkpage5.ht>>=
-\begin{patch}{HTXLinkPage5xPatch2}
-\begin{paste}{HTXLinkPage5xPaste2A}{HTXLinkPage5xPatch2A}
-\pastebutton{HTXLinkPage5xPaste2A}{Source}
-\newline
-\unixlink{Some file}
-{cat\ \env{AXIOM}/doc/hypertex/pages/HTXplay.ht}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage5xPatch2A patch}
-\label{HTXLinkPage5xPatch2A}
-\index{patch!HTXLinkPage5xPatch2A!htxlinkpage5.ht}
-\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch2A}
-\index{HTXLinkPage5xPatch2A!htxlinkpage5.ht!patch}
-<<htxlinkpage5.ht>>=
-\begin{patch}{HTXLinkPage5xPatch2A}
-\begin{paste}{HTXLinkPage5xPaste2B}{HTXLinkPage5xPatch2}
-\pastebutton{HTXLinkPage5xPaste2B}{Interpret}
-\newline
-{\tt \\unixlink\{Some file\}} \newline
-{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
-\end{paste}
-\end{patch}
-
-@
-\section{htxlinkpage6.ht}
-\subsection{How to use your pages with Hyperdoc}
-\label{HTXLinkPage6}
-\index{pages!HTXLinkPage6!htxlinkpage6.ht}
-\index{htxlinkpage6.ht!pages!HTXLinkPage6}
-\index{HTXLinkPage6!htxlinkpage6.ht!pages}
-<<htxlinkpage6.ht>>=
-\begin{page}{HTXLinkPage6}{How to use your pages with Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\begin{scroll}
-
-Let us say that you have written a few \HyperName{}
-pages and you would like to incorporate them in the system.
-Here is what you should do.
-
-Put all your files in some directory and make sure that
-they all have the {\bf .ht} extension.
-
-You will need a way of "hooking" into a system--defined
-\HyperName{} page. The proper way to do this is to use
-the {\tt \\localinfo} macro. The Axiom system
-\HyperName{} page database includes, as it should,
-a {\tt RootPage}. This is the page that first comes up
-when you start \HyperName{}. This page contains
-a line like this.
-\beginImportant
-\newline
-{\tt \\localinfo}
-\endImportant
-
-This macro is defined in
-\centerline{ {\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
-to be (see \downlink{Macros}{HTXAdvPage3} to learn how to define macros):
-\beginImportant
-\newline
-{\tt \\newcommand\{\\localinfo\}\{\}}
-\endImportant
-which is an empty definition (the second argument of {\tt \\newcommand}).
-The idea then is that you {\it override} this definition of the macro
-with your own.
-To do that, include a definition like the following in one (possibly the
-one that contains your top--level page) of your files. You can
-put this definition in its own file if you like.
-\beginImportant
-\newline
-{\tt \\newcommand\{\\localinfo\}\{\\menuwindowlink\{{\it active text}\}} \newline
-{\tt \{{\it page name}\} \\tab\{16\}{\it short description}\}}
-\endImportant
-
-If you have a look at the initial \HyperName{} page, you will
-probably be able to decipher what this does. The macro
-{\tt \\menuwindowlink} is defined (again in {\bf util.ht})
-and is responsible for putting the little square to the left of the
-active area.
-Specify a word or two for {\it active text}. That will become the
-trigger of the {\tt \\link}. Specify the page name of your top--level page
-in {\it page name}. Finally, you can give a comment about the topic
-under {\it short description}. That will appear to the right of the
-{\it active text}.
-
-The next thing you need to do is to create a {\it local database}
-for your files. You will use the {\bf \env{AXIOM}/bin/htadd} program.
-This program will create an {\bf ht.db} file that summarises your
-definitions and acts as an index. Let us present an example
-of its use. Suppose you have two files {\bf user1.ht} and {\bf user2.ht}
-in directory {\bf /u/sugar/\HyperName{}}. You should create the {\bf ht.db}
-in that same directory. To create the {\bf ht.db} file you issue to
-the unix shell:
-\beginImportant
-\newline
-{\tt htadd -f /u/sugar/\HyperName{} /u/sugar/\HyperName{}/user1.ht /u/sugar/\HyperName{}/user2.ht}
-\centerline{or ,if you are already in /u/sugar/\HyperName{}}
-{\tt htadd -l ./user1.ht ./user2.ht}
-\endImportant
-
-
-The options and conventions for {\bf htadd} will be explained below.
-To start \HyperName{} with your own pages, you now need to tell
-it where to search for {\bf ht.db} files and \HyperName{} {\bf .ht}
-files. To do this, define the shell environment variable
-{\bf HTPATH}. The value should be a colon {\tt ':'} separated
-list of directory full pathnames.
-The order of the directories is respected with earlier entries overriding
-later ones. Since we want all the Axiom pages but need to override the
-{\tt \\localinfo} macro, we should use the value
-\centerline{{\bf /u/sugar/\HyperName{}:\env{AXIOM}/doc/hypertex/pages}}
-The way that you define environment variables depends on the shell
-you are using. In the {\bf /bin/csh}, it would be
-\newline
-{\bf setenv HTPATH /u/sugar/\HyperName{}:\env{AXIOM}{}/doc{}/hypertex{}/pages}
-
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage6xPaste1}{HTXLinkPage6xPatch1}
-\pastebutton{HTXLinkPage6xPaste1}{Options for {\bf htadd}}
-\newline
-\end{paste}
-\endImportant
-
-
-\beginImportant
-\begin{paste}{HTXLinkPage6xPaste2}{HTXLinkPage6xPatch2}
-\pastebutton{HTXLinkPage6xPaste2}{Where does \HyperName{} look for files}
-\newline
-\end{paste}
-\endImportant
-
-
-
-\end{scroll}
-\beginmenu
-\menulink{Back to Actions menu}{HTXLinkTopPage}
-\endmenu
-
-\end{page}
-
-@
-\subsection{HTXLinkPage6xPatch1 patch}
-\label{HTXLinkPage6xPatch1}
-\index{patch!HTXLinkPage6xPatch1!htxlinkpage6.ht}
-\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch1}
-\index{HTXLinkPage6xPatch1!htxlinkpage6.ht!patch}
-<<htxlinkpage6.ht>>=
-\begin{patch}{HTXLinkPage6xPatch1}
-\begin{paste}{HTXLinkPage6xPaste1A}{HTXLinkPage6xPatch1A}
-\pastebutton{HTXLinkPage6xPaste1A}{Hide}
-\newline
-Name:
-
-{\tt htadd - create or modify a \HyperName{} database}
-\vspace{}
-\newline
-Syntax:
-
-{\tt htadd [ -l | -s | -f\ }{\it path}{\tt ] [ -d | -n ]\ }{\it filename ...}
-\vspace{}
-\newline
-Options:\indentrel{4}\newline
-{\tt -l}\tab{8}\indentrel{8}
-build {\bf ht.db} database in current working directory.
-This is the default behaviour if no {\tt -l}, {\tt -s} or {\tt -f}
-is specified.
-
-\indentrel{-8}\newline
-{\tt -s}\tab{8}\indentrel{8}
-build {\bf ht.db} database in {\it system} directory. The
-system directory is built as follows. If the {\tt AXIOM}
-variable is defined, the {\bf \$AXIOM/doc/hypertex/pages} directory
-is used. If {\tt AXIOM} is not defined, the
-{\bf /usr/local/axiom/doc/hypertex/pages} directory is used.
-
-
-\indentrel{-8}\newline
-{\tt -f\ }{\it path}\newline\tab{8}\indentrel{8}
-build {\bf ht.db} database in specified {\it path}.
-
-\indentrel{-8}\newline
-{\tt -d}\tab{8}\indentrel{8}
-delete the entries in the specified files from {\bf ht.db}.
-
-\indentrel{-8}\newline
-{\tt -n}\tab{8}\indentrel{8}
-delete {\bf ht.db} and create a new one using only the files
-specified.
-
-If none of {\tt -n} and {\tt -d} is specified, the {\bf ht.db}
-is updated with the entries in the file specified.
-
-
-\indentrel{-8}
-\indentrel{-4}
-\vspace{}\newline
-Filename interpretation :
-\indentrel{12}\newline
-A full pathname (i.e. anything that has a {\tt '/'} in it)
-will be taken do be a completely specified file.
-Otherwise, the following interpretation will occur:
-If the {\tt HTPATH} variable is defined, the directories
-specified in it will be tried in order. If {\tt HTPATH}
-is not defined, then, if {\tt AXIOM} is defined, the
-{\bf \$AXIOM/doc/hypertex/pages} will be tried, else
-the file will be deemed missing and {\bf htadd} will fail.
-\indentrel{-12}
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage6xPatch1A patch}
-\label{HTXLinkPage6xPatch1A}
-\index{patch!HTXLinkPage6xPatch1A!htxlinkpage6.ht}
-\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch1A}
-\index{HTXLinkPage6xPatch1A!htxlinkpage6.ht!patch}
-<<htxlinkpage6.ht>>=
-\begin{patch}{HTXLinkPage6xPatch1A}
-\begin{paste}{HTXLinkPage6xPaste1B}{HTXLinkPage6xPatch1}
-\pastebutton{HTXLinkPage6xPaste1B}{Options for {\bf htadd}}
-\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage6xPatch2 patch}
-\label{HTXLinkPage6xPatch2}
-\index{patch!HTXLinkPage6xPatch2!htxlinkpage6.ht}
-\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch2}
-\index{HTXLinkPage6xPatch2!htxlinkpage6.ht!patch}
-<<htxlinkpage6.ht>>=
-\begin{patch}{HTXLinkPage6xPatch2}
-\begin{paste}{HTXLinkPage6xPaste2A}{HTXLinkPage6xPatch2A}
-\pastebutton{HTXLinkPage6xPaste2A}{Hide}
-\indentrel{12}\newline
-The \HyperName{} program is
-\centerline{{\bf \env{AXIOM}/lib/hypertex}}
-If {\tt AXIOM} is defined and {\tt HTPATH} is not
-(this is the case when Axiom starts \HyperName{})
-\HyperName{} will look in
-\centerline{{\bf \env{AXIOM}/doc/hypertex/pages}}
-for the {\bf ht.db} file and all \HyperName{} pages.
-If {\tt HTPATH} is defined, it is assumed that
-it alone points to the directories to be searched
-(the above default will NOT be searched unless
-explicitly specified in {\tt HTPATH}).
-For each directory in {\tt HTPATH}, the {\bf ht.db}
-file, if there, will be read.
-Each file listed in {\bf ht.db} will
-then be searched for in the complete sequence
-of directories in {\tt HTPATH}. Note that
-the {\bf ht.db} does not keep full pathnames
- of files.
-If a {\it page}, {\it macro} or {\it patch}
-(specified in some {\bf ht.db}) happens
-to be (in a file) in more than one of the directories
-specified in {\tt HTPATH}, \HyperName{}
-will print a warning and explain which version
-in which file is ignored. Generally, earlier
-directories in {\tt HTPATH} are preferred over later
-ones.
-\indentrel{-12}\newline
-\end{paste}
-\end{patch}
-
-@
-\subsection{HTXLinkPage6xPatch2A patch}
-\label{HTXLinkPage6xPatch2A}
-\index{patch!HTXLinkPage6xPatch2A!htxlinkpage6.ht}
-\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch2A}
-\index{HTXLinkPage6xPatch2A!htxlinkpage6.ht!patch}
-<<htxlinkpage6.ht>>=
-\begin{patch}{HTXLinkPage6xPatch2A}
-\begin{paste}{HTXLinkPage6xPaste2B}{HTXLinkPage6xPatch2}
-\pastebutton{HTXLinkPage6xPaste2B}{Where does \HyperName{} look for files}}
-\newline
-\end{paste}
-\end{patch}
-
-@
-\section{htxlinktoppage.ht}
-\subsection{Actions in Hyperdoc}
-\label{HTXLinkTopPage}
-\begin{itemize}
-\item HTXLinkPage1 \ref{HTXLinkPage1} on page~\pageref{HTXLinkPage1}
-\item HTXLinkPage2 \ref{HTXLinkPage2} on page~\pageref{HTXLinkPage2}
-\item HTXLinkPage3 \ref{HTXLinkPage3} on page~\pageref{HTXLinkPage3}
-\item HTXLinkPage4 \ref{HTXLinkPage4} on page~\pageref{HTXLinkPage4}
-\item HTXLinkPage5 \ref{HTXLinkPage5} on page~\pageref{HTXLinkPage5}
-\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
-\end{itemize}
-\index{pages!HTXLinkTopPage!htxlinktoppage.ht}
-\index{htxlinktoppage.ht!pages!HTXLinkTopPage}
-\index{HTXLinkTopPage!htxlinktoppage.ht!pages}
-<<htxlinktoppage.ht>>=
-\begin{page}{HTXLinkTopPage}{Actions in Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-\HyperName{} offers various types of hypertext links.
-You can learn about these facilities by clicking on the topics below.
-\begin{scroll}
-\beginmenu
-\menudownlink{Linking to a named page}{HTXLinkPage1}
-\menudownlink{Standard pages}{HTXLinkPage2}
-\menudownlink{Active Axiom commands}{HTXLinkPage3}
-\menudownlink{Linking to Lisp}{HTXLinkPage4}
-\menudownlink{Linking to Unix}{HTXLinkPage5}
-\menudownlink{How to use your pages with \HyperName{}}{HTXLinkPage6}
-\endmenu
-\end{scroll}
-\end{page}
-
-@
-\section{htxtoppage.ht}
-\subsection{Extending Hyperdoc}
-\label{HTXTopPage}
-\begin{itemize}
-\item HTXIntroTopPage \ref{HTXIntroTopPage} on page~\pageref{HTXIntroTopPage}
-\item HTXFormatTopPage \ref{HTXFormatTopPage} on 
-page~\pageref{HTXFormatTopPage}
-\item HTXLinkTopPage \ref{HTXLinkTopPage} on page~\pageref{HTXLinkTopPage}
-\item HTXAdvTopPage \ref{HTXAdvTopPage} on page~\pageref{HTXAdvTopPage}
-\item HTXTryPage \ref{HTXTryTopPage} on page~\pageref{HTXTryPage}
-\end{itemize}
-\index{pages!HTXTopPage!htxtoppage.ht}
-\index{htxtoppage.ht!pages!HTXTopPage}
-\index{HTXTopPage!htxtoppage.ht!pages}
-<<htxtoppage.ht>>=
-\begin{page}{HTXTopPage}{Extending Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-This is a guide to extending \HyperName{}. You can learn
-how to write your own \HyperName{} pages and link them to the
-\HyperName{} page database that Axiom uses.
-\begin{scroll}
-\beginmenu
-\menumemolink{Introduction}{HTXIntroTopPage} \tab{20} An easy start.
-\menumemolink{Formatting}{HTXFormatTopPage} \tab{20} Learn how to format text.
-\menumemolink{Actions}{HTXLinkTopPage} \tab{20} Learn how to define actions.
-\menumemolink{Advanced features}{HTXAdvTopPage} \tab{20} More effects.
-\menuwindowlink{Try it!}{HTXTryPage} \tab{20} Try out what you learn.
-\endmenu
-\end{scroll}
-\end{page}
-
-@
-\section{htxtrypage.ht}
-\subsection{Try out Hyperdoc}
-\label{HTXTryPage}
-\index{pages!HTXTryPage!htxtrypage.ht}
-\index{htxtrypage.ht!pages!HTXTryPage}
-\index{HTXTryPage!htxtrypage.ht!pages}
-<<htxtrypage.ht>>=
-\begin{page}{HTXTryPage}{Try out Hyperdoc}
-\centerline{\fbox{{\tt \thispage}}}\newline
-
-This page allows you to quickly experiment with \HyperName{}.
-It is a good idea to keep it handy as you learn about various commands.
-
-\beginscroll
-
-We are going to use here the \HyperName{} facilities that allow
-us to communicate with external programs and files. For more
-information see \downlink{later on}{HTXLinkPage5}.
-\beginmenu
-\item\menuitemstyle{
-In order to use the buttons at the bottom of this page, you must
-first specify a name for the file you are going to use to hold
-\HyperName{} commands. Edit the input area below to change the
-name of the file.}
-\item\menuitemstyle{
-If the file you specified does not yet exist, click on the
-{\bf Initialize} button below. This action will fill the file
-with the minimum of \HyperName{} commands necessary to define a page.}
-\item\menuitemstyle{
-If you want to edit the file, just click on the {\bf Edit} button.
-This action will pop up a window, and invoke the {\it vi}
-editor on the file. Alternatively, use an editor of your choice.}
-\item\menuitemstyle{
-Once you have finished making the changes to the file, update it and
-click on the {\bf Link} button. \HyperName{} will then read
-the file, interpret it as a new page, and display the page on
-this window. If you change the file and want to display it again,
-just get back to this page and click on {\bf Link} again. }
-\endmenu
-\endscroll
-\beginmenu
-{\it Filename: }{\inputstring{filename}{40}{\env{HOME}/HTXplay.ht}}
-\menuunixcommand{Initialize}{cp\space{1}\env{AXIOM}/doc/hypertex/pages/HTXplay.ht \stringvalue{filename}} \tab{20} Get a fresh copy from the system.
-\menuunixcommand{Edit}{xterm -T "\stringvalue{filename}" -e vi \stringvalue{filename}} \tab{20} Edit the file.
-\menuunixwindow{Link}{cat \space{1}\stringvalue{filename}} \tab{20} Link to the page defined in the file.
-\endmenu
-{\it Important : The file must contain
-one and only one page definition and must not contain any macro or patch
-definitions.}
-\end{page}
-
-@
-\section{hyperdoc.ht}
-\subsection{Creating Hyperdoc Pages}
-\label{Hyperdoc}
-\begin{itemize}
-\item ViewportPage \ref{ViewportPage} on
-page~\pageref{ViewportPage}
-\item BitMaps \ref{BitMaps} on
-page~\pageref{BitMaps}
-\item CPHelp \ref{CPHelp} on
-page~\pageref{CPHelp}
-\end{itemize}
-\index{pages!Hyperdoc!hyperdoc.ht}
-\index{hyperdoc.ht!pages!Hyperdoc}
-\index{Hyperdoc!hyperdoc.ht!pages}
-<<hyperdoc.ht>>=
-\begin{page}{Hyperdoc}{Creating Hyperdoc Pages}
-
-\beginscroll
-This document tells how to create \HyperName pages.
-To start with, it is rather meager but it will grow with time.
-\beginmenu
-\menulink{Viewports}{ViewportPage} Including live graphics in documents.
-\menulink{Gadjets}{BitMaps} Bitmaps for use in macros.
-\menulink{Control Panel Bits}{CPHelp} Development page for help 
-facility for viewports. yuck.
-%\menulink{Test Pages}{TestPage} Some test pages left by J.M.
-%\menulink{Paste Pages}{PastePage} Examples of how to use paste in areas.
-\endmenu
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
 \section{int.ht}
 <<int.ht>>=
 \newcommand{\IntegerXmpTitle}{Integer}
@@ -17820,25 +11886,25 @@ facility for viewports. yuck.
 \subsection{Integer}
 \label{IntegerXmpPage}
 \begin{itemize}
-\item ugIntroNumbersPage \ref{ugIntroNumbersPage} on
-page~pageref{ugIntroNumbersPage}
-\item IntegerNumberTheoryFunctionsXmpPage 
+\item ugIntroNumbersPage\\ 
+\ref{ugIntroNumbersPage} on page~pageref{ugIntroNumbersPage}
+\item IntegerNumberTheoryFunctionsXmpPage \\
 \ref{IntegerNumberTheoryFunctionsXmpPage} on
 page~pageref{IntegerNumberTheoryFunctionsXmpPage}
-\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
-page~pageref{DecimalExpansionXmpPage}
-\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on
-page~pageref{BinaryExpansionXmpPage}
-\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
-page~pageref{HexadecimalExpansionXmpPage}
-\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
-page~pageref{RadixExpansionXmpPage}
-\item ugxIntegerBasicPage \ref{ugxIntegerBasicPage} on
-page~pageref{ugxIntegerBasicPage}
-\item ugxIntegerPrimesPage \ref{ugxIntegerPrimesPage} on
-page~pageref{ugxIntegerPrimesPage}
-\item ugxIntegerNtPage \ref{ugxIntegerNtPage} on
-page~pageref{ugxIntegerNtPage}
+\item DecimalExpansionXmpPage \\
+\ref{DecimalExpansionXmpPage} on page~pageref{DecimalExpansionXmpPage}
+\item BinaryExpansionXmpPage \\
+\ref{BinaryExpansionXmpPage} on page~pageref{BinaryExpansionXmpPage}
+\item HexadecimalExpansionXmpPage \\
+\ref{HexadecimalExpansionXmpPage} on page~pageref{HexadecimalExpansionXmpPage}
+\item RadixExpansionXmpPage\\ 
+\ref{RadixExpansionXmpPage} on page~pageref{RadixExpansionXmpPage}
+\item ugxIntegerBasicPage \\
+\ref{ugxIntegerBasicPage} on page~pageref{ugxIntegerBasicPage}
+\item ugxIntegerPrimesPage \\
+\ref{ugxIntegerPrimesPage} on page~pageref{ugxIntegerPrimesPage}
+\item ugxIntegerNTPage \\
+\ref{ugxIntegerNTPage} on page~pageref{ugxIntegerNTPage}
 \end{itemize}
 \index{pages!IntegerXmpPage!int.ht}
 \index{int.ht!pages!IntegerXmpPage}
@@ -19522,7 +13588,7 @@ page~\pageref{FoundationLibraryDocPage}
 
 @
 \subsection{Use of the Link from HyperDoc}
-\label{htx11}
+\label{htxl1}
 \begin{itemize}
 \item c02 \ref{c02} on
 page~\pageref{c02}
@@ -19553,9 +13619,9 @@ page~\pageref{f07}
 \item s \ref{s} on
 page~\pageref{s}
 \end{itemize}
-\index{pages!htx11!link.ht}
-\index{link.ht!pages!htx11}
-\index{htx11!link.ht!pages}
+\index{pages!htxl1!link.ht}
+\index{link.ht!pages!htxl1}
+\index{htxl1!link.ht!pages}
 <<link.ht>>=
 \begin{page}{htxl1}{Use of the Link from HyperDoc}
 Click on the chapter of routines that you would like to use.
@@ -19839,8 +13905,7 @@ technique
 \subsection{E01 Interpolation}
 \label{e01}
 \begin{itemize}
-\item manpageXXe01 \ref{manpageXXe01} on
-page~\pageref{manpageXXe01}
+\item manpageXXe01 \ref{manpageXXe01} on page~\pageref{manpageXXe01}
 \end{itemize}
 \index{pages!e01!link.ht}
 \index{link.ht!pages!e01}
@@ -21678,6 +15743,8 @@ Enter search string :
 \includegraphics[scale=.5]{ps/v71man0page.eps}
 \index{images!man0page}
 
+Called from ``Root Page'' (RootPage) \ref{RootPage} on page~\pageref{RootPage}
+
 See ``Commands'' (ugSysCmdPage) 
 \ref{ugSysCmdPage} on page~\pageref{ugSysCmdPage}
 \index{pages!Man0Page!man0.ht}
@@ -21693,7 +15760,10 @@ Enter search string (use {\em *} for wild card unless counter-indicated):
 \beginmenu
 \menulispmemolink{Constructors}
   { (|kSearch| '|\stringvalue{pattern}|) }
-  \tab{15} Search for \lispmemolink{categories}{(|cSearch| '|\stringvalue{pattern}|)}, \lispmemolink{domains}{(|dSearch| '|\stringvalue{pattern}|)}, or \lispmemolink{packages}{(|pSearch| '|\stringvalue{pattern}|)}
+  \tab{15} Search for 
+\lispmemolink{categories}{(|cSearch| '|\stringvalue{pattern}|)}, 
+\lispmemolink{domains}{(|dSearch| '|\stringvalue{pattern}|)}, or 
+\lispmemolink{packages}{(|pSearch| '|\stringvalue{pattern}|)}
 \menulispmemolink{Operations}
   { (|oSearch| '|\stringvalue{pattern}|) }
   \tab{15} Search for operations.
@@ -22652,6 +16722,43641 @@ For more information on related topics, see
 \end{page}
 
 @
+\section{newuser.ht}
+\subsection{No More Help :-(}
+\label{NoMoreHelpPage}
+\index{pages!NoMoreHelpPage!newuser.ht}
+\index{newuser.ht!pages!NoMoreHelpPage}
+\index{NoMoreHelpPage!newuser.ht!pages}
+<<newuser.ht>>=
+\begin{page}{NoMoreHelpPage}{No More Help :-(}
+\beginscroll\vspace{2}
+\centerline{No additional or specific help information is available.}
+\centerline{Click on \ \ExitButton{QuitPage} \  to get back.}
+\endscroll
+\end{page}
+
+@
+\subsection{You Tried It!}
+\label{YouTriedIt}
+\index{pages!YouTriedIt!newuser.ht}
+\index{newuser.ht!pages!YouTriedIt}
+\index{YouTriedIt!newuser.ht!pages}
+<<newuser.ht>>=
+\begin{page}{YouTriedIt}{You Tried It!}
+\beginscroll
+\upbutton{Click here}{UpPage} to get back.
+\endscroll
+\end{page}
+
+% Getting Started
+
+%% % Now using text from book
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{GettingStarted}{Getting Started}
+%%  % --------------------------------------------------------------------
+%%  \beginscroll
+%%  \par
+%%  \HyperName{} is the gateway to Axiom.
+%%  It's both an on-line tutorial and an on-line reference.  It also enables you
+%%  to use Axiom simply by using the mouse and filling in templates.
+%%  \HyperName{} is available to you if you are running Axiom under the
+%%  X Window System.
+%%  \par
+%%  Pages usually have active areas, marked in \downlink{this
+%%  font.}{YouTriedIt}
+%%  As you move the mouse pointer to an active area, the pointer changes from a
+%%  filled dot to an open circle.
+%%  The active areas are usually linked to other pages.
+%%  When you click on an active area, you move to the linked page.
+%%  Try clicking \downlink{here}{YouTriedIt} now.
+%%  \par
+%%  Now we suggest that you learn more about other features of
+%%  \HyperName{} by clicking on an active area in the menu below:
+%%  %
+%%  \beginmenu
+%%  \menumemolink{Headings}{ugHyperHeadingsPage}\tab{15}How to use the headings at the top of the page
+%%  \menulink{Scroll Bars}{ugHyperScrollPage}\tab{15}All about {\it scroll bars} on \HyperName{} pages
+%%  \menulink{Input Areas}{ugHyperInputPage}\tab{15}All about {\it input areas} in \HyperName{}
+%%  \menulink{Buttons}{ugHyperButtonsPage}\tab{15}Learn about {\it radio buttons} and {\it toggles}
+%%  \menulink{Search Strings}{SearchStrings}\tab{15}Learn about {\it search strings} in \HyperName{}
+%%  \menulink{Example Pages}{ugHyperExamplePage}\tab{15}How to view or run {\it examples} on \HyperName{} pages
+%%  \menulink{Settings}{ugHyperResourcesPage}\tab{15}X Window Resources for \HyperName{}
+%%  \endmenu
+%%  \endscroll
+%%  \end{page}
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{ExamplesIntro}{Axiom Examples}
+%%  % --------------------------------------------------------------------
+%%  \pp
+%%  \beginscroll
+%%  Many pages have Axiom examples.
+%%  Here are two:
+%%  \spadpaste{a:= x**2 + 1 \bound{a}} \newline
+%%  \spadpaste{(a - 2)**2 \free{a}} \newline
+%%  Each example has an active ``button'' along the left margin.
+%%  When you click on this button the output for the
+%%  command is ``pasted-in.''
+%%  Try it!
+%%  Click again on the button and you'll see
+%%  that the pasted-in output disappears. Got the idea?
+%%  \par
+%%  Maybe you would like to run an example?
+%%  To do so, just click on any part of it!
+%%  When you do, the example line is copied into a new interactive Axiom
+%%  buffer for this \HyperName{} page.
+%%  \par
+%%  Sometimes one example line cannot be run before you run an earlier one.
+%%  Don't worry---this is all automatic!
+%%  For instance, the second example line above refers to \spad{a} which is
+%%  assigned in the first example line.
+%%  What happens if you first click on the second example line?
+%%  Axiom first issues the first line (to assign \spad{a}), then the
+%%  second (to do the computation using \spad{a}).
+%%  \par
+%%  The new interactive Axiom buffer will disappear when you leave
+%%  \HyperName{}.
+%%  If you want to get rid of it beforehand,
+%%  use the ``Cancel'' button of the X window manager.
+%%  \endscroll
+%%  %\autobutt{HelpHelp}
+%%  \end{page}
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{RadioButtons}{Radio Buttons and Toggles}
+%%  % --------------------------------------------------------------------
+%%  \beginscroll
+%%  \radioboxes{sample}{\htbmfile{pick}}{\htbmfile{unpick}}
+%%  \par
+%%  Radio buttons are a group of round buttons like those on car radios: you can
+%%  select only one.
+%%  Here are three radio buttons:
+%%  \centerline{
+%%  {\em\radiobox[1]{rone}{sample}\space{}The first one}\space{3}
+%%  {\em\radiobox[0]{rtwo}{sample}\space{}The second one}\space{3}
+%%  {\em\radiobox[0]{rthree}{sample}\space{}The third one}
+%%  }
+%%  \newline
+%%  The selected button has an {\it X} in the box.
+%%  The others which are not selected are open, i.e. they have no {\it X}.
+%%  To change the selection, move the cursor with the mouse to an
+%%  alternate radio button and click. Try it now.
+%%  %\vspace{1}\centerline{To see another kind of button click on:}
+%%  %\centerline{\box{\downlink{Next Page}{ToggleButton}}}
+%%  %\endscroll
+%%  %\autobuttons\end{page}
+%%  %\begin{page}{ToggleButton}{Toggles}
+%%  %\beginscroll
+%%  \vspace{1}
+%%  \par
+%%  A toggle is a square button you can either select (it has an {\it X}) or
+%%  not (it has no {\it X}).
+%%  Unlike radio buttons, you can set a group of them any way you like.
+%%  Here are three:
+%%  \centerline{
+%%  {\em\inputbox[1]{one}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The first one}
+%%  \space{3}
+%%  {\em\inputbox[0]{two}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The second one}
+%%  \space{3}
+%%  {\em\inputbox[1]{three}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The third one}
+%%  }
+%%  \newline
+%%  To change the selections, move the cursor with the mouse
+%%  to a toggle and click.
+%%  \endscroll
+%%  \autobuttons\end{page}
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{InputAreas}{Input Areas}
+%%  % --------------------------------------------------------------------
+%%  \beginscroll
+%%  \par Input areas are boxes that you can fill in.
+%%  Here is one:
+%%  \centerline{\inputstring{one}{40}{some text}}
+%%  \newline As you can see, the input area has some initial text {\it some text}
+%%  followed by an underscore (the character {\it _}).
+%%  First, make sure that the mouse cursor is
+%%  on this page. Now type some
+%%  characters at the keyboard.
+%%  The characters that you type are now inserted in front of the underscore.
+%%  You may type as many characters as you like.
+%%  The input area will grow to accomodate as many characters as you type.
+%%  Use the {\it Backspace} key to erase
+%%  characters to the left.
+%%  Use the keys {\it Insert}, {\it Delete}, {\it Home} and {\it End}
+%%  to modify what you type.
+%%  Also try right- and left-arrow keys immediately to the right of the
+%%  standard keyboard.
+%%  \vspace{1}\newline\centerline{\box{\downlink{Next Page}{MultipleugHyperInputPage}}}
+%%  \endscroll
+%%  \end{page}
+
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{MultipleInputAreas}{Multiple Input Areas}
+%%  % --------------------------------------------------------------------
+%%  \beginscroll
+%%  Here is a large input area like the one on the last page:
+%%  \centerline{\inputstring{one}{40}{one}}
+%%  \newline
+%%  and here are two smaller ones:
+%%  \centerline{\inputstring{two}{15}{two}\space{8}\inputstring{three}{7}{three}}
+%%  Move your mouse cursor to somewhere within this page.
+%%  Note that only the first input area has an underscore cursor.
+%%  This means that when you type characters at your keyboard, they
+%%  will go into this first input area. Try it!
+%%  \par
+%%  To type information into another input area,
+%%  use the {\it Enter} or {\it Tab} key to move from one input area to another.
+%%  To move in the reverse order, use {\it Shift + Tab}.
+%%  \par
+%%  You can also move from one input area to another using your mouse.
+%%  Notice that each input area is active. Click on one of the areas.
+%%  As you can see, the underscore cursor now moves to that window.
+%%  \endscroll
+%%  \end{page}
+
+%%  % Now using text from the book
+%%
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{ScrollBars}{Using Scroll Bars}
+%%  % --------------------------------------------------------------------
+%%  When all of the text does not fit within a window, part of the window
+%%  is like a ``looking glass'' you can
+%%  move up and down over the length of the text.
+%%  The text seen by the looking glass has a {\it scroll bar}
+%%  down its right side.
+%%  The {\it scroll bar} allows you to move this looking glass.
+%%  It also tells you the position of the looking glass
+%%  relative to the whole text.
+%%  \beginscroll
+%%  \par
+%%  The part of this \HyperName{} window beginning with this line has a
+%%  {\it scroll bar} along its right side.
+%%  Move the cursor with the mouse to the scroll bar.
+%%  Now move the cursor to the `down-arrow' at the
+%%  bottom of the scroll bar and click. See that the looking glass moves
+%%  down one line. Do it again and again. Each time you click, the
+%%  looking glass moves down one line.
+%%  \par
+%%  Now move the mouse to the 'up-arrow' at the top of the scroll
+%%  bar and click. The looking glass moves up one line each time you click.
+%%  \par
+%%  Next move the mouse to any position along the middle of the
+%%  scroll bar and click.
+%%  This will attempt to move the top of the looking glass to the point where you
+%%  click.
+%%  However, you cannot make the looking glass to go off the bottom edge.
+%%  For this example page, the looking glass region is approximately
+%%  half of the whole region. So the lowest point you can
+%%  set top of the looking glass is halfway down.
+%%  Get the idea?
+%%  \par
+%%  Want to use the keyboard instead of the mouse?
+%%  Then use the {\it Page Up} and {\it Page Down} keys on your
+%%  keyboard. They move the visible part of the region up and down
+%%  one page each time you type them. Try them!
+%%  \par
+%%  If a page does not have an input area, you can also use the {\it Home}
+%%  and up and down arrow keys to move the visible part of the region.
+%%  The {\it Home} key moves the region to the very top of the page.
+%%  The up and down arrow keys move the region up and down one line,
+%%  respectively.
+%%  (If a page does have an input area, these three keys operate on the
+%%  input area.)
+%%  \endscroll
+%%  \autobuttons\end{page}
+
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{StartingButtonHelp}{Know These Buttons}
+%%  % --------------------------------------------------------------------
+%%  \beginscroll
+%%  Most pages have a standard set of buttons at the top of the page.
+%%  \newline
+%%  This is what they mean:
+%%  \par \ExitBitmap   \space{} {\it Exit} from \HyperName{}
+%%  \par \HelpBitmap   \space{} Get {\it Help}
+%%  \par \ReturnBitmap \space{} {\it Jump back} to main page
+%%  \par \UpBitmap     \space{} {\it Go back} one page
+%%  \newline
+%%  \pp
+%%  The {\it Help} button shows you pages that can give you additional
+%%  information.  You can always
+%%  click on {\it Help} while you're
+%%  exploring.
+%%  You can always make forays into new topics.
+%%  \HyperName{} remembers where you came from.
+%%  Don't worry about how to get back. Just click on either the ``up arrow''
+%%  or the ``HOME'' button. Now click on the ``up arrow'' to go back one page.
+%%  \endscroll
+%%  \autobutt{DummyHelp}\end{page}
+
+%%  % --------------------------------------------------------------------
+%%  \begin{page}{StartingMenuHelp}{Menus}
+%%  % --------------------------------------------------------------------
+%%  \pp
+%%  \beginscroll
+%%  A `menu' is a list of topics. Each topic has at least one active area.
+%%  Clicking on the active area marked {\it Menus} is how you got here.
+%%  \horizontalline
+%%  Here is another menu to practice on:
+%%  \newline
+%%  \beginmenu
+%%  %\menulink{Riddle}{RiddlePage}
+%%  %    A classic riddle.
+%%  %\menulink{\HyperName{}}{WhatIsHyperName}
+%%  %    What is \HyperName{}
+%%  \menulink{Buttons}{ButtonHelp}
+%%      Buttons in \HyperName{}.
+%%  \endmenu
+%%  \endscroll
+%%  \autobuttons\end{page}
+
+
+@
+\section{none.ht}
+<<none.ht>>=
+\newcommand{\NoneXmpTitle}{None}
+\newcommand{\NoneXmpNumber}{9.55}
+
+@
+\subsection{None}
+\label{NoneXmpPage}
+\index{pages!NoneXmpPage!none.ht}
+\index{none.ht!pages!NoneXmpPage}
+\index{NoneXmpPage!none.ht!pages}
+<<none.ht>>=
+\begin{page}{NoneXmpPage}{None}
+\beginscroll
+The \spadtype{None} domain is not very useful for interactive
+work but it is provided nevertheless for completeness of the
+Axiom type system.
+\xtc{
+Probably the only place you will ever see it is if you enter an
+empty list with no type information.
+}{
+\spadpaste{[]}
+}
+\xtc{
+Such an empty list can be converted into an empty list
+of any other type.
+}{
+\spadpaste{[] :: List Float}
+}
+\xtc{
+If you wish to produce an empty list of a particular
+type directly, such as \spadtype{List NonNegativeInteger}, do it this way.
+}{
+\spadpaste{[]\$List(NonNegativeInteger)}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{numbers.ht}
+\subsection{Axiom Number Types}
+\label{NumberPage}
+\includegraphics[scale=.5]{ps/v71numberpage.eps}
+\index{images!numberpage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
+\begin{itemize}
+\item ``Integers'' (IntegerPage) \ref{IntegerPage} on 
+page~\pageref{IntegerPage}
+\item ``Fractions'' (FractionPage) \ref{FractionPage} on 
+page~\pageref{FractionPage}
+\item ``Machine Floats'' (DoubleFloatXmpPage) \ref{DoubleFloatXmpPage} on 
+page~\pageref{DoubleFloatXmpPage}
+\item ``Real Numbers'' (FloatXmpPage) \ref{FloatXmpPage} on 
+page~\pageref{FloatXmpPage}
+\item ``Complex Numbers'' (ComplexXmpPage) \ref{ComplexXmpPage} on 
+page~\pageref{ComplexXmpPage}
+\item ``Finite Fields'' (ugProblemFinitePage) \ref{ugProblemFinitePage} on 
+page~\pageref{ugProblemFinitePage}
+\item ``Numeric Functions'' (ugProblemNumericPage) 
+\ref{ugProblemNumericPage} on 
+page~\pageref{ugProblemNumericPage}
+\item ``Cardinal Numbers'' (CardinalNumberXmpPage) 
+\ref{CardinalNumberXmpPage} on 
+page~\pageref{CardinalNumberXmpPage}
+\item ``Machine-sized Integers'' (SingleIntegerXmpPage) 
+\ref{SingleIntegerXmpPage} on 
+page~\pageref{SingleIntegerXmpPage}
+\item ``Roman Numerals'' (RomanNumeralXmpPage) \ref{RomanNumeralXmpPage} on 
+page~\pageref{RomanNumeralXmpPage}
+\item ``Continued Fractions'' (ContinuedFractionXmpPage) 
+\ref{ContinuedFractionXmpPage} on 
+page~\pageref{ContinuedFractionXmpPage}
+\item ``Partial Fractions'' (PartialFractionXmpPage) 
+\ref{PartialFractionXmpPage} on 
+page~\pageref{PartialFractionXmpPage}
+\item ``Quaternions'' (QuaternionXmpPage) \ref{QuaternionXmpPage} on 
+page~\pageref{QuaternionXmpPage}
+\item ``Octonions'' (OctonionXmpPage) \ref{OctonionXmpPage} on 
+page~\pageref{OctonionXmpPage}
+\item ``Repeating Decimals'' (DecimalExpansionXmpPage) 
+\ref{DecimalExpansionXmpPage} on 
+page~\pageref{DecimalExpansionXmpPage}
+\item ``Repeating Binary Expansions'' (BinaryExpansionXmpPage) 
+\ref{BinaryExpansionXmpPage} on 
+page~\pageref{BinaryExpansionXmpPage}
+\item ``Repeating Hexadecimal Expansions'' (HexadecimalExpansionXmpPage) 
+\ref{HexadecimalExpansionXmpPage} on 
+page~\pageref{HexadecimalExpansionXmpPage}
+\item ``Expansions in other Bases '' (RadixExpansionXmpPage) 
+\ref{RadixExpansionXmpPage} on page~\pageref{RadixExpansionXmpPage}
+\end{itemize}
+\index{pages!NumberPage!numbers.ht}
+\index{numbers.ht!pages!NumberPage}
+\index{NumberPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{NumberPage}{Axiom Number Types}
+\beginscroll
+The following types of numbers are among those available in Axiom.
+\beginmenu
+
+\menulink{Integers}{IntegerPage}\tab{16}
+Arithmetic with arbitrarily large integers.
+
+\menulink{Fractions}{FractionPage} \tab{16}
+Rational numbers and general fractions.
+
+\menulink{Machine Floats}{DoubleFloatXmpPage} \tab{16}
+Fixed precision machine floating-point.
+
+\menulink{Real Numbers}{FloatXmpPage} \tab{16}
+Arbitrary precision decimal arithmetic.
+
+\menulink{Complex Numbers}{ComplexXmpPage} \tab{16}
+Complex numbers in general.
+
+\menulink{Finite Fields}{ugProblemFinitePage} \tab{16}
+Arithmetic in characteristic \spad{p}.
+\endmenu
+\horizontalline\newline
+Additional Topics
+\beginmenu
+
+\menulink{Numeric Functions}{ugProblemNumericPage}
+\menulink{Cardinal Numbers}{CardinalNumberXmpPage}
+\menulink{Machine-sized Integers}{SingleIntegerXmpPage}
+\menulink{Roman Numerals}{RomanNumeralXmpPage}
+\menulink{Continued Fractions}{ContinuedFractionXmpPage}
+\menulink{Partial Fractions}{PartialFractionXmpPage}
+\menulink{Quaternions}{QuaternionXmpPage}
+\menulink{Octonions}{OctonionXmpPage}
+\menulink{Repeating Decimals}{DecimalExpansionXmpPage}
+\menulink{Repeating Binary Expansions}{BinaryExpansionXmpPage}
+\menulink{Repeating Hexadecimal Expansions}{HexadecimalExpansionXmpPage}
+\menulink{Expansions in other Bases}{RadixExpansionXmpPage}
+
+\endmenu
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Fraction}
+\label{FractionPage}
+\begin{itemize}
+\item RationalNumberPage \ref{RationalNumberPage} on
+page~pageref{RationalNumberPage}
+\item FractionXmpPage \ref{FractionXmpPage} on
+page~pageref{FractionXmpPage}
+\end{itemize}
+\index{pages!FractionPage!numbers.ht}
+\index{numbers.ht!pages!FractionPage}
+\index{FractionPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{FractionPage}{Fractions}
+
+\beginscroll
+Axiom handles fractions in many different contexts
+and will automatically simplify fractions whenever possible.
+Here are some examples:
+\spadpaste{1/4 - 1/5}
+\spadpaste{f := (x**2 + 1)/(x - 1) \bound{f}}
+\spadpaste{g := (x**2 - 3*x + 2)/(x + 2) \bound{g}}
+\spadpaste{f * g \free{f g}}
+\endscroll
+Additional Topics:
+\beginmenu
+
+\menulink{Rational Numbers}{RationalNumberPage} \tab{18}
+Quotients of integers
+
+\menulink{Quotient Fields}{FractionXmpPage}  \tab{18}
+Quotients over an arbitrary integral domain
+
+%\menulink{Localizations}{LocalizationPage}  \tab{18}
+%Fractions in the most general setting
+\endmenu
+\autobuttons
+\end{page}
+
+@
+\subsection{Rational Number}
+\label{RationalNumberPage}
+\index{pages!RationalNumberPage!numbers.ht}
+\index{numbers.ht!pages!RationalNumberPage}
+\index{RationalNumberPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{RationalNumberPage}{Rational Numbers}
+\beginscroll
+Like integers, rational numbers can be arbitrarily large.
+For example:
+\spadpaste{61657 ** 10 / 999983 ** 12}
+Rational numbers will not be converted to decimals unless you explicitly
+ask Axiom to do so.
+To convert a rational number to a decimal, use the function
+\spadfun{numeric}.
+Here's an example:
+\spadpaste{x := 104348/33215 \bound{x}}
+\spadpaste{numeric x \free{x}}
+You can find the numerator and denominator of rational numbers using
+the functions \spadfun{numer} and \spadfun{denom}, respectively.
+\spadpaste{numer(x) \free{x}}
+\spadpaste{denom(x) \free{x}}
+To factor the numerator and denominator of a fraction, use the following
+command:
+\spadpaste{factor(numer x) / factor(denom x) \free{x}}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Integers}
+\label{IntegerPage}
+\begin{itemize}
+\item IntegerXmpPage \ref{IntegerXmpPage} on
+page~pageref{IntegerXmpPage}
+\item ugxIntegerPrimesPage \ref{ugxIntegerPrimesPage} on
+page~pageref{ugxIntegerPrimesPage}
+\item IntegerNumberTheoryFunctionsXmpPage 
+\ref{IntegerNumberTheoryFunctionsXmpPage} on
+page~pageref{IntegerNumberTheoryFunctionsXmpPage}
+\item IntegerExamplePage \ref{IntegerExamplePage} on
+page~pageref{IntegerExamplePage}
+\item IntegerProblemPage \ref{IntegerProblemPage} on
+page~pageref{IntegerProblemPage}
+\end{itemize}
+\index{pages!IntegerPage!numbers.ht}
+\index{numbers.ht!pages!IntegerPage}
+\index{IntegerPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerPage}{Integers}
+\beginscroll
+In Axiom, integers can be as large as you like.
+Try the following examples:
+\spadpaste{x := factorial(200) \bound{x}}
+\spadpaste{y := 2**90 - 1 \bound{y}}
+Of course, you can now do arithmetic as usual on these (very)
+large integers:
+\spadpaste{x + y \free{x y}}
+\spadpaste{x - y \free{x y}}
+\spadpaste{x * y \free{x y}}
+Axiom can factor integers, but numbers with small prime factors
+\spadpaste{factor(x) \free{x}}
+will factor more rapidly than numbers with large prime factors.
+\spadpaste{factor(y) \free{y}}
+\horizontalline
+Additional Topics
+\beginmenu
+
+\menulink{General Info}{IntegerXmpPage} \tab{16}
+General information and examples of integers.
+
+\menulink{Factorization}{ugxIntegerPrimesPage} \tab{16}
+Primes and factorization.
+
+\menulink{Functions}{IntegerNumberTheoryFunctionsXmpPage} \tab{16}
+Number theoretic functions.
+
+\menulink{Examples}{IntegerExamplePage} \tab{16}
+Examples from number theory.
+
+\menulink{Problems}{IntegerProblemPage} \tab{16}
+Problems from number theory.
+
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Integer Examples}
+\label{IntegerExamplePage}
+\begin{itemize}
+\item IntegerExampleProofPage \ref{IntegerExampleProofPage} on
+page~pageref{IntegerExampleProofPage}
+\end{itemize}
+\index{pages!IntegerExamplePage!numbers.ht}
+\index{numbers.ht!pages!IntegerExamplePage}
+\index{IntegerExamplePage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerExamplePage}{Integer Examples}
+\beginscroll
+One can show that if an integer of the form 2**k + 1 is prime, then
+k must be a power of 2.
+\downlink{Proof}{IntegerExampleProofPage}
+\par
+Pierre Fermat conjectured that every integer of the forn 2**(2**n) + 1
+is prime.
+Let's look for a counterexample.
+First define a function:
+\spadpaste{f: NNI -> INT \bound{f1}}
+\spadpaste{f(n) == 2**(2**n) + 1 \bound{f} \free{f1}}
+Now try commands like:
+\spadpaste{factor f(1) \free{f}}
+\spadpaste{factor f(2) \free{f}}
+until you find an integer of this form which is composite.
+You can also try the following command:
+\spadpaste{for n in 1..6 repeat output factor f(n) \free{f}}
+Obviously, Fermat didn't have access to Axiom!
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Integer Example Proof}
+\label{IntegerExampleProofPage}
+\index{pages!IntegerExampleProofPage!numbers.ht}
+\index{numbers.ht!pages!IntegerExampleProofPage}
+\index{IntegerExampleProofPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerExampleProofPage}{Integer Example Proof}
+\beginscroll
+Proposition.  If 2**k + 1 is prime, then k is a power of 2.
+\newline
+Proof.  Suppose that k = m * n with m > 1 odd.  Then
+%
+\centerline{2**n = -1 (mod (2**n + 1))}
+\centerline{2**(n * m) = (-1)**m = -1 (mod (2**n + 1))}
+\centerline{2**k + 1 = 0 (mod (2**n + 1))}
+%
+Therefore, 2**k + 1 is divisible by 2**n + 1.
+Now 1 < 2**n + 1 and since m > 1, 2**n + 1 < 2**k + 1.
+Hence, 2**k + 1 has a non-trivial factor.
+\newline
+QED
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Integer Problems}
+\label{IntegerProblemPage}
+\begin{itemize}
+\item IntegerProblemProofPage \ref{IntegerProblemProofPage} on
+page~pageref{IntegerProblemProofPage}
+\item IntegerProblemAnswerPage1 \ref{IntegerProblemAnswerPage1} on
+page~pageref{IntegerProblemAnswerPage1}
+\item IntegerProblemAnswerPage2 \ref{IntegerProblemAnswerPage2} on
+page~pageref{IntegerProblemAnswerPage2}
+\end{itemize}
+\index{pages!IntegerProblemPage!numbers.ht}
+\index{numbers.ht!pages!IntegerProblemPage}
+\index{IntegerProblemPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerProblemPage}{Integer Problems}
+\beginscroll
+One can show that if an integer of the form 2**k - 1 is prime, then
+k must be prime.
+\downlink{Proof}{IntegerProblemProofPage}
+\newline
+Problem \#1:  Find the smallest prime p such that \spad{2**p - 1} is not prime.
+\downlink{Answer}{IntegerProblemAnswerPage1}
+\newline
+Problem \#2:  Find the smallest positive integer \spad{n} such that
+\spad{n**2 - n + 41} isn't prime.
+\downlink{Answer}{IntegerProblemAnswerPage2}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Integer Problem Proof}
+\label{IntegerProblemProofPage}
+\index{pages!IntegerProblemProofPage!numbers.ht}
+\index{numbers.ht!pages!IntegerProblemProofPage}
+\index{IntegerProblemProofPage!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerProblemProofPage}{Integer Problem Proof}
+\beginscroll
+Proposition.  If \spad{2**k - 1} is prime, then \spad{k} is prime.
+\newline
+Proof.  Suppose that k = m * n is a non-trivial factorization.
+Then
+%
+\centerline{2**m = 1 (mod (2**m - 1))}
+\centerline{2**(m * n) = 1 (mod (2**m - 1))}
+\newline
+and 2**m - 1 is a non-trivial factor of 2**k - 1.
+\newline
+QED
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Solution to Problem \#1}
+\label{IntegerProblemAnswerPage1}
+\index{pages!IntegerProblemAnswerPage1!numbers.ht}
+\index{numbers.ht!pages!IntegerProblemAnswerPage1}
+\index{IntegerProblemAnswerPage1!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerProblemAnswerPage1}{Solution to Problem \#1}
+\beginscroll
+Problem \#1:  Find the smallest prime p such that \spad{2**p - 1}
+is not prime.
+\newline
+First, define a function:
+\spadpaste{f: NNI -> INT \bound{f1}}
+\spadpaste{f(n) == 2**n - 1 \bound{f} \free{f1}}
+You can try factoring f(p) as p ranges through the set of primes.
+For example,
+\spadpaste{factor f(7) \free{f}}
+This gets tedious after a while, so let's use Axiom's stream
+facility.  (A stream is essentially an infinite sequence.)
+\newline
+First, we create a stream consisting of the positive integers:
+\spadpaste{ints := [n for n in 1..] \bound{ints}}
+Now, we create a stream consisting of the primes:
+\spadpaste{primes := [x for x in ints | prime? x] \bound{primes} \free{ints}}
+Here's the 25th prime:
+\spadpaste{primes.25 \free{primes}}
+Next, create the stream of numbers of the form 2**p - 1 with p prime:
+\spadpaste{numbers := [f(n) for n in primes] \bound{numbers} \free{primes f}}
+Finally, form
+the stream of factorizations of the elements of \spad{numbers}:
+\spadpaste{factors := [factor n for n in numbers] \bound{factors} 
+\free{numbers}}
+You can see that the fifth number in the stream (2047 = 23*89)
+is the first one that has a non-trivial factorization.
+Since 2**11 = 2048, the solution to the problem is 11.
+\newline
+Here's another way to see that 2047 is the first number in the stream that
+is composite:
+\spadpaste{nums := [x for x in numbers | not prime? x] \bound{nums} 
+\free{numbers}}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Solution to Problem \#2}
+\label{IntegerProblemAnswerPage2}
+\index{pages!IntegerProblemAnswerPage2!numbers.ht}
+\index{numbers.ht!pages!IntegerProblemAnswerPage2}
+\index{IntegerProblemAnswerPage2!numbers.ht!pages}
+<<numbers.ht>>=
+\begin{page}{IntegerProblemAnswerPage2}{Solution to Problem \#2}
+\beginscroll
+Problem \#2:  Find the smallest positive integer n such that
+\spad{n**2 - n + 41} is not prime.
+\newline
+When n = 41, n**2 - n + 41 = 41**2, which certainly isn't prime.
+Let's see if any smaller integer works.
+Here are the first 40 values:
+\spadpaste{numbers := [n**2 - n + 41 for n in 0..40] \bound{numbers}}
+Now have Axiom factor the numbers on this list:
+\spadpaste{[factor n for n in numbers] \free{numbers}}
+You can see that 41 is the smallest positive integer n such that
+n**n - n + 41 is not prime.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{oct.ht}
+<<oct.ht>>=
+\newcommand{\OctonionXmpTitle}{Octonion}
+\newcommand{\OctonionXmpNumber}{9.56}
+
+@
+\subsection{Octonion}
+\label{OctonionXmpPage}
+See QuaternionXmpPage \ref{QuaternionXmpPage} on 
+page~\pageref{QuaternionXmpPage}
+\index{pages!OctonionXmpPage!oct.ht}
+\index{oct.ht!pages!OctonionXmpPage}
+\index{OctonionXmpPage!oct.ht!pages}
+<<oct.ht>>=
+\begin{page}{OctonionXmpPage}{Octonion}
+\beginscroll
+
+The Octonions, also called the Cayley-Dixon algebra, defined over a
+commutative ring are an eight-dimensional non-associative algebra.
+Their construction from quaternions is similar to the construction
+of quaternions from complex numbers 
+(see \downlink{`Quaternion'}{QuaternionXmpPage}\ignore{Quaternion}).
+%
+\xtc{
+As \spadtype{Octonion} creates an eight-dimensional algebra, you have to
+give eight components to construct an octonion.
+}{
+\spadpaste{oci1 := octon(1,2,3,4,5,6,7,8) \bound{oci1}}
+}
+\xtc{
+}{
+\spadpaste{oci2 := octon(7,2,3,-4,5,6,-7,0) \bound{oci2}}
+}
+%
+%
+\xtc{
+Or you can use two quaternions to create an octonion.
+}{
+\spadpaste{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0)) \bound{oci3}}
+}
+%
+%
+\xtc{
+You can easily demonstrate the non-associativity of multiplication.
+}{
+\spadpaste{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3) \free{oci1 oci2 oci3}}
+}
+%
+As with the quaternions, we have a real part, the imaginary
+parts \spad{i}, \spad{j}, \spad{k}, and four
+additional imaginary parts \spad{E}, \spad{I}, \spad{J} and \spad{K}.
+These parts correspond to the canonical basis
+\spad{(1,i,j,k,E,I,J,K)}.
+\xtc{
+For each basis element there is a component operation to extract
+the coefficient of the basis element for a given octonion.
+%\spadfunFrom{real}{Octonion},
+%\spadfunFrom{imagi}{Octonion},
+%\spadfunFrom{imagj}{Octonion},
+%\spadfunFrom{imagk}{Octonion},
+%\spadfunFrom{imagE}{Octonion},
+%\spadfunFrom{imagI}{Octonion},
+%\spadfunFrom{imagJ}{Octonion}, and
+%\spadfunFrom{imagK}{Octonion}.
+}{
+\spadpaste{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1] \free{oci1}}
+}
+%
+A basis with respect to the
+quaternions is given by \spad{(1,E)}.
+However, you might ask, what then are the commuting rules?
+To answer this, we create some generic elements.
+%
+\xtc{
+We do this in Axiom
+by simply changing the ground ring from \spadtype{Integer} to
+\spadtype{Polynomial Integer}.
+}{
+\spadpaste{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk) \bound{q}}
+}
+\xtc{
+}{
+\spadpaste{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0) \bound{E}}
+}
+%
+\xtc{
+Note that quaternions are automatically converted to octonions in the
+obvious way.
+}{
+\spadpaste{q * E \free{q E}}
+}
+\xtc{
+}{
+\spadpaste{E * q \free{E q}}
+}
+\xtc{
+}{
+\spadpaste{q * 1\$(Octonion Polynomial Integer) \free{q}}
+}
+\xtc{
+}{
+\spadpaste{1\$(Octonion Polynomial Integer) * q \free{q}}
+}
+\xtc{
+Finally, we check that the \spadfunFrom{norm}{Octonion},
+defined as the sum of the squares of the coefficients,
+is a multiplicative map.
+}{
+\spadpaste{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK) \bound{o}}
+}
+\xtc{
+}{
+\spadpaste{norm o \free{o}}
+}
+\xtc{
+}{
+\spadpaste{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK) \bound{p}}
+}
+\xtc{
+Since the result is \spad{0}, the norm is multiplicative.
+}{
+\spadpaste{norm(o*p)-norm(p)*norm(p)\free{o p} }
+}
+\showBlurb{Octonion}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{odpol.ht}
+<<odpol.ht>>=
+\newcommand{\OrderlyDifferentialPolynomialXmpTitle}
+{OrderlyDifferentialPolynomial}
+\newcommand{\OrderlyDifferentialPolynomialXmpNumber}{9.60}
+
+@
+\subsection{OrderlyDifferentialPolynomial}
+\label{OrderlyDifferentialPolynomialXmpPage}
+\index{pages!OrderlyDifferentialPolynomialXmpPage!odpol.ht}
+\index{odpol.ht!pages!OrderlyDifferentialPolynomialXmpPage}
+\index{OrderlyDifferentialPolynomialXmpPage!odpol.ht!pages}
+<<odpol.ht>>=
+\begin{page}{OrderlyDifferentialPolynomialXmpPage}
+{OrderlyDifferentialPolynomial}
+\beginscroll
+
+Many systems of differential equations may be transformed to equivalent
+systems of ordinary differential equations where the equations are
+expressed polynomially in terms of the unknown functions.
+In Axiom, the domain constructors
+\spadtype{OrderlyDifferentialPolynomial}
+(abbreviated \spadtype{ODPOL}) and
+\spadtype{SequentialDifferentialPolynomial} (abbreviation
+\spadtype{SDPOL}) implement two domains of ordinary differential
+polynomials over any differential ring.
+In the simplest case, this differential ring is usually either the ring of
+integers, or the field of rational numbers.
+However, Axiom can handle ordinary differential polynomials over a
+field of rational functions in a single indeterminate.
+
+The two domains \spadtype{ODPOL} and \spadtype{SDPOL} are almost
+identical, the only difference being the choice of a different ranking,
+which is an ordering of the derivatives of the indeterminates.
+The first domain uses an orderly ranking, that is, derivatives of higher
+order are ranked higher, and derivatives of the same order are ranked
+alphabetically.
+The second domain uses a sequential ranking, where derivatives are ordered
+first alphabetically by the differential indeterminates, and then by
+order.
+A more general domain constructor,
+\spadtype{DifferentialSparseMultivariatePolynomial} (abbreviation
+\spadtype{DSMP}) allows both a user-provided list of differential
+indeterminates as well as a user-defined ranking.
+We shall illustrate \spadtype{ODPOL(FRAC INT)}, which constructs a domain
+of ordinary differential polynomials in an arbitrary number of
+differential indeterminates with rational numbers as coefficients.
+\xtc{
+}{
+\spadpaste{dpol:= ODPOL(FRAC INT) \bound{dpol}}
+}
+
+\xtc{
+A differential indeterminate \spad{w} may be viewed as an infinite
+sequence of algebraic indeterminates, which are the derivatives of
+\spad{w}.
+To facilitate referencing these, Axiom provides the operation
+\spadfunFrom{makeVariable}{OrderlyDifferentialPolynomial} to convert an
+element of type \spadtype{Symbol} to a map from the natural numbers to the
+differential polynomial ring.
+}{
+\spadpaste{w := makeVariable('w)\$dpol \free{dpol}\bound{w}}
+}
+\xtc{
+}{
+\spadpaste{z := makeVariable('z)\$dpol \free{dpol}\bound{z}}
+}
+\xtc{
+The fifth derivative of \spad{w} can be obtained by applying the map
+\spad{w} to the number \spad{5.}
+Note that the order of differentiation is given as a subscript (except
+when the order is 0).
+}{
+\spadpaste{w.5 \free{w}}
+}
+\xtc{
+}{
+\spadpaste{w 0 \free{w}}
+}
+\xtc{
+The first five derivatives of \spad{z} can be generated by a list.
+}{
+\spadpaste{[z.i for i in 1..5] \free{z}}
+}
+\xtc{
+The usual arithmetic can be used to form a differential polynomial from
+the derivatives.
+}{
+\spadpaste{f:= w.4 - w.1 * w.1 * z.3 \free{w}\free{z}\bound{f}}
+}
+\xtc{
+}{
+\spadpaste{g:=(z.1)**3 * (z.2)**2 - w.2 \free{z}\free{w}\bound{g}}
+}
+\xtc{
+The operation \spadfunFrom{D}{OrderlyDifferentialPolynomial}
+computes the derivative of any differential polynomial.
+}{
+\spadpaste{D(f) \free{f}}
+}
+\xtc{
+The same operation can compute higher derivatives, like the
+fourth derivative.
+}{
+\spadpaste{D(f,4) \free{f}}
+}
+\xtc{
+The operation \spadfunFrom{makeVariable}{OrderlyDifferentialPolynomial}
+creates a map to facilitate referencing the derivatives of \spad{f},
+similar to the map \spad{w}.
+}{
+\spadpaste{df:=makeVariable(f)\$dpol \free{f}\bound{df}}
+}
+\xtc{
+The fourth derivative of f may be referenced easily.
+}{
+\spadpaste{df.4 \free{df}}
+}
+\xtc{
+The operation \spadfunFrom{order}{OrderlyDifferentialPolynomial}
+returns the order of a differential polynomial, or the order
+in a specified differential indeterminate.
+}{
+\spadpaste{order(g)  \free{g}}
+}
+\xtc{
+}{
+\spadpaste{order(g, 'w)  \free{g}}
+}
+\xtc{
+The operation
+\spadfunFrom{differentialVariables}{OrderlyDifferentialPolynomial} returns
+a list of differential indeterminates occurring in a differential
+polynomial.
+}{
+\spadpaste{differentialVariables(g)  \free{g}}
+}
+\xtc{
+The operation \spadfunFrom{degree}{OrderlyDifferentialPolynomial} returns
+the degree, or the degree in the differential indeterminate specified.
+}{
+\spadpaste{degree(g) \free{g}}
+}
+\xtc{
+}{
+\spadpaste{degree(g, 'w)  \free{g}}
+}
+\xtc{
+The operation \spadfunFrom{weights}{OrderlyDifferentialPolynomial} returns
+a list of weights of differential monomials appearing in differential
+polynomial, or a list of weights in a specified differential
+indeterminate.
+}{
+\spadpaste{weights(g)  \free{g}}
+}
+\xtc{
+}{
+\spadpaste{weights(g,'w) \free{g}}
+}
+\xtc{
+The operation \spadfunFrom{weight}{OrderlyDifferentialPolynomial} returns
+the maximum weight of all differential monomials appearing in the
+differential polynomial.
+}{
+\spadpaste{weight(g)  \free{g}}
+}
+\xtc{
+A differential polynomial is {\em isobaric} if the weights of all
+differential monomials appearing in it are equal.
+}{
+\spadpaste{isobaric?(g) \free{g}}
+}
+\xtc{
+To substitute {\em differentially}, use
+\spadfunFrom{eval}{OrderlyDifferentialPolynomial}.
+Note that we must coerce \spad{'w} to \spadtype{Symbol}, since in
+\spadtype{ODPOL}, differential indeterminates belong to the domain
+\spadtype{Symbol}.
+Compare this result to the next, which substitutes {\em algebraically} (no
+substitution is done since \spad{w.0} does not appear in \spad{g}).
+}{
+\spadpaste{eval(g,['w::Symbol],[f]) \free{f}\free{g}}
+}
+\xtc{
+}{
+\spadpaste{eval(g,variables(w.0),[f]) \free{f}\free{g}}
+}
+\xtc{
+Since \spadtype{OrderlyDifferentialPolynomial} belongs to
+\spadtype{PolynomialCategory}, all the operations defined in the latter
+category, or in packages for the latter category, are available.
+}{
+\spadpaste{monomials(g) \free{g}}
+}
+\xtc{
+}{
+\spadpaste{variables(g) \free{g}}
+}
+\xtc{
+}{
+\spadpaste{gcd(f,g) \free{f}\free{g}}
+}
+\xtc{
+}{
+\spadpaste{groebner([f,g]) \free{f}\free{g}}
+}
+\xtc{
+The next three operations are essential for elimination procedures in
+differential polynomial rings.
+The operation \spadfunFrom{leader}{OrderlyDifferentialPolynomial} returns
+the leader of a differential polynomial, which is the highest ranked
+derivative of the differential indeterminates that occurs.
+}{
+\spadpaste{lg:=leader(g)  \free{g}\bound{lg}}
+}
+\xtc{
+The operation \spadfunFrom{separant}{OrderlyDifferentialPolynomial} returns
+the separant of a differential polynomial, which is the partial derivative
+with respect to the leader.
+}{
+\spadpaste{sg:=separant(g)  \free{g}\bound{sg}}
+}
+\xtc{
+The operation \spadfunFrom{initial}{OrderlyDifferentialPolynomial} returns
+the initial, which is the leading coefficient when the given differential
+polynomial is expressed as a polynomial in the leader.
+}{
+\spadpaste{ig:=initial(g)  \free{g}\bound{ig}}
+}
+\xtc{
+Using these three operations, it is possible to reduce \spad{f} modulo the
+differential ideal generated by \spad{g}.
+The general scheme is to first reduce the order, then reduce the degree in
+the leader.
+First, eliminate \spad{z.3} using the derivative of \spad{g}.
+}{
+\spadpaste{g1 := D g \free{g}\bound{g1}}
+}
+\xtc{
+Find its leader.
+}{
+\spadpaste{lg1:= leader g1 \free{g1}\bound{lg1}}
+}
+\xtc{
+Differentiate \spad{f} partially with respect to this leader.
+}{
+\spadpaste{pdf:=D(f, lg1) \free{f}\free{lg1}\bound{pdf}}
+}
+\xtc{
+Compute the partial remainder of \spad{f} with respect to \spad{g}.
+}{
+\spadpaste{prf:=sg * f- pdf * g1 \free{f}\free{sg}\free{pdf}\free{g1}\bound{prf}}
+}
+\xtc{
+Note that high powers of \spad{lg} still appear in \spad{prf}.
+Compute the leading coefficient of \spad{prf}
+as a polynomial in the leader of \spad{g}.
+}{
+\spadpaste{lcf:=leadingCoefficient univariate(prf, lg) \free{prf}\free{lg}\bound{lcf}}
+}
+\xtc{
+Finally, continue eliminating the high powers of \spad{lg} appearing in
+\spad{prf} to obtain the (pseudo) remainder of \spad{f} modulo \spad{g}
+and its derivatives.
+}{
+\spadpaste{ig * prf - lcf * g * lg \free{ig}\free{prf}\free{lcf}\free{g}\free{lg}}
+}
+\showBlurb{OrderlyDifferentialPolyomial}
+\showBlurb{SequentialDifferentialPolynomial}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{op.ht}
+<<op.ht>>=
+\newcommand{\OperatorXmpTitle}{Operator}
+\newcommand{\OperatorXmpNumber}{9.58}
+
+@
+\subsection{Operator}
+\label{OperatorXmpPage}
+\index{pages!OperatorXmpPage!alist.ht}
+\index{alist.ht!pages!OperatorXmpPage}
+\index{OperatorXmpPage!alist.ht!pages}
+<<alist.ht>>=
+\begin{page}{OperatorXmpPage}{Operator}
+\beginscroll
+Given any ring \spad{R}, the ring of the \spadtype{Integer}-linear operators
+over \spad{R} is called \spadtype{Operator(R)}.
+To create an operator over \spad{R}, first create a basic operator using the
+operation \spadfun{operator}, and then convert it to \spadtype{Operator(R)}
+for the \spad{R} you want.
+%
+\xtc{
+We choose \spad{R} to be the two by two matrices over the integers.
+}{
+\spadpaste{R := SQMATRIX(2, INT)\bound{r}}
+}
+\xtc{
+Create the operator \spad{tilde} on \spad{R}.
+}{
+\spadpaste{t := operator("tilde") :: OP(R) \free{r}\bound{t}}
+}
+%
+Since \spadtype{Operator} is unexposed we must either package-call operations
+from it, or expose it explicitly.  For convenience we will do the latter.
+%
+\noOutputXtc{
+Expose \spad{Operator}.
+}{
+\spadpaste{)set expose add constructor Operator \free{t}\bound{expose}}
+}
+%
+To attach an evaluation function (from \spad{R} to \spad{R}) to an
+operator over \spad{R}, use \spad{evaluate(op, f)} where \spad{op}
+is an operator over \spad{R} and \spad{f} is a function \spad{R ->
+R}.
+This needs to be done only once when the operator is defined.
+Note that \spad{f} must be \spadtype{Integer}-linear (that is,
+\spad{f(ax+y) = a f(x) + f(y)} for any integer \spad{a}, and any
+\spad{x} and \spad{y} in \spad{R}).
+%
+\xtc{
+We now attach the transpose map to the above operator \spad{t}.
+}{
+\spadpaste{evaluate(t, m +-> transpose m)\free{expose}\free{t}\bound{evt}}
+}
+%
+Operators can be manipulated formally as in any ring: \spadop{+} is the
+pointwise addition and \spadop{*} is composition.
+Any element \spad{x} of \spad{R} can be converted to an operator
+\subscriptText{\tt op}{\tt x}
+over \spad{R}, and the evaluation function of
+\subscriptText{\tt op}{\tt x}
+is left-multiplication by \spad{x}.
+%
+\xtc{
+Multiplying on the
+left by this matrix swaps the two rows.
+}{
+\spadpaste{s : R := matrix [[0, 1], [1, 0]]\bound{s}}
+}
+%
+\xtc{
+Can you guess what is the action of the following operator?
+}{
+\spadpaste{rho := t * s\free{evt s}\bound{rho}}
+}
+%
+%
+\xtc{
+Hint: applying \spad{rho} four times gives the identity, so
+\spad{rho**4-1} should return 0 when applied to any two by two matrix.
+}{
+\spadpaste{z := rho**4 - 1\free{rho}\bound{z}}
+}
+%
+%
+\xtc{
+Now check with this matrix.
+}{
+\spadpaste{m:R := matrix [[1, 2], [3, 4]]\bound{m}}
+}
+\xtc{
+}{
+\spadpaste{z m\free{z m}}
+}
+%
+%
+\xtc{
+As you have probably guessed by now, \spad{rho} acts on matrices
+by rotating the elements clockwise.
+}{
+\spadpaste{rho m\free{rho m}}
+}
+\xtc{
+}{
+\spadpaste{rho rho m\free{rho m}}
+}
+\xtc{
+}{
+\spadpaste{(rho**3) m\free{rho m}}
+}
+%
+%
+\xtc{
+Do the swapping of rows and transposition commute?
+We can check by computing their bracket.
+}{
+\spadpaste{b := t * s - s * t\free{s evt}\bound{b}}
+}
+%
+%
+\xtc{
+Now apply it to \spad{m}.
+}{
+\spadpaste{b m \free{b m}}
+}
+%
+ 
+Next we demonstrate how to define a differential operator
+on a polynomial ring.
+\xtc{
+This is the recursive definition of the \spad{n}-th Legendre polynomial.
+}{
+\begin{spadsrc}[\bound{l}]
+L n ==
+  n = 0 => 1
+  n = 1 => x
+  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
+\end{spadsrc}
+}
+\xtc{
+Create the differential operator \texht{$d \over {dx}$}{\spad{d/dx}} on
+polynomials in \spad{x} over the rational numbers.
+}{
+\spadpaste{dx := operator("D") :: OP(POLY FRAC INT) \bound{dx}}
+}
+\xtc{
+Now attach the map to it.
+}{
+\spadpaste{evaluate(dx, p +-> D(p, 'x)) \free{dx}\bound{edx}}
+}
+\xtc{
+This is the differential equation satisfied by the \spad{n}-th
+Legendre polynomial.
+}{
+\spadpaste{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1) \free{edx}\bound{E}}
+}
+\xtc{
+Now we verify this for \spad{n = 15}.
+Here is the polynomial.
+}{
+\spadpaste{L 15 \free{L}}
+}
+\xtc{
+Here is the operator.
+}{
+\spadpaste{E 15 \free{E}}
+}
+\xtc{
+Here is the evaluation.
+}{
+\spadpaste{(E 15)(L 15) \free{L E}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{ovar.ht}
+<<ovar.ht>>=
+\newcommand{\OrderedVariableListXmpTitle}{OrderedVariableList}
+\newcommand{\OrderedVariableListXmpNumber}{9.59}
+
+@
+\subsection{OrderedVariableList}
+\label{OrderedVariableListXmpPage}
+\index{pages!OrderedVariableListXmpPage!ovar.ht}
+\index{ovar.ht!pages!OrderedVariableListXmpPage}
+\index{OrderedVariableListXmpPage!ovar.ht!pages}
+<<ovar.ht>>=
+\begin{page}{OrderedVariableListXmpPage}{OrderedVariableList}
+\beginscroll
+
+The domain \spadtype{OrderedVariableList} provides symbols
+which are restricted to a particular list and have a definite 
+ordering. Those two features are specified by a \spadtype{List Symbol}
+object that is the argument to the domain.
+\xtc{
+This is a sample ordering of three symbols.
+}{
+\spadpaste{ls:List Symbol:=['x,'a,'z] \bound{ls}}
+}
+\xtc{
+Let's build the domain
+}{
+\spadpaste{Z:=OVAR ls \bound{Z} \free{ls}}
+}
+\xtc{
+How many variables does it have?
+}{
+\spadpaste{size()$Z \free{Z}}
+}
+\xtc{
+They are (in the imposed order)
+}{
+\spadpaste{lv:=[index(i::PI)$Z for i in 1..size()$Z] \bound{lv}\free{Z}}
+}
+\xtc{
+Check that the ordering is right
+}{
+\spadpaste{sorted?(>,lv) \free{lv}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{perman.ht}
+<<perman.ht>>=
+\newcommand{\PermanentXmpTitle}{Permanent}
+\newcommand{\PermanentXmpNumber}{9.62}
+
+@
+\subsection{Permanent}
+\label{PermanentXmpPage}
+\index{pages!PermanentXmpPage!perman.ht}
+\index{perman.ht!pages!PermanentXmpPage}
+\index{PermanentXmpPage!perman.ht!pages}
+<<perman.ht>>=
+\begin{page}{PermanentXmpPage}{Permanent}
+\beginscroll
+The package \spadtype{Permanent} provides the function
+\spadfunFrom{permanent}{Permanent} for square matrices.
+The \spadfunFrom{permanent}{Permanent} of a square matrix can be computed
+in the same way as the determinant by expansion of minors except that for
+the permanent the sign for each element is \spad{1}, rather than being
+\spad{1} if the row plus column indices is positive and \spad{-1}
+otherwise.
+This function is much more difficult to compute efficiently than the
+\spadfunFrom{determinant}{Matrix}.
+An example of the use of \spadfunFrom{permanent}{Permanent} is the
+calculation of the \eth{\spad{n}} derangement number, defined to be the number
+of different possibilities for \spad{n} couples to dance but never with
+their own spouse.
+\xtc{
+Consider an \spad{n} by \spad{n} matrix with entries 
+\spad{0} on the diagonal and
+\spad{1} elsewhere.
+Think of the rows as one-half of each couple (for example, the males) and the
+columns the other half.
+The permanent of such a matrix gives the desired derangement number.
+}{
+\begin{spadsrc}[\bound{kn}]
+kn n ==
+  r : MATRIX INT := new(n,n,1)
+  for i in 1..n repeat
+    r.i.i := 0
+  r
+\end{spadsrc}
+}
+\xtc{
+Here are some derangement numbers, which you see grow quite fast.
+}{
+\spadpaste{permanent(kn(5) :: SQMATRIX(5,INT)) \free{kn}}
+}
+\xtc{
+}{
+\spadpaste{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13] \free{kn}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{pfr.ht}
+<<pfr.ht>>=
+\newcommand{\PartialFractionXmpTitle}{PartialFraction}
+\newcommand{\PartialFractionXmpNumber}{9.61}
+
+@
+\subsection{PartialFraction}
+\label{PartialFractionXmpPage}
+See FullPartialFractionExpansionXmpPage 
+\ref{FullPartialFractionExpansionXmpPage} on
+page~\pageref{FullPartialFractionExpansionXmpPage}
+\index{pages!PartialFractionXmpPage!pfr.ht}
+\index{pfr.ht!pages!PartialFractionXmpPage}
+\index{PartialFractionXmpPage!pfr.ht!pages}
+<<pfr.ht>>=
+\begin{page}{PartialFractionXmpPage}{PartialFraction}
+\beginscroll
+
+A {\it partial fraction} is a decomposition of a quotient into
+a sum
+of quotients where the denominators of the summands are powers of
+primes.\footnote{Most people first encounter partial fractions when they
+are learning integral calculus.
+For a technical discussion of partial fractions, see, for example, Lang's {\it
+Algebra.}} For example, the rational number \spad{1/6} is decomposed into
+\spad{1/2 -1/3}.
+You can compute partial fractions of quotients of objects from domains
+belonging to the category \spadtype{EuclideanDomain}.
+For example, \spadtype{Integer}, \spadtype{Complex Integer}, and
+\spadtype{UnivariatePolynomial(x, Fraction Integer)} all belong to
+\spadtype{EuclideanDomain}.
+In the examples following, we demonstrate how to decompose quotients of
+each of these kinds of object into partial fractions.
+Issue the system command
+\spadcmd{)show PartialFraction}
+to display the full list of operations defined by \spadtype{PartialFraction}.
+
+It is necessary that we know how to factor the denominator when we want to
+compute a partial fraction.
+Although the interpreter can often do this automatically, it may be
+necessary for you to include a call to \spadfun{factor}.
+In these examples, it is not necessary to factor the
+denominators explicitly.
+%
+\xtc{
+The main operation for computing partial fractions is called
+\spadfunFrom{partialFraction}{PartialFraction} and we use this to
+compute a decomposition of \spad{1 / 10!}.
+The first argument to \spadfunFrom{partialFraction}{PartialFraction} is
+the numerator of the quotient and the second argument is the factored
+denominator.
+}{
+\spadpaste{partialFraction(1,factorial 10) \bound{prev1}}
+}
+\xtc{
+Since the denominators are powers of primes, it may be possible
+to expand the numerators further with respect to those primes. Use the
+operation \spadfunFrom{padicFraction}{PartialFraction} to do this.
+}{
+\spadpaste{f := padicFraction(\%) \free{prev1}\bound{f}}
+}
+%
+%
+\xtc{
+The operation \spadfunFrom{compactFraction}{PartialFraction} returns an
+expanded fraction into the usual form.
+The compacted version is used internally for computational efficiency.
+}{
+\spadpaste{compactFraction(f) \free{f}}
+}
+%
+\xtc{
+You can add, subtract, multiply
+and divide partial fractions.  In addition, you can extract the parts
+of the decomposition.
+\spadfunFrom{numberOfFractionalTerms}{PartialFraction} computes
+the number of terms in the fractional part.
+This does not include the whole part of the fraction,
+which you get by calling \spadfunFrom{wholePart}{PartialFraction}.
+In this example, the whole part is just \spad{0}.
+}{
+\spadpaste{numberOfFractionalTerms(f) \free{f}}
+}
+\xtc{
+The operation
+\spadfunFrom{nthFractionalTerm}{PartialFraction} returns the individual terms in the
+decomposition.
+Notice that the object returned is a partial fraction itself.
+\spadfunFrom{firstNumer}{PartialFraction} and
+\spadfunFrom{firstDenom}{PartialFraction} extract the numerator and
+denominator of the first term of the fraction.
+}{
+\spadpaste{nthFractionalTerm(f,3) \free{f}}
+}
+%
+
+%
+\xtc{
+Given two gaussian integers (see \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex}), you can
+decompose their quotient into a partial fraction.
+}{
+\spadpaste{partialFraction(1,- 13 + 14 * \%i) \bound{prev2}}
+}
+%
+\xtc{
+To convert back to a quotient, simply use a conversion.
+}{
+\spadpaste{\% :: Fraction Complex Integer \free{prev2}}
+}
+
+To conclude this section, we compute the decomposition of
+\texht{\narrowDisplay{1 \over {{(x + 1)}{(x + 2)}^2{(x + 3)}^3{(x + 4)}^4}}}{
+\begin{verbatim}
+                   1
+     -------------------------------
+                   2       3       4
+     (x + 1)(x + 2) (x + 3) (x + 4)
+\end{verbatim}
+}
+The polynomials in this object have type
+\spadtype{UnivariatePolynomial(x, Fraction Integer)}.
+%
+\xtc{
+We use the \spadfunFrom{primeFactor}{Factored} operation (see
+\downlink{`Factored'}{FactoredXmpPage}\ignore{Factored}) to create the denominator in factored form directly.
+}{
+\spadpaste{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4]) \bound{u}}
+}
+%
+%
+\xtc{
+These are the compact and expanded partial fractions for the quotient.
+}{
+\spadpaste{partialFraction(1,u) \free{u}\bound{prev3}}
+}
+\xtc{
+}{
+\spadpaste{padicFraction \% \free{prev3}}
+}
+
+All see \downlink{`FullPartialFractionExpansion'}{FullPartialFractionExpansionXmpPage}\ignore{FullPartialFractionExpansion} for examples of
+factor-free conversion of quotients to full partial fractions.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{poly.ht}
+\subsection{Polynomials}
+\label{PolynomialPage}
+\includegraphics[scale=.5]{ps/v71polynomialpage.eps}
+\index{images!polynomialpage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
+\begin{itemize}
+\item ``Basic Functions'' (PolynomialBasicPage) \ref{PolynomialBasicPage} on
+page~\pageref{PolynomialBasicPage}
+\item ``Substitutions'' (PolynomialSubstitutionPage) 
+\ref{PolynomialSubstitutionPage} on
+page~\pageref{PolynomialSubstitutionPage}
+\item ``Factorizations'' (ugProblemFactorPage) \ref{ugProblemFactorPage} on
+page~\pageref{ugProblemFactorPage}
+\item ``GCDs and Friends'' (PolynomialGCDPage) \ref{PolynomialGCDPage} on
+page~\pageref{PolynomialGCDPage}
+\item ``Roots'' (PolynomialRootPage) \ref{PolynomialRootPage} on
+page~\pageref{PolynomialRootPage}
+\item ``Specific Types'' (PolynomialTypesPage) \ref{PolynomialTypesPage} on
+page~\pageref{PolynomialTypesPage}
+\end{itemize}
+\index{pages!PolynomialPage!poly.ht}
+\index{poly.ht!pages!PolynomialPage}
+\index{PolynomialPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialPage}{Polynomials}
+\beginscroll
+\beginmenu
+\menulink{Basic Functions}{PolynomialBasicPage} \tab{18}
+Create and manipulate polynomials.
+\menulink{Substitutions}{PolynomialSubstitutionPage} \tab{18}
+Evaluate polynomials.
+\menulink{Factorization}{ugProblemFactorPage} \tab{18}
+Factor in different contexts.
+\menulink{GCDs and Friends}{PolynomialGCDPage} \tab{18}
+Greatest common divisors etc..
+\menulink{Roots}{PolynomialRootPage}\tab{18}
+Work with and solve for roots.
+\menulink{Specific Types}{PolynomialTypesPage}\tab{18}
+More specific information.
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{The Specific Polynomial Types}
+\label{PolynomialTypesPage}
+\index{pages!PolynomialTypesPage!poly.ht}
+\index{poly.ht!pages!PolynomialTypesPage}
+\index{PolynomialTypesPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialTypesPage}{The Specific Polynomial Types}
+\beginscroll
+\beginmenu
+\menulink{Polynomial}{PolynomialXmpPage} \newline
+The general type.
+\menulink{UnivariatePolynomial}{UnivariatePolynomialXmpPage} \newline
+One variable polynomials.
+\menulink{MultivariatePolynomial}{MultivariatePolynomialXmpPage} \newline
+Multiple variable polynomials, recursive structure.
+\menulink{DistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage}
+\newline
+Multiple variable polynomials, non-recursive structure.
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Basic Operations On Polynomials}
+\label{PolynomialBasicPage}
+\index{pages!PolynomialBasicPage!poly.ht}
+\index{poly.ht!pages!PolynomialBasicPage}
+\index{PolynomialBasicPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialBasicPage}{Basic Operations On Polynomials}
+\beginscroll
+You create
+polynomials using the usual operations of \spadopFrom{+}{Polynomial},
+\spadopFrom{-}{Polynomial}, \spadopFrom{*}{Polynomial}
+(for multiplication), and \spadopFrom{**}{Polynomial} (for exponentiation).
+Here are two examples: \newline
+\spadpaste{p := a*x**2 + b*x*y + c*y**2 \bound{p}} 
+\spadpaste{q := 13*x**2 + 3*z \bound{q}} 
+These operations can also be used to combine polynomials.
+Try the following:
+\spadpaste{p + q \free{p q}} 
+\spadpaste{p - 3*q \free{p q}} 
+\spadpaste{p**2 + p*q \free{p q}} 
+\spadpaste{r := (p + q)**2 \bound{r} \free{p q}}
+As you can see from the above examples, the variables are ordered
+by defaults \spad{z > y > x > c > b > a},
+that is, \spad{z} is the main variable, then
+\spad{y} and so on in reverse alphabetical order.
+You can redefine this
+ordering (for display purposes only) with the \spadfun{setVariableOrder}
+command.
+For example, the following
+makes \spad{a} the main variable, then \spad{b}, and so on:
+\spadpaste{setVariableOrder [a,b,c,x,y,z] \bound{vord}}
+Now compare the way polynomials are displayed:
+\spadpaste{p \free{p vord}}
+\spadpaste{q \free{q vord}}
+\spadpaste{r \free{r vord}}
+To return to the system's default ordering,
+use \spadfun{resetVariableOrder}.
+\spadpaste{resetVariableOrder() \bound{rvord}}
+\spadpaste{p \free{p rvord}}
+Polynomial coefficients can be pulled out
+using the function \spadfun{coefficient}. \newline
+For example:
+\spadpaste{coefficient(q,x,2) \free{q}} 
+will give you the coefficient of \spad{x**2} in the polynomial \spad{q}.
+\newline
+Try these commands:
+\spadpaste{coefficient(r,x,3) \free{r}} 
+\spadpaste{c := coefficient(r,z,1) \free{r} \bound{c}} 
+\spadpaste{coefficient(c,x,2) \free{c}}
+Coefficients of monomials can be obtained as follows:
+\spadpaste{coefficient(q**2, [x,z], [2,1]) \free{q}}
+This will return the coefficient of x**2 * z in the polynomial q**2.
+Also,
+\spadpaste{coefficient(r, [x,y], [2,2]) \free{r}}
+will return the coefficient of \spad{x**2 * y**2}
+in the polynomial \spad{r(x,y)}.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Polynomial Evaluation and Substitution}
+\label{PolynomialSubstitutionPage}
+\index{pages!PolynomialSubstitutionPage!poly.ht}
+\index{poly.ht!pages!PolynomialSubstitutionPage}
+\index{PolynomialSubstitutionPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialSubstitutionPage}
+{Polynomial Evaluation and Substitution}
+\beginscroll
+The function \spadfun{eval} is used to substitute values into polynomials.
+Here's an example of how to use it:
+\spadpaste{p := x**2 + y**2 \bound{p}}
+\spadpaste{eval(p,x=5) \free{p}}
+\newline
+This example would give you the value of the polynomial \spad{p} at 5.
+You can also substitute into polynomials with
+several variables.  First, specify the polynomial, then give
+a list of bindings of the form \spad{variable = value}. For example:
+\spadpaste{eval(p,[x = a + b,y = c + d]) \free{p}}
+Here \spad{x} was replaced by \spad{a + b},
+and \spad{y} was replaced by \spad{c + d}.
+Here's another example:
+\spadpaste{q := x**3 + 5*x - y**4 \bound{q}}
+\spadpaste{eval(q,[x=y,y=x]) \free{q}}
+Substitution is done ``in parallel.''
+That is, Axiom takes
+\spad{q(x,y)} and returns \spad{q(y,x)}.
+\newline
+You can also substitute numerical values for some or all of the
+variables:
+\spadpaste{px := eval(p, y = sin(2.0)) \bound{px} \free{p}}
+\spadpaste{eval(px, x = cos(2.0)) \free{px}}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Greatest Common Divisors, Resultants, and Discriminants}
+\label{PolynomialGCDPage}
+\index{pages!PolynomialGCDPage!poly.ht}
+\index{poly.ht!pages!PolynomialGCDPage}
+\index{PolynomialGCDPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialGCDPage}
+{Greatest Common Divisors, Resultants, and Discriminants}
+\beginscroll
+You can compute the greatest common divisor of two polynomials using the
+function \spadfun{gcd}.
+Here's an example:
+\spadpaste{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2 \bound{p}}
+\spadpaste{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5 \bound{q}}
+\spadpaste{gcd(p,q) \free{p q}}
+You could
+also see that \spad{p} and \spad{q} have a factor in common by using the
+function \spadfun{resultant}:
+\spadpaste{resultant(p,q,x) \free{p q}}
+The resultant of two polynomials vanishes precisely when they have a
+factor in common.
+(In the example above
+we specified the variable with
+which we wanted to compute the resultant because the
+polynomials could have involved variables other than x.)
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Roots of Polynomials}
+\label{PolynomialRootPage}
+\index{pages!PolynomialRootPage!poly.ht}
+\index{poly.ht!pages!PolynomialRootPage}
+\index{PolynomialRootPage!poly.ht!pages}
+<<poly.ht>>=
+\begin{page}{PolynomialRootPage}{Roots of Polynomials}
+\beginscroll
+\beginmenu
+\menulink{Using a Single Root of a Polynomial}{ugxProblemSymRootOnePage}
+\newline
+Working with a single root of a polynomial.
+\menulink{Using All Roots of a Polynomial}{ugxProblemSymRootAllPage}
+\newline
+Working with all the roots of a polynomial.
+\menulink{Solution of a Single Polynomial Equation}{ugxProblemOnePolPage}
+\newline
+Finding the roots of one polynomial.
+\menulink{Solution of Systems of Polynomial Equations}{ugxProblemPolSysPage}
+\newline
+Finding the roots of a system of polynomials.
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{poly1.ht}
+<<poly1.ht>>=
+\newcommand{\PolynomialXmpTitle}{Polynomial}
+\newcommand{\PolynomialXmpNumber}{9.63}
+
+@
+\subsection{Polynomial}
+\label{PolynomialXmpPage}
+\begin{itemize}
+\item DistributedMultivariatePolynomialXmpPage \ref{DistributedMultivariatePolynomialXmpPage} on
+page~pageref{DistributedMultivariatePolynomialXmpPage}
+\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
+page~pageref{MultivariatePolynomialXmpPage}
+\item UnivariatePolynomialXmpPage \ref{UnivariatePolynomialXmpPage} on
+page~pageref{UnivariatePolynomialXmpPage}
+\item FactoredXmpPage \ref{FactoredXmpPage} on
+page~pageref{FactoredXmpPage}
+\item ugProblemFactorPage \ref{ugProblemFactorPage} on
+page~pageref{ugProblemFactorPage}
+\end{itemize}
+\index{pages!PolynomialXmpPage!poly1.ht}
+\index{poly1.ht!pages!PolynomialXmpPage}
+\index{PolynomialXmpPage!poly1.ht!pages}
+<<poly1.ht>>=
+\begin{page}{PolynomialXmpPage}{Polynomial}
+\beginscroll
+
+The domain constructor \spadtype{Polynomial} (abbreviation: \spadtype{POLY})
+provides polynomials with an arbitrary number of unspecified
+variables.
+
+\xtc{
+It is used to create the default polynomial domains
+in Axiom.
+Here the coefficients are integers.
+}{
+\spadpaste{x + 1}
+}
+\xtc{
+Here the coefficients have type \spadtype{Float}.
+}{
+\spadpaste{z - 2.3}
+}
+\xtc{
+And here we have a polynomial in two variables with coefficients which
+have type \spadtype{Fraction Integer}.
+}{
+\spadpaste{y**2 - z + 3/4}
+}
+
+The representation of objects of domains created by \spadtype{Polynomial}
+is that of recursive univariate polynomials.\footnote{The term
+\spad{univariate} means ``one variable.'' \spad{multivariate} means
+``possibly more than one variable.''}
+\xtc{
+This recursive structure is sometimes obvious from the display of
+a polynomial.
+}{
+\spadpaste{y **2 + x*y + y \bound{prev}}
+}
+In this example, you see that the polynomial is stored as a polynomial in
+\spad{y} with coefficients that are polynomials in \spad{x} with integer
+coefficients.
+In fact, you really don't need to worry about the representation unless
+you are working on an advanced application where it is critical.
+The polynomial types created from
+\spadtype{DistributedMultivariatePolynomial} and
+\spadtype{NewDistributedMultivariatePolynomial} (discussed in
+\downlink{`DistributedMultivariatePolynomial'}
+{DistributedMultivariatePolynomialXmpPage}
+\ignore{DistributedMultivariatePolynomial}) are stored and displayed in a
+non-recursive manner.
+\xtc{
+You see a ``flat'' display of the above
+polynomial by converting to one of those types.
+}{
+\spadpaste{\% :: DMP([y,x],INT) \free{prev}}
+}
+
+We will demonstrate many of the polynomial facilities by using two
+polynomials with integer coefficients.
+\xtc{
+By default, the interpreter expands polynomial expressions, even if they
+are written in a factored format.
+}{
+\spadpaste{p := (y-1)**2 * x * z \bound{p}}
+}
+\xtc{
+See \downlink{`Factored'}{FactoredXmpPage}\ignore{Factored} to see
+how to create objects in factored form directly.
+}{
+\spadpaste{q := (y-1) * x * (z+5) \bound{q}}
+}
+\xtc{
+The fully factored form can be recovered by using
+\spadfunFrom{factor}{Polynomial}.
+}{
+\spadpaste{factor(q) \free{q}}
+}
+This is the same name used for the operation to factor integers.
+Such reuse of names is called \spadglos{overloading} and makes it much easier
+to think of solving problems in general ways.
+Axiom facilities for factoring polynomials created with
+\spadtype{Polynomial} are currently restricted to
+the integer and rational number coefficient cases.
+There are more complete facilities for factoring univariate polynomials:
+see \downlink{``\ugProblemFactorTitle''}{ugProblemFactorPage} 
+in Section \ugProblemFactorNumber\ignore{ugProblemFactor}.
+
+\xtc{
+The standard arithmetic operations are available for polynomials.
+}{
+\spadpaste{p - q**2\free{p q}}
+}
+\xtc{
+The operation \spadfunFrom{gcd}{Polynomial} is used to compute the
+greatest common divisor of two polynomials.
+}{
+\spadpaste{gcd(p,q) \free{p q}\bound{prev4}}
+}
+\xtc{
+In the case of \spad{p} and \spad{q}, the gcd is obvious from their
+definitions.
+We factor the gcd to show this relationship better.
+}{
+\spadpaste{factor \% \free{prev4}}
+}
+\xtc{
+The least common multiple is computed by using \spadfunFrom{lcm}{Polynomial}.
+}{
+\spadpaste{lcm(p,q) \free{p q}}
+}
+\xtc{
+Use \spadfunFrom{content}{Polynomial} to compute the 
+greatest common divisor of the
+coefficients of the polynomial.
+}{
+\spadpaste{content p \free{p}}
+}
+
+Many of the operations on polynomials require you to specify a variable.
+For example, \spadfunFrom{resultant}{Polynomial} requires you to give the
+variable in which the polynomials should be expressed.
+\xtc{
+This computes the resultant of the values of \spad{p} and
+\spad{q}, considering them as polynomials in the variable \spad{z}.
+They do not share a root when thought of as polynomials in \spad{z}.
+}{
+\spadpaste{resultant(p,q,z) \free{p q}}
+}
+\xtc{
+This value is \spad{0} because as polynomials in \spad{x} the polynomials
+have a common root.
+}{
+\spadpaste{resultant(p,q,x) \free{p}\free{q}}
+}
+The data type used for the variables created by \spadtype{Polynomial} is
+\spadtype{Symbol}.
+As mentioned above, the representation used by \spadtype{Polynomial} is
+recursive and so there is a main variable for nonconstant polynomials.
+\xtc{
+The operation \spadfunFrom{mainVariable}{Polynomial} returns this
+variable.
+The return type is actually a union of \spadtype{Symbol} and
+\spad{"failed"}.
+}{
+\spadpaste{mainVariable p \free{p}}
+}
+\xtc{
+The latter branch of the union is be used if the polynomial has no
+variables, that is, is a constant.
+}{
+\spadpaste{mainVariable(1 :: POLY INT)}
+}
+\xtc{
+You can also use the predicate \spadfunFrom{ground?}{Polynomial} to test
+whether a polynomial is in fact a member of its ground ring.
+}{
+\spadpaste{ground? p \free{p}}
+}
+\xtc{
+}{
+\spadpaste{ground?(1 :: POLY INT)}
+}
+\xtc{
+The complete list of variables actually used in a particular polynomial is
+returned by \spadfunFrom{variables}{Polynomial}.
+For constant polynomials, this list is empty.
+}{
+\spadpaste{variables p \free{p}}
+}
+
+\xtc{
+The \spadfunFrom{degree}{Polynomial} operation returns the
+degree of a polynomial in a specific variable.
+}{
+\spadpaste{degree(p,x) \free{p}}
+}
+\xtc{
+}{
+\spadpaste{degree(p,y) \free{p}}
+}
+\xtc{
+}{
+\spadpaste{degree(p,z) \free{p}}
+}
+\xtc{
+If you give a list of variables for the second argument, a list
+of the degrees in those variables is returned.
+}{
+\spadpaste{degree(p,[x,y,z]) \free{p}}
+}
+\xtc{
+The minimum degree of a variable in a polynomial is computed using
+\spadfunFrom{minimumDegree}{Polynomial}.
+}{
+\spadpaste{minimumDegree(p,z) \free{p}}
+}
+\xtc{
+The total degree of a polynomial is returned by
+\spadfunFrom{totalDegree}{Polynomial}.
+}{
+\spadpaste{totalDegree p \free{p}}
+}
+
+\xtc{
+It is often convenient to think of a polynomial as a leading monomial plus
+the remaining terms.
+}{
+\spadpaste{leadingMonomial p \free{p}}
+}
+\xtc{
+The \spadfunFrom{reductum}{Polynomial} operation returns a polynomial
+consisting of the sum of the monomials after the first.
+}{
+\spadpaste{reductum p \free{p}}
+}
+\xtc{
+These have the obvious relationship that the original polynomial
+is equal to the leading monomial plus the reductum.
+}{
+\spadpaste{p - leadingMonomial p - reductum p \free{p}}
+}
+\xtc{
+The value returned by \spadfunFrom{leadingMonomial}{Polynomial} includes
+the coefficient of that term.
+This is extracted by using
+\spadfunFrom{leadingCoefficient}{Polynomial} on the original polynomial.
+}{
+\spadpaste{leadingCoefficient p \free{p}}
+}
+\xtc{
+The operation \spadfunFrom{eval}{Polynomial} is used to substitute a value
+for a variable in a polynomial.
+}{
+\spadpaste{p  \free{p}}
+}
+\xtc{
+This value may be another variable, a constant or a polynomial.
+}{
+\spadpaste{eval(p,x,w) \free{p}}
+}
+\xtc{
+}{
+\spadpaste{eval(p,x,1) \free{p}}
+}
+\xtc{
+Actually, all the things being substituted are just polynomials,
+some more trivial than others.
+}{
+\spadpaste{eval(p,x,y**2 - 1) \free{p}}
+}
+
+\xtc{
+Derivatives are computed using the \spadfunFrom{D}{Polynomial}
+operation.
+}{
+\spadpaste{D(p,x) \free{p}}
+}
+\xtc{
+The first argument is the polynomial and the second is the variable.
+}{
+\spadpaste{D(p,y) \free{p}}
+}
+\xtc{
+Even if the polynomial has only one variable, you must specify it.
+}{
+\spadpaste{D(p,z) \free{p}}
+}
+
+Integration of polynomials is similar and the
+\spadfunFrom{integrate}{Polynomial} operation is used.
+
+\xtc{
+Integration requires that the coefficients support division.
+Consequently,
+Axiom converts polynomials over the integers to polynomials over
+the rational numbers before integrating them.
+}{
+\spadpaste{integrate(p,y) \free{p}}
+}
+
+It is not possible, in general, to divide two polynomials.
+In our example using polynomials over the integers, the operation
+\spadfunFrom{monicDivide}{Polynomial} divides a polynomial by a monic
+polynomial (that is, a polynomial with leading coefficient equal to 1).
+The result is a record of the quotient and remainder of the
+division.
+\xtc{
+You must specify the variable in which to express the polynomial.
+}{
+\spadpaste{qr := monicDivide(p,x+1,x) \free{p}\bound{qr}}
+}
+\xtc{
+The selectors of the components of the record are
+\spad{quotient} and \spad{remainder}.
+Issue this to extract the remainder.
+}{
+\spadpaste{qr.remainder \free{qr}}
+}
+\xtc{
+Now that we can extract the components, we can demonstrate the
+relationship among them and the arguments to our original expression
+\spad{qr := monicDivide(p,x+1,x)}.
+}{
+\spadpaste{p - ((x+1) * qr.quotient + qr.remainder) \free{p}\free{qr}}
+}
+
+\xtc{
+If the \spadopFrom{/}{Fraction} operator is used with polynomials, a
+fraction object is created.
+In this example, the result is an object of type \spadtype{Fraction
+Polynomial Integer}.
+}{
+\spadpaste{p/q \free{p}\free{q}}
+}
+\xtc{
+If you use rational numbers as polynomial coefficients, the
+resulting object is of type \spadtype{Polynomial Fraction Integer}.
+}{
+\spadpaste{(2/3) * x**2 - y + 4/5 \bound{prev1}}
+}
+\xtc{
+This can be converted to a fraction of polynomials and back again, if
+required.
+}{
+\spadpaste{\% :: FRAC POLY INT \free{prev1}\bound{prev2}}
+}
+\xtc{
+}{
+\spadpaste{\% :: POLY FRAC INT \free{prev2}\bound{prev3}}
+}
+\xtc{
+To convert the coefficients to floating point,
+map the \spadfun{numeric} operation on the coefficients of the polynomial.
+}{
+\spadpaste{map(numeric,\%) \free{prev3}}
+}
+
+For more information on related topics, see
+\downlink{`UnivariatePolynomial'}{UnivariatePolynomialXmpPage}\ignore{UnivariatePolynomial},
+\downlink{`MultivariatePolynomial'}{MultivariatePolynomialXmpPage}\ignore{MultivariatePolynomial}, and
+\downlink{`DistributedMultivariatePolynomial'}{DistributedMultivariatePolynomialXmpPage}\ignore{DistributedMultivariatePolynomial}.
+You can also issue the system command
+\spadcmd{)show Polynomial}
+to display the full list of operations defined by
+\spadtype{Polynomial}.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{quat.ht}
+<<quat.ht>>=
+\newcommand{\QuaternionXmpTitle}{Quaternion}
+\newcommand{\QuaternionXmpNumber}{9.64}
+
+@
+\subsection{Quaternion}
+\label{QuaternionXmpPage}
+\index{pages!QuaternionXmpPage!quat.ht}
+\index{quat.ht!pages!QuaternionXmpPage}
+\index{QuaternionXmpPage!quat.ht!pages}
+<<quat.ht>>=
+\begin{page}{QuaternionXmpPage}{Quaternion}
+% =====================================================================
+\beginscroll
+The domain constructor \spadtype{Quaternion} implements quaternions over
+commutative rings.
+For information on related topics, see
+%\menuxmpref{CliffordAlgebra}
+\downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} and
+\downlink{`Octonion'}{OctonionXmpPage}\ignore{Octonion}.
+You can also issue the system command
+\spadcmd{)show Quaternion}
+to display the full list of operations defined by
+\spadtype{Quaternion}.
+
+\xtc{
+The basic operation for creating quaternions is
+\spadfunFrom{quatern}{Quaternion}.
+This is a quaternion over the rational numbers.
+}{
+\spadpaste{q := quatern(2/11,-8,3/4,1) \bound{q}}
+}
+\xtc{
+The four arguments are the real part, the \spad{i} imaginary part, the
+\spad{j} imaginary part, and the \spad{k} imaginary part, respectively.
+}{
+\spadpaste{[real q, imagI q, imagJ q, imagK q] \free{q}}
+}
+\xtc{
+Because \spad{q} is over the rationals (and nonzero), you can invert it.
+}{
+\spadpaste{inv q \free{q}}
+}
+\xtc{
+The usual arithmetic (ring) operations are available
+}{
+\spadpaste{q**6 \free{q}}
+}
+\xtc{
+}{
+\spadpaste{r := quatern(-2,3,23/9,-89); q + r \bound{r}\free{q}}
+}
+%
+\xtc{
+In general, multiplication is not commutative.
+}{
+\spadpaste{q * r - r * q\free{q r}}
+}
+\xtc{
+There are no predefined constants for the imaginary \spad{i, j},
+and \spad{k} parts, but you can easily define them.
+}{
+\spadpaste{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1) \bound{i j k}}
+}
+\xtc{
+These satisfy the normal identities.
+}{
+\spadpaste{[i*i, j*j, k*k, i*j, j*k, k*i, q*i] \free{i j k q}}
+}
+\xtc{
+The norm is the quaternion times its conjugate.
+}{
+\spadpaste{norm q \free{q}}
+}
+\xtc{
+}{
+\spadpaste{conjugate q \free{q} \bound{prev}}
+}
+\xtc{
+}{
+\spadpaste{q * \% \free{q prev}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{radix.ht}
+<<radix.ht>>=
+\newcommand{\RadixExpansionXmpTitle}{RadixExpansion}
+\newcommand{\RadixExpansionXmpNumber}{9.65}
+
+@
+\subsection{RadixExpansion}
+\label{RadixExpansionXmpPage}
+\begin{itemize}
+\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
+page~pageref{HexadecimalExpansionXmpPage}
+\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
+page~pageref{DecimalExpansionXmpPage}
+\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on
+page~pageref{BinaryExpansionXmpPage}
+\end{itemize}
+\index{pages!RadixExpansionXmpPage!radix.ht}
+\index{radix.ht!pages!RadixExpansionXmpPage}
+\index{RadixExpansionXmpPage!radix.ht!pages}
+<<radix.ht>>=
+\begin{page}{RadixExpansionXmpPage}{RadixExpansion}
+\beginscroll
+
+It possible to expand numbers in general bases.
+
+\labelSpace{2pc}
+\xtc{
+Here we expand \spad{111} in base \spad{5}.
+This means
+\texht{$10^2+10^1+10^0 = 4 \cdot 5^2+2 \cdot 5^1 + 5^0.$}{%
+\spad{10**2+10**1+10**0 = 4*5**2+2*5**1+5**0.}}
+}{
+\spadpaste{111::RadixExpansion(5)}
+}
+
+\xtc{
+You can expand fractions to form repeating expansions.
+}{
+\spadpaste{(5/24)::RadixExpansion(2)}
+}
+\xtc{
+}{
+\spadpaste{(5/24)::RadixExpansion(3)}
+}
+\xtc{
+}{
+\spadpaste{(5/24)::RadixExpansion(8)}
+}
+\xtc{
+}{
+\spadpaste{(5/24)::RadixExpansion(10)}
+}
+\xtc{
+For bases from 11 to 36 the letters A through Z are used.
+}{
+\spadpaste{(5/24)::RadixExpansion(12)}
+}
+\xtc{
+}{
+\spadpaste{(5/24)::RadixExpansion(16)}
+}
+\xtc{
+}{
+\spadpaste{(5/24)::RadixExpansion(36)}
+}
+\xtc{
+For bases greater than 36, the ragits are separated by blanks.
+}{
+\spadpaste{(5/24)::RadixExpansion(38)}
+}
+\xtc{
+The \spadtype{RadixExpansion} type provides operations to obtain the
+individual ragits.
+Here is a rational number in base \spad{8}.
+}{
+\spadpaste{a := (76543/210)::RadixExpansion(8) \bound{a}}
+}
+\xtc{
+The operation \spadfunFrom{wholeRagits}{RadixExpansion} returns a list of the
+ragits for the integral part of the number.
+}{
+\spadpaste{w := wholeRagits a \free{a}\bound{w}}
+}
+\xtc{
+The operations \spadfunFrom{prefixRagits}{RadixExpansion} and \spadfunFrom{cycleRagits}{RadixExpansion}
+return lists of the initial and repeating ragits in the
+fractional part of the number.
+}{
+\spadpaste{f0 := prefixRagits a \free{a}\bound{f0}}
+}
+\xtc{
+}{
+\spadpaste{f1 := cycleRagits a \free{a}\bound{f1}}
+}
+\xtc{
+You can construct any radix expansion by giving the
+whole, prefix and cycle parts.
+The declaration is necessary to let Axiom
+know the base of the ragits.
+}{
+\spadpaste{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1) \free{w f0 f1}\bound{u}}
+}
+\xtc{
+If there is no repeating part, then the list \spad{[0]} should be used.
+}{
+\spadpaste{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0]) \bound{v}}
+}
+\xtc{
+If you are not interested in the repeating nature of the expansion,
+an infinite stream of ragits can be obtained using
+\spadfunFrom{fractRagits}{RadixExpansion}.
+}{
+\spadpaste{fractRagits(u) \free{u}}
+}
+\xtc{
+Of course, it's possible to recover the fraction representation:
+}{
+\spadpaste{a :: Fraction(Integer) \free{a}}
+}
+
+\showBlurb{RadixExpansion}
+More examples of expansions are available in
+\downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}\ignore{DecimalExpansion},
+\downlink{`BinaryExpansion'}{BinaryExpansionXmpPage}\ignore{BinaryExpansion}, and
+\downlink{`HexadecimalExpansion'}{HexadecimalExpansionXmpPage}\ignore{HexadecimalExpansion}.
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{reclos.ht}
+<<reclos.ht>>=
+\newcommand{\RealClosureXmpTitle}{RealClosure}
+\newcommand{\RealClosureXmpNumber}{9.66}
+
+@
+\subsection{RealClosure}
+\label{RealClosureXmpPage}
+\index{pages!RealClosureXmpPage!reclos.ht}
+\index{reclos.ht!pages!RealClosureXmpPage}
+\index{RealClosureXmpPage!reclos.ht!pages}
+<<reclos.ht>>=
+\begin{page}{RealClosureXmpPage}{RealClosure}
+\beginscroll
+
+The Real Closure 1.0 package provided by 
+Renaud Rioboo (Renaud.Rioboo@lip6.fr) consists of different
+packages, categories and domains :
+
+\begin{items}
+\item The package \axiomType{RealPolynomialUtilitiesPackage} which needs 
+a \axiomType{Field} {\em F} and a
+\axiomType{UnivariatePolynomialCategory} domain with coefficients in {\em F}. 
+It computes some
+simple functions such as Sturm and Sylvester sequences 
+(\axiomOpFrom{sturmSequence}{RealPolynomialUtilitiesPackage}, 
+\axiomOpFrom{sylvesterSequence}{RealPolynomialUtilitiesPackage}).
+
+\item The category \axiomType{RealRootCharacterizationCategory} provides 
+abstract
+functions to work with "real roots" of univariate polynomials. These
+resemble variables with some functionality needed to compute important
+operations.
+
+\item The category \axiomType{RealClosedField} provides common operations 
+available over
+real closed fiels. These include finding all the roots of a univariate
+polynomial, taking square (and higher) roots, ...
+
+\item The domain \axiomType{RightOpenIntervalRootCharacterization} is the 
+main code that
+provides the functionality of \axiomType{RealRootCharacterizationCategory} 
+for the case
+of archimedean fields. Abstract roots are encoded with a left closed right
+open interval containing the root together with a defining polynomial for the
+root.
+
+\item  The \axiomType{RealClosure} domain is the end-user code. It provides 
+usual arithmetic
+with real algebraic numbers, along with the functionality of a real closed
+field. It also provides functions to approximate a real algebraic number by an
+element of the base field. This approximation may either be absolute
+(\axiomOpFrom{approximate}{RealClosure}) or relative 
+(\axiomOpFrom{relativeApprox}{RealClosure}).
+
+
+\end{items}
+
+\centerline{CAVEATS}
+
+Since real algebraic expressions are stored as depending on "real roots" which
+are managed like variables, there is an ordering on these. This ordering is
+dynamical in the sense that any new algebraic takes precedence over older
+ones. In particular every creation function raises a new "real root". This has
+the effect that when you type something like 
+\spad{sqrt(2) + sqrt(2)} you have two
+new variables which happen to be equal. To avoid this name the expression such
+as in \spad{s2 := sqrt(2) ; s2 + s2}
+
+Also note that computing times depend strongly on the ordering you implicitly
+provide. Please provide algebraics in the order 
+which seems most natural to you.
+
+\centerline{LIMITATIONS}
+
+This packages uses
+algorithms which are published in [1] and [2] which are based on field
+arithmetics, in particular for polynomial gcd related algorithms. This can be
+quite slow for high degree polynomials and subresultants methods usually work
+best. Beta versions of the package try to use these techniques in a better
+way and work significantly faster. These are mostly based on unpublished
+algorithms and cannot be distributed. Please contact the author if you have a
+particular problem to solve or want to use these versions.
+
+Be aware that approximations behave as post-processing and that all
+computations are done exactly. They can thus be quite time consuming when
+depending on several "real roots".
+
+\centerline{REFERENCES}
+
+
+[1]  R. Rioboo : Real Algebraic Closure of an ordered Field : Implementation 
+     in Axiom. 
+     In proceedings of the ISSAC'92 Conference, Berkeley 1992 pp. 206-215.
+
+[2]  Z. Ligatsikas, R. Rioboo, M. F. Roy : Generic computation of the real
+     closure of an ordered field.
+     In Mathematics and Computers in Simulation Volume 42, Issue 4-6,
+     November 1996.
+
+\centerline{EXAMPLES}
+\xtc{
+We shall work with the real closure of the ordered field of 
+rational numbers.
+}{
+\spadpaste{Ran := RECLOS(FRAC INT) \bound{Ran}}
+}
+\xtc{
+Some simple signs for square roots, these correspond to an extension
+of degree 16 of the rational numbers. Examples provided by J. Abbot.
+}{
+\spadpaste{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d) \free{Ran} \bound{fs}}
+}
+\xtc{
+These produce values very close to zero.
+}{
+\spadpaste{squareDiff1 := fourSquares(73,548,60,586) \free{fs}\bound{sd1}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff1)\free{sd1}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff1)\free{sd1}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff2 := fourSquares(165,778,86,990) \free{fs}\bound{sd2}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff2)\free{sd2}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff2)\free{sd2}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff3 := fourSquares(217,708,226,692) \free{fs}\bound{sd3}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff3)\free{sd3}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff3)\free{sd3}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff4 := fourSquares(155,836,162,820)  \free{fs}\bound{sd4}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff4)\free{sd4}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff4)\free{sd4}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff5 := fourSquares(591,772,552,818) \free{fs}\bound{sd5}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff5)\free{sd5}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff5)\free{sd5}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff6 := fourSquares(434,1053,412,1088) \free{fs}\bound{sd6}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff6)\free{sd6}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff6)\free{sd6}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff7 := fourSquares(514,1049,446,1152) \free{fs}\bound{sd7}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff7)\free{sd7}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff7)\free{sd7}}
+}
+\xtc{
+}{
+\spadpaste{squareDiff8 := fourSquares(190,1751,208,1698) \free{fs}\bound{sd8}}
+}
+\xtc{
+}{
+\spadpaste{recip(squareDiff8)\free{sd8}}
+}
+\xtc{
+}{
+\spadpaste{sign(squareDiff8)\free{sd8}}
+}
+\xtc{
+This should give three digits of precision
+}{
+\spadpaste{relativeApprox(squareDiff8,10**(-3))::Float \free{sd8}}
+}
+\xtc{
+The sum of these 4 roots is 0
+}{
+\spadpaste{l := allRootsOf((x**2-2)**2-2)$Ran \free{Ran} \bound{l}}
+}
+\xtc{
+Check that they are all roots of the same polynomial
+}{
+\spadpaste{removeDuplicates map(mainDefiningPolynomial,l) \free{l}}
+}
+\xtc{
+We can see at a glance that they are separate roots
+}{
+\spadpaste{map(mainCharacterization,l) \free{l}}
+}
+\xtc{
+Check the sum and product
+}{
+\spadpaste{[reduce(+,l),reduce(*,l)-2] \free{l}}
+}
+\xtc{
+A more complicated test that involve an extension of degree 256.
+This is a way of checking nested radical identities.
+}{
+\spadpaste{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran) \free{Ran}\bound{s2}\bound{s5}\bound{s10}}
+}
+\xtc{
+}{
+\spadpaste{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10) \free{s2}\free{s5}\free{s10}\bound{eq1}}
+}
+\xtc{
+}{
+\spadpaste{eq1::Boolean \free{eq1}}
+}
+\xtc{
+}{
+\spadpaste{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2}\free{s5}\free{s10}\bound{eq2}}
+}
+\xtc{
+}{
+\spadpaste{eq2::Boolean \free{eq2}}
+}
+\xtc{
+Some more examples from J. M. Arnaudies
+}{
+\spadpaste{s3 := sqrt(3)$Ran \free{Ran}\bound{s3}}
+}
+\xtc{
+}{
+\spadpaste{s7:= sqrt(7)$Ran \free{Ran}\bound{s7}}
+}
+\xtc{
+}{
+\spadpaste{e1 := sqrt(2*s7-3*s3,3) \free{s7} \free{s3} \bound{e1}}
+}
+\xtc{
+}{
+\spadpaste{e2 := sqrt(2*s7+3*s3,3) \free{s7} \free{s3} \bound{e2}}
+}
+\xtc{
+This should be null
+}{
+\spadpaste{e2-e1-s3 \free{e2} \free{e1} \free{s3}}
+}
+\xtc{
+A quartic polynomial
+}{
+\spadpaste{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3) \free{Ran} \bound{pol}}
+}
+\xtc{
+Add some cubic roots
+}{
+\spadpaste{r1 := sqrt(7633)$Ran \free{Ran}\bound{r1}}
+}
+\xtc{
+}{
+\spadpaste{alpha := sqrt(5*r1-436,3)/3 \free{r1} \bound{alpha}}
+}
+\xtc{
+}{
+\spadpaste{beta := -sqrt(5*r1+436,3)/3 \free{r1} \bound{beta}}
+}
+\xtc{
+this should be null
+}{
+\spadpaste{pol.(alpha+beta-1/3) \free{pol} \free{alpha} \free{beta}}
+}
+\xtc{
+A quintic polynomial
+}{
+\spadpaste{qol : UP(x,Ran) := x**5+10*x**3+20*x+22 \free{Ran}\bound{qol}}
+}
+\xtc{
+Add some cubic roots
+}{
+\spadpaste{r2 := sqrt(153)$Ran \free{Ran}\bound{r2}}
+}
+\xtc{
+}{
+\spadpaste{alpha2 := sqrt(r2-11,5) \free{r2}\bound{alpha2}}
+}
+\xtc{
+}{
+\spadpaste{beta2 := -sqrt(r2+11,5) \free{r2}\bound{beta2}}
+}
+\xtc{
+this should be null
+}{
+\spadpaste{qol(alpha2+beta2) \free{qol}\free{alpha2}\free{beta2}}
+}
+\xtc{
+Finally, some examples from the book Computer Algebra by 
+Davenport, Siret and Tournier (page 77).
+The last one is due to Ramanujan.
+}{
+\spadpaste{dst1:=sqrt(9+4*s2)=1+2*s2 \free{s2}\bound{dst1}}
+}
+\xtc{
+}{
+\spadpaste{dst1::Boolean \free{dst1}}
+}
+\xtc{
+}{
+\spadpaste{s6:Ran:=sqrt 6 \free{Ran}\bound{s6}}
+}
+\xtc{
+}{
+\spadpaste{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3 \free{s6}\free{s3}\bound{dst2}}
+}
+\xtc{
+}{
+\spadpaste{dst2::Boolean \free{dst2}}
+}
+\xtc{
+}{
+\spadpaste{s29:Ran:=sqrt 29 \free{Ran}\bound{s29}}
+}
+\xtc{
+}{
+\spadpaste{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5 \free{s29}\free{s5}\bound{dst4}}
+}
+\xtc{
+}{
+\spadpaste{dst4::Boolean \free{dst4}}
+}
+\xtc{
+}{
+\spadpaste{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5 \free{s2}\free{s5}\bound{dst6}}
+}
+\xtc{
+}{
+\spadpaste{dst6::Boolean \free{dst6}}
+}
+\xtc{
+}{
+\spadpaste{f3:Ran:=sqrt(3,5) \free{Ran}\bound{f3}}
+}
+\xtc{
+}{
+\spadpaste{f25:Ran:=sqrt(1/25,5) \free{Ran}\bound{f25}}
+}
+\xtc{
+}{
+\spadpaste{f32:Ran:=sqrt(32/5,5) \free{Ran}\bound{f32}}
+}
+\xtc{
+}{
+\spadpaste{f27:Ran:=sqrt(27/5,5) \free{Ran}\bound{f27}}
+}
+\xtc{
+}{
+\spadpaste{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32}\free{f27}\free{f25}\free{f3}\bound{dst5}}
+}
+\xtc{
+}{
+\spadpaste{dst5::Boolean \free{dst5}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{record.ht}
+\subsection{Domain {\bf Record(a:A,...,b:B)}}
+\label{DomainRecord}
+\index{pages!DomainRecord!record.ht}
+\index{record.ht!pages!DomainRecord}
+\index{DomainRecord!record.ht!pages}
+<<record.ht>>=
+\begin{page}{DomainRecord}{Domain {\em Record(a:A,...,b:B)}}
+\beginscroll
+{\em Record} takes any number of selector-domain pairs as arguments:
+\indentrel{2}
+\newline \spad{a}, a selector, an element of domain \spadtype{Symbol}
+\newline \spad{A}, a domain of category \spadtype{SetCategory}
+\newline\tab{10}...
+\newline \spad{b}, a selector, an element of domain \spadtype{Symbol}
+\newline \spad{B}, a domain of category \spadtype{SetCategory}
+\indentrel{-2}\newline
+This constructor is a primitive in Axiom. 
+\newline
+\beginmenu
+\item\menulispdownlink{Description}{(|dbSpecialDescription| '|Record|)}\tab{15}General description
+\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|Record|)}\tab{15}All exported operations of {\em Record(a:A,b:B)}
+%\item\menudownlink{Examples}   {RecordExamples}   \tab{15}Examples illustrating use
+%\item\menudownlink{Exports}    {RecordExports}    \tab{15}Explicit categories and operations
+\endmenu
+\vspace{1}\newline
+The selectors {\em a,...,b} of a \spad{Record} type must be distinct.
+\endscroll\end{page}
+ 
+@
+\subsection{Domain Constructor {\bf Record}}
+\label{RecordDescription}
+\index{pages!RecordDescription!record.ht}
+\index{record.ht!pages!RecordDescription}
+\index{RecordDescription!record.ht!pages}
+<<record.ht>>=
+\begin{page}{RecordDescription}{Domain Constructor {\em Record}}
+\beginscroll
+\newline\menuitemstyle{}\tab{2}Record({\em a:A},{\em b:B})
+\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
+{\em a}, a selector, an element of domain \spadtype{Symbol}
+\newline\tab{-2}
+{\em A}, a domain of category \spadtype{SetCategory}
+\newline\tab{10}...
+\newline\tab{-2}
+{\em b}, a selector, an element of domain \spadtype{Symbol}
+\newline\tab{-2}
+{\em B}, a domain of category \spadtype{SetCategory}
+\indent{0}\newline\tab{2}{\em Returns:}\indent{15}\tab{0}
+a record object with component objects of type {\em A},...,{\em B} with 
+correponding selectors {\em a},...,{\em b}
+as described below.
+\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
+{\em Record(a:A,b:B)} is used to create the class of pairs of objects made
+up of a value of type {\em A} selected by the symbol {\em a} and
+a value of type {\em B} selected by the symbol {\em b}.
+In general, the {\em Record} constructor can take any number of arguments and thus can 
+be used to create aggregates of 
+heterogeneous components of arbitrary size selectable by name.
+{\em Record} is a primitive domain of Axiom which cannot be
+defined in the Axiom language. 
+\endscroll
+\end{page}
+
+
+@
+\section{regset.ht}
+<<regset.ht>>=
+\newcommand{\RegularTriangularSetXmpTitle}{RegularTriangularSet}
+\newcommand{\RegularTriangularSetXmpNumber}{9.67}
+
+@
+\subsection{RegularTriangularSet}
+\label{RegularTriangularSetXmpPage}
+\index{pages!RegularTriangularSetXmpPage!regset.ht}
+\index{regset.ht!pages!RegularTriangularSetXmpPage}
+\index{RegularTriangularSetXmpPage!regset.ht!pages}
+<<regset.ht>>=
+\begin{page}{RegularTriangularSetXmpPage}{RegularTriangularSet}
+\beginscroll
+The \spadtype{RegularTriangularSet} domain constructor implements
+regular triangular sets.
+These particular triangular sets were introduced by M. Kalkbrener (1991) 
+in his PhD Thesis under the name regular chains.
+Regular chains and their related concepts are presented in
+the paper "On the Theories of Triangular sets" By P. Aubry, D. Lazard
+and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
+The \spadtype{RegularTriangularSet} 
+constructor also provides a new method (by the third author) 
+for solving polynomial system by means of regular chains.
+This method has two ways of solving.
+One has the same specifications as Kalkbrener's algorithm (1991)
+and the other is closer to Lazard's method (Discr. App. Math, 1991).
+Moreover, this new method removes redundant component from the 
+decompositions when this is not {\em too expensive}.
+This is always the case with square-free regular chains.
+So if you want to obtain decompositions without redundant components
+just use the \spadtype{SquareFreeRegularTriangularSet} domain constructor 
+or the \spadtype{LazardSetSolvingPackage} package constructor.
+See also the \spadtype{LexTriangularPackage} and 
+\spadtype{ZeroDimensionalSolvePackage} for the case of 
+algebraic systems with a finite number of (complex) solutions.
+
+One of the main features of regular triangular sets is that they
+naturally define towers of simple extensions of a field.
+This allows to perform with multivariate polynomials the 
+same kind of operations as one can do in an \spadtype{EuclideanDomain}.
+
+The \spadtype{RegularTriangularSet} constructor takes four arguments.
+The first one, {\bf R}, is the coefficient ring of the polynomials;
+it must belong to the category \spadtype{GcdDomain}.
+The second one, {\bf E}, is the exponent monoid of the polynomials;
+it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
+the third one, {\bf V}, is the ordered set of variables;
+it must belong to the category \spadtype{OrderedSet}.
+The last one is the polynomial ring;
+it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
+The abbreviation for \spadtype{RegularTriangularSet} is
+\spadtype{REGSET}.
+See also the constructor \spadtype{RegularChain} which only takes
+two arguments, the coefficient ring and the ordered set of variables;
+in that case, polynomials are necessarily built with the
+\spadtype{NewSparseMultivariatePolynomial}  domain constructor.
+
+We shall explain now how to use the constructor \spadtype{REGSET} 
+and how to read the decomposition of a polynomial system by means 
+of regular sets.
+
+Let us give some examples.
+We start with an easy one (Donati-Traverso) 
+in order to understand the two ways of
+solving polynomial systems provided by the \spadtype{REGSET} constructor.
+\xtc{
+Define the coefficient ring.
+}{
+\spadpaste{R := Integer \bound{R}}
+}
+\xtc{
+Define the list of variables,
+}{
+\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
+}
+\xtc{
+and make it an ordered set;
+}{
+\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
+}
+\xtc{
+then define the exponent monoid.
+}{
+\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
+}
+\xtc{
+Define the polynomial ring.
+}{
+\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
+}
+\xtc{
+Let the variables be polynomial.
+}{
+\spadpaste{x: P := 'x \free{P} \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{y: P := 'y \free{P} \bound{y}}
+}
+\xtc{
+}{
+\spadpaste{z: P := 'z \free{P} \bound{z}}
+}
+\xtc{
+}{
+\spadpaste{t: P := 't \free{P} \bound{t}}
+}
+\xtc{
+Now call the \spadtype{RegularTriangularSet} domain constructor.
+}{
+\spadpaste{T := REGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
+}
+\xtc{
+Define a polynomial system.
+}{
+\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
+}
+\xtc{
+}{
+\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
+}
+\xtc{
+First of all, let us solve this system in the sense of Kalkbrener.
+}{
+\spadpaste{zeroSetSplit(lp)$T \free{lp} \free{T}}
+}
+\xtc{
+And now in the sense of Lazard (or Wu and other authors).
+}{
+\spadpaste{lts := zeroSetSplit(lp,false)$T \free{lp} \free{T} \bound{lts}}
+}
+
+We can see that the first decomposition is a subset of the second.
+So how can both be correct ?
+
+Recall first that polynomials from a domain of the category
+\spadtype{RecursivePolynomialCategory} are regarded
+as univariate polynomials in their main variable.
+For instance the second polynomial in the first set
+of each decomposition has main variable {\bf y}
+and its initial (i.e. its leading coefficient w.r.t. its main
+variable) is {\bf t z}.
+
+Now let us explain how to read the second decomposition.
+Note that the non-constant initials of the first set are
+\texht{$t^4-t$}{{\bf t^4 - t}} and \texht{$t z$}{{\bf t z}}.
+Then the solutions described by this first set are the common
+zeros of its polynomials that do not cancel the polynomials
+\texht{$t^4-t$}{{\bf t^4 - t}} and \texht{$ty z$}{{\bf t z}}.
+Now the solutions of the input system {\bf lp} satisfying
+these equations are described by the second and the third
+sets of the decomposition.
+Thus, in some sense, they can be considered as degenerated
+solutions.
+The solutions given by the first set are called the generic
+points of the system; they give the general form of the
+solutions.
+The first decomposition only provides these generic points.
+This latter decomposition is useful when they are many degenerated 
+solutions (which is sometimes hard to compute) and when
+one is only interested in general informations, like
+the dimension of the input system.
+
+\xtc{
+We can get the dimensions of each component
+of a decomposition as follows.
+}{
+\spadpaste{[coHeight(ts) for ts in lts] \free{lts}}
+}
+
+Thus the first set has dimension one.
+Indeed {\bf t} can take any value, except {\bf 0}
+or any third root of {\bf 1}, whereas {\bf z}
+is completely determined from {\bf t},
+{\bf y} is given by {\bf z} and {\bf t},
+and finally {\bf x} is given by the other three variables.
+In the second and the third sets of the second decomposition
+the four variables are completely determined and thus
+these sets have dimension zero.
+
+We give now the precise specifications of each decomposition. 
+This assume some mathematical knowledge.
+However, for the non-expert user, the above explanations will 
+be sufficient to understand the other features of the
+\spadtype{RSEGSET} constructor.
+
+The input system {\bf lp} is decomposed in the sense
+of Kalkbrener as finitely many regular sets {\bf T1,...,Ts}
+such that the radical ideal generated by {\bf lp}
+is the intersection of the radicals of the
+saturated ideals of {\bf T1,...,Ts}.
+In other words, the affine variety associated with {\bf lp} 
+is the union of the closures (w.r.t. Zarisky topology)
+of the regular-zeros sets of {\bf T1,...,Ts}.
+
+{\bf N. B.} The prime ideals associated with the 
+radical of the saturated ideal of
+a regular triangular set have all the same dimension;
+moreover these prime ideals can be given by characteristic
+sets with the same main variables. 
+Thus a decomposition in the sense of Kalkbrener
+is unmixed dimensional.
+Then it can be viewed as a {\em lazy}
+decomposition into prime ideals (some of these 
+prime ideals being merged into unmixed dimensional ideals).
+
+Now we explain the other way of solving by means of regular 
+triangular sets.
+The input system {\bf lp} is decomposed in the sense
+of Lazard as finitely many regular triangular sets {\bf T1,...,Ts}
+such that the affine variety associated with {\bf lp}
+is the union of the regular-zeros sets of {\bf T1,...,Ts}.
+Thus a decomposition in the sense of Lazard is also
+a decomposition in the sense of Kalkbrener; the converse
+is false as we have seen before.
+
+When the input system has a finite number of solutions,
+both ways of solving provide similar decompositions as
+we shall see with this second example (Caprasse).
+
+
+\xtc{
+Define a polynomial system.
+}{
+\spadpaste{f1 := y**2*z+2*x*y*t-2*x-z \free{z} \free{x} \free{y} \free{t} \bound{f1}}
+}
+\xtc{
+}{
+\spadpaste{f2 :=   -x**3*z+ 4*x*y**2*z+ 4*x**2*y*t+ 2*y**3*t+ 4*x**2- 10*y**2+ 4*x*z- 10*y*t+ 2 \free{z} \free{x} \free{y} \free{t} \bound{f2}}
+}
+\xtc{
+}{
+\spadpaste{f3 :=  2*y*z*t+x*t**2-x-2*z \free{z} \free{x} \free{y} \free{t} \bound{f3}}
+}
+\xtc{
+}{
+\spadpaste{f4 :=   -x*z**3+ 4*y*z**2*t+ 4*x*z*t**2+ 2*y*t**3+ 4*x*z+ 4*z**2-10*y*t- 10*t**2+2 \free{z} \free{x} \free{y} \free{t} \bound{f4}}
+}
+\xtc{
+}{
+\spadpaste{lf := [f1, f2, f3, f4] \free{f1} \free{f2} \free{f3}  \free{f4} \bound{lf}}
+}
+
+\xtc{
+First of all, let us solve this system in the sense of Kalkbrener.
+}{
+\spadpaste{zeroSetSplit(lf)$T \free{lf} \free{T}}
+}
+\xtc{
+And now in the sense of Lazard (or Wu and other authors).
+}{
+\spadpaste{lts2 := zeroSetSplit(lf,false)$T \free{lf} \free{T} \bound{lts2}}
+}
+
+Up to the ordering of the components, both decompositions are identical.
+
+\xtc{
+Let us check that each component has a finite number of solutions.
+}{
+\spadpaste{[coHeight(ts) for ts in lts2] \free{lts2}}
+}
+
+\xtc{
+Let us count the degrees of each component,
+}{
+\spadpaste{degrees := [degree(ts) for ts in lts2] \free{lts2} \bound{degrees}}
+}
+\xtc{
+and compute their sum.
+}{
+\spadpaste{reduce(+,degrees) \free{degrees}}
+}
+
+We study now the options of the \spadfun{zeroSetSplit} operation.
+As we have seen yet, there is an optional second argument 
+which is a boolean value. If this value is true (this
+is the default) then the decomposition is computed
+in the sense of Kalkbrener, otherwise it is computed
+in the sense of Lazard.
+
+There is a second boolean optional argument that
+can be used (in that case the first optional
+argument must be present).
+This second option allows you to get some information
+during the computations.
+
+Therefore, we need to understand a little what is 
+going on during the computations.
+An important feature of the algorithm is that 
+the intermediate computations are managed in some sense 
+like the processes of a Unix system.
+Indeed, each intermediate computation may generate
+other intermediate computations and the management
+of all these computations is a crucial task for
+the efficiency.
+Thus any intermediate computation may be suspended,
+killed or resumed, depending on algebraic considerations
+that determine priorities for these processes.
+The goal is of course to go as fast as possible 
+towards the final decomposition which means to avoid
+as much as possible unnecessary computations.
+
+To follow the computations, one needs to set to
+\spad{true} the second argument.
+Then a lot of numbers and letters are displayed.
+Between a \spad{[} and a \spad{]} one has 
+the state of the processes at a given time.
+Just after \spad{[} one can see the number of
+processes. 
+Then each process is represented by two numbers
+between \spad{<} and \spad{>}.
+A process consists of a list of polynomial {\bf ps}
+and a triangular set {\bf ts}; its goal is to compute
+the common zeros of {\bf ps} that belong to the
+regular-zeros set of {\bf ts}.
+After the processes, the number between pipes
+gives the total number of polynomials
+in all the sets \spad{ps}.
+Finally, the number between braces gives the number
+of components of a decomposition that are already
+computed. This number may decrease.
+
+Let us take a third example (Czapor-Geddes-Wang) to see how these
+informations are displayed.
+
+\xtc{
+Define a polynomial system.
+}{
+\spadpaste{u : R := 2  \free{R} \bound{u}}
+}
+\xtc{
+}{
+\spadpaste{q1 := 2*(u-1)**2+ 2*(x-z*x+z**2)+ y**2*(x-1)**2- 2*u*x+ 2*y*t*(1-x)*(x-z)+ 2*u*z*t*(t-y)+ u**2*t**2*(1-2*z)+ 2*u*t**2*(z-x)+ 2*u*t*y*(z-1)+ 2*u*z*x*(y+1)+ (u**2-2*u)*z**2*t**2+ 2*u**2*z**2+ 4*u*(1-u)*z+ t**2*(z-x)**2 \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q1}}
+}
+\xtc{
+}{
+\spadpaste{q2 := t*(2*z+1)*(x-z)+ y*(z+2)*(1-x)+ u*(u-2)*t+ u*(1-2*u)*z*t+ u*y*(x+u-z*x-1)+ u*(u+1)*z**2*t \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q2}}
+}
+\xtc{
+}{
+\spadpaste{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1) \free{z} \free{x} \free{y} \free{t} \free{u}  \bound{q3}}
+}
+\xtc{
+}{
+\spadpaste{q4 :=   u**2+4*(z-x**2)+3*y**2*(x-1)**2- 3*t**2*(z-x)**2 +3*u**2*t**2*(z-1)**2+u**2*z*(z-2)+6*u*t*y*(z+x+z*x-1) \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q4}}
+}
+\xtc{
+}{
+\spadpaste{lq := [q1, q2, q3, q4] \free{q1} \free{q2} \free{q3}  \free{q4} \bound{lq}}
+}
+
+
+\xtc{
+Let us try the information option.
+N.B. The timing should be between 1 and 10 minutes, depending on your machine.
+}{
+\spadpaste{zeroSetSplit(lq,true,true)$T \free{lq} \free{T}}
+}
+
+Between a sequence of processes, thus between a \spad{]} and a \spad{[}
+you can see capital letters \spad{W, G, I} and lower case letters
+\spad{i, w}. Each time a capital letter appears a non-trivial computation
+has be performed and its result is put in a hash-table.
+Each time a lower case letter appears a needed result has been 
+found in an hash-table.
+The use of these hash-tables generally speed up the computations.
+However, on very large systems, it may happen that these hash-tables
+become too  big  to be handle by your Axiom configuration.
+Then in these exceptional cases, you may prefer getting a result
+(even if it takes a long time) than getting nothing.
+Hence you need to know how to prevent the \spadtype{RSEGSET} constructor
+from using these hash-tables.
+In that case you will be using the \spadfun{zeroSetSplit} with five arguments.
+The first one is the input system {\bf lp} as above.
+The second one is a boolean value \spad{hash?} which is \spad{true}
+iff you want to use hash-tables.
+The third one is boolean value \spad{clos?} which is \spad{true}
+iff you want to solve your system in the sense of Kalkbrener,
+the other way remaining that of Lazard.
+The fourth argument is boolean value \spad{info?} which is \spad{true}
+iff you want to display information during the computations.
+The last one is boolean value \spad{prep?} which is \spad{true}
+iff you want to use some heuristics that are performed on the
+input system before starting the real algorithm.
+The value of this flag is \spad{true} when you are using \spadfun{zeroSetSplit} 
+with less than five arguments.
+Note that there is no available signature for \spadfun{zeroSetSplit} with 
+four arguments.
+
+We finish this section by some remarks about both ways of
+solving, in the sense of Kalkbrener or in the sense of Lazard.
+For problems with a finite number of solutions, there are
+theoretically equivalent and the resulting decompositions
+are identical, up to the ordering of the components.
+However, when solving in the sense of Lazard, the algorithm
+behaves differently.
+In that case, it becomes more incremental than in the sense
+of Kalkbrener. That means the polynomials of the input system
+are considered one after another whereas in the sense of Kalkbrener
+the input system is treated more globally.
+
+This makes an important difference in positive dimension.
+Indeed when solving in the sense of Kalkbrener, the
+{\em Primeidealkettensatz} of Krull is used.
+That means any regular triangular containing more polynomials
+than the input system can be deleted.
+This is not possible when solving in the sense of Lazard.
+This explains why Kalkbrener's decompositions
+usually contain less components than those of Lazard.
+However, it may happen with some examples that the incremental process
+(that cannot be used when solving in the sense of Kalkbrener)
+provide a more efficient way of solving than the global one
+even if the {\em Primeidealkettensatz} is used.
+Thus just try both, with the various options, before concluding 
+that you cannot solve your favorite system with \spadfun{zeroSetSplit}.
+There exist more options at the development level that are not
+currently available in this public version.
+So you are welcome to contact {\em marc@nag.co.uk} for more
+information and help.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{roman.ht}
+<<roman.ht>>=
+\newcommand{\RomanNumeralXmpTitle}{RomanNumeral}
+\newcommand{\RomanNumeralXmpNumber}{9.68}
+
+@
+\subsection{RomanNumeral}
+\label{RomanNumeralXmpPage}
+\index{pages!RomanNumeralXmpPage!roman.ht}
+\index{roman.ht!pages!RomanNumeralXmpPage}
+\index{RomanNumeralXmpPage!roman.ht!pages}
+<<roman.ht>>=
+\begin{page}{RomanNumeralXmpPage}{RomanNumeral}
+\beginscroll
+
+The Roman numeral package was added to Axiom in MCMLXXXVI
+for use in denoting higher order derivatives.
+
+\xtc{
+For example, let \spad{f} be a symbolic operator.
+}{
+\spadpaste{f := operator 'f \bound{f}}
+}
+\xtc{
+This is the seventh derivative of \spad{f} with respect to \spad{x}.
+}{
+\spadpaste{D(f x,x,7) \free{f}}
+}
+\xtc{
+You can have integers printed as Roman numerals by declaring variables to
+be of type \spadtype{RomanNumeral} (abbreviation \spadtype{ROMAN}).
+}{
+\spadpaste{a := roman(1978 - 1965) \bound{a}}
+}
+
+This package now has a small but devoted group of followers that claim
+this domain has shown its efficacy in many other contexts.
+They claim that Roman numerals are every bit as useful as ordinary
+integers.
+\xtc{
+In a sense, they are correct, because Roman numerals form a ring and you
+can therefore construct polynomials with Roman numeral coefficients,
+matrices over Roman numerals, etc..
+}{
+\spadpaste{x : UTS(ROMAN,'x,0) := x \bound{x}}
+}
+\xtc{
+Was Fibonacci Italian or ROMAN?
+}{
+\spadpaste{recip(1 - x - x**2) \free{x}}
+}
+\xtc{
+You can also construct fractions with Roman numeral numerators and
+denominators, as this matrix Hilberticus illustrates.
+}{
+\spadpaste{m : MATRIX FRAC ROMAN \bound{m}}
+}
+\xtc{
+}{
+\spadpaste{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3] \free{m} \bound{m1}}
+}
+\xtc{
+Note that the inverse of the matrix has integral \spadtype{ROMAN} entries.
+}{
+\spadpaste{inverse m \free{m1}}
+}
+\xtc{
+Unfortunately, the spoil-sports say that the fun stops when
+the numbers get big---mostly
+because the Romans didn't establish conventions about representing
+very large numbers.
+}{
+\spadpaste{y := factorial 10 \bound{y}}
+}
+\xtc{
+You work it out!
+}{
+\spadpaste{roman y \free{y}}
+}
+Issue the system command
+\spadcmd{)show RomanNumeral}
+to display the full list of operations defined by
+\spadtype{RomanNumeral}.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{seg.ht}
+<<seg.ht>>=
+\newcommand{\SegmentXmpTitle}{Segment}
+\newcommand{\SegmentXmpNumber}{9.69}
+
+@
+\subsection{Segment}
+\label{SegmentXmpPage}
+\begin{itemize}
+\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
+page~pageref{SegmentBindingXmpPage}
+\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
+page~pageref{UniversalSegmentXmpPage}
+\end{itemize}
+\index{pages!SegmentXmpPage!seg.ht}
+\index{seg.ht!pages!SegmentXmpPage}
+\index{SegmentXmpPage!seg.ht!pages}
+<<seg.ht>>=
+\begin{page}{SegmentXmpPage}{Segment}
+\beginscroll
+
+The \spadtype{Segment} domain provides a generalized interval type.
+
+\labelSpace{2pc}
+\xtc{
+Segments are created using the \spadSyntax{..} construct
+by indicating the (included) end points.
+}{
+\spadpaste{s := 3..10 \bound{s}}
+}
+\xtc{
+The first end point is called the \spadfunFrom{lo}{Segment}
+and the second is called \spadfunFrom{hi}{Segment}.
+}{
+\spadpaste{lo s \free{s}}
+}
+\xtc{
+These names are used even though the end points might belong to an
+unordered set.
+}{
+\spadpaste{hi s \free{s}}
+}
+
+\xtc{
+In addition to the end points, each segment has an integer ``increment.''
+An increment can be specified using the ``\spad{by}'' construct.
+\spadkey{by}
+}{
+\spadpaste{t := 10..3 by -2 \bound{t}}
+}
+\xtc{
+This part can be obtained using the \spadfunFrom{incr}{Segment} function.
+}{
+\spadpaste{incr s \free{s}}
+}
+\xtc{
+Unless otherwise specified, the increment is \spad{1}.
+}{
+\spadpaste{incr t \free{t}}
+}
+
+\xtc{
+A single value can be converted to a segment with equal end points.
+This happens if segments and single values are mixed in a list.
+}{
+\spadpaste{l := [1..3, 5, 9, 15..11 by -1] \bound{l}}
+}
+
+\xtc{
+If the underlying type is an ordered ring, it is possible to perform
+additional operations.
+The \spadfunFrom{expand}{Segment} operation creates a list of
+points in a segment.
+}{
+\spadpaste{expand s \free{s}}
+}
+\xtc{
+If \spad{k > 0}, then \spad{expand(l..h by k)} creates the list
+\spad{[l, l+k, ..., lN]} where \spad{lN <= h < lN+k}.
+If \spad{k < 0}, then \spad{lN >= h > lN+k}.
+}{
+\spadpaste{expand t \free{t}}
+}
+
+\xtc{
+It is also possible to expand a list of segments.  This is equivalent
+to appending lists obtained by expanding each segment individually.
+}{
+\spadpaste{expand l \free{l}}
+}
+
+For more information on related topics, see
+\downlink{`SegmentBinding'}{SegmentBindingXmpPage}\ignore{SegmentBinding} and
+\downlink{`UniversalSegment'}{UniversalSegmentXmpPage}
+\ignore{UniversalSegment}.
+%
+\showBlurb{Segment}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{segbind.ht}
+<<segbind.ht>>=
+\newcommand{\SegmentBindingXmpTitle}{SegmentBinding}
+\newcommand{\SegmentBindingXmpNumber}{9.70}
+
+@
+\subsection{SegmentBinding}
+\label{SegmentBindingXmpPage}
+\begin{itemize}
+\item SegmentXmpPage \ref{SegmentXmpPage} on
+page~pageref{SegmentXmpPage}
+\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
+page~pageref{UniversalSegmentXmpPage}
+\end{itemize}
+\index{pages!SegmentBindingXmpPage!segbind.ht}
+\index{segbind.ht!pages!SegmentBindingXmpPage}
+\index{SegmentBindingXmpPage!segbind.ht!pages}
+<<segbind.ht>>=
+\begin{page}{SegmentBindingXmpPage}{SegmentBinding}
+\beginscroll
+
+The \spadtype{SegmentBinding} type is used
+to indicate a range for a named symbol.
+
+\labelSpace{2pc}
+\xtc{
+First give the symbol, then an \spadSyntax{=} and finally a
+segment of values.
+}{
+\spadpaste{x = a..b}
+}
+\xtc{
+This is used to provide a convenient
+syntax for arguments to certain operations.
+}{
+\spadpaste{sum(i**2, i = 0..n)}
+}
+\graphpaste{draw(x**2, x = -2..2)}
+
+\xtc{
+The left-hand side must be of type \spadtype{Symbol} but the
+right-hand side can be a segment over any type.
+}{
+\spadpaste{sb := y = 1/2..3/2 \bound{sb}}
+}
+\xtc{
+The left- and right-hand sides can be obtained using the
+\spadfunFrom{variable}{SegmentBinding} and
+\spadfunFrom{segment}{SegmentBinding} operations.
+}{
+\spadpaste{variable(sb) \free{sb}}
+}
+\xtc{
+}{
+\spadpaste{segment(sb)  \free{sb}}
+}
+
+For more information on related topics, see
+\downlink{`Segment'}{SegmentXmpPage}\ignore{Segment} and 
+\downlink{`UniversalSegment'}{UniversalSegmentXmpPage}
+\ignore{UniversalSegment}.
+%
+\showBlurb{SegmentBinding}
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{set.ht}
+<<set.ht>>=
+\newcommand{\SetXmpTitle}{Set}
+\newcommand{\SetXmpNumber}{9.71}
+
+@
+\subsection{Set}
+\label{SetXmpPage}
+See ListXmpPage \ref{ListXmpPage} on page~\pageref{ListXmpPage}
+\index{pages!SetXmpPage!set.ht}
+\index{set.ht!pages!SetXmpPage}
+\index{SetXmpPage!set.ht!pages}
+<<set.ht>>=
+\begin{page}{SetXmpPage}{Set}
+\beginscroll
+
+The \spadtype{Set} domain allows one to represent explicit finite 
+sets of values.
+These are similar to lists, but duplicate elements are not allowed.
+\xtc{
+Sets can be created by giving a fixed set of values \ldots
+}{
+\spadpaste{s := set [x**2-1, y**2-1, z**2-1] \bound{s}}
+}
+\xtc{
+or by using a collect form, just as for lists.
+In either case, the set is formed from a finite collection of values.
+}{
+\spadpaste{t := set [x**i - i+1 for i in 2..10 | prime? i] \bound{t}}
+}
+
+\xtc{
+The basic operations on sets are
+\spadfunFrom{intersect}{Set}, \spadfunFrom{union}{Set},
+\spadfunFrom{difference}{Set},
+and \spadfunFrom{symmetricDifference}{Set}.
+}{
+\spadpaste{i := intersect(s,t)      \free{s t}\bound{i}}
+}
+\xtc{
+}{
+\spadpaste{u := union(s,t)          \free{s t}\bound{u}}
+}
+\xtc{
+The set \spad{difference(s,t)} contains those members of \spad{s} which
+are not in \spad{t}.
+}{
+\spadpaste{difference(s,t)          \free{s t}}
+}
+\xtc{
+The set \spad{symmetricDifference(s,t)} contains those elements which are
+in \spad{s} or \spad{t} but not in both.
+}{
+\spadpaste{symmetricDifference(s,t)          \free{s t}}
+}
+
+\xtc{
+Set membership is tested using the \spadfunFrom{member?}{Set} operation.
+}{
+\spadpaste{member?(y, s)               \free{s}}
+}
+\xtc{
+}{
+\spadpaste{member?((y+1)*(y-1), s)     \free{s}}
+}
+\xtc{
+The \spadfunFrom{subset?}{Set} function determines whether one set is a subset
+of another.
+}{
+\spadpaste{subset?(i, s)               \free{i s}}
+}
+\xtc{
+}{
+\spadpaste{subset?(u, s)               \free{u s}}
+}
+
+\xtc{
+When the base type is finite, the absolute complement of a set is
+defined.
+This finds the set of all multiplicative generators of
+\spadtype{PrimeField 11}---the integers mod \spad{11.}
+}{
+\spadpaste{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)] \bound{gs}}
+}
+\xtc{
+The following values are not generators.
+}{
+\spadpaste{complement gs \free{gs}}
+}
+
+Often the members of a set are computed individually; in addition,
+values can be inserted or removed from a set over the course of a
+computation.
+\xtc{
+There are two ways to do this:
+}{
+\spadpaste{a := set [i**2 for i in 1..5] \bound{a}}
+}
+\xtc{
+One is to view a set as a data structure and to apply updating operations.
+}{
+\spadpaste{insert!(32, a) \free{a}\bound{ainsert}}
+}
+\xtc{
+}{
+\spadpaste{remove!(25, a) \free{a}\bound{aremove}}
+}
+\xtc{
+}{
+\spadpaste{a \free{aremove ainsert}}
+}
+\xtc{
+The other way is to view a set as a mathematical entity and to
+create new sets from old.
+}{
+\spadpaste{b := b0 := set [i**2 for i in 1..5] \bound{b}}
+}
+\xtc{
+}{
+\spadpaste{b := union(b, {32})         \free{b}\bound{binsert}}
+}
+\xtc{
+}{
+\spadpaste{b := difference(b, {25})    \free{binsert}\bound{bremove}}
+}
+\xtc{
+}{
+\spadpaste{b0 \free{bremove}}
+}
+
+For more information about lists, see 
+\downlink{`List'}{ListXmpPage}\ignore{List}.
+\showBlurb{Set}
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{sint.ht}
+<<sint.ht>>=
+\newcommand{\SingleIntegerXmpTitle}{SingleInteger}
+\newcommand{\SingleIntegerXmpNumber}{9.72}
+
+@
+\subsection{SingleInteger}
+\label{SingleIntegerXmpPage}
+\begin{itemize}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~pageref{ugTypesDeclarePage}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~pageref{ugTypesPkgCallPage}
+\item ugBrowsePage \ref{ugBrowsePage} on
+page~pageref{ugBrowsePage}
+\end{itemize}
+\index{pages!SingleIntegerXmpPage!sint.ht}
+\index{sint.ht!pages!SingleIntegerXmpPage}
+\index{SingleIntegerXmpPage!sint.ht!pages}
+<<sint.ht>>=
+\begin{page}{SingleIntegerXmpPage}{SingleInteger}
+\beginscroll
+
+The \axiomType{SingleInteger} domain is intended to provide support
+in Axiom for machine integer arithmetic.
+It is generally much faster than (bignum) \axiomType{Integer} arithmetic
+but suffers from a limited range of values.
+Since Axiom can be implemented on top of various
+dialects of Lisp, the actual representation of small integers
+may not correspond exactly to the host machines integer representation.
+
+In the CCL implementation of Axiom (Release 2.1 onwards) the underlying
+representation of \axiomType{SingleInteger} 
+is the same as \axiomType{Integer}.  
+The underlying Lisp primitives treat machine-word sized computations
+specially.
+
+\xtc{
+You can discover the minimum and maximum values in your implementation
+by using \spadfunFrom{min}{SingleInteger} and \spadfunFrom{max}{SingleInteger}.
+}{
+\spadpaste{min()\$SingleInteger}
+}
+\xtc{
+}{
+\spadpaste{max()\$SingleInteger}
+}
+\xtc{
+To avoid confusion with \axiomType{Integer}, which is the default
+type for integers, you usually need to work with declared variables
+(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}) \ldots
+}{
+\spadpaste{a := 1234 :: SingleInteger \bound{a}}
+}
+\xtc{
+or use package calling
+(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
+}{
+\spadpaste{b := 124\$SingleInteger \bound{b}}
+}
+\xtc{
+You can add, multiply and subtract \axiomType{SingleInteger} objects,
+and ask for the greatest common divisor (\spadfun{gcd}).
+}{
+\spadpaste{gcd(a,b) \free{a}\free{b}}
+}
+\xtc{
+The least common multiple (\spadfun{lcm}) is also available.
+}{
+\spadpaste{lcm(a,b) \free{a}\free{b}}
+}
+
+\xtc{
+Operations \spadfunFrom{mulmod}{SingleInteger},
+\spadfunFrom{addmod}{SingleInteger},
+\spadfunFrom{submod}{SingleInteger}, and
+\spadfunFrom{invmod}{SingleInteger} are similar---they provide
+arithmetic modulo a given small integer.
+Here is \spad{5 * 6 {\tt mod} 13}.
+}{
+\spadpaste{mulmod(5,6,13)\$SingleInteger}
+}
+\xtc{
+To reduce a small integer modulo a prime, use 
+\spadfunFrom{positiveRemainder}{SingleInteger}.
+}{
+\spadpaste{positiveRemainder(37,13)\$SingleInteger}
+}
+\xtc{
+Operations
+\spadfunFrom{And}{SingleInteger},
+\spadfunFrom{Or}{SingleInteger},
+\spadfunFrom{xor}{SingleInteger},
+and \spadfunFrom{Not}{SingleInteger}
+provide bit level operations on small integers.
+}{
+\spadpaste{And(3,4)\$SingleInteger}
+}
+\xtc{
+Use
+\spad{shift(int,numToShift)} to shift bits, where
+\spad{i} is shifted left if \spad{numToShift} is positive, right
+if negative.
+}{
+\spadpaste{shift(1,4)\$SingleInteger}
+}
+\xtc{
+}{
+\spadpaste{shift(31,-1)\$SingleInteger}
+}
+
+Many other operations are available for small integers, including
+many of those provided for \axiomType{Integer}.
+To see the other operations, use the Browse \HyperName{} facility
+(\downlink{``\ugBrowseTitle''}{ugBrowsePage} in Section 
+\ugBrowseNumber\ignore{ugBrowse}).
+\showBlurb{SingleInteger}.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{sqmatrix.ht}
+<<sqmatrix.ht>>=
+\newcommand{\SquareMatrixXmpTitle}{SquareMatrix}
+\newcommand{\SquareMatrixXmpNumber}{9.74}
+
+@
+\subsection{SquareMatrix}
+\label{SquareMatrixXmpPage}
+\begin{itemize}
+\item MatrixXmpPage \ref{MatrixXmpPage} on
+page~pageref{MatrixXmpPage}
+\item ugTypesWritingModesPage \ref{ugTypesWritingModesPage} on
+page~pageref{ugTypesWritingModesPage}
+\item ugTypesExposePage \ref{ugTypesExposePage} on
+page~pageref{ugTypesExposePage}
+\end{itemize}
+\index{pages!SquareMatrixXmpPage!sqmatrix.ht}
+\index{sqmatrix.ht!pages!SquareMatrixXmpPage}
+\index{SquareMatrixXmpPage!sqmatrix.ht!pages}
+<<sqmatrix.ht>>=
+\begin{page}{SquareMatrixXmpPage}{SquareMatrix}
+\beginscroll
+ 
+The top level matrix type in Axiom is \spadtype{Matrix}
+(see \downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}), which
+provides basic arithmetic and linear algebra functions.
+However, since the matrices can be of any size it is not true that any pair
+can be added or multiplied.
+Thus \spadtype{Matrix} has little algebraic structure.
+ 
+Sometimes you want to use matrices as coefficients for polynomials
+or in other algebraic contexts.  In this case, \spadtype{SquareMatrix}
+should be used.  The domain \spadtype{SquareMatrix(n,R)} gives the ring of
+\spad{n} by \spad{n} square matrices over \spad{R}.
+ 
+\xtc{
+Since \spadtype{SquareMatrix} is not normally exposed at the top level,
+you must expose it before it can be used.
+}{
+\spadpaste{)set expose add constructor SquareMatrix \bound{SQ}}
+}
+\xtc{
+Once \spad{SQMATRIX} has been exposed,
+values can be created using the \spadfunFrom{squareMatrix}{SquareMatrix}
+function.
+}{
+\spadpaste{m := squareMatrix [[1,-\%i],[\%i,4]] \bound{m}\free{SQ}}
+}
+\xtc{
+The usual arithmetic operations are available.
+}{
+\spadpaste{m*m - m \free{m}}
+}
+\xtc{
+Square matrices can be used where ring elements are required.
+For example, here is a matrix with matrix entries.
+}{
+\spadpaste{mm := squareMatrix [[m, 1], [1-m, m**2]] \free{m}\bound{mm}}
+}
+\xtc{
+Or you can construct a polynomial with  square matrix coefficients.
+}{
+\spadpaste{p := (x + m)**2 \free{m}\bound{p}}
+}
+\xtc{
+This value can be converted to a square matrix with polynomial coefficients.
+}{
+\spadpaste{p::SquareMatrix(2, ?) \free{p}}
+}
+ 
+For more information on related topics, see
+\downlink{``\ugTypesWritingModesTitle''}{ugTypesWritingModesPage} 
+in Section \ugTypesWritingModesNumber\ignore{ugTypesWritingModes},
+\downlink{``\ugTypesExposeTitle''}{ugTypesExposePage} 
+in Section \ugTypesExposeNumber\ignore{ugTypesExpose}, and
+\downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}.
+\showBlurb{SquareMatrix}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{sregset.ht}
+<<sregset.ht>>=
+\newcommand{\SquareFreeRegularTriangularSetXmpTitle}{SquareFreeRegularTriangularSet}
+\newcommand{\SquareFreeRegularTriangularSetXmpNumber}{9.75}
+
+@
+\subsection{SquareFreeRegularTriangularSet}
+\label{SquareFreeRegularTriangularSetXmpPage}
+\index{pages!SquareFreeRegularTriangularSetXmpPage!sregset.ht}
+\index{sregset.ht!pages!SquareFreeRegularTriangularSetXmpPage}
+\index{SquareFreeRegularTriangularSetXmpPage!sregset.ht!pages}
+<<sregset.ht>>=
+\begin{page}{SquareFreeRegularTriangularSetXmpPage}
+{SquareFreeRegularTriangularSet}
+\beginscroll
+The \spadtype{SquareFreeRegularTriangularSet} domain constructor implements
+square-free regular triangular sets.
+See the \spadtype{RegularTriangularSet} domain constructor
+for general regular triangular sets.
+Let {\em T} be a regular triangular set consisting of polynomials
+{\em t1, ..., tm} ordered by increasing main variables.
+The regular triangular set {\em T} is square-free if {\em T} 
+is empty or if {\em t1, ..., tm-1} is square-free  and if
+the polynomial {\em tm} is square-free as
+a univariate polynomial with coefficients in the tower
+of simple extensions associated with {\em t1, ..., tm-1}.
+
+The main interest of square-free regular triangular sets
+is that their associated towers of simple extensions
+are product of fields.
+Consequently, the saturated ideal of a square-free regular triangular set
+is radical.
+This property simplifies some of the operations related
+to regular triangular sets.
+However, building square-free regular triangular sets
+is generally more  expensive than building
+general regular triangular sets.
+
+As the \spadtype{RegularTriangularSet} domain constructor,
+the \spadtype{SquareFreeRegularTriangularSet} 
+domain constructor also implements
+a method for solving polynomial systems by means of regular triangular sets.
+This is in fact the same method with some adaptations to take into
+account the fact that the computed regular chains are square-free.
+Note that it is also possible to pass from a decomposition
+into general regular triangular sets to a decomposition into
+square-free regular triangular sets.
+This conversion is used internally by the 
+\spadtype{LazardSetSolvingPackage} package constructor.
+
+{\bf N.B.} When solving polynomial systems with the 
+\spadtype{SquareFreeRegularTriangularSet} domain constructor
+or the \spadtype{LazardSetSolvingPackage} package constructor,
+decompositions have no redundant components.
+See also \spadtype{LexTriangularPackage} and 
+\spadtype{ZeroDimensionalSolvePackage} for the case of 
+algebraic systems with a finite number of (complex) solutions.
+
+We shall explain now how to use the constructor 
+\spadtype{SquareFreeRegularTriangularSet}.
+
+This constructor takes four arguments.
+The first one, {\bf R}, is the coefficient ring of the polynomials;
+it must belong to the category \spadtype{GcdDomain}.
+The second one, {\bf E}, is the exponent monoid of the polynomials;
+it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
+the third one, {\bf V}, is the ordered set of variables;
+it must belong to the category \spadtype{OrderedSet}.
+The last one is the polynomial ring;
+it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
+The abbreviation for \spadtype{SquareFreeRegularTriangularSet} is
+\spadtype{SREGSET}.
+
+Note that the way of understanding triangular decompositions 
+is detailed in the example of the \spadtype{RegularTriangularSet}
+constructor.
+
+\xtc{
+Let us illustrate the use of this constructor 
+with one example (Donati-Traverso).
+Define the coefficient ring.
+}{
+\spadpaste{R := Integer \bound{R}}
+}
+\xtc{
+Define the list of variables,
+}{
+\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
+}
+\xtc{
+and make it an ordered set;
+}{
+\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
+}
+\xtc{
+then define the exponent monoid.
+}{
+\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
+}
+\xtc{
+Define the polynomial ring.
+}{
+\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
+}
+\xtc{
+Let the variables be polynomial.
+}{
+\spadpaste{x: P := 'x \free{P} \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{y: P := 'y \free{P} \bound{y}}
+}
+\xtc{
+}{
+\spadpaste{z: P := 'z \free{P} \bound{z}}
+}
+\xtc{
+}{
+\spadpaste{t: P := 't \free{P} \bound{t}}
+}
+\xtc{
+Now call the \spadtype{SquareFreeRegularTriangularSet} domain constructor.
+}{
+\spadpaste{ST := SREGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{ST} }
+}
+\xtc{
+Define a polynomial system.
+}{
+\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
+}
+\xtc{
+}{
+\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
+}
+
+\xtc{
+First of all, let us solve this system in the sense of Kalkbrener.
+}{
+\spadpaste{zeroSetSplit(lp)$ST \free{lp} \free{ST}}
+}
+\xtc{
+And now in the sense of Lazard (or Wu and other authors).
+}{
+\spadpaste{zeroSetSplit(lp,false)$ST \free{lp} \free{ST} \bound{lts}}
+}
+
+Now to see the difference with the \spadtype{RegularTriangularSet} domain constructor,
+\xtc{
+we define:
+}{
+\spadpaste{T := REGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
+}
+\xtc{
+and compute:
+}{
+\spadpaste{lts := zeroSetSplit(lp,false)$T \free{lp} \free{T} \bound{lts}}
+}
+If you look at the second set in both decompositions in the sense of Lazard,
+you will see that the polynomial with main variable {\bf y} is not the same.
+
+Let us understand what has happened.
+\xtc{
+We define:
+}{
+\spadpaste{ts := lts.2  \free{lts}  \bound{ts}}
+}
+\xtc{
+}{
+\spadpaste{pol := select(ts,'y)$T \free{ts} \free{y} \free{T} \bound{pol}}
+}
+\xtc{
+}{
+\spadpaste{tower := collectUnder(ts,'y)$T \free{ts} \free{y} \free{T} \bound{tower}}
+}
+\xtc{
+}{
+\spadpaste{pack := RegularTriangularSetGcdPackage(R,E,V,P,T) \free{R} \free{E} \free{V} \free{P} \free{T} \bound{pack}}
+}
+\xtc{
+Then we compute:
+}{
+\spadpaste{toseSquareFreePart(pol,tower)$pack \free{pol} \free{tower} \free{pack}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{stbl.ht}
+<<stbl.ht>>=
+\newcommand{\SparseTableXmpTitle}{SparseTable}
+\newcommand{\SparseTableXmpNumber}{9.73}
+
+@
+\subsection{SparseTable}
+\label{SparseTableXmpPage}
+\begin{itemize}
+\item TableXmpPage \ref{TableXmpPage} on
+page~pageref{TableXmpPage}
+\item GeneralSparseTableXmpPage \ref{GeneralSparseTableXmpPage} on
+page~pageref{GeneralSparseTableXmpPage}
+\end{itemize}
+\index{pages!SparseTableXmpPage!stbl.ht}
+\index{stbl.ht!pages!SparseTableXmpPage}
+\index{SparseTableXmpPage!stbl.ht!pages}
+<<stbl.ht>>=
+\begin{page}{SparseTableXmpPage}{SparseTable}
+\beginscroll
+%
+The \spadtype{SparseTable} domain provides a general purpose
+table type with default entries.
+\xtc{
+Here we create a table to save strings under integer keys.
+The value \spad{"Try again!"} is returned if no other value has been
+stored for a key.
+}{
+\spadpaste{t: SparseTable(Integer, String, "Try again!") := table() \bound{t}}
+}
+\xtc{
+Entries can be stored in the table.
+}{
+\spadpaste{t.3 := "Number three" \free{t}\bound{t1}}
+}
+\xtc{
+}{
+\spadpaste{t.4 := "Number four" \free{t}\bound{t2}}
+}
+\xtc{
+These values can be retrieved as usual, but if a look up fails
+the default entry will be returned.
+}{
+\spadpaste{t.3 \free{t1}}
+}
+\xtc{
+}{
+\spadpaste{t.2 \free{t}}
+}
+\xtc{
+To see which values are explicitly stored, the
+\spadfunFrom{keys}{SparseTable} and \spadfunFrom{entries}{SparseTable}
+functions can be used.
+}{
+\spadpaste{keys t \free{t1 t2}}
+}
+\xtc{
+}{
+\spadpaste{entries t \free{t1 t2}}
+}
+If a specific table representation
+is required, the \spadtype{GeneralSparseTable} constructor should be used.
+The domain \spadtype{SparseTable(K, E, dflt)} is equivalent to
+\spadtype{GeneralSparseTable(K,E, Table(K,E), dflt)}.
+For more information, see
+\downlink{`Table'}{TableXmpPage}\ignore{Table} and
+\downlink{`GeneralSparseTable'}{GeneralSparseTableXmpPage}
+\ignore{GeneralSparseTable}.
+\showBlurb{SparseTable}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{stream.ht}
+<<stream.ht>>=
+\newcommand{\StreamXmpTitle}{Stream}
+\newcommand{\StreamXmpNumber}{9.76}
+
+@
+\subsection{Stream}
+\label{StreamXmpPage}
+\begin{itemize}
+\item ugLangItsPage \ref{ugLangItsPage} on
+page~pageref{ugLangItsPage}
+\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
+page~pageref{ugProblemSeriesPage}
+\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
+page~pageref{ContinuedFractionXmpPage}
+\item ListXmpPage \ref{ListXmpPage} on
+page~pageref{ListXmpPage}
+\end{itemize}
+\index{pages!StreamXmpPage!stream.ht}
+\index{stream.ht!pages!StreamXmpPage}
+\index{StreamXmpPage!stream.ht!pages}
+<<stream.ht>>=
+\begin{page}{StreamXmpPage}{Stream}
+\beginscroll
+
+A \spadtype{Stream} object is represented as a list whose 
+last element contains the
+wherewithal to create the next element, should it ever be required.
+\xtc{
+Let \spad{ints} be the infinite stream of non-negative integers.
+}{
+\spadpaste{ints := [i for i in 0..] \bound{ints}}
+}
+By default, ten stream elements are calculated.
+This number may be changed to something else by the system command
+\spadcmd{)set streams calculate}.
+For the display purposes of this book, we have chosen a smaller value.
+\xtc{
+More generally, you can construct a stream by specifying its initial
+value and a function which, when given an element, creates the next element.
+}{
+\spadpaste{f : List INT -> List INT \bound{fdec}}
+}
+\xtc{
+}{
+\spadpaste{f x == [x.1 + x.2, x.1] \bound{f}\free{fdec}}
+}
+\xtc{
+}{
+\spadpaste{fibs := [i.2 for i in [generate(f,[1,1])]] \bound{fibs}\free{f}}
+}
+\xtc{
+You can create the stream of odd non-negative integers by either filtering
+them from the integers, or by evaluating an expression for each integer.
+}{
+\spadpaste{[i for i in ints | odd? i] \free{ints}}
+}
+\xtc{
+}{
+\spadpaste{odds := [2*i+1 for i in ints]\bound{odds}\free{ints}}
+}
+\xtc{
+You can accumulate the initial segments of a stream using the
+\spadfunFrom{scan}{StreamFunctions2} operation.
+}{
+\spadpaste{scan(0,+,odds) \free{odds}}
+}
+\xtc{
+The corresponding elements of
+two or more streams can be combined in this way.
+}{
+\spadpaste{[i*j for i in ints for j in odds]\free{ints} \free{odds}}
+}
+\xtc{
+}{
+\spadpaste{map(*,ints,odds)\free{ints odds}}
+}
+\xtc{
+Many operations similar to those applicable to lists are available for
+streams.
+}{
+\spadpaste{first ints \free{ints}}
+}
+\xtc{
+}{
+\spadpaste{rest ints \free{ints}}
+}
+\xtc{
+}{
+\spadpaste{fibs 20 \free{fibs}}
+}
+The packages \spadtype{StreamFunctions1},
+\spadtype{StreamFunctions2} and
+\spadtype{StreamFunctions3} export some useful stream manipulation
+operations.
+For more information, see
+\downlink{``\ugLangItsTitle''}{ugLangItsPage} in Section 
+\ugLangItsNumber\ignore{ugLangIts},
+\downlink{``\ugProblemSeriesTitle''}{ugProblemSeriesPage} 
+in Section \ugProblemSeriesNumber\ignore{ugProblemSeries},
+\downlink{`ContinuedFraction'}{ContinuedFractionXmpPage}
+\ignore{ContinuedFraction}, and
+\downlink{`List'}{ListXmpPage}\ignore{List}.
+%
+\showBlurb{Stream}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{string.ht}
+<<string.ht>>=
+\newcommand{\StringXmpTitle}{String}
+\newcommand{\StringXmpNumber}{9.77}
+
+@
+\subsection{String}
+\label{StringXmpPage}
+\begin{itemize}
+\item CharacterXmpPage \ref{CharacterXmpPage} on
+page~pageref{CharacterXmpPage}
+\item CharacterClassXmpPage \ref{CharacterClassXmpPage} on
+page~pageref{CharacterClassXmpPage}
+\end{itemize}
+\index{pages!StringXmpPage!string.ht}
+\index{string.ht!pages!StringXmpPage}
+\index{StringXmpPage!string.ht!pages}
+<<string.ht>>=
+\begin{page}{StringXmpPage}{String}
+\beginscroll
+
+The type \spadtype{String} provides character strings.  Character
+strings provide all the operations for a one-dimensional array of
+characters, plus additional operations for manipulating text.  For
+more information on related topics, see
+\downlink{`Character'}{CharacterXmpPage}\ignore{Character} and
+\downlink{`CharacterClass'}{CharacterClassXmpPage}\ignore{CharacterClass}.
+You can also issue the system command \spadcmd{)show String} to
+display the full list of operations defined by \spadtype{String}.
+
+\xtc{
+String values can be created using double quotes.
+}{
+\spadpaste{hello := "Hello, I'm Axiom!" \bound{hello}}
+}
+\xtc{
+Note, however, that double quotes and underscores must be preceded by
+an extra underscore.
+}{
+\spadpaste{said  := "Jane said, _"Look!_"" \bound{said}}
+}
+\xtc{
+}{
+\spadpaste{saw   := "She saw exactly one underscore: __." \bound{saw}}
+}
+\xtc{
+It is also possible to use \spadfunFrom{new}{String} to create a string of any size
+filled with a given character.
+Since there are many \spadfun{new} functions
+it is necessary to indicate the desired type.
+}{
+\spadpaste{gasp: String := new(32, char "x") \bound{gasp}}
+}
+\xtc{
+The length of a string is given by \spadopFrom{\#}{List}.
+}{
+\spadpaste{\#gasp \free{gasp}}
+}
+\xtc{
+Indexing operations allow characters to be extracted or replaced in strings.
+For any string \spad{s}, indices lie in the range \spad{1..\#s}.
+}{
+\spadpaste{hello.2 \free{hello}}
+}
+\xtc{
+Indexing is really just the application of a string to a subscript,
+so any application syntax works.
+}{
+\spadpaste{hello 2  \free{hello}}
+}
+\xtc{
+}{
+\spadpaste{hello(2) \free{hello}}
+}
+\xtc{
+If it is important not to modify a given string, it should be copied
+before any updating operations are used.
+}{
+\spadpaste{hullo := copy hello \free{hello}\bound{hullo0}}
+}
+\xtc{
+}{
+\spadpaste{hullo.2 := char "u"; [hello, hullo] \free{hullo0 hello}\bound{hullo}}
+}
+
+\xtc{
+Operations are provided to split and join strings.
+The \spadfunFrom{concat}{String} operation allows several strings to be joined
+together.
+}{
+\spadpaste{saidsaw := concat ["alpha","---","omega"] \bound{saidsaw}}
+}
+\xtc{
+There is a version of \spadfunFrom{concat}{String} that works with
+two strings.
+}{
+\spadpaste{concat("hello ","goodbye")}
+}
+\xtc{
+Juxtaposition can also be used to concatenate strings.
+}{
+\spadpaste{"This " "is " "several " "strings " "concatenated."}
+}
+\xtc{
+Substrings are obtained by giving an index range.
+}{
+\spadpaste{hello(1..5) \free{hello}}
+}
+\xtc{
+}{
+\spadpaste{hello(8..) \free{hello}}
+}
+\xtc{
+A string can be split into several substrings by giving a separation character
+or character class.
+}{
+\spadpaste{split(hello, char " ")              \free{hello}}
+}
+\xtc{
+}{
+\spadpaste{other := complement alphanumeric(); \bound{other}}
+}
+\xtc{
+}{
+\spadpaste{split(saidsaw, other)               \free{saidsaw other}}
+}
+\xtc{
+Unwanted characters can be trimmed from the beginning or end of a string
+using the operations \spadfunFrom{trim}{String}, \spadfunFrom{leftTrim}{String}
+and \spadfunFrom{rightTrim}{String}.
+}{
+\spadpaste{trim     ("\#\# ++ relax ++ \#\#", char "\#")}
+}
+\xtc{
+Each of these functions takes a string and a second argument to specify
+the characters to be discarded.
+}{
+\spadpaste{trim     ("\#\# ++ relax ++ \#\#", other) \free{other}}
+}
+\xtc{
+The second argument can be given
+either as a single character or as a character class.
+}{
+\spadpaste{leftTrim ("\#\# ++ relax ++ \#\#", other) \free{other}}
+}
+\xtc{
+}{
+\spadpaste{rightTrim("\#\# ++ relax ++ \#\#", other) \free{other}}
+}
+
+\xtc{
+Strings can be changed to upper case or lower case using the operations
+\spadfunFrom{upperCase}{String}, \spadfunFromX{upperCase}{String}, 
+\spadfunFrom{lowerCase}{String} and
+\spadfunFromX{lowerCase}{String}.
+}{
+\spadpaste{upperCase hello \free{hello}}
+}
+\xtc{
+The versions with the exclamation mark
+change the original string, while the others produce a copy.
+}{
+\spadpaste{lowerCase hello \free{hello}}
+}
+
+\xtc{
+Some basic string matching is provided.
+The function \spadfunFrom{prefix?}{String}
+tests whether one string is an initial prefix of another.
+}{
+\spadpaste{prefix?("He", "Hello")}
+}
+\xtc{
+}{
+\spadpaste{prefix?("Her", "Hello")}
+}
+\xtc{
+A similar function, \spadfunFrom{suffix?}{String}, tests for suffixes.
+}{
+\spadpaste{suffix?("", "Hello")}
+}
+\xtc{
+}{
+\spadpaste{suffix?("LO", "Hello")}
+}
+\xtc{
+The function \spadfunFrom{substring?}{String} tests for a substring 
+given a starting
+position.
+}{
+\spadpaste{substring?("ll", "Hello", 3)}
+}
+\xtc{
+}{
+\spadpaste{substring?("ll", "Hello", 4)}
+}
+
+\xtc{
+A number of \spadfunFrom{position}{String} functions locate things in strings.
+If the first argument to position is a string, then \spad{position(s,t,i)}
+finds the location of \spad{s} as a substring of \spad{t} starting the
+search at position \spad{i}.
+}{
+\spadpaste{n := position("nd", "underground",   1) \bound{n}}
+}
+\xtc{
+}{
+\spadpaste{n := position("nd", "underground", n+1) \free{n} \bound{n1}}
+}
+\xtc{
+If \spad{s} is not found, then \spad{0} is returned (\spad{minIndex(s)-1}
+in \spadtype{IndexedString}).
+}{
+\spadpaste{n := position("nd", "underground", n+1) \free{n1}\bound{n2}}
+}
+\xtc{
+To search for a specific character or a member of a character class,
+a different first argument is used.
+}{
+\spadpaste{position(char "d", "underground", 1)}
+}
+\xtc{
+}{
+\spadpaste{position(hexDigit(), "underground", 1)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{strtbl.ht}
+<<strtbl.ht>>=
+\newcommand{\StringTableXmpTitle}{StringTable}
+\newcommand{\StringTableXmpNumber}{9.78}
+
+@
+\subsection{StringTable}
+\label{StringTableXmpPage}
+See TableXmpPage \ref{TableXmpPage} on page~\pageref{TableXmpPage}
+\index{pages!StringTableXmpPage!strtbl.ht}
+\index{strtbl.ht!pages!StringTableXmpPage}
+\index{StringTableXmpPage!strtbl.ht!pages}
+<<strtbl.ht>>=
+\begin{page}{StringTableXmpPage}{StringTable}
+\beginscroll
+%
+This domain provides a table type in which the keys are known to
+be strings so special techniques can be used.
+Other than performance, the type \spadtype{StringTable(S)} should
+behave exactly the same way as \spadtype{Table(String,S)}.
+See \downlink{`Table'}{TableXmpPage}\ignore{Table} 
+for general information about tables.
+\showBlurb{StringTable}
+
+\xtc{
+This creates a new table whose keys are strings.
+}{
+\spadpaste{t: StringTable(Integer) := table()  \bound{t}}
+}
+\xtc{
+The value associated with each string key is the number of
+characters in the string.
+}{
+\begin{spadsrc}[\free{t}\bound{h}]
+for s in split("My name is Ian Watt.",char " ")
+  repeat
+    t.s := #s
+\end{spadsrc}
+}
+\xtc{
+}{
+\spadpaste{for key in keys t repeat output [key, t.key] \free{t h}}
+}
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{symbol.ht}
+<<symbol.ht>>=
+\newcommand{\SymbolXmpTitle}{Symbol}
+\newcommand{\SymbolXmpNumber}{9.79}
+
+@
+\subsection{Symbol}
+\label{SymbolXmpPage}
+\index{pages!SymbolXmpPage!symbol.ht}
+\index{symbol.ht!pages!SymbolXmpPage}
+\index{SymbolXmpPage!symbol.ht!pages}
+<<symbol.ht>>=
+\begin{page}{SymbolXmpPage}{Symbol}
+\beginscroll
+ 
+Symbols are one of the basic types manipulated by Axiom.
+The \spadtype{Symbol} domain provides ways to create
+symbols of many varieties.
+\showBlurb{Symbol}
+ 
+\xtc{
+The simplest way to create a symbol is to ``single quote'' an identifier.
+}{
+\spadpaste{X: Symbol := 'x \bound{X}}
+}
+\xtc{
+This gives the symbol even if \spad{x} has been assigned a value.
+If \spad{x} has not been assigned a value, then it is possible to omit
+the quote.
+}{
+\spadpaste{XX: Symbol := x}
+}
+\xtc{
+Declarations must be used when working
+with symbols, because otherwise the interpreter tries to place
+values in a more specialized type \spadtype{Variable}.
+}{
+\spadpaste{A := 'a}
+}
+\xtc{
+}{
+\spadpaste{B := b}
+}
+\xtc{
+The normal way of entering polynomials uses this fact.
+}{
+\spadpaste{x**2 + 1}
+}
+ 
+\xtc{
+Another convenient way to create symbols is to convert a string.
+This is useful when the name is to be constructed by a program.
+}{
+\spadpaste{"Hello"::Symbol}
+}
+\xtc{
+Sometimes it is necessary to generate new unique symbols, for example, to
+name constants of integration.
+The expression \spad{new()} generates a symbol starting with \spad{\%}.
+}{
+\spadpaste{new()\$Symbol}
+}
+\xtc{
+Successive calls to \spadfunFrom{new}{Symbol} produce different symbols.
+}{
+\spadpaste{new()\$Symbol}
+}
+\xtc{
+The expression \spad{new("s")} produces a symbol starting with \spad{\%s}.
+}{
+\spadpaste{new("xyz")\$Symbol}
+}
+ 
+\xtc{
+A symbol can be adorned in various ways.
+The most basic thing is applying a symbol to a list
+of subscripts.
+}{
+\spadpaste{X[i,j] \free{X}}
+}
+ 
+\xtc{
+Somewhat less pretty is to attach subscripts, superscripts or arguments.
+}{
+\spadpaste{U := subscript(u, [1,2,1,2]) \bound{U}}
+}
+\xtc{
+}{
+\spadpaste{V := superscript(v, [n]) \bound{V}}
+}
+\xtc{
+}{
+\spadpaste{P := argscript(p, [t]) \bound{P}}
+}
+ 
+\xtc{
+It is possible to test whether a symbol has scripts using the
+\spadfunFrom{scripted?}{Symbol} test.
+}{
+\spadpaste{scripted? U \free{U}}
+}
+\xtc{
+}{
+\spadpaste{scripted? X \free{X}}
+}
+\xtc{
+If a symbol is not scripted, then it may be converted to a string.
+}{
+\spadpaste{string X \free{X}}
+}
+\xtc{
+The basic parts can always be extracted using the
+\spadfunFrom{name}{Symbol} and \spadfunFrom{scripts}{Symbol} operations.
+}{
+\spadpaste{name U \free{U}}
+}
+\xtc{
+}{
+\spadpaste{scripts U \free{U}}
+}
+\xtc{
+}{
+\spadpaste{name X \free{X}}
+}
+\xtc{
+}{
+\spadpaste{scripts X \free{X}}
+}
+ 
+\xtc{
+The most general form is obtained using the \spadfunFrom{script}{Symbol}
+operation.
+This operation takes an argument which is a list containing, in this order,
+lists of subscripts, superscripts, presuperscripts, presubscripts and
+arguments to a symbol.
+}{
+\spadpaste{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]]) \bound{M}}
+}
+\xtc{
+}{
+\spadpaste{scripts M \free{M}}
+}
+\xtc{
+If trailing lists of scripts are omitted, they are assumed to be empty.
+}{
+\spadpaste{N := script(Nut, [[i,j],[k,l],[0,1]]) \bound{N}}
+}
+\xtc{
+}{
+\spadpaste{scripts N \free{N}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{table.ht}
+<<table.ht>>=
+\newcommand{\TableXmpTitle}{Table}
+\newcommand{\TableXmpNumber}{9.80}
+
+@
+\subsection{Table}
+\label{TableXmpPage}
+\begin{itemize}
+\item AssociationListXmpPage \ref{AssociationListXmpPage} on
+page~pageref{AssociationListXmpPage}
+\item EqTableXmpPage \ref{EqTableXmpPage} on
+page~pageref{EqTableXmpPage}
+\item StringTableXmpPage \ref{StringTableXmpPage} on
+page~pageref{StringTableXmpPage}
+\item SparseTableXmpPage \ref{SparseTableXmpPage} on
+page~pageref{SparseTableXmpPage}
+\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
+page~pageref{KeyedAccessFileXmpPage}
+\end{itemize}
+\index{pages!TableXmpPage!table.ht}
+\index{table.ht!pages!TableXmpPage}
+\index{TableXmpPage!table.ht!pages}
+<<table.ht>>=
+\begin{page}{TableXmpPage}{Table}
+\beginscroll
+
+The \spadtype{Table} constructor provides a general structure
+for associative storage.
+This type provides hash tables in which data objects
+can be saved according to keys of any type.
+For a given table, specific types must be chosen for the keys and entries.
+
+\xtc{
+In this example the keys to the table are polynomials with
+integer coefficients.
+The entries in the table are strings.
+}{
+\spadpaste{t: Table(Polynomial Integer, String) := table() \bound{t}}
+}
+\xtc{
+To save an entry in the table, the \spadfunFrom{setelt}{Table} operation is used.
+This can be called directly, giving the table a key and an entry.
+}{
+\spadpaste{setelt(t, x**2 - 1, "Easy to factor") \bound{p1}\free{t}}
+}
+\xtc{
+Alternatively, you can use assignment syntax.
+}{
+\spadpaste{t(x**3 + 1) := "Harder to factor" \bound{p2}\free{p1}}
+}
+\xtc{
+}{
+\spadpaste{t(x)        := "The easiest to factor" \bound{p3}\free{p2}}
+}
+\xtc{
+Entries are retrieved from the table by calling the
+\spadfunFrom{elt}{Table} operation.
+}{
+\spadpaste{elt(t, x) \free{p3}}
+}
+\xtc{
+This operation is called when a table is ``applied'' to a key using
+this or the following syntax.
+}{
+\spadpaste{t.x \free{p3}}
+}
+\xtc{
+}{
+\spadpaste{t x \free{p3}}
+}
+\xtc{
+Parentheses are used only for grouping.  They are needed if the key is
+an infixed expression.
+}{
+\spadpaste{t.(x**2 - 1) \free{p3}}
+}
+\xtc{
+Note that the \spadfunFrom{elt}{Table} operation is used only when the
+key is known to be in the table---otherwise an error is generated.
+}{
+\spadpaste{t (x**3 + 1) \free{p3}}
+}
+
+\xtc{
+You can get a list of all the keys to a table using the
+\spadfunFrom{keys}{Table} operation.
+}{
+\spadpaste{keys t \free{p3}}
+}
+\xtc{
+If you wish to test whether a key is in a table, the
+\spadfunFrom{search}{Table} operation is used.
+This operation returns either an entry or \spad{"failed"}.
+}{
+\spadpaste{search(x, t) \free{p3}}
+}
+\xtc{
+}{
+\spadpaste{search(x**2, t) \free{p3}}
+}
+\xtc{
+The return type is a union so the success of the search can be tested
+using \spad{case}.
+\spadkey{case}
+}{
+\spadpaste{search(x**2, t) case "failed" \free{p3}}
+}
+\xtc{
+The \spadfunFromX{remove}{Table} operation is used to delete values from a
+table.
+}{
+\spadpaste{remove!(x**2-1, t) \free{p3} \bound{p4}}
+}
+\xtc{
+If an entry exists under the key, then it is returned.  Otherwise
+\spadfunFromX{remove}{Table} returns \spad{"failed"}.
+}{
+\spadpaste{remove!(x-1, t) \free{p4}\bound{p5}}
+}
+
+\xtc{
+The number of key-entry pairs can be found using the
+\spadfunFrom{\#}{Table} operation.
+}{
+\spadpaste{\#t \free{p5}}
+}
+\xtc{
+Just as \spadfunFrom{keys}{Table} returns a list of keys to the table, a
+list of all the entries can be obtained using the
+\spadfunFrom{members}{Table} operation.
+}{
+\spadpaste{members t \free{p5}}
+}
+\xtc{
+A number of useful operations take functions and map them on to the
+table to compute the result.  Here we count the entries which
+have \spad{"Hard"} as a prefix.
+}{
+\spadpaste{count(s: String +-> prefix?("Hard", s), t) \free{p5}}
+}
+
+Other table types are provided to support various needs.
+\indent{4}
+\beginitems
+\item[-] \spadtype{AssociationList} gives a list with a table view.
+This allows new entries to be appended onto the front of the list
+to cover up old entries.
+This is useful when table entries need to be stacked or when
+frequent list traversals are required.
+See 
+\downlink{`AssociationList'}{AssociationListXmpPage}\ignore{AssociationList} 
+for more information.
+\item[-] \spadtype{EqTable} gives tables in which keys are considered
+equal only when they are in fact the same instance of a structure.
+See \downlink{`EqTable'}{EqTableXmpPage}\ignore{EqTable} for more information.
+\item[-] \spadtype{StringTable} should be used when the keys are known to
+be strings.
+See \downlink{`StringTable'}{StringTableXmpPage}\ignore{StringTable} 
+for more information.
+\item[-] \spadtype{SparseTable} provides tables with default
+entries, so
+lookup never fails.  The \spadtype{GeneralSparseTable} constructor
+can be used to make any table type behave this way.
+See \downlink{`SparseTable'}{SparseTableXmpPage}\ignore{SparseTable} 
+for more information.
+\item[-] \spadtype{KeyedAccessFile} allows values to be saved in a file,
+accessed as a table.
+See 
+\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile} 
+for more information.
+\enditems
+\indent{0}
+%
+\showBlurb{Table}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{textfile.ht}
+<<textfile.ht>>=
+\newcommand{\TextFileXmpTitle}{TextFile}
+\newcommand{\TextFileXmpNumber}{9.81}
+
+@
+\subsection{TextFile}
+\label{TextFileXmpPage}
+\begin{itemize}
+\item FileXmpPage \ref{FileXmpPage} on
+page~pageref{FileXmpPage}
+\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
+page~pageref{KeyedAccessFileXmpPage}
+\item LibraryXmpPage \ref{LibraryXmpPage} on
+page~pageref{LibraryXmpPage}
+\end{itemize}
+\index{pages!TextFileXmpPage!textfile.ht}
+\index{textfile.ht!pages!TextFileXmpPage}
+\index{TextFileXmpPage!textfile.ht!pages}
+<<textfile.ht>>=
+\begin{page}{TextFileXmpPage}{TextFile}
+\beginscroll
+
+The domain \spadtype{TextFile} allows Axiom to read and write
+character data and exchange text with other programs.
+This type behaves in Axiom much like a \spadtype{File} of strings,
+with additional operations to cause new lines.
+We give an example of how to produce an upper case copy of a file.
+\xtc{
+This is the file from which we read the text.
+}{
+\spadpaste{f1: TextFile := open("/etc/group", "input")   \bound{f1}}
+}
+\xtc{
+This is the file to which we read the text.
+}{
+\spadpaste{f2: TextFile := open("/tmp/MOTD", "output")  \bound{f2}}
+}
+\xtc{
+Entire lines are handled using the \spadfunFromX{readLine}{TextFile} and
+\spadfunFromX{writeLine}{TextFile} operations.
+}{
+\spadpaste{l := readLine! f1 \free{f1}\bound{l}}
+}
+\xtc{
+}{
+\spadpaste{writeLine!(f2, upperCase l) \free{f2 l}}
+}
+\xtc{
+Use the
+\spadfunFrom{endOfFile?}{TextFile} operation to check if you have
+reached the end of the file.
+}{
+\begin{spadsrc}[\free{f1 f2}\bound{Copied}]
+while not endOfFile? f1 repeat
+    s := readLine! f1
+    writeLine!(f2, upperCase s)
+\end{spadsrc}
+}
+\xtc{
+The file \spad{f1} is exhausted and should be closed.
+}{
+\spadpaste{close! f1  \free{Copied}\bound{closed1}}
+}
+
+\xtc{
+It is sometimes useful to write lines a bit at a time.
+The \spadfunFromX{write}{TextFile} operation allows this.
+}{
+\spadpaste{write!(f2, "-The-")  \free{Copied}\bound{tthhee}}
+}
+\xtc{
+}{
+\spadpaste{write!(f2, "-End-")  \free{tthhee}\bound{eenndd}}
+}
+\xtc{
+This ends the line.
+This is done in a machine-dependent manner.
+}{
+\spadpaste{writeLine! f2        \free{eenndd}\bound{LastLine}}
+}
+\xtc{
+}{
+\spadpaste{close! f2              \free{LastLine}\bound{closed2}}
+}
+\noOutputXtc{
+Finally, clean up.
+}{
+\spadpaste{)system rm /tmp/MOTD   \free{closed2}}
+}
+
+For more information on related topics,  see
+\downlink{`File'}{FileXmpPage}\ignore{File},
+\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile}, and
+\downlink{`Library'}{LibraryXmpPage}\ignore{Library}.
+\showBlurb{TextFile}
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{topics.ht}
+\subsection{Axiom Topics}
+\label{TopicPage}
+\includegraphics[scale=.5]{ps/v71topics.eps}
+\index{images!topics}
+
+Called from ``Root Page'' (RootPage) \ref{RootPage} on page~\pageref{RootPage}
+\begin{itemize}
+\item ``Numbers'' (NumberPage) \ref{NumberPage} on page~\pageref{NumberPage}
+\item ``Polynomials'' (PolynomialPage) 
+\ref{PolynomialPage} on page~\pageref{PolynomialPage}
+\item ``Functions'' (FunctionPage) 
+\ref{FunctionPage} on page~\pageref{FunctionPage}
+\item ``Solving Equations'' (EquationPage) 
+\ref{EquationPage} on page~\pageref{EquationPage}
+\item ``Calculus'' (CalculusPage) 
+\ref{CalculusPage} on page~\pageref{CalculusPage}
+\item ``Linear Algebra'' (LinAlgPage) 
+\ref{LinAlgPage} on page~\pageref{LinAlgPage}
+\item ``Graphics'' (GraphicsPage) 
+\ref{GraphicsPage} on page~\pageref{GraphicsPage}
+\item ``Algebra'' (AlgebraPage) 
+\ref{AlgebraPage} on page~\pageref{AlgebraPage}
+\end{itemize}
+\index{pages!TopicPage!topics.ht}
+\index{topics.ht!pages!TopicPage}
+\index{TopicPage!topics.ht!pages}
+<<topics.ht>>=
+\begin{page}{TopicPage}{Axiom Topics}
+\beginscroll
+Select a topic below: % or
+%\lispmemolink{search}{(|htTutorialSearch| '|\stringvalue{pattern}|))}
+%for string (use {\em *} for wild card):
+%\newline\inputstring{pattern}{58}{}
+\beginmenu
+\menumemolink{Numbers}{NumberPage}\tab{18}
+A look at different types of numbers
+
+\menumemolink{Polynomials}{PolynomialPage}\tab{18}
+Polynomials in Axiom
+%
+\menumemolink{Functions}{FunctionPage}\tab{18}
+Built-in and user-defined functions
+%
+\menumemolink{Solving Equations}{EquationPage}\tab{18}
+Facilities for solving equations
+%
+\menumemolink{Calculus}{CalculusPage}\tab{18}
+Using Axiom to do calculus
+%
+\menumemolink{Linear Algebra}{LinAlgPage}\tab{18}
+Axiom's linear algebra facilities
+%
+\menumemolink{Graphics}{GraphicsPage}\tab{18}
+Axiom's graphics facilities
+%
+\menumemolink{Algebra}{AlgebraPage}\tab{18}
+Axiom's abstract algebra facilities
+%
+\endmenu
+\endscroll
+\end{page}
+
+@
+\subsection{Solving Equations}
+\label{EquationPage}
+\includegraphics[scale=.5]{ps/v71equationpage.eps}
+\index{images!equationpage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
+\begin{itemize}
+\item ``Solution of Systems of Linear Equations''\\
+(ugxProblemLinSysPage) \ref{ugxProblemLinSysPage} on 
+page~\pageref{ugxProblemLinSysPage}
+\item ``Solution of a Single Polynomial Equation''\\
+(ugxProblemOnePolPage) \ref{ugxProblemOnePolPage} on 
+page~\pageref{ugxProblemOnePolPage}
+\item ``Solution of Systems of Polynomial Equations''\\
+(ugxProblemPolSysPage) \ref{ugxProblemPolSysPage} on 
+page~\pageref{ugxProblemPolSysPage}
+\item ``Solution of Differential Equations''\\
+(ugProblemDEQPage) \ref{ugProblemDEQPage} on 
+page~\pageref{ugProblemDEQPage}
+\end{itemize}
+\index{pages!EquationPage!topics.ht}
+\index{topics.ht!pages!EquationPage}
+\index{EquationPage!topics.ht!pages}
+<<topics.ht>>=
+\begin{page}{EquationPage}{Solving Equations}
+\beginscroll
+Axiom lets you solve equations of various types:
+\beginmenu
+  \menulink{Solution of Systems of Linear Equations}{ugxProblemLinSysPage}
+    \newline Solve systems of linear equations.
+  \menulink{Solution of a Single Polynomial Equation}{ugxProblemOnePolPage}
+    \newline Find roots of polynomials.
+  \menulink{Solution of Systems of Polynomial Equations}{ugxProblemPolSysPage}
+  \newline Solve systems of polynomial equations.
+  \menulink{Solution of Differential Equations}{ugProblemDEQPage}
+  \newline Closed form and series solutions of differential equations.
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Linear Algebra}
+\label{LinAlgPage}
+\includegraphics[scale=.5]{ps/v71linalgpage.eps}
+\index{images!linalgpage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
+\begin{itemize}
+\item ``Introduction'' (ugIntroTwoDimPage) 
+\ref{ugIntroTwoDimPage} on page~\pageref{ugIntroTwoDimPage}
+\item ``Creating Matrices'' (ugxMatrixCreatePage) 
+\ref{ugxMatrixCreatePage} on page~\pageref{ugxMatrixCreatePage}
+\item ``Operations on Matrices'' (ugxMatrixOpsPage) 
+\ref{ugxMatrixOpsPage} on page~\pageref{ugxMatrixOpsPage}
+\item ``Eigenvalues and Eigenvectors'' (ugProblemEigenPage) 
+\ref{ugProblemEigenPage} on page~\pageref{ugProblemEigenPage}
+\item ``Example: Determinant of a Hilbert Matrix'' (ugxFloatHilbertPage) 
+\ref{ugxFloatHilbertPage} on page~\pageref{ugxFloatHilbertPage}
+\item ``Computing the Permanent'' (PermanentXmpPage) 
+\ref{PermanentXmpPage} on page~\pageref{PermanentXmpPage}
+\item ``Working with Vectors'' (VectorXmpPage) 
+\ref{VectorXmpPage} on page~\pageref{VectorXmpPage}
+\item ``Working with Square Matrices'' (SquareMatrixXmpPage) 
+\ref{SquareMatrixXmpPage} on page~\pageref{SquareMatrixXmpPage}
+\item ``Working with One-dimensional Arrays'' (OneDimensionalArrayXmpPage) 
+\ref{OneDimensionalArrayXmpPage} on page~\pageref{OneDimensionalArrayXmpPage}
+\item ``Working with Two-dimensional Arrays'' (TwoDimensionalArrayXmpPage) 
+\ref{TwoDimensionalArrayXmpPage} on page~\pageref{TwoDimensionalArrayXmpPage}
+\item ``Conversion (Polynomials of Matrices)'' (ugTypesConvertPage) 
+\ref{ugTypesConvertPage} on page~\pageref{ugTypesConvertPage}
+\end{itemize}
+\index{pages!LinAlgPage!topics.ht}
+\index{topics.ht!pages!LinAlgPage}
+\index{LinAlgPage!topics.ht!pages}
+<<topics.ht>>=
+\begin{page}{LinAlgPage}{Linear Algebra}
+\beginscroll
+\beginmenu
+
+\menulink{Introduction}{ugIntroTwoDimPage}\newline
+
+Create and manipulate matrices.
+Work with the entries of a matrix.
+Perform matrix arithmetic.
+
+\menulink{Creating Matrices}{ugxMatrixCreatePage} \newline
+
+Create matrices from scratch and from other matrices.
+
+\menulink{Operations on Matrices}{ugxMatrixOpsPage} \newline
+
+Algebraic manipulations with matrices.
+Compute the inverse, determinant and trace of a matrix.
+Find the rank, nullspace and row echelon form of a matrix.
+
+\menulink{Eigenvalues and Eigenvectors}{ugProblemEigenPage} \newline
+
+How to compute eigenvalues and eigenvectors.
+\endmenu
+\horizontalline\newline
+Additional Topics:
+\beginmenu
+\menulink{Example: Determinant of a Hilbert Matrix}{ugxFloatHilbertPage}
+\menulink{Computing the Permanent}{PermanentXmpPage}
+\menulink{Working with Vectors}{VectorXmpPage}
+\menulink{Working with Square Matrices}{SquareMatrixXmpPage}
+\menulink{Working with One-Dimensional Arrays}{OneDimensionalArrayXmpPage}
+\menulink{Working with Two-Dimensional Arrays}{TwoDimensionalArrayXmpPage}
+\menulink{Conversion (Polynomials of Matrices)}{ugTypesConvertPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\subsection{Calculus}
+\label{CalculusPage}
+\includegraphics[scale=.5]{ps/v71calculuspage.eps}
+\index{images!calculuspage}
+
+Called from ``Topics'' (TopicPage) \ref{TopicPage} on page~\pageref{TopicPage}
+\begin{itemize}
+\item ``Limits'' (ugProblemLimitsPage) \ref{ugProblemLimitsPage} on 
+page~\pageref{ugProblemLimitsPage}
+\item ``Derivatives'' (ugIntroCalcDerivPage) \ref{ugIntroCalcDerivPage} on 
+page~\pageref{ugIntroCalcDerivPage}
+\item ``Integrals'' (ugIntroIntegratePage) \ref{ugIntroIntegratePage} on 
+page~\pageref{ugIntroIntegratePage}
+\item ``More Integrals'' (ugProblemIntegrationPage) 
+\ref{ugProblemIntegrationPage} on 
+page~\pageref{ugProblemIntegrationPage}
+\item ``Laplace'' (ugProblemLaplacePage) \ref{ugProblemLaplacePage} on 
+page~\pageref{ugProblemLaplacePage}
+\item ``Series'' (ugProblemSeriesPage)n \ref{ugProblemSeriesPage} on 
+page~\pageref{ugProblemSeriesPage}
+\item ``Differential Eqns'' (ugProblemDEQPage) \ref{ugProblemDEQPage} on 
+page~\pageref{ugProblemDEQPage}
+\end{itemize}
+\index{pages!CalculusPage!topics.ht}
+\index{topics.ht!pages!CalculusPage}
+\index{CalculusPage!topics.ht!pages}
+<<topics.ht>>=
+\begin{page}{CalculusPage}{Calculus}
+\beginscroll
+\beginmenu
+\menulink{Limits}{ugProblemLimitsPage} \tab{17}
+Compute limits of functional expressions.
+\menulink{Derivatives}{ugIntroCalcDerivPage}\tab{17}
+Compute derivatives and partial derivatives.
+\menulink{Integrals}{ugIntroIntegratePage}\tab{17}
+Introduction to Axiom's symbolic integrator.
+\menulink{More Integrals}{ugProblemIntegrationPage}\tab{17}
+More information about symbolic integration.
+\menulink{Laplace}{ugProblemLaplacePage}\tab{17}
+Computing Laplace transforms.
+\menulink{Series}{ugProblemSeriesPage}\tab{17}
+Compute series expansions of expressions.
+\menulink{Differential Eqns}{ugProblemDEQPage}\tab{17}
+Solve differential equations.
+\endmenu
+\endscroll
+\autobuttons \end{page}
+
+@
+\section{type.ht}
+@
+\subsection{Category {\bf Type}}
+\label{CategoryType}
+\index{pages!CategoryType!type.ht}
+\index{type.ht!pages!CategoryType}
+\index{CategoryType!type.ht!pages}
+<<type.ht>>=
+\begin{page}{CategoryType}{Category {\em Type}}
+\beginscroll
+{\em Type} is a primitive category in Axiom,
+one which is an ancestor of all Axiom categories.
+
+{\em Type} is the root of Axiom's category hierarchy,
+a category with no properties (exported operations 
+and attributes) of which all other categories are descendants.
+Two important children of {\em Type} are
+\spadtype{SetCategory}, the category of all algebraic domains,
+and \spadtype{Aggregate}, the category of all data structures.
+\endscroll
+
+@
+\section{union.ht}
+\subsection{Domain {\bf Union(a:A,...,b:B)}}
+\label{DomainUnion}
+\index{pages!DomainUnion!union.ht}
+\index{union.ht!pages!DomainUnion}
+\index{DomainUnion!union.ht!pages}
+<<union.ht>>=
+\begin{page}{DomainUnion}{Domain {\em Union(a:A,...,b:B)}}
+\beginscroll
+{\em Union} takes any number of "tag"-domain pairs of arguments:
+\indentrel{2}
+\newline \spad{a}, a tag, an element of domain \spadtype{Symbol}
+\newline \spad{A}, a domain of category \spadtype{SetCategory}
+\newline\tab{10}...
+\newline \spad{b}, a tag, an element of domain \spadtype{Symbol}
+\newline \spad{B}, a domain of category \spadtype{SetCategory}
+\indentrel{-2}\newline
+This constructor is a primitive in Axiom. 
+\newline
+\beginmenu
+\item\menulispdownlink{Description}{(|dbSpecialDescription| '|Union|)) }\tab{15}General description
+\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|Union|)}\tab{15}All exported operations of \spad{Union(a:A,b:B)}
+%\item\menudownlink{Examples}   {UnionExamples}   \tab{15}Examples illustrating use
+\item\menulispdownlink{Exports}{(|dbSpecialExports| '|Union|)}\tab{15}Explicit categories and operations
+\endmenu
+\vspace{1}\newline
+In this tagged \spad{Union}, tags \spad{a,...,b} must be distinct. 
+\newline
+For an alternate "untagged" form of \spad{Union}, see \downlink{Union(A,B)}{UntaggedUnion}.
+\endscroll\end{page}
+ 
+@
+\subsection{Domain Constructor {\bf Union}}
+\label{UnionDescription}
+\index{pages!UnionDescription!union.ht}
+\index{union.ht!pages!UnionDescription}
+\index{UnionDescription!union.ht!pages}
+<<union.ht>>=
+\begin{page}{UnionDescription}{Domain Constructor {\em Union}}
+\beginscroll
+\newline\menuitemstyle{}\tab{2}Union({\em a:A},{\em b:B})
+\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
+{\em a}, a tag, an element of domain \spadtype{Symbol}
+\newline\tab{-2}
+{\em A}, a domain of category \spadtype{SetCategory}
+\newline\tab{-2}
+{\em b}, a tag, an element of domain \spadtype{Symbol}
+\newline\tab{-2}
+{\em B}, a domain of category \spadtype{SetCategory}
+\indent{0}\newline\tab{2}{\em Returns:}\indent{17}\tab{-2}
+the "union of {\em A} and {\em B}" as described below.
+\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
+{\em Union(a:A,b:B)} denotes the class of objects 
+which are either members of domain {\em A} or of domain {\em B}.
+The symbols {\em a} and {\em b} are called "tags" and 
+are used to identify the two "branches"
+of the union.
+The {\em Union} constructor can take any number of arguments and
+has an alternate form without {\em tags}.
+This tagged {\em Union} type is necessary, for example, to disambiguate
+two branches of a union where {\em A} and {\em B} denote the same type.
+{\em Union} is a primitive domain of Axiom which cannot be
+defined in the Axiom language. 
+\endscroll\end{page}
+
+@
+\subsection{Domain {\bf Union(A,...,B)}}
+\label{UntaggedUnion}
+\index{pages!UntaggedUnion!union.ht}
+\index{union.ht!pages!UntaggedUnion}
+\index{UntaggedUnion!union.ht!pages}
+<<union.ht>>=
+\begin{page}{UntaggedUnion}{Domain {\em Union(A,...,B)}}
+\beginscroll
+{\em Union} takes any number of domain arguments:
+\indentrel{2}
+\newline \spad{A}, a domain of category \spadtype{SetCategory}
+\newline\tab{10}...
+\newline \spad{B}, a domain of category \spadtype{SetCategory}
+\indentrel{-2}\newline
+\spad{Union} is a primitive constructor in Axiom. 
+\newline
+\beginmenu
+\item\menulispdownlink{Description}{(|dbSpecialDescription| '|UntaggedUnion|)) }\tab{15}General description
+\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|UntaggedUnion|)}\tab{15}All exported operations of \spad{Union(A,B)}
+%\item\menudownlink{Examples}   {UTUnionExamples}   \tab{15}Examples illustrating use
+%\item\menudownlink{Exports}    {UTUnionExports}    \tab{15}Explicit categories and operations
+\endmenu
+\vspace{1}\newline
+In this untagged form of \spad{Union}, domains \spad{A,...,B} must be distinct.
+\endscroll\end{page}
+
+@
+\subsection{Domain Constructor {\bf Union}}
+\label{UTUnionDescription}
+\index{pages!UTUnionDescription!union.ht}
+\index{union.ht!pages!UTUnionDescription}
+\index{UTUnionDescription!union.ht!pages}
+<<union.ht>>=
+\begin{page}{UTUnionDescription}{Domain Constructor {\em Union}}
+\beginscroll
+\newline\menuitemstyle{}\tab{2}Union({\em A},{\em B})
+\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
+{\em A}, a domain of category \spadtype{SetCategory}
+\newline\tab{-2}
+{\em B}, a domain of category \spadtype{SetCategory}
+\indent{0}\newline\tab{2}{\em Returns:}\indent{17}\tab{-2}
+the "union of {\em A} and {\em B}" as described below.
+\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
+{\em Union(A,B)} denotes the class of objects which are
+which are either members of domain {\em A} or of domain {\em B}.
+The {\em Union} constructor can take any number of arguments and
+has an alternate form using {\em tags}.
+{\em Union} is a primitive domain of Axiom which cannot be
+defined in the Axiom language. 
+\endscroll\end{page}
+
+
+@
+\section{uniseg.ht}
+<<uniseg.ht>>=
+\newcommand{\UniversalSegmentXmpTitle}{UniversalSegment}
+\newcommand{\UniversalSegmentXmpNumber}{9.84}
+
+@
+\subsection{UniversalSegment}
+\label{UniversalSegmentXmpPage}
+\begin{itemize}
+\item SegmentXmpPage \ref{SegmentXmpPage} on
+page~pageref{SegmentXmpPage}
+\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
+page~pageref{SegmentBindingXmpPage}
+\item ListXmpPage \ref{ListXmpPage} on
+page~pageref{ListXmpPage}
+\item StreamXmpPage \ref{StreamXmpPage} on
+page~pageref{StreamXmpPage}
+\end{itemize}
+\index{pages!UniversalSegmentXmpPage!uniseg.ht}
+\index{uniseg.ht!pages!UniversalSegmentXmpPage}
+\index{UniversalSegmentXmpPage!uniseg.ht!pages}
+<<uniseg.ht>>=
+\begin{page}{UniversalSegmentXmpPage}{UniversalSegment}
+\beginscroll
+
+The \spadtype{UniversalSegment} domain generalizes \spadtype{Segment}
+by allowing segments without a ``hi'' end point.
+\xtc{
+}{
+\spadpaste{pints  := 1..         \bound{pints}}
+}
+\xtc{
+}{
+\spadpaste{nevens := (0..) by -2 \bound{nevens}}
+}
+\xtc{
+Values of type \spadtype{Segment} are automatically converted to
+type \spadtype{UniversalSegment} when appropriate.
+}{
+\spadpaste{useg: UniversalSegment(Integer) := 3..10 \bound{useg}}
+}
+\xtc{
+The operation \spadfunFrom{hasHi}{UniversalSegment} is used to test
+whether a segment has a \spad{hi} end point.
+}{
+\spadpaste{hasHi pints  \free{pints}}
+}
+\xtc{
+}{
+\spadpaste{hasHi nevens \free{nevens}}
+}
+\xtc{
+}{
+\spadpaste{hasHi useg   \free{useg}}
+}
+\xtc{
+All operations available on type \spadtype{Segment} apply to
+\spadtype{UniversalSegment}, with the proviso that expansions produce
+streams rather than lists.
+This is to accommodate infinite expansions.
+}{
+\spadpaste{expand pints \free{pints}}
+}
+\xtc{
+}{
+\spadpaste{expand nevens \free{nevens}}
+}
+\xtc{
+}{
+\spadpaste{expand [1, 3, 10..15, 100..]}
+}
+
+For more information on related topics,  see
+\downlink{`Segment'}{SegmentXmpPage}\ignore{Segment},
+\downlink{`SegmentBinding'}{SegmentBindingXmpPage}\ignore{SegmentBinding},
+\downlink{`List'}{ListXmpPage}\ignore{List}, and
+\downlink{`Stream'}{StreamXmpPage}\ignore{Stream}.
+\showBlurb{UniversalSegment}
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{up.ht}
+<<up.ht>>=
+\newcommand{\UnivariatePolynomialXmpTitle}{UnivariatePolynomial}
+\newcommand{\UnivariatePolynomialXmpNumber}{9.83}
+
+@
+\subsection{UnivariatePolynomial}
+\label{UnivariatePolynomialXmpPage}
+\begin{itemize}
+\item ugProblemFactorPage \ref{ugProblemFactorPage} on
+page~pageref{ugProblemFactorPage}
+\item ugIntroVariablesPage \ref{ugIntroVariablesPage} on
+page~pageref{ugIntroVariablesPage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~pageref{ugTypesConvertPage}
+\item PolynomialXmpPage \ref{PolynomialXmpPage} on
+page~pageref{PolynomialXmpPage}
+\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
+page~pageref{MultivariatePolynomialXmpPage}
+\item DistributedMultivariatePolynomialXmpPage \ref{DistributedMultivariatePolynomialXmpPage} on
+page~pageref{DistributedMultivariatePolynomialXmpPage}
+\end{itemize}
+\index{pages!UnivariatePolynomialXmpPage!up.ht}
+\index{up.ht!pages!UnivariatePolynomialXmpPage}
+\index{UnivariatePolynomialXmpPage!up.ht!pages}
+<<up.ht>>=
+\begin{page}{UnivariatePolynomialXmpPage}{UnivariatePolynomial}
+\beginscroll
+
+The domain constructor \spadtype{UnivariatePolynomial}
+(abbreviated \spadtype{UP})
+creates domains of univariate polynomials in a specified variable.
+For example, the domain
+\spadtype{UP(a1,POLY FRAC INT)} provides polynomials in the single variable
+\spad{a1} whose coefficients are general polynomials with rational
+number coefficients.
+
+\beginImportant
+\noindent {\bf Restriction:}
+\texht{\begin{quotation}\noindent}{\newline\indent{5}}
+Axiom does not allow you to create types where
+\spadtype{UnivariatePolynomial} is contained in the coefficient type of
+\spadtype{Polynomial}. Therefore,
+\spadtype{UP(x,POLY INT)} is legal but \spadtype{POLY UP(x,INT)} is not.
+\texht{\end{quotation}}{\indent{0}}
+\endImportant
+
+\xtc{
+\spadtype{UP(x,INT)} is the domain of polynomials in the single
+variable \spad{x} with integer coefficients.
+}{
+\spadpaste{(p,q) : UP(x,INT) \bound{pdec}\bound{qdec}}
+}
+\xtc{
+}{
+\spadpaste{p := (3*x-1)**2 * (2*x + 8) \free{pdec}\bound{p}}
+}
+\xtc{
+}{
+\spadpaste{q := (1 - 6*x + 9*x**2)**2 \free{qdec}\bound{q}}
+}
+\xtc{
+The usual arithmetic operations are available for univariate
+polynomials.
+}{
+\spadpaste{p**2 + p*q  \free{p q}}
+}
+\xtc{
+The operation \spadfunFrom{leadingCoefficient}{UnivariatePolynomial}
+extracts the coefficient of the term of highest degree.
+}{
+\spadpaste{leadingCoefficient p \free{p}}
+}
+\xtc{
+The operation \spadfunFrom{degree}{UnivariatePolynomial} returns
+the degree of the polynomial.
+Since the polynomial has only one variable, the variable is not supplied
+to operations like \spadfunFrom{degree}{UnivariatePolynomial}.
+}{
+\spadpaste{degree p \free{p}}
+}
+\xtc{
+The reductum of the polynomial, the polynomial obtained by
+subtracting the term of highest order, is returned by
+\spadfunFrom{reductum}{UnivariatePolynomial}.
+}{
+\spadpaste{reductum p \free{p}}
+}
+\xtc{
+The operation \spadfunFrom{gcd}{UnivariatePolynomial} computes the
+greatest common divisor of two polynomials.
+}{
+\spadpaste{gcd(p,q) \free{p q}}
+}
+\xtc{
+The operation \spadfunFrom{lcm}{UnivariatePolynomial} computes the
+least common multiple.
+}{
+\spadpaste{lcm(p,q) \free{p q}}
+}
+\xtc{
+The operation \spadfunFrom{resultant}{UnivariatePolynomial}
+computes the resultant of two univariate polynomials.
+In the case of \spad{p} and \spad{q}, the resultant is \spad{0} because they
+share a common root.
+}{
+\spadpaste{resultant(p,q) \free{p q}}
+}
+\xtc{
+To compute the derivative of a univariate polynomial with respect to its
+variable, use \spadfunFrom{D}{UnivariatePolynomial}.
+}{
+\spadpaste{D p \free{p}}
+}
+\xtc{
+Univariate polynomials can also be used as if they were functions.
+To evaluate a univariate polynomial at some point, apply
+the polynomial to the point.
+}{
+\spadpaste{p(2) \free{p}}
+}
+\xtc{
+The same syntax is used for composing two univariate polynomials, i.e.
+substituting one polynomial for the variable in another.
+This substitutes \spad{q} for the variable in \spad{p}.
+}{
+\spadpaste{p(q) \free{p q}}
+}
+\xtc{
+This substitutes \spad{p} for the variable in \spad{q}.
+}{
+\spadpaste{q(p) \free{p q}}
+}
+\xtc{
+To obtain a list of coefficients of the polynomial, use
+\spadfunFrom{coefficients}{UnivariatePolynomial}.
+}{
+\spadpaste{l := coefficients p \free{p}\bound{l}}
+}
+\xtc{
+From this you can use \spadfunFrom{gcd}{UnivariatePolynomial}
+and \spadfunFrom{reduce}{List}
+to compute the content of the polynomial.
+}{
+\spadpaste{reduce(gcd,l) \free{l}}
+}
+\xtc{
+Alternatively (and more easily),
+you can just call \spadfunFrom{content}{UnivariatePolynomial}.
+}{
+\spadpaste{content p \free{p}}
+}
+
+Note that the operation \spadfunFrom{coefficients}{UnivariatePolynomial}
+omits the zero coefficients from the list.
+Sometimes it is useful to convert a univariate polynomial
+to a vector whose \eth{\spad{i }} position contains the degree \spad{i-1}
+coefficient of the polynomial.
+\xtc{
+}{
+\spadpaste{ux := (x**4+2*x+3)::UP(x,INT) \bound{ux}}
+}
+\xtc{
+To get a complete vector of coefficients, use the operation
+\spadfunFrom{vectorise}{UnivariatePolynomial}, which takes a
+univariate polynomial and an integer denoting the length of the
+desired vector.
+}{
+\spadpaste{vectorise(ux,5) \free{ux}}
+}
+
+It is common to want to do something to every term of a polynomial,
+creating a new polynomial in the process.
+\xtc{
+This is a function for iterating across the terms of a polynomial,
+squaring each term.
+}{
+\begin{spadsrc}[\bound{squareTerms}]
+squareTerms(p) ==
+  reduce(+,[t**2 for t in monomials p])
+\end{spadsrc}
+}
+\xtc{
+Recall what \spad{p} looked like.
+}{
+\spadpaste{p \free{p}}
+}
+\xtc{
+We can demonstrate \userfun{squareTerms} on \spad{p}.
+}{
+\spadpaste{squareTerms p \free{p}\free{squareTerms}}
+}
+
+When the coefficients of the univariate polynomial belong to a
+field,\footnote{For example, when the coefficients are rational
+numbers, as opposed to integers.  The important property of
+a field is that non-zero elements can be divided and produce
+another element. The quotient of the integers 2 and 3 is not
+another integer.}
+it is possible to compute quotients and remainders.
+\xtc{
+}{
+\spadpaste{(r,s) : UP(a1,FRAC INT) \bound{rdec}\bound{sdec}}
+}
+\xtc{
+}{
+\spadpaste{r := a1**2 - 2/3  \free{rdec}\bound{r}}
+}
+\xtc{
+}{
+\spadpaste{s := a1 + 4       \free{sdec}\bound{s}}
+}
+\xtc{
+When the coefficients are rational numbers or rational expressions, the
+operation \spadfunFrom{quo}{UnivariatePolynomial} computes the quotient
+of two polynomials.
+}{
+\spadpaste{r quo s \free{r s}}
+}
+\xtc{
+The operation
+\spadfunFrom{rem}{UnivariatePolynomial} computes the remainder.
+}{
+\spadpaste{r rem s \free{r s}}
+}
+\xtc{
+The operation \spadfunFrom{divide}{UnivariatePolynomial} can be used to
+return a record of both components.
+}{
+\spadpaste{d := divide(r, s) \free{r s}\bound{d}}
+}
+\xtc{
+Now we check the arithmetic!
+}{
+\spadpaste{r - (d.quotient * s + d.remainder) \free{r s d}}
+}
+\xtc{
+It is also possible to integrate univariate polynomials when the
+coefficients belong to a field.
+}{
+\spadpaste{integrate r \free{r}}
+}
+\xtc{
+}{
+\spadpaste{integrate s \free{s}}
+}
+
+One application of univariate polynomials is to see expressions in terms
+of a specific variable.
+%
+\xtc{
+We start with a polynomial in \spad{a1} whose coefficients
+are quotients of polynomials in \spad{b1} and \spad{b2}.
+}{
+\spadpaste{t : UP(a1,FRAC POLY INT) \bound{tdec}}
+}
+\xtc{
+Since in this case we are not talking about using multivariate
+polynomials in only two variables, we use \spadtype{Polynomial}.
+We also use \spadtype{Fraction} because we want fractions.
+}{
+\spadpaste{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3) \free{tdec}\bound{t}}
+}
+\xtc{
+We push all the variables into a single quotient of polynomials.
+}{
+\spadpaste{u : FRAC POLY INT := t \bound{u}\free{t}}
+}
+\xtc{
+Alternatively, we can view this as a polynomial in the variable
+This is a {\it mode-directed} conversion: you indicate
+as much of the structure as you care about and let Axiom
+decide on the full type and how to do the transformation.
+}{
+\spadpaste{u :: UP(b1,?) \free{u}}
+}
+
+See \downlink{``\ugProblemFactorTitle''}{ugProblemFactorPage} in 
+Section \ugProblemFactorNumber\ignore{ugProblemFactor}
+for a discussion of the factorization facilities
+in Axiom for univariate polynomials.
+For more information on related topics, see
+\downlink{``\ugIntroVariablesTitle''}{ugIntroVariablesPage} in 
+Section \ugIntroVariablesNumber\ignore{ugIntroVariables},
+\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} in 
+Section \ugTypesConvertNumber\ignore{ugTypesConvert},
+\downlink{`Polynomial'}{PolynomialXmpPage}\ignore{Polynomial},
+\downlink{`MultivariatePolynomial'}{MultivariatePolynomialXmpPage}
+\ignore{MultivariatePolynomial}, and
+\downlink{`DistributedMultivariatePolynomial'}
+{DistributedMultivariatePolynomialXmpPage}
+\ignore{DistributedMultivariatePolynomial}.
+%
+\showBlurb{UnivariatePolynomial}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{vector.ht}
+<<vector.ht>>=
+\newcommand{\VectorXmpTitle}{Vector}
+\newcommand{\VectorXmpNumber}{9.85}
+
+@
+\subsection{Vector}
+\label{VectorXmpPage}
+\begin{itemize}
+\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
+page~pageref{OneDimensionalArrayXmpPage}
+\item ListXmpPage \ref{ListXmpPage} on
+page~pageref{ListXmpPage}
+\item MatrixXmpPage \ref{MatrixXmpPage} on
+page~pageref{MatrixXmpPage}
+\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
+page~pageref{OneDimensionalArrayXmpPage}
+\item SetXmpPage \ref{SetXmpPage} on
+page~pageref{SetXmpPage}
+\item TableXmpPage \ref{TableXmpPage} on
+page~pageref{TableXmpPage}
+\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
+page~pageref{TwoDimensionalArrayXmpPage}
+\end{itemize}
+\index{pages!VectorXmpPage!vector.ht}
+\index{vector.ht!pages!VectorXmpPage}
+\index{VectorXmpPage!vector.ht!pages}
+<<vector.ht>>=
+\begin{page}{VectorXmpPage}{Vector}
+\beginscroll
+
+The \spadtype{Vector} domain is used for storing data in a one-dimensional
+indexed data structure.
+A vector is a homogeneous data structure in that all the components of the
+vector must belong to the same Axiom domain.
+Each vector has a fixed length specified by the user; vectors are not
+extensible.
+This domain is similar to the \spadtype{OneDimensionalArray} domain,
+except that when the components of a \spadtype{Vector} belong to a
+\spadtype{Ring}, arithmetic operations are provided.
+For more examples of operations that are defined for both
+\spadtype{Vector} and \spadtype{OneDimensionalArray}, see
+\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}
+\ignore{OneDimensionalArray}.
+
+As with the \spadtype{OneDimensionalArray} domain, a \spadtype{Vector} can
+be created by calling the operation \spadfunFrom{new}{Vector}, its components
+can be accessed by calling the operations \spadfunFrom{elt}{Vector} and
+\spadfunFrom{qelt}{Vector}, and its components can be reset by calling the
+operations \spadfunFrom{setelt}{Vector} and
+\spadfunFromX{qsetelt}{Vector}.
+\xtc{
+This creates a vector of integers of length
+\spad{5} all of whose components are \spad{12}.
+}{
+\spadpaste{u : VECTOR INT := new(5,12) \bound{u}}
+}
+\xtc{
+This is how you create a vector from a list of its components.
+}{
+\spadpaste{v : VECTOR INT := vector([1,2,3,4,5]) \bound{v}}
+}
+
+\xtc{
+Indexing for vectors begins at \spad{1}.
+The last element has index equal to the length of the vector,
+which is computed by \spadopFrom{\#}{Vector}.
+}{
+\spadpaste{\#(v) \free{v}}
+}
+\xtc{
+This is the standard way to use \spadfunFrom{elt}{Vector} to extract an
+element.
+Functionally, it is the same as if you had typed \spad{elt(v,2)}.
+}{
+\spadpaste{v.2 \free{v}}
+}
+\xtc{
+This is the standard way to use \spadfunFrom{setelt}{Vector} to change an
+element.
+It is the same as if you had typed \spad{setelt(v,3,99)}.
+}{
+\spadpaste{v.3 := 99 \free{v}\bound{vdelta}}
+}
+\xtc{
+Now look at \spad{v} to see the change.
+You can
+use \spadfunFrom{qelt}{Vector} and \spadfunFromX{qsetelt}{Vector} (instead
+of \spadfunFrom{elt}{Vector} and \spadfunFrom{setelt}{Vector},
+respectively) but {\it only} when you know that the index is within the valid
+range.
+}{
+\spadpaste{v \free{vdelta}}
+}
+
+\xtc{
+When the components belong to a \spadtype{Ring}, Axiom
+provides arithmetic operations for \spadtype{Vector}.
+These include left and right scalar multiplication.
+}{
+\spadpaste{5 * v \free{vdelta}}
+}
+\xtc{
+}{
+\spadpaste{v * 7 \free{vdelta}}
+}
+\xtc{
+}{
+\spadpaste{w : VECTOR INT := vector([2,3,4,5,6]) \bound{w}}
+}
+\xtc{
+Addition and subtraction are also available.
+}{
+\spadpaste{v + w \free{vdelta w}}
+}
+\xtc{
+Of course, when adding or subtracting, the two vectors must have the same
+length or an error message is displayed.
+}{
+\spadpaste{v - w \free{vdelta w}}
+}
+
+For more information about other aggregate domains,
+see the following:
+\downlink{`List'}{ListXmpPage}\ignore{List},
+\downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix},
+\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}\ignore{OneDimensionalArray},
+\downlink{`Set'}{SetXmpPage}\ignore{Set},
+\downlink{`Table'}{TableXmpPage}\ignore{Table}, and
+\downlink{`TwoDimensionalArray'}{TwoDimensionalArrayXmpPage}\ignore{TwoDimensionalArray}.
+Issue the system command \spadcmd{)show Vector}
+to display the full list of operations defined by
+\spadtype{Vector}.
+
+\endscroll
+\autobuttons
+\end{page}
+%
+
+@
+\section{void.ht}
+<<void.ht>>=
+\newcommand{\VoidXmpTitle}{Void}
+\newcommand{\VoidXmpNumber}{9.86}
+
+@
+\subsection{Void}
+\label{VoidXmpPage}
+\index{pages!VoidXmpPage!void.ht}
+\index{void.ht!pages!VoidXmpPage}
+\index{VoidXmpPage!void.ht!pages}
+<<void.ht>>=
+\begin{page}{VoidXmpPage}{Void}
+\beginscroll
+
+When an expression is not in a value context, it is given type \spadtype{Void}.
+For example, in the expression
+\begin{verbatim}
+r := (a; b; if c then d else e; f)
+\end{verbatim}
+values are used only from the subexpressions \spad{c} and \spad{f}: all
+others are thrown away.
+The subexpressions \spad{a}, \spad{b}, \spad{d} and \spad{e}
+are evaluated for side-effects only and have type \spadtype{Void}.
+There is a unique value of type \spadtype{Void}.
+
+\xtc{
+You will most often see results of type \spadtype{Void} when you
+declare a variable.
+}{
+\spadpaste{a : Integer}
+}
+\noOutputXtc{
+Usually no output is displayed for \spadtype{Void} results.
+You can force the display of a rather ugly object by issuing
+\spadcmd{)set message void on}.
+}{
+\spadpaste{)set message void on}
+}
+\xtc{
+}{
+\spadpaste{b : Fraction Integer}
+}
+\noOutputXtc{
+}{
+\spadpaste{)set message void off}
+}
+\xtc{
+All values can be converted to type \spadtype{Void}.
+}{
+\spadpaste{3::Void \bound{prev}}
+}
+\xtc{
+Once a value has been converted to \spadtype{Void}, it cannot be recovered.
+}{
+\spadpaste{\% :: PositiveInteger \free{prev}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{wutset.ht}
+<<wutset.ht>>=
+\newcommand{\WuWenTsunTriangularSetXmpTitle}{WuWenTsunTriangularSet}
+\newcommand{\WuWenTsunTriangularSetXmpNumber}{9.87}
+
+@
+\subsection{WuWenTsunTriangularSet}
+\label{WuWenTsunTriangularSetXmpPage}
+\index{pages!WuWenTsunTriangularSetXmpPage!wutset.ht}
+\index{wutset.ht!pages!WuWenTsunTriangularSetXmpPage}
+\index{WuWenTsunTriangularSetXmpPage!wutset.ht!pages}
+<<wutset.ht>>=
+\begin{page}{WuWenTsunTriangularSetXmpPage}{WuWenTsunTriangularSet}
+\beginscroll
+The \spadtype{WuWenTsunTriangularSet} domain constructor implements
+the characteristic set method of Wu Wen Tsun.
+This algorithm computes a list of triangular sets from a list
+of polynomials such that the algebraic variety defined by the 
+given list of polynomials decomposes into the union of the regular-zero sets 
+of the computed triangular sets.
+The constructor takes four arguments.
+The first one, {\bf R}, is the coefficient ring of the polynomials;
+it must belong to the category \spadtype{IntegralDomain}.
+The second one, {\bf E}, is the exponent monoid of the polynomials;
+it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
+The third one, {\bf V}, is the ordered set of variables;
+it must belong to the category \spadtype{OrderedSet}.
+The last one is the polynomial ring;
+it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
+The abbreviation for \spadtype{WuWenTsunTriangularSet} is
+\spadtype{WUTSET}.
+
+Let us illustrate the facilities by an example.
+
+\xtc{
+Define the coefficient ring.
+}{
+\spadpaste{R := Integer \bound{R}}
+}
+\xtc{
+Define the list of variables,
+}{
+\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
+}
+\xtc{
+and make it an ordered set;
+}{
+\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
+}
+\xtc{
+then define the exponent monoid.
+}{
+\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
+}
+\xtc{
+Define the polynomial ring.
+}{
+\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
+}
+\xtc{
+Let the variables be polynomial.
+}{
+\spadpaste{x: P := 'x \free{P} \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{y: P := 'y \free{P} \bound{y}}
+}
+\xtc{
+}{
+\spadpaste{z: P := 'z \free{P} \bound{z}}
+}
+\xtc{
+}{
+\spadpaste{t: P := 't \free{P} \bound{t}}
+}
+\xtc{
+Now call the \spadtype{WuWenTsunTriangularSet} domain constructor.
+}{
+\spadpaste{T := WUTSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
+}
+\xtc{
+Define a polynomial system.
+}{
+\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
+}
+\xtc{
+}{
+\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
+}
+\xtc{
+Compute a characteristic set of the system.
+}{
+\spadpaste{characteristicSet(lp)$T \free{lp} \free{T}}
+}
+\xtc{
+Solve the system.
+}{
+\spadpaste{zeroSetSplit(lp)$T \free{lp} \free{T}}
+}
+
+
+The \spadtype{RegularTriangularSet} and 
+\spadtype{SquareFreeRegularTriangularSet} domain constructors,
+and the  \spadtype{LazardSetSolvingPackage}, 
+\spadtype{SquareFreeRegularTriangularSet} 
+and \spadtype{ZeroDimensionalSolvePackage} package constructors
+also provide operations to compute triangular 
+decompositions of algebraic varieties.
+These five constructor use a special kind of 
+characteristic sets, called regular triangular sets.
+These special characteristic sets have better 
+properties than the general ones.
+Regular triangular sets and their related concepts are presented in
+the paper "On the Theories of Triangular sets" By P. Aubry, D. Lazard
+and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
+The decomposition algorithm (due to the third author) available in the 
+four above constructors provide generally better timings than 
+the characteristic set method.
+In fact, the \spadtype{WUTSET} constructor remains interesting 
+for the purpose of manipulating characteristic sets whereas
+the other constructors are more convenient for solving polynomial systems.
+
+Note that the way of understanding triangular decompositions 
+is detailed in the example of the \spadtype{RegularTriangularSet}
+constructor.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{xmpexp.ht}
+<<xmpexp.ht>>=
+\newcommand{\ExamplesExposedTitle}{Some Examples of Domains and Packages}
+\newcommand{\ExamplesExposedNumber}{9.}
+
+@
+\subsection{Some Examples of Domains and Packages}
+\label{ExamplesExposedPage}
+\begin{itemize}
+\item AssociationListXmpPage \ref{AssociationListXmpPage} on
+page~pageref{AssociationListXmpPage}
+\item BalancedBinaryTreeXmpPage \ref{BalancedBinaryTreeXmpPage} on
+page~pageref{BalancedBinaryTreeXmpPage}
+\item BasicOperatorXmpPage \ref{BasicOperatorXmpPage} on
+page~pageref{BasicOperatorXmpPage}
+\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on
+page~pageref{BinaryExpansionXmpPage}
+\item BinarySearchTreeXmpPage \ref{BinarySearchTreeXmpPage} on
+page~pageref{BinarySearchTreeXmpPage}
+\item CardinalNumberXmpPage \ref{CardinalNumberXmpPage} on
+page~pageref{CardinalNumberXmpPage}
+\item CartesianTensorXmpPage \ref{CartesianTensorXmpPage} on
+page~pageref{CartesianTensorXmpPage}
+\item CharacterXmpPage \ref{CharacterXmpPage} on
+page~pageref{CharacterXmpPage}
+\item CharacterClassXmpPage \ref{CharacterClassXmpPage} on
+page~pageref{CharacterClassXmpPage}
+\item CliffordAlgebraXmpPage \ref{CliffordAlgebraXmpPage} on
+page~pageref{CliffordAlgebraXmpPage}
+\item ComplexXmpPage \ref{ComplexXmpPage} on
+page~pageref{ComplexXmpPage}
+\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
+page~pageref{ContinuedFractionXmpPage}
+\item CycleIndicatorsXmpPage \ref{CycleIndicatorsXmpPage} on
+page~pageref{CycleIndicatorsXmpPage}
+\item DeRhamComplexXmpPage \ref{DeRhamComplexXmpPage} on
+page~pageref{DeRhamComplexXmpPage}
+\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
+page~pageref{DecimalExpansionXmpPage}
+\item DistributedMultivariatePolynomialXmpPage 
+\ref{DistributedMultivariatePolynomialXmpPage} on
+page~pageref{DistributedMultivariatePolynomialXmpPage}
+\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
+page~pageref{DoubleFloatXmpPage}
+\item EqTableXmpPage \ref{EqTableXmpPage} on
+page~pageref{EqTableXmpPage}
+\item EquationXmpPage \ref{EquationXmpPage} on
+page~pageref{EquationXmpPage}
+\item ExitXmpPage \ref{ExitXmpPage} on
+page~pageref{ExitXmpPage}
+\item ExpressionXmpPage \ref{ExpressionXmpPage} on
+page~pageref{ExpressionXmpPage}
+\item FactoredXmpPage \ref{FactoredXmpPage} on
+page~pageref{FactoredXmpPage}
+\item FactoredFunctionsTwoXmpPage \ref{FactoredFunctionsTwoXmpPage} on
+page~pageref{FactoredFunctionsTwoXmpPage}
+\item FileXmpPage \ref{FileXmpPage} on
+page~pageref{FileXmpPage}
+\item FileNameXmpPage \ref{FileNameXmpPage} on
+page~pageref{FileNameXmpPage}
+\item FlexibleArrayXmpPage \ref{FlexibleArrayXmpPage} on
+page~pageref{FlexibleArrayXmpPage}
+\item FloatXmpPage \ref{FloatXmpPage} on
+page~pageref{FloatXmpPage}
+\item FractionXmpPage \ref{FractionXmpPage} on
+page~pageref{FractionXmpPage}
+\item FullPartialFractionExpansionXmpPage 
+\ref{FullPartialFractionExpansionXmpPage} on
+page~pageref{FullPartialFractionExpansionXmpPage}
+\item GeneralSparseTableXmpPage \ref{GeneralSparseTableXmpPage} on
+page~pageref{GeneralSparseTableXmpPage}
+\item GroebnerFactorizationPackageXmpPage 
+\ref{GroebnerFactorizationPackageXmpPage} on
+page~pageref{GroebnerFactorizationPackageXmpPage}
+\item HeapXmpPage \ref{HeapXmpPage} on
+page~pageref{HeapXmpPage}
+\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
+page~pageref{HexadecimalExpansionXmpPage}
+\item IntegerXmpPage \ref{IntegerXmpPage} on
+page~pageref{IntegerXmpPage}
+\item IntegerLinearDependenceXmpPage \ref{IntegerLinearDependenceXmpPage} on
+page~pageref{IntegerLinearDependenceXmpPage}
+\item IntegerNumberTheoryFunctionsXmpPage 
+\ref{IntegerNumberTheoryFunctionsXmpPage} on
+page~pageref{IntegerNumberTheoryFunctionsXmpPage}
+\item KernelXmpPage \ref{KernelXmpPage} on
+page~pageref{KernelXmpPage}
+\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
+page~pageref{KeyedAccessFileXmpPage}
+\item LexTriangularPackageXmpPage \ref{LexTriangularPackageXmpPage} on
+page~pageref{LexTriangularPackageXmpPage}
+\item LazardSetSolvingPackageXmpPage \ref{LazardSetSolvingPackageXmpPage} on
+page~pageref{LazardSetSolvingPackageXmpPage}
+\item LibraryXmpPage \ref{LibraryXmpPage} on
+page~pageref{LibraryXmpPage}
+\item LieExponentialsXmpPage \ref{LieExponentialsXmpPage} on
+page~pageref{LieExponentialsXmpPage}
+\item LiePolynomialXmpPage \ref{LiePolynomialXmpPage} on
+page~pageref{LiePolynomialXmpPage}
+\item LinearOrdinaryDifferentialOperatorXmpPage 
+\ref{LinearOrdinaryDifferentialOperatorXmpPage} on
+page~pageref{LinearOrdinaryDifferentialOperatorXmpPage}
+\item LinearOrdinaryDifferentialOperatorOneXmpPage 
+\ref{LinearOrdinaryDifferentialOperatorOneXmpPage} on
+page~pageref{LinearOrdinaryDifferentialOperatorOneXmpPage}
+\item LinearOrdinaryDifferentialOperatorTwoXmpPage 
+\ref{LinearOrdinaryDifferentialOperatorTwoXmpPage} on
+page~pageref{LinearOrdinaryDifferentialOperatorTwoXmpPage}
+\item ListXmpPage \ref{ListXmpPage} on
+page~pageref{ListXmpPage}
+\item LyndonWordXmpPage \ref{LyndonWordXmpPage} on
+page~pageref{LyndonWordXmpPage}
+\item MagmaXmpPage \ref{MagmaXmpPage} on
+page~pageref{MagmaXmpPage}
+\item MakeFunctionXmpPage \ref{MakeFunctionXmpPage} on
+page~pageref{MakeFunctionXmpPage}
+\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
+page~pageref{MappingPackageOneXmpPage}
+\item MatrixXmpPage \ref{MatrixXmpPage} on
+page~pageref{MatrixXmpPage}
+\item MultiSetXmpPage \ref{MultiSetXmpPage} on
+page~pageref{MultiSetXmpPage}
+\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
+page~pageref{MultivariatePolynomialXmpPage}
+\item NoneXmpPage \ref{NoneXmpPage} on
+page~pageref{NoneXmpPage}
+\item OctonionXmpPage \ref{OctonionXmpPage} on
+page~pageref{OctonionXmpPage}
+\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
+page~pageref{OneDimensionalArrayXmpPage}
+\item OperatorXmpPage \ref{OperatorXmpPage} on
+page~pageref{OperatorXmpPage}
+\item OrderedVariableListXmpPage \ref{OrderedVariableListXmpPage} on
+page~pageref{OrderedVariableListXmpPage}
+\item OrderlyDifferentialPolynomialXmpPage 
+\ref{OrderlyDifferentialPolynomialXmpPage} on
+page~pageref{OrderlyDifferentialPolynomialXmpPage}
+\item PartialFractionXmpPage \ref{PartialFractionXmpPage} on
+page~pageref{PartialFractionXmpPage}
+\item PermanentXmpPage \ref{PermanentXmpPage} on
+page~pageref{PermanentXmpPage}
+\item PolynomialXmpPage \ref{PolynomialXmpPage} on
+page~pageref{PolynomialXmpPage}
+\item QuaternionXmpPage \ref{QuaternionXmpPage} on
+page~pageref{QuaternionXmpPage}
+\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
+page~pageref{RadixExpansionXmpPage}
+\item RealClosureXmpPage \ref{RealClosureXmpPage} on
+page~pageref{RealClosureXmpPage}
+\item RegularTriangularSetXmpPage \ref{RegularTriangularSetXmpPage} on
+page~pageref{RegularTriangularSetXmpPage}
+\item RomanNumeralXmpPage \ref{RomanNumeralXmpPage} on
+page~pageref{RomanNumeralXmpPage}
+\item SegmentXmpPage \ref{SegmentXmpPage} on
+page~pageref{SegmentXmpPage}
+\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
+page~pageref{SegmentBindingXmpPage}
+\item SetXmpPage \ref{SetXmpPage} on
+page~pageref{SetXmpPage}
+\item SingleIntegerXmpPage \ref{SingleIntegerXmpPage} on
+page~pageref{SingleIntegerXmpPage}
+\item SparseTableXmpPage \ref{SparseTableXmpPage} on
+page~pageref{SparseTableXmpPage}
+\item SquareMatrixXmpPage \ref{SquareMatrixXmpPage} on
+page~pageref{SquareMatrixXmpPage}
+\item SquareFreeRegularTriangularSetXmpPage 
+\ref{SquareFreeRegularTriangularSetXmpPage} on
+page~pageref{SquareFreeRegularTriangularSetXmpPage}
+\item StreamXmpPage \ref{StreamXmpPage} on
+page~pageref{StreamXmpPage}
+\item StringXmpPage \ref{StringXmpPage} on
+page~pageref{StringXmpPage}
+\item StringTableXmpPage \ref{StringTableXmpPage} on
+page~pageref{StringTableXmpPage}
+\item SymbolXmpPage \ref{SymbolXmpPage} on
+page~pageref{SymbolXmpPage}
+\item TableXmpPage \ref{TableXmpPage} on
+page~pageref{TableXmpPage}
+\item TextFileXmpPage \ref{TextFileXmpPage} on
+page~pageref{TextFileXmpPage}
+\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
+page~pageref{TwoDimensionalArrayXmpPage}
+\item UnivariatePolynomialXmpPage \ref{UnivariatePolynomialXmpPage} on
+page~pageref{UnivariatePolynomialXmpPage}
+\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
+page~pageref{UniversalSegmentXmpPage}
+\item VectorXmpPage \ref{VectorXmpPage} on
+page~pageref{VectorXmpPage}
+\item VoidXmpPage \ref{VoidXmpPage} on
+page~pageref{VoidXmpPage}
+\item WuWenTsunTriangularSetXmpPage \ref{WuWenTsunTriangularSetXmpPage} on
+page~pageref{WuWenTsunTriangularSetXmpPage}
+\item XPBWPolynomialXmpPage \ref{XPBWPolynomialXmpPage} on
+page~pageref{XPBWPolynomialXmpPage}
+\item XPolynomialXmpPage \ref{XPolynomialXmpPage} on
+page~pageref{XPolynomialXmpPage}
+\item XPolynomialRingXmpPage \ref{XPolynomialRingXmpPage} on
+page~pageref{XPolynomialRingXmpPage}
+\item ZeroDimensionalSolvePackageXmpPage 
+\ref{ZeroDimensionalSolvePackageXmpPage} on
+page~pageref{ZeroDimensionalSolvePackageXmpPage}
+\end{itemize}
+\index{pages!ExamplesExposedPage!xmpexp.ht}
+\index{xmpexp.ht!pages!ExamplesExposedPage}
+\index{ExamplesExposedPage!xmpexp.ht!pages}
+<<xmpexp.ht>>=
+\begin{page}{ExamplesExposedPage}{Some Examples of Domains and Packages}
+This is a menu of examples of some domains and packages.
+Click on any item below to see that section.
+\beginscroll
+\table{
+{ \downlink{AssociationList}{AssociationListXmpPage} }
+{ \downlink{BalancedBinaryTree}{BalancedBinaryTreeXmpPage} }
+{ \downlink{BasicOperator}{BasicOperatorXmpPage} }
+{ \downlink{BinaryExpansion}{BinaryExpansionXmpPage} }
+{ \downlink{BinarySearchTree}{BinarySearchTreeXmpPage} }
+{ \downlink{CardinalNumber}{CardinalNumberXmpPage} }
+{ \downlink{CartesianTensor}{CartesianTensorXmpPage} }
+{ \downlink{Character}{CharacterXmpPage} }
+{ \downlink{CharacterClass}{CharacterClassXmpPage} }
+{ \downlink{CliffordAlgebra}{CliffordAlgebraXmpPage} }
+{ \downlink{Complex}{ComplexXmpPage} }
+{ \downlink{ContinuedFraction}{ContinuedFractionXmpPage} }
+{ \downlink{CycleIndicators}{CycleIndicatorsXmpPage} }
+{ \downlink{DeRhamComplex}{DeRhamComplexXmpPage} }
+{ \downlink{DecimalExpansion}{DecimalExpansionXmpPage} }
+{ \downlink{DistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage} }
+{ \downlink{DoubleFloat}{DoubleFloatXmpPage} }
+{ \downlink{EqTable}{EqTableXmpPage} }
+{ \downlink{Equation}{EquationXmpPage} }
+{ \downlink{Exit}{ExitXmpPage} }
+{ \downlink{Expression}{ExpressionXmpPage} }
+{ \downlink{Factored}{FactoredXmpPage} }
+{ \downlink{FactoredFunctions2}{FactoredFunctionsTwoXmpPage} }
+{ \downlink{File}{FileXmpPage} }
+{ \downlink{FileName}{FileNameXmpPage} }
+{ \downlink{FlexibleArray}{FlexibleArrayXmpPage} }
+{ \downlink{Float}{FloatXmpPage} }
+{ \downlink{Fraction}{FractionXmpPage} }
+{ \downlink{FullPartialFractionExpansion}{FullPartialFractionExpansionXmpPage} }
+{ \downlink{GeneralSparseTable}{GeneralSparseTableXmpPage} }
+{ \downlink{GroebnerFactorizationPackage}{GroebnerFactorizationPackageXmpPage} }
+{ \downlink{Heap}{HeapXmpPage} }
+{ \downlink{HexadecimalExpansion}{HexadecimalExpansionXmpPage} }
+{ \downlink{Integer}{IntegerXmpPage} }
+{ \downlink{IntegerLinearDependence}{IntegerLinearDependenceXmpPage} }
+{ \downlink{IntegerNumberTheoryFunctions}{IntegerNumberTheoryFunctionsXmpPage} }
+{ \downlink{Kernel}{KernelXmpPage} }
+{ \downlink{KeyedAccessFile}{KeyedAccessFileXmpPage} }
+{ \downlink{LexTriangularPackage}{LexTriangularPackageXmpPage} }
+{ \downlink{LazardSetSolvingPackage}{LazardSetSolvingPackageXmpPage} }
+{ \downlink{Library}{LibraryXmpPage} }
+{ \downlink{LieExponentials}{LieExponentialsXmpPage} }
+{ \downlink{LiePolynomial}{LiePolynomialXmpPage} }
+{ \downlink{LinearOrdinaryDifferentialOperator}{LinearOrdinaryDifferentialOperatorXmpPage} }
+{ \downlink{LinearOrdinaryDifferentialOperator1}{LinearOrdinaryDifferentialOperatorOneXmpPage} }
+{ \downlink{LinearOrdinaryDifferentialOperator2}{LinearOrdinaryDifferentialOperatorTwoXmpPage} }
+{ \downlink{List}{ListXmpPage} }
+{ \downlink{LyndonWord}{LyndonWordXmpPage} }
+{ \downlink{Magma}{MagmaXmpPage} }
+{ \downlink{MakeFunction}{MakeFunctionXmpPage} }
+{ \downlink{MappingPackage1}{MappingPackageOneXmpPage} }
+{ \downlink{Matrix}{MatrixXmpPage} }
+{ \downlink{MultiSet}{MultiSetXmpPage} }
+{ \downlink{MultivariatePolynomial}{MultivariatePolynomialXmpPage} }
+{ \downlink{None}{NoneXmpPage} }
+{ \downlink{Octonion}{OctonionXmpPage} }
+{ \downlink{OneDimensionalArray}{OneDimensionalArrayXmpPage} }
+{ \downlink{Operator}{OperatorXmpPage} }
+{ \downlink{OrderedVariableList}{OrderedVariableListXmpPage} }
+{ \downlink{OrderlyDifferentialPolynomial}{OrderlyDifferentialPolynomialXmpPage} }
+{ \downlink{PartialFraction}{PartialFractionXmpPage} }
+{ \downlink{Permanent}{PermanentXmpPage} }
+{ \downlink{Polynomial}{PolynomialXmpPage} }
+{ \downlink{Quaternion}{QuaternionXmpPage} }
+{ \downlink{RadixExpansion}{RadixExpansionXmpPage} }
+{ \downlink{RealClosure}{RealClosureXmpPage} }
+{ \downlink{RegularTriangularSet}{RegularTriangularSetXmpPage} }
+{ \downlink{RomanNumeral}{RomanNumeralXmpPage} }
+{ \downlink{Segment}{SegmentXmpPage} }
+{ \downlink{SegmentBinding}{SegmentBindingXmpPage} }
+{ \downlink{Set}{SetXmpPage} }
+{ \downlink{SingleInteger}{SingleIntegerXmpPage} }
+{ \downlink{SparseTable}{SparseTableXmpPage} }
+{ \downlink{SquareMatrix}{SquareMatrixXmpPage} }
+{ \downlink{SquareFreeRegularTriangularSet}{SquareFreeRegularTriangularSetXmpPage} }
+{ \downlink{Stream}{StreamXmpPage} }
+{ \downlink{String}{StringXmpPage} }
+{ \downlink{StringTable}{StringTableXmpPage} }
+{ \downlink{Symbol}{SymbolXmpPage} }
+{ \downlink{Table}{TableXmpPage} }
+{ \downlink{TextFile}{TextFileXmpPage} }
+{ \downlink{TwoDimensionalArray}{TwoDimensionalArrayXmpPage} }
+{ \downlink{UnivariatePolynomial}{UnivariatePolynomialXmpPage} }
+{ \downlink{UniversalSegment}{UniversalSegmentXmpPage} }
+{ \downlink{Vector}{VectorXmpPage} }
+{ \downlink{Void}{VoidXmpPage} }
+{ \downlink{WuWenTsunTriangularSet}{WuWenTsunTriangularSetXmpPage} }
+{ \downlink{XPBWPolynomial}{XPBWPolynomialXmpPage} }
+{ \downlink{XPolynomial}{XPolynomialXmpPage} }
+{ \downlink{XPolynomialRing}{XPolynomialRingXmpPage} }
+{ \downlink{ZeroDimensionalSolvePackage}{ZeroDimensionalSolvePackageXmpPage} }
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{xpbwpoly.ht}
+<<xpbwpoly.ht>>=
+\newcommand{\XPBWPolynomialXmpTitle}{XPBWPolynomial}
+\newcommand{\XPBWPolynomialXmpNumber}{9.88}
+
+@
+\subsection{XPBWPolynomial}
+\label{XPBWPolynomialXmpPage}
+\index{pages!XPBWPolynomialXmpPage!xpbwpoly.ht}
+\index{xpbwpoly.ht!pages!XPBWPolynomialXmpPage}
+\index{XPBWPolynomialXmpPage!xpbwpoly.ht!pages}
+<<xpbwpoly.ht>>=
+\begin{page}{XPBWPolynomialXmpPage}{XPBWPolynomial}
+\beginscroll
+Initialisations
+\xtc{
+}{
+\spadpaste{a:Symbol := 'a \bound{a}}
+}
+\xtc{
+}{
+\spadpaste{b:Symbol := 'b \bound{b}}
+}
+\xtc{
+}{
+\spadpaste{RN    := Fraction(Integer) \bound{RN}}
+}
+\xtc{
+}{
+\spadpaste{word   := OrderedFreeMonoid Symbol \bound{word}}
+}
+\xtc{
+}{
+\spadpaste{lword := LyndonWord(Symbol) \bound{lword}}
+}
+\xtc{
+}{
+\spadpaste{base  := PoincareBirkhoffWittLyndonBasis Symbol \bound{base}}
+}
+\xtc{
+}{
+\spadpaste{dpoly := XDistributedPolynomial(Symbol, RN) \bound{dpoly} \free{RN}}
+}
+\xtc{
+}{
+\spadpaste{rpoly := XRecursivePolynomial(Symbol, RN) \bound{rpoly} \free{RN}}
+}
+\xtc{
+}{
+\spadpaste{lpoly := LiePolynomial(Symbol, RN) \bound{lpoly} \free{RN}}
+}
+\xtc{
+}{
+\spadpaste{poly  := XPBWPolynomial(Symbol, RN) \bound{poly} \free{RN}}
+}
+\xtc{
+}{
+\spadpaste{liste : List lword := LyndonWordsList([a,b], 6) \bound{liste} \free{lword a b }}
+}
+
+Let's make some polynomials
+\xtc{
+}{
+\spadpaste{0$poly \free{poly}}
+}
+\xtc{
+}{
+\spadpaste{1$poly \free{poly}}
+}
+\xtc{
+}{
+\spadpaste{p : poly := a \free{a poly} \bound{p}}
+}
+\xtc{
+}{
+\spadpaste{q : poly := b \free{b poly} \bound{q}}
+}
+\xtc{
+}{
+\spadpaste{pq: poly := p*q \free{p q poly} \bound{pq}}
+}
+\xtc{
+Coerce to distributed polynomial
+}{
+\spadpaste{pq :: dpoly \free{pq dpoly}}
+}
+
+Check some polynomial operations
+\xtc{
+}{
+\spadpaste{mirror pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{ListOfTerms pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{reductum pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{leadingMonomial pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{coefficients pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{leadingTerm pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{degree pq \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{pq4:=exp(pq,4) \bound{pq4} \free{pq}}
+}
+\xtc{
+}{
+\spadpaste{log(pq4,4) - pq \free{pq4 pq} }
+}
+
+Calculations with verification in \axiomType{XDistributedPolynomial}.
+\xtc{
+}{
+\spadpaste{lp1 :lpoly := LiePoly liste.10 \free{liste lpoly} \bound{lp1}}
+}
+\xtc{
+}{
+\spadpaste{lp2 :lpoly := LiePoly liste.11 \free{liste lpoly} \bound{lp2}}
+}
+\xtc{
+}{
+\spadpaste{lp  :lpoly := [lp1, lp2] \free{lp1 lp2 lpoly} \bound{lp}}
+}
+\xtc{
+}{
+\spadpaste{lpd1: dpoly := lp1 \free{lp1 dpoly} \bound{lpd1}}
+}
+\xtc{
+}{
+\spadpaste{lpd2: dpoly := lp2 \free{lp2 dpoly} \bound{lpd2}}
+}
+\xtc{
+}{
+\spadpaste{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1 \free{dpoly lpd1 lpd2} \bound{lpd}}
+}
+\xtc{
+}{
+\spadpaste{lp :: dpoly - lpd \free{lpd dpoly lp}}
+}
+
+Calculations with verification in \axiomType{XRecursivePolynomial}.
+\xtc{
+}{
+\spadpaste{p := 3 * lp \free{lp} \bound{pp}}
+}
+\xtc{
+}{
+\spadpaste{q := lp1 \free{lp1} \bound{qq}}
+}
+\xtc{
+}{
+\spadpaste{pq:= p * q \free{pp qq} \bound{pqpq}}
+}
+\xtc{
+}{
+\spadpaste{pr:rpoly := p :: rpoly \free{rpoly pp} \bound{pr}}
+}
+\xtc{
+}{
+\spadpaste{qr:rpoly := q :: rpoly \free{rpoly qq} \bound{qr}}
+}
+\xtc{
+}{
+\spadpaste{pq :: rpoly - pr*qr \free{pr qr rpoly pqpq} }
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{xpoly.ht}
+<<xpoly.ht>>=
+\newcommand{\XPolynomialXmpTitle}{XPolynomial}
+\newcommand{\XPolynomialXmpNumber}{9.89}
+
+@
+\subsection{XPolynomial}
+\label{XPolynomialXmpPage}
+\index{pages!XPolynomialXmpPage!xpoly.ht.ht}
+\index{xpoly.ht.ht!pages!XPolynomialXmpPage}
+\index{XPolynomialXmpPage!xpoly.ht.ht!pages}
+<<xpoly.ht.ht>>=
+\begin{page}{XPolynomialXmpPage}{XPolynomial}
+\beginscroll
+The \spadtype{XPolynomial} domain constructor implements 
+multivariate polynomials
+whose set of variables is \spadtype{Symbol}.
+These variables do not commute.
+The only parameter of this construtor is 
+the coefficient ring which may be non-commutative.
+However, coefficients and variables commute.
+The representation of the polynomials is recursive.
+The abbreviation for \spadtype{XPolynomial} is \spadtype{XPOLY}.
+
+Other constructors like \spadtype{XPolynomialRing}, 
+\spadtype{XRecursivePolynomial} 
+\spadtype{XDistributedPolynomial},
+\spadtype{LiePolynomial} and
+\spadtype{XPBWPolynomial}
+implement multivariate polynomials
+in non-commutative variables.
+
+We illustrate now some of the facilities of the \spadtype{XPOLY} domain constructor.
+
+
+\xtc{
+Define a polynomial ring over the integers.
+}{
+\spadpaste{poly := XPolynomial(Integer) \bound{poly}}
+}
+
+\xtc{
+Define a first polynomial,
+}{
+\spadpaste{pr: poly := 2*x + 3*y-5  \free{poly} \bound{pr}}
+}
+
+
+\xtc{
+and a second one.
+}{
+\spadpaste{pr2: poly := pr*pr  \free{poly} \bound{pr2}}
+}
+
+\xtc{
+Rewrite {\bf pr} in a distributive way,
+}{
+\spadpaste{pd  := expand pr   \free{pr} \bound{pd}}
+}
+
+\xtc{
+compute its square,
+}{
+\spadpaste{pd2 := pd*pd   \free{pd} \bound{pd2}}
+}
+
+\xtc{
+and checks that:
+}{
+\spadpaste{expand(pr2) - pd2 \free{pr2} \free{pd2}}
+}
+
+
+\xtc{
+We define:
+}{
+\spadpaste{qr :=  pr**3 \free{pr} \bound{qr}}
+}
+
+\xtc{
+and:
+}{
+\spadpaste{qd :=  pd**3 \free{pd} \bound{qd}}
+}
+
+\xtc{
+We truncate {\bf qd} at degree {\bf 3}:
+}{
+\spadpaste{ trunc(qd,2) \free{qd}}
+}
+
+\xtc{
+The same for {\bf qr}:
+}{
+\spadpaste{trunc(qr,2) \free{qr}}
+}
+
+\xtc{
+We define:
+}{
+\spadpaste{Word := OrderedFreeMonoid Symbol \bound{Word}}
+}
+
+\xtc{
+and:
+}{
+\spadpaste{w: Word := x*y**2 \free{Word} \bound{w}}
+}
+
+\xtc{
+The we can compute the right-quotient of {\bf qr} by {\bf r}:
+}{
+\spadpaste{rquo(qr,w) \free{qr} \free{w}}
+}
+
+\xtc{
+and the shuffle-product of {\bf pr} by {\bf r}:
+}{
+\spadpaste{sh(pr,w::poly) \free{pr} \free{w}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{xpr.ht}
+<<xpr.ht>>=
+\newcommand{\XPolynomialRingXmpTitle}{XPolynomialRing}
+\newcommand{\XPolynomialRingXmpNumber}{9.90}
+
+@
+\subsection{XPolynomialRing}
+\label{XPolynomialRingXmpPage}
+\index{pages!XPolynomialRingXmpPage!xpr.ht}
+\index{xpr.ht!pages!XPolynomialRingXmpPage}
+\index{XPolynomialRingXmpPage!xpr.ht!pages}
+<<xpr.ht>>=
+\begin{page}{XPolynomialRingXmpPage}{XPolynomialRing}
+\beginscroll
+The \spadtype{XPolynomialRing} domain constructor implements
+generalized polynomials with coefficients from an arbitrary \spadtype{Ring}
+(not necessarily commutative) and whose exponents are
+words from an arbitrary \spadtype{OrderedMonoid}
+(not necessarily commutative too).
+Thus these polynomials are (finite) linear combinations of words.
+
+This constructor takes two arguments.
+The first one is a \spadtype{Ring}
+and the second is an \spadtype{OrderedMonoid}.
+The abbreviation for \spadtype{XPolynomialRing} is \spadtype{XPR}.
+
+Other constructors like \spadtype{XPolynomial}, 
+\spadtype{XRecursivePolynomial} 
+\spadtype{XDistributedPolynomial},
+\spadtype{LiePolynomial} and
+\spadtype{XPBWPolynomial}
+implement multivariate polynomials
+in non-commutative variables.
+
+We illustrate now some of the facilities of the \spadtype{XPR} domain constructor.
+
+\xtc{
+Define the free ordered monoid generated by the symbols.
+}{
+\spadpaste{Word := OrderedFreeMonoid(Symbol) \bound{Word}}
+}
+
+\xtc{
+Define the linear combinations of these words with integer coefficients.
+}{
+\spadpaste{poly:= XPR(Integer,Word) \free{Word} \bound{poly}}
+}
+
+
+\xtc{
+Then we define a first element from {\bf poly}.
+}{
+\spadpaste{p:poly := 2 * x - 3 * y + 1 \free{poly} \bound{p}}
+}
+
+\xtc{
+And a second one.
+}{
+\spadpaste{q:poly := 2 * x + 1 \free{poly} \bound{q}}
+}
+
+
+\xtc{
+We compute their sum,
+}{
+\spadpaste{p + q  \free{p}\free{q} }
+}
+
+\xtc{
+their product,
+}{
+\spadpaste{p * q  \free{p}\free{q} }
+}
+
+\xtc{
+and see that variables do not commute.
+}{
+\spadpaste{(p +q)^2 -p^2 -q^2 - 2*p*q  \free{p}\free{q} }
+}
+
+
+
+\xtc{
+Now we define a ring of square matrices,
+}{
+\spadpaste{M := SquareMatrix(2,Fraction Integer)  \bound{M}}
+}
+
+\xtc{
+and the linear combinations of words with these  matrices as coefficients.
+}{
+\spadpaste{poly1:= XPR(M,Word) \free{Word} \free{M} \bound{poly1}}
+}
+
+
+\xtc{
+Define a first matrix,
+}{
+\spadpaste{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2] \free{M} \bound{m1}}
+}
+
+\xtc{
+a second one,
+}{
+\spadpaste{m2:M := m1 - 5/4 \free{M} \free{m1} \bound{m2}}
+}
+
+\xtc{
+and a third one.
+}{
+\spadpaste{m3: M := m2**2 \free{M} \free{m2} \bound{m3}}
+}
+
+\xtc{
+Define a polynomial,
+}{
+\spadpaste{pm:poly1   := m1*x + m2*y + m3*z - 2/3 \free{poly1} \free{m1} \free{m2} \free{m3} \bound{pm}}
+}
+
+
+\xtc{
+a second one,
+}{
+\spadpaste{qm:poly1 := pm - m1*x \free{m1} \free{pm} \bound{qm}}
+}
+
+\xtc{
+and the following power.
+}{
+\spadpaste{qm**3 \bound{qm}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{zdsolve.ht}
+<<zdsolve.ht>>=
+\newcommand{\ZeroDimensionalSolvePackageXmpTitle}{ZeroDimensionalSolvePackage}
+\newcommand{\ZeroDimensionalSolvePackageXmpNumber}{9.91}
+
+@
+\subsection{ZeroDimensionalSolvePackage}
+\label{ZeroDimensionalSolvePackageXmpPage}
+\index{pages!ZeroDimensionalSolvePackageXmpPage!zdsolve.ht}
+\index{zdsolve.ht!pages!ZeroDimensionalSolvePackageXmpPage}
+\index{ZeroDimensionalSolvePackageXmpPage!zdsolve.ht!pages}
+<<zdsolve.ht>>=
+\begin{page}{ZeroDimensionalSolvePackageXmpPage}{ZeroDimensionalSolvePackage}
+\beginscroll
+The \spadtype{ZeroDimensionalSolvePackage} package constructor 
+provides operations for computing symbolically the complex or real roots of 
+zero-dimensional algebraic systems.
+
+The package provides {\bf no} multiplicity information (i.e. some returned
+roots may be double or higher) but only distinct roots are returned. 
+
+Complex roots are given by means of univariate representations
+of irreducible regular chains. 
+These representations are computed by the 
+\axiomOpFrom{univariateSolve}{ZeroDimensionalSolvePackage}
+operation (by calling the 
+\spadtype{InternalRationalUnivariateRepresentationPackage} 
+package constructor which does the job).
+
+Real roots are given by means of tuples
+of coordinates lying in the \spadtype{RealClosure} of the coefficient ring.
+They are computed by the \axiomOpFrom{realSolve}{ZeroDimensionalSolvePackage}
+and \axiomOpFrom{positiveSolve}{ZeroDimensionalSolvePackage} operations.
+The former computes all the solutions of the input system with real coordinates
+whereas the later concentrate 
+on the solutions with (strictly) positive coordinates.
+In both cases, the computations 
+are performed by the \spadtype{RealClosure} constructor.
+
+Both computations of complex roots 
+and real roots rely on triangular decompositions.
+These decompositions can be computed in two different ways.
+First, by a applying the \axiomOpFrom{zeroSetSplit}{RegularTriangularSet} 
+operation from the \spadtype{REGSET} domain constructor.
+In that case, no Groebner bases are computed.
+This strategy is used by default.
+Secondly, by applying the \axiomOpFrom{zeroSetSplit}{LexTriangularPackage}
+from \spadtype{LEXTRIPK}.
+To use this later strategy with the operations
+\axiomOpFrom{univariateSolve}{ZeroDimensionalSolvePackage},
+\axiomOpFrom{realSolve}{ZeroDimensionalSolvePackage}
+and \axiomOpFrom{positiveSolve}{ZeroDimensionalSolvePackage} 
+one just needs to use an extra boolean argument.
+
+Note that the way of understanding triangular decompositions 
+is detailed in the example of the \spadtype{RegularTriangularSet}
+constructor.
+
+The \spadtype{ZeroDimensionalSolvePackage} constructor takes three arguments. 
+The first one {\bf R} is the coefficient ring;
+it must belong to the categories
+\spadtype{OrderedRing}, \spadtype{EuclideanDomain},  
+\spadtype{CharacteristicZero}
+and \spadtype{RealConstant}.
+This means essentially that {\bf R} is \spadtype{Integer} or 
+\spadtype{Fraction(Integer)}.
+The second argument {\bf ls} is the list of variables involved 
+in the systems to solve. 
+The third one MUST BE {\bf concat(ls,s)} where
+{\bf s} is an additional symbol used for the univariate representations.
+The abbreviation for \spadtype{ZeroDimensionalSolvePackage} is 
+\spadtype{ZDSOLVE}.
+
+We illustrate now how to use the constructor \spadtype{ZDSOLVE}
+by two examples: the {\em Arnborg and Lazard} system and the 
+{\em L-3} system (Aubry and Moreno Maza).
+Note that the use of this package is also demonstrated in the example
+of the \spadtype{LexTriangularPackage} constructor.
+
+\xtc{
+Define the coefficient ring.
+}{
+\spadpaste{R := Integer \bound{R}}
+}
+
+\xtc{
+Define the lists of variables:
+}{
+\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
+}
+
+\xtc{
+and:
+}{
+\spadpaste{ls2 : List Symbol := [x,y,z,t,new()$Symbol] \bound{ls2}}
+}
+
+\xtc{
+Call the package:
+}{
+\spadpaste{pack := ZDSOLVE(R,ls,ls2) \free{ls} \free{ls2} \free{R} \bound{pack}}
+}
+
+\xtc{
+Define a polynomial system (Arnborg-Lazard)
+}{
+\spadpaste{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z \bound{p1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z \bound{p2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1 \bound{p3}}
+}
+\xtc{
+}{
+\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
+}
+Note that these polynomials do not involve the variable {\bf t};
+we will use it in the second example.
+
+\xtc{
+First compute a decomposition into regular chains 
+(i.e. regular triangular sets).
+}{
+\spadpaste{triangSolve(lp)$pack \free{lp} \free{pack}}
+}
+
+We can see easily from this decomposition (consisting of a single
+regular chain) that the input system has 20 complex roots.
+
+\xtc{
+Then we compute a univariate representation of this regular chain.
+}{
+\spadpaste{univariateSolve(lp)$pack \free{lp} \free{pack}}
+}
+
+We see that the zeros of our regular chain are split into three components.
+This is due to the use of univariate polynomial factorization.
+
+Each of these components consist of two parts.
+The first one is an irreducible univariate polynomial {\bf p(?)} which defines
+a simple algebraic extension of the field of fractions of {\bf R}.
+The second one consists of multivariate polynomials {\bf pol1(x,\%A)},
+{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)}.
+Each of these polynomials involve two variables: one is an indeterminate
+{\bf x}, {\bf y} or {\bf z}
+of the input system {\bf lp} and the 
+other is {\bf \%A} which represents any root of {\bf p(?)}.
+Recall that this {\bf \%A} is the last element of the third parameter of 
+\spadtype{ZDSOLVE}.
+Thus any complex root {\bf ?} of {\bf p(?)} 
+leads to a solution of the input system {\bf lp} 
+by replacing {\bf \%A} by this {\bf ?} in {\bf pol1(x,\%A)},
+{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)}.
+Note that the polynomials {\bf pol1(x,\%A)},
+{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)} have degree one 
+w.r.t. {\bf x}, {\bf y} or {\bf z} respectively.
+This is always the case for all univariate representations.
+Hence the operation {\bf univariateSolve} replaces a
+system of multivariate polynomials by a list of univariate
+polynomials, what justifies its name.
+Another example of univariate representations illustrates
+the \spadtype{LexTriangularPackage} package constructor.
+
+\xtc{
+We now compute the solutions with real coordinates:
+}{
+\spadpaste{lr := realSolve(lp)$pack \free{lp} \free{pack} \bound{lr}}
+}
+
+\xtc{
+The number of real solutions for the input system is:
+}{
+\spadpaste{\# lr \free{lr}}
+}
+
+Each of these real solutions is given by a 
+list of elements in  \spadtype{RealClosure(R)}.
+In these 8 lists, the first element is a value of {\bf z}, 
+the second of {\bf y} and the last of {\bf x}.
+This is logical since by setting the list of variables of the package
+to {\bf [x,y,z,t]} we mean that the elimination ordering on the
+variables is {\bf t < z < y < x }.
+Note that each system treated by the \spadtype{ZDSOLVE} package constructor
+needs only to be zero-dimensional w.r.t. the variables involved in the system it-self
+and not necessarily w.r.t. all the variables used to define the package.
+
+\xtc{
+We can approximate these real numbers as follows. 
+This computation takes between 30 sec. and 5 min, depending on your machine.
+}{
+\spadpaste{[[approximate(r,1/1000000) for r in point] for point in lr] \free{lr}}
+}
+
+\xtc{
+We can also concentrate on the solutions with real (strictly) positive coordinates:
+}{
+\spadpaste{lpr := positiveSolve(lp)$pack \free{lp} \free{pack} \bound{lpr}}
+}
+
+Thus we have checked that the input system has no solution with strictly positive coordinates.
+
+
+\xtc{
+Let us define another polynomial system ({\em L-3}).
+}{
+\spadpaste{f0 := x**3 + y + z + t- 1 \bound{f0}}
+}
+\xtc{
+}{
+\spadpaste{f1 := x + y**3 + z + t -1 \bound{f1}}
+}
+\xtc{
+}{
+\spadpaste{f2 := x + y + z**3 + t-1 \bound{f2}}
+}
+\xtc{
+}{
+\spadpaste{f3 := x + y + z + t**3 -1 \bound{f3}}
+}
+\xtc{
+}{
+\spadpaste{lf := [f0, f1, f2, f3] \free{f0} \free{f1} \free{f2} \free{f3} \bound{lf}}
+}
+
+
+\xtc{
+First compute a decomposition into regular chains 
+(i.e. regular triangular sets).
+}{
+\spadpaste{lts := triangSolve(lf)$pack \free{lf} \free{pack} \bound{lts}}
+}
+
+
+\xtc{
+Then we compute a univariate representation.
+}{
+\spadpaste{univariateSolve(lf)$pack \free{lf} \free{pack}}
+}
+
+Note that this computation is made from the input system {\bf lf}.
+\xtc{
+However it is possible to reuse a pre-computed regular chain as follows:
+}{
+\spadpaste{ts := lts.1 \free{lts} \bound{ts}}
+}
+\xtc{
+}{
+\spadpaste{univariateSolve(ts)$pack \free{ts} \free{pack}}
+}
+\xtc{
+}{
+\spadpaste{realSolve(ts)$pack  \free{ts} \free{pack}}
+}
+
+\xtc{
+We compute now the full set of points with real coordinates:
+}{
+\spadpaste{lr2 := realSolve(lf)$pack \free{lf} \free{pack}  \bound{lr2}}
+}
+
+
+\xtc{
+The number of real solutions for the input system is:
+}{
+\spadpaste{\#lr2 \free{lr2}}
+}
+Another example of computation of real solutions illustrates
+the \spadtype{LexTriangularPackage} package constructor.
+
+\xtc{
+We concentrate now on the solutions with real (strictly) positive coordinates:
+}{
+\spadpaste{lpr2 := positiveSolve(lf)$pack \free{lf} \free{pack} \bound{lpr2}}
+}
+
+\xtc{
+Finally, we approximate the coordinates of this point with 20 exact digits:
+}{
+\spadpaste{[approximate(r,1/10**21)::Float for r in lpr2.1] \free{lpr2}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{zlindep.ht}
+<<zlindep.ht>>=
+\newcommand{\IntegerLinearDependenceXmpTitle}{IntegerLinearDependence}
+\newcommand{\IntegerLinearDependenceXmpNumber}{9.35}
+
+@
+\subsection{IntegerLinearDependence}
+\label{IntegerLinearDependenceXmpPage}
+\index{pages!IntegerLinearDependenceXmpPage!zlindep.ht}
+\index{zlindep.ht!pages!IntegerLinearDependenceXmpPage}
+\index{IntegerLinearDependenceXmpPage!zlindep.ht!pages}
+<<zlindep.ht>>=
+\begin{page}{IntegerLinearDependenceXmpPage}{IntegerLinearDependence}
+\beginscroll
+
+The elements \texht{$v_1, \dots,v_n$}{\spad{v1,...,vn}}
+of a module \spad{M} over a ring \spad{R} are
+said to be {\it linearly dependent over \spad{R}} if there exist
+\texht{$c_1,\dots,c_n$}{\spad{c1, ..., cn}} in \spad{R},
+not all \smath{0},
+such that 
+\texht{$c_1 v_1 + \dots c_n v_n = 0$}{\spad{c1*v1 + ... + cn*vn = 0}}.
+If such \texht{$c_i$}{\spad{ci}}'s exist,
+they form what is called a {\it linear dependence
+relation over \spad{R}} for the \texht{$v_i$}{\spad{vi}}'s.
+
+The package \spadtype{IntegerLinearDependence} provides functions
+for testing whether some elements of a module over the integers are
+linearly dependent over the integers, and to find the linear
+dependence relations, if any.
+%
+\xtc{
+Consider the domain of two by two square matrices with integer entries.
+}{
+\spadpaste{M := SQMATRIX(2,INT) \bound{M}}
+}
+%
+%
+\xtc{
+Now create three such matrices.
+}{
+\spadpaste{m1: M := squareMatrix matrix [[1, 2], [0, -1]] \free{M}\bound{m1}}
+}
+\xtc{
+}{
+\spadpaste{m2: M := squareMatrix matrix [[2, 3], [1, -2]] \free{M}\bound{m2}}
+}
+\xtc{
+}{
+\spadpaste{m3: M := squareMatrix matrix [[3, 4], [2, -3]] \free{M}\bound{m3}}
+}
+%
+%
+\xtc{
+This tells you whether \spad{m1}, \spad{m2} and \spad{m3} are linearly
+dependent over the integers.
+}{
+\spadpaste{linearlyDependentOverZ? vector [m1, m2, m3] \free{m1 m2 m3}}
+}
+%
+%
+\xtc{
+Since they are linearly dependent, you can ask for the dependence
+relation.
+}{
+\spadpaste{c := linearDependenceOverZ vector [m1, m2, m3] \free{m1 m2 m3}\bound{c}}
+}
+%
+%
+\xtc{
+This means that the following linear combination should be \spad{0}.
+}{
+\spadpaste{c.1 * m1 + c.2 * m2 + c.3 * m3 \free{c m1 m2 m3}}
+}
+%
+When a given set of elements are linearly dependent over \spad{R}, this
+also means that at least one of them can be rewritten as a linear
+combination of the others with coefficients in the quotient field of
+\spad{R}.
+%
+\xtc{
+To express a given element in terms of other elements, use the operation
+\spadfunFrom{solveLinearlyOverQ}{IntegerLinearDependence}.
+}{
+\spadpaste{solveLinearlyOverQ(vector [m1, m3], m2) \free{m1 m2 m3}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Pages (ug.ht)}
+DO NOT MODIFY THIS FILE BY HAND !! Created by chapmenu.awk.
+\section{Users Guide}
+\label{UsersGuidePage}
+\begin{itemize}
+\item ugWhatsNewTwoTwoPage \ref{ugWhatsNewTwoTwoPage} on 
+page~\pageref{ugWhatsNewTwoTwoPage}
+\item ugIntroPage \ref{ugIntroPage} on page~\pageref{ugIntroPage}
+\item ugTypesPage \ref{ugTypesPage} on page~\pageref{ugTypesPage}
+\item ugHyperPage \ref{ugHyperPage} on page~\pageref{ugHyperPage}
+\item ugInOutPage \ref{ugInOutPage} on page~\pageref{ugInOutPage}
+\item ugLangPage \ref{ugLangPage} on page~\pageref{ugLangPage}
+\item ugUserPage \ref{ugUserPage} on page~\pageref{ugUserPage}
+\item ugGraphPage \ref{ugGraphPage} on page~\pageref{ugGraphPage}
+\item ugProblemPage \ref{ugProblemPage} on page~\pageref{ugProblemPage}
+\item ExamplesExposedPage \ref{ExamplesExposedPage} on 
+page~\pageref{ExamplesExposedPage}
+\item ugIntProgPage \ref{ugIntProgPage} on page~\pageref{ugIntProgPage}
+\item ugPackagesPage \ref{ugPackagesPage} on page~\pageref{ugPackagesPage}
+\item ugCategoriesPage \ref{ugCategoriesPage} on 
+page~\pageref{ugCategoriesPage}
+\item ugDomainsPage \ref{ugDomainsPage} on page~\pageref{ugDomainsPage}
+\item ugBrowsePage \ref{ugBrowsePage} on page~\pageref{ugBrowsePage}
+\item ugWhatsNewPage \ref{ugWhatsNewPage} on page~\pageref{ugWhatsNewPage}
+\item ugSysCmdPage \ref{ugSysCmdPage} on page~\pageref{ugSysCmdPage}
+\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on 
+page~\pageref{ugAppGraphicsPage}
+\end{itemize}
+\index{pages!UsersGuidePage!ug.ht}
+\index{ug.ht!pages!UsersGuidePage}
+\index{UsersGuidePage!ug.ht!pages}
+<<ug.ht>>=
+\begin{page}{UsersGuidePage}{Users Guide}
+This is the table of contents for the Users Guide.
+Click on any item below to see that section.
+\beginscroll
+\indent{3}
+\beginmenu
+\menudownlink{{0. What's New in Axiom Version 2.2}}{ugWhatsNewTwoTwoPage}
+\endmenu
+\indent{0}
+Part I.   Basic Features of Axiom
+\indent{3}
+\beginmenu
+\menudownlink{{1. An Overview of Axiom}}{ugIntroPage}
+\menudownlink{{2. Using Types and Modes}}{ugTypesPage}
+\menudownlink{{3. Using \HyperName{}}}{ugHyperPage}
+\menudownlink{{4. Input Files and Output Styles}}{ugInOutPage}
+\menudownlink{{5. Introduction to the Axiom Interactive Language}}{ugLangPage}
+\menudownlink{{6. User-Defined Functions, Macros and Rules}}{ugUserPage}
+\menudownlink{{7. Graphics}}{ugGraphPage}
+\endmenu
+\indent{0}
+Part II.  Advanced Problem Solving and Examples
+\indent{3}
+\beginmenu
+\menudownlink{{8. Advanced Problem Solving}}{ugProblemPage}
+\menudownlink{{9. Some Examples for Domains and Packages}}{ExamplesExposedPage}
+\endmenu
+\indent{0}
+Part III. Advanced Programming in Axiom
+\indent{3}
+\beginmenu
+\menudownlink{{10. Interactive Programming}}{ugIntProgPage}
+\menudownlink{{11. Packages}}{ugPackagesPage}
+\menudownlink{{12. Categories}}{ugCategoriesPage}
+\menudownlink{{13. Domains}}{ugDomainsPage}
+\menudownlink{{14. Browse}}{ugBrowsePage}
+\menudownlink{{15. What's New in Axiom Version 2.0}}{ugWhatsNewPage}
+\endmenu
+\indent{0}
+Appendices.
+\indent{3}
+\beginmenu
+\menudownlink{{A. Axiom System Commands}}{ugSysCmdPage}
+\menudownlink{{F. Programs for Axiom Images}}{ugAppGraphicsPage}
+\menudownlink{{G. Glossary}}{GlossaryPage}
+\endmenu
+\indent{0}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 0 (ug00.ht)}
+<<ug00.ht>>=
+\newcommand{\ugWhatsNewTwoTwoTitle}{What's New in Axiom Version 2.2}
+\newcommand{\ugWhatsNewTwoTwoNumber}{0.}
+
+@
+\section{What's New in Axiom Version 2.2}
+\label{ugWhatsNewTwoTwoPage}
+\begin{itemize}
+\item ugTwoTwoAldorPage \ref{ugTwoTwoAldorPage} on
+page~\pageref{ugTwoTwoAldorPage}
+\item ugTwoTwoPolynomialsPage \ref{ugTwoTwoPolynomialsPage} on
+page~\pageref{ugTwoTwoPolynomialsPage}
+\item ugTwoTwoHyperdocPage \ref{ugTwoTwoHyperdocPage} on
+page~\pageref{ugTwoTwoHyperdocPage}
+\item ugTwoTwoNAGLinkPage \ref{ugTwoTwoNAGLinkPage} on
+page~\pageref{ugTwoTwoNAGLinkPage}
+\item ugTwoTwoCCLPage \ref{ugTwoTwoCCLPage} on
+page~\pageref{ugTwoTwoCCLPage}
+\end{itemize}
+\index{pages!ugWhatsNewTwoTwoPage!ug00.ht}
+\index{ug00.ht!pages!ugWhatsNewTwoTwoPage}
+\index{ugWhatsNewTwoTwoPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugWhatsNewTwoTwoPage}{0. What's New in Axiom Version 2.2}
+\beginscroll
+
+\beginmenu
+    \menudownlink{{0.1. \axiomxl{} compiler - Enhancements and Additions}}
+{ugTwoTwoAldorPage}
+    \menudownlink{{0.2. New polynomial domains and algorithms}}
+{ugTwoTwoPolynomialsPage}
+    \menudownlink{{0.3. Enhancements to HyperDoc and Graphics}}
+{ugTwoTwoHyperdocPage}
+    \menudownlink{{0.4. Enhancements to NAGLink}}{ugTwoTwoNAGLinkPage}
+    \menudownlink{{0.5. Enhancements to the Lisp system}}{ugTwoTwoCCLPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug00.ht>>=
+\newcommand{\ugTwoTwoAldorTitle}{\axiomxl{} compiler - Enhancements and Additions}
+\newcommand{\ugTwoTwoAldorNumber}{0.1.}
+
+@
+\section{Aldor compiler - Enhancements and Additions}
+\label{ugTwoTwoAldorPage}
+\index{pages!ugTwoTwoAldorPage!ug00.ht}
+\index{ug00.ht!pages!ugTwoTwoAldorPage}
+\index{ugTwoTwoAldorPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugTwoTwoAldorPage}{0.1. \axiomxl{} compiler - Enhancements and Additions}
+\beginscroll
+
+Numerous bug fixes and improvements have been implemented in version 1.1.12
+of \axiomxl{} which is included in this release. You may also notice the name
+{\it Aldor} being used when referring to \axiomxl{}.
+
+The format of {\bf .ao} files has changed somewhat so you need
+to recompile your {\bf .as} source files.
+
+An updated User's Guide is included for on-line use. We provide
+TeX {\bf .dvi} format (including hyper-references), Acrobat {\bf .pdf}
+format, PostScript {\bf .ps} format and plain ASCII {bf .txt}. 
+An up-to-date {\bf .dvi}
+viewer should be able to allow you to follow the cross-references.
+These files can be found in 
+{\bf \env{AXIOM}/compiler/doc/axlugII.*}.
+
+An exception mechanism has been implemented. You can now throw and 
+catch exceptions which are fully-fledged domains that can carry information.
+See Chapter 31 in the on-line guide for details.
+
+Support for linking with Fortran-77 code has been added. You can call
+Fortran-77 code from {\it Aldor}  and vice-versa. See Chapter 32
+in the on-line guide for details.
+
+The \spad{ref} keyword has been added. You must use \spad{_ref} to 
+enable use as an identifier.
+
+A generic configurable C compiler and linker driver i{\bf unicl} has been 
+implemented. You can now select C compiler and linker options with
+greater ease and you can give names to specific configurations. 
+See Chapter 28 in the on-line guide for details.
+
+There is now support for accessing IEEE floating-point rounding modes
+and exception flags. You must ensure however that your C compiler 
+and linker will respect the IEEE standard by enabling the appropriate
+options through {\bf unicl}. 
+See BasicIeeeControlPackage (26.7) in the on-line guide.
+
+Special runtime libraries ({\bf libfoam-gmp.a}) have been prepared to enable
+a drop-in replacement of Aldor's big-integer arithmetic with the GNU gmp
+big-integer library. The executable script {\bf axiomxl.gmp} (in the same place
+as {\bf axiomxl}) expects the {\bf GmpDir} environment variable to be set 
+to the directory where a compiled GNU gmp library resides ({\bf libgmp.a}) and 
+arranges for the appropriate libraries to be linked in when generating 
+a stand-alone executable. 
+
+The language-defined type TrailingArray has been introduced. See 
+TrailingArray (13.7) in the on-line guide.
+
+The supplied library {\bf libaxllib.al}, supporting stand-alone programs, 
+has been updated. Automatically
+generated documentation can be found in Chapters 25 and 26 of the on-line
+guide.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug00.ht>>=
+\newcommand{\ugTwoTwoPolynomialsTitle}{New polynomial domains and algorithms}
+\newcommand{\ugTwoTwoPolynomialsNumber}{0.2.}
+
+@
+\section{New polynomial domains and algorithms}
+\label{ugTwoTwoPolynomialsPage}
+\index{pages!ugTwoTwoPolynomialsPage!ug00.ht}
+\index{ug00.ht!pages!ugTwoTwoPolynomialsPage}
+\index{ugTwoTwoPolynomialsPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugTwoTwoPolynomialsPage}{0.2. New polynomial domains and algorithms}
+\beginscroll
+
+Univariate polynomial factorisation over the integers has been 
+enhanced by updates to the \spadtype{GaloisGroupFactorizer} type
+and friends from Frederic Lehobey (Frederic.Lehobey@lifl.fr, University of 
+Lille I, France).
+
+The package constructor \spadtype{PseudoRemainderSequence}
+provides efficient algorithms by Lionel Ducos 
+(Lionel.Ducos@mathlabo.univ-poitiers.fr, University of Poitiers, France) 
+for computing sub-resultants.
+This leads to a speed up in many places in Axiom where 
+sub-resultants are computed (polynomial system solving, 
+algebraic factorization, integration).
+
+Based on this package, the domain constructor 
+\spadtype{NewSparseUnivariatePolynomial}
+extends the constructor \spadtype{SparseUnivariatePolynomial}.
+In a similar way, the \spadtype{NewSparseMultivariatePolynomial} extends
+the constructor \spadtype{SparseUnivariatePolynomial};
+it also provides some additional operations related 
+to polynomial system solving by means of triangular sets.
+
+Several domain constructors implement
+regular triangular sets (or regular chains).
+Among them \spadtype{RegularTriangularSet}
+and \spadtype{SquareFreeRegularTriangularSet}.
+They also implement an algorithm by Marc Moreno Maza (marc@nag.co.uk, NAG)
+for computing triangular decompositions of polynomial systems.
+This method is refined in the package \spadtype{LazardSetSolvingPackage}
+in order to produce decompositions by means of Lazard triangular sets.
+For the case of polynomial systems with finitely many solutions,
+these decompositions can also be computed by
+the package \spadtype{LexTriangularPackage}.
+
+The domain constructor \spadtype{RealClosure} by Renaud Rioboo
+(Renaud.Rioboo@lip6.fr, University of Paris 6, France)
+provides the real closure of an ordered field.
+The implementation is based on interval arithmetic.
+Moreover, the design of this constructor and its related 
+packages allows an easy use of other codings for real algebraic numbers.
+
+Based on triangular decompositions and the \spadtype{RealClosure} constructor,
+the package \spadtype{ZeroDimensionalSolvePackage}
+provides operations for computing symbolically the real or complex roots
+of polynomial systems with finitely many solutions.
+
+Polynomial arithmetic with non-commutative variables 
+has been improved too by a contribution of Michel Petitot
+(Michel.Petitot@lifl.fr, University of Lille I, France).
+The domain constructors \spadtype{XRecursivePolynomial}
+and \spadtype{XDistributedPolynomial} provide
+recursive and distributed representations for these polynomials.
+They are the non-commutative equivalents for
+the \spadtype{SparseMultivariatePolynomial} 
+and \spadtype{DistributedMultivariatePolynomial} constructors.
+The constructor \spadtype{LiePolynomial} implement Lie
+polynomials in the Lyndon basis.
+The constructor \spadtype{XPBWPolynomial} manage polynomials
+with non-commutative variables in
+the \texht{Poincar\'e}{Poincare\space{-1}'}-Birkhoff-Witt basis from the Lyndon basis.
+This allows to compute in the Lie Group associated with a
+free nilpotent Lie algebra by using the \spadtype{LieExponentials}
+domain constructor.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug00.ht>>=
+\newcommand{\ugTwoTwoHyperdocTitle}{Enhancements to HyperDoc and Graphics}
+\newcommand{\ugTwoTwoHyperdocNumber}{0.3.}
+
+@
+\section{Enhancements to HyperDoc and Graphics}
+\label{ugTwoTwoHyperdocPage}
+\index{pages!ugTwoTwoHyperdocPage!ug00.ht}
+\index{ug00.ht!pages!ugTwoTwoHyperdocPage}
+\index{ugTwoTwoHyperdocPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugTwoTwoHyperdocPage}{0.3. Enhancements to HyperDoc and Graphics}
+\beginscroll
+
+From this version of Axiom onwards, the pixmap format used to save graphics
+images in color and to display them in HyperDoc has been changed to the 
+industry-standard XPM format. See {\tt ftp://koala.inria.fr/pub/xpm}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug00.ht>>=
+\newcommand{\ugTwoTwoNAGLinkTitle}{Enhancements to NAGLink}
+\newcommand{\ugTwoTwoNAGLinkNumber}{0.4.}
+
+@
+\section{Enhancements to NAGLink}
+\label{ugTwoTwoNAGLinkPage}
+\index{pages!ugTwoTwoNAGLinkPage!ug00.ht}
+\index{ug00.ht!pages!ugTwoTwoNAGLinkPage}
+\index{ugTwoTwoNAGLinkPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugTwoTwoNAGLinkPage}{0.4. Enhancements to NAGLink}
+\beginscroll
+
+This version of Axiom incorporates the Axiom/NAG Numerical Analyst (ANNA)
+software developed in the University of Bath. ANNA is an expert system which 
+uses Axiom algebra functionality in choosing the most appropriate NAG Fortran Library
+routine for a particular problem. Documentation is provided on-line on the main HyperDoc page.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug00.ht>>=
+\newcommand{\ugTwoTwoCCLTitle}{Enhancements to the Lisp system}
+\newcommand{\ugTwoTwoCCLNumber}{0.5.}
+
+@
+\section{Enhancements to the Lisp system}
+\label{ugTwoTwoCCLPage}
+\index{pages!ugTwoTwoCCLPage!ug00.ht}
+\index{ug00.ht!pages!ugTwoTwoCCLPage}
+\index{ugTwoTwoCCLPage!ug00.ht!pages}
+<<ug00.ht>>=
+\begin{page}{ugTwoTwoCCLPage}{0.5. Enhancements to the Lisp system}
+\beginscroll
+
+In this version of Axiom, certain Library operations have been
+accelerated by converting their Lisp implementations into kernel
+operations implemented directly in C. Here is a list of the
+accelerated operations. The given names encode the abbreviated type
+the operation comes from, the name of the operation and, in the case
+of exported functions, an encoded signature and numerical index.
+
+\begin{verbatim}
+|A1AGG-;=;2AB;28|
+|A1AGG-;copy;2A;19|
+|A1AGG-;sort!;M2A;2|
+|ABELGRP-;*;Nni2S;3|
+|ABELGRP-;-;3S;1|
+|ABELMON-;*;Pi2S;2|
+|ABELMON-;zero?;SB;1|
+|AGG-;empty?;SB;3|
+|AGG-;size?;SNniB;6|
+|ALIST;keys;$L;6|
+|ALIST;search;Key$U;15|
+|ARR2CAT-;copy;2S;10|
+|BOP;<;2$B;29|
+|BOP;=;2$B;27|
+|BOP;has?;$SB;9|
+|BOP;is?;$SB;1|
+|BOP;name;$S;2|
+|BOP;properties;$Al;3|
+|BOP;property;$SU;7|
+|BOP;weight;$Nni;28|
+|COMPCAT-;*;R2S;18|
+|COMPCAT-;-;2S;17|
+|COMPCAT-;=;2SB;15|
+|COMPCAT-;exquo;SRU;46|
+|COMPCAT-;recip;SU;48|
+|COMPCAT-;rem;3S;53|
+|COMPCAT-;unitNormal;SR;49|
+|COMPLEX;*;3$;10|
+|COMPLEX;+;3$;9|
+|COMPLEX;coerce;R$;5|
+|COMPLEX;exquo;2$U;11|
+|COMPLEX;one?;$B;4|
+|COMPLEX;zero?;$B;3|
+|DIRPROD;<;2$B;18|
+|DIRPROD;subtractIfCan;2$U;14|
+|ELAGG-;removeDuplicates;2A;12|
+|ELTAGG-;qelt;SDomIm;1|
+|ELTAGG-;qsetelt!;SDom2Im;2|
+|EUCDOM-;gcd;3S;5|
+|EUCDOM-;unitNormalizeIdealElt|
+|EXPR;*;3$;11|
+|EXPR;+;3$;12|
+|EXPR;-;2$;8|
+|EXPR;/;3$;14|
+|EXPR;=;2$B;21|
+|EXPR;algkernels!0|
+|EXPR;algkernels|
+|EXPR;coerce;I$;10|
+|EXPR;coerce;Smp$;24|
+|EXPR;commonk0|
+|EXPR;commonk|
+|EXPR;denom;$Smp;23|
+|EXPR;numer;$Smp;22|
+|EXPR;reduc|
+|EXPR;zero?;$B;7|
+|FACUTIL;lowerPolynomial;SupSup;1|
+|FAMR-;coefficients;SL;4|
+|FAMR-;ground;SR;2|
+|FFP;*;3$;21|
+|FFP;+;3$;22|
+|FFP;-;3$;23|
+|FFP;=;2$B;24|
+|FIELD-;/;3S;11|
+|FIELD-;inv;2S;4|
+|FLAGG-;sort!;2A;8|
+|FLAGG-;sort;M2A;6|
+|FLASORT;QuickSort|
+|FLASORT;partition|
+|FLASORT;quickSort;M2V;1|
+|FM;*;R2$;1|
+|FRAC;*;3$;18|
+|FRAC;*;I2$;19|
+|FRAC;+;3$;16|
+|FRAC;=;2$B;22|
+|FRAC;cancelGcd|
+|FRAC;coerce;S$;1|
+|FRAC;normalize|
+|FRAC;one?;$B;23|
+|FRAC;recip;$U;13|
+|FRAC;zero?;$B;2|
+|FSAGG-;brace;LA;3|
+|GDMP;univariate;$OvlSup;21|
+|HDP;<;2$B;1|
+|IARRAY1;#;$Nni;1|
+|IARRAY1;elt;$IS;16|
+|IARRAY1;fill!;$S$;2|
+|IARRAY1;map;M3$;8|
+|IARRAY1;maxIndex;$I;13|
+|IARRAY1;minIndex;$I;3|
+|IARRAY1;new;NniS$;5|
+|IARRAY1;qelt;$IS;14|
+|IARRAY1;qsetelt!;$I2S;15|
+|IARRAY1;setelt;$I2S;17|
+|IDPAM;+;3$;4|
+|IDPAM;map;M2$;7|
+|IDPAM;monomial;AS$;6|
+|IDPO;=;2$B;1|
+|IFARRAY;#;$Nni;4|
+|IFARRAY;concat!;$S$;21|
+|IFARRAY;elt;$IS;17|
+|IFARRAY;empty;$;3|
+|IFARRAY;growAndFill|
+|IFARRAY;growWith|
+|IFARRAY;maxIndex;$I;6|
+|IFARRAY;minIndex;$I;7|
+|IFARRAY;new;NniS$;8|
+|IFARRAY;removeDuplicates!;2$;30|
+|IFARRAY;setelt;$I2S;18|
+|IIARRAY2;elt;$2IR;11|
+|IIARRAY2;empty?;$B;1|
+|IIARRAY2;maxColIndex;$I;7|
+|IIARRAY2;maxRowIndex;$I;6|
+|IIARRAY2;minColIndex;$I;5|
+|IIARRAY2;minRowIndex;$I;4|
+|IIARRAY2;ncols;$Nni;9|
+|IIARRAY2;nrows;$Nni;8|
+|IIARRAY2;qelt;$2IR;10|
+|IIARRAY2;qsetelt!;$2I2R;12|
+|ILIST;concat!;3$;25|
+|ILIST;copy;2$;20|
+|ILIST;empty;$;6|
+|ILIST;first;$S;4|
+|ILIST;member?;S$B;24|
+|ILIST;mergeSort|
+|ILIST;minIndex;$I;18|
+|ILIST;removeDuplicates!;2$;26|
+|ILIST;rest;$Nni$;19|
+|ILIST;sort!;M2$;27|
+|ILIST;split!;$I$;29|
+|IMATLIN;rowEchelon;2M;3|
+|INS-;symmetricRemainder;3S;27|
+|INT;exquo;2$U;44|
+|INT;one?;$B;2|
+|INT;positiveRemainder;3$;23|
+|INT;unitNormal;$R;47|
+|INTDOM-;unitCanonical;2S;2|
+|ISTRING;<;2$B;6|
+|KDAGG-;key?;KeySB;1|
+|KERNEL;<;2$B;14|
+|KERNEL;=;2$B;13|
+|KERNEL;B2Z|
+|KERNEL;argument;$L;6|
+|KERNEL;operator;$Bo;5|
+|KERNEL;position;$Nni;7|
+|KERNEL;triage|
+|LO;-;2$;3|
+|LO;=;2$B;4|
+|LSAGG-;<;2AB;25|
+|LSAGG-;reduce;MA2S;16|
+|LSAGG-;select!;M2A;5|
+|MATCAT-;*;3S;29|
+|MATCAT-;*;S2Col;32|
+|MDDFACT;reduction!0|
+|MDDFACT;reduction|
+|MODRING;reduce;RMod$;6|
+|MODRING;zero?;$B;10|
+|MONOID-;one?;SB;2|
+|NNI;subtractIfCan;2$U;3|
+|NSMP;mvar;$VarSet;5|
+|OVAR;<;2$B;10|
+|PERMGRP;inv|
+|PERMGRP;orbitWithSvc|
+|PERMGRP;testIdentity|
+|PERMGRP;times|
+|PGCD;better|
+|PGCD;gcd;3P;15|
+|PGCD;gcdTermList|
+|POLYCATQ;variables;FL;5|
+|PR;*;3$;20|
+|PR;addm!|
+|PR;coerce;R$;12|
+|PR;degree;$E;4|
+|PR;leadingCoefficient;$R;6|
+|PR;reductum;2$;8|
+|PRIMARR;#;$Nni;1|
+|PRIMARR;fill!;$S$;9|
+|PRIMARR;new;NniS$;4|
+|PRTITION;<;2$B;5|
+|REPSQ;expt;SPiS;1|
+|RING-;coerce;IS;1|
+|SAE;*;3$;15|
+|SAE;+;3$;13|
+|SAE;-;2$;14|
+|SAE;=;2$B;12|
+|SAE;reduce;UP$;11|
+|SCACHE;enterInCache;SMS;5|
+|SET;construct;L$;19|
+|SET;empty;$;4|
+|SGROUP-;**;SPiS;1|
+|SINT;zero?;$B;33|
+|SMP;*;3$;29|
+|SMP;*;R2$;25|
+|SMP;+;3$;26|
+|SMP;-;2$;23|
+|SMP;=;2$B;28|
+|SMP;coerce;R$;20|
+|SMP;coerce;VarSet$;7|
+|SMP;exquo;2$U;35|
+|SMP;exquo;2$U;36|
+|SMP;gcd;3$;41|
+|SMP;gcd;3$;44|
+|SMP;gcd;3$;48|
+|SMP;gcd;3$;51|
+|SMP;ground?;$B;15|
+|SMP;leadingCoefficient;$R;73|
+|SMP;mainVariable;$U;59|
+|SMP;one?;$B;4|
+|SMP;retract;$R;55|
+|SMP;unitNormal;$R;31|
+|SMP;variables;$L;58|
+|SMP;zero?;$B;3|
+|STAGG-;c2|
+|STAGG-;concat;3A;7|
+|STAGG-;elt;AIS;5|
+|STAGG-;first;ANniA;3|
+|STREAM2;map;MSS;2|
+|STREAM2;mapp!0|
+|STREAM2;mapp|
+|STREAM;empty;$;33|
+|STREAM;lazyEval|
+|STREAM;setfrst!|
+|STREAM;setrst!|
+|STTAYLOR;+;3S;2|
+|SUP;exquo;2$U;19|
+|SUP;exquo;2$U;20|
+|SUP;fmecg;$NniR2$;21|
+|SUP;ground?;$B;3|
+|SUP;monicDivide;2$R;28|
+|URAGG-;tail;2A;16|
+|ZMOD;*;3$;30|
+|ZMOD;+;3$;32|
+|ZMOD;-;2$;36|
+|ZMOD;-;3$;33|
+\end{verbatim}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 1 (ug01.ht)}
+<<ug01.ht>>=
+\newcommand{\ugIntroTitle}{An Overview of Axiom}
+\newcommand{\ugIntroNumber}{1.}
+
+@
+\section{An Overview of Axiom}
+\label{ugIntroPage}
+\begin{itemize}
+\item ugIntroTypoPage \ref{ugIntroTypoPage} on
+page~\pageref{ugIntroTypoPage}
+\item ugIntroStartPage \ref{ugIntroStartPage} on
+page~\pageref{ugIntroStartPage}
+\item ugIntroTypoPage \ref{ugIntroTypoPage} on
+page~\pageref{ugIntroTypoPage}
+\item ugIntroExpressionsPage \ref{ugIntroExpressionsPage} on
+page~\pageref{ugIntroExpressionsPage}
+\item ugIntroGraphicsPage \ref{ugIntroGraphicsPage} on
+page~\pageref{ugIntroGraphicsPage}
+\item ugIntroNumbersPage \ref{ugIntroNumbersPage} on
+page~\pageref{ugIntroNumbersPage}
+\item ugIntroCollectPage \ref{ugIntroCollectPage} on
+page~\pageref{ugIntroCollectPage}
+\item ugIntroTwoDimPage \ref{ugIntroTwoDimPage} on
+page~\pageref{ugIntroTwoDimPage}
+\item ugIntroYouPage \ref{ugIntroYouPage} on
+page~\pageref{ugIntroYouPage}
+\item ugIntroVariablesPage \ref{ugIntroVariablesPage} on
+page~\pageref{ugIntroVariablesPage}
+\item ugIntroCalcLimitsPage \ref{ugIntroCalcLimitsPage} on
+page~\pageref{ugIntroCalcLimitsPage}
+\item ugIntroSeriesPage \ref{ugIntroSeriesPage} on
+page~\pageref{ugIntroSeriesPage}
+\item ugIntroCalcDerivPage \ref{ugIntroCalcDerivPage} on
+page~\pageref{ugIntroCalcDerivPage}
+\item ugIntroIntegratePage \ref{ugIntroIntegratePage} on
+page~\pageref{ugIntroIntegratePage}
+\item ugIntroDiffEqnsPage \ref{ugIntroDiffEqnsPage} on
+page~\pageref{ugIntroDiffEqnsPage}
+\item ugIntroSolutionPage \ref{ugIntroSolutionPage} on
+page~\pageref{ugIntroSolutionPage}
+\item ugIntroSysCmmandsPage \ref{ugIntroSysCmmandsPage} on
+page~\pageref{ugIntroSysCmmandsPage}
+\end{itemize}
+\index{pages!ugIntroPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroPage}
+\index{ugIntroPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroPage}{1. An Overview of Axiom}
+
+\beginscroll
+
+Welcome to the Axiom environment for interactive computation
+and problem solving.
+Consider this chapter a brief, whirlwind tour of the Axiom
+world.
+We introduce you to Axiom's graphics and the Axiom
+language.
+Then we give a sampling of the large variety of facilities
+in the Axiom system, ranging from the various kinds of
+numbers, to data types (like lists, arrays, and sets) and
+mathematical objects (like matrices, integrals, and differential
+equations).
+We conclude with the discussion of system commands and an
+interactive ``undo.''
+
+Before embarking on the tour, we need to brief those readers
+working interactively with Axiom on some details.
+Others can skip right immediately to
+\downlink{``\ugIntroTypoTitle''}{ugIntroTypoPage} in 
+Section \ugIntroTypoNumber\ignore{ugIntroTypo}.
+
+\beginmenu
+    \menudownlink{{1.1. Starting Up and Winding Down}}{ugIntroStartPage}
+    \menudownlink{{1.2. Typographic Conventions}}{ugIntroTypoPage}
+    \menudownlink{{1.3. The Axiom Language}}{ugIntroExpressionsPage}
+    \menudownlink{{1.4. Graphics}}{ugIntroGraphicsPage}
+    \menudownlink{{1.5. Numbers}}{ugIntroNumbersPage}
+    \menudownlink{{1.6. Data Structures}}{ugIntroCollectPage}
+    \menudownlink{{1.7. Expanding to Higher Dimensions}}{ugIntroTwoDimPage}
+    \menudownlink{{1.8. Writing Your Own Functions}}{ugIntroYouPage}
+    \menudownlink{{1.9. Polynomials}}{ugIntroVariablesPage}
+    \menudownlink{{1.10. Limits}}{ugIntroCalcLimitsPage}
+    \menudownlink{{1.11. Series}}{ugIntroSeriesPage}
+    \menudownlink{{1.12. Derivatives}}{ugIntroCalcDerivPage}
+    \menudownlink{{1.13. Integration}}{ugIntroIntegratePage}
+    \menudownlink{{1.14. Differential Equations}}{ugIntroDiffEqnsPage}
+    \menudownlink{{1.15. Solution of Equations}}{ugIntroSolutionPage}
+    \menudownlink{{1.16. System Commands}}{ugIntroSysCmmandsPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroStartTitle}{Starting Up and Winding Down}
+\newcommand{\ugIntroStartNumber}{1.1.}
+
+@
+\section{Starting Up and Winding Down}
+\label{ugIntroStartPage}
+\begin{itemize}
+\item ugHyperPage \ref{ugHyperPage} on
+page~\pageref{ugHyperPage}
+\item ugSysCmdPage \ref{ugSysCmdPage} on
+page~\pageref{ugSysCmdPage}
+\item ugAvailCLEFPage \ref{ugAvailCLEFPage} on
+page~\pageref{ugAvailCLEFPage}
+\end{itemize}
+\index{pages!ugIntroStartPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroStartPage}
+\index{ugIntroStartPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroStartPage}{1.1. Starting Up and Winding Down}
+\beginscroll
+
+You need to know how to start the Axiom system and how to stop it.
+We assume that Axiom has been correctly installed on your
+machine (as described in another Axiom document).
+
+To begin using Axiom, issue the command {\bf axiom} to the
+operating system shell.
+There is a brief pause, some start-up messages, and then one
+or more windows appear.
+
+If you are not running Axiom under the X Window System, there is
+only one window (the console).
+At the lower left of the screen there is a prompt that
+looks like
+\begin{verbatim}
+(1) ->
+\end{verbatim}
+%%--> do you want to talk about equation numbers on the right, etc.
+When you want to enter input to Axiom, you do so on the same line
+after the prompt.
+The ``1'' in ``(1)'' is the computation step number and is incremented
+after you enter Axiom statements.
+Note, however, that a system command
+such as \spadsys{)clear all}
+may change the step number in other ways.
+We talk about step numbers more when we discuss system commands
+and the workspace history facility.
+
+If you are running Axiom under the X Window System, there may be two
+windows: the console window (as just described) and the \HyperName{}
+main menu.
+\HyperName{} is a multiple-window hypertext system that lets you
+view Axiom documentation and examples on-line,
+execute Axiom expressions, and generate graphics.
+If you are in a graphical windowing environment,
+it is usually started automatically when Axiom begins.
+If it is not running, issue \spadsys{)hd} to start it.
+We discuss the basics of \HyperName{} in
+\downlink{``\ugHyperTitle''}{ugHyperPage} in Chapter 
+\ugHyperNumber\ignore{ugHyper}.
+
+To interrupt an Axiom computation, hold down the
+\texht{\fbox{\bf Ctrl}}{{\bf Ctrl}} (control) key and press
+\texht{\fbox{\bf c}}{{\bf c}}.
+This  brings you back to the Axiom prompt.
+
+\beginImportant
+To exit from Axiom,  move to the console window,
+type \spadsys{)quit}
+at the input prompt and press the \texht{\fbox{\bf Enter}}{{\bf Enter}} key.
+You will probably be prompted with the following message:
+\centerline{{Please enter {\bf y} or {\bf yes} if you really want to leave the }}
+\centerline{{interactive environment and return to the operating system}}
+You should respond {\bf yes}, for example, to exit Axiom.
+\endImportant
+
+We are purposely vague in describing exactly what your screen
+looks like or what messages Axiom displays.
+Axiom runs on a number of different machines, operating
+systems and window environments, and these differences all affect
+the physical look of the system.
+You can also change the way that Axiom behaves via
+\spadgloss{system commands} described later in this chapter and in
+\downlink{``\ugSysCmdTitle''}{ugSysCmdPage} 
+in Appendix \ugSysCmdNumber\ignore{ugSysCmd}.
+System commands are special commands, like \spadcmd{)set}, that begin
+with a closing parenthesis and are used to change your
+environment.
+For example, you can set a system variable so that you are not
+prompted for confirmation when you want to leave Axiom.
+
+\beginmenu
+    \menudownlink{{1.1.1. \Clef{}}}{ugAvailCLEFPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugAvailCLEFTitle}{\Clef{}}
+\newcommand{\ugAvailCLEFNumber}{1.1.1.}
+
+@
+\section{Clef}
+\label{ugAvailCLEFPage}
+\index{pages!ugAvailCLEFPage!ug01.ht}
+\index{ug01.ht!pages!ugAvailCLEFPage}
+\index{ugAvailCLEFPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugAvailCLEFPage}{1.1.1. \Clef{}}
+\beginscroll
+%
+If you are using Axiom under the X Window System, the
+\Clef{} command line editor is probably available and installed.
+With this editor you can recall previous lines with the up and
+down arrow keys\texht{ (\fbox{$\uparrow$} and
+\fbox{$\downarrow$})}{}.
+To move forward and backward on a line, use the right and
+left arrows\texht{ (\fbox{$\rightarrow$} and
+\fbox{$\leftarrow$})}{}.
+You can use the
+\texht{\fbox{\bf Insert}}{{\bf Insert}}
+key to toggle insert mode on or off.
+When you are in insert mode,
+the cursor appears as a large block and if you type
+anything, the characters are inserted into the line without
+deleting the previous ones.
+
+If you press the
+\texht{\fbox{\bf Home}}{{\bf Home}}
+key, the cursor moves to the beginning of the line and if you press the
+\texht{\fbox{\bf End}}{{\bf End}}
+key, the cursor moves to the end of the line.
+Pressing
+\texht{\fbox{\bf Ctrl}--\fbox{\bf End}}{{\bf Ctrl-End}}
+deletes all the text from the cursor to the end of the line.
+
+\Clef{} also provides Axiom operation name completion for
+a limited set of operations.
+If you enter a few letters and then press the
+\texht{\fbox{\bf Tab}}{{\bf Tab}} key,
+\Clef{} tries to use those letters as the prefix of an Axiom
+operation name.
+If a name appears and it is not what you want, press
+\texht{\fbox{\bf Tab}}{{\bf Tab}} again
+to see another name.
+
+You are ready to begin your journey into the world of Axiom.
+Proceed to the first stop.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroTypoTitle}{Typographic Conventions}
+\newcommand{\ugIntroTypoNumber}{1.2.}
+
+@
+\section{Typographic Conventions}
+\label{ugIntroTypoPage}
+\index{pages!ugIntroTypoPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroTypoPage}
+\index{ugIntroTypoPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroTypoPage}{1.2. Typographic Conventions}
+\beginscroll
+
+In this book we have followed these typographical conventions:
+\indent{4}
+\beginitems
+%
+\item[-] Categories, domains and packages are displayed in
+\texht{a sans-serif typeface:}{this font:}
+\axiomType{Ring}, \axiomType{Integer}, \axiomType{DiophantineSolutionPackage}.
+%
+\item[-] Prefix operators, infix operators, and punctuation symbols in the Axiom
+language are displayed in the text like this:
+\axiomOp{+}, \axiomSyntax{\$}, \axiomSyntax{+->}.
+%
+\item[-] Axiom expressions or expression fragments are displayed in
+\texht{a mon\-o\-space typeface:}{this font:}
+\axiom{inc(x) == x + 1}.
+%
+\item[-] For clarity of presentation, \TeX{} is often
+used to format expressions\texht{: $g(x)=x^2+1.$}{.}
+%
+\item[-] Function names and \HyperName{} button names
+are displayed in the text in
+\texht{a bold typeface:}{this font:}
+\axiomFun{factor}, \axiomFun{integrate},  {\bf Lighting}.
+%
+\item[-] Italics are used for emphasis and for words defined in the
+glossary: \spadgloss{category}.
+\enditems
+\indent{0}
+
+This book contains over 2500 examples of Axiom input and output.
+All examples were run though Axiom and their output was
+created in \texht{\TeX{}}{TeX} form for this book by the Axiom
+\axiomType{TexFormat} package.
+We have deleted system messages from the example output if those
+messages are not important for the discussions in which the examples
+appear.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroExpressionsTitle}{The Axiom Language}
+\newcommand{\ugIntroExpressionsNumber}{1.3.}
+
+@
+\section{The Axiom Language}
+\label{ugIntroExpressionsPage}
+\begin{itemize}
+\item ugIntroArithmeticPage \ref{ugIntroArithmeticPage} on
+page~\pageref{ugIntroArithmeticPage}
+\item ugIntroPreviousPage \ref{ugIntroPreviousPage} on
+page~\pageref{ugIntroPreviousPage}
+\item ugIntroTypesPage \ref{ugIntroTypesPage} on
+page~\pageref{ugIntroTypesPage}
+\item ugIntroAssignPage \ref{ugIntroAssignPage} on
+page~\pageref{ugIntroAssignPage}
+\item ugIntroConversionPage \ref{ugIntroConversionPage} on
+page~\pageref{ugIntroConversionPage}
+\item ugIntroCallFunPage \ref{ugIntroCallFunPage} on
+page~\pageref{ugIntroCallFunPage}
+\item ugIntroMacrosPage \ref{ugIntroMacrosPage} on
+page~\pageref{ugIntroMacrosPage}
+\item ugIntroLongPage \ref{ugIntroLongPage} on
+page~\pageref{ugIntroLongPage}
+\item ugIntroCommentsPage \ref{ugIntroCommentsPage} on
+page~\pageref{ugIntroCommentsPage}
+\end{itemize}
+\index{pages!ugIntroExpressionsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroExpressionsPage}
+\index{ugIntroExpressionsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroExpressionsPage}{1.3. The Axiom Language}
+\beginscroll
+%
+
+The Axiom language is a rich language for performing
+interactive computations and for building components of the
+Axiom library.
+Here we present only some basic aspects of the language that you
+need to know for the rest of this chapter.
+Our discussion here is intentionally informal, with details
+unveiled on an ``as needed'' basis.
+For more information on a particular construct, we suggest you
+consult the index at the back of the book.
+
+\beginmenu
+    \menudownlink{{1.3.1. Arithmetic Expressions}}{ugIntroArithmeticPage}
+    \menudownlink{{1.3.2. Previous Results}}{ugIntroPreviousPage}
+    \menudownlink{{1.3.3. Some Types}}{ugIntroTypesPage}
+    \menudownlink{{1.3.4. Symbols, Variables, Assignments, and Declarations}}{ugIntroAssignPage}
+    \menudownlink{{1.3.5. Conversion}}{ugIntroConversionPage}
+    \menudownlink{{1.3.6. Calling Functions}}{ugIntroCallFunPage}
+    \menudownlink{{1.3.7. Some Predefined Macros}}{ugIntroMacrosPage}
+    \menudownlink{{1.3.8. Long Lines}}{ugIntroLongPage}
+    \menudownlink{{1.3.9. Comments}}{ugIntroCommentsPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroArithmeticTitle}{Arithmetic Expressions}
+\newcommand{\ugIntroArithmeticNumber}{1.3.1.}
+
+@
+\section{Arithmetic Expressions}
+\label{ugIntroArithmeticPage}
+\index{pages!ugIntroArithmeticPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroArithmeticPage}
+\index{ugIntroArithmeticPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroArithmeticPage}{1.3.1. Arithmetic Expressions}
+\beginscroll
+
+For arithmetic expressions, use the \spadop{+} and \spadop{-}
+\spadglossSee{operators}{operator} as in mathematics.
+Use \spadop{*} for multiplication, and \spadop{**} for
+exponentiation.
+To create a fraction, use \spadop{/}.
+When an expression contains several operators, those of highest
+\spadgloss{precedence} are evaluated first.
+For arithmetic operators, \spadop{**} has highest precedence,
+\spadop{*} and \spadop{/} have the next highest
+precedence, and \spadop{+} and \spadop{-} have the lowest
+precedence.
+
+\xtc{
+Axiom puts implicit parentheses around operations of higher
+precedence, and groups those of equal precedence from left to right.
+}{
+\spadpaste{1 + 2 - 3 / 4 * 3 ** 2 - 1}
+}
+\xtc{
+The above expression is equivalent to this.
+}{
+\spadpaste{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
+}
+\xtc{
+If an expression contains subexpressions enclosed in parentheses,
+the parenthesized subexpressions are evaluated first (from left to
+right, from inside out).
+}{
+\spadpaste{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroPreviousTitle}{Previous Results}
+\newcommand{\ugIntroPreviousNumber}{1.3.2.}
+
+@
+\section{Previous Results}
+\label{ugIntroPreviousPage}
+\index{pages!ugIntroPreviousPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroPreviousPage}
+\index{ugIntroPreviousPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroPreviousPage}{1.3.2. Previous Results}
+\beginscroll
+
+Use the percent sign (\axiomSyntax{\%}) to refer to the last
+result.
+Also, use \axiomSyntax{\%\%} to refer to previous results.
+\axiom{\%\%(-1)} is equivalent to \axiomSyntax{\%},
+\axiom{\%\%(-2)} returns the next to the last result, and so on.
+\axiom{\%\%(1)} returns the result from step number 1,
+\axiom{\%\%(2)} returns the result from step number 2, and so on.
+\axiom{\%\%(0)} is not defined.
+
+\xtc{
+This is ten to the tenth power.
+}{
+\spadpaste{10 ** 10 \bound{prev}}
+}
+\xtc{
+This is the last result minus one.
+}{
+\spadpaste{\% - 1 \free{prev}\bound{prev1}}
+}
+\xtc{
+This is the last result.
+}{
+\spadpaste{\%\%(-1) \free{prev1}\bound{prev2}}
+}
+\xtc{
+This is the result from step number 1.
+}{
+\spadpaste{\%\%(1) \free{prev2}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroTypesTitle}{Some Types}
+\newcommand{\ugIntroTypesNumber}{1.3.3.}
+
+@
+\section{Some Types}
+\label{ugIntroTypesPage}
+\begin{itemize}
+\item ugTypesPage \ref{ugTypesPage} on
+page~\pageref{ugTypesPage}
+\end{itemize}
+\index{pages!ugIntroTypesPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroTypesPage}
+\index{ugIntroTypesPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroTypesPage}{1.3.3. Some Types}
+\beginscroll
+
+Everything in Axiom has a type.
+The type determines what operations you can perform on an object and
+how the object can be used.
+An entire chapter of this book (\downlink{``\ugTypesTitle''}{ugTypesPage} 
+in Chapter \ugTypesNumber\ignore{ugTypes}) is dedicated to
+the interactive use of types.
+Several of the final chapters discuss how types are built and how
+they are organized in the Axiom library.
+
+\xtc{
+Positive integers are given type \spadtype{PositiveInteger}.
+}{
+\spadpaste{8}
+}
+\xtc{
+Negative ones are given type \spadtype{Integer}.
+This fine distinction is helpful to the
+Axiom interpreter.
+}{
+\spadpaste{-8}
+}
+\xtc{
+Here a positive integer exponent gives a polynomial result.
+}{
+\spadpaste{x**8}
+}
+\xtc{
+Here a negative integer exponent produces a fraction.
+}{
+\spadpaste{x**(-8)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroAssignTitle}{Symbols, Variables, Assignments, and Declarations}
+\newcommand{\ugIntroAssignNumber}{1.3.4.}
+
+@
+\section{Symbols, Variables, Assignments, and Declarations}
+\label{ugIntroAssignPage}
+\begin{itemize}
+\item ugLangAssignPage \ref{ugLangAssignPage} on
+page~\pageref{ugLangAssignPage}
+\end{itemize}
+\index{pages!ugIntroAssignPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroAssignPage}
+\index{ugIntroAssignPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroAssignPage}
+{1.3.4. Symbols, Variables, Assignments, and Declarations}
+\beginscroll
+
+A \spadgloss{symbol} is a literal used for the input of things like
+the ``variables'' in polynomials and power series.
+
+\labelSpace{2pc}
+\xtc{
+We use the three symbols \axiom{x}, \axiom{y}, and \axiom{z} in
+entering this polynomial.
+}{
+\spadpaste{(x - y*z)**2}
+}
+A symbol has a name beginning with an uppercase or lowercase alphabetic
+character, \axiomSyntax{\%}, or \axiomSyntax{!}.
+Successive characters (if any) can be any of the above, digits, or
+\axiomSyntax{?}.
+Case is distinguished: the symbol \axiom{points} is different
+from the symbol \axiom{Points}.
+
+A symbol can also be used in Axiom as a \spadgloss{variable}.
+A variable refers to a value.
+To \spadglossSee{assign}{assignment}
+a value to a variable,
+the operator \axiomSyntax{:=}
+is used.\footnote{Axiom actually has two forms of assignment:
+{\it immediate} assignment, as discussed here,
+and {\it delayed assignment}. See 
+\downlink{``\ugLangAssignTitle''}{ugLangAssignPage} 
+in Section \ugLangAssignNumber\ignore{ugLangAssign} for details.}
+A variable initially has no restrictions on the kinds of
+values to which it can refer.
+
+\xtc{
+This assignment gives the value \axiom{4} (an integer) to
+a variable named \axiom{x}.
+}{
+\spadpaste{x := 4}
+}
+\xtc{
+This gives the value \axiom{z + 3/5} (a polynomial)  to \axiom{x}.
+}{
+\spadpaste{x := z + 3/5}
+}
+\xtc{
+To restrict the types of objects that can be assigned to a variable,
+use a \spadgloss{declaration}
+}{
+\spadpaste{y : Integer \bound{y}}
+}
+\xtc{
+After a variable is declared to be of some type, only values
+of that type can be assigned to that variable.
+}{
+\spadpaste{y := 89\bound{y1}\free{y}}
+}
+\xtc{
+The declaration for \axiom{y} forces values assigned to \axiom{y} to
+be converted to integer values.
+}{
+\spadpaste{y := sin \%pi}
+}
+\xtc{
+If no such conversion is possible,
+Axiom refuses to assign a value to \axiom{y}.
+}{
+\spadpaste{y := 2/3}
+}
+\xtc{
+A type declaration can also be given together with an assignment.
+The declaration can assist Axiom in choosing the correct
+operations to apply.
+}{
+\spadpaste{f : Float := 2/3}
+}
+
+Any number of expressions can be given on input line.
+Just separate them by semicolons.
+Only the result of evaluating the last expression is displayed.
+
+\xtc{
+These two expressions have the same effect as
+the previous single expression.
+}{
+\spadpaste{f : Float; f := 2/3 \bound{fff}}
+}
+
+The type of a symbol is either \axiomType{Symbol}
+or \axiomType{Variable({\it name})} where {\it name} is the name
+of the symbol.
+
+\xtc{
+By default, the interpreter
+gives this symbol the type \axiomType{Variable(q)}.
+}{
+\spadpaste{q}
+}
+\xtc{
+When multiple symbols are involved, \axiomType{Symbol} is used.
+}{
+\spadpaste{[q, r]}
+}
+
+\xtc{
+What happens when you try to use a symbol that is the name of a variable?
+}{
+\spadpaste{f \free{fff}}
+}
+\xtc{
+Use a single quote (\axiomSyntax{'}) before
+the name to get the symbol.
+}{
+\spadpaste{'f}
+}
+
+Quoting a name creates a symbol by
+preventing evaluation of the name as a variable.
+Experience will teach you when you are most likely going to need to use
+a quote.
+We try to point out the location of such trouble spots.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroConversionTitle}{Conversion}
+\newcommand{\ugIntroConversionNumber}{1.3.5.}
+
+@
+\section{Conversion}
+\label{ugIntroConversionPage}
+\begin{itemize}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~\pageref{ugTypesConvertPage}
+\end{itemize}
+\index{pages!ugIntroConversionPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroConversionPage}
+\index{ugIntroConversionPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroConversionPage}{1.3.5. Conversion}
+\beginscroll
+
+Objects of one type can usually be ``converted'' to objects of several
+other types.
+To \spadglossSee{convert}{conversion}
+an object to a new type, use the \axiomSyntax{::} infix
+operator.\footnote{Conversion is discussed in detail in 
+\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert}.}
+For example, to display an object, it is necessary to
+convert the object to type \spadtype{OutputForm}.
+
+\xtc{
+This produces a polynomial with rational number coefficients.
+}{
+\spadpaste{p := r**2 + 2/3 \bound{p}}
+}
+\xtc{
+Create a quotient of polynomials with integer coefficients
+by using \axiomSyntax{::}.
+}{
+\spadpaste{p :: Fraction Polynomial Integer \free{p}}
+}
+
+Some conversions can be performed automatically when
+Axiom tries to evaluate your input.
+Others conversions must be explicitly requested.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroCallFunTitle}{Calling Functions}
+\newcommand{\ugIntroCallFunNumber}{1.3.6.}
+
+@
+\section{Calling Functions}
+\label{ugIntroCallFunPage}
+\index{pages!ugIntroCallFunPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroCallFunPage}
+\index{ugIntroCallFunPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroCallFunPage}{1.3.6. Calling Functions}
+\beginscroll
+
+As we saw earlier, when you want to add or subtract two values,
+you place the arithmetic operator \spadop{+}
+or \spadop{-} between the two
+\spadglossSee{arguments}{argument} denoting the values.
+To use most other Axiom operations, however, you use another syntax:
+write the name
+of the operation first, then an open parenthesis, then each of the
+arguments separated by commas, and, finally, a closing parenthesis.
+If the operation takes only one argument and the argument is a number
+or a symbol, you can omit the parentheses.
+
+\xtc{
+This calls the operation \axiomFun{factor} with the single
+integer argument \axiom{120}.
+}{
+\spadpaste{factor(120)}
+}
+\xtc{
+This is a call to \axiomFun{divide} with the two integer arguments
+\axiom{125} and \axiom{7}.
+}{
+\spadpaste{divide(125,7)}
+}
+\xtc{
+This calls \axiomFun{quatern} with four floating-point arguments.
+}{
+\spadpaste{quatern(3.4,5.6,2.9,0.1)}
+}
+\xtc{
+This is the same as \axiom{factorial(10)}.
+}{
+\spadpaste{factorial 10}
+}
+
+An operations that returns a \spadtype{Boolean} value (that is,
+\spad{true} or \spad{false}) frequently has a name suffixed with
+a question mark (``?'').  For example, the \spadfun{even?}
+operation returns \spad{true} if its integer argument is an even
+number, \spad{false} otherwise.
+
+An operation that can be destructive on one or more arguments
+usually has a name ending in a exclamation point (``!'').
+This actually means that it is {\it allowed} to update its
+arguments but it is not {\it required} to do so. For example,
+the underlying representation of a collection type may not allow
+the very last element to removed and so an empty object may be
+returned instead. Therefore, it is important that you use the
+object returned by the operation and not rely on a physical
+change having occurred within the object. Usually, destructive
+operations are provided for efficiency reasons.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroMacrosTitle}{Some Predefined Macros}
+\newcommand{\ugIntroMacrosNumber}{1.3.7.}
+
+@
+\section{Some Predefined Macros}
+\label{ugIntroMacrosPage}
+\begin{itemize}
+\item ugUserMacrosPage \ref{ugUserMacrosPage} on
+page~\pageref{ugUserMacrosPage}
+\end{itemize}
+\index{pages!ugIntroMacrosPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroMacrosPage}
+\index{ugIntroMacrosPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroMacrosPage}{1.3.7. Some Predefined Macros}
+\beginscroll
+
+Axiom provides several \spadglossSee{macros}{macro}
+for your convenience.\footnote{See 
+\downlink{``\ugUserMacrosTitle''}{ugUserMacrosPage} 
+in Section \ugUserMacrosNumber\ignore{ugUserMacros}
+for a discussion on how to write your own macros.}
+Macros are names
+(or forms) that expand to larger expressions for commonly used values.
+
+\texht{
+\centerline{{\begin{tabular}{ll}}}
+\centerline{{\spadgloss{\%i}             &  The square root of -1. }}
+\centerline{{\spadgloss{\%e}             &  The base of the natural logarithm. }}
+\centerline{{\spadgloss{\%pi}            &  $\pi$. }}
+\centerline{{\spadgloss{\%infinity}      &  $\infty$. }}
+\centerline{{\spadgloss{\%plusInfinity}  &  $+\infty$. }}
+\centerline{{\spadgloss{\%minusInfinity} &  $-\infty$.}}
+\centerline{{\end{tabular}}}
+}{
+\indent{0}
+\beginitems
+\item[\axiomSyntax{\%i}]             \tab{17} The square root of -1.
+\item[\axiomSyntax{\%e}]             \tab{17} The base of the natural logarithm.
+\item[\axiomSyntax{\%pi}]            \tab{17} Pi.
+\item[\axiomSyntax{\%infinity}]      \tab{17} Infinity.
+\item[\axiomSyntax{\%plusInfinity}]  \tab{17} Plus infinity.
+\item[\axiomSyntax{\%minusInfinity}] \tab{17} Minus infinity.
+\enditems
+\indent{0}
+}
+
+%To display all the macros (along with anything you have
+%defined in the workspace), issue the system command \spadsys{)display all}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroLongTitle}{Long Lines}
+\newcommand{\ugIntroLongNumber}{1.3.8.}
+
+@
+\section{Long Lines}
+\label{ugIntroLongPage}
+\begin{itemize}
+\item ugInOutInPage \ref{ugInOutInPage} on
+page~\pageref{ugInOutInPage}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\end{itemize}
+\index{pages!ugIntroLongPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroLongPage}
+\index{ugIntroLongPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroLongPage}{1.3.8. Long Lines}
+\beginscroll
+
+When you enter Axiom expressions from your keyboard, there
+will be times when they are too long to fit on one line.
+Axiom does not care how long your lines are, so you can let
+them continue from the right margin to the left side of the
+next line.
+
+Alternatively, you may want to enter several shorter lines and
+have Axiom glue them together.
+To get this glue, put an underscore (\_) at the end of
+each line you wish to continue.
+\begin{verbatim}
+2_
++_
+3
+\end{verbatim}
+is the same as if you had entered
+\begin{verbatim}
+2+3
+\end{verbatim}
+
+If you are putting your Axiom statements in an input file
+(see \downlink{``\ugInOutInTitle''}{ugInOutInPage} 
+in Section \ugInOutInNumber\ignore{ugInOutIn}),
+you can use indentation to indicate the structure of your program.
+(see \downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
+in Section \ugLangBlocksNumber\ignore{ugLangBlocks}).
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroCommentsTitle}{Comments}
+\newcommand{\ugIntroCommentsNumber}{1.3.9.}
+
+@
+\section{Comments}
+\label{ugIntroCommentsPage}
+\index{pages!ugIntroCommentsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroCommentsPage}
+\index{ugIntroCommentsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroCommentsPage}{1.3.9. Comments}
+\beginscroll
+
+Comment statements begin with two consecutive hyphens or two
+consecutive plus signs and continue until the end of the line.
+
+\xtc{
+The comment beginning with {\tt --} is ignored by Axiom.
+}{
+\spadpaste{2 + 3   -- this is rather simple, no?}
+}
+
+There is no way to write long multi-line comments
+other than starting each line with \axiomSyntax{--} or
+\axiomSyntax{++}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroGraphicsTitle}{Graphics}
+\newcommand{\ugIntroGraphicsNumber}{1.4.}
+
+@
+\section{Graphics}
+\label{ugIntroGraphicsPage}
+\begin{itemize}
+\item ugProblemNumericPage \ref{ugProblemNumericPage} on
+page~\pageref{ugProblemNumericPage}
+\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on
+page~\pageref{ugAppGraphicsPage}
+\item ugGraphPage \ref{ugGraphPage} on
+page~\pageref{ugGraphPage}
+\end{itemize}
+\index{pages!ugIntroGraphicsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroGraphicsPage}
+\index{ugIntroGraphicsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroGraphicsPage}{1.4. Graphics}
+\beginscroll
+%
+
+Axiom has a two- and three-dimensional drawing and rendering
+package that allows you to draw, shade, color, rotate, translate, map,
+clip, scale and combine graphic output of Axiom computations.
+The graphics interface is capable of plotting functions of one or more
+variables and plotting parametric surfaces.
+Once the graphics figure appears in a window,
+move your mouse to the window and click.
+A control panel appears immediately  and allows you to
+interactively transform the object.
+
+\psXtc{
+This is an example of Axiom's two-dimensional plotting.
+From the 2D Control Panel you can rescale the plot, turn axes and units
+on and off and save the image, among other things.
+This PostScript image was produced by clicking on the
+\texht{\fbox{\bf PS}}{{\bf PS}} 2D Control Panel button.
+}{
+\graphpaste{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
+}{
+\epsffile[72 72 300 300]{../ps/rose-1.ps}
+}
+
+\psXtc{
+This is an example of Axiom's three-dimensional plotting.
+It is a monochrome graph of the complex arctangent
+function.
+The image displayed was rotated and had the ``shade'' and ``outline''
+display options set from the 3D Control Panel.
+The PostScript output was produced by clicking on the
+\texht{\fbox{\bf save}}{{\bf save}} 3D Control Panel button and then
+clicking on the \texht{\fbox{\bf PS}}{{\bf PS}} button.
+See \downlink{``\ugProblemNumericTitle''}{ugProblemNumericPage} 
+in Section \ugProblemNumericNumber\ignore{ugProblemNumeric} for 
+more details and examples
+of Axiom's numeric and graphics capabilities.
+}{
+\graphpaste{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
+}{
+\epsffile[72 72 285 285]{../ps/atan-1.ps}
+}
+
+An exhibit of \Gallery{} is given in the
+center section of this book.
+For a description of the commands and programs that
+produced these figures, see 
+\downlink{``\ugAppGraphicsTitle''}{ugAppGraphicsPage} 
+in Appendix \ugAppGraphicsNumber\ignore{ugAppGraphics}.
+PostScript
+output is available so that Axiom images can be
+printed.\footnote{PostScript is a trademark of Adobe Systems Incorporated,
+registered in the United States.}
+See \downlink{``\ugGraphTitle''}{ugGraphPage} 
+in Chapter \ugGraphNumber\ignore{ugGraph} for 
+more examples and details about using
+Axiom's graphics facilities.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroNumbersTitle}{Numbers}
+\newcommand{\ugIntroNumbersNumber}{1.5.}
+
+@
+\section{Numbers}
+\label{ugIntroNumbersPage}
+\begin{itemize}
+\item FloatXmpPage \ref{FloatXmpPage} on
+page~\pageref{FloatXmpPage}
+\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
+page~\pageref{DoubleFloatXmpPage}
+\item ComplexXmpPage \ref{ComplexXmpPage} on
+page~\pageref{ComplexXmpPage}
+\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
+page~\pageref{DecimalExpansionXmpPage}
+\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
+page~\pageref{ContinuedFractionXmpPage}
+\item PartialFractionXmpPage \ref{PartialFractionXmpPage} on
+page~\pageref{PartialFractionXmpPage}
+\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
+page~\pageref{RadixExpansionXmpPage}
+\item ugxProblemFinitePrimePage \ref{ugxProblemFinitePrimePage} on
+page~\pageref{ugxProblemFinitePrimePage}
+\end{itemize}
+\index{pages!ugIntroNumbersPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroNumbersPage}
+\index{ugIntroNumbersPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroNumbersPage}{1.5. Numbers}
+\beginscroll
+%
+
+Axiom distinguishes very carefully between different kinds
+of numbers, how they are represented and what their properties
+are.
+Here are a sampling of some of these kinds of numbers and some
+things you can do with them.
+
+\xtc{
+Integer arithmetic is always exact.
+}{
+\spadpaste{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
+}
+\xtc{
+Integers can be represented in factored form.
+}{
+\spadpaste{factor 643238070748569023720594412551704344145570763243 \bound{ex1}}
+}
+\xtc{
+Results stay factored when you do arithmetic.
+Note that the \axiom{12} is automatically factored for you.
+}{
+\spadpaste{\% * 12 \free{ex1}}
+}
+\xtc{
+Integers can also be displayed to bases other than 10.
+This is an integer in base 11.
+}{
+\spadpaste{radix(25937424601,11)}
+}
+\xtc{
+Roman numerals are also available for those special occasions.
+}{
+\spadpaste{roman(1992)}
+}
+\xtc{
+Rational number arithmetic is also exact.
+}{
+\spadpaste{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r}}
+}
+\xtc{
+To factor fractions, you have to
+map \axiomFun{factor} onto the numerator and denominator.
+}{
+\spadpaste{map(factor,r) \free{r}}
+}
+\xtc{
+Type \spadtype{SingleInteger} refers to machine word-length
+integers.
+In English, this expression means ``\axiom{11} as a small
+integer''.
+}{
+\spadpaste{11@SingleInteger}
+}
+\xtc{
+Machine double-precision floating-point numbers are also
+available for numeric and graphical
+applications.
+}{
+\spadpaste{123.21@DoubleFloat}
+}
+
+The normal floating-point type in Axiom, \spadtype{Float},
+is a software implementation of floating-point numbers in which
+the exponent and the mantissa may have any number of
+digits.\footnote{See 
+\downlink{`Float'}{FloatXmpPage}\ignore{Float} and 
+\downlink{`DoubleFloat'}{DoubleFloatXmpPage}\ignore{DoubleFloat} for
+additional information on floating-point types.}
+The types \spadtype{Complex(Float)} and
+\spadtype{Complex(DoubleFloat)} are the corresponding software
+implementations of complex floating-point numbers.
+
+\xtc{
+This is a floating-point approximation to about twenty digits.
+The \axiomSyntax{::}
+is used here to change from one kind of object
+(here, a rational number) to another (a floating-point number).
+}{
+\spadpaste{r :: Float \free{r}}
+}
+\xtc{
+Use \spadfunFrom{digits}{Float} to change the number of digits in
+the representation.
+This operation returns the previous value so you can reset it
+later.
+}{
+\spadpaste{digits(22) \bound{fewerdigits}}
+}
+\xtc{
+To \axiom{22} digits of precision, the number
+\texht{$e^{\pi {\sqrt {163.0}}}$}{\axiom{exp(\%pi * sqrt 163.0)}}
+appears to be an integer.
+}{
+\spadpaste{exp(\%pi * sqrt 163.0) \free{fewerdigits}}
+}
+\xtc{
+Increase the precision to forty digits and try again.
+}{
+\spadpaste{digits(40);  exp(\%pi * sqrt 163.0) \free{moredigits}}
+}
+\xtc{
+Here are complex numbers with rational numbers as real and
+imaginary parts.
+}{
+\spadpaste{(2/3 + \%i)**3 \bound{gaussint}}
+}
+\xtc{
+The standard operations on complex numbers are available.
+}{
+\spadpaste{conjugate \% \free{gaussint}}
+}
+\xtc{
+You can factor complex integers.
+}{
+\spadpaste{factor(89 - 23 * \%i)}
+}
+\xtc{
+Complex numbers with floating point parts are also available.
+}{
+\spadpaste{exp(\%pi/4.0 * \%i)}
+}
+%%--> These are not numbers:
+%\xtc{
+%The real and imaginary parts can be symbolic.
+%}{
+%\spadcommand{complex(u,v) \bound{cuv}}
+%}
+%\xtc{
+%Of course, you can do complex arithmetic with these also.
+%See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} 
+for more information.
+%}{
+%\spadcommand{\% ** 2 \free{cuv}}
+%}
+\xtc{
+Every rational number has an exact representation as a
+repeating decimal expansion
+(see \downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}
+\ignore{DecimalExpansion}).
+}{
+\spadpaste{decimal(1/352)}
+}
+\xtc{
+A rational number can also be expressed as a continued fraction (see
+\downlink{`ContinuedFraction'}{ContinuedFractionXmpPage}
+\ignore{ContinuedFraction}).
+}{
+\spadpaste{continuedFraction(6543/210)}
+}
+\xtc{
+Also, partial fractions can be used and can be displayed in a
+compact \ldots
+}{
+\spadpaste{partialFraction(1,factorial(10)) \bound{partfrac}}
+}
+\xtc{
+or expanded format (see 
+\downlink{`PartialFraction'}{PartialFractionXmpPage}\ignore{PartialFraction}).
+}{
+\spadpaste{padicFraction(\%) \free{partfrac}}
+}
+\xtc{
+Like integers, bases (radices) other than ten can be used for rational
+numbers (see 
+\downlink{`RadixExpansion'}{RadixExpansionXmpPage}\ignore{RadixExpansion}).
+Here we use base eight.
+}{
+\spadpaste{radix(4/7, 8)\bound{rad}}
+}
+\xtc{
+Of course, there are complex versions of these as well.
+Axiom decides to make the result a complex rational number.
+}{
+\spadpaste{\% + 2/3*\%i\free{rad}}
+}
+\xtc{
+You can also use Axiom to manipulate fractional powers.
+}{
+\spadpaste{(5 + sqrt 63 + sqrt 847)**(1/3)}
+}
+\xtc{
+You can also compute with integers modulo a prime.
+}{
+\spadpaste{x : PrimeField 7 := 5 \bound{x}}
+}
+\xtc{
+Arithmetic is then done modulo \mathOrSpad{7}.
+}{
+\spadpaste{x**3 \free{x}}
+}
+\xtc{
+Since \mathOrSpad{7} is prime, you can invert nonzero values.
+}{
+\spadpaste{1/x \free{x}}
+}
+\xtc{
+You can also compute modulo an integer that is not a prime.
+}{
+\spadpaste{y : IntegerMod 6 := 5 \bound{y}}
+}
+\xtc{
+All of the usual arithmetic operations are available.
+}{
+\spadpaste{y**3 \free{y}}
+}
+\xtc{
+Inversion is not available if the modulus is not a prime
+number.
+Modular arithmetic and prime fields are discussed in
+\downlink{``\ugxProblemFinitePrimeTitle''}{ugxProblemFinitePrimePage} 
+in Section \ugxProblemFinitePrimeNumber\ignore{ugxProblemFinitePrime}.
+}{
+\spadpaste{1/y \free{y}}
+}
+\xtc{
+This defines \axiom{a} to be an algebraic number, that is,
+a root of a polynomial equation.
+}{
+\spadpaste{a := rootOf(a**5 + a**3 + a**2 + 3,a) \bound{a}}
+}
+\xtc{
+Computations with \axiom{a} are reduced according
+to the polynomial equation.
+}{
+\spadpaste{(a + 1)**10\free{a}}
+}
+\xtc{
+Define \axiom{b} to be an algebraic number involving \axiom{a}.
+}{
+\spadpaste{b := rootOf(b**4 + a,b) \bound{b}\free{a}}
+}
+\xtc{
+Do some arithmetic.
+}{
+\spadpaste{2/(b - 1) \free{b}\bound{check}}
+}
+\xtc{
+To expand and simplify this, call \axiomFun{ratDenom}
+to rationalize the denominator.
+}{
+\spadpaste{ratDenom(\%) \free{check}\bound{check1}}
+}
+\xtc{
+If we do this, we should get \axiom{b}.
+}{
+\spadpaste{2/\%+1 \free{check1}\bound{check2}}
+}
+\xtc{
+But we need to rationalize the denominator again.
+}{
+\spadpaste{ratDenom(\%) \free{check2}}
+}
+\xtc{
+Types \spadtype{Quaternion} and \spadtype{Octonion} are also available.
+Multiplication of quaternions is non-commutative, as expected.
+}{
+\spadpaste{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroCollectTitle}{Data Structures}
+\newcommand{\ugIntroCollectNumber}{1.6.}
+
+@
+\section{Data Structures}
+\label{ugIntroCollectPage}
+\begin{itemize}
+\item ListXmpPage \ref{ListXmpPage} on
+page~\pageref{ListXmpPage}
+\item ugLangItsPage \ref{ugLangItsPage} on
+page~\pageref{ugLangItsPage}
+\item StreamXmpPage \ref{StreamXmpPage} on
+page~\pageref{StreamXmpPage}
+\item ugLangItsPage \ref{ugLangItsPage} on
+page~\pageref{ugLangItsPage}
+\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
+page~\pageref{OneDimensionalArrayXmpPage}
+\item FlexibleArrayXmpPage \ref{FlexibleArrayXmpPage} on
+page~\pageref{FlexibleArrayXmpPage}
+\item HeapXmpPage \ref{HeapXmpPage} on
+page~\pageref{HeapXmpPage}
+\item BinarySearchTreeXmpPage \ref{BinarySearchTreeXmpPage} on
+page~\pageref{BinarySearchTreeXmpPage}
+\item BalancedBinaryTreeXmpPage \ref{BalancedBinaryTreeXmpPage} on
+page~\pageref{BalancedBinaryTreeXmpPage}
+\item SetXmpPage \ref{SetXmpPage} on
+page~\pageref{SetXmpPage}
+\item MultiSetXmpPage \ref{MultiSetXmpPage} on
+page~\pageref{MultiSetXmpPage}
+\item AssociationListXmpPage \ref{AssociationListXmpPage} on
+page~\pageref{AssociationListXmpPage}
+\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
+page~\pageref{KeyedAccessFileXmpPage}
+\item LibraryXmpPage \ref{LibraryXmpPage} on
+page~\pageref{LibraryXmpPage}
+\item SparseTableXmpPage \ref{SparseTableXmpPage} on
+page~\pageref{SparseTableXmpPage}
+\item StringTableXmpPage \ref{StringTableXmpPage} on
+page~\pageref{StringTableXmpPage}
+\item TableXmpPage \ref{TableXmpPage} on
+page~\pageref{TableXmpPage}
+\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
+page~\pageref{ugTypesRecordsPage}
+\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
+page~\pageref{ugTypesUnionsPage}
+\item ugDomainsPage \ref{ugDomainsPage} on
+page~\pageref{ugDomainsPage}
+\end{itemize}
+\index{pages!ugIntroCollectPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroCollectPage}
+\index{ugIntroCollectPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroCollectPage}{1.6. Data Structures}
+\beginscroll
+%
+
+Axiom has a large variety of data structures available.
+Many data structures are particularly useful for interactive
+computation and others are useful for building applications.
+The data structures of Axiom are organized into
+\spadglossSee{category hierarchies}{hierarchy} as shown on
+the inside back cover.
+
+A \spadgloss{list} is the most commonly used data structure in
+Axiom for holding objects all of the same
+type.\footnote{Lists are discussed in 
+\downlink{`List'}{ListXmpPage}\ignore{List} and in
+\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
+in Section \ugLangItsNumber\ignore{ugLangIts}.}
+The name {\it list} is short for ``linked-list of nodes.'' Each
+node consists of a value (\spadfunFrom{first}{List}) and a link
+(\spadfunFrom{rest}{List}) that
+\spadglossSee{points}{pointer} to the next node, or to a
+distinguished value denoting the empty list.
+To get to, say, the third element, Axiom starts at the front
+of the list, then traverses across two links to the third node.
+
+\xtc{
+Write a list of elements using
+square brackets with commas separating the elements.
+}{
+\spadpaste{u := [1,-7,11] \bound{u}}
+}
+\xtc{
+This is the value at the third node.
+Alternatively, you can say \axiom{u.3}.
+}{
+\spadpaste{first rest rest u\free{u}}
+}
+
+Many operations are defined on lists, such as:
+\axiomFun{empty?}, to test that a list has no elements;
+\axiomFun{cons}\axiom{(x,l)}, to create a new list with
+\axiomFun{first} element \axiom{x} and \axiomFun{rest} \axiom{l};
+\axiomFun{reverse}, to create a new list with elements in reverse
+order; and \axiomFun{sort}, to arrange elements in order.
+
+An important point about lists is that they are ``mutable'': their
+constituent elements and links can be changed ``in place.''
+To do this, use any of the operations whose names end with the
+character \axiomSyntax{!}.
+
+\xtc{
+The operation \spadfunFromX{concat}{List}\axiom{(u,v)}
+replaces the last link of the list
+\axiom{u} to point to some other list \axiom{v}.
+Since \axiom{u} refers to the original list,
+this change is seen by \axiom{u}.
+}{
+\spadpaste{concat!(u,[9,1,3,-4]); u\free{u}\bound{u1}}
+}
+\xtc{
+A {\it cyclic list} is a list with a ``cycle'':
+a link pointing back to an earlier node of the list.
+To create a cycle, first get a node somewhere down
+the list.
+}{
+\spadpaste{lastnode := rest(u,3)\free{u1}\bound{u2}}
+}
+\xtc{
+Use \spadfunFromX{setrest}{List} to
+change the link emanating from that node to point back to an
+earlier part of the list.
+}{
+\spadpaste{setrest!(lastnode,rest(u,2)); u\free{u2}}
+}
+
+A \spadgloss{stream}
+is a structure that (potentially) has an infinite number of
+distinct elements.\footnote{Streams are discussed in
+\downlink{`Stream'}{StreamXmpPage}\ignore{Stream} and in 
+\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
+in Section \ugLangItsNumber\ignore{ugLangIts}.}
+Think of a stream as an ``infinite list'' where elements are
+computed successively.
+
+\xtc{
+Create an infinite stream of factored integers.
+Only a certain number of initial elements are computed
+and displayed.
+}{
+\spadpaste{[factor(i) for i in 2.. by 2] \bound{stream1}}
+}
+\xtc{
+Axiom represents streams by a collection of already-computed
+elements together with a function to compute the next element
+``on demand.''
+Asking for the \eth{\axiom{n}} element causes elements \axiom{1} through
+\axiom{n} to be evaluated.
+}{
+\spadpaste{\%.36 \free{stream1}}
+}
+
+Streams can also be finite or cyclic.
+They are implemented by a linked list structure similar to lists
+and have many of the same operations.
+For example, \axiomFun{first} and \axiomFun{rest} are used to access
+elements and successive nodes of a stream.
+%%> reverse and sort do not exist for streams
+%%Don't try to reverse or sort a stream: the
+%%operation will generally run forever!
+
+A \spadgloss{one-dimensional array} is another data structure used
+to hold objects of the same type.\footnote{See 
+\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}
+\ignore{OneDimensionalArray} for
+details.}
+Unlike lists, one-dimensional arrays are inflexible---they are
+implemented using a fixed block of storage.
+Their advantage is that they give quick and equal access time to
+any element.
+
+\xtc{
+A simple way to create a one-dimensional array is to apply the
+operation \axiomFun{oneDimensionalArray} to a list of elements.
+}{
+\spadpaste{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a}}
+}
+\xtc{
+One-dimensional arrays are also mutable:
+you can change their constituent elements ``in place.''
+}{
+\spadpaste{a.3 := 11; a\bound{a1}\free{a}}
+}
+\xtc{
+However, one-dimensional arrays are not flexible structures.
+You cannot destructively \spadfunX{concat} them together.
+}{
+\spadpaste{concat!(a,oneDimensionalArray [1,-2])\free{a1}}
+}
+
+Examples of datatypes similar to \spadtype{OneDimensionalArray}
+are: \spadtype{Vector} (vectors are mathematical structures
+implemented by one-dimensional arrays), \spadtype{String} (arrays
+of ``characters,'' represented by byte vectors), and
+\spadtype{Bits} (represented by ``bit vectors'').
+
+\xtc{
+A vector of 32 bits, 
+each representing the \spadtype{Boolean} value \axiom{true}.
+}{
+\spadpaste{bits(32,true)}
+}
+
+A \spadgloss{flexible array} is a cross between a list
+and a one-dimensional array.\footnote{See 
+\downlink{`FlexibleArray'}{FlexibleArrayXmpPage}\ignore{FlexibleArray} for
+details.}
+Like a one-dimensional array, a flexible array occupies a fixed
+block of storage.
+Its block of storage, however, has room to expand!
+When it gets full, it grows (a new, larger block of storage is
+allocated); when it has too much room, it contracts.
+
+\xtc{
+Create a flexible array of three elements.
+}{
+\spadpaste{f := flexibleArray [2, 7, -5]\bound{f}}
+}
+\xtc{
+Insert some elements between the second and third elements.
+}{
+\spadpaste{insert!(flexibleArray [11, -3],f,2)\free{f}}
+}
+
+Flexible arrays are used to implement ``heaps.'' A
+\spadgloss{heap} is an example of a data structure called a
+\spadgloss{priority queue}, where elements are ordered with
+respect to one another.\footnote{See 
+\downlink{`Heap'}{HeapXmpPage}\ignore{Heap} for more details.
+Heaps are also examples of data structures called
+\spadglossSee{bags}{bag}.
+Other bag data structures are \spadtype{Stack}, \spadtype{Queue},
+and \spadtype{Dequeue}.}
+A heap is organized
+so as to optimize insertion and extraction of maximum elements.
+The \spadfunX{extract} operation
+returns the maximum element of the heap, after destructively
+removing that element and
+reorganizing the heap
+so that the next maximum element is ready to be delivered.
+
+\xtc{
+An easy way to create a heap is to apply the
+operation \spadfun{heap} to a list of values.
+}{
+\spadpaste{h := heap [-4,7,11,3,4,-7]\bound{h}}
+}
+\xtc{
+This loop extracts elements one-at-a-time from \spad{h}
+until the heap is exhausted, returning the elements
+as a list in the order they were extracted.
+}{
+\spadpaste{[extract!(h) while not empty?(h)]\free{h}}
+}
+
+A \spadgloss{binary tree} is a ``tree'' with at most two branches
+per node: it is either empty, or else is a node consisting of a
+value, and a left and right subtree (again, binary trees).\footnote{Example of binary tree types are
+\spadtype{BinarySearchTree} (see 
+\downlink{`BinarySearchTree'}{BinarySearchTreeXmpPage}
+\ignore{BinarySearchTree},
+\spadtype{PendantTree}, \spadtype{TournamentTree},
+and \spadtype{BalancedBinaryTree} (see 
+\downlink{`BalancedBinaryTree'}{BalancedBinaryTreeXmpPage}
+\ignore{BalancedBinaryTree}).}
+
+\xtc{
+A {\it binary search tree} is a binary tree such that,
+for each node, the value of the node is
+greater than all values (if any) in the left subtree,
+and less than or equal all values (if any) in the right subtree.
+}{
+\spadpaste{binarySearchTree [5,3,2,9,4,7,11]}
+}
+
+\xtc{
+A {\it balanced binary tree} is useful for doing modular computations.
+Given a list \axiom{lm} of moduli,
+\axiomFun{modTree}\axiom{(a,lm)} produces a balanced binary
+tree with the values \texht{$a \bmod m$}{a {\tt mod} m}
+at its leaves.
+}{
+\spadpaste{modTree(8,[2,3,5,7])}
+}
+
+A \spadgloss{set} is a collection of elements where duplication
+and order is irrelevant.\footnote{See 
+\downlink{`Set'}{SetXmpPage}\ignore{Set} for more
+details.}
+Sets are always finite and have no corresponding
+structure like streams for infinite collections.
+
+\xtc{
+%Create sets using braces (\axiomSyntax{\{} and \axiomSyntax{\}})
+%rather than brackets.
+}{
+\spadpaste{fs := set[1/3,4/5,-1/3,4/5] \bound{fs}}
+}
+
+A \spadgloss{multiset}
+is a set that keeps track of the number
+of duplicate values.\footnote{See 
+\downlink{`MultiSet'}{MultiSetXmpPage}\ignore{MultiSet} for details.}
+\xtc{
+For all the primes \axiom{p} between 2 and 1000, find the
+distribution of \texht{$p \bmod 5$}{p mod 5}.
+}{
+\spadpaste{multiset [x rem 5 for x in primes(2,1000)]}
+}
+
+A \spadgloss{table}
+is conceptually a set of ``key--value'' pairs and
+is a generalization of a multiset.\footnote{For examples of tables, see
+\spadtype{AssociationList} (
+\downlink{`AssociationList'}{AssociationListXmpPage}\ignore{AssociationList}),
+\spadtype{HashTable},
+\spadtype{KeyedAccessFile} (
+\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile}),
+\spadtype{Library} (\downlink{`Library'}{LibraryXmpPage}\ignore{Library}),
+\spadtype{SparseTable} (
+\downlink{`SparseTable'}{SparseTableXmpPage}\ignore{SparseTable}),
+\spadtype{StringTable} (
+\downlink{`StringTable'}{StringTableXmpPage}\ignore{StringTable}),
+and \spadtype{Table} (\downlink{`Table'}{TableXmpPage}\ignore{Table}).}
+The domain \spadtype{Table(Key, Entry)} provides a general-purpose
+type for tables with {\it values} of type \axiom{Entry} indexed
+by {\it keys} of type \axiom{Key}.
+
+\xtc{
+Compute the above distribution of primes using tables.
+First, let \axiom{t} denote an empty table of keys and values,
+each of type \spadtype{Integer}.
+}{
+\spadpaste{t : Table(Integer,Integer) := empty()\bound{t}}
+}
+
+We define a function \userfun{howMany} to return the number
+of values of a given modulus \axiom{k} seen so far.
+It calls \axiomFun{search}\axiom{(k,t)} which returns the number of
+values stored under the key \axiom{k} in table \axiom{t}, or
+\axiom{"failed"} if no such value is yet stored in \axiom{t} under
+\axiom{k}.
+
+\xtc{
+In English, this says ``Define \axiom{howMany(k)} as follows.
+First, let \smath{n} be the value of \axiomFun{search}\smath{(k,t)}.
+Then, if \smath{n} has the value \smath{"failed"}, return the value
+\smath{1}; otherwise return \smath{n + 1}.''
+}{
+\spadpaste{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how}}
+}
+\xtc{
+Run through the primes to create the table, then print the table.
+The expression \axiom{t.m := howMany(m)} updates the value in table \axiom{t}
+stored under key \axiom{m}.
+}{
+\spadpaste{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t}}
+}
+
+A {\it record}
+is an example of an inhomogeneous collection
+of objects.\footnote{See 
+\downlink{``\ugTypesRecordsTitle''}{ugTypesRecordsPage} 
+in Section \ugTypesRecordsNumber\ignore{ugTypesRecords} for details.}
+A record consists of a set of named {\it selectors} that
+can be used to access its components.
+
+\xtc{
+Declare that \axiom{daniel} can only be
+assigned a record with two prescribed fields.
+}{
+\spadpaste{daniel : Record(age : Integer, salary : Float) \bound{danieldec}}
+}
+\xtc{
+Give \axiom{daniel} a value, using square brackets to enclose the values of
+the fields.
+}{
+\spadpaste{daniel := [28, 32005.12] \free{danieldec}\bound{daniel}}
+}
+\xtc{
+Give \axiom{daniel} a raise.
+}{
+\spadpaste{daniel.salary := 35000; daniel \free{daniel}}
+}
+
+A {\it union}
+is a data structure used when objects
+have multiple types.\footnote{See 
+\downlink{``\ugTypesUnionsTitle''}{ugTypesUnionsPage} 
+in Section \ugTypesUnionsNumber\ignore{ugTypesUnions} for details.}
+
+\xtc{
+Let \axiom{dog} be either an integer or a string value.
+}{
+\spadpaste{dog: Union(licenseNumber: Integer, name: String)\bound{xint}}
+}
+\xtc{
+Give \axiom{dog} a name.
+}{
+\spadpaste{dog := "Whisper"\free{xint}}
+}
+
+All told, there are over forty different data structures in
+Axiom.
+Using the domain constructors described in 
+\downlink{``\ugDomainsTitle''}{ugDomainsPage} 
+in Chapter \ugDomainsNumber\ignore{ugDomains}, you
+can add your own data structure or extend an existing one.
+Choosing the right data structure for your application may be the key
+to obtaining good performance.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroTwoDimTitle}{Expanding to Higher Dimensions}
+\newcommand{\ugIntroTwoDimNumber}{1.7.}
+
+@
+\section{Expanding to Higher Dimensions}
+\label{ugIntroTwoDimPage}
+\begin{itemize}
+\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
+page~\pageref{TwoDimensionalArrayXmpPage}
+\item MatrixXmpPage \ref{MatrixXmpPage} on
+page~\pageref{MatrixXmpPage}
+\item PermanentXmpPage \ref{PermanentXmpPage} on
+page~\pageref{PermanentXmpPage}
+\item SquareMatrixXmpPage \ref{SquareMatrixXmpPage} on
+page~\pageref{SquareMatrixXmpPage}
+\item VectorXmpPage \ref{VectorXmpPage} on
+page~\pageref{VectorXmpPage}
+\item ugProblemEigenPage \ref{ugProblemEigenPage} on
+page~\pageref{ugProblemEigenPage}
+\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
+page~\pageref{ugProblemLinPolEqnPage}
+\item ugLangItsPage \ref{ugLangItsPage} on
+page~\pageref{ugLangItsPage}
+\end{itemize}
+\index{pages!ugIntroTwoDimPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroTwoDimPage}
+\index{ugIntroTwoDimPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroTwoDimPage}{1.7. Expanding to Higher Dimensions}
+\beginscroll
+%
+
+To get higher dimensional aggregates, you can create one-dimensional
+aggregates with elements that are themselves
+aggregates, for example, lists of lists, one-dimensional arrays of
+lists of multisets, and so on.
+For applications requiring two-dimensional homogeneous aggregates,
+you will likely find {\it two-dimensional arrays}
+and {\it matrices} most useful.
+
+The entries in \spadtype{TwoDimensionalArray} and
+\spadtype{Matrix} objects
+are all the same type, except that those for
+\spadtype{Matrix} must belong to a \spadtype{Ring}.
+You create and access elements in roughly the same way.
+Since matrices have an understood algebraic structure, certain algebraic
+operations are available for matrices but not for arrays.
+Because of this, we limit our discussion here to
+\spadtype{Matrix}, that can be regarded as an extension of
+\spadtype{TwoDimensionalArray}.\footnote{See
+\downlink{`TwoDimensionalArray'}{TwoDimensionalArrayXmpPage}
+\ignore{TwoDimensionalArray} for more information about arrays.
+For more information about Axiom's linear algebra
+facilities, see \downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}, 
+\downlink{`Permanent'}{PermanentXmpPage}\ignore{Permanent},
+\downlink{`SquareMatrix'}{SquareMatrixXmpPage}\ignore{SquareMatrix}, 
+\downlink{`Vector'}{VectorXmpPage}\ignore{Vector},
+\downlink{``\ugProblemEigenTitle''}{ugProblemEigenPage} 
+in Section \ugProblemEigenNumber\ignore{ugProblemEigen}
+\texht{(computation of eigenvalues and
+eigenvectors)}{}, and
+\downlink{``\ugProblemLinPolEqnTitle''}{ugProblemLinPolEqnPage} 
+in Section \ugProblemLinPolEqnNumber\ignore{ugProblemLinPolEqn}\
+texht{(solution of linear and
+polynomial equations)}{}.}
+
+\xtc{
+You can create a matrix from a list of lists,
+where each of the inner lists represents a row of the matrix.
+}{
+\spadpaste{m := matrix([[1,2], [3,4]]) \bound{m}}
+}
+\xtc{
+The ``collections'' construct (see 
+\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
+in Section \ugLangItsNumber\ignore{ugLangIts}) is
+useful for creating matrices whose entries are given by formulas.
+}{
+\spadpaste{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4]) \bound{hilb}}
+}
+\xtc{
+Let \axiom{vm} denote the three by three Vandermonde matrix.
+}{
+\spadpaste{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]] \bound{vm}}
+}
+\xtc{
+Use this syntax to extract an entry in the matrix.
+}{
+\spadpaste{vm(3,3) \free{vm}}
+}
+\xtc{
+You can also pull out a \axiomFun{row} or a \axiom{column}.
+}{
+\spadpaste{column(vm,2) \free{vm}}
+}
+\xtc{
+You can do arithmetic.
+}{
+\spadpaste{vm * vm \free{vm}}
+}
+\xtc{
+You can perform operations such as
+\axiomFun{transpose}, \axiomFun{trace}, and \axiomFun{determinant}.
+}{
+\spadpaste{factor determinant vm \free{vm}\bound{d}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroYouTitle}{Writing Your Own Functions}
+\newcommand{\ugIntroYouNumber}{1.8.}
+
+@
+\section{Writing Your Own Functions}
+\label{ugIntroYouPage}
+\begin{itemize}
+\item ugUserPage \ref{ugUserPage} on
+page~\pageref{ugUserPage}
+\item ugInOutInPage \ref{ugInOutInPage} on
+page~\pageref{ugInOutInPage}
+\end{itemize}
+\index{pages!ugIntroYouPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroYouPage}
+\index{ugIntroYouPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroYouPage}{1.8. Writing Your Own Functions}
+\beginscroll
+%
+
+Axiom provides you with a very large library of predefined
+operations and objects to compute with.
+You can use the Axiom library of constructors to create new
+objects dynamically of quite arbitrary complexity.
+For example, you can make lists of matrices of fractions of
+polynomials with complex floating point numbers as coefficients.
+Moreover, the library provides a wealth of operations that allow
+you to create and manipulate these objects.
+
+For many applications,
+you need to interact with the interpreter and write some
+Axiom programs to tackle your application.
+Axiom allows you to write functions interactively,
+thereby effectively extending the system library.
+Here we give a few simple examples, leaving the details to 
+\downlink{``\ugUserTitle''}{ugUserPage} in 
+Chapter \ugUserNumber\ignore{ugUser}.
+
+We begin by looking at several ways that you can define the
+``factorial'' function in Axiom.
+The first way is to give a
+piece-wise definition of the function.
+This method is best for a general recurrence
+relation since the pieces are gathered together and compiled into
+an efficient iterative function.
+Furthermore, enough previously computed values are automatically
+saved so that a subsequent call to the function can pick up from
+where it left off.
+
+\xtc{
+Define the value of \userfun{fact} at \axiom{0}.
+}{
+\spadpaste{fact(0) == 1 \bound{fact}}
+}
+\xtc{
+Define the value of \axiom{fact(n)} for general \axiom{n}.
+}{
+\spadpaste{fact(n) == n*fact(n-1)\bound{facta}\free{fact}}
+}
+\xtc{
+Ask for the value at \axiom{50}.
+The resulting function created by Axiom
+computes the value by iteration.
+}{
+\spadpaste{fact(50) \free{facta}}
+}
+\xtc{
+A second definition uses an \axiom{if-then-else} and recursion.
+}{
+\spadpaste{fac(n) == if n < 3 then n else n * fac(n - 1) \bound{fac}}
+}
+\xtc{
+This function is less efficient than the previous version since
+each iteration involves a recursive function call.
+}{
+\spadpaste{fac(50) \free{fac}}
+}
+\xtc{
+A third version directly uses iteration.
+}{
+\spadpaste{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a) \bound{fa}}
+}
+\xtc{
+This is the least space-consumptive version.
+}{
+\spadpaste{fa(50) \free{fa}}
+}
+\xtc{
+A final version appears to construct a large list and then reduces over
+it with multiplication.
+}{
+\spadpaste{f(n) == reduce(*,[i for i in 2..n]) \bound{f}}
+}
+\xtc{
+In fact, the resulting computation is optimized into an efficient
+iteration loop equivalent to that of the third version.
+}{
+\spadpaste{f(50) \free{f}}
+}
+\xtc{
+The library version uses an algorithm that is different from the four
+above because it highly optimizes the recurrence relation definition of
+\axiomFun{factorial}.
+}{
+\spadpaste{factorial(50)}
+}
+
+You are not limited to one-line functions in Axiom.
+If you place your function definitions in {\bf .input} files
+(see \downlink{``\ugInOutInTitle''}{ugInOutInPage} 
+in Section \ugInOutInNumber\ignore{ugInOutIn}), you can have
+multi-line functions that use indentation for grouping.
+
+Given \axiom{n} elements, \axiomFun{diagonalMatrix} creates an
+\axiom{n} by \axiom{n} matrix with those elements down the diagonal.
+This function uses a permutation matrix
+that interchanges the \axiom{i}th and \axiom{j}th rows of a matrix
+by which it is right-multiplied.
+
+\xtc{
+This function definition shows a style of definition that can be used
+in {\bf .input} files.
+Indentation is used to create \spadglossSee{blocks}{block}\texht{\/}{}:
+sequences of expressions that are evaluated in sequence except as
+modified by control statements such as \axiom{if-then-else} and \axiom{return}.
+}{
+\begin{spadsrc}[\bound{permMat}]
+permMat(n, i, j) ==
+  m := diagonalMatrix
+    [(if i = k or j = k then 0 else 1)
+      for k in 1..n]
+  m(i,j) := 1
+  m(j,i) := 1
+  m
+\end{spadsrc}
+}
+\xtc{
+This creates a four by four matrix that interchanges the second and third
+rows.
+}{
+\spadpaste{p := permMat(4,2,3) \free{permMat}\bound{p}}
+}
+\xtc{
+Create an example matrix to permute.
+}{
+\spadpaste{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m}}
+}
+\xtc{
+Interchange the second and third rows of m.
+}{
+\spadpaste{permMat(4,2,3) * m \free{p m}}
+}
+
+A function can also be passed as an argument to another function,
+which then applies the function or passes it off to some other
+function that does.
+You often have to declare the type of a function that has
+functional arguments.
+
+\xtc{
+This declares \userfun{t} to be a two-argument function that
+returns a \spadtype{Float}.
+The first argument is a function that takes one \spadtype{Float}
+argument and returns a \spadtype{Float}.
+}{
+\spadpaste{t : (Float -> Float, Float) -> Float \bound{tdecl}}
+}
+\xtc{
+This is the definition of \userfun{t}.
+}{
+\spadpaste{t(fun, x) == fun(x)**2 + sin(x)**2 \free{tdecl}\bound{t}}
+}
+\xtc{
+We have not defined a \axiomFun{cos} in the workspace. The one from the
+Axiom library will do.
+}{
+\spadpaste{t(cos, 5.2058) \free{t}}
+}
+\xtc{
+Here we define our own (user-defined) function.
+}{
+\spadpaste{cosinv(y) == cos(1/y) \bound{cosinv}}
+}
+\xtc{
+Pass this function as an argument to \userfun{t}.
+}{
+\spadpaste{t(cosinv, 5.2058) \free{t}\free{cosinv}}
+}
+
+Axiom also has pattern matching capabilities for
+simplification
+of expressions and for defining new functions by rules.
+For example, suppose that you want to apply regularly a transformation
+that groups together products of radicals:
+\texht{$$\sqrt{a}\:\sqrt{b} \mapsto \sqrt{ab}, \quad
+(\forall a)(\forall b)$$}{\axiom{sqrt(a) * sqrt(b) by sqrt(a*b)} for any \axiom{a} and \axiom{b}}
+Note that such a transformation is not generally correct.
+Axiom never uses it automatically.
+
+\xtc{
+Give this rule the name \userfun{groupSqrt}.
+}{
+\spadpaste{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b)) \bound{g}}
+}
+\xtc{
+Here is a test expression.
+}{
+\spadpaste{a := (sqrt(x) + sqrt(y) + sqrt(z))**4 \bound{sxy}}
+}
+\xtc{
+The rule
+\userfun{groupSqrt} successfully simplifies the expression.
+}{
+\spadpaste{groupSqrt a \free{sxy} \free{g}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroVariablesTitle}{Polynomials}
+\newcommand{\ugIntroVariablesNumber}{1.9.}
+
+@
+\section{Polynomials}
+\label{ugIntroVariablesPage}
+\index{pages!ugIntroVariablesPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroVariablesPage}
+\index{ugIntroVariablesPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroVariablesPage}{1.9. Polynomials}
+\beginscroll
+%
+
+Polynomials are the commonly used algebraic types in symbolic
+computation.
+Interactive users of Axiom generally only see one type
+of polynomial: \spadtype{Polynomial(R)}.
+This type represents polynomials in any number of unspecified
+variables over a particular coefficient domain \axiom{R}.
+This type represents its coefficients
+\spadglossSee{sparsely}{sparse}: only terms with non-zero
+coefficients are represented.
+
+In building applications, many other kinds of polynomial
+representations are useful.
+Polynomials may have one variable or multiple variables, the
+variables can be named or unnamed, the coefficients can be stored
+sparsely or densely.
+So-called ``distributed multivariate polynomials'' store
+polynomials as coefficients paired with vectors of exponents.
+This type is particularly efficient for use in algorithms for
+solving systems of non-linear polynomial equations.
+
+\xtc{
+The polynomial constructor most familiar to the interactive user
+is \spadtype{Polynomial}.
+}{
+\spadpaste{(x**2 - x*y**3 +3*y)**2}
+}
+\xtc{
+If you wish to restrict the variables used,
+\spadtype{UnivariatePolynomial}
+provides polynomials in one variable.
+}{
+\spadpaste{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
+}
+\xtc{
+The constructor
+\spadtype{MultivariatePolynomial} provides polynomials in one or more
+specified variables.
+}{
+\spadpaste{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2 \bound{m}}
+}
+\xtc{
+You can change the way the polynomial appears by modifying the variable
+ordering in the explicit list.
+}{
+\spadpaste{m :: MPOLY([y,x],INT) \free{m}}
+}
+\xtc{
+The constructor
+\spadtype{DistributedMultivariatePolynomial} provides
+polynomials in one or more specified variables with the monomials
+ordered lexicographically.
+}{
+\spadpaste{m :: DMP([y,x],INT) \free{m}}
+}
+\xtc{
+The constructor
+\spadtype{HomogeneousDistributedMultivariatePolynomial} is similar except that
+the monomials are ordered by total order refined by reverse
+lexicographic order.
+}{
+\spadpaste{m :: HDMP([y,x],INT) \free{m}}
+}
+
+More generally, the domain constructor
+\spadtype{GeneralDistributedMultivariatePolynomial} allows the
+user to provide an arbitrary predicate to define his own term ordering.
+These last three constructors are typically used in
+\texht{Gr\"{o}bner}{Groebner} basis
+applications and when a flat (that is, non-recursive) display is
+wanted and the term ordering is critical for controlling the computation.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroCalcLimitsTitle}{Limits}
+\newcommand{\ugIntroCalcLimitsNumber}{1.10.}
+
+@
+\section{Limits}
+\label{ugIntroCalcLimitsPage}
+\begin{itemize}
+\item ugProblemLimitsPage \ref{ugProblemLimitsPage} on
+page~\pageref{ugProblemLimitsPage}
+\end{itemize}
+\index{pages!ugIntroCalcLimitsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroCalcLimitsPage}
+\index{ugIntroCalcLimitsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroCalcLimitsPage}{1.10. Limits}
+\beginscroll
+%
+
+Axiom's \axiomFun{limit} function is usually used to
+evaluate limits of quotients where the numerator and denominator
+both tend to zero or both tend to infinity.
+To find the limit of an expression \axiom{f} as a real variable
+\axiom{x} tends to a limit value \axiom{a}, enter \axiom{limit(f, x=a)}.
+Use \axiomFun{complexLimit} if the variable is complex.
+Additional information and examples of limits are in
+\downlink{``\ugProblemLimitsTitle''}{ugProblemLimitsPage} 
+in Section \ugProblemLimitsNumber\ignore{ugProblemLimits}.
+
+\xtc{
+You can take limits of functions with parameters.
+}{
+\spadpaste{g := csc(a*x) / csch(b*x) \bound{g}}
+}
+\xtc{
+As you can see, the limit is expressed in terms of the parameters.
+}{
+\spadpaste{limit(g,x=0) \free{g}}
+}
+%
+\xtc{
+A variable may also approach plus or minus infinity:
+}{
+\spadpaste{h := (1 + k/x)**x \bound{h}}
+}
+\xtc{
+\texht{Use \axiom{\%plusInfinity} and \axiom{\%minusInfinity} to
+denote $\infty$ and $-\infty$.}{}
+}{
+\spadpaste{limit(h,x=\%plusInfinity) \free{h}}
+}
+\xtc{
+A function can be defined on both sides of a particular value, but
+may tend to different limits as its variable approaches that value from the
+left and from the right.
+}{
+\spadpaste{limit(sqrt(y**2)/y,y = 0)}
+}
+\xtc{
+As \axiom{x} approaches \axiom{0} along the real axis, \axiom{exp(-1/x**2)}
+tends to \axiom{0}.
+}{
+\spadpaste{limit(exp(-1/x**2),x = 0)}
+}
+\xtc{
+However, if \axiom{x} is allowed to approach \axiom{0} along any path in the
+complex plane, the limiting value of \axiom{exp(-1/x**2)} depends on the
+path taken because the function has an essential singularity at \axiom{x=0}.
+This is reflected in the error message returned by the function.
+}{
+\spadpaste{complexLimit(exp(-1/x**2),x = 0)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroSeriesTitle}{Series}
+\newcommand{\ugIntroSeriesNumber}{1.11.}
+
+@
+\section{Series}
+\label{ugIntroSeriesPage}
+\begin{itemize}
+\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
+page~\pageref{ugProblemSeriesPage}
+\end{itemize}
+\index{pages!ugIntroSeriesPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroSeriesPage}
+\index{ugIntroSeriesPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroSeriesPage}{1.11. Series}
+\beginscroll
+%
+
+Axiom also provides power series.
+By default, Axiom tries to compute and display the first ten elements
+of a series.
+Use \spadsys{)set streams calculate} to change the default value
+to something else.
+For the purposes of this book, we have used this system command to display
+fewer than ten terms.
+For more information about working with series, see
+\downlink{``\ugProblemSeriesTitle''}{ugProblemSeriesPage} 
+in Section \ugProblemSeriesNumber\ignore{ugProblemSeries}.
+
+\xtc{
+You can convert a functional expression to a power series by using the
+operation \axiomFun{series}.
+In this example,
+\axiom{sin(a*x)} is expanded in powers of \axiom{(x - 0)},
+that is, in powers of \axiom{x}.
+}{
+\spadpaste{series(sin(a*x),x = 0)}
+}
+\xtc{
+This expression expands
+\axiom{sin(a*x)} in powers of \axiom{(x - \%pi/4)}.
+}{
+\spadpaste{series(sin(a*x),x = \%pi/4)}
+}
+\xtc{
+Axiom provides
+{\it Puiseux series:}
+series with rational number exponents.
+The first argument to \axiomFun{series} is an in-place function that
+computes the \eth{\axiom{n}} coefficient.
+(Recall that
+the \axiomSyntax{+->} is an infix operator meaning ``maps to.'')
+}{
+\spadpaste{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
+}
+\xtc{
+Once you have created a power series, you can perform arithmetic operations
+on that series.
+We compute the Taylor expansion of \axiom{1/(1-x)}.
+}{
+\spadpaste{f := series(1/(1-x),x = 0) \bound{f}}
+}
+\xtc{
+Compute the square of the series.
+}{
+\spadpaste{f ** 2 \free{f}}
+}
+\xtc{
+The usual elementary functions
+(\axiomFun{log}, \axiomFun{exp}, trigonometric functions, and so on)
+are defined for power series.
+}{
+\spadpaste{f := series(1/(1-x),x = 0) \bound{f1}}
+}
+\xtc{
+}{
+\spadpaste{g := log(f) \free{f1}\bound{g}}
+}
+\xtc{
+}{
+\spadpaste{exp(g) \free{g}}
+}
+\xtc{
+Here is a way to obtain numerical approximations of
+\axiom{e} from the Taylor series expansion of \axiom{exp(x)}.
+First create the desired Taylor expansion.
+}{
+\spadpaste{f := taylor(exp(x)) \bound{f2}}
+}
+\xtc{
+Evaluate the series at the value \axiom{1.0}.
+As you see, you get a sequence of partial sums.
+}{
+\spadpaste{eval(f,1.0) \free{f2}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroCalcDerivTitle}{Derivatives}
+\newcommand{\ugIntroCalcDerivNumber}{1.12.}
+
+@
+\section{Derivatives}
+\label{ugIntroCalcDerivPage}
+\index{pages!ugIntroCalcDerivPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroCalcDerivPage}
+\index{ugIntroCalcDerivPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroCalcDerivPage}{1.12. Derivatives}
+\beginscroll
+%
+Use the Axiom function \axiomFun{D} to differentiate an
+expression.
+
+\texht{\vskip 2pc}{}
+\xtc{
+To find the derivative of an expression \axiom{f} with respect to a
+variable \axiom{x}, enter \axiom{D(f, x)}.
+}{
+\spadpaste{f := exp exp x \bound{f}}
+}
+\xtc{
+}{
+\spadpaste{D(f, x) \free{f}}
+}
+\xtc{
+An optional third argument \axiom{n} in \axiomFun{D} asks
+Axiom for the \eth{\axiom{n}} derivative of \axiom{f}.
+This finds the fourth derivative of \axiom{f} with respect to \axiom{x}.
+}{
+\spadpaste{D(f, x, 4) \free{f}}
+}
+\xtc{
+You can also compute partial derivatives by specifying the order of
+differentiation.
+}{
+\spadpaste{g := sin(x**2 + y) \bound{g}}
+}
+\xtc{
+}{
+\spadpaste{D(g, y) \free{g}}
+}
+\xtc{
+}{
+\spadpaste{D(g, [y, y, x, x]) \free{g}}
+}
+
+Axiom can manipulate the derivatives (partial and iterated) of
+expressions involving formal operators.
+All the dependencies must be explicit.
+\xtc{
+This returns \axiom{0} since \axiom{F} (so far)
+does not explicitly depend on \axiom{x}.
+}{
+\spadpaste{D(F,x)}
+}
+Suppose that we have \axiom{F} a function of \axiom{x},
+\axiom{y}, and \axiom{z}, where \axiom{x} and \axiom{y} are themselves
+functions of \axiom{z}.
+\xtc{
+Start by declaring that \axiom{F}, \axiom{x}, and \axiom{y}
+are operators.
+}{
+\spadpaste{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y}}
+}
+\xtc{
+You can use \axiom{F}, \axiom{x}, and \axiom{y} in expressions.
+}{
+\spadpaste{a := F(x z, y z, z**2) + x y(z+1) \bound{a}\free{F}\free{x}\free{y}}
+}
+\xtc{
+Differentiate formally with respect to \axiom{z}.
+The formal derivatives appearing in \axiom{dadz} are not just formal symbols,
+but do represent the derivatives of \axiom{x}, \axiom{y}, and \axiom{F}.
+}{
+\spadpaste{dadz := D(a, z)\bound{da}\free{a}}
+}
+\xtc{
+You can evaluate the above for particular functional
+values of \axiom{F}, \axiom{x}, and \axiom{y}.
+If \axiom{x(z)} is \axiom{exp(z)} and \axiom{y(z)} is \axiom{log(z+1)}, then
+this evaluates \axiom{dadz}.
+}{
+\spadpaste{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da}}
+}
+\xtc{
+You obtain the same result by first evaluating \axiom{a} and
+then differentiating.
+}{
+\spadpaste{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1)) \free{a}\bound{eva}}
+}
+\xtc{
+}{
+\spadpaste{D(\%, z)\free{eva}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroIntegrateTitle}{Integration}
+\newcommand{\ugIntroIntegrateNumber}{1.13.}
+
+@
+\section{Integration}
+\label{ugIntroIntegratePage}
+\begin{itemize}
+\item ugProblemIntegrationPage \ref{ugProblemIntegrationPage} on
+page~\pageref{ugProblemIntegrationPage}
+\end{itemize}
+\index{pages!ugIntroIntegratePage!ug01.ht}
+\index{ug01.ht!pages!ugIntroIntegratePage}
+\index{ugIntroIntegratePage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroIntegratePage}{1.13. Integration}
+\beginscroll
+%
+
+Axiom has extensive library facilities for integration.
+
+The first example is the integration of a fraction with
+denominator that factors into a quadratic and a quartic
+irreducible polynomial.
+The usual partial fraction approach used by most other computer
+algebra systems either fails or introduces expensive unneeded
+algebraic numbers.
+
+\xtc{
+We use a factorization-free algorithm.
+}{
+\spadpaste{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+}
+
+When real parameters are present, the form of the integral can depend on
+the signs of some expressions.
+
+\xtc{
+Rather than query the user or make sign assumptions, Axiom returns
+all possible answers.
+}{
+\spadpaste{integrate(1/(x**2 + a),x)}
+}
+
+The \axiomFun{integrate} operation generally assumes that all
+parameters are real.
+The only exception is when the integrand has complex valued
+quantities.
+
+\xtc{
+If the parameter is complex instead of real, then the notion of sign is
+undefined and there is a unique answer.
+You can request this answer by ``prepending'' the word ``complex'' to the
+command name:
+}{
+\spadpaste{complexIntegrate(1/(x**2 + a),x)}
+}
+
+The following two examples illustrate the limitations of
+table-based approaches.
+The two integrands are very similar, but the answer to one of them
+requires the addition of two new algebraic numbers.
+
+\xtc{
+This one is the easy one.
+The next one looks very similar
+but the answer is much more complicated.
+}{
+\spadpaste{integrate(x**3 / (a+b*x)**(1/3),x)}
+}
+\xtc{
+Only an algorithmic approach
+is guaranteed to find what new constants must be added in order to
+find a solution.
+}{
+\spadpaste{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+}
+
+Some computer algebra systems use heuristics or table-driven
+approaches to integration.
+When these systems cannot determine the answer to an integration
+problem, they reply ``I don't know.'' Axiom uses a
+algorithm for integration.
+that conclusively proves that an integral cannot be expressed in
+terms of elementary functions.
+
+\xtc{
+When Axiom returns an integral sign, it has proved
+that no answer exists as an elementary function.
+}{
+\spadpaste{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+}
+Axiom can handle complicated mixed functions much beyond what you
+can find in tables.
+\xtc{
+Whenever possible, Axiom tries to express the answer using the functions
+present in the integrand.
+}{
+\spadpaste{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
+}
+\xtc{
+A strong structure-checking algorithm in Axiom finds hidden algebraic
+relationships between functions.
+}{
+\spadpaste{integrate(tan(atan(x)/3),x)}
+}
+\noindent
+%%--> Bob---> please make these formulas in this section smaller.
+The discovery of this algebraic relationship is necessary for correct
+integration of this function.
+Here are the details:
+\indent{4}
+\beginitems
+\item[1. ] 
+If \texht{$x=\tan t$}{\axiom{x=tan(t)}} and
+\texht{$g=\tan (t/3)$}{\axiom{g=tan(t/3)}} then the following
+algebraic relation is true:
+\texht{$${g^3-3xg^2-3g+x=0}$$}{\centerline{\axiom{g**3 - 3*x*g**2 - 3*g + x = 0}}}
+\item[2. ] 
+Integrate \axiom{g} using this algebraic relation; this produces:
+\texht{$${%
+{(24g^2 - 8)\log(3g^2 - 1) + (81x^2 + 24)g^2 + 72xg - 27x^2 - 16}
+\over{54g^2 - 18}}$$}{\centerline{\axiom{(24g**2 - 8)log(3g**2 - 1) +
+(81x**2 + 24)g**2 + 72xg - 27x**2 - 16/ (54g**2 - 18)}}}
+\item[3. ] 
+Rationalize the denominator, producing:
+\texht{\narrowDisplay{{8\log(3g^2-1) - 3g^2 + 18xg + 16} \over
+{18}}}{\centerline{\axiom{(8*log(3*g**2-1) - 3*g**2 + 18*x*g + 16)/18}}}
+Replace \axiom{g} by the initial definition
+\texht{$g = \tan(\arctan(x)/3)$}{\axiom{g = tan(arctan(x)/3)}}
+to produce the final result.
+\enditems
+\indent{0}
+
+\xtc{
+This is an example of a mixed function where
+the algebraic layer is over the transcendental one.
+}{
+\spadpaste{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
+}
+\xtc{
+While incomplete for non-elementary functions, Axiom can
+handle some of them.
+}{
+\spadpaste{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+}
+
+More examples of Axiom's integration capabilities are discussed in
+\downlink{``\ugProblemIntegrationTitle''}{ugProblemIntegrationPage} 
+in Section \ugProblemIntegrationNumber\ignore{ugProblemIntegration}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroDiffEqnsTitle}{Differential Equations}
+\newcommand{\ugIntroDiffEqnsNumber}{1.14.}
+
+@
+\section{Differential Equations}
+\label{ugIntroDiffEqnsPage}
+\index{pages!ugIntroDiffEqnsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroDiffEqnsPage}
+\index{ugIntroDiffEqnsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroDiffEqnsPage}{1.14. Differential Equations}
+\beginscroll
+%
+The general approach used in integration also carries over to the
+solution of linear differential equations.
+
+\labelSpace{2pc}
+\xtc{
+Let's solve some differential equations.
+Let \axiom{y} be the unknown function in terms of \axiom{x}.
+}{
+\spadpaste{y := operator 'y \bound{y}}
+}
+\xtc{
+Here we solve a third order equation with polynomial coefficients.
+}{
+\spadpaste{deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 \bound{e3}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{e3}\free{y}}
+}
+\xtc{
+Here we find all the algebraic function solutions of the equation.
+}{
+\spadpaste{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 \bound{e5}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{e5}\free{y}}
+}
+
+Coefficients of differential equations can come from arbitrary
+constant fields.
+For example, coefficients can contain algebraic numbers.
+
+\xtc{
+This example has solutions
+whose logarithmic derivative is an algebraic function of
+degree two.
+}{
+\spadpaste{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(eq,y,x).basis\free{eq}}
+}
+
+\xtc{
+Here's another differential equation to solve.
+}{
+\spadpaste{deq := D(y x, x) = y(x) / (x + y(x) * log y x) \bound{deqi}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{deqi y}}
+}
+
+Rather than attempting to get a closed form solution of
+a differential equation, you instead might want to find an
+approximate solution in the form of a series.
+
+\xtc{
+Let's solve a system of nonlinear first order equations and get a
+solution in power series.
+Tell Axiom that \axiom{x} is also an operator.
+}{
+\spadpaste{x := operator 'x\bound{x}}
+}
+\xtc{
+Here are the two equations forming our system.
+}{
+\spadpaste{eq1 := D(x(t), t) = 1 + x(t)**2\free{x}\free{y}\bound{eq1}}
+}
+\xtc{
+}{
+\spadpaste{eq2 := D(y(t), t) = x(t) * y(t)\free{x}\free{y}\bound{eq2}}
+}
+\xtc{
+We can solve the system around \axiom{t = 0} with the initial conditions
+\axiom{x(0) = 0} and \axiom{y(0) = 1}.
+Notice that since we give the unknowns in the
+order \axiom{[x, y]}, the answer is a list of two series in the order
+\axiom{[series for x(t), series for y(t)]}.
+}{
+\spadpaste{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x}\free{y}\free{eq1}\free{eq2}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroSolutionTitle}{Solution of Equations}
+\newcommand{\ugIntroSolutionNumber}{1.15.}
+
+@
+\section{Solution of Equations}
+\label{ugIntroSolutionPage}
+\index{pages!ugIntroSolutionPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroSolutionPage}
+\index{ugIntroSolutionPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroSolutionPage}{1.15. Solution of Equations}
+\beginscroll
+%
+
+Axiom also has state-of-the-art algorithms for the solution
+of systems of polynomial equations.
+When the number of equations and unknowns is the same, and you
+have no symbolic coefficients, you can use \spadfun{solve} for
+real roots and \spadfun{complexSolve} for complex roots.
+In each case, you tell Axiom how accurate you want your
+result to be.
+All operations in the \spadfun{solve} family return answers in
+the form of a list of solution sets, where each solution set is a
+list of equations.
+
+\xtc{
+A system of two equations involving a symbolic
+parameter \axiom{t}.
+}{
+\spadpaste{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1}}
+}
+\xtc{
+Find the real roots of \spad{S(19)} with
+rational arithmetic, correct to within \smath{1/10^{20}}.
+}{
+\spadpaste{solve(S(19),1/10**20)\free{S1}}
+}
+\xtc{
+Find the complex roots of \spad{S(19)} with floating
+point coefficients to \spad{20} digits accuracy in the mantissa.
+}{
+\spadpaste{complexSolve(S(19),10.e-20)\free{S1}}
+}
+\xtc{
+If a system of equations has symbolic coefficients and you want
+a solution in radicals, try \spadfun{radicalSolve}.
+}{
+\spadpaste{radicalSolve(S(a),[x,y])\free{S1}}
+}
+For systems of equations with symbolic coefficients, you can
+apply \spadfun{solve}, listing the variables that you want
+Axiom to solve for.
+For polynomial equations, a solution cannot usually be expressed
+solely in terms of the other variables.
+Instead, the solution is presented as a ``triangular'' system of
+equations, where each polynomial has coefficients involving
+only the succeeding variables. This is analogous to converting  a linear system
+of equations to ``triangular form''.
+\xtc{
+A system of three equations in five variables.
+}{
+\spadpaste{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e}}
+}
+\xtc{
+Solve the system for unknowns \smath{[x,y,z]},
+reducing the solution to triangular form.
+}{
+\spadpaste{solve(eqns,[x,y,z])\free{e}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug01.ht>>=
+\newcommand{\ugIntroSysCmmandsTitle}{System Commands}
+\newcommand{\ugIntroSysCmmandsNumber}{1.16.}
+
+@
+\section{System Commands}
+\label{ugIntroSysCmmandsPage}
+\begin{itemize}
+\item ugSysCmdPage \ref{ugSysCmdPage} on
+page~\pageref{ugSysCmdPage}
+\end{itemize}
+\index{pages!ugIntroSysCmmandsPage!ug01.ht}
+\index{ug01.ht!pages!ugIntroSysCmmandsPage}
+\index{ugIntroSysCmmandsPage!ug01.ht!pages}
+<<ug01.ht>>=
+\begin{page}{ugIntroSysCmmandsPage}{1.16. System Commands}
+\beginscroll
+%
+
+We conclude our tour of Axiom with a brief discussion
+of \spadgloss{system commands}.
+System commands are special statements that start with a
+closing parenthesis (\axiomSyntax{)}). They are used to control or
+display your Axiom environment, start the \HyperName{}
+system, issue operating system commands and leave Axiom.
+For example, \spadsys{)system} is used
+to issue commands to the operating system from Axiom.
+Here is a brief description of some of these commands.
+For more information on specific commands, see
+\downlink{``\ugSysCmdTitle''}{ugSysCmdPage} 
+in Appendix \ugSysCmdNumber\ignore{ugSysCmd}.
+
+Perhaps the most important user command is the \spadsys{)clear all}
+command that initializes your environment.
+Every section and subsection in this book has an invisible
+\spadsys{)clear all} that is read prior to the examples given in
+the section.
+\spadsys{)clear all} gives you a fresh, empty environment with no
+user variables defined and the step number reset to \axiom{1}.
+The \spadsys{)clear} command can also be used to selectively clear
+values and properties of system variables.
+
+Another useful system command is \spadsys{)read}.
+A preferred way to develop an application in Axiom is to put
+your interactive commands into a file, say {\bf my.input} file.
+To get Axiom to read this file, you use the system command
+\spadsys{)read my.input}.
+If you need to make changes to your approach or definitions, go
+into your favorite editor, change {\bf my.input}, then
+\spadsys{)read my.input} again.
+
+Other system commands include: \spadsys{)history}, to display
+previous input and/or output lines; \spadsys{)display}, to display
+properties and values of workspace variables; and \spadsys{)what}.
+
+\xtc{
+Issue \spadsys{)what} to get a list of Axiom objects that
+contain a given substring in their name.
+}{
+\spadpaste{)what operations integrate}
+}
+
+%\head{subsection}{Undo}{ugIntroUndo}
+
+A useful system command is \spadcmd{)undo}.
+Sometimes while computing interactively with Axiom, you make
+a mistake and enter an incorrect definition or assignment.
+Or perhaps you
+need to try one of several alternative approaches, one after
+another, to find the best way to approach an application.
+For this, you will find the \spadgloss{undo} facility of
+Axiom helpful.
+
+System command \spadsys{)undo n} means ``undo back to step \axiom{n}''; it
+restores the values of user variables to those that existed
+immediately after input expression \axiom{n} was evaluated.
+Similarly, \spadsys{)undo -n} undoes changes caused by the last
+\axiom{n} input expressions.
+Once you have done an \spadsys{)undo},
+you can continue on from there, or make a change and
+{\bf redo} all your input expressions from the point
+of the \spadsys{)undo} forward.
+The \spadsys{)undo} is completely general: it changes the environment
+like any user expression.
+Thus you can \spadsys{)undo} any previous undo.
+
+Here is a sample dialogue between user and Axiom.
+\xtc{
+``Let me define
+two mutually dependent functions \axiom{f} and \axiom{g} piece-wise.''
+}{
+\spadpaste{f(0) == 1; g(0) == 1\bound{u1}}
+}
+\xtc{
+``Here is the general term for \axiom{f}.''
+}{
+\spadpaste{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2}\free{u1}}
+}
+\xtc{
+``And here is the general term for \axiom{g}.''
+}{
+\spadpaste{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3}\free{u2}}
+}
+\xtc{
+``What is value of \axiom{f(3)}?''
+}{
+\spadpaste{f(3)\bound{u4}\free{u3}}
+}
+\noOutputXtc{
+``Hmm, I think I want to define \axiom{f} differently.
+Undo to the environment right after I defined \axiom{f}.''
+}{
+\spadpaste{)undo 2\bound{u5}\free{u4}}
+}
+\xtc{
+``Here is how I think I want \axiom{f} to be defined instead.''
+}{
+\spadpaste{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6}\free{u5}}
+}
+\noOutputXtc{
+Redo the computation from expression \axiom{3} forward.
+}{
+\spadpaste{)undo )redo\bound{u7}\free{u6}}
+}
+\noOutputXtc{
+``I want my old definition of
+\axiom{f} after all. Undo the undo and restore
+the environment to that immediately after \axiom{(4)}.''
+}{
+\spadpaste{)undo 4\bound{u8}\free{u7}}
+}
+\xtc{
+``Check that the value of \axiom{f(3)} is restored.''
+}{
+\spadpaste{f(3)\bound{u9}\free{u8}}
+}
+
+After you have gone off on several tangents, then backtracked to
+previous points in your conversation using \spadsys{)undo}, you
+might want to save all the ``correct'' input commands you issued,
+disregarding those undone.
+The system command \spadsys{)history )write mynew.input} writes a
+clean straight-line program onto the file {\bf mynew.input} on
+your disk.
+
+This concludes your tour of Axiom.
+To disembark, issue the system command \spadsys{)quit} to leave Axiom
+and return to the operating system.
+\endscroll
+\autobuttons
+\end{page}
+%
+@
+\chapter{Users Guide Chapter 2 (ug02.ht)}
+<<ug02.ht>>=
+\newcommand{\ugTypesTitle}{Using Types and Modes}
+\newcommand{\ugTypesNumber}{2.}
+
+@
+\section{Using Types and Modes}
+\label{ugTypesPage}
+\begin{itemize}
+\item ugTypesBasicPage \ref{ugTypesBasicPage} on
+page~\pageref{ugTypesBasicPage}
+\item ugTypesWritingPage \ref{ugTypesWritingPage} on
+page~\pageref{ugTypesWritingPage}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
+page~\pageref{ugTypesRecordsPage}
+\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
+page~\pageref{ugTypesUnionsPage}
+\item ugTypesAnyNonePage \ref{ugTypesAnyNonePage} on
+page~\pageref{ugTypesAnyNonePage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~\pageref{ugTypesConvertPage}
+\item ugTypesSubdomainsPage \ref{ugTypesSubdomainsPage} on
+page~\pageref{ugTypesSubdomainsPage}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\item ugTypesResolvePage \ref{ugTypesResolvePage} on
+page~\pageref{ugTypesResolvePage}
+\item ugTypesExposePage \ref{ugTypesExposePage} on
+page~\pageref{ugTypesExposePage}
+\item ugAvailSnoopPage \ref{ugAvailSnoopPage} on
+page~\pageref{ugAvailSnoopPage}
+\end{itemize}
+\index{pages!ugTypesPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesPage}
+\index{ugTypesPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesPage}{2. Using Types and Modes}
+\beginscroll
+
+In this chapter we look at the key notion of \spadgloss{type} and its
+generalization \spadgloss{mode}.
+We show that every Axiom object has a type that
+determines what you can do with the object.
+In particular, we explain how to use types to call specific functions
+from particular parts of the library and how types and modes can be used
+to create new objects from old.
+We also look at \pspadtype{Record} and \pspadtype{Union} types and
+the special type \axiomType{Any}.
+Finally, we give you an idea of how Axiom manipulates types and
+modes internally to resolve ambiguities.
+
+\beginmenu
+    \menudownlink{{2.1. The Basic Idea}}{ugTypesBasicPage}
+    \menudownlink{{2.2. Writing Types and Modes}}{ugTypesWritingPage}
+    \menudownlink{{2.3. Declarations}}{ugTypesDeclarePage}
+    \menudownlink{{2.4. Records}}{ugTypesRecordsPage}
+    \menudownlink{{2.5. Unions}}{ugTypesUnionsPage}
+    \menudownlink{{2.6. The ``Any'' Domain}}{ugTypesAnyNonePage}
+    \menudownlink{{2.7. Conversion}}{ugTypesConvertPage}
+    \menudownlink{{2.8. Subdomains Again}}{ugTypesSubdomainsPage}
+    \menudownlink{{2.9. Package Calling and Target Types}}{ugTypesPkgCallPage}
+    \menudownlink{{2.10. Resolving Types}}{ugTypesResolvePage}
+    \menudownlink{{2.11. Exposing Domains and Packages}}{ugTypesExposePage}
+    \menudownlink{{2.12. Commands for Snooping}}{ugAvailSnoopPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesBasicTitle}{The Basic Idea}
+\newcommand{\ugTypesBasicNumber}{2.1.}
+
+@
+\section{The Basic Idea}
+\label{ugTypesBasicPage}
+\begin{itemize}
+\item ugTypesBasicDomainConsPage \ref{ugTypesBasicDomainConsPage} on
+page~\pageref{ugTypesBasicDomainConsPage}
+\end{itemize}
+\index{pages!ugTypesBasicPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesBasicPage}
+\index{ugTypesBasicPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesBasicPage}{2.1. The Basic Idea}
+\beginscroll
+
+The Axiom world deals with many kinds of objects.
+There are mathematical objects such as numbers and polynomials,
+data structure objects such as lists and arrays, and graphics
+objects such as points and graphic images.
+Functions are objects too.
+
+Axiom organizes objects using the notion of \spadglossSee{domain of
+computation}{domain}, or simply \spadgloss{domain}.
+Each domain denotes a class of objects.
+The class of objects it denotes is usually given by the name of the
+domain: \axiomType{Integer} for the integers, \axiomType{Float} for
+floating-point numbers, and so on.
+The convention is that the first letter of a domain name is capitalized.
+Similarly, the domain \axiomType{Polynomial(Integer)} denotes ``polynomials
+with integer coefficients.''
+Also, \axiomType{Matrix(Float)} denotes ``matrices with floating-point
+entries.''
+
+Every basic Axiom object belongs to a unique domain.
+The integer \axiom{3} belongs to the domain \axiomType{Integer} and
+the polynomial \axiom{x + 3} belongs to the domain
+\axiomType{Polynomial(Integer)}.
+The domain of an object is also called its \spadgloss{type}.
+Thus we speak of ``the type \axiomType{Integer}''
+and ``the type \axiomType{Polynomial(Integer)}.''
+
+\xtc{
+After an Axiom computation, the type is displayed toward the
+right-hand side of the page (or screen).
+}{
+\spadpaste{-3}
+}
+\xtc{
+Here we create a rational number but it looks like the last result.
+The type however tells you it is different.
+You cannot identify the type of an object by how Axiom
+displays the object.
+}{
+\spadpaste{-3/1}
+}
+\xtc{
+When a computation produces a result of a simpler type, Axiom leaves
+the type unsimplified.
+Thus no information is lost.
+}{
+\spadpaste{x + 3 - x \bound{three}}
+}
+\xtc{
+This seldom matters since Axiom retracts the answer to the
+simpler type if it is necessary.
+}{
+\spadpaste{factorial(\%) \free{three}}
+}
+\xtc{
+When you issue a positive number, the type \axiomType{PositiveInteger} is
+printed.
+Surely, \axiom{3} also has type \axiomType{Integer}!
+The curious reader may now have two questions.
+First, is the type of an object not unique?
+Second, how is \axiomType{PositiveInteger} related to \axiomType{Integer}?
+Read on!
+}{
+\spadpaste{3}
+}
+
+Any domain can be refined to a \spadgloss{subdomain} by a membership
+\spadgloss{predicate}.\footnote{A predicate is a function that,
+when applied to an object of the domain, returns either
+\axiom{true} or \axiom{false}.}
+For example, the domain \axiomType{Integer} can be refined to the
+subdomain \axiomType{PositiveInteger}, the set of integers
+\axiom{x} such that \axiom{x > 0}, by giving the Axiom
+predicate \axiom{x +-> x > 0}.
+Similarly, Axiom can define subdomains such as ``the
+subdomain of diagonal matrices,'' ``the subdomain of lists of length
+two,'' ``the subdomain of monic irreducible polynomials in
+\axiom{x},'' and so on.
+Trivially, any domain is a subdomain of itself.
+
+While an object belongs to a unique domain, it can belong to any
+number of subdomains.
+Any subdomain of the domain of an object can be used as the
+{\it type} of that object.
+The type of \axiom{3} is indeed both \axiomType{Integer} and
+\axiomType{PositiveInteger} as well as any other subdomain of
+integer whose predicate is satisfied, such as ``the prime
+integers,'' ``the odd positive integers between 3 and 17,'' and so
+on.
+
+\beginmenu
+    \menudownlink{{2.1.1. Domain Constructors}}{ugTypesBasicDomainConsPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesBasicDomainConsTitle}{Domain Constructors}
+\newcommand{\ugTypesBasicDomainConsNumber}{2.1.1.}
+
+@
+\section{Domain Constructors}
+\label{ugTypesBasicDomainConsPage}
+\begin{itemize}
+\item ugCategoriesPage \ref{ugCategoriesPage} on
+page~\pageref{ugCategoriesPage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~\pageref{ugTypesConvertPage}
+\end{itemize}
+\index{pages!ugTypesBasicDomainConsPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesBasicDomainConsPage}
+\index{ugTypesBasicDomainConsPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesBasicDomainConsPage}{2.1.1. Domain Constructors}
+\beginscroll
+
+In Axiom, domains are objects.
+You can create them, pass them to functions, and, as we'll see later, test
+them for certain properties.
+
+In Axiom, you ask for a value of a function by applying its name
+to a set of arguments.
+
+\xtc{
+To ask for ``the factorial of 7'' you enter this expression to
+Axiom.
+This applies the function \axiom{factorial} to the value \axiom{7}
+to compute the result.
+}{
+\spadpaste{factorial(7)}
+}
+\xtc{
+Enter the type \axiomType{Polynomial (Integer)} as an expression to
+Axiom.
+This looks much like a function call as well.
+It is!
+The result is appropriately stated to be of type
+\axiomType{Domain}, which
+according to our usual convention, denotes the class of all domains.
+}{
+\spadpaste{Polynomial(Integer)}
+}
+
+The most basic operation involving domains is that of building a new
+domain from a given one.
+To create the domain of ``polynomials over the integers,'' Axiom
+applies the function \axiomType{Polynomial} to the domain
+\axiomType{Integer}.
+A function like \axiomType{Polynomial} is called a \spadgloss{domain
+constructor} or,
+more simply, a
+\spadgloss{constructor}.
+A domain constructor is a function that creates a domain.
+An argument to a domain constructor can be another domain or, in general,
+an arbitrary kind of object.
+\axiomType{Polynomial} takes a single domain argument while
+\axiomType{SquareMatrix} takes a positive integer as an argument
+to give its dimension and
+a domain argument to give the type of its components.
+
+What kinds of domains can you use as the argument to
+\axiomType{Polynomial} or \axiomType{SquareMatrix} or
+\axiomType{List}?
+Well, the first two are mathematical in nature.
+You want to be able to perform algebraic operations like
+\axiomOp{+} and \axiomOp{*} on polynomials and square matrices,
+and operations such as \axiomFun{determinant} on square matrices.
+So you want to allow polynomials of integers {\it and} polynomials
+of square matrices with complex number coefficients and, in
+general, anything that ``makes sense.'' At the same time, you
+don't want Axiom to be able to build nonsense domains such
+as ``polynomials of strings!''
+
+In contrast to algebraic structures, data structures can hold any
+kind of object.
+Operations on lists such as \axiomFunFrom{insert}{List},
+\axiomFunFrom{delete}{List}, and \axiomFunFrom{concat}{List} just
+manipulate the list itself without changing or operating on its
+elements.
+Thus you can build \axiomType{List} over almost any datatype,
+including itself.
+\xtc{
+Create a complicated algebraic domain.
+}{
+\spadpaste{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
+}
+\xtc{
+Try to create a meaningless domain.
+}{
+\spadpaste{Polynomial(String)}
+}
+Evidently from our last example, Axiom has some mechanism
+that tells what a constructor can use as an argument.
+This brings us to the notion of \spadgloss{category}.
+As domains are objects, they too have a domain.
+The domain of a domain is a category.
+A category is simply a type whose members are domains.
+
+A common algebraic category is \axiomType{Ring}, the class of all domains
+that are ``rings.''
+A ring is an algebraic structure with constants \axiom{0} and \axiom{1} and
+operations \axiomOpFrom{+}{Ring}, \axiomOpFrom{-}{Ring}, and
+\axiomOpFrom{*}{Ring}.
+These operations are assumed ``closed'' with respect to the domain,
+meaning that they take two objects of the domain and produce a result
+object also in the domain.
+The operations are understood to satisfy certain ``axioms,'' certain
+mathematical principles providing the algebraic foundation for rings.
+For example, the {\it additive inverse axiom} for rings states:
+\centerline{{Every element \axiom{x} has an additive inverse \axiom{y} such}}
+\centerline{{that \axiom{x + y = 0}.}}
+The prototypical example of a domain that is a ring is the integers.
+Keep them in mind whenever we mention \axiomType{Ring}.
+
+Many algebraic domain constructors such as \axiomType{Complex},
+\axiomType{Polynomial}, \axiomType{Fraction}, take rings as
+arguments and return rings as values.
+You can use the infix operator ``\axiom{has}''
+\spadkey{has}
+to ask a domain if it belongs to a particular category.
+
+\xtc{
+All numerical types are rings.
+Domain constructor \axiomType{Polynomial} builds ``the ring of polynomials
+over any other ring.''
+}{
+\spadpaste{Polynomial(Integer) has Ring}
+}
+\xtc{
+Constructor \axiomType{List} never produces a ring.
+}{
+\spadpaste{List(Integer) has Ring}
+}
+\xtc{
+The constructor \axiomType{Matrix(R)} builds ``the domain of all matrices
+over the ring \axiom{R}.'' This domain is never a ring since the operations
+\axiomSyntax{+}, \axiomSyntax{-}, and \axiomSyntax{*} on matrices of arbitrary
+shapes are undefined.
+}{
+\spadpaste{Matrix(Integer) has Ring}
+}
+\xtc{
+Thus you can never build polynomials over matrices.
+}{
+\spadpaste{Polynomial(Matrix(Integer))}
+}
+\xtc{
+Use \axiomType{SquareMatrix(n,R)} instead.
+For any positive integer \axiom{n}, it builds ``the ring of \axiom{n} by
+\axiom{n} matrices over \axiom{R}.''
+}{
+\spadpaste{Polynomial(SquareMatrix(7,Complex(Integer)))}
+}
+
+Another common category is \axiomType{Field}, the class of all fields.
+A field is a ring with additional operations.
+For example, a field has commutative multiplication and
+a closed operation \axiomOpFrom{/}{Field} for the
+division of two elements.
+\axiomType{Integer} is not a field since, for example, \axiom{3/2} does not
+have an integer result.
+The prototypical example of a field is the rational numbers, that is, the
+domain \axiomType{Fraction(Integer)}.
+In general, the constructor \axiomType{Fraction} takes a ring as an
+argument and returns a field.\footnote{Actually,
+the argument domain must have some additional
+properties so as to belong to category \axiomType{IntegralDomain}.}
+Other domain constructors, such as \axiomType{Complex}, build fields only if
+their argument domain is a field.
+
+\xtc{
+The complex integers (often called the ``Gaussian integers'') do not form
+a field.
+}{
+\spadpaste{Complex(Integer) has Field}
+}
+\xtc{
+But fractions of complex integers do.
+}{
+\spadpaste{Fraction(Complex(Integer)) has Field}
+}
+\xtc{
+The algebraically equivalent domain of complex rational numbers is a field
+since domain constructor \axiomType{Complex} produces a field whenever its
+argument is a field.
+}{
+\spadpaste{Complex(Fraction(Integer)) has Field}
+}
+
+The most basic category is \axiomType{Type}.
+It denotes the class of all domains and
+subdomains.\footnote{\axiomType{Type} does not denote the class of
+all types.
+The type of all categories is \axiomType{Category}.
+The type of \axiomType{Type} itself is undefined.}
+Domain constructor \axiomType{List} is able to build ``lists of
+elements from domain \axiom{D}'' for arbitrary \axiom{D} simply by
+requiring that \axiom{D} belong to category \axiomType{Type}.
+
+Now, you may ask, what exactly is a category?
+Like domains, categories can be defined in the Axiom language.
+A category is defined by three components:
+%
+\indent{4}
+\beginitems
+\item[1. ] a name (for example, \axiomType{Ring}),
+used to refer to the class of domains that the category represents;
+\item[2. ] a set of operations, used to refer to the operations that
+the domains of this class support
+(for example, \axiomOp{+}, \axiomOp{-}, and \axiomOp{*} for rings); and
+\item[3. ] an optional list of other categories that this category extends.
+\enditems
+\indent{0}
+%
+This last component is a new idea.
+And it is key to the design of Axiom!
+Because categories can extend one another, they form hierarchies.
+\texht{Detailed charts showing the category hierarchies in Axiom are
+displayed in the endpages of this book.
+There you see that all categories are extensions of \axiomType{Type} and that
+\axiomType{Field} is an extension of \axiomType{Ring}.}{}
+
+The operations supported by the domains of a category are called the
+\spadglossSee{exports}{export} of that category because these are the
+operations made available for system-wide use.
+The exports of a domain of a given category are not only the ones
+explicitly mentioned by the category.
+Since a category extends other categories, the operations of these other
+categories---and all categories these other categories extend---are also
+exported by the domains.
+
+For example, polynomial domains belong to \axiomType{PolynomialCategory}.
+This category explicitly mentions some twenty-nine
+operations on polynomials, but it
+extends eleven other categories (including \axiomType{Ring}).
+As a result, the current system has over one hundred operations on polynomials.
+
+If a domain belongs to a category that extends, say, \axiomType{Ring}, it
+is convenient to say that the domain exports \axiomType{Ring}.
+The name of the category thus provides a convenient shorthand for the list
+of operations exported by the category.
+Rather than listing operations such as \axiomOpFrom{+}{Ring} and
+\axiomOpFrom{*}{Ring} of \axiomType{Ring} each time they are needed, the
+definition of a type simply asserts that it exports category
+\axiomType{Ring}.
+
+The category name, however, is more than a shorthand.
+The name \axiomType{Ring}, in fact, implies that the operations exported by
+rings are required to satisfy a set of ``axioms'' associated with the name
+\axiomType{Ring}.\footnote{This subtle
+but important feature distinguishes Axiom from
+other abstract datatype designs.}
+
+Why is it not correct to assume that some type is a ring if it exports all
+of the operations of \axiomType{Ring}?
+Here is why.
+Some languages such as {\bf APL}
+denote the \axiomType{Boolean} constants \axiom{true} and
+\axiom{false} by the integers \axiom{1} and \axiom{0}
+respectively, then use \axiomOp{+} and \axiomOp{*} to denote the
+logical operators \axiomFun{or} and \axiomFun{and}.
+But with these definitions
+\axiomType{Boolean} is not a ring since the additive inverse
+axiom is violated.\footnote{There is no inverse element \axiom{a}
+such that \axiom{1 + a = 0}, or, in the usual terms: \axiom{true
+or a = false}.}
+This alternative definition of \axiomType{Boolean} can be easily
+and correctly implemented in Axiom, since
+\axiomType{Boolean} simply does not assert that it is of category
+\axiomType{Ring}.
+This prevents the system from building meaningless domains such as
+\axiomType{Polynomial(Boolean)} and then wrongfully applying
+algorithms that presume that the ring axioms hold.
+
+
+Enough on categories. To learn more about them, see
+\downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
+in Chapter \ugCategoriesNumber\ignore{ugCategories}.
+We now return to our discussion of domains.
+
+Domains \spadgloss{export} a set of operations to make them
+available for system-wide use.
+\axiomType{Integer}, for example, exports the operations
+\axiomOpFrom{+}{Integer} and \axiomOpFrom{=}{Integer} given by
+the \spadglossSee{signatures}{signature}
+\axiomOpFrom{+}{Integer}: \spadsig{(Integer,Integer)}{Integer} and
+\axiomOpFrom{=}{Integer}: \spadsig{(Integer,Integer)}{Boolean},
+respectively.
+Each of these operations takes two \axiomType{Integer} arguments.
+The \axiomOpFrom{+}{Integer} operation also returns an \axiomType{Integer} but
+\axiomOpFrom{=}{Integer} returns a \axiomType{Boolean}: \axiom{true} or
+\axiom{false}.
+The operations exported by a domain usually manipulate objects of
+the domain---but not always.
+
+The operations of a domain may actually take as arguments, and return as
+values, objects from any domain.
+For example, \axiomType{Fraction (Integer)} exports the operations
+\axiomOpFrom{/}{Fraction}: \spadsig{(Integer,Integer)}{Fraction(Integer)}
+and \axiomFunFrom{characteristic}{Fraction}:
+\spadsig{}{NonNegativeInteger}.
+
+Suppose all operations of a domain take as arguments and return
+as values, only objects from {\it other} domains.
+This kind of domain
+is what Axiom calls a \spadgloss{package}.
+
+A package does not designate a class of objects at all.
+Rather, a package is just a collection of operations.
+Actually the bulk of the Axiom library of algorithms consists
+of packages.
+The facilities for factorization; integration; solution of linear,
+polynomial, and differential equations; computation of limits; and so
+on, are all defined in packages.
+Domains needed by algorithms can be passed to a package as arguments or
+used by name if they are not ``variable.''
+Packages are useful for defining operations that convert objects of one
+type to another, particularly when these types have different
+parameterizations.
+As an example, the package \axiomType{PolynomialFunction2(R,S)} defines
+operations that convert polynomials over a domain \axiom{R} to polynomials
+over \axiom{S}.
+To convert an object from \axiomType{Polynomial(Integer)} to
+\axiomType{Polynomial(Float)}, Axiom builds the package
+\axiomType{PolynomialFunctions2(Integer,Float)} in order to create the
+required conversion function.
+(This happens ``behind the scenes'' for you: see 
+\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert}
+for details on how to convert objects.)
+
+Axiom categories, domains and packages and all their contained
+functions are written in the Axiom programming language and have
+been compiled into machine code.
+This is what comprises the Axiom \spadgloss{library}.
+In the rest of this book we show you how to use these domains and
+their functions and how to write your own functions.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingTitle}{Writing Types and Modes}
+\newcommand{\ugTypesWritingNumber}{2.2.}
+
+@
+\section{Writing Types and Modes}
+\label{ugTypesWritingPage}
+\begin{itemize}
+\item ugTypesBasicPage \ref{ugTypesBasicPage} on
+page~\pageref{ugTypesBasicPage}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~\pageref{ugTypesConvertPage}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\item ugTypesWritingZeroPage \ref{ugTypesWritingZeroPage} on
+page~\pageref{ugTypesWritingZeroPage}
+\item ugTypesWritingOnePage \ref{ugTypesWritingOnePage} on
+page~\pageref{ugTypesWritingOnePage}
+\item ugTypesWritingMorePage \ref{ugTypesWritingMorePage} on
+page~\pageref{ugTypesWritingMorePage}
+\item ugTypesWritingModesPage \ref{ugTypesWritingModesPage} on
+page~\pageref{ugTypesWritingModesPage}
+\item ugTypesWritingAbbrPage \ref{ugTypesWritingAbbrPage} on
+page~\pageref{ugTypesWritingAbbrPage}
+\end{itemize}
+\index{pages!ugTypesWritingPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingPage}
+\index{ugTypesWritingPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingPage}{2.2. Writing Types and Modes}
+\beginscroll
+%
+
+We have already seen in \texht{the last
+section}{\downlink{``\ugTypesBasicTitle''}{ugTypesBasicPage} 
+in Section \ugTypesBasicNumber\ignore{ugTypesBasic}} several examples of types.
+Most of these examples had either no arguments (for example,
+\axiomType{Integer}) or one argument (for example,
+\axiomType{Polynomial (Integer)}).
+In this section we give details about writing arbitrary types.
+We then define \spadglossSee{modes}{mode} and discuss how to write
+them.
+We conclude the section with a discussion on constructor
+abbreviations.
+
+\xtc{
+When might you need to write a type or mode?
+You need to do so when you declare variables.
+}{
+\spadpaste{a : PositiveInteger}
+}
+\xtc{
+You need to do so when you declare functions
+(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}),
+}{
+\spadpaste{f : Integer -> String}
+}
+\xtc{
+You need to do so when you convert an object from one type to another
+(\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert}).
+}{
+\spadpaste{factor(2 :: Complex(Integer))}
+}
+\xtc{
+}{
+\spadpaste{(2 = 3)\$Integer}
+}
+\xtc{
+You need to do so when you give computation target type information
+(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
+}{
+\spadpaste{(2 = 3)@Boolean}
+}
+
+\beginmenu
+    \menudownlink{{2.2.1. Types with No Arguments}}{ugTypesWritingZeroPage}
+    \menudownlink{{2.2.2. Types with One Argument}}{ugTypesWritingOnePage}
+    \menudownlink{{2.2.3. Types with More Than One Argument}}
+{ugTypesWritingMorePage}
+    \menudownlink{{2.2.4. Modes}}{ugTypesWritingModesPage}
+    \menudownlink{{2.2.5. Abbreviations}}{ugTypesWritingAbbrPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingZeroTitle}{Types with No Arguments}
+\newcommand{\ugTypesWritingZeroNumber}{2.2.1.}
+
+@
+\section{Types with No Arguments}
+\label{ugTypesWritingZeroPage}
+\index{pages!ugTypesWritingZeroPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingZeroPage}
+\index{ugTypesWritingZeroPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingZeroPage}{2.2.1. Types with No Arguments}
+\beginscroll
+
+A constructor with no arguments can be written either
+with or without
+trailing opening and closing parentheses (\axiomSyntax{()}).
+\texht{
+\centerline{{\begin{tabular}{ccc}}}
+\centerline{{\axiomType{Boolean()} is the same as \axiomType{Boolean} & \quad &}}
+\centerline{{\axiomType{Integer()} is the same as \axiomType{Integer} }}
+\centerline{{\axiomType{String()} is the same as \axiomType{String} & \quad &}}
+\centerline{{\axiomType{Void()} is the same as \axiomType{Void} }}
+\centerline{{\end{tabular}}}
+}{
+\centerline{{\axiomType{Boolean()} is the same as \axiomType{Boolean} }}
+\centerline{{\axiomType{Integer()} is the same as \axiomType{Integer} }}
+\centerline{{\axiomType{String()} is the same as \axiomType{String} }}
+\centerline{{\axiomType{Void()} is the same as \axiomType{Void} }}
+and so on.
+}
+It is customary to omit the parentheses.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingOneTitle}{Types with One Argument}
+\newcommand{\ugTypesWritingOneNumber}{2.2.2.}
+
+@
+\section{Types with One Argument}
+\label{ugTypesWritingOnePage}
+\begin{itemize}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\end{itemize}
+\index{pages!ugTypesWritingOnePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingOnePage}
+\index{ugTypesWritingOnePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingOnePage}{2.2.2. Types with One Argument}
+\beginscroll
+
+A constructor with one argument can frequently be
+written with no
+parentheses.
+Types nest from right to left so that \axiomType{Complex Fraction
+Polynomial Integer} is the same as
+\axiomType{Complex (Fraction (Polynomial (Integer)))}.
+You need to use parentheses to force the application of a constructor
+to the correct argument, but you need not use any more than is
+necessary to remove ambiguities.
+
+Here are some guidelines for using parentheses (they are possibly slightly
+more restrictive than they need to be).
+\xtc{
+If the argument is an expression like \axiom{2 + 3}
+then you must enclose the argument in parentheses.
+}{
+\spadpaste{e : PrimeField(2 + 3)}
+}
+%
+\xtc{
+If the type is to be used with package calling
+then you must enclose the argument in parentheses.
+}{
+\spadpaste{content(2)\$Polynomial(Integer)}
+}
+\xtc{
+Alternatively, you can write the type without parentheses
+then enclose the whole type expression with parentheses.
+}{
+\spadpaste{content(2)\$(Polynomial Complex Fraction Integer)}
+}
+\xtc{
+If you supply computation target type information
+(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall})
+then you should enclose the argument in parentheses.
+}{
+\spadpaste{(2/3)@Fraction(Polynomial(Integer))}
+}
+%
+\xtc{
+If the type itself has parentheses around it and we are
+not in the case of the first example above,
+then the parentheses can usually be omitted.
+}{
+\spadpaste{(2/3)@Fraction(Polynomial Integer)}
+}
+%
+\xtc{
+If the type is used in a declaration and the argument is a single-word
+type, integer or symbol,
+then the parentheses can usually be omitted.
+}{
+\spadpaste{(d,f,g) : Complex Polynomial Integer}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingMoreTitle}{Types with More Than One Argument}
+\newcommand{\ugTypesWritingMoreNumber}{2.2.3.}
+
+@
+\section{Types with More Than One Argument}
+\label{ugTypesWritingMorePage}
+\index{pages!ugTypesWritingMorePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingMorePage}
+\index{ugTypesWritingMorePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingMorePage}{2.2.3. Types with More Than One Argument}
+\beginscroll
+
+If a constructor
+has more than
+one argument, you must use parentheses.
+Some examples are
+\centerline{{\axiomType{UnivariatePolynomial(x, Float)} }}
+\centerline{{\axiomType{MultivariatePolynomial([z,w,r], Complex Float)} }}
+\centerline{{\axiomType{SquareMatrix(3, Integer)} }}
+\centerline{{\axiomType{FactoredFunctions2(Integer,Fraction Integer)}}}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingModesTitle}{Modes}
+\newcommand{\ugTypesWritingModesNumber}{2.2.4.}
+
+@
+\section{Modes}
+\label{ugTypesWritingModesPage}
+\begin{itemize}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\item ugTypesConvertPage \ref{ugTypesConvertPage} on
+page~\pageref{ugTypesConvertPage}
+\end{itemize}
+\index{pages!ugTypesWritingModesPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingModesPage}
+\index{ugTypesWritingModesPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingModesPage}{2.2.4. Modes}
+\beginscroll
+
+A \spadgloss{mode} is a type that possibly is a
+question mark (\axiomSyntax{?}) or contains one in an argument
+position.
+For example, the following are all modes.
+\texht{
+\centerline{{\begin{tabular}{ccc}}}
+\centerline{{\axiomType{?} & \quad &}}
+\centerline{{\axiomType{Polynomial ?} }}
+\centerline{{\axiomType{Matrix Polynomial ?} & \quad &}}
+\centerline{{\axiomType{SquareMatrix(3,?)} }}
+\centerline{{\axiomType{Integer} & \quad &}}
+\centerline{{\axiomType{OneDimensionalArray(Float)}}}
+\centerline{{\end{tabular}}}
+}{
+\centerline{{\axiomType{?} }}
+\centerline{{\axiomType{Polynomial ?} }}
+\centerline{{\axiomType{Matrix Polynomial ?} }}
+\centerline{{\axiomType{SquareMatrix(3,?)} }}
+\centerline{{\axiomType{Integer} }}
+\centerline{{\axiomType{OneDimensionalArray(Float)}}}
+}
+As is evident from these examples, a mode is a type with a
+part that is not specified (indicated by a question mark).
+Only one \axiomSyntax{?} is allowed per mode and it must appear in the
+most deeply nested argument that is a type. Thus
+\nonLibAxiomType{?(Integer)},
+\nonLibAxiomType{Matrix(? (Polynomial))},
+\nonLibAxiomType{SquareMatrix(?, Integer)} and
+\nonLibAxiomType{SquareMatrix(?, ?)} are all invalid.
+The question mark must take the place of a domain, not data (for example,
+the integer that is the dimension of a square matrix).
+This rules out, for example, the two \axiomType{SquareMatrix}
+expressions.
+
+Modes can be used for declarations
+(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare})
+and conversions
+(\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert}).
+However, you cannot use a mode for package calling or giving target
+type information.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesWritingAbbrTitle}{Abbreviations}
+\newcommand{\ugTypesWritingAbbrNumber}{2.2.5.}
+
+@
+\section{Abbreviations}
+\label{ugTypesWritingAbbrPage}
+\begin{itemize}
+\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
+page~\pageref{ugSysCmdwhatPage}
+\end{itemize}
+\index{pages!ugTypesWritingAbbrPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesWritingAbbrPage}
+\index{ugTypesWritingAbbrPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesWritingAbbrPage}{2.2.5. Abbreviations}
+\beginscroll
+
+Every constructor has an abbreviation that
+you can freely
+substitute for the constructor name.
+In some cases, the abbreviation is nothing more than the
+capitalized version of the constructor name.
+
+\beginImportant
+Aside from allowing types to be written more concisely,
+abbreviations are used by Axiom to name various system
+files for constructors (such as library filenames, test input
+files and example files).
+Here are some common abbreviations.
+\texht{}{\table{
+{\axiomType{COMPLEX}    abbreviates \axiomType{Complex}              }
+{\axiomType{DFLOAT}     abbreviates \axiomType{DoubleFloat}          }
+{\axiomType{EXPR}       abbreviates \axiomType{Expression}           }
+{\axiomType{FLOAT}      abbreviates \axiomType{Float}                }
+{\axiomType{FRAC}       abbreviates \axiomType{Fraction}             }
+{\axiomType{INT}        abbreviates \axiomType{Integer}              }
+{\axiomType{MATRIX}     abbreviates \axiomType{Matrix}               }
+{\axiomType{NNI}        abbreviates \axiomType{NonNegativeInteger}   }
+{\axiomType{PI}         abbreviates \axiomType{PositiveInteger}      }
+{\axiomType{POLY}       abbreviates \axiomType{Polynomial}           }
+{\axiomType{STRING}     abbreviates \axiomType{String}               }
+{\axiomType{UP}         abbreviates \axiomType{UnivariatePolynomial} }
+}}
+\endImportant
+
+You can combine both full constructor names and abbreviations
+in a type expression.
+Here are some types using abbreviations.
+\centerline{{\axiomType{POLY INT} is the same as 
+\axiomType{Polynomial(INT)} }}
+\centerline{{\axiomType{POLY(Integer)} is the same 
+as \axiomType{Polynomial(Integer)} }}
+\centerline{{\axiomType{POLY(Integer)} is the same 
+as \axiomType{Polynomial(INT)} }}
+\centerline{{\axiomType{FRAC(COMPLEX(INT))} is the 
+same as \axiomType{Fraction Complex Integer} }}
+\centerline{{\axiomType{FRAC(COMPLEX(INT))} is the 
+same as \axiomType{FRAC(Complex Integer)} }}
+
+There are several ways of finding the names of constructors and
+their abbreviations.
+For a specific constructor, use \spadcmd{)abbreviation query}.
+You can also use the \spadcmd{)what} system command to see the names
+and abbreviations of constructors.
+For more information about \spadcmd{)what}, see
+\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
+in Section \ugSysCmdwhatNumber\ignore{ugSysCmdwhat}.
+\xtc{
+\spadcmd{)abbreviation query} can be
+abbreviated (no pun intended) to \spadcmd{)abb q}.
+}{
+\spadpaste{)abb q Integer}
+}
+\xtc{
+The \spadcmd{)abbreviation query} command lists
+the constructor name if you give the abbreviation.
+Issue \spadcmd{)abb q} if you want to see the names and abbreviations
+of all Axiom constructors.
+}{
+\spadpaste{)abb q DMP}
+}
+\xtc{
+Issue this to see all packages whose names contain the string ``ode''.
+}{
+\spadpaste{)what packages ode}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesDeclareTitle}{Declarations}
+\newcommand{\ugTypesDeclareNumber}{2.3.}
+
+@
+\section{Declarations}
+\label{ugTypesDeclarePage}
+\begin{itemize}
+\item ugLangAssignPage \ref{ugLangAssignPage} on
+page~\pageref{ugLangAssignPage}
+\item ugUserDeclarePage \ref{ugUserDeclarePage} on
+page~\pageref{ugUserDeclarePage}
+\item ugTypesConvertPageugIntroAssignPage \ref{ugTypesConvertPageugIntroAssignPage} on
+page~\pageref{ugTypesConvertPageugIntroAssignPage}
+\end{itemize}
+\index{pages!ugTypesDeclarePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesDeclarePage}
+\index{ugTypesDeclarePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesDeclarePage}{2.3. Declarations}
+\beginscroll
+%
+A \spadgloss{declaration} is an expression used
+to restrict the type of values that can be assigned to variables.
+A colon (\axiomSyntax{:}) is always used after a variable or
+list of variables to be declared.
+
+\beginImportant
+For a single variable, the syntax for declaration is
+\centerline{{{\it variableName \axiom{:} typeOrMode}}}
+For multiple variables, the syntax is
+\centerline{{{\tt (\subscriptIt{variableName}{1}, \subscriptIt{variableName}{2}, \ldots \subscriptIt{variableName}{N}): {\it typeOrMode}}}}
+\endImportant
+
+You can always combine a declaration with an assignment.
+When you do, it is equivalent to first giving a declaration statement,
+then giving an assignment.
+For more information on assignment, see
+\downlink{``\ugIntroAssignTitle''}{ugIntroAssignPage} 
+in Section \ugIntroAssignNumber\ignore{ugIntroAssign} and
+\downlink{``\ugLangAssignTitle''}{ugLangAssignPage} 
+in Section \ugLangAssignNumber\ignore{ugLangAssign}.
+To see how to declare your own functions, see
+\downlink{``\ugUserDeclareTitle''}{ugUserDeclarePage} 
+in Section \ugUserDeclareNumber\ignore{ugUserDeclare}.
+
+\xtc{
+This declares one variable to have a type.
+}{
+\spadpaste{a : Integer \bound{a}}
+}
+\xtc{
+This declares several variables to have a type.
+}{
+\spadpaste{(b,c) : Integer \bound{b c}}
+}
+\xtc{
+\axiom{a, b} and \axiom{c} can only hold integer values.
+}{
+\spadpaste{a := 45 \free{a}}
+}
+\xtc{
+If a value cannot be converted to a declared type,
+an error message is displayed.
+}{
+\spadpaste{b := 4/5 \free{b}}
+}
+\xtc{
+This declares a variable with a mode.
+}{
+\spadpaste{n : Complex ? \bound{n}}
+}
+\xtc{
+This declares several variables with a mode.
+}{
+\spadpaste{(p,q,r) : Matrix Polynomial ? \bound{p q r}}
+}
+\xtc{
+This complex object has integer real and imaginary parts.
+}{
+\spadpaste{n := -36 + 9 * \%i \free{n}}
+}
+\xtc{
+This complex object has fractional symbolic real and imaginary parts.
+}{
+\spadpaste{n := complex(4/(x + y),y/x) \free{n}}
+}
+\xtc{
+This matrix has entries that are polynomials with integer
+coefficients.
+}{
+\spadpaste{p := [[1,2],[3,4],[5,6]] \free{p}}
+}
+\xtc{
+This matrix has a single entry that is a polynomial with
+rational number coefficients.
+}{
+\spadpaste{q := [[x - 2/3]] \free{q}}
+}
+\xtc{
+This matrix has entries that are polynomials with complex integer
+coefficients.
+}{
+\spadpaste{r := [[1-\%i*x,7*y+4*\%i]] \free{r}}
+}
+%
+\xtc{
+Note the difference between this and the next example.
+This is a complex object with polynomial real and imaginary parts.
+}{
+\spadpaste{f : COMPLEX POLY ? := (x + y*\%i)**2}
+}
+\xtc{
+This is a polynomial with complex integer coefficients.
+The objects are convertible from one to the other.
+See \downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
+in Section \ugTypesConvertNumber\ignore{ugTypesConvert} for more information.
+}{
+\spadpaste{g : POLY COMPLEX ? := (x + y*\%i)**2}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesRecordsTitle}{Records}
+\newcommand{\ugTypesRecordsNumber}{2.4.}
+
+@
+\section{Records}
+\label{ugTypesRecordsPage}
+\index{pages!ugTypesRecordsPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesRecordsPage}
+\index{ugTypesRecordsPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesRecordsPage}{2.4. Records}
+\beginscroll
+%
+A \pspadtype{Record} is an object composed of one or more other objects,
+each of which is referenced
+with
+a \spadgloss{selector}.
+Components can all belong to the same type or each can have a different type.
+
+\beginImportant
+The syntax for writing a \pspadtype{Record} type is
+\centerline{{{\tt Record(\subscriptIt{selector}{1}:\subscriptIt{type}{1}, \subscriptIt{selector}{2}:\subscriptIt{type}{2}, \ldots, \subscriptIt{selector}{N}:\subscriptIt{type}{N})}}}
+You must be careful if a selector has the same name as a variable in the
+workspace.
+If this occurs, precede the selector name by a single
+quote.
+\endImportant
+
+Record components are implicitly ordered.
+All the components of a record can
+be set at once by assigning the record a
+bracketed \spadgloss{tuple} of values of the proper length
+(for example, \axiom{r : Record(a: Integer, b: String) := [1, "two"]}).
+To access a component of a record \axiom{r},
+write the name \axiom{r}, followed by a period, followed by a selector.
+
+%
+\xtc{
+The object returned by this computation is a record with two components: a
+\axiom{quotient} part and a \axiom{remainder} part.
+}{
+\spadpaste{u := divide(5,2) \bound{u}}
+}
+%
+\xtc{
+This is the quotient part.
+}{
+\spadpaste{u.quotient \free{u}}
+}
+\xtc{
+This is the remainder part.
+}{
+\spadpaste{u.remainder \free{u}}
+}
+%
+\xtc{
+You can use selector expressions on the left-hand side of an assignment
+to change destructively the components of a record.
+}{
+\spadpaste{u.quotient := 8978 \free{u}\bound{u1}}
+}
+\xtc{
+The selected component \axiom{quotient} has the value \axiom{8978},
+which is what is returned by the assignment.
+Check that the value of \axiom{u} was modified.
+}{
+\spadpaste{u \free{u}\free{u1}}
+}
+\xtc{
+Selectors are evaluated.
+Thus you can use variables that evaluate to selectors instead of the
+selectors themselves.
+}{
+\spadpaste{s := 'quotient \bound{s}}
+}
+\xtc{
+Be careful!
+A selector could have the same name as a variable in the workspace.
+If this occurs, precede the selector name by a single quote, as in
+\axiom{u.'quotient}.
+}{
+\spadpaste{divide(5,2).s \free{s}}
+}
+\xtc{
+Here we declare that the value of \axiom{bd}
+has two components: a string,
+to be accessed via \axiom{name}, and an integer,
+to be accessed via \axiom{birthdayMonth}.
+}{
+\spadpaste{bd : Record(name : String, birthdayMonth : Integer) \bound{bddec}}
+}
+\xtc{
+You must initially set the value of the entire \pspadtype{Record}
+at once.
+}{
+\spadpaste{bd := ["Judith", 3] \free{bddec}\bound{bd}}
+}
+\xtc{
+Once set, you can change any of the individual components.
+}{
+\spadpaste{bd.name := "Katie" \free{bd}}
+}
+\xtc{
+Records may be nested and the selector names can be shared at
+different levels.
+}{
+\spadpaste{r : Record(a : Record(b: Integer, c: Integer), b: Integer) \bound{rdec}}
+}
+\xtc{
+The record \axiom{r} has a \axiom{b} selector at two different levels.
+Here is an initial value for \axiom{r}.
+}{
+\spadpaste{r := [[1,2],3] \bound{r}\free{rdec}}
+}
+\xtc{
+This extracts the \axiom{b} component from the \axiom{a} component of \axiom{r}.
+}{
+\spadpaste{r.a.b \free{r}}
+}
+\xtc{
+This extracts the \axiom{b} component from \axiom{r}.
+}{
+\spadpaste{r.b \free{r}}
+}
+%
+\xtc{
+You can also use spaces or parentheses to refer to \pspadtype{Record}
+components.
+This is the same as \axiom{r.a}.
+}{
+\spadpaste{r(a) \free{r}}
+}
+\xtc{
+This is the same as \axiom{r.b}.
+}{
+\spadpaste{r b \free{r}}
+}
+\xtc{
+This is the same as \axiom{r.b := 10}.
+}{
+\spadpaste{r(b) := 10 \free{r}\bound{r1}}
+}
+\xtc{
+Look at \axiom{r} to make sure it was modified.
+}{
+\spadpaste{r \free{r1}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesUnionsTitle}{Unions}
+\newcommand{\ugTypesUnionsNumber}{2.5.}
+
+@
+\section{Unions}
+\label{ugTypesUnionsPage}
+\begin{itemize}
+\item ugTypesUnionsWOSelPage \ref{ugTypesUnionsWOSelPage} on
+page~\pageref{ugTypesUnionsWOSelPage}
+\item ugTypesUnionsWSelPage \ref{ugTypesUnionsWSelPage} on
+page~\pageref{ugTypesUnionsWSelPage}
+\end{itemize}
+\index{pages!ugTypesUnionsPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesUnionsPage}
+\index{ugTypesUnionsPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesUnionsPage}{2.5. Unions}
+\beginscroll
+%
+Type \pspadtype{Union} is used for objects that
+can be of any of a specific finite set of types.
+Two versions of unions are available,
+one with selectors (like records) and one without.
+
+\beginmenu
+    \menudownlink{{2.5.1. Unions Without Selectors}}{ugTypesUnionsWOSelPage}
+    \menudownlink{{2.5.2. Unions With Selectors}}{ugTypesUnionsWSelPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesUnionsWOSelTitle}{Unions Without Selectors}
+\newcommand{\ugTypesUnionsWOSelNumber}{2.5.1.}
+
+@
+\section{Unions Without Selectors}
+\label{ugTypesUnionsWOSelPage}
+\index{pages!ugTypesUnionsWOSelPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesUnionsWOSelPage}
+\index{ugTypesUnionsWOSelPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesUnionsWOSelPage}{2.5.1. Unions Without Selectors}
+\beginscroll
+
+The declaration \axiom{x : Union(Integer, String, Float)}
+states that \axiom{x} can have values that are integers,
+strings or ``big'' floats.
+If, for example, the \pspadtype{Union} object is an integer, the object is
+said to belong to the \axiomType{Integer} {\it branch}
+of the \pspadtype{Union}.\footnote{
+Note that we are being a bit careless with the language here.
+Technically, the type of \axiom{x} is always
+\pspadtype{Union(Integer, String, Float)}.
+If it belongs to the \axiomType{Integer} branch, \axiom{x}
+may be converted to an object of type \axiomType{Integer}.}
+
+\beginImportant
+The syntax for writing a \pspadtype{Union} type without selectors is
+\centerline{{{\tt Union(\subscriptIt{type}{1}, \subscriptIt{type}{2}, \ldots, \subscriptIt{type}{N})}}}
+The types in a union without selectors must be distinct.
+\endImportant
+
+It is possible to create unions like
+\pspadtype{Union(Integer, PositiveInteger)} but they are
+difficult to work with because of the overlap in the branch
+types.
+See below for the rules Axiom uses for converting something
+into a union object.
+
+The \axiom{case} infix
+\spadkey{case}
+operator returns a \axiomType{Boolean}
+and can be used to determine the branch in which an object lies.
+
+\xtc{
+This function displays a message stating in which
+branch of the \pspadtype{Union} the object (defined as \axiom{x}
+above) lies.
+}{
+\begin{spadsrc}[\bound{sayBranch}]
+sayBranch(x : Union(Integer,String,Float)) : Void  ==
+  output
+    x case Integer => "Integer branch"
+    x case String  => "String branch"
+    "Float branch"
+\end{spadsrc}
+}
+%
+\xtc{
+This tries \userfun{sayBranch} with an integer.
+}{
+\spadpaste{sayBranch 1 \free{sayBranch}}
+}
+\xtc{
+This tries \userfun{sayBranch} with a string.
+}{
+\spadpaste{sayBranch "hello" \free{sayBranch}}
+}
+\xtc{
+This tries \userfun{sayBranch} with a floating-point number.
+}{
+\spadpaste{sayBranch 2.718281828 \free{sayBranch}}
+}
+%
+
+There are two things of interest about this particular
+example to which we would like to draw your attention.
+\indent{4}
+\beginitems
+%
+\item[1. ] Axiom normally converts a result to the target value
+before passing it to the function.
+If we left the declaration information out of this function definition
+then the \axiom{sayBranch} call would have been attempted with an
+\axiomType{Integer} rather than a \pspadtype{Union}, and an error would have
+resulted.
+%
+\item[2. ] The types in a \pspadtype{Union} are searched in the order given.
+So if the type were given as
+
+\noindent
+{\small\axiom{sayBranch(x: Union(String,Integer,Float,Any)): Void}}
+
+\noindent
+then the result would have been ``String branch'' because there
+is a conversion from \axiomType{Integer} to \axiomType{String}.
+\enditems
+\indent{0}
+
+Sometimes \pspadtype{Union} types can have extremely
+long names.
+Axiom therefore abbreviates the names of unions by printing
+the type of the branch first within the \pspadtype{Union} and then
+eliding the remaining types with an ellipsis (\axiomSyntax{...}).
+
+\xtc{
+Here the \axiomType{Integer} branch is displayed first.
+Use \axiomSyntax{::} to create a \pspadtype{Union} object from an object.
+}{
+\spadpaste{78 :: Union(Integer,String)}
+}
+\xtc{
+Here the \axiomType{String} branch is displayed first.
+}{
+\spadpaste{s := "string" :: Union(Integer,String) \bound{s}}
+}
+\xtc{
+Use \axiom{typeOf} to see the full and actual \pspadtype{Union} type.
+\spadkey{typeOf}
+}{
+\spadpaste{typeOf s}
+}
+\xtc{
+A common operation that returns a union is \axiomFunFrom{exquo}{Integer}
+which returns the ``exact quotient'' if the quotient is exact,...
+}{
+\spadpaste{three := exquo(6,2) \bound{three}}
+}
+\xtc{
+and \axiom{"failed"} if the quotient is not exact.
+}{
+\spadpaste{exquo(5,2)}
+}
+\xtc{
+A union with a \axiom{"failed"} is frequently used to indicate the failure
+or lack of applicability of an object.
+As another example, assign an integer a variable \axiom{r} declared to be a
+rational number.
+}{
+\spadpaste{r: FRAC INT := 3 \bound{r}\bound{rdec}}
+}
+\xtc{
+The operation \axiomFunFrom{retractIfCan}{Fraction} tries to retract the
+fraction to the underlying domain \axiomType{Integer}.
+It produces a union object.
+Here it succeeds.
+}{
+\spadpaste{retractIfCan(r) \free{r}}
+}
+\xtc{
+Assign it a rational number.
+}{
+\spadpaste{r := 3/2 \bound{r1}\free{rdec}}
+}
+\xtc{
+Here the retraction fails.
+}{
+\spadpaste{retractIfCan(r) \free{r1}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesUnionsWSelTitle}{Unions With Selectors}
+\newcommand{\ugTypesUnionsWSelNumber}{2.5.2.}
+
+@
+\section{Unions With Selectors}
+\label{ugTypesUnionsWSelPage}
+\begin{itemize}
+\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
+page~\pageref{ugTypesRecordsPage}
+\item ugTypesUnionsWOSelPage \ref{ugTypesUnionsWOSelPage} on
+page~\pageref{ugTypesUnionsWOSelPage}
+\end{itemize}
+\index{pages!ugTypesUnionsWSelPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesUnionsWSelPage}
+\index{ugTypesUnionsWSelPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesUnionsWSelPage}{2.5.2. Unions With Selectors}
+\beginscroll
+
+Like records (
+\downlink{``\ugTypesRecordsTitle''}{ugTypesRecordsPage} 
+in Section \ugTypesRecordsNumber\ignore{ugTypesRecords}),
+you can write \pspadtype{Union} types
+with selectors.
+
+\beginImportant
+The syntax for writing a \pspadtype{Union} type with selectors is
+\centerline{{{\tt Union(\subscriptIt{selector}{1}:\subscriptIt{type}{1}, \subscriptIt{selector}{2}:\subscriptIt{type}{2}, \ldots, \subscriptIt{selector}{N}:\subscriptIt{type}{N})}}}
+You must be careful if a selector has the same name as a variable in the
+workspace.
+If this occurs, precede the selector name by a single
+quote.
+It is an error to use a selector that does not correspond to the branch of
+the \pspadtype{Union} in which the element actually lies.
+\endImportant
+
+Be sure to understand the difference between records and unions
+with selectors.
+Records can have more than one component and the selectors are
+used to refer to the components.
+Unions always have one component but the type of that one
+component can vary.
+An object of type \pspadtype{Record(a: Integer, b: Float, c:
+String)} contains an integer {\it and} a float  {\it and} a
+string.
+An object of type \pspadtype{Union(a: Integer, b: Float, c:
+String)} contains an integer {\it or} a float  {\it or} a
+string.
+
+Here is a version of the \userfun{sayBranch} function (cf.
+\downlink{``\ugTypesUnionsWOSelTitle''}{ugTypesUnionsWOSelPage} 
+in Section \ugTypesUnionsWOSelNumber\ignore{ugTypesUnionsWOSel}) 
+that works with a union with selectors.
+It displays a message stating in which branch of the \pspadtype{Union} the
+object lies.
+\begin{verbatim}
+sayBranch(x:Union(i:Integer,s:String,f:Float)):Void==
+  output
+    x case i => "Integer branch"
+    x case s  => "String branch"
+    "Float branch"
+\end{verbatim}
+Note that \axiom{case} uses the selector name as its right-hand argument.
+\spadkey{case}
+If you accidentally use the branch type on the right-hand side of
+\axiom{case}, \axiom{false} will be returned.
+
+\xtc{
+Declare variable \axiom{u} to have a union type with selectors.
+}{
+\spadpaste{u : Union(i : Integer, s : String) \bound{undec}}
+}
+\xtc{
+Give an initial value to \axiom{u}.
+}{
+\spadpaste{u := "good morning" \bound{u}\free{undec}}
+}
+\xtc{
+Use \axiom{case} to determine in which
+branch of a \pspadtype{Union} an object lies.
+}{
+\spadpaste{u case i \free{u}}
+}
+\xtc{
+}{
+\spadpaste{u case s \free{u}}
+}
+\xtc{
+To access the element in a particular branch, use the selector.
+}{
+\spadpaste{u.s \free{u}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesAnyNoneTitle}{The ``Any'' Domain}
+\newcommand{\ugTypesAnyNoneNumber}{2.6.}
+
+@
+\section{The ``Any'' Domain}
+\label{ugTypesAnyNonePage}
+\index{pages!ugTypesAnyNonePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesAnyNonePage}
+\index{ugTypesAnyNonePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesAnyNonePage}{2.6. The ``Any'' Domain}
+\beginscroll
+
+With the exception of objects of type \pspadtype{Record}, all Axiom
+data structures are homogenous, that is, they hold objects all of the same
+type.
+If you need to get around this, you can use type \axiomType{Any}.
+Using \axiomType{Any}, for example, you can create lists whose
+elements are integers, rational numbers, strings, and even other lists.
+
+\xtc{
+Declare \axiom{u} to have type \axiomType{Any}.
+}{
+\spadpaste{u: Any\bound{uany}}
+}
+\xtc{
+Assign a list of mixed type values to \axiom{u}
+}{
+\spadpaste{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany}\bound{u}}
+}
+\xtc{
+When we ask for the elements, Axiom displays these types.
+}{
+\spadpaste{u.1 \free{u}}
+}
+\xtc{
+Actually, these objects belong to \axiomType{Any} but Axiom
+automatically converts them to their natural types for you.
+}{
+\spadpaste{u.3 \free{u}}
+}
+\xtc{
+Since type \axiomType{Any} can be anything,
+it can only belong to type \axiomType{Type}.
+Therefore it cannot be used in algebraic domains.
+}{
+\spadpaste{v : Matrix(Any)}
+}
+
+Perhaps you are wondering how Axiom internally represents
+objects of type \axiomType{Any}.
+An object of type \axiomType{Any} consists not only a data part
+representing its normal value, but also a type part (a {\it badge}) giving
+its type.
+For example, the value \axiom{1} of type \axiomType{PositiveInteger} as an
+object of type \axiomType{Any} internally looks like
+\axiom{[1,\axiomType{PositiveInteger()}]}.
+
+%When should you use \axiomType{Any} instead of a \pspadtype{Union} type?
+%Can you plan ahead?
+%For a \pspadtype{Union}, you must know in advance exactly which types you
+%are
+%\index{union!vs. Any@{vs. \protect\nonLibAxiomType{Any}}}
+%going to allow.
+%For \axiomType{Any}, anything that comes along can be accommodated.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesConvertTitle}{Conversion}
+\newcommand{\ugTypesConvertNumber}{2.7.}
+
+@
+\section{Conversion}
+\label{ugTypesConvertPage}
+\begin{itemize}
+\item ugTypesBasicPage \ref{ugTypesBasicPage} on
+page~\pageref{ugTypesBasicPage}
+\end{itemize}
+\index{pages!ugTypesConvertPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesConvertPage}
+\index{ugTypesConvertPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesConvertPage}{2.7. Conversion}
+\beginscroll
+%
+\beginImportant
+\spadglossSee{Conversion}{conversion}
+is the process of changing an object of one type
+into an object of another type.
+The syntax for conversion is:
+\centerline{{{\it object} {\tt ::} {\it newType}}}
+\endImportant
+
+\xtc{
+By default, \axiom{3} has the type \axiomType{PositiveInteger}.
+}{
+\spadpaste{3}
+}
+\xtc{
+We can change this into an object of type \axiomType{Fraction Integer}
+by using \axiomSyntax{::}.
+}{
+\spadpaste{3 :: Fraction Integer}
+}
+
+A \spadgloss{coercion} is a special kind of conversion that Axiom is
+allowed to do automatically when you enter an expression.
+Coercions are usually somewhat safer than more general conversions.
+The Axiom library contains operations called
+\axiomFun{coerce} and \axiomFun{convert}.
+Only the \axiomFun{coerce} operations can be used by the
+interpreter to change an object into an object of another type unless
+you explicitly use a \axiomSyntax{::}.
+
+By now you will be quite familiar with what types and modes look like.
+It is useful to think of a type or mode as a pattern
+for what you want the result to be.
+\xtc{
+Let's start with a square matrix of polynomials with complex rational number
+coefficients.
+}{
+\spadpaste{m : SquareMatrix(2,POLY COMPLEX FRAC INT) \bound{mdec}}
+}
+\xtc{
+}{
+\spadpaste{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]] \bound{m}\free{mdec}}
+}
+\xtc{
+We first want to interchange the \axiomType{Complex} and
+\axiomType{Fraction} layers.
+We do the conversion by doing the interchange in the type expression.
+}{
+\spadpaste{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT) \free{m}\bound{m1}}
+}
+\xtc{
+Interchange the \axiomType{Polynomial} and the
+\axiomType{Fraction} levels.
+}{
+\spadpaste{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT) \free{m1}\bound{m2}}
+}
+\xtc{
+Interchange the \axiomType{Polynomial} and the
+\axiomType{Complex} levels.
+}{
+\spadpaste{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT) \free{m2}\bound{m3}}
+}
+
+All the entries have changed types, although in comparing the
+last two results only the entry in the lower left corner looks different.
+We did all the intermediate steps to show you what Axiom can do.
+
+\xtc{
+In fact, we could have combined all these into one conversion.
+}{
+\spadpaste{m :: SquareMatrix(2,FRAC COMPLEX POLY INT) \free{m}}
+}
+
+There are times when Axiom is not be able to do the conversion
+in one step.
+You may need to break up the transformation into several conversions
+in order to get an object of the desired type.
+
+We cannot move either \axiomType{Fraction} or \axiomType{Complex}
+above (or to the left of, depending on how you look at it)
+\axiomType{SquareMatrix} because each of these levels requires that its
+argument type have commutative multiplication, whereas
+\axiomType{SquareMatrix} does not.\footnote{\axiomType{Fraction} requires
+that its argument belong to the category \axiomType{IntegralDomain} and
+\axiomType{Complex} requires that its argument belong to
+\axiomType{CommutativeRing}. See
+\downlink{``\ugTypesBasicTitle''}{ugTypesBasicPage} 
+in Section \ugTypesBasicNumber\ignore{ugTypesBasic}
+for a brief discussion of categories.}
+The \axiomType{Integer} level did not move anywhere
+because it does not allow any arguments.
+We also did not move the \axiomType{SquareMatrix} part anywhere, but
+we could have.
+\xtc{
+Recall that \axiom{m} looks like this.
+}{
+\spadpaste{m \free{m}}
+}
+\xtc{
+If we want a polynomial with matrix coefficients rather than a matrix
+with polynomial entries, we can just do the conversion.
+}{
+\spadpaste{m :: POLY SquareMatrix(2,COMPLEX FRAC INT) \free{m}}
+}
+\xtc{
+We have not yet used modes for any conversions.
+Modes are a great shorthand for indicating the type of the
+object you want.
+Instead of using the long type expression in the
+last example, we could have simply said this.
+}{
+\spadpaste{m :: POLY ? \free{m}}
+}
+\xtc{
+We can also indicate more structure if we want the entries
+of the matrices to be fractions.
+}{
+\spadpaste{m :: POLY SquareMatrix(2,FRAC ?) \free{m}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesSubdomainsTitle}{Subdomains Again}
+\newcommand{\ugTypesSubdomainsNumber}{2.8.}
+
+@
+\section{Subdomains Again}
+\label{ugTypesSubdomainsPage}
+\index{pages!ugTypesSubdomainsPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesSubdomainsPage}
+\index{ugTypesSubdomainsPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesSubdomainsPage}{2.8. Subdomains Again}
+\beginscroll
+
+A \spadgloss{subdomain} \axiom{S} of a domain \axiom{D} is a domain
+consisting of
+\indent{4}
+\beginitems
+\item[1. ] those elements of \axiom{D} that satisfy some
+\spadgloss{predicate} (that is, a test that returns \axiom{true} or
+\axiom{false}) and
+\item[2. ] a subset of the operations of \axiom{D}.
+\enditems
+\indent{0}
+Every domain is a subdomain of itself, trivially satisfying the
+membership test: \axiom{true}.
+
+Currently, there are only two system-defined subdomains in Axiom that receive
+substantial use.
+\axiomType{PositiveInteger} and
+\axiomType{NonNegativeInteger} are subdomains of \axiomType{Integer}.
+An element \axiom{x} of \axiomType{NonNegativeInteger} is an integer
+that is greater than or equal to zero, that is, satisfies
+\axiom{x >= 0.}
+An element \axiom{x} of \axiomType{PositiveInteger} is a nonnegative integer
+that is, in fact, greater than zero, that is, satisfies \axiom{x > 0.}
+Not all operations from \axiomType{Integer} are available for these
+subdomains.
+For example, negation and subtraction are not provided since the subdomains
+are not closed under those operations.
+When you use an integer in an expression, Axiom assigns to it the
+type that is the most specific subdomain whose predicate is satisfied.
+\xtc{
+This is a positive integer.
+}{
+\spadpaste{5}
+}
+\xtc{
+This is a nonnegative integer.
+}{
+\spadpaste{0}
+}
+\xtc{
+This is neither of the above.
+}{
+\spadpaste{-5}
+}
+\xtc{
+Furthermore, unless you are assigning an integer to a declared variable
+or using a conversion, any integer result has as type the most
+specific subdomain.
+}{
+\spadpaste{(-2) - (-3)}
+}
+\xtc{
+}{
+\spadpaste{0 :: Integer}
+}
+\xtc{
+}{
+\spadpaste{x : NonNegativeInteger := 5}
+}
+
+When necessary, Axiom converts an integer object into one belonging
+to a less specific subdomain.
+For example, in \axiom{3-2}, the arguments to \axiomOpFrom{-}{Integer} are both
+elements of \axiomType{PositiveInteger}, but this type does not provide
+a subtraction operation.
+Neither does \axiomType{NonNegativeInteger}, so \axiom{3} and \axiom{2}
+are viewed as elements of \axiomType{Integer}, where their difference
+can be calculated.
+The result is \axiom{1}, which Axiom then automatically assigns
+the type \axiomType{PositiveInteger}.
+
+\xtc{
+Certain operations are very sensitive to the subdomains to which their
+arguments belong.
+This is an element of \axiomType{PositiveInteger}.
+}{
+\spadpaste{2 ** 2}
+}
+\xtc{
+This is an element of \axiomType{Fraction Integer}.
+}{
+\spadpaste{2 ** (-2)}
+}
+\xtc{
+It makes sense then that this
+is a list of elements of \axiomType{PositiveInteger}.
+}{
+\spadpaste{[10**i for i in 2..5]}
+}
+What should the type of \axiom{[10**(i-1) for i in 2..5]} be?
+On one hand, \axiom{i-1} is always an integer greater than zero
+as \axiom{i} ranges from \axiom{2} to \axiom{5} and so \axiom{10**i}
+is also always a positive integer.
+On the other, \axiom{i-1} is a very simple function of \axiom{i}.
+Axiom does not try to analyze every such function over the
+index's range of values to determine whether it is always positive
+or nowhere negative.
+For an arbitrary Axiom function, this analysis is not possible.
+
+\xtc{
+So, to be consistent no such analysis is done and we get this.
+}{
+\spadpaste{[10**(i-1) for i in 2..5]}
+}
+\xtc{
+To get a list of elements of \axiomType{PositiveInteger} instead, you
+have two choices.
+You can use a conversion.
+}{
+\spadpaste{[10**((i-1) :: PI) for i in 2..5]}
+}
+\xtc{
+Or you can use \axiom{pretend}.
+\spadkey{pretend}
+}{
+\spadpaste{[10**((i-1) pretend PI) for i in 2..5]}
+}
+
+The operation \axiom{pretend} is used to defeat the Axiom
+type system.
+The expression \axiom{object pretend D} means ``make a new object
+(without copying) of type \axiom{D} from \axiom{object}.''
+If \axiom{object} were an integer and you told Axiom
+to pretend it was a list, you would probably see a message about a
+fatal error being caught and memory possibly being damaged.
+Lists do not have the same internal representation as integers!
+
+You use \axiom{pretend} at your peril.
+
+\xtc{
+Use \axiom{pretend} with great care!
+Axiom trusts you that the value is of the specified type.
+}{
+\spadpaste{(2/3) pretend Complex Integer}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesPkgCallTitle}{Package Calling and Target Types}
+\newcommand{\ugTypesPkgCallNumber}{2.9.}
+
+@
+\section{Package Calling and Target Types}
+\label{ugTypesPkgCallPage}
+\begin{itemize}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\item ugUserUsePage \ref{ugUserUsePage} on
+page~\pageref{ugUserUsePage}
+\end{itemize}
+\index{pages!ugTypesPkgCallPage!ug02.ht}
+\index{ug02.ht!pages!ugTypesPkgCallPage}
+\index{ugTypesPkgCallPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesPkgCallPage}{2.9. Package Calling and Target Types}
+\beginscroll
+
+Axiom works hard to figure out what you mean by an
+expression without your having to qualify it with type
+information.
+Nevertheless, there are times when you need to help it along by
+providing hints (or even orders!) to get Axiom to do what
+you want.
+
+We saw in \downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare} that 
+declarations using types
+and modes control the type of the results produced.
+For example, we can either produce a complex object with
+polynomial real and imaginary parts or a polynomial with complex
+integer coefficients, depending on the declaration.
+
+\spadglossSee{Package calling}{package call} is how you tell
+Axiom to use a particular function from a particular part of
+the library.
+
+\xtc{
+Use the \axiomOpFrom{/}{Fraction} from \axiomType{Fraction Integer}
+to create a fraction of two integers.
+}{
+\spadpaste{2/3}
+}
+\xtc{
+If we wanted a floating point number, we can say ``use the
+\axiomOpFrom{/}{Float} in \axiomType{Float}.''
+}{
+\spadpaste{(2/3)\$Float}
+}
+\xtc{
+Perhaps we actually wanted a fraction of complex integers.
+}{
+\spadpaste{(2/3)\$Fraction(Complex Integer)}
+}
+
+In each case, Axiom used the indicated operations, sometimes
+first needing to convert the two integers into objects of an
+appropriate type.
+In these examples, \axiomOpFrom{/}{Fraction} is written as an
+infix operator.
+
+\beginImportant
+To use package calling with an infix operator, use the
+following syntax:
+\centerline{{{\tt ( \subscriptIt{arg}{1} {\it op} \subscriptIt{arg}{1} )\${\it type} }}}
+\endImportant
+
+We used, for example, \axiom{(2/3)\$Float}.
+The expression \axiom{2 + 3 + 4} is equivalent to \axiom{(2+3) + 4.}
+Therefore in the expression
+\axiom{(2 + 3 + 4)\$Float} the second
+\axiomOp{+} comes from the \axiomType{Float} domain.
+Can you guess whether the first \axiomOp{+} comes from
+\axiomType{Integer} or \axiomType{Float}?\footnote{\axiomType{Float},
+because the package call causes Axiom to convert
+\axiom{(2 + 3)} and \axiom{4} to type \axiomType{Float}.
+Before the sum is converted, it is given a target type (see below) of
+\axiomType{Float} by Axiom and then evaluated.
+The target type causes the \axiomOp{+} from \axiomType{Float} to be used.}
+
+\beginImportant
+For an operator written before its arguments, you must use
+parentheses around the arguments (even if there is only one),
+and follow the closing parenthesis by a \axiomSyntax{\$}
+and then the type.
+\centerline{{{\tt {\it fun} ( \subscriptIt{arg}{1}, \subscriptIt{arg}{1}, \ldots, \subscriptIt{arg}{N} )\${\it type}}}}
+\endImportant
+
+For example, to call the ``minimum'' function from \axiomType{DoubleFloat}
+on two integers, you could write \axiom{min(4,89)\$DoubleFloat}.
+Another use of package calling is to tell Axiom to use a library
+function rather than a function you defined.
+We discuss this in \downlink{``\ugUserUseTitle''}{ugUserUsePage} 
+in Section \ugUserUseNumber\ignore{ugUserUse}.
+
+Sometimes rather than specifying where an operation comes from, you just
+want to say what type the result should be.
+We say that you provide
+a
+\spadglossSee{target type}{target} for the expression.
+Instead of using a \axiomSyntax{\$}, use a \axiomSyntax{@} to specify
+the requested target type.
+Otherwise, the syntax is the same.
+Note that giving a target type is not the same as explicitly doing a
+conversion.
+The first says ``try to pick operations so that the result has
+such-and-such a type.''
+The second says ``compute the result and then convert to an object of
+such-and-such a type.''
+
+\xtc{
+Sometimes it makes sense, as in this expression,
+to say ``choose the operations in this expression so that
+the final result is a \axiomType{Float}.''
+}{
+\spadpaste{(2/3)@Float}
+}
+
+Here we used \axiomSyntax{@} to say that the target type of the
+left-hand side was \axiomType{Float}.
+In this simple case, there was no real difference
+between using \axiomSyntax{\$} and \axiomSyntax{@}.
+You can see the difference if you try the following.
+\xtc{
+This says to try to choose \axiomOp{+} so that the result is
+a string.
+Axiom cannot do this.
+}{
+\spadpaste{(2 + 3)@String}
+}
+\xtc{
+This says to get the \axiomOp{+} from \axiomType{String} and apply
+it to the two integers.
+Axiom also cannot do this because there is no \axiomOp{+}
+exported by \axiomType{String}.
+}{
+\spadpaste{(2 + 3)\$String}
+}
+(By the way, the operation \axiomFunFrom{concat}{String} or juxtaposition
+is used to concatenate two strings.)
+
+When we have more than one operation in an expression, the
+difference is even more evident.
+The following two expressions show that Axiom uses the
+target type to create different objects.
+The \axiomOp{+}, \axiomOp{*} and \axiomOp{**} operations are all
+chosen so that an object of the correct final type is created.
+
+\xtc{
+This says that the operations should be chosen so
+that the result is a \axiomType{Complex} object.
+}{
+\spadpaste{((x + y * \%i)**2)@(Complex Polynomial Integer)}
+}
+\xtc{
+This says that the operations should be chosen so
+that the result is a \axiomType{Polynomial} object.
+}{
+\spadpaste{((x + y * \%i)**2)@(Polynomial Complex Integer)}
+}
+\xtc{
+What do you think might happen if we left off all
+target type and package call information in this last example?
+}{
+\spadpaste{(x + y * \%i)**2 \bound{prevC}}
+}
+\xtc{
+We can convert it to \axiomType{Complex} as an afterthought.
+But this is more work than just saying making what we want in the first
+place.
+}{
+\spadpaste{\% :: Complex ? \free{prevC}}
+}
+
+Finally, another use of package calling is to qualify fully an
+operation that is passed as an argument to a function.
+
+\xtc{
+Start with a small matrix of integers.
+}{
+\spadpaste{h := matrix [[8,6],[-4,9]] \bound{h}}
+}
+%
+\xtc{
+We want to produce a new matrix that has for entries the multiplicative
+inverses of the entries of \axiom{h}.
+One way to do this is by calling
+\axiomFunFrom{map}{MatrixCategoryFunctions2} with the
+\axiomFunFrom{inv}{Fraction} function from \axiomType{Fraction (Integer)}.
+}{
+\spadpaste{map(inv\$Fraction(Integer),h) \free{h}}
+}
+\xtc{
+We could have been a bit less verbose and used abbreviations.
+}{
+\spadpaste{map(inv\$FRAC(INT),h) \free{h}\bound{h1}}
+}
+%
+\xtc{
+As it turns out, Axiom is smart enough to know what we mean
+anyway.
+We can just say this.
+}{
+\spadpaste{map(inv,h) \free{h}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesResolveTitle}{Resolving Types}
+\newcommand{\ugTypesResolveNumber}{2.10.}
+
+@
+\section{Resolving Types}
+\label{ugTypesResolvePage}
+\index{pages!ugTypesResolvePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesResolvePage}
+\index{ugTypesResolvePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesResolvePage}{2.10. Resolving Types}
+\beginscroll
+
+In this section we briefly describe an internal process by which
+Axiom determines a type to which two objects of possibly
+different types can be converted.
+We do this to give you further insight into how Axiom takes
+your input, analyzes it, and produces a result.
+
+What happens when you enter \axiom{x + 1} to Axiom?
+Let's look at what you get from the two terms of this expression.
+
+\xtc{
+This is a symbolic object whose type indicates the name.
+}{
+\spadpaste{x}
+}
+\xtc{
+This is a positive integer.
+}{
+\spadpaste{1}
+}
+
+There are no operations in \axiomType{PositiveInteger} that add
+positive integers to objects of type \axiomType{Variable(x)} nor
+are there any in \axiomType{Variable(x)}.
+Before it can add the two parts, Axiom must come up with
+a common type to which both \axiom{x} and \axiom{1} can be
+converted.
+We say that Axiom must {\it resolve} the two types
+into a common type.
+In this example, the common type is \axiomType{Polynomial(Integer)}.
+
+\xtc{
+Once this is determined, both parts are converted into polynomials,
+and the addition operation from \axiomType{Polynomial(Integer)} is used to
+get the answer.
+}{
+\spadpaste{x + 1}
+}
+\xtc{
+Axiom can always resolve two types: if nothing resembling
+the original types can be found, then \axiomType{Any} is be used.
+This is fine and useful in some cases.
+}{
+\spadpaste{["string",3.14159]}
+}
+\xtc{
+In other cases objects of type \axiomType{Any} can't be used
+by the operations you specified.
+}{
+\spadpaste{"string" + 3.14159}
+}
+Although this example was contrived, your expressions may need
+to be qualified slightly to help Axiom resolve the
+types involved.
+You may need to declare a few variables, do some package calling,
+provide some target type information or do some explicit
+conversions.
+
+We suggest that you just enter the expression you want evaluated and
+see what Axiom does.
+We think you will be impressed with its ability to ``do what I
+mean.''
+If Axiom is still being obtuse, give it some hints.
+As you work with Axiom, you will learn where it needs a
+little help to analyze quickly and perform your computations.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugTypesExposeTitle}{Exposing Domains and Packages}
+\newcommand{\ugTypesExposeNumber}{2.11.}
+
+@
+\section{Exposing Domains and Packages}
+\label{ugTypesExposePage}
+\begin{itemize}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\item ugUserTrianglePage \ref{ugUserTrianglePage} on
+page~\pageref{ugUserTrianglePage}
+\item ugSysCmdframePage \ref{ugSysCmdframePage} on
+page~\pageref{ugSysCmdframePage}
+\end{itemize}
+\index{pages!ugTypesExposePage!ug02.ht}
+\index{ug02.ht!pages!ugTypesExposePage}
+\index{ugTypesExposePage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugTypesExposePage}{2.11. Exposing Domains and Packages}
+\beginscroll
+
+In this section we discuss how Axiom makes some operations
+available to you while hiding others that are meant to be used by
+developers or only in rare cases.
+If you are a new user of Axiom, it is likely that everything
+you need is available by default and you may want
+to skip over this section on first reading.
+
+Every
+domain and package in the Axiom library
+is
+either
+\spadglossSee{exposed}{expose} (meaning that you can use its 
+operations without doing
+anything special) or it is {\it hidden} (meaning you have to either
+package call
+(see \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall})
+the operations it contains or explicitly expose it to use the
+operations).
+The initial exposure status for a constructor is set in the
+file {\bf exposed.lsp} (see the {\it Installer's Note}
+for Axiom
+if you need to know the location of this file).
+Constructors are collected together in
+{\it exposure groups}.
+Categories are all in the exposure group ``categories'' and the
+bulk of the basic set of packages and domains that are exposed
+are in the exposure group ``basic.''
+Here is an abbreviated sample of the file (without the Lisp parentheses):
+\begin{verbatim}
+basic
+        AlgebraicNumber                          AN
+        AlgebraGivenByStructuralConstants        ALGSC
+        Any                                      ANY
+        AnyFunctions1                            ANY1
+        BinaryExpansion                          BINARY
+        Boolean                                  BOOLEAN
+        CardinalNumber                           CARD
+        CartesianTensor                          CARTEN
+        Character                                CHAR
+        CharacterClass                           CCLASS
+        CliffordAlgebra                          CLIF
+        Color                                    COLOR
+        Complex                                  COMPLEX
+        ContinuedFraction                        CONTFRAC
+        DecimalExpansion                         DECIMAL
+        ...
+\end{verbatim}
+\begin{verbatim}
+categories
+        AbelianGroup                             ABELGRP
+        AbelianMonoid                            ABELMON
+        AbelianMonoidRing                        AMR
+        AbelianSemiGroup                         ABELSG
+        Aggregate                                AGG
+        Algebra                                  ALGEBRA
+        AlgebraicallyClosedField                 ACF
+        AlgebraicallyClosedFunctionSpace         ACFS
+        ArcHyperbolicFunctionCategory            AHYP
+        ...
+\end{verbatim}
+For each constructor in a group, the full name and the abbreviation
+is given.
+There are other groups in {\bf exposed.lsp} but initially only the
+constructors in exposure groups ``basic'' ``categories'' ``naglink'' 
+and ``anna'' are exposed.
+
+As an interactive user of Axiom, you do not need to modify
+this file.
+Instead, use \spadcmd{)set expose} to expose, hide or query the exposure
+status of an individual constructor or exposure group.
+The reason for having exposure groups is to be able to expose or hide
+multiple constructors with a single command.
+For example, you might group together into exposure group ``quantum'' a
+number of domains and packages useful for quantum mechanical computations.
+These probably should not be available to every user, but you want an easy
+way to make the whole collection visible to Axiom when it is looking
+for operations to apply.
+
+If you wanted to hide all the basic constructors available by default, you
+would issue \spadcmd{)set expose drop group basic}.
+If, however, you discover that you have hidden all the basic constructors,
+you should issue \spadcmd{)set expose add group basic} to restore your
+default environment.
+
+It is more likely that you would want to expose or hide individual
+constructors.
+In \downlink{``\ugUserTriangleTitle''}{ugUserTrianglePage} 
+in Section \ugUserTriangleNumber\ignore{ugUserTriangle} we 
+use several operations from
+\axiomType{OutputForm}, a domain usually hidden.
+To avoid package calling every operation from \axiomType{OutputForm}, we
+expose the domain and let Axiom conclude that those operations should
+be used.
+Use \spadcmd{)set expose add constructor} and \spadcmd{)set expose drop
+constructor} to expose and hide a constructor, respectively.
+You should use the constructor name, not the abbreviation.
+The \spadcmd{)set expose} command guides you through these options.
+
+If you expose a previously hidden constructor, Axiom
+exhibits new behavior (that was your intention) though you might not
+expect the results that you get.
+\axiomType{OutputForm} is, in fact, one of the worst offenders in this
+regard.
+This domain is meant to be used by other domains for creating a
+structure that Axiom knows how to display.
+It has functions like \axiomOpFrom{+}{OutputForm} that form output
+representations rather than do mathematical calculations.
+Because of the order in which Axiom looks at constructors
+when it is deciding what operation to apply, \axiomType{OutputForm}
+might be used instead of what you expect.
+\xtc{
+This is a polynomial.
+}{
+\spadpaste{x + x}
+}
+\xtc{
+Expose \axiomType{OutputForm}.
+}{
+\spadpaste{)set expose add constructor OutputForm \bound{setexposeadd}}
+}
+\xtc{
+This is what we get when \axiomType{OutputForm} is automatically
+available.
+}{
+\spadpaste{x + x \free{setexposeadd}}
+}
+\xtc{
+Hide \axiomType{OutputForm} so we don't run into problems
+with any later examples!
+}{
+\spadpaste{)set expose drop constructor OutputForm \bound{setexposedrop}}
+}
+
+Finally, exposure is done on a frame-by-frame basis.
+A \spadgloss{frame} (see 
+\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
+in Section \ugSysCmdframeNumber\ignore{ugSysCmdframe})
+is one of possibly several
+logical Axiom workspaces within a physical one, each having
+its own environment (for example, variables and function definitions).
+If you have several Axiom workspace windows on your screen, they
+are all different frames, automatically created for you by \HyperName{}.
+Frames can be manually created, made active and destroyed by the
+\spadcmd{)frame} system command.
+They do not share exposure information, so you need to use
+\spadcmd{)set expose} in each one to add or drop constructors from view.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug02.ht>>=
+\newcommand{\ugAvailSnoopTitle}{Commands for Snooping}
+\newcommand{\ugAvailSnoopNumber}{2.12.}
+
+@
+\section{Commands for Snooping}
+\label{ugAvailSnoopPage}
+\begin{itemize}
+\item ugBrowsePage \ref{ugBrowsePage} on
+page~\pageref{ugBrowsePage}
+\item ComplexXmpPage \ref{ComplexXmpPage} on
+page~\pageref{ComplexXmpPage}
+\item ugUserDeclarePage \ref{ugUserDeclarePage} on
+page~\pageref{ugUserDeclarePage}
+\end{itemize}
+\index{pages!ugAvailSnoopPage!ug02.ht}
+\index{ug02.ht!pages!ugAvailSnoopPage}
+\index{ugAvailSnoopPage!ug02.ht!pages}
+<<ug02.ht>>=
+\begin{page}{ugAvailSnoopPage}{2.12. Commands for Snooping}
+\beginscroll
+
+To conclude this chapter, we introduce you to some system commands
+that you can use for getting more information about domains,
+packages, categories, and operations.
+The most powerful Axiom facility for getting information about
+constructors and operations is the \Browse{} component of \HyperName{}.
+This is discussed in \downlink{``\ugBrowseTitle''}{ugBrowsePage} 
+in Chapter \ugBrowseNumber\ignore{ugBrowse}.
+
+Use the \spadsys{)what} system command to see lists of system objects
+whose name contain a particular substring (uppercase or lowercase is
+not significant).
+
+\xtc{
+Issue this to see a list of all operations with
+``{\tt complex}'' in their names.
+}{
+\spadpaste{)what operation complex}
+}
+\xtc{
+If you want to see all domains with ``{\tt matrix}'' in their names, issue
+this.
+}{
+\spadpaste{)what domain matrix}
+}
+\xtc{
+Similarly, if you wish to see all packages whose names contain
+``{\tt gauss}'', enter this.
+}{
+\spadpaste{)what package gauss}
+}
+\xtc{
+This command shows all
+the operations that \axiomType{Any} provides.
+Wherever \axiomSyntax{\$} appears, it means ``\axiomType{Any}''.
+}{
+\spadpaste{)show Any}
+}
+\xtc{
+This displays all operations with the name \axiomFun{complex}.
+}{
+\spadpaste{)display operation complex}
+}
+Let's analyze this output.
+\xtc{
+First we find out what some of the abbreviations mean.
+}{
+\spadpaste{)abbreviation query COMPCAT}
+}
+\xtc{
+}{
+\spadpaste{)abbreviation query COMRING}
+}
+
+So if \axiom{D1} is a commutative ring (such as the integers or
+floats) and \axiom{D} belongs to \axiomType{ComplexCategory
+D1}, then there is an operation called \axiomFun{complex} that
+takes two elements of \axiom{D1} and creates an element of
+\axiom{D}.
+The primary example of a constructor implementing domains
+belonging to \axiomType{ComplexCategory} is \axiomType{Complex}.
+See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} 
+for more information on that and see
+\downlink{``\ugUserDeclareTitle''}{ugUserDeclarePage} in 
+Section \ugUserDeclareNumber\ignore{ugUserDeclare} 
+for more information on function types.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 3 (ug03.ht)}
+<<ug03.ht>>=
+\newcommand{\ugHyperTitle}{Using \HyperName{}}
+\newcommand{\ugHyperNumber}{3.}
+
+@
+\section{Using \HyperName{}}
+\label{ugHyperPage}
+\begin{itemize}
+\item YouTriedIt \ref{YouTriedIt} on
+page~\pageref{YouTriedIt}
+\item ugHyperHeadingsPage \ref{ugHyperHeadingsPage} on
+page~\pageref{ugHyperHeadingsPage}
+\item ugHyperKeysPage \ref{ugHyperKeysPage} on
+page~\pageref{ugHyperKeysPage}
+\item ugHyperScrollPage \ref{ugHyperScrollPage} on
+page~\pageref{ugHyperScrollPage}
+\item ugHyperInputPage \ref{ugHyperInputPage} on
+page~\pageref{ugHyperInputPage}
+\item ugHyperButtonsPage \ref{ugHyperButtonsPage} on
+page~\pageref{ugHyperButtonsPage}
+\item ugHyperSearchPage \ref{ugHyperSearchPage} on
+page~\pageref{ugHyperSearchPage}
+\item ugHyperExamplePage \ref{ugHyperExamplePage} on
+page~\pageref{ugHyperExamplePage}
+\item ugHyperResourcesPage \ref{ugHyperResourcesPage} on
+page~\pageref{ugHyperResourcesPage}
+\end{itemize}
+\index{pages!ugHyperPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperPage}
+\index{ugHyperPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperPage}{3. Using \HyperName{}}
+\beginscroll
+
+
+\HyperName{} is the gateway to Axiom.
+It's both an on-line tutorial and an on-line reference manual.
+It also enables you to use Axiom simply by using the mouse and
+filling in templates.
+\HyperName{} is available to you if you are running Axiom under the
+X Window System.
+
+Pages usually have active areas, marked in
+\texht{{\bf this font} (bold face).}{\downlink{this font.}{YouTriedIt}}
+As you move the mouse pointer to an active area, the pointer changes from
+a filled dot to an open circle.
+The active areas are usually linked to other pages.
+When you click on an active area, you move to the linked page.
+\texht{}{Try clicking \downlink{here}{YouTriedIt} now.}
+
+We suggest that you learn more about other features of
+\HyperName{} by clicking on an active area in the menu below.
+
+\beginmenu
+    \menudownlink{{3.1. Headings}}{ugHyperHeadingsPage}
+    \menudownlink{{3.2. Key Definitions}}{ugHyperKeysPage}
+    \menudownlink{{3.3. Scroll Bars}}{ugHyperScrollPage}
+    \menudownlink{{3.4. Input Areas}}{ugHyperInputPage}
+    \menudownlink{{3.5. Radio Buttons and Toggles}}{ugHyperButtonsPage}
+    \menudownlink{{3.6. Search Strings}}{ugHyperSearchPage}
+    \menudownlink{{3.7. Example Pages}}{ugHyperExamplePage}
+    \menudownlink{{3.8. X Window Resources for \HyperName{}}}{ugHyperResourcesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperHeadingsTitle}{Headings}
+\newcommand{\ugHyperHeadingsNumber}{3.1.}
+
+@
+\section{Headings}
+\label{ugHyperHeadingsPage}
+\index{pages!ugHyperHeadingsPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperHeadingsPage}
+\index{ugHyperHeadingsPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperHeadingsPage}{3.1. Headings}
+\beginscroll
+%
+Most pages have a standard set of buttons at the top of the page.
+This is what they mean:
+
+\indent{0}
+\beginitems
+\item[\StdHelpButton{}] Click on this to get help.
+The button only appears if there is specific help for the page you are
+viewing.
+You can get {\it general} help for \HyperName{} by clicking the help
+button on the home page.
+
+\item[\UpButton{}] Click here to go back one page.
+By clicking on this button repeatedly, you can go back several pages and
+then take off in a new direction.
+
+\item[\ReturnButton{}] Go back to the home page, that is,
+the page on which you started.
+Use \HyperName{} to explore, to make forays into new topics.
+Don't worry about how to get back.
+\HyperName{} remembers where you came from.
+Just click on this button to return.
+
+\item[\StdExitButton{}] From the root window (the one that is displayed when
+you start the system) this button leaves the \HyperName{} program, and it
+must be restarted if you want to use it again.
+From any other \HyperName{} window, it just makes that one window go away.
+You {\it must} use this button to get rid of a window.
+If you use the window manager ``Close'' button, then all of \HyperName{}
+goes away.
+\enditems
+\indent{0}
+%
+The buttons are not displayed if they are not applicable to the page
+you are viewing.
+For example, there is no \ReturnButton{} button on the top-level menu.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperKeysTitle}{Key Definitions}
+\newcommand{\ugHyperKeysNumber}{3.2.}
+
+@
+\section{Key Definitions}
+\label{ugHyperKeysPage}
+\begin{itemize}
+\item ugHyperScrollPage \ref{ugHyperScrollPage} on
+page~\pageref{ugHyperScrollPage}
+\item ugHyperInputPage \ref{ugHyperInputPage} on
+page~\pageref{ugHyperInputPage}
+\end{itemize}
+\index{pages!ugHyperKeysPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperKeysPage}
+\index{ugHyperKeysPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperKeysPage}{3.2. Key Definitions}
+\beginscroll
+
+The following keyboard definitions are in effect throughout
+\HyperName{}.
+See \downlink{``\ugHyperScrollTitle''}{ugHyperScrollPage} 
+in Section \ugHyperScrollNumber\ignore{ugHyperScroll} and
+\downlink{``\ugHyperInputTitle''}{ugHyperInputPage} 
+in Section \ugHyperInputNumber\ignore{ugHyperInput}
+for some contextual key definitions.
+%
+\indent{0}
+\beginitems
+\item[F1] Display the main help page.
+\item[F3] Same as \StdExitButton{}, makes the window go away if you are 
+not at the top-level window or quits the \HyperName{} facility if you are 
+at the top-level.
+\item[F5] Rereads the \HyperName{} database, if necessary (for system 
+developers).
+\item[F9] Displays this information about key definitions.
+\item[F12] Same as {\bf F3}.
+\item[Up Arrow] Scroll up one line.
+\item[Down Arrow] Scroll down one line.
+\item[Page Up] Scroll up one page.
+\item[Page Down] Scroll down one page.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperScrollTitle}{Scroll Bars}
+\newcommand{\ugHyperScrollNumber}{3.3.}
+
+@
+\section{Scroll Bars}
+\label{ugHyperScrollPage}
+\begin{itemize}
+\item ugHyperInputPage \ref{ugHyperInputPage} on
+page~\pageref{ugHyperInputPage}
+\end{itemize}
+\index{pages!ugHyperScrollPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperScrollPage}
+\index{ugHyperScrollPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperScrollPage}{3.3. Scroll Bars}
+\beginscroll
+%
+
+Whenever there is too much text to fit on a page, a {\it scroll
+bar} automatically appears along the right side.
+
+With a scroll bar, your page becomes an aperture, that is, a
+window into a larger amount of text than can be displayed at one
+time.
+The scroll bar lets you move up and down in the text to see
+different parts.
+It also shows where the aperture is relative to the whole text.
+The aperture is indicated by a strip on the scroll bar.
+
+Move the cursor with the mouse to the ``down-arrow'' at the bottom
+of the scroll bar and click.
+See that the aperture moves down one line.
+Do it several times.
+Each time you click, the aperture moves down one line.
+Move the mouse to the ``up-arrow'' at the top of the scroll bar and
+click.
+The aperture moves up one line each time you click.
+
+Next move the mouse to any position along the middle of the scroll bar and
+click.
+\HyperName{} attempts to move the top of the aperture to this point in
+the text.
+
+You cannot make the aperture go off the bottom edge.
+When the aperture is about half the size of text, the lowest you can move
+the aperture is halfway down.
+
+To move up or down one screen at a time, use the
+\texht{\fbox{\bf PageUp}}{{\bf PageUp}} and \texht{\fbox{\bf PageDown}}{{\bf
+PageDown}} keys on your keyboard.
+They move the visible part of the region up and down one page each time you
+press them.
+
+If the \HyperName{} page does not contain an input area
+(see \downlink{``\ugHyperInputTitle''}{ugHyperInputPage} 
+in Section \ugHyperInputNumber\ignore{ugHyperInput}), you can also use the
+\texht{\fbox{\bf Home}}{{\bf Home}} and
+\texht{\fbox{$\uparrow$}}{up} and
+\texht{\fbox{$\downarrow$}}{down} arrow keys to navigate.
+When you press the \texht{\fbox{\bf Home}}{{\bf Home}} key,
+the screen is positioned at the very top of the page.
+Use the \texht{\fbox{$\uparrow$}}{up} and
+\texht{\fbox{$\downarrow$}}{down} arrow keys to move the screen up
+and down one line at a time, respectively.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperInputTitle}{Input Areas}
+\newcommand{\ugHyperInputNumber}{3.4.}
+
+@
+\section{Input Areas}
+\label{ugHyperInputPage}
+\index{pages!ugHyperInputPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperInputPage}
+\index{ugHyperInputPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperInputPage}{3.4. Input Areas}
+\beginscroll
+%
+Input areas are boxes where you can put data.
+Here is one:
+\centerline{\inputstring{one}{40}{some text}}
+\newline As you can see, the input area has some initial text {\it some text}
+followed by an underscore cursor (the character {\it _}).
+
+To enter characters, first
+move your mouse cursor to somewhere within the \HyperName{} page.
+Characters that you type are inserted in front of the underscore.
+This means that when you type characters at your keyboard, they
+go into this first input area.
+
+The input area grows to accommodate as many characters as you type.
+Use the \texht{\fbox{\bf Backspace}}{{\bf Backspace}}
+key to erase characters to the left.
+To modify what you type, use the right-arrow \texht{\fbox{$\rightarrow$}}{}
+and left-arrow keys \texht{\fbox{$\leftarrow$}}{} and the
+keys \texht{\fbox{\bf Insert}}{{\bf Insert}},
+\texht{\fbox{\bf Delete}}{{\bf Delete}},
+\texht{\fbox{\bf Home}}{{\bf Home}} and
+\texht{\fbox{\bf End}}{{\bf End}}.
+These keys are found immediately on the right of the standard IBM keyboard.
+
+If you press the
+\texht{\fbox{\bf Home}}{{\bf Home}}
+key, the cursor moves to the beginning of the line and if you press the
+\texht{\fbox{\bf End}}{{\bf End}}
+key, the cursor moves to the end of the line.
+Pressing
+\texht{\fbox{\bf Ctrl}--\fbox{\bf End}}{{\bf Ctrl-End}}
+deletes all the text from the cursor to the end of the line.
+
+A page may have more than one input area.
+Only one input area has an underscore cursor.
+When you first see apage, the top-most input area contains the
+cursor.
+To type information into another input area,
+use the \texht{\fbox{\bf Enter}}{{\bf Enter}} or
+\texht{\fbox{\bf Tab}}{{\bf Tab}} key to move
+from one input area to another.
+To move in the reverse order, use
+\texht{\fbox{\bf Shift}--\fbox{\bf Tab}}{{\bf Shift-Tab}}.
+
+You can also move from one input area to another using your mouse.
+Notice that each input area is active. Click on one of the areas.
+As you can see, the underscore cursor moves to that window.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperButtonsTitle}{Radio Buttons and Toggles}
+\newcommand{\ugHyperButtonsNumber}{3.5.}
+
+@
+\section{Radio Buttons and Toggles}
+\label{ugHyperButtonsPage}
+\index{pages!ugHyperButtonsPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperButtonsPage}
+\index{ugHyperButtonsPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperButtonsPage}{3.5. Radio Buttons and Toggles}
+\beginscroll
+%
+Some pages have {\it radio buttons} and {\it toggles}.
+Radio buttons are a group of buttons like those on car radios: you can
+select only one at a time.
+\radioboxes{sample}{\htbmfile{pick}}{\htbmfile{unpick}}
+Here are three radio buttons:
+\centerline{
+{\em\radiobox[1]{rone}{sample}\space{}\ First one}\space{3}
+{\em\radiobox[0]{rtwo}{sample}\space{}\ Second one}\space{3}
+{\em\radiobox[0]{rthree}{sample}\space{}\ Third one}
+}
+\newline
+Once you have selected a button, it appears to be inverted and
+contains a checkmark.
+To change the selection, move the cursor with the mouse to a different radio
+button and click.
+\texht{}{Try it now.}
+
+A toggle is an independent button that displays some on/off
+state.
+When ``on'', the button appears to be inverted and
+contains a checkmark.
+When ``off'', the button is raised.
+%
+Unlike radio buttons, you can set a group of them any way you like.
+Here are three:
+\centerline{
+{\em\inputbox[1]{one}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ First one}
+\space{3}
+{\em\inputbox[0]{two}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ Second one}
+\space{3}
+{\em\inputbox[1]{three}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ Third one}
+}
+\newline
+To change toggle the selection, move the cursor with the mouse
+to the button and click.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperSearchTitle}{Search Strings}
+\newcommand{\ugHyperSearchNumber}{3.6.}
+
+@
+\section{Search Strings}
+\label{ugHyperSearchPage}
+\begin{itemize}
+\item ugLogicalSearchesPage \ref{ugLogicalSearchesPage} on
+page~\pageref{ugLogicalSearchesPage}
+\end{itemize}
+\index{pages!ugHyperSearchPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperSearchPage}
+\index{ugHyperSearchPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperSearchPage}{3.6. Search Strings}
+\beginscroll
+%
+A {\it search string} is used for searching some database.
+To learn about search strings, we suggest that
+you bring up the \HyperName{} glossary.
+To do this from the top-level page of \HyperName{}:
+\indent{4}
+\beginitems
+\item[1. ] Click on \windowlink{Reference}{TopReferencePage},
+bringing up the Axiom Reference page.
+\item[2. ] Click on \windowlink{Glossary}{GlossaryPage}, bringing up the glossary.
+\texht{}{(You can also just click on the word ``Glossary'' in the
+last sentence.)}
+\enditems
+\indent{0}
+Once you get the window containing the glossary, move it so that
+it and this window are both visible.
+
+The glossary has an input area at its bottom.
+We review the various kinds of search strings
+you can enter to search the glossary.
+
+The simplest search string is a word, for example, {\tt operation}.
+A word only matches an entry having exactly that spelling.
+Enter the word {\tt operation} into the input area above then click on
+{\bf Search}.
+As you can see, {\tt operation} matches only one entry, namely with {\tt
+operation} itself.
+
+Normally matching is insensitive to whether the alphabetic characters of your
+search string are in uppercase or lowercase.
+Thus {\tt operation} and {\tt OperAtion} both have the same effect.
+%If you prefer that matching be case-sensitive, issue the command
+%\spadsys{set HHyperName mixedCase} command to the interpreter.
+
+You will very often want to use the wildcard \spadSyntax{*} in your search
+string so as to match multiple entries in the list.
+The search key \spadSyntax{*}  matches every entry in the list.
+You can also use \spadSyntax{*} anywhere within a search string to match an
+arbitrary substring.
+Try {\tt cat*} for example:
+enter {\tt cat*} into the input area and click on {\bf Search}.
+This matches several entries.
+
+You use any number of wildcards in a search string as long as they are
+not adjacent.
+Try search strings such as {\tt *dom*}.
+As you see, this search string  matches {\tt domain}, {\tt domain
+constructor}, {\tt subdomain}, and so on.
+
+\beginmenu
+    \menudownlink{{3.6.1. Logical Searches}}{ugLogicalSearchesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugLogicalSearchesTitle}{Logical Searches}
+\newcommand{\ugLogicalSearchesNumber}{3.6.1.}
+
+@
+\section{Logical Searches}
+\label{ugLogicalSearchesPage}
+\index{pages!ugLogicalSearchesPage!ug03.ht}
+\index{ug03.ht!pages!ugLogicalSearchesPage}
+\index{ugLogicalSearchesPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugLogicalSearchesPage}{3.6.1. Logical Searches}
+\beginscroll
+
+For more complicated searches, you can use
+\spadSyntax{and}, \spadSyntax{or}, and \spadSyntax{not}
+with basic search strings;
+write logical expressions using these three operators just as
+in the Axiom language.
+For example, {\tt domain or package}  matches the two
+entries {\tt domain} and {\tt package}.
+Similarly, {\tt dom* and *con*} matches {\tt domain constructor}
+and others.
+Also {\tt not *a*} matches every entry that does not contain
+the letter {\tt a} somewhere.
+
+Use parentheses for grouping.
+For example, {\tt dom* and (not *con*)}
+matches {\tt domain} but not {\tt domain constructor}.
+
+There is no limit to how complex your logical expression can be.
+For example,
+\centerline{{{\tt a* or b* or c* or d* or e* and (not *a*)}}}
+is a valid expression.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperExampleTitle}{Example Pages}
+\newcommand{\ugHyperExampleNumber}{3.7.}
+
+@
+\section{Example Pages}
+\label{ugHyperExamplePage}
+\index{pages!ugHyperExamplePage!ug03.ht}
+\index{ug03.ht!pages!ugHyperExamplePage}
+\index{ugHyperExamplePage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperExamplePage}{3.7. Example Pages}
+\beginscroll
+%
+Many pages have Axiom example commands.
+%
+Here are two:
+\spadpaste{a:= x**2 + 1 \bound{a}} 
+\spadpaste{(a - 2)**2 \free{a}} 
+%
+Each command has an active ``button'' along the left margin.
+When you click on this button, the output for the command is
+``pasted-in.''
+Click again on the button and you see that the pasted-in output
+disappears.
+
+Maybe you would like to run an example?
+To do so, just click on any part of its text!
+When you do, the example line is copied into a new interactive
+Axiom buffer for this \HyperName{} page.
+
+Sometimes one example line cannot be run before you run an earlier one.
+Don't worry---\HyperName{} automatically runs all the necessary
+lines in the right order!
+For instance, the second example line above refers to \spad{a} which is
+assigned in the first example line.
+What happens if you first click on the second example line?
+Axiom first issues the first line (to assign \spad{a}), then the
+second (to do the computation using \spad{a}).
+
+The new interactive Axiom buffer disappears when you leave
+\HyperName{}.
+If you want to get rid of it beforehand,
+use the {\bf Cancel} button of the X Window manager
+or issue the Axiom system command \spadsys{)close.}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug03.ht>>=
+\newcommand{\ugHyperResourcesTitle}{X Window Resources for \HyperName{}}
+\newcommand{\ugHyperResourcesNumber}{3.8.}
+
+@
+\section{X Window Resources for \HyperName{}}
+\label{ugHyperResourcesPage}
+\index{pages!ugHyperResourcesPage!ug03.ht}
+\index{ug03.ht!pages!ugHyperResourcesPage}
+\index{ugHyperResourcesPage!ug03.ht!pages}
+<<ug03.ht>>=
+\begin{page}{ugHyperResourcesPage}{3.8. X Window Resources for \HyperName{}}
+\beginscroll
+%
+You can control the appearance of \HyperName{} while running under Version 11
+of the X Window System by placing the following resources
+in the file {\bf .Xdefaults} in your home directory.
+In what follows, {\it font} is any valid X11 font name
+(for example, {\tt Rom14}) and {\it color} is any valid X11 color
+specification (for example, {\tt NavyBlue}).
+For more information about fonts and colors, refer to the
+X Window documentation for your system.
+\indent{0}
+\beginitems
+\item[{\tt Axiom.hyperdoc.RmFont:} {\it font}] \ \newline
+This is the standard text font.  \xdefault{Rom14}
+\item[{\tt Axiom.hyperdoc.RmColor:} {\it color}] \ \newline
+This is the standard text color.  \xdefault{black}
+\item[{\tt Axiom.hyperdoc.ActiveFont:} {\it font}] \ \newline
+This is the font used for \HyperName{} link buttons.  \xdefault{Bld14}
+\item[{\tt Axiom.hyperdoc.ActiveColor:} {\it color}] \ \newline
+This is the color used for \HyperName{} link buttons.  \xdefault{black}
+\item[{\tt Axiom.hyperdoc.AxiomFont:} {\it font}] \ \newline
+This is the font used for active Axiom commands.\footnote{
+This was called {\tt Axiom.hyperdoc.SpadFont} in early versions
+of Axiom.}
+\xdefault{Bld14}
+\item[{\tt Axiom.hyperdoc.AxiomColor:} {\it color}] \ \newline
+This is the color used for active Axiom commands.\footnote{
+This was called {\tt Axiom.hyperdoc.SpadColor} in early versions
+of Axiom.}
+\xdefault{black}
+\item[{\tt Axiom.hyperdoc.BoldFont:} {\it font}] \ \newline
+This is the font used for bold face.  \xdefault{Bld14}
+\item[{\tt Axiom.hyperdoc.BoldColor:} {\it color}] \ \newline
+This is the color used for bold face.  \xdefault{black}
+\item[{\tt Axiom.hyperdoc.TtFont:} {\it font}] \ \newline
+This is the font used for Axiom output in \HyperName{}.
+This font must be fixed-width.  \xdefault{Rom14}
+\item[{\tt Axiom.hyperdoc.TtColor:} {\it color}] \ \newline
+This is the color used for Axiom output in \HyperName{}.
+\xdefault{black}
+\item[{\tt Axiom.hyperdoc.EmphasizeFont:} {\it font}] \ \newline
+This is the font used for italics.  \xdefault{Itl14}
+\item[{\tt Axiom.hyperdoc.EmphasizeColor:} {\it color}] \ \newline
+This is the color used for italics.  \xdefault{black}
+\item[{\tt Axiom.hyperdoc.InputBackground:} {\it color}] \ \newline
+This is the color used as the background for input areas.
+\xdefault{black}
+\item[{\tt Axiom.hyperdoc.InputForeground:} {\it color}] \ \newline
+This is the color used as the foreground for input areas.
+\xdefault{white}
+\item[{\tt Axiom.hyperdoc.BorderColor:} {\it color}] \ \newline
+This is the color used for drawing border lines.
+\xdefault{black}
+\item[{\tt Axiom.hyperdoc.Background:} {\it color}] \ \newline
+This is the color used for the background of all windows.
+\xdefault{white}
+\enditems
+\indent{0}
+\endscroll
+\autobuttons
+\end{page}
+@
+\chapter{Users Guide Chapter 4 (ug04.ht)}
+<<ug04.ht>>=
+\newcommand{\ugInOutTitle}{Input Files and Output Styles}
+\newcommand{\ugInOutNumber}{4.}
+
+@
+\section{Input Files and Output Styles}
+\label{ugInOutPage}
+\begin{itemize}
+\item ugInOutInPage \ref{ugInOutInPage} on
+page~\pageref{ugInOutInPage}
+\item ugInOutSpadprofPage \ref{ugInOutSpadprofPage} on
+page~\pageref{ugInOutSpadprofPage}
+\item ugInOutOutPage \ref{ugInOutOutPage} on
+page~\pageref{ugInOutOutPage}
+\item ugInOutAlgebraPage \ref{ugInOutAlgebraPage} on
+page~\pageref{ugInOutAlgebraPage}
+\item ugInOutTeXPage \ref{ugInOutTeXPage} on
+page~\pageref{ugInOutTeXPage}
+\item ugInOutScriptPage \ref{ugInOutScriptPage} on
+page~\pageref{ugInOutScriptPage}
+\item ugInOutFortranPage \ref{ugInOutFortranPage} on
+page~\pageref{ugInOutFortranPage}
+\end{itemize}
+\index{pages!ugInOutPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutPage}
+\index{ugInOutPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutPage}{4. Input Files and Output Styles}
+\beginscroll
+
+In this chapter we discuss how to collect Axiom statements
+and commands into files and then read the contents into the
+workspace.
+We also show how to display the results of your computations in
+several different styles including \texht{\TeX}{TeX}, FORTRAN and
+monospace two-dimensional format.\footnote{\texht{\TeX}{TeX} is a
+trademark of the American Mathematical Society.}
+
+The printed version of this book uses the Axiom
+\texht{\TeX}{TeX} output formatter.
+When we demonstrate a particular output style, we will need to
+turn \texht{\TeX}{TeX} formatting off and the output style on so
+that the correct output is shown in the text.
+
+\beginmenu
+    \menudownlink{{4.1. Input Files}}{ugInOutInPage}
+    \menudownlink{{4.2. The axiom.input File}}{ugInOutSpadprofPage}
+    \menudownlink{{4.3. Common Features of Using Output Formats}}
+{ugInOutOutPage}
+    \menudownlink{{4.4. Monospace Two-Dimensional Mathematical Format}}
+{ugInOutAlgebraPage}
+    \menudownlink{{4.5. TeX Format}}{ugInOutTeXPage}
+    \menudownlink{{4.6. IBM Script Formula Format}}{ugInOutScriptPage}
+    \menudownlink{{4.7. FORTRAN Format}}{ugInOutFortranPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutInTitle}{Input Files}
+\newcommand{\ugInOutInNumber}{4.1.}
+
+@
+\section{Input Files}
+\label{ugInOutInPage}
+\begin{itemize}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\end{itemize}
+\index{pages!ugInOutInPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutInPage}
+\index{ugInOutInPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutInPage}{4.1. Input Files}
+\beginscroll
+%
+In this section we explain what an {\it input file} is and
+why you would want to know about it.
+We discuss where Axiom looks for input files and how you can
+direct it to look elsewhere.
+We also show how to read the contents of an input file into the
+\spadgloss{workspace} and how to use the \spadgloss{history}
+facility to generate an input file from the statements you have
+entered directly into the workspace.
+
+An {\it input} file contains Axiom expressions and system
+commands.
+Anything that you can enter directly to Axiom can be put
+into an input file.
+This is how you save input functions and expressions that you wish
+to read into Axiom more than one time.
+
+To read an input file into Axiom, use the \spadcmd{)read}
+system command.
+For example, you can read a file in a particular directory by issuing
+\begin{verbatim}
+)read /spad/src/input/matrix.input
+\end{verbatim}
+The ``{\bf .input}'' is optional; this also works:
+\begin{verbatim}
+)read /spad/src/input/matrix
+\end{verbatim}
+What happens if you just enter
+\spadcmd{)read matrix.input} or even \spadcmd{)read matrix}?
+Axiom looks in your current working directory for input files
+that are not qualified by a directory name.
+Typically, this directory is the directory from which you invoked
+Axiom.
+To change the current working directory, use the \spadcmd{)cd} system command.
+The command \spadsys{)cd} by itself shows the current
+working
+directory.
+To change it to
+the \spadsys{src/input} subdirectory for user ``babar'',
+issue
+\begin{verbatim}
+)cd /u/babar/src/input
+\end{verbatim}
+Axiom looks first in this directory for an input file.
+If it is not found, it looks in the system's directories, assuming
+you meant some input file that was provided with Axiom.
+
+\beginImportant
+If you have the Axiom history facility turned on (which it is
+by default), you can save all the lines you have entered into the
+workspace by entering
+\begin{verbatim}
+)history )write
+\end{verbatim}
+
+Axiom tells you what input file to edit to see your
+statements.
+The file is in your home directory or in the directory you
+specified with \spadsys{)cd}.
+\endImportant
+
+In \downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
+in Section \ugLangBlocksNumber\ignore{ugLangBlocks}
+we discuss using indentation in input files to group statements
+into {\it blocks.}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutSpadprofTitle}{The axiom.input File}
+\newcommand{\ugInOutSpadprofNumber}{4.2.}
+
+@
+\section{The axiom.input File}
+\label{ugInOutSpadprofPage}
+\index{pages!ugInOutSpadprofPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutSpadprofPage}
+\index{ugInOutSpadprofPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutSpadprofPage}{4.2. The axiom.input File}
+\beginscroll
+
+When Axiom starts up, it tries to read the input file
+{\bf axiom.input} from your home
+directory.
+It there is no {\bf axiom.input} in your home directory, it reads the copy
+located in its own {\bf src/input} directory.
+The file usually contains
+system commands to personalize your Axiom environment.
+In the remainder of this section we mention a few things
+that users frequently place in their
+{\bf axiom.input} files.
+
+In order to have FORTRAN output always produced from your
+computations, place the system command
+\spadcmd{)set output fortran on}
+in {\bf axiom.input}.
+If you do not want to be prompted for confirmation when you issue
+the \spadcmd{)quit} system command, place
+\spadcmd{)set quit unprotected}
+in {\bf axiom.input}.
+If you then decide that you do want to be prompted, issue
+\spadcmd{)set quit protected}.
+This is the default setting
+so that new users do not leave Axiom
+inadvertently.\footnote{The
+system command \spadsys{)pquit} always prompts you for
+confirmation.}
+
+To see the other system variables you can set, issue \spadsys{)set}
+or use the \HyperName{} {\bf Settings} facility to view and change
+Axiom system variables.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutOutTitle}{Common Features of Using Output Formats}
+\newcommand{\ugInOutOutNumber}{4.3.}
+
+@
+\section{Common Features of Using Output Formats}
+\label{ugInOutOutPage}
+\index{pages!ugInOutOutPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutOutPage}
+\index{ugInOutOutPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutOutPage}{4.3. Common Features of Using Output Formats}
+\beginscroll
+
+In this section we discuss how to start and stop the display
+of the different output formats and how to send the output to the
+screen or to a file.
+To fix ideas, we use FORTRAN output format for most of the
+examples.
+
+You can use the \spadcmd{)set output}
+system
+command to
+toggle or redirect the different kinds of output.
+The name of the kind of output follows ``output'' in the command.
+The names are
+
+\indent{0}
+\beginitems
+\item[fortran]  for FORTRAN output.
+\item[algebra]  for monospace two-dimensional mathematical output.
+\item[tex]      for \texht{\TeX}{TeX} output.
+\item[script]   for IBM Script Formula Format output.
+\enditems
+\indent{0}
+
+For example, issue \spadsys{)set output fortran on} to turn on
+FORTRAN format and
+issue \spadsys{)set output fortran off} to turn it off.
+By default, {\tt algebra} is {\tt on} and all others are {\tt off}.
+When output is started, it is sent to the screen.
+To send the output to a file, give the file name without
+directory or extension.
+Axiom appends a file extension depending on the kind of
+output being produced.
+\xtc{
+Issue this to redirect FORTRAN output to, for example, the file
+{\bf linalg.sfort}.
+}{
+\spadpaste{)set output fortran linalg}
+}
+\noOutputXtc{
+You must {\it also} turn on the creation of FORTRAN output.
+The above just says where it goes if it is created.
+}{
+\spadpaste{)set output fortran on}
+}
+In what directory is this output placed?
+It goes into the directory from which you started Axiom,
+or if you have used the \spadsys{)cd} system command, the one
+that you specified with \spadsys{)cd}.
+You should use \spadcmd{)cd} before you send the output to the file.
+
+\noOutputXtc{
+You can always direct output back to the screen by issuing this.
+}{
+\spadpaste{)set output fortran console}
+}
+\noOutputXtc{
+Let's make sure FORTRAN formatting is off so that nothing we
+do from now on produces FORTRAN output.
+}{
+\spadpaste{)set output fortran off}
+}
+\noOutputXtc{
+We also delete the demonstrated output file we created.
+}{
+\spadpaste{)system rm linalg.sfort}
+}
+
+You can abbreviate the words ``\spad{on},'' ``\spad{off}'' and
+``\spad{console}'' to the minimal number
+of characters needed to distinguish them.
+Because of this, you cannot send output to files called
+{\bf on.sfort, off.sfort, of.sfort,
+console.sfort, consol.sfort} and so on.
+
+The width of the output on the page is set by
+\spadcmd{)set output length}
+for all formats except FORTRAN.
+Use \spadcmd{)set fortran fortlength} to
+change the FORTRAN line length from its default value of \spad{72}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutAlgebraTitle}{Monospace Two-Dimensional Mathematical Format}
+\newcommand{\ugInOutAlgebraNumber}{4.4.}
+
+@
+\section{Monospace Two-Dimensional Mathematical Format}
+\label{ugInOutAlgebraPage}
+\index{pages!ugInOutAlgebraPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutAlgebraPage}
+\index{ugInOutAlgebraPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutAlgebraPage}
+{4.4. Monospace Two-Dimensional Mathematical Format}
+\beginscroll
+
+This is the default output format for Axiom.
+It is usually on when you start the system.
+
+\texht{\vskip 4pc}{}
+\noOutputXtc{
+If it is not, issue this.
+}{
+\spadpaste{)set output algebra on \bound{algon}}
+}
+\noOutputXtc{
+Since the printed version of this book
+(as opposed to the \HyperName{} version)
+shows output produced by the
+\texht{\TeX}{TeX}{} output formatter,
+let us temporarily turn off
+\texht{\TeX}{TeX}{} output.
+}{
+\spadpaste{)set output tex off \bound{texoff}}
+}
+\xtc{
+Here is an example of what it looks like.
+}{
+\spadpaste{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4] \free{algon texoff}}
+}
+\noOutputXtc{
+Issue this to turn off this kind of formatting.
+}{
+\spadpaste{)set output algebra off}
+}
+\noOutputXtc{
+Turn \texht{\TeX}{TeX}{} output on again.
+}{
+\spadpaste{)set output tex on}
+}
+
+The characters used for the matrix brackets above are rather ugly.
+You get this character set when you issue
+\spadcmd{)set output characters plain}.
+This character set should be used when you are running on a machine
+that does not support the IBM extended ASCII character set.
+If you are running on an IBM workstation, for example, issue
+\spadcmd{)set output characters default}
+to get better looking output.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutTeXTitle}{TeX Format}
+\newcommand{\ugInOutTeXNumber}{4.5.}
+
+@
+\section{TeX Format}
+\label{ugInOutTeXPage}
+\index{pages!ugInOutTeXPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutTeXPage}
+\index{ugInOutTeXPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutTeXPage}{4.5. TeX Format}
+\beginscroll
+
+Axiom can produce \texht{\TeX}{TeX}{} output for your
+expressions.
+The output is produced using macros from the
+\texht{\LaTeX}{LaTeX} document preparation system by
+Leslie Lamport.\footnote{See Leslie Lamport, {\it LaTeX: A Document
+Preparation System,} Reading, Massachusetts: Addison-Wesley
+Publishing Company, Inc., 1986.}
+The printed version of this book was produced using this formatter.
+
+\noOutputXtc{
+To turn on \texht{\TeX}{TeX}{} output formatting, issue this.
+}{
+\spadpaste{)set output tex on \bound{texon}}
+}
+Here is an example of its output.
+\begin{verbatim}
+matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]
+
+\[
+\left[
+\begin{array}{cc}
+\displaystyle {{3 \  \%i \  {y \sp 3}}+x}&
+\displaystyle {{3 \  \%i \  {y \sp 3}}+{2 \  {x \sp 2}}} \\
+\displaystyle {{4 \  \%i \  {y \sp 4}}+x}&
+\displaystyle {{4 \  \%i \  {y \sp 4}}+{2 \  {x \sp 2}}}
+\end{array}
+\right]
+\leqno(3)
+\]
+%Axiom STEP NUMBER: 3
+\end{verbatim}
+To turn \texht{\TeX}{TeX}{} output formatting off, issue \spadsys{)set
+output tex off}.
+The \texht{\LaTeX}{LaTeX} macros in the output generated by Axiom
+are all standard except for the following definitions:
+\begin{verbatim}
+\def\csch{\mathop{\rm csch}\nolimits}
+
+\def\erf{\mathop{\rm erf}\nolimits}
+
+\def\zag#1#2{
+  {{\hfill \left. {#1} \right|}
+   \over
+   {\left| {#2} \right. \hfill}
+  }
+}
+\end{verbatim}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutScriptTitle}{IBM Script Formula Format}
+\newcommand{\ugInOutScriptNumber}{4.6.}
+
+@
+\section{IBM Script Formula Format}
+\label{ugInOutScriptPage}
+\index{pages!ugInOutScriptPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutScriptPage}
+\index{ugInOutScriptPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutScriptPage}{4.6. IBM Script Formula Format}
+\beginscroll
+
+Axiom can
+produce IBM Script Formula Format output for your
+expressions.
+
+\texht{\vskip 2pc}{}
+\noOutputXtc{
+To turn IBM Script Formula Format on, issue this.
+}{
+\spadpaste{)set output script on}
+}
+Here is an example of its output.
+\begin{verbatim}
+matrix [[i*x**i + j*%i*y**j for i in 1..2] for j in 3..4]
+
+.eq set blank @
+:df.
+<left lb < < < <3 @@ %i @@ <y sup 3>>+x> here < <3 @@ %i @@
+<y sup 3>>+<2 @@ <x sup 2>>>> habove < < <4 @@ %i @@
+<y sup 4>>+x> here < <4 @@ %i @@ <y sup 4>>+<2 @@
+<x up 2>>>>> right rb>
+:edf.
+\end{verbatim}
+\noOutputXtc{
+To turn IBM Script Formula Format output formatting off, issue this.
+}{
+\spadpaste{)set output script off}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug04.ht>>=
+\newcommand{\ugInOutFortranTitle}{FORTRAN Format}
+\newcommand{\ugInOutFortranNumber}{4.7.}
+
+@
+\section{FORTRAN Format}
+\label{ugInOutFortranPage}
+\index{pages!ugInOutFortranPage!ug04.ht}
+\index{ug04.ht!pages!ugInOutFortranPage}
+\index{ugInOutFortranPage!ug04.ht!pages}
+<<ug04.ht>>=
+\begin{page}{ugInOutFortranPage}{4.7. FORTRAN Format}
+\beginscroll
+
+In addition to turning FORTRAN output on and off and stating where the
+output should be placed, there are many options that control the
+appearance of the generated code.
+In this section we describe some of the basic options.
+Issue \spadcmd{)set fortran} to see a full list with their current
+settings.
+
+The output FORTRAN expression usually begins in column 7.
+If the expression needs more than one line, the ampersand character
+\spadSyntax{\&} is used in column 6.
+Since some versions of FORTRAN have restrictions on the number of lines
+per statement, Axiom breaks long expressions into segments with
+a maximum of 1320 characters (20 lines of 66 characters) per segment.
+If you want to change this, say, to 660 characters,
+issue the system command
+\spadcmd{)set fortran explength 660}.
+You can turn off the line breaking by issuing
+\spadcmd{)set fortran segment off}.
+Various code optimization levels are available.
+%
+\noOutputXtc{
+FORTRAN output is produced after you issue this.
+}{
+\spadpaste{)set output fortran on \bound{forton}}
+}
+\noOutputXtc{
+For the initial examples, we set the optimization level to 0, which is the
+lowest level.
+}{
+\spadpaste{)set fortran optlevel 0 \bound{opt0}\free{forton}}
+}
+\noOutputXtc{
+The output is usually in columns 7 through 72, although fewer columns
+are used in the following examples so that the output
+fits nicely on the page.
+}{
+\spadpaste{)set fortran fortlength 60}
+}
+\xtc{
+By default, the output goes to the screen and is displayed
+before the standard Axiom two-dimensional output.
+In this example, an
+assignment to the variable \spad{R1} was generated because this is
+the result of step 1.
+}{
+\spadpaste{(x+y)**3 \free{opt0}}
+}
+\xtc{
+Here is an example that illustrates the line breaking.
+}{
+\spadpaste{(x+y+z)**3 \free{opt0}}
+}
+
+Note in the above examples that integers are generally converted to
+floating point numbers, except in exponents.
+This is the default behavior but can be turned off by issuing
+\spadcmd{)set fortran ints2floats off}.
+The rules governing when the conversion is done are:
+\indent{4}
+\beginitems
+\item[1. ] If an integer is an exponent, convert it to a floating point
+number if it is greater than 32767 in absolute value, otherwise leave it
+as an integer.
+\item[2. ] Convert all other integers in an expression to floating
+point numbers.
+\enditems
+\indent{0}
+These rules only govern integers in expressions.
+Numbers generated by Axiom for \spad{DIMENSION} statements are also
+integers.
+
+To set the type of generated FORTRAN data,
+use one of the following:
+\begin{verbatim}
+)set fortran defaulttype REAL
+)set fortran defaulttype INTEGER
+)set fortran defaulttype COMPLEX
+)set fortran defaulttype LOGICAL
+)set fortran defaulttype CHARACTER
+\end{verbatim}
+
+\xtc{
+When temporaries are created, they are given a default type of
+{\tt REAL.}
+Also, the {\tt REAL} versions of functions are used by default.
+}{
+\spadpaste{sin(x) \free{opt1}}
+}
+\noOutputXtc{
+At optimization level 1, Axiom removes common subexpressions.
+}{
+\spadpaste{)set fortran optlevel 1 \bound{opt1}\free{forton}}
+}
+\xtc{
+}{
+\spadpaste{(x+y+z)**3 \free{opt1}}
+}
+\noOutputXtc{
+This changes the precision to {\tt DOUBLE}.
+Substitute \spad{single} for \spad{double}
+to return to single precision.
+}{
+\spadpaste{)set fortran precision double \free{opt1}\bound{double1}}
+}
+\xtc{
+Complex constants display the precision.
+}{
+\spadpaste{2.3 + 5.6*\%i  \free{double1}}
+}
+\xtc{
+The function names that Axiom generates depend on the chosen
+precision.
+}{
+\spadpaste{sin \%e  \free{double1}}
+}
+\noOutputXtc{
+Reset the precision to \spad{single} and look at these two
+examples again.
+}{
+\spadpaste{)set fortran precision single \free{opt1}\bound{single1}}
+}
+\xtc{
+}{
+\spadpaste{2.3 + 5.6*\%i  \free{single1}}
+}
+\xtc{
+}{
+\spadpaste{sin \%e  \free{single1}}
+}
+\xtc{
+Expressions that look like lists, streams, sets or matrices cause
+array code to be generated.
+}{
+\spadpaste{[x+1,y+1,z+1] \free{opt1}}
+}
+\xtc{
+A temporary variable is generated to be the name of the array.
+This may have to be changed in your particular application.
+}{
+\spadpaste{set[2,3,4,3,5] \free{opt1}}
+}
+\xtc{
+By default, the starting index for generated FORTRAN arrays is \spad{0}.
+}{
+\spadpaste{matrix [[2.3,9.7],[0.0,18.778]] \free{opt1}}
+}
+\noOutputXtc{
+To change the starting index for generated FORTRAN arrays to be \spad{1},
+issue this.
+This value can only be \spad{0} or \spad{1}.
+}{
+\spadpaste{)set fortran startindex 1 \free{opt1}\bound{start1}}
+}
+\xtc{
+Look at the code generated for the matrix again.
+}{
+\spadpaste{matrix [[2.3,9.7],[0.0,18.778]] \free{start1}}
+}
+\endscroll
+\autobuttons
+\end{page}
+@
+\chapter{Users Guide Chapter 5 (ug05.ht)}
+<<ug05.ht>>=
+\newcommand{\ugLangTitle}{Introduction to the Axiom Interactive Language}
+\newcommand{\ugLangNumber}{5.}
+
+@
+\section{Introduction to the Axiom Interactive Language}
+\label{ugLangPage}
+\begin{itemize}
+\item ugLangAssignPage \ref{ugLangAssignPage} on
+page~\pageref{ugLangAssignPage}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\item ugLangIfPage \ref{ugLangIfPage} on
+page~\pageref{ugLangIfPage}
+\item ugLangLoopsPage \ref{ugLangLoopsPage} on
+page~\pageref{ugLangLoopsPage}
+\item ugLangItsPage \ref{ugLangItsPage} on
+page~\pageref{ugLangItsPage}
+\item ugLangStreamsPrimesPage \ref{ugLangStreamsPrimesPage} on
+page~\pageref{ugLangStreamsPrimesPage}
+\end{itemize}
+\index{pages!ugLangPage!ug05.ht}
+\index{ug05.ht!pages!ugLangPage}
+\index{ugLangPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangPage}{5. Introduction to the Axiom Interactive Language}
+\beginscroll
+
+In this chapter we look at some of the basic components of the
+Axiom language that you can use interactively.
+We show how to create a \spadgloss{block} of expressions,
+how to form loops and list iterations, how to modify the sequential
+evaluation of a block and how to use {\tt if-then-else} to
+evaluate parts of your program conditionally.
+We suggest you first read the boxed material in each section and then
+proceed to a more thorough reading of the chapter.
+
+\beginmenu
+    \menudownlink{{5.1. Immediate and Delayed Assignments}}{ugLangAssignPage}
+    \menudownlink{{5.2. Blocks}}{ugLangBlocksPage}
+    \menudownlink{{5.3. if-then-else}}{ugLangIfPage}
+    \menudownlink{{5.4. Loops}}{ugLangLoopsPage}
+    \menudownlink{{5.5. Creating Lists and Streams with Iterators}}
+{ugLangItsPage}
+    \menudownlink{{5.6. An Example: Streams of Primes}}
+{ugLangStreamsPrimesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangAssignTitle}{Immediate and Delayed Assignments}
+\newcommand{\ugLangAssignNumber}{5.1.}
+
+@
+\section{Immediate and Delayed Assignments}
+\label{ugLangAssignPage}
+\begin{itemize}
+\item ugUserDelayPage \ref{ugUserDelayPage} on
+page~\pageref{ugUserDelayPage}
+\end{itemize}
+\index{pages!ugLangAssignPage!ug05.ht}
+\index{ug05.ht!pages!ugLangAssignPage}
+\index{ugLangAssignPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangAssignPage}{5.1. Immediate and Delayed Assignments}
+\beginscroll
+
+A \spadgloss{variable} in Axiom refers to a value.
+A variable has a name beginning with an uppercase or lowercase alphabetic
+character, \axiomSyntax{\%}, or \axiomSyntax{!}.
+Successive characters (if any) can be any of the above, digits, or
+\axiomSyntax{?}.
+Case is distinguished.
+The following are all examples of valid, distinct variable names:
+\begin{verbatim}
+a             tooBig?    a1B2c3%!?
+A             %j         numberOfPoints
+beta6         %J         numberofpoints
+\end{verbatim}
+
+The \axiomSyntax{:=} operator is the immediate \spadgloss{assignment}
+operator.
+Use it to associate a value with a variable.
+
+\beginImportant
+The syntax for immediate assignment for a single variable is
+\centerline{{{\it variable} \axiom{:=} {\it expression}}}
+The value returned by an immediate assignment is the value of {\it expression}.
+\endImportant
+
+\xtc{
+The right-hand side of the expression is evaluated,
+yielding \axiom{1}.  This value is then assigned to \axiom{a}.
+}{
+\spadpaste{a := 1 \bound{a}}
+}
+\xtc{
+The right-hand side of the expression is evaluated,
+yielding \axiom{1}.  This value is then assigned to \axiom{b}.
+Thus \axiom{a} and \axiom{b} both have the value \axiom{1} after the sequence
+of assignments.
+}{
+\spadpaste{b := a \free{a}\bound{b}}
+}
+\xtc{
+What is the value of \axiom{b} if \axiom{a} is
+assigned the value \axiom{2}?
+}{
+\spadpaste{a := 2 \bound{a2}}
+}
+\xtc{
+As you see, the value of \axiom{b} is left unchanged.
+}{
+\spadpaste{b \free{b}}
+}
+This is what we mean when we say this kind of assignment is
+{\it immediate};
+\axiom{b} has no dependency on \axiom{a} after the initial assignment.
+This is the usual notion of assignment found in programming
+languages such as C,
+PASCAL
+and FORTRAN.
+
+Axiom provides delayed assignment with \axiomSyntax{==}.
+This implements a
+delayed evaluation of the right-hand side and dependency
+checking.
+
+\beginImportant
+The syntax for delayed assignment is
+\centerline{{{\it variable} \axiom{==} {\it expression}}}
+The value returned by a delayed assignment is \void{}.
+\endImportant
+
+\xtc{
+Using \axiom{a} and \axiom{b} as above, these are the corresponding delayed
+assignments.
+}{
+\spadpaste{a == 1 \bound{ad}}
+}
+\xtc{
+}{
+\spadpaste{b == a \free{ad}\bound{bd}}
+}
+\xtc{
+The right-hand side of each delayed assignment
+is left unevaluated until the
+variables on the left-hand sides are evaluated.
+Therefore this evaluation and \ldots
+}{
+\spadpaste{a \free{ad}}
+}
+\xtc{
+this evaluation seem the same as before.
+}{
+\spadpaste{b \free{bd}}
+}
+\xtc{
+If we change \axiom{a} to \axiom{2}
+}{
+\spadpaste{a == 2 \bound{ad2}}
+}
+\xtc{
+then
+\axiom{a} evaluates to \axiom{2}, as expected, but
+}{
+\spadpaste{a \free{ad2}}
+}
+\xtc{
+the value of \axiom{b} reflects the change to \axiom{a}.
+}{
+\spadpaste{b \free{bd ad2}}
+}
+
+It is possible to set several variables at the same time
+by using
+a \spadgloss{tuple} of variables and a tuple of expressions.\footnote{A
+\spadgloss{tuple} is a collection of things separated by commas, often
+surrounded by parentheses.}
+
+\beginImportant
+The syntax for multiple immediate assignments is
+\centerline{{{\tt ( \subscriptIt{var}{1}, \subscriptIt{var}{2}, \ldots, \subscriptIt{var}{N} ) := ( \subscriptIt{expr}{1}, \subscriptIt{expr}{2}, \ldots, \subscriptIt{expr}{N} ) }}}
+The value returned by an immediate assignment is the value of
+\subscriptIt{expr}{N}.
+\endImportant
+
+\xtc{
+This sets \axiom{x} to \axiom{1} and \axiom{y} to \axiom{2}.
+}{
+\spadpaste{(x,y) := (1,2) \bound{x}\bound{y}}
+}
+Multiple immediate assigments are parallel in the sense that the
+expressions on the right are all evaluated before any assignments
+on the left are made.
+However, the order of evaluation of these expressions is undefined.
+\xtc{
+You can use multiple immediate assignment to swap the
+values held by variables.
+}{
+\spadpaste{(x,y) := (y,x) \free{x y}\bound{swap}}
+}
+\xtc{
+\axiom{x} has the previous value of \axiom{y}.
+}{
+\spadpaste{x \free{swap}}
+}
+\xtc{
+\axiom{y} has the previous value of \axiom{x}.
+}{
+\spadpaste{y \free{swap}}
+}
+
+There is no syntactic form for multiple delayed assignments.
+See the discussion in
+\downlink{``\ugUserDelayTitle''}{ugUserDelayPage} 
+in Section \ugUserDelayNumber\ignore{ugUserDelay}
+about how Axiom differentiates between delayed assignments and
+user functions of no arguments.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangBlocksTitle}{Blocks}
+\newcommand{\ugLangBlocksNumber}{5.2.}
+
+@
+\section{Blocks}
+\label{ugLangBlocksPage}
+\begin{itemize}
+\item ugLangIfPage \ref{ugLangIfPage} on
+page~\pageref{ugLangIfPage}
+\end{itemize}
+\index{pages!ugLangBlocksPage!ug05.ht}
+\index{ug05.ht!pages!ugLangBlocksPage}
+\index{ugLangBlocksPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangBlocksPage}{5.2. Blocks}
+\beginscroll
+
+%%
+%% We should handle tabs in pile correctly but so far we do not.
+%%
+
+A \spadgloss{block} is a sequence of expressions evaluated
+in the order that they appear, except as modified by control expressions
+such as \axiom{break},
+\spadkey{break}
+\axiom{return},
+\spadkey{return}
+\axiom{iterate} and
+\spadkey{iterate}
+\axiom{if-then-else} constructions.
+The value of a block is the value of the expression last evaluated
+in the block.
+
+To leave a block early, use \axiomSyntax{=>}.
+For example, \axiom{i < 0 => x}.
+The expression before the \axiomSyntax{=>} must evaluate to
+\axiom{true} or \axiom{false}.
+The expression following the \axiomSyntax{=>} is the return value
+for the block.
+
+A block can be constructed in two ways:
+\indent{4}
+\beginitems
+\item[1. ] the expressions can be separated by semicolons
+and the resulting expression surrounded by parentheses, and
+\item[2. ] the expressions can be written on succeeding lines with each line
+indented the same number of spaces (which must be greater than zero).
+A block entered in this form is
+called a \spadgloss{pile}.
+\enditems
+\indent{0}
+Only the first form is available if you are entering expressions
+directly to Axiom.
+Both forms are available in {\bf .input} files.
+
+\beginImportant
+The syntax for a simple block of expressions entered interactively is
+\centerline{{{\tt ( \subscriptIt{expression}{1}; \subscriptIt{expression}{2}; \ldots; \subscriptIt{expression}{N} )}}}
+The value returned by a block is the value of an
+\axiomSyntax{=>} expression, or \subscriptIt{expression}{N}
+if no \axiomSyntax{=>} is encountered.
+\endImportant
+
+In {\bf .input} files, blocks can also be written using
+\spadglossSee{piles}{pile}.
+The examples throughout this book are assumed to come from {\bf .input} files.
+
+\xtc{
+In this example, we assign a rational number to \axiom{a} using a block
+consisting of three expressions.
+This block is written as a pile.
+Each expression in the pile has the same indentation, in this case two
+spaces to the right of the first line.
+}{
+\begin{spadsrc}
+a :=
+  i := gcd(234,672)
+  i := 3*i**5 - i + 1
+  1 / i
+\end{spadsrc}
+}
+\xtc{
+Here is the same block written on one line.
+This is how you are required to enter it at the input prompt.
+}{
+\spadpaste{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
+}
+\xtc{
+Blocks can be used to put several expressions on one line.
+The value returned is that of the last expression.
+}{
+\spadpaste{(a := 1; b := 2; c := 3; [a,b,c]) \bound{a b c}}
+}
+
+Axiom gives you two ways of writing a block and the
+preferred way in an {\bf .input} file is to use a pile.
+Roughly speaking, a pile is
+a block whose constituent expressions are indented the same amount.
+You begin a pile by starting a new line for the first expression,
+indenting it to the right of the previous line.
+You then enter the second expression on a new line, vertically aligning
+it with the first line. And so on.
+If you need to enter an inner pile, further indent its lines to the right
+of the outer pile.
+Axiom knows where a pile ends.
+It ends when a subsequent line is indented to the left of the pile or
+the end of the file.
+
+\xtc{
+Blocks can be used to perform several steps before an assignment
+(immediate or delayed) is made.
+}{
+\begin{spadsrc}[\free{a b}]
+d :=
+   c := a**2 + b**2
+   sqrt(c * 1.3)
+\end{spadsrc}
+}
+\xtc{
+Blocks can be used in the arguments to functions.
+(Here \axiom{h} is assigned \axiom{2.1 + 3.5}.)
+}{
+\begin{spadsrc}[\bound{h}]
+h := 2.1 +
+   1.0
+   3.5
+\end{spadsrc}
+}
+\xtc{
+Here the second argument to \axiomFun{eval} is \axiom{x = z}, where
+the value of \axiom{z} is computed in the first line of the block
+starting on the second line.
+}{
+\begin{spadsrc}
+eval(x**2 - x*y**2,
+     z := %pi/2.0 - exp(4.1)
+     x = z
+   )
+\end{spadsrc}
+}
+\xtc{
+Blocks can be used in the clauses of \axiom{if-then-else}
+expressions (see \downlink{``\ugLangIfTitle''}{ugLangIfPage} 
+in Section \ugLangIfNumber\ignore{ugLangIf}).
+}{
+\spadpaste{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5)) \free{h}}
+}
+\xtc{
+This is the pile version of the last block.
+}{
+\begin{spadsrc}[\free{h}]
+if h > 3.1 then
+    1.0
+  else
+    z := cos(h)
+    max(z,0.5)
+\end{spadsrc}
+}
+\xtc{
+Blocks can be nested.
+}{
+\spadpaste{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
+}
+\xtc{
+This is the pile version of the last block.
+}{
+\begin{spadsrc}
+a :=
+  b := factorial(12)
+  c :=
+    d := eulerPhi(22)
+    factorial(d)
+  b+c
+\end{spadsrc}
+}
+
+\xtc{
+Since \axiom{c + d} does equal \axiom{3628855}, \axiom{a} has the value
+of \axiom{c} and the last line is never evaluated.
+}{
+\begin{spadsrc}
+a :=
+  c := factorial 10
+  d := fibonacci 10
+  c + d = 3628855 => c
+  d
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangIfTitle}{if-then-else}
+\newcommand{\ugLangIfNumber}{5.3.}
+
+@
+\section{if-then-else}
+\label{ugLangIfPage}
+\begin{itemize}
+\item ugTypesResolvePage \ref{ugTypesResolvePage} on
+page~\pageref{ugTypesResolvePage}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\end{itemize}
+\index{pages!ugLangIfPage!ug05.ht}
+\index{ug05.ht!pages!ugLangIfPage}
+\index{ugLangIfPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangIfPage}{5.3. if-then-else}
+\beginscroll
+
+Like many other programming languages, Axiom uses the three
+keywords \spadkey{if} \axiom{if, then} \spadkey{then} and \axiom{else}
+\spadkey{else} to form
+conditional expressions.
+The \axiom{else} part of the conditional is optional.
+The expression between the \axiom{if} and \axiom{then} keywords
+is a
+\spadgloss{predicate}: an expression that evaluates to or is convertible to
+either {\tt true} or {\tt false}, that is,
+a \axiomType{Boolean}.
+
+\beginImportant
+The syntax for conditional expressions is
+\centerline{{{\tt if {\it predicate} then \subscriptIt{expression}{1} else \subscriptIt{expression}{2}}}}
+where the \axiom{else} \subscriptIt{\it expression}{2} part is optional.
+The value returned from a conditional expression is
+\subscriptIt{\it expression}{1} if the predicate evaluates to \axiom{true}
+and \subscriptIt{\it expression}{2} otherwise.
+If no \axiom{else} clause is given, the value is always \void{}.
+\endImportant
+
+An \axiom{if-then-else} expression always returns a value.
+If the
+\axiom{else} clause is missing then the entire expression returns
+\void{}.
+If both clauses are present, the type of the value returned by \axiom{if}
+is obtained by resolving the types of the values of the two clauses.
+See \downlink{``\ugTypesResolveTitle''}{ugTypesResolvePage} 
+in Section \ugTypesResolveNumber\ignore{ugTypesResolve}
+for more information.
+
+The predicate must evaluate to, or be convertible to, an object of type
+\axiomType{Boolean}: {\tt true} or {\tt false}.
+By default, the equal sign \spadopFrom{=}{Equation} creates
+an equation.
+\xtc{
+This is an equation.
+In particular, it is an object of type \axiomType{Equation Polynomial Integer}.
+}{
+\spadpaste{x + 1 = y}
+}
+However, for predicates in \axiom{if} expressions, Axiom
+places a default target type of \axiomType{Boolean} on the
+predicate and equality testing is performed.
+Thus you need not qualify the \axiomSyntax{=} in any way.
+In other contexts you may need to tell Axiom that you want
+to test for equality rather than create an equation.
+In those cases, use \axiomSyntax{@} and a target type of
+\axiomType{Boolean}.
+See \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} in Section 
+\ugTypesPkgCallNumber\ignore{ugTypesPkgCall} for more information.
+
+The compound symbol meaning ``not equal'' in Axiom is
+``\texht{$\sim =$}{\axiom{~=}}''.
+This can be used directly without a package call or a target specification.
+The expression
+\axiom{a} \texht{$\sim =$}{\axiom{~=}} \axiom{b} is directly translated into
+\axiom{not (a = b)}.
+
+Many other functions have return values of type \axiomType{Boolean}.
+These include \axiom{<}, \axiom{<=}, \axiom{>},
+\axiom{>=}, \texht{$\sim =$}{\axiom{~=}} and \axiom{member?}.
+By convention, operations with names ending in \axiomSyntax{?}
+return \axiomType{Boolean} values.
+
+The usual rules for piles are suspended for conditional expressions.
+In {\bf .input} files, the \axiom{then} and
+\axiom{else} keywords can begin in the same column as the corresponding
+\axiom{if} but may also appear to the right.
+Each of the following styles of writing \axiom{if-then-else}
+expressions is acceptable:
+\begin{verbatim}
+if i>0 then output("positive") else output("nonpositive")
+
+if i > 0 then output("positive")
+  else output("nonpositive")
+
+if i > 0 then output("positive")
+else output("nonpositive")
+
+if i > 0
+then output("positive")
+else output("nonpositive")
+
+if i > 0
+  then output("positive")
+  else output("nonpositive")
+\end{verbatim}
+
+A block can follow the \axiom{then} or \axiom{else} keywords.
+In the following two assignments to \axiom{a}, 
+the \axiom{then} and \axiom{else}
+clauses each are followed by two-line piles.
+The value returned in each is the value of the second line.
+
+\begin{verbatim}
+a :=
+  if i > 0 then
+    j := sin(i * pi())
+    exp(j + 1/j)
+  else
+    j := cos(i * 0.5 * pi())
+    log(abs(j)**5 + 1)
+
+a :=
+  if i > 0
+    then
+      j := sin(i * pi())
+      exp(j + 1/j)
+    else
+      j := cos(i * 0.5 * pi())
+      log(abs(j)**5 + 1)
+\end{verbatim}
+These are both equivalent to the following:
+\begin{verbatim}
+a :=
+  if i > 0 then (j := sin(i * pi()); exp(j + 1/j))
+  else (j := cos(i * 0.5 * pi()); log(abs(j)**5 + 1))
+\end{verbatim}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsTitle}{Loops}
+\newcommand{\ugLangLoopsNumber}{5.4.}
+
+@
+\section{Loops}
+\label{ugLangLoopsPage}
+\begin{itemize}
+\item ugLangLoopsCompIntPage \ref{ugLangLoopsCompIntPage} on
+page~\pageref{ugLangLoopsCompIntPage}
+\item ugLangLoopsReturnPage \ref{ugLangLoopsReturnPage} on
+page~\pageref{ugLangLoopsReturnPage}
+\item ugLangLoopsBreakPage \ref{ugLangLoopsBreakPage} on
+page~\pageref{ugLangLoopsBreakPage}
+\item ugLangLoopsBreakVsPage \ref{ugLangLoopsBreakVsPage} on
+page~\pageref{ugLangLoopsBreakVsPage}
+\item ugLangLoopsBreakMorePage \ref{ugLangLoopsBreakMorePage} on
+page~\pageref{ugLangLoopsBreakMorePage}
+\item ugLangLoopsIteratePage \ref{ugLangLoopsIteratePage} on
+page~\pageref{ugLangLoopsIteratePage}
+\item ugLangLoopsWhilePage \ref{ugLangLoopsWhilePage} on
+page~\pageref{ugLangLoopsWhilePage}
+\item ugLangLoopsForInPage \ref{ugLangLoopsForInPage} on
+page~\pageref{ugLangLoopsForInPage}
+\item ugLangLoopsForInNMPage \ref{ugLangLoopsForInNMPage} on
+page~\pageref{ugLangLoopsForInNMPage}
+\item ugLangLoopsForInNMSPage \ref{ugLangLoopsForInNMSPage} on
+page~\pageref{ugLangLoopsForInNMSPage}
+\item ugLangLoopsForInNPage \ref{ugLangLoopsForInNPage} on
+page~\pageref{ugLangLoopsForInNPage}
+\item ugLangLoopsForInXLPage \ref{ugLangLoopsForInXLPage} on
+page~\pageref{ugLangLoopsForInXLPage}
+\item ugLangLoopsForInPredPage \ref{ugLangLoopsForInPredPage} on
+page~\pageref{ugLangLoopsForInPredPage}
+\item ugLangLoopsParPage \ref{ugLangLoopsParPage} on
+page~\pageref{ugLangLoopsParPage}
+\end{itemize}
+\index{pages!ugLangLoopsPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsPage}
+\index{ugLangLoopsPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsPage}{5.4. Loops}
+\beginscroll
+
+A \spadgloss{loop} is an expression that contains another expression,
+called the {\it loop body}, which is to be evaluated zero or more
+times.
+All loops contain the \axiom{repeat} keyword and return \void{}.
+Loops can contain inner loops to any depth.
+
+\beginImportant
+The most basic loop is of the form
+\centerline{{\axiom{repeat} {\it loopBody}}}
+Unless {\it loopBody} contains a \axiom{break} or \axiom{return} expression,
+the loop repeats forever.
+The value returned by the loop is \void{}.
+\endImportant
+
+\beginmenu
+    \menudownlink{{5.4.1. Compiling vs. Interpreting Loops}}
+{ugLangLoopsCompIntPage}
+    \menudownlink{{5.4.2. return in Loops}}{ugLangLoopsReturnPage}
+    \menudownlink{{5.4.3. break in Loops}}{ugLangLoopsBreakPage}
+    \menudownlink{{5.4.4. break vs. {\tt =>} in Loop Bodies}}
+{ugLangLoopsBreakVsPage}
+    \menudownlink{{5.4.5. More Examples of break}}{ugLangLoopsBreakMorePage}
+    \menudownlink{{5.4.6. iterate in Loops}}{ugLangLoopsIteratePage}
+    \menudownlink{{5.4.7. while Loops}}{ugLangLoopsWhilePage}
+    \menudownlink{{5.4.8. for Loops}}{ugLangLoopsForInPage}
+    \menudownlink{{5.4.9. for i in n..m repeat}}{ugLangLoopsForInNMPage}
+    \menudownlink{{5.4.10. for i in n..m by s repeat}}{ugLangLoopsForInNMSPage}
+    \menudownlink{{5.4.11. for i in n.. repeat}}{ugLangLoopsForInNPage}
+    \menudownlink{{5.4.12. for x in l repeat}}{ugLangLoopsForInXLPage}
+    \menudownlink{{5.4.13. ``Such that'' Predicates}}{ugLangLoopsForInPredPage}
+    \menudownlink{{5.4.14. Parallel Iteration}}{ugLangLoopsParPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsCompIntTitle}{Compiling vs. Interpreting Loops}
+\newcommand{\ugLangLoopsCompIntNumber}{5.4.1.}
+
+@
+\section{Compiling vs. Interpreting Loops}
+\label{ugLangLoopsCompIntPage}
+\begin{itemize}
+\item ugUserCompIntPage \ref{ugUserCompIntPage} on
+page~\pageref{ugUserCompIntPage}
+\end{itemize}
+\index{pages!ugLangLoopsCompIntPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsCompIntPage}
+\index{ugLangLoopsCompIntPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsCompIntPage}{5.4.1. Compiling vs. Interpreting Loops}
+\beginscroll
+
+Axiom tries to determine completely the type of every
+object in a loop and then to translate the loop body to LISP or even to
+machine code.
+This translation is called \spadglossSee{compilation}{compiler}.
+
+If Axiom decides that it cannot compile the loop, it issues a
+message stating the problem and then the following message:
+%
+\centerline{{{\bf We will attempt to step through and interpret the code.}}}
+%
+It is still possible that Axiom can evaluate the loop but in
+\spadgloss{interpret-code mode}.
+See \downlink{``\ugUserCompIntTitle''}{ugUserCompIntPage} 
+in Section \ugUserCompIntNumber\ignore{ugUserCompInt} where 
+this is discussed in terms
+of compiling versus interpreting functions.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsReturnTitle}{return in Loops}
+\newcommand{\ugLangLoopsReturnNumber}{5.4.2.}
+
+@
+\section{return in Loops}
+\label{ugLangLoopsReturnPage}
+\begin{itemize}
+\item ugUserBlocksPage \ref{ugUserBlocksPage} on
+page~\pageref{ugUserBlocksPage}
+\end{itemize}
+\index{pages!ugLangLoopsReturnPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsReturnPage}
+\index{ugLangLoopsReturnPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsReturnPage}{5.4.2. return in Loops}
+\beginscroll
+
+A \axiom{return} expression is used to exit a function with
+a particular value.
+In particular, if a \axiom{return} is in a loop within the
+\spadkey{return}
+function, the loop is terminated whenever the \axiom{return}
+is evaluated.
+%> This is a bug! The compiler should never accept allow
+%> Void to be the return type of a function when it has to use
+%> resolve to determine it.
+\xtc{
+Suppose we start with this.
+}{
+\begin{spadsrc}[\bound{f}]
+f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+\end{spadsrc}
+}
+\xtc{
+When \axiom{factorial(i)} is big enough, control passes from
+inside the loop all the way outside the function, returning the
+value of \axiom{i} (or so we think).
+}{
+\spadpaste{f() \free{f}}
+}
+
+What went wrong?
+Isn't it obvious that this function should return an integer?
+Well, Axiom makes no attempt to analyze the structure of a
+loop to determine if it always returns a value because, in
+general, this is impossible.
+So Axiom has this simple rule: the type of the function is
+determined by the type of its body, in this case a block.
+The normal value of a block is the value of its last expression,
+in this case, a loop.
+And the value of every loop is \void{}!
+So the return type of \userfun{f} is \axiomType{Void}.
+
+There are two ways to fix this.
+The best way is for you to tell Axiom what the return type
+of \axiom{f} is.
+You do this by giving \axiom{f} a declaration \axiom{f: () ->
+Integer} prior to calling for its value.
+This tells Axiom: ``trust me---an integer is returned.''
+We'll explain more about this in the next chapter.
+Another clumsy way is to add a dummy expression as follows.
+
+\xtc{
+Since we want an integer, let's stick in a dummy final expression that is
+an integer and will never be evaluated.
+}{
+\begin{spadsrc}[\bound{f1}]
+f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+  0
+\end{spadsrc}
+}
+\xtc{
+When we try \userfun{f} again we get what we wanted.
+See
+\downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} 
+in Section \ugUserBlocksNumber\ignore{ugUserBlocks}
+for more information.
+}{
+\spadpaste{f() \free{f1}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsBreakTitle}{break in Loops}
+\newcommand{\ugLangLoopsBreakNumber}{5.4.3.}
+
+@
+\section{break in Loops}
+\label{ugLangLoopsBreakPage}
+\begin{itemize}
+\item ugLangLoopsReturnPage \ref{ugLangLoopsReturnPage} on
+page~\pageref{ugLangLoopsReturnPage}
+\end{itemize}
+\index{pages!ugLangLoopsBreakPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsBreakPage}
+\index{ugLangLoopsBreakPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsBreakPage}{5.4.3. break in Loops}
+\beginscroll
+
+The \axiom{break} keyword is often more useful
+\spadkey{break}
+in terminating
+a loop.
+%>  and more in keeping with the ideas of structured programming.
+A \axiom{break} causes control to transfer to the expression
+immediately following the loop.
+As loops always return \void{},
+you cannot return a value with \axiom{break}.
+That is, \axiom{break} takes no argument.
+
+\xtc{
+This example is a modification of the last example in
+\texht{the previous section}{
+\downlink{``\ugLangLoopsReturnTitle''}{ugLangLoopsReturnPage} 
+in Section \ugLangLoopsReturnNumber\ignore{ugLangLoopsReturn}}.
+Instead of using \axiom{return}, we'll use \axiom{break}.
+}{
+\begin{spadsrc}[\bound{f1}]
+f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then break
+    i := i + 1
+  i
+\end{spadsrc}
+}
+\xtc{
+The loop terminates when \axiom{factorial(i)} gets big enough,
+the last line of the function evaluates to the corresponding ``good''
+value of \axiom{i}, and the function terminates, returning that value.
+}{
+\spadpaste{f() \free{f1}}
+}
+\xtc{
+You can only use \axiom{break} to terminate the evaluation of one loop.
+Let's consider a loop within a loop, that is, a loop with a nested loop.
+First, we initialize two counter variables.
+}{
+\spadpaste{(i,j) := (1, 1) \bound{i}\bound{j}}
+}
+\xtc{
+Nested loops must have multiple \axiom{break}
+expressions at the appropriate nesting level.
+How would you rewrite this so \axiom{(i + j) > 10} is only evaluated once?
+}{
+\begin{spadsrc}[\free{i j}]
+repeat
+  repeat
+    if (i + j) > 10 then break
+    j := j + 1
+  if (i + j) > 10 then break
+  i := i + 1
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsBreakVsTitle}{break vs. {\tt =>} in Loop Bodies}
+\newcommand{\ugLangLoopsBreakVsNumber}{5.4.4.}
+
+@
+\section{break vs. {\tt =>} in Loop Bodies}
+\label{ugLangLoopsBreakVsPage}
+\index{pages!ugLangLoopsBreakVsPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsBreakVsPage}
+\index{ugLangLoopsBreakVsPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsBreakVsPage}{5.4.4. break vs. {\tt =>} in Loop Bodies}
+\beginscroll
+
+Compare the following two loops:
+
+\begin{verbatim}
+i := 1                            i := 1
+repeat                            repeat
+  i := i + 1                        i := i + 1
+  i > 3 => i                        if i > 3 then break
+  output(i)                         output(i)
+\end{verbatim}
+
+In the example on the left, the values
+\mathOrSpad{2} and \mathOrSpad{3} for \axiom{i} are displayed
+but then the \axiomSyntax{=>} does not allow control to reach the call to
+\axiomFunFrom{output}{OutputForm} again.
+The loop will not terminate
+until you run out of space or interrupt the execution.
+The variable \axiom{i} will continue to be incremented because
+the \axiomSyntax{=>} only means to leave the {\it block,} not the loop.
+
+In the example on the right,
+upon reaching \mathOrSpad{4}, the \axiom{break} will be
+executed, and both the block and the loop will terminate.
+This is one of the reasons why both \axiomSyntax{=>} and \axiom{break} are
+provided.
+Using a \axiom{while} clause (see below) with the \axiomSyntax{=>}
+\spadkey{while}
+lets you simulate the action of \axiom{break}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsBreakMoreTitle}{More Examples of break}
+\newcommand{\ugLangLoopsBreakMoreNumber}{5.4.5.}
+
+@
+\section{More Examples of break}
+\label{ugLangLoopsBreakMorePage}
+\begin{itemize}
+\item ugLangLoopsForInPage \ref{ugLangLoopsForInPage} on
+page~\pageref{ugLangLoopsForInPage}
+\end{itemize}
+\index{pages!ugLangLoopsBreakMorePage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsBreakMorePage}
+\index{ugLangLoopsBreakMorePage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsBreakMorePage}{5.4.5. More Examples of break}
+\beginscroll
+
+Here we give four examples of \axiom{repeat} loops that
+terminate when a value exceeds a given bound.
+
+\texht{\vskip 1pc}{}
+\xtc{
+First, initialize \axiom{i} as the loop counter.
+}{
+\spadpaste{i := 0 \bound{i}}
+}
+\xtc{
+Here is the first loop.
+When the square of \axiom{i} exceeds \axiom{100}, the loop terminates.
+}{
+\begin{spadsrc}[\free{i}\bound{i1}]
+repeat
+  i := i + 1
+  if i**2 > 100 then break
+\end{spadsrc}
+}
+\xtc{
+Upon completion, \axiom{i} should have the value \axiom{11}.
+}{
+\spadpaste{i \free{i1}}
+}
+%
+%
+\xtc{
+Do the same thing except use \axiomSyntax{=>} instead
+an \axiom{if-then} expression.
+}{
+\spadpaste{i := 0 \bound{i2}}
+}
+\xtc{
+}{
+\begin{spadsrc}[\free{i2}\bound{i3}]
+repeat
+  i := i + 1
+  i**2 > 100 => break
+\end{spadsrc}
+}
+\xtc{
+}{
+\spadpaste{i \free{i3}}
+}
+%
+%
+\xtc{
+As a third example, we use a simple loop to compute \axiom{n!}.
+}{
+\spadpaste{(n, i, f) := (100, 1, 1) \bound{n}\bound{i4}\bound{f}}
+}
+\xtc{
+Use \axiom{i} as the iteration variable and \axiom{f}
+to compute the factorial.
+}{
+\begin{spadsrc}[\bound{f1}\bound{i5}\free{f i4 n}]
+repeat
+  if i > n then break
+  f := f * i
+  i := i + 1
+\end{spadsrc}
+}
+\xtc{
+Look at the value of \axiom{f}.
+}{
+\spadpaste{f \free{f1}}
+}
+%
+%
+\xtc{
+Finally, we show an example of nested loops.
+First define a four by four matrix.
+}{
+\spadpaste{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]] \bound{m2}}
+}
+\xtc{
+Next, set row counter \axiom{r} and column counter \axiom{c} to
+\mathOrSpad{1}.
+Note: if we were writing a function, these would all be local
+variables rather than global workspace variables.
+}{
+\spadpaste{(r, c) := (1, 1) \bound{r}\bound{c}}
+}
+\xtc{
+Also, let \axiom{lastrow} and
+\axiom{lastcol} be the final row and column index.
+}{
+\spadpaste{(lastrow, lastcol) := (nrows(m), ncols(m)) \bound{lastrow}\bound{lastcol}\free{m2}}
+}
+%
+\xtc{
+Scan the rows looking for the first negative element.
+We remark that you can reformulate this example in a better, more
+concise form by using a \axiom{for} clause with \axiom{repeat}.
+See
+\downlink{``\ugLangLoopsForInTitle''}{ugLangLoopsForInPage} 
+in Section \ugLangLoopsForInNumber\ignore{ugLangLoopsForIn}
+for more information.
+}{
+\begin{spadsrc}[\free{m2 r c lastrow lastcol}]
+repeat
+  if r > lastrow then break
+  c := 1
+  repeat
+    if c > lastcol then break
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsIterateTitle}{iterate in Loops}
+\newcommand{\ugLangLoopsIterateNumber}{5.4.6.}
+
+@
+\section{iterate in Loops}
+\label{ugLangLoopsIteratePage}
+\index{pages!ugLangLoopsIteratePage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsIteratePage}
+\index{ugLangLoopsIteratePage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsIteratePage}{5.4.6. iterate in Loops}
+\beginscroll
+
+Axiom provides an \axiom{iterate} expression that
+\spadkey{iterate}
+skips over the remainder of a loop body and starts the next loop iteration.
+\xtc{
+We first initialize a counter.
+}{
+\spadpaste{i := 0 \bound{i}}
+}
+\xtc{
+Display the even integers from \axiom{2} to \axiom{5}.
+}{
+\begin{spadsrc}[\free{i}]
+repeat
+  i := i + 1
+  if i > 5 then break
+  if odd?(i) then iterate
+  output(i)
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsWhileTitle}{while Loops}
+\newcommand{\ugLangLoopsWhileNumber}{5.4.7.}
+
+@
+\section{while Loops}
+\label{ugLangLoopsWhilePage}
+\index{pages!ugLangLoopsWhilePage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsWhilePage}
+\index{ugLangLoopsWhilePage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsWhilePage}{5.4.7. while Loops}
+\beginscroll
+
+The \axiom{repeat} in a loop can be modified by adding one or
+more \axiom{while} clauses.
+\spadkey{while}
+Each clause contains a \spadgloss{predicate}
+immediately following the \axiom{while} keyword.
+The predicate is tested {\it before}
+the evaluation of the body of the loop.
+The loop body is evaluated whenever the predicates in a \axiom{while}
+clause are all \axiom{true}.
+
+\beginImportant
+The syntax for a simple loop using \axiom{while} is
+\centerline{{\axiom{while} {\it predicate} \axiom{repeat} {\it loopBody}}}
+The {\it predicate} is evaluated before {\it loopBody} is evaluated.
+A \axiom{while} loop terminates immediately when {\it predicate}
+evaluates to \axiom{false} or when a \axiom{break} or \axiom{return}
+expression is evaluated in {\it loopBody}.
+The value returned by the loop is \void{}.
+\endImportant
+
+\xtc{
+Here is a simple example of using \axiom{while} in a loop.
+We first initialize the counter.
+}{
+\spadpaste{i := 1 \bound{i}}
+}
+\xtc{
+The steps involved in computing this example are
+(1) set \axiom{i} to \axiom{1}, (2) test the condition \axiom{i < 1} and
+determine that it is not true, and (3) do not evaluate the
+loop body and therefore do not display \axiom{"hello"}.
+}{
+\begin{spadsrc}[\free{i}]
+while i < 1 repeat
+  output "hello"
+  i := i + 1
+\end{spadsrc}
+}
+\xtc{
+If you have multiple predicates to be tested use the
+logical \axiom{and} operation to separate them.
+Axiom evaluates these predicates from left to right.
+}{
+\spadpaste{(x, y) := (1, 1) \bound{x}\bound{y}}
+}
+\xtc{
+}{
+\begin{spadsrc}[\free{x y}]
+while x < 4 and y < 10 repeat
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\end{spadsrc}
+}
+\xtc{
+A \axiom{break} expression can be included in a loop body to terminate a
+loop even if the predicate in any \axiom{while} clauses are not \axiom{false}.
+}{
+\spadpaste{(x, y) := (1, 1) \bound{x1}\bound{y1}}
+}
+\xtc{
+This loop has multiple \axiom{while} clauses and the loop terminates
+before any one of their conditions evaluates to \axiom{false}.
+}{
+\begin{spadsrc}[\free{x1 y1}]
+while x < 4 while y < 10 repeat
+  if x + y > 7 then break
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\end{spadsrc}
+}
+\xtc{
+Here's a different version of the nested loops that looked
+for the first negative element in a matrix.
+}{
+\spadpaste{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]] \bound{m2}}
+}
+\xtc{
+Initialized the row index to \axiom{1} and
+get the number of rows and columns.
+If we were writing a function, these would all be
+local variables.
+}{
+\spadpaste{r := 1 \bound{r}}
+}
+\xtc{
+}{
+\spadpaste{(lastrow, lastcol) := (nrows(m), ncols(m)) \bound{lastrow}\bound{lastcol}\free{m2}}
+}
+%
+\xtc{
+Scan the rows looking for the first negative element.
+}{
+\begin{spadsrc}[\free{m2 r lastrow lastcol}]
+while r <= lastrow repeat
+  c := 1  -- index of first column
+  while c <= lastcol repeat
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInTitle}{for Loops}
+\newcommand{\ugLangLoopsForInNumber}{5.4.8.}
+
+@
+\section{for Loops}
+\label{ugLangLoopsForInPage}
+\index{pages!ugLangLoopsForInPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInPage}
+\index{ugLangLoopsForInPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInPage}{5.4.8. for Loops}
+\beginscroll
+
+Axiom provides the \axiom{for}
+\spadkey{for}
+and \axiom{in}
+\spadkey{in}
+keywords in \axiom{repeat} loops,
+allowing you to iterate across all
+elements of a list, or to have a variable take on integral values
+from a lower bound to an upper bound.
+We shall refer to these modifying clauses of \axiom{repeat} loops as
+\axiom{for} clauses.
+These clauses can be present in addition to \axiom{while} clauses.
+As with all other types of \axiom{repeat} loops, \axiom{break} can
+\spadkey{break}
+be used to prematurely terminate the evaluation of the loop.
+
+\beginImportant
+The syntax for a simple loop using \axiom{for} is
+\centerline{{\axiom{for} {\it iterator} \axiom{repeat} {\it loopBody}}}
+The {\it iterator} has several forms.
+Each form has an end test which is evaluated
+before {\it loopBody} is evaluated.
+A \axiom{for} loop terminates immediately when the end test
+succeeds (evaluates to \axiom{true}) or when a \axiom{break} or \axiom{return}
+expression is evaluated in {\it loopBody}.
+The value returned by the loop is \void{}.
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInNMTitle}{for i in n..m repeat}
+\newcommand{\ugLangLoopsForInNMNumber}{5.4.9.}
+
+@
+\section{for i in n..m repeat}
+\label{ugLangLoopsForInNMPage}
+\begin{itemize}
+\item SegmentXmpPage \ref{SegmentXmpPage} on
+page~\pageref{SegmentXmpPage}
+\end{itemize}
+\index{pages!ugLangLoopsForInNMPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInNMPage}
+\index{ugLangLoopsForInNMPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInNMPage}{5.4.9. for i in n..m repeat}
+\beginscroll
+
+If \axiom{for}
+\spadkey{for}
+is followed by a variable name, the \axiom{in}
+\spadkey{in}
+keyword and then an integer segment of the form \axiom{n..m},
+the end test for this loop is the predicate \axiom{i > m}.
+The body of the loop is evaluated \axiom{m-n+1} times if this
+number is greater than 0.
+If this number is less than or equal to 0, the loop body is not evaluated
+at all.
+
+The variable \axiom{i} has the value
+\axiom{n, n+1, ..., m} for successive iterations
+of the loop body.
+The loop variable is a \spadgloss{local variable}
+within the loop body: its value is not available outside the loop body
+and its value and type within the loop body completely mask any outer
+definition of a variable with the same name.
+
+%
+\xtc{
+This loop prints the values of
+\texht{${10}^3$, ${11}^3$, and $12^3$}{\axiom{10**3, 11**3, and 12**3}}:
+}{
+\spadpaste{for i in 10..12 repeat output(i**3)}
+}
+%
+\xtc{
+Here is a sample list.
+}{
+\spadpaste{a := [1,2,3] \bound{a}}
+}
+\xtc{
+Iterate across this list, using \axiomSyntax{.} to access the elements of a list and
+the \axiomFun{\#} operation to count its elements.
+}{
+\spadpaste{for i in 1..\#a repeat output(a.i) \free{a}}
+}
+%
+This type of iteration is applicable to anything that uses \axiomSyntax{.}.
+You can also use it with functions that use indices to extract elements.
+%
+\xtc{
+Define \axiom{m} to be a matrix.
+}{
+\spadpaste{m := matrix [[1,2],[4,3],[9,0]] \bound{m}}
+}
+\xtc{
+Display the rows of \axiom{m}.
+}{
+\spadpaste{for i in 1..nrows(m) repeat output row(m,i) \free{m}}
+}
+%
+You can use \axiom{iterate} with \axiom{for}-loops.
+\spadkey{iterate}
+\xtc{
+Display the even integers in a segment.
+}{
+\begin{spadsrc}
+for i in 1..5 repeat
+  if odd?(i) then iterate
+  output(i)
+\end{spadsrc}
+}
+
+See \downlink{`Segment'}{SegmentXmpPage}\ignore{Segment} 
+for more information about segments.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInNMSTitle}{for i in n..m by s repeat}
+\newcommand{\ugLangLoopsForInNMSNumber}{5.4.10.}
+
+@
+\section{for i in n..m by s repeat}
+\label{ugLangLoopsForInNMSPage}
+\index{pages!ugLangLoopsForInNMSPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInNMSPage}
+\index{ugLangLoopsForInNMSPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInNMSPage}{5.4.10. for i in n..m by s repeat}
+\beginscroll
+
+By default, the difference between values taken on by a variable in loops
+such as \axiom{for i in n..m repeat ...} is \mathOrSpad{1}.
+It is possible to supply another, possibly negative, step value by using
+the \axiom{by}
+\spadkey{by}
+keyword along with \axiom{for} and \axiom{in}.
+Like the upper and lower bounds, the step value following the
+\axiom{by} keyword must be an integer.
+Note that the loop
+\axiom{for i in 1..2 by 0 repeat output(i)}
+will not terminate by itself, as the step value does not change the index
+from its initial value of \mathOrSpad{1}.
+
+\xtc{
+This expression displays the odd integers between two bounds.
+}{
+\spadpaste{for i in 1..5 by 2 repeat output(i)}
+}
+\xtc{
+Use this to display the numbers in reverse order.
+}{
+\spadpaste{for i in 5..1 by -2 repeat output(i)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInNTitle}{for i in n.. repeat}
+\newcommand{\ugLangLoopsForInNNumber}{5.4.11.}
+
+@
+\section{for i in n.. repeat}
+\label{ugLangLoopsForInNPage}
+\index{pages!ugLangLoopsForInNPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInNPage}
+\index{ugLangLoopsForInNPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInNPage}{5.4.11. for i in n.. repeat}
+\beginscroll
+
+If the value after the \axiomSyntax{..}
+is omitted, the loop has no end test.
+A potentially infinite loop is thus created.
+The variable is given the successive values \axiom{n, n+1, n+2, ...}
+and the loop is terminated only if a \axiom{break} or \axiom{return}
+expression is evaluated in the loop body.
+However you may also add some other modifying clause on the
+\axiom{repeat} (for example, a \axiom{while} clause) to stop the loop.
+
+\xtc{
+This loop displays the integers greater than or equal to \axiom{15}
+and less than the first prime greater than \axiom{15}.
+}{
+\spadpaste{for i in 15.. while not prime?(i) repeat output(i)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInXLTitle}{for x in l repeat}
+\newcommand{\ugLangLoopsForInXLNumber}{5.4.12.}
+
+@
+\section{for x in l repeat}
+\label{ugLangLoopsForInXLPage}
+\index{pages!ugLangLoopsForInXLPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInXLPage}
+\index{ugLangLoopsForInXLPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInXLPage}{5.4.12. for x in l repeat}
+\beginscroll
+
+Another variant of the \axiom{for} loop has the form:
+\centerline{{{\it \axiom{for} x \axiom{in} list \axiom{repeat} loopBody}}}
+This form is used when you want to iterate directly over the
+elements of a list.
+In this form of the \axiom{for} loop, the variable
+\axiom{x} takes on the value of each successive element in \axiom{l}.
+The end test is most simply stated in English: ``are there no more
+\axiom{x} in \axiom{l}?''
+
+\xtc{
+If \axiom{l} is this list,
+}{
+\spadpaste{l := [0,-5,3] \bound{l}}
+}
+\xtc{
+display all elements of \axiom{l}, one per line.
+}{
+\spadpaste{for x in l repeat output(x) \free{l}}
+}
+
+Since the list constructing expression \axiom{expand [n..m]} creates the
+list \axiom{[n, n+1, ..., m]}\footnote{This list is empty if \axiom{n >
+m}.}, you might be tempted to think that the loops
+\begin{verbatim}
+for i in n..m repeat output(i)
+\end{verbatim}
+and
+\begin{verbatim}
+for x in expand [n..m] repeat output(x)
+\end{verbatim}
+are equivalent.
+The second form first creates the list
+\axiom{expand [n..m]} (no matter how large it might be) and
+then does the iteration.
+The first form potentially runs in much less space, as the index variable
+\axiom{i} is simply incremented once per loop and the list is not actually
+created.
+Using the first form is much more efficient.
+%
+\xtc{
+Of course, sometimes you really want to iterate across a specific list.
+This displays each of the factors of \axiom{2400000}.
+}{
+\spadpaste{for f in factors(factor(2400000)) repeat output(f)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsForInPredTitle}{``Such that'' Predicates}
+\newcommand{\ugLangLoopsForInPredNumber}{5.4.13.}
+
+@
+\section{``Such that'' Predicates}
+\label{ugLangLoopsForInPredPage}
+\index{pages!ugLangLoopsForInPredPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsForInPredPage}
+\index{ugLangLoopsForInPredPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsForInPredPage}{5.4.13. ``Such that'' Predicates}
+\beginscroll
+
+A \axiom{for} loop can be followed by a \axiomSyntax{|} and then a
+predicate.
+The predicate qualifies the use of the values from the iterator following
+the \axiom{for}.
+Think of the vertical bar
+\axiomSyntax{|} as the phrase ``such that.''
+\xtc{
+This loop expression
+prints out the integers \axiom{n} in the given segment
+such that \axiom{n} is odd.
+}{
+\spadpaste{for n in 0..4 | odd? n repeat output n}
+}
+
+\beginImportant
+A \axiom{for} loop can also be written
+\centerline{{\axiom{for} {\it iterator} \axiom{|} {\it predicate}  \axiom{repeat} {\it loopBody}}}
+which is equivalent to:
+\centerline{{\axiom{for} {\it iterator} \axiom{repeat if}}}
+\centerline{{{\it predicate} \axiom{then} {\it loopBody} \axiom{else} \axiom{iterate}}}
+\endImportant
+
+The predicate need not refer only to the variable in the \axiom{for} clause:
+any variable in an outer scope can be part of the predicate.
+\xtc{
+In this example, the predicate on the inner \axiom{for} loop uses
+\axiom{i} from the outer loop and the \axiom{j} from the \axiom{for}
+clause that it directly modifies.
+}{
+\begin{spadsrc}
+for i in 1..50 repeat
+  for j in 1..50 | factorial(i+j) < 25 repeat
+    output [i,j]
+\end{spadsrc}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangLoopsParTitle}{Parallel Iteration}
+\newcommand{\ugLangLoopsParNumber}{5.4.14.}
+
+@
+\section{Parallel Iteration}
+\label{ugLangLoopsParPage}
+\begin{itemize}
+\item ugLangLoopsForInPredPage \ref{ugLangLoopsForInPredPage} on
+page~\pageref{ugLangLoopsForInPredPage}
+\end{itemize}
+\index{pages!ugLangLoopsParPage!ug05.ht}
+\index{ug05.ht!pages!ugLangLoopsParPage}
+\index{ugLangLoopsParPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangLoopsParPage}{5.4.14. Parallel Iteration}
+\beginscroll
+
+The last example of
+\texht{the previous section}{
+\downlink{``\ugLangLoopsForInPredTitle''}{ugLangLoopsForInPredPage} 
+in Section \ugLangLoopsForInPredNumber\ignore{ugLangLoopsForInPred}}
+gives an example of
+\spadgloss{nested iteration}: a loop is contained
+in another loop.
+Sometimes you want to iterate across two lists in parallel, or perhaps
+you want to traverse a list while incrementing a variable.
+
+\beginImportant
+The general syntax of a repeat loop is
+\centerline{{{\tt \subscriptIt{iterator}{1} \subscriptIt{iterator}{2} \ldots \subscriptIt{iterator}{N} repeat {\it loopBody}}}}
+where each {\it iterator} is either a \axiom{for} or a \axiom{while} clause.
+The loop terminates immediately when the end test of any {\it iterator}
+succeeds or when a \axiom{break} or \axiom{return} expression is evaluated
+in {\it loopBody}.
+The value returned by the loop is \void{}.
+\endImportant
+
+\xtc{
+Here we write a loop to iterate across
+two lists, computing the sum of the pairwise product
+of elements. Here is the first list.
+}{
+\spadpaste{l := [1,3,5,7] \bound{l}}
+}
+\xtc{
+And the second.
+}{
+\spadpaste{m := [100,200] \bound{m}}
+}
+\xtc{
+The initial value of the sum counter.
+}{
+\spadpaste{sum := 0 \bound{sum}}
+}
+\xtc{
+The last two elements of \axiom{l} are not used in the calculation
+because \axiom{m} has two fewer elements than \axiom{l}.
+}{
+\begin{spadsrc}[\bound{doit}\free{sum l m}]
+for x in l for y in m repeat
+    sum := sum + x*y
+\end{spadsrc}
+}
+\xtc{
+Display the ``dot product.''
+}{
+\spadpaste{sum \free{doit}}
+}
+
+\xtc{
+Next, we write a loop to compute the sum of the products of the loop 
+elements with
+their positions in the loop.
+}{
+\spadpaste{l := [2,3,5,7,11,13,17,19,23,29,31,37] \bound{l1}}
+}
+\xtc{
+The initial sum.
+}{
+\spadpaste{sum := 0 \bound{sum1}}
+}
+\xtc{
+Here looping stops when the list \axiom{l} is exhausted, even though
+the \axiom{for i in 0..} specifies no terminating condition.
+}{
+\spadpaste{for i in 0.. for x in l repeat sum := i * x \bound{doit1}\free{sum1 l1}}
+}
+\xtc{
+Display this weighted sum.
+}{
+\spadpaste{sum \free{doit1}}
+}
+
+When \axiomSyntax{|} is used to qualify any of the \axiom{for} clauses in a
+parallel iteration, the variables in the predicates can be from an outer
+scope or from a \axiom{for} clause in or to the left of a modified clause.
+
+This is correct:
+\begin{verbatim}
+for i in 1..10 repeat
+  for j in 200..300 | odd? (i+j) repeat
+    output [i,j]
+\end{verbatim}
+This is not correct since the variable \axiom{j} has not been
+defined outside the inner loop.
+\begin{verbatim}
+for i in 1..10 | odd? (i+j) repeat  -- wrong, j not defined
+  for j in 200..300 repeat
+    output [i,j]
+\end{verbatim}
+
+%>% *********************************************************************
+%>\head{subsection}{Mixing Loop Modifiers}{ugLangLoopsMix}
+%>% *********************************************************************
+
+\xtc{
+This example shows that it is possible to mix several of the
+forms of \axiom{repeat} modifying clauses on a loop.
+}{
+\begin{spadsrc}
+for i in 1..10
+    for j in 151..160 | odd? j
+      while i + j < 160 repeat
+        output [i,j]
+\end{spadsrc}
+}
+%
+Here are useful rules for composing loop expressions:
+\indent{4}
+\beginitems
+\item[1. ] \axiom{while} predicates can only refer to variables that
+are global (or in an outer scope)
+or that are defined in \axiom{for} clauses to the left of the
+predicate.
+\item[2. ] A ``such that'' predicate (something following \axiomSyntax{|})
+must directly follow a \axiom{for} clause and can only refer to
+variables that are global (or in an outer scope)
+or defined in the modified \axiom{for} clause
+or any \axiom{for} clause to the left.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangItsTitle}{Creating Lists and Streams with Iterators}
+\newcommand{\ugLangItsNumber}{5.5.}
+
+@
+\section{Creating Lists and Streams with Iterators}
+\label{ugLangItsPage}
+\begin{itemize}
+\item ugLangLoopsPage \ref{ugLangLoopsPage} on
+page~\pageref{ugLangLoopsPage}
+\item ListXmpPage \ref{ListXmpPage} on
+page~\pageref{ListXmpPage}
+\item StreamXmpPage \ref{StreamXmpPage} on
+page~\pageref{StreamXmpPage}
+\end{itemize}
+\index{pages!ugLangItsPage!ug05.ht}
+\index{ug05.ht!pages!ugLangItsPage}
+\index{ugLangItsPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangItsPage}{5.5. Creating Lists and Streams with Iterators}
+\beginscroll
+
+All of what we did for loops in 
+\downlink{``\ugLangLoopsTitle''}{ugLangLoopsPage} 
+in Section \ugLangLoopsNumber\ignore{ugLangLoops}
+can be transformed into expressions that create lists
+and streams.
+The \axiom{repeat,} \axiom{break} or \axiom{iterate} words are not used but
+all the other ideas carry over.
+Before we give you the general rule, here are some examples which
+give you the idea.
+
+\xtc{
+This creates a simple list of the integers from \axiom{1} to \axiom{10}.
+}{
+\spadpaste{list := [i for i in 1..10] \bound{list}}
+}
+\xtc{
+Create a stream of the integers greater than or equal to \axiom{1}.
+}{
+\spadpaste{stream := [i for i in 1..] \bound{stream}}
+}
+\xtc{
+This is a list of the prime integers between \axiom{1} and \axiom{10},
+inclusive.
+}{
+\spadpaste{[i for i in 1..10 | prime? i]}
+}
+\xtc{
+This is a stream of the prime integers greater than or equal to \axiom{1}.
+}{
+\spadpaste{[i for i in 1..   | prime? i]}
+}
+\xtc{
+This is a list of the integers between \axiom{1} and \axiom{10},
+inclusive, whose squares are less than \axiom{700}.
+}{
+\spadpaste{[i for i in 1..10 while i*i < 700]}
+}
+\xtc{
+This is a stream of the integers greater than or equal to \axiom{1}
+whose squares are less than \axiom{700}.
+}{
+\spadpaste{[i for i in 1..   while i*i < 700]}
+}
+
+Got the idea?
+Here is the general rule.
+
+\beginImportant
+The general syntax of a collection is
+\centerline{{{\tt [ {\it collectExpression} \subscriptIt{iterator}{1}  \subscriptIt{iterator}{2}  \ldots  \subscriptIt{iterator}{N} ]}}}
+where each \subscriptIt{iterator}{i} is either a \axiom{for} or a
+\axiom{while} clause.
+The loop terminates immediately when the end test of any
+\subscriptIt{iterator}{i} succeeds or when a \axiom{return} expression is
+evaluated in {\it collectExpression}.
+The value returned by the collection is either a list or a stream of
+elements, one for each iteration of the {\it collectExpression}.
+\endImportant
+
+Be careful when you use \axiom{while}
+to create a stream.
+By default, Axiom tries to compute and display the first ten elements
+of a stream.
+If the \axiom{while} condition is not satisfied quickly, Axiom
+can spend a long (possibly infinite) time trying to compute
+the elements.
+Use \spadcmd{)set streams calculate} to change the default
+to something else.
+This also affects the number of terms computed and displayed for power
+series.
+For the purposes of this book, we have used this system
+command to display fewer than ten terms.
+\xtc{
+Use nested iterators to create lists of
+lists which can then be given as an argument to \axiomFun{matrix}.
+}{
+\spadpaste{matrix [[x**i+j for i in 1..3] for j in 10..12]}
+}
+\xtc{
+You can also create lists of streams, streams of lists and
+streams of streams.
+Here is a stream of streams.
+}{
+\spadpaste{[[i/j for i in j+1..] for j in 1..]}
+}
+\xtc{
+You can use parallel iteration across lists and streams to create
+new lists.
+}{
+\spadpaste{[i/j for i in 3.. by 10 for j in 2..]}
+}
+\xtc{
+Iteration stops if the end of a list or stream is reached.
+}{
+\spadpaste{[i**j for i in 1..7 for j in 2.. ]}
+}
+%\xtc{
+%or a while condition fails.
+%}{
+%\spadcommand{[i**j for i in 1..  for j in 2.. while i + j < 5 ]}
+%}
+\xtc{
+As with loops, you can combine these modifiers to make very
+complicated conditions.
+}{
+\spadpaste{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
+}
+
+See \downlink{`List'}{ListXmpPage}\ignore{List} and 
+\downlink{`Stream'}{StreamXmpPage}\ignore{Stream} 
+for more information on creating and
+manipulating lists and streams, respectively.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug05.ht>>=
+\newcommand{\ugLangStreamsPrimesTitle}{An Example: Streams of Primes}
+\newcommand{\ugLangStreamsPrimesNumber}{5.6.}
+
+@
+\section{An Example: Streams of Primes}
+\label{ugLangStreamsPrimesPage}
+\index{pages!ugLangStreamsPrimesPage!ug05.ht}
+\index{ug05.ht!pages!ugLangStreamsPrimesPage}
+\index{ugLangStreamsPrimesPage!ug05.ht!pages}
+<<ug05.ht>>=
+\begin{page}{ugLangStreamsPrimesPage}{5.6. An Example: Streams of Primes}
+\beginscroll
+
+We conclude this chapter with an example of the creation and manipulation
+of infinite streams of prime integers.
+This might be useful for experiments with numbers or other applications
+where you are using sequences of primes over and over again.
+As for all streams, the stream of primes is only computed as far out as you
+need.
+Once computed, however, all the primes up to that point are saved for
+future reference.
+
+Two useful operations provided by the Axiom library are
+\axiomFunFrom{prime?}{IntegerPrimesPackage} and
+\axiomFunFrom{nextPrime}{IntegerPrimesPackage}.
+A straight-forward way to create a stream of
+prime numbers is to start with the stream of positive integers \axiom{[2,..]} and
+filter out those that are prime.
+\xtc{
+Create a stream of primes.
+}{
+\spadpaste{primes : Stream Integer := [i for i in 2.. | prime? i]}
+}
+A more elegant way, however, is to use the \axiomFunFrom{generate}{Stream}
+operation from \axiomType{Stream}.
+Given an initial value \axiom{a} and a function \axiom{f},
+\axiomFunFrom{generate}{Stream}
+constructs the stream \axiom{[a, f(a), f(f(a)), ...]}.
+This function gives you the quickest method of getting the stream of primes.
+\xtc{
+This is how you use
+\axiomFunFrom{generate}{Stream} to
+generate an infinite stream of primes.
+}{
+\spadpaste{primes := generate(nextPrime,2)}
+}
+\xtc{
+Once the stream is generated, you might only be interested in
+primes starting at a particular value.
+}{
+\spadpaste{smallPrimes := [p for p in primes | p > 1000] \bound{smallPrimes}}
+}
+\xtc{
+Here are the first 11 primes greater than 1000.
+}{
+\spadpaste{[p for p in smallPrimes for i in 1..11] \free{smallPrimes}}
+}
+\xtc{
+Here is a stream of primes between 1000 and 1200.
+}{
+\spadpaste{[p for p in smallPrimes while p < 1200] \free{smallPrimes}}
+}
+\xtc{
+To get these expanded into a finite stream,
+you call \axiomFunFrom{complete}{Stream} on the stream.
+}{
+\spadpaste{complete \%}
+}
+\xtc{
+Twin primes are consecutive odd number pairs which are prime.
+Here is the stream of twin primes.
+}{
+\spadpaste{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
+}
+\xtc{
+Since we already have the primes computed we can
+avoid the call to \axiomFunFrom{prime?}{IntegerPrimesPackage}
+by using a double iteration.
+This time we'll just generate a stream of the first of the twin primes.
+}{
+\spadpaste{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
+}
+
+Let's try to compute the infinite stream of triplet primes,
+the set of primes \axiom{p} such that \axiom{[p,p+2,p+4]}
+are primes. For example, \axiom{[3,5,7]} is a triple prime.
+We could do this by a triple \axiom{for} iteration.
+A more economical way is to use \userfun{firstOfTwins}.
+This time however, put a semicolon at the end of the line.
+
+\xtc{Create the stream of firstTriplets.
+Put a semicolon at the end so that no
+elements are computed.
+}{
+\spadpaste{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
+}
+
+What happened?
+As you know, by default
+Axiom displays the first ten
+elements of a stream when you first display it.
+And, therefore, it needs to compute them!
+If you want {\it no} elements computed, just terminate the expression by a
+semicolon (\axiomSyntax{;}).\footnote{
+Why does this happen? The semi-colon prevents the display of the
+result of evaluating the expression.
+Since no stream elements are needed for display (or anything else, so far),
+none are computed.
+}
+
+\xtc{
+Compute the first triplet prime.
+}{
+\spadpaste{firstTriplets.1}
+}
+
+If you want to compute another, just ask for it.
+But wait a second!
+Given three consecutive odd integers, one of them must be divisible
+by 3. Thus there is only one triplet prime.
+But suppose that you did not know this and wanted to know what was the
+tenth triplet prime.
+\begin{verbatim}
+firstTriples.10
+\end{verbatim}
+To compute the tenth triplet prime, Axiom first must compute the second,
+the third, and so on.
+But since there isn't even a second triplet prime, Axiom will
+compute forever.
+Nonetheless, this effort can produce a useful result.
+After waiting a bit, hit
+\texht{\fbox{\bf Ctrl}--\fbox{\bf c}}{{\bf Ctrl-c}}.
+The system responds as follows.
+\begin{verbatim}
+   >> System error:
+   Console interrupt.
+   You are being returned to the top level of
+   the interpreter.
+\end{verbatim}
+Let's say that you want to know how many primes have been computed.
+Issue
+\begin{verbatim}
+numberOfComputedEntries primes
+\end{verbatim}
+and, for this discussion, let's say that the result is \axiom{2045.}
+\xtc{
+How big is the \eth{\axiom{2045}} prime?
+}{
+\spadpaste{primes.2045}
+}
+
+What you have learned is that there are no triplet primes between 5 and
+17837.
+Although this result is well known (some might even say trivial), there
+are many experiments you could make where the result is not known.
+What you see here is a paradigm for testing of hypotheses.
+Here our hypothesis could have been: ``there is more than one triplet
+prime.''
+We have tested this hypothesis for 17837 cases.
+With streams, you can let your machine run, interrupt it to see how far
+it has progressed,
+then start it up and let it continue from where it left off.
+
+%> RDJ note to RSS:
+%> Expressions not statements or lines--
+%>   By an expression I mean any syntactically correct program fragment.
+%>   Everything in Axiom is an expression since every fragment has a value and a type.
+%>   In most languages including LISP, a "statement" is different from an expression:
+%>   it is executed for side-effect only and an error is incurred if you assign it a value.
+%>   This "gimmick" takes care of incomplete expressions such as "if x > 0 then y" in blocks.
+%>   In LISP, "u := (if x > 0 then y)" is illegal but in Axiom it is legal.
+%>   Also, in Axiom the value of a repeat loop is void even though you might be
+%>   be able to prove that it always returns a valid value (you have an example of this)!
+%>   This will be considered a bug not a feature. But it is how things stand.
+%>   In any case---this point should be in a box somewhere since it is key
+%>   to a user's understanding to the language. I am not sure where. You only
+%>   gain an appreciation for it after are awhile in chapter 5.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 6 (ug06.ht)}
+<<ug06.ht>>=
+\newcommand{\pred}[1]{\subscriptIt{pred}{#1}}
+\newcommand{\expr}[1]{\subscriptIt{expression}{#1}}
+\newcommand{\ugUserTitle}{User-Defined Functions, Macros and Rules}
+\newcommand{\ugUserNumber}{6.}
+
+@
+\section{User-Defined Functions, Macros and Rules}
+\label{ugUserPage}
+\begin{itemize}
+\item ugUserFunMacPage \ref{ugUserFunMacPage} on
+page~\pageref{ugUserFunMacPage}
+\item ugUserMacrosPage \ref{ugUserMacrosPage} on
+page~\pageref{ugUserMacrosPage}
+\item ugUserIntroPage \ref{ugUserIntroPage} on
+page~\pageref{ugUserIntroPage}
+\item ugUserDeclarePage \ref{ugUserDeclarePage} on
+page~\pageref{ugUserDeclarePage}
+\item ugUserOnePage \ref{ugUserOnePage} on
+page~\pageref{ugUserOnePage}
+\item ugUserDecUndecPage \ref{ugUserDecUndecPage} on
+page~\pageref{ugUserDecUndecPage}
+\item ugUserDecOpersPage \ref{ugUserDecOpersPage} on
+page~\pageref{ugUserDecOpersPage}
+\item ugUserDelayPage \ref{ugUserDelayPage} on
+page~\pageref{ugUserDelayPage}
+\item ugUserUsePage \ref{ugUserUsePage} on
+page~\pageref{ugUserUsePage}
+\item ugUserCompIntPage \ref{ugUserCompIntPage} on
+page~\pageref{ugUserCompIntPage}
+\item ugUserPiecePage \ref{ugUserPiecePage} on
+page~\pageref{ugUserPiecePage}
+\item ugUserCachePage \ref{ugUserCachePage} on
+page~\pageref{ugUserCachePage}
+\item ugUserRecurPage \ref{ugUserRecurPage} on
+page~\pageref{ugUserRecurPage}
+\item ugUserMakePage \ref{ugUserMakePage} on
+page~\pageref{ugUserMakePage}
+\item ugUserBlocksPage \ref{ugUserBlocksPage} on
+page~\pageref{ugUserBlocksPage}
+\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
+page~\pageref{ugUserFreeLocalPage}
+\item ugUserAnonPage \ref{ugUserAnonPage} on
+page~\pageref{ugUserAnonPage}
+\item ugUserDatabasePage \ref{ugUserDatabasePage} on
+page~\pageref{ugUserDatabasePage}
+\item ugUserTrianglePage \ref{ugUserTrianglePage} on
+page~\pageref{ugUserTrianglePage}
+\item ugUserPalPage \ref{ugUserPalPage} on
+page~\pageref{ugUserPalPage}
+\item ugUserRulesPage \ref{ugUserRulesPage} on
+page~\pageref{ugUserRulesPage}
+\end{itemize}
+\index{pages!ugUserPage!ug06.ht}
+\index{ug06.ht!pages!ugUserPage}
+\index{ugUserPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPage}{6. User-Defined Functions, Macros and Rules}
+\beginscroll
+
+In this chapter we show you how to write functions and macros,
+and we explain how Axiom looks for and applies them.
+We show some simple one-line examples of functions, together
+with larger ones that are defined piece-by-piece or through the use of
+piles.
+
+\beginmenu
+    \menudownlink{{6.1. Functions vs. Macros}}{ugUserFunMacPage}
+    \menudownlink{{6.2. Macros}}{ugUserMacrosPage}
+    \menudownlink{{6.3. Introduction to Functions}}{ugUserIntroPage}
+    \menudownlink{{6.4. Declaring the Type of Functions}}{ugUserDeclarePage}
+    \menudownlink{{6.5. One-Line Functions}}{ugUserOnePage}
+    \menudownlink{{6.6. Declared vs. Undeclared Functions}}{ugUserDecUndecPage}
+    \menudownlink{{6.7. Functions vs. Operations}}{ugUserDecOpersPage}
+    \menudownlink{{6.8. Delayed Assignments vs. Functions with No Arguments}}
+{ugUserDelayPage}
+    \menudownlink{{6.9. How Axiom Determines What Function to Use}}
+{ugUserUsePage}
+    \menudownlink{{6.10. Compiling vs. Interpreting}}{ugUserCompIntPage}
+    \menudownlink{{6.11. Piece-Wise Function Definitions}}{ugUserPiecePage}
+    \menudownlink{{6.12. Caching Previously Computed Results}}{ugUserCachePage}
+    \menudownlink{{6.13. Recurrence Relations}}{ugUserRecurPage}
+    \menudownlink{{6.14. Making Functions from Objects}}{ugUserMakePage}
+    \menudownlink{{6.15. Functions Defined with Blocks}}{ugUserBlocksPage}
+    \menudownlink{{6.16. Free and Local Variables}}{ugUserFreeLocalPage}
+    \menudownlink{{6.17. Anonymous Functions}}{ugUserAnonPage}
+    \menudownlink{{6.18. Example: A Database}}{ugUserDatabasePage}
+    \menudownlink{{6.19. Example: A Famous Triangle}}{ugUserTrianglePage}
+    \menudownlink{{6.20. Example: Testing for Palindromes}}{ugUserPalPage}
+    \menudownlink{{6.21. Rules and Pattern Matching}}{ugUserRulesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserFunMacTitle}{Functions vs. Macros}
+\newcommand{\ugUserFunMacNumber}{6.1.}
+
+@
+\section{Functions vs. Macros}
+\label{ugUserFunMacPage}
+\begin{itemize}
+\item ugUserAnonPage \ref{ugUserAnonPage} on
+page~\pageref{ugUserAnonPage}
+\item ExitXmpPage \ref{ExitXmpPage} on
+page~\pageref{ExitXmpPage}
+\item VoidXmpPage \ref{VoidXmpPage} on
+page~\pageref{VoidXmpPage}
+\end{itemize}
+\index{pages!ugUserFunMacPage!ug06.ht}
+\index{ug06.ht!pages!ugUserFunMacPage}
+\index{ugUserFunMacPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserFunMacPage}{6.1. Functions vs. Macros}
+\beginscroll
+
+A function is a program to perform some
+computation.
+Most functions have names so that it is easy to refer to them.
+A simple example of a function is one named
+\axiomFunFrom{abs}{Integer} which
+computes the absolute value of an integer.
+%
+\xtc{
+This is a use of the ``absolute value'' library function for integers.
+}{
+\spadpaste{abs(-8)}
+}
+\xtc{
+This is an unnamed function that does the same thing, using the
+``maps-to'' syntax \axiomSyntax{+->} that we discuss in
+\downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
+in Section \ugUserAnonNumber\ignore{ugUserAnon}.
+}{
+\spadpaste{(x +-> if x < 0 then -x else x)(-8)}
+}
+%
+Functions can be used alone or serve as the building blocks for larger
+programs.
+Usually they return a value that you might want to use in the next stage
+of a computation, but not always (for example, see
+\downlink{`Exit'}{ExitXmpPage}\ignore{Exit} and 
+\downlink{`Void'}{VoidXmpPage}\ignore{Void}).
+They may also read data from your keyboard, move information from one
+place to another, or format and display results on your screen.
+
+In Axiom, as in mathematics, functions
+are usually \spadglossSee{parameterized}{parameterized form}.
+Each time you {\it call} (some people say \spadgloss{apply} or
+\spadglossSee{invoke}{invocation}) a function, you give
+values to the parameters (variables).
+Such a value is called an \spadgloss{argument} of
+the function.
+Axiom uses the arguments for the computation.
+In this way you get different results depending on what you ``feed'' the
+function.
+
+Functions can have local variables or refer to global variables in the
+workspace.
+Axiom can often \spadglossSee{compile}{compiler} functions so that
+they execute very efficiently.
+Functions can be passed as arguments to other functions.
+
+Macros are textual substitutions.
+They are used to clarify the meaning of constants or expressions and to be
+templates for frequently used expressions.
+Macros can be parameterized but they are not objects that can be passed as
+arguments to functions.
+In effect, macros are extensions to the Axiom expression parser.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserMacrosTitle}{Macros}
+\newcommand{\ugUserMacrosNumber}{6.2.}
+
+@
+\section{Macros}
+\label{ugUserMacrosPage}
+\index{pages!ugUserMacrosPage!ug06.ht}
+\index{ug06.ht!pages!ugUserMacrosPage}
+\index{ugUserMacrosPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserMacrosPage}{6.2. Macros}
+\beginscroll
+
+A \spadgloss{macro} provides general textual substitution of
+an Axiom expression for a name.
+You can think of a macro as being a generalized abbreviation.
+You can only have one macro in your workspace with
+a given name, no matter how many arguments it has.
+
+\beginImportant
+The two general forms for macros are
+\centerline{{{\tt macro} {\it name} {\tt ==} {\it body} }}
+\centerline{{{\tt macro} {\it name(arg1,...)} {\tt ==} {\it body}}}
+where the body of the macro can be any Axiom expression.
+\endImportant
+
+%
+\xtc{
+For example, suppose you decided that you
+like to use \axiom{df} for \axiomFun{D}.
+You define the macro \axiom{df} like this.
+}{
+\spadpaste{macro df == D \bound{df}}
+}
+\xtc{
+Whenever you type \axiom{df}, the system expands it to
+\axiomFun{D}.
+}{
+\spadpaste{df(x**2 + x + 1,x) \free{df}}
+}
+\xtc{
+Macros can be parameterized and so can be used for many different
+kinds of objects.
+}{
+\spadpaste{macro ff(x) == x**2 + 1 \bound{ff}}
+}
+\xtc{
+Apply it to a number, a symbol, or an expression.
+}{
+\spadpaste{ff z \free{ff}}
+}
+\xtc{
+Macros can also be nested, but you get an error message if you
+run out of space because of an infinite nesting loop.
+}{
+\spadpaste{macro gg(x) == ff(2*x - 2/3) \bound{gg}\free{ff}}
+}
+\xtc{
+This new macro is fine as it does not produce a loop.
+}{
+\spadpaste{gg(1/w) \free{gg}}
+}
+%
+\xtc{
+This, however, loops since \axiom{gg} is
+defined in terms of \axiom{ff}.
+}{
+\spadpaste{macro ff(x) == gg(-x) \free{gg}}
+}
+\xtc{
+The body of a macro can be a block.
+}{
+\spadpaste{macro next == (past := present; present := future; future := past + present) \bound{next}}
+}
+\xtc{
+Before entering \axiom{next}, we need
+values for \axiom{present} and \axiom{future}.
+}{
+\spadpaste{present : Integer := 0 \bound{present}}
+}
+\xtc{
+}{
+\spadpaste{future : Integer := 1 \bound{future}}
+}
+\xtc{
+Repeatedly evaluating \axiom{next} produces the next Fibonacci number.
+}{
+\spadpaste{next \free{future}\free{present}}
+}
+\xtc{
+And the next one.
+}{
+\spadpaste{next \free{future}\free{present}}
+}
+\xtc{
+Here is the infinite stream of the rest of the Fibonacci numbers.
+}{
+\spadpaste{[next for i in 1..] \free{future}\free{present}}
+}
+\xtc{
+Bundle all the above lines into a single macro.
+}{
+\begin{spadsrc}[\bound{fibstr}]
+macro fibStream ==
+  present : Integer := 1
+  future : Integer := 1
+  [next for i in 1..] where
+    macro next ==
+      past := present
+      present := future
+      future := past + present
+\end{spadsrc}
+}
+\xtc{
+Use \axiomFunFrom{concat}{Stream} to start with the first two
+Fibonacci numbers.
+}{
+\spadpaste{concat([0,1],fibStream) \free{fibstr}}
+}
+\xtc{
+An easier way to compute these numbers is to
+use the library operation \axiomFun{fibonacci}.
+}{
+\spadpaste{[fibonacci i for i in 1..]}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserIntroTitle}{Introduction to Functions}
+\newcommand{\ugUserIntroNumber}{6.3.}
+
+@
+\section{Introduction to Functions}
+\label{ugUserIntroPage}
+\begin{itemize}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\item ugUserAnonPage \ref{ugUserAnonPage} on
+page~\pageref{ugUserAnonPage}
+\end{itemize}
+\index{pages!ugUserIntroPage!ug06.ht}
+\index{ug06.ht!pages!ugUserIntroPage}
+\index{ugUserIntroPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserIntroPage}{6.3. Introduction to Functions}
+\beginscroll
+
+Each name in your workspace can refer to a single object.
+This may be any kind of object including a function.
+You can use interactively any function from the library or any that you
+define in the workspace.
+In the library the same name can have very many functions, but you
+can have only one function with a given name, although it can have any
+number of arguments that you choose.
+
+If you define a function in the workspace that has the same name and number
+of arguments as one in the library, then your definition takes precedence.
+In fact, to get the library function you must
+\spadglossSee{package-call}{package call} it (see 
+\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
+
+To use a function in Axiom, you apply it to its arguments.
+Most functions are applied by entering the name of the function followed by
+its argument or arguments.
+\xtc{
+}{
+\spadpaste{factor(12)}
+}
+%
+\xtc{
+Some functions like 
+\axiomOp{+} have {\it infix} \spadgloss{operators} as names.
+}{
+\spadpaste{3 + 4}
+}
+\xtc{
+The function \axiomOp{+} has two arguments.
+When you give it more than two arguments,
+Axiom groups the arguments to the left.
+This expression is equivalent to \axiom{(1 + 2) + 7}.
+}{
+\spadpaste{1 + 2 + 7}
+}
+
+All operations, including infix operators, can be written in prefix form,
+that is, with the operation name followed by the arguments
+in parentheses.
+For example, \axiom{2 + 3} can alternatively be written as \axiom{+(2,3)}.
+But \axiom{+(2,3,4)} is an error since \axiomOp{+}
+takes only two arguments.
+
+Prefix operations are generally applied before the infix operation.
+Thus \axiom{factorial 3 + 1} means \axiom{factorial(3) + 1} producing
+\axiom{7}, and
+\axiom{- 2 + 5} means \axiom{(-2) + 5} producing \axiom{3}.
+An example of a prefix operator is prefix \axiomOp{-}.
+For example, \axiom{- 2 + 5} converts to \axiom{(- 2) + 5} producing
+the value \axiom{3}.
+Any prefix function taking two arguments can be written in
+an infix manner by putting an
+ampersand (\axiomSyntax{\&}) before the name.
+Thus \axiom{D(2*x,x)} can be written as
+\axiom{2*x \&D x} returning \axiom{2}.
+
+Every function in Axiom is identified by
+a \spadgloss{name} and \spadgloss{type}.\footnote{An exception is
+an ``anonymous function''
+discussed in
+\downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
+in Section \ugUserAnonNumber\ignore{ugUserAnon}.}
+The type of a function is always a mapping of the form
+\spadsig{Source}{Target}
+where \axiom{Source} and \axiom{Target} are types.
+To enter a type from the keyboard, enter the arrow by using
+a hyphen \axiomSyntax{-} followed by a greater-than sign
+\axiomSyntax{>}, e.g. {\tt Integer -> Integer}.
+
+Let's go back to \axiomOp{+}.
+There are many \axiomOp{+} functions in the
+Axiom library: one for integers, one for floats, another for
+rational numbers, and so on.
+These \axiomOp{+} functions have different types and thus are
+different functions.
+You've seen examples of this \spadgloss{overloading}
+before---using the same name for different functions.
+Overloading is the rule rather than the exception.
+You can add two integers, two polynomials, two matrices or
+two power series.
+These are all done with the same function name
+but with different functions.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserDeclareTitle}{Declaring the Type of Functions}
+\newcommand{\ugUserDeclareNumber}{6.4.}
+
+@
+\section{Declaring the Type of Functions}
+\label{ugUserDeclarePage}
+\begin{itemize}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\end{itemize}
+\index{pages!ugUserDeclarePage!ug06.ht}
+\index{ug06.ht!pages!ugUserDeclarePage}
+\index{ugUserDeclarePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserDeclarePage}{6.4. Declaring the Type of Functions}
+\beginscroll
+
+In \downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare} we 
+discussed how to declare a variable
+to restrict the kind of values that can be assigned to it.
+In this section we show how to declare a variable that refers to
+function objects.
+
+\beginImportant
+A function is an object of type
+\centerline{{\spadsig{Source}{Type}}}
+where \axiom{Source} and \axiom{Target} can be any type.
+A common type for \axiom{Source} is
+\axiomType{Tuple}(\subscriptIt{T}{1}, \ldots, \subscriptIt{T}{n}),
+usually written
+(\subscriptIt{T}{1}, \ldots, \subscriptIt{T}{n}),
+to indicate a function of \axiom{n} arguments.
+\endImportant
+
+\xtc{
+If \axiom{g} takes an \axiomType{Integer}, a \axiomType{Float} and
+another \axiomType{Integer}, and returns a
+\axiomType{String}, the declaration is written this way.
+}{
+\spadpaste{g: (Integer,Float,Integer) -> String}
+}
+\xtc{
+The types need not be written fully; using abbreviations, the above
+declaration is:
+}{
+\spadpaste{g: (INT,FLOAT,INT) -> STRING}
+}
+\xtc{
+It is possible for a function to take no arguments.
+If \axiom{ h} takes no arguments
+but returns a \axiomType{Polynomial} \axiomType{Integer}, any
+of the following declarations is acceptable.
+}{
+\spadpaste{h: () -> POLY INT}
+}
+\xtc{
+}{
+\spadpaste{h: () -> Polynomial INT}
+}
+\xtc{
+}{
+\spadpaste{h: () -> POLY Integer}
+}
+
+
+\beginImportant
+Functions can also be declared when they are being defined.
+The syntax for combined declaration/definition is:
+\centerline{{\frenchspacing{\tt {\it functionName}(\subscriptIt{parm}{1}: \subscriptIt{parmType}{1}, \ldots, \subscriptIt{parm}{N}: \subscriptIt{parmType}{N}): {\it functionReturnType}}}}
+\endImportant
+
+The following definition fragments show how this can be done for
+the functions \axiom{g} and \axiom{h} above.
+\begin{verbatim}
+g(arg1: INT, arg2: FLOAT, arg3: INT): STRING == ...
+
+h(): POLY INT == ...
+\end{verbatim}
+
+A current restriction on function declarations is that they must
+involve fully specified types (that is, cannot include modes involving
+explicit or implicit \axiomSyntax{?}).
+For more information on declaring things in general, see
+\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
+in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserOneTitle}{One-Line Functions}
+\newcommand{\ugUserOneNumber}{6.5.}
+
+@
+\section{One-Line Functions}
+\label{ugUserOnePage}
+\index{pages!ugUserOnePage!ug06.ht}
+\index{ug06.ht!pages!ugUserOnePage}
+\index{ugUserOnePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserOnePage}{6.5. One-Line Functions}
+\beginscroll
+
+As you use Axiom, you will find that you will write many short functions
+to codify sequences of operations that you often perform.
+In this section we write some simple one-line functions.
+
+\xtc{
+This is a simple recursive factorial function for positive integers.
+}{
+\spadpaste{fac n == if n < 3 then n else n * fac(n-1) \bound{fac}}
+}
+\xtc{
+}{
+\spadpaste{fac 10 \free{fac}}
+}
+%>> Thankfully, the $ is no longer needed in the next example.
+\xtc{
+This function computes \axiom{1 + 1/2 + 1/3 + ... + 1/n}.
+}{
+\spadpaste{s n == reduce(+,[1/i for i in 1..n]) \bound{s}}
+}
+\xtc{
+}{
+\spadpaste{s 50 \free{s}}
+}
+\xtc{
+This function computes a Mersenne number, several of which are prime.
+}{
+\spadpaste{mersenne i == 2**i - 1 \bound{mersenne}}
+}
+\xtc{
+If you type \axiom{mersenne}, Axiom shows you
+the function definition.
+}{
+\spadpaste{mersenne \free{mersenne}}
+}
+\xtc{
+Generate a stream of Mersenne numbers.
+}{
+\spadpaste{[mersenne i for i in 1..] \free{mersenne}}
+}
+\xtc{
+Create a stream of those values of \axiom{i} such that
+\axiom{mersenne(i)} is prime.
+}{
+\spadpaste{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))] \bound{mersenneIndex}\free{mersenne}}
+}
+\xtc{
+Finally, write a function that returns the \eth{\axiom{n}} Mersenne
+prime.
+}{
+\spadpaste{mersennePrime n == mersenne mersenneIndex(n) \free{mersenne mersenneIndex}\bound{mersennePrime}}
+}
+\xtc{
+}{
+\spadpaste{mersennePrime 5 \free{mersennePrime}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserDecUndecTitle}{Declared vs. Undeclared Functions}
+\newcommand{\ugUserDecUndecNumber}{6.6.}
+
+@
+\section{Declared vs. Undeclared Functions}
+\label{ugUserDecUndecPage}
+\begin{itemize}
+\item ugCategoriesPage \ref{ugCategoriesPage} on
+page~\pageref{ugCategoriesPage}
+\end{itemize}
+\index{pages!ugUserDecUndecPage!ug06.ht}
+\index{ug06.ht!pages!ugUserDecUndecPage}
+\index{ugUserDecUndecPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserDecUndecPage}{6.6. Declared vs. Undeclared Functions}
+\beginscroll
+
+If you declare the type of a function, you can apply
+it to any data that can be converted to the source type
+of the function.
+
+\labelSpace{2pc}
+\xtc{
+Define \userfun{f} with type \spadsig{Integer}{Integer}.
+}{
+\spadpaste{f(x: Integer): Integer == x + 1 \bound{f}}
+}
+\xtc{
+The function
+\userfun{f} can be applied to integers, \ldots
+}{
+\spadpaste{f 9 \free{f}}
+}
+\xtc{
+and to values that convert to integers, \ldots
+}{
+\spadpaste{f(-2.0) \free{f}}
+}
+\xtc{
+but not to values that cannot be converted to integers.
+}{
+\spadpaste{f(2/3) \free{f}}
+}
+
+To make the function over a wide range of types, do not
+declare its type.
+\xtc{
+Give the same definition with no declaration.
+}{
+\spadpaste{g x == x + 1 \bound{g}}
+}
+\xtc{
+If \axiom{x + 1} makes sense, you can apply \userfun{g} to \axiom{x}.
+}{
+\spadpaste{g 9 \free{g}}
+}
+\xtc{
+A version of \userfun{g} with different argument types
+get compiled for each new kind of argument used.
+}{
+\spadpaste{g(2/3)  \free{g}}
+}
+\xtc{
+Here \axiom{x+1} for \axiom{x = "axiom"} makes no sense.
+}{
+\spadpaste{g("axiom")\free{g}}
+}
+
+As you will see in \downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
+in Chapter \ugCategoriesNumber\ignore{ugCategories},
+Axiom has a formal idea of categories for what ``makes sense.''
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserDecOpersTitle}{Functions vs. Operations}
+\newcommand{\ugUserDecOpersNumber}{6.7.}
+
+@
+\section{Functions vs. Operations}
+\label{ugUserDecOpersPage}
+\begin{itemize}
+\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
+page~\pageref{MappingPackageOneXmpPage}
+\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
+page~\pageref{ugPackagesAbstractPage}
+\item ugPackagesPage \ref{ugPackagesPage} on
+page~\pageref{ugPackagesPage}
+\item ugCategoriesPage \ref{ugCategoriesPage} on
+page~\pageref{ugCategoriesPage}
+\end{itemize}
+\index{pages!ugUserDecOpersPage!ug06.ht}
+\index{ug06.ht!pages!ugUserDecOpersPage}
+\index{ugUserDecOpersPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserDecOpersPage}{6.7. Functions vs. Operations}
+\beginscroll
+
+A function is an object that you can create, manipulate, pass to,
+and return from functions (for some interesting examples of
+library functions that manipulate functions, see
+\downlink{`MappingPackage1'}{MappingPackageOneXmpPage}
+\ignore{MappingPackage1}).
+Yet, we often seem to use the term \spadgloss{operation} and
+function interchangeably in Axiom.
+What is the distinction?
+
+First consider values and types associated with some variable \axiom{n} in
+your workspace.
+You can make the declaration \axiom{n : Integer}, then assign \axiom{n} an
+integer value.
+You then speak of the integer \axiom{n}.
+However, note that the integer is not the name \axiom{n} itself, but
+the value that you assign to \axiom{n}.
+
+Similarly, you can declare a variable \axiom{f} in your workspace to have
+type \spadsig{Integer}{Integer}, then assign \axiom{f}, through a definition
+or an assignment of an anonymous function.
+You then speak of the function \axiom{f}.
+However, the function is not \axiom{f}, but the value that you
+assign to \axiom{f}.
+
+A function is a value, in fact, some machine code for doing something.
+Doing what?
+Well, performing some \spadgloss{operation}.
+Formally, an operation consists of the constituent parts of \axiom{f} in your
+workspace, excluding the value; thus an operation has a name and a type.
+An operation is what domains and packages export.
+Thus \axiomType{Ring} exports one operation \axiomOp{+}.
+Every ring also exports this operation.
+Also, the author of every ring in the system is obliged under contract
+(see \downlink{``\ugPackagesAbstractTitle''}{ugPackagesAbstractPage} 
+in Section \ugPackagesAbstractNumber\ignore{ugPackagesAbstract})
+to provide an implementation for this operation.
+
+This chapter is all about functions---how you create them interactively and
+how you apply them to meet your needs.
+In \downlink{``\ugPackagesTitle''}{ugPackagesPage} in 
+Chapter \ugPackagesNumber\ignore{ugPackages} you will 
+learn how to create them for the
+Axiom library.
+Then in \downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
+in Chapter \ugCategoriesNumber\ignore{ugCategories}, you will 
+learn about categories and
+exported operations.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserDelayTitle}{Delayed Assignments vs. Functions with No Arguments}
+\newcommand{\ugUserDelayNumber}{6.8.}
+
+@
+\section{Delayed Assignments vs. Functions with No Arguments}
+\label{ugUserDelayPage}
+\begin{itemize}
+\item ugLangAssignPage \ref{ugLangAssignPage} on
+page~\pageref{ugLangAssignPage}
+\end{itemize}
+\index{pages!ugUserDelayPage!ug06.ht}
+\index{ug06.ht!pages!ugUserDelayPage}
+\index{ugUserDelayPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserDelayPage}
+{6.8. Delayed Assignments vs. Functions with No Arguments}
+\beginscroll
+
+In \downlink{``\ugLangAssignTitle''}{ugLangAssignPage} in Section 
+\ugLangAssignNumber\ignore{ugLangAssign} we discussed the difference 
+between immediate and
+delayed assignments.
+In this section we show the difference between delayed
+assignments and functions of no arguments.
+
+\labelSpace{2pc}
+\xtc{
+A function of no arguments is sometimes called a {\it nullary function.}
+}{
+\spadpaste{sin24() == sin(24.0) \bound{sin24}}
+}
+\xtc{
+You must use the parentheses (\axiomSyntax{()}) to evaluate it.
+Like a delayed assignment, the right-hand-side of a function evaluation
+is not evaluated until the left-hand-side is used.
+}{
+\spadpaste{sin24() \free{sin24}}
+}
+\xtc{
+If you omit the parentheses, you just get the function definition.
+%(Note how the explicit floating point number in the definition
+%has been translated into a function call involving a mantissa,
+%exponent and radix.)
+}{
+\spadpaste{sin24 \free{sin24}}
+}
+\xtc{
+You do not use the parentheses \axiomSyntax{()} in a delayed assignment\ldots
+}{
+\spadpaste{cos24 == cos(24.0) \bound{cos24}}
+}
+\xtc{
+nor in the evaluation.
+}{
+\spadpaste{cos24 \free{cos24}}
+}
+The only syntactic difference between delayed assignments
+and nullary functions is that you use \axiomSyntax{()} in the latter case.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserUseTitle}{How Axiom Determines What Function to Use}
+\newcommand{\ugUserUseNumber}{6.9.}
+
+@
+\section{How Axiom Determines What Function to Use}
+\label{ugUserUsePage}
+\begin{itemize}
+\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
+page~\pageref{ugTypesPkgCallPage}
+\item ugTypesResolvePage \ref{ugTypesResolvePage} on
+page~\pageref{ugTypesResolvePage}
+\end{itemize}
+\index{pages!ugUserUsePage!ug06.ht}
+\index{ug06.ht!pages!ugUserUsePage}
+\index{ugUserUsePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserUsePage}{6.9. How Axiom Determines What Function to Use}
+\beginscroll
+
+What happens if you define a function that has the same name as a library
+function?
+Well, if your function has the same name and number of arguments (we
+sometimes say \spadgloss{arity}) as another function
+in the library, then your function covers up the library function.
+If you want then to call the library function, you will have to package-call
+it.
+Axiom can use both the functions you write and those that come
+from the library.
+Let's do a simple example to illustrate this.
+\xtc{
+Suppose you (wrongly!) define \userfun{sin} in this way.
+}{
+\spadpaste{sin x == 1.0 \bound{sin}}
+}
+\xtc{
+The value \axiom{1.0} is returned for any argument.
+}{
+\spadpaste{sin 4.3 \free{sin}}
+}
+\xtc{
+If you want the library operation, we have to package-call it
+(see \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
+in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}
+for more information).
+}{
+\spadpaste{sin(4.3)\$Float}
+}
+\xtc{
+}{
+\spadpaste{sin(34.6)\$Float}
+}
+\xtc{
+Even worse, say we accidentally used the same name as a library
+function in the function.
+}{
+\spadpaste{sin x == sin x \bound{sin1}}
+}
+\xtc{
+Then Axiom definitely does not understand us.
+}{
+\spadpaste{sin 4.3 \free{sin1}}
+}
+\xtc{
+Again, we could package-call the inside function.
+}{
+\spadpaste{sin x == sin(x)\$Float \bound{sin2}}
+}
+\xtc{
+}{
+\spadpaste{sin 4.3 \free{sin2}}
+}
+Of course, you are unlikely to make such obvious errors.
+It is more probable that you would write a function and in the body use a
+function that you think is a library function.
+If you had also written a function by that same name, the library function
+would be invisible.
+
+How does Axiom determine what library function to call?
+It very much depends on the particular example, but the simple case of
+creating the polynomial
+\axiom{x + 2/3} will give you an idea.
+\indent{4}
+\beginitems
+\item[1. ] The \axiom{x} is analyzed and its default type is
+\axiomType{Variable(x)}.
+\item[2. ] The \axiom{2} is analyzed and its default type is
+\axiomType{PositiveInteger}.
+\item[3. ] The \axiom{3} is analyzed and its default type is
+\axiomType{PositiveInteger}.
+\item[4. ] Because the arguments to \axiomOp{/} are integers, Axiom
+gives the expression \axiom{2/3} a default target type of
+\axiomType{Fraction(Integer)}.
+\item[5. ] Axiom looks in \axiomType{PositiveInteger} for \axiomOp{/}.
+It is not found.
+\item[6. ] Axiom looks in \axiomType{Fraction(Integer)} for \axiomOp{/}.
+It is found for arguments of type \axiomType{Integer}.
+\item[7. ] The \axiom{2} and \axiom{3} are converted to objects of type
+\axiomType{Integer} (this is trivial) and \axiomOp{/} is applied,
+creating an object of type \axiomType{Fraction(Integer)}.
+\item[8. ] No \axiomOp{+} for arguments of types \axiomType{Variable(x)} and
+\axiomType{Fraction(Integer)} are found in either domain.
+\item[9. ] Axiom resolves
+(see \downlink{``\ugTypesResolveTitle''}{ugTypesResolvePage} 
+in Section \ugTypesResolveNumber\ignore{ugTypesResolve})
+the types and gets \axiomType{Polynomial (Fraction (Integer))}.
+\item[10. ] The \axiom{x} and the \axiom{2/3} are converted to objects of this
+type and \axiomOp{+} is applied, yielding the answer, an object of type
+\axiomType{Polynomial (Fraction (Integer))}.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserCompIntTitle}{Compiling vs. Interpreting}
+\newcommand{\ugUserCompIntNumber}{6.10.}
+
+@
+\section{Compiling vs. Interpreting}
+\label{ugUserCompIntPage}
+\begin{itemize}
+\item ugTypesSubdomainsPage \ref{ugTypesSubdomainsPage} on
+page~\pageref{ugTypesSubdomainsPage}
+\end{itemize}
+\index{pages!ugUserCompIntPage!ug06.ht}
+\index{ug06.ht!pages!ugUserCompIntPage}
+\index{ugUserCompIntPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserCompIntPage}{6.10. Compiling vs. Interpreting}
+\beginscroll
+
+When possible, Axiom completely determines the type of every object in
+a function, then translates the function definition to \Lisp{} or
+to machine code (see next section).
+This translation,
+called \spadglossSee{compilation}{compiler}, happens the first time you call
+the function and results in a computational delay.
+Subsequent function calls with the same argument types use the compiled
+version of the code without delay.
+
+If Axiom cannot determine the type of everything, the
+function may still be executed
+but
+in \spadglossSee{interpret-code mode}{interpreter} :
+each statement in the function is analyzed and executed as the control
+flow indicates.
+This process is slower than executing a compiled function, but it
+allows the execution of code that may involve objects whose types
+change.
+
+\beginImportant
+If Axiom decides that it cannot compile the code, it
+issues a message stating the problem and then the following
+message:
+%
+\centerline{{{\bf We will attempt to step through and interpret the code.}}}
+%
+This is not a time to panic.
+Rather, it just means that what you gave to Axiom
+is somehow ambiguous: either it is not specific enough to be analyzed
+completely, or it is beyond Axiom's present interactive
+compilation abilities.
+\endImportant
+
+\xtc{
+This function runs in interpret-code mode, but it does not compile.
+}{
+\begin{spadsrc}[\bound{varPolys}]
+varPolys(vars) ==
+  for var in vars repeat
+    output(1 :: UnivariatePolynomial(var,Integer))
+\end{spadsrc}
+}
+\xtc{
+For \axiom{vars} equal to \axiom{['x, 'y, 'z]}, this function displays
+\axiom{1} three times.
+}{
+\spadpaste{varPolys ['x,'y,'z] \free{varPolys}}
+}
+\xtc{
+The type of the argument to \axiomFun{output} changes in each iteration,
+so Axiom cannot compile the function.
+In this case, even the inner loop by itself would have a problem:
+}{
+\begin{spadsrc}
+for var in ['x,'y,'z] repeat
+  output(1 :: UnivariatePolynomial(var,Integer))
+\end{spadsrc}
+}
+
+Sometimes you can help a function to compile by using an extra conversion
+or by using \axiom{pretend}.
+\spadkey{pretend}
+See \downlink{``\ugTypesSubdomainsTitle''}{ugTypesSubdomainsPage} 
+in Section \ugTypesSubdomainsNumber\ignore{ugTypesSubdomains} for details.
+
+When a function is compilable, you have the choice of whether it is
+compiled to \Lisp{} and then interpreted by the \Lisp{}
+interpreter or then further compiled from \Lisp{} to machine code.
+The option is controlled via \spadcmd{)set functions compile}.
+Issue \spadcmd{)set functions compile on} to compile all the way to
+machine code.
+With
+the default setting \spadcmd{)set functions compile off},
+Axiom has its \Lisp{} code interpreted
+because the overhead of further compilation is larger than the run-time
+of most of the functions our users have defined.
+You may find that selectively turning this option on and off will
+give you the best performance in your particular application.
+For example, if you are writing functions for graphics applications
+where hundreds of points are being computed, it is almost certainly true
+that you will get the best performance by issuing
+\spadcmd{)set functions compile on}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserPieceTitle}{Piece-Wise Function Definitions}
+\newcommand{\ugUserPieceNumber}{6.11.}
+
+@
+\section{Piece-Wise Function Definitions}
+\label{ugUserPiecePage}
+\begin{itemize}
+\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
+page~\pageref{ugUserPieceBasicPage}
+\item ugUserPiecePickingPage \ref{ugUserPiecePickingPage} on
+page~\pageref{ugUserPiecePickingPage}
+\item ugUserPiecePredPage \ref{ugUserPiecePredPage} on
+page~\pageref{ugUserPiecePredPage}
+\end{itemize}
+\index{pages!ugUserPiecePage!ug06.ht}
+\index{ug06.ht!pages!ugUserPiecePage}
+\index{ugUserPiecePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPiecePage}{6.11. Piece-Wise Function Definitions}
+\beginscroll
+
+To move beyond functions defined in one line, we introduce in this section
+functions that are defined piece-by-piece.
+That is, we say ``use this definition when the argument is such-and-such and
+use this other definition when the argument is that-and-that.''
+
+\beginmenu
+    \menudownlink{{6.11.1. A Basic Example}}{ugUserPieceBasicPage}
+    \menudownlink{{6.11.2. Picking Up the Pieces}}{ugUserPiecePickingPage}
+    \menudownlink{{6.11.3. Predicates}}{ugUserPiecePredPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserPieceBasicTitle}{A Basic Example}
+\newcommand{\ugUserPieceBasicNumber}{6.11.1.}
+
+@
+\section{A Basic Example}
+\label{ugUserPieceBasicPage}
+\index{pages!ugUserPieceBasicPage!ug06.ht}
+\index{ug06.ht!pages!ugUserPieceBasicPage}
+\index{ugUserPieceBasicPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPieceBasicPage}{6.11.1. A Basic Example}
+\beginscroll
+
+There are many other ways to define a factorial function for nonnegative
+integers.
+You might
+say
+factorial of \axiom{0} is \axiom{1,} otherwise factorial of \axiom{n} is
+\axiom{n} times factorial of \axiom{n-1}.
+Here is one way to do this in Axiom.
+%
+\xtc{
+Here is the value for \axiom{n = 0}.
+}{
+\spadpaste{fact(0) == 1 \bound{fact0}}
+}
+\xtc{
+Here is the value for \axiom{n > 0}.
+The vertical bar \axiomSyntax{|} means
+``such that''.
+}{
+\spadpaste{fact(n | n > 0) == n * fact(n - 1) \free{fact0}\bound{factn}}
+}
+%>> am moving this back
+%The vertical bar \axiomSyntax{|} is read as ``such that'' and so
+%\index{such that}
+%the second line means that that part of the definition for \userfun{fact}
+%is for any \axiom{n} such that \axiom{n} is greater than 0.
+%In fact, the first line is really just a shorthand expression for
+%\axiom{fact(n | n = 0) == 1}.
+%>> prefer scratching next 4 lines
+%We are implicitly using a \spadgloss{predicate} with a \axiomSyntax{|} in
+%this line (see \downlink{``\ugUserPiecePredTitle''}{ugUserPiecePredPage} 
+%in Section \ugUserPiecePredNumber\ignore{ugUserPiecePred} for more 
+%on predicates).
+%So this piece of the function is applicable to all (the not so many!)
+%values of \axiom{n} that are equal to zero.
+\xtc{
+What is the value for \axiom{n = 3}?
+}{
+\spadpaste{fact(3) \free{factn}}
+}
+\xtc{
+What is the value for \axiom{n = -3}?
+}{
+\spadpaste{fact(-3) \free{factn}}
+}
+\xtc{
+Now for a second definition.
+Here is the value for \axiom{n = 0}.
+}{
+\spadpaste{facto(0) == 1 \bound{facto0}}
+}
+\xtc{
+Give an error message if \axiom{n < 0}.
+}{
+\spadpaste{facto(n | n < 0) == error "arguments to facto must be non-negative" \free{facto0}\bound{factop}}
+}
+\xtc{
+Here is the value otherwise.
+}{
+\spadpaste{facto(n) == n * facto(n - 1) \free{factop}\bound{facton}}
+}
+\xtc{
+What is the value for \axiom{n = 7}?
+}{
+\spadpaste{facto(3) \free{facton}}
+}
+\xtc{
+What is the value for \axiom{n = -7}?
+}{
+\spadpaste{facto(-7) \free{facton}}
+}
+\xtc{
+To see the current piece-wise definition of a function,
+use \spadsys{)display value}.
+}{
+\spadpaste{)display value facto \free{facton}}
+}
+
+In general a {\it piece-wise definition} of a function consists of two or
+more parts.
+Each part gives a ``piece'' of the entire definition.
+Axiom collects the pieces of a function as you enter them.
+When you ask for a value of the function, it then ``glues''
+the pieces together to form a function.
+
+The two piece-wise definitions for the factorial function
+are examples of recursive functions, that is, functions that
+are defined in terms of themselves.
+Here is an interesting doubly-recursive function.
+This function returns the value \axiom{11} for all positive integer arguments.
+\xtc{
+Here is the first of two pieces.
+}{
+\spadpaste{eleven(n | n < 1) == n + 11\bound{ff0}}
+}
+\xtc{
+And the general case.
+}{
+\spadpaste{eleven(m) == eleven(eleven(m - 12))\bound{ff1}\free{ff0}}
+}
+\xtc{
+Compute \axiom{elevens}, the infinite stream
+of values of \axiom{eleven}.
+}{
+\spadpaste{elevens := [eleven(i) for i in 0..]\bound{ff2}\free{ff1}}
+}
+\xtc{
+What is the value at \axiom{n = 200}?
+}{
+\spadpaste{elevens 200\free{ff2}}
+}
+\xtc{
+What is the Axiom's definition of \axiom{eleven}?
+}{
+\spadpaste{)display value eleven\free{ff2}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserPiecePickingTitle}{Picking Up the Pieces}
+\newcommand{\ugUserPiecePickingNumber}{6.11.2.}
+
+@
+\section{Picking Up the Pieces}
+\label{ugUserPiecePickingPage}
+\begin{itemize}
+\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
+page~\pageref{ugUserPieceBasicPage}
+\end{itemize}
+\index{pages!ugUserPiecePickingPage!ug06.ht}
+\index{ug06.ht!pages!ugUserPiecePickingPage}
+\index{ugUserPiecePickingPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPiecePickingPage}{6.11.2. Picking Up the Pieces}
+\beginscroll
+
+Here are the details about how Axiom creates a function from its
+pieces.
+Axiom converts the \eth{\axiom{i}} piece of a function definition into a
+conditional expression of the form: \axiom{if} \pred{i} \axiom{then}
+\expr{i}.
+If any new piece has a \pred{i} that is identical\footnote{after all
+variables are uniformly named} to an earlier \pred{j}, the earlier piece is
+removed.
+Otherwise, the new piece is always added at the end.
+
+\beginImportant
+If there are \axiom{n} pieces to a function definition for \axiom{f},
+the function defined \axiom{f} is: \newline
+%
+\texht{\hspace*{3pc}}{\tab{6}}
+{\tt if} \pred{1} {\tt then} \expr{1} {\tt else}\newline
+\texht{\hspace*{6pc}}{\tab{12}}. . . \newline
+\texht{\hspace*{3pc}}{\tab{6}}
+{\tt if} \pred{n} {\tt then} \expr{n} {\tt else}\newline
+\texht{\hspace*{3pc}}{\tab{6}}
+{\tt  error "You did not define f for argument <arg>."}
+%
+\endImportant
+
+You can give definitions of any number of mutually recursive function
+definitions, piece-wise or otherwise.
+No computation is done until you ask for a value.
+When you do ask for a value, all the relevant definitions are gathered,
+analyzed, and translated into separate functions and compiled.
+
+\xtc{
+Let's recall the definition of \userfun{eleven} from
+\texht{the previous section}{
+\downlink{``\ugUserPieceBasicTitle''}{ugUserPieceBasicPage} 
+in Section \ugUserPieceBasicNumber\ignore{ugUserPieceBasic}}.
+}{
+\spadpaste{eleven(n | n < 1) == n + 11\bound{ff0}}
+}
+\xtc{
+}{
+\spadpaste{eleven(m) == eleven(eleven(m - 12))\bound{ff1}\free{ff0}}
+}
+
+A similar doubly-recursive function below produces \axiom{-11} for all
+negative positive integers.
+If you haven't worked out why or how \userfun{eleven} works,
+the structure of this definition gives a clue.
+\xtc{
+This definition we write as a block.
+}{
+\begin{spadsrc}[\bound{rf1}]
+minusEleven(n) ==
+  n >= 0 => n - 11
+  minusEleven (5 + minusEleven(n + 7))
+\end{spadsrc}
+}
+\xtc{
+Define \axiom{s(n)} to be the
+sum of plus and minus ``eleven'' functions divided by \axiom{n}.
+Since \axiom{11 - 11 = 0}, we define \axiom{s(0)} to be \axiom{1}.
+}{
+\spadpaste{s(0) == 1\bound{rf2}}
+}
+\xtc{
+And the general term.
+}{
+\spadpaste{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3}\free{rf2 rf1 ff1}}
+}
+\xtc{
+What are the first ten values of \axiom{s}?
+}{
+\spadpaste{[s(n) for n in 0..]\free{rf3}}
+}
+%% interpreter puts the rule at the end - should fix
+Axiom can create infinite streams in the positive direction (for
+example, for index values \axiom{0,1, \ldots}) or negative direction (for
+example, for index values \axiom{0,-1,-2, \ldots}).
+Here we would like a stream of values of \axiom{s(n)} that is infinite in
+both directions.
+The function \axiom{t(n)} below returns the \eth{\axiom{n}} term of the infinite
+stream \axiom{[s(0), s(1), s(-1), s(2), s(-2), \ldots].}
+Its definition has three pieces.
+\xtc{
+Define the initial term.
+}{
+\spadpaste{t(1) == s(0)\bound{t1}\free{rf4}}
+}
+\xtc{
+The even numbered terms are the \axiom{s(i)} for positive \axiom{i}.
+We use \axiomOp{quo} rather than \axiomOp{/}
+since we want the result to be an integer.
+}{
+\spadpaste{t(n | even?(n)) == s(n quo 2)\free{t1}\bound{t2}}
+}
+\xtc{
+Finally, the odd numbered terms are the
+\axiom{s(i)} for negative \axiom{i}.
+In piece-wise definitions, you can use different variables
+to define different pieces. Axiom will not get confused.
+}{
+\spadpaste{t(p) == s(- p quo 2)\free{t2}\bound{t3}}
+}
+\xtc{
+Look at the definition of \axiom{t}.
+In the first piece, the variable \axiom{n}
+was used; in the second piece, \axiom{p}.
+Axiom always uses
+your last variable to display your definitions
+back to you.
+}{
+\spadpaste{)display value t\free{t2}}
+}
+\xtc{
+Create a series of values of \axiom{s} applied to
+alternating positive and negative arguments.
+}{
+\spadpaste{[t(i) for i in 1..]\free{t3}\bound{t4}}
+}
+\xtc{
+Evidently \axiom{t(n) = 1} for all \axiom{i.}
+Check it at \axiom{n= 100}.
+}{
+\spadpaste{t(100)\free{t4}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserPiecePredTitle}{Predicates}
+\newcommand{\ugUserPiecePredNumber}{6.11.3.}
+
+@
+\section{Predicates}
+\label{ugUserPiecePredPage}
+\begin{itemize}
+\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
+page~\pageref{ugUserPieceBasicPage}
+ugLangItsPage
+\end{itemize}
+\index{pages!ugUserPiecePredPage!ug06.ht}
+\index{ug06.ht!pages!ugUserPiecePredPage}
+\index{ugUserPiecePredPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPiecePredPage}{6.11.3. Predicates}
+\beginscroll
+
+We have already seen some examples of
+predicates
+(\downlink{``\ugUserPieceBasicTitle''}{ugUserPieceBasicPage} 
+in Section \ugUserPieceBasicNumber\ignore{ugUserPieceBasic}).
+Predicates are \axiomType{Boolean}-valued expressions and Axiom uses them
+for filtering collections
+(see \downlink{``\ugLangItsTitle''}{ugLangItsPage} 
+in Section \ugLangItsNumber\ignore{ugLangIts})
+and for placing
+constraints on function arguments.
+In this section we discuss their latter usage.
+
+\xtc{
+The simplest use of a predicate is one you don't see at all.
+}{
+\spadpaste{opposite 'right == 'left}
+}
+\xtc{
+Here is a longer way to give the ``opposite definition.''
+}{
+\spadpaste{opposite (x | x = 'left) == 'right}
+}
+\xtc{
+Try it out.
+}{
+\spadpaste{for x in ['right,'left,'inbetween] repeat output opposite x}
+}
+
+Explicit predicates tell Axiom that the given function definition
+piece is to be applied if the predicate evaluates to {\tt true} for the
+arguments to the function.
+You can use such ``constant'' arguments for integers,
+strings, and quoted symbols.
+The \axiomType{Boolean} values \axiom{true} and \axiom{false} can also be used
+if qualified with ``\spad{@}'' or ``\spad{\$}'' and \axiomType{Boolean}.
+The following are all valid function definition fragments using
+constant arguments.
+\begin{verbatim}
+a(1) == ...
+b("unramified") == ...
+c('untested) == ...
+d(true@Boolean) == ...
+\end{verbatim}
+
+If a function has more than one argument,
+each argument can have its own predicate.
+However, if a predicate involves two or more arguments, it must be given
+{\it after} all the arguments mentioned in the predicate have been given.
+You are always safe to give
+a single predicate at the end of the argument list.
+\xtc{
+A function involving predicates on two arguments.
+}{
+\spadpaste{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
+}
+\xtc{
+This is incorrect as it gives a predicate on \axiom{y}
+before the argument \axiom{y} is given.
+}{
+\spadpaste{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
+}
+\xtc{
+It is always correct to write the predicate at the end.
+}{
+\spadpaste{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true \bound{ifq1a}}
+}
+\xtc{
+Here is the rest of the definition.
+}{
+\spadpaste{inFirstHalfQuadrant(x,y) == false \bound{ifq1b}}
+}
+\xtc{
+Try it out.
+}{
+\spadpaste{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b}}
+}
+
+{\bf Remark:} Very old versions of Axiom allowed predicates
+to be given after a {\tt when} keyword as in
+{\tt inFirstHalfQuadrant(x ,y) == true when x >0 and y < x}.
+This is no longer supported, is WRONG, and will cause a syntax
+error or strange behavior.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserCacheTitle}{Caching Previously Computed Results}
+\newcommand{\ugUserCacheNumber}{6.12.}
+
+@
+\section{Caching Previously Computed Results}
+\label{ugUserCachePage}
+\begin{itemize}
+\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
+page~\pageref{ugUserFreeLocalPage}
+\end{itemize}
+\index{pages!ugUserCachePage!ug06.ht}
+\index{ug06.ht!pages!ugUserCachePage}
+\index{ugUserCachePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserCachePage}{6.12. Caching Previously Computed Results}
+\beginscroll
+
+By default, Axiom does not save the values of any function.
+You can cause it to save values and not to recompute unnecessarily
+by using \spadcmd{)set functions cache}.
+This should be used before the functions are defined or, at least, before
+they are executed.
+The word following ``cache'' should be \axiom{0} to turn off
+caching, a positive integer \axiom{n} to save the last \axiom{n}
+computed values or ``all'' to save all computed values.
+If you then give a list of names of functions, the caching
+only affects those functions.
+Use no list of names or ``all'' when you want to define the default
+behavior for functions not specifically mentioned in other
+\spadcmd{)set functions cache} statements.
+If you give no list of names, all functions will have the caching behavior.
+If you explicitly turn on caching for one or more names, you must
+explicitly turn off caching for those names when you want to stop
+saving their values.
+
+\xtc{
+This causes the functions \userfun{f} and \userfun{g} to have
+the last three computed values saved.
+}{
+\spadpaste{)set functions cache 3 f g \bound{cache}}
+}
+\xtc{
+This is a sample definition for \userfun{f}.
+}{
+\spadpaste{f x == factorial(2**x) \bound{fdef}\free{cache}}
+}
+\xtc{
+A message is displayed stating what \userfun{f} will cache.
+}{
+\spadpaste{f(4) \free{}\free{cache}}
+}
+\xtc{
+This causes all other functions to have all computed values saved by
+default.
+}{
+\spadpaste{)set functions cache all}
+}
+\xtc{
+This causes all functions that have not been specifically cached in some way
+to have no computed values saved.
+}{
+\spadpaste{)set functions cache 0}
+}
+\xtc{
+We also make \userfun{f} and \userfun{g} uncached.
+}{
+\spadpaste{)set functions cache 0 f g}
+}
+
+\beginImportant
+Be careful about caching functions that have
+\spadglossSee{side effects}{side effect}.
+Such a function might destructively modify the elements of an array or
+issue a \axiomFun{draw} command, for example.
+A function that you expect to execute every time it is called should
+not be cached.
+Also, it is highly unlikely that a function with no arguments should
+be cached.
+\endImportant
+
+You should also be careful about caching functions that depend on
+free variables.
+See \downlink{``\ugUserFreeLocalTitle''}{ugUserFreeLocalPage} in 
+Section \ugUserFreeLocalNumber\ignore{ugUserFreeLocal}
+for an example.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserRecurTitle}{Recurrence Relations}
+\newcommand{\ugUserRecurNumber}{6.13.}
+
+@
+\section{Recurrence Relations}
+\label{ugUserRecurPage}
+\begin{itemize}
+\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
+page~\pageref{ugUserFreeLocalPage}
+\item ugUserCachePage \ref{ugUserCachePage} on
+page~\pageref{ugUserCachePage}
+\end{itemize}
+\index{pages!ugUserRecurPage!ug06.ht}
+\index{ug06.ht!pages!ugUserRecurPage}
+\index{ugUserRecurPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserRecurPage}{6.13. Recurrence Relations}
+\beginscroll
+
+One of the most useful classes of function are those defined via a
+``recurrence relation.''
+A {\it recurrence relation} makes each successive
+value depend on some or all of the previous values.
+A simple example is the ordinary ``factorial'' function:
+\begin{verbatim}
+fact(0) == 1
+fact(n | n > 0) == n * fact(n-1)
+\end{verbatim}
+
+The value of
+\axiom{fact(10)} depends on the value of \axiom{fact(9)}, \axiom{fact(9)}
+on \axiom{fact(8)}, and so on.
+Because it depends on only one previous value, it is usually called a
+{\it first order recurrence relation.}
+You can easily imagine a function based on two, three or more previous
+values.
+The Fibonacci numbers are probably the most famous function defined by a
+second order recurrence relation.
+\xtc{
+The library function \axiomFun{fibonacci} computes Fibonacci numbers.
+It is obviously optimized for speed.
+}{
+\spadpaste{[fibonacci(i) for i in 0..]}
+}
+\xtc{
+Define the
+Fibonacci numbers ourselves using a piece-wise definition.
+}{
+\spadpaste{fib(1) == 1 \bound{fib0}}
+}
+\xtc{
+}{
+\spadpaste{fib(2) == 1 \bound{fib1}\free{fib0}}
+}
+\xtc{
+}{
+\spadpaste{fib(n) == fib(n-1) + fib(n-2) \bound{fibn}\free{fib1}}
+}
+
+As defined, this recurrence relation is obviously doubly-recursive.
+To compute \axiom{fib(10)}, we need to compute \axiom{fib(9)} and
+\axiom{fib(8)}.
+And to  \axiom{fib(9)}, we need to compute \axiom{fib(8)} and
+\axiom{fib(7)}.
+And so on.
+It seems that to compute \axiom{fib(10)} we need to compute
+\axiom{fib(9)} once, \axiom{fib(8)} twice, \axiom{fib(7)} three times.
+Look familiar?
+The number of function calls needed to compute {\it any} second order
+recurrence relation in the obvious way is exactly \axiom{fib(n)}.
+These numbers grow!
+For example, if Axiom actually did this, then \axiom{fib(500)}
+requires more than \texht{$10^{104}$}{\axiom{10**104}} function calls.
+And, given all this, our definition of \userfun{fib} obviously could not be
+used to calculate the five-hundredth Fibonacci number.
+\xtc{
+Let's try it anyway.
+}{
+\spadpaste{fib(500) \free{fibn}}
+}
+
+Since this takes a short time to compute, it obviously didn't do
+as many as \texht{$10^{104}$}{\axiom{10**104}} operations!
+By default, Axiom transforms any recurrence relation it recognizes
+into an iteration.
+Iterations are efficient.
+To compute the value of the \eth{\axiom{n}}
+term of a recurrence relation using an iteration requires only
+\axiom{n} function calls.\footnote{If
+you compare the speed of our \userfun{fib} function
+to the library function, our version is still slower.
+This is because the library
+\axiomFunFrom{fibonacci}{IntegerNumberTheoryFunctions}
+uses a ``powering algorithm'' with a computing time
+proportional to \texht{$\log^3(n)$}{\axiom{log(n)**3}} to compute
+\axiom{fibonacci(n).}}
+
+To turn off this special recurrence relation compilation, issue
+\begin{verbatim}
+)set functions recurrence off
+\end{verbatim}
+To turn it back on, substitute ``{\tt on}'' for ``{\tt off}''.
+
+The transformations that Axiom uses for \userfun{fib} caches the
+last two values.\footnote{For a more general \eth{\axiom{k}} order recurrence
+relation, Axiom caches the last \axiom{k} values.}
+If, after computing a value for \userfun{fib}, you ask
+for some larger value, Axiom picks up the cached values
+and continues computing from there.
+See \downlink{``\ugUserFreeLocalTitle''}{ugUserFreeLocalPage} 
+in Section \ugUserFreeLocalNumber\ignore{ugUserFreeLocal}
+for an example of a function definition that has this same behavior.
+Also see \downlink{``\ugUserCacheTitle''}{ugUserCachePage} 
+in Section \ugUserCacheNumber\ignore{ugUserCache}
+for a more general discussion of how you can cache function values.
+
+Recurrence relations can be used for defining recurrence relations
+involving polynomials, rational functions, or anything you like.
+Here we compute the infinite stream of Legendre polynomials.
+\xtc{
+The Legendre polynomial of degree \axiom{0.}
+}{
+\spadpaste{p(0) == 1\bound{p0}}
+}
+\xtc{
+The Legendre polynomial of degree \axiom{1.}
+}{
+\spadpaste{p(1) == x\bound{p1}}
+}
+
+\xtc{
+The Legendre polynomial of degree \axiom{n}.
+}{
+\spadpaste{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn}\free{p1}}
+}
+\xtc{
+Compute the Legendre polynomial of degree \axiom{6.}
+}{
+\spadpaste{p(6)\free{pn}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserMakeTitle}{Making Functions from Objects}
+\newcommand{\ugUserMakeNumber}{6.14.}
+
+@
+\section{Making Functions from Objects}
+\label{ugUserMakePage}
+\begin{itemize}
+\item MakeFunctionXmpPage \ref{MakeFunctionXmpPage} on
+page~\pageref{MakeFunctionXmpPage}
+\end{itemize}
+\index{pages!ugUserMakePage!ug06.ht}
+\index{ug06.ht!pages!ugUserMakePage}
+\index{ugUserMakePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserMakePage}{6.14. Making Functions from Objects}
+\beginscroll
+
+There are many times when you compute a complicated expression
+and then wish to use that expression as the body of a function.
+Axiom provides an operation called \axiomFun{function} to do
+this.
+It creates a function object and places it into the workspace.
+There are several versions, depending on how many arguments the function
+has.
+The first argument to \axiomFun{function} is always the expression to be
+converted into the function body, and the second is always the name to be
+used for the function.
+For more information, see \downlink{`MakeFunction'}{MakeFunctionXmpPage}
+\ignore{MakeFunction}.
+
+\xtc{
+Start with a simple example of a polynomial in three variables.
+}{
+\spadpaste{p := -x + y**2 - z**3 \bound{p}}
+}
+\xtc{
+To make this into a function of no arguments that
+simply returns the polynomial, use the two argument form of
+\axiomFun{function}.
+}{
+\spadpaste{function(p,'f0) \free{p}\bound{f0}}
+}
+\xtc{
+To avoid possible conflicts (see below), it is a good idea to
+quote always this second argument.
+}{
+\spadpaste{f0 \free{f0}}
+}
+\xtc{
+This is what you get when you evaluate the function.
+}{
+\spadpaste{f0() \free{f0}}
+}
+\xtc{
+To make a function in \axiom{x}, use a version of
+\axiomFun{function} that takes three arguments.
+The last argument is the name of the variable to use as the parameter.
+Typically, this variable occurs in the expression and, like the function
+name, you should quote it to avoid possible confusion.
+}{
+\spadpaste{function(p,'f1,'x) \free{p}\bound{f1}}
+}
+\xtc{
+This is what the new function looks like.
+}{
+\spadpaste{f1 \free{f1}}
+}
+\xtc{
+This is the value of \userfun{f1} at \axiom{x = 3}.
+Notice that the return type of the function is
+\axiomType{Polynomial (Integer)}, the same as \axiom{p}.
+}{
+\spadpaste{f1(3) \free{f1}}
+}
+\xtc{
+To use \axiom{x} and \axiom{y} as parameters, use the
+four argument form of \axiomFun{function}.
+}{
+\spadpaste{function(p,'f2,'x,'y) \free{p}\bound{f2}}
+}
+\xtc{
+}{
+\spadpaste{f2 \free{f2}}
+}
+\xtc{
+Evaluate \axiom{f2} at \axiom{x = 3} and \axiom{y = 0}.
+The return type of \userfun{f2} is still
+\axiomType{Polynomial(Integer)} because the variable \axiom{z}
+is still present and not one of the parameters.
+}{
+\spadpaste{f2(3,0) \free{f2}}
+}
+\xtc{
+Finally, use all three variables as parameters.
+There is no five argument form of \axiomFun{function}, so use the one with
+three arguments, the third argument being a list of the parameters.
+}{
+\spadpaste{function(p,'f3,['x,'y,'z]) \free{p}\bound{f3}}
+}
+\xtc{
+Evaluate this using the same values for \axiom{x} and \axiom{y}
+as above, but let \axiom{z} be \axiom{-6}.
+The result type of \userfun{f3} is \axiomType{Integer}.
+}{
+\spadpaste{f3 \free{f3}}
+}
+\xtc{
+}{
+\spadpaste{f3(3,0,-6) \free{f3}}
+}
+
+The four functions we have defined via \axiom{p} have been undeclared.
+To declare a function whose body is to be generated by
+\axiomFun{function}, 
+issue the declaration {\it before} the function is created.
+\xtc{
+}{
+\spadpaste{g: (Integer, Integer) -> Float \bound{g}}
+}
+\xtc{
+}{
+\spadpaste{D(sin(x-y)/cos(x+y),x) \bound{prev}}
+}
+\xtc{
+}{
+\spadpaste{function(\%,'g,'x,'y) \free{g}\free{prev}}
+}
+\xtc{
+}{
+\spadpaste{g \free{g}}
+}
+It is an error to use \axiom{g} without the quote in the
+penultimate expression since \axiom{g} had been declared but did not have
+a value.
+Similarly, since it is common to overuse variable names like \axiom{x},
+\axiom{y}, and so on,
+you avoid problems if you always quote the variable names
+for \axiomFun{function}.
+In general,
+if \axiom{x} has a value and you use \axiom{x} without a quote in a call to
+\axiomFun{function}, then
+Axiom does not know what you are trying to do.
+
+What kind of object is allowable as the first argument to \axiomFun{function}?
+Let's use the \Browse{} facility of \HyperName{} to find out.
+At the main \Browse{} menu, enter the string {\tt function} and then
+click on {\bf Operations.}
+The exposed operations called \axiomFun{function} all take an object
+whose type belongs to category \axiomType{ConvertibleTo InputForm}.
+What domains are those?
+Go back to the main \Browse{} menu, erase {\tt function},
+enter {\tt ConvertibleTo} in the
+input area, and click on {\bf categories} on the {\bf Constructors} line.
+At the bottom of the page, enter {\tt InputForm} in the input area
+following {\bf S =}.
+Click on {\bf Cross Reference} and then on {\bf Domains}.
+The list you see contains over forty domains that belong to the
+category \axiomType{ConvertibleTo InputForm}.
+Thus you can use \axiomFun{function} for \axiomType{Integer},
+\axiomType{Float},
+\axiomType{String},
+\axiomType{Complex},
+\axiomType{Expression}, and so on.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserBlocksTitle}{Functions Defined with Blocks}
+\newcommand{\ugUserBlocksNumber}{6.15.}
+
+@
+\section{Functions Defined with Blocks}
+\label{ugUserBlocksPage}
+\begin{itemize}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\end{itemize}
+\index{pages!ugUserBlocksPage!ug06.ht}
+\index{ug06.ht!pages!ugUserBlocksPage}
+\index{ugUserBlocksPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserBlocksPage}{6.15. Functions Defined with Blocks}
+\beginscroll
+
+You need not restrict yourself to functions that only fit on one line
+or are written in a piece-wise manner.
+The body of the function can be a block, as discussed in
+\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
+in Section \ugLangBlocksNumber\ignore{ugLangBlocks}.
+
+\labelSpace{1pc}
+\xtc{
+Here is a short function that swaps two elements of a list,
+array or vector.
+}{
+\begin{spadsrc}[\bound{swap}]
+swap(m,i,j) ==
+  temp := m.i
+  m.i := m.j
+  m.j := temp
+\end{spadsrc}
+}
+\xtc{
+The significance of \userfun{swap} is that it has a destructive
+effect on its first argument.
+}{
+\spadpaste{k := [1,2,3,4,5] \bound{k}}
+}
+\xtc{
+}{
+\spadpaste{swap(k,2,4) \free{l swap}\bound{swapk}}
+}
+\xtc{
+You see that the second and fourth elements are interchanged.
+}{
+\spadpaste{k \free{swapk}}
+}
+
+\xtc{
+Using this, we write a couple of different sort functions.
+First, a simple bubble sort.
+The operation \axiomOpFrom{\#}{List} returns the number of elements in
+an aggregate.
+}{
+\begin{spadsrc}[\bound{bubbleSort}]
+bubbleSort(m) ==
+  n := #m
+  for i in 1..(n-1) repeat
+    for j in n..(i+1) by -1 repeat
+      if m.j < m.(j-1) then swap(m,j,j-1)
+  m
+\end{spadsrc}
+}
+\xtc{
+Let this be the list we want to sort.
+}{
+\spadpaste{m := [8,4,-3,9] \bound{m}}
+}
+\xtc{
+This is the result of sorting.
+}{
+\spadpaste{bubbleSort(m) \free{m swap bubbleSort}\bound{sortm}}
+}
+\xtc{
+Moreover, \axiom{m} is destructively changed to be the sorted version.
+}{
+\spadpaste{m \free{sortm}}
+}
+
+\xtc{
+This function implements an insertion sort.
+The basic idea is to traverse the list and insert the \eth{\axiom{i}}
+element in its correct position among the \axiom{i-1} previous
+elements.
+Since we start at the beginning of the list, the list elements before the
+\eth{\axiom{i}} element have already been placed in ascending order.
+}{
+\begin{spadsrc}[\bound{insertionSort}]
+insertionSort(m) ==
+  for i in 2..#m repeat
+    j := i
+    while j > 1 and m.j < m.(j-1) repeat
+      swap(m,j,j-1)
+      j := j - 1
+  m
+\end{spadsrc}
+}
+\xtc{
+As with our bubble sort, this is a destructive function.
+}{
+\spadpaste{m := [8,4,-3,9] \bound{m1}}
+}
+\xtc{
+}{
+\spadpaste{insertionSort(m) \free{m1 swap insertionSort}\bound{sortm1}}
+}
+\xtc{
+}{
+\spadpaste{m \free{sortm1}}
+}
+
+Neither of the above functions is efficient for sorting large lists since
+they reference elements by asking for the \eth{\axiom{j}} element of the
+structure \axiom{m}.
+%For lists, compute \axiom{m.(j+1) = rest(m,j).first}, and thus, starting at
+%the first node of \axiom{m}, walk down to the \eth{\axiom{j}} node, then call
+%\axiomFun{first}.
+
+\xtc{
+Here is a more efficient bubble sort for lists.
+}{
+\begin{spadsrc}[\bound{bubbleSort2}]
+bubbleSort2(m: List Integer): List Integer ==
+  null m => m
+  l := m
+  while not null (r := l.rest) repeat
+     r := bubbleSort2 r
+     x := l.first
+     if x < r.first then
+       l.first := r.first
+       r.first := x
+     l.rest := r
+     l := l.rest
+  m
+\end{spadsrc}
+}
+\xtc{
+Try it out.
+}{
+\spadpaste{bubbleSort2 [3,7,2]\free{bubbleSort2}}
+}
+
+This definition is both recursive and iterative, and is tricky!
+Unless you are {\it really} curious about this definition,
+we suggest you skip immediately to the next section.
+
+Here are the key points in the definition.
+First notice that if you are sorting a list with less than two elements,
+there is nothing to do: just return the list.
+This definition returns immediately if there are zero elements, and skips
+the entire \axiom{while} loop if there is just one element.
+
+The second point to realize is that on each outer iteration, the bubble sort
+ensures that the minimum element is propagated leftmost.
+Each iteration of the \axiom{while} loop calls \userfun{bubbleSort2}
+recursively to sort all but the first element.
+When finished, the minimum element is either in the first or second position.
+The conditional expression ensures that it comes first.
+If it is in the second, then a swap occurs.
+In any case, the \axiomFun{rest} of the original list must be updated to hold
+the result of the recursive call.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserFreeLocalTitle}{Free and Local Variables}
+\newcommand{\ugUserFreeLocalNumber}{6.16.}
+
+@
+\section{Free and Local Variables}
+\label{ugUserFreeLocalPage}
+\begin{itemize}
+\item ugUserCachePage \ref{ugUserCachePage} on
+page~\pageref{ugUserCachePage}
+\item ugUserRecurPage \ref{ugUserRecurPage} on
+page~\pageref{ugUserRecurPage}
+\end{itemize}
+\index{pages!ugUserFreeLocalPage!ug06.ht}
+\index{ug06.ht!pages!ugUserFreeLocalPage}
+\index{ugUserFreeLocalPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserFreeLocalPage}{6.16. Free and Local Variables}
+\beginscroll
+
+When you want to refer to a variable that is not local to your
+function, use a ``\axiom{free}'' declaration.
+\spadkey{free}
+Variables declared to be \axiom{free}
+are assumed to be defined globally
+in the
+workspace.
+
+\labelSpace{1pc}
+\xtc{
+This is a global workspace variable.
+}{
+\spadpaste{counter := 0 \bound{counter}}
+}
+\xtc{
+This function refers to the global \axiom{counter}.
+}{
+\begin{spadsrc}[\free{counter}\bound{f}]
+f() ==
+  free counter
+  counter := counter + 1
+\end{spadsrc}
+}
+\xtc{
+The global \axiom{counter} is incremented by \axiom{1}.
+}{
+\spadpaste{f() \free{f}\bound{f1}}
+}
+\xtc{
+}{
+\spadpaste{counter \free{f1}}
+}
+
+Usually Axiom can tell that you mean to refer to a global
+variable and so \axiom{free} isn't always necessary.
+However, for clarity and the sake of self-documentation, we encourage
+you to use it.
+
+Declare a variable to be ``\axiom{local}'' when you do not want to refer to
+a global variable by the same name.
+
+\xtc{
+This function uses \axiom{counter} as a local variable.
+}{
+\begin{spadsrc}[\bound{g}]
+g() ==
+  local counter
+  counter := 7
+\end{spadsrc}
+}
+\xtc{
+Apply the function.
+}{
+\spadpaste{g() \free{g}}
+}
+\xtc{
+Check that the global value of \axiom{counter} is unchanged.
+}{
+\spadpaste{counter\free{g f1}}
+}
+
+Parameters to a function are local variables in the function.
+Even if you issue a \axiom{free} declaration for a parameter, it is
+still local.
+
+What happens if you do not declare that a variable \axiom{x} in
+the body of your function is \axiom{local} or \axiom{free}?
+Well, Axiom decides on this basis:
+
+\indent{4}
+\beginitems
+\item[1. ] Axiom scans your function line-by-line, from top-to-bottom.
+The right-hand side of an assignment is looked at before the left-hand
+side.
+\item[2. ] If \axiom{x} is referenced before it is assigned a value, it is a
+\axiom{free} (global) variable.
+\item[3. ] If \axiom{x} is assigned a value before it is referenced, it is a
+\axiom{local} variable.
+\enditems
+\indent{0}
+
+\xtc{
+Set two global variables to 1.
+}{
+\spadpaste{a := b := 1\bound{ab1}}
+}
+\xtc{
+Refer to \axiom{a} before it is assigned a value, but
+assign a value to \axiom{b} before it is referenced.
+}{
+\begin{spadsrc}[\bound{hh}]
+h() ==
+  b := a + 1
+  a := b + a
+\end{spadsrc}
+}
+\xtc{
+Can you predict this result?
+}{
+\spadpaste{h() \free{ab1 hh}\bound{hhh}}
+}
+\xtc{
+How about this one?
+}{
+\spadpaste{[a, b] \free{hhh}}
+}
+
+What happened?
+In the first line of the function body for \axiom{h}, \axiom{a} is
+referenced on the right-hand side of the assignment.
+Thus \axiom{a} is a free variable.
+The variable \axiom{b} is not referenced in that line, but it is
+assigned a value.
+Thus \axiom{b} is a local variable and is given the value
+\axiom{a + 1 = 2}.
+In the second line, the free variable \axiom{a} is assigned the value
+\axiom{b + a}which equals \axiom{2 + 1 = 3.}
+This is the value returned by the function.
+Since \axiom{a} was free in \userfun{h}, the global variable \axiom{a}
+has value \axiom{3.}
+Since \axiom{b} was local in \userfun{h}, the global variable \axiom{b}
+is unchanged---it still has the value \axiom{1.}
+
+It is good programming practice always to declare global variables.
+However, by far the most common situation is to have local variables in
+your functions.
+No declaration is needed for this situation, but be sure to
+initialize their values.
+
+Be careful if you use free variables and you cache the value of
+your function (see \downlink{``\ugUserCacheTitle''}{ugUserCachePage} 
+in Section \ugUserCacheNumber\ignore{ugUserCache}).
+Caching {\it only} checks if the values of the function arguments
+are the same as in a function call previously seen.
+It does not check if any of the free variables on which the
+function depends have changed between function calls.
+\xtc{
+Turn on caching for \userfun{p}.
+}{
+\spadpaste{)set fun cache all p \bound{pcache}}
+}
+\xtc{
+Define \userfun{p} to depend on the free variable \axiom{N}.
+}{
+\spadpaste{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) ) \free{pcache}\bound{pdef}}
+}
+\xtc{
+Set the value of \axiom{N}.
+}{
+\spadpaste{N := 1 \bound{Nass}}
+}
+\xtc{
+Evaluate \userfun{p} the first time.
+}{
+\spadpaste{p(0, x) \free{pdef Nass}\bound{pfirst}}
+}
+\xtc{
+Change the value of \axiom{N}.
+}{
+\spadpaste{N := 2 \bound{Nass2}}
+}
+\xtc{
+Evaluate \userfun{p} the second time.
+}{
+\spadpaste{p(0, x) \free{pfirst Nass2}}
+}
+If caching had been turned off, the second evaluation would have
+reflected the changed value of \axiom{N}.
+\xtc{
+Turn off caching for \userfun{p}.
+}{
+\spadpaste{)set fun cache 0 p}
+}
+
+Axiom does not allow {\it fluid variables}, that is, variables
+\spadglossSee{bound}{binding} by a function \spad{f} that can be referenced by
+functions called by \spad{f}.
+
+Values are passed to functions by \spadgloss{reference}: a pointer
+to the value is passed rather than a copy of the value or a pointer to
+a copy.
+
+\xtc{
+This is a global variable that is bound to a record object.
+}{
+\spadpaste{r : Record(i : Integer) := [1] \free{r}}
+}
+\xtc{
+This function first modifies the one component of its
+record argument and then rebinds the parameter to another
+record.
+}{
+\begin{spadsrc}[\bound{resetRecord}]
+resetRecord rr ==
+  rr.i := 2
+  rr := [10]
+\end{spadsrc}
+}
+\xtc{
+Pass \axiom{r} as an argument to \userfun{resetRecord}.
+}{
+\spadpaste{resetRecord r \free{r resetRecord}\bound{rr}}
+}
+\xtc{
+The value of \axiom{r} was changed by the expression
+\axiom{rr.i := 2} but not by \axiom{rr := [10]}.
+}{
+\spadpaste{r \free{rr}}
+}
+
+To conclude this section, we give an iterative definition of
+a function that computes Fibonacci numbers.
+This definition approximates the definition into which Axiom
+transforms the recurrence relation definition of \userfun{fib} in
+\downlink{``\ugUserRecurTitle''}{ugUserRecurPage} 
+in Section \ugUserRecurNumber\ignore{ugUserRecur}.
+
+\xtc{
+Global variables
+\axiom{past} and \axiom{present} are used
+to hold the last computed Fibonacci numbers.
+}{
+\spadpaste{past := present := 1\bound{f0}}
+}
+\xtc{
+Global variable \axiom{index} gives the
+current index of \axiom{present}.
+}{
+\spadpaste{index := 2\bound{f1}\free{f0}}
+}
+\xtc{
+Here is a recurrence relation defined in terms
+of these three global variables.
+}{
+\begin{spadsrc}[\bound{f3}\free{f2}]
+fib(n) ==
+  free past, present, index
+  n < 3 => 1
+  n = index - 1 => past
+  if n < index-1 then
+    (past,present) := (1,1)
+    index := 2
+  while (index < n) repeat
+    (past,present) := (present, past+present)
+    index := index + 1
+  present
+\end{spadsrc}
+}
+\xtc{
+Compute the infinite stream of Fibonacci numbers.
+}{
+\spadpaste{fibs := [fib(n) for n in 1..] \bound{fibs}\free{f3}}
+}
+\xtc{
+What is the 1000th Fibonacci number?
+}{
+\spadpaste{fibs 1000 \free{fibs}}
+}
+
+As an exercise, we suggest you write a function in an iterative
+style that computes the value of the recurrence relation
+\texht{$p(n) = p(n-1) - 2 \, p(n-2) + 4 \, p(n-3)$}{\axiom{p(n) = p(n-1) - 2*p(n-2) + 4*p(n-3)}}
+having the initial values
+\texht{$p(1) = 1,\, p(2) = 3 \hbox{ and } p(3) = 9.$}{\axiom{p(1) = 1, p(2) = 3 {\rm and} p(3) = 9.}}
+How would you write the function using an element
+\axiomType{OneDimensionalArray} or \axiomType{Vector}
+to hold the previously computed values?
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserAnonTitle}{Anonymous Functions}
+\newcommand{\ugUserAnonNumber}{6.17.}
+
+@
+\section{Anonymous Functions}
+\label{ugUserAnonPage}
+\begin{itemize}
+\item ugUserAnonExampPage \ref{ugUserAnonExampPage} on
+page~\pageref{ugUserAnonExampPage}
+\item ugUserAnonDeclarePage \ref{ugUserAnonDeclarePage} on
+page~\pageref{ugUserAnonDeclarePage}
+\end{itemize}
+\index{pages!ugUserAnonPage!ug06.ht}
+\index{ug06.ht!pages!ugUserAnonPage}
+\index{ugUserAnonPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserAnonPage}{6.17. Anonymous Functions}
+\beginscroll
+
+\beginImportant
+An {\it anonymous function} is a function that is
+defined
+by giving a list of parameters, the ``maps-to'' compound
+symbol \axiomSyntax{+->} \texht{(from the mathematical symbol
+$\mapsto$)}{},
+and by an expression involving the parameters, the evaluation of
+which determines the return value of the function.
+
+\centerline{{{\tt ( \subscriptIt{parm}{1}, \subscriptIt{parm}{2}, \ldots, \subscriptIt{parm}{N} ) +-> {\it expression}}}}
+\endImportant
+
+You can apply an anonymous function in several ways.
+\indent{4}
+\beginitems
+\item[1. ] Place the anonymous function definition in parentheses
+directly followed by a list of arguments.
+\item[2. ] Assign the anonymous function to a variable and then
+use the variable name when you would normally use a function name.
+\item[3. ] Use \axiomSyntax{==} to use the anonymous function definition as
+the arguments and body of a regular function definition.
+\item[4. ] Have a named function contain a declared anonymous function and
+use the result returned by the named function.
+\enditems
+\indent{0}
+
+\beginmenu
+    \menudownlink{{6.17.1. Some Examples}}{ugUserAnonExampPage}
+    \menudownlink{{6.17.2. Declaring Anonymous Functions}}
+{ugUserAnonDeclarePage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserAnonExampTitle}{Some Examples}
+\newcommand{\ugUserAnonExampNumber}{6.17.1.}
+
+@
+\section{Some Examples}
+\label{ugUserAnonExampPage}
+\index{pages!ugUserAnonExampPage!ug06.ht}
+\index{ug06.ht!pages!ugUserAnonExampPage}
+\index{ugUserAnonExampPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserAnonExampPage}{6.17.1. Some Examples}
+\beginscroll
+
+Anonymous functions are particularly useful for defining functions
+``on the fly.'' That is, they are handy for simple functions that
+are used only in one place.
+In the following examples, we show how to write some simple
+anonymous functions.
+
+\xtc{
+This is a simple absolute value function.
+}{
+\spadpaste{x +-> if x < 0 then -x else x \bound{anon0}}
+}
+\xtc{
+}{
+\spadpaste{abs1 := \% \free{anon0}\bound{abs1}}
+}
+\xtc{
+This function returns {\tt true} if the absolute value of
+the first argument is greater than the absolute value of the
+second, {\tt false} otherwise.
+}{
+\spadpaste{(x,y) +-> abs1(x) > abs1(y) \bound{anon1}\free{abs1}}
+}
+\xtc{
+We use the above function to ``sort'' a list of integers.
+}{
+\spadpaste{sort(\%,[3,9,-4,10,-3,-1,-9,5]) \free{anon1}}
+}
+
+\xtc{
+This function returns \axiom{1} if \axiom{i + j} is even, \axiom{-1} otherwise.
+}{
+\spadpaste{ev := ( (i,j) +-> if even?(i+j) then 1 else -1) \bound{ev}}
+}
+\xtc{
+We create a four-by-four matrix containing \axiom{1} or \axiom{-1}
+depending on whether the row plus the column index is even or not.
+}{
+\spadpaste{matrix([[ev(row,col) for row in 1..4] for col in 1..4]) \free{ev}}
+}
+
+\xtc{
+This function returns {\tt true} if a polynomial in \axiom{x} has multiple
+roots, {\tt false} otherwise.
+It is defined and applied in the same expression.
+}{
+\spadpaste{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
+}
+
+\xtc{
+This and the next expression are equivalent.
+}{
+\spadpaste{g(x,y,z) == cos(x + sin(y + tan(z)))}
+}
+\xtc{
+The one you use is a matter of taste.
+}{
+\spadpaste{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserAnonDeclareTitle}{Declaring Anonymous Functions}
+\newcommand{\ugUserAnonDeclareNumber}{6.17.2.}
+
+@
+\section{Declaring Anonymous Functions}
+\label{ugUserAnonDeclarePage}
+\index{pages!ugUserAnonDeclarePage!ug06.ht}
+\index{ug06.ht!pages!ugUserAnonDeclarePage}
+\index{ugUserAnonDeclarePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserAnonDeclarePage}{6.17.2. Declaring Anonymous Functions}
+\beginscroll
+
+If you declare any of the arguments you must declare all of them.
+Thus,
+\begin{verbatim}
+(x: INT,y): FRAC INT +-> (x + 2*y)/(y - 1)
+\end{verbatim}
+is not legal.
+
+\xtc{
+This is an example of a fully declared anonymous
+function.
+The output shown just indicates that the object you created is a
+particular kind of map, that is, function.
+}{
+\spadpaste{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+}
+\xtc{
+Axiom allows you to declare the arguments and not declare
+the return type.
+}{
+\spadpaste{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
+}
+The return type is computed from the types of the arguments and the
+body of the function.
+You cannot declare the return type if you do not declare the arguments.
+Therefore,
+\begin{verbatim}
+(x,y): FRAC INT +-> (x + 2*y)/(y - 1)
+\end{verbatim}
+is not legal.
+
+\xtc{
+This and the next expression are equivalent.
+}{
+\spadpaste{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
+}
+\xtc{
+The one you use is a matter of taste.
+}{
+\spadpaste{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+}
+
+When should you declare an anonymous function?
+\indent{4}
+\beginitems
+\item[1. ] If you use an anonymous function and Axiom can't figure
+out what you are trying to do, declare the function.
+\item[2. ] If the function has nontrivial argument types or a
+nontrivial return type that
+Axiom may be able to determine eventually, but you are not
+willing to wait that long, declare the function.
+\item[3. ] If the function will only be used for arguments of specific
+types and it is not too much trouble to declare the function, do so.
+\item[4. ] If you are using the anonymous function as an argument to
+another function (such as \axiomFun{map} or \axiomFun{sort}),
+consider declaring the function.
+\item[5. ] If you define an anonymous function inside a named function,
+you {\it must} declare the anonymous function.
+\enditems
+\indent{0}
+
+\xtc{
+This is an example of a named function for integers that returns a
+function.
+}{
+\spadpaste{addx x == ((y: Integer): Integer +-> x + y) \bound{addx}}
+}
+\xtc{
+We define \userfun{g} to be a function that adds \axiom{10} to its
+argument.
+}{
+\spadpaste{g := addx 10 \free{addx}\bound{g}}
+}
+\xtc{
+Try it out.
+}{
+\spadpaste{g 3 \free{g}}
+}
+\xtc{
+}{
+\spadpaste{g(-4) \free{g}}
+}
+
+An anonymous function cannot be recursive: since it does not have a
+name, you cannot even call it within itself!
+If you place an anonymous function inside a named function, the
+anonymous function must be declared.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserDatabaseTitle}{Example: A Database}
+\newcommand{\ugUserDatabaseNumber}{6.18.}
+
+@
+\section{Example: A Database}
+\label{ugUserDatabasePage}
+\index{pages!ugUserDatabasePage!ug06.ht}
+\index{ug06.ht!pages!ugUserDatabasePage}
+\index{ugUserDatabasePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserDatabasePage}{6.18. Example: A Database}
+\beginscroll
+
+This example shows how you can use Axiom to organize a database of
+lineage data and then query the database for relationships.
+
+\labelSpace{1.5pc}
+\xtc{
+The database is entered as ``assertions'' that are really
+pieces of a function definition.
+}{
+\spadpaste{children("albert") == ["albertJr","richard","diane"]\bound{d1}}
+}
+\xtc{
+Each piece
+\axiom{children(x) == y} means
+``the children of \axiom{x} are \axiom{y}''.
+}{
+\spadpaste{children("richard") == ["douglas","daniel","susan"]\free{d1}\bound{d2}}
+}
+\xtc{
+This family tree thus spans four generations.
+}{
+\spadpaste{children("douglas") == ["dougie","valerie"]\free{d2}\bound{d3}}
+}
+\xtc{
+Say ``no one else has children.''
+}{
+\spadpaste{children(x) == []\free{d3}\bound{d4}}
+}
+
+\xtc{
+We need some functions for computing lineage.
+Start with \axiom{childOf}.
+}{
+\spadpaste{childOf(x,y) == member?(x,children(y))\bound{d9}\free{d10}}
+}
+\xtc{
+To find the \axiom{parentOf} someone,
+you have to scan the database of
+people applying \axiom{children}.
+}{
+\begin{spadsrc}[\bound{d8a}\free{d9}]
+parentOf(x) ==
+  for y in people repeat
+    (if childOf(x,y) then return y)
+  "unknown"
+\end{spadsrc}
+}
+\xtc{
+And a grandparent of \axiom{x} is just a parent of a parent of \axiom{x}.
+}{
+\spadpaste{grandParentOf(x) == parentOf parentOf x\bound{d8}\free{d8a}}
+}
+\xtc{
+The grandchildren of \axiom{x}
+are the people \axiom{y} such that
+\axiom{x} is a grandparent of \axiom{y}.
+}{
+\spadpaste{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7}\bound{d8}}
+}
+\xtc{
+Suppose you want to make a list of all great-grandparents.
+Well, a great-grandparent is a grandparent of a person who has children.
+}{
+\begin{spadsrc}[\free{d6}\bound{d7}]
+greatGrandParents == [x for x in people |
+  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
+\end{spadsrc}
+}
+\xtc{
+Define \axiom{descendants} to include the parent as well.
+}{
+\begin{spadsrc}[\free{d5}\bound{d6}]
+descendants(x) ==
+  kids := children(x)
+  null kids => [x]
+  concat(x,reduce(concat,[descendants(y)
+    for y in kids],[]))
+\end{spadsrc}
+}
+\xtc{
+Finally, we need a list of people.
+Since all people are descendants of ``albert'', let's say so.
+}{
+\spadpaste{people == descendants "albert"\free{d4}\bound{d5}}
+}
+
+We have used \axiomSyntax{==} to define the database and some functions to
+query the database.
+But no computation is done until we ask for some information.
+Then, once and for all, the functions are analyzed and compiled to machine
+code for run-time efficiency.
+Notice that no types are given anywhere in this example.
+They are not needed.
+
+\xtc{
+Who are the grandchildren of ``richard''?
+}{
+\spadpaste{grandchildren "richard"\bound{d10}\free{d11}}
+}
+\xtc{
+Who are the great-grandparents?
+}{
+\spadpaste{greatGrandParents\bound{d11}\free{d12}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserTriangleTitle}{Example: A Famous Triangle}
+\newcommand{\ugUserTriangleNumber}{6.19.}
+
+@
+\section{Example: A Famous Triangle}
+\label{ugUserTrianglePage}
+\begin{itemize}
+\item ugTypesExposePage \ref{ugTypesExposePage} on
+page~\pageref{ugTypesExposePage}
+\end{itemize}
+\index{pages!ugUserTrianglePage!ug06.ht}
+\index{ug06.ht!pages!ugUserTrianglePage}
+\index{ugUserTrianglePage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserTrianglePage}{6.19. Example: A Famous Triangle}
+\beginscroll
+
+In this example we write some functions that display
+Pascal's triangle.
+It demonstrates the use of piece-wise definitions and some output
+operations you probably haven't seen before.
+
+\labelSpace{1pc}
+\xtc{
+To make these output operations
+available, we have to \spadgloss{expose} the domain
+\axiomType{OutputForm}.
+See \downlink{``\ugTypesExposeTitle''}{ugTypesExposePage} 
+in Section \ugTypesExposeNumber\ignore{ugTypesExpose} for 
+more information about exposing domains
+and packages.
+}{
+\spadpaste{)set expose add constructor OutputForm \bound{expose}}
+}
+\xtc{
+Define the values along the first
+row and any column \axiom{i}.
+}{
+\spadpaste{pascal(1,i) == 1 \bound{pas1}}
+}
+\xtc{
+Define the values for when the row
+and column index \axiom{i} are equal.
+Repeating the argument name indicates that
+the two index values are equal.
+}{
+\spadpaste{pascal(n,n) == 1 \bound{pas2}\free{pas1}}
+}
+\xtc{
+}{
+\begin{spadsrc}[\bound{pas3}\free{pas1 pas2}]
+pascal(i,j | 1 < i and i < j) ==
+   pascal(i-1,j-1)+pascal(i,j-1)
+\end{spadsrc}
+}
+Now that we have defined the coefficients in Pascal's triangle,
+let's write a couple of one-liners to display it.
+\xtc{
+First, define a function that gives the \eth{\axiom{n}} row.
+}{
+\spadpaste{pascalRow(n) == [pascal(i,n) for i in 1..n] \bound{pascalRow}\free{pas3}}
+}
+\xtc{
+Next, we write the function \userfun{displayRow}
+to display the row, separating entries by blanks and centering.
+}{
+\spadpaste{displayRow(n) == output center blankSeparate pascalRow(n) \free{pascalRow}\bound{displayRow}\free{expose}}
+}
+%
+Here we have used three output operations.
+Operation \axiomFunFrom{output}{OutputForm}
+displays the printable form of objects on the screen,
+\axiomFunFrom{center}{OutputForm} centers a printable form in the
+width of the screen, and \axiomFunFrom{blankSeparate}{OutputForm} takes a list of
+printable forms and inserts a blank between successive elements.
+\xtc{
+Look at the result.
+}{
+\spadpaste{for i in 1..7 repeat displayRow i \free{displayRow}}
+}
+Being purists, we find this less than satisfactory.
+Traditionally, elements of Pascal's triangle are centered between
+the left and right elements on the line above.
+%
+\xtc{
+To fix this misalignment, we go back and
+redefine \userfun{pascalRow} to right adjust the entries within the
+triangle within a width of four characters.
+}{
+\spadpaste{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n] \bound{pascalRow2}}
+}
+%
+\xtc{
+Finally let's look at our purely reformatted triangle.
+}{
+\spadpaste{for i in 1..7 repeat displayRow i \free{pascalRow2}\free{displayRow}}
+}
+\xtc{
+Unexpose \axiomType{OutputForm} so we don't get unexpected
+results later.
+}{
+\spadpaste{)set expose drop constructor OutputForm}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserPalTitle}{Example: Testing for Palindromes}
+\newcommand{\ugUserPalNumber}{6.20.}
+
+@
+\section{Example: Testing for Palindromes}
+\label{ugUserPalPage}
+\begin{itemize}
+\item ugUserTrianglePage \ref{ugUserTrianglePage} on
+page~\pageref{ugUserTrianglePage}
+\end{itemize}
+\index{pages!ugUserPalPage!ug06.ht}
+\index{ug06.ht!pages!ugUserPalPage}
+\index{ugUserPalPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserPalPage}{6.20. Example: Testing for Palindromes}
+\beginscroll
+
+
+In this section we define a function \userfun{pal?} that tests whether its
+argument is a {\it palindrome}, that is, something that reads the same
+backwards and forwards.
+For example, the string ``Madam I'm Adam'' is a palindrome (excluding blanks
+and punctuation) and so is the number \axiom{123454321.}
+The definition works for any datatype that has \axiom{n} components that
+are accessed by the indices \axiom{1\ldots n}.
+
+\xtc{
+Here is the definition for \userfun{pal?}.
+It is simply a call to an auxiliary function called
+\userfun{palAux?}.
+We are following the convention of ending a function's name with
+\axiomSyntax{?} if the function returns a \axiomType{Boolean} value.
+}{
+\spadpaste{pal? s ==  palAux?(s,1,\#s) \bound{pal}}
+}
+\xtc{
+Here is \userfun{palAux?}.
+It works by comparing elements that are equidistant from the start and end
+of the object.
+}{
+\begin{spadsrc}[\bound{palAux}]
+palAux?(s,i,j) ==
+  j > i =>
+    (s.i = s.j) and palAux?(s,i+1,i-1)
+  true
+\end{spadsrc}
+}
+\xtc{
+Try \userfun{pal?} on some examples.
+First, a string.
+}{
+\spadpaste{pal? "Oxford"  \free{pal palAux}}
+}
+\xtc{
+A list of polynomials.
+}{
+\spadpaste{pal? [4,a,x-1,0,x-1,a,4]  \free{pal palAux}}
+}
+\xtc{
+A list of integers from the example in
+\texht{the last section.}{\downlink{``\ugUserTriangleTitle''}
+{ugUserTrianglePage} in Section \ugUserTriangleNumber
+\ignore{ugUserTriangle}.}
+}{
+\spadpaste{pal? [1,6,15,20,15,6,1] \free{pal palAux}}
+}
+\xtc{
+To use \userfun{pal?} on an integer, first convert it to a string.
+}{
+\spadpaste{pal?(1441::String)\free{pal palAux}}
+}
+\xtc{
+Compute an infinite stream of decimal numbers,
+each of which is an obvious palindrome.
+}{
+\spadpaste{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux}\bound{pal5}}
+}
+\xtc{
+How about their squares?
+}{
+\spadpaste{squares := [x**2 for x in ones]\free{pal5}\bound{pal6}}
+}
+\xtc{
+Well, let's test them all!
+}{
+\spadpaste{[pal?(x::String) for x in squares]\free{pal6}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug06.ht>>=
+\newcommand{\ugUserRulesTitle}{Rules and Pattern Matching}
+\newcommand{\ugUserRulesNumber}{6.21.}
+
+@
+\section{Rules and Pattern Matching}
+\label{ugUserRulesPage}
+\index{pages!ugUserRulesPage!ug06.ht}
+\index{ug06.ht!pages!ugUserRulesPage}
+\index{ugUserRulesPage!ug06.ht!pages}
+<<ug06.ht>>=
+\begin{page}{ugUserRulesPage}{6.21. Rules and Pattern Matching}
+\beginscroll
+
+A common mathematical formula is
+\texht{\narrowDisplay{%
+\log(x) + \log(y) = \log(x y) \quad\forall \, x \hbox{\ and\ } y.}}{
+\axiom{log(x) + log(y) == log(x * y)} for any \axiom{x} and \axiom{y}.}
+The presence of
+\texht{``$\forall$''}{the word ``any''}
+indicates that \axiom{x} and \axiom{y} can stand for arbitrary mathematical
+expressions in the above formula.
+You can use such mathematical formulas in Axiom to specify ``rewrite
+rules''.
+Rewrite rules are objects in Axiom that can be assigned to variables for
+later use, often for the purpose of simplification.
+Rewrite rules look like ordinary function definitions except that they are
+preceded by the reserved word \axiom{rule}.
+\spadkey{rule}
+For example, a rewrite rule for the above formula is:
+\begin{verbatim}
+rule log(x) + log(y) == log(x * y)
+\end{verbatim}
+Like function definitions, no action is taken when a rewrite rule is issued.
+Think of rewrite rules as functions that take one argument.
+When a rewrite rule \axiom{A = B} is applied to an argument \axiom{f}, its
+meaning is: ``rewrite every subexpression of \axiom{f} that {\it matches}
+\axiom{A} by \axiom{B.}''
+The left-hand side of a rewrite rule is called a \spadgloss{pattern}; its
+right-side side is called its \spadgloss{substitution}.
+
+\xtc{
+Create a rewrite rule named \userfun{logrule}.
+The generated symbol beginning with a \axiomSyntax{\%} is a place-holder
+for any other terms that might occur in the sum.
+}{
+\spadpaste{logrule := rule log(x) + log(y) == log(x * y) \bound{logrule}}
+}
+\xtc{
+Create an expression with logarithms.
+}{
+\spadpaste{f := log sin x + log x \bound{f}}
+}
+\xtc{
+Apply \userfun{logrule} to \axiom{f}.
+}{
+\spadpaste{logrule f \free{f}\free{logrule}}
+}
+
+The meaning of our example rewrite rule is:
+``for all expressions \axiom{x} and \axiom{y}, rewrite
+\axiom{log(x) + log(y)} by \axiom{log(x * y)}.''
+Patterns generally have both operation names
+(here, \axiomFun{log} and \axiomOp{+})
+and variables (here, \axiom{x} and \axiom{y}).
+By default, every operation name stands for itself.
+Thus \axiomFun{log}  matches only ``\axiom{log}'' and not any
+other operation such as \axiomFun{sin}.
+On the other hand, variables do not stand for themselves.
+Rather, a variable denotes a
+{\it pattern variable} that is free to match any expression whatsoever.
+
+When a rewrite rule is applied, a process called
+\spadgloss{pattern matching} goes to work by systematically
+scanning
+the subexpressions of the argument.
+When a subexpression is found that ``matches'' the pattern, the subexpression
+is replaced by the right-hand side of the rule.
+The details of what happens will be covered later.
+
+The customary Axiom notation for patterns is actually a shorthand for a
+longer, more general notation.
+Pattern variables can be made explicit by using a percent
+(\axiomSyntax{\%}) as the first character of the variable name.
+To say that a name stands for itself, you can prefix that name with a quote
+operator (\axiomSyntax{'}).
+Although the current Axiom parser does not let you quote an operation
+name, this more general notation gives you an alternate way of giving the same
+rewrite rule:
+\begin{verbatim}
+rule log(%x) + log(%y) == log(x * y)
+\end{verbatim}
+This longer notation gives you patterns that the
+standard notation won't handle.
+For example, the rule
+\texht{\typeout{check this example}}{}
+\begin{verbatim}
+rule %f(c * 'x) ==  c*%f(x)
+\end{verbatim}
+means ``for all \axiom{f} and \axiom{c}, replace \axiom{f(y)} by
+\axiom{c * f(x)} when \axiom{y} is the product of \axiom{c}
+and the explicit variable \axiom{x}.''
+
+Thus the pattern can have several adornments on the names that appear there.
+Normally, all these adornments are dropped in the substitution on the
+right-hand side.
+
+To summarize:
+
+\beginImportant
+To enter a single rule in Axiom, use the following syntax:
+\spadkey{rule}
+\centerline{{{\tt rule {\it leftHandSide} == {\it rightHandSide}}}}
+The {\it leftHandSide} is a pattern to be matched and
+the {\it rightHandSide} is its substitution.
+The rule is an object of type \axiomType{RewriteRule} that can be
+assigned to a variable and applied to expressions to transform them.
+\endImportant
+
+Rewrite rules can be collected
+into rulesets so that a set of rules can be applied at once.
+Here is another simplification rule for logarithms.
+\texht{\narrowDisplay{y \log(x) = \log(x^y) \quad\forall \, x \hbox{\ and\ } y.}}{
+\axiom{y * log(x) == log(x ** y)} for any \axiom{x} and \axiom{y}.}
+If instead of giving a single rule following the reserved word \axiom{rule}
+you give a ``pile'' of rules, you create
+what is called a {\it ruleset.}
+Like rules, rulesets are objects in Axiom and
+can be assigned to variables.
+You will find it useful to group commonly used rules into input files, and read
+them in as needed.
+\xtc{
+Create a ruleset named \axiom{logrules}.
+}{
+\begin{spadsrc}[\bound{logrules}]
+logrules := rule
+  log(x) + log(y) == log(x * y)
+  y * log x       == log(x ** y)
+\end{spadsrc}
+}
+\xtc{
+Again, create an expression \axiom{f} containing logarithms.
+}{
+\spadpaste{f := a * log(sin x) - 2 * log x \bound{f1}}
+}
+\xtc{
+Apply the ruleset \userfun{logrules} to \axiom{f}.
+}{
+\spadpaste{logrules f \free{f1}\free{logrules}}
+}
+
+We have allowed pattern variables to match arbitrary expressions in the
+above examples.
+Often you want a variable only to match expressions
+satisfying some predicate.
+For example, we may want to apply the transformation
+\texht{\narrowDisplay{y \log(x) = \log(x^y)}}{\axiom{y * log(x) == log(x ** y)}}
+only when \axiom{y} is an integer.
+%
+The way to restrict a pattern variable \axiom{y} by a predicate \axiom{f(y)}
+is by using a vertical bar \axiomSyntax{|}, which means ``such that,'' in
+much the same way it is used in function definitions.
+You do this only once, but at the earliest
+(meaning deepest and leftmost) part of the pattern.
+\xtc{
+This restricts the logarithmic rule to create integer exponents only.
+}{
+\begin{spadsrc}[\bound{logrules2}]
+logrules2 := rule
+  log(x) + log(y)          == log(x * y)
+  (y | integer? y) * log x == log(x ** y)
+\end{spadsrc}
+}
+\xtc{
+Compare this with the result of applying the previous set of rules.
+}{
+\spadpaste{f \free{f1}}
+}
+\xtc{
+}{
+\spadpaste{logrules2 f \free{f1}\free{logrules2}}
+}
+You should be aware that you might need to apply a function like
+\spadfun{integer} within your predicate expression to actually apply
+the test function.
+\xtc{
+Here we use \spadfun{integer} because \spad{n} has
+type \spadtype{Expression Integer} but \spadfun{even?} is an operation
+defined on integers.
+}{
+\spadpaste{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2) \bound{evenRule}}
+}
+\xtc{
+Here is the application of the rule.
+}{
+\spadpaste{evenRule( cos(x)**2 ) \free{evenRule}}
+}
+\xtc{
+This is an example of some of the usual identities involving products of
+sines and cosines.
+}{
+\begin{spadsrc}[\bound{sinCosProducts}]
+sinCosProducts == rule
+  sin(x) * sin(y) == (cos(x-y) - cos(x + y))/2
+  cos(x) * cos(y) == (cos(x-y) + cos(x+y))/2
+  sin(x) * cos(y) == (sin(x-y) + sin(x + y))/2
+\end{spadsrc}
+}
+\xtc{
+}{
+\spadpaste{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a) \bound{g}}
+}
+\xtc{
+}{
+\spadpaste{sinCosProducts g \free{sinCosProducts g}}
+}
+
+Another qualification you will often want to use is to allow a pattern to
+match an identity element.
+Using the pattern \axiom{x + y}, for example, neither \axiom{x} nor \axiom{y}
+matches the expression \axiom{0}.
+Similarly, if a pattern contains a product \axiom{x*y} or an exponentiation
+\axiom{x**y}, then neither \axiom{x} or \axiom{y} matches \axiom{1}.
+%
+\xtc{
+If identical elements were matched, pattern matching would generally loop.
+Here is an expansion rule for exponentials.
+}{
+\spadpaste{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule}}
+}
+\xtc{
+This rule would cause infinite rewriting on this if either \axiom{a} or
+\axiom{b} were allowed to match \axiom{0}.
+}{
+\spadpaste{exprule exp x \free{exprule}}
+}
+%
+There are occasions when you do want a pattern variable in a sum or
+product to match \axiom{0} or \axiom{1}.
+If so, prefix its name
+with a \axiomSyntax{?} whenever it appears in a left-hand side of a rule.
+For example, consider the following rule for the exponential integral:
+\texht{\narrowDisplay{\int \left(\frac{y+e^x}{x}\right)\: dx = \int \frac{y}{x}\: dx + \hbox{\rm Ei}(x)
+\quad\forall \, x \hbox{\ and\ } y.}}{
+\axiom{integral((y + exp x)/x, x) == integral(y/x, x) + Ei x}
+for any \axiom{x} and \axiom{y}.}
+This rule is valid for \axiom{y = 0}.
+One solution is to create a \axiomType{Ruleset} with two
+rules, one with and one without \axiom{y}.
+A better solution is to use an ``optional'' pattern variable.
+%
+\xtc{
+Define rule \axiom{eirule} with
+a pattern variable \axiom{?y} to indicate
+that an expression may or may not occur.
+}{
+\spadpaste{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x \bound{eirule}}
+}
+\xtc{
+Apply rule \axiom{eirule} to an integral without this term.
+}{
+\spadpaste{eirule integral(exp u/u, u) \free{eirule}}
+}
+\xtc{
+Apply rule \axiom{eirule} to an integral with this term.
+}{
+\spadpaste{eirule integral(sin u + exp u/u, u) \free{eirule}}
+}
+
+Here is one final adornment you will find useful.
+When matching a pattern of the form \axiom{x + y} to an expression containing a
+long sum of the form \axiom{a +\ldots+ b}, there is no way to predict in
+advance which subset of the sum  matches \axiom{x} and which matches
+\axiom{y}.
+Aside from efficiency, this is generally unimportant since the rule holds for
+any possible combination of matches for \axiom{x} and \axiom{y}.
+In some situations, however, you may want to say which pattern variable is a sum
+(or product) of several terms, and which should match only a single term.
+To do this, put a prefix colon \axiomSyntax{:} before the pattern variable
+that you want to match multiple terms.
+%
+\xtc{
+The remaining rules involve operators \axiom{u} and \axiom{v}.
+}{
+\spadpaste{u := operator 'u \bound{u}}
+}
+\xtc{
+These definitions tell Axiom that
+\axiom{u} and \axiom{v} are formal operators to be used in expressions.
+}{
+\spadpaste{v := operator 'v \bound{v}}
+}
+\xtc{
+First define \axiom{myRule}
+with no restrictions on the pattern variables
+\axiom{x} and \axiom{y}.
+}{
+\spadpaste{myRule := rule u(x + y) == u x + v y \free{u v}\bound{m}}
+}
+\xtc{
+Apply \axiom{myRule} to an expression.
+}{
+\spadpaste{myRule u(a + b + c + d) \free{m}}
+}
+\xtc{
+Define \axiom{myOtherRule} to match several terms
+so that the rule gets applied recursively.
+}{
+\spadpaste{myOtherRule := rule u(:x + y) == u x + v y \free{u v}\bound{m2}}
+}
+\xtc{
+Apply \axiom{myOtherRule} to the same expression.
+}{
+\spadpaste{myOtherRule u(a + b + c + d) \free{m2}}
+}
+
+
+Here are some final remarks on pattern matching.
+Pattern matching provides a very useful paradigm for solving
+certain classes of problems, namely, those that involve
+transformations of one form to another and back.
+However, it is important to recognize its limitations.
+
+First, pattern matching slows down as the number of rules you have to apply
+increases.
+Thus it is good practice to organize the sets of rules you use optimally so
+that irrelevant rules are never included.
+
+Second, careless use of pattern matching can lead to wrong answers.
+You should avoid using pattern matching to handle hidden algebraic
+relationships that can go undetected by other programs.
+As a simple example, a symbol such as ``J'' can easily be used to represent
+the square root of \axiom{-1} or some other important algebraic quantity.
+Many algorithms branch on whether an expression is zero or not, then divide by
+that expression if it is not.
+If you fail to simplify an expression involving powers of
+\axiom{J} to \axiom{-1,}
+algorithms may incorrectly assume an expression is non-zero, take a wrong
+branch, and produce a meaningless result.
+
+Pattern matching should also not be used as a substitute for a domain.
+In Axiom, objects of one domain are transformed to objects of other
+domains using well-defined \axiomFun{coerce} operations.
+Pattern matching should be used on objects that are all the same type.
+Thus if your application can be handled by type \axiomType{Expression} in
+Axiom and you think you need pattern matching, consider this choice
+carefully.
+You may well be better served by extending an existing domain
+or by building a new domain of objects for your application.
+\endscroll
+\autobuttons
+\end{page}
+@
+\chapter{Users Guide Chapter 7 (ug07.ht)}
+<<ug07.ht>>=
+\newcommand{\optArg}[1]{{{\tt [}{#1}{\tt ]}}}
+\newcommand{\argDef}[1]{{\tt ({#1})}}
+\newcommand{\funSyntax}[2]{\axiomFun{#1}{\tt ({\small\it{#2}})}}
+\newcommand{\funArgs}[1]{{\tt ({\small\it {#1}})}\newline}
+\newcommand{\ugGraphTitle}{Graphics}
+\newcommand{\ugGraphNumber}{7.}
+
+@
+\section{Graphics}
+\label{ugGraphPage}
+\begin{itemize}
+\item ugGraphTwoDPage \ref{ugGraphTwoDPage} on
+page~\pageref{ugGraphTwoDPage}
+\item ugGraphThreeDPage \ref{ugGraphThreeDPage} on
+page~\pageref{ugGraphThreeDPage}
+\end{itemize}
+\index{pages!ugGraphPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphPage}
+\index{ugGraphPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphPage}{7. Graphics}
+\beginscroll
+
+%
+
+This chapter shows how to use the Axiom graphics facilities
+under the X Window System.
+Axiom has \twodim{} and \threedim{} drawing and rendering
+packages that allow the drawing, coloring, transforming, mapping,
+clipping, and combining of graphic output from Axiom
+computations.
+This facility is particularly useful for investigating problems in
+areas such as topology.
+The graphics package is capable of plotting functions of one or
+more variables or plotting parametric surfaces and curves.
+Various coordinate systems are also available, such as polar and
+spherical.
+
+A graph is displayed in a viewport window and it has a
+control-panel that uses interactive mouse commands.
+PostScript and other output forms are available so that Axiom
+images can be printed or used by other programs.\footnote{PostScript
+is a trademark of Adobe Systems Incorporated, registered in the United
+States.}
+
+\beginmenu
+    \menudownlink{{7.1. Two-Dimensional Graphics}}{ugGraphTwoDPage}
+    \menudownlink{{7.2. Three-Dimensional Graphics}}{ugGraphThreeDPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDTitle}{Two-Dimensional Graphics}
+\newcommand{\ugGraphTwoDNumber}{7.1.}
+
+@
+\section{Two-Dimensional Graphics}
+\label{ugGraphTwoDPage}
+\begin{itemize}
+\item ugGraphTwoDPlotPage \ref{ugGraphTwoDPlotPage} on
+page~\pageref{ugGraphTwoDPlotPage}
+\item ugGraphTwoDParPage \ref{ugGraphTwoDParPage} on
+page~\pageref{ugGraphTwoDParPage}
+\item ugGraphTwoDPlanePage \ref{ugGraphTwoDPlanePage} on
+page~\pageref{ugGraphTwoDPlanePage}
+\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
+page~\pageref{ugGraphTwoDOptionsPage}
+\item ugGraphColorPage \ref{ugGraphColorPage} on
+page~\pageref{ugGraphColorPage}
+\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
+page~\pageref{ugGraphColorPalettePage}
+\item ugGraphTwoDControlPage \ref{ugGraphTwoDControlPage} on
+page~\pageref{ugGraphTwoDControlPage}
+\item ugGraphTwoDopsPage \ref{ugGraphTwoDopsPage} on
+page~\pageref{ugGraphTwoDopsPage}
+\item ugGraphTwoDbuildPage \ref{ugGraphTwoDbuildPage} on
+page~\pageref{ugGraphTwoDbuildPage}
+\item ugGraphTwoDappendPage \ref{ugGraphTwoDappendPage} on
+page~\pageref{ugGraphTwoDappendPage}
+\end{itemize}
+\index{pages!ugGraphTwoDPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDPage}
+\index{ugGraphTwoDPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDPage}{7.1. Two-Dimensional Graphics}
+\beginscroll
+%
+The Axiom \twodim{} graphics package provides the ability to
+display
+%
+\indent{4}
+\beginitems
+%
+\item[-] curves defined by functions of a single real variable
+%
+\item[-] curves defined by parametric equations
+%
+\item[-] implicit non-singular curves defined by polynomial equations
+%
+\item[-] planar graphs generated from lists of point components.
+\enditems
+\indent{0}
+These graphs
+can be modified by specifying various options, such as
+calculating points in the polar
+coordinate system or changing the size of the graph viewport window.
+
+\beginmenu
+    \menudownlink{{7.1.1. Plotting Two-Dimensional Functions of One Variable}}
+{ugGraphTwoDPlotPage}
+    \menudownlink{{7.1.2. Plotting Two-Dimensional Parametric Plane Curves}}
+{ugGraphTwoDParPage}
+    \menudownlink{{7.1.3. Plotting Plane Algebraic Curves}}
+{ugGraphTwoDPlanePage}
+    \menudownlink{{7.1.4. Two-Dimensional Options}}{ugGraphTwoDOptionsPage}
+    \menudownlink{{7.1.5. Color}}{ugGraphColorPage}
+    \menudownlink{{7.1.6. Palette}}{ugGraphColorPalettePage}
+    \menudownlink{{7.1.7. Two-Dimensional Control-Panel}}
+{ugGraphTwoDControlPage}
+    \menudownlink{{7.1.8. Operations for Two-Dimensional Graphics}}
+{ugGraphTwoDopsPage}
+    \menudownlink{{7.1.9. Addendum: Building Two-Dimensional Graphs}}
+{ugGraphTwoDbuildPage}
+    \menudownlink{
+{7.1.10. Addendum: Appending a Graph to a Viewport Window Containing a Graph}}
+{ugGraphTwoDappendPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDPlotTitle}{Plotting Two-Dimensional Functions of One Variable}
+\newcommand{\ugGraphTwoDPlotNumber}{7.1.1.}
+
+@
+\section{Plotting Two-Dimensional Functions of One Variable}
+\label{ugGraphTwoDPlotPage}
+\begin{itemize}
+\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
+page~\pageref{ugGraphTwoDOptionsPage}
+\end{itemize}
+\index{pages!ugGraphTwoDPlotPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDPlotPage}
+\index{ugGraphTwoDPlotPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDPlotPage}{7.1.1. Plotting Two-Dimensional Functions of One Variable}
+\beginscroll
+
+The first kind of \twodim{} graph is that of a curve defined by a function
+\axiom{y = f(x)} over a finite interval of the \axiom{x} axis.
+
+%
+\beginImportant
+The general format for drawing a function defined by a formula
+\axiom{f(x)} is:
+%
+\centerline{{{\tt draw(f(x), x = a..b, {\it options})}}}
+where \axiom{a..b} defines the range of \axiom{x}, and where
+{\it options} prescribes zero or more options as described in
+\downlink{``\ugGraphTwoDOptionsTitle''}{ugGraphTwoDOptionsPage} 
+in Section \ugGraphTwoDOptionsNumber\ignore{ugGraphTwoDOptions}.
+An example of an option is \axiom{curveColor == bright red().}
+An alternative format involving functions \axiom{f} and \axiom{g}
+is also available.
+\endImportant
+
+A simple way to plot a function is to use a formula.
+The first argument is the formula.
+For the second argument, write the name of the independent variable (here, \axiom{x}),
+followed by an \spadSyntax{=}, and the range of values.
+
+\psXtc{
+Display this formula over the range
+\texht{$0 \leq x \leq 6$}{0 <= x <= 6}.
+Axiom converts your formula to a compiled
+function so that the results can be computed
+quickly and efficiently.
+}{
+\graphpaste{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+}{
+\epsffile[0 0 295 295]{../ps/2d1vara.ps}
+}
+
+Notice that Axiom compiled the function before the graph was put
+on the screen.
+
+\psXtc{
+Here is the same graph on a different interval.
+This time we give the graph a title.
+}{
+\graphpaste{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
+}{
+%window was 300 x 300
+\epsffile[0 0 295 295]{../ps/2d1varb.ps}
+}
+%
+Once again the formula is converted to a compiled function before
+any points were computed.
+If you want to graph the same function on several intervals, it is
+a good idea to define the function first so that the function has
+to be compiled only once.
+\xtc{
+This time we first define the function.
+}{
+\spadpaste{f(x) == (x-1)*(x-2)*(x-3) \bound{f}}
+}
+\psXtc{
+To draw the function, the first argument is its name
+and the second is just the range with no independent variable.
+}{
+\graphpaste{draw(f, 0..4) \free{f}}
+}{
+\epsffile[0 0 295 295]{../ps/2d1vard.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDParTitle}{Plotting Two-Dimensional Parametric Plane Curves}
+\newcommand{\ugGraphTwoDParNumber}{7.1.2.}
+
+@
+\section{Plotting Two-Dimensional Parametric Plane Curves}
+\label{ugGraphTwoDParPage}
+\begin{itemize}
+\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
+page~\pageref{ugGraphThreeDOptionsPage}
+\end{itemize}
+\index{pages!ugGraphTwoDParPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDParPage}
+\index{ugGraphTwoDParPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDParPage}
+{7.1.2. Plotting Two-Dimensional Parametric Plane Curves}
+\beginscroll
+
+The second kind of \twodim{} graph is that of
+curves produced by parametric equations.
+Let \axiom{x = f(t)} and \axiom{y = g(t)} be formulas or two
+functions \axiom{f} and \axiom{g} as the parameter \axiom{t} ranges
+over an interval \axiom{[a,b]}.
+The function \axiomFun{curve} takes the two functions \axiom{f} and
+\axiom{g} as its parameters.
+
+\beginImportant
+The general format for drawing a \twodim{} plane curve defined by
+parametric formulas \axiom{x = f(t)} and \axiom{y = g(t)} is:
+%
+\centerline{{{\tt draw(curve(f(t), g(t)), t = a..b, {\it options})}}}
+where \axiom{a..b} defines the range of the independent variable \axiom{t},
+and where {\it options} prescribes zero or more options as
+described in 
+\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
+in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
+An example of an option is \axiom{curveColor == bright red().}
+\endImportant
+
+Here's an example:
+
+\psXtc{
+Define a parametric curve using a range involving
+\axiom{\%pi}, Axiom's way of saying \texht{$\pi$}{``pi''}.
+For parametric curves, Axiom compiles two
+functions, one for each of the functions \axiom{f} and \axiom{g}.
+}{
+\graphpaste{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
+}{
+\epsffile[0 0 295 295]{../ps/2dppca.ps}
+}
+%
+%
+\psXtc{
+The title may be an arbitrary string and is an
+optional argument to the \axiomFun{draw} command.
+}{
+\graphpaste{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
+}{
+\epsffile[0 0 295 295]{../ps/2dppcb.ps}
+}
+%
+If you plan on plotting \axiom{x = f(t)}, \axiom{y = g(t)} as \axiom{t} 
+ranges over several intervals, you may want to define functions 
+\axiom{f} and \axiom{g} first, so
+that they need not be recompiled every time you create a new graph.
+Here's an example:
+\xtc{
+As before, you can first define the functions you wish to draw.
+}{
+\spadpaste{f(t:DFLOAT):DFLOAT == sin(3*t/4) \bound{f}}
+}
+\xtc{
+Axiom compiles them to map \axiomType{DoubleFloat}
+values to \axiomType{DoubleFloat} values.
+}{
+\spadpaste{g(t:DFLOAT):DFLOAT == sin(t) \bound{g}}
+}
+
+\psXtc{
+Give to {\tt curve} the names of the functions,
+then write the range without the name of the
+independent variable.
+}{
+\graphpaste{draw(curve(f,g),0..\%pi) \free{f g}}
+}{
+\epsffile[0 0 295 295]{../ps/2dppcc.ps}
+}
+%
+%
+\psXtc{
+Here is another look at the same curve but over a different
+range. Notice that \axiom{f} and \axiom{g} are not recompiled.
+Also note that Axiom provides a default title based on
+the first function specified in \axiomFun{curve}.
+}{
+\graphpaste{draw(curve(f,g),-4*\%pi..4*\%pi) \free{f g}}
+}{
+\epsffile[0 0 295 295]{../ps/2dppce.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDPlaneTitle}{Plotting Plane Algebraic Curves}
+\newcommand{\ugGraphTwoDPlaneNumber}{7.1.3.}
+
+@
+\section{Plotting Plane Algebraic Curves}
+\label{ugGraphTwoDPlanePage}
+\begin{itemize}
+\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
+page~\pageref{ugGraphTwoDOptionsPage}
+\end{itemize}
+\index{pages!ugGraphTwoDPlanePage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDPlanePage}
+\index{ugGraphTwoDPlanePage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDPlanePage}{7.1.3. Plotting Plane Algebraic Curves}
+\beginscroll
+
+A third kind of \twodim{} graph is a non-singular ``solution curve''
+in a rectangular region of the plane.
+A solution curve is a curve defined by a polynomial equation
+\axiom{p(x,y) = 0}.
+Non-singular means that the curve is ``smooth'' in that it does not
+cross itself or come to a point (cusp).
+Algebraically, this means that for any point \axiom{(x,y)} on the curve,
+that is, a point such that \axiom{p(x,y) = 0}, the partial derivatives
+\texht{${{\partial p}\over{\partial x}}(x,y)$ and
+${{\partial p}\over{\partial y}}(x,y)$}{\axiom{dp/dx(x,y)}
+and \axiom{dp/dy(a,b)}}
+are not both zero.
+
+%
+\beginImportant
+The general format for drawing a non-singular solution curve
+given by a polynomial of the form \axiom{p(x,y) = 0} is:
+%
+\centerline{{{\tt draw(p(x,y) = 0, x, y, range == [a..b, c..d], {\it options})}}}
+where the second and third arguments name the first and second
+independent variables of \axiom{p}.
+A {\tt range} option is always given to designate a bounding
+rectangular region of the plane \texht{$a \leq x \leq b, c \leq y
+\leq d$}{a <= x <= b, c <= y <= d}.
+Zero or more additional options as described in
+\downlink{``\ugGraphTwoDOptionsTitle''}{ugGraphTwoDOptionsPage} 
+in Section \ugGraphTwoDOptionsNumber\ignore{ugGraphTwoDOptions} 
+may be given.
+\endImportant
+
+\xtc{
+We require that the polynomial has rational or integral coefficients.
+Here is an algebraic curve example (``Cartesian ovals''):
+}{
+\spadpaste{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1) \bound{p}}
+}
+
+\psXtc{
+The first argument is always expressed as an equation of the form 
+\axiom{p = 0} where \axiom{p} is a polynomial.
+}{
+\graphpaste{draw(p = 0, x, y, range == [-1..11, -7..7]) \free{p}}
+}{
+\epsffile[0 0 295 295]{../ps/2dpaca.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDOptionsTitle}{Two-Dimensional Options}
+\newcommand{\ugGraphTwoDOptionsNumber}{7.1.4.}
+
+@
+\section{Two-Dimensional Options}
+\label{ugGraphTwoDOptionsPage}
+\begin{itemize}
+\item ugGraphColorPage \ref{ugGraphColorPage} on
+page~\pageref{ugGraphColorPage}
+\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
+page~\pageref{ugGraphColorPalettePage}
+\item ugGraphColorPage \ref{ugGraphColorPage} on
+page~\pageref{ugGraphColorPage}
+\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
+page~\pageref{ugGraphColorPalettePage}
+\end{itemize}
+\index{pages!ugGraphTwoDOptionsPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDOptionsPage}
+\index{ugGraphTwoDOptionsPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDOptionsPage}{7.1.4. Two-Dimensional Options}
+\beginscroll
+
+The \axiomFun{draw} commands take an optional list of options,
+such as {\tt title} shown above.
+Each option is given by the syntax: {\it name} {\tt ==} {\it value}.
+Here is a list of the available options in the order that they are
+described below.
+
+\table{ {adaptive} {clip} {unit} {clip} {curveColor} {range}
+{toScale} {pointColor} {coordinates}}
+
+The \axiom{adaptive} option turns adaptive plotting on or off.
+Adaptive plotting uses an algorithm that traverses a graph and computes
+more points for those parts of the graph with high curvature.
+The higher the curvature of a region is, the more points the algorithm
+computes.
+%
+%
+\psXtc{
+The {\tt adaptive} option is normally on.
+Here we turn it off.
+}{
+\graphpaste{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
+}{
+\epsffile[0 0 295 295]{../ps/2doptad.ps}
+}
+%
+%
+\psXtc{
+The {\tt clip} option turns clipping on or off.
+If on, large values are cut off according to
+\axiomFunFrom{clipPointsDefault}{GraphicsDefaults}.
+}{
+\graphpaste{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
+}{
+\epsffile[0 0 295 295]{../ps/2doptcp.ps}
+}
+%
+%
+\psXtc{
+Option {\tt toScale} does plotting to scale if {\tt true} or uses
+the entire viewport if {\tt false}.
+The default can be determined using
+\axiomFunFrom{drawToScale}{GraphicsDefaults}.
+}{
+\graphpaste{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
+}{
+\epsffile[0 0 295 295]{../ps/2doptsc.ps}
+}
+%
+%
+\psXtc{
+Option {\tt clip} with a range sets point clipping of a graph within the
+ranges specified in the list \axiom{[x range,y range]}.
+If only one range is specified, clipping applies to the y-axis.
+}{
+\graphpaste{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
+}{
+\epsffile[0 0 295 295]{../ps/2doptcpr.ps}
+}
+%
+\psXtc{
+Option {\tt curveColor} sets the color of the graph curves or lines to be the
+indicated palette color
+(see \downlink{``\ugGraphColorTitle''}{ugGraphColorPage} in Section 
+\ugGraphColorNumber\ignore{ugGraphColor} and 
+\downlink{``\ugGraphColorPaletteTitle''}{ugGraphColorPalettePage} 
+in Section \ugGraphColorPaletteNumber\ignore{ugGraphColorPalette}).
+}{
+\graphpaste{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
+}{
+\epsffile[0 0 295 295]{../ps/2doptcvc.ps}
+}
+%
+\psXtc{
+Option {\tt pointColor}
+sets the color of the graph points to the indicated
+palette color
+(see \downlink{``\ugGraphColorTitle''}{ugGraphColorPage} 
+in Section \ugGraphColorNumber\ignore{ugGraphColor} and 
+\downlink{``\ugGraphColorPaletteTitle''}{ugGraphColorPalettePage} 
+in Section \ugGraphColorPaletteNumber\ignore{ugGraphColorPalette}).
+}{
+\graphpaste{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
+}{
+\epsffile[0 0 295 295]{../ps/2doptptc.ps}
+}
+%
+\psXtc{
+Option {\tt unit} sets the intervals at which the axis units are plotted
+according to the indicated steps [\axiom{x} interval, \axiom{y} interval].
+}{
+\graphpaste{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
+}{
+\epsffile[0 0 295 295]{../ps/2doptut.ps}
+}
+%
+%
+\psXtc{
+Option {\tt range} sets the range of variables in a graph to be
+within the ranges
+for solving plane algebraic curve plots.
+}{
+\graphpaste{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
+}{
+\epsffile[0 0 295 295]{../ps/2doptrga.ps}
+}
+%
+%
+\psXtc{
+A second example of a solution plot.
+}{
+\graphpaste{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
+}{
+\epsffile[0 0 295 295]{../ps/2doptrgb.ps}
+}
+%
+%
+\psXtc{
+Option \axiom{coordinates} indicates the coordinate system
+in which the graph
+is plotted.
+The default is to use the Cartesian coordinate system.
+For more details, see \downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} in Section \ugGraphCoordNumber\ignore{ugGraphCoord} \texht{.}{or
+\axiomType{CoordinateSystems}.}
+}{
+\graphpaste{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
+}{
+\epsffile[0 0 295 295]{../ps/2doptplr.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphColorTitle}{Color}
+\newcommand{\ugGraphColorNumber}{7.1.5.}
+
+@
+\section{Color}
+\label{ugGraphColorPage}
+\index{pages!ugGraphColorPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphColorPage}
+\index{ugGraphColorPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphColorPage}{7.1.5. Color}
+\beginscroll
+
+The domain \axiomType{Color}
+provides operations for manipulating
+colors in \twodim{} graphs.
+Colors are objects of \axiomType{Color}.
+Each color has a {\it hue} and a {\it weight}.
+Hues are represented by integers that range from \axiom{1} to the
+\axiomFunFrom{numberOfHues()}{Color}, normally
+\axiom{27}.
+%\footnote{Use \axiomFun{colorDef} to
+%change these values to any range you want for a given \threedim{} viewport}
+Weights are floats and  have the value \axiom{1.0} by default.
+%
+\indent{0}
+\beginitems
+%
+\item[\axiomFun{color}]\funArgs{integer}
+creates a color of hue {\it integer} and weight \axiom{1.0}.
+%
+\item[\axiomFun{hue}]\funArgs{color}
+returns the hue of {\it color} as an integer.
+%
+\item[\axiomFun{red}]\funArgs{},
+\funSyntax{blue}{},
+\funSyntax{green}{}, and \funSyntax{yellow}{}
+create colors of that hue with weight \axiom{1.0}.
+%
+\item[\subscriptIt{color}{1} {\tt +} \subscriptIt{color}{2}] returns the
+color that results from additively combining the indicated
+\subscriptIt{color}{1} and \subscriptIt{color}{2}.
+Color addition is not commutative: changing the order of the arguments
+produces different results.
+%
+\item[{\it integer} {\tt *} {\it color}]
+changes the weight of {\it color} by {\it integer}
+without affecting its hue.
+For example,
+\axiom{red() + 3*yellow()} produces a color closer to yellow than to red.
+Color multiplication is not associative: changing the order of grouping
+produces different results.
+\enditems
+\indent{0}
+%
+\psXtc{
+These functions can be used to change the point and curve colors
+for two- and \threedim{} graphs.
+Use the {\tt pointColor} option for points.
+}{
+\graphpaste{draw(x**2,x=-1..1,pointColor == green())}
+}{
+\epsffile[0 0 295 295]{../ps/23dcola.ps}
+}
+%
+\psXtc{
+Use the {\tt curveColor} option for curves.
+}{
+\graphpaste{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
+}{
+\epsffile[0 0 295 295]{../ps/23dcolb.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphColorPaletteTitle}{Palette}
+\newcommand{\ugGraphColorPaletteNumber}{7.1.6.}
+
+@
+\section{Palette}
+\label{ugGraphColorPalettePage}
+\index{pages!ugGraphColorPalettePage!ug07.ht}
+\index{ug07.ht!pages!ugGraphColorPalettePage}
+\index{ugGraphColorPalettePage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphColorPalettePage}{7.1.6. Palette}
+\beginscroll
+
+Domain \axiomType{Palette} is the domain of shades of colors:
+\axiomFun{dark}, \axiomFun{dim}, \axiomFun{bright}, \axiomFun{pastel}, and \axiomFun{light},
+designated by the integers \axiom{1} through \axiom{5}, respectively.
+\xtc{
+Colors are normally ``bright.''
+}{
+\spadpaste{shade red()}
+}
+\xtc{
+To change the shade of a color, apply the name of a shade to it.
+}{
+\spadpaste{myFavoriteColor := dark blue() \bound{mfc}}
+}
+\xtc{
+The expression \axiom{shade(color)}
+returns the value of a shade of \axiom{color}.
+}{
+\spadpaste{shade myFavoriteColor \free{mfc}}
+}
+\xtc{
+The expression \axiom{hue(color)} returns its hue.
+}{
+\spadpaste{hue myFavoriteColor \free{mfc}}
+}
+\psXtc{
+Palettes can be used in specifying colors in \twodim{} graphs.
+}{
+\graphpaste{draw(x**2,x=-1..1,curveColor == dark blue())}
+}{
+\epsffile[0 0 295 295]{../ps/23dpal.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDControlTitle}{Two-Dimensional Control-Panel}
+\newcommand{\ugGraphTwoDControlNumber}{7.1.7.}
+
+@
+\section{Two-Dimensional Control-Panel}
+\label{ugGraphTwoDControlPage}
+\index{pages!ugGraphTwoDControlPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDControlPage}
+\index{ugGraphTwoDControlPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDControlPage}{7.1.7. Two-Dimensional Control-Panel}
+\beginscroll
+Once you have created a viewport, move your mouse to the viewport and click
+with your left mouse button to display a control-panel.
+The panel is displayed on the side of the viewport closest to
+where you clicked.  Each of the buttons which toggle on and off show the
+current state of the graph.
+
+
+\subsubsection{Transformations}
+
+Object transformations are executed from the control-panel by mouse-activated
+potentiometer windows.
+%
+\indent{0}
+\beginitems
+%
+\item[Scale:] To scale a graph, click on a mouse button
+within the {\bf Scale} window in the upper left corner of the control-panel.
+The axes along which the scaling is to occur are indicated by setting the
+toggles above the arrow.
+With {\tt X On} and {\tt Y On} appearing, both axes are selected and scaling
+is uniform.
+If either is not selected, for example, if {\tt X Off} appears, scaling is
+non-uniform.
+%
+\item[Translate:] To translate a graph, click the mouse in the
+{\bf Translate} window in the direction you wish the graph to move.
+This window is located in the upper right corner of the control-panel.
+Along the top of the {\bf Translate} window are two buttons for selecting
+the direction of translation.
+Translation along both coordinate axes results when {\tt X On} and {\tt Y
+On} appear or along one axis when one is on, for example, {\tt X On} and
+{\tt Y Off} appear.
+\enditems
+\indent{0}
+
+\subsubsection{Messages}
+
+The window directly below the transformation potentiometer windows is
+used to display system messages relating to the viewport and the control-panel.
+The following format is displayed: \newline
+%
+\centerline{{[scaleX, scaleY] \axiom{>}graph\axiom{<} [translateX, translateY] \newline}}
+The two values to the left show the scale factor along the {\tt X} and
+{\tt Y} coordinate axes.  The two values to the right show the distance of
+translation from the center in the {\tt X} and {\tt Y} directions.  The number
+in the center shows which graph in the viewport this data pertains to.
+When multiple graphs exist in the same viewport,
+the graph must be selected (see ``Multiple Graphs,'' below) in
+order for its transformation data to be shown, otherwise the number
+is 1.
+
+\subsubsection{Multiple Graphs}
+
+The {\bf Graphs} window contains buttons that allow the placement
+of \twodim{} graphs into one of nine available slots in any other
+\twodim{} viewport.
+In the center of the window are numeral buttons from one to nine
+that show whether a graph is displayed in the viewport.
+Below each number button is a button showing whether a graph
+that is present is selected for application of some
+transformation.
+When the caret symbol is displayed, then the graph in that slot
+will be manipulated.
+Initially, the graph for which the viewport is created occupies
+the first slot, is displayed, and is selected.
+%
+%
+\indent{0}
+\beginitems
+%
+\item[Clear:]  The {\bf Clear} button deselects every viewport graph slot.
+A graph slot is reselected by selecting the button below its number.
+%
+\item[Query:]  The {\bf Query} button is used to display the scale and
+translate data for the indicated graph.  When this button is selected the
+message ``Click on the graph to query'' appears.  Select a slot
+number button from the {\bf Graphs} window. The scaling factor and translation
+offset of the graph are then displayed in the message window.
+%
+\item[Pick:]  The {\bf Pick} button is used to select a graph
+to be placed or dropped into the indicated viewport.  When this button is
+selected, the message ``Click on the graph to pick'' appears.
+Click on the slot with the graph number of the desired
+graph.  The graph information is held waiting for
+you to execute a {\bf Drop} in some other graph.
+%
+\item[Drop:]  Once a graph has been picked up using the {\bf Pick} button,
+the {\bf Drop} button places it into a new viewport slot.
+The message ``Click on the graph to drop'' appears in the message
+window when the {\bf Drop} button is selected.
+By selecting one of the slot number buttons in the {\bf Graphs}
+window, the graph currently being held is dropped into this slot
+and displayed.
+\enditems
+\indent{0}
+
+\subsubsection{Buttons}
+
+%
+\indent{0}
+\beginitems
+%
+\item[Axes] turns the coordinate axes on or off.
+%
+\item[Units] turns the units along the {\tt x}
+and {\tt y} axis on or off.
+%
+\item[Box] encloses the area of the viewport graph
+in a bounding box, or removes the box if already enclosed.
+%
+\item[Pts] turns on or off the display of points.
+%
+\item[Lines] turns on or off the display
+of lines connecting points.
+%
+\item[PS] writes the current viewport contents to
+a file {\bf axiom2D.ps} or to a name specified in the user's {\bf
+.Xdefaults} file.
+The file is placed in the directory from which Axiom or the {\bf
+viewalone} program was invoked.
+%
+\item[Reset] resets the object transformation
+characteristics and attributes back to their initial states.
+%
+\item[Hide] makes the control-panel disappear.
+%
+\item[Quit] queries whether the current viewport
+session should be terminated.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDopsTitle}{Operations for Two-Dimensional Graphics}
+\newcommand{\ugGraphTwoDopsNumber}{7.1.8.}
+
+@
+\section{Operations for Two-Dimensional Graphics}
+\label{ugGraphTwoDopsPage}
+\index{pages!ugGraphTwoDopsPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDopsPage}
+\index{ugGraphTwoDopsPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDopsPage}
+{7.1.8. Operations for Two-Dimensional Graphics}
+\beginscroll
+
+Here is a summary of useful Axiom operations for \twodim{}
+graphics.
+Each operation name is followed by a list of arguments.
+Each argument is written as a variable informally named according
+to the type of the argument (for example, {\it integer}).
+If appropriate, a default value for an argument is given in
+parentheses immediately following the name.
+
+%
+\texht{\bgroup\hbadness = 10001\sloppy}{}
+\indent{0}
+\beginitems
+%
+\item[\axiomFun{adaptive}]\funArgs{\optArg{boolean\argDef{true}}}
+sets or indicates whether graphs are plotted
+according to the adaptive refinement algorithm.
+%
+\item[\axiomFun{axesColorDefault}]\funArgs{\optArg{color\argDef{dark blue()}}}
+sets or indicates the default color of the
+axes in a \twodim{} graph viewport.
+%
+\item[\axiomFun{clipPointsDefault}]\funArgs{\optArg{boolean\argDef{false}}}
+sets or
+indicates whether point clipping is
+to be applied as the default for graph plots.
+%
+\item[\axiomFun{drawToScale}]\funArgs{\optArg{boolean\argDef{false}}}
+sets or
+indicates whether the plot of a graph
+is ``to scale'' or uses the entire viewport space as the default.
+%
+\item[\axiomFun{lineColorDefault}]\funArgs{\optArg{color\argDef{pastel yellow()}}}
+sets or indicates the default color of the
+lines or curves in a \twodim{} graph viewport.
+%
+\item[\axiomFun{maxPoints}]\funArgs{\optArg{integer\argDef{500}}}
+sets or indicates
+the default maximum number of
+possible points to be used when constructing a \twodim{} graph.
+%
+\item[\axiomFun{minPoints}]\funArgs{\optArg{integer\argDef{21}}}
+sets or indicates the default minimum number of
+possible points to be used when constructing a \twodim{} graph.
+%
+\item[\axiomFun{pointColorDefault}]\funArgs{\optArg{color\argDef{bright red()}}}
+sets or indicates the default color of the
+points in a \twodim{} graph viewport.
+%
+\item[\axiomFun{pointSizeDefault}]\funArgs{\optArg{integer\argDef{5}}}
+sets or indicates the default size of the
+dot used to plot points in a \twodim{} graph.
+%
+\item[\axiomFun{screenResolution}]\funArgs{\optArg{integer\argDef{600}}}
+sets or indicates the default screen
+resolution constant used in setting the computation limit of adaptively
+generated curve plots.
+%
+\item[\axiomFun{unitsColorDefault}]\funArgs{\optArg{color\argDef{dim green()}}}
+sets or indicates the default color of the
+unit labels in a \twodim{} graph viewport.
+%
+\item[\axiomFun{viewDefaults}]\funArgs{}
+resets the default settings for the following
+attributes:  point color, line color, axes color, units color, point size,
+viewport upper left-hand corner position, and the viewport size.
+%
+\item[\axiomFun{viewPosDefault}]\funArgs{\optArg{list\argDef{[100,100]}}}
+sets or indicates the default position of the
+upper left-hand corner of a \twodim{} viewport, relative to the
+display root window.
+The upper left-hand corner of the display is considered to be at the
+(0, 0) position.
+%
+\item[\axiomFun{viewSizeDefault}]\funArgs{\optArg{list\argDef{[200,200]}}}
+sets or
+indicates the default size in which two
+dimensional viewport windows are shown.
+It is defined by a width and then a height.
+%
+\item[\axiomFun{viewWriteAvailable}]\funArgs{\optArg{list\argDef{["pixmap",
+"bitmap", "postscript", \"image"}}}
+indicates the possible file types
+that can be created with the \axiomFunFrom{write}{TwoDimensionalViewport} function.
+%
+\item[\axiomFun{viewWriteDefault}]
+\funArgs{\optArg{list\argDef{[]}}}
+sets or indicates the default types of files, in
+addition to the {\bf data} file, that are created when a
+\axiomFun{write} function is executed on a viewport.
+%
+\item[\axiomFun{units}]\funArgs{viewport, integer\argDef{1}, string\argDef{"off"}}
+turns the units on or off for the graph with index {\it integer}.
+%
+\item[\axiomFun{axes}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
+turns the axes on
+or off for the graph with index {\it integer}.
+%
+\item[\axiomFun{close}]\funArgs{viewport}
+closes {\it viewport}.
+%
+\item[\axiomFun{connect}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
+declares whether lines
+connecting the points are displayed or not.
+%
+\item[\axiomFun{controlPanel}]\funArgs{viewport, string\argDef{"off"}}
+declares
+whether the \twodim{} control-panel is automatically displayed
+or not.
+%
+\item[\axiomFun{graphs}]\funArgs{viewport}
+returns a list
+describing the state of each graph.
+If the graph state is not being used this is shown by {\tt "undefined"},
+otherwise a description of the graph's contents is shown.
+%
+\item[\axiomFun{graphStates}]\funArgs{viewport}
+displays
+a list of all the graph states available for {\it viewport}, giving the
+values for every property.
+%
+\item[\axiomFun{key}]\funArgs{viewport}
+returns the process
+ID number for {\it viewport}.
+%
+\item[\axiomFun{move}]\funArgs{viewport,
+\subscriptText{integer}{x}(viewPosDefault),
+\subscriptText{integer}{y}(viewPosDefault)}
+moves {\it viewport} on the screen so that the
+upper left-hand corner of {\it viewport} is at the position {\it (x,y)}.
+%
+\item[\axiomFun{options}]\funArgs{\it viewport}
+returns a list
+of all the \axiomType{DrawOption}s used by {\it viewport}.
+%
+\item[\axiomFun{points}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
+specifies whether the graph points for graph {\it integer} are
+to be displayed or not.
+%
+\item[\axiomFun{region}]\funArgs{viewport, integer\argDef{1}, string\argDef{"off"}}
+declares whether graph {\it integer} is or is not to be displayed
+with a bounding rectangle.
+%
+\item[\axiomFun{reset}]\funArgs{viewport}
+resets all the properties of {\it viewport}.
+%
+\item[\axiomFun{resize}]\funArgs{viewport,
+\subscriptText{integer}{width}, \subscriptText{integer}{height}}
+resizes {\it viewport} with a new {\it width} and {\it height}.
+%
+\item[\axiomFun{scale}]\funArgs{viewport, \subscriptText{integer}{n}\argDef{1},
+\subscriptText{integer}{x}\argDef{0.9}, \subscriptText{integer}{y}\argDef{0.9}}
+scales values for the
+{\it x} and {\it y} coordinates of graph {\it n}.
+%
+\item[\axiomFun{show}]\funArgs{viewport, \subscriptText{integer}{n}\argDef{1},
+string\argDef{"on"}}
+indicates if graph {\it n} is shown or not.
+%
+\item[\axiomFun{title}]\funArgs{viewport, string\argDef{"Axiom 2D"}}
+designates the title for {\it viewport}.
+%
+\item[\axiomFun{translate}]\funArgs{viewport,
+\subscriptText{integer}{n}\argDef{1},
+\subscriptText{float}{x}\argDef{0.0}, \subscriptText{float}{y}\argDef{0.0}}
+causes graph {\it n} to be moved {\it x} and {\it y} units in the respective directions.
+%
+\item[\axiomFun{write}]\funArgs{viewport, \subscriptText{string}{directory},
+\optArg{strings}}
+if no third argument is given, writes the {\bf data} file onto the directory
+with extension {\bf data}.
+The third argument can be a single string or a list of strings with some or
+all the entries {\tt "pixmap"}, {\tt "bitmap"}, {\tt "postscript"}, and
+{\tt "image"}.
+\enditems
+\indent{0}
+\texht{\egroup}{}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDbuildTitle}{Addendum: Building Two-Dimensional Graphs}
+\newcommand{\ugGraphTwoDbuildNumber}{7.1.9.}
+
+@
+\section{Addendum: Building Two-Dimensional Graphs}
+\label{ugGraphTwoDbuildPage}
+\index{pages!ugGraphTwoDbuildPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDbuildPage}
+\index{ugGraphTwoDbuildPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDbuildPage}
+{7.1.9. Addendum: Building Two-Dimensional Graphs}
+\beginscroll
+
+In this section we demonstrate how to create \twodim{} graphs from
+lists of points and give an example showing how to read the lists
+of points from a file.
+
+\subsubsection{Creating a Two-Dimensional Viewport from a List of Points}
+
+Axiom creates lists of points in a \twodim{} viewport by utilizing
+the \axiomType{GraphImage} and \axiomType{TwoDimensionalViewport} domains.
+In this example, the \axiomFunFrom{makeGraphImage}{GraphImage}
+function takes a list of lists of points parameter, a list of colors for
+each point in the graph, a list of colors for each line in the graph, and
+a list of sizes for each point in the graph.
+%
+\xtc{
+The following expressions create a list of lists of points which will be read
+by Axiom and made into a \twodim{} viewport.
+}{
+\spadpaste{p1 := point [1,1]\$(Point DFLOAT) \bound{p1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := point [0,1]\$(Point DFLOAT) \bound{p2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := point [0,0]\$(Point DFLOAT) \bound{p3}}
+}
+\xtc{
+}{
+\spadpaste{p4 := point [1,0]\$(Point DFLOAT) \bound{p4}}
+}
+\xtc{
+}{
+\spadpaste{p5 := point [1,.5]\$(Point DFLOAT) \bound{p5}}
+}
+\xtc{
+}{
+\spadpaste{p6 := point [.5,0]\$(Point DFLOAT) \bound{p6}}
+}
+\xtc{
+}{
+\spadpaste{p7 := point [0,0.5]\$(Point DFLOAT) \bound{p7}}
+}
+\xtc{
+}{
+\spadpaste{p8 := point [.5,1]\$(Point DFLOAT) \bound{p8}}
+}
+\xtc{
+}{
+\spadpaste{p9 := point [.25,.25]\$(Point DFLOAT) \bound{p9}}
+}
+\xtc{
+}{
+\spadpaste{p10 := point [.25,.75]\$(Point DFLOAT) \bound{p10}}
+}
+\xtc{
+}{
+\spadpaste{p11 := point [.75,.75]\$(Point DFLOAT) \bound{p11}}
+}
+\xtc{
+}{
+\spadpaste{p12 := point [.75,.25]\$(Point DFLOAT) \bound{p12}}
+}
+\xtc{
+Finally, here is the list.
+}{
+\spadpaste{llp := [[p1,p2], [p2,p3], [p3,p4], [p4,p1], [p5,p6], [p6,p7], [p7,p8], [p8,p5], [p9,p10], [p10,p11], [p11,p12], [p12,p9]] \free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12} \bound{llp}}
+}
+\xtc{
+Now we set the point sizes for all components of the graph.
+}{
+\spadpaste{size1 := 6::PositiveInteger \bound{size1}}
+}
+\xtc{
+}{
+}
+\xtc{
+}{
+\spadpaste{size2 := 8::PositiveInteger \bound{size2}}
+}
+\xtc{
+}{
+\spadpaste{size3 := 10::PositiveInteger \bound{size3}}
+}
+\xtc{
+}{
+\spadpaste{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3] \bound{lsize} \free{size1 size2 size3}}
+}
+\xtc{
+Here are the colors for the points.
+}{
+\spadpaste{pc1 := pastel red() \bound{pc1}}
+}
+\xtc{
+}{
+\spadpaste{pc2 := dim green() \bound{pc2}}
+}
+\xtc{
+}{
+\spadpaste{pc3 := pastel yellow() \bound{pc3}}
+}
+\xtc{
+}{
+\spadpaste{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3] \free{pc1 pc2 pc3} \bound{lpc}}
+}
+\xtc{
+Here are the colors for the lines.
+}{
+\spadpaste{lc := [pastel blue(), light yellow(), dim green(), bright red(), light green(), dim yellow(), bright blue(), dark red(), pastel red(), light blue(), dim green(), light yellow()] \bound{lc}}
+}
+\xtc{
+Now the \axiomType{GraphImage} is created according to the component
+specifications indicated above.
+}{
+\spadpaste{g := makeGraphImage(llp,lpc,lc,lsize)\$GRIMAGE \bound{g} \free{llp lpc lc lsize}}
+}
+\psXtc{
+The \axiomFunFrom{makeViewport2D}{TwoDimensionalViewport} function now
+creates a \axiomType{TwoDimensionalViewport} for this graph according to the
+list of options specified within the brackets.
+}{
+\graphpaste{makeViewport2D(g,[title("Lines")])\$VIEW2D \free{g}}
+}{
+%
+}
+%See Figure #.#.
+\xtc{
+This example demonstrates the use of the \axiomType{GraphImage} functions
+\axiomFunFrom{component}{GraphImage} and \axiomFunFrom{appendPoint}{GraphImage}
+in adding points to an empty \axiomType{GraphImage}.
+}{
+\spadpaste{)clear all \bound{clearAll}}
+}
+\xtc{
+}{
+\spadpaste{g := graphImage()\$GRIMAGE \bound{Sg}\free{clearAll}}
+}
+\xtc{
+}{
+\spadpaste{p1 := point [0,0]\$(Point DFLOAT) \bound{Sp1}}
+}
+\xtc{
+}{
+\spadpaste{p2 := point [.25,.25]\$(Point DFLOAT) \bound{Sp2}}
+}
+\xtc{
+}{
+\spadpaste{p3 := point [.5,.5]\$(Point DFLOAT) \bound{Sp3}}
+}
+\xtc{
+}{
+\spadpaste{p4 := point [.75,.75]\$(Point DFLOAT) \bound{Sp4}}
+}
+\xtc{
+}{
+\spadpaste{p5 := point [1,1]\$(Point DFLOAT) \bound{Sp5}}
+}
+\xtc{
+}{
+\spadpaste{component(g,p1)\$GRIMAGE\free{Sg Sp1}\bound{gp1}}
+}
+\xtc{
+}{
+\spadpaste{component(g,p2)\$GRIMAGE\free{Sg Sp2}\bound{gp2}}
+}
+\xtc{
+}{
+\spadpaste{appendPoint(g,p3)\$GRIMAGE\free{gp1 gp2 Sp3}\bound{gp3}}
+}
+\xtc{
+}{
+\spadpaste{appendPoint(g,p4)\$GRIMAGE\free{gp3 Sp4}\bound{gp4}}
+}
+\xtc{
+}{
+\spadpaste{appendPoint(g,p5)\$GRIMAGE\free{gp4 Sp5}\bound{gp5}}
+}
+\xtc{
+}{
+\spadpaste{g1 := makeGraphImage(g)\$GRIMAGE \bound{Sg1} \free{gp5}}
+}
+\psXtc{
+Here is the graph.
+}{
+\graphpaste{makeViewport2D(g1,[title("Graph Points")])\$VIEW2D \free{Sg1}}
+}{
+%
+}
+%
+%See Figure #.#.
+%
+\xtc{
+A list of points can also be made into a \axiomType{GraphImage} by using
+the operation \axiomFunFrom{coerce}{GraphImage}.  It is equivalent to adding
+each point to \axiom{g2} using \axiomFunFrom{component}{GraphImage}.
+}{
+\spadpaste{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])\$GRIMAGE  \free{Sp1 Sp2 Sp3 Sp4 Sp5} \bound{Sg2}}
+}
+\xtc{
+Now, create an empty \axiomType{TwoDimensionalViewport}.
+}{
+\spadpaste{v := viewport2D()\$VIEW2D \bound{Sv}}
+}
+\xtc{
+}{
+\spadpaste{options(v,[title("Just Points")])\$VIEW2D \free{Sv}\bound{Svo}}
+}
+\xtc{
+Place the graph into the viewport.
+}{
+\spadpaste{putGraph(v,g2,1)\$VIEW2D \free{Sg2 Svo}\bound{Svog2}}
+}
+\psXtc{
+Take a look.
+}{
+\graphpaste{makeViewport2D(v)\$VIEW2D \free{Svog2}}
+}{
+%
+}
+
+%See Figure #.#.
+
+\subsubsection{Creating a Two-Dimensional Viewport of a List of Points from a File}
+
+The following three functions read a list of points from a
+file and then draw the points and the connecting lines. The
+points are stored in the file in readable form as floating point numbers
+(specifically, \axiomType{DoubleFloat} values) as an alternating
+stream of \axiom{x}- and \axiom{y}-values. For example,
+\begin{verbatim}
+0.0 0.0     1.0 1.0     2.0 4.0
+3.0 9.0     4.0 16.0    5.0 25.0
+\end{verbatim}
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ drawPoints(lp:List\ Point\ DoubleFloat):VIEW2D\ ==}\newline
+{\tt 2.\ \ \ \ \ g\ :=\ graphImage()\$GRIMAGE}\newline
+{\tt 3.\ \ \ \ \ for\ p\ in\ lp\ repeat}\newline
+{\tt 4.\ \ \ \ \ \ \ component(g,p,pointColorDefault(),lineColorDefault(),}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ pointSizeDefault())}\newline
+{\tt 6.\ \ \ \ \ gi\ :=\ makeGraphImage(g)\$GRIMAGE}\newline
+{\tt 7.\ \ \ \ \ makeViewport2D(gi,[title("Points")])\$VIEW2D}\newline
+{\tt 8.\ \ \ }\newline
+{\tt 9.\ \ \ drawLines(lp:List\ Point\ DoubleFloat):VIEW2D\ ==}\newline
+{\tt 10.\ \ \ \ g\ :=\ graphImage()\$GRIMAGE}\newline
+{\tt 11.\ \ \ \ component(g,\ lp,\ pointColorDefault(),\ lineColorDefault(),}\newline
+{\tt 12.\ \ \ \ \ \ pointSizeDefault())\$GRIMAGE}\newline
+{\tt 13.\ \ \ \ gi\ :=\ makeGraphImage(g)\$GRIMAGE}\newline
+{\tt 14.\ \ \ \ makeViewport2D(gi,[title("Points")])\$VIEW2D}\newline
+{\tt 15.\ \ }\newline
+{\tt 16.\ \ plotData2D(name,\ title)\ ==}\newline
+{\tt 17.\ \ \ \ f:File(DFLOAT)\ :=\ open(name,"input")}\newline
+{\tt 18.\ \ \ \ lp:LIST(Point\ DFLOAT)\ :=\ empty()}\newline
+{\tt 19.\ \ \ \ while\ ((x\ :=\ readIfCan!(f))\ case\ DFLOAT)\ repeat}\newline
+{\tt 20.\ \ \ \ \ \ y\ :\ DFLOAT\ :=\ read!(f)}\newline
+{\tt 21.\ \ \ \ \ \ lp\ :=\ cons(point\ [x,y]\$(Point\ DFLOAT),\ lp)}\newline
+{\tt 22.\ \ \ \ \ \ lp}\newline
+{\tt 23.\ \ \ \ close!(f)}\newline
+{\tt 24.\ \ \ \ drawPoints(lp)}\newline
+{\tt 25.\ \ \ \ drawLines(lp)}\newline
+\endImportant
+%
+This command will actually create the viewport and the graph if
+the point data is in the file \axiom{"file.data"}.
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ plotData2D("file.data",\ "2D\ Data\ Plot")}\newline
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphTwoDappendTitle}{Addendum: Appending a Graph to a Viewport Window Containing a Graph}
+\newcommand{\ugGraphTwoDappendNumber}{7.1.10.}
+
+@
+\section{Addendum: Appending a Graph to a Viewport Window Containing a Graph}
+\label{ugGraphTwoDappendPage}
+\index{pages!ugGraphTwoDappendPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphTwoDappendPage}
+\index{ugGraphTwoDappendPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphTwoDappendPage}
+{7.1.10. Addendum: Appending a Graph to a Viewport Window Containing a Graph}
+\beginscroll
+
+This section demonstrates how to append a \twodim{} graph to a viewport
+already containing other graphs.
+The default \axiomFun{draw} command places a graph into the first
+\axiomType{GraphImage} slot position of the \axiomType{TwoDimensionalViewport}.
+
+\xtc{
+This graph is in the first slot in its viewport.
+}{
+\spadpaste{v1 := draw(sin(x),x=0..2*\%pi) \bound{v1}}
+}
+\xtc{
+So is this graph.
+}{
+\spadpaste{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red()) \bound{v2}}
+}
+\xtc{
+The operation \axiomFunFrom{getGraph}{TwoDimensionalViewport}
+retrieves the \axiomType{GraphImage} \axiom{g1} from the first slot position
+in the viewport \axiom{v1}.
+}{
+\spadpaste{g1 := getGraph(v1,1) \bound{g1}\free{v1}}
+}
+\xtc{
+Now \axiomFunFrom{putGraph}{TwoDimensionalViewport}
+places \axiom{g1} into the the second slot position of \axiom{v2}.
+}{
+\spadpaste{putGraph(v2,g1,2) \bound{v22}\free{g1 v2}}
+}
+\psXtc{
+Display the new \axiomType{TwoDimensionalViewport} containing both graphs.
+}{
+\graphpaste{makeViewport2D(v2) \free{v22}}
+}{
+%
+}
+%
+%See Figure #.#.
+%
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDTitle}{Three-Dimensional Graphics}
+\newcommand{\ugGraphThreeDNumber}{7.2.}
+
+@
+\section{Three-Dimensional Graphics}
+\label{ugGraphThreeDPage}
+\begin{itemize}
+\item ugGraphThreeDPlotPage \ref{ugGraphThreeDPlotPage} on
+page~\pageref{ugGraphThreeDPlotPage}
+\item ugGraphThreeDParmPage \ref{ugGraphThreeDParmPage} on
+page~\pageref{ugGraphThreeDParmPage}
+\item ugGraphThreeDParPage \ref{ugGraphThreeDParPage} on
+page~\pageref{ugGraphThreeDParPage}
+\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
+page~\pageref{ugGraphThreeDOptionsPage}
+\item ugGraphMakeObjectPage \ref{ugGraphMakeObjectPage} on
+page~\pageref{ugGraphMakeObjectPage}
+\item ugGraphThreeDBuildPage \ref{ugGraphThreeDBuildPage} on
+page~\pageref{ugGraphThreeDBuildPage}
+\item ugGraphCoordPage \ref{ugGraphCoordPage} on
+page~\pageref{ugGraphCoordPage}
+\item ugGraphClipPage \ref{ugGraphClipPage} on
+page~\pageref{ugGraphClipPage}
+\item ugGraphThreeDControlPage \ref{ugGraphThreeDControlPage} on
+page~\pageref{ugGraphThreeDControlPage}
+\item ugGraphThreeDopsPage \ref{ugGraphThreeDopsPage} on
+page~\pageref{ugGraphThreeDopsPage}
+\item ugXdefaultsPage \ref{ugXdefaultsPage} on
+page~\pageref{ugXdefaultsPage}
+\end{itemize}
+\index{pages!ugGraphThreeDPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDPage}
+\index{ugGraphThreeDPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDPage}{7.2. Three-Dimensional Graphics}
+\beginscroll
+%
+The Axiom \threedim{} graphics package provides the ability to
+%
+\indent{4}
+\beginitems
+%
+\item[-] generate surfaces defined by a function of two real variables
+%
+\item[-] generate space curves and tubes defined by parametric equations
+%
+\item[-] generate surfaces defined by parametric equations
+\enditems
+\indent{0}
+These graphs can be modified by using various options, such as calculating
+points in the spherical coordinate system or changing the polygon grid size
+of a surface.
+
+\beginmenu
+    \menudownlink{
+{7.2.1. Plotting Three-Dimensional Functions of Two Variables}}
+{ugGraphThreeDPlotPage}
+    \menudownlink{
+{7.2.2. Plotting Three-Dimensional Parametric Space Curves}}
+{ugGraphThreeDParmPage}
+    \menudownlink{
+{7.2.3. Plotting Three-Dimensional Parametric Surfaces}}
+{ugGraphThreeDParPage}
+    \menudownlink{{7.2.4. Three-Dimensional Options}}{ugGraphThreeDOptionsPage}
+    \menudownlink{{7.2.5. The makeObject Command}}{ugGraphMakeObjectPage}
+    \menudownlink{
+{7.2.6. Building Three-Dimensional Objects From Primitives}}
+{ugGraphThreeDBuildPage}
+    \menudownlink{{7.2.7. Coordinate System Transformations}}{ugGraphCoordPage}
+    \menudownlink{{7.2.8. Three-Dimensional Clipping}}{ugGraphClipPage}
+    \menudownlink{{7.2.9. Three-Dimensional Control-Panel}}
+{ugGraphThreeDControlPage}
+    \menudownlink{{7.2.10. Operations for Three-Dimensional Graphics}}
+{ugGraphThreeDopsPage}
+    \menudownlink{{7.2.11. Customization using .Xdefaults}}{ugXdefaultsPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDPlotTitle}{Plotting Three-Dimensional Functions of Two Variables}
+\newcommand{\ugGraphThreeDPlotNumber}{7.2.1.}
+
+@
+\section{Plotting Three-Dimensional Functions of Two Variables}
+\label{ugGraphThreeDPlotPage}
+\begin{itemize}
+\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
+page~\pageref{ugGraphThreeDOptionsPage}
+\end{itemize}
+\index{pages!ugGraphThreeDPlotPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDPlotPage}
+\index{ugGraphThreeDPlotPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDPlotPage}
+{7.2.1. Plotting Three-Dimensional Functions of Two Variables}
+\beginscroll
+
+The simplest \threedim{} graph is that of a surface defined by a function
+of two variables, \axiom{z = f(x,y)}.
+
+%
+\beginImportant
+The general format for drawing a surface defined by a formula \axiom{f(x,y)}
+of two variables \axiom{x} and \axiom{y} is:
+%
+\centerline{{{\tt draw(f(x,y), x = a..b, y = c..d, {\it options})}}}
+where \axiom{a..b} and \axiom{c..d} define the range of \axiom{x}
+and \axiom{y}, and where {\it options} prescribes zero or more
+options as described in 
+\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
+in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
+An example of an option is \axiom{title == "Title of Graph".}
+An alternative format involving a function \axiom{f} is also
+available.
+\endImportant
+
+%
+\psXtc{
+The simplest way to plot a function of two variables is to use a formula.
+With formulas you always precede the range specifications with
+the variable name and an \spadSyntax{=} sign.
+}{
+\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3)}
+}{
+\epsffile[0 0 295 295]{../ps/3d2vara.ps}
+}
+%
+\xtc{
+If you intend to use a function more than once,
+or it is long and complex, then first
+give its definition to Axiom.
+}{
+\spadpaste{f(x,y) == sin(x)*cos(y) \bound{f}}
+}
+%
+%
+\psXtc{
+To draw the function, just give its name and drop the variables
+from the range specifications.
+Axiom compiles your function for efficient computation
+of data for the graph.
+Notice that Axiom uses the text of your function as a
+default title.
+}{
+\graphpaste{draw(f,-\%pi..\%pi,-\%pi..\%pi) \free{f}}
+}{
+\epsffile[0 0 295 295]{../ps/3d2varb.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDParmTitle}{Plotting Three-Dimensional Parametric Space Curves}
+\newcommand{\ugGraphThreeDParmNumber}{7.2.2.}
+
+@
+\section{Plotting Three-Dimensional Parametric Space Curves}
+\label{ugGraphThreeDParmPage}
+\begin{itemize}
+\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
+page~\pageref{ugGraphThreeDOptionsPage}
+\end{itemize}
+\index{pages!ugGraphThreeDParmPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDParmPage}
+\index{ugGraphThreeDParmPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDParmPage}
+{7.2.2. Plotting Three-Dimensional Parametric Space Curves}
+\beginscroll
+
+A second kind of \threedim{} graph is a \threedim{} space curve
+defined by the parametric equations for \axiom{x(t)}, \axiom{y(t)},
+and \axiom{z(t)} as a function of an independent variable \axiom{t}.
+
+%
+\beginImportant
+The general format for drawing a \threedim{} space curve defined by
+parametric formulas \axiom{x = f(t)}, \axiom{y = g(t)}, and
+\axiom{z = h(t)} is:
+%
+\centerline{{{\tt draw(curve(f(t),g(t),h(t)), t = a..b, {\it options})}}}
+where \axiom{a..b} defines the range of the independent variable
+\axiom{t}, and where {\it options} prescribes zero or more options
+as described in 
+\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
+in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
+An example of an option is \axiom{title == "Title of Graph".}
+An alternative format involving functions \axiom{f}, \axiom{g} and
+\axiom{h} is also available.
+\endImportant
+
+%
+\psXtc{
+If you use explicit formulas to draw a space curve, always precede
+the range specification with the variable name and an
+\spadSyntax{=} sign.
+}{
+\graphpaste{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
+}{
+\epsffile[0 0 295 295]{../ps/3dpsca.ps}
+}
+%
+\xtc{
+Alternatively, you can draw space curves by referring to functions.
+}{
+\spadpaste{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5) \bound{i1}}
+}
+\xtc{
+This is useful if the functions are to be used more than once \ldots
+}{
+\spadpaste{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5) \bound{i2}}
+}
+\xtc{
+or if the functions are long and complex.
+}{
+\spadpaste{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5) \bound{i3}}
+}
+%
+%
+\psXtc{
+Give the names of the functions and
+drop the variable name specification in the second argument.
+Again, Axiom supplies a default title.
+}{
+\graphpaste{draw(curve(i1,i2,i3),0..15*\%pi) \free{i1 i2 i3}}
+}{
+\epsffile[0 0 295 295]{../ps/3dpscb.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDParTitle}{Plotting Three-Dimensional Parametric Surfaces}
+\newcommand{\ugGraphThreeDParNumber}{7.2.3.}
+
+@
+\section{Plotting Three-Dimensional Parametric Surfaces}
+\label{ugGraphThreeDParPage}
+\begin{itemize}
+\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
+page~\pageref{ugGraphThreeDOptionsPage}
+\item ugGraphCoordPage \ref{ugGraphCoordPage} on
+page~\pageref{ugGraphCoordPage}
+\end{itemize}
+\index{pages!ugGraphThreeDParPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDParPage}
+\index{ugGraphThreeDParPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDParPage}
+{7.2.3. Plotting Three-Dimensional Parametric Surfaces}
+\beginscroll
+
+A third kind of \threedim{} graph is a surface defined by
+parametric equations for \axiom{x(u,v)}, \axiom{y(u,v)}, and
+\axiom{z(u,v)} of two independent variables \axiom{u} and \axiom{v}.
+
+%
+\beginImportant
+The general format for drawing a \threedim{} graph defined by
+parametric formulas \axiom{x = f(u,v)}, \axiom{y = g(u,v)},
+and \axiom{z = h(u,v)} is:
+%
+\centerline{{{\tt draw(surface(f(u,v),g(u,v),h(u,v)), u = a..b, v = c..d, {\it options})}}}
+where \axiom{a..b} and \axiom{c..d} define the range of the
+independent variables \axiom{u} and \axiom{v}, and where
+{\it options} prescribes zero or more options as described in
+\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
+in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
+An example of an option is \axiom{title == "Title of Graph".}
+An alternative format involving functions \axiom{f}, \axiom{g} and
+\axiom{h} is also available.
+\endImportant
+
+%
+\psXtc{
+This example draws a graph of a surface plotted using the
+parabolic cylindrical coordinate system option.
+The values of the functions supplied to \axiomFun{surface} are
+interpreted in coordinates as given by a {\tt coordinates} option,
+here as parabolic cylindrical coordinates (see
+\downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} 
+in Section \ugGraphCoordNumber\ignore{ugGraphCoord}).
+}{
+\graphpaste{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
+}{
+\epsffile[0 0 295 295]{../ps/3dpsa.ps}
+}
+%
+Again, you can graph these parametric surfaces using functions,
+if the functions are long and complex.
+\xtc{
+Here we declare the types of arguments and values to be of type
+\axiomType{DoubleFloat}.
+}{
+\spadpaste{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v) \bound{n1}}
+}
+\xtc{
+As shown by previous examples, these declarations are necessary.
+}{
+\spadpaste{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v) \bound{n2}}
+}
+\xtc{
+In either case, Axiom compiles the functions
+when needed to graph a result.
+}{
+\spadpaste{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u \bound{n3}}
+}
+\xtc{
+Without these declarations, you have to suffix floats
+with \axiom{@DFLOAT} to get a \axiomType{DoubleFloat} result.
+However, a call here with an unadorned float 
+produces a \axiomType{DoubleFloat}.
+}{
+\spadpaste{n3(0.5,1.0)\free{n3}}
+}
+%
+%
+\psXtc{
+Draw the surface by referencing the function names, this time
+choosing the toroidal coordinate system.
+}{
+\graphpaste{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1\$DFLOAT)) \free{n1 n2 n3}}
+}{
+\epsffile[0 0 295 295]{../ps/3dpsb.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDOptionsTitle}{Three-Dimensional Options}
+\newcommand{\ugGraphThreeDOptionsNumber}{7.2.4.}
+
+@
+\section{Three-Dimensional Options}
+\label{ugGraphThreeDOptionsPage}
+\begin{itemize}
+\item ugGraphCoordPage \ref{ugGraphCoordPage} on
+page~\pageref{ugGraphCoordPage}
+\end{itemize}
+\index{pages!ugGraphThreeDOptionsPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDOptionsPage}
+\index{ugGraphThreeDOptionsPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDOptionsPage}{7.2.4. Three-Dimensional Options}
+\beginscroll
+
+The \axiomFun{draw} commands optionally take an optional list of options such
+as {\tt coordinates} as shown in the last example.
+Each option is given by the syntax: \axiom{name} {\tt ==} \axiom{value}.
+Here is a list of the available options in the order that they are
+described below:
+
+\table{ {title} {coordinates} {var1Steps} {style} {tubeRadius} {var2Steps}
+{colorFunction} {tubePoints} {space}}
+
+\psXtc{
+The option \axiom{title} gives your graph a title.
+}{
+\graphpaste{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph") }
+}{
+\epsffile[0 0 295 295]{../ps/3doptttl.ps}
+}
+%
+\psXtc{
+The \axiom{style} determines which of four rendering algorithms is used for
+the graph.
+The choices are
+{\tt "wireMesh"}, {\tt "solid"}, {\tt "shade"}, and {\tt "smooth"}.
+}{
+\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
+}{
+\epsffile[0 0 295 295]{../ps/3doptsty.ps}
+}
+%
+
+In all but the wire-mesh style, polygons in a surface or tube plot
+are normally colored in a graph according to their
+\axiom{z}-coordinate value.  Space curves are colored according to their
+parametric variable value.
+To change this, you can give a coloring function.
+The coloring function is sampled across the range of its arguments, then
+normalized onto the standard Axiom colormap.
+
+\xtc{
+A function of one variable  makes the color depend on the
+value of the parametric variable specified for a tube plot.
+}{
+\spadpaste{color1(t) == t \bound{colorFxn1}}
+}
+\psXtc{
+}{
+\graphpaste{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1) \free{colorFxn1}}
+}{
+\epsffile[0 0 295 295]{../ps/3doptcf1.ps}
+}
+%
+\xtc{
+A function of two variables makes the color depend on the
+values of the independent variables.
+}{
+\spadpaste{color2(u,v) == u**2 - v**2 \bound{colorFxn2}}
+}
+\psXtc{
+Use the option {\tt colorFunction} for special coloring.
+}{
+\graphpaste{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2) \free{colorFxn2}}
+}{
+\epsffile[0 0 295 295]{../ps/3doptcf2.ps}
+}
+%
+\xtc{
+With a three variable function, the
+color also depends on the value of the function.
+}{
+\spadpaste{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy) \bound{colorFxn3}}
+}
+\psXtc{
+}{
+\graphpaste{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3) \free{colorFxn3}}
+}{
+\epsffile[0 0 295 295]{../ps/3doptcf3.ps}
+}
+%
+Normally the Cartesian coordinate system is used.
+To change this, use the {\tt coordinates} option.
+For details, see 
+\downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} 
+in Section \ugGraphCoordNumber\ignore{ugGraphCoord}.
+%
+%
+\xtc{
+}{
+\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
+}
+\psXtc{
+Use the spherical
+coordinate system.
+}{
+\graphpaste{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade") \free{m}}
+}{
+\epsffile[0 0 295 295]{../ps/3doptcrd.ps}
+}
+%
+Space curves may be displayed as tubes with polygonal cross sections.
+Two options, {\tt tubeRadius} and {\tt tubePoints},  control the size and
+shape of this cross section.
+%
+\psXtc{
+The {\tt tubeRadius} option specifies the radius of the tube that
+encircles the specified space curve.
+}{
+\graphpaste{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
+}{
+\epsffile[0 0 295 295]{../ps/3doptrad.ps}
+}
+%
+%
+\psXtc{
+The {\tt tubePoints} option specifies the number of vertices
+defining the polygon that is used to create a tube around the
+specified space curve.
+The larger this number is, the more cylindrical the tube becomes.
+}{
+\graphpaste{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
+}{
+\epsffile[0 0 295 295]{../ps/3doptpts.ps}
+}
+%
+%
+%
+\psXtc{
+Options \axiomFunFrom{var1Steps}{DrawOption} and
+\axiomFunFrom{var2Steps}{DrawOption} specify the number of intervals into
+which the grid defining a surface plot is subdivided with respect to the
+first and second parameters of the surface function(s).
+}{
+\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
+}{
+\epsffile[0 0 295 295]{../ps/3doptvb.ps}
+}
+%
+The {\tt space} option
+of a \axiomFun{draw} command lets you build multiple graphs in three space.
+To use this option, first create an empty three-space object,
+then use the {\tt space} option thereafter.
+There is no restriction as to the number or kinds
+of graphs that can be combined this way.
+\xtc{
+Create an empty three-space object.
+}{
+\spadpaste{s := create3Space()\$(ThreeSpace DFLOAT) \bound{s}}
+}
+%
+%
+\xtc{
+}{
+\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
+}
+\psXtc{
+Add a graph to this three-space object.
+The new graph destructively inserts the graph
+into \axiom{s}.
+}{
+\graphpaste{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s) \free{s m}}
+}{
+\epsffile[0 0 295 295]{../ps/3dmult1a.ps}
+}
+%
+%
+\psXtc{
+Add a second graph to \axiom{s}.
+}{
+\graphpaste{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s) \free{s} \bound{v}}
+}{
+\epsffile[0 0 295 295]{../ps/3dmult1b.ps}
+}
+%
+A three-space object can also be obtained from an existing \threedim{} viewport
+using the \axiomFunFrom{subspace}{ThreeSpace} command.
+You can then use \axiomFun{makeViewport3D} to create a viewport window.
+\xtc{
+Assign to \axiom{subsp} the three-space object in viewport \axiom{v}.
+}{
+\spadpaste{subsp := subspace v \free{v} \bound{su}}
+}
+\xtc{
+Reset the space component of \axiom{v} to the value of \axiom{subsp}.
+}{
+\spadpaste{subspace(v, subsp) \bound{sp} \free{su}}
+}
+\noOutputXtc{
+Create a viewport window from a three-space object.
+}{
+\graphpaste{makeViewport3D(subsp,"Graphs") \free{sp}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphMakeObjectTitle}{The makeObject Command}
+\newcommand{\ugGraphMakeObjectNumber}{7.2.5.}
+
+@
+\section{The makeObject Command}
+\label{ugGraphMakeObjectPage}
+\index{pages!ugGraphMakeObjectPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphMakeObjectPage}
+\index{ugGraphMakeObjectPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphMakeObjectPage}{7.2.5. The makeObject Command}
+\beginscroll
+
+An alternate way to create multiple graphs is to use
+\axiomFun{makeObject}.
+The \axiomFun{makeObject} command is similar to the \axiomFun{draw}
+command, except that it returns a three-space object rather than a
+\axiomType{ThreeDimensionalViewport}.
+In fact, \axiomFun{makeObject} is called by the \axiomFun{draw}
+command to create the \axiomType{ThreeSpace} then
+\axiomFunFrom{makeViewport3D}{ThreeDimensionalViewport} to create a
+viewport window.
+
+\xtc{
+}{
+\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
+}
+\noOutputXtc{
+Do the last example a new way.
+First use \axiomFun{makeObject} to
+create a three-space object \axiom{sph}.
+}{
+\spadpaste{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph}\free{m}}
+}
+\noOutputXtc{
+Add a second object to \axiom{sph}.
+}{
+\spadpaste{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25) \free{sph}\bound{v1}}
+}
+\noOutputXtc{
+Create and display a viewport
+containing \axiom{sph}.
+}{
+\graphpaste{makeViewport3D(sph,"Multiple Objects") \free{v1}}
+}
+
+Note that an undefined \axiomType{ThreeSpace} parameter declared in a
+\axiomFun{makeObject} or \axiomFun{draw} command results in an error.
+Use the \axiomFunFrom{create3Space}{ThreeSpace} function to define a
+\axiomType{ThreeSpace}, or obtain a \axiomType{ThreeSpace} that has been
+previously generated before including it in a command line.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDBuildTitle}{Building Three-Dimensional Objects From Primitives}
+\newcommand{\ugGraphThreeDBuildNumber}{7.2.6.}
+
+@
+\section{Building Three-Dimensional Objects From Primitives}
+\label{ugGraphThreeDBuildPage}
+\index{pages!ugGraphThreeDBuildPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDBuildPage}
+\index{ugGraphThreeDBuildPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDBuildPage}
+{7.2.6. Building Three-Dimensional Objects From Primitives}
+\beginscroll
+
+Rather than using the \axiomFun{draw} and \axiomFun{makeObject} commands,
+you can create \threedim{} graphs from primitives.
+Operation \axiomFunFrom{create3Space}{ThreeSpace} creates a
+three-space object to which points, curves and polygons
+can be added using the operations from the \axiomType{ThreeSpace}
+domain.
+The resulting object can then be displayed in a viewport using
+\axiomFunFrom{makeViewport3D}{ThreeDimensionalViewport}.
+
+\xtc{
+Create the empty three-space object \axiom{space}.
+}{
+\spadpaste{space := create3Space()\$(ThreeSpace DFLOAT) \bound{space}}
+}
+
+Objects can be sent to this \axiom{space} using the operations
+exported by the \axiomType{ThreeSpace} domain.
+The following examples place curves into \axiom{space}.
+
+\xtc{
+Add these eight curves to the space.
+}{
+\spadpaste{closedCurve(space,[[0,30,20], [0,30,30], [0,40,30], [0,40,100], [0,30,100],[0,30,110], [0,60,110], [0,60,100], [0,50,100], [0,50,30], [0,60,30], [0,60,20]]) \bound{curve1} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[80,0,30], [80,0,100], [70,0,110], [40,0,110], [30,0,100], [30,0,90], [40,0,90], [40,0,95], [45,0,100], [65,0,100], [70,0,95], [70,0,35]]) \bound{curve2} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[70,0,35], [65,0,30], [45,0,30], [40,0,35], [40,0,60], [50,0,60], [50,0,70], [30,0,70], [30,0,30], [40,0,20], [70,0,20], [80,0,30]]) \bound{curve3} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[0,70,20], [0,70,110], [0,110,110], [0,120,100], [0,120,70], [0,115,65], [0,120,60], [0,120,30], [0,110,20], [0,80,20], [0,80,30], [0,80,20]]) \bound{curve4} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[0,105,30], [0,110,35], [0,110,55], [0,105,60], [0,80,60], [0,80,70], [0,105,70], [0,110,75], [0,110,95], [0,105,100], [0,80,100], [0,80,20], [0,80,30]]) \bound{curve5} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[140,0,20], [140,0,110], [130,0,110], [90,0,20], [101,0,20],[114,0,50], [130,0,50], [130,0,60], [119,0,60], [130,0,85], [130,0,20]]) \bound{curve6} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[0,140,20], [0,140,110], [0,150,110], [0,170,50], [0,190,110], [0,200,110], [0,200,20], [0,190,20], [0,190,75], [0,175,35], [0,165,35],[0,150,75], [0,150,20]]) \bound{curve7} \free{space}}
+}
+\xtc{
+}{
+\spadpaste{closedCurve(space,[[200,0,20], [200,0,110], [189,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [161,0,20], [190,0,85], [190,0,20]]) \bound{curve8} \free{space}}
+}
+\psXtc{
+Create and display the viewport using \axiomFun{makeViewport3D}.
+Options may also be given but here are displayed as a list with values
+enclosed in parentheses.
+}{
+\graphpaste{makeViewport3D(space, title == "Letters") \free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8}}
+}{
+\epsffile[0 0 295 295]{../ps/3dbuilda.ps}
+}
+
+\subsubsection{Cube Example}
+
+As a second example of the use of primitives, we generate a cube using a
+polygon mesh.
+It is important to use a consistent orientation of the polygons for
+correct generation of \threedim{} objects.
+
+\xtc{
+Again start with an empty three-space object.
+}{
+\spadpaste{spaceC := create3Space()\$(ThreeSpace DFLOAT) \bound{spaceC}}
+}
+\xtc{
+For convenience,
+give \axiomType{DoubleFloat} values \axiom{+1} and \axiom{-1} names.
+}{
+\spadpaste{x: DFLOAT := 1 \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{y: DFLOAT := -1 \bound{y}}
+}
+\xtc{
+Define the vertices of the cube.
+}{
+\spadpaste{a := point [x,x,y,1::DFLOAT]\$(Point DFLOAT) \bound{a} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{b := point [y,x,y,4::DFLOAT]\$(Point DFLOAT) \bound{b} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{c := point [y,x,x,8::DFLOAT]\$(Point DFLOAT) \bound{c} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{d := point [x,x,x,12::DFLOAT]\$(Point DFLOAT) \bound{d} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{e := point [x,y,y,16::DFLOAT]\$(Point DFLOAT) \bound{e} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{f := point [y,y,y,20::DFLOAT]\$(Point DFLOAT) \bound{f} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{g := point [y,y,x,24::DFLOAT]\$(Point DFLOAT) \bound{g} \free{x y}}
+}
+\xtc{
+}{
+\spadpaste{h := point [x,y,x,27::DFLOAT]\$(Point DFLOAT) \bound{h} \free{x y}}
+}
+\xtc{
+Add the faces of the cube as polygons to the space using a
+consistent orientation.
+}{
+\spadpaste{polygon(spaceC,[d,c,g,h]) \free{d c g h spaceC} \bound{pol1}}
+}
+\xtc{
+}{
+\spadpaste{polygon(spaceC,[d,h,e,a]) \free{d h e a spaceC} \bound{pol2}}
+}
+\xtc{
+}{
+\spadpaste{polygon(spaceC,[c,d,a,b]) \free{c d a b spaceC} \bound{pol3}}
+}
+\xtc{
+}{
+\spadpaste{polygon(spaceC,[g,c,b,f]) \free{g c b f spaceC} \bound{pol4}}
+}
+\xtc{
+}{
+\spadpaste{polygon(spaceC,[h,g,f,e]) \free{h g f e spaceC} \bound{pol5}}
+}
+\xtc{
+}{
+\spadpaste{polygon(spaceC,[e,f,b,a]) \free{e f b a spaceC} \bound{pol6}}
+}
+\psXtc{
+Create and display the viewport.
+}{
+\graphpaste{makeViewport3D(spaceC, title == "Cube") \free{pol1 pol2 pol3 pol4 pol5 pol6}}
+}{
+\epsffile[0 0 295 295]{../ps/3dbuildb.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphCoordTitle}{Coordinate System Transformations}
+\newcommand{\ugGraphCoordNumber}{7.2.7.}
+
+@
+\section{Coordinate System Transformations}
+\label{ugGraphCoordPage}
+\index{pages!ugGraphCoordPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphCoordPage}
+\index{ugGraphCoordPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphCoordPage}{7.2.7. Coordinate System Transformations}
+\beginscroll
+
+The \axiomType{CoordinateSystems} package provides coordinate transformation
+functions that map a given data point from the coordinate system specified
+into the Cartesian coordinate system.
+The default coordinate system, given a triplet \axiom{(f(u,v), u, v)}, assumes
+that \axiom{z = f(u, v)}, \axiom{x = u} and \axiom{y = v},
+that is, reads the coordinates in \axiom{(z, x, y)} order.
+
+\xtc{
+}{
+\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2 \bound{m}}
+}
+%
+\psXtc{
+Graph plotted in default coordinate system.
+}{
+\graphpaste{draw(m,0..3,0..5) \free{m}}
+}{
+\epsffile[0 0 295 295]{../ps/defcoord.ps}
+}
+
+The \axiom{z} coordinate comes first since the first argument of
+the \axiomFun{draw} command gives its values.
+In general, the coordinate systems Axiom provides, or any
+that you make up, must provide a map to an \axiom{(x, y, z)} triplet in
+order to be compatible with the
+\axiomFunFrom{coordinates}{DrawOption} \axiomType{DrawOption}.
+Here is an example.
+
+\xtc{
+Define the identity function.
+}{
+\spadpaste{cartesian(point:Point DFLOAT):Point DFLOAT == point \bound{cart}}
+}
+\psXtc{
+Pass \axiom{cartesian} as the \axiomFunFrom{coordinates}{DrawOption}
+parameter to the \axiomFun{draw} command.
+}{
+\graphpaste{draw(m,0..3,0..5,coordinates==cartesian) \free{m cart}}
+}{
+\epsffile[0 0 295 295]{../ps/cartcoord.ps}
+}
+%
+
+What happened?
+The option {\tt coordinates == cartesian} directs Axiom to
+treat the dependent variable \axiom{m} defined by
+\texht{$m=u^2$}{m=u**2} as the \axiom{x} coordinate.
+Thus the triplet of values \axiom{(m, u, v)} is transformed to
+coordinates \axiom{(x, y, z)} and so we get the graph of
+\texht{$x=y^2$}{x=y**2}.
+
+Here is another example.
+The \axiomFunFrom{cylindrical}{CoordinateSystems} transform takes
+input of the form \axiom{(w,u,v)}, interprets it in the order
+\texht{($r$,$\theta$,$z$)}{(\axiom{r}, \axiom{theta}, \axiom{z})}
+and maps it to the Cartesian coordinates
+\texht{$x=r\cos(\theta)$, $y=r\sin(\theta)$, $z=z$}
+{\axiom{x = r * cos(theta)}, \axiom{y = r * sin(theta)}, \axiom{z = z}}
+in which
+\texht{$r$}{\axiom{r}} is the radius,
+\texht{$\theta$}{\axiom{theta}} is the angle and
+\texht{$z$}{\axiom{z}} is the z-coordinate.
+\xtc{
+An example using the \axiomFunFrom{cylindrical}{CoordinateSystems}
+coordinates for the constant \axiom{r = 3}.
+}{
+\spadpaste{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3 \bound{f}}
+}
+\psXtc{
+Graph plotted in cylindrical coordinates.
+}{
+\graphpaste{draw(f,0..\%pi,0..6,coordinates==cylindrical) \free{f}}
+}{
+\epsffile[0 0 295 295]{../ps/cylcoord.ps}
+}
+
+Suppose you would like to specify \smath{z} as a function of
+\smath{r} and \texht{$\theta$}{\axiom{theta}} instead of just
+\smath{r}?
+Well, you still can use the \axiomFun{cylindrical} Axiom
+transformation but we have to reorder the triplet before
+passing it to the transformation.
+
+\xtc{
+First, let's create a point to
+work with and call it \axiom{pt} with some color \axiom{col}.
+}{
+\spadpaste{col := 5 \bound{c}}
+}
+\xtc{
+}{
+\spadpaste{pt := point[1,2,3,col]\$(Point DFLOAT) \free{c} \bound{pt}}
+}
+The reordering you want is
+\texht{$(z,r, \theta)$}{\axiom{(z,r,theta)}} to
+\texht{$(r, \theta,z)$}{\axiom{(r,theta,z)}}
+so that the first element is moved to the third element, while the second
+and third elements move forward and the color element does not change.
+\xtc{
+Define a function \userfun{reorder} to reorder the point elements.
+}{
+\spadpaste{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4] \bound{freo}}
+}
+\xtc{
+The function moves the second and third elements
+forward but the color does not change.
+}{
+\spadpaste{reorder pt \free{pt freo}}
+}
+\xtc{
+The function \userfun{newmap} converts our reordered version of
+the cylindrical coordinate system to the standard
+\texht{$(x,y,z)$}{\axiom{(x,y,z)}} Cartesian system.
+}{
+\spadpaste{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt) \free{freo} \bound{fnewmap}}
+}
+\xtc{
+}{
+\spadpaste{newmap pt \free{fnewmap pt} \bound{new}}
+}
+%
+\psXtc{
+Graph the same function \axiom{f} using the coordinate mapping of the function
+\axiom{newmap}, so it is now interpreted as
+\texht{$z=3$}{\axiom{z = 3}}:
+}{
+\graphpaste{draw(f,0..3,0..2*\%pi,coordinates==newmap) \free{f new}}
+}{
+\epsffile[0 0 295 295]{../ps/newmap.ps}
+}
+
+{\texht{\sloppy}{}
+The \axiomType{CoordinateSystems} package exports the following
+operations:
+\axiomFun{bipolar},
+\axiomFun{bipolarCylindrical},
+\axiomFun{cartesian},
+\axiomFun{conical},
+\axiomFun{cylindrical},
+\axiomFun{elliptic},
+\axiomFun{ellipticCylindrical},
+\axiomFun{oblateSpheroidal},
+\axiomFun{parabolic},
+\axiomFun{parabolicCylindrical},
+\axiomFun{paraboloidal},
+\axiomFun{polar},
+\axiomFun{prolateSpheroidal},
+\axiomFun{spherical}, and
+\axiomFun{toroidal}.
+Use \Browse{} or the \spadcmd{)show} system command
+to get more information.
+
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphClipTitle}{Three-Dimensional Clipping}
+\newcommand{\ugGraphClipNumber}{7.2.8.}
+
+@
+\section{Three-Dimensional Clipping}
+\label{ugGraphClipPage}
+\index{pages!ugGraphClipPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphClipPage}
+\index{ugGraphClipPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphClipPage}{7.2.8. Three-Dimensional Clipping}
+\beginscroll
+
+A \threedim{} graph can be explicitly clipped within the \axiomFun{draw}
+command by indicating a minimum and maximum threshold for the
+given function definition.
+These thresholds can be defined using the Axiom \axiomFun{min}
+and \axiomFun{max} functions.
+\xtc{
+}{
+\begin{spadsrc}[\bound{g}]
+gamma(x,y) ==
+  g := Gamma complex(x,y)
+  point [x, y, max( min(real g, 4), -4), argument g]
+\end{spadsrc}
+}
+\psXtc{
+Here is an example that clips
+the gamma function in order to eliminate the extreme divergence it creates.
+}{
+\graphpaste{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50) \free{g}}
+}{
+\epsffile[0 0 295 295]{../ps/clipgamma.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDControlTitle}{Three-Dimensional Control-Panel}
+\newcommand{\ugGraphThreeDControlNumber}{7.2.9.}
+
+@
+\section{Three-Dimensional Control-Panel}
+\label{ugGraphThreeDControlPage}
+\index{pages!ugGraphThreeDControlPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDControlPage}
+\index{ugGraphThreeDControlPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDControlPage}{7.2.9. Three-Dimensional Control-Panel}
+\beginscroll
+Once you have created a viewport, move your mouse to the viewport
+and click with your left mouse button.
+This displays a control-panel on the side of the viewport
+that is closest to where you clicked.
+
+
+\subsubsection{Transformations}
+
+We recommend you first select the {\bf Bounds} button while
+executing transformations since the bounding box displayed
+indicates the object's position as it changes.
+%
+\indent{0}
+\beginitems
+%
+\item[Rotate:]  A rotation transformation occurs by clicking the mouse
+within the {\bf Rotate} window in the upper left corner of the
+control-panel.
+The rotation is computed in spherical coordinates, using the
+horizontal mouse position to increment or decrement the value of
+the longitudinal angle \texht{$\theta$}{\axiom{theta}} within the
+range of 0 to \texht{2$\pi$}{2*pi} and the vertical mouse position
+to increment or decrement the value of the latitudinal angle
+\texht{$\phi$}{\axiom{phi}} within the range of \texht{-$\pi$}{pi}
+to \texht{$\pi$}{pi}.
+The active mode of rotation is displayed in green on a color
+monitor or in clear text on a black and white monitor, while the
+inactive mode is displayed in red for color display or a mottled
+pattern for black and white.
+%
+\indent{0}
+\beginitems
+%
+\item[origin:]  The {\bf origin} button indicates that the
+rotation is to occur with respect to the origin of the viewing space, that is
+indicated by the axes.
+%
+\item[object:]  The {\bf object} button indicates that the
+rotation is to occur with respect to the center of volume of the object,
+independent of the axes' origin position.
+\enditems
+\indent{0}
+%
+\item[Scale:]  A scaling transformation occurs by clicking the mouse
+within the {\bf Scale} window in the upper center of the
+control-panel, containing a zoom arrow.
+The axes along which the scaling is to occur are indicated by
+selecting the appropriate button above the zoom arrow window.
+The selected axes are displayed in green on a color monitor or in
+clear text on a black and white monitor, while the unselected axes
+are displayed in red for a color display or a mottled pattern for
+black and white.
+%
+\indent{0}
+\beginitems
+%
+\item[uniform:]  Uniform scaling along the {\tt x}, {\tt y}
+and {\tt z} axes occurs when all the axes buttons are selected.
+%
+\item[non-uniform:]  If any of the axes buttons are
+not selected, non-uniform scaling occurs, that is, scaling occurs only in the
+direction of the axes that are selected.
+\enditems
+\indent{0}
+%
+\item[Translate:]  Translation occurs by indicating with the mouse in the
+{\bf Translate} window the direction you want the graph to move.
+This window is located in the upper right corner of the
+control-panel and contains a potentiometer with crossed arrows
+pointing up, down, left and right.
+Along the top of the {\bf Translate} window are three buttons
+({\bf XY},
+{\bf XZ}, and {\bf YZ}) indicating the three orthographic projection planes.
+Each orientates the group as a view into that plane.
+Any translation of the graph occurs only along this plane.
+\enditems
+\indent{0}
+
+\subsubsection{Messages}
+
+The window directly below the potentiometer windows for transformations is
+used to display system messages relating to the viewport, the control-panel
+and the current graph displaying status.
+
+\subsubsection{Colormap}
+
+Directly below the message window is the colormap range indicator
+window.
+The Axiom Colormap shows a sampling of the spectrum from
+which hues can be drawn to represent the colors of a surface.
+The Colormap is composed of five shades for each of the hues along
+this spectrum.
+By moving the markers above and below the Colormap, the range of
+hues that are used to color the existing surface are set.
+The bottom marker shows the hue for the low end of the color range
+and the top marker shows the hue for the upper end of the range.
+Setting the bottom and top markers at the same hue results in
+monochromatic smooth shading of the graph when {\bf Smooth} mode is selected.
+At each end of the Colormap are {\bf +} and {\bf -} buttons.
+When clicked on, these increment or decrement the top or bottom
+marker.
+
+\subsubsection{Buttons}
+
+Below the Colormap window and to the left are located various
+buttons that determine the characteristics of a graph.
+The buttons along the bottom and right hand side all have special
+meanings; the remaining buttons in the first row indicate the mode
+or style used to display the graph.
+The second row are toggles that turn on or off a property of the
+graph.
+On a color monitor, the property is on if green (clear text, on a
+monochrome monitor) and off if red (mottled pattern, on a
+monochrome monitor).
+Here is a list of their functions.
+%
+\indent{0}
+\beginitems
+%
+\item[Wire] displays surface and tube plots as a
+wireframe image in a single color (blue) with no hidden surfaces removed,
+or displays space curve plots in colors based upon their parametric variables.
+This is the fastest mode for displaying a graph.
+This is very useful when you
+want to find a good orientation of your graph.
+%
+\item[Solid] displays the graph with hidden
+surfaces removed, drawing each polygon beginning with the furthest
+from the viewer.
+The edges of the polygons are displayed in the hues specified by
+the range in the Colormap window.
+%
+\item[Shade] displays the graph with hidden
+surfaces removed and with the polygons shaded, drawing each
+polygon beginning with the furthest from the viewer.
+Polygons are shaded in the hues specified by the range in the
+Colormap window using the Phong illumination model.
+%
+\item[Smooth] displays the graph using a
+renderer that computes the graph one line at a time.
+The location and color of the graph at each visible point on the
+screen are determined and displayed using the Phong illumination
+model.
+Smooth shading is done in one of two ways, depending on the range
+selected in the colormap window and the number of colors available
+from the hardware and/or window manager.
+When the top and bottom markers of the colormap range are set to
+different hues, the graph is rendered by dithering between the
+transitions in color hue.
+When the top and bottom markers of the colormap range are set to
+the same hue, the graph is rendered using the Phong smooth shading
+model.
+However, if enough colors cannot be allocated for this purpose,
+the renderer reverts to the color dithering method until a
+sufficient color supply is available.
+For this reason, it may not be possible to render multiple Phong
+smooth shaded graphs at the same time on some systems.
+%
+\item[Bounds] encloses the entire volume of the
+viewgraph within a bounding box, or removes the box if previously selected.
+The region that encloses the entire volume of the viewport graph is displayed.
+%
+\item[Axes] displays Cartesian
+coordinate axes of the space, or turns them off if previously selected.
+%
+\item[Outline] causes
+quadrilateral polygons forming the graph surface to be outlined in black when
+the graph is displayed in {\bf Shade} mode.
+%
+\item[BW] converts a color viewport to black and white, or vice-versa.
+When this button is selected the
+control-panel and viewport switch to an immutable colormap composed of a range
+of grey scale patterns or tiles that are used wherever shading is necessary.
+%
+\item[Light] takes you to a control-panel described below.
+%
+\item[ViewVolume] takes you to another control-panel as described below.
+%
+\item[Save] creates a menu of the possible file types that can
+be written using the control-panel.
+The {\bf Exit} button leaves the save menu.
+The {\bf Pixmap} button writes an Axiom pixmap of
+the current viewport contents.  The file is called {\bf axiom3D.pixmap} and is
+located in the directory from which Axiom or {\bf viewalone} was
+started.
+The {\bf PS} button writes the current viewport contents to
+PostScript output rather than to the viewport window.
+By default the file is called {\bf axiom3D.ps}; however, if a file
+name is specified in the user's {\bf .Xdefaults} file it is
+used.
+The file is placed in the directory from which the Axiom or
+{\bf viewalone} session was begun.
+See also the \axiomFunFrom{write}{ThreeDimensionalViewport}
+function.
+%
+\item[Reset] returns the object transformation
+characteristics back to their initial states.
+%
+\item[Hide] causes the control-panel for the
+corresponding viewport to disappear from the screen.
+%
+\item[Quit]  queries whether the current viewport
+session should be terminated.
+\enditems
+\indent{0}
+
+\subsubsection{Light}
+
+%
+%>>>\begin{texonly}
+%
+%>>>\begin{figure}[htbp]
+%>>>\begin{picture}(183,252)(-125,0)
+%>>>\special{psfile=../ps/3dlight.ps}
+%>>>\end{picture}
+%>>>\caption{Three-Dimensional Lighting Panel.}
+%>>>\end{figure}
+%>>>\end{texonly}
+%
+
+The {\bf Light} button changes the control-panel into the
+{\bf Lighting Control-Panel}.  At the top of this panel, the three axes
+are shown with the same orientation as the object.  A light vector from
+the origin of the axes shows the current position of the light source
+relative to the object.  At the bottom of the panel is an {\bf Abort}
+button that cancels any changes to the lighting that were made, and a
+{\bf Return} button that carries out the current set of lighting changes
+on the graph.
+%
+\indent{0}
+\beginitems
+%
+\item[XY:]  The {\bf XY} lighting axes window is below the
+{\bf Lighting Control-Panel} title and to the left.
+This changes the light vector within the {\bf XY} view plane.
+%
+\item[Z:]  The {\bf Z} lighting axis window is below the
+{\bf Lighting Control-Panel} title and in the center.  This
+changes the {\bf Z}
+location of the light vector.
+%
+\item[Intensity:]
+Below the {\bf Lighting Control-Panel} title
+and to the right is the light intensity meter.
+Moving the intensity indicator down decreases the amount of
+light emitted from the light source.
+When the indicator is at the top of the meter the light source is
+emitting at 100\% intensity.
+At the bottom of the meter the light source is emitting at a level
+slightly above ambient lighting.
+\enditems
+\indent{0}
+
+\subsubsection{View Volume}
+
+The {\bf View Volume} button changes the control-panel into
+the {\bf Viewing Volume Panel}.
+At the bottom of the viewing panel is an {\bf Abort} button that
+cancels any changes to the viewing volume that were made and a
+{\it Return} button that carries out the current set of
+viewing changes to the graph.
+%
+%>>>\begin{texonly}
+%
+%>>>\begin{figure}[htbp]
+%>>>\begin{picture}(183,252)(-125,0)
+%>>>\special{psfile=../ps/3dvolume.ps}
+%>>>\end{picture}
+%>>>\caption{Three-Dimensional Volume Panel.}
+%>>>\end{figure}
+%>>>\end{texonly}
+%
+\indent{0}
+\beginitems
+%
+\item[Eye Reference:]  At the top of this panel is the
+{\bf Eye Reference} window.
+It shows a planar projection of the viewing pyramid from the eye
+of the viewer relative to the location of the object.
+This has a bounding region represented by the rectangle on the
+left.
+Below the object rectangle is the {\bf Hither} window.
+By moving the slider in this window the hither clipping plane sets
+the front of the view volume.
+As a result of this depth clipping all points of the object closer
+to the eye than this hither plane are not shown.
+The {\bf Eye Distance} slider to the right of the {\bf Hither}
+slider is used to change the degree of perspective in the image.
+%
+\item[Clip Volume:]  The {\bf Clip Volume} window is at the
+bottom of the {\bf Viewing Volume Panel}.
+On the right is a {\bf Settings} menu.
+In this menu are buttons to select viewing attributes.
+Selecting the {\bf Perspective} button computes the image using
+perspective projection.
+The {\bf Show Region} button indicates whether the clipping region
+of the
+volume is to be drawn in the viewport and the {\bf Clipping On}
+button shows whether the view volume clipping is to be in effect
+when the image
+is drawn.
+The left side of the {\bf Clip Volume} window shows the clipping
+boundary of the graph.
+Moving the knobs along the {\bf X}, {\bf Y}, and {\bf Z} sliders
+adjusts the volume of the clipping region accordingly.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugGraphThreeDopsTitle}{Operations for Three-Dimensional Graphics}
+\newcommand{\ugGraphThreeDopsNumber}{7.2.10.}
+
+@
+\section{Operations for Three-Dimensional Graphics}
+\label{ugGraphThreeDopsPage}
+\index{pages!ugGraphThreeDopsPage!ug07.ht}
+\index{ug07.ht!pages!ugGraphThreeDopsPage}
+\index{ugGraphThreeDopsPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugGraphThreeDopsPage}
+{7.2.10. Operations for Three-Dimensional Graphics}
+\beginscroll
+
+Here is a summary of useful Axiom operations for \threedim{}
+graphics.
+Each operation name is followed by a list of arguments.
+Each argument is written as a variable informally named according
+to the type of the argument (for example, {\it integer}).
+If appropriate, a default value for an argument is given in
+parentheses immediately following the name.
+
+%
+\texht{\bgroup\hbadness = 10001\sloppy}{}
+\indent{0}
+\beginitems
+%
+\item[\axiomFun{adaptive3D?}]\funArgs{}
+tests whether space curves are to be plotted
+according to the
+adaptive refinement algorithm.
+
+%
+\item[\axiomFun{axes}]\funArgs{viewport, string\argDef{"on"}}
+turns the axes on and off.
+
+%
+\item[\axiomFun{close}]\funArgs{viewport}
+closes the viewport.
+
+%
+\item[\axiomFun{colorDef}]\funArgs{viewport,
+\subscriptIt{color}{1}\argDef{1}, \subscriptIt{color}{2}\argDef{27}}
+sets the colormap
+range to be from
+\subscriptIt{color}{1} to \subscriptIt{color}{2}.
+
+%
+\item[\axiomFun{controlPanel}]\funArgs{viewport, string\argDef{"off"}}
+declares whether the
+control-panel for the viewport is to be displayed or not.
+
+%
+\item[\axiomFun{diagonals}]\funArgs{viewport, string\argDef{"off"}}
+declares whether the
+polygon outline includes the diagonals or not.
+
+%
+\item[\axiomFun{drawStyle}]\funArgs{viewport, style}
+selects which of four drawing styles
+are used: {\tt "wireMesh", "solid", "shade",} or {\tt "smooth".}
+
+%
+\item[\axiomFun{eyeDistance}]\funArgs{viewport,float\argDef{500}}
+sets the distance of the eye from the origin of the object
+for use in the \axiomFunFrom{perspective}{ThreeDimensionalViewport}.
+
+%
+\item[\axiomFun{key}]\funArgs{viewport}
+returns the operating
+system process ID number for the viewport.
+
+%
+\item[\axiomFun{lighting}]\funArgs{viewport,
+\subscriptText{float}{x}\argDef{-0.5},
+\subscriptText{float}{y}\argDef{0.5}, \subscriptText{float}{z}\argDef{0.5}}
+sets the Cartesian
+coordinates of the light source.
+
+%
+\item[\axiomFun{modifyPointData}]\funArgs{viewport,integer,point}
+replaces the coordinates of the point with
+the index {\it integer} with {\it point}.
+
+%
+\item[\axiomFun{move}]\funArgs{viewport,
+\subscriptText{integer}{x}\argDef{viewPosDefault},
+\subscriptText{integer}{y}\argDef{viewPosDefault}}
+moves the upper
+left-hand corner of the viewport to screen position
+\allowbreak
+({\small \subscriptText{integer}{x}, \subscriptText{integer}{y}}).
+
+%
+\item[\axiomFun{options}]\funArgs{viewport}
+returns a list of all current draw options.
+
+%
+\item[\axiomFun{outlineRender}]\funArgs{viewport, string\argDef{"off"}}
+turns polygon outlining
+off or on when drawing in {\tt "shade"} mode.
+
+%
+\item[\axiomFun{perspective}]\funArgs{viewport, string\argDef{"on"}}
+turns perspective
+viewing on and off.
+
+%
+\item[\axiomFun{reset}]\funArgs{viewport}
+resets the attributes of a viewport to their
+initial settings.
+
+%
+\item[\axiomFun{resize}]\funArgs{viewport,
+\subscriptText{integer}{width} \argDef{viewSizeDefault},
+\subscriptText{integer}{height} \argDef{viewSizeDefault}}
+resets the width and height
+values for a viewport.
+
+%
+\item[\axiomFun{rotate}]\funArgs{viewport,
+\subscriptText{number}{\texht{$\theta$}{\axiom{theta}}}\argDef{viewThetaDefault},
+\subscriptText{number}{\texht{$\phi$}{\axiom{phi}}}\argDef{viewPhiDefault}}
+rotates the viewport by rotation angles for longitude
+({\it \texht{$\theta$}{\axiom{theta}}}) and
+latitude ({\it \texht{$\phi$}{\axiom{phi}}}).
+Angles designate radians if given as floats, or degrees if given
+as integers.
+
+%
+\item[\axiomFun{setAdaptive3D}]\funArgs{boolean\argDef{true}}
+sets whether space curves are to be plotted
+according to the adaptive
+refinement algorithm.
+
+%
+\item[\axiomFun{setMaxPoints3D}]\funArgs{integer\argDef{1000}}
+ sets the default maximum number of possible
+points to be used when constructing a \threedim{} space curve.
+
+%
+\item[\axiomFun{setMinPoints3D}]\funArgs{integer\argDef{49}}
+sets the default minimum number of possible
+points to be used when constructing a \threedim{} space curve.
+
+%
+\item[\axiomFun{setScreenResolution3D}]\funArgs{integer\argDef{500}}
+sets the default screen resolution constant
+used in setting the computation limit of adaptively
+generated \threedim{} space curve plots.
+
+%
+\item[\axiomFun{showRegion}]\funArgs{viewport, string\argDef{"off"}}
+declares whether the bounding
+box of a graph is shown or not.
+%
+\item[\axiomFun{subspace}]\funArgs{viewport}
+returns the space component.
+%
+\item[\axiomFun{subspace}]\funArgs{viewport, subspace}
+resets the space component
+to {\it subspace}.
+
+%
+\item[\axiomFun{title}]\funArgs{viewport, string}
+gives the viewport the
+title {\it string}.
+
+%
+\item[\axiomFun{translate}]\funArgs{viewport,
+\subscriptText{float}{x}\argDef{viewDeltaXDefault},
+\subscriptText{float}{y}\argDef{viewDeltaYDefault}}
+translates
+the object horizontally and vertically relative to the center of the viewport.
+
+%
+\item[\axiomFun{intensity}]\funArgs{viewport,float\argDef{1.0}}
+resets the intensity {\it I} of the light source,
+\texht{$0 \le I \le 1.$}{{\it 0 \le I \le 1}.}
+
+%
+\item[\axiomFun{tubePointsDefault}]\funArgs{\optArg{integer\argDef{6}}}
+sets or indicates the default number of
+vertices defining the polygon that is used to create a tube around
+a space curve.
+
+%
+\item[\axiomFun{tubeRadiusDefault}]\funArgs{\optArg{float\argDef{0.5}}}
+sets or indicates the default radius of
+the tube that encircles a space curve.
+
+%
+\item[\axiomFun{var1StepsDefault}]\funArgs{\optArg{integer\argDef{27}}}
+sets or indicates the default number of
+increments into which the grid defining a surface plot is subdivided with
+respect to the first parameter declared in the surface function.
+
+%
+\item[\axiomFun{var2StepsDefault}]\funArgs{\optArg{integer\argDef{27}}}
+sets or indicates the default number of
+increments into which the grid defining a surface plot is subdivided with
+respect to the second parameter declared in the surface function.
+
+%
+\item[\axiomFun{viewDefaults}]\funArgs{{\tt [}\subscriptText{integer}{%
+point}, \subscriptText{integer}{line}, \subscriptText{integer}{axes},
+\subscriptText{integer}{units}, \subscriptText{float}{point},
+\allowbreak\subscriptText{list}{position},
+\subscriptText{list}{size}{\tt ]}}
+resets the default settings for the
+point color, line color, axes color, units color, point size,
+viewport upper left-hand corner position, and the viewport size.
+
+%
+\item[\axiomFun{viewDeltaXDefault}]\funArgs{\optArg{float\argDef{0}}}
+resets the default horizontal offset
+from the center of the viewport, or returns the current default offset if no argument is given.
+
+%
+\item[\axiomFun{viewDeltaYDefault}]\funArgs{\optArg{float\argDef{0}}}
+resets the default vertical offset
+from the center of the viewport, or returns the current default offset if no argument is given.
+
+%
+\item[\axiomFun{viewPhiDefault}]\funArgs{\optArg{float\argDef{-\texht{$\pi$}{{\it pi}}/4}}}
+resets the default latitudinal view angle,
+or returns the current default angle if no argument is given.
+\texht{$\phi$}{{\it phi}} is set to this value.
+
+%
+\item[\axiomFun{viewpoint}]\funArgs{viewport, \subscriptText{float}{x},
+\subscriptText{float}{y}, \subscriptText{float}{z}}
+sets the viewing position in Cartesian coordinates.
+
+%
+\item[\axiomFun{viewpoint}]\funArgs{viewport,
+\subscriptText{float}{\texht{$\theta$}{\axiom{theta}}},
+\subscriptText{Float}{\texht{$\phi$}{\axiom{phi}}}}
+sets the viewing position in spherical coordinates.
+
+%
+\item[\axiomFun{viewpoint}]\funArgs{viewport,
+\subscriptText{Float}{\texht{$\theta$}{\axiom{theta}}},
+\subscriptText{Float}{\texht{$\phi$}{\axiom{phi}}},
+\subscriptText{Float}{scaleFactor},
+\subscriptText{Float}{xOffset}, \subscriptText{Float}{yOffset}}
+sets the viewing position in spherical coordinates,
+the scale factor, and offsets.
+\texht{$\theta$}{{\it theta}} (longitude) and
+\texht{$\phi$}{{\it phi}} (latitude) are in radians.
+
+%
+\item[\axiomFun{viewPosDefault}]\funArgs{\optArg{list\argDef{[0,0]}}}
+sets or indicates the position of the upper
+left-hand corner of a \twodim{} viewport, relative to the display root
+window (the upper left-hand corner of the display is \axiom{[0, 0]}).
+
+%
+\item[\axiomFun{viewSizeDefault}]\funArgs{\optArg{list\argDef{[400,400]}}}
+sets or indicates the width and height dimensions
+of a viewport.
+
+%
+\item[\axiomFun{viewThetaDefault}]\funArgs{\optArg{float\argDef{\texht{$\pi$}{{\it pi}}/4}}}
+resets the default longitudinal view angle,
+or returns the current default angle if no argument is given.
+When a parameter is specified, the default longitudinal view angle
+\texht{$\theta$}{{\it theta}} is set to this value.
+
+%
+\item[\axiomFun{viewWriteAvailable}]\funArgs{\optArg{list\argDef{["pixmap",
+"bitmap", "postscript", "image"}}}
+indicates the possible file types
+that can be created with the \axiomFunFrom{write}{ThreeDimensionalViewport} function.
+
+%
+\item[\axiomFun{viewWriteDefault}]\funArgs{\optArg{list\argDef{[]}}}
+sets or indicates the default types of files
+that are created in addition to the {\bf data} file when a
+\axiomFunFrom{write}{ThreeDimensionalViewport} command
+is executed on a viewport.
+
+%
+\item[\axiomFun{viewScaleDefault}]\funArgs{\optArg{float}}
+sets the default scaling factor, or returns
+the current factor if no argument is given.
+
+%
+\item[\axiomFun{write}]\funArgs{viewport, directory, \optArg{option}}
+writes the file {\bf data} for {\it viewport}
+in the directory {\it directory}.
+An optional third argument specifies a file type (one of {\tt
+pixmap}, {\tt bitmap}, {\tt postscript}, or {\tt image}), or a
+list of file types.
+An additional file is written for each file type listed.
+
+%
+\item[\axiomFun{scale}]\funArgs{viewport, float\argDef{2.5}}
+specifies the scaling factor.
+\enditems
+\indent{0}
+\texht{\egroup}{}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug07.ht>>=
+\newcommand{\ugXdefaultsTitle}{Customization using .Xdefaults}
+\newcommand{\ugXdefaultsNumber}{7.2.11.}
+
+@
+\section{Customization using .Xdefaults}
+\label{ugXdefaultsPage}
+\index{pages!ugXdefaultsPage!ug07.ht}
+\index{ug07.ht!pages!ugXdefaultsPage}
+\index{ugXdefaultsPage!ug07.ht!pages}
+<<ug07.ht>>=
+\begin{page}{ugXdefaultsPage}{7.2.11. Customization using .Xdefaults}
+\beginscroll
+
+Both the \twodim{} and \threedim{} drawing facilities consult
+the {\bf .Xdefaults} file for various defaults.
+The list of defaults that are recognized by the graphing routines
+is discussed in this section.
+These defaults are preceded by {\tt Axiom.3D.}
+for \threedim{} viewport defaults, {\tt Axiom.2D.}
+for \twodim{} viewport defaults, or {\tt Axiom*} (no dot) for
+those defaults that are acceptable to either viewport type.
+
+%
+\indent{0}
+\beginitems
+%
+\item[{\tt Axiom*buttonFont:\ \it font}] \ \newline
+This indicates which
+font type is used for the button text on the control-panel.
+\xdefault{Rom11}
+%
+\item[{\tt Axiom.2D.graphFont:\ \it font}] \quad (2D only) \newline
+This indicates
+which font type is used for displaying the graph numbers and
+slots in the {\bf Graphs} section of the \twodim{} control-panel.
+\xdefault{Rom22}
+%
+\item[{\tt Axiom.3D.headerFont:\ \it font}] \ \newline
+This indicates which
+font type is used for the axes labels and potentiometer
+header names on \threedim{} viewport windows.
+This is also used for \twodim{} control-panels for indicating
+which font type is used for potentionmeter header names and
+multiple graph title headers.
+%for example, {\tt Axiom.2D.headerFont: 8x13}.
+\xdefault{Itl14}
+%
+\item[{\tt Axiom*inverse:\ \it switch}] \ \newline
+This indicates whether the
+background color is to be inverted from white to black.
+If {\tt on}, the graph viewports use black as the background
+color.
+If {\tt off} or no declaration is made, the graph viewports use a
+white background.
+\xdefault{off}
+%
+\item[{\tt Axiom.3D.lightingFont:\ \it font}] \quad (3D only) \newline
+This indicates which font type is used for the {\bf x},
+{\bf y}, and {\bf z} labels of the two lighting axes potentiometers, and for
+the {\bf Intensity} title on the lighting control-panel.
+\xdefault{Rom10}
+%
+\item[{\tt Axiom.2D.messageFont, Axiom.3D.messageFont:\ \it font}] \ \newline
+These indicate the font type
+to be used for the text in the control-panel message window.
+\xdefault{Rom14}
+%
+\item[{\tt Axiom*monochrome:\ \it switch}] \ \newline
+This indicates whether the
+graph viewports are to be displayed as if the monitor is black and
+white, that is, a 1 bit plane.
+If {\tt on} is specified, the viewport display is black and white.
+If {\tt off} is specified, or no declaration for this default is
+given, the viewports are displayed in the normal fashion for the
+monitor in use.
+\xdefault{off}
+%
+\item[{\tt Axiom.2D.postScript:\ \it filename}] \ \newline
+This specifies
+the name of the file that is generated when a 2D PostScript graph
+is saved.
+\xdefault{axiom2D.ps}
+%
+\item[{\tt Axiom.3D.postScript:\ \it filename}] \ \newline
+This specifies
+the name of the file that is generated when a 3D PostScript graph
+is saved.
+\xdefault{axiom3D.ps}
+%
+\item[{\tt Axiom*titleFont \it font}] \ \newline
+This
+indicates which font type is used
+for the title text and, for \threedim{} graphs,
+in the lighting and viewing-volume control-panel windows.
+\xdefault{Rom14}
+%
+\item[{\tt Axiom.2D.unitFont:\ \it font}] \quad (2D only) \newline
+This indicates
+which font type is used for displaying the unit labels on
+\twodim{} viewport graphs.
+\xdefault{6x10}
+%
+\item[{\tt Axiom.3D.volumeFont:\ \it font}] \quad (3D only) \newline
+This indicates which font type is used for the {\bf x},
+{\bf y}, and {\bf z} labels of the clipping region sliders; for the
+{\bf Perspective}, {\bf Show Region}, and {\bf Clipping On} buttons under
+{\bf Settings}, and above the windows for the {\bf Hither} and
+{\bf Eye Distance} sliders in the {\bf Viewing Volume Panel} of the
+\threedim{} control-panel.
+\xdefault{Rom8}
+\enditems
+\indent{0}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 8 (ug08.ht)}
+<<ug08.ht>>=
+\newcommand{\ugProblemTitle}{Advanced Problem Solving}
+\newcommand{\ugProblemNumber}{8.}
+
+@
+\section{Advanced Problem Solving}
+\label{ugProblemPage}
+\begin{itemize}
+\item ugProblemNumericPage \ref{ugProblemNumericPage} on
+page~\pageref{ugProblemNumericPage}
+\item ugProblemFactorPage \ref{ugProblemFactorPage} on
+page~\pageref{ugProblemFactorPage}
+\item ugProblemSymRootPage \ref{ugProblemSymRootPage} on
+page~\pageref{ugProblemSymRootPage}
+\item ugProblemEigenPage \ref{ugProblemEigenPage} on
+page~\pageref{ugProblemEigenPage}
+\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
+page~\pageref{ugProblemLinPolEqnPage}
+\item ugProblemLimitsPage \ref{ugProblemLimitsPage} on
+page~\pageref{ugProblemLimitsPage}
+\item ugProblemLaplacePage \ref{ugProblemLaplacePage} on
+page~\pageref{ugProblemLaplacePage}
+\item ugProblemIntegrationPage \ref{ugProblemIntegrationPage} on
+page~\pageref{ugProblemIntegrationPage}
+\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
+page~\pageref{ugProblemSeriesPage}
+\item ugProblemDEQPage \ref{ugProblemDEQPage} on
+page~\pageref{ugProblemDEQPage}
+\item ugProblemFinitePage \ref{ugProblemFinitePage} on
+page~\pageref{ugProblemFinitePage}
+\item ugProblemIdealPage \ref{ugProblemIdealPage} on
+page~\pageref{ugProblemIdealPage}
+\item ugProblemGaloisPage \ref{ugProblemGaloisPage} on
+page~\pageref{ugProblemGaloisPage}
+\item ugProblemGeneticPage \ref{ugProblemGeneticPage} on
+page~\pageref{ugProblemGeneticPage}
+\end{itemize}
+\index{pages!ugProblemPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemPage}
+\index{ugProblemPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemPage}{8. Advanced Problem Solving}
+\beginscroll
+
+In this chapter we describe techniques useful in solving advanced problems
+with Axiom.
+
+\beginmenu
+    \menudownlink{{8.1. Numeric Functions}}{ugProblemNumericPage}
+    \menudownlink{{8.2. Polynomial Factorization}}{ugProblemFactorPage}
+    \menudownlink{{8.3. Manipulating Symbolic Roots of a Polynomial}}
+{ugProblemSymRootPage}
+    \menudownlink{{8.4. Computation of Eigenvalues and Eigenvectors}}
+{ugProblemEigenPage}
+    \menudownlink{{8.5. Solution of Linear and Polynomial Equations}}
+{ugProblemLinPolEqnPage}
+    \menudownlink{{8.6. Limits}}{ugProblemLimitsPage}
+    \menudownlink{{8.7. Laplace Transforms}}{ugProblemLaplacePage}
+    \menudownlink{{8.8. Integration}}{ugProblemIntegrationPage}
+    \menudownlink{{8.9. Working with Power Series}}{ugProblemSeriesPage}
+    \menudownlink{{8.10. Solution of Differential Equations}}{ugProblemDEQPage}
+    \menudownlink{{8.11. Finite Fields}}{ugProblemFinitePage}
+    \menudownlink{{8.12. Primary Decomposition of Ideals}}{ugProblemIdealPage}
+    \menudownlink{{8.13. Computation of Galois Groups}}{ugProblemGaloisPage}
+    \menudownlink{{8.14. Non-Associative Algebras and Modelling Genetic Laws}}
+{ugProblemGeneticPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemNumericTitle}{Numeric Functions}
+\newcommand{\ugProblemNumericNumber}{8.1.}
+
+@
+\section{Numeric Functions}
+\label{ugProblemNumericPage}
+\begin{itemize}
+\item ugIntroPage \ref{ugIntroPage} on
+page~\pageref{ugIntroPage}
+\item FloatXmpPage \ref{FloatXmpPage} on
+page~\pageref{FloatXmpPage}
+\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
+page~\pageref{DoubleFloatXmpPage}
+\end{itemize}
+\index{pages!ugProblemNumericPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemNumericPage}
+\index{ugProblemNumericPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemNumericPage}{8.1. Numeric Functions}
+\beginscroll
+%
+Axiom provides two basic floating-point types: \axiomType{Float} and
+\axiomType{DoubleFloat}.  This section describes how to use numerical
+operations defined on these types and the related complex types.
+%
+As we mentioned in \downlink{``\ugIntroTitle''}{ugIntroPage} in 
+Chapter \ugIntroNumber\ignore{ugIntro}, the \axiomType{Float} type 
+is a software
+implementation of floating-point numbers in which the exponent and the
+significand may have any number of digits.
+See \downlink{`Float'}{FloatXmpPage}\ignore{Float} for detailed 
+information about this domain.
+The \axiomType{DoubleFloat} (see 
+\downlink{`DoubleFloat'}{DoubleFloatXmpPage}\ignore{DoubleFloat}) 
+is usually a hardware
+implementation of floating point numbers, corresponding to machine double
+precision.
+The types \axiomType{Complex Float} and \axiomType{Complex DoubleFloat} are
+the corresponding software implementations of complex floating-point numbers.
+In this section the term {\it floating-point type}  means any of these
+four types.
+%
+The floating-point types implement the basic elementary functions.
+These include (where \axiomSyntax{\$} means
+\axiomType{DoubleFloat},
+\axiomType{Float},
+\axiomType{Complex DoubleFloat}, or
+\axiomType{Complex Float}):
+
+\noindent
+\axiomFun{exp},  \axiomFun{log}: \axiom{\$ -> \$} \newline
+\axiomFun{sin},  \axiomFun{cos}, \axiomFun{tan}, \axiomFun{cot}, \axiomFun{sec}, \axiomFun{csc}: \axiom{\$ -> \$} \newline
+\axiomFun{sin},  \axiomFun{cos}, \axiomFun{tan}, \axiomFun{cot}, \axiomFun{sec}, \axiomFun{csc}: \axiom{\$ -> \$}  \newline
+\axiomFun{asin}, \axiomFun{acos}, \axiomFun{atan}, \axiomFun{acot}, \axiomFun{asec}, \axiomFun{acsc}: \axiom{\$ -> \$}  \newline
+\axiomFun{sinh},  \axiomFun{cosh}, \axiomFun{tanh}, \axiomFun{coth}, \axiomFun{sech}, \axiomFun{csch}: \axiom{\$ -> \$}  \newline
+\axiomFun{asinh}, \axiomFun{acosh}, \axiomFun{atanh}, \axiomFun{acoth}, \axiomFun{asech}, \axiomFun{acsch}: \axiom{\$ -> \$}  \newline
+\axiomFun{pi}: \axiom{() -> \$}  \newline
+\axiomFun{sqrt}: \axiom{\$ -> \$} \newline
+\axiomFun{nthRoot}: \axiom{(\$, Integer) -> \$}  \newline
+\axiomFunFrom{**}{Float}: \axiom{(\$, Fraction Integer) -> \$} \newline
+\axiomFunFrom{**}{Float}: \axiom{(\$,\$) -> \$}  \newline
+
+The handling of roots depends on whether the floating-point type
+is real or complex: for the real floating-point types,
+\axiomType{DoubleFloat} and \axiomType{Float}, if a real root exists
+the one with the same sign as the radicand is returned; for the
+complex floating-point types, the principal value is returned.
+Also, for real floating-point types the inverse functions
+produce errors if the results are not real.
+This includes cases such as \axiom{asin(1.2)}, \axiom{log(-3.2)},
+\axiom{sqrt(-1.1)}.
+%
+\xtc{
+The default floating-point type is \axiomType{Float} so to evaluate
+functions using \axiomType{Float} or \axiomType{Complex Float}, just use
+normal decimal notation.
+}{
+\spadpaste{exp(3.1)}
+}
+\xtc{
+}{
+\spadpaste{exp(3.1 + 4.5 * \%i)}
+}
+\xtc{
+To evaluate functions using \axiomType{DoubleFloat}
+or \axiomType{Complex DoubleFloat},
+a declaration or conversion is required.
+}{
+\spadpaste{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
+}
+\xtc{
+}{
+\spadpaste{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
+}
+%
+A number of special functions are provided by the package
+\axiomType{DoubleFloatSpecialFunctions} for the machine-precision
+floating-point types.
+The special functions provided are listed below, where \axiom{F} stands for
+the types \axiomType{DoubleFloat} and \axiomType{Complex DoubleFloat}.
+The real versions of the functions yield an error if the result is not real.
+
+\noindent
+\axiomFun{Gamma}: \axiom{F -> F}\hfill\newline
+\axiom{Gamma(z)} is the Euler gamma function,
+   \texht{$\Gamma(z)$}{\axiom{Gamma(z)}},
+   defined by
+   \texht{\narrowDisplay{\Gamma(z) = \int_{0}^{\infty} t^{z-1} e^{-t} dt.}%
+   }{
+\newline
+\centerline{{\axiom{Gamma(z) = integrate(t**(z-1)*exp(-t), t=0..\%infinity).}}}
+   }
+
+\noindent
+\axiomFun{Beta}: \axiom{F -> F}\hfill\newline
+   \axiom{Beta(u, v)} is the Euler Beta function,
+   \texht{$B(u,v)$}{\axiom{B(u,v)}}, defined by
+   \texht{\narrowDisplay{B(u,v) = \int_{0}^{1} t^{u-1} (1-t)^{v-1} dt.}%
+   }{
+\newline
+\centerline{{      \axiom{Beta(u,v) = integrate(t**(u-1)*(1-t)**(b-1), t=0..1).}}}
+   }
+   This is related to \texht{$\Gamma(z)$}{\axiom{Gamma(z)}} by
+   \texht{\narrowDisplay{B(u,v) = \frac{\Gamma(u) \Gamma(v)}{\Gamma(u + v)}.}%
+   }{
+\newline
+\centerline{{      \axiom{Beta(u,v) = Gamma(u)*Gamma(v)/Gamma(u + v).}}}
+   }%
+
+\noindent
+\axiomFun{logGamma}: \axiom{F -> F}\hfill\newline
+   \axiom{logGamma(z)} is the natural logarithm of
+\texht{$\Gamma(z)$}{\axiom{Gamma(z)}}.
+   This can often be computed even if \texht{$\Gamma(z)$}{\axiom{Gamma(z)}}
+cannot.
+%
+
+\noindent
+\axiomFun{digamma}: \axiom{F -> F}\hfill\newline
+   \axiom{digamma(z)}, also called \axiom{psi(z)},
+is the function \texht{$\psi(z)$}{\axiom{psi(z)}},
+   defined by \texht{\narrowDisplay{\psi(z) = \Gamma'(z)/\Gamma(z).}%
+   }{
+\newline
+\centerline{{      \axiom{psi(z) = Gamma'(z)/Gamma(z).}}}
+  }%
+
+\noindent
+\axiomFun{polygamma}: \axiom{(NonNegativeInteger, F) -> F}\hfill\newline
+   \axiom{polygamma(n, z)} is the \eth{\axiom{n}} derivative of
+   \texht{$\psi(z)$}{\axiom{digamma(z)}}\texht{, written $\psi^{(n)}(z)$}{}.
+
+\noindent
+\axiomFun{besselJ}: \axiom{(F,F) -> F}\hfill\newline
+   \axiom{besselJ(v,z)} is the Bessel function of the first kind,
+   \texht{$J_\nu (z)$}{\axiom{J(v,z)}}.
+   This function satisfies the differential equation
+   \texht{\narrowDisplay{z^2 w''(z) + z w'(z) + (z^2-\nu^2)w(z) = 0.}%
+   }{
+\newline
+\centerline{{      \axiom{z**2*w''(z) + z*w'(z) + (z**2-v**2)*w(z) = 0.}}}
+  }%
+
+\noindent
+\axiomFun{besselY}: \axiom{(F,F) -> F}\hfill\newline
+   \axiom{besselY(v,z)} is the Bessel function of the second kind,
+   \texht{$Y_\nu (z)$}{\axiom{Y(v,z)}}.
+   This function satisfies the same differential equation as
+   \axiomFun{besselJ}.
+   The implementation simply uses the relation
+   \texht{\narrowDisplay{Y_\nu (z) = \frac{J_\nu (z) \cos(\nu \pi) - J_{-\nu} (z)}{\sin(\nu \pi)}.}%
+   }{
+\newline
+\centerline{{      \axiom{Y(v,z) = (J(v,z)*cos(v*\%pi) - J(-v,z))/sin(v*\%pi).}}}
+   }%
+
+\noindent
+\axiomFun{besselI}: \axiom{(F,F) -> F}\hfill\newline
+   \axiom{besselI(v,z)} is the modified Bessel function of the first kind,
+   \texht{$I_\nu (z)$}{\axiom{I(v,z)}}.
+   This function satisfies the differential equation
+   \texht{\narrowDisplay{z^2 w''(z) + z w'(z) - (z^2+\nu^2)w(z) = 0.}%
+   }{
+\newline
+\centerline{{      \axiom{z**2 * w''(z) + z * w'(z) - (z**2+v**2)*w(z) = 0.}}}
+   }%
+
+\noindent
+\axiomFun{besselK}: \axiom{(F,F) -> F}\hfill\newline
+   \axiom{besselK(v,z)} is the modified Bessel function of the second kind,
+   \texht{$K_\nu (z)$}{\axiom{K(v,z)}}.
+   This function satisfies the same differential equation as \axiomFun{besselI}.
+   The implementation simply uses the relation
+   \texht{\narrowDisplay{K_\nu (z) = \pi \frac{I_{-\nu} (z) - I_{\nu} (z)}{2 \sin(\nu \pi)}.}%
+   }{
+\newline
+\centerline{{      \axiom{K(v,z) = \%pi*(I(v,z) - I(-v,z))/(2*sin(v*\%pi)).}}}
+   }
+
+\noindent
+\axiomFun{airyAi}: \axiom{F -> F}\hfill\newline
+   \axiom{airyAi(z)} is the Airy function \texht{$Ai(z)$}{\axiom{Ai(z)}}.
+   This function satisfies the differential equation
+   \texht{$w''(z) - z w(z) = 0.$}{\axiom{w''(z) - z * w(z) = 0.}}
+   The implementation simply uses the relation
+   \texht{\narrowDisplay{Ai(-z) = \frac{1}{3}\sqrt{z} ( J_{-1/3} (\frac{2}{3}z^{3/2}) + J_{1/3} (\frac{2}{3}z^{3/2}) ).}%
+   }{
+\newline
+\centerline{{      \axiom{Ai(-z) = 1/3 * sqrt(z) * (J(-1/3, 2/3*z**(3/2)) + J(1/3, 2/3*z**(3/2)) ).}}}
+   }%
+
+\noindent
+\axiomFun{airyBi}: \axiom{F -> F}\hfill\newline
+   \axiom{airyBi(z)} is the Airy function \texht{$Bi(z)$}{\axiom{Bi(z)}}.
+   This function satisfies the same differential equation as \axiomFun{airyAi}.
+   The implementation simply uses the relation
+   \texht{\narrowDisplay{Bi(-z) = \frac{1}{3}\sqrt{3 z} ( J_{-1/3} (\frac{2}{3}z^{3/2}) - J_{1/3} (\frac{2}{3}z^{3/2}) ).}%
+   }{
+\newline
+\centerline{{      \axiom{Bi(-z) = 1/3 *sqrt(3*z) * (J(-1/3, 2/3*z**(3/2)) - J(1/3, 2/3*z**(3/2)) ).}}}
+   }
+
+\noindent
+\axiomFun{hypergeometric0F1}: \axiom{(F,F) -> F}\hfill\newline
+   \axiom{hypergeometric0F1(c,z)} is the hypergeometric function
+   \texht{${}_0 F_1 ( ; c; z)$}{\axiom{0F1(; c; z)}}.%
+
+\xtc{
+The above special functions are defined only for small floating-point types.
+If you give \axiomType{Float} arguments, they are converted to
+\axiomType{DoubleFloat} by Axiom.
+}{
+\spadpaste{Gamma(0.5)**2}
+}
+\xtc{
+}{
+\spadpaste{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
+}
+%
+A number of additional operations may be used to compute numerical values.
+These are special polynomial functions that can be evaluated for values in
+any commutative ring \axiom{R}, and in particular for values in any
+floating-point type.
+The following operations are provided by the package
+\axiomType{OrthogonalPolynomialFunctions}:
+
+\noindent
+\axiomFun{chebyshevT}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{chebyshevT(n,z)} is the \eth{\axiom{n}} Chebyshev polynomial of the first
+   kind, \texht{$T_n (z)$}{\axiom{T[n](z)}}.  These are defined by
+   \texht{\narrowDisplay{\frac{1-t z}{1-2 t z+t^2} = \sum_{n=0}^{\infty} T_n (z) t^n.}%
+   }{
+\newline
+\centerline{{   \axiom{(1-t*z)/(1-2*t*z+t**2) = sum(T[n](z) *t**n, n = 0..).}}}
+   }%
+
+\noindent
+\axiomFun{chebyshevU}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{chebyshevU(n,z)} is the \eth{\axiom{n}} Chebyshev polynomial of the second
+   kind, \texht{$U_n (z)$}{\axiom{U[n](z)}}. These are defined by
+   \texht{\narrowDisplay{\frac{1}{1-2 t z+t^2} = \sum_{n=0}^{\infty} U_n (z) t^n.}%
+   }{
+\newline
+\centerline{{   \axiom{1/(1-2*t*z+t**2) = sum(U[n](z) *t**n, n = 0..).}}}
+   }%
+
+\noindent
+\axiomFun{hermiteH}:   \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{hermiteH(n,z)} is the \eth{\axiom{n}} Hermite polynomial,
+   \texht{$H_n (z)$}{\axiom{H[n](z)}}.
+   These are defined by
+   \texht{\narrowDisplay{e^{2 t z - t^2} = \sum_{n=0}^{\infty} H_n (z) \frac{t^n}{n!}.}%
+   }{
+\newline
+\centerline{{   \axiom{exp(2*t*z-t**2) = sum(H[n](z)*t**n/n!, n = 0..).}}}
+   }%
+
+\noindent
+\axiomFun{laguerreL}:  \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{laguerreL(n,z)} is the \eth{\axiom{n}} Laguerre polynomial,
+   \texht{$L_n (z)$}{\axiom{L[n](z)}}.
+   These are defined by
+   \texht{\narrowDisplay{\frac{e^{-\frac{t z}{1-t}}}{1-t} = \sum_{n=0}^{\infty} L_n (z) \frac{t^n}{n!}.}%
+   }{
+\newline
+\centerline{{   \axiom{exp(-t*z/(1-t))/(1-t) = sum(L[n](z)*t**n/n!, n = 0..).}}}
+   }%
+
+\noindent
+\axiomFun{laguerreL}:  \axiom{(NonNegativeInteger, NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{laguerreL(m,n,z)} is the associated Laguerre polynomial,
+   \texht{$L^m_n (z)$}{\axiom{L<m>[n](z)}}.
+   This is the \eth{\axiom{m}} derivative of \texht{$L_n (z)$}{\axiom{L[n](z)}}.
+
+\noindent
+\axiomFun{legendreP}:  \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{legendreP(n,z)} is the \eth{\axiom{n}} Legendre polynomial,
+   \texht{$P_n (z)$}{\axiom{P[n](z)}}.  These are defined by
+   \texht{\narrowDisplay{\frac{1}{\sqrt{1-2 t z+t^2}} = \sum_{n=0}^{\infty} P_n (z) t^n.}%
+   }{
+\newline
+\centerline{{   \axiom{1/sqrt(1-2*z*t+t**2) = sum(P[n](z)*t**n, n = 0..).}}}
+   }%
+
+%
+\xtc{
+These operations require non-negative integers for the indices, but otherwise
+the argument can be given as desired.
+}{
+\spadpaste{[chebyshevT(i, z) for i in 0..5]}
+}
+\xtc{
+The expression \axiom{chebyshevT(n,z)} evaluates to the \eth{\axiom{n}} Chebyshev
+polynomial of the first kind.
+}{
+\spadpaste{chebyshevT(3, 5.0 + 6.0*\%i)}
+}
+\xtc{
+}{
+\spadpaste{chebyshevT(3, 5.0::DoubleFloat)}
+}
+\xtc{
+The expression \axiom{chebyshevU(n,z)} evaluates to the \eth{\axiom{n}} Chebyshev
+polynomial of the second kind.
+}{
+\spadpaste{[chebyshevU(i, z) for i in 0..5]}
+}
+\xtc{
+}{
+\spadpaste{chebyshevU(3, 0.2)}
+}
+\xtc{
+The expression \axiom{hermiteH(n,z)} evaluates to the \eth{\axiom{n}} Hermite
+polynomial.
+}{
+\spadpaste{[hermiteH(i, z) for i in 0..5]}
+}
+\xtc{
+}{
+\spadpaste{hermiteH(100, 1.0)}
+}
+\xtc{
+The expression \axiom{laguerreL(n,z)} evaluates to the \eth{\axiom{n}} Laguerre
+polynomial.
+}{
+\spadpaste{[laguerreL(i, z) for i in 0..4]}
+}
+\xtc{
+}{
+\spadpaste{laguerreL(4, 1.2)}
+}
+\xtc{
+}{
+\spadpaste{[laguerreL(j, 3, z) for j in 0..4]}
+}
+\xtc{
+}{
+\spadpaste{laguerreL(1, 3, 2.1)}
+}
+\xtc{
+The expression
+\axiom{legendreP(n,z)} evaluates to the \eth{\axiom{n}} Legendre polynomial,
+}{
+\spadpaste{[legendreP(i,z) for i in 0..5]}
+}
+\xtc{
+}{
+\spadpaste{legendreP(3, 3.0*\%i)}
+}
+%
+
+Finally, three number-theoretic polynomial operations may be evaluated.
+The following operations are provided by the package
+\axiomType{NumberTheoreticPolynomialFunctions}.
+
+\noindent
+\axiomFun{bernoulliB}: \axiom{(NonNegativeInteger, R) -> R} \hbox{}\hfill\newline
+   \axiom{bernoulliB(n,z)} is the \eth{\axiom{n}} Bernoulli polynomial,
+   \texht{$B_n (z)$}{\axiom{B[n](z)}}.  These are defined by
+   \texht{\narrowDisplay{\frac{t e^{z t}}{e^t - 1} = \sum_{n=0}^{\infty} B_n (z) \frac{t^n}{n!}.}
+   }{
+\newline
+\centerline{{   \axiom{t*exp(z*t)/(exp t - 1) = sum(B[n](z)*t**n/n! for n - 0..)}}}
+   }%
+
+\noindent
+\axiomFun{eulerE}: \axiom{(NonNegativeInteger, R) -> R} \hbox{}\hfill\newline
+   \axiom{eulerE(n,z)} is the \eth{\axiom{n}} Euler polynomial,
+   \texht{$E_n (z)$}{\axiom{E[n](z)}}.  These are defined by
+   \texht{\narrowDisplay{\frac{2 e^{z t}}{e^t + 1} = \sum_{n=0}^{\infty} E_n (z) \frac{t^n}{n!}.}%
+   }{
+\newline
+\centerline{{   \axiom{2*exp(z*t)/(exp t + 1) = sum(E[n](z)*t**n/n! for n - 0..)}}}
+   }%
+
+\noindent
+\axiomFun{cyclotomic}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
+   \axiom{cyclotomic(n,z)} is the \eth{\axiom{n}} cyclotomic polynomial
+   \texht{$\Phi_n (z)$}{\axiom{phi(n,z)}}.  This is the polynomial whose
+   roots are precisely the primitive \eth{\axiom{n}} roots of unity.
+   This polynomial has degree given by the Euler totient function
+   \texht{$\phi(n)$}{\axiom{phi(n)}}.
+
+\xtc{
+The expression \axiom{bernoulliB(n,z)} evaluates to the \eth{\axiom{n}} Bernoulli
+polynomial.
+}{
+\spadpaste{bernoulliB(3, z)}
+}
+\xtc{
+}{
+\spadpaste{bernoulliB(3, 0.7 + 0.4 * \%i)}
+}
+\xtc{
+The expression
+\axiom{eulerE(n,z)} evaluates to the \eth{\axiom{n}} Euler polynomial.
+}{
+\spadpaste{eulerE(3, z)}
+}
+\xtc{
+}{
+\spadpaste{eulerE(3, 0.7 + 0.4 * \%i)}
+}
+\xtc{
+The expression
+\axiom{cyclotomic(n,z)} evaluates to the \eth{\axiom{n}} cyclotomic polynomial.
+}{
+\spadpaste{cyclotomic(3, z)}
+}
+\xtc{
+}{
+\spadpaste{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
+}
+
+Drawing complex functions in Axiom is presently somewhat
+awkward compared to drawing real functions.
+It is necessary to use the \axiomFun{draw} operations that operate
+on functions rather than expressions.
+
+\psXtc{
+This is the complex exponential function\texht{ (rotated interactively).}{.}
+When this is displayed in color, the height is the value of the real part of
+the function and the color is the imaginary part.
+Red indicates large negative imaginary values, green indicates imaginary
+values near zero and blue/violet indicates large positive imaginary values.
+}{
+\graphpaste{draw((x,y)+-> real exp complex(x,y), -2..2, -2*\%pi..2*\%pi, colorFunction == (x, y) +->  imag exp complex(x,y), title=="exp(x+\%i*y)", style=="smooth")}
+}{
+\epsffile[0 0 295 295]{../ps/compexp.ps}
+}
+
+\psXtc{
+This is the complex arctangent function.
+Again, the height is the real part of the function value but here
+the color indicates the function value's phase.
+The position of the branch cuts are clearly visible and one can
+see that the function is real only for a real argument.
+}{
+\graphpaste{vp := draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction==(x,y) +->argument atan complex(x,y), title=="atan(x+\%i*y)", style=="shade"); rotate(vp,-160,-45); vp}
+}{
+\epsffile[0 0 295 295]{../ps/compatan.ps}
+}
+
+\psXtc{
+This is the complex Gamma function.
+}{
+\graphpaste{draw((x,y) +-> max(min(real Gamma complex(x,y),4),-4), -\%pi..\%pi, -\%pi..\%pi, style=="shade", colorFunction == (x,y) +-> argument Gamma complex(x,y), title == "Gamma(x+\%i*y)", var1Steps == 50, var2Steps== 50)}
+}{
+\epsffile[0 0 295 295]{../ps/compgamm.ps}
+}
+
+\psXtc{
+This shows the real Beta function near the origin.
+}{
+\graphpaste{draw(Beta(x,y)/100, x=-1.6..1.7, y = -1.6..1.7, style=="shade", title=="Beta(x,y)", var1Steps==40, var2Steps==40)}
+}{
+\epsffile[0 0 295 295]{../ps/realbeta.ps}
+}
+
+\psXtc{
+This is the Bessel function \texht{$J_\alpha (x)$}{\axiom{J(alpha,x)}}
+for index \texht{$\alpha$}{\axiom{alpha}} in the range \axiom{-6..4} and
+argument \texht{$x$}{\axiom{x}} in the range \axiom{2..14}.
+}{
+\graphpaste{draw((alpha,x) +-> min(max(besselJ(alpha, x+8), -6), 6), -6..4, -6..6, title=="besselJ(alpha,x)", style=="shade", var1Steps==40, var2Steps==40)}
+}{
+\epsffile[0 0 295 295]{../ps/bessel.ps}
+}
+
+\psXtc{
+This is the modified Bessel function
+\texht{$I_\alpha (x)$}{\axiom{I(alpha,x)}}
+evaluated for various real values of the index \texht{$\alpha$}{\axiom{alpha}}
+and fixed argument \texht{$x = 5$}{\axiom{x = 5}}.
+}{
+\graphpaste{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
+}{
+\epsffile[0 0 295 295]{../ps/modbess.ps}
+}
+
+\psXtc{
+This is similar to the last example
+except the index \texht{$\alpha$}{\axiom{alpha}}
+takes on complex values in a \axiom{6 x 6} rectangle  centered on the origin.
+}{
+\graphpaste{draw((x,y) +-> real besselI(complex(x/20, y/20),5), -60..60, -60..60, colorFunction == (x,y)+-> argument besselI(complex(x/20,y/20),5), title=="besselI(x+i*y,5)", style=="shade")}
+}{
+\epsffile[0 0 295 295]{../ps/modbessc.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFactorTitle}{Polynomial Factorization}
+\newcommand{\ugProblemFactorNumber}{8.2.}
+
+@
+\section{Polynomial Factorization}
+\label{ugProblemFactorPage}
+\begin{itemize}
+\item ugProblemFactorIntRatPage \ref{ugProblemFactorIntRatPage} on
+page~\pageref{ugProblemFactorIntRatPage}
+\item ugProblemFactorFFPage \ref{ugProblemFactorFFPage} on
+page~\pageref{ugProblemFactorFFPage}
+\item ugProblemFactorAlgPage \ref{ugProblemFactorAlgPage} on
+page~\pageref{ugProblemFactorAlgPage}
+\item ugProblemFactorRatFunPage \ref{ugProblemFactorRatFunPage} on
+page~\pageref{ugProblemFactorRatFunPage}
+\end{itemize}
+\index{pages!ugProblemFactorPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFactorPage}
+\index{ugProblemFactorPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFactorPage}{8.2. Polynomial Factorization}
+\beginscroll
+%
+The Axiom polynomial factorization
+facilities are available for all polynomial types and a wide variety of
+coefficient domains.
+Here are some examples.
+
+\beginmenu
+    \menudownlink{{8.2.1. Integer and Rational Number Coefficients}}
+{ugProblemFactorIntRatPage}
+    \menudownlink{{8.2.2. Finite Field Coefficients}}
+{ugProblemFactorFFPage}
+    \menudownlink{{8.2.3. Simple Algebraic Extension Field Coefficients}}
+{ugProblemFactorAlgPage}
+    \menudownlink{{8.2.4. Factoring Rational Functions}}
+{ugProblemFactorRatFunPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFactorIntRatTitle}{Integer and Rational Number Coefficients}
+\newcommand{\ugProblemFactorIntRatNumber}{8.2.1.}
+
+@
+\section{Integer and Rational Number Coefficients}
+\label{ugProblemFactorIntRatPage}
+\index{pages!ugProblemFactorIntRatPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFactorIntRatPage}
+\index{ugProblemFactorIntRatPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFactorIntRatPage}
+{8.2.1. Integer and Rational Number Coefficients}
+\beginscroll
+
+\labelSpace{4pc}
+\xtc{
+Polynomials with integer
+coefficients can be be factored.
+}{
+\spadpaste{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12) \bound{v}}
+}
+\xtc{
+}{
+\spadpaste{factor v \free{v}}
+}
+\xtc{
+Also, Axiom can factor polynomials with
+rational number coefficients.
+}{
+\spadpaste{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12) \bound{w}}
+}
+\xtc{
+}{
+\spadpaste{factor w \free{w}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFactorFFTitle}{Finite Field Coefficients}
+\newcommand{\ugProblemFactorFFNumber}{8.2.2.}
+
+@
+\section{Finite Field Coefficients}
+\label{ugProblemFactorFFPage}
+\begin{itemize}
+\item ugProblemFinitePage \ref{ugProblemFinitePage} on
+page~\pageref{ugProblemFinitePage}
+\end{itemize}
+\index{pages!ugProblemFactorFFPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFactorFFPage}
+\index{ugProblemFactorFFPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFactorFFPage}{8.2.2. Finite Field Coefficients}
+\beginscroll
+
+Polynomials with coefficients in a finite field
+can be also be factored.
+
+\labelSpace{3pc}
+\xtc{
+}{
+\spadpaste{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18 \bound{u}}
+}
+\xtc{
+These include the integers mod \axiom{p}, where \axiom{p} is prime, and
+extensions of these fields.
+}{
+\spadpaste{factor u \free{u}}
+}
+\xtc{
+Convert this to have coefficients in the finite
+field with \texht{$19^3$}{\axiom{19**3}} elements.
+See \downlink{``\ugProblemFiniteTitle''}{ugProblemFinitePage} 
+in Section \ugProblemFiniteNumber\ignore{ugProblemFinite} for more information
+about finite fields.
+}{
+\spadpaste{factor(u :: POLY FFX(PF 19,3)) \free{u}}
+}
+%
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFactorAlgTitle}{Simple Algebraic Extension Field Coefficients}
+\newcommand{\ugProblemFactorAlgNumber}{8.2.3.}
+
+@
+\section{Simple Algebraic Extension Field Coefficients}
+\label{ugProblemFactorAlgPage}
+\index{pages!ugProblemFactorAlgPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFactorAlgPage}
+\index{ugProblemFactorAlgPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFactorAlgPage}
+{8.2.3. Simple Algebraic Extension Field Coefficients}
+\beginscroll
+
+Polynomials with coefficients in simple algebraic extensions
+of the rational numbers can be factored.
+
+\labelSpace{2pc}
+\xtc{
+Here, \axiom{aa} and \axiom{bb} are symbolic roots of polynomials.
+}{
+\spadpaste{aa := rootOf(aa**2+aa+1) \bound{aa}}
+}
+\xtc{
+}{
+\spadpaste{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2 \free{aa}\bound{p}}
+}
+\xtc{
+Note that the second argument to factor can be a list of
+algebraic extensions to factor over.
+}{
+\spadpaste{factor(p,[aa]) \free{p aa}}
+}
+\xtc{
+This factors \axiom{x**2+3} over the integers.
+}{
+\spadpaste{factor(x**2+3)}
+}
+\xtc{
+Factor the same polynomial over the field obtained by adjoining
+\axiom{aa} to the rational numbers.
+}{
+\spadpaste{factor(x**2+3,[aa]) \free{aa}}
+}
+\xtc{
+Factor \axiom{x**6+108} over the same field.
+}{
+\spadpaste{factor(x**6+108,[aa]) \free{aa}}
+}
+\xtc{
+}{
+\spadpaste{bb:=rootOf(bb**3-2) \bound{bb}}
+}
+\xtc{
+}{
+\spadpaste{factor(x**6+108,[bb]) \free{bb}}
+}
+\xtc{
+Factor again over the field obtained by adjoining both \axiom{aa}
+and \axiom{bb} to the rational numbers.
+}{
+\spadpaste{factor(x**6+108,[aa,bb]) \free{aa bb}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFactorRatFunTitle}{Factoring Rational Functions}
+\newcommand{\ugProblemFactorRatFunNumber}{8.2.4.}
+
+@
+\section{Factoring Rational Functions}
+\label{ugProblemFactorRatFunPage}
+\index{pages!ugProblemFactorRatFunPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFactorRatFunPage}
+\index{ugProblemFactorRatFunPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFactorRatFunPage}{8.2.4. Factoring Rational Functions}
+\beginscroll
+
+Since fractions of polynomials form a field, every element (other than zero)
+divides any other, so there is no useful notion of irreducible factors.
+Thus the \axiomFun{factor} operation is not very useful for fractions
+of polynomials.
+
+\xtc{
+There is, instead, a specific operation \axiomFun{factorFraction}
+that separately factors the numerator and denominator and returns
+a fraction of the factored results.
+}{
+\spadpaste{factorFraction((x**2-4)/(y**2-4))}
+}
+\xtc{
+You can also use \axiomFun{map}. This expression
+applies the \axiomFun{factor} operation
+to the numerator and denominator.
+}{
+\spadpaste{map(factor,(x**2-4)/(y**2-4))}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemSymRootTitle}{Manipulating Symbolic Roots of a Polynomial}
+\newcommand{\ugProblemSymRootNumber}{8.3.}
+
+@
+\section{Manipulating Symbolic Roots of a Polynomial}
+\label{ugProblemSymRootPage}
+\begin{itemize}
+\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
+page~\pageref{ugxProblemOnePolPage}
+\item ugxProblemPolSysPage \ref{ugxProblemPolSysPage} on
+page~\pageref{ugxProblemPolSysPage}
+\item ugxProblemSymRootOnePage \ref{ugxProblemSymRootOnePage} on
+page~\pageref{ugxProblemSymRootOnePage}
+\item ugxProblemSymRootAllPage \ref{ugxProblemSymRootAllPage} on
+page~\pageref{ugxProblemSymRootAllPage}
+\end{itemize}
+\index{pages!ugProblemSymRootPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemSymRootPage}
+\index{ugProblemSymRootPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemSymRootPage}
+{8.3. Manipulating Symbolic Roots of a Polynomial}
+\beginscroll
+%
+In this section we show you how to work with one root or all roots
+of a polynomial.
+These roots are represented symbolically (as opposed to being
+numeric approximations).
+See \downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} 
+in Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol} and 
+\downlink{``\ugxProblemPolSysTitle''}{ugxProblemPolSysPage} in 
+Section \ugxProblemPolSysNumber\ignore{ugxProblemPolSys} for
+information about solving for the roots of one or more
+polynomials.
+
+\beginmenu
+    \menudownlink{{8.3.1. Using a Single Root of a Polynomial}}
+{ugxProblemSymRootOnePage}
+    \menudownlink{{8.3.2. Using All Roots of a Polynomial}}
+{ugxProblemSymRootAllPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSymRootOneTitle}{Using a Single Root of a Polynomial}
+\newcommand{\ugxProblemSymRootOneNumber}{8.3.1.}
+
+@
+\section{Using a Single Root of a Polynomial}
+\label{ugxProblemSymRootOnePage}
+\index{pages!ugxProblemSymRootOnePage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSymRootOnePage}
+\index{ugxProblemSymRootOnePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSymRootOnePage}{8.3.1. Using a Single Root of a Polynomial}
+\beginscroll
+
+Use \axiomFun{rootOf} to get a symbolic root of a polynomial:
+\axiom{rootOf(p, x)} returns a root of \axiom{p(x)}.
+
+\labelSpace{2pc}
+\xtc{
+This creates an algebraic number \axiom{a}.
+}{
+\spadpaste{a := rootOf(a**4+1,a) \bound{a}}
+}
+\xtc{
+To find the algebraic relation that defines \axiom{a},
+use \axiomFun{definingPolynomial}.
+}{
+\spadpaste{definingPolynomial a \free{a}}
+}
+\xtc{
+You can use \axiom{a} in any further expression,
+including a nested \axiomFun{rootOf}.
+}{
+\spadpaste{b := rootOf(b**2-a-1,b) \free{a}\bound{b}}
+}
+\xtc{
+Higher powers of the roots are automatically reduced during
+calculations.
+}{
+\spadpaste{a + b \free{a b}\bound{c}}
+}
+\xtc{
+}{
+\spadpaste{\% ** 5 \free{c}}
+}
+\xtc{
+The operation \axiomFun{zeroOf} is similar to \axiomFun{rootOf},
+except that it may express the root using radicals in some cases.
+}{
+\spadpaste{rootOf(c**2+c+1,c)}
+}
+\xtc{
+}{
+\spadpaste{zeroOf(d**2+d+1,d)}
+}
+\xtc{
+}{
+\spadpaste{rootOf(e**5-2,e)}
+}
+\xtc{
+}{
+\spadpaste{zeroOf(f**5-2,f)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSymRootAllTitle}{Using All Roots of a Polynomial}
+\newcommand{\ugxProblemSymRootAllNumber}{8.3.2.}
+
+@
+\section{Using All Roots of a Polynomial}
+\label{ugxProblemSymRootAllPage}
+\begin{itemize}
+\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
+page~\pageref{ugxProblemOnePolPage}
+\end{itemize}
+\index{pages!ugxProblemSymRootAllPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSymRootAllPage}
+\index{ugxProblemSymRootAllPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSymRootAllPage}{8.3.2. Using All Roots of a Polynomial}
+\beginscroll
+
+Use \axiomFun{rootsOf} to get all symbolic roots of a polynomial:
+\axiom{rootsOf(p, x)} returns a
+list of all the roots of \axiom{p(x)}.
+If \axiom{p(x)} has a multiple root of order \axiom{n}, then that root
+appears \axiom{n} times in the list.
+\texht{\typeout{Make sure these variables are x0 etc}}{}
+
+\xtc{
+Compute all the roots of \axiom{x**4 + 1}.
+}{
+\spadpaste{l := rootsOf(x**4+1,x) \bound{l}}
+}
+\xtc{
+As a side effect, the variables \axiom{\%x0, \%x1} and \axiom{\%x2} are bound
+to the first three roots of \axiom{x**4+1}.
+}{
+\spadpaste{\%x0**5 \free{l}}
+}
+\xtc{
+Although they all satisfy \axiom{x**4 + 1 = 0, \%x0, \%x1,}
+and \axiom{\%x2} are different algebraic numbers.
+To find the algebraic relation that defines each of them,
+use \axiomFun{definingPolynomial}.
+}{
+\spadpaste{definingPolynomial \%x0 \free{l}}
+}
+\xtc{
+}{
+\spadpaste{definingPolynomial \%x1 \free{l}}
+}
+\xtc{
+}{
+\spadpaste{definingPolynomial \%x2 \free{l}}
+}
+\xtc{
+We can check that the sum and product of the roots of \axiom{x**4+1} are
+its trace and norm.
+}{
+\spadpaste{x3 := last l \free{l} \bound{x3}}
+}
+\xtc{
+}{
+\spadpaste{\%x0 + \%x1 + \%x2 + x3 \free{x3}}
+}
+\xtc{
+}{
+\spadpaste{\%x0 * \%x1 * \%x2 * x3 \free{x3}}
+}
+\xtc{
+Corresponding to the pair of operations
+\axiomFun{rootOf}/\axiomFun{zeroOf} in
+\downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} in 
+Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol}, there is
+an operation \axiomFun{zerosOf} that, like \axiomFun{rootsOf},
+computes all the roots
+of a given polynomial, but which expresses some of them in terms of
+radicals.
+}{
+\spadpaste{zerosOf(y**4+1,y) \bound{z}}
+}
+\xtc{
+As you see, only one implicit algebraic number was created
+(\axiom{\%y1}), and its defining equation is this.
+The other three roots are expressed in radicals.
+}{
+\spadpaste{definingPolynomial \%y1 \free{z}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemEigenTitle}{Computation of Eigenvalues and Eigenvectors}
+\newcommand{\ugProblemEigenNumber}{8.4.}
+
+@
+\section{Computation of Eigenvalues and Eigenvectors}
+\label{ugProblemEigenPage}
+\index{pages!ugProblemEigenPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemEigenPage}
+\index{ugProblemEigenPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemEigenPage}
+{8.4. Computation of Eigenvalues and Eigenvectors}
+\beginscroll
+%
+In this section we show you
+some of Axiom's facilities for computing and
+manipulating eigenvalues and eigenvectors, also called
+characteristic values and characteristic vectors,
+respectively.
+
+\texht{\vskip 4pc}{}
+
+\xtc{
+Let's first create a matrix with integer entries.
+}{
+\spadpaste{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]] \bound{m1}}
+}
+\xtc{
+To get a list of the {\it rational} eigenvalues,
+use the operation \axiomFun{eigenvalues}.
+}{
+\spadpaste{leig := eigenvalues(m1) \free{m1} \bound{leig}}
+}
+\xtc{
+Given an explicit eigenvalue, \axiomFun{eigenvector} computes the eigenvectors
+corresponding to it.
+}{
+\spadpaste{eigenvector(first(leig),m1) \free{m1 leig}}
+}
+
+The operation \axiomFun{eigenvectors} returns a list of pairs of values and
+vectors. When an eigenvalue is rational, Axiom gives you
+the value explicitly; otherwise, its minimal polynomial is given,
+(the polynomial of lowest degree with the eigenvalues as roots),
+together with a parametric representation of the eigenvector using the
+eigenvalue.
+This means that if you ask Axiom to \axiomFun{solve}
+the minimal polynomial, then you can substitute these roots
+into the parametric form of the corresponding eigenvectors.
+
+\xtc{
+You must be aware that unless an exact eigenvalue has been computed,
+the eigenvector may be badly in error.
+}{
+\spadpaste{eigenvectors(m1) \free{m1}}
+}
+\xtc{
+Another possibility is to use the operation
+\axiomFun{radicalEigenvectors}
+tries to compute explicitly the eigenvectors
+in terms of radicals.
+}{
+\spadpaste{radicalEigenvectors(m1) \free{m1}}
+}
+
+Alternatively, Axiom can compute real or complex approximations to the
+eigenvectors and eigenvalues using the operations \axiomFun{realEigenvectors}
+or \axiomFun{complexEigenvectors}.
+They each take an additional argument \texht{$\epsilon$}{\axiom{epsilon}}
+to specify the ``precision'' required.
+In the real case, this means that each approximation will be within
+\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual
+result.
+In the complex case, this means that each approximation will be within
+\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual result
+in each of the real and imaginary parts.
+
+\xtc{
+The precision can be specified as a \axiomType{Float} if the results are
+desired in floating-point notation, or as \axiomType{Fraction Integer} if the
+results are to be expressed using rational (or complex rational) numbers.
+}{
+\spadpaste{realEigenvectors(m1,1/1000) \free{m1}}
+}
+\xtc{
+If an \axiom{n} by \axiom{n} matrix has \axiom{n} distinct eigenvalues (and
+therefore \axiom{n} eigenvectors) the operation \axiomFun{eigenMatrix}
+gives you a matrix of the eigenvectors.
+}{
+\spadpaste{eigenMatrix(m1) \free{m1}}
+}
+\xtc{
+}{
+\spadpaste{m2 := matrix [[-5,-2],[18,7]] \bound{m2}}
+}
+\xtc{
+}{
+\spadpaste{eigenMatrix(m2) \free{m2}}
+}
+%
+%
+\xtc{
+If a symmetric matrix
+has a basis of orthonormal eigenvectors, then
+\axiomFun{orthonormalBasis} computes a list of these vectors.
+}{
+\spadpaste{m3 := matrix [[1,2],[2,1]] \bound{m3}}
+}
+\xtc{
+}{
+\spadpaste{orthonormalBasis(m3) \free{m3}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemLinPolEqnTitle}{Solution of Linear and Polynomial Equations}
+\newcommand{\ugProblemLinPolEqnNumber}{8.5.}
+
+@
+\section{Solution of Linear and Polynomial Equations}
+\label{ugProblemLinPolEqnPage}
+\begin{itemize}
+\item ugProblemDEQPage \ref{ugProblemDEQPage} on
+page~\pageref{ugProblemDEQPage}
+\item ugxProblemLinSysPage \ref{ugxProblemLinSysPage} on
+page~\pageref{ugxProblemLinSysPage}
+\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
+page~\pageref{ugxProblemOnePolPage}
+\item ugxProblemPolSysPage \ref{ugxProblemPolSysPage} on
+page~\pageref{ugxProblemPolSysPage}
+\end{itemize}
+\index{pages!ugProblemLinPolEqnPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemLinPolEqnPage}
+\index{ugProblemLinPolEqnPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemLinPolEqnPage}
+{8.5. Solution of Linear and Polynomial Equations}
+\beginscroll
+%
+In this section we discuss the Axiom facilities for solving
+systems of linear equations, finding the roots of polynomials and
+solving systems of polynomial equations.
+For a discussion of the solution of differential equations, see
+\downlink{``\ugProblemDEQTitle''}{ugProblemDEQPage} in 
+Section \ugProblemDEQNumber\ignore{ugProblemDEQ}.
+
+\beginmenu
+    \menudownlink{{8.5.1. Solution of Systems of Linear Equations}}
+{ugxProblemLinSysPage}
+    \menudownlink{{8.5.2. Solution of a Single Polynomial Equation}}
+{ugxProblemOnePolPage}
+    \menudownlink{{8.5.3. Solution of Systems of Polynomial Equations}}
+{ugxProblemPolSysPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemLinSysTitle}{Solution of Systems of Linear Equations}
+\newcommand{\ugxProblemLinSysNumber}{8.5.1.}
+
+@
+\section{Solution of Systems of Linear Equations}
+\label{ugxProblemLinSysPage}
+\index{pages!ugxProblemLinSysPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemLinSysPage}
+\index{ugxProblemLinSysPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemLinSysPage}{8.5.1. Solution of Systems of Linear Equations}
+\beginscroll
+
+You can use the operation \axiomFun{solve} to solve systems of linear equations.
+
+The operation \axiomFun{solve} takes two arguments, the list of equations and the
+list of the unknowns to be solved for.
+A system of linear equations need not have a unique solution.
+
+\xtc{
+To solve the linear system:
+\centerline{{\axiom{  x +   y +   z = 8} }}
+\centerline{{\axiom{3*x - 2*y +   z = 0} }}
+\centerline{{\axiom{  x + 2*y + 2*z = 17}}}
+evaluate this expression.
+}{
+\spadpaste{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
+}
+
+Parameters are given as new variables starting with a percent sign and
+\spadSyntax{\%} and
+the variables are expressed in terms of the parameters.
+If the system has no solutions then the empty list is returned.
+
+\xtc{
+When you solve the linear system
+\centerline{{\axiom{  x + 2*y + 3*z = 2} }}
+\centerline{{\axiom{2*x + 3*y + 4*z = 2} }}
+\centerline{{\axiom{3*x + 4*y + 5*z = 2}}}
+with this expression
+you get a solution involving a parameter.
+}{
+\spadpaste{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
+}
+
+The system can also be presented as a matrix and a vector.
+The matrix contains the coefficients of the linear equations and
+the vector contains the numbers appearing on the right-hand sides
+of the equations.
+You may input the matrix as a list of rows and the vector as a
+list of its elements.
+
+\xtc{
+To solve the system:
+\centerline{{\axiom{  x +   y +   z = 8} }}
+\centerline{{\axiom{3*x - 2*y +   z = 0} }}
+\centerline{{\axiom{  x + 2*y + 2*z = 17}}}
+in matrix form you would evaluate this expression.
+}{
+\spadpaste{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
+}
+
+The solutions are presented as a \pspadtype{Record} with two
+components: the component \texht{{\it particular}}{{\tt
+particular}} contains a particular solution of the given system or
+the item {\tt "failed"} if there are no solutions, the component
+\texht{{\it basis}}{{\tt basis}} contains a list of vectors that
+are a basis for the space of solutions of the corresponding
+homogeneous system.
+If the system of linear equations does not have a unique solution,
+then the \texht{{\it basis}}{{\tt basis}} component contains
+non-trivial vectors.
+
+\xtc{
+This happens when you solve the linear system
+\centerline{{\axiom{  x + 2*y + 3*z = 2} }}
+\centerline{{\axiom{2*x + 3*y + 4*z = 2} }}
+\centerline{{\axiom{3*x + 4*y + 5*z = 2}}}
+with this command.
+}{
+\spadpaste{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
+}
+
+All solutions of this system are obtained by adding the particular
+solution with a linear combination of the \texht{{\it basis}}{{\tt
+basis}} vectors.
+
+When no solution exists then {\tt "failed"} is returned as the
+\texht{{\it particular}}{{\tt particular}} component, as follows:
+
+\xtc{
+}{
+\spadpaste{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
+}
+
+When you want to solve a system of homogeneous equations (that is,
+a system where the numbers on the right-hand sides of the
+equations are all zero) in the matrix form you can omit the second
+argument and use the \axiomFun{nullSpace} operation.
+
+\xtc{
+This computes the solutions of the following system of equations:
+\centerline{{\axiom{  x + 2*y + 3*z = 0} }}
+\centerline{{\axiom{2*x + 3*y + 4*z = 0} }}
+\centerline{{\axiom{3*x + 4*y + 5*z = 0}}}
+The result is given as a list of vectors and
+these vectors form a basis for the solution space.
+}{
+\spadpaste{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemOnePolTitle}{Solution of a Single Polynomial Equation}
+\newcommand{\ugxProblemOnePolNumber}{8.5.2.}
+
+@
+\section{Solution of a Single Polynomial Equation}
+\label{ugxProblemOnePolPage}
+\index{pages!ugxProblemOnePolPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemOnePolPage}
+\index{ugxProblemOnePolPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemOnePolPage}{8.5.2. Solution of a Single Polynomial Equation}
+\beginscroll
+
+Axiom can solve polynomial equations producing either approximate
+or exact solutions.
+Exact solutions are either members of the ground
+field or can be presented symbolically as roots of irreducible polynomials.
+
+\xtc{
+This returns the one rational root along with an irreducible
+polynomial describing the other solutions.
+}{
+\spadpaste{solve(x**3  = 8,x)}
+}
+\xtc{
+If you want solutions expressed in terms of radicals you would use this
+instead.
+}{
+\spadpaste{radicalSolve(x**3  = 8,x)}
+}
+
+The \axiomFun{solve} command always returns a value but
+\axiomFun{radicalSolve} returns only the solutions that it is
+able to express in terms of radicals.
+
+If the polynomial equation has rational coefficients
+you can ask for approximations to its real roots by calling
+solve with a second argument that specifies the ``precision''
+\texht{$\epsilon$}{\axiom{epsilon}}.
+This means that each approximation will be within
+\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual
+result.
+
+\xtc{
+Notice that the type of second argument controls the type of the result.
+}{
+\spadpaste{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
+}
+\xtc{
+If you give a floating-point precision you get a floating-point result;
+if you give the precision as a rational number you get a rational result.
+}{
+\spadpaste{solve(x**3-2,1/1000)}
+}
+\xtc{
+If you want approximate complex results you should use the
+command \axiomFun{complexSolve} that takes the same precision argument
+\texht{$\epsilon$}{\axiom{epsilon}}.
+}{
+\spadpaste{complexSolve(x**3-2,.0001)}
+}
+\xtc{
+Each approximation will be within
+\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual result
+in each of the real and imaginary parts.
+}{
+\spadpaste{complexSolve(x**2-2*\%i+1,1/100)}
+}
+
+Note that if you omit the \axiomOp{=} from the first argument
+Axiom generates an equation by equating the first argument to zero.
+Also, when only one variable is present in the equation, you
+do not need to specify the variable to be solved for, that is,
+you can omit the second argument.
+
+\xtc{
+Axiom can also solve equations involving rational functions.
+Solutions where the denominator vanishes are discarded.
+}{
+\spadpaste{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemPolSysTitle}{Solution of Systems of Polynomial Equations}
+\newcommand{\ugxProblemPolSysNumber}{8.5.3.}
+
+@
+\section{Solution of Systems of Polynomial Equations}
+\label{ugxProblemPolSysPage}
+\begin{itemize}
+\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
+page~\pageref{ugxProblemOnePolPage}
+\end{itemize}
+\index{pages!ugxProblemPolSysPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemPolSysPage}
+\index{ugxProblemPolSysPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemPolSysPage}
+{8.5.3. Solution of Systems of Polynomial Equations}
+\beginscroll
+
+Given a system of equations of rational functions with exact coefficients:
+\centerline{{\axiom{p1(x1,...,xn)} }}
+\centerline{{\axiom{.}             }}
+\centerline{{\axiom{.}             }}
+\centerline{{\axiom{.}             }}
+\centerline{{\axiom{pm(x1,...,xn)}}}
+Axiom can find
+numeric or symbolic solutions.
+The system is first split into irreducible components, then for
+each component, a triangular system of equations is found that reduces
+the problem to sequential solution of univariate polynomials resulting
+from substitution of partial solutions from the previous stage.
+\centerline{{\axiom{q1(x1,...,xn)} }}
+\centerline{{\axiom{.} }}
+\centerline{{\axiom{.} }}
+\centerline{{\axiom{.} }}
+\centerline{{\axiom{qm(xn)}}}
+
+Symbolic solutions can be presented using ``implicit'' algebraic numbers
+defined as roots of irreducible polynomials or in terms of radicals.
+Axiom can also find approximations to the real or complex roots
+of a system of polynomial equations to any user-specified accuracy.
+
+The operation \axiomFun{solve} for systems is used in a way similar
+to \axiomFun{solve} for single equations.
+Instead of a polynomial equation, one has to give a list of
+equations and instead of a single variable to solve for, a list of
+variables.
+For solutions of single equations see 
+\downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} in 
+Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol}.
+
+%
+\xtc{
+Use the operation \axiomFun{solve} if you want implicitly presented
+solutions.
+}{
+\spadpaste{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
+}
+\xtc{
+}{
+\spadpaste{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
+}
+\xtc{
+Use \axiomFun{radicalSolve} if you want your solutions expressed
+in terms of radicals.
+}{
+\spadpaste{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
+}
+
+To get numeric solutions you only need to give the list of
+equations and the precision desired.
+The list of variables would be redundant information since there
+can be no parameters for the numerical solver.
+
+\xtc{
+If the precision is expressed as a floating-point number you get
+results expressed as floats.
+}{
+\spadpaste{solve([x**2*y - 1,x*y**2 - 2],.01)}
+}
+\xtc{
+To get complex numeric solutions, use the operation \axiomFun{complexSolve},
+which takes the same arguments as in the real case.
+}{
+\spadpaste{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
+}
+\xtc{
+It is also possible to solve systems of equations in rational functions
+over the rational numbers.
+Note that \axiom{[x = 0.0, a = 0.0]} is not returned as a solution since
+the denominator vanishes there.
+}{
+\spadpaste{solve([x**2/a = a,a = a*x],.001)}
+}
+\xtc{
+When solving equations with
+denominators, all solutions where the denominator vanishes are
+discarded.
+}{
+\spadpaste{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemLimitsTitle}{Limits}
+\newcommand{\ugProblemLimitsNumber}{8.6.}
+
+@
+\section{Limits}
+\label{ugProblemLimitsPage}
+\index{pages!ugProblemLimitsPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemLimitsPage}
+\index{ugProblemLimitsPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemLimitsPage}{8.6. Limits}
+\beginscroll
+%
+To compute a limit, you must specify a functional expression,
+a variable, and a limiting value for that variable.
+If you do not specify a direction, Axiom attempts to
+compute a two-sided limit.
+
+\xtc{
+Issue this to compute the limit
+\texht{$$\lim_{x \rightarrow 1}{{\displaystyle x^2 - 3x +
+2}\over{\displaystyle x^2 - 1}}.$$}{
+of \axiom{(x**2 - 3*x + 2)/(x**2 - 1)} as \axiom{x} approaches \axiom{1}.}
+}{
+\spadpaste{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+}
+
+Sometimes the limit when approached from the left is different from the
+limit from the right and, in this case, you may wish to ask for a
+one-sided limit.
+Also,
+if you have a function that is only defined on one side of a particular value,
+you can compute a one-sided limit.
+
+\xtc{
+The function \axiom{log(x)} is only defined to the right of zero,
+that is, for \axiom{x > 0}.
+Thus, when computing limits of functions involving \axiom{log(x)},
+you probably want a ``right-hand'' limit.
+}{
+\spadpaste{limit(x * log(x),x = 0,"right")}
+}
+\xtc{
+When you do not specify \axiom{"right"} or \axiom{"left"} as the
+optional fourth argument, \axiomFun{limit} tries to compute a
+two-sided limit.
+Here the limit from the left does not exist, as Axiom
+indicates when you try to take a two-sided limit.
+}{
+\spadpaste{limit(x * log(x),x = 0)}
+}
+
+A function can be defined on both sides of a particular value, but
+tend to different limits as its variable approaches that value from the
+left and from the right.
+We can construct an example of this as follows:
+Since
+\texht{$\sqrt{y^2}$}{\axiom{sqrt(y**2)}}
+is simply the absolute value of \axiom{y},
+the function
+\texht{$\sqrt{y^2} / y$}{\axiom{sqrt(y**2) / y}}
+is simply the sign (\axiom{+1} or \axiom{-1}) of the nonzero
+real number \axiom{y}.
+Therefore,
+\texht{$\sqrt{y^2} / y = -1$}{\axiom{sqrt(y**2) / y = -1}}
+for \axiom{y < 0} and
+\texht{$\sqrt{y^2} / y = +1$}{\axiom{sqrt(y**2) / y = +1}}
+for \axiom{y > 0}.
+\xtc{
+This is what happens when we take the limit at \axiom{y = 0}.
+The answer returned by Axiom gives both a
+``left-hand'' and a ``right-hand'' limit.
+}{
+\spadpaste{limit(sqrt(y**2)/y,y = 0)}
+}
+\xtc{
+Here is another example, this time using a more complicated function.
+}{
+\spadpaste{limit(sqrt(1 - cos(t))/t,t = 0)}
+}
+
+You can compute limits at infinity by passing either
+\texht{$+\infty$ or $-\infty$}{``plus infinity'' or ``minus infinity''}
+as the third argument of \axiomFun{limit}.
+\xtc{
+To do this, use the constants \axiom{\%plusInfinity} and \axiom{\%minusInfinity}.
+}{
+\spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+}
+\xtc{
+}{
+\spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+}
+
+\xtc{
+You can take limits of functions with parameters.
+As you can see, the limit is expressed in terms of the parameters.
+}{
+\spadpaste{limit(sinh(a*x)/tan(b*x),x = 0)}
+}
+
+When you use \axiomFun{limit}, you are taking the limit of a real
+function of a real variable.
+\xtc{
+When you compute this,
+Axiom returns \axiom{0} because, as a function of a real variable,
+\axiom{sin(1/z)} is always between \axiom{-1} and \axiom{1}, so \axiom{z * sin(1/z)}
+tends to \axiom{0} as \axiom{z} tends to \axiom{0}.
+}{
+\spadpaste{limit(z * sin(1/z),z = 0)}
+}
+However, as a function of a {\it complex} variable, \axiom{sin(1/z)} is badly
+behaved near \axiom{0} (one says that \axiom{sin(1/z)} has an
+{\it essential singularity} at \axiom{z = 0}).
+\xtc{
+When viewed as a function of a complex variable, \axiom{z * sin(1/z)}
+does not approach any limit as \axiom{z} tends to \axiom{0} in the complex plane.
+Axiom indicates this when we call \axiomFun{complexLimit}.
+}{
+\spadpaste{complexLimit(z * sin(1/z),z = 0)}
+}
+
+%% This is used in chapter 1
+
+You can also take complex limits at infinity, that is, limits of a function of
+\axiom{z} as \axiom{z} approaches infinity on the Riemann sphere.
+Use the symbol \axiom{\%infinity} to denote ``complex infinity.''
+\xtc{
+As above, to compute complex limits rather than real limits, use
+\axiomFun{complexLimit}.
+}{
+\spadpaste{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+}
+\xtc{
+In many cases, a limit of a real function of a real variable
+exists when the corresponding complex limit does not.
+This limit exists.
+}{
+\spadpaste{limit(sin(x)/x,x = \%plusInfinity)}
+}
+\xtc{
+But this limit does not.
+}{
+\spadpaste{complexLimit(sin(x)/x,x = \%infinity)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemLaplaceTitle}{Laplace Transforms}
+\newcommand{\ugProblemLaplaceNumber}{8.7.}
+
+@
+\section{Laplace Transforms}
+\label{ugProblemLaplacePage}
+\index{pages!ugProblemLaplacePage!ug08.ht}
+\index{ug08.ht!pages!ugProblemLaplacePage}
+\index{ugProblemLaplacePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemLaplacePage}{8.7. Laplace Transforms}
+\beginscroll
+%
+Axiom can compute some forward Laplace transforms, mostly
+of elementary
+functions
+not involving logarithms, although some cases of
+special functions are handled.
+\xtc{
+To compute the forward Laplace transform of \axiom{F(t)} with respect to
+\axiom{t} and express the result as \axiom{f(s)}, issue the command
+\axiom{laplace(F(t), t, s)}.
+}{
+\spadpaste{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
+}
+\xtc{
+Here are some other non-trivial examples.
+}{
+\spadpaste{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+}
+\xtc{
+}{
+\spadpaste{laplace(2/t * (1 - cos(a*t)), t, s)}
+}
+\xtc{
+}{
+\spadpaste{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
+}
+\xtc{
+}{
+\spadpaste{laplace((cos(a*t) - cos(b*t))/t, t, s)}
+}
+\xtc{
+Axiom also knows about a few special functions.
+}{
+\spadpaste{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+}
+\xtc{
+}{
+\spadpaste{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+}
+\xtc{
+When Axiom does not know about a particular transform,
+it keeps it as a formal transform in the answer.
+}{
+\spadpaste{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemIntegrationTitle}{Integration}
+\newcommand{\ugProblemIntegrationNumber}{8.8.}
+
+@
+\section{Integration}
+\label{ugProblemIntegrationPage}
+\begin{itemize}
+\item ugxProblemSymRootAllPage \ref{ugxProblemSymRootAllPage} on
+page~\pageref{ugxProblemSymRootAllPage}
+\end{itemize}
+\index{pages!ugProblemIntegrationPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemIntegrationPage}
+\index{ugProblemIntegrationPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemIntegrationPage}{8.8. Integration}
+\beginscroll
+%
+Integration is the reverse process of differentiation, that is,
+an {\it integral} of a function \axiom{f} with respect to a variable
+\axiom{x} is any function \axiom{g} such that \axiom{D(g,x)}
+is equal to \axiom{f}.
+\xtc{
+The package \axiomType{FunctionSpaceIntegration} provides the top-level
+integration operation, \axiomFunFrom{integrate}{FunctionSpaceIntegration},
+for integrating real-valued elementary functions.
+}{
+\spadpaste{integrate(cosh(a*x)*sinh(a*x), x)}
+}
+\xtc{
+Unfortunately, antiderivatives of most functions cannot be expressed in
+terms of elementary functions.
+}{
+\spadpaste{integrate(log(1 + sqrt(a * x + b)) / x, x)}
+}
+Given an elementary function to integrate, Axiom returns a formal
+integral as above only when it can prove that the integral is not
+elementary and not when it cannot determine the integral.
+In this rare case it prints a message that it cannot
+determine if an elementary integral exists.
+%
+\xtc{
+Similar functions may have antiderivatives
+that look quite different because the form of the antiderivative
+depends on the sign of a constant that appears in the function.
+}{
+\spadpaste{integrate(1/(x**2 - 2),x)}
+}
+\xtc{
+}{
+\spadpaste{integrate(1/(x**2 + 2),x)}
+}
+%
+If the integrand contains parameters, then there may be several possible
+antiderivatives, depending on the signs of expressions of the parameters.
+\xtc{
+In this case Axiom returns a list of answers that cover all
+the possible cases.
+Here you
+use the answer involving the square root of \axiom{a} when \axiom{a > 0} and
+the answer involving the square root of \axiom{-a} when \axiom{a < 0}.
+}{
+\spadpaste{integrate(x**2 / (x**4 - a**2), x)}
+}
+
+If the parameters and the variables of integration can be complex
+numbers rather than real, then the notion of sign is not defined.
+In this case all the possible answers can be expressed as one
+complex function.
+To get that function, rather than a list of real functions, use
+\axiomFunFrom{complexIntegrate}{FunctionSpaceComplexIntegration},
+which is provided by the package
+\axiomType{FunctionSpaceComplexIntegration}.
+
+\xtc{
+This operation is used for
+integrating complex-valued elementary functions.
+}{
+\spadpaste{complexIntegrate(x**2 / (x**4 - a**2), x)}
+}
+\xtc{
+As with the real case,
+antiderivatives for most complex-valued functions cannot be expressed
+in terms of elementary functions.
+}{
+\spadpaste{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
+}
+
+Sometimes \axiomFun{integrate} can involve symbolic algebraic numbers
+such as those returned by \axiomFunFrom{rootOf}{Expression}.
+To see how to work with these strange generated symbols (such as
+\axiom{\%\%a0}), see 
+\downlink{``\ugxProblemSymRootAllTitle''}{ugxProblemSymRootAllPage} 
+in Section \ugxProblemSymRootAllNumber\ignore{ugxProblemSymRootAll}.
+
+Definite integration is the process of computing the area between
+the \axiom{x}-axis and the curve of a function \axiom{f(x)}.
+The fundamental theorem of calculus states that if \axiom{f} is
+continuous on an interval \axiom{a..b} and if there exists a function \axiom{g}
+that is differentiable on \axiom{a..b} and such that \axiom{D(g, x)}
+is equal to \axiom{f}, then the definite integral of \axiom{f}
+for \axiom{x} in the interval \axiom{a..b} is equal to \axiom{g(b) - g(a)}.
+
+\xtc{
+The package \axiomType{RationalFunctionDefiniteIntegration} provides
+the top-level definite integration operation,
+\axiomFunFrom{integrate}{RationalFunctionDefiniteIntegration},
+for integrating real-valued rational functions.
+}{
+\spadpaste{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
+}
+Axiom checks beforehand that the function you are integrating is
+defined on the interval \axiom{a..b}, and prints an error message if it
+finds that this is not case, as in the following example:
+\begin{verbatim}
+integrate(1/(x**2-2), x = 1..2)
+
+    >> Error detected within library code:
+       Pole in path of integration
+       You are being returned to the top level
+       of the interpreter.
+\end{verbatim}
+When parameters are present in the function, the function may or may not be
+defined on the interval of integration.
+
+\xtc{
+If this is the case, Axiom issues a warning that a pole might
+lie in the path of integration, and does not compute the integral.
+}{
+\spadpaste{integrate(1/(x**2-a), x = 1..2)}
+}
+
+If you know that you are using values of the parameter for which
+the function has no pole in the interval of integration, use the
+string {\tt "noPole"} as a third argument to
+\axiomFunFrom{integrate}{RationalFunctionDefiniteIntegration}:
+
+%
+\xtc{
+The value here is, of course, incorrect if \axiom{sqrt(a)} is between
+\axiom{1} and \axiom{2.}
+}{
+\spadpaste{integrate(1/(x**2-a), x = 1..2, "noPole")}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemSeriesTitle}{Working with Power Series}
+\newcommand{\ugProblemSeriesNumber}{8.9.}
+
+@
+\section{Working with Power Series}
+\label{ugProblemSeriesPage}
+\begin{itemize}
+\item ugxProblemDEQSeriesPage \ref{ugxProblemDEQSeriesPage} on
+page~\pageref{ugxProblemDEQSeriesPage}
+\item ugxProblemSeriesCreatePage \ref{ugxProblemSeriesCreatePage} on
+page~\pageref{ugxProblemSeriesCreatePage}
+\item ugxProblemSeriesCoefficientsPage \ref{ugxProblemSeriesCoefficientsPage} on
+page~\pageref{ugxProblemSeriesCoefficientsPage}
+\item ugxProblemSeriesArithmeticPage \ref{ugxProblemSeriesArithmeticPage} on
+page~\pageref{ugxProblemSeriesArithmeticPage}
+\item ugxProblemSeriesFunctionsPage \ref{ugxProblemSeriesFunctionsPage} on
+page~\pageref{ugxProblemSeriesFunctionsPage}
+\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
+page~\pageref{ugxProblemSeriesConversionsPage}
+\item ugxProblemSeriesFormulaPage \ref{ugxProblemSeriesFormulaPage} on
+page~\pageref{ugxProblemSeriesFormulaPage}
+\item ugxProblemSeriesSubstitutePage \ref{ugxProblemSeriesSubstitutePage} on
+page~\pageref{ugxProblemSeriesSubstitutePage}
+\item ugxProblemSeriesBernoulliPage \ref{ugxProblemSeriesBernoulliPage} on
+page~\pageref{ugxProblemSeriesBernoulliPage}
+\end{itemize}
+\index{pages!ugProblemSeriesPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemSeriesPage}
+\index{ugProblemSeriesPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemSeriesPage}{8.9. Working with Power Series}
+\beginscroll
+%
+Axiom has very sophisticated facilities for working with power
+series.
+Infinite series are represented by a list of the
+coefficients that have already been determined, together with a
+function for computing the additional coefficients if needed.
+%
+The system command that determines how many terms of a series is displayed
+is \spadcmd{)set streams calculate}.
+For the purposes of this book, we have used this system command to display
+fewer than ten terms.
+Series can be created from expressions, from functions for the
+series coefficients, and from applications of operations on
+existing series.
+The most general function for creating a series is called
+\axiomFun{series}, although you can also use \axiomFun{taylor},
+\axiomFun{laurent} and \axiomFun{puiseux} in situations where you
+know what kind of exponents are involved.
+
+For information about solving differential equations in terms of
+power series, see 
+\downlink{``\ugxProblemDEQSeriesTitle''}{ugxProblemDEQSeriesPage} in 
+Section \ugxProblemDEQSeriesNumber\ignore{ugxProblemDEQSeries}.
+
+\beginmenu
+    \menudownlink{{8.9.1. Creation of Power Series}}
+{ugxProblemSeriesCreatePage}
+    \menudownlink{{8.9.2. Coefficients of Power Series}}
+{ugxProblemSeriesCoefficientsPage}
+    \menudownlink{{8.9.3. Power Series Arithmetic}}
+{ugxProblemSeriesArithmeticPage}
+    \menudownlink{{8.9.4. Functions on Power Series}}
+{ugxProblemSeriesFunctionsPage}
+    \menudownlink{{8.9.5. Converting to Power Series}}
+{ugxProblemSeriesConversionsPage}
+    \menudownlink{{8.9.6. Power Series from Formulas}}
+{ugxProblemSeriesFormulaPage}
+    \menudownlink{{8.9.7. Substituting Numerical Values in Power Series}}
+{ugxProblemSeriesSubstitutePage}
+    \menudownlink{{8.9.8. Example: Bernoulli Polynomials and Sums of Powers}}
+{ugxProblemSeriesBernoulliPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesCreateTitle}{Creation of Power Series}
+\newcommand{\ugxProblemSeriesCreateNumber}{8.9.1.}
+
+@
+\section{Creation of Power Series}
+\label{ugxProblemSeriesCreatePage}
+\begin{itemize}
+\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
+page~\pageref{ugxProblemSeriesConversionsPage}
+\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
+page~\pageref{ugTypesDeclarePage}
+\item ugxProblemSeriesFunctionsPage \ref{ugxProblemSeriesFunctionsPage} on
+page~\pageref{ugxProblemSeriesFunctionsPage}
+\item ugxProblemSeriesFormulaPage \ref{ugxProblemSeriesFormulaPage} on
+page~\pageref{ugxProblemSeriesFormulaPage}
+\end{itemize}
+\index{pages!ugxProblemSeriesCreatePage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesCreatePage}
+\index{ugxProblemSeriesCreatePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesCreatePage}{8.9.1. Creation of Power Series}
+\beginscroll
+
+\labelSpace{4pc}
+\xtc{
+This is the easiest way to create a power series.
+This tells Axiom that \axiom{x} is to be treated as a power series,
+so functions of \axiom{x} are again power series.
+}{
+\spadpaste{x := series 'x \bound{x}}
+}
+%
+We didn't say anything about the coefficients of the power
+series, so the coefficients are general expressions over the integers.
+This allows us to introduce denominators, symbolic constants, and other
+variables as needed.
+\xtc{
+Here the coefficients are integers (note that the coefficients
+are the Fibonacci
+numbers).
+}{
+\spadpaste{1/(1 - x - x**2) \free{x}}
+}
+\xtc{
+This series has coefficients that are rational numbers.
+}{
+\spadpaste{sin(x) \free{x}}
+}
+\xtc{
+When you enter this expression
+you introduce the symbolic constants \axiom{sin(1)} and \axiom{cos(1).}
+}{
+\spadpaste{sin(1 + x) \free{x}}
+}
+\xtc{
+When you enter the expression
+the variable \axiom{a} appears in the resulting series expansion.
+}{
+\spadpaste{sin(a * x) \free{x}}
+}
+
+\xtc{
+You can also convert an expression into a series expansion.
+This expression creates the series expansion of \axiom{1/log(y)}
+about \axiom{y = 1}.
+For details and more examples, see
+\downlink{``\ugxProblemSeriesConversionsTitle''}
+{ugxProblemSeriesConversionsPage} in Section 
+\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions}.
+}{
+\spadpaste{series(1/log(y),y = 1)}
+}
+
+You can create power series with more general coefficients.
+You normally accomplish this via a type declaration (see
+\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} in Section 
+\ugTypesDeclareNumber\ignore{ugTypesDeclare}).
+See 
+\downlink{``\ugxProblemSeriesFunctionsTitle''}{ugxProblemSeriesFunctionsPage}
+in Section \ugxProblemSeriesFunctionsNumber\ignore{ugxProblemSeriesFunctions} 
+for some warnings about working with declared series.
+
+\xtc{
+We declare that \axiom{y} is a one-variable Taylor series
+(\axiomType{UTS} is the abbreviation for \axiomType{UnivariateTaylorSeries})
+in the variable \axiom{z} with \axiomType{FLOAT}
+(that is, floating-point) coefficients, centered about \axiom{0.}
+Then, by assignment, we obtain the Taylor expansion of
+\axiom{exp(z)} with floating-point coefficients.
+}{
+\spadpaste{y : UTS(FLOAT,'z,0) := exp(z) \bound{y}}
+}
+
+You can also create a power series by giving an explicit formula
+for its \eth{\axiom{n}} coefficient.
+For details and more examples, see
+\downlink{``\ugxProblemSeriesFormulaTitle''}{ugxProblemSeriesFormulaPage} 
+in Section \ugxProblemSeriesFormulaNumber\ignore{ugxProblemSeriesFormula}.
+
+\xtc{
+To create a series about
+\axiom{w = 0} whose \eth{\axiom{n}} Taylor coefficient
+is \axiom{1/n!}, you can evaluate this expression.
+This is the Taylor expansion of \axiom{exp(w)} at \axiom{w = 0}.
+}{
+\spadpaste{series(1/factorial(n),n,w = 0)}
+}
+%
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesCoefficientsTitle}{Coefficients of Power Series}
+\newcommand{\ugxProblemSeriesCoefficientsNumber}{8.9.2.}
+
+@
+\section{Coefficients of Power Series}
+\label{ugxProblemSeriesCoefficientsPage}
+\index{pages!ugxProblemSeriesCoefficientsPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesCoefficientsPage}
+\index{ugxProblemSeriesCoefficientsPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesCoefficientsPage}{8.9.2. Coefficients of Power Series}
+\beginscroll
+
+You can extract any coefficient from a power series---even one
+that hasn't been computed yet.
+This is possible because in Axiom, infinite series are
+represented by a list of the coefficients that have already been
+determined, together with a function for computing the additional
+coefficients.
+(This is known as {\it lazy evaluation}.) When you ask for a
+coefficient that hasn't yet been computed, Axiom computes
+whatever additional coefficients it needs and then stores them in
+the representation of the power series.
+
+\xtc{
+Here's an example of how to extract the coefficients of a power series.
+}{
+\spadpaste{x := series(x) \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{y := exp(x) * sin(x) \free{x} \bound{y}}
+}
+\xtc{
+This coefficient is readily available.
+}{
+\spadpaste{coefficient(y,6) \free{y}}
+}
+\xtc{
+But let's get the fifteenth coefficient of \axiom{y}.
+}{
+\spadpaste{coefficient(y,15) \free{y} \bound{y15}}
+}
+\xtc{
+If you look at \axiom{y}
+then you see that the coefficients up to order \axiom{15}
+have all been computed.
+}{
+\spadpaste{y \free{y15}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesArithmeticTitle}{Power Series Arithmetic}
+\newcommand{\ugxProblemSeriesArithmeticNumber}{8.9.3.}
+
+@
+\section{Power Series Arithmetic}
+\label{ugxProblemSeriesArithmeticPage}
+\index{pages!ugxProblemSeriesArithmeticPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesArithmeticPage}
+\index{ugxProblemSeriesArithmeticPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesArithmeticPage}{8.9.3. Power Series Arithmetic}
+\beginscroll
+
+You can manipulate power series using the usual arithmetic operations
+\axiomOpFrom{+}{UnivariatePuiseuxSeries},
+\axiomOpFrom{-}{UnivariatePuiseuxSeries},
+\axiomOpFrom{*}{UnivariatePuiseuxSeries}, and
+\axiomOpFrom{/}{UnivariatePuiseuxSeries}.
+%
+
+\labelSpace{1pc}
+\xtc{
+The results of these operations are also power series.
+}{
+\spadpaste{x := series x \bound{x}}
+}
+\xtc{
+}{
+\spadpaste{(3 + x) / (1 + 7*x)}
+}
+\xtc{
+You can also compute \axiom{f(x) ** g(x)}, where \axiom{f(x)} and \axiom{g(x)}
+are two power series.
+}{
+\spadpaste{base := 1 / (1 - x) \free{x} \bound{base}}
+}
+%
+\xtc{
+}{
+\spadpaste{expon := x * base \free{x base} \bound{expon}}
+}
+%
+\xtc{
+}{
+\spadpaste{base ** expon \free{base expon}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesFunctionsTitle}{Functions on Power Series}
+\newcommand{\ugxProblemSeriesFunctionsNumber}{8.9.4.}
+
+@
+\section{Functions on Power Series}
+\label{ugxProblemSeriesFunctionsPage}
+\index{pages!ugxProblemSeriesFunctionsPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesFunctionsPage}
+\index{ugxProblemSeriesFunctionsPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesFunctionsPage}{8.9.4. Functions on Power Series}
+\beginscroll
+
+Once you have created a power series, you can apply transcendental
+functions
+(for example, \axiomFun{exp}, \axiomFun{log}, \axiomFun{sin}, \axiomFun{tan},
+\axiomFun{cosh}, etc.) to it.
+
+\labelSpace{1pc}
+%
+\xtc{
+To demonstrate this, we first create the power series
+expansion of the rational function
+\texht{
+${\displaystyle x^2} \over {\displaystyle 1 - 6x + x^2}$
+}{
+\axiom{x**2/(1 - 6*x + x**2)}
+}
+about \axiom{x = 0}.
+}{
+\spadpaste{x := series 'x \bound{x}}
+}
+%
+\xtc{
+}{
+\spadpaste{rat := x**2 / (1 - 6*x + x**2) \free{x} \bound{rat}}
+}
+%
+%
+\xtc{
+If you want to compute the series expansion of
+\texht{
+$\sin\left({\displaystyle x^2} \over {\displaystyle 1 - 6x + x^2}\right)$
+}{
+\axiom{sin(x**2/(1 - 6*x + x**2))}
+}
+you simply compute the sine of \axiom{rat}.
+}{
+\spadpaste{sin(rat) \free{rat}}
+}
+%
+
+\beginImportant
+\noindent {\bf Warning:}
+the type of the coefficients of a power series may
+affect the kind of computations that you can do with that series.
+This can only happen when you have made a declaration to
+specify a series domain with a certain type of coefficient.
+\endImportant
+
+\xtc{
+If you evaluate
+then you have declared that \axiom{y} is a one variable Taylor series
+(\axiomType{UTS} is the abbreviation for \axiomType{UnivariateTaylorSeries})
+in the variable \axiom{y} with \axiomType{FRAC INT}
+(that is, fractions of integer) coefficients, centered about \axiom{0}.
+}{
+\spadpaste{y : UTS(FRAC INT,y,0) := y \bound{y}}
+}
+%
+\xtc{
+You can now compute certain power series in \axiom{y},
+{\it provided} that these series have rational coefficients.
+}{
+\spadpaste{exp(y) \free{y}}
+}
+%
+\xtc{
+You can get examples of such series
+by applying transcendental functions to
+series in \axiom{y} that have no constant terms.
+}{
+\spadpaste{tan(y**2) \free{y}}
+}
+%
+\xtc{
+}{
+\spadpaste{cos(y + y**5) \free{y}}
+}
+%
+%
+\xtc{
+Similarly, you can compute the logarithm of a power series with rational
+coefficients if the constant coefficient is \axiom{1.}
+}{
+\spadpaste{log(1 + sin(y)) \free{y}}
+}
+%
+If you wanted to apply, say, the operation \axiomFun{exp} to a power
+series with a nonzero constant coefficient \texht{$a_0$}{\axiom{a0}},
+then the constant coefficient of the result would be
+\texht{$e^{a_0}$}{\axiom{exp(a0)}}, which is {\it not} a rational number.
+Therefore, evaluating \axiom{exp(2 + tan(y))} would generate an error
+message.
+
+If you want to compute the Taylor expansion of \axiom{exp(2 + tan(y))}, you must
+ensure that the coefficient domain has an operation \axiomFun{exp} defined
+for it.
+An example of such a domain is \axiomType{Expression Integer}, the type
+of formal functional expressions over the integers.
+%
+\xtc{
+When working with coefficients of this type,
+}{
+\spadpaste{z : UTS(EXPR INT,z,0) := z \bound{z}}
+}
+\xtc{
+this presents no problems.
+}{
+\spadpaste{exp(2 + tan(z)) \free{z}}
+}
+%
+Another way to create Taylor series whose coefficients are expressions over
+the integers is to use \axiomFun{taylor} which works similarly to
+\axiomFun{series}.
+%
+\xtc{
+This is equivalent to the previous computation, except that now we
+are using the variable \axiom{w} instead of \axiom{z}.
+}{
+\spadpaste{w := taylor 'w \bound{w}}
+}
+\xtc{
+}{
+\spadpaste{exp(2 + tan(w)) \free{w}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesConversionsTitle}{Converting to Power Series}
+\newcommand{\ugxProblemSeriesConversionsNumber}{8.9.5.}
+
+@
+\section{Converting to Power Series}
+\label{ugxProblemSeriesConversionsPage}
+\index{pages!ugxProblemSeriesConversionsPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesConversionsPage}
+\index{ugxProblemSeriesConversionsPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesConversionsPage}
+{8.9.5. Converting to Power Series}
+\beginscroll
+
+The \axiomType{ExpressionToUnivariatePowerSeries} package provides
+operations for computing series expansions of functions.
+
+\labelSpace{1pc}
+\xtc{
+Evaluate this
+to compute the Taylor expansion of \axiom{sin x} about
+\axiom{x = 0}.
+The first argument, \axiom{sin(x)}, specifies the function whose series
+expansion is to be computed and the second argument, \axiom{x = 0},
+specifies that the series is to be expanded in power of \axiom{(x - 0)},
+that is, in power of \axiom{x}.
+}{
+\spadpaste{taylor(sin(x),x = 0)}
+}
+\xtc{
+Here is the Taylor expansion of \axiom{sin x} about
+\texht{$x = \frac{\pi}{6}$}{\axiom{x = \%pi/6}}:
+}{
+\spadpaste{taylor(sin(x),x = \%pi/6)}
+}
+
+The function to be expanded into a series may have variables other than
+the series variable.
+%
+\xtc{
+For example, we may expand \axiom{tan(x*y)} as a Taylor series in
+\axiom{x}
+}{
+\spadpaste{taylor(tan(x*y),x = 0)}
+}
+%
+\xtc{
+or as a Taylor series in \axiom{y}.
+}{
+\spadpaste{taylor(tan(x*y),y = 0)}
+}
+\xtc{
+A more interesting function is
+\texht{${\displaystyle t e^{x t}} \over {\displaystyle e^t - 1}$}{(t *
+\%e**(x*t))/(\%e**t - 1)}.
+When we expand this function as a Taylor series in \axiom{t}
+the \eth{\axiom{n}} order coefficient is the \eth{\axiom{n}} Bernoulli
+polynomial
+divided by \axiom{n!}.
+}{
+\spadpaste{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0) \bound{bern}}
+}
+\xtc{
+Therefore, this and the next expression
+produce the same result.
+}{
+\spadpaste{factorial(6) * coefficient(bern,6) \free{bern}}
+}
+\xtc{
+}{
+\spadpaste{bernoulliB(6,x)}
+}
+
+Technically, a series with terms of negative degree is not considered to
+be a Taylor series, but, rather, a
+{\it Laurent series}.
+If you try to compute a Taylor series expansion of
+\texht{$\frac{x}{\log x}$}{x/log(x)}
+at \axiom{x = 1} via \axiom{taylor(x/log(x),x = 1)}
+you get an error message.
+The reason is that the function has a {\it pole} at \axiom{x =
+1}, meaning that
+its series expansion about this point has terms of negative degree.
+A series with finitely many terms of negative degree is called a Laurent
+series.
+\xtc{
+You get the desired series expansion by issuing this.
+}{
+\spadpaste{laurent(x/log(x),x = 1)}
+}
+
+Similarly, a series with terms of fractional degree is neither a Taylor
+series nor a Laurent series.
+Such a series is called a
+{\it Puiseux series}.
+The expression \axiom{laurent(sqrt(sec(x)),x = 3 * \%pi/2)}
+results in an error message
+because the series expansion about this point has terms of fractional degree.
+\xtc{
+However, this command produces what you want.
+}{
+\spadpaste{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
+}
+
+Finally, consider the case of functions that do not have Puiseux
+expansions about certain points.
+An example of this is \texht{$x^x$}{\axiom{x^x}} about \axiom{x = 0}.
+\axiom{puiseux(x**x,x=0)}
+produces an error message because of the
+type of singularity of the function at \axiom{x = 0}.
+\xtc{
+The general function \axiomFun{series} can be used in this case.
+Notice that the series returned is not, strictly speaking, a power series
+because of the \axiom{log(x)} in the expansion.
+}{
+\spadpaste{series(x**x,x=0)}
+}
+
+\beginImportant
+The operation \axiomFun{series} returns the most general type of
+infinite series.
+The user who is not interested in distinguishing
+between various types of infinite series may wish to use this operation
+exclusively.
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesFormulaTitle}{Power Series from Formulas}
+\newcommand{\ugxProblemSeriesFormulaNumber}{8.9.6.}
+
+@
+\section{Power Series from Formulas}
+\label{ugxProblemSeriesFormulaPage}
+\begin{itemize}
+\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
+page~\pageref{ugxProblemSeriesConversionsPage}
+\item ugUserAnonPage \ref{ugUserAnonPage} on
+page~\pageref{ugUserAnonPage}
+\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
+page~\pageref{ugxProblemSeriesConversionsPage}
+\end{itemize}
+\index{pages!ugxProblemSeriesFormulaPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesFormulaPage}
+\index{ugxProblemSeriesFormulaPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesFormulaPage}{8.9.6. Power Series from Formulas}
+\beginscroll
+
+The \axiomType{GenerateUnivariatePowerSeries} package enables you to
+create power series from explicit formulas for their
+\eth{\axiom{n}} coefficients.
+In what follows, we construct series expansions for certain
+transcendental functions by giving formulas for their
+coefficients.
+You can also compute such series expansions directly simply by
+specifying the function and the point about which the series is to
+be expanded.
+See 
+\downlink{``\ugxProblemSeriesConversionsTitle''}
+{ugxProblemSeriesConversionsPage} in Section 
+\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions} 
+for more information.
+
+Consider the Taylor expansion of \texht{$e^x$}{\axiom{\%e**x}}
+about \axiom{x = 0}:
+\texht{\narrowDisplay{%
+\begin{array}{ccl}
+e^x &=& \displaystyle 1 + x + \frac{x^2}{2} + \frac{x^3}{6} + \cdots \\ \\
+    &=& \displaystyle\sum_{n=0}^\infty \frac{x^n}{n!}
+\end{array}}%
+}{
+\begin{verbatim}
+%e**x = 1 + x + x**2/2 + x**3/6 + ...
+      = sum from n=0 to n=%infty of x**n / n!
+\end{verbatim}
+}
+The \eth{\axiom{n}} Taylor coefficient is \axiom{1/n!}.
+%
+\xtc{
+This is how you create this series in Axiom.
+}{
+\spadpaste{series(n +-> 1/factorial(n),x = 0)}
+}
+
+The first argument specifies a formula for the \eth{\axiom{n}}
+coefficient by giving a function that maps \axiom{n} to
+\axiom{1/n!}.
+The second argument specifies that the series is to be expanded in
+powers of \axiom{(x - 0)}, that is, in powers of \axiom{x}.
+Since we did not specify an initial degree, the first term in the
+series was the term of degree 0 (the constant term).
+Note that the formula was given as an anonymous function.
+These are discussed in \downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
+in Section \ugUserAnonNumber\ignore{ugUserAnon}.
+
+Consider the Taylor expansion of \axiom{log x} about \axiom{x = 1}:
+\texht{\narrowDisplay{%
+\begin{array}{ccl}
+\log(x) &=& \displaystyle (x - 1) - \frac{(x - 1)^2}{2} + \frac{(x - 1)^3}{3} - \cdots \\ \\
+        &=& \displaystyle\sum_{n = 1}^\infty (-1)^{n-1} \frac{(x - 1)^n}{n}
+\end{array}}%
+}{
+\begin{verbatim}
+log x = (x - 1) - \(x - 1)^2/2 + (x - 1)^3/3 - ...
+      = sum from n=1 to n=%infty of (-1)**(n-1) (x - 1)**n / n
+\end{verbatim}
+}
+If you were to evaluate the expression
+\axiom{series(n +-> (-1)**(n-1) / n, x = 1)}
+you would get an error message because Axiom would try to
+calculate a term of degree \axiom{0} and therefore divide by \axiom{0.}
+
+\xtc{
+Instead, evaluate this.
+The third argument, \axiom{1..}, indicates that only terms of degree
+\axiom{n = 1, ...} are to be computed.
+}{
+\spadpaste{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
+}
+%
+
+Next consider the Taylor expansion of an odd function, say,
+\axiom{sin(x)}:
+\begin{verbatim}
+sin x = x - x**3/3! + x**5/5! - ...
+\end{verbatim}
+Here every other coefficient is zero and we would like to give an
+explicit formula only for the odd Taylor coefficients.
+%
+\xtc{
+This is one way to do it.
+The third argument, \axiom{1..}, specifies that the first term to be computed
+is the term of degree 1.
+The fourth argument, \axiom{2}, specifies that we
+increment by \axiom{2} to find the degrees of 
+subsequent terms, that is, the next
+term
+is of degree \axiom{1 + 2}, the next of degree \axiom{1 + 2 + 2}, etc.
+}{
+\spadpaste{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
+}
+%
+
+\xtc{
+The initial degree and the increment do not have to be integers.
+For example, this expression produces a series expansion of
+\texht{$\sin(x^{\frac{1}{3}})$}{\axiom{sin(x**(1/3))}}.
+}{
+\spadpaste{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
+}
+\xtc{
+While the increment must be positive, the initial degree may be negative.
+This yields the Laurent expansion of \axiom{csc(x)} at
+\axiom{x = 0}.
+%
+}{
+\spadpaste{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2) \bound{cscx}}
+}
+\xtc{
+Of course, the reciprocal of this power series is the Taylor expansion
+of \axiom{sin(x)}.
+}{
+\spadpaste{1/cscx \free{cscx}}
+}
+%
+\xtc{
+As a final example,
+here is the Taylor expansion of \axiom{asin(x)} about \axiom{x = 0}.
+}{
+\spadpaste{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2) \bound{asinx}}
+}
+\xtc{
+When we compute the \axiom{sin} of this series, we get \axiom{x}
+(in the sense that all higher terms computed so far are zero).
+}{
+\spadpaste{sin(asinx) \free{asinx}}
+}
+
+As we discussed in 
+\downlink{``\ugxProblemSeriesConversionsTitle''}
+{ugxProblemSeriesConversionsPage} in Section 
+\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions},
+you can also use the operations \axiomFun{taylor}, \axiomFun{laurent} and
+\axiomFun{puiseux} instead of \axiomFun{series} if you know ahead of time
+what kind of exponents a series has.
+You can't go wrong using \axiomFun{series}, though.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesSubstituteTitle}{Substituting Numerical Values in Power Series}
+\newcommand{\ugxProblemSeriesSubstituteNumber}{8.9.7.}
+
+@
+\section{Substituting Numerical Values in Power Series}
+\label{ugxProblemSeriesSubstitutePage}
+\index{pages!ugxProblemSeriesSubstitutePage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesSubstitutePage}
+\index{ugxProblemSeriesSubstitutePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesSubstitutePage}{8.9.7. Substituting Numerical Values in Power Series}
+\beginscroll
+
+Use \axiomFunFrom{eval}{UnivariatePowerSeriesCategory}
+to substitute a numerical value for a variable in
+a power series.
+For example, here's a way to obtain numerical approximations of
+\axiom{\%e} from the Taylor series
+expansion of \axiom{exp(x)}.
+
+\labelSpace{1pc}
+\xtc{
+First you create the desired Taylor expansion.
+}{
+\spadpaste{f := taylor(exp(x)) \bound{f}}
+}
+\xtc{
+Then you evaluate the series at the value \axiom{1.0}.
+The result is a sequence of the partial sums.
+}{
+\spadpaste{eval(f,1.0)}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemSeriesBernoulliTitle}{Example: Bernoulli Polynomials and Sums of Powers}
+\newcommand{\ugxProblemSeriesBernoulliNumber}{8.9.8.}
+
+@
+\section{Example: Bernoulli Polynomials and Sums of Powers}
+\label{ugxProblemSeriesBernoulliPage}
+\index{pages!ugxProblemSeriesBernoulliPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemSeriesBernoulliPage}
+\index{ugxProblemSeriesBernoulliPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemSeriesBernoulliPage}
+{8.9.8. Example: Bernoulli Polynomials and Sums of Powers}
+\beginscroll
+
+Axiom provides operations for computing definite and
+indefinite sums.
+
+\labelSpace{3pc}
+\xtc{
+You can compute the sum of the first
+ten fourth powers by evaluating this.
+This creates a list whose entries are
+\texht{$m^4$}{\axiom{m**4}} as \texht{$m$}{\axiom{m}} ranges from 1
+to 10, and then computes the sum of the entries of that list.
+}{
+\spadpaste{reduce(+,[m**4 for m in 1..10])}
+}
+\xtc{
+You can also compute a formula for the sum of the first
+\texht{$k$}{\axiom{k}} fourth powers, where \texht{$k$}{\axiom{k}} is an
+unspecified positive integer.
+}{
+\spadpaste{sum4 := sum(m**4, m = 1..k) \bound{sum4}}
+}
+\xtc{
+This formula is valid for any positive integer \texht{$k$}{\axiom{k}}.
+For instance, if we replace \texht{$k$}{\axiom{k}} by 10,
+we obtain the number we computed earlier.
+}{
+\spadpaste{eval(sum4, k = 10) \free{sum4}}
+}
+
+You can compute a formula for the sum of the first
+\texht{$k$}{\axiom{k}} \eth{\axiom{n}} powers in a similar fashion.
+Just replace the \axiom{4} in the definition of \userfun{sum4} by
+any expression not involving \texht{$k$}{\axiom{k}}.
+Axiom computes these formulas using Bernoulli polynomials;
+we
+use the rest of this section to describe this method.
+
+%
+\xtc{
+First consider this function of \axiom{t} and \axiom{x}.
+}{
+\spadpaste{f := t*exp(x*t) / (exp(t) - 1) \bound{f}}
+}
+\noOutputXtc{
+Since the expressions involved get quite large, we tell
+Axiom to show us only terms of degree up to \axiom{5.}
+}{
+\spadpaste{)set streams calculate 5 \bound{set}}
+}
+%
+%
+\xtc{
+If we look at the Taylor expansion of \axiom{f(x, t)} about \axiom{t = 0,}
+we see that the coefficients of the powers of \axiom{t} are polynomials
+in \axiom{x}.
+}{
+\spadpaste{ff := taylor(f,t = 0) \free{f set} \bound{ff}}
+}
+%
+In fact, the \eth{\axiom{n}} coefficient in this series is essentially
+the \eth{\axiom{n}} Bernoulli polynomial:
+the \eth{\axiom{n}} coefficient of the series is
+\texht{${1 \over {n!}} B_n(x)$}{\axiom{1/n! * Bn(x)}}, where
+\texht{$B_n(x)$}{\axiom{Bn(x)}}
+is the \eth{\axiom{n}} Bernoulli polynomial.
+Thus, to obtain the \eth{\axiom{n}} Bernoulli polynomial, we multiply
+the \eth{\axiom{n}} coefficient
+of the series \axiom{ff} by \axiom{n!}.
+%
+\xtc{
+For example, the sixth Bernoulli polynomial is this.
+}{
+\spadpaste{factorial(6) * coefficient(ff,6) \free{ff}}
+}
+%
+\xtc{
+We derive some properties of the function \axiom{f(x,t)}.
+First we compute \axiom{f(x + 1,t) - f(x,t)}.
+}{
+\spadpaste{g := eval(f, x = x + 1) - f \bound{g} \free{f}}
+}
+%
+\xtc{
+If we normalize \axiom{g}, we see that it has a particularly simple form.
+}{
+\spadpaste{normalize(g) \free{g}}
+}
+%
+From this it follows that the \eth{\axiom{n}}
+coefficient in the Taylor expansion of
+\axiom{g(x,t)} at \axiom{t = 0} is
+\texht{${1\over{(n-1)\:!}}\:x^{n-1}$}{\axiom{1/(n-1)! * x**(n-1)}}.
+\xtc{
+If you want to check this, evaluate the next expression.
+}{
+\spadpaste{taylor(g,t = 0) \free{g}}
+}
+%
+However, since \axiom{g(x,t) = f(x+1,t)-f(x,t)}, it follows that the
+\eth{\axiom{n}} coefficient is
+\texht{${1 \over {n!}}\:(B_n(x+1)-B_n(x))$}{\axiom{1/n! * (Bn(x + 1) -
+Bn(x))}}.
+Equating coefficients, we see that
+\texht{${1\over{(n-1)\:!}}\:x^{n-1} = {1\over{n!}}\:(B_n(x + 1) -
+B_n(x))$}{\axiom{1/(n-1)! * x**(n-1) = 1/n! * (Bn(x + 1) - Bn(x))}}
+and, therefore,
+\texht{$x^{n-1} = {1\over{n}}\:(B_n(x + 1) -
+B_n(x))$}{\axiom{x**(n-1) = 1/n * (Bn(x + 1) - Bn(x))}}.
+%
+Let's apply this formula repeatedly, letting \axiom{x} vary between two
+integers \axiom{a} and \axiom{b}, with \axiom{a < b}:
+%
+\begin{verbatim}
+  a**(n-1)       = 1/n * (Bn(a + 1) - Bn(a))
+  (a + 1)**(n-1) = 1/n * (Bn(a + 2) - Bn(a + 1))
+  (a + 2)**(n-1) = 1/n * (Bn(a + 3) - Bn(a + 2))
+     .
+     .
+     .
+  (b - 1)**(n-1) = 1/n * (Bn(b) - Bn(b - 1))
+  b**(n-1)       = 1/n * (Bn(b + 1) - Bn(b))
+\end{verbatim}
+
+When we add these equations we find that
+the sum of the left-hand sides is
+\texht{$\sum_{m=a}^{b} m^{n-1},$}{\axiom{sum(m = a..b,m ** (n-1))},}%
+the sum of the
+\texht{$(n-1)^{\hbox{\small\rm st}}$}{\axiom{(n-1)}-st}
+powers from \axiom{a} to \axiom{b}.
+The sum of the right-hand sides is a ``telescoping series.''
+After cancellation, the sum is simply
+\texht{${1\over{n}}\:(B_n(b + 1) -
+B_n(a))$}{\axiom{1/n * (Bn(b + 1) - Bn(a))}}.
+
+Replacing \axiom{n} by \axiom{n + 1}, we have shown that
+\centerline{{\axiom{sum(m = a..b,m ** n) = 1/(n + 1) * (B<n+1>(b + 1) - B<n+1>(a))}.}}
+
+Let's use this to obtain the formula for the sum of fourth powers.
+\xtc{
+First we obtain the Bernoulli polynomial \texht{$B_5$}{\axiom{B5}}.
+}{
+\spadpaste{B5 := factorial(5) * coefficient(ff,5) \free{ff} \bound{B5}}
+}
+%
+\xtc{
+To find the sum of the first \texht{$k$}{\axiom{k}} 4th powers,
+we multiply \axiom{1/5} by
+\texht{$B_5(k+1) - B_5(1)$}{\axiom{B5(k + 1) - B5(1)}}.
+}{
+\spadpaste{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1)) \free{B5}}
+}
+%
+\xtc{
+This is the same formula that we obtained via \axiom{sum(m**4, m = 1..k)}.
+}{
+\spadpaste{sum4 \free{sum4}}
+}
+
+At this point you may want to do the same computation, but with an
+exponent other than \axiom{4.}
+For example, you might try to find a formula for the sum of the
+first \texht{$k$}{\axiom{k}} 20th powers.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemDEQTitle}{Solution of Differential Equations}
+\newcommand{\ugProblemDEQNumber}{8.10.}
+
+@
+\section{Solution of Differential Equations}
+\label{ugProblemDEQPage}
+\begin{itemize}
+\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
+page~\pageref{ugProblemLinPolEqnPage}
+\item ugxProblemLDEQClosedPage \ref{ugxProblemLDEQClosedPage} on
+page~\pageref{ugxProblemLDEQClosedPage}
+\item ugxProblemNLDEQClosedPage \ref{ugxProblemNLDEQClosedPage} on
+page~\pageref{ugxProblemNLDEQClosedPage}
+\item ugxProblemDEQSeriesPage \ref{ugxProblemDEQSeriesPage} on
+page~\pageref{ugxProblemDEQSeriesPage}
+\end{itemize}
+\index{pages!ugProblemDEQPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemDEQPage}
+\index{ugProblemDEQPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemDEQPage}{8.10. Solution of Differential Equations}
+\beginscroll
+%
+In this section we discuss Axiom's facilities for
+solving
+differential equations in closed-form and in series.
+
+Axiom provides facilities for closed-form solution of
+single differential equations of the following kinds:
+\indent{4}
+\beginitems
+\item[-] linear ordinary differential equations, and
+\item[-] non-linear first order ordinary differential equations
+when integrating factors can be found just by integration.
+\enditems
+\indent{0}
+
+For a discussion of the solution of systems of linear and polynomial
+equations, see
+\downlink{``\ugProblemLinPolEqnTitle''}{ugProblemLinPolEqnPage} in 
+Section \ugProblemLinPolEqnNumber\ignore{ugProblemLinPolEqn}.
+
+\beginmenu
+    \menudownlink{
+{8.10.1. Closed-Form Solutions of Linear Differential Equations}}
+{ugxProblemLDEQClosedPage}
+    \menudownlink{
+{8.10.2. Closed-Form Solutions of Non-Linear Differential Equations}}
+{ugxProblemNLDEQClosedPage}
+    \menudownlink{
+{8.10.3. Power Series Solutions of Differential Equations}}
+{ugxProblemDEQSeriesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemLDEQClosedTitle}{Closed-Form Solutions of Linear Differential Equations}
+\newcommand{\ugxProblemLDEQClosedNumber}{8.10.1.}
+
+@
+\section{Closed-Form Solutions of Linear Differential Equations}
+\label{ugxProblemLDEQClosedPage}
+\index{pages!ugxProblemLDEQClosedPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemLDEQClosedPage}
+\index{ugxProblemLDEQClosedPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemLDEQClosedPage}
+{8.10.1. Closed-Form Solutions of Linear Differential Equations}
+\beginscroll
+
+A {\it differential equation} is an equation involving an unknown {\it
+function} and one or more of its derivatives.
+The equation is called {\it ordinary} if derivatives with respect to
+only one dependent variable appear in the equation (it is called {\it
+partial} otherwise).
+The package \axiomType{ElementaryFunctionODESolver} provides the
+top-level operation \spadfun {solve} for finding closed-form solutions
+of ordinary differential equations.
+
+To solve a differential equation, you must first create an operator for
+the unknown function.
+%
+\xtc{
+We let \axiom{y} be the unknown function in terms of \axiom{x}.
+}{
+\spadpaste{y := operator 'y \bound{y}}
+}
+%
+You then type the equation using \axiomFun{D} to create the
+derivatives of the unknown function \axiom{y(x)} where \axiom{x} is any
+symbol you choose (the so-called {\it dependent variable}).
+%
+\xtc{
+This is how you enter
+the equation \axiom{y'' + y' + y = 0}.
+}{
+\spadpaste{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1}\free{y}}
+}
+%
+The simplest way to invoke the \axiomFun{solve} command is with three
+arguments.
+\begin{items}
+\item the differential equation,
+\item the operator representing the unknown function,
+\item the dependent variable.
+\end{items}
+%
+\xtc{
+So, to solve the above equation, we enter this.
+}{
+\spadpaste{solve(deq, y, x) \free{e1}\free{y}}
+}
+%
+Since linear ordinary differential equations have infinitely many
+solutions, \axiomFun{solve} returns a {\it particular solution}
+\texht{$f_p$}{\axiom{f_p}}
+and a basis
+\texht{$f_1,\dots,f_n$}{\axiom{f1,...,fn}}
+for the solutions of the corresponding homogenuous equation.
+Any expression of the form
+\texht{$f_p + c_1 f_1 + \dots c_n f_n$}{\axiom{fp + c1 f1 + ... + cn fn}}
+where the \texht{$c_i$}{\axiom{ci}} do not involve
+the dependent variable is also a solution.
+This is similar to what you get when you solve systems of linear
+algebraic equations.
+
+A way to select a unique solution is to specify {\it initial
+conditions}: choose a value \axiom{a} for the dependent variable
+and specify the values of the unknown function and its derivatives
+at \axiom{a}.
+If the number of initial conditions is equal to the order of the
+equation, then the solution is unique (if it exists in closed
+form!) and \axiomFun{solve} tries to find it.
+To specify initial conditions to \axiomFun{solve}, use an
+\axiomType{Equation} of the form \axiom{x = a} for the third
+parameter instead of the dependent variable, and add a fourth
+parameter consisting of the list of values \axiom{y(a), y'(a), ...}.
+
+\xtc{
+To find the solution of \axiom{y'' + y = 0} satisfying \axiom{y(0) = y'(0) = 1},
+do this.
+}{
+\spadpaste{deq := D(y x, x, 2) + y x \bound{e2}\free{y}}
+}
+\xtc{
+You can omit the \axiom{= 0} when you enter the equation to be solved.
+}{
+\spadpaste{solve(deq, y, x = 0, [1, 1]) \free{e2}\free{y}}
+}
+%
+
+Axiom is not limited to linear differential equations with
+constant coefficients.
+It can also find solutions when the coefficients are rational or
+algebraic functions of the dependent variable.
+Furthermore, Axiom is not limited by the order of the equation.
+%
+\xtc{
+Axiom can solve the following third order equations with
+polynomial coefficients.
+}{
+\spadpaste{deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 \bound{e3}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{e3}\free{y}}
+}
+%
+%
+\xtc{
+Here we are solving a homogeneous equation.
+}{
+\spadpaste{deq := (x**9+x**3) * D(y x, x, 3) + 18 * x**8 * D(y x, x, 2) - 90 * x * D(y x, x) - 30 * (11 * x**6 - 3) * y x \bound{e4}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{e4}\free{y}}
+}
+%
+On the other hand, and in contrast with the operation
+\axiomFun{integrate}, it can happen that Axiom finds no solution
+and that some closed-form solution still exists.
+While it is mathematically complicated to describe exactly when the
+solutions are guaranteed to be found, the following statements are
+correct and form good guidelines for linear ordinary differential
+equations:
+\begin{items}
+\item If the coefficients are constants, Axiom finds a complete basis
+of solutions (i,e, all solutions).
+\item If the coefficients are rational functions in the dependent variable,
+Axiom at least finds all solutions that do not involve algebraic
+functions.
+\end{items}
+%
+Note that this last statement does not mean that Axiom does not find
+the solutions that are algebraic functions.
+It means that it is not
+guaranteed that the algebraic function solutions will be found.
+%
+\xtc{
+This is an example where all the algebraic solutions are found.
+}{
+\spadpaste{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 \bound{e5}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{solve(deq, y, x) \free{e5}\free{y}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemNLDEQClosedTitle}{Closed-Form Solutions of Non-Linear Differential Equations}
+\newcommand{\ugxProblemNLDEQClosedNumber}{8.10.2.}
+
+@
+\section{Closed-Form Solutions of Non-Linear Differential Equations}
+\label{ugxProblemNLDEQClosedPage}
+\index{pages!ugxProblemNLDEQClosedPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemNLDEQClosedPage}
+\index{ugxProblemNLDEQClosedPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemNLDEQClosedPage}
+{8.10.2. Closed-Form Solutions of Non-Linear Differential Equations}
+\beginscroll
+
+This is an example that shows how to solve a non-linear
+first order ordinary differential equation manually when an integrating
+factor can be found just by integration.
+At the end, we show you how to solve it directly.
+
+Let's solve the differential equation \axiom{y' = y / (x + y log y)}.
+%
+\xtc{
+Using the notation
+\axiom{m(x, y) + n(x, y) y' = 0},
+we have \axiom{m = -y} and \axiom{n = x + y log y}.
+}{
+\spadpaste{m := -y \bound{m}}
+}
+\xtc{
+}{
+\spadpaste{n := x + y * log y \bound{n}}
+}
+%
+\xtc{
+We first check for exactness, that is, does \axiom{dm/dy = dn/dx}?
+}{
+\spadpaste{D(m, y) - D(n, x) \free{m n}}
+}
+%
+This is not zero, so the equation is not exact.
+Therefore we must look for
+an integrating factor: a function \axiom{mu(x,y)} such that
+\axiom{d(mu m)/dy = d(mu n)/dx}.
+Normally, we first search for \axiom{mu(x,y)} depending only on
+\axiom{x} or only on \axiom{y}.
+%
+\xtc{
+Let's search for such a \axiom{mu(x)} first.
+}{
+\spadpaste{mu := operator 'mu \bound{mu}}
+}
+\xtc{
+}{
+\spadpaste{a := D(mu(x) * m, y) - D(mu(x) * n, x) \bound{a}\free{m n mu}}
+}
+%
+%
+\xtc{
+If the above is zero for a function
+\axiom{mu} that does {\it not} depend on \axiom{y}, then
+\axiom{mu(x)} is an integrating factor.
+}{
+\spadpaste{solve(a = 0, mu, x) \free{mu a}}
+}
+%
+The solution depends on \axiom{y}, so there is no integrating
+factor that depends on \axiom{x} only.
+%
+\xtc{
+Let's look for one that depends on \axiom{y} only.
+}{
+\spadpaste{b := D(mu(y) * m, y) - D(mu(y) * n, x) \bound{b}\free{mu m}}
+}
+\xtc{
+}{
+\spadpaste{sb := solve(b = 0, mu, y) \free{mu b}\bound{sb}}
+}
+\noindent
+We've found one!
+%
+\xtc{
+The above \axiom{mu(y)} is an integrating factor.
+We must multiply our initial equation
+(that is, \axiom{m} and \axiom{n}) by the integrating factor.
+}{
+\spadpaste{intFactor := sb.basis.1 \bound{intFactor}\free{sb}}
+}
+\xtc{
+}{
+\spadpaste{m := intFactor * m \bound{m1}\free{m intFactor}}
+}
+\xtc{
+}{
+\spadpaste{n := intFactor * n \bound{n1}\free{n intFactor}}
+}
+%
+\xtc{
+Let's check for exactness.
+}{
+\spadpaste{D(m, y) - D(n, x) \free{m1 n1}}
+}
+%
+We must solve the exact equation, that is, find a function
+\axiom{s(x,y)} such that
+\axiom{ds/dx = m}  and \axiom{ds/dy = n}.
+%
+\xtc{
+We start by writing \axiom{s(x, y) = h(y) + integrate(m, x)}
+where \axiom{h(y)} is an unknown function of \axiom{y}.
+This guarantees that \axiom{ds/dx = m}.
+}{
+\spadpaste{h := operator 'h \bound{h}}
+}
+\xtc{
+}{
+\spadpaste{sol := h y + integrate(m, x) \bound{sol}\free{h m1}}
+}
+%
+%
+\xtc{
+All we want is to find \axiom{h(y)} such that
+\axiom{ds/dy = n}.
+}{
+\spadpaste{dsol := D(sol, y) \free{sol}\bound{dsol}}
+}
+\xtc{
+}{
+\spadpaste{nsol := solve(dsol = n, h, y) \free{dsol n1 h}\bound{nsol}}
+}
+%
+\xtc{
+The above particular solution is the \axiom{h(y)} we want, so we just replace
+\axiom{h(y)} by it in the implicit solution.
+}{
+\spadpaste{eval(sol, h y = nsol.particular) \free{sol h nsol}}
+}
+%
+A first integral of the initial equation is obtained by setting
+this result equal to an arbitrary constant.
+
+Now that we've seen how to solve the equation ``by hand,''
+we show you how to do it with the \axiomFun{solve} operation.
+\xtc{
+First define \axiom{y} to be an operator.
+}{
+\spadpaste{y := operator 'y \bound{y}}
+}
+\xtc{
+Next we create the differential equation.
+}{
+\spadpaste{deq := D(y x, x) = y(x) / (x + y(x) * log y x) \bound{deqi}\free{y}}
+}
+\xtc{
+Finally, we solve it.
+}{
+\spadpaste{solve(deq, y, x) \free{deqi y}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemDEQSeriesTitle}{Power Series Solutions of Differential Equations}
+\newcommand{\ugxProblemDEQSeriesNumber}{8.10.3.}
+
+@
+\section{Power Series Solutions of Differential Equations}
+\label{ugxProblemDEQSeriesPage}
+\index{pages!ugxProblemDEQSeriesPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemDEQSeriesPage}
+\index{ugxProblemDEQSeriesPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemDEQSeriesPage}
+{8.10.3. Power Series Solutions of Differential Equations}
+\beginscroll
+
+The command to solve differential equations in power
+series
+around
+a particular initial point with specific initial conditions is called
+\axiomFun{seriesSolve}.
+It can take a variety of parameters, so we illustrate
+its use with some examples.
+
+\labelSpace{1pc}
+\noOutputXtc{
+Since the coefficients of some solutions
+are quite large, we reset the default to compute only seven terms.
+}{
+\spadpaste{)set streams calculate 7 \bound{c7}}
+}
+
+You can solve a single nonlinear equation of any order. For example,
+we solve  \axiom{y''' = sin(y'') * exp(y) + cos(x)}
+subject to \axiom{y(0) = 1, y'(0) = 0, y''(0) = 0}.
+
+\xtc{
+We first tell Axiom
+that the symbol \axiom{'y} denotes a new operator.
+}{
+\spadpaste{y := operator 'y \bound{y}}
+}
+\xtc{
+Enter the differential equation using \axiom{y} like any system
+function.
+}{
+\spadpaste{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq}\free{y}}
+}
+%
+\xtc{
+Solve it around \axiom{x = 0} with the initial conditions
+\axiom{y(0) = 1, y'(0) = y''(0) = 0}.
+}{
+\spadpaste{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y}\free{eq}\free{c7}}
+}
+
+You can also solve a system of nonlinear first order equations.
+For example, we solve a system that has \axiom{tan(t)} and
+\axiom{sec(t)} as solutions.
+
+\xtc{
+We tell Axiom that \axiom{x} is also an operator.
+}{
+\spadpaste{x := operator 'x\bound{x}}
+}
+\xtc{
+Enter the two equations forming our system.
+}{
+\spadpaste{eq1 := D(x(t), t) = 1 + x(t)**2\free{x}\free{y}\bound{eq1}}
+}
+%
+\xtc{
+}{
+\spadpaste{eq2 := D(y(t), t) = x(t) * y(t)\free{x}\free{y}\bound{eq2}}
+}
+%
+\xtc{
+Solve the system around \axiom{t = 0} with the initial conditions
+\axiom{x(0) = 0} and \axiom{y(0) = 1}.
+Notice that since we give the unknowns in the
+order \axiom{[x, y]}, the answer is a list of two series in the order
+\axiom{[series for x(t), series for y(t)]}.
+}{
+\spadpaste{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x}\free{y}\free{eq1}\free{eq2}\free{c7}}
+}
+\noindent
+The order in which we give the
+equations and the initial conditions has no effect on the order of
+the solution.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemFiniteTitle}{Finite Fields}
+\newcommand{\ugProblemFiniteNumber}{8.11.}
+
+@
+\section{Finite Fields}
+\label{ugProblemFinitePage}
+\begin{itemize}
+\item ugxProblemFinitePrimePage \ref{ugxProblemFinitePrimePage} on
+page~\pageref{ugxProblemFinitePrimePage}
+\item ugxProblemFinitePrimePage \ref{ugxProblemFinitePrimePage} on
+page~\pageref{ugxProblemFinitePrimePage}
+\item ugxProblemFiniteExtensionFinitePage \ref{ugxProblemFiniteExtensionFinitePage} on
+page~\pageref{ugxProblemFiniteExtensionFinitePage}
+\item ugxProblemFiniteModulusPage \ref{ugxProblemFiniteModulusPage} on
+page~\pageref{ugxProblemFiniteModulusPage}
+\item ugxProblemFiniteCyclicPage \ref{ugxProblemFiniteCyclicPage} on
+page~\pageref{ugxProblemFiniteCyclicPage}
+\item ugxProblemFiniteNormalPage \ref{ugxProblemFiniteNormalPage} on
+page~\pageref{ugxProblemFiniteNormalPage}
+\item ugxProblemFiniteConversionPage \ref{ugxProblemFiniteConversionPage} on
+page~\pageref{ugxProblemFiniteConversionPage}
+\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
+page~\pageref{ugxProblemFiniteUtilityPage}
+\end{itemize}
+\index{pages!ugProblemFinitePage!ug08.ht}
+\index{ug08.ht!pages!ugProblemFinitePage}
+\index{ugProblemFinitePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemFinitePage}{8.11. Finite Fields}
+\beginscroll
+%
+
+A {\it finite field} (also called a {\it Galois field}) is a
+finite algebraic structure where one can add, multiply and divide
+under the same laws (for example, commutativity, associativity or
+distributivity) as apply to the rational, real or complex numbers.
+Unlike those three fields, for any finite field there exists a
+positive prime integer \smath{p}, called the
+\axiomFun{characteristic}, such that \texht{$p \: x = 0$}{\axiom{p *
+x = 0}} for any element \smath{x} in the finite field.
+In fact, the number of elements in a finite field is a power of
+the characteristic and for each prime \smath{p} and positive
+integer \smath{n} there exists exactly one finite field with
+\texht{$p^n$}{\axiom{p**n}} elements, up to
+isomorphism.\footnote{For more information about the algebraic
+structure and properties of finite fields, see, for example, S.
+Lang, {\it Algebra}, Second Edition, New York: Addison-Wesley
+Publishing Company, Inc., 1984, ISBN 0 201 05487 6; or R.
+Lidl, H.
+Niederreiter, {\it Finite Fields}, Encyclopedia of Mathematics and
+Its Applications, Vol.
+20, Cambridge: Cambridge Univ.
+Press, 1983, ISBN 0 521 30240 4.}
+
+When \axiom{n = 1,} the field has \smath{p} elements and is
+called a {\it prime field}, discussed in \texht{the next
+section}{
+\downlink{``\ugxProblemFinitePrimeTitle''}{ugxProblemFinitePrimePage} 
+in Section \ugxProblemFinitePrimeNumber\ignore{ugxProblemFinitePrime}}.
+There are several ways of implementing extensions of finite
+fields, and Axiom provides quite a bit of freedom to allow
+you to choose the one that is best for your application.
+Moreover, we provide operations for converting among the different
+representations of extensions and different extensions of a single
+field.
+Finally, note that you usually need to package-call operations
+from finite fields if the operations do not take as an argument an
+object of the field.
+See \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall} for more information on
+package-calling.
+
+\beginmenu
+    \menudownlink{{8.11.1. Modular Arithmetic and Prime Fields}}
+{ugxProblemFinitePrimePage}
+    \menudownlink{{8.11.2. Extensions of Finite Fields}}
+{ugxProblemFiniteExtensionFinitePage}
+    \menudownlink{{8.11.3. Irreducible Modulus Polynomial Representations}}
+{ugxProblemFiniteModulusPage}
+    \menudownlink{{8.11.4. Cyclic Group Representations}}
+{ugxProblemFiniteCyclicPage}
+    \menudownlink{{8.11.5. Normal Basis Representations}}
+{ugxProblemFiniteNormalPage}
+    \menudownlink{{8.11.6. Conversion Operations for Finite Fields}}
+{ugxProblemFiniteConversionPage}
+    \menudownlink{{8.11.7. Utility Operations for Finite Fields}}
+{ugxProblemFiniteUtilityPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFinitePrimeTitle}{Modular Arithmetic and Prime Fields}
+\newcommand{\ugxProblemFinitePrimeNumber}{8.11.1.}
+
+@
+\section{Modular Arithmetic and Prime Fields}
+\label{ugxProblemFinitePrimePage}
+\index{pages!ugxProblemFinitePrimePage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFinitePrimePage}
+\index{ugxProblemFinitePrimePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFinitePrimePage}
+{8.11.1. Modular Arithmetic and Prime Fields}
+\beginscroll
+
+Let \smath{n} be a positive integer.
+It is well known that you can get the same result if you perform
+addition, subtraction or multiplication of integers and then take
+the remainder on dividing by \smath{n} as if
+you had first done such remaindering on the operands, performed the
+arithmetic and then (if necessary) done remaindering again.
+This allows us to speak of arithmetic
+{\it modulo} \smath{n} or, more simply
+{\it mod} \smath{n}.
+\xtc{
+In Axiom, you use \axiomType{IntegerMod} to do such arithmetic.
+}{
+\spadpaste{(a,b) : IntegerMod 12 \bound{abdec}}
+}
+\xtc{
+}{
+\spadpaste{(a, b) := (16, 7) \free{abdec}\bound{a b}}
+}
+\xtc{
+}{
+\spadpaste{[a - b, a * b] \free{a b}}
+}
+\xtc{
+If \smath{n} is not prime, there is only a limited notion of
+reciprocals and division.
+}{
+\spadpaste{a / b \free{a b}}
+}
+\xtc{
+}{
+\spadpaste{recip a \free{a}}
+}
+\xtc{
+Here \axiom{7} and \axiom{12} are relatively prime, so \axiom{7}
+has a multiplicative inverse modulo \axiom{12}.
+}{
+\spadpaste{recip b \free{b}}
+}
+
+If we take \smath{n} to be a prime number \smath{p},
+then taking inverses and, therefore, division are generally defined.
+\xtc{
+Use \axiomType{PrimeField} instead of \axiomType{IntegerMod}
+for \smath{n} prime.
+}{
+\spadpaste{c : PrimeField 11 := 8 \bound{c}}
+}
+\xtc{
+}{
+\spadpaste{inv c \free{c}}
+}
+\xtc{
+You can also use \axiom{1/c} and \axiom{c**(-1)} for the inverse of
+\smath{c}.
+}{
+\spadpaste{9/c \free{c}}
+}
+
+\axiomType{PrimeField} (abbreviation \axiomType{PF}) checks if its
+argument is prime when you try to use an operation from it.
+If you know the argument is prime (particularly if it is large),
+\axiomType{InnerPrimeField} (abbreviation \axiomType{IPF}) assumes
+the argument has already been verified to be prime.
+If you do use a number that is not prime, you will eventually get
+an error message, most likely a division by zero message.
+For computer science applications, the most important finite fields
+are \axiomType{PrimeField 2} and its extensions.
+
+\xtc{
+In the following examples, we work with the finite field with
+\smath{p = 101} elements.
+}{
+\spadpaste{GF101 := PF 101 \bound{GF101} }
+}
+\xtc{
+Like many domains in Axiom, finite fields provide an operation
+for returning a random element of the domain.
+}{
+\spadpaste{x := random()\$GF101 \bound{x}\free{GF101}}
+}
+\xtc{
+}{
+\spadpaste{y : GF101 := 37 \bound{y}\free{GF101}}
+}
+\xtc{
+}{
+\spadpaste{z := x/y \bound{z}\free{x y}}
+}
+\xtc{
+}{
+\spadpaste{z * y - x \free{x y z}}
+}
+%
+\xtc{
+The element \axiom{2} is a {\it primitive element} of this field,
+}{
+\spadpaste{pe := primitiveElement()\$GF101 \bound{pe}\free{GF101}}
+}
+%
+\xtc{
+in the sense that its powers enumerate all nonzero elements.
+}{
+\spadpaste{[pe**i for i in 0..99] \free{pe}}
+}
+%
+%
+\xtc{
+If every nonzero element is a power of a primitive element, how do you
+determine what the exponent is?
+Use
+\axiomFun{discreteLog}.
+}{
+\spadpaste{ex := discreteLog(y) \bound{ex}\free{y}}
+}
+\xtc{
+}{
+\spadpaste{pe ** ex \free{ex pe}}
+}
+%
+\xtc{
+The \axiomFun{order} of a nonzero element \smath{x} is the
+smallest positive integer \smath{t} such
+\texht{$x^t = 1$}{\axiom{x**t = 1}}.
+}{
+\spadpaste{order y \free{y}}
+}
+\xtc{
+The order of a primitive element is the defining \smath{p-1}.
+}{
+\spadpaste{order pe \free{pe}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteExtensionFiniteTitle}{Extensions of Finite Fields}
+\newcommand{\ugxProblemFiniteExtensionFiniteNumber}{8.11.2.}
+
+@
+\section{Extensions of Finite Fields}
+\label{ugxProblemFiniteExtensionFinitePage}
+\index{pages!ugxProblemFiniteExtensionFinitePage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteExtensionFinitePage}
+\index{ugxProblemFiniteExtensionFinitePage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteExtensionFinitePage}
+{8.11.2. Extensions of Finite Fields}
+\beginscroll
+
+When you want to work with an extension of a finite field in Axiom,
+you have three choices to make:
+\indent{4}
+\beginitems
+\item[1. ] Do you want to generate an extension of the prime field
+(for example, \axiomType{PrimeField 2}) or an extension of a given field?
+%
+\item[2. ] Do you want to use a representation that is particularly
+efficient for multiplication, exponentiation and addition but
+uses a lot of computer memory (a representation that models the cyclic
+group structure of the multiplicative group of the field extension
+and uses a Zech logarithm table),  one that
+uses a normal basis for the vector space structure of the field
+extension, or one that performs arithmetic modulo an irreducible
+polynomial?
+The cyclic group representation is only usable up to ``medium''
+(relative to your machine's performance)
+sized fields.
+If the field is large and the normal basis is relatively simple,
+the normal basis representation is more efficient for exponentiation than
+the irreducible polynomial representation.
+%
+\item[3. ] Do you want to provide a polynomial explicitly, a root of which
+``generates'' the extension in one of the three senses in (2),
+or do you wish to have the polynomial generated for you?
+\enditems
+\indent{0}
+
+This illustrates one of the most important features of Axiom:
+you can choose exactly the right data-type and representation to
+suit your application best.
+
+We first tell you what domain constructors to use for each case
+above, and then give some examples.
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that automatically generate extensions of the prime field:
+\newline
+\axiomType{FiniteField} \newline
+\axiomType{FiniteFieldCyclicGroup} \newline
+\axiomType{FiniteFieldNormalBasis}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that generate extensions of an arbitrary field:
+\newline
+\axiomType{FiniteFieldExtension} \newline
+\axiomType{FiniteFieldExtensionByPolynomial} \newline
+\axiomType{FiniteFieldCyclicGroupExtension} \newline
+\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} \newline
+\axiomType{FiniteFieldNormalBasisExtension} \newline
+\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that use a cyclic group representation:
+\newline
+\axiomType{FiniteFieldCyclicGroup} \newline
+\axiomType{FiniteFieldCyclicGroupExtension} \newline
+\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that use a normal basis representation:
+\newline
+\axiomType{FiniteFieldNormalBasis} \newline
+\axiomType{FiniteFieldNormalBasisExtension} \newline
+\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that use an irreducible modulus polynomial representation:
+\newline
+\axiomType{FiniteField} \newline
+\axiomType{FiniteFieldExtension} \newline
+\axiomType{FiniteFieldExtensionByPolynomial}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors that generate a polynomial for you:
+\newline
+\axiomType{FiniteField} \newline
+\axiomType{FiniteFieldExtension} \newline
+\axiomType{FiniteFieldCyclicGroup} \newline
+\axiomType{FiniteFieldCyclicGroupExtension} \newline
+\axiomType{FiniteFieldNormalBasis} \newline
+\axiomType{FiniteFieldNormalBasisExtension}
+
+\texht{\hangafter=1\hangindent=2pc}{\noindent}
+Constructors for which you provide a polynomial:
+\newline
+\axiomType{FiniteFieldExtensionByPolynomial} \newline
+\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} \newline
+\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
+
+These constructors are discussed in the following sections where
+we collect together descriptions of extension fields that have the
+same underlying representation.\footnote{For
+more information on the implementation aspects of finite
+fields, see
+J. Grabmeier, A. Scheerhorn, {\it Finite Fields in AXIOM,}
+Technical Report, IBM Heidelberg Scientific Center, 1992.}
+
+If you don't really care about all this detail, just use
+\axiomType{FiniteField}.
+As your knowledge of your application and its Axiom implementation
+grows, you can come back and choose an alternative constructor that
+may improve the efficiency of your code.
+Note that the exported operations are almost the same for all constructors
+of finite field extensions and include the operations exported by
+\axiomType{PrimeField}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteModulusTitle}{Irreducible Modulus Polynomial Representations}
+\newcommand{\ugxProblemFiniteModulusNumber}{8.11.3.}
+
+@
+\section{Irreducible Modulus Polynomial Representations}
+\label{ugxProblemFiniteModulusPage}
+\begin{itemize}
+\item ugxProblemFiniteExtensionFinitePage 
+\ref{ugxProblemFiniteExtensionFinitePage} on
+page~\pageref{ugxProblemFiniteExtensionFinitePage}
+\end{itemize}
+\index{pages!ugxProblemFiniteModulusPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteModulusPage}
+\index{ugxProblemFiniteModulusPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteModulusPage}
+{8.11.3. Irreducible Modulus Polynomial Representations}
+\beginscroll
+
+All finite field extension constructors discussed in this
+section
+use a representation that performs arithmetic with univariate
+(one-variable) polynomials modulo an irreducible polynomial.
+This polynomial may be given explicitly by you or automatically
+generated.
+The ground field may be the prime field or one you specify.
+See 
+\downlink{``\ugxProblemFiniteExtensionFiniteTitle''}
+{ugxProblemFiniteExtensionFinitePage} in Section 
+\ugxProblemFiniteExtensionFiniteNumber\ignore{ugxProblemFiniteExtensionFinite}
+for general information about finite field extensions.
+
+For \axiomType{FiniteField} (abbreviation \axiomType{FF}) you provide a
+prime number \smath{p} and an extension degree \smath{n}.
+This degree can be 1.
+%
+\xtc{
+Axiom uses the prime field \axiomType{PrimeField(p)},
+here \axiomType{PrimeField 2},
+and it chooses an irreducible polynomial of degree \smath{n},
+here 12, over the ground field.
+}{
+\spadpaste{GF4096 := FF(2,12); \bound{GF4096}}
+}
+%
+
+The objects in the generated field extension are polynomials
+of degree at most \smath{n-1} with coefficients in the
+prime field.
+The polynomial indeterminate is automatically chosen by Axiom and
+is typically something like \axiom{\%A} or \axiom{\%D}.
+These (strange) variables are {\it only} for output display;
+there are several ways to construct elements of this field.
+
+The operation \axiomFun{index} enumerates the elements of the field
+extension and accepts as argument the integers from 1 to
+\smath{p \texht{^}{**} n}.
+%
+\xtc{
+The expression
+\axiom{index(p)} always gives the indeterminate.
+}{
+\spadpaste{a := index(2)\$GF4096 \bound{a}\free{GF4096}}
+}
+%
+%
+\xtc{
+You can build polynomials in \smath{a} and calculate in
+\axiom{GF4096}.
+}{
+\spadpaste{b := a**12 - a**5 + a \bound{b}\free{a}}
+}
+\xtc{
+}{
+\spadpaste{b ** 1000 \free{b}}
+}
+\xtc{
+}{
+\spadpaste{c := a/b \free{a b}\bound{c}}
+}
+%
+\xtc{
+Among the available operations are \axiomFun{norm} and \axiomFun{trace}.
+}{
+\spadpaste{norm c \free{c}}
+}
+\xtc{
+}{
+\spadpaste{trace c \free{c}}
+}
+%
+%
+
+Since any nonzero element is a power of a primitive element, how
+do we discover what the exponent is?
+%
+\xtc{
+The operation \axiomFun{discreteLog} calculates
+the exponent and,
+if it is called with only one argument, always refers to the primitive
+element returned by \axiomFun{primitiveElement}.
+}{
+\spadpaste{dL := discreteLog a \free{a}\bound{dL}}
+}
+\xtc{
+}{
+\spadpaste{g ** dL \free{dL g}}
+}
+
+\axiomType{FiniteFieldExtension} (abbreviation \axiomType{FFX}) is
+similar to \axiomType{FiniteField} except that the
+ground-field for \axiomType{FiniteFieldExtension} is arbitrary and
+chosen by you.
+%
+\xtc{
+In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+}{
+\spadpaste{GF16 := FF(2,4); \bound{GF16}}
+}
+\xtc{
+}{
+\spadpaste{GF4096 := FFX(GF16,3); \bound{GF4096x}\free{GF16}}
+}
+\xtc{
+}{
+\spadpaste{r := (random()\$GF4096) ** 20 \free{GF4096x}\bound{r}}
+}
+\xtc{
+}{
+\spadpaste{norm(r) \free{r}}
+}
+%
+
+\axiomType{FiniteFieldExtensionByPolynomial} (abbreviation \axiomType{FFP})
+is similar to \axiomType{FiniteField} and \axiomType{FiniteFieldExtension}
+but is more general.
+%
+\xtc{
+}{
+\spadpaste{GF4 := FF(2,2); \bound{GF4}}
+}
+\xtc{
+}{
+\spadpaste{f := nextIrreduciblePoly(random(6)\$FFPOLY(GF4))\$FFPOLY(GF4) \free{GF4}\bound{f}}
+}
+\xtc{
+For \axiomType{FFP} you choose both the
+ground field and the irreducible polynomial used in the representation.
+The degree of the extension is the degree of the polynomial.
+}{
+\spadpaste{GF4096 := FFP(GF4,f); \bound{GF4096y}\free{f GF4}}
+}
+\xtc{
+}{
+\spadpaste{discreteLog random()\$GF4096 \free{GF4096y}}
+}
+%
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteCyclicTitle}{Cyclic Group Representations}
+\newcommand{\ugxProblemFiniteCyclicNumber}{8.11.4.}
+
+@
+\section{Cyclic Group Representations}
+\label{ugxProblemFiniteCyclicPage}
+\begin{itemize}
+\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
+page~\pageref{ugxProblemFiniteUtilityPage}
+\end{itemize}
+\index{pages!ugxProblemFiniteCyclicPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteCyclicPage}
+\index{ugxProblemFiniteCyclicPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteCyclicPage}{8.11.4. Cyclic Group Representations}
+\beginscroll
+
+In every finite field there exist elements whose powers are all the
+nonzero elements of the field.
+Such an element is called a {\it primitive element}.
+
+In \axiomType{FiniteFieldCyclicGroup} (abbreviation \axiomType{FFCG})
+the nonzero elements are represented by the
+powers of a fixed primitive
+element
+of the field (that is, a generator of its
+cyclic multiplicative group).
+Multiplication (and hence exponentiation) using this representation is easy.
+To do addition, we consider our primitive element as the root of a primitive
+polynomial (an irreducible polynomial whose
+roots are all primitive).
+See 
+\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
+in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility} 
+for examples of how to
+compute such a polynomial.
+
+%
+\xtc{
+To use \axiomType{FiniteFieldCyclicGroup} you provide a prime number and an
+extension degree.
+}{
+\spadpaste{GF81 := FFCG(3,4); \bound{GF81}}
+}
+%
+%
+\xtc{
+Axiom uses the prime field, here \axiomType{PrimeField 3}, as the
+ground field and it chooses a primitive polynomial of degree
+\smath{n}, here 4, over the prime field.
+}{
+\spadpaste{a := primitiveElement()\$GF81 \bound{a}\free{GF81}}
+}
+%
+%
+\xtc{
+You can calculate in \axiom{GF81}.
+}{
+\spadpaste{b  := a**12 - a**5 + a \bound{b}\free{a}}
+}
+%
+\xtc{
+In this representation of finite fields the discrete logarithm
+of an element can be seen directly in its output form.
+}{
+\spadpaste{b \free{b}}
+}
+\xtc{
+}{
+\spadpaste{discreteLog b \free{b}}
+}
+%
+
+\axiomType{FiniteFieldCyclicGroupExtension} (abbreviation
+\axiomType{FFCGX}) is similar to \axiomType{FiniteFieldCyclicGroup}
+except that the ground field for
+\axiomType{FiniteFieldCyclicGroupExtension} is arbitrary and chosen
+by you.
+In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+%
+\xtc{
+}{
+\spadpaste{GF9 := FF(3,2); \bound{GF9}}
+}
+\xtc{
+}{
+\spadpaste{GF729 := FFCGX(GF9,3); \bound{GF729}\free{GF9}}
+}
+\xtc{
+}{
+\spadpaste{r := (random()\$GF729) ** 20 \free{GF729}\bound{r}}
+}
+\xtc{
+}{
+\spadpaste{trace(r) \free{r}}
+}
+%
+
+\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial}
+(abbreviation \axiomType{FFCGP})
+is similar to \axiomType{FiniteFieldCyclicGroup} and
+\axiomType{FiniteFieldCyclicGroupExtension}
+but is more general.
+For \axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} you choose both the
+ground field and the irreducible polynomial used in the representation.
+The degree of the extension is the degree of the polynomial.
+%
+\xtc{
+}{
+\spadpaste{GF3  := PrimeField 3; \bound{GF3}}
+}
+\xtc{
+We use a utility operation to generate an irreducible primitive
+polynomial (see 
+\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
+in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility}).
+The polynomial has one variable that is ``anonymous'': it displays
+as a question mark.
+}{
+\spadpaste{f := createPrimitivePoly(4)\$FFPOLY(GF3) \bound{f}\free{GF3}}
+}
+\xtc{
+}{
+\spadpaste{GF81 := FFCGP(GF3,f); \bound{GF81x}\free{f GF3}}
+}
+\xtc{
+Let's look at a random element from this field.
+}{
+\spadpaste{random()\$GF81 \free{GF81x}}
+}
+%
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteNormalTitle}{Normal Basis Representations}
+\newcommand{\ugxProblemFiniteNormalNumber}{8.11.5.}
+
+@
+\section{Normal Basis Representations}
+\label{ugxProblemFiniteNormalPage}
+\begin{itemize}
+\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
+page~\pageref{ugxProblemFiniteUtilityPage}
+\end{itemize}
+\index{pages!ugxProblemFiniteNormalPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteNormalPage}
+\index{ugxProblemFiniteNormalPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteNormalPage}{8.11.5. Normal Basis Representations}
+\beginscroll
+
+Let \smath{K} be a finite extension of degree \smath{n} of the
+finite field \smath{F} and let \smath{F} have \smath{q}
+elements.
+An element \smath{x} of \smath{K} is said to be
+{\it normal} over \smath{F} if the elements
+\centerline{{\axiom{1, x**q, x**(q**2), ..., x**(q**(n-1))}}}
+form a basis of \smath{K} as a vector space over \smath{F}.
+Such a basis is called a {\it normal basis}.\footnote{This
+agrees with the general definition of a normal basis because the
+\smath{n} distinct powers of the automorphism
+\texht{$x \mapsto x^q$}{\axiom{x +-> x**q}}
+constitute the Galois group of \smath{K/F}.}
+
+If \smath{x} is normal over \smath{F}, its minimal
+polynomial is also said to be {\it normal} over \smath{F}.
+There exist normal bases for all finite extensions of arbitrary
+finite fields.
+
+In \axiomType{FiniteFieldNormalBasis} (abbreviation
+\axiomType{FFNB}), the elements of the finite field are represented
+by coordinate vectors with respect to a normal basis.
+
+\xtc{
+You provide a prime \smath{p} and an extension degree
+\smath{n}.
+}{
+\spadpaste{K := FFNB(3,8) \bound{K}}
+}
+%
+Axiom uses the prime field \axiomType{PrimeField(p)},
+here \axiomType{PrimeField 3},
+and it chooses a normal polynomial of degree
+\smath{n}, here 8, over the ground field.
+The remainder class of the indeterminate is used
+as the normal element.
+The polynomial indeterminate is automatically chosen by Axiom and
+is typically something like \axiom{\%A} or \axiom{\%D}.
+These (strange) variables are only for output display;
+there are several ways to construct elements of this field.
+The output of the basis elements is something like
+\texht{$\%A^{q^i}.$}{
+\begin{verbatim}
+   i
+  q
+%A  .
+\end{verbatim}
+}
+%
+\xtc{
+}{
+\spadpaste{a := normalElement()\$K \bound{a}\free{K}}
+}
+%
+%
+\xtc{
+You can calculate in \smath{K} using \smath{a}.
+}{
+\spadpaste{b  := a**12 - a**5 + a \bound{b}\free{a}}
+}
+
+\axiomType{FiniteFieldNormalBasisExtension} (abbreviation
+\axiomType{FFNBX}) is
+similar to \axiomType{FiniteFieldNormalBasis} except that the
+groundfield for \axiomType{FiniteFieldNormalBasisExtension} is arbitrary and
+chosen by you.
+In case you select the prime field as ground field, there is
+essentially no difference between the constructed two finite field
+extensions.
+\xtc{
+}{
+\spadpaste{GF9 := FFNB(3,2); \bound{GF9}}
+}
+\xtc{
+}{
+\spadpaste{GF729 := FFNBX(GF9,3); \bound{GF729}\free{GF9}}
+}
+\xtc{
+}{
+\spadpaste{r := random()\$GF729 \bound{r}\free{GF729}}
+}
+\xtc{
+}{
+\spadpaste{r + r**3 + r**9 + r**27 \free{r}}
+}
+
+\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
+(abbreviation \axiomType{FFNBP}) is similar to
+\axiomType{FiniteFieldNormalBasis} and
+\axiomType{FiniteFieldNormalBasisExtension} but is more general.
+For \axiomType{FiniteFieldNormalBasisExtensionByPolynomial} you
+choose both the ground field and the irreducible polynomial used
+in the representation.
+The degree of the extension is the degree of the polynomial.
+
+%
+\xtc{
+}{
+\spadpaste{GF3 := PrimeField 3; \bound{GF3}}
+}
+\xtc{
+We use a utility operation to generate an irreducible normal
+polynomial (see 
+\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
+in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility}).
+The polynomial has one variable that is ``anonymous'': it displays
+as a question mark.
+}{
+\spadpaste{f := createNormalPoly(4)\$FFPOLY(GF3) \free{GF3}\bound{f}}
+}
+\xtc{
+}{
+\spadpaste{GF81 := FFNBP(GF3,f); \bound{GF81}\free{f GF3}}
+}
+\xtc{
+Let's look at a random element from this field.
+}{
+\spadpaste{r := random()\$GF81 \free{GF81}\bound{r1}}
+}
+\xtc{
+}{
+\spadpaste{r * r**3 * r**9 * r**27 \free{r1}}
+}
+\xtc{
+}{
+\spadpaste{norm r \free{r1}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteConversionTitle}{Conversion Operations for Finite Fields}
+\newcommand{\ugxProblemFiniteConversionNumber}{8.11.6.}
+
+@
+\section{Conversion Operations for Finite Fields}
+\label{ugxProblemFiniteConversionPage}
+\begin{itemize}
+\item ugxProblemFiniteExtensionFinitePage 
+\ref{ugxProblemFiniteExtensionFinitePage} on
+page~\pageref{ugxProblemFiniteExtensionFinitePage}
+\end{itemize}
+\index{pages!ugxProblemFiniteConversionPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteConversionPage}
+\index{ugxProblemFiniteConversionPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteConversionPage}
+{8.11.6. Conversion Operations for Finite Fields}
+\beginscroll
+
+\labelSpace{5pc}
+%
+\xtc{
+Let \texht{$K$}{\axiom{K}} be a finite field.
+}{
+\spadpaste{K := PrimeField 3 \bound{K}}
+}
+%
+An extension field \texht{$K_m$}{\axiom{Km}} of degree
+\smath{m} over \texht{$K$}{\axiom{K}} is a subfield of an
+extension field \texht{$K_n$}{\axiom{Kn}} of degree \smath{n}
+over \texht{$K$}{\axiom{K}} if and only if \smath{m} divides
+\smath{n}.
+\texht{
+\centerline{{\begin{tabular}{ccc}}}
+\centerline{{$K_n$ }}
+\centerline{{$|$ }}
+\centerline{{$K_m$ & $\Longleftrightarrow$ & $m | n$ }}
+\centerline{{$|$ }}
+\centerline{{K}}
+\centerline{{\end{tabular}}}
+}{
+\begin{verbatim}
+Kn
+|
+Km   <==>  m | n
+|
+K
+\end{verbatim}
+}
+\axiomType{FiniteFieldHomomorphisms} provides conversion operations
+between different extensions of one
+fixed finite ground field and between different representations of
+these finite fields.
+\xtc{
+Let's choose \smath{m} and \smath{n},
+}{
+\spadpaste{(m,n) := (4,8) \bound{m n}}
+}
+\xtc{
+build the field extensions,
+}{
+\spadpaste{Km := FiniteFieldExtension(K,m) \bound{Km}\free{K m}}
+}
+\xtc{
+and pick two random elements from the smaller field.
+}{
+\spadpaste{Kn := FiniteFieldExtension(K,n) \bound{Kn}\free{K n}}
+}
+\xtc{
+}{
+\spadpaste{a1 := random()\$Km \bound{a1}\free{Km}}
+}
+\xtc{
+}{
+\spadpaste{b1 := random()\$Km \bound{b1}\free{Km}}
+}
+%
+\xtc{
+Since \smath{m} divides \smath{n},
+\texht{$K_m$}{\axiom{Km}} is a subfield of \texht{$K_n$}{\axiom{Kn}}.
+}{
+\spadpaste{a2 := a1 :: Kn \bound{a2}\free{a1 Kn}}
+}
+\xtc{
+Therefore we can convert the elements of \texht{$K_m$}{\axiom{Km}}
+into elements of \texht{$K_n$}{\axiom{Kn}}.
+}{
+\spadpaste{b2 := b1 :: Kn \bound{b2}\free{b1 Kn}}
+}
+%
+%
+\xtc{
+To check this, let's do some arithmetic.
+}{
+\spadpaste{a1+b1 - ((a2+b2) :: Km) \free{a1 a2 b1 b2 Km Kn}}
+}
+\xtc{
+}{
+\spadpaste{a1*b1 - ((a2*b2) :: Km) \free{a1 a2 b1 b2 Km Kn}}
+}
+%
+There are also conversions available for the
+situation, when \texht{$K_m$}{\axiom{Km}} and \texht{$K_n$}{\axiom{Kn}}
+are represented in different ways (see
+\downlink{``\ugxProblemFiniteExtensionFiniteTitle''}
+{ugxProblemFiniteExtensionFinitePage} in Section 
+\ugxProblemFiniteExtensionFiniteNumber
+\ignore{ugxProblemFiniteExtensionFinite}).
+For example let's choose \texht{$K_m$}{\axiom{Km}} where the
+representation is 0 plus the cyclic multiplicative group and
+\texht{$K_n$}{\axiom{Kn}} with a normal basis representation.
+\xtc{
+}{
+\spadpaste{Km := FFCGX(K,m) \bound{Km2}\free{K m}}
+}
+\xtc{
+}{
+\spadpaste{Kn := FFNBX(K,n) \bound{Kn2}\free{K n}}
+}
+\xtc{
+}{
+\spadpaste{(a1,b1) := (random()\$Km,random()\$Km) \bound{a12 b12}\free{Km2}}
+}
+\xtc{
+}{
+\spadpaste{a2 := a1 :: Kn \bound{a22}\free{a12 Kn2}}
+}
+\xtc{
+}{
+\spadpaste{b2 := b1 :: Kn \bound{b22}\free{b12 Kn2}}
+}
+%
+\xtc{
+Check the arithmetic again.
+}{
+\spadpaste{a1+b1 - ((a2+b2) :: Km) \free{a12 a22 b12 b22 Km2}}
+}
+\xtc{
+}{
+\spadpaste{a1*b1 - ((a2*b2) :: Km) \free{a12 a22 b12 b22 Km2}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugxProblemFiniteUtilityTitle}
+{Utility Operations for Finite Fields}
+\newcommand{\ugxProblemFiniteUtilityNumber}{8.11.7.}
+
+@
+\section{Utility Operations for Finite Fields}
+\label{ugxProblemFiniteUtilityPage}
+\index{pages!ugxProblemFiniteUtilityPage!ug08.ht}
+\index{ug08.ht!pages!ugxProblemFiniteUtilityPage}
+\index{ugxProblemFiniteUtilityPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugxProblemFiniteUtilityPage}
+{8.11.7. Utility Operations for Finite Fields}
+\beginscroll
+
+\axiomType{FiniteFieldPolynomialPackage} (abbreviation
+\axiomType{FFPOLY})
+provides operations for generating, counting and testing polynomials
+over finite fields. Let's start with a couple of definitions:
+\indent{4}
+\beginitems
+\item[-] A polynomial is {\it primitive} if its roots are primitive
+elements in an extension of the coefficient field of degree equal
+to the degree of the polynomial.
+\item[-] A polynomial is {\it normal} over its coefficient field
+if its roots are linearly independent
+elements in an extension of the coefficient field of degree equal
+to the degree of the polynomial.
+\enditems
+\indent{0}
+In what follows, many of the generated polynomials have one
+``anonymous'' variable.
+This indeterminate is displayed as a question mark (\spadSyntax{?}).
+
+\xtc{
+To fix ideas, let's use the field with five elements for the first
+few examples.
+}{
+\spadpaste{GF5 := PF 5; \bound{GF5}}
+}
+%
+%
+\xtc{
+You can generate irreducible polynomials of any (positive) degree
+(within the storage capabilities of the computer and your ability
+to wait) by using
+\axiomFunFrom{createIrreduciblePoly}{FiniteFieldPolynomialPackage}.
+}{
+\spadpaste{f := createIrreduciblePoly(8)\$FFPOLY(GF5) \bound{f}\free{GF5}}
+}
+%
+\xtc{
+Does this polynomial have other important properties? Use
+\axiomFun{primitive?} to test whether it is a primitive polynomial.
+}{
+\spadpaste{primitive?(f)\$FFPOLY(GF5) \free{f}}
+}
+\xtc{
+Use \axiomFun{normal?} to test whether it is a normal polynomial.
+}{
+\spadpaste{normal?(f)\$FFPOLY(GF5) \free{f}}
+}
+\noindent
+Note that this is actually a trivial case,
+because a normal polynomial of degree \smath{n}
+must have a nonzero term of degree \smath{n-1}.
+We will refer back to this later.
+
+\xtc{
+To get a primitive polynomial of degree 8 just issue this.
+}{
+\spadpaste{p := createPrimitivePoly(8)\$FFPOLY(GF5) \bound{p}\free{GF5}}
+}
+\xtc{
+}{
+\spadpaste{primitive?(p)\$FFPOLY(GF5) \free{p}}
+}
+\xtc{
+This polynomial is not normal,
+}{
+\spadpaste{normal?(p)\$FFPOLY(GF5) \free{p}}
+}
+\xtc{
+but if you want a normal one simply write this.
+}{
+\spadpaste{n := createNormalPoly(8)\$FFPOLY(GF5) \bound{n} \free{GF5}}
+}
+\xtc{
+This polynomial is not primitive!
+}{
+\spadpaste{primitive?(n)\$FFPOLY(GF5) \free{n}}
+}
+This could have been seen directly, as
+the constant term is 1 here, which is not a primitive
+element up to the factor (\axiom{-1}) raised to the degree of the
+polynomial.\footnote{Cf. Lidl, R. \& Niederreiter,
+H., {\it Finite Fields,} Encycl. of Math. 20, (Addison-Wesley, 1983),
+p.90, Th. 3.18.}
+
+What about
+polynomials that are both primitive and normal?
+The existence of such a polynomial is by no means obvious.
+\footnote{The existence of such polynomials is proved in
+Lenstra, H. W. \& Schoof, R. J., {\it Primitive
+Normal Bases for Finite Fields,} Math. Comp. 48, 1987, pp. 217-231.}
+%
+\xtc{
+If you really need one use either
+\axiomFunFrom{createPrimitiveNormalPoly}{FiniteFieldPolynomialPackage} or
+\axiomFunFrom{createNormalPrimitivePoly}{FiniteFieldPolynomialPackage}.
+}{
+\spadpaste{createPrimitiveNormalPoly(8)\$FFPOLY(GF5) \free{GF5}}
+}
+%
+
+If you want to obtain additional polynomials of the various types above
+as given by the {\bf create...} operations above, you can use the {\bf
+next...} operations.
+For instance,
+\axiomFunFrom{nextIrreduciblePoly}{FiniteFieldPolynomialPackage} yields
+the next monic irreducible polynomial with the same degree as the input
+polynomial.
+By ``next'' we mean ``next in a natural order using the terms and
+coefficients.''
+This will become more clear in the following examples.
+
+\xtc{
+This is the field with five elements.
+}{
+\spadpaste{GF5 := PF 5; \bound{GF5}}
+}
+%
+\xtc{
+Our first example irreducible polynomial, say
+of degree 3, must be ``greater'' than this.
+}{
+\spadpaste{h := monomial(1,8)\$SUP(GF5) \bound{h}\free{GF5}}
+}
+\xtc{
+You can generate it by doing this.
+}{
+\spadpaste{nh := nextIrreduciblePoly(h)\$FFPOLY(GF5) \bound{nh}\free{h}}
+}
+%
+\xtc{
+Notice that this polynomial is not the same as the one
+\axiomFunFrom{createIrreduciblePoly}{FiniteFieldPolynomialPackage}.
+}{
+\spadpaste{createIrreduciblePoly(3)\$FFPOLY(GF5) \free{GF5}}
+}
+\xtc{
+You can step through all irreducible polynomials of degree 8 over
+the field with 5 elements by repeatedly issuing this.
+}{
+\spadpaste{nh := nextIrreduciblePoly(nh)\$FFPOLY(GF5) \free{nh}}
+}
+\xtc{
+You could also ask for the total number of these.
+}{
+\spadpaste{numberOfIrreduciblePoly(5)\$FFPOLY(GF5) \free{GF5}}
+}
+
+We hope that ``natural order'' on polynomials is now clear:
+first we compare the number of monomials of
+two polynomials (``more'' is ``greater'');
+then, if necessary, the degrees of these monomials (lexicographically),
+and lastly their coefficients (also
+lexicographically, and using the operation \axiomFun{lookup} if
+our field is not a prime field).
+Also note that we make both polynomials monic before looking at the
+coefficients:
+multiplying either polynomial  by a nonzero constant
+produces the same result.
+
+%
+\xtc{
+The package
+\axiomType{FiniteFieldPolynomialPackage} also provides similar
+operations for primitive and normal polynomials. With
+the exception of the number of primitive normal polynomials;
+we're not aware of any known formula for this.
+}{
+\spadpaste{numberOfPrimitivePoly(3)\$FFPOLY(GF5) \free{GF5}}
+}
+%
+%
+\xtc{
+Take these,
+}{
+\spadpaste{m := monomial(1,1)\$SUP(GF5) \bound{m}\free{GF5}}
+}
+\xtc{
+}{
+\spadpaste{f := m**3 + 4*m**2 + m + 2 \bound{fx}\free{m}}
+}
+%
+%
+\xtc{
+and then we have:
+}{
+\spadpaste{f1 := nextPrimitivePoly(f)\$FFPOLY(GF5) \free{fx}\bound{f1}}
+}
+\xtc{
+What happened?
+}{
+\spadpaste{nextPrimitivePoly(f1)\$FFPOLY(GF5) \free{f1}}
+}
+%
+Well, for the ordering used in
+\axiomFunFrom{nextPrimitivePoly}{FiniteFieldPolynomialPackage} we
+use as first criterion a comparison of the constant terms of the
+polynomials.
+Analogously, in
+\axiomFunFrom{nextNormalPoly}{FiniteFieldPolynomialPackage} we first
+compare the monomials of degree 1 less than the degree of the
+polynomials (which is nonzero, by an earlier remark).
+%
+\xtc{
+}{
+\spadpaste{f := m**3 + m**2 + 4*m + 1 \bound{fy} \free{m}}
+}
+\xtc{
+}{
+\spadpaste{f1 := nextNormalPoly(f)\$FFPOLY(GF5) \free{fy}\bound{f1y}}
+}
+\xtc{
+}{
+\spadpaste{nextNormalPoly(f1)\$FFPOLY(GF5) \free{f1y}}
+}
+%
+\noindent
+We don't have to restrict ourselves to prime fields.
+%
+\xtc{
+Let's consider, say, a field with 16 elements.
+}{
+\spadpaste{GF16 := FFX(FFX(PF 2,2),2); \bound{GF16} }
+}
+%
+%
+\xtc{
+We can apply any of the operations described above.
+}{
+\spadpaste{createIrreduciblePoly(5)\$FFPOLY(GF16) \free{GF16}}
+}
+
+\xtc{
+Axiom also provides operations
+for producing random polynomials of a given degree
+}{
+\spadpaste{random(5)\$FFPOLY(GF16) \free{GF16}}
+}
+\xtc{
+or with degree between two given bounds.
+}{
+\spadpaste{random(3,9)\$FFPOLY(GF16) \free{GF16}}
+}
+
+\axiomType{\axiom{FiniteFieldPolynomialPackage2}} (abbreviation
+\axiomType{FFPOLY2})
+exports an operation \axiomFun{rootOfIrreduciblePoly}
+for finding one root of an irreducible polynomial \axiom{f}
+in an extension field of the coefficient field.
+The degree of the extension has to be a multiple of the degree of \axiom{f}.
+It is not checked whether \axiom{f} actually is irreducible.
+
+%
+\xtc{
+To illustrate this operation, we fix a ground field \axiom{GF}
+}{
+\spadpaste{GF2 := PrimeField 2; \bound{GF2}}
+}
+%
+%
+\xtc{
+and then an extension field.
+}{
+\spadpaste{F := FFX(GF2,12) \bound{F}\free{GF2}}
+}
+%
+%
+\xtc{
+We construct an irreducible polynomial over \axiom{GF2}.
+}{
+\spadpaste{f := createIrreduciblePoly(6)\$FFPOLY(GF2) \bound{fz}\free{GF2}}
+}
+%
+%
+\xtc{
+We compute a root of \axiom{f}.
+}{
+\spadpaste{root := rootOfIrreduciblePoly(f)\$FFPOLY2(F,GF2) \free{F GF2 fz}\bound{root}}
+}
+%
+%and check the result
+%\spadcommand{eval(f, monomial(1,1)\$SUP(F) = root) \free{fz F root}}
+
+%*********************************************************************
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemIdealTitle}{Primary Decomposition of Ideals}
+\newcommand{\ugProblemIdealNumber}{8.12.}
+
+@
+\section{Primary Decomposition of Ideals}
+\label{ugProblemIdealPage}
+\index{pages!ugProblemIdealPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemIdealPage}
+\index{ugProblemIdealPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemIdealPage}{8.12. Primary Decomposition of Ideals}
+\beginscroll
+%*********************************************************************
+%
+Axiom provides a facility for the primary decomposition
+of
+polynomial ideals over fields of characteristic zero.
+The algorithm
+%is discussed in \cite{gtz:gbpdpi} and
+works in essentially two steps:
+\indent{4}
+\beginitems
+\item[1. ] the problem is solved for 0-dimensional ideals by ``generic''
+projection on the last coordinate
+\item[2. ] a ``reduction process'' uses localization and ideal quotients
+to reduce the general case to the 0-dimensional one.
+\enditems
+\indent{0}
+The Axiom constructor \axiomType{PolynomialIdeals}
+represents ideals with coefficients in any field and
+supports the basic ideal operations,
+including intersection, sum and quotient.
+\axiomType{IdealDecompositionPackage} contains the specific
+operations for the primary decomposition and the computation of the
+radical of an ideal with polynomial
+coefficients in a field of characteristic 0 with
+an effective algorithm for factoring polynomials.
+
+The following examples illustrate the capabilities of this facility.
+%
+\xtc{
+First consider the ideal generated by
+\texht{$x^2 + y^2 - 1$}{\axiom{x**2 + y**2 - 1}}
+(which defines a circle in the \axiom{(x,y)}-plane) and the ideal
+generated by \texht{$x^2 - y^2$}{\axiom{x**2 - y**2}} (corresponding to the
+straight lines \axiom{x = y} and \axiom{x = -y}.
+}{
+\spadpaste{(n,m) : List DMP([x,y],FRAC INT) \bound{nm}}
+}
+\xtc{
+}{
+\spadpaste{m := [x**2+y**2-1] \free{nm} \bound{m}}
+}
+\xtc{
+}{
+\spadpaste{n := [x**2-y**2] \free{nm} \bound{n}}
+}
+%
+%
+\xtc{
+We find the equations defining the intersection of the two loci.
+This correspond to the sum of the associated ideals.
+}{
+\spadpaste{id := ideal m  + ideal n \free{n m} \bound{id}}
+}
+%
+%
+\xtc{
+We can check if the locus contains only a finite number of points,
+that is, if the ideal is zero-dimensional.
+}{
+\spadpaste{zeroDim? id \free{id}}
+}
+\xtc{
+}{
+\spadpaste{zeroDim?(ideal m) \free{m}}
+}
+\xtc{
+}{
+\spadpaste{dimension ideal m \free{m}}
+}
+\xtc{
+We can find polynomial relations among the generators
+(\axiom{f} and \axiom{g} are the parametric equations of the knot).
+}{
+\spadpaste{(f,g):DMP([x,y],FRAC INT) \bound{fg}}
+}
+\xtc{
+}{
+\spadpaste{f := x**2-1 \free{fg} \bound{f}}
+}
+\xtc{
+}{
+\spadpaste{g := x*(x**2-1) \free{fg} \bound{g}}
+}
+\xtc{
+}{
+\spadpaste{relationsIdeal [f,g] \free{f g}}
+}
+
+\xtc{
+We can compute the primary decomposition of an ideal.
+}{
+\spadpaste{l: List DMP([x,y,z],FRAC INT) \bound{ll}}
+}
+\xtc{
+}{
+\spadpaste{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4] \free{ll} \bound{l}}
+}
+\xtc{
+}{
+\spadpaste{ld:=primaryDecomp ideal l \free{l} \bound{ld}}
+}
+\xtc{
+We can intersect back.
+}{
+\spadpaste{reduce(intersect,ld) \free{ld}}
+}
+
+\xtc{
+We can compute the radical of every primary component.
+}{
+\spadpaste{reduce(intersect,[radical ld.i for i in 1..2]) \free{ld}}
+}
+\xtc{
+Their intersection is equal to the radical of the ideal of \axiom{l}.
+}{
+\spadpaste{radical ideal l \free{l}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemGaloisTitle}{Computation of Galois Groups}
+\newcommand{\ugProblemGaloisNumber}{8.13.}
+
+@
+\section{Computation of Galois Groups}
+\label{ugProblemGaloisPage}
+\begin{itemize}
+\item FactoredXmpPage \ref{FactoredXmpPage} on
+page~\pageref{FactoredXmpPage}
+\item ugAvailCLEFPage \ref{ugAvailCLEFPage} on 
+page~\pageref{ugAvailCLEFPage}
+\end{itemize}
+\index{pages!ugProblemGaloisPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemGaloisPage}
+\index{ugProblemGaloisPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemGaloisPage}{8.13. Computation of Galois Groups}
+\beginscroll
+%
+As a sample use of Axiom's algebraic number facilities,
+we compute
+the Galois group of the polynomial
+\texht{$p(x) = x^5 - 5 x + 12$}{\axiom{p(x) = x**5 - 5*x + 12}}.
+%
+\xtc{
+}{
+\spadpaste{p := x**5 - 5*x + 12 \bound{p}}
+}
+%
+We would like to construct a polynomial \smath{f(x)}
+such that the splitting
+field
+of \smath{p(x)} is generated by one root of \smath{f(x)}.
+First we construct a polynomial \smath{r = r(x)} such that one
+root of \smath{r(x)} generates the field generated by two roots of
+the polynomial \smath{p(x)}.
+(As it will turn out, the field generated by two roots of
+\smath{p(x)} is, in fact, the splitting field of
+\smath{p(x)}.)
+
+From the proof of the primitive element theorem we know that
+if \smath{a} and \smath{b} are
+algebraic numbers, then the field
+\texht{${\bf Q}(a,b)$}{\axiom{Q(a,b)}} is equal to
+\texht{${\bf Q}(a+kb)$}{\axiom{Q(a + k*b)}} for an
+appropriately chosen integer \smath{k}.
+In our case, we construct the minimal polynomial of
+\texht{$a_i - a_j$}{\axiom{a[i] - a[j]}}, where
+\texht{$a_i$}{\axiom{a[i]}} and
+\texht{$a_j$}{\axiom{a[j]}} are two roots of \smath{p(x)}.
+We construct this polynomial using \axiomFun{resultant}.
+The main result we  need is the following:
+If \smath{f(x)} is a polynomial with roots
+\texht{$a_i \ldots a_m$}{\axiom{a[1]...a[m]}} and
+\smath{g(x)} is a polynomial
+with roots
+\texht{$b_i \ldots b_n$}{\axiom{b[1]...b[n]}}, then the polynomial
+\axiom{h(x) = resultant(f(y), g(x-y), y)}
+is a polynomial of degree \smath{m*n} with
+roots
+\texht{$a_i + b_j, i = 1 \ldots m, j = 1 \ldots n$}
+{\axiom{a[i] + b[j], 1 <= i <= m, 1 <= j <= n}}.
+
+\xtc{
+For \smath{f(x)} we use the polynomial \smath{p(x)}.
+For \smath{g(x)} we use the polynomial \smath{-p(-x)}.
+Thus, the polynomial we  first construct is
+\axiom{resultant(p(y), -p(y-x), y)}.
+}{
+\spadpaste{q := resultant(eval(p,x,y),-eval(p,x,y-x),y) \free{p} \bound{q}}
+}
+%
+The roots of \smath{q(x)} are
+\texht{$a_i - a_j, i \leq 1, j \leq 5$}
+{\axiom{a[i] - a[j], 1 <= i,j <= 5}}.
+Of course, there are five pairs \smath{(i,j)} with \smath{i = j},
+so \axiom{0} is a 5-fold root of \smath{q(x)}.
+%
+\xtc{
+Let's get rid of this factor.
+}{
+\spadpaste{q1 := exquo(q, x**5) \free{q} \bound{q1}}
+}
+\xtc{
+Factor the polynomial \axiom{q1}.
+}{
+\spadpaste{factoredQ := factor q1 \free{q1} \bound{factoredQ}}
+}
+%
+We see that \axiom{q1} has two irreducible factors, each of degree \axiom{10}.
+(The fact that the polynomial \axiom{q1} has two factors of
+degree \axiom{10} is enough to show
+that the Galois group of \smath{p(x)} is the dihedral group of
+order \axiom{10}.\footnote{See McKay, Soicher,  Computing Galois Groups
+over the Rationals, Journal of Number Theory 20, 273-281 (1983).
+We do not assume the results of this paper, however, and we continue with
+the computation.}
+Note that the type of \axiom{factoredQ} is \axiomType{FR POLY INT}, that is,
+\axiomType{Factored Polynomial Integer}.
+This is a special data type for recording factorizations of polynomials with
+integer coefficients (see \downlink{`Factored'}{FactoredXmpPage}
+\ignore{Factored}).
+%
+\xtc{
+We can access the individual factors using the operation
+\axiomFunFrom{nthFactor}{Factored}.
+}{
+\spadpaste{r := nthFactor(factoredQ,1) \free{factoredQ} \bound{r}}
+}
+%
+
+Consider the polynomial \smath{r = r(x)}.
+This is the minimal polynomial of the difference of two roots of
+\smath{p(x)}.
+Thus, the splitting field of \smath{p(x)} contains a subfield of
+degree \axiom{10}.
+We show that this subfield is, in fact, the splitting field of
+\smath{p(x)} by showing that \smath{p(x)} factors completely
+over this field.
+%
+\xtc{
+First we create a symbolic root of the polynomial \smath{r(x)}.
+(We replaced \axiom{x} by \axiom{b} in the
+polynomial \axiom{r} so that our symbolic root would be
+printed as \axiom{b}.)
+}{
+\spadpaste{beta:AN := rootOf(eval(r,x,b)) \free{r} \bound{beta}}
+}
+\xtc{
+We next tell Axiom to view \smath{p(x)} as a univariate polynomial
+in \axiom{x}
+with algebraic number coefficients.
+This is accomplished with this type declaration.
+}{
+\spadpaste{p := p::UP(x,INT)::UP(x,AN) \free{p} \bound{declareP}}
+}
+%
+%
+\xtc{
+Factor \smath{p(x)} over the field
+\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
+(This computation will take some time!)
+}{
+\spadpaste{algFactors := factor(p,[beta]) \free{declareP beta} \bound{algFactors}}
+}
+%
+When factoring over number fields, it is important to specify the
+field over which the polynomial is to be factored, as polynomials
+have different factorizations over different fields.
+When you use the operation \axiomFun{factor}, the field over which
+the polynomial is factored is the field generated by
+\indent{4}
+\beginitems
+\item[1. ] the algebraic numbers that appear
+in the coefficients of the polynomial, and
+\item[2. ] the algebraic numbers that
+appear in a list passed as an optional second argument of the operation.
+\enditems
+\indent{0}
+In our case, the coefficients of \axiom{p}
+are all rational integers and only \axiom{beta}
+appears in the list, so the field is simply
+\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
+%
+\xtc{
+It was necessary to give the list \axiom{[beta]}
+as a second argument of the operation
+because otherwise the polynomial would have been factored over the field
+generated by its coefficients, namely the rational numbers.
+}{
+\spadpaste{factor(p) \free{declareP}}
+}
+%
+We have shown that the splitting field of \smath{p(x)} has degree
+\axiom{10}.
+Since the symmetric group of degree 5 has only one transitive subgroup
+of order \axiom{10}, we know that the Galois group of \smath{p(x)} must be
+this group, the dihedral group
+of order \axiom{10}.
+Rather than stop here, we explicitly compute the action of the Galois
+group on the roots of \smath{p(x)}.
+
+First we assign the roots of \smath{p(x)} as the values of five
+variables.
+\xtc{
+We can obtain an individual root by negating the constant coefficient of
+one of the factors of \smath{p(x)}.
+}{
+\spadpaste{factor1 := nthFactor(algFactors,1) \free{algFactors} \bound{factor1}}
+}
+\xtc{
+}{
+\spadpaste{root1 := -coefficient(factor1,0) \free{factor1} \bound{root1}}
+}
+%
+%
+\xtc{
+We can obtain a list of all the roots in this way.
+}{
+\spadpaste{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5] \free{algFactors} \bound{roots}}
+}
+
+The expression
+\begin{verbatim}
+- coefficient(nthFactor(algFactors, i), 0)}
+\end{verbatim}
+is the \eth{\axiom{i }} root
+of \smath{p(x)} and the elements of \axiom{roots} are the \eth{\axiom{i }}
+roots of \smath{p(x)} as \axiom{i} ranges from \axiom{1} to \axiom{5}.
+
+\xtc{
+Assign the roots as the values of the variables \axiom{a1,...,a5}.
+}{
+\spadpaste{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5) \free{roots} \bound{ais}}
+}
+%
+
+Next we express the roots of \smath{r(x)} as polynomials in
+\axiom{beta}.
+We could obtain these roots by calling the operation \axiomFun{factor}:
+\axiom{factor(r, [beta])} factors \axiom{r(x)} over
+\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
+However, this is a lengthy computation and we can obtain the roots of
+\smath{r(x)} as differences of the roots \axiom{a1,...,a5} of
+\smath{p(x)}.
+Only ten of these differences are roots of \smath{r(x)} and the
+other ten are roots
+of the other irreducible factor of \axiom{q1}.
+We can determine if a given value is a root of \smath{r(x)} by evaluating
+\smath{r(x)} at that particular value.
+(Of course, the order in which factors are returned by the
+operation \axiomFun{factor}
+is unimportant and may change with different implementations of the operation.
+Therefore, we cannot predict in advance which differences are roots of
+\smath{r(x)} and which are not.)
+%
+\xtc{
+Let's look at four examples (two are roots of \smath{r(x)} and
+two are not).
+}{
+\spadpaste{eval(r,x,a1 - a2) \free{ais}}
+}
+\xtc{
+}{
+\spadpaste{eval(r,x,a1 - a3) \free{ais}}
+}
+\xtc{
+}{
+\spadpaste{eval(r,x,a1 - a4) \free{ais}}
+}
+\xtc{
+}{
+\spadpaste{eval(r,x,a1 - a5) \free{ais}}
+}
+%
+
+Take one of the differences that was a root of \smath{r(x)}
+and assign it to the variable \axiom{bb}.
+\xtc{
+For example, if \axiom{eval(r,x,a1 - a4)} returned \axiom{0}, you would
+enter this.
+}{
+\spadpaste{bb := a1 - a4 \free{ais} \bound{bb}}
+}
+Of course, if the difference is, in fact, equal to the root \axiom{beta},
+you should choose another root of \smath{r(x)}.
+
+Automorphisms of the splitting field are given by mapping a generator of
+the field, namely \axiom{beta}, to other roots of its minimal polynomial.
+Let's see what happens when \axiom{beta} is mapped to \axiom{bb}.
+%
+\xtc{
+We compute the images of the roots \axiom{a1,...,a5}
+under this automorphism:
+}{
+\spadpaste{aa1 := subst(a1,beta = bb) \free{beta bb ais} \bound{aa1}}
+}
+\xtc{
+}{
+\spadpaste{aa2 := subst(a2,beta = bb) \free{beta bb ais} \bound{aa2}}
+}
+\xtc{
+}{
+\spadpaste{aa3 := subst(a3,beta = bb) \free{beta bb ais} \bound{aa3}}
+}
+\xtc{
+}{
+\spadpaste{aa4 := subst(a4,beta = bb) \free{beta bb ais} \bound{aa4}}
+}
+\xtc{
+}{
+\spadpaste{aa5 := subst(a5,beta = bb) \free{beta bb ais} \bound{aa5}}
+}
+%
+Of course, the values \axiom{aa1,...,aa5} are simply a permutation of the values
+\axiom{a1,...,a5}.
+%
+\xtc{
+Let's find the value of \axiom{aa1} (execute as many of the following five commands
+as necessary).
+}{
+\spadpaste{(aa1 = a1) :: Boolean \free{aa1}}
+}
+\xtc{
+}{
+\spadpaste{(aa1 = a2) :: Boolean \free{aa1}}
+}
+\xtc{
+}{
+\spadpaste{(aa1 = a3) :: Boolean \free{aa1}}
+}
+\xtc{
+}{
+\spadpaste{(aa1 = a4) :: Boolean \free{aa1}}
+}
+\xtc{
+}{
+\spadpaste{(aa1 = a5) :: Boolean \free{aa1}}
+}
+%
+Proceeding in this fashion, you can find the values of
+\axiom{aa2,...aa5}.\footnote{Here you should use the
+\Clef{} line editor.
+See \downlink{``\ugAvailCLEFTitle''}{ugAvailCLEFPage} in Section 
+\ugAvailCLEFNumber\ignore{ugAvailCLEF} for more information about \Clef{}.}
+You have represented the automorphism \axiom{beta -> bb}
+as a permutation of the roots \axiom{a1,...,a5}.
+If you wish, you can repeat this computation for all the roots of
+\smath{r(x)} and represent the Galois group of
+\smath{p(x)} as a subgroup of the symmetric group on five letters.
+
+Here are two other problems that you may attack in a similar fashion:
+\indent{4}
+\beginitems
+\item[1. ] Show that the Galois group of
+\texht{$p(x) = x^4 + 2 x^3 - 2 x^2 - 3 x + 1$}{\axiom{
+p(x) = x**4 + 2*x**3 - 2*x**2 - 3*x + 1}}
+is the dihedral group of order eight.
+(The splitting field of this polynomial is the Hilbert class field
+of
+the quadratic field
+\texht{${\bf Q}(\sqrt{145})$}{\axiom{Q(sqrt(145))}}.)
+\item[2. ] Show that the Galois group of
+\texht{$p(x) = x^6 + 108$}{\axiom{p(x) = x**6 + 108}}
+has order 6 and is
+isomorphic to \texht{$S_3,$}{} the symmetric group on three letters.
+(The splitting field of this polynomial is the splitting field of
+\texht{$x^3 - 2$}{\axiom{x**3 - 2}}.)
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug08.ht>>=
+\newcommand{\ugProblemGeneticTitle}{Non-Associative Algebras and Modelling Genetic Laws}
+\newcommand{\ugProblemGeneticNumber}{8.14.}
+
+@
+\section{Non-Associative Algebras and Modelling Genetic Laws}
+\label{ugProblemGeneticPage}
+\begin{itemize}
+\item OctonionXmpPage \ref{OctonionXmpPage} on
+page~\pageref{OctonionXmpPage}
+\end{itemize}
+\index{pages!ugProblemGeneticPage!ug08.ht}
+\index{ug08.ht!pages!ugProblemGeneticPage}
+\index{ugProblemGeneticPage!ug08.ht!pages}
+<<ug08.ht>>=
+\begin{page}{ugProblemGeneticPage}
+{8.14. Non-Associative Algebras and Modelling Genetic Laws}
+\beginscroll
+
+Many algebraic structures of mathematics and Axiom
+have a multiplication operation \axiomOp{*} that satisfies
+the associativity law
+\texht{$a*(b*c) = (a*b)*c$}{\spad{a*(b*c) = (a*b)*c}}
+for all \smath{a}, \smath{b} and \smath{c}.
+The octonions (see 
+\downlink{`Octonion'}{OctonionXmpPage}\ignore{Octonion}) 
+are a well known exception.
+There are many other interesting non-associative structures, such as the
+class of
+Lie algebras.\footnote{Two Axiom implementations of Lie algebras
+are \spadtype{LieSquareMatrix} and \spadtype{FreeNilpotentLie}.}
+Lie algebras can be used, for example, to analyse Lie symmetry algebras of
+partial differential
+equations.
+In this section we show a different application of non-associative algebras,
+the modelling of genetic laws.
+
+The Axiom library contains several constructors for
+creating non-assoc\-i\-a\-tive structures,
+ranging from the categories \spadtype{Monad},
+\spadtype{NonAssociativeRng}, and
+\spadtype{FramedNonAssociativeAlgebra}, to the domains
+\spadtype{AlgebraGivenByStructuralConstants} and
+\spadtype{GenericNonAssociativeAlgebra}.
+Furthermore, the package \spadtype{AlgebraPackage} provides
+operations for analysing the structure of such algebras.\footnote{%
+The interested reader can learn more about these aspects of the
+Axiom library from the paper
+``Computations in Algebras of Finite Rank,''
+by Johannes Grabmeier and Robert Wisbauer,
+Technical Report, IBM Heidelberg Scientific Center, 1992.}
+
+Mendel's genetic laws are often written in a form like
+\texht{
+\narrowDisplay{Aa \times Aa = {1\over 4}AA + {1\over 2}Aa + {1\over 4}aa.}}{
+\spad{Aa * Aa = (1/4)*AA + (1/2)*Aa + (1/4)*aa.}
+}
+The implementation of general algebras in Axiom allows us to
+use this as the definition for multiplication in an algebra.
+Hence, it is possible to study
+questions of genetic inheritance using Axiom.
+To demonstrate this more precisely,  we discuss one example from a
+monograph of \texht{A. W\"orz-Busekros}{A. Woerz-Busekros},
+where you can also find a general setting of this theory.\footnote{%
+\texht{W\"{o}rz-Busekros}{Woerz-Busekros}, A.,
+{\it Algebras in Genetics},
+Springer Lectures Notes in Biomathematics 36, Berlin e.a. (1980).
+In particular, see example 1.3.}
+
+We assume that there is an infinitely large random mating population.
+Random mating of two gametes \texht{$a_i$}{\spad{ai}}  and
+\texht{$a_j$}{\spad{aj}} gives zygotes
+\texht{$a_ia_j$}{\spad{ai aj}}, which produce new gametes.
+In classical Mendelian segregation we have
+\texht{$a_ia_j = {1 \over 2}a_i+{1 \over 2}a_j$}{\spad{ai aj = (1/2)*ai+(1/2)*aj}}.
+In general, we have
+\texht{\narrowDisplay{a_ia_j = \sum_{k=1}^n \gamma_{i,j}^k\ a_k.}}%
+{\spad{ai aj = gammaij1 a1 + gammaij2 a2 + ... + gammaijn an}}
+The segregation rates \texht{$\gamma_{i,j}$}{\spad{gammaij}}
+are  the structural constants of an
+\smath{n}-dimensional algebra.
+This is provided in Axiom by
+the constructor \spadtype{AlgebraGivenByStructuralConstants}
+(abbreviation \spadtype{ALGSC}).
+
+Consider two coupled autosomal loci with alleles
+\smath{A},\smath{a}, \smath{B}, and \smath{b}, building four
+different gametes
+\texht{$a_1 =  AB, a_2 =  Ab, a_3 =  aB,$ and $a_4 =  ab$}%
+{\spad{a1 :=  AB, a2 :=  Ab, a3 :=  aB,} and \spad{a4 :=  ab}}.
+The zygotes \texht{$a_ia_j$}{\spad{ai aj}}
+produce gametes \texht{$a_i$}{\spad{ai}} and
+\texht{$a_j$}{\spad{aj}}
+with classical Mendelian segregation.
+Zygote \texht{$a_1a_4$}{a1 a4} undergoes transition
+to \texht{$a_2a_3$}{\spad{a2 a3}}
+and vice versa with probability
+\texht{$0 \le \theta \le {1\over 2}$}{0 <= theta <= 1/2}.
+
+\xtc{
+Define a list
+\texht{$[(\gamma_{i,j}^k) 1 \le k \le 4]$}{\spad{[(gammaijk) 1 <= k <= 4]}}
+of four four-by-four matrices giving the segregation
+rates.
+We use the value \smath{1/10} for \smath{\theta}.
+}{
+\spadpaste{segregationRates : List SquareMatrix(4,FRAC INT) := [matrix [ [1, 1/2, 1/2, 9/20], [1/2, 0, 1/20, 0], [1/2, 1/20, 0, 0], [9/20, 0, 0, 0] ], matrix [ [0, 1/2, 0, 1/20], [1/2, 1, 9/20, 1/2], [0, 9/20, 0, 0], [1/20, 1/2, 0, 0] ], matrix [ [0, 0, 1/2, 1/20], [0, 0, 9/20, 0], [1/2, 9/20, 1, 1/2], [1/20, 0, 1/2, 0] ], matrix [ [0, 0, 0, 9/20], [0, 0, 1/20, 1/2], [0, 1/20, 0, 1/2], [9/20, 1/2, 1/2, 1] ] ] \bound{segregationRates}}
+}
+\xtc{
+Choose the appropriate symbols for the basis of gametes,
+}{
+\spadpaste{gametes := ['AB,'Ab,'aB,'ab]  \bound{gametes}}
+}
+\xtc{
+Define the algebra.
+}{
+\spadpaste{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A}\free{gametes, segregationRates}}
+}
+
+\xtc{
+What are the probabilities for zygote
+\texht{$a_1a_4$}{a1 a4} to produce the different gametes?
+}{
+\spadpaste{a := basis()\$A;  a.1*a.4}
+}
+
+Elements in this algebra whose coefficients sum to one play a
+distinguished role.
+They represent a population with the distribution of gametes
+reflected by the coefficients with respect to the basis of
+gametes.
+
+Random mating of different populations \smath{x} and \smath{y} is described by
+their product \smath{x*y}.
+
+\xtc{
+This product is commutative only
+if the gametes are not sex-dependent, as in our example.
+}{
+\spadpaste{commutative?()\$A \free{A}}
+}
+\xtc{
+In general, it is not associative.
+}{
+\spadpaste{associative?()\$A \free{A}}
+}
+
+Random mating within a population \smath{x} is described by
+\smath{x*x.}
+The next generation is \smath{(x*x)*(x*x).}
+
+\xtc{
+Use decimal numbers to compare the distributions more easily.
+}{
+\spadpaste{x : ALGSC(DECIMAL, 4, gametes, segregationRates) :=  convert [3/10, 1/5, 1/10, 2/5]\bound{x}\free{gametes, segregationRates}}
+}
+\xtc{
+To compute directly the gametic distribution in the fifth
+generation, we use \spadfun{plenaryPower}.
+}{
+\spadpaste{plenaryPower(x,5) \free{x}}
+}
+
+We now ask two questions:
+Does this distribution converge to an equilibrium state?
+What are the distributions that are stable?
+
+\xtc{
+This is an invariant of the algebra and it is used to answer
+the first question.
+The new indeterminates describe a symbolic distribution.
+}{
+\spadpaste{q := leftRankPolynomial()\$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q}\free{gametes, segregationRates}}
+}
+\xtc{
+Because the coefficient \texht{${9 \over 20}$}{\axiom{9/20}} has absolute
+value less than 1, all distributions do converge,
+by a theorem of this theory.
+}{
+\spadpaste{factor(q :: POLY FRAC INT) \free{q}}
+}
+\xtc{
+The second question is answered by searching for idempotents in the
+algebra.
+}{
+\spadpaste{cI := conditionsForIdempotents()\$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI} \free{gametes, segregationRates}}
+}
+\xtc{
+Solve these equations and look at the first solution.
+}{
+\spadpaste{gbs:= groebnerFactorize cI; gbs.1\free{cI}\bound{gbs}}
+}
+
+Further analysis using the package \spadtype{PolynomialIdeals}
+shows that there is a two-dimensional variety of equilibrium states and all
+other solutions are contained in it.
+
+\xtc{
+Choose one equilibrium state by setting two indeterminates to
+concrete values.
+}{
+\spadpaste{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol} \free{gbs}}
+}
+\xtc{
+}{
+\spadpaste{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e} \free{A, sol}}
+}
+\xtc{
+Verify the result.
+}{
+\spadpaste{e*e-e \free{e}}
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 10 (ug10.ht)}
+<<ug10.ht>>=
+\newcommand{\ugIntProgTitle}{Interactive Programming}
+\newcommand{\ugIntProgNumber}{10.}
+
+@
+\section{Interactive Programming}
+\label{ugIntProgPage}
+\begin{itemize}
+\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on
+page~\pageref{ugAppGraphicsPage}
+\item ugIntProgDrawingPage \ref{ugIntProgDrawingPage} on
+page~\pageref{ugIntProgDrawingPage}
+\item ugIntProgRibbonPage \ref{ugIntProgRibbonPage} on
+page~\pageref{ugIntProgRibbonPage}
+\item ugIntProgColorPage \ref{ugIntProgColorPage} on
+page~\pageref{ugIntProgColorPage}
+\item ugIntProgPLCPage \ref{ugIntProgPLCPage} on
+page~\pageref{ugIntProgPLCPage}
+\item ugIntProgColorArrPage \ref{ugIntProgColorArrPage} on
+page~\pageref{ugIntProgColorArrPage}
+\item ugIntProgVecFieldsPage \ref{ugIntProgVecFieldsPage} on
+page~\pageref{ugIntProgVecFieldsPage}
+\item ugIntProgCompFunsPage \ref{ugIntProgCompFunsPage} on
+page~\pageref{ugIntProgCompFunsPage}
+\item ugIntProgFunctionsPage \ref{ugIntProgFunctionsPage} on
+page~\pageref{ugIntProgFunctionsPage}
+\item ugIntProgNewtonPage \ref{ugIntProgNewtonPage} on
+page~\pageref{ugIntProgNewtonPage}
+\end{itemize}
+\index{pages!ugIntProgPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgPage}
+\index{ugIntProgPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgPage}{10. Interactive Programming}
+\beginscroll
+
+Programming in the interpreter is easy.
+So is the use of Axiom's graphics facility.
+Both are rather flexible and allow you to use them for many
+interesting applications.
+However, both require learning some basic ideas and skills.
+
+All graphics examples in the \Gallery{} section are either
+produced directly by interactive commands or by interpreter
+programs.
+Four of these programs are introduced here.
+By the end of this chapter you will know enough about graphics and
+programming in the interpreter to not only understand all these
+examples, but to tackle interesting and difficult problems on your
+own.
+\downlink{``\ugAppGraphicsTitle''}{ugAppGraphicsPage} in 
+Appendix \ugAppGraphicsNumber\ignore{ugAppGraphics} lists 
+all the remaining commands and
+programs used to create these images.
+
+\beginmenu
+    \menudownlink{{10.1. Drawing Ribbons Interactively}}{ugIntProgDrawingPage}
+    \menudownlink{{10.2. A Ribbon Program}}{ugIntProgRibbonPage}
+    \menudownlink{{10.3. Coloring and Positioning Ribbons}}{ugIntProgColorPage}
+    \menudownlink{{10.4. Points, Lines, and Curves}}{ugIntProgPLCPage}
+    \menudownlink{{10.5. A Bouquet of Arrows}}{ugIntProgColorArrPage}
+    \menudownlink{{10.6. Drawing Complex Vector Fields}}
+{ugIntProgVecFieldsPage}
+    \menudownlink{{10.7. Drawing Complex Functions}}{ugIntProgCompFunsPage}
+    \menudownlink{{10.8. Functions Producing Functions}}
+{ugIntProgFunctionsPage}
+    \menudownlink{{10.9. Automatic Newton Iteration Formulas}}
+{ugIntProgNewtonPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgDrawingTitle}{Drawing Ribbons Interactively}
+\newcommand{\ugIntProgDrawingNumber}{10.1.}
+
+@
+\section{Drawing Ribbons Interactively}
+\label{ugIntProgDrawingPage}
+\begin{itemize}
+\item ugGraphPage \ref{ugGraphPage} on
+page~\pageref{ugGraphPage}
+\end{itemize}
+\index{pages!ugIntProgDrawingPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgDrawingPage}
+\index{ugIntProgDrawingPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgDrawingPage}{10.1. Drawing Ribbons Interactively}
+\beginscroll
+%
+
+We begin our discussion of interactive graphics with the creation
+of a useful facility: plotting ribbons of two-graphs in
+three-space.
+Suppose you want to draw the \twodim{} graphs of \smath{n}
+functions \texht{$f_i(x), 1 \leq i \leq n,$}{\spad{f_i(x), 1 <= i
+<= 5,}} all over some fixed range of \smath{x}.
+One approach is to create a \twodim{} graph for each one, then
+superpose one on top of the other.
+What you will more than likely get is a jumbled mess.
+Even if you make each function a different color, the result is
+likely to be confusing.
+
+A better approach is to display each of the \smath{f_i(x)} in three
+dimensions as a ``ribbon'' of some appropriate width along the
+\smath{y}-direction, laying down each  ribbon next to the
+previous one.
+A ribbon is simply a function of \smath{x} and \smath{y} depending
+only on \smath{x.}
+
+We illustrate this for \smath{f_i(x)} defined as simple powers of
+\smath{x} for \smath{x} ranging between \smath{-1} and \smath{1}.
+
+\psXtc{
+Draw the ribbon for \texht{$z = x^2$}{\spad{z=x ** 2}}.
+}{
+\graphpaste{draw(x**2,x=-1..1,y=0..1)}
+}{
+\epsffile[0 0 295 295]{../ps/ribbon1.ps}
+}
+
+Now that was easy!
+What you get is a ``wire-mesh'' rendition of the ribbon.
+That's fine for now.
+Notice that the mesh-size is small in both the \smath{x} and the
+\smath{y} directions.
+Axiom normally computes points in both these directions.
+This is unnecessary.
+One step is all we need in the \smath{y}-direction.
+To have Axiom economize on \spad{y}-points, we re-draw the
+ribbon with option \spad{var2Steps == 1}.
+
+\psXtc{
+Re-draw the ribbon, but with option \spad{var2Steps == 1}
+so that only \spad{1} step is computed in the
+\smath{y} direction.
+}{
+\graphpaste{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1) \bound{d1}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbon2.ps}
+}
+
+The operation has created a viewport, that is, a graphics window
+on your screen.
+We assigned the viewport to \spad{vp} and now we manipulate
+its contents.
+
+
+Graphs are objects, like numbers and algebraic expressions.
+You may want to do some experimenting with graphs.
+For example, say
+\begin{verbatim}
+showRegion(vp, "on")
+\end{verbatim}
+to put a bounding box around the ribbon.
+Try it!
+Issue \spad{rotate(vp, -45, 90)} to rotate the
+figure \smath{-45} longitudinal degrees and \smath{90} latitudinal
+degrees.
+
+\psXtc{
+Here is a different rotation.
+This turns the graph so you can view it along the \smath{y}-axis.
+}{
+\spadpaste{rotate(vp, 0, -90)\bound{d3}\free{d1}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbon2r.ps}
+}
+
+There are many other things you can do.
+In fact, most everything you can do interactively using the
+\threedim{} control panel (such as translating, zooming, resizing,
+coloring, perspective and lighting selections) can also be done
+directly by operations (see \downlink{``\ugGraphTitle''}{ugGraphPage} 
+in Chapter \ugGraphNumber\ignore{ugGraph} for more details).
+
+When you are done experimenting, say \spad{reset(vp)} to restore the
+picture to its original position and settings.
+
+
+Let's add another ribbon to our picture---one
+for \texht{$x^3$}{\spad{x**3}}.
+Since \smath{y} ranges from \smath{0} to \smath{1} for the
+first ribbon, now let \smath{y} range from \smath{1} to
+\smath{2.}
+This puts the second ribbon next to the first one.
+
+How do you add a second ribbon to the viewport?
+One method is
+to extract the ``space'' component from the
+viewport using the operation
+\spadfunFrom{subspace}{ThreeDimensionalViewport}.
+You can think of the space component as the object inside the
+window (here, the ribbon).
+Let's call it \spad{sp}.
+To add the second ribbon, you draw the second ribbon using the
+option \spad{space == sp}.
+
+\xtc{
+Extract the space component of \spad{vp}.
+}{
+\spadpaste{sp := subspace(vp)\bound{d5}\free{d1}}
+}
+
+\psXtc{
+Add the ribbon for
+\texht{$x^3$}{\spad{x**3}} alongside that for
+\texht{$x^2$}{\spad{x**2}}.
+}{
+\graphpaste{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6}\free{d5}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbons.ps}
+}
+
+Unless you moved the original viewport, the new viewport covers
+the old one.
+You might want to check that the old object is still there by
+moving the top window.
+
+Let's show quadrilateral polygon outlines on the ribbons and then
+enclose the ribbons in a box.
+
+\psXtc{
+Show quadrilateral polygon outlines.
+}{
+\spadpaste{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10}\free{d6}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbons2.ps}
+}
+\psXtc{
+Enclose the ribbons in a box.
+}{
+\spadpaste{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11}\free{d10}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbons2b.ps}
+}
+
+This process has become tedious!
+If we had to add two or three more ribbons, we would have to
+repeat the above steps several more times.
+It is time to write an interpreter program to help us take care of
+the details.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgRibbonTitle}{A Ribbon Program}
+\newcommand{\ugIntProgRibbonNumber}{10.2.}
+
+@
+\section{A Ribbon Program}
+\label{ugIntProgRibbonPage}
+\begin{itemize}
+\item ugUserPage \ref{ugUserPage} on
+page~\pageref{ugUserPage}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\end{itemize}
+\index{pages!ugIntProgRibbonPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgRibbonPage}
+\index{ugIntProgRibbonPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgRibbonPage}{10.2. A Ribbon Program}
+\beginscroll
+%
+
+The above approach creates a new viewport for each additional
+ribbon.
+A better approach is to build one object composed of all ribbons
+before creating a viewport.
+To do this, use \spadfun{makeObject} rather than \spadfun{draw}.
+The operations have similar formats, but
+\spadfun{draw} returns a viewport and
+\spadfun{makeObject} returns a space object.
+
+We now create a function \userfun{drawRibbons} of two arguments:
+\spad{flist}, a list of formulas for the ribbons you want to draw,
+and \spad{xrange}, the range over which you want them drawn.
+Using this function, you can just say
+\begin{verbatim}
+drawRibbons([x**2, x**3], x=-1..1)
+\end{verbatim}
+to do all of the work required in the last section.
+Here is the \userfun{drawRibbons} program.
+Invoke your favorite editor and create a file called {\bf ribbon.input}
+containing the following program.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ drawRibbons(flist,\ xrange)\ ==}\newline
+{\tt 2.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 3.\ \ \ \ \ y0\ :=\ 0}\newline
+{\tt 4.\ \ \ \ \ for\ f\ in\ flist\ repeat}\newline
+{\tt 5.\ \ \ \ \ \ \ makeObject(f,\ xrange,\ y=y0..y0+1,\ }\newline
+{\tt 6.\ \ \ \ \ \ \ \ \ \ space==sp,\ var2Steps\ ==\ 1)}\newline
+{\tt 7.\ \ \ \ \ \ \ y0\ :=\ y0\ +\ 1}\newline
+{\tt 8.\ \ \ \ \ vp\ :=\ makeViewport3D(sp,\ "Ribbons")}\newline
+{\tt 9.\ \ \ \ \ drawStyle(vp,\ "shade")}\newline
+{\tt 10.\ \ \ \ outlineRender(vp,\ "on")}\newline
+{\tt 11.\ \ \ \ showRegion(vp,"on")}\newline
+{\tt 12.\ \ \ \ n\ :=\ \#\ flist}\newline
+{\tt 13.\ \ \ \ zoom(vp,n,1,n)}\newline
+{\tt 14.\ \ \ \ rotate(vp,0,75)}\newline
+{\tt 15.\ \ \ \ vp}\newline
+\caption{The first \protect\pspadfun{drawRibbons} function.}\label{fig-ribdraw1}
+\endImportant
+
+Here are some remarks on the syntax used in the \pspadfun{drawRibbons}
+function (consult \downlink{``\ugUserTitle''}{ugUserPage} in Chapter
+\ugUserNumber\ignore{ugUser} for more details).  Unlike most other
+programming languages which use semicolons, parentheses, or {\it
+begin}--{\it end} brackets to delineate the structure of programs, the
+structure of an Axiom program is determined by indentation.  The first
+line of the function definition always begins in column 1.  All other
+lines of the function are indented with respect to the first line and
+form a \spadgloss{pile} (see
+\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} in Section
+\ugLangBlocksNumber\ignore{ugLangBlocks}).
+
+The definition of \userfun{drawRibbons} consists of a pile of
+expressions to be executed one after another.  Each expression of the
+pile is indented at the same level.  Lines 4-7 designate one single
+expression: since lines 5-7 are indented with respect to the others,
+these lines are treated as a continuation of line 4.  Also since lines
+5 and 7 have the same indentation level, these lines designate a pile
+within the outer pile.
+
+The last line of a pile usually gives the value returned by the pile.
+Here it is also the value returned by the function.  Axiom knows this
+is the last line of the function because it is the last line of the
+file.  In other cases, a new expression beginning in column one
+signals the end of a function.
+
+The line \spad{drawStyle(vp,"shade")} is given after the viewport has
+been created to select the draw style.  We have also used the
+\spadfunFrom{zoom}{ThreeDimensionalViewport} option.  Without the
+zoom, the viewport region would be scaled equally in all three
+coordinate directions.
+
+Let's try the function \userfun{drawRibbons}.
+First you must read the file to give Axiom the function definition.
+
+\xtc{
+Read the input file.
+}{
+\spadpaste{)read ribbon \bound{s0}}
+}
+\psXtc{
+Draw ribbons for \texht{$x, x^2,\dots, x^5$}{x, x**2,...,x**5}
+for \texht{$-1 \leq x \leq 1$}{-1 <= x <= 1}
+}{
+\graphpaste{drawRibbons([x**i for i in 1..5],x=-1..1) \free{s0}}
+}{
+\epsffile[0 0 295 295]{../ps/ribbons5.ps}
+}
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgColorTitle}{Coloring and Positioning Ribbons}
+\newcommand{\ugIntProgColorNumber}{10.3.}
+
+@
+\section{Coloring and Positioning Ribbons}
+\label{ugIntProgColorPage}
+\index{pages!ugIntProgColorPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgColorPage}
+\index{ugIntProgColorPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgColorPage}{10.3. Coloring and Positioning Ribbons}
+\beginscroll
+%
+
+Before leaving the ribbon example, we  make two improvements.
+Normally, the color given to each point in the space is a
+function of its height within a bounding box.
+The points at the bottom of the
+box are red, those at the top are purple.
+
+To change the normal coloring, you can give
+an option \spad{colorFunction == {\it function}}.
+When Axiom goes about displaying the data, it
+determines the range of colors used for all points within the box.
+Axiom then distributes these numbers uniformly over the number of hues.
+Here we use the simple color function
+\texht{$(x,y) \mapsto i$}{(x,y) +-> i} for the
+\eth{\smath{i}} ribbon.
+
+Also, we add an argument \spad{yrange} so you can give the range of
+\spad{y} occupied by the ribbons.
+For example, if the \spad{yrange} is given as
+\spad{y=0..1} and there are \smath{5} ribbons to be displayed, each
+ribbon would have width \smath{0.2} and would appear in the
+range \texht{$0 \leq y \leq 1$}{\spad{0 <= y <= 1}}.
+
+Refer to lines 4-9.
+Line 4 assigns to \spad{yVar} the variable part of the
+\spad{yrange} (after all, it need not be \spad{y}).
+Suppose that \spad{yrange} is given as \spad{t = a..b} where \spad{a} and
+\spad{b} have numerical values.
+Then line 5 assigns the value of \spad{a} to the variable \spad{y0}.
+Line 6 computes the width of the ribbon by dividing the difference of
+\spad{a} and \spad{b} by the number, \spad{num}, of ribbons.
+The result is assigned to the variable \spad{width}.
+Note that in the for-loop in line 7, we are iterating in parallel; it is
+not a nested loop.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ drawRibbons(flist,\ xrange,\ yrange)\ ==}\newline
+{\tt 2.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 3.\ \ \ \ \ num\ :=\ \#\ flist}\newline
+{\tt 4.\ \ \ \ \ yVar\ :=\ variable\ yrange}\newline
+{\tt 5.\ \ \ \ \ y0:Float\ \ \ \ :=\ lo\ segment\ yrange}\newline
+{\tt 6.\ \ \ \ \ width:Float\ :=\ (hi\ segment\ yrange\ -\ y0)/num}\newline
+{\tt 7.\ \ \ \ \ for\ f\ in\ flist\ for\ color\ in\ 1..num\ repeat}\newline
+{\tt 8.\ \ \ \ \ \ \ makeObject(f,\ xrange,\ yVar\ =\ y0..y0+width,}\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ var2Steps\ ==\ 1,\ colorFunction\ ==\ (x,y)\ +->\ color,\ \_}\newline
+{\tt 10.\ \ \ \ \ \ \ \ space\ ==\ sp)}\newline
+{\tt 11.\ \ \ \ \ \ y0\ :=\ y0\ +\ width}\newline
+{\tt 12.\ \ \ \ vp\ :=\ makeViewport3D(sp,\ "Ribbons")}\newline
+{\tt 13.\ \ \ \ drawStyle(vp,\ "shade")}\newline
+{\tt 14.\ \ \ \ outlineRender(vp,\ "on")}\newline
+{\tt 15.\ \ \ \ showRegion(vp,\ "on")}\newline
+{\tt 16.\ \ \ \ vp}\newline
+\caption{The final \protect\pspadfun{drawRibbons} function.}\label{fig-ribdraw2}
+\endImportant
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgPLCTitle}{Points, Lines, and Curves}
+\newcommand{\ugIntProgPLCNumber}{10.4.}
+
+@
+\section{Points, Lines, and Curves}
+\label{ugIntProgPLCPage}
+\index{pages!ugIntProgPLCPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgPLCPage}
+\index{ugIntProgPLCPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgPLCPage}{10.4. Points, Lines, and Curves}
+\beginscroll
+%
+What you have seen so far is a high-level program using the
+graphics facility.
+We now turn to the more basic notions of points, lines, and curves
+in \threedim{} graphs.
+These facilities use small floats (objects
+of type \spadtype{DoubleFloat}) for data.
+Let us first give names to the small float values \smath{0} and
+\smath{1}.
+\xtc{
+The small float 0.
+}{
+\spadpaste{zero := 0.0@DFLOAT \bound{d1}}
+}
+\xtc{
+The small float 1.
+}{
+\spadpaste{one  := 1.0@DFLOAT \bound{d2}}
+}
+The \spadSyntax{@} sign means ``of the type.'' Thus \spad{zero} is
+\smath{0.0} of the type \spadtype{DoubleFloat}.
+You can also say \spad{0.0::DFLOAT}.
+
+Points can have four small float components: \smath{x, y, z} coordinates and an
+optional color.
+A ``curve'' is simply a list of points connected by straight line
+segments.
+\xtc{
+Create the point \spad{origin} with color zero, that is, the lowest color
+on the color map.
+}{
+\spadpaste{origin := point [zero,zero,zero,zero] \free{d1}\bound{d3}}
+}
+\xtc{
+Create the point \spad{unit} with color zero.
+}{
+\spadpaste{unit := point [one,one,one,zero] \free{d1 d2}\bound{d4}}
+}
+\xtc{
+Create the curve (well, here, a line) from
+\spad{origin} to \spad{unit}.
+}{
+\spadpaste{line := [origin, unit] \free{d3 d4} \bound{d5}}
+}
+
+We make this line segment into an arrow by adding an arrowhead.
+The arrowhead extends to,
+say, \spad{p3} on the left, and to, say, \spad{p4} on the right.
+To describe an arrow, you tell Axiom to draw the two curves
+\spad{[p1, p2, p3]} and \spad{[p2, p4].}
+We also decide through experimentation on
+values for \spad{arrowScale}, the ratio of the size of
+the arrowhead to the stem of the arrow, and \spad{arrowAngle},
+the angle between the arrowhead and the arrow.
+
+Invoke your favorite editor and create
+an input file called {\bf arrows.input}.
+This input file first defines the values of
+%\spad{origin},\spad{unit},
+\spad{arrowAngle} and \spad{arrowScale}, then
+defines the function \userfun{makeArrow}\texht{$(p_1, p_2)$}{(p1, p2)} to
+draw an arrow from point \texht{$p_1$}{p1} to \texht{$p_2$}{p2}.
+
+\beginImportant
+  
+\noindent
+%\xmpLine{origin := point [0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT]}{The point 0 with color 0.}
+%\xmpLine{unit := point [1.0@DFLOAT,1.0@DFLOAT,1.0@DFLOAT,0.0@DFLOAT]}{A second point with color 0.}
+%\xmpLine{}{}
+{\tt 1.\ \ \ arrowAngle\ :=\ \%pi-\%pi/10.0@DFLOAT}\newline
+{\tt 2.\ \ \ arrowScale\ :=\ 0.2@DFLOAT}\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ makeArrow(p1,\ p2)\ ==}\newline
+{\tt 5.\ \ \ \ \ delta\ :=\ p2\ -\ p1}\newline
+{\tt 6.\ \ \ \ \ len\ :=\ arrowScale\ *\ length\ delta}\newline
+{\tt 7.\ \ \ \ \ theta\ :=\ atan(delta.1,\ delta.2)}\newline
+{\tt 8.\ \ \ \ \ c1\ :=\ len*cos(theta\ +\ arrowAngle)}\newline
+{\tt 9.\ \ \ \ \ s1\ :=\ len*sin(theta\ +\ arrowAngle)}\newline
+{\tt 10.\ \ \ \ c2\ :=\ len*cos(theta\ -\ arrowAngle)}\newline
+{\tt 11.\ \ \ \ s2\ :=\ len*sin(theta\ -\ arrowAngle)}\newline
+{\tt 12.\ \ \ \ z\ \ :=\ p2.3*(1\ -\ arrowScale)}\newline
+{\tt 13.\ \ \ \ p3\ :=\ point\ [p2.1\ +\ c1,\ p2.2\ +\ s1,\ z,\ p2.4]}\newline
+{\tt 14.\ \ \ \ p4\ :=\ point\ [p2.1\ +\ c2,\ p2.2\ +\ s2,\ z,\ p2.4]}\newline
+{\tt 15.\ \ \ \ [[p1,\ p2,\ p3],\ [p2,\ p4]]}\newline
+\endImportant
+
+Read the file and then create
+an arrow from the point \spad{origin} to the point \spad{unit}.
+\xtc{
+Read the input file defining \userfun{makeArrow}.
+}{
+\spadpaste{)read arrows\bound{v1}}
+}
+\xtc{
+Construct the arrow (a list of two curves).
+}{
+\spadpaste{arrow := makeArrow(origin,unit)\bound{v2}\free{v1 d3 d4}}
+}
+\xtc{
+Create an empty object \spad{sp} of type \spad{ThreeSpace}.
+}{
+\spadpaste{sp := createThreeSpace()\bound{c1}}
+}
+\xtc{
+Add each curve of the arrow to the space \spad{sp}.
+}{
+\spadpaste{for a in arrow repeat sp := curve(sp,a)\bound{v3}\free{v2}\free{c1}}
+}
+\psXtc{
+Create a \threedim{} viewport containing that space.
+}{
+\graphpaste{vp := makeViewport3D(sp,"Arrow")\bound{v4}\free{v3}}
+}{
+\epsffile[0 0 295 295]{../ps/arrow.ps}
+}
+\psXtc{
+Here is a better viewing angle.
+}{
+\spadpaste{rotate(vp,200,-60)\bound{v5}\free{v4}}
+}{
+\epsffile[0 0 295 295]{../ps/arrowr.ps}
+}
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgColorArrTitle}{A Bouquet of Arrows}
+\newcommand{\ugIntProgColorArrNumber}{10.5.}
+
+@
+\section{A Bouquet of Arrows}
+\label{ugIntProgColorArrPage}
+\index{pages!ugIntProgColorArrPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgColorArrPage}
+\index{ugIntProgColorArrPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgColorArrPage}{10.5. A Bouquet of Arrows}
+\beginscroll
+
+%Axiom gathers up all the points of a graph and looks at the range
+%of color values given as integers.
+%If theses color values range from a minimum value of \spad{a} to a maximum
+%value of \spad{b}, then the \spad{a} values are colored red (the
+%lowest color in our spectrum), and \spad{b} values are colored
+%purple (the highest color), and those in the middle are colored
+%green.
+%When all the points are the same color as above, Axiom
+%chooses green.
+
+Let's draw a ``bouquet'' of arrows.
+Each arrow is identical. The arrowheads are
+uniformly placed on a circle parallel to the \smath{xy}-plane.
+Thus the position of each arrow differs only
+by the angle \texht{$\theta$}{theta},
+\texht{$0 \leq \theta < 2\pi$}{\spad{0 <= theta < 2*\%pi}},
+between the arrow and
+the \smath{x}-axis on the \smath{xy}-plane.
+
+Our bouquet is rather special: each arrow has a different
+color (which won't be evident here, unfortunately).
+This is arranged by letting the color of each successive arrow be
+denoted by \texht{$\theta$}{theta}.
+In this way, the color of arrows ranges from red to green to violet.
+Here is a program to draw a bouquet of \smath{n} arrows.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ drawBouquet(n,title)\ ==}\newline
+{\tt 2.\ \ \ \ \ angle\ :=\ 0.0@DFLOAT}\newline
+{\tt 3.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 4.\ \ \ \ \ for\ i\ in\ 0..n-1\ repeat}\newline
+{\tt 5.\ \ \ \ \ \ \ start\ :=\ point\ [0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT,angle]\ }\newline
+{\tt 6.\ \ \ \ \ \ \ end\ \ \ :=\ point\ [cos\ angle,\ sin\ angle,\ 1.0@DFLOAT,\ angle]}\newline
+{\tt 7.\ \ \ \ \ \ \ arrow\ :=\ makeArrow(start,end)}\newline
+{\tt 8.\ \ \ \ \ \ \ for\ a\ in\ makeArrow(start,end)\ repeat\ }\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ curve(sp,a)}\newline
+{\tt 10.\ \ \ \ \ \ angle\ :=\ angle\ +\ 2*\%pi/n}\newline
+{\tt 11.\ \ \ \ makeViewport3D(sp,title)}\newline
+\endImportant
+
+\xtc{
+Read the input file.
+}{
+\spadpaste{)read bouquet\bound{b1}}
+}
+\psXtc{
+A bouquet of a dozen arrows.
+}{
+\graphpaste{drawBouquet(12,"A Dozen Arrows")\free{b1}}
+}{
+\epsffile[0 0 295 295]{../ps/bouquet.ps}
+}
+\ 
+
+%\head{section}{Diversion: When Things Go Wrong}{ugIntProgDivTwo}
+%
+%Up to now, if you have typed in all the programs exactly as they are in
+%the book, you have encountered no errors.
+%In practice, however, it is easy to make mistakes.
+%Computers are unforgiving: your program must be letter-for-letter correct
+%or you will encounter some error.
+%
+%One thing that can go wrong is that you can create a syntactically
+%incorrect program.
+%As pointed out in Diversion 1, the meaning of Axiom programs is
+%affected by indentation.
+%
+%The Axiom parser will ensure that all parentheses, brackets, and
+%braces balance, and that commas and operators appear in the correct
+%context.
+%For example, change line ??
+%to ??
+%and run.
+%
+%A common mistake is to misspell an identifier or operation name.
+%These are generally easy to spot since the interpreter will tell you the
+%name of the operation together with the type and number of arguments which
+%it is trying to find.
+%
+%Another mistake is to either to omit an argument or to give too many.
+%Again Axiom will notify you of the offending operation.
+%
+%Indentation makes your programs more readable.
+%However there are several ways to create a syntactically valid program.
+%A most common problem occurs when a line is either indented improperly.
+%% either or what?
+%If this is a first line of a pile, then all the other lines will act as an
+%inner pile to the first line.
+%If it is a line of the pile other than the first line, Axiom then
+%thinks that this line is a continuation of the previous line.
+%More frequently than not, a syntactically correct expression is created.
+%Almost never however will this be a semantically correct.
+%Only when the program is run will an error be discovered.
+%For example, change line ??
+%to ??
+%and run.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgVecFieldsTitle}{Drawing Complex Vector Fields}
+\newcommand{\ugIntProgVecFieldsNumber}{10.6.}
+
+@
+\section{Drawing Complex Vector Fields}
+\label{ugIntProgVecFieldsPage}
+\index{pages!ugIntProgVecFieldsPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgVecFieldsPage}
+\index{ugIntProgVecFieldsPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgVecFieldsPage}{10.6. Drawing Complex Vector Fields}
+\beginscroll
+
+We now put our arrows to good use drawing complex vector fields.
+These vector fields give a representation of complex-valued
+functions of complex variables.
+Consider a Cartesian coordinate grid of points \smath{(x, y)} in
+the plane, and some complex-valued function \smath{f} defined on
+this grid.
+At every point on this grid, compute the value of \texht{$f(x +
+iy)$}{f(x + y*\%i)} and call it \smath{z}.
+Since \smath{z} has both a real and imaginary value for a given
+\smath{(x,y)} grid point, there are four dimensions to plot.
+What do we do?
+We represent the values of \smath{z} by arrows planted at each
+grid point.
+Each arrow represents the value of \smath{z} in polar coordinates
+\texht{$(r,\theta)$}{(r, theta)}.
+The length of the arrow is proportional to \smath{r}.
+Its direction is given by \texht{$\theta$}{theta}.
+
+The code for drawing vector fields is in the file {\bf vectors.input}.
+We discuss its contents from top to bottom.
+
+Before showing you the code, we have two small
+matters to take care of.
+First, what if the function has large spikes, say, ones that go off
+to infinity?
+We define a variable \spad{clipValue} for this purpose. When
+\spad{r} exceeds the value of \spad{clipValue}, then the value of
+\spad{clipValue} is used instead of that for \spad{r}.
+For convenience, we define a function \spad{clipFun(x)} which uses
+\spad{clipValue} to ``clip'' the value of \spad{x}.
+
+%
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ clipValue\ :\ DFLOAT\ :=\ 6}\newline
+{\tt 2.\ \ \ clipFun(x)\ ==\ min(max(x,-clipValue),clipValue)}\newline
+\endImportant
+
+Notice that we identify \spad{clipValue} as a small float but do
+not declare the type of the function \userfun{clipFun}.
+As it turns out, \userfun{clipFun} is called with a
+small float value.
+This declaration ensures that \userfun{clipFun} never does a
+conversion when it is called.
+
+The second matter concerns the possible ``poles'' of a
+function, the actual points where the spikes have infinite
+values.
+Axiom uses normal \spadtype{DoubleFloat} arithmetic  which
+does not directly handle infinite values.
+If your function has poles, you must adjust your step size to
+avoid landing directly on them (Axiom calls \spadfun{error}
+when asked to divide a value by \axiom{0}, for example).
+
+We set the variables \spad{realSteps} and \spad{imagSteps} to
+hold the number of steps taken in the real and imaginary
+directions, respectively.
+Most examples will have ranges centered around the origin.
+To avoid a pole at the origin, the number of points is taken
+to be odd.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ realSteps:\ INT\ :=\ 25}\newline
+{\tt 2.\ \ \ imagSteps:\ INT\ :=\ 25}\newline
+{\tt 3.\ \ \ )read\ arrows}\newline
+\endImportant
+
+Now define the function \userfun{drawComplexVectorField} to draw the arrows.
+It is good practice to declare the type of the main function in
+the file.
+This one declaration is usually sufficient to ensure that other
+lower-level functions are compiled with the correct types.
+
+\beginImportant
+  
+\noindent
+{\tt 4.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
+{\tt 5.\ \ \ S\ :=\ Segment\ DoubleFloat}\newline
+{\tt 6.\ \ \ drawComplexVectorField:\ (C\ ->\ C,\ S,\ S)\ ->\ VIEW3D}\newline
+\endImportant
+
+The first argument is a function mapping complex small floats into
+complex small floats.
+The second and third arguments give the range of real and
+imaginary values as segments like \spad{a..b}.
+The result is a \threedim{} viewport.
+Here is the full function definition:
+
+\beginImportant
+  
+\noindent
+{\tt 7.\ \ \ drawComplexVectorField(f,\ realRange,imagRange)\ ==}\newline
+{\tt 8.\ \ \ \ \ delReal\ :=\ (hi(realRange)-lo(realRange))/realSteps}\newline
+{\tt 9.\ \ \ \ \ delImag\ :=\ (hi(imagRange)-lo(imagRange))/imagSteps}\newline
+{\tt 10.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 11.\ \ \ \ real\ :=\ lo(realRange)}\newline
+{\tt 12.\ \ \ \ for\ i\ in\ 1..realSteps+1\ repeat}\newline
+{\tt 13.\ \ \ \ \ \ imag\ :=\ lo(imagRange)}\newline
+{\tt 14.\ \ \ \ \ \ for\ j\ in\ 1..imagSteps+1\ repeat}\newline
+{\tt 15.\ \ \ \ \ \ \ \ z\ :=\ f\ complex(real,imag)}\newline
+{\tt 16.\ \ \ \ \ \ \ \ arg\ :=\ argument\ z}\newline
+{\tt 17.\ \ \ \ \ \ \ \ len\ :=\ clipFun\ sqrt\ norm\ z}\newline
+{\tt 18.\ \ \ \ \ \ \ \ p1\ :=\ \ point\ [real,\ imag,\ 0.0@DFLOAT,\ arg]}\newline
+{\tt 19.\ \ \ \ \ \ \ \ scaleLen\ :=\ delReal\ *\ len}\newline
+{\tt 20.\ \ \ \ \ \ \ \ p2\ :=\ point\ [p1.1\ +\ scaleLen*cos(arg),}\newline
+{\tt 21.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p1.2\ +\ scaleLen*sin(arg),0.0@DFLOAT,\ arg]}\newline
+{\tt 22.\ \ \ \ \ \ \ \ arrow\ :=\ makeArrow(p1,\ p2)}\newline
+{\tt 23.\ \ \ \ \ \ \ \ for\ a\ in\ arrow\ repeat\ curve(sp,\ a)}\newline
+{\tt 24.\ \ \ \ \ \ \ \ imag\ :=\ imag\ +\ delImag}\newline
+{\tt 25.\ \ \ \ \ \ real\ :=\ real\ +\ delReal}\newline
+{\tt 26.\ \ \ \ makeViewport3D(sp,\ "Complex\ Vector\ Field")}\newline
+\endImportant
+
+As a first example, let us draw \spad{f(z) == sin(z)}.
+There is no need to create a user function: just pass the
+\spadfunFrom{sin}{Complex DoubleFloat} from \spadtype{Complex DoubleFloat}.
+\xtc{
+Read the file.
+}{
+\spadpaste{)read vectors \bound{readVI}}
+}
+\psXtc{
+Draw the complex vector field of \spad{sin(x)}.
+}{
+\graphpaste{drawComplexVectorField(sin,-2..2,-2..2) \free{readVI}}
+}{
+\epsffile[0 0 295 295]{../ps/vectorsin.ps}
+}
+\ 
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgCompFunsTitle}{Drawing Complex Functions}
+\newcommand{\ugIntProgCompFunsNumber}{10.7.}
+
+@
+\section{Drawing Complex Functions}
+\label{ugIntProgCompFunsPage}
+\begin{itemize}
+\item ugGraphPage \ref{ugGraphPage} on
+page~\pageref{ugGraphPage}
+\end{itemize}
+\index{pages!ugIntProgCompFunsPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgCompFunsPage}
+\index{ugIntProgCompFunsPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgCompFunsPage}{10.7. Drawing Complex Functions}
+\beginscroll
+
+Here is another way to graph a complex function of complex arguments.
+For each complex value \smath{z}, compute \smath{f(z)}, again
+expressing the value in polar coordinates \smath{(r,\theta{})}.  We
+draw the complex valued function, again considering the
+\smath{(x,y)}-plane as the complex plane, using \smath{r} as the
+height (or \smath{z}-coordinate) and \smath{\theta} as the color.
+This is a standard plot---we learned how to do this in
+\downlink{``\ugGraphTitle''}{ugGraphPage} in Chapter
+\ugGraphNumber\ignore{ugGraph}---but here we write a new program to
+illustrate the creation of polygon meshes, or grids.
+
+Call this function \userfun{drawComplex}.
+It displays the points using the ``mesh'' of points.
+The function definition is in three parts.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ drawComplex:\ (C\ ->\ C,\ S,\ S)\ ->\ VIEW3D}\newline
+{\tt 2.\ \ \ drawComplex(f,\ realRange,\ imagRange)\ ==}\newline
+{\tt 3.\ \ \ \ \ delReal\ :=\ (hi(realRange)-lo(realRange))/realSteps}\newline
+{\tt 4.\ \ \ \ \ delImag\ :=\ (hi(imagRange)-lo(imagRange))/imagSteps}\newline
+{\tt 5.\ \ \ \ \ llp:List\ List\ Point\ DFLOAT\ :=\ []}\newline
+\endImportant
+
+Variables \spad{delReal} and \spad{delImag} give the step sizes along
+the real and imaginary directions as computed by the values of the
+global variables \spad{realSteps} and \spad{imagSteps}.  The mesh is
+represented by a list of lists of points \spad{llp}, initially empty.
+Now \spad{[ ]} alone is ambiguous, so to set this initial value you
+have to tell Axiom what type of empty list it is.  Next comes the loop
+which builds \spad{llp}.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ \ \ real\ :=\ lo(realRange)}\newline
+{\tt 2.\ \ \ \ \ for\ i\ in\ 1..realSteps+1\ repeat}\newline
+{\tt 3.\ \ \ \ \ \ \ imag\ :=\ lo(imagRange)}\newline
+{\tt 4.\ \ \ \ \ \ \ lp\ :=\ []\$(List\ Point\ DFLOAT)}\newline
+{\tt 5.\ \ \ \ \ \ \ for\ j\ in\ 1..imagSteps+1\ repeat}\newline
+{\tt 6.\ \ \ \ \ \ \ \ \ z\ :=\ f\ complex(real,imag)}\newline
+{\tt 7.\ \ \ \ \ \ \ \ \ pt\ :=\ point\ [real,imag,\ clipFun\ sqrt\ norm\ z,\ }\newline
+{\tt 8.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argument\ z]}\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ lp\ :=\ cons(pt,lp)}\newline
+{\tt 10.\ \ \ \ \ \ \ \ imag\ :=\ imag\ +\ delImag}\newline
+{\tt 11.\ \ \ \ \ \ real\ :=\ real\ +\ delReal}\newline
+{\tt 12.\ \ \ \ \ \ llp\ :=\ cons(lp,\ llp)}\newline
+\endImportant
+
+The code consists of both an inner and outer loop.  Each pass through
+the inner loop adds one list \spad{lp} of points to the list of lists
+of points \spad{llp}.  The elements of \spad{lp} are collected in
+reverse order.
+
+\beginImportant
+  
+\noindent
+{\tt 13.\ \ \ \ makeViewport3D(mesh(llp),\ "Complex\ Function")}\newline
+\endImportant
+
+The operation \spadfun{mesh} then creates an object of type
+\spadtype{ThreeSpace(DoubleFloat)} from the list of lists of points.
+This is then passed to \spadfun{makeViewport3D} to display the
+image.
+
+Now add this function directly to your {\bf vectors.input} file and
+re-read the file using \spad{)read vectors}.  We try
+\userfun{drawComplex} using a user-defined function \spad{f}.
+
+\xtc{
+Read the file.
+}{
+\spadpaste{)read vectors \bound{readVI}}
+}
+\xtc{
+This one has a pole at \smath{z=0}.
+}{
+\spadpaste{f(z) == exp(1/z)\bound{e1}}
+}
+\psXtc{
+Draw it with an odd number of steps to avoid the pole.
+}{
+\graphpaste{drawComplex(f,-2..2,-2..2)\free{e1 readVI}}
+}{
+\epsffile[0 0 295 295]{../ps/complexexp.ps}
+}
+\ 
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgFunctionsTitle}{Functions Producing Functions}
+\newcommand{\ugIntProgFunctionsNumber}{10.8.}
+
+@
+\section{Functions Producing Functions}
+\label{ugIntProgFunctionsPage}
+\begin{itemize}
+\item ugUserMakePage \ref{ugUserMakePage} on
+page~\pageref{ugUserMakePage}
+\end{itemize}
+\index{pages!ugIntProgFunctionsPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgFunctionsPage}
+\index{ugIntProgFunctionsPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgFunctionsPage}{10.8. Functions Producing Functions}
+\beginscroll
+
+In \downlink{``\ugUserMakeTitle''}{ugUserMakePage} in Section
+\ugUserMakeNumber\ignore{ugUserMake}, you learned how to use the
+operation \spadfun{function} to create a function from symbolic
+formulas.  Here we introduce a similar operation which not only
+creates functions, but functions from functions.
+
+The facility we need is provided by the package
+\spadtype{MakeUnaryCompiledFunction(E,S,T)}.  This package produces a
+unary (one-argument) compiled function from some symbolic data
+generated by a previous computation.\footnote{%
+\spadtype{MakeBinaryCompiledFunction} is available for binary
+functions.}  The \spad{E} tells where the symbolic data comes from;
+the \spad{S} and \spad{T} give Axiom the source and target type of the
+function, respectively.  The compiled function produced has type
+\spadsig{\spad{S}}{\spad{T}}.  To produce a compiled function with
+definition \spad{p(x) == expr}, call \spad{compiledFunction(expr, x)}
+from this package.  The function you get has no name.  You must to
+assign the function to the variable \spad{p} to give it that name.  %
+\xtc{ Do some computation.  }{ \spadpaste{(x+1/3)**5\bound{p1}} }
+\xtc{ Convert this to an anonymous function of \spad{x}.  Assign it to
+the variable \spad{p} to give the function a name.  }{ \spadpaste{p :=
+compiledFunction(\%,x)\$MakeUnaryCompiledFunction(POLY FRAC
+INT,DFLOAT,DFLOAT)\bound{p2}\free{p1}} } \xtc{ Apply the function.  }{
+\spadpaste{p(sin(1.3))\bound{p3}\free{p2}} }
+
+For a more sophisticated application, read on.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug10.ht>>=
+\newcommand{\ugIntProgNewtonTitle}{Automatic Newton Iteration Formulas}
+\newcommand{\ugIntProgNewtonNumber}{10.9.}
+
+@
+\section{Automatic Newton Iteration Formulas}
+\label{ugIntProgNewtonPage}
+\begin{itemize}
+\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
+page~\pageref{MappingPackageOneXmpPage}
+\end{itemize}
+\index{pages!ugIntProgNewtonPage!ug10.ht}
+\index{ug10.ht!pages!ugIntProgNewtonPage}
+\index{ugIntProgNewtonPage!ug10.ht!pages}
+<<ug10.ht>>=
+\begin{page}{ugIntProgNewtonPage}{10.9. Automatic Newton Iteration Formulas}
+\beginscroll
+
+We resume
+our continuing saga of arrows and complex functions.
+Suppose we want to investigate the behavior of Newton's iteration function
+in the complex plane.
+Given a function \smath{f}, we want to find the complex values
+\smath{z} such that \smath{f(z) = 0}.
+
+The first step is to produce a Newton iteration formula for
+a given \smath{f}:
+\texht{$x_{n+1} = x_n - {{f(x_n)}\over{f'(x_n)}}.$}{%
+\spad{x(n+1) = x(n) - f(x(n))/f'(x(n))}.}
+We represent this formula by a function \smath{g}
+that performs the computation on the right-hand side, that is,
+\texht{$x_{n+1} = {g}(x_n)$}{\spad{x(n+1) = g(x(n))}}.
+
+The type \spadtype{Expression Integer} (abbreviated \spadtype{EXPR
+INT}) is used to represent general symbolic expressions in
+Axiom.
+To make our facility as general as possible, we assume
+\smath{f} has this type.
+Given \smath{f}, we want
+to produce a Newton iteration function \spad{g} which,
+given a complex point \texht{$x_n$}{x(n)}, delivers the next
+Newton iteration point \texht{$x_{n+1}$}{x(n+1)}.
+
+This time we write an input file called {\bf newton.input}.
+We need to import \spadtype{MakeUnaryCompiledFunction} (discussed
+in the last section), call it with appropriate types, and then define
+the function \spad{newtonStep} which references it.
+Here is the function \spad{newtonStep}:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
+{\tt 2.\ \ \ complexFunPack:=MakeUnaryCompiledFunction(EXPR\ INT,C,C)}\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ newtonStep(f)\ ==}\newline
+{\tt 5.\ \ \ \ \ fun\ \ :=\ complexNumericFunction\ f}\newline
+{\tt 6.\ \ \ \ \ deriv\ :=\ complexDerivativeFunction(f,1)}\newline
+{\tt 7.\ \ \ \ \ (x:C):C\ +->}\newline
+{\tt 8.\ \ \ \ \ \ \ x\ -\ fun(x)/deriv(x)}\newline
+{\tt 9.\ \ \ }\newline
+{\tt 10.\ \ complexNumericFunction\ f\ ==}\newline
+{\tt 11.\ \ \ \ v\ :=\ theVariableIn\ f}\newline
+{\tt 12.\ \ \ \ compiledFunction(f,\ v)\$complexFunPack}\newline
+{\tt 13.\ \ }\newline
+{\tt 14.\ \ complexDerivativeFunction(f,n)\ ==}\newline
+{\tt 15.\ \ \ \ v\ :=\ theVariableIn\ f}\newline
+{\tt 16.\ \ \ \ df\ :=\ D(f,v,n)}\newline
+{\tt 17.\ \ \ \ compiledFunction(df,\ v)\$complexFunPack}\newline
+{\tt 18.\ \ }\newline
+{\tt 19.\ \ theVariableIn\ f\ ==\ \ }\newline
+{\tt 20.\ \ \ \ vl\ :=\ variables\ f}\newline
+{\tt 21.\ \ \ \ nv\ :=\ \#\ vl}\newline
+{\tt 22.\ \ \ \ nv\ >\ 1\ =>\ error\ "Expression\ is\ not\ univariate."}\newline
+{\tt 23.\ \ \ \ nv\ =\ 0\ =>\ 'x}\newline
+{\tt 24.\ \ \ \ first\ vl}\newline
+\endImportant
+
+Do you see what is going on here?
+A formula \spad{f} is passed into the function \userfun{newtonStep}.
+First, the function turns \spad{f} into a compiled program mapping
+complex numbers into complex numbers.  Next, it does the same thing
+for the derivative of \spad{f}.  Finally, it returns a function which
+computes a single step of Newton's iteration.
+
+The function \userfun{complexNumericFunction} extracts the variable
+from the expression \spad{f} and then turns \spad{f} into a function
+which maps complex numbers into complex numbers. The function
+\userfun{complexDerivativeFunction} does the same thing for the
+derivative of \spad{f}.  The function \userfun{theVariableIn}
+extracts the variable from the expression \spad{f}, calling the function
+\spadfun{error} if \spad{f} has more than one variable.
+It returns the dummy variable \spad{x} if \spad{f} has no variables.
+
+Let's now apply \userfun{newtonStep} to the formula for computing
+cube roots of two.
+%
+\xtc{
+Read the input file with the definitions.
+}{
+\spadpaste{)read newton\bound{n1}}
+}
+\xtc{}{
+\spadpaste{)read vectors \bound{n1a}}
+}
+
+\xtc{
+The cube root of two.
+}{
+\spadpaste{f := x**3 - 2\bound{n2}\free{n1 n1a}}
+}
+\xtc{
+Get Newton's iteration formula.
+}{
+\spadpaste{g := newtonStep f\bound{n3}\free{n2}}
+}
+\xtc{
+Let \spad{a} denote the result of
+applying Newton's iteration once to the complex number \spad{1 + \%i}.
+}{
+\spadpaste{a := g(1.0 + \%i)\bound{n4}\free{n3}}
+}
+\xtc{
+Now apply it repeatedly. How fast does it converge?
+}{
+\spadpaste{[(a := g(a)) for i in 1..]\bound{n5}\free{n4}}
+}
+\xtc{
+Check the accuracy of the last iterate.
+}{
+\spadpaste{a**3\bound{n6}\free{n5}}
+}
+
+In
+\downlink{`MappingPackage1'}{MappingPackageOneXmpPage}\ignore{MappingPackage1},
+we show how functions can be manipulated as objects in Axiom.  A
+useful operation to consider here is \spadop{*}, which means
+composition.  For example \spad{g*g} causes the Newton iteration
+formula to be applied twice.  Correspondingly, \spad{g**n} means to
+apply the iteration formula \spad{n} times.
+
+%
+\xtc{
+Apply \spad{g} twice to the point \spad{1 + \%i}.
+}{
+\spadpaste{(g*g) (1.0 + \%i)\bound{n10}\free{n3}}
+}
+\xtc{
+Apply \spad{g} 11 times.
+}{
+\spadpaste{(g**11) (1.0 + \%i)\bound{n11}\free{n10}}
+}
+
+Look now at the vector field and surface generated
+after two steps of Newton's formula for the cube root of two.
+The poles in these pictures represent bad starting values, and the
+flat areas are the regions of convergence to the three roots.
+%
+\psXtc{
+The vector field.
+}{
+\graphpaste{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3}}
+}{
+\epsffile[0 0 295 295]{../ps/vectorroot.ps}
+}
+\psXtc{
+The surface.
+}{
+\graphpaste{drawComplex(g**3,-3..3,-3..3)\free{n3}}
+}{
+\epsffile[0 0 295 295]{../ps/complexroot.ps}
+}
+\ 
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 11 (ug11.ht)}
+<<ug11.ht>>=
+\newcommand{\ugPackagesTitle}{Packages}
+\newcommand{\ugPackagesNumber}{11.}
+
+@
+\section{Packages}
+\label{ugPackagesPage}
+\begin{itemize}
+\item ugIntProgPage \ref{ugIntProgPage} on
+page~\pageref{ugIntProgPage}
+\item ugIntProgPage \ref{ugIntProgPage} on
+page~\pageref{ugIntProgPage}
+\item ugPackagesNamesPage \ref{ugPackagesNamesPage} on
+page~\pageref{ugPackagesNamesPage}
+\item ugPackagesSyntaxPage \ref{ugPackagesSyntaxPage} on
+page~\pageref{ugPackagesSyntaxPage}
+\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
+page~\pageref{ugPackagesAbstractPage}
+\item ugPackagesCapsulesPage \ref{ugPackagesCapsulesPage} on
+page~\pageref{ugPackagesCapsulesPage}
+\item ugPackagesInputFilesPage \ref{ugPackagesInputFilesPage} on
+page~\pageref{ugPackagesInputFilesPage}
+\item ugPackagesPackagesPage \ref{ugPackagesPackagesPage} on
+page~\pageref{ugPackagesPackagesPage}
+\item ugPackagesParametersPage \ref{ugPackagesParametersPage} on
+page~\pageref{ugPackagesParametersPage}
+\item ugPackagesCondsPage \ref{ugPackagesCondsPage} on
+page~\pageref{ugPackagesCondsPage}
+\item ugPackagesCompilingPage \ref{ugPackagesCompilingPage} on
+page~\pageref{ugPackagesCompilingPage}
+\item ugPackagesHowPage \ref{ugPackagesHowPage} on
+page~\pageref{ugPackagesHowPage}
+\end{itemize}
+\index{pages!ugPackagesPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesPage}
+\index{ugPackagesPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesPage}{11. Packages}
+\beginscroll
+
+Packages provide the bulk of
+Axiom's algorithmic library, from numeric packages for computing
+special functions to symbolic facilities for
+differential equations, symbolic integration, and limits.
+
+In \downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
+\ugIntProgNumber\ignore{ugIntProg}, we developed several useful
+functions for drawing vector fields and complex functions.  We now
+show you how you can add these functions to the Axiom library to make
+them available for general use.
+
+The way we created the functions in
+\downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
+\ugIntProgNumber\ignore{ugIntProg} is typical of how you, as an
+advanced Axiom user, may interact with Axiom.  You have an
+application.  You go to your editor and create an input file defining
+some functions for the application.  Then you run the file and try the
+functions.  Once you get them all to work, you will often want to
+extend them, add new features, perhaps write additional functions.
+
+Eventually, when you have a useful set of functions for your
+application, you may want to add them to your local Axiom library.  To
+do this, you embed these function definitions in a package and add
+that package to the library.
+
+To introduce new packages, categories, and domains into the system,
+you need to use the Axiom compiler to convert the constructors into
+executable machine code.  An existing compiler in Axiom is available
+on an ``as-is'' basis.  A new, faster compiler will be available in
+version 2.0 of Axiom.
+
+\beginImportant
+  
+\noindent
+\label{pak-cdraw}
+{\tt 1.\ \ \ C\ \ \ \ \ \ ==>\ Complex\ DoubleFloat}\newline
+{\tt 2.\ \ \ S\ \ \ \ \ \ ==>\ Segment\ DoubleFloat}\newline
+{\tt 3.\ \ \ INT\ \ \ \ ==>\ Integer}\newline
+{\tt 4.\ \ \ DFLOAT\ ==>\ DoubleFloat}\newline
+{\tt 5.\ \ \ VIEW3D\ ==>\ ThreeDimensionalViewport}\newline
+{\tt 6.\ \ \ CURVE\ \ ==>\ List\ List\ Point\ DFLOAT}\newline
+{\tt 7.\ \ \ }\newline
+{\tt 8.\ \ \ )abbrev\ package\ DRAWCX\ DrawComplex}\newline
+{\tt 9.\ \ \ DrawComplex():\ Exports\ ==\ Implementation\ where}\newline
+{\tt 10.\ \ }\newline
+{\tt 11.\ \ \ \ Exports\ ==\ with}\newline
+{\tt 12.\ \ \ \ \ \ drawComplex:\ (C\ ->\ C,S,S,Boolean)\ ->\ VIEW3D}\newline
+{\tt 13.\ \ \ \ \ \ drawComplexVectorField:\ (C\ ->\ C,S,S)\ ->\ VIEW3D}\newline
+{\tt 14.\ \ \ \ \ \ setRealSteps:\ INT\ ->\ INT}\newline
+{\tt 15.\ \ \ \ \ \ setImagSteps:\ INT\ ->\ INT}\newline
+{\tt 16.\ \ \ \ \ \ setClipValue:\ DFLOAT->\ DFLOAT}\newline
+{\tt 17.\ \ }\newline
+{\tt 18.\ \ \ \ Implementation\ ==\ add}\newline
+{\tt 19.\ \ \ \ \ \ arrowScale\ :\ DFLOAT\ :=\ (0.2)::DFLOAT\ --relative\ size}\newline
+{\tt 20.\ \ \ \ \ \ arrowAngle\ :\ DFLOAT\ :=\ pi()-pi()/(20::DFLOAT)}\newline
+{\tt 21.\ \ \ \ \ \ realSteps\ \ :\ INT\ :=\ 11\ --\#\ real\ steps}\newline
+{\tt 22.\ \ \ \ \ \ imagSteps\ \ :\ INT\ :=\ 11\ --\#\ imaginary\ steps}\newline
+{\tt 23.\ \ \ \ \ \ clipValue\ \ :\ DFLOAT\ \ :=\ 10::DFLOAT\ --maximum\ vector\ length}\newline
+{\tt 24.\ \ }\newline
+{\tt 25.\ \ \ \ \ \ setRealSteps(n)\ ==\ realSteps\ :=\ n}\newline
+{\tt 26.\ \ \ \ \ \ setImagSteps(n)\ ==\ imagSteps\ :=\ n}\newline
+{\tt 27.\ \ \ \ \ \ setClipValue(c)\ ==\ clipValue\ :=\ c}\newline
+{\tt 28.\ \ }\newline
+{\tt 29.\ \ \ \ \ \ clipFun:\ DFLOAT\ ->\ DFLOAT\ --Clip\ large\ magnitudes.}\newline
+{\tt 30.\ \ \ \ \ \ clipFun(x)\ ==\ min(max(x,\ -clipValue),\ clipValue)}\newline
+{\tt 31.\ \ }\newline
+{\tt 32.\ \ \ \ \ \ makeArrow:\ (Point\ DFLOAT,Point\ DFLOAT,DFLOAT,DFLOAT)\ ->\ CURVE}\newline
+{\tt 33.\ \ \ \ \ \ makeArrow(p1,\ p2,\ len,\ arg)\ ==\ ...}\newline
+{\tt 34.\ \ }\newline
+{\tt 35.\ \ \ \ \ \ drawComplex(f,\ realRange,\ imagRange,\ arrows?)\ ==\ ...}\newline
+\caption{The DrawComplex package.}\label{fig-pak-cdraw}
+\endImportant
+
+\beginmenu
+    \menudownlink{{11.1. Names, Abbreviations, and File Structure}}
+{ugPackagesNamesPage}
+    \menudownlink{{11.2. Syntax}}{ugPackagesSyntaxPage}
+    \menudownlink{{11.3. Abstract Datatypes}}{ugPackagesAbstractPage}
+    \menudownlink{{11.4. Capsules}}{ugPackagesCapsulesPage}
+    \menudownlink{{11.5. Input Files vs. Packages}}{ugPackagesInputFilesPage}
+    \menudownlink{{11.6. Compiling Packages}}{ugPackagesPackagesPage}
+    \menudownlink{{11.7. Parameters}}{ugPackagesParametersPage}
+    \menudownlink{{11.8. Conditionals}}{ugPackagesCondsPage}
+    \menudownlink{{11.9. Testing}}{ugPackagesCompilingPage}
+    \menudownlink{{11.10. How Packages Work}}{ugPackagesHowPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesNamesTitle}{Names, Abbreviations, and File Structure}
+\newcommand{\ugPackagesNamesNumber}{11.1.}
+
+@ 
+\section{Names, Abbreviations, and File Structure}
+\label{ugPackagesNamesPage} 
+\begin{itemize}
+\item ugIntProgPage \ref{ugIntProgPage} on
+page~\pageref{ugIntProgPage}
+\item ugTypesWritingAbbrPage \ref{ugTypesWritingAbbrPage} on
+page~\pageref{ugTypesWritingAbbrPage}
+\end{itemize}
+\index{pages!ugPackagesNamesPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesNamesPage}
+\index{ugPackagesNamesPage!ug11.ht!pages} 
+<<ug11.ht>>=
+\begin{page}{ugPackagesNamesPage} 
+{11.1. Names, Abbreviations, and File Structure} 
+\beginscroll 
+% 
+
+Each package has a name and an abbreviation.  For a package of the
+complex draw functions from
+\downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
+\ugIntProgNumber\ignore{ugIntProg}, we choose the name
+\nonLibAxiomType{DrawComplex} and abbreviation
+\nonLibAxiomType{DRAWCX}.\footnote{An abbreviation can be any string
+of between two and seven capital letters and digits, beginning with a
+letter.  See
+\downlink{``\ugTypesWritingAbbrTitle''}{ugTypesWritingAbbrPage} in
+Section \ugTypesWritingAbbrNumber\ignore{ugTypesWritingAbbr} for more
+information.}  To be sure that you have not chosen a name or
+abbreviation already used by the system, issue the system command
+\spadcmd{)show} for both the name and the abbreviation.
+
+Once you have named the package and its abbreviation, you can choose
+any new filename you like with extension ``{\bf \spadFileExt{}}'' to
+hold the definition of your package.  We choose the name {\bf
+drawpak\spadFileExt{}}.  If your application involves more than one
+package, you can put them all in the same file.  Axiom assumes no
+relationship between the name of a library file, and the name or
+abbreviation of a package.
+
+Near the top of the ``{\bf \spadFileExt{}}'' file, list all the
+abbreviations for the packages using \spadcmd{)abbrev}, each command
+beginning in column one.  Macros giving names to Axiom expressions can
+also be placed near the top of the file.  The macros are only usable
+from their point of definition until the end of the file.
+
+Consider the definition of
+\nonLibAxiomType{DrawComplex} in Figure \ref{fig-pak-cdraw}.
+After the macro
+definition
+\begin{verbatim}
+S      ==> Segment DoubleFloat
+\end{verbatim}
+the name
+{\tt S} can be used in the file as a
+shorthand for \axiomType{Segment DoubleFloat}.
+\footnote{The interpreter also allows
+{\tt macro} for macro definitions.}
+The abbreviation command for the package
+\begin{verbatim}
+)abbrev package DRAWCX DrawComplex
+\end{verbatim}
+is given after the macros (although it could precede them).
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesSyntaxTitle}{Syntax}
+\newcommand{\ugPackagesSyntaxNumber}{11.2.}
+
+@
+\section{Syntax}
+\label{ugPackagesSyntaxPage}
+\index{pages!ugPackagesSyntaxPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesSyntaxPage}
+\index{ugPackagesSyntaxPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesSyntaxPage}{11.2. Syntax}
+\beginscroll
+%
+The definition of a package has the syntax:
+\centerline{{\frenchspacing{\it PackageForm {\tt :} Exports\quad{\tt ==}\quad Implementation}}}
+The syntax for defining a package constructor is the same as that
+for defining any function in Axiom.
+In practice, the definition extends over many lines so that this syntax is
+not practical.
+Also, the type of a package is expressed by the operator \axiom{with}
+\spadkey{with}
+followed by an explicit list of operations.
+A preferable way to write the definition of a package is with a \axiom{where}
+\spadkey{where}
+expression:
+
+\beginImportant
+The definition of a package usually has the form: \newline
+{\tt%
+{\it PackageForm} : Exports  ==  Implementation where \newline
+\texht{\hspace*{.75pc}}{\tab{3}} {\it optional type declarations}\newline
+\texht{\hspace*{.75pc}}{\tab{3}} Exports  ==   with \newline
+\texht{\hspace*{2.0pc}}{\tab{6}}   {\it list of exported operations}\newline
+\texht{\hspace*{.75pc}}{\tab{3}} Implementation == add \newline
+\texht{\hspace*{2.0pc}}{\tab{6}}   {\it list of function definitions for exported operations}
+}
+\endImportant
+
+The \axiomType{DrawComplex} package takes no parameters and exports five
+operations, each a separate item of a \spadgloss{pile}.
+Each operation is described as a \spadgloss{declaration}: a name, followed
+by a colon (\axiomSyntax{:}), followed by the type of the operation.
+All operations have types expressed as \spadglossSee{mappings}{mapping} with
+the syntax
+\centerline{{{\it}}
+\centerline{{source\quad{\tt ->}\quad target}}
+\centerline{{}}}
+
+%e *********************************************************************
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesAbstractTitle}{Abstract Datatypes}
+\newcommand{\ugPackagesAbstractNumber}{11.3.}
+
+@
+\section{Abstract Datatypes}
+\label{ugPackagesAbstractPage}
+\begin{itemize}
+\item ugIntProgCompFunsPage \ref{ugIntProgCompFunsPage} on
+page~\pageref{ugIntProgCompFunsPage}
+\end{itemize}
+\index{pages!ugPackagesAbstractPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesAbstractPage}
+\index{ugPackagesAbstractPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesAbstractPage}{11.3. Abstract Datatypes}
+\beginscroll
+
+A constructor as defined in Axiom is called an \spadgloss{abstract
+datatype} in the computer science literature.  Abstract datatypes
+separate ``specification'' (what operations are provided) from
+``implementation'' (how the operations are implemented).  The {\tt
+Exports} (specification) part of a constructor is said to be
+``public'' (it provides the user interface to the package) whereas the
+{\tt Implementation} part is ``private'' (information here is
+effectively hidden---programs cannot take advantage of it).
+
+The {\tt Exports} part specifies what operations the package provides
+to users.  As an author of a package, you must ensure that the {\tt
+Implementation} part provides a function for each operation in the
+{\tt Exports} part.\footnote{The \spadtype{DrawComplex} package
+enhances the facility described in
+\downlink{``\ugIntProgCompFunsTitle''}{ugIntProgCompFunsPage} in
+Chapter \ugIntProgCompFunsNumber\ignore{ugIntProgCompFuns} by allowing
+a complex function to have arrows emanating from the surface to
+indicate the direction of the complex argument.}
+
+An important difference between interactive programming and the use of
+packages is in the handling of global variables such as
+\axiom{realSteps} and \axiom{imagSteps}.  In interactive programming,
+you simply change the values of variables by \spadgloss{assignment}.
+With packages, such variables are local to the package---their values
+can only be set using functions exported by the package.  In our
+example package, we provide two functions \fakeAxiomFun{setRealSteps}
+and \fakeAxiomFun{setImagSteps} for this purpose.
+
+Another local variable is \axiom{clipValue} which can be changed using
+the exported operation \fakeAxiomFun{setClipValue}.  This value is
+referenced by the internal function \fakeAxiomFun{clipFun} that
+decides whether to use the computed value of the function at a point
+or, if the magnitude of that value is too large, the value assigned to
+\axiom{clipValue} (with the appropriate sign).
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesCapsulesTitle}{Capsules}
+\newcommand{\ugPackagesCapsulesNumber}{11.4.}
+
+@
+\section{Capsules}
+\label{ugPackagesCapsulesPage}
+\index{pages!ugPackagesCapsulesPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesCapsulesPage}
+\index{ugPackagesCapsulesPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesCapsulesPage}{11.4. Capsules}
+\beginscroll
+%
+The part to the right of {\tt add} in the {\tt Implementation}
+\spadkey{add}
+part of the definition is called a \spadgloss{capsule}.
+The purpose of a capsule is:
+\indent{4}
+\beginitems
+\item[-] to define a function for each exported operation, and
+\item[-] to define a \spadgloss{local environment} for these functions to run.
+\enditems
+\indent{0}
+
+What is a local environment?
+First, what is an environment?
+Think of the capsule as an input file that Axiom reads from top to
+bottom.
+Think of the input file as having a \axiom{)clear all} at the top
+so that initially no variables or functions are defined.
+When this file is read, variables such as \axiom{realSteps} and
+\axiom{arrowSize} in \nonLibAxiomType{DrawComplex} are set to initial values.
+Also, all the functions defined in the capsule are compiled.
+These include those that are exported (like \axiom{drawComplex}), and
+those that are not (like \axiom{makeArrow}).
+At the end, you get a set of name-value pairs:
+variable names (like \axiom{realSteps} and \axiom{arrowSize})
+are paired with assigned values, while
+operation names (like \axiom{drawComplex} and \axiom{makeArrow})
+are paired with function values.
+
+This set of name-value pairs is called an \spadgloss{environment}.
+Actually, we call this environment the ``initial environment'' of a package:
+it is the environment that exists immediately after the package is
+first built.
+Afterwards, functions of this capsule can
+access or reset a variable in the environment.
+The environment is called {\it local} since any changes to the value of a
+variable in this environment can be seen {\it only} by these functions.
+
+Only the functions from the package can change the variables in the local
+environment.
+When two functions are called successively from a package,
+any changes caused by the first function called
+are seen by the second.
+
+Since the environment is local to the package, its names
+don't get mixed
+up with others in the system or your workspace.
+If you happen to have a variable called \axiom{realSteps} in your
+workspace, it does not affect what the
+\nonLibAxiomType{DrawComplex} functions do in any way.
+
+The functions in a package are compiled into machine code.
+Unlike function definitions in input files that may be compiled repeatedly
+as you use them with varying argument types,
+functions in packages have a unique type (generally parameterized by
+the argument parameters of a package) and a unique compilation residing on disk.
+
+The capsule itself is turned into a compiled function.
+This so-called {\it capsule function} is what builds the initial environment
+spoken of above.
+If the package has arguments (see below), then each call to the package
+constructor with a distinct pair of arguments
+builds a distinct package, each with its own local environment.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesInputFilesTitle}{Input Files vs. Packages}
+\newcommand{\ugPackagesInputFilesNumber}{11.5.}
+
+@
+\section{Input Files vs. Packages}
+\label{ugPackagesInputFilesPage}
+\index{pages!ugPackagesInputFilesPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesInputFilesPage}
+\index{ugPackagesInputFilesPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesInputFilesPage}{11.5. Input Files vs. Packages}
+\beginscroll
+%
+A good question at this point would be ``Is writing a package more difficult than
+writing an input file?''
+
+The programs in input files are designed for flexibility and ease-of-use.
+Axiom can usually work out all of your types as it reads your program
+and does the computations you request.
+Let's say that you define a one-argument function without giving its type.
+When you first apply the function to a value, this
+value is understood by Axiom as identifying the type for the
+argument parameter.
+Most of the time Axiom goes through the body of your function and
+figures out the target type that you have in mind.
+Axiom sometimes fails to get it right.
+Then---and only then---do you need a declaration to tell Axiom what
+type you want.
+
+Input files are usually written to be read by Axiom---and by you.
+Without suitable documentation and declarations, your input files
+are likely incomprehensible to a colleague---and to you some
+months later!
+
+Packages are designed for legibility, as well as
+run-time efficiency.
+There are few new concepts you need to learn to write
+packages. Rather, you just have to be explicit about types
+and type conversions.
+The types of all functions are pre-declared so that Axiom---and the reader---
+knows precisely what types of arguments can be passed to and from
+the functions (certainly you don't want a colleague to guess or to
+have to work this out from context!).
+The types of local variables are also declared.
+Type conversions are explicit, never automatic.\footnote{There
+is one exception to this rule: conversions from a subdomain to a
+domain are automatic.
+After all, the objects both have the domain as a common type.}
+
+In summary, packages are more tedious to write than input files.
+When writing input files, you can casually go ahead, giving some
+facts now, leaving others for later.
+Writing packages requires forethought, care and discipline.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesPackagesTitle}{Compiling Packages}
+\newcommand{\ugPackagesPackagesNumber}{11.6.}
+
+@
+\section{Compiling Packages}
+\label{ugPackagesPackagesPage}
+\index{pages!ugPackagesPackagesPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesPackagesPage}
+\index{ugPackagesPackagesPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesPackagesPage}{11.6. Compiling Packages}
+\beginscroll
+%
+
+Once you have defined the package \nonLibAxiomType{DrawComplex},
+you need to compile and test it.
+To compile the package, issue the system command \spadcmd{)compile drawpak}.
+Axiom reads the file {\bf drawpak\spadFileExt{}}
+and compiles its contents into machine binary.
+If all goes well, the file {\bf DRAWCX.nrlib} is created in your
+local directory for the package.
+To test the package, you must load the package before trying an
+operation.
+
+\nullXtc{
+Compile the package.
+}{
+\spadpaste{)compile drawpak}
+}
+\xtc{
+Expose the package.
+}{
+\spadpaste{)expose DRAWCX \bound{dp}}
+}
+\xtc{
+Use an odd step size to avoid
+a pole at the origin.
+}{
+\spadpaste{setRealSteps 51 \free{dp}\bound{srs}}
+}
+\xtc{
+}{
+\spadpaste{setImagSteps 51 \free{dp}\bound{scs}}
+}
+\xtc{
+Define \userfun{f} to be the Gamma function.
+}{
+\spadpaste{f(z) == Gamma(z) \bound{f}}
+}
+\xtc{
+Clip values of function with magnitude larger than 7.
+}{
+\spadpaste{setClipValue 7}
+}
+\psXtc{
+Draw the \spadfun{Gamma} function.
+}{
+\graphpaste{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false) \free{srs scs f}}
+}{
+\epsffile[0 0 300 300]{../ps/3dgamma11.ps}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesParametersTitle}{Parameters}
+\newcommand{\ugPackagesParametersNumber}{11.7.}
+
+@
+\section{Parameters}
+\label{ugPackagesParametersPage}
+\begin{itemize}
+\item ugTypesPage \ref{ugTypesPage} on
+page~\pageref{ugTypesPage}
+\item ugUserBlocksPage \ref{ugUserBlocksPage} on
+page~\pageref{ugUserBlocksPage}
+\item ugCategoriesAttributesPage \ref{ugCategoriesAttributesPage} on
+page~\pageref{ugCategoriesAttributesPage}
+\end{itemize}
+\index{pages!ugPackagesParametersPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesParametersPage}
+\index{ugPackagesParametersPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesParametersPage}{11.7. Parameters}
+\beginscroll
+%
+The power of packages becomes evident when packages have parameters.
+Usually these parameters are domains and the exported operations have types
+involving these parameters.
+
+In \downlink{``\ugTypesTitle''}{ugTypesPage} in Chapter
+\ugTypesNumber\ignore{ugTypes}, you learned that categories denote
+classes of domains.  Although we cover this notion in detail in the
+next chapter, we now give you a sneak preview of its usefulness.
+
+In \downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} in Section
+\ugUserBlocksNumber\ignore{ugUserBlocks}, we defined functions
+\axiom{bubbleSort(m)} and \axiom{insertionSort(m)} to sort a list of
+integers.  If you look at the code for these functions, you see that
+they may be used to sort {\it any} structure \axiom{m} with the right
+properties.  Also, the functions can be used to sort lists of {\it
+any} elements---not just integers.  Let us now recall the code for
+\axiom{bubbleSort}.
+
+\begin{verbatim}
+bubbleSort(m) ==
+  n := #m
+  for i in 1..(n-1) repeat
+    for j in n..(i+1) by -1 repeat
+      if m.j < m.(j-1) then swap!(m,j,j-1)
+  m
+\end{verbatim}
+
+What properties of ``lists of integers'' are assumed by the sorting
+algorithm?  In the first line, the operation \spadfun{\#} computes the
+maximum index of the list.  The first obvious property is that
+\axiom{m} must have a finite number of elements.  In Axiom, this is
+done by your telling Axiom that \axiom{m} has the ``attribute''
+\spadatt{finiteAggregate}.  An \spadgloss{attribute} is a property
+that a domain either has or does not have.  As we show later in
+\downlink{``\ugCategoriesAttributesTitle''}{ugCategoriesAttributesPage}
+in Section
+\ugCategoriesAttributesNumber\ignore{ugCategoriesAttributes}, programs
+can query domains as to the presence or absence of an attribute.
+
+The operation \spadfunX{swap} swaps elements of \axiom{m}.
+Using \Browse{}, you find that \spadfunX{swap} requires its
+elements to come from a domain of category
+\axiomType{IndexedAggregate} with attribute
+\spadatt{shallowlyMutable}.
+This attribute means that you can change the internal components
+of \axiom{m} without changing its external structure.
+Shallowly-mutable data structures include lists, streams, one- and
+two-dimensional arrays, vectors, and matrices.
+
+The category \axiomType{IndexedAggregate} designates the class of
+aggregates whose elements can be accessed by the notation
+\axiom{m.s} for suitable selectors \axiom{s}.
+The category \axiomType{IndexedAggregate} takes two arguments:
+\axiom{Index}, a domain of selectors for the aggregate, and
+\axiom{Entry}, a domain of entries for the aggregate.
+Since the sort functions access elements by integers, we must
+choose \axiom{Index = }\axiomType{Integer}.
+The most general class of domains for which \axiom{bubbleSort} and
+\axiom{insertionSort} are defined are those of
+category \spadtype{IndexedAggregate(Integer,Entry)} with the two
+attributes \spadatt{shallowlyMutable} and
+\spadatt{finiteAggregate}.
+
+Using \Browse{}, you can also discover that Axiom has many kinds of domains
+with attribute \spadatt{shallowlyMutable}.
+Those of class \axiomType{IndexedAggregate(Integer,Entry)} include
+\axiomType{Bits}, \axiomType{FlexibleArray}, \axiomType{OneDimensionalArray},
+\axiomType{List}, \axiomType{String}, and \axiomType{Vector}, and also
+\axiomType{HashTable} and \axiomType{EqTable} with integer keys.
+Although you may never want to sort all such structures, we
+nonetheless demonstrate Axiom's
+ability to do so.
+
+Another requirement is that \nonLibAxiomType{Entry} has an operation
+\axiomOp{<}.  One way to get this operation is to assume that
+\nonLibAxiomType{Entry} has category \axiomType{OrderedSet}.  By
+definition, will then export a \axiomOp{<} operation.  A more general
+approach is to allow any comparison function \axiom{f} to be used for
+sorting.  This function will be passed as an argument to the sorting
+functions.
+
+Our sorting package then takes two arguments: a domain \axiom{S} of
+objects of {\it any} type, and a domain \axiom{A}, an aggregate of
+type \axiomType{IndexedAggregate(Integer, S)} with the above two
+attributes.  Here is its definition using what are close to the
+original definitions of \axiom{bubbleSort} and \axiom{insertionSort}
+for sorting lists of integers.  The symbol \axiomSyntax{!} is added to
+the ends of the operation names.  This uniform naming convention is
+used for Axiom operation names that destructively change one or more
+of their arguments.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ SortPackage(S,A)\ :\ Exports\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ S:\ Object}\newline
+{\tt 3.\ \ \ \ \ A:\ IndexedAggregate(Integer,S)}\newline
+{\tt 4.\ \ \ \ \ \ \ with\ (finiteAggregate;\ shallowlyMutable)}\newline
+{\tt 5.\ \ \ }\newline
+{\tt 6.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 7.\ \ \ \ \ \ \ bubbleSort!:\ (A,(S,S)\ ->\ Boolean)\ ->\ A}\newline
+{\tt 8.\ \ \ \ \ \ \ insertionSort!:\ (A,\ (S,S)\ ->\ Boolean)\ ->\ A}\newline
+{\tt 9.\ \ \ }\newline
+{\tt 10.\ \ \ \ Implementation\ ==\ add}\newline
+{\tt 11.\ \ \ \ \ \ bubbleSort!(m,f)\ ==}\newline
+{\tt 12.\ \ \ \ \ \ \ \ n\ :=\ \#m}\newline
+{\tt 13.\ \ \ \ \ \ \ \ for\ i\ in\ 1..(n-1)\ repeat}\newline
+{\tt 14.\ \ \ \ \ \ \ \ \ \ for\ j\ in\ n..(i+1)\ by\ -1\ repeat}\newline
+{\tt 15.\ \ \ \ \ \ \ \ \ \ \ \ if\ f(m.j,m.(j-1))\ then\ swap!(m,j,j-1)}\newline
+{\tt 16.\ \ \ \ \ \ \ \ m}\newline
+{\tt 17.\ \ \ \ \ \ insertionSort!(m,f)\ ==}\newline
+{\tt 18.\ \ \ \ \ \ \ \ for\ i\ in\ 2..\#m\ repeat}\newline
+{\tt 19.\ \ \ \ \ \ \ \ \ \ j\ :=\ i}\newline
+{\tt 20.\ \ \ \ \ \ \ \ \ \ while\ j\ >\ 1\ and\ f(m.j,m.(j-1))\ repeat}\newline
+{\tt 21.\ \ \ \ \ \ \ \ \ \ \ \ swap!(m,j,j-1)}\newline
+{\tt 22.\ \ \ \ \ \ \ \ \ \ \ \ j\ :=\ (j\ -\ 1)\ pretend\ PositiveInteger}\newline
+{\tt 23.\ \ \ \ \ \ \ \ m}\newline
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesCondsTitle}{Conditionals}
+\newcommand{\ugPackagesCondsNumber}{11.8.}
+
+@
+\section{Conditionals}
+\label{ugPackagesCondsPage}
+\begin{itemize}
+\item ugUserBlocksPage \ref{ugUserBlocksPage} on
+page~\pageref{ugUserBlocksPage}
+\end{itemize}
+\index{pages!ugPackagesCondsPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesCondsPage}
+\index{ugPackagesCondsPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesCondsPage}{11.8. Conditionals}
+\beginscroll
+%
+When packages have parameters, you can say that an operation is or is not
+exported depending on the values of those parameters.
+When the domain of objects \axiom{S} has an \axiomOp{<}
+operation, we can supply one-argument versions of
+\axiom{bubbleSort} and \axiom{insertionSort} which use this operation
+for sorting.
+The presence of the
+operation \axiomOp{<} is guaranteed when \axiom{S} is an ordered set.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ Exports\ ==\ with}\newline
+{\tt 2.\ \ \ \ \ \ \ bubbleSort!:\ (A,(S,S)\ ->\ Boolean)\ ->\ A}\newline
+{\tt 3.\ \ \ \ \ \ \ insertionSort!:\ (A,\ (S,S)\ ->\ Boolean)\ ->\ A}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ \ \ \ \ if\ S\ has\ OrderedSet\ then}\newline
+{\tt 6.\ \ \ \ \ \ \ \ \ bubbleSort!:\ A\ ->\ A}\newline
+{\tt 7.\ \ \ \ \ \ \ \ \ insertionSort!:\ A\ ->\ A}\newline
+\endImportant
+
+In addition to exporting the one-argument sort operations
+conditionally, we must provide conditional definitions for the
+operations in the {\tt Implementation} part.
+This is easy: just have the one-argument functions call the
+corresponding two-argument functions with the operation
+\axiomOp{<} from \axiom{S}.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ \ ...}\newline
+{\tt 3.\ \ \ \ \ \ \ if\ S\ has\ OrderedSet\ then}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ bubbleSort!(m)\ ==\ bubbleSort!(m,<\$S)}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ insertionSort!(m)\ ==\ insertionSort!(m,<\$S)}\newline
+\endImportant
+
+In \downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} in Section
+\ugUserBlocksNumber\ignore{ugUserBlocks}, we give an alternative
+definition of \fakeAxiomFun{bubbleSort} using
+\spadfunFrom{first}{List} and \spadfunFrom{rest}{List} that is more
+efficient for a list (for which access to any element requires
+traversing the list from its first node).  To implement a more
+efficient algorithm for lists, we need the operation \spadfun{setelt}
+which allows us to destructively change the \spadfun{first} and
+\spadfun{rest} of a list.  Using \Browse{}, you find that these
+operations come from category \axiomType{UnaryRecursiveAggregate}.
+Several aggregate types are unary recursive aggregates including those
+of \axiomType{List} and \axiomType{AssociationList}.  We provide two
+different implementations for \fakeAxiomFun{bubbleSort!} and
+\fakeAxiomFun{insertionSort!}: one for list-like structures, another
+for array-like structures.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ Implementation\ ==\ add}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
+{\tt 3.\ \ \ \ \ \ \ if\ A\ has\ UnaryRecursiveAggregate(S)\ then}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ bubbleSort!(m,fn)\ ==}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ \ \ empty?\ m\ =>\ m}\newline
+{\tt 6.\ \ \ \ \ \ \ \ \ \ \ l\ :=\ m}\newline
+{\tt 7.\ \ \ \ \ \ \ \ \ \ \ while\ not\ empty?\ (r\ :=\ l.rest)\ repeat}\newline
+{\tt 8.\ \ \ \ \ \ \ \ \ \ \ \ \ \ r\ :=\ bubbleSort!\ r}\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ \ \ \ \ \ x\ :=\ l.first}\newline
+{\tt 10.\ \ \ \ \ \ \ \ \ \ \ \ \ if\ fn(r.first,x)\ then}\newline
+{\tt 11.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ l.first\ :=\ r.first}\newline
+{\tt 12.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ r.first\ :=\ x}\newline
+{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ l.rest\ :=\ r}\newline
+{\tt 14.\ \ \ \ \ \ \ \ \ \ \ \ \ l\ :=\ l.rest}\newline
+{\tt 15.\ \ \ \ \ \ \ \ \ \ \ m}\newline
+{\tt 16.\ \ \ \ \ \ \ \ \ insertionSort!(m,fn)\ ==}\newline
+{\tt 17.\ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
+\endImportant
+
+The ordering of definitions is important.
+The standard definitions come first and
+then the predicate
+\begin{verbatim}
+A has UnaryRecursiveAggregate(S)
+\end{verbatim}
+is evaluated.
+If {\tt true}, the special definitions cover up the standard ones.
+
+Another equivalent way to write the capsule is to use an
+\axiom{if-then-else} expression:
+\spadkey{if}
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ \ \ \ \ \ if\ A\ has\ UnaryRecursiveAggregate(S)\ then}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
+{\tt 3.\ \ \ \ \ \ \ \ else}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesCompilingTitle}{Testing}
+\newcommand{\ugPackagesCompilingNumber}{11.9.}
+
+@
+\section{Testing}
+\label{ugPackagesCompilingPage}
+\begin{itemize}
+\item EqTableXmpPage \ref{EqTableXmpPage} on
+page~\pageref{EqTableXmpPage}
+\end{itemize}
+\index{pages!ugPackagesCompilingPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesCompilingPage}
+\index{ugPackagesCompilingPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesCompilingPage}{11.9. Testing}
+\beginscroll
+%
+Once you have written the package, embed it in a file, for example, {\bf
+sortpak\spadFileExt{}}.
+Be sure to include an \axiom{)abbrev} command at the top of the file:
+\begin{verbatim}
+)abbrev package SORTPAK SortPackage
+\end{verbatim}
+Now compile the file (using \spadcmd{)compile sortpak\spadFileExt{}}).
+\xtc{
+Expose the constructor.
+You are then ready to begin testing.
+}{
+\spadpaste{)expose SORTPAK}
+}
+\xtc{
+Define a list.
+}{
+\spadpaste{l := [1,7,4,2,11,-7,3,2]}
+}
+\xtc{
+Since the integers are an ordered set,
+a one-argument operation will do.
+}{
+\spadpaste{bubbleSort!(l)}
+}
+\xtc{
+Re-sort it using ``greater than.''
+}{
+\spadpaste{bubbleSort!(l,(x,y) +-> x > y)}
+}
+\xtc{
+Now sort it again using \axiomOp{<} on integers.
+}{
+\spadpaste{bubbleSort!(l, <\$Integer)}
+}
+\xtc{
+A string is an aggregate of characters so we can sort them as well.
+}{
+\spadpaste{bubbleSort! "Mathematical Sciences"}
+}
+\xtc{
+Is \axiomOp{<} defined on booleans?
+}{
+\spadpaste{false < true}
+}
+\xtc{
+Good! Create a bit string representing ten consecutive
+boolean values \axiom{true}.
+}{
+\spadpaste{u : Bits := new(10,true)}
+}
+\xtc{
+Set bits 3 through 5 to \axiom{false}, then display the result.
+}{
+\spadpaste{u(3..5) := false; u}
+}
+\xtc{
+Now sort these booleans.
+}{
+\spadpaste{bubbleSort! u}
+}
+\xtc{
+Create an ``eq-table'' (see 
+\downlink{`EqTable'}{EqTableXmpPage}\ignore{EqTable}), a
+table having integers as keys
+and strings as values.
+}{
+\spadpaste{t : EqTable(Integer,String) := table()}
+}
+\xtc{
+Give the table a first entry.
+}{
+\spadpaste{t.1 := "robert"}
+}
+\xtc{
+And a second.
+}{
+\spadpaste{t.2 := "richard"}
+}
+\xtc{
+What does the table look like?
+}{
+\spadpaste{t}
+}
+\xtc{
+Now sort it.
+}{
+\spadpaste{bubbleSort! t}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug11.ht>>=
+\newcommand{\ugPackagesHowTitle}{How Packages Work}
+\newcommand{\ugPackagesHowNumber}{11.10.}
+
+@
+\section{How Packages Work}
+\label{ugPackagesHowPage}
+\begin{itemize}
+\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
+page~\pageref{ugCategoriesHierPage}
+\end{itemize}
+\index{pages!ugPackagesHowPage!ug11.ht}
+\index{ug11.ht!pages!ugPackagesHowPage}
+\index{ugPackagesHowPage!ug11.ht!pages}
+<<ug11.ht>>=
+\begin{page}{ugPackagesHowPage}{11.10. How Packages Work}
+\beginscroll
+%
+Recall that packages as abstract datatypes are compiled independently
+and put into the library.
+The curious reader may ask: ``How is the interpreter able to find an
+operation such as \fakeAxiomFun{bubbleSort!}?
+Also, how is a single compiled function such as \fakeAxiomFun{bubbleSort!} able
+to sort data of different types?''
+
+After the interpreter loads the package \nonLibAxiomType{SortPackage}, the four
+operations from the package become known to the interpreter.
+Each of these operations is expressed as a {\it modemap} in which the type
+of the operation is written in terms of symbolic domains.
+\nullXtc{
+See the modemaps for \fakeAxiomFun{bubbleSort!}.
+}{
+\spadpaste{)display op bubbleSort!}
+}
+\begin{verbatim}
+There are 2 exposed functions called bubbleSort! :
+
+   [1] D1 -> D1 from SortPackage(D2,D1)
+         if D2 has ORDSET and D2 has OBJECT and D1 has
+         IndexedAggregate(Integer, D2) with
+              finiteAggregate
+              shallowlyMutable
+
+   [2] (D1,((D3,D3) -> Boolean)) -> D1 from SortPackage(D3,D1)
+         if D3 has OBJECT and D1 has
+         IndexedAggregate(Integer,D3) with
+              finiteAggregate
+              shallowlyMutable
+\end{verbatim}
+
+What happens if you ask for \axiom{bubbleSort!([1,-5,3])}?
+There is a unique modemap for an operation named
+\fakeAxiomFun{bubbleSort!} with one argument.
+Since \axiom{[1,-5,3]} is a list of integers, the symbolic domain
+\axiom{D1} is defined as \axiomType{List(Integer)}.
+For some operation to apply, it must satisfy the predicate for
+some \axiom{D2}.
+What \axiom{D2}?
+The third expression of the \axiom{and} requires {\tt D1 has
+IndexedAggregate(Integer, D2) with} two attributes.
+So the interpreter searches for an \axiomType{IndexedAggregate}
+among the ancestors of \axiomType{List (Integer)} (see
+
+\downlink{``\ugCategoriesHierTitle''}{ugCategoriesHierPage} in Section
+\ugCategoriesHierNumber\ignore{ugCategoriesHier}).  It finds one:
+\axiomType{IndexedAggregate(Integer, Integer)}.  The interpreter tries
+defining \axiom{D2} as \axiomType{Integer}.  After substituting for
+\axiom{D1} and \axiom{D2}, the predicate evaluates to \axiom{true}.
+An applicable operation has been found!
+
+Now Axiom builds the package \axiomType{SortPackage(List(Integer),
+Integer)}.  According to its definition, this package exports the
+required operation: \fakeAxiomFun{bubbleSort!}: \spadsig{List
+Integer}{List Integer}.  The interpreter then asks the package for a
+function implementing this operation.  The package gets all the
+functions it needs (for example, \axiomFun{rest} and \axiomFunX{swap})
+from the appropriate domains and then it returns a
+\fakeAxiomFun{bubbleSort!} to the interpreter together with the local
+environment for \fakeAxiomFun{bubbleSort!}.  The interpreter applies
+the function to the argument \axiom{[1,-5,3]}.  The
+\fakeAxiomFun{bubbleSort!} function is executed in its local
+environment and produces the result.  \endscroll \autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 12 (ug12.ht)}
+<<ug12.ht>>=
+\newcommand{\ugCategoriesTitle}{Categories}
+\newcommand{\ugCategoriesNumber}{12.}
+
+@
+\section{Categories}
+\label{ugCategoriesPage}
+\begin{itemize}
+\item ugTypesBasicDomainConsPage \ref{ugTypesBasicDomainConsPage} on
+page~\pageref{ugTypesBasicDomainConsPage}
+\item ugCategoriesDefsPage \ref{ugCategoriesDefsPage} on
+page~\pageref{ugCategoriesDefsPage}
+\item ugCategoriesExportsPage \ref{ugCategoriesExportsPage} on
+page~\pageref{ugCategoriesExportsPage}
+\item ugCategoriesDocPage \ref{ugCategoriesDocPage} on
+page~\pageref{ugCategoriesDocPage}
+\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
+page~\pageref{ugCategoriesHierPage}
+\item ugCategoriesMembershipPage \ref{ugCategoriesMembershipPage} on
+page~\pageref{ugCategoriesMembershipPage}
+\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
+page~\pageref{ugCategoriesDefaultsPage}
+\item ugCategoriesAxiomsPage \ref{ugCategoriesAxiomsPage} on
+page~\pageref{ugCategoriesAxiomsPage}
+\item ugCategoriesCorrectnessPage \ref{ugCategoriesCorrectnessPage} on
+page~\pageref{ugCategoriesCorrectnessPage}
+\item ugCategoriesAttributesPage \ref{ugCategoriesAttributesPage} on
+page~\pageref{ugCategoriesAttributesPage}
+\item ugCategoriesParametersPage \ref{ugCategoriesParametersPage} on
+page~\pageref{ugCategoriesParametersPage}
+\item ugCategoriesConditionalsPage \ref{ugCategoriesConditionalsPage} on
+page~\pageref{ugCategoriesConditionalsPage}
+\item ugCategoriesAndPackagesPage \ref{ugCategoriesAndPackagesPage} on
+page~\pageref{ugCategoriesAndPackagesPage}
+\end{itemize}
+\index{pages!ugCategoriesPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesPage}
+\index{ugCategoriesPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesPage}{12. Categories}
+\beginscroll
+
+This chapter unravels the mysteries of categories---what
+they are, how they are related to domains and packages,
+how they are defined in Axiom, and how you can extend the
+system to include new categories of your own.
+
+We assume that you have read the introductory material on domains and
+categories in
+\downlink{``\ugTypesBasicDomainConsTitle''}{ugTypesBasicDomainConsPage}
+in Section
+\ugTypesBasicDomainConsNumber\ignore{ugTypesBasicDomainCons}.  There
+you learned that the notion of packages covered in the previous
+chapter are special cases of domains.  While this is in fact the case,
+it is useful here to regard domains as distinct from packages.
+
+Think of a domain as a datatype, a collection of objects (the objects
+of the domain).  From your ``sneak preview'' in the previous chapter,
+you might conclude that categories are simply named clusters of
+operations exported by domains.  As it turns out, categories have a
+much deeper meaning.  Categories are fundamental to the design of
+Axiom.  They control the interactions between domains and algorithmic
+packages, and, in fact, between all the components of Axiom.
+
+Categories form hierarchies as shown on the inside cover pages of this
+book.  The inside front-cover pages illustrate the basic algebraic
+hierarchy of the Axiom programming language.  The inside back-cover
+pages show the hierarchy for data structures.
+
+Think of the category structures of Axiom as a foundation for a city
+on which superstructures (domains) are built.  The algebraic
+hierarchy, for example, serves as a foundation for constructive
+mathematical algorithms embedded in the domains of Axiom.  Once in
+place, domains can be constructed, either independently or from one
+another.
+
+Superstructures are built for quality---domains are compiled into
+machine code for run-time efficiency.  You can extend the foundation
+in directions beyond the space directly beneath the superstructures,
+then extend selected superstructures to cover the space.  Because of
+the compilation strategy, changing components of the foundation
+generally means that the existing superstructures (domains) built on
+the changed parts of the foundation (categories) have to be
+rebuilt---that is, recompiled.
+
+Before delving into some of the interesting facts about categories, let's see
+how you define them in Axiom.
+
+\beginmenu
+    \menudownlink{{12.1. Definitions}}{ugCategoriesDefsPage}
+    \menudownlink{{12.2. Exports}}{ugCategoriesExportsPage}
+    \menudownlink{{12.3. Documentation}}{ugCategoriesDocPage}
+    \menudownlink{{12.4. Hierarchies}}{ugCategoriesHierPage}
+    \menudownlink{{12.5. Membership}}{ugCategoriesMembershipPage}
+    \menudownlink{{12.6. Defaults}}{ugCategoriesDefaultsPage}
+    \menudownlink{{12.7. Axioms}}{ugCategoriesAxiomsPage}
+    \menudownlink{{12.8. Correctness}}{ugCategoriesCorrectnessPage}
+    \menudownlink{{12.9. Attributes}}{ugCategoriesAttributesPage}
+    \menudownlink{{12.10. Parameters}}{ugCategoriesParametersPage}
+    \menudownlink{{12.11. Conditionals}}{ugCategoriesConditionalsPage}
+    \menudownlink{{12.12. Anonymous Categories}}{ugCategoriesAndPackagesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesDefsTitle}{Definitions}
+\newcommand{\ugCategoriesDefsNumber}{12.1.}
+
+@
+\section{Definitions}
+\label{ugCategoriesDefsPage}
+\begin{itemize}
+\item ugTypesPage \ref{ugTypesPage} on
+page~\pageref{ugTypesPage}
+\end{itemize}
+\index{pages!ugCategoriesDefsPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesDefsPage}
+\index{ugCategoriesDefsPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesDefsPage}{12.1. Definitions}
+\beginscroll
+
+A category is defined by a function with exactly the same format as
+any other function in Axiom.
+
+\beginImportant
+The definition of a category has the syntax:
+\centerline{{{\it CategoryForm} : {\tt Category\quad{}==\quad{}} {\it Extensions} {\tt [ with} {\it Exports} {\tt ]}}}
+
+The brackets {\tt [ ]} here indicate optionality.
+\endImportant
+
+
+The first example of a category definition is
+\spadtype{SetCategory},
+the most basic of the algebraic categories in Axiom.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ SetCategory():\ Category\ ==}\newline
+{\tt 2.\ \ \ \ \ \ Join(Type,CoercibleTo\ OutputForm)\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ "="\ :\ (\$,\ \$)\ ->\ Boolean}\newline
+\endImportant
+
+The definition starts off with the name of the
+category (\spadtype{SetCategory}); this is
+always in column one in the source file.
+%% maybe talk about naming conventions for source files? .spad or .ax?
+All parts of a category definition are then indented with respect to this
+first line.
+
+In \downlink{``\ugTypesTitle''}{ugTypesPage} in Chapter
+\ugTypesNumber\ignore{ugTypes}, we talked about \spadtype{Ring} as
+denoting the class of all domains that are rings, in short, the class
+of all rings.  While this is the usual naming convention in Axiom, it
+is also common to use the word ``Category'' at the end of a category
+name for clarity.  The interpretation of the name
+\spadtype{SetCategory} is, then, ``the category of all domains that
+are (mathematical) sets.''
+
+The name \spadtype{SetCategory} is followed in the definition by its
+formal parameters enclosed in parentheses \spadSyntax{()}.
+Here there are no parameters.
+As required, the type of the result of this category function is the
+distinguished name {\sf Category}.
+
+Then comes the \spadSyntax{==}.
+As usual, what appears to the right of the \spadSyntax{==} is a
+definition, here, a category definition.
+A category definition always has two parts separated by the reserved word
+\spadkey{with}
+\spad{with}.
+%\footnote{Debugging hint: it is very easy to forget
+%the \spad{with}!}
+
+The first part tells what categories the category extends.
+Here, the category extends two categories: \spadtype{Type}, the
+category of all domains, and
+\spadtype{CoercibleTo(OutputForm)}.
+%\footnote{\spadtype{CoercibleTo(OutputForm)}
+%can also be written (and is written in the definition above) without
+%parentheses.}
+The operation \spad{Join} is a system-defined operation that
+\spadkey{Join}
+forms a single category from two or more other categories.
+
+Every category other than \spadtype{Type} is an extension of some other
+category.
+If, for example, \spadtype{SetCategory} extended only the category
+\spadtype{Type}, the definition here would read ``{\tt Type with
+...}''.
+In fact, the {\tt Type} is optional in this line; ``{\tt with
+...}'' suffices.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesExportsTitle}{Exports}
+\newcommand{\ugCategoriesExportsNumber}{12.2.}
+
+@
+\section{Exports}
+\label{ugCategoriesExportsPage}
+\index{pages!ugCategoriesExportsPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesExportsPage}
+\index{ugCategoriesExportsPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesExportsPage}{12.2. Exports}
+\beginscroll
+
+To the right of the \spad{with} is a list of
+\spadkey{with}
+all the \spadglossSee{exports}{export} of the category.
+Each exported operation has a name and a type expressed by a
+\spadgloss{declaration} of the form
+``{\frenchspacing\tt {\it name}: {\it type}}''.
+
+Categories can export symbols, as well as
+{\tt 0} and {\tt 1} which denote
+domain constants.\footnote{The
+numbers {\tt 0} and {\tt 1} are operation names in Axiom.}
+In the current implementation, all other exports are operations with
+types expressed as \spadglossSee{mappings}{mapping} with the syntax
+\centerline{{{\it}}
+\centerline{{source\quad{\tt ->}\quad target}}
+\centerline{{}}}
+
+The category \spadtype{SetCategory} has a single export: the operation
+\spadop{=} whose type is given by the mapping {\tt (\$, \$) -> Boolean}.
+The \spadSyntax{\$} in a mapping type always means ``the domain.'' Thus
+the operation \spadop{=} takes two arguments from the domain and
+returns a value of type \spadtype{Boolean}.
+
+The source part of the mapping here is given by a {\it tuple}
+consisting of two or more types separated by commas and enclosed in
+parentheses.
+If an operation takes only one argument, you can drop the parentheses
+around the source type.
+If the mapping has no arguments, the source part of the mapping is either
+left blank or written as \spadSyntax{()}.
+Here are examples of formats of various operations with some
+contrived names.
+
+\begin{verbatim}
+someIntegerConstant  :    $
+aZeroArgumentOperation:   () -> Integer
+aOneArgumentOperation:    Integer -> $
+aTwoArgumentOperation:    (Integer,$) -> Void
+aThreeArgumentOperation:  ($,Integer,$) -> Fraction($)
+\end{verbatim}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesDocTitle}{Documentation}
+\newcommand{\ugCategoriesDocNumber}{12.3.}
+
+@
+\section{Documentation}
+\label{ugCategoriesDocPage}
+\index{pages!ugCategoriesDocPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesDocPage}
+\index{ugCategoriesDocPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesDocPage}{12.3. Documentation}
+\beginscroll
+
+The definition of \spadtype{SetCategory} above is  missing
+an important component: its library documentation.
+Here is its definition, complete with documentation.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ ++\ Description:}\newline
+{\tt 2.\ \ \ ++\ \bs{}axiomType\{SetCategory\}\ is\ the\ basic\ category}\newline
+{\tt 3.\ \ \ ++\ for\ describing\ a\ collection\ of\ elements\ with}\newline
+{\tt 4.\ \ \ ++\ \bs{}axiomOp\{=\}\ (equality)\ and\ a\ \bs{}axiomFun\{coerce\}}\newline
+{\tt 5.\ \ \ ++\ to\ \bs{}axiomType\{OutputForm\}.}\newline
+{\tt 6.\ \ \ }\newline
+{\tt 7.\ \ \ SetCategory():\ Category\ ==}\newline
+{\tt 8.\ \ \ \ \ Join(Type,\ CoercibleTo\ OutputForm)\ with}\newline
+{\tt 9.\ \ \ \ \ \ \ "=":\ (\$,\ \$)\ ->\ Boolean}\newline
+{\tt 10.\ \ \ \ \ \ \ \ ++\ \bs{}axiom\{x\ =\ y\}\ tests\ if\ \bs{}axiom\{x\}\ and}\newline
+{\tt 11.\ \ \ \ \ \ \ \ ++\ \bs{}axiom\{y\}\ are\ equal.}\newline
+\endImportant
+
+Documentary comments are an important part of constructor definitions.
+Documentation is given both for the category itself and for
+each export.
+A description for the category precedes the code.
+Each line of the description begins in column one with \axiomSyntax{++}.
+The description starts with the word {\tt Description:}.\footnote{Other
+information such as the author's name, date of creation, and so on,
+can go in this
+area as well but are currently ignored by Axiom.}
+All lines of the description following the initial line are
+indented by the same amount.
+
+{\texht{\sloppy}{}
+Surround the name of any constructor (with or without parameters) with an
+\texht{\verb+\axiomType{}+}{\\axiomType\{\}}.
+Similarly, surround an
+operator name with \texht{\verb+\axiomOp{}+}{\\axiomOp\{\}},
+an Axiom operation with \texht{\verb+\axiomFun{}+}{\\axiomFun\{\}}, and a
+variable or Axiom expression with
+\texht{\verb+\axiom{}+}{\\axiom\{\}}.
+Library documentation is given in a \TeX{}-like language so that
+it can be used both for hard-copy and for \Browse{}.
+These different wrappings cause operations and types to have
+mouse-active buttons in \Browse{}.
+For hard-copy output, wrapped expressions appear in a different font.
+The above documentation appears in hard-copy as:
+
+}
+%
+\texht{\begin{quotation}}{\indent{3}}
+%
+\axiomType{SetCategory} is the basic category
+for describing a collection of elements with \axiomOp{=}
+(equality) and a \spadfun{coerce} to \axiomType{OutputForm}.
+%
+\texht{\end{quotation}}{\indent{0}}
+%
+and
+%
+\texht{\begin{quotation}}{\indent{3}}
+%
+\axiom{x = y} tests if \axiom{x} and \axiom{y} are equal.
+%
+\texht{\end{quotation}}{\indent{0}}
+%
+
+For our purposes in this chapter, we omit the documentation from further
+category descriptions.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesHierTitle}{Hierarchies}
+\newcommand{\ugCategoriesHierNumber}{12.4.}
+
+@
+\section{Hierarchies}
+\label{ugCategoriesHierPage}
+\index{pages!ugCategoriesHierPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesHierPage}
+\index{ugCategoriesHierPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesHierPage}{12.4. Hierarchies}
+\beginscroll
+
+A second example of a category is
+\spadtype{SemiGroup}, defined by:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ SemiGroup():\ Category\ ==\ SetCategory\ with}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ "*":\ \ (\$,\$)\ ->\ \$}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
+\endImportant
+
+This definition is as simple as that for \spadtype{SetCategory},
+except that there are two exported operations.
+Multiple exported operations are written as a \spadgloss{pile},
+that is, they all begin in the same column.
+Here you see that the category mentions another type,
+\spadtype{PositiveInteger}, in a signature.
+Any domain can be used in a signature.
+
+Since categories extend one another, they form hierarchies.
+Each category other than \spadtype{Type} has one or more parents given
+by the one or more categories mentioned before the \spad{with} part of
+the definition.
+\spadtype{SemiGroup} extends \spadtype{SetCategory} and
+\spadtype{SetCategory} extends both \spadtype{Type} and
+\spadtype{CoercibleTo (OutputForm)}.
+Since \spadtype{CoercibleTo (OutputForm)} also extends \spadtype{Type},
+the mention of \spadtype{Type} in the definition is unnecessary but
+included for emphasis.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesMembershipTitle}{Membership}
+\newcommand{\ugCategoriesMembershipNumber}{12.5.}
+
+@
+\section{Membership}
+\label{ugCategoriesMembershipPage}
+\index{pages!ugCategoriesMembershipPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesMembershipPage}
+\index{ugCategoriesMembershipPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesMembershipPage}{12.5. Membership}
+\beginscroll
+
+We say a category designates a class of domains.
+What class of domains?
+That is, how does Axiom know what domains belong to what categories?
+The simple answer to this basic question is key to the design of
+Axiom:
+
+\beginImportant
+\centerline{{{\bf Domains belong to categories by assertion.}}}
+\endImportant
+
+When a domain is defined, it is asserted to belong to one or more
+categories.
+Suppose, for example, that an author of domain \spadtype{String} wishes to
+use the binary operator \spadop{*} to denote concatenation.
+Thus \spad{"hello " * "there"} would produce the string
+\spad{"hello there"}\footnote{Actually, concatenation of strings in
+Axiom is done by juxtaposition or by using the operation
+\spadfunFrom{concat}{String}.
+The expression \spad{"hello " "there"} produces the string
+\spad{"hello there"}.}.
+The author of \spadtype{String} could then assert that \spadtype{String}
+is a member of \spadtype{SemiGroup}.
+According to our definition of \spadtype{SemiGroup}, strings
+would then also have the operation \spadop{**} defined automatically.
+Then \spad{"--" ** 4} would produce a string of eight dashes
+\spad{"--------"}.
+Since \spadtype{String} is a member of \spadtype{SemiGroup}, it also is
+a member of \spadtype{SetCategory} and thus has an operation
+\spadop{=} for testing that two strings are equal.
+
+\texht{Now turn to the algebraic category hierarchy inside the
+front cover of this book.}{}
+Any domain that is a member of a
+category extending \spadtype{SemiGroup} is a member of
+\spadtype{SemiGroup} (that is, it {\it is} a semigroup).
+In particular, any domain asserted to be a \spadtype{Ring} is a
+semigroup since \spadtype{Ring} extends \spadtype{Monoid}, that,
+in turn, extends \spadtype{SemiGroup}.
+The definition of \spadtype{Integer} in Axiom asserts that
+\spadtype{Integer} is a member of category
+\spadtype{IntegerNumberSystem}, that, in turn, asserts that it is
+a member of \spadtype{EuclideanDomain}.
+Now \spadtype{EuclideanDomain} extends
+\spadtype{PrincipalIdealDomain} and so on.
+If you trace up the hierarchy, you see that
+\spadtype{EuclideanDomain} extends \spadtype{Ring}, and,
+therefore, \spadtype{SemiGroup}.
+Thus \spadtype{Integer} is a semigroup and also exports the
+operations \spadop{*} and \spadop{**}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesDefaultsTitle}{Defaults}
+\newcommand{\ugCategoriesDefaultsNumber}{12.6.}
+
+@
+\section{Defaults}
+\label{ugCategoriesDefaultsPage}
+\begin{itemize}
+\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
+page~\pageref{ugCategoriesHierPage}
+\item ugPackagesPage \ref{ugPackagesPage} on
+page~\pageref{ugPackagesPage}
+\end{itemize}
+\index{pages!ugCategoriesDefaultsPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesDefaultsPage}
+\index{ugCategoriesDefaultsPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesDefaultsPage}{12.6. Defaults}
+\beginscroll
+
+We actually omitted the last
+part of the definition of
+\spadtype{SemiGroup} in
+\downlink{``\ugCategoriesHierTitle''}{ugCategoriesHierPage} 
+in Section \ugCategoriesHierNumber\ignore{ugCategoriesHier}.
+Here now is its complete Axiom definition.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ SemiGroup():\ Category\ ==\ SetCategory\ with}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ "*":\ (\$,\ \$)\ ->\ \$}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
+{\tt 4.\ \ \ \ \ \ \ add}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ import\ RepeatedSquaring(\$)}\newline
+{\tt 6.\ \ \ \ \ \ \ \ \ x:\ \$\ **\ n:\ PositiveInteger\ ==\ expt(x,n)}\newline
+\endImportant
+
+The \spad{add} part at the end is used to give ``default definitions'' for
+\spadkey{add}
+exported operations.
+Once you have a multiplication operation \spadop{*}, you can
+define exponentiation
+for positive integer exponents
+using repeated multiplication:
+\centerline{{\spad{x ** n = x * x * ... * x}   ( \spad{n} copies of \spad{x} )}}
+This definition for \spadop{**} is called a {\it default} definition.
+In general, a category can give default definitions for any
+operation it exports.
+Since \spadtype{SemiGroup} and all its category descendants in the hierarchy
+export \spadop{**}, any descendant category may redefine \spadop{**} as well.
+
+A domain of category \spadtype{SemiGroup}
+(such as \spadtype{Integer}) may or may not choose to
+define its own \spadop{**} operation.
+If it does not, a default definition that is closest (in a ``tree-distance''
+sense of the hierarchy) to the domain is chosen.
+
+The part of the category definition following an \spadop{add} operation
+is a \spadgloss{capsule}, as discussed in
+\texht{the previous chapter.}
+{\downlink{``\ugPackagesTitle''}{ugPackagesPage} 
+in Chapter \ugPackagesNumber\ignore{ugPackages}.}
+The line
+\begin{verbatim}
+import RepeatedSquaring($)
+\end{verbatim}
+references the package
+\spadtype{RepeatedSquaring(\$)}, that is, the package
+\spadtype{RepeatedSquaring} that takes ``this domain'' as its
+parameter.
+For example, if the semigroup \spadtype{Polynomial (Integer)}
+does not define its own exponentiation operation, the
+definition used may come from the package
+\spadtype{RepeatedSquaring (Polynomial (Integer))}.
+The next line gives the definition in terms of \spadfun{expt} from that
+package.
+
+The default definitions are collected to form a ``default package''
+for the category.  The name of the package is the same as the category
+but with an ampersand (\spadSyntax{\&}) added at the end.  A default
+package always takes an additional argument relative to the category.
+Here is the definition of the default package \pspadtype{SemiGroup\&}
+as automatically generated by Axiom from the above definition of
+\spadtype{SemiGroup}.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ SemiGroup\_\&(\$):\ Exports\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ \$:\ SemiGroup}\newline
+{\tt 3.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 4.\ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
+{\tt 5.\ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 6.\ \ \ \ \ \ \ import\ RepeatedSquaring(\$)}\newline
+{\tt 7.\ \ \ \ \ \ \ x:\$\ **\ n:PositiveInteger\ ==\ expt(x,n)}\newline
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesAxiomsTitle}{Axioms}
+\newcommand{\ugCategoriesAxiomsNumber}{12.7.}
+
+@
+\section{Axioms}
+\label{ugCategoriesAxiomsPage}
+\begin{itemize}
+\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
+page~\pageref{ugCategoriesDefaultsPage}
+\end{itemize}
+\index{pages!ugCategoriesAxiomsPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesAxiomsPage}
+\index{ugCategoriesAxiomsPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesAxiomsPage}{12.7. Axioms}
+\beginscroll
+
+In \texht{the previous section}
+{\downlink{``\ugCategoriesDefaultsTitle''}{ugCategoriesDefaultsPage}
+in Section \ugCategoriesDefaultsNumber\ignore{ugCategoriesDefaults}}
+you saw the complete Axiom program defining \index{axiom}
+\spadtype{SemiGroup}.  According to this definition, semigroups (that
+is, are sets with the operations \spadopFrom{*}{SemiGroup} and
+\spadopFrom{**}{SemiGroup}.
+
+You might ask: ``Aside from the notion of default packages, isn't a
+category just a \spadgloss{macro}, that is, a shorthand equivalent to
+the two operations \spadop{*} and \spadop{**} with their types?'' If a
+category were a macro, every time you saw the word
+\spadtype{SemiGroup}, you would rewrite it by its list of exported
+operations.  Furthermore, every time you saw the exported operations
+of \spadtype{SemiGroup} among the exports of a constructor, you could
+conclude that the constructor exported \spadtype{SemiGroup}.
+
+A category is {\it not} a macro and here is why.
+The definition for \spadtype{SemiGroup} has documentation that states:
+
+\texht{\begin{quotation}}{\indent{3}}
+    Category \spadtype{SemiGroup} denotes the class of all multiplicative
+    semigroups, that is, a set with an associative operation \spadop{*}.
+
+    \texht{\vskip .5\baselineskip}{}
+    {Axioms:}
+
+    {\small\tt associative("*" : (\$,\$)->\$) -- (x*y)*z = x*(y*z)}
+\texht{\end{quotation}}{\indent{3}}
+
+According to the author's remarks, the mere exporting of an operation
+named \spadop{*} and \spadop{**} is not enough to qualify the domain
+as a \spadtype{SemiGroup}.  In fact, a domain can be a semigroup only
+if it explicitly exports a \spadop{**} and a \spadop{*} satisfying the
+associativity axiom.
+
+In general, a category name implies a set of axioms, even mathematical
+theorems.  There are numerous axioms from \spadtype{Ring}, for
+example, that are well-understood from the literature.  No attempt is
+made to list them all.  Nonetheless, all such mathematical facts are
+implicit by the use of the name \spadtype{Ring}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesCorrectnessTitle}{Correctness}
+\newcommand{\ugCategoriesCorrectnessNumber}{12.8.}
+
+@
+\section{Correctness}
+\label{ugCategoriesCorrectnessPage}
+\index{pages!ugCategoriesCorrectnessPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesCorrectnessPage}
+\index{ugCategoriesCorrectnessPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesCorrectnessPage}{12.8. Correctness}
+\beginscroll
+
+While such statements are only comments,
+Axiom can enforce their intention simply by shifting the burden of
+responsibility onto the author of a domain.
+A domain belongs to category \spad{Ring} only if the
+author asserts that the domain  belongs to \spadtype{Ring} or
+to a category that extends \spadtype{Ring}.
+
+This principle of assertion is important for large user-extendable
+systems.
+Axiom has a large library of operations offering facilities in
+many areas.
+Names such as \spadfun{norm} and \spadfun{product}, for example, have
+diverse meanings in diverse contexts.
+An inescapable hindrance to users would be to force those who wish to
+extend Axiom to always invent new names for operations.
+%>> I don't think disambiguate is really a word, though I like it
+Axiom allows you to reuse names, and then use context to disambiguate one
+from another.
+
+Here is another example of why this is important.
+Some languages, such as {\bf APL},
+denote the \spadtype{Boolean} constants \spad{true} and
+\spad{false} by the integers \spad{1} and \spad{0}.
+You may want to let infix operators \spadop{+} and \spadop{*} serve as the logical
+operators \spadfun{or} and \spadfun{and}, respectively.
+But note this: \spadtype{Boolean} is not a ring.
+The {\it inverse axiom} for \spadtype{Ring} states:
+%
+\centerline{{Every element \spad{x} has an additive inverse \spad{y} such that}}
+\centerline{{\spad{x + y = 0}.}}
+%
+\spadtype{Boolean} is not a ring since \spad{true} has
+no inverse---there is no inverse element \spad{a} such that
+\spad{1 + a = 0} (in terms of booleans, \spad{(true or a) = false}).
+Nonetheless, Axiom {\it could} easily and correctly implement
+\spadtype{Boolean} this way.
+\spadtype{Boolean} simply would not assert that it is of category
+\spadtype{Ring}.
+Thus the \spadop{+} for \spadtype{Boolean} values
+is not confused with the one for \spadtype{Ring}.
+Since the \spadtype{Polynomial} constructor requires its argument
+to be a ring, Axiom would then refuse to build the
+domain \spadtype{Polynomial(Boolean)}. Also, Axiom would refuse to
+wrongfully apply algorithms to \spadtype{Boolean} elements that  presume that the
+ring axioms for \spadop{+} hold.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesAttributesTitle}{Attributes}
+\newcommand{\ugCategoriesAttributesNumber}{12.9.}
+
+@
+\section{Attributes}
+\label{ugCategoriesAttributesPage}
+\begin{itemize}
+\item ugDomainsAssertionsPage \ref{ugDomainsAssertionsPage} on
+page~\pageref{ugDomainsAssertionsPage}
+\end{itemize}
+\index{pages!ugCategoriesAttributesPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesAttributesPage}
+\index{ugCategoriesAttributesPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesAttributesPage}{12.9. Attributes}
+\beginscroll
+
+Most axioms are not computationally useful.
+Those that are can be explicitly expressed by what Axiom calls an
+\spadgloss{attribute}.
+The attribute \spadatt{commutative("*")}, for example, is used to assert
+that a domain has commutative multiplication.
+Its definition is given by its documentation:
+
+\texht{\begingroup \parindent=1pc \narrower\noindent}{\indent{3}}%
+    A domain \spad{R} has \spadatt{commutative("*")}
+    if it has an operation "*": \spadsig{(R,R)}{R} such that \spad{x * y = y * x}.
+\texht{\par\endgroup}{\indent{0}}
+
+Just as you can test whether a domain has the category \spadtype{Ring}, you
+can test that a domain has a given attribute.
+
+\xtc{
+Do polynomials over the integers
+have commutative multiplication?
+}{
+\spadpaste{Polynomial Integer has commutative("*")}
+}
+\xtc{
+Do matrices over the integers
+have commutative multiplication?
+}{
+\spadpaste{Matrix Integer has commutative("*")}
+}
+
+Attributes are used to conditionally export and define
+operations for a domain (see 
+\downlink{``\ugDomainsAssertionsTitle''}{ugDomainsAssertionsPage} in 
+Section \ugDomainsAssertionsNumber\ignore{ugDomainsAssertions}).
+Attributes can also be asserted in a category definition.
+
+After mentioning category \spadtype{Ring} many times in this book,
+it is high time that we show you its definition:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ Ring():\ Category\ ==}\newline
+{\tt 2.\ \ \ \ \ Join(Rng,Monoid,LeftModule(\$:\ Rng))\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ characteristic:\ ->\ NonNegativeInteger}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ coerce:\ Integer\ ->\ \$}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ unitsKnown}\newline
+{\tt 6.\ \ \ \ \ \ \ add}\newline
+{\tt 7.\ \ \ \ \ \ \ \ \ n:Integer}\newline
+{\tt 8.\ \ \ \ \ \ \ \ \ coerce(n)\ ==\ n\ *\ 1\$\$}\newline
+\endImportant
+
+There are only two new things here.  First, look at the
+\spadSyntax{\$\$} on the last line.  This is not a typographic error!
+The first \spadSyntax{\$} says that the \spad{1} is to come from some
+domain.  The second \spadSyntax{\$} says that the domain is ``this
+domain.''  If \spadSyntax{\$} is \spadtype{Fraction(Integer)}, this
+line reads {\tt coerce(n) == n * 1\$Fraction(Integer)}.
+
+The second new thing is the presence of attribute
+``\spad{unitsKnown}''.  Axiom can always distinguish an attribute from
+an operation.  An operation has a name and a type. An attribute has no
+type.  The attribute \spadatt{unitsKnown} asserts a rather subtle
+mathematical fact that is normally taken for granted when working with
+rings.\footnote{With this axiom, the units of a domain are the set of
+elements \spad{x} that each have a multiplicative inverse \spad{y} in
+the domain.  Thus \spad{1} and \spad{-1} are units in domain
+\spadtype{Integer}.  Also, for \spadtype{Fraction Integer}, the domain
+of rational numbers, all non-zero elements are units.}  Because
+programs can test for this attribute, Axiom can correctly handle
+rather more complicated mathematical structures (ones that are similar
+to rings but do not have this attribute).
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesParametersTitle}{Parameters}
+\newcommand{\ugCategoriesParametersNumber}{12.10.}
+
+@
+\section{Parameters}
+\label{ugCategoriesParametersPage}
+\index{pages!ugCategoriesParametersPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesParametersPage}
+\index{ugCategoriesParametersPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesParametersPage}{12.10. Parameters}
+\beginscroll
+
+Like domain constructors, category constructors can also have
+parameters.
+For example, category \spadtype{MatrixCategory} is a parameterized
+category for defining matrices over a ring \spad{R} so that the
+matrix domains can have
+different representations and indexing schemes.
+Its definition has the form:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ MatrixCategory(R,Row,Col):\ Category\ ==}\newline
+{\tt 2.\ \ \ \ \ \ \ TwoDimensionalArrayCategory(R,Row,Col)\ with\ ...}\newline
+\endImportant
+
+The category extends \spadtype{TwoDimensionalArrayCategory} with
+the same arguments.
+You cannot find \spadtype{TwoDimensionalArrayCategory} in the
+algebraic hierarchy listing.
+Rather, it is a member of the data structure hierarchy,
+given inside the back cover of this book.
+In particular, \spadtype{TwoDimensionalArrayCategory} is an extension of
+\spadtype{HomogeneousAggregate} since its elements are all one type.
+
+The domain \spadtype{Matrix(R)}, the class of matrices with coefficients
+from domain \spad{R}, asserts that it is a member of category
+\spadtype{MatrixCategory(R, Vector(R), Vector(R))}.
+The parameters of a category must also have types.
+The first parameter to \spadtype{MatrixCategory}
+\spad{R} is required to be a ring.
+The second and third are required to be domains of category
+\spadtype{FiniteLinearAggregate(R)}.\footnote{%
+This is another extension of
+\spadtype{HomogeneousAggregate} that you can see in
+the data structure hierarchy.}
+In practice, examples of categories having parameters other than
+domains are rare.
+
+Adding the declarations for parameters to the definition for
+\spadtype{MatrixCategory}, we have:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ R:\ Ring}\newline
+{\tt 2.\ \ \ (Row,\ Col):\ FiniteLinearAggregate(R)}\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ MatrixCategory(R,\ Row,\ Col):\ Category\ ==}\newline
+{\tt 5.\ \ \ \ \ \ \ TwoDimensionalArrayCategory(R,\ Row,\ Col)\ with\ ...}\newline
+\endImportant
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesConditionalsTitle}{Conditionals}
+\newcommand{\ugCategoriesConditionalsNumber}{12.11.}
+
+@
+\section{Conditionals}
+\label{ugCategoriesConditionalsPage}
+\begin{itemize}
+\item ugPackagesCondsPage \ref{ugPackagesCondsPage} on
+page~\pageref{ugPackagesCondsPage}
+\end{itemize}
+\index{pages!ugCategoriesConditionalsPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesConditionalsPage}
+\index{ugCategoriesConditionalsPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesConditionalsPage}{12.11. Conditionals}
+\beginscroll
+
+As categories have parameters, the actual operations exported by a
+category can depend on these parameters.
+As an example, the operation \spadfunFrom{determinant}{MatrixCategory}
+from category \spadtype{MatrixCategory} is only exported when the
+underlying domain \spad{R} has commutative multiplication:
+
+\begin{verbatim}
+if R has commutative("*") then
+   determinant: $ -> R
+\end{verbatim}
+
+Conditionals can also define conditional extensions of a category.
+Here is a portion of the definition of \spadtype{QuotientFieldCategory}:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ QuotientFieldCategory(R)\ :\ Category\ ==\ ...\ with\ ...}\newline
+{\tt 2.\ \ \ \ \ \ \ \ if\ R\ has\ OrderedSet\ then\ OrderedSet}\newline
+{\tt 3.\ \ \ \ \ \ \ \ if\ R\ has\ IntegerNumberSystem\ then}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ \ ceiling:\ \$\ ->\ R}\newline
+{\tt 5.\ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
+\endImportant
+
+Think of category \spadtype{QuotientFieldCategory(R)} as
+denoting the domain \spadtype{Fraction(R)}, the
+class of all fractions of the form \smath{a/b} for elements of \spad{R}.
+The first conditional means in English:
+``If the elements of \spad{R} are totally ordered (\spad{R}
+is an \spadtype{OrderedSet}), then so are the fractions \smath{a/b}''.
+
+The second conditional is used to conditionally export an
+operation \spadfun{ceiling} which returns the smallest integer
+greater than or equal to its argument.
+Clearly, ``ceiling'' makes sense for integers but not for
+polynomials and other algebraic structures.
+Because of this conditional,
+the domain \spadtype{Fraction(Integer)} exports
+an operation
+\spadfun{ceiling}: \spadsig{Fraction Integer}{Integer}, but
+\spadtype{Fraction Polynomial Integer} does not.
+
+Conditionals can also appear in the default definitions for the
+operations of a category.
+For example, a default definition for \spadfunFrom{ceiling}{Field}
+within the part following the \spadop{add} reads:
+
+\begin{verbatim}
+if R has IntegerNumberSystem then
+    ceiling x == ...
+\end{verbatim}
+
+Here the predicate used is identical to the predicate in the {\tt
+Exports} part.  This need not be the case.  See
+\downlink{``\ugPackagesCondsTitle''}{ugPackagesCondsPage} in Section
+\ugPackagesCondsNumber\ignore{ugPackagesConds} for a more complicated
+example.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug12.ht>>=
+\newcommand{\ugCategoriesAndPackagesTitle}{Anonymous Categories}
+\newcommand{\ugCategoriesAndPackagesNumber}{12.12.}
+
+@
+\section{Anonymous Categories}
+\label{ugCategoriesAndPackagesPage}
+\begin{itemize}
+\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
+page~\pageref{ugPackagesAbstractPage}
+\end{itemize}
+\index{pages!ugCategoriesAndPackagesPage!ug12.ht}
+\index{ug12.ht!pages!ugCategoriesAndPackagesPage}
+\index{ugCategoriesAndPackagesPage!ug12.ht!pages}
+<<ug12.ht>>=
+\begin{page}{ugCategoriesAndPackagesPage}{12.12. Anonymous Categories}
+\beginscroll
+
+The part of a category to the right of a {\tt with} is also regarded
+as a category---an ``anonymous category.''  Thus you have already seen
+a category definition The {\tt Exports} part of the package
+\pspadtype{DrawComplex}
+(\downlink{``\ugPackagesAbstractTitle''}{ugPackagesAbstractPage} in
+Section \ugPackagesAbstractNumber\ignore{ugPackagesAbstract}) is an
+anonymous category.  This is not necessary.  We could, instead, give
+this category a name:
+
+%
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ DrawComplexCategory():\ Category\ ==\ with}\newline
+{\tt 2.\ \ \ \ \ \ drawComplex:\ (C\ ->\ C,S,S,Boolean)\ ->\ VIEW3D}\newline
+{\tt 3.\ \ \ \ \ \ drawComplexVectorField:\ (C\ ->\ C,S,S)\ ->\ VIEW3D}\newline
+{\tt 4.\ \ \ \ \ \ setRealSteps:\ INT\ ->\ INT}\newline
+{\tt 5.\ \ \ \ \ \ setImagSteps:\ INT\ ->\ INT}\newline
+{\tt 6.\ \ \ \ \ \ setClipValue:\ DFLOAT->\ DFLOAT}\newline
+\endImportant
+%
+and then define \spadtype{DrawComplex} by:
+%
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ DrawComplex():\ DrawComplexCategory\ ==\ Implementation}\newline
+{\tt 2.\ \ \ \ \ \ where}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ ...}\newline
+\endImportant
+%
+
+There is no reason, however, to give this list of exports a name
+since no other domain or package exports it.
+In fact, it is rare for a package to export a named category.
+As you will see in the next chapter, however, it is very common
+for the definition of domains to mention one or more category
+before the {\tt with}.
+\spadkey{with}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 13 (ug13.ht)}
+<<ug13.ht>>=
+\newcommand{\ugDomainsTitle}{Domains}
+\newcommand{\ugDomainsNumber}{13.}
+
+@
+\section{Domains}
+\label{ugDomainsPage}
+\begin{itemize}
+\item ugPackagesDomsPage \ref{ugPackagesDomsPage} on
+page~\pageref{ugPackagesDomsPage}
+\item ugDomainsDefsPage \ref{ugDomainsDefsPage} on
+page~\pageref{ugDomainsDefsPage}
+\item ugDomainsAssertionsPage \ref{ugDomainsAssertionsPage} on
+page~\pageref{ugDomainsAssertionsPage}
+\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
+page~\pageref{ugDomainsDemoPage}
+\item ugDomainsBrowsePage \ref{ugDomainsBrowsePage} on
+page~\pageref{ugDomainsBrowsePage}
+\item ugDomainsRepPage \ref{ugDomainsRepPage} on
+page~\pageref{ugDomainsRepPage}
+\item ugDomainsMultipleRepsPage \ref{ugDomainsMultipleRepsPage} on
+page~\pageref{ugDomainsMultipleRepsPage}
+\item ugDomainsAddDomainPage \ref{ugDomainsAddDomainPage} on
+page~\pageref{ugDomainsAddDomainPage}
+\item ugDomainsDefaultsPage \ref{ugDomainsDefaultsPage} on
+page~\pageref{ugDomainsDefaultsPage}
+\item ugDomainsOriginsPage \ref{ugDomainsOriginsPage} on
+page~\pageref{ugDomainsOriginsPage}
+\item ugDomainsShortFormsPage \ref{ugDomainsShortFormsPage} on
+page~\pageref{ugDomainsShortFormsPage}
+\item ugDomainsCliffordPage \ref{ugDomainsCliffordPage} on
+page~\pageref{ugDomainsCliffordPage}
+\item ugDomsinsDatabasePage \ref{ugDomsinsDatabasePage} on
+page~\pageref{ugDomsinsDatabasePage}
+\end{itemize}
+\index{pages!ugDomainsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsPage}
+\index{ugDomainsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsPage}{13. Domains}
+\beginscroll
+
+We finally come to the \spadgloss{domain constructor}.
+A few subtle differences between packages and
+domains turn up some interesting issues.
+We first discuss these differences then
+describe the resulting issues by illustrating a program
+for the \axiomType{QuadraticForm} constructor.
+After a short example of an algebraic constructor,
+\axiomType{CliffordAlgebra}, we show how you use domain constructors to build
+a database query facility.
+
+\beginmenu
+    \menudownlink{{13.1. Domains vs. Packages}}{ugPackagesDomsPage}
+    \menudownlink{{13.2. Definitions}}{ugDomainsDefsPage}
+    \menudownlink{{13.3. Category Assertions}}{ugDomainsAssertionsPage}
+    \menudownlink{{13.4. A Demo}}{ugDomainsDemoPage}
+    \menudownlink{{13.5. Browse}}{ugDomainsBrowsePage}
+    \menudownlink{{13.6. Representation}}{ugDomainsRepPage}
+    \menudownlink{{13.7. Multiple Representations}}{ugDomainsMultipleRepsPage}
+    \menudownlink{{13.8. Add Domain}}{ugDomainsAddDomainPage}
+    \menudownlink{{13.9. Defaults}}{ugDomainsDefaultsPage}
+    \menudownlink{{13.10. Origins}}{ugDomainsOriginsPage}
+    \menudownlink{{13.11. Short Forms}}{ugDomainsShortFormsPage}
+    \menudownlink{{13.12. Example 1: Clifford Algebra}}{ugDomainsCliffordPage}
+    \menudownlink{{13.13. Example 2: Building A Query Facility}}
+{ugDomsinsDatabasePage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugPackagesDomsTitle}{Domains vs. Packages}
+\newcommand{\ugPackagesDomsNumber}{13.1.}
+
+@
+\section{Domains vs. Packages}
+\label{ugPackagesDomsPage}
+\begin{itemize}
+\item ugPackagesPage \ref{ugPackagesPage} on
+page~\pageref{ugPackagesPage}
+\end{itemize}
+\index{pages!ugPackagesDomsPage!ug13.ht}
+\index{ug13.ht!pages!ugPackagesDomsPage}
+\index{ugPackagesDomsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugPackagesDomsPage}{13.1. Domains vs. Packages}
+\beginscroll
+%
+Packages are special cases of domains.
+What is the difference between a package and a domain that is not a
+package?
+By definition, there is only one difference: a domain that is not a package
+has the symbol \axiomSyntax{\$} appearing
+somewhere among the types of its exported operations.
+The \axiomSyntax{\$} denotes ``this domain.'' If the \axiomSyntax{\$}
+appears before the \axiomSyntax{->} in the type of a signature, it means
+the operation takes an element from the domain as an argument.
+If it appears after the \axiomSyntax{->}, then the operation returns an
+element of the domain.
+
+If no exported operations mention \axiomSyntax{\$}, then evidently
+there is nothing of interest to do with the objects of the domain.
+You might then say that a package is a ``boring'' domain!  But, as you
+saw in \downlink{``\ugPackagesTitle''}{ugPackagesPage} in Chapter
+\ugPackagesNumber\ignore{ugPackages}, packages are a very useful
+notion indeed.  The exported operations of a package depend solely on
+the parameters to the package constructor and other explicit domains.
+
+To summarize, domain constructors are versatile structures that serve
+two distinct practical purposes: Those like \axiomType{Polynomial} and
+\axiomType{List} describe classes of computational objects; others,
+like \pspadtype{SortPackage}, describe packages of useful operations.
+As in the last chapter, we focus here on the first kind.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDefsTitle}{Definitions}
+\newcommand{\ugDomainsDefsNumber}{13.2.}
+
+@
+\section{Definitions}
+\label{ugDomainsDefsPage}
+\index{pages!ugDomainsDefsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDefsPage}
+\index{ugDomainsDefsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDefsPage}{13.2. Definitions}
+\beginscroll
+%
+
+The syntax for defining a domain constructor is the same as for any
+function in Axiom:
+\centerline{{\frenchspacing{\tt {\it DomainForm} : {\it Exports} == {\it Implementation}}}}
+As this definition usually extends over many lines, a
+\axiom{where} expression is generally used instead.
+\spadkey{where}
+
+\beginImportant
+A recommended format for the definition of a domain is:\newline
+{\tt%
+{\it DomainForm} : Exports  ==  Implementation where \newline
+\texht{\hspace*{.75pc}}{\tab{8}} {\it optional type declarations} \newline
+\texht{\hspace*{.75pc}}{\tab{3}} Exports  ==  [{\it Category Assertions}] with \newline
+\texht{\hspace*{2.0pc}}{\tab{8}}   {\it list of exported operations} \newline
+\texht{\hspace*{.75pc}}{\tab{3}} Implementation  ==  [{\it Add Domain}] add \newline
+\texht{\hspace*{2.0pc}}{\tab{6}}   [Rep := {\it Representation}] \newline
+\texht{\hspace*{2.0pc}}{\tab{8}}   {\it list of function definitions for exported operations}
+}
+
+\texht{\vskip 4pt}{}
+Note: The brackets {\tt [ ]} here denote optionality.
+\endImportant
+
+A complete domain constructor definition for
+\axiomType{QuadraticForm} is shown in Figure \ref{fig-quadform}.
+Interestingly, this little domain illustrates all the new
+concepts you need to learn.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ )abbrev\ domain\ QFORM\ QuadraticForm}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ ++\ Description:}\newline
+{\tt 4.\ \ \ ++\ \ \ This\ domain\ provides\ modest\ support\ for}\newline
+{\tt 5.\ \ \ ++\ \ \ quadratic\ forms.}\newline
+{\tt 6.\ \ \ QuadraticForm(n,\ K):\ Exports\ ==\ Implementation\ where}\newline
+{\tt 7.\ \ \ \ \ \ \ n:\ PositiveInteger}\newline
+{\tt 8.\ \ \ \ \ \ \ K:\ Field}\newline
+{\tt 9.\ \ \ }\newline
+{\tt 10.\ \ \ \ \ \ Exports\ ==\ AbelianGroup\ with}\newline
+{\tt 11.\ \ \ \ \ \ \ \ quadraticForm:\ SquareMatrix(n,K)\ ->\ \$}\newline
+{\tt 12.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{quadraticForm(m)\}\ creates\ a\ quadratic}\newline
+{\tt 13.\ \ \ \ \ \ \ \ \ \ ++\ quadratic\ form\ from\ a\ symmetric,}\newline
+{\tt 14.\ \ \ \ \ \ \ \ \ \ ++\ square\ matrix\ \bs{}axiom\{m\}.}\newline
+{\tt 15.\ \ \ \ \ \ \ \ matrix:\ \$\ ->\ SquareMatrix(n,K)}\newline
+{\tt 16.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{matrix(qf)\}\ creates\ a\ square\ matrix}\newline
+{\tt 17.\ \ \ \ \ \ \ \ \ \ ++\ from\ the\ quadratic\ form\ \bs{}axiom\{qf\}.}\newline
+{\tt 18.\ \ \ \ \ \ \ \ elt:\ (\$,\ DirectProduct(n,K))\ ->\ K}\newline
+{\tt 19.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{qf(v)\}\ evaluates\ the\ quadratic\ form}\newline
+{\tt 20.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{qf\}\ on\ the\ vector\ \bs{}axiom\{v\},}\newline
+{\tt 21.\ \ \ \ \ \ \ \ \ \ ++\ producing\ a\ scalar.}\newline
+{\tt 22.\ \ }\newline
+{\tt 23.\ \ \ \ \ \ Implementation\ ==\ SquareMatrix(n,K)\ add}\newline
+{\tt 24.\ \ \ \ \ \ \ \ Rep\ :=\ SquareMatrix(n,K)}\newline
+{\tt 25.\ \ \ \ \ \ \ \ quadraticForm\ m\ ==}\newline
+{\tt 26.\ \ \ \ \ \ \ \ \ \ not\ symmetric?\ m\ =>\ error}\newline
+{\tt 27.\ \ \ \ \ \ \ \ \ \ \ \ "quadraticForm\ requires\ a\ symmetric\ matrix"}\newline
+{\tt 28.\ \ \ \ \ \ \ \ \ \ m\ ::\ \$}\newline
+{\tt 29.\ \ \ \ \ \ \ \ matrix\ q\ ==\ q\ ::\ Rep}\newline
+{\tt 30.\ \ \ \ \ \ \ \ elt(q,v)\ ==\ dot(v,\ (matrix\ q\ *\ v))}\newline
+%
+\caption{The \protect\axiomType{QuadraticForm} domain.}\label{fig-quadform}
+\endImportant
+
+A domain constructor can take any number and type of parameters.
+\axiomType{QuadraticForm} takes a positive integer \axiom{n} and a field
+\axiom{K} as arguments.
+Like a package, a domain has a set of explicit exports and an
+implementation described by a capsule.
+Domain constructors are documented in the same way as package constructors.
+
+Domain \axiomType{QuadraticForm(n, K)}, for a given positive integer
+\axiom{n} and domain \axiom{K}, explicitly exports three operations:
+%
+\indent{4}
+\beginitems
+\item\axiom{quadraticForm(A)} creates a quadratic form from a matrix
+\axiom{A}.
+\item\axiom{matrix(q)} returns the matrix \axiom{A} used to create
+the quadratic form \axiom{q}.
+\item\axiom{q.v} computes the scalar \texht{$v^TAv$}{transpose(v)*A*v}
+for a given vector \axiom{v}.
+\enditems
+\indent{0}
+
+Compared with the corresponding syntax given for the definition of a
+package, you see that a domain constructor has three optional parts to
+its definition: {\it Category Assertions}, {\it Add Domain}, and
+{\it Representation}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsAssertionsTitle}{Category Assertions}
+\newcommand{\ugDomainsAssertionsNumber}{13.3.}
+
+@
+\section{Category Assertions}
+\label{ugDomainsAssertionsPage}
+\begin{itemize}
+\item ugCategoriesCorrectnessPage \ref{ugCategoriesCorrectnessPage} on
+page~\pageref{ugCategoriesCorrectnessPage}
+\item ugCategoriesConditionalsPage \ref{ugCategoriesConditionalsPage} on
+page~\pageref{ugCategoriesConditionalsPage}
+\end{itemize}
+\index{pages!ugDomainsAssertionsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsAssertionsPage}
+\index{ugDomainsAssertionsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsAssertionsPage}{13.3. Category Assertions}
+\beginscroll
+%
+
+The {\it Category Assertions} part of your domain constructor
+definition lists those categories of which all domains created by the
+constructor are unconditionally members.  The word ``unconditionally''
+means that membership in a category does not depend on the values of
+the parameters to the domain constructor.  This part thus defines the
+link between the domains and the category hierarchies given on the
+inside covers of this book.  As described in
+\downlink{``\ugCategoriesCorrectnessTitle''}{ugCategoriesCorrectnessPage}
+in Section
+\ugCategoriesCorrectnessNumber\ignore{ugCategoriesCorrectness}, it is
+this link that makes it possible for you to pass objects of the
+domains as arguments to other operations in Axiom.
+
+Every \axiomType{QuadraticForm} domain is declared to be
+unconditionally a member of category \axiomType{AbelianGroup}.  An
+abelian group is a collection of elements closed under addition.
+Every object {\it x} of an abelian group has an additive inverse {\it
+y} such that \texht{$x + y = 0$}{\axiom{{\it x} + {\it y} = 0}}.  The
+exports of an abelian group include \axiom{0}, \axiomOp{+},
+\axiomOp{-}, and scalar multiplication by an integer.  After asserting
+that \axiomType{QuadraticForm} domains are abelian groups, it is
+possible to pass quadratic forms to algorithms that only assume
+arguments to have these abelian group properties.
+
+In
+\downlink{``\ugCategoriesConditionalsTitle''}{ugCategoriesConditionalsPage}
+in Section
+\ugCategoriesConditionalsNumber\ignore{ugCategoriesConditionals}, you
+saw that \axiomType{Fraction(R)}, a member of
+\axiomType{QuotientFieldCategory(R)}, is a member of
+\axiomType{OrderedSet} if \axiom{R} is a member of
+\axiomType{OrderedSet}.  Likewise, from the {\tt Exports} part of the
+definition of \axiomType{ModMonic(R, S)}, \begin{verbatim}
+UnivariatePolynomialCategory(R) with
+  if R has Finite then Finite
+     ...
+\end{verbatim}
+you see that \axiomType{ModMonic(R, S)} is a member of
+\axiomType{Finite} is \axiom{R} is.
+
+The {\tt Exports} part of a domain definition is the same kind of
+expression that can appear to the right of an \axiomSyntax{==} in a
+category definition.  If a domain constructor is unconditionally a
+member of two or more categories, a \axiom{Join} form is used.
+\spadkey{Join} The {\tt Exports} part of the definition of
+\axiomType{FlexibleArray(S)} reads, for example:
+\begin{verbatim}
+Join(ExtensibleLinearAggregate(S),
+     OneDimensionalArrayAggregate(S)) with...
+\end{verbatim}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDemoTitle}{A Demo}
+\newcommand{\ugDomainsDemoNumber}{13.4.}
+
+@
+\section{A Demo}
+\label{ugDomainsDemoPage}
+\index{pages!ugDomainsDemoPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDemoPage}
+\index{ugDomainsDemoPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDemoPage}{13.4. A Demo}
+\beginscroll
+%
+Before looking at the {\it Implementation} part of \axiomType{QuadraticForm},
+let's try some examples.
+
+\texht{\vskip 2pc}{}
+\xtc{
+Build a domain \axiom{QF}.
+}{
+\spadpaste{QF := QuadraticForm(2,Fraction Integer)\bound{x2}\free{x1}}
+}
+\xtc{
+Define a matrix to be used to construct
+a quadratic form.
+}{
+\spadpaste{A := matrix [[-1,1/2],[1/2,1]]\bound{x3}\free{x2}}
+}
+\xtc{
+Construct the quadratic form.
+A package call {\tt \$QF} is necessary since there
+are other \axiomType{QuadraticForm} domains.
+}{
+\spadpaste{q : QF := quadraticForm(A)\bound{x4}\free{x3}}
+}
+\xtc{
+Looks like a matrix. Try computing
+the number of rows.
+Axiom won't let you.
+}{
+\spadpaste{nrows q\free{x3}}
+}
+\xtc{
+Create a direct product element \axiom{v}.
+A package call is again necessary, but Axiom
+understands your list as denoting a vector.
+}{
+\spadpaste{v := directProduct([2,-1])\$DirectProduct(2,Fraction Integer)\bound{x5}\free{x4}}
+}
+\xtc{
+Compute the product \texht{$v^TAv$}{transpose(v)*A*v}.
+}{
+\spadpaste{q.v\free{x5}}
+}
+\xtc{
+What is 3 times \axiom{q} minus \axiom{q} plus \axiom{q}?
+}{
+\spadpaste{3*q-q+q\free{x4}}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsBrowseTitle}{Browse}
+\newcommand{\ugDomainsBrowseNumber}{13.5.}
+
+@
+\section{Browse}
+\label{ugDomainsBrowsePage}
+\index{pages!ugDomainsBrowsePage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsBrowsePage}
+\index{ugDomainsBrowsePage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsBrowsePage}{13.5. Browse}
+\beginscroll
+
+The \Browse{} facility of \HyperName{} is useful for
+investigating
+the properties of domains, packages, and categories.
+From the main \HyperName{} menu, move your mouse to {\bf Browse} and
+click on the left mouse button.
+This brings up the \Browse{} first page.
+Now, with your mouse pointer somewhere in this window, enter the
+string ``quadraticform'' into the input area (all lower case
+letters will do).
+Move your mouse to {\bf Constructors} and click.
+Up comes a page describing \axiomType{QuadraticForm}.
+
+From here, click on {\bf Description}.
+This gives you a page that includes a part labeled by ``{\it
+Description:}''.
+You also see the types for arguments \axiom{n} and \axiom{K}
+displayed as well as the fact that \axiomType{QuadraticForm}
+returns an \axiomType{AbelianGroup}.
+You can go and experiment a bit by selecting {\bf Field} with
+your mouse.
+Eventually, use
+\UpButton{}
+several times to return to the first page on
+\axiomType{QuadraticForm}.
+
+Select {\bf Operations} to get a list of operations for
+\axiomType{QuadraticForm}.
+You can select an operation by clicking on it
+to get an individual page with information about that operation.
+Or you can select the buttons along the bottom to see alternative
+views or get additional information on the operations.
+Then return to the page on \axiomType{QuadraticForm}.
+
+Select {\bf Cross Reference} to get another menu.
+This menu has buttons for {\bf Parents}, {\bf Ancestors}, and
+others.
+Clicking on {\bf Parents}, you see that \axiomType{QuadraticForm}
+has one parent \axiomType{AbelianMonoid}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsRepTitle}{Representation}
+\newcommand{\ugDomainsRepNumber}{13.6.}
+
+@
+\section{Representation}
+\label{ugDomainsRepPage}
+\begin{itemize}
+\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
+page~\pageref{ugDomainsDemoPage}
+\end{itemize}
+\index{pages!ugDomainsRepPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsRepPage}
+\index{ugDomainsRepPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsRepPage}{13.6. Representation}
+\beginscroll
+%
+The {\tt Implementation} part of an Axiom capsule for a
+domain constructor uses the special variable \axiom{Rep} to
+identify the lower level data type used to represent the objects
+of the domain.
+The \axiom{Rep} for quadratic forms is \axiomType{SquareMatrix(n, K)}.
+This means that all objects of the domain are required to be
+\axiom{n} by \axiom{n} matrices with elements from \axiomType{K}.
+
+The code for \axiomFun{quadraticForm} in Figure \ref{fig-quadform} on
+page \pageref{fig-quadform} checks that the matrix is symmetric and
+then converts it to \axiomSyntax{\$}, which means, as usual, ``this
+domain.'' Such explicit conversions \index{conversion} are generally
+required by the compiler.  Aside from checking that the matrix is
+symmetric, the code for this function essentially does nothing.  The
+{\frenchspacing\tt m :: \$} on line 28 coerces \axiom{m} to a
+quadratic form.  In fact, the quadratic form you created in step (3)
+of \downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
+\ugDomainsDemoNumber\ignore{ugDomainsDemo} is just the matrix you
+passed it in disguise!  Without seeing this definition, you would not
+know that.  Nor can you take advantage of this fact now that you do
+know!  When we try in the next step of
+\downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
+\ugDomainsDemoNumber\ignore{ugDomainsDemo} to regard \axiom{q} as a
+matrix by asking for \axiomFun{nrows}, the number of its rows, Axiom
+gives you an error message saying, in effect, ``Good try, but this
+won't work!''
+
+The definition for the \spadfunFrom{matrix}{QuadraticForm}
+function could hardly be simpler:
+it just returns its argument after explicitly
+\spadglossSee{coercing}{coerce} its argument to a matrix.
+Since the argument is already a matrix, this coercion does no computation.
+
+Within the context of a capsule, an object of \axiomSyntax{\$} is
+regarded both as a quadratic form {\it and} as a
+matrix.\footnote{In case each of \axiomSyntax{\$} and \axiom{Rep}
+have the same named operation available,
+the one from \axiom{\$} takes precedence.
+Thus, if you want the one from \axiomSyntax{Rep}, you must
+package call it using a \axiomSyntax{\$Rep} suffix.}
+This makes the definition of \axiom{q.v} easy---it
+just calls the \spadfunFrom{dot}{DirectProduct} product from
+\axiomType{DirectProduct} to perform the indicated operation.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsMultipleRepsTitle}{Multiple Representations}
+\newcommand{\ugDomainsMultipleRepsNumber}{13.7.}
+
+@
+\section{Multiple Representations}
+\label{ugDomainsMultipleRepsPage}
+\begin{itemize}
+\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
+page~\pageref{ugTypesUnionsPage}
+\end{itemize}
+\index{pages!ugDomainsMultipleRepsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsMultipleRepsPage}
+\index{ugDomainsMultipleRepsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsMultipleRepsPage}{13.7. Multiple Representations}
+\beginscroll
+%
+
+To write functions that implement the operations of a domain, you
+want to choose the most computationally efficient
+data structure to represent the elements of your domain.
+
+A classic problem in computer algebra is the optimal choice for an
+internal representation of polynomials.
+If you create a polynomial, say \texht{$3x^2+ 5$}{\axiom{3*x**2 + 5}}, how
+does Axiom hold this value internally?
+There are many ways.
+Axiom has nearly a dozen different representations of
+polynomials, one to suit almost any purpose.
+Algorithms for solving polynomial equations work most
+efficiently with polynomials represented one way, whereas those for
+factoring polynomials are most efficient using another.
+One often-used representation is  a list of terms, each term
+consisting of exponent-coefficient records written in the order
+of decreasing exponents.
+For example, the polynomial \texht{$3x^2+5$}{3*x**2+5} is
+%>> I changed the k's in next line to e's as I thought that was
+%>> clearer.
+represented by the list \axiom{[[e:2, c:3], [e:0, c:5]]}.
+
+What is the optimal data structure for a matrix?
+It depends on the application.
+For large sparse matrices, a linked-list structure of records
+holding only the non-zero elements may be optimal.
+If the elements can be defined by a simple formula
+\texht{$f(i,j)$}{\axiom{f(i,j)}}, then a compiled function for
+\axiom{f} may be optimal.
+Some programmers prefer to represent ordinary matrices as vectors
+of vectors.
+Others prefer to represent matrices by one big linear array where
+elements are accessed with linearly computable indexes.
+
+While all these simultaneous structures tend to be confusing,
+Axiom provides a helpful organizational tool for such a purpose:
+categories.
+\axiomType{PolynomialCategory}, for example, provides a uniform user
+interface across all polynomial types.
+Each kind of polynomial implements functions for
+all these operations, each in its own way.
+If you use only the top-level operations in
+\axiomType{PolynomialCategory} you usually do not care what kind
+of polynomial implementation is used.
+
+%>> I've often thought, though, that it would be nice to be
+%>> be able to use conditionals for representations.
+
+Within a given domain, however, you define (at most) one
+representation.\footnote{You can make that representation a
+\pspadtype{Union} type, however.  See
+\downlink{``\ugTypesUnionsTitle''}{ugTypesUnionsPage} in Section
+\ugTypesUnionsNumber\ignore{ugTypesUnions} for examples of unions.}
+If you want to have multiple representations (that is, several
+domains, each with its own representation), use a category to describe
+the {\tt Exports}, then define separate domains for each
+representation.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsAddDomainTitle}{Add Domain}
+\newcommand{\ugDomainsAddDomainNumber}{13.8.}
+
+@
+\section{Add Domain}
+\label{ugDomainsAddDomainPage}
+\begin{itemize}
+\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
+page~\pageref{ugDomainsDemoPage}
+\end{itemize}
+\index{pages!ugDomainsAddDomainPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsAddDomainPage}
+\index{ugDomainsAddDomainPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsAddDomainPage}{13.8. Add Domain}
+\beginscroll
+%
+
+The capsule part of {\tt Implementation} defines functions that
+implement the operations exported by the domain---usually only some of
+the operations.  In our demo in
+\downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
+\ugDomainsDemoNumber\ignore{ugDomainsDemo}, we asked for the value of
+\axiom{3*q-q+q}.  Where do the operations \axiomOp{*}, \axiomOp{+},
+and \axiomOp{-} come from?  There is no definition for them in the
+capsule!
+
+The {\tt Implementation} part of a definition can optionally specify
+an ``add-domain'' to the left of an {\tt add} \spadkey{add} (for
+\axiomType{QuadraticForm}, defines \axiomType{SquareMatrix(n,K)} is
+the add-domain).  The meaning of an add-domain is simply this: if the
+capsule part of the {\tt Implementation} does not supply a function
+for an operation, Axiom goes to the add-domain to find the function.
+So do \axiomOpFrom{*}{QuadraticForm}, \axiomOpFrom{+}{QuadraticForm}
+and \axiomOpFrom{-}{QuadraticForm} come from
+\axiomType{SquareMatrix(n,K)}?
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDefaultsTitle}{Defaults}
+\newcommand{\ugDomainsDefaultsNumber}{13.9.}
+
+@
+\section{Defaults}
+\label{ugDomainsDefaultsPage}
+\begin{itemize}
+\item ugPackagesPage \ref{ugPackagesPage} on
+page~\pageref{ugPackagesPage}
+\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
+page~\pageref{ugCategoriesDefaultsPage}
+\end{itemize}
+\index{pages!ugDomainsDefaultsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDefaultsPage}
+\index{ugDomainsDefaultsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDefaultsPage}{13.9. Defaults}
+\beginscroll
+%
+In \downlink{``\ugPackagesTitle''}{ugPackagesPage} in 
+Chapter \ugPackagesNumber\ignore{ugPackages}, we saw that 
+categories can provide
+default implementations for their operations.
+How and when are they used?
+When Axiom finds that \axiomType{QuadraticForm(2, Fraction Integer)} 
+does not implement the operations \axiomOp{*},
+\axiomOp{+}, and \axiomOp{-}, it goes to
+\axiomType{SquareMatrix(2,Fraction Integer)} to find it.
+As it turns out, \axiomType{SquareMatrix(2, Fraction Integer)} does
+not implement {\it any} of these operations!
+
+What does Axiom do then?  Here is its overall strategy.  First, Axiom
+looks for a function in the capsule for the domain.  If it is not
+there, Axiom looks in the add-domain for the operation.  If that
+fails, Axiom searches the add-domain of the add-domain, and so on.  If
+all those fail, it then searches the default packages for the
+categories of which the domain is a member.  In the case of
+\axiomType{QuadraticForm}, it searches \axiomType{AbelianGroup}, then
+its parents, grandparents, and so on.  If this fails, it then searches
+the default packages of the add-domain.  Whenever a function is found,
+the search stops immediately and the function is returned.  When all
+fails, the system calls \axiomFun{error} to report this unfortunate
+news to you.  To find out the actual order of constructors searched
+for \axiomType{QuadraticForm}, consult \Browse{}: from the
+\axiomType{QuadraticForm}, click on {\bf Cross Reference}, then on
+{\bf Lineage}.
+
+Let's apply this search strategy for our example \axiom{3*q-q+q}.  The
+scalar multiplication comes first.  Axiom finds a default
+implementation in \axiomType{AbelianGroup\&}.  Remember from
+\downlink{``\ugCategoriesDefaultsTitle''}{ugCategoriesDefaultsPage} in
+Section \ugCategoriesDefaultsNumber\ignore{ugCategoriesDefaults} that
+\axiomType{SemiGroup} provides a default definition for
+\texht{$x^n$}{x**n} by repeated squaring?  \axiomType{AbelianGroup}
+similarly provides a definition for \texht{$n x$}{n*x} by repeated
+doubling.
+
+But the search of the defaults for \axiomType{QuadraticForm} fails to
+find any \axiomOp{+} or \axiomOp{*} in the default packages for the
+ancestors of \axiomType{QuadraticForm}.  So it now searches among
+those for \axiomType{SquareMatrix}.  Category
+\axiomType{MatrixCategory}, which provides a uniform interface for all
+matrix domains, is a grandparent of \axiomType{SquareMatrix} and has a
+capsule defining many functions for matrices, including matrix
+addition, subtraction, and scalar multiplication.  The default package
+\axiomType{MatrixCategory\&} is where the functions for
+\axiomOpFrom{+}{QuadraticForm} and \spadfunFrom{-}{QuadraticForm} come
+from.
+
+You can use \Browse{} to discover where the operations for
+\axiomType{QuadraticForm} are implemented.  First, get the page
+describing \axiomType{QuadraticForm}.  With your mouse somewhere in
+this window, type a ``2'', press the \texht{\fbox{\bf Tab}}{{\bf Tab}}
+key, and then enter ``Fraction Integer'' to indicate that you want the
+domain \axiomType{QuadraticForm(2, Fraction Integer)}.  Now click on
+{\bf Operations} to get a table of operations and on \axiomOp{*} to
+get a page describing the \axiomOp{*} operation.  Finally, click on
+{\bf implementation} at the bottom.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsOriginsTitle}{Origins}
+\newcommand{\ugDomainsOriginsNumber}{13.10.}
+
+@
+\section{Origins}
+\label{ugDomainsOriginsPage}
+\index{pages!ugDomainsOriginsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsOriginsPage}
+\index{ugDomainsOriginsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsOriginsPage}{13.10. Origins}
+\beginscroll
+%
+
+Aside from the notion of where an operation is implemented,
+a useful notion is  the {\it origin} or ``home'' of an operation.
+When an operation (such as
+\spadfunFrom{quadraticForm}{QuadraticForm}) is explicitly exported by
+a domain (such as \axiomType{QuadraticForm}), you can say that the
+origin of that operation is that domain.
+If an operation is not explicitly exported from a domain, it is inherited
+from, and has as origin, the (closest) category that explicitly exports it.
+The operations \axiomOpFrom{+}{AbelianMonoid} and
+\axiomOpFrom{-}{AbelianMonoid} of \axiomType{QuadraticForm},
+for example, are inherited from \axiomType{AbelianMonoid}.
+As it turns out, \axiomType{AbelianMonoid} is the origin of virtually every
+\axiomOp{+} operation in Axiom!
+
+Again, you can use \Browse{} to discover the origins of
+operations.
+From the \Browse{} page on \axiomType{QuadraticForm}, click on {\bf
+Operations}, then on {\bf origins} at the bottom of the page.
+
+The origin of the operation is the {\it only} place where on-line
+documentation is given.
+However, you can re-export an operation to give it special
+documentation.
+Suppose you have just invented the world's fastest algorithm for
+inverting matrices using a particular internal representation for
+matrices.
+If your matrix domain just declares that it exports
+\axiomType{MatrixCategory}, it exports the \axiomFun{inverse}
+operation, but the documentation the user gets from \Browse{} is
+the standard one from \axiomType{MatrixCategory}.
+To give your version of \axiomFun{inverse} the attention it
+deserves, simply export the operation explicitly with new
+documentation.
+This redundancy gives \axiomFun{inverse} a new origin and tells
+\Browse{} to present your new documentation.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsShortFormsTitle}{Short Forms}
+\newcommand{\ugDomainsShortFormsNumber}{13.11.}
+
+@
+\section{Short Forms}
+\label{ugDomainsShortFormsPage}
+\index{pages!ugDomainsShortFormsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsShortFormsPage}
+\index{ugDomainsShortFormsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsShortFormsPage}{13.11. Short Forms}
+\beginscroll
+%
+In Axiom, a domain could be defined using only an add-domain
+and no capsule.
+Although we talk about rational numbers as quotients of integers,
+there is no type \pspadtype{RationalNumber} in Axiom.
+To create such a type, you could compile the following
+``short-form'' definition:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ RationalNumber()\ ==\ Fraction(Integer)}\newline
+\endImportant
+
+The {\tt Exports} part of this definition is missing and is taken
+to be equivalent to that of \axiomType{Fraction(Integer)}.
+Because of the add-domain philosophy, you get precisely
+what you want.
+The effect is to create a little stub of a domain.
+When a user asks to add two rational numbers, Axiom would
+ask \pspadtype{RationalNumber} for a function implementing this
+\axiomOp{+}.
+Since the domain has no capsule, the domain then immediately
+sends its request to \axiomType{Fraction (Integer)}.
+
+The short form definition for domains is used to
+define such domains as \axiomType{MultivariatePolynomial}:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ MultivariatePolynomial(vl:\ List\ Symbol,\ R:\ Ring)\ ==}\newline
+{\tt 2.\ \ \ \ \ \ SparseMultivariatePolynomial(R,}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ OrderedVariableList\ vl)}\newline
+\endImportant
+
+%% *********************************************************************
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsCliffordTitle}{Example 1: Clifford Algebra}
+\newcommand{\ugDomainsCliffordNumber}{13.12.}
+
+@
+\section{Example 1: Clifford Algebra}
+\label{ugDomainsCliffordPage}
+\begin{itemize}
+\item CliffordAlgebraXmpPage \ref{CliffordAlgebraXmpPage} on
+page~\pageref{CliffordAlgebraXmpPage}
+\end{itemize}
+\index{pages!ugDomainsCliffordPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsCliffordPage}
+\index{ugDomainsCliffordPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsCliffordPage}{13.12. Example 1: Clifford Algebra}
+\beginscroll
+%
+
+Now that we have \axiomType{QuadraticForm} available,
+let's put it to use.
+Given some quadratic form \smath{Q} described by an
+\smath{n} by \smath{n} matrix over a field \smath{K}, the domain
+\axiomType{CliffordAlgebra(n, K, Q)} defines a vector space of
+dimension \texht{$2^n$}{2**n} over \smath{K}.
+This is an interesting domain since complex numbers, quaternions,
+exterior algebras and spin algebras are all examples of Clifford
+algebras.
+
+The basic idea is this:
+the quadratic form \axiom{Q} defines a basis
+\texht{$e_1,e_2\ldots,e_n$}{e1,e2,...,en} for the
+vector space \texht{$K^n$}{K**n}---the direct product of \axiom{K}
+with itself \axiom{n} times.
+From this, the Clifford algebra generates a basis of
+\texht{$2^n$}{2**n} elements given by all the possible products
+of the \texht{$e_i$}{\axiom{ei}} in order without duplicates, that is,
+\texht{
+1,
+$e_1$,
+$e_2$,
+$e_1e_2$,
+$e_3$,
+$e_1e_3$,
+$e_2e_3$,
+$e_1e_2,e_3$}{1, e1, e2, e1*e2, e3, e1*e3, e2*e3, e1*e2*e3},
+and so on.
+
+The algebra is defined by the relations
+\begin{verbatim}
+ei*ei = Q(ei)
+ei*ej = -ej*ei,  i ^= j
+\end{verbatim}
+
+Now look at the snapshot of its definition given in Figure
+\ref{fig-clifalg}.
+Lines 9-10 show part of the definitions of the {\tt Exports}.
+A Clifford algebra over a field \axiom{K} is asserted to be a ring,
+an algebra over \axiom{K}, and a vector space over \axiom{K}.
+Its explicit exports include
+\axiom{e(n),} which returns the \eth{\axiom{n}} unit element.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ NNI\ ==>\ NonNegativeInteger}\newline
+{\tt 2.\ \ \ PI\ \ ==>\ PositiveInteger}\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ CliffordAlgebra(n,K,q):\ Exports\ ==\ Implementation\ where}\newline
+{\tt 5.\ \ \ \ \ \ \ n:\ PI}\newline
+{\tt 6.\ \ \ \ \ \ \ K:\ Field}\newline
+{\tt 7.\ \ \ \ \ \ \ q:\ QuadraticForm(n,\ K)}\newline
+{\tt 8.\ \ \ }\newline
+{\tt 9.\ \ \ \ \ \ \ Exports\ ==\ Join(Ring,Algebra(K),VectorSpace(K))\ with}\newline
+{\tt 10.\ \ \ \ \ \ \ \ e:\ PI\ ->\ \$}\newline
+{\tt 11.\ \ \ \ \ \ \ \ \ \ \ \ ...\ \ \ \ \ \ \ \ }\newline
+{\tt 12.\ \ }\newline
+{\tt 13.\ \ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 14.\ \ \ \ \ \ \ \ Qeelist\ :=\ \ }\newline
+{\tt 15.\ \ \ \ \ \ \ \ \ \ [q.unitVector(i::PI)\ for\ i\ in\ 1..n]}\newline
+{\tt 16.\ \ \ \ \ \ \ \ dim\ \ \ \ \ :=\ \ 2**n}\newline
+{\tt 17.\ \ \ \ \ \ \ \ Rep\ \ \ \ \ :=\ PrimitiveArray\ K}\newline
+{\tt 18.\ \ \ \ \ \ \ \ New\ ==>\ new(dim,\ 0\$K)\$Rep}\newline
+{\tt 19.\ \ \ \ \ \ \ \ x\ +\ y\ ==}\newline
+{\tt 20.\ \ \ \ \ \ \ \ \ \ z\ :=\ New}\newline
+{\tt 21.\ \ \ \ \ \ \ \ \ \ for\ i\ in\ 0..dim-1\ repeat\ z.i\ :=\ x.i\ +\ y.i}\newline
+{\tt 22.\ \ \ \ \ \ \ \ \ \ z}\newline
+{\tt 23.\ \ \ \ \ \ \ \ addMonomProd:\ (K,\ NNI,\ K,\ NNI,\ \$)\ ->\ \$}\newline
+{\tt 24.\ \ \ \ \ \ \ \ addMonomProd(c1,\ b1,\ c2,\ b2,\ z)\ ==\ \ ...}\newline
+{\tt 25.\ \ \ \ \ \ \ \ x\ *\ y\ ==}\newline
+{\tt 26.\ \ \ \ \ \ \ \ \ \ z\ :=\ New}\newline
+{\tt 27.\ \ \ \ \ \ \ \ \ \ for\ ix\ in\ 0..dim-1\ repeat}\newline
+{\tt 28.\ \ \ \ \ \ \ \ \ \ \ \ if\ x.ix\ \notequal{}\ 0\ then\ for\ iy\ in\ 0..dim-1\ repeat}\newline
+{\tt 29.\ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ y.iy\ \notequal{}\ 0}\newline
+{\tt 30.\ \ \ \ \ \ \ \ \ \ \ \ \ \ then\ addMonomProd(x.ix,ix,y.iy,iy,z)}\newline
+{\tt 31.\ \ \ \ \ \ \ \ \ \ \ \ z}\newline
+{\tt 32.\ \ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
+\caption{Part of the \protect\axiomType{CliffordAlgebra} domain.}\label{fig-clifalg}
+\endImportant
+
+The {\tt Implementation} part begins by defining a local variable
+\axiom{Qeelist} to hold the list of all \axiom{q.v} where \axiom{v}
+runs over the unit vectors from 1 to the dimension \axiom{n}.
+Another local variable \axiom{dim} is set to \texht{$2^n$}{2**n},
+computed once and for all.
+The representation for the domain is
+\axiomType{PrimitiveArray(K)},
+which is a basic array of elements from domain \axiom{K}.
+Line 18 defines \axiom{New} as shorthand for the more lengthy
+expression \axiom{new(dim, 0\$K)\$Rep}, which computes a primitive
+array of length \texht{$2^n$}{2**n} filled with \axiom{0}'s from
+domain \axiom{K}.
+
+Lines 19-22 define the sum of two elements \axiom{x} and \axiom{y}
+straightforwardly.
+First, a new array of all \axiom{0}'s is created, then filled with
+the sum of the corresponding elements.
+Indexing for primitive arrays starts at 0.
+The definition of the product of \axiom{x} and \axiom{y} first requires
+the definition of a local function \userfun{addMonomProd}.
+Axiom knows it is local since it is not an exported function.
+The types of all local functions must be declared.
+
+For a demonstration of \axiomType{CliffordAlgebra}, see
+\downlink{`CliffordAlgebra'}{CliffordAlgebraXmpPage}\ignore{CliffordAlgebra}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomsinsDatabaseTitle}{Example 2: Building A Query Facility}
+\newcommand{\ugDomsinsDatabaseNumber}{13.13.}
+
+@
+\section{Example 2: Building A Query Facility}
+\label{ugDomsinsDatabasePage}
+\begin{itemize}
+\item ugDomainsQueryLanguagePage \ref{ugDomainsQueryLanguagePage} on
+page~\pageref{ugDomainsQueryLanguagePage}
+\item ugDomainsDatabaseConstructorPage \ref{ugDomainsDatabaseConstructorPage} on
+page~\pageref{ugDomainsDatabaseConstructorPage}
+\item ugDomainsQueryEquationsPage \ref{ugDomainsQueryEquationsPage} on
+page~\pageref{ugDomainsQueryEquationsPage}
+\item ugDomainsDataListsPage \ref{ugDomainsDataListsPage} on
+page~\pageref{ugDomainsDataListsPage}
+\item ugDomainsDatabasePage \ref{ugDomainsDatabasePage} on
+page~\pageref{ugDomainsDatabasePage}
+\item ugDomainsCreatingPage \ref{ugDomainsCreatingPage} on
+page~\pageref{ugDomainsCreatingPage}
+\item ugDomainsPuttingPage \ref{ugDomainsPuttingPage} on
+page~\pageref{ugDomainsPuttingPage}
+\item ugDomainsExamplesPage \ref{ugDomainsExamplesPage} on
+page~\pageref{ugDomainsExamplesPage}
+\end{itemize}
+\index{pages!ugDomsinsDatabasePage!ug13.ht}
+\index{ug13.ht!pages!ugDomsinsDatabasePage}
+\index{ugDomsinsDatabasePage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomsinsDatabasePage}
+{13.13. Example 2: Building A Query Facility}
+\beginscroll
+%
+We now turn to an entirely different kind of application,
+building a query language for a database.
+
+Here is the practical problem to solve.
+The \Browse{} facility of Axiom has a
+database for all operations and constructors which is
+stored on disk and accessed by \HyperName{}.
+For our purposes here, we regard each line of this file as having
+eight fields:
+{\tt class, name, type, nargs, exposed, kind, origin,} and {\tt condition.}
+Here is an example entry:
+
+\begin{verbatim}
+o`determinant`$->R`1`x`d`Matrix(R)`has(R,commutative("*"))
+\end{verbatim}
+
+In English, the entry means:
+\texht{\begin{quotation}}{\newline}
+\texht{\raggedright}{}
+The operation \axiomFun{determinant}: \spadsig{\$}{R} with {\it 1} argument, is
+{\it exposed} and is exported by {\it domain} \axiomType{Matrix(R)}
+if {\tt R has commutative("*")}.
+\texht{\end{quotation}}{\newline}
+
+Our task is to create a little query language that allows us
+to get useful information from this database.
+
+\beginmenu
+    \menudownlink{{13.13.1. A Little Query Language}}
+{ugDomainsQueryLanguagePage}
+    \menudownlink{{13.13.2. The Database Constructor}}
+{ugDomainsDatabaseConstructorPage}
+    \menudownlink{{13.13.3. Query Equations}}{ugDomainsQueryEquationsPage}
+    \menudownlink{{13.13.4. DataLists}}{ugDomainsDataListsPage}
+    \menudownlink{{13.13.5. Index Cards}}{ugDomainsDatabasePage}
+    \menudownlink{{13.13.6. Creating a Database}}{ugDomainsCreatingPage}
+    \menudownlink{{13.13.7. Putting It All Together}}{ugDomainsPuttingPage}
+    \menudownlink{{13.13.8. Example Queries}}{ugDomainsExamplesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsQueryLanguageTitle}{A Little Query Language}
+\newcommand{\ugDomainsQueryLanguageNumber}{13.13.1.}
+
+@
+\section{A Little Query Language}
+\label{ugDomainsQueryLanguagePage}
+\index{pages!ugDomainsQueryLanguagePage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsQueryLanguagePage}
+\index{ugDomainsQueryLanguagePage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsQueryLanguagePage}{13.13.1. A Little Query Language}
+\beginscroll
+
+First we design a simple language for accessing information from
+the database.
+We have the following simple model in mind for its design.
+Think of the database as a box of index cards.
+There is only one search operation---it
+takes the name of a field and a predicate
+(a boolean-valued function) defined on the fields of the
+index cards.
+When applied, the search operation goes through the entire box
+selecting only those index cards for which the predicate is true.
+The result of a search is a new box of index cards.
+This process can be repeated again and again.
+
+The predicates all have a particularly simple form: {\it symbol}
+{\tt =} {\it pattern}, where {\it symbol} designates one of the
+fields, and {\it pattern} is a ``search string''---a string
+that may contain a ``{\tt *}'' as a
+wildcard.
+Wildcards match any substring, including the empty string.
+Thus the pattern {\tt "*ma*t"} matches
+{\tt "mat", "doormat"} and {\tt "smart".}
+
+To illustrate how queries are given, we give you a sneak preview
+of the facility we are about to create.
+
+\xtc{
+Extract the database of all Axiom operations.
+}{
+\spadpaste{ops := getDatabase("o")\bound{o1}}
+}
+\xtc{
+How many exposed three-argument \axiomFun{map} operations involving streams?
+}{
+\spadpaste{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2}\free{o1}}
+}
+
+As usual, the arguments of \axiomFun{elt} (\axiomSyntax{.})
+associate to the left.
+The first \axiomFun{elt} produces the set of all operations with
+name {\tt map}.
+The second \axiomFun{elt} produces the set of all map operations
+with three arguments.
+The third \axiomFun{elt} produces the set of all three-argument map
+operations having a type mentioning \axiomType{Stream}.
+
+Another thing we'd like to do is to extract one field from each of
+the index cards in the box and look at the result.
+Here is an example of that kind of request.
+
+\xtc{
+What constructors explicitly export a \axiomFun{determinant} operation?
+}{
+\spadpaste{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1}}
+}
+
+The first \axiomFun{elt} produces the set of all index cards with
+name {\tt determinant}.
+The second \axiomFun{elt} extracts the {\tt origin} component from
+each index card. Each origin component
+is the name of a constructor which directly
+exports the operation represented by the index card.
+Extracting a component from each index card produces what we call
+a {\it datalist}.
+The third \axiomFun{elt}, {\tt sort}, causes the datalist of
+origins to be sorted in alphabetic
+order.
+The fourth, {\tt unique}, causes duplicates to be removed.
+
+Before giving you a more extensive demo of this facility,
+we now build the necessary domains and packages to implement it.
+%We will introduce a few of our minor conveniences.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDatabaseConstructorTitle}{The Database Constructor}
+\newcommand{\ugDomainsDatabaseConstructorNumber}{13.13.2.}
+
+@
+\section{The Database Constructor}
+\label{ugDomainsDatabaseConstructorPage}
+\index{pages!ugDomainsDatabaseConstructorPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDatabaseConstructorPage}
+\index{ugDomainsDatabaseConstructorPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDatabaseConstructorPage}
+{13.13.2. The Database Constructor}
+\beginscroll
+
+We work from the top down. First, we define a database,
+our box of index cards, as an abstract datatype.
+For sake of illustration and generality,
+we assume that an index card is some type \axiom{S}, and
+that a database is a box of objects of type \axiom{S}.
+Here is the Axiom program defining the \pspadtype{Database}
+domain.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ PI\ ==>\ PositiveInteger}\newline
+{\tt 2.\ \ \ Database(S):\ Exports\ ==\ Implementation\ where}\newline
+{\tt 3.\ \ \ \ \ S:\ Object\ with\ }\newline
+{\tt 4.\ \ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ String}\newline
+{\tt 5.\ \ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
+{\tt 6.\ \ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
+{\tt 7.\ \ \ }\newline
+{\tt 8.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 9.\ \ \ \ \ \ \ elt:\ (\$,QueryEquation)\ ->\ \$}\newline
+{\tt 10.\ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ DataList\ String}\newline
+{\tt 11.\ \ \ \ \ \ "+":\ (\$,\$)\ ->\ \$}\newline
+{\tt 12.\ \ \ \ \ \ "-":\ (\$,\$)\ ->\ \$}\newline
+{\tt 13.\ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
+{\tt 14.\ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
+{\tt 15.\ \ \ \ \ \ fullDisplay:\ (\$,PI,PI)\ ->\ Void}\newline
+{\tt 16.\ \ \ \ \ \ coerce:\ \$\ ->\ OutputForm}\newline
+{\tt 17.\ \ \ \ Implementation\ ==\ add}\newline
+{\tt 18.\ \ \ \ \ \ \ \ ...}\newline
+\endImportant
+
+The domain constructor takes a parameter \axiom{S}, which
+stands for the class of index cards.
+We describe an index card later.
+Here think of an index card as a string which has
+the eight fields mentioned above.
+
+First, we tell Axiom what operations we are going to require
+from index cards.
+We need an \axiomFun{elt} to extract the contents of a field
+(such as {\tt name} and {\tt type}) as a string.
+For example,
+\axiom{c.name} returns a string that is the content of the
+\axiom{name} field on the index card \axiom{c}.
+We need to display an index card in two ways:
+\pspadfun{display} shows only the name and type of an
+operation;
+\pspadfun{fullDisplay} displays all fields.
+The display operations return no useful information and thus have
+return type \axiomType{Void}.
+
+Next, we tell Axiom what operations the user can apply
+to the database.
+This part defines our little query language.
+The most important operation is
+{\frenchspacing\tt db . field = pattern} which
+returns a new database, consisting of all index
+cards of {\tt db} such that the \axiom{field} part of the index
+card is matched by the string pattern called \axiom{pattern}.
+The expression {\tt field = pattern} is an object of type
+\axiomType{QueryEquation} (defined in the next section).
+
+Another \axiomFun{elt} is needed to produce a \pspadtype{DataList}
+object.
+Operation \axiomOp{+} is to merge two databases together;
+\axiomOp{-} is used to subtract away common entries in a second
+database from an initial database.
+There are three display functions.
+The \pspadfun{fullDisplay} function has two versions: one
+that prints all the records, the other that prints only a fixed
+number of records.
+A \axiomFun{coerce} to \axiomType{OutputForm} creates a display
+object.
+
+The {\tt Implementation} part of \axiomType{Database} is straightforward.
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 2.\ \ \ \ \ \ \ s:\ Symbol}\newline
+{\tt 3.\ \ \ \ \ \ \ Rep\ :=\ List\ S}\newline
+{\tt 4.\ \ \ \ \ \ \ elt(db,equation)\ ==\ ...}\newline
+{\tt 5.\ \ \ \ \ \ \ elt(db,key)\ ==\ [x.key\ for\ x\ in\ db]::DataList(String)}\newline
+{\tt 6.\ \ \ \ \ \ \ display(db)\ ==\ \ for\ x\ in\ db\ repeat\ display\ x}\newline
+{\tt 7.\ \ \ \ \ \ \ fullDisplay(db)\ ==\ for\ x\ in\ db\ repeat\ fullDisplay\ x}\newline
+{\tt 8.\ \ \ \ \ \ \ fullDisplay(db,\ n,\ m)\ ==\ for\ x\ in\ db\ for\ i\ in\ 1..m}\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ repeat}\newline
+{\tt 10.\ \ \ \ \ \ \ \ \ \ if\ i\ >=\ n\ then\ fullDisplay\ x}\newline
+{\tt 11.\ \ \ \ \ \ x+y\ ==\ removeDuplicates!\ merge(x,y)}\newline
+{\tt 12.\ \ \ \ \ \ x-y\ ==\ mergeDifference(copy(x::Rep),}\newline
+{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y::Rep)\$MergeThing(S)}\newline
+{\tt 14.\ \ \ \ \ \ coerce(db):\ OutputForm\ ==\ (\#db)::\ OutputForm}\newline
+\endImportant
+
+The database is represented by a list of elements of \axiom{S} (index cards).
+We leave the definition of the first \axiomFun{elt} operation
+(on line 4) until the next section.
+The second \axiomFun{elt} collects all the strings with field name
+{\it key} into a list.
+The \axiomFun{display} function and first \axiomFun{fullDisplay} function
+simply call the corresponding functions from \axiom{S}.
+The second \axiomFun{fullDisplay} function provides an efficient way of
+printing out a portion of a large list.
+The \axiomOp{+} is defined by using the existing
+\spadfunFrom{merge}{List} operation defined on lists, then
+removing duplicates from the result.
+The \axiomOp{-} operation requires writing a corresponding
+subtraction operation.
+A package \axiomType{MergeThing} (not shown) provides this.
+
+The \axiomFun{coerce} function converts the database to an
+\axiomType{OutputForm} by computing the number of index cards.
+This is a good example of the independence of
+the representation of an Axiom object from how it presents
+itself to the user. We usually do not want to look at a database---but
+do care how many ``hits'' we get for a given query.
+So we define the output representation of a database to be simply
+the number of index cards our query finds.
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsQueryEquationsTitle}{Query Equations}
+\newcommand{\ugDomainsQueryEquationsNumber}{13.13.3.}
+
+@
+\section{Query Equations}
+\label{ugDomainsQueryEquationsPage}
+\index{pages!ugDomainsQueryEquationsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsQueryEquationsPage}
+\index{ugDomainsQueryEquationsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsQueryEquationsPage}{13.13.3. Query Equations}
+\beginscroll
+
+The predicate for our search is given by an object of type
+\pspadtype{QueryEquation}.
+Axiom does not have such an object yet so we
+have to invent it.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ QueryEquation():\ Exports\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ equation:\ (Symbol,\ String)\ ->\ \$}\newline
+{\tt 4.\ \ \ \ \ \ \ variable:\ \$\ ->\ Symbol}\newline
+{\tt 5.\ \ \ \ \ \ \ value:\\ \\ \\ \\ \$\ ->\ String}\newline
+{\tt 6.\ \ \ }\newline
+{\tt 7.\ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 8.\ \ \ \ \ \ \ Rep\ :=\ Record(var:Symbol,\ val:String)}\newline
+{\tt 9.\ \ \ \ \ \ \ equation(x,\ s)\ ==\ [x,\ s]}\newline
+{\tt 10.\ \ \ \ \ \ variable\ q\ ==\ q.var}\newline
+{\tt 11.\ \ \ \ \ \ value\\ \\ \\ \\ q\ ==\ q.val}\newline
+\endImportant
+
+Axiom converts an input expression of the form
+\axiom{{\it a} = {\it b}} to \axiom{equation({\it a, b})}.
+Our equations always have a symbol on the left and a string
+on the right.
+The {\tt Exports} part thus specifies an operation
+\axiomFun{equation} to create a query equation, and
+\pspadfun{variable} and \pspadfun{value} to select the left- and
+right-hand sides.
+The {\tt Implementation} part uses \pspadtype{Record} for a
+space-efficient representation of an equation.
+
+Here is the missing definition for the \axiomFun{elt} function of
+\pspadtype{Database} in the last section:
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ \ \ \ \ elt(db,eq)\ ==}\newline
+{\tt 2.\ \ \ \ \ \ \ \ \ field\\ \ :=\ variable\ eq}\newline
+{\tt 3.\ \ \ \ \ \ \ \ \ value\ :=\ value\ eq}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ [x\ for\ x\ in\ db\ |\ matches?(value,x.field)]}\newline
+\endImportant
+
+Recall that a database is represented by a list.
+Line 4 simply runs over that list collecting all elements
+such that the pattern (that is, \axiom{value})
+matches the selected field of the element.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDataListsTitle}{DataLists}
+\newcommand{\ugDomainsDataListsNumber}{13.13.4.}
+
+@
+\section{DataLists}
+\label{ugDomainsDataListsPage}
+\index{pages!ugDomainsDataListsPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDataListsPage}
+\index{ugDomainsDataListsPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDataListsPage}{13.13.4. DataLists}
+\beginscroll
+
+Type \pspadtype{DataList} is a new type invented to hold the result
+of selecting one field from each of the index cards in the box.
+It is useful to make datalists extensions of lists---lists that
+have special \axiomFun{elt} operations defined on them for
+sorting and removing duplicates.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ DataList(S:OrderedSet)\ :\ Exports\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ Exports\ ==\ ListAggregate(S)\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ elt:\ (\$,"unique")\ ->\ \$}\newline
+{\tt 4.\ \ \ \ \ \ \ elt:\ (\$,"sort")\ ->\ \$}\newline
+{\tt 5.\ \ \ \ \ \ \ elt:\ (\$,"count")\ ->\ NonNegativeInteger}\newline
+{\tt 6.\ \ \ \ \ \ \ coerce:\ List\ S\ ->\ \$}\newline
+{\tt 7.\ \ \ }\newline
+{\tt 8.\ \ \ \ \ Implementation\ ==\ \ List(S)\ add}\newline
+{\tt 9.\ \ \ \ \ \ \ Rep\ :=\ List\ S}\newline
+{\tt 10.\ \ \ \ \ \ elt(x,"unique")\ ==\ removeDuplicates(x)}\newline
+{\tt 11.\ \ \ \ \ \ elt(x,"sort")\ ==\ sort(x)}\newline
+{\tt 12.\ \ \ \ \ \ elt(x,"count")\ ==\ \#x}\newline
+{\tt 13.\ \ \ \ \ \ coerce(x:List\ S)\ ==\ x\ ::\ \$}\newline
+\endImportant
+
+The {\tt Exports} part asserts that datalists belong to the
+category \axiomType{ListAggregate}.
+Therefore, you can use all the usual list operations on datalists,
+such as \spadfunFrom{first}{List}, \spadfunFrom{rest}{List}, and
+\spadfunFrom{concat}{List}.
+In addition, datalists have four explicit operations.
+Besides the three \axiomFun{elt} operations, there is a
+\axiomFun{coerce} operation that creates datalists from lists.
+
+The {\tt Implementation} part needs only to define four functions.
+All the rest are obtained from \axiomType{List(S)}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsDatabaseTitle}{Index Cards}
+\newcommand{\ugDomainsDatabaseNumber}{13.13.5.}
+
+@
+\section{Index Cards}
+\label{ugDomainsDatabasePage}
+\index{pages!ugDomainsDatabasePage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsDatabasePage}
+\index{ugDomainsDatabasePage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsDatabasePage}{13.13.5. Index Cards}
+\beginscroll
+
+An index card comes from a file as one long string.
+We define functions that extract substrings from the long
+string.
+Each field has a name that
+is passed as a second argument to \axiomFun{elt}.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ IndexCard()\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ String}\newline
+{\tt 4.\ \ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
+{\tt 5.\ \ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
+{\tt 6.\ \ \ \ \ \ \ coerce:\ String\ ->\ \$}\newline
+{\tt 7.\ \ \ \ \ Implementation\ ==\ String\ add\ ...}\newline
+\endImportant
+
+We leave the {\tt Implementation} part to the reader.
+All operations involve straightforward string manipulations.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsCreatingTitle}{Creating a Database}
+\newcommand{\ugDomainsCreatingNumber}{13.13.6.}
+
+@
+\section{Creating a Database}
+\label{ugDomainsCreatingPage}
+\index{pages!ugDomainsCreatingPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsCreatingPage}
+\index{ugDomainsCreatingPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsCreatingPage}{13.13.6. Creating a Database}
+\beginscroll
+
+We must not forget one important operation: one that builds the database in the
+first place!
+We'll name it \pspadfun{getDatabase} and put it in a package.
+This function is implemented by calling the \Lisp{} function
+\axiom{getBrowseDatabase(s)} to get appropriate information from
+\Browse{}.
+This operation takes a string indicating which lines you
+want from the database: \axiom{"o"} gives you all operation
+lines, and \axiom{"k"}, all constructor lines.
+Similarly, \axiom{"c"}, \axiom{"d"}, and \axiom{"p"} give
+you all category, domain and package lines respectively.
+%
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ OperationsQuery():\ Exports\ ==\ Implementation\ where}\newline
+{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
+{\tt 3.\ \ \ \ \ \ \ getDatabase:\ String\ ->\ Database(IndexCard)}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ \ \ Implementation\ ==\ add}\newline
+{\tt 6.\ \ \ \ \ \ \ getDatabase(s)\ ==\ getBrowseDatabase(s)\$Lisp}\newline
+\endImportant
+
+We do not bother creating a special name for databases of index
+cards.
+\pspadtype{Database (IndexCard)} will do.
+Notice that we used the package \pspadtype{OperationsQuery} to
+create, in effect,
+a new kind of domain: \pspadtype{Database(IndexCard)}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsPuttingTitle}{Putting It All Together}
+\newcommand{\ugDomainsPuttingNumber}{13.13.7.}
+
+@
+\section{Putting It All Together}
+\label{ugDomainsPuttingPage}
+\index{pages!ugDomainsPuttingPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsPuttingPage}
+\index{ugDomainsPuttingPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsPuttingPage}{13.13.7. Putting It All Together}
+\beginscroll
+
+To create the database facility, you put all these constructors
+into one file.\footnote{You could use separate files, but we
+are putting them all together because, organizationally, that is
+the logical thing to do.}
+At the top of the file put \spadcmd{)abbrev} commands, giving the
+constructor abbreviations you created.
+
+\beginImportant
+  
+\noindent
+{\tt 1.\ \ \ )abbrev\ domain\ \ ICARD\ \ \ IndexCard}\newline
+{\tt 2.\ \ \ )abbrev\ domain\ \ QEQUAT\ \ QueryEquation}\newline
+{\tt 3.\ \ \ )abbrev\ domain\ \ MTHING\ \ MergeThing}\newline
+{\tt 4.\ \ \ )abbrev\ domain\ \ DLIST\ \ \ DataList}\newline
+{\tt 5.\ \ \ )abbrev\ domain\ \ DBASE\ \ \ Database}\newline
+{\tt 6.\ \ \ )abbrev\ package\ OPQUERY\ OperationsQuery}\newline
+\endImportant
+
+With all this in {\bf alql.spad}, for example, compile it using
+\begin{verbatim}
+)compile alql
+\end{verbatim}
+and then load each of the constructors:
+\begin{verbatim}
+)load ICARD QEQUAT MTHING DLIST DBASE OPQUERY
+\end{verbatim}
+You are ready to try some sample queries.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug13.ht>>=
+\newcommand{\ugDomainsExamplesTitle}{Example Queries}
+\newcommand{\ugDomainsExamplesNumber}{13.13.8.}
+
+@
+\section{Example Queries}
+\label{ugDomainsExamplesPage}
+\index{pages!ugDomainsExamplesPage!ug13.ht}
+\index{ug13.ht!pages!ugDomainsExamplesPage}
+\index{ugDomainsExamplesPage!ug13.ht!pages}
+<<ug13.ht>>=
+\begin{page}{ugDomainsExamplesPage}{13.13.8. Example Queries}
+\beginscroll
+
+Our first set of queries give some statistics on constructors in
+the current Axiom system.
+
+\xtc{
+How many constructors does Axiom have?
+}{
+\spadpaste{ks := getDatabase "k"\bound{q1}}
+}
+\xtc{
+Break this down into the number of categories, domains, and packages.
+}{
+\spadpaste{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3}\free{q1}}
+}
+\xtc{
+What are all the domain constructors that take no parameters?
+}{
+\spadpaste{elt(ks.(kind="d").(nargs="0"),name)\bound{q4}\free{q1}}
+}
+\xtc{
+How many constructors have ``Matrix'' in their name?
+}{
+\spadpaste{mk := ks.(name="*Matrix*")\bound{q5}\free{q1}}
+}
+\xtc{
+What are the names of those that are domains?
+}{
+\spadpaste{elt(mk.(kind="d"),name)\bound{q6}\free{q5}}
+}
+\xtc{
+How many operations are there in the library?
+}{
+\spadpaste{o := getDatabase "o"\bound{o1}}
+}
+\xtc{
+Break this down into categories, domains, and packages.
+}{
+\spadpaste{[o.(kind=k) for k in ["c","d","p"]]\free{o1}}
+}
+
+The query language is helpful in getting information about a
+particular operation you might like to apply.
+While this information can be obtained with
+\Browse{}, the use of the query database gives you data that you
+can manipulate in the workspace.
+
+\xtc{
+How many operations have ``eigen'' in the name?
+}{
+\spadpaste{eigens := o.(name="*eigen*")\bound{eigens}\free{o1}}
+}
+\xtc{
+What are their names?
+}{
+\spadpaste{elt(eigens,name)\free{eigens}}
+}
+\xtc{
+Where do they come from?
+}{
+\spadpaste{elt(elt(elt(eigens,origin),sort),unique) \free{eigens}}
+}
+
+The operations \axiomOp{+} and \axiomOp{-} are useful for
+constructing small databases and combining them.
+However, remember that the only matching you can do is string
+matching.
+Thus a pattern such as {\tt "*Matrix*"} on the type field
+matches
+any type containing \axiomType{Matrix}, \axiomType{MatrixCategory},
+\axiomType{SquareMatrix}, and so on.
+
+\xtc{
+How many operations mention ``Matrix'' in their type?
+}{
+\spadpaste{tm := o.(type="*Matrix*")\bound{x10}\free{o1}}
+}
+\xtc{
+How many operations come from constructors with ``Matrix'' in
+their name?
+}{
+\spadpaste{fm := o.(origin="*Matrix*")\bound{x11}\free{o1}}
+}
+\xtc{
+How many operations are in \axiom{fm} but not in \axiom{tm}?
+}{
+\spadpaste{fm-tm \bound{x12}\free{x10 x11}}
+}
+\xtc{
+Display the operations that both mention ``Matrix'' in their type
+and come from a constructor having ``Matrix'' in their name.
+}{
+\spadpaste{fullDisplay(fm-\%) \bound{x13}\free{x12}}
+}
+\xtc{
+How many operations involve matrices?
+}{
+\spadpaste{m := tm+fm \bound{x14}\free{x10 x11}}
+}
+\xtc{
+Display 4 of them.
+}{
+\spadpaste{fullDisplay(m, 202, 205) \free{x14}}
+}
+\xtc{
+How many distinct names of operations involving matrices are there?
+}{
+\spadpaste{elt(elt(elt(m,name),unique),count) \free{x14}}
+}
+
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 14 (ug14.ht)}
+<<ug14.ht>>=
+\newcommand{\ugBrowseTitle}{Browse}
+\newcommand{\ugBrowseNumber}{14.}
+
+@
+\section{Browse}
+\label{ugBrowsePage}
+\begin{itemize}
+\item ugBrowseStartPage \ref{ugBrowseStartPage} on
+page~\pageref{ugBrowseStartPage}
+\item ugBrowseDomainPage \ref{ugBrowseDomainPage} on
+page~\pageref{ugBrowseDomainPage}
+\item ugBrowseMiscellaneousFeaturesPage \ref{ugBrowseMiscellaneousFeaturesPage} on
+page~\pageref{ugBrowseMiscellaneousFeaturesPage}
+\end{itemize}
+\index{pages!ugBrowsePage!ug14.ht}
+\index{ug14.ht!pages!ugBrowsePage}
+\index{ugBrowsePage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowsePage}{14. Browse}
+\beginscroll
+
+This chapter discusses the \Browse{}
+component of \HyperName{}.
+We suggest you invoke Axiom and work through this
+chapter, section by section, following our examples to gain some
+familiarity with \Browse{}.
+
+\beginmenu
+    \menudownlink{{14.1. The Front Page: Searching the Library}}
+{ugBrowseStartPage}
+    \menudownlink{{14.2. The Constructor Page}}{ugBrowseDomainPage}
+    \menudownlink{{14.3. Miscellaneous Features of Browse}}
+{ugBrowseMiscellaneousFeaturesPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseStartTitle}{The Front Page: Searching the Library}
+\newcommand{\ugBrowseStartNumber}{14.1.}
+
+@
+\section{The Front Page: Searching the Library}
+\label{ugBrowseStartPage}
+\begin{itemize}
+\item ugBrowseCapitalizationConventionPage 
+\ref{ugBrowseCapitalizationConventionPage} on
+page~\pageref{ugBrowseCapitalizationConventionPage}
+\item ugBrowseDomainPage \ref{ugBrowseDomainPage} on
+page~\pageref{ugBrowseDomainPage}
+\item ugBrowseViewsOfConstructorsPage \ref{ugBrowseViewsOfConstructorsPage} on
+page~\pageref{ugBrowseViewsOfConstructorsPage}
+\item ugBrowseViewsOfOperationsPage \ref{ugBrowseViewsOfOperationsPage} on
+page~\pageref{ugBrowseViewsOfOperationsPage}
+\end{itemize}
+\index{pages!ugBrowseStartPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseStartPage}
+\index{ugBrowseStartPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseStartPage}{14.1. The Front Page: Searching the Library}
+\beginscroll
+To enter \Browse{}, click on {\bf Browse} on the top level page
+of \HyperName{} to get the {\it front page} of \Browse{}.
+%
+%324pt is 4.5",180pt is 2.5",432pt is 6"=textwidth,54=(432-324)/2
+%ps files are 4.5"x2.5" except source 4.5"x2.5"
+%
+
+To use this page, you first enter a \spadgloss{search string} into
+the input area at the top, then click on one of the buttons below.
+We show the use of each of the buttons by example.
+
+\subsubsection{Constructors}
+
+First enter the search string {\tt Matrix} into the input area and
+click on {\bf Constructors}.  What you get is the {\it constructor
+page} for \axiomType{Matrix}.  We show and describe this page in
+detail in \downlink{``\ugBrowseDomainTitle''}{ugBrowseDomainPage} in
+Section \ugBrowseDomainNumber\ignore{ugBrowseDomain}.  By convention,
+Axiom does a case-insensitive search for a match.  Thus {\tt matrix}
+is just as good as {\tt Matrix}, has the same effect as {\tt MaTrix},
+and so on.  We recommend that you generally use small letters for
+names however.  A search string with only capital letters has a
+special meaning (see
+\downlink{``\ugBrowseCapitalizationConventionTitle''}
+{ugBrowseCapitalizationConventionPage}
+in Section
+\ugBrowseCapitalizationConventionNumber
+\ignore{ugBrowseCapitalizationConvention}).
+
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+Use the symbol ``{\tt *}'' in search strings as a \spadgloss{wild
+card}.
+A wild card matches any substring, including the empty string.
+For example, enter the search string {\tt *matrix*} into the input
+area and click on {\bf Constructors}.\footnote{To get only
+categories, domains, or packages, rather than all constructors,
+you can click on the corresponding button to the right of {\bf
+Constructors}.}
+What you get is a table of all constructors whose names contain
+the string ``{\tt matrix}.''
+
+All constructors containing the string are listed, whether
+\spadglossSee{exposed}{expose} or \spadglossSee{unexposed}{expose}.
+You can hide the names of the unexposed constructors by clicking on
+the {\it *=}{\bf unexposed} button in the {\it Views} panel at the
+bottom of the window.  (The button will change to {\bf exposed} {\it
+only}.)
+
+One of the names in this table is \axiomType{Matrix}.  Click on
+\axiomType{Matrix}.  What you get is again the constructor page for
+\axiomType{Matrix}.  As you see, \Browse{} gives you a large network
+of information in which there are many ways to reach the same pages.
+
+Again click on the \UpBitmap{} to return to the table of constructors
+whose names contain {\tt matrix}.  Below the table is a {\it Views}
+panel.  This panel contains buttons that let you view constructors in
+different ways.  To learn about views of constructors, skip to
+\downlink{``\ugBrowseViewsOfConstructorsTitle''}
+{ugBrowseViewsOfConstructorsPage}
+in Section
+\ugBrowseViewsOfConstructorsNumber\ignore{ugBrowseViewsOfConstructors}.
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+\subsubsection{Operations}
+
+Enter {\tt *matrix} into the input area and click on {\bf Operations}.
+This time you get a table of {\it operations} whose names end with
+{\tt matrix} or {\tt Matrix}.
+
+
+If you select an operation name, you go to a page describing all the
+operations in Axiom of that name.  At the bottom of an operation page
+is another kind of {\it Views} panel, one for operation pages.  To
+learn more about these views, skip to
+\downlink{``\ugBrowseViewsOfOperationsTitle''}{ugBrowseViewsOfOperationsPage}
+in Section
+\ugBrowseViewsOfOperationsNumber\ignore{ugBrowseViewsOfOperations}.
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+\subsubsection{Attributes}
+
+This button gives you a table of attribute names that match the
+search string. Enter the search string {\tt *} and click on
+{\bf Attributes} to get a list
+of all system attributes.
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+Again there is a {\it Views} panel at the bottom with buttons that let
+you view the attributes in different ways.
+
+\subsubsection{General}
+
+This button does a general search for all constructor, operation, and
+attribute names matching the search string.  Enter the search string
+\allowbreak {\tt *matrix*} into the input area.  Click on {\bf
+General} to find all constructs that have {\tt matrix} as a part of
+their name.
+
+
+The summary gives you all the names under a heading when the number of
+entries is less than 10. 
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+\subsubsection{Documentation}
+
+Again enter the search key {\tt *matrix*} and this time click on
+{\bf Documentation}.
+This search matches any constructor, operation, or attribute
+name whose documentation contains a substring matching {\tt
+matrix}.
+
+
+Click on \UpBitmap{} to return to the \Browse{} front page.
+
+\subsubsection{Complete}
+
+This search combines both {\bf General} and {\bf Documentation}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseDomainTitle}{The Constructor Page}
+\newcommand{\ugBrowseDomainNumber}{14.2.}
+
+@
+\section{The Constructor Page}
+\label{ugBrowseDomainPage}
+\index{pages!ugBrowseDomainPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseDomainPage}
+\index{ugBrowseDomainPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseDomainPage}{14.2. The Constructor Page}
+\beginscroll
+
+In this section we look in detail at a constructor page for domain
+\axiomType{Matrix}.
+Enter {\tt matrix} into the input area on the main \Browse{} page
+and click on {\bf Constructors}.
+
+
+
+The header part tells you that \axiomType{Matrix} has abbreviation
+\axiomType{MATRIX} and one argument called {\tt R} that must be a
+domain of category \axiomType{Ring}.
+Just what domains can be arguments of \axiomType{Matrix}?
+To find this out, click on the {\tt R} on the second line of the
+heading.
+What you get is a table of all acceptable domain parameter values
+of {\tt R}, or a table of \spadgloss{rings} in Axiom.
+
+
+Click on \UpBitmap{} to return to the constructor page for
+\axiomType{Matrix}.
+\texht{\newpage}{}
+
+If you have access to the source code of Axiom, the third
+line of the heading gives you the name of the source file
+containing the definition of \axiomType{Matrix}.
+Click on it to pop up an editor window containing the source code
+of \axiomType{Matrix}.
+
+
+We recommend that you leave the editor window up while working
+through this chapter as you occasionally may want to refer to it.
+\texht{\newpage}{}
+
+\beginmenu
+    \menudownlink{{14.2.1. Constructor Page Buttons}}{ugBrowseDomainButtonsPage}
+    \menudownlink{{14.2.2. Cross Reference}}{ugBrowseCrossReferencePage}
+    \menudownlink{{14.2.3. Views Of Constructors}}{ugBrowseViewsOfConstructorsPage}
+    \menudownlink{{14.2.4. Giving Parameters to Constructors}}{ugBrowseGivingParametersPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseDomainButtonsTitle}{Constructor Page Buttons}
+\newcommand{\ugBrowseDomainButtonsNumber}{14.2.1.}
+
+@
+\section{Constructor Page Buttons}
+\label{ugBrowseDomainButtonsPage}
+\begin{itemize}
+\item ugBrowseViewsOfOperationsPage \ref{ugBrowseViewsOfOperationsPage} on
+page~\pageref{ugBrowseViewsOfOperationsPage}
+\end{itemize}
+\index{pages!ugBrowseDomainButtonsPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseDomainButtonsPage}
+\index{ugBrowseDomainButtonsPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseDomainButtonsPage}{14.2.1. Constructor Page Buttons}
+\beginscroll
+
+We examine each button on this page in order.
+
+\labelSpace{2pc}
+
+\subsubsection{Description}
+
+Click here to bring up a page with a brief description of
+constructor \axiomType{Matrix}.
+If you have access to system source code, note that these comments
+can be found directly over the constructor definition.
+
+
+\subsubsection{Operations}
+
+Click here to get a table of operations exported by
+\axiomType{Matrix}.
+You may wish to widen the window to have multiple columns as
+below.
+
+
+If you click on an operation name, you bring up a description page for
+the operations.  For a detailed description of these pages, skip to
+\downlink{``\ugBrowseViewsOfOperationsTitle''}{ugBrowseViewsOfOperationsPage}
+in Section
+\ugBrowseViewsOfOperationsNumber\ignore{ugBrowseViewsOfOperations}.
+
+\subsubsection{Attributes}
+
+Click here to get a table of the two attributes exported by
+\axiomType{Matrix}:
+\spadatt{\texht{fi\-nite\-Ag\-gre\-gate}{finiteAggregate}} and 
+\spadatt{shallowlyMutable}.
+These are two computational properties that result from
+\axiomType{Matrix} being regarded as a data structure.
+
+\subsubsection{Examples}
+
+Click here to get an {\it examples page} with examples of operations to
+create and manipulate matrices.
+
+Read through this section.
+Try selecting the various buttons.
+Notice that if you click on an operation name, such as
+\spadfunFrom{new}{Matrix}, you bring up a description page for that
+operation from \axiomType{Matrix}.
+
+Example pages have several examples of Axiom commands.
+Each example has an active button to its left.
+Click on it!
+A pre-computed answer is pasted into the page immediately following the
+command.
+If you click on the button a second time, the answer disappears.
+This button thus acts as a toggle:
+``now you see it; now you don't.''
+
+Note also that the Axiom commands themselves are active.
+If you want to see Axiom execute the command, then click on it!
+A new Axiom window appears on your screen and the command is
+executed.
+
+\httex{At the end of the page is generally a menu of buttons that lead
+you to further sections.
+Select one of these topics to explore its contents.}{}
+
+\subsubsection{Exports}
+
+Click here to see a page describing the exports of \axiomType{Matrix}
+exactly as described by the source code.
+
+
+As you see, \axiomType{Matrix} declares that it exports all the operations
+and attributes exported by category
+\axiomType{MatrixCategory(R, Row, Col)}.
+In addition, two operations, \axiomFun{diagonalMatrix} and
+\axiomFun{inverse}, are explicitly exported.
+
+To learn a little about the structure of Axiom, we suggest you do
+the following exercise.
+Otherwise, click on \UpButton{} and go on to the next section.
+\axiomType{Matrix} explicitly exports only two operations.
+The other operations are thus exports of \axiomType{MatrixCategory}.
+In general, operations are usually not explicitly exported by a domain.
+Typically they are \spadglossSee{inherited}{inherit} from several
+different categories.
+Let's find out from where the operations of \axiomType{Matrix} come.
+
+\indent{4}
+\beginitems
+\item[1. ] Click on {\bf MatrixCategory}, then on {\bf Exports}.
+Here you see that {\bf MatrixCategory} explicitly exports many matrix
+operations.
+Also, it inherits its operations from
+\axiomType{TwoDimensionalArrayCategory}.
+
+\item[2. ] Click on {\bf TwoDimensionalArrayCategory}, then on {\bf Exports}.
+Here you see explicit operations dealing with rows and columns.
+In addition, it inherits operations from
+\axiomType{HomogeneousAggregate}.
+
+%\item Click on {\bf HomogeneousAggregate}, then on {\bf Exports}.
+%And so on.
+%If you continue doing this, eventually you will
+
+\item[3. ] Click on \UpBitmap{} and then
+click on {\bf Object}, then on {\bf Exports}, where you see
+there are no exports.
+
+\item[4. ] Click on \UpBitmap{} repeatedly to return to the constructor page
+for \axiomType{Matrix}.
+
+\enditems
+\indent{0}
+
+\subsubsection{Related Operations}
+
+Click here bringing up a table of operations that are exported by
+\spadglossSee{packages}{package} but not by \axiomType{Matrix} itself.
+
+
+To see a table of such packages, use the {\bf Relatives} button on the
+{\bf Cross Reference} page described next.
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseCrossReferenceTitle}{Cross Reference}
+\newcommand{\ugBrowseCrossReferenceNumber}{14.2.2.}
+
+@
+\section{Cross Reference}
+\label{ugBrowseCrossReferencePage}
+\index{pages!ugBrowseCrossReferencePage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseCrossReferencePage}
+\index{ugBrowseCrossReferencePage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseCrossReferencePage}{14.2.2. Cross Reference}
+\beginscroll
+Click on the {\bf Cross Reference} button on the main constructor page
+for \axiomType{Matrix}.
+This gives you a page having various cross reference information stored
+under the respective buttons.
+
+
+\subsubsection{Parents}
+
+The parents of a domain are the same as the categories mentioned under
+the {\bf Exports} button on the first page.
+Domain \axiomType{Matrix} has only one parent but in general a domain can
+have any number.
+
+\subsubsection{Ancestors}
+
+The \spadglossSee{ancestors}{ancestor} of a constructor consist of its parents, the
+parents of its parents, and so on.
+Did you perform the exercise in the last section under {\bf Exports}?
+If so, you  see here all the categories you found while ascending the
+{\bf Exports} chain for \axiomType{Matrix}.
+
+\subsubsection{Relatives}
+
+The \spadglossSee{relatives}{relative} of a domain constructor are package
+constructors that provide operations in addition to those
+\spadglossSee{exported}{export} by the domain.
+
+Try this exercise.
+\indent{4}
+\beginitems
+\item[1. ] Click on {\bf Relatives}, bringing up a list of
+\spadglossSee{packages}{package}.
+
+\item[2. ] Click on {\bf LinearSystemMatrixPackage} bringing up its
+constructor page.\footnote{You may want to widen your \HyperName{}
+window to make what follows more legible.}
+
+\item[3. ] Click on {\bf Operations}.
+Here you see \axiomFun{rank}, an operation also exported by
+\axiomType{Matrix} itself.
+
+\item[4. ] Click on {\bf rank}.
+This \spadfunFrom{rank}{LinearSystemMatrixPackage} has two arguments and
+thus is different from the \spadfunFrom{rank}{Matrix} from
+\axiomType{Matrix}.
+
+\item[5. ] Click on \UpBitmap{} to return to the list of operations for the
+package \axiomType{LinearSystemMatrixPackage}.
+
+\item[6. ] Click on {\bf solve} to bring up a
+\spadfunFrom{solve}{LinearSystemMatrixPackage} for linear systems of
+equations.
+
+\item[7. ] Click on \UpBitmap{} several times to return to the cross
+reference page for \axiomType{Matrix}.
+\enditems
+\indent{0}
+
+\subsubsection{Dependents}
+
+The \spadglossSee{dependents}{dependent} of a constructor are those
+\spadglossSee{domains}{domain} or \spadglossSee{packages}{package}
+that mention that
+constructor either as an argument or in its \spadglossSee{exports}{export}.
+
+If you click on {\bf Dependents} two entries may surprise you:
+\axiomType{RectangularMatrix} and \axiomType{SquareMatrix}.
+This happens because \axiomType{Matrix}, as it turns out, appears in
+signatures of operations exported by these domains.
+
+\subsubsection{Lineage}
+
+The term \spadgloss{lineage} refers to the {\it search order} for
+functions.
+If you are an expert user or curious about how the Axiom system
+works, try the following exercise.
+Otherwise, you best skip this button and go on to {\bf Clients}.
+
+Clicking on {\bf Lineage} gives you a
+list of domain constructors:
+\axiomType{InnerIndexedTwoDimensionalArray},
+\aliascon{MatrixCategory\&}{MATCAT-},
+\aliascon{TwoDimensionalArrayCategory\&}{ARR2CAT-},
+\aliascon{HomogeneousAggregate\&}{HOAGG-},
+\aliascon{Aggregate\&}{AGG-}.
+What are these constructors and how are they used?
+
+We explain by an example.
+Suppose you create a matrix using the interpreter, then ask for its
+\axiomFun{rank}.
+Axiom must then find a function implementing the \axiomFun{rank}
+operation for matrices.
+The first place Axiom looks for \axiomFun{rank} is in the \axiomType{Matrix}
+domain.
+
+If not there, the lineage of \axiomType{Matrix} tells Axiom where
+else to look.
+Associated with the matrix domain are five other lineage domains.
+Their order is important.
+Axiom first searches the first one,
+\axiomType{InnerIndexedTwoDimensionalArray}.
+If not there, it searches the second \aliascon{MatrixCategory\&}{MATCAT-}.
+And so on.
+
+Where do these {\it lineage constructors} come from?
+The source code for \axiomType{Matrix} contains this syntax for the
+\spadgloss{function body} of
+\axiomType{Matrix}:\footnote{\axiomType{InnerIndexedTwoDimensionalArray}
+is a special domain implemented for matrix-like domains to provide
+efficient implementations of \twodim{} arrays.
+For example, domains of category \axiomType{TwoDimensionalArrayCategory}
+can have any integer as their \spad{minIndex}.
+Matrices and other members of this special ``inner'' array have their
+\spad{minIndex} defined as \spad{1}.}
+\begin{verbatim}
+InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col)
+   add ...
+\end{verbatim}
+where the ``{\tt ...}'' denotes all the code that follows.
+In English, this means:
+``The functions for matrices are defined as those from
+\axiomType{InnerIndexedTwoDimensionalArray} domain augmented by those
+defined in `{\tt ...}','' where the latter take precedence.
+
+This explains \axiomType{InnerIndexedTwoDimensionalArray}.
+The other names, those with names ending with an ampersand \axiomSyntax{\&} are
+\spadglossSee{default packages}{default package}
+for categories to which \axiomType{Matrix} belongs.
+Default packages are ordered by the notion of ``closest ancestor.''
+
+\subsubsection{Clients}
+
+A client of \axiomType{Matrix} is any constructor that uses
+\axiomType{Matrix} in its implementation.
+For example, \axiomType{Complex} is a client of \axiomType{Matrix}; it
+exports several operations that take matrices as arguments or return
+matrices as values.\footnote{A constructor is a client of
+\axiomType{Matrix} if it handles any matrix.
+For example, a constructor having internal (unexported) operations
+dealing with matrices is also a client.}
+
+\subsubsection{Benefactors}
+
+A \spadgloss{benefactor} of \axiomType{Matrix} is any constructor that
+\axiomType{Matrix} uses in its implementation.
+This information, like that for clients, is gathered from run-time
+structures.\footnote{The benefactors exclude constructors such as
+\axiomType{PrimitiveArray} whose operations macro-expand and so vanish
+from sight!}
+
+Cross reference pages for categories have some different buttons on
+them.
+Starting with the constructor page of \axiomType{Matrix}, click on
+\axiomType{Ring} producing its constructor page.
+Click on {\bf Cross Reference},
+producing the cross-reference page for \axiomType{Ring}.
+Here are buttons {\bf Parents} and {\bf Ancestors} similar to the notion
+for domains, except for categories the relationship between parent and
+child is defined through \spadgloss{category extension}.
+
+\subsubsection{Children}
+
+Category hierarchies go both ways.
+There are children as well as parents.
+A child can have any number of parents, but always at least one.
+Every category is therefore a descendant of exactly one category:
+\axiomType{Object}.
+
+\subsubsection{Descendants}
+
+These are children, children of children, and so on.
+
+Category hierarchies are complicated by the fact that categories take
+parameters.
+Where a parameterized category fits into a hierarchy {\it may} depend on
+values of its parameters.
+In general, the set of categories in Axiom forms a {\it directed
+acyclic graph}, that is, a graph with directed arcs and no cycles.
+
+\subsubsection{Domains}
+
+This produces a table of all domain constructors that can possibly be
+rings (members of category \axiomType{Ring}).
+Some domains are unconditional rings.
+Others are rings for some parameters and not for others.
+To find out which, select the {\bf conditions} button in the views
+panel.
+For example, \axiomType{DirectProduct(n, R)} is a ring if {\tt R} is a
+ring.
+
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseViewsOfConstructorsTitle}{Views Of Constructors}
+\newcommand{\ugBrowseViewsOfConstructorsNumber}{14.2.3.}
+
+@
+\section{Views Of Constructors}
+\label{ugBrowseViewsOfConstructorsPage}
+\index{pages!ugBrowseViewsOfConstructorsPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseViewsOfConstructorsPage}
+\index{ugBrowseViewsOfConstructorsPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseViewsOfConstructorsPage}{14.2.3. Views Of Constructors}
+\beginscroll
+
+Below every constructor table page is a {\it Views} panel.
+As an example, click on {\bf Cross Reference} from
+the constructor page of \axiomType{Matrix},
+then on {\bf Benefactors} to produce a
+short table of constructor names.
+
+The {\it Views} panel is at the bottom of the page.
+Two items, {\it names} and {\it conditions,} are in italics.
+Others are active buttons.
+The active buttons are those that give you useful alternative views
+on this table of constructors.
+Once you select a view, you notice that the button turns
+off (becomes italicized) so that you cannot reselect it.
+
+\subsubsection{names}
+
+This view gives you a table of names.
+Selecting any of these names brings up the constructor page for that
+constructor.
+
+\subsubsection{abbrs}
+
+This view gives you a table of abbreviations, in the same order as the
+original constructor names.
+Abbreviations are in capitals and are limited to 7 characters.
+They can be used interchangeably with constructor names in input areas.
+
+\subsubsection{kinds}
+
+This view organizes constructor names into
+the three kinds: categories, domains and packages.
+
+\subsubsection{files}
+
+This view gives a table of file names for the source
+code of the constructors in alphabetic order after removing
+duplicates.
+
+\subsubsection{parameters}
+
+This view presents constructors with the arguments.
+This view of the benefactors of \axiomType{Matrix} shows that
+\axiomType{Matrix} uses as many as five different \axiomType{List} domains
+in its implementation.
+
+\subsubsection{filter}
+
+This button is used to refine the list of names or abbreviations.
+Starting with the {\it names} view, enter {\tt m*} into the input area
+and click on {\bf filter}.
+You then get a shorter table with only the names beginning with {\tt m}.
+
+\subsubsection{documentation}
+
+This gives you documentation for each of the constructors.
+
+\subsubsection{conditions}
+
+This page organizes the constructors according to predicates.
+The view is not available for your example page since all constructors
+are unconditional.
+For a table with conditions, return to the {\bf Cross Reference} page
+for \axiomType{Matrix}, click on {\bf Ancestors}, then on {\bf
+conditions} in the view panel.
+This page shows you that \axiomType{CoercibleTo(OutputForm)} and
+\axiomType{SetCategory} are ancestors of \axiomType{Matrix(R)} only if {\tt R}
+belongs to category \axiomType{SetCategory}.
+
+%*********************************************************************
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseGivingParametersTitle}{Giving Parameters to Constructors}
+\newcommand{\ugBrowseGivingParametersNumber}{14.2.4.}
+
+@
+\section{Giving Parameters to Constructors}
+\label{ugBrowseGivingParametersPage}
+\index{pages!ugBrowseGivingParametersPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseGivingParametersPage}
+\index{ugBrowseGivingParametersPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseGivingParametersPage}
+{14.2.4. Giving Parameters to Constructors}
+\beginscroll
+%*********************************************************************
+
+Notice the input area at the bottom of the constructor page.
+If you leave this blank, then the information you get is for the
+domain constructor \axiomType{Matrix(R)}, that is, \axiomType{Matrix} for an
+arbitrary underlying domain {\tt R}.
+
+In general, however, the exports and other information {\it do} usually
+depend on the actual value of {\tt R}.
+For example, \axiomType{Matrix} exports the \axiomFun{inverse} operation
+only if the domain {\tt R} is a \axiomType{Field}.
+To see this, try this from the main constructor page:
+
+\indent{4}
+\beginitems
+\item[1. ] Enter {\tt Integer} into the input area at the bottom of the page.
+
+\item[2. ] Click on {\bf Operations}, producing a table of operations.
+Note the number of operation names that appear at the top of the
+page.
+
+\item[3. ] Click on \UpBitmap{} to return to the constructor page.
+
+\item[4. ] Use the
+\texht{\fbox{\bf Delete}}{{\bf Delete}}
+or
+\texht{\fbox{\bf Backspace}}{{\bf Backspace}}
+keys to erase {\tt Integer} from the input area.
+
+\item[5. ] Click on {\bf Operations} to produce a new table of operations.
+Look at the number of operations you get.
+This number is greater than what you had before.
+Find, for example, the operation \axiomFun{inverse}.
+
+\item[6. ] Click on {\bf inverse} to produce a page describing the operation
+\axiomFun{inverse}.
+At the bottom of the description, you notice that the {\bf
+Conditions} line says ``{\tt R} has \axiomType{Field}.''
+This operation is {\it not} exported by \axiomType{Matrix(Integer)} since
+\axiomType{Integer} is not a \spadgloss{field}.
+
+Try putting the name of a domain such as \axiomType{Fraction Integer}
+(which is a field) into the input area, then clicking on {\bf Operations}.
+As you see, the operation \axiomFun{inverse} is exported.
+\enditems
+\indent{0}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseMiscellaneousFeaturesTitle}{Miscellaneous Features of Browse}
+\newcommand{\ugBrowseMiscellaneousFeaturesNumber}{14.3.}
+
+@
+\section{Miscellaneous Features of Browse}
+\label{ugBrowseMiscellaneousFeaturesPage}
+\index{pages!ugBrowseMiscellaneousFeaturesPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseMiscellaneousFeaturesPage}
+\index{ugBrowseMiscellaneousFeaturesPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseMiscellaneousFeaturesPage}
+{14.3. Miscellaneous Features of Browse}
+\beginscroll
+\labelSpace{4pc}
+\beginmenu
+    \menudownlink{{14.3.1. The Description Page for Operations}}{ugBrowseDescriptionPagePage}
+    \menudownlink{{14.3.2. Views of Operations}}{ugBrowseViewsOfOperationsPage}
+    \menudownlink{{14.3.3. Capitalization Convention}}{ugBrowseCapitalizationConventionPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseDescriptionPageTitle}{The Description Page for Operations}
+\newcommand{\ugBrowseDescriptionPageNumber}{14.3.1.}
+
+@
+\section{The Description Page for Operations}
+\label{ugBrowseDescriptionPagePage}
+\index{pages!ugBrowseDescriptionPagePage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseDescriptionPagePage}
+\index{ugBrowseDescriptionPagePage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseDescriptionPagePage}
+{14.3.1. The Description Page for Operations}
+\beginscroll
+From the constructor page of \axiomType{Matrix},
+click on {\bf Operations} to bring up the table of operations
+for \axiomType{Matrix}.
+
+Find the operation {\bf inverse} in the table and click on it.
+This takes you to a page showing the documentation for this operation.
+
+
+Here is the significance of the headings you see.
+
+\subsubsection{Arguments}
+
+This lists each of the arguments of the operation in turn, paraphrasing
+the \spadgloss{signature} of the operation.
+As for signatures, a \axiomSyntax{\$} is used to designate {\em this domain},
+that is, \axiomType{Matrix(R)}.
+
+\subsubsection{Returns}
+
+This describes the return value for the operation, analogous to the {\bf
+Arguments} part.
+
+\subsubsection{Origin}
+
+This tells you which domain or category explicitly exports the
+operation.
+In this example, the domain itself is the {\it Origin}.
+
+
+\subsubsection{Conditions}
+
+This tells you that the operation is exported by \axiomType{Matrix(R)} only if
+``{\tt R} has \axiomType{Field},'' that is, ``{\tt R} is a member of
+category \axiomType{Field}.''
+When no {\bf Conditions} part is given, the operation is exported for
+all values of {\tt R}.
+
+\subsubsection{Description}
+
+Here are the \axiomSyntax{++} comments
+that appear in the source code of its {\it Origin}, here \axiomType{Matrix}.
+You find these comments in the source code for \axiomType{Matrix}.
+
+
+Click on \UpBitmap{} to return to the table of operations.
+Click on {\bf map}.
+Here you find three different operations named \axiomFun{map}.
+This should not surprise you.
+Operations are identified by name and \spadgloss{signature}.
+There are three operations named \axiomFun{map}, each with
+different signatures.
+What you see is the {\it descriptions} view of the operations.
+If you like, select the button in the heading of one of these
+descriptions to get {\it only} that operation.
+
+\subsubsection{Where}
+
+This part qualifies domain parameters mentioned in the arguments to the
+operation.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseViewsOfOperationsTitle}{Views of Operations}
+\newcommand{\ugBrowseViewsOfOperationsNumber}{14.3.2.}
+
+@
+\section{Views of Operations}
+\label{ugBrowseViewsOfOperationsPage}
+\index{pages!ugBrowseViewsOfOperationsPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseViewsOfOperationsPage}
+\index{ugBrowseViewsOfOperationsPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseViewsOfOperationsPage}{14.3.2. Views of Operations}
+\beginscroll
+
+We suggest that you go to the constructor page for \axiomType{Matrix}
+and click on {\bf Operations} to bring up a table of operations
+with a {\it Views} panel at the bottom.
+
+\subsubsection{names}
+
+This view lists the names of the operations.
+Unlike constructors, however, there may be several operations with the
+same name.
+The heading for the page tells you the number of unique names and the
+number of distinct operations when these numbers are different.
+
+\subsubsection{filter}
+
+As for constructors, you can use this button to cut down the list of
+operations you are looking at.
+Enter, for example, {\tt m*} into the input area to the right of {\bf
+filter} then click on {\bf filter}.
+As usual, any logical expression is permitted.
+For example, use
+\begin{verbatim}
+*! or *?
+\end{verbatim}
+to get a list of destructive operations and predicates.
+
+\subsubsection{documentation}
+
+This gives you the most information:
+a detailed description of all the operations in the form you have seen
+before.
+Every other button summarizes these operations in some form.
+
+\subsubsection{signatures}
+
+This views the operations by showing their signatures.
+
+\subsubsection{parameters}
+
+This views the operations by their distinct syntactic forms with
+parameters.
+
+\subsubsection{origins}
+
+This organizes the operations according to the constructor that
+explicitly exports them.
+
+\subsubsection{conditions}
+
+This view organizes the operations into conditional and unconditional
+operations.
+
+\subsubsection{usage}
+
+This button is only available if your user-level is set to {\it
+development}.
+The {\bf usage} button produces a table of constructors that reference this
+operation.\footnote{Axiom requires an especially long time to
+produce this table, so anticipate this when requesting this
+information.}
+
+\subsubsection{implementation}
+
+This button is only available if your user-level is set to {\it
+development}.
+If you enter values for all domain parameters on the constructor page,
+then the {\bf implementation} button appears in place of the {\bf
+conditions} button.
+This button tells you what domains or packages actually implement the
+various operations.\footnote{This button often takes a long time; expect
+a delay while you wait for an answer.}
+
+With your user-level set to {\it development}, we suggest you try this
+exercise.
+Return to the main constructor page for \axiomType{Matrix}, then enter
+{\tt Integer} into the input area at the bottom as the value of {\tt R}.
+Then click on {\bf Operations} to produce a table of operations.
+Note that the {\bf conditions} part of the {\it Views} table is
+replaced by {\bf implementation}.
+Click on {\bf implementation}.
+After some delay, you get a page describing what implements each of
+the matrix operations, organized by the various domains and packages.
+
+
+\subsubsection{generalize}
+
+This button only appears for an operation page of a constructor
+involving a unique operation name.
+
+From an operations page for \axiomType{Matrix}, select any
+operation name, say {\bf rank}.
+In the views panel, the {\bf filter} button is  replaced by
+{\bf generalize}.
+Click on it!
+%% Replaced {\bf threshold} with 10 below.  MGR 1995oct31
+What you get is a description of all Axiom operations
+named \axiomFun{rank}.\footnote{If there were more than 10
+operations of the name, you get instead a page
+with a {\it Views} panel at the bottom and the message to {\bf
+Select a view below}.
+To get the descriptions of all these operations as mentioned
+above, select the {\bf description} button.}
+
+\subsubsection{all domains}
+
+This button only appears on an operation page resulting from a
+search from the front page of \Browse{} or from selecting
+{\bf generalize} from an operation page for a constructor.
+
+Note that the {\bf filter} button in the {\it Views} panel is
+replaced by {\bf all domains}.
+Click on it to produce a table of {\it all} domains or packages that
+export a \axiomFun{rank} operation.
+
+
+We note that this table specifically refers to all the \axiomFun{rank}
+operations shown in the preceding page.
+Return to the descriptions of all the \axiomFun{rank} operations and
+select one of them by clicking on the button in its heading.
+Select {\bf all domains}.
+As you see, you have a smaller table of constructors.
+When there is only one constructor, you get the
+constructor page for that constructor.
+\texht{\newpage}{}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug14.ht>>=
+\newcommand{\ugBrowseCapitalizationConventionTitle}{Capitalization Convention}
+\newcommand{\ugBrowseCapitalizationConventionNumber}{14.3.3.}
+
+@
+\section{Capitalization Convention}
+\label{ugBrowseCapitalizationConventionPage}
+\index{pages!ugBrowseCapitalizationConventionPage!ug14.ht}
+\index{ug14.ht!pages!ugBrowseCapitalizationConventionPage}
+\index{ugBrowseCapitalizationConventionPage!ug14.ht!pages}
+<<ug14.ht>>=
+\begin{page}{ugBrowseCapitalizationConventionPage}
+{14.3.3. Capitalization Convention}
+\beginscroll
+
+When entering search keys for constructors, you can use capital
+letters to search for abbreviations.
+For example, enter {\tt UTS} into the input area and click on {\bf
+Constructors}.
+Up comes a page describing \axiomType{UnivariateTaylorSeries}
+whose abbreviation is \axiomType{UTS}.
+
+Constructor abbreviations always have three or more capital
+letters.
+For short constructor names (six letters or less), abbreviations
+are not generally helpful as their abbreviation is typically the
+constructor name in capitals.
+For example, the abbreviation for \axiomType{Matrix} is
+\axiomType{MATRIX}.
+
+Abbreviations can also contain numbers.
+For example, \axiomType{POLY2} is the abbreviation for constructor
+\axiomType{PolynomialFunctions2}.
+For default packages, the abbreviation is the same as the
+abbreviation for the corresponding category with the ``\&''
+replaced by ``-''.
+For example, for the category default package
+\aliascon{MatrixCategory\&}{MATCAT-} the abbreviation is
+\axiomType{MATCAT-} since the corresponding category
+\axiomType{MatrixCategory} has abbreviation \axiomType{MATCAT}.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 15 (ug15.ht)}
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewTitle}{What's New in Axiom Version 2.0}
+\newcommand{\ugWhatsNewNumber}{15.}
+
+@
+\section{What's New in Axiom Version 2.0}
+\label{ugWhatsNewPage}
+\index{pages!ugWhatsNewPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewPage}
+\index{ugWhatsNewPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewPage}{15. What's New in Axiom Version 2.0}
+\beginscroll
+
+Many things have changed in this new version of Axiom and
+we describe many of the more important topics here.
+
+%------------------------------------------------------------------------
+\beginmenu
+    \menudownlink{{15.1. Important Things to Read First}}{ugWhatsNewImportantPage}
+    \menudownlink{{15.2. The New Axiom Library Compiler}}{ugWhatsNewAsharpPage}
+    \menudownlink{{15.3. The NAG Library Link}}{nagLinkIntroPage}
+    \menudownlink{{15.4. Interactive Front-end and Language}}{ugWhatsNewLanguagePage}
+    \menudownlink{{15.5. Library}}{ugWhatsNewLibraryPage}
+    \menudownlink{{15.6. \HyperName}}{ugWhatsNewHyperDocPage}
+    \menudownlink{{15.7. Documentation}}{ugWhatsNewDocumentationPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewImportantTitle}{Important Things to Read First}
+\newcommand{\ugWhatsNewImportantNumber}{15.1.}
+
+@
+\section{Important Things to Read First}
+\label{ugWhatsNewImportantPage}
+\index{pages!ugWhatsNewImportantPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewImportantPage}
+\index{ugWhatsNewImportantPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewImportantPage}{15.1. Important Things to Read First}
+\beginscroll
+%------------------------------------------------------------------------
+
+If you have any private {\tt .spad} files (that is, library files
+which were not shipped with Axiom) you will need to
+recompile them.  For example, if you wrote the file {\tt
+regress.spad} then you should issue {\tt )compile regress.spad}
+before trying to use it.
+
+The internal representation of \axiomType{Union}  has changed. 
+This means that \texht{\linebreak}{} Axiom data saved 
+with Release 1.x may not
+be readable by this Release. If you cannot recreate the saved data      
+by recomputing in Release 2.0, please contact NAG for assistance.       
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewAsharpTitle}{The New Axiom Library Compiler}
+\newcommand{\ugWhatsNewAsharpNumber}{15.2.}
+
+@
+\section{The New Axiom Library Compiler}
+\label{ugWhatsNewAsharpPage}
+\index{pages!ugWhatsNewAsharpPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewAsharpPage}
+\index{ugWhatsNewAsharpPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewAsharpPage}{15.2. The New Axiom Library Compiler}
+\beginscroll
+%------------------------------------------------------------------------
+
+A new compiler is now available for Axiom.
+The programming language is referred to as the Axiom Extension Language
+(or \axiomxl{} for short), and
+improves upon the old Axiom language in many ways.
+The \spadcmd{)compile} command has been upgraded to be able to
+invoke the new or old compilers.
+The language and the compiler are described in the hard-copy
+documentation which came with your Axiom system.
+
+To ease the chore of upgrading your {\it .spad} files (old
+compiler) to {\it .as} files (new compiler), the
+\spadcmd{)compile} command has been given a {\tt )translate}
+option. This invokes a special version of the old compiler which
+parses and analyzes your old code and produces augmented code
+using the new syntax.
+Please be aware that the translation is not necessarily one
+hundred percent complete or correct.
+You should attempt to compile the output with the \axiomxl{} compiler
+and make any necessary corrections.
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\nagLinkIntroTitle}{The NAG Library Link}
+\newcommand{\nagLinkIntroNumber}{15.3.}
+
+@
+\section{The NAG Library Link}
+\label{nagLinkIntroPage}
+\begin{itemize}
+\item htxl1 \ref{htxl1} on
+page~\pageref{htxl1}
+\item nagDocumentationPage \ref{nagDocumentationPage} on
+page~\pageref{nagDocumentationPage}
+\item nagLinkUsagePage \ref{nagLinkUsagePage} on
+page~\pageref{nagLinkUsagePage}
+\item aspSectionPage \ref{aspSectionPage} on
+page~\pageref{aspSectionPage}
+\item generalFortranPage \ref{generalFortranPage} on
+page~\pageref{generalFortranPage}
+\item nagTechnicalPage \ref{nagTechnicalPage} on
+page~\pageref{nagTechnicalPage}
+\end{itemize}
+\index{pages!nagLinkIntroPage!ug15.ht}
+\index{ug15.ht!pages!nagLinkIntroPage}
+\index{nagLinkIntroPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{nagLinkIntroPage}{15.3. The NAG Library Link}
+\beginscroll
+
+The \naglib{} link allows you to call NAG Fortran
+routines from within Axiom, passing Axiom objects as parameters
+and getting them back as results.
+
+The \naglib{} and, consequently, the link are divided into {\em chapters},
+which cover different areas of numerical analysis.  The statistical
+and sorting {\em chapters} of the Library, however, are not included in the
+link and various support and utility routines (mainly the F06 and X
+{\em chapters}) have been omitted.
+
+Each {\em chapter} has a short (at most three-letter) name;
+for example, the {\em chapter} devoted to the
+solution of ordinary differential equations is called D02.  When
+using the link via the \downlink{\HyperName{} interface}{htxl1},
+you will be presented with a complete menu of these {\em chapters}. The
+names of individual routines within each {\em chapter} are formed by
+adding three letters to the {\em chapter} name, so for example the routine
+for solving ODEs by Adams method is called
+\axiomFunFrom{d02cjf}{NagOrdinaryDifferentialEquationsPackage}.
+
+\beginmenu
+    \menudownlink{{15.3.1. Interpreting NAG Documentation}}
+{nagDocumentationPage}
+    \menudownlink{{15.3.2. Using the Link}}{nagLinkUsagePage}
+    \menudownlink{{15.3.3. Providing values for Argument Subprograms}}
+{aspSectionPage}
+    \menudownlink{{15.3.4. General Fortran-generation utilities in Axiom}}
+{generalFortranPage}
+    \menudownlink{{15.3.5. Some technical information}}{nagTechnicalPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\nagDocumentationTitle}{Interpreting NAG Documentation}
+\newcommand{\nagDocumentationNumber}{15.3.1.}
+
+@
+\section{Interpreting NAG Documentation}
+\label{nagDocumentationPage}
+\begin{itemize}
+\item manpageXXintro \ref{manpageXXintro} on
+page~\pageref{manpageXXintro}
+\item manpageXXonline \ref{manpageXXonline} on
+page~\pageref{manpageXXonline}
+\item FoundationLibraryDocPage \ref{FoundationLibraryDocPage} on
+page~\pageref{FoundationLibraryDocPage}
+\item aspSectionPage \ref{aspSectionPage} on
+page~\pageref{aspSectionPage}
+\end{itemize}
+\index{pages!nagDocumentationPage!ug15.ht}
+\index{ug15.ht!pages!nagDocumentationPage}
+\index{nagDocumentationPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{nagDocumentationPage}{15.3.1. Interpreting NAG Documentation}
+\beginscroll
+
+Information about using the \naglib{} in general, and about using
+individual routines in particular, can be accessed via \HyperName{}.
+This documentation refers to the Fortran routines directly; the
+purpose of this subsection is to explain how this corresponds to the
+Axiom routines.
+
+For general information about the \naglib{} users should consult
+\downlink{Essential Introduction to the NAG Foundation Library}
+{manpageXXintro}.
+The documentation is in ASCII format, and a description of the conventions
+used to represent mathematical symbols is given in
+\downlink{Introduction to NAG On-Line Documentation}{manpageXXonline}.
+Advice about choosing a routine from a particular {\em chapter} can 
+be found in the \downlink{Chapter Documents}{FoundationLibraryDocPage}.
+
+\subsubsection{Correspondence Between Fortran and Axiom types}
+
+The NAG documentation refers to the Fortran types of objects; in
+general, the correspondence to Axiom types is as follows.
+\indent{4}
+\beginitems
+\item[-] Fortran INTEGER corresponds to Axiom \axiomType{Integer}.
+\item[-] Fortran DOUBLE PRECISION corresponds to Axiom \axiomType{DoubleFloat}.
+\item[-] Fortran COMPLEX corresponds to Axiom \axiomType{Complex DoubleFloat}.
+\item[-] Fortran LOGICAL corresponds to Axiom \axiomType{Boolean}.
+\item[-] Fortran CHARACTER*(*) corresponds to Axiom \axiomType{String}.
+\enditems
+\indent{0}
+(Exceptionally, for NAG EXTERNAL parameters -- ASPs in link parlance
+-- REAL and COMPLEX correspond to \axiomType{MachineFloat} and 
+\axiomType{MachineComplex},
+respectively; see \downlink{``\aspSectionTitle''}{aspSectionPage} 
+in Section \aspSectionNumber\ignore{aspSection}.)
+
+The correspondence for aggregates is as follows.
+\indent{4}
+\beginitems
+\item[-] A one-dimensional Fortran array corresponds to an Axiom 
+\texht{\linebreak}{}
+      \axiomType{Matrix} with one column.
+\item[-] A two-dimensional Fortran ARRAY corresponds to an Axiom 
+\texht{\linebreak}{}
+      \axiomType{Matrix}.
+\item[-] A three-dimensional Fortran ARRAY corresponds to an Axiom 
+\texht{\linebreak}{}
+      \axiomType{ThreeDimensionalMatrix}.
+\enditems
+\indent{0}
+Higher-dimensional arrays are not currently needed for the \naglib{}.
+
+Arguments which are Fortran FUNCTIONs or SUBROUTINEs correspond to
+special ASP domains in Axiom. See
+\downlink{``\aspSectionTitle''}{aspSectionPage} in Section
+\aspSectionNumber\ignore{aspSection}.
+
+\subsubsection{Classification of NAG parameters}
+
+NAG parameters are classified as belonging to one (or more) of the
+following categories: {\tt Input}, {\tt Output}, {\tt Workspace} or
+{\tt External} procedure.  Within {\tt External} procedures a similar
+classification is used, and parameters may also be {\tt Dummies}, or
+{\tt User Workspace} (data structures not used by the NAG routine but
+provided for the convenience of the user).
+
+When calling a NAG routine via the link the user only provides values
+for {\tt Input} and {\tt External} parameters.
+
+The order of the parameters is, in general, different from  the order
+specified in the \naglib{} documentation. The Browser description
+for each routine helps in determining the correspondence. As a rule of
+thumb, {\tt Input} parameters come first followed by {\tt Input/Output}
+parameters. The {\tt External} parameters are always found at the end.
+
+
+\subsubsection{IFAIL}
+
+NAG routines often return diagnostic information through a parameter called
+\axiom{ifail}.  With a few exceptions, the principle is that on input
+\axiom{ifail} takes
+one of the values $-1,0,1$.  This determines how the routine behaves when
+it encounters an error:
+\indent{4}
+\beginitems
+\item[-] a value of 1 causes the NAG routine to return without printing 
+an error message;
+\item[-] a value of 0 causes the NAG routine to print an error message 
+and abort;
+\item[-] a value of -1 causes the NAG routine to return and print an 
+error message.
+\enditems
+\indent{0}
+
+The user is STRONGLY ADVISED to set \axiom{ifail} to \texht{$-1$}{-1}
+when using the link.  If \axiom{ifail} has been set to \texht{$1$}{1}
+or \texht{$-1$}{-1} on input, then its value on output will determine
+the possible cause of any error.  A value of \texht{$0$}{0} indicates
+successful completion, otherwise it provides an index into a table of
+diagnostics provided as part of the routine documentation (accessible
+via \Browse{}).
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\nagLinkUsageTitle}{Using the Link}
+\newcommand{\nagLinkUsageNumber}{15.3.2.}
+
+@
+\section{Using the Link}
+\label{nagLinkUsagePage}
+\begin{itemize}
+\item htxl1 \ref{htxl1} on
+page~\pageref{htxl1}
+\end{itemize}
+\index{pages!nagLinkUsagePage!ug15.ht}
+\index{ug15.ht!pages!nagLinkUsagePage}
+\index{nagLinkUsagePage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{nagLinkUsagePage}{15.3.2. Using the Link}
+\beginscroll
+
+The easiest way to use the link is via the
+\downlink{\HyperName{} interface}{htxl1}.
+You will be presented with a set of fill-in forms where
+you can specify the parameters for each call.  Initially, the forms
+contain example values, demonstrating the use of each routine (these,
+in fact, correspond to the standard NAG example program for the
+routine in question).  For some parameters, these values can provide
+reasonable defaults; others, of course, represent data.  When you
+change a parameter which controls the size of an array, the data in
+that array are reset to a ``neutral'' value -- usually zero.
+
+When you are satisfied with the values entered, clicking on the
+``Continue'' button will display the Axiom command needed to
+run the chosen NAG routine with these values.  Clicking on the
+``Do It'' button will then cause Axiom to execute this command
+and return the result in the parent Axiom session, as described
+below.  Note that, for some routines, multiple HyperDoc ``pages'' are
+required, due to the structure of the data.  For these, returning to
+an earlier page causes HyperDoc to reset the later pages (this is a
+general feature of HyperDoc); in such a case, the simplest way to
+repeat a call, varying a parameter on an earlier page, is probably to
+modify the call displayed in the parent session.
+
+An alternative approach is to call NAG routines directly in your
+normal Axiom session (that is, using the Axiom
+interpreter).  Such calls return an
+object of type \axiomType{Result}.  As not
+all parameters in the underlying NAG routine are required in the
+Axiom call (and the parameter ordering may be different), before
+calling a NAG routine you should consult the description of the
+Axiom operation in the Browser.  (The quickest route to this
+is to type the routine name, in lower case, into the Browser's
+input area, then click on {\tt Operations}.)  The parameter names
+used coincide with NAG's, although they will appear here in lower
+case.  Of course, it is also possible to become familiar with the
+Axiom form of a routine by first using it through the
+\downlink{\HyperName{} interface}{htxl1}.
+
+\xtc{
+As an example of this mode of working, we can find a zero
+of a function, lying between 3 and 4, as follows:
+}{
+\spadpaste{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer} }
+}
+\xtc{
+By default, \axiomType{Result} only displays the type of returned values,
+since the amount of information returned can be quite large.  Individual
+components can be examined as follows:
+}{
+\spadpaste{answer . x\free{answer}}
+}
+\xtc{
+}{
+\spadpaste{answer . ifail\free{answer}}
+}
+\xtc{
+In order to avoid conflict with names defined in the workspace, you can also
+get the values by using the \axiomType{String} type (the interpreter automatically
+coerces them to \axiomType{Symbol})
+}{
+\spadpaste{answer "x"\free{answer}}
+}
+
+
+It is possible to have Axiom display the values of scalar or array
+results automatically.  For more details, see the commands  
+\axiomFunFrom{showScalarValues}{Result}
+and \axiomFunFrom{showArrayValues}{Result}.
+
+\xtc{
+There is also a {\bf .input} file for each NAG routine, containing
+Axiom interpreter commands to set up and run the standard NAG
+example for that routine.
+}{
+\spadpaste{)read c05adf.input}
+}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\aspSectionTitle}{Providing values for Argument Subprograms}
+\newcommand{\aspSectionNumber}{15.3.3.}
+
+@
+\section{Providing values for Argument Subprograms}
+\label{aspSectionPage}
+\begin{itemize}
+\item generalFortranPage \ref{generalFortranPage} on
+page~\pageref{generalFortranPage}
+\end{itemize}
+\index{pages!aspSectionPage!ug15.ht}
+\index{ug15.ht!pages!aspSectionPage}
+\index{aspSectionPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{aspSectionPage}{15.3.3. Providing values for Argument Subprograms}
+\beginscroll
+
+There are a number of ways in which users can provide values for argument
+subprograms (ASPs).  At the top level the user will see that NAG routines
+require
+an object from the \axiomType{Union} of a \axiomType{Filename} and an ASP.
+\xtc{
+For example \axiomFun{c05adf} requires an object of type \texht{\linebreak}{}
+\axiomType{Union}(fn: \axiomType{FileName},fp: \axiomType{Asp1 F})
+}{
+\spadpaste{)display operation c05adf}
+}
+
+The user thus has a choice of providing the name of a file containing
+Fortran source code, or of somehow generating the ASP within Axiom.
+If a filename is specified, it is searched for in the {\it local} 
+machine, i.e., the machine that Axiom is running on.
+
+\subsubsection{Providing ASPs via \axiomType{FortranExpression}}
+
+The \axiomType{FortranExpression} domain is used to represent expressions
+which can be translated into Fortran under certain circumstances.    It is
+very similar to \axiomType{Expression} except that only operators which exist
+in Fortran can be used, and only certain variables can occur.
+For
+example the instantiation \axiomType{FortranExpression([X],[M],MachineFloat)}
+is the domain of expressions containing the scalar \axiom{X} and the array
+\axiom{M}.
+\xtc{
+This allows us to create expressions like:
+}{
+\spadpaste{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
+}
+\xtc{
+but not
+}{
+\spadpaste{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
+}
+
+Those ASPs which represent expressions usually export a \axiomFun{coerce} from
+an appropriate instantiation of \axiomType{FortranExpression} (or perhaps
+\axiomType{Vector FortranExpression} etc.).  For convenience there are also
+retractions from appropriate instantiations of \axiomType{Expression},
+\axiomType{Polynomial} and \axiomType{Fraction Polynomial}.
+
+\subsubsection{Providing ASPs via \axiomType{FortranCode}}
+
+\texht{\exptypeindex{FortranCode}}{} \axiomType{FortranCode} allows us
+to build arbitrarily complex ASPs via a kind of pseudo-code.  It is
+described fully in
+\downlink{``\generalFortranTitle''}{generalFortranPage} in Section
+\generalFortranNumber\ignore{generalFortran}.
+
+Every ASP exports two \axiomFun{coerce} functions: one from
+\axiomType{FortranCode} and one from \axiomType{List FortranCode}.
+There is also a \axiomFun{coerce} from \texht{\linebreak}{}
+\axiomType{Record( localSymbols: SymbolTable, code: List FortranCode)}
+which is used for passing extra symbol information about the ASP.
+
+\xtc{
+So for example, to integrate the function abs(x) we could use the built-in
+\axiomFun{abs} function.  But suppose we want to get back to basics and define
+it directly, then we could do the following:
+}{
+\spadpaste{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result }
+}
+The \axiomFunFrom{cond}{FortranCode} operation creates a conditional clause
+and the \axiomFunFrom{assign}{FortranCode} an assignment statement.
+
+\subsubsection{Providing ASPs via \axiomType{FileName}}
+
+Suppose we have created the file ``asp.f'' as follows:
+\begin{verbatim}
+      DOUBLE PRECISION FUNCTION F(X)
+      DOUBLE PRECISION X
+      F=4.0D0/(X*X+1.0D0)
+      RETURN
+      END
+\end{verbatim}
+and wish to pass it to the NAG
+routine \axiomFun{d01ajf} which performs one-dimensional quadrature.
+We can do this as follows:
+\begin{verbatim}
+d01ajf(0.0 ,1.0, 0.0, 1.0e-5, 800, 200, -1, "asp.f")
+\end{verbatim}
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\generalFortranTitle}{General Fortran-generation utilities in Axiom}
+\newcommand{\generalFortranNumber}{15.3.4.}
+
+@
+\section{General Fortran-generation utilities in Axiom}
+\label{generalFortranPage}
+\index{pages!generalFortranPage!ug15.ht}
+\index{ug15.ht!pages!generalFortranPage}
+\index{generalFortranPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{generalFortranPage}
+{15.3.4. General Fortran-generation utilities in Axiom}
+\beginscroll
+
+This section describes more advanced facilities which are available to users
+who wish to generate Fortran code from within Axiom.  There are
+facilities to manipulate templates, store type information, and generate
+code fragments or complete programs.
+
+\subsubsection{Template Manipulation}
+
+A template is a skeletal program which is ``fleshed out'' with data when
+it is processed.  It is a sequence of {\em active} and {\em passive} parts:
+active parts are sequences of Axiom commands which are processed as if they
+had been typed into the interpreter; passive parts are simply echoed
+verbatim on the Fortran output stream.
+
+Suppose, for example, that we have the following template, stored in
+the file ``test.tem'':
+\begin{verbatim}
+-- A simple template
+beginVerbatim
+      DOUBLE PRECISION FUNCTION F(X)
+      DOUBLE PRECISION X
+endVerbatim
+outputAsFortran("F",f)
+beginVerbatim
+      RETURN
+      END
+endVerbatim
+\end{verbatim}
+The passive parts lie between the two
+tokens {\tt beginVerbatim} and \texht{\linebreak}{} {\tt endVerbatim}.  There
+are two active statements: one which is simply an Axiom (
+\texht{\verb+--+}{\-\-})
+comment, and one which produces an assignment to the current value
+of {\tt f}.  We could use it as follows:
+\begin{verbatim}
+(4) ->f := 4.0/(1+X**2)
+
+           4
+   (4)   ------
+          2
+         X  + 1
+                       
+(5) ->processTemplate "test.tem"
+      DOUBLE PRECISION FUNCTION F(X)
+      DOUBLE PRECISION X
+      F=4.0D0/(X*X+1.0D0)
+      RETURN 
+      END
+
+   (5)  "CONSOLE"
+\end{verbatim}
+
+(A more reliable method of specifying the filename will be introduced
+below.)  Note that the Fortran assignment {\tt F=4.0D0/(X*X+1.0D0)}
+automatically converted 4.0 and 1 into DOUBLE PRECISION numbers; in
+general, the Axiom Fortran generation facility will convert
+anything which should be a floating point object into either
+a Fortran REAL or DOUBLE PRECISION object.
+\xtc{
+Which alternative is used is determined by the command
+}{
+\spadpaste{)set fortran precision}
+}
+
+It is sometimes useful to end a template before the file itself ends (e.g. to
+allow the template to be tested incrementally or so that a piece of text
+describing how the template works can be included).  It is of course possible
+to ``comment-out'' the remainder of the file.  Alternatively, the single token
+{\tt endInput} as part of an active portion of the template will cause
+processing to be ended prematurely at that point.
+
+The \axiomFun{processTemplate} command comes in two flavours.  In the first case,
+illustrated above, it takes one argument of domain \axiomType{FileName},
+the name of the template to be processed, and writes its output on the
+current Fortran output stream.  In general, a filename can be generated
+from {\em directory}, {\em name} and {\em extension} components, using
+the operation \axiomFun{filename}, as in
+\begin{verbatim}
+processTemplate filename("","test","tem")
+\end{verbatim}
+There is an alternative version of \axiomFun{processTemplate}, which
+takes two arguments (both of domain \axiomType{FileName}).  In this case the
+first argument is the name of the template to be processed, and the
+second is the file in which to write the results.  Both versions return
+the location of the generated Fortran code as their result
+({\tt "CONSOLE"} in the above example).
+
+It is sometimes useful to be able to mix active and passive parts of a
+line or statement.  For example you might want to generate a Fortran
+Comment describing your data set.  For this kind of application we
+provide three functions as follows:
+\texht
+{
+\begin{tabular}{p{1.8in}p{2.6in}}
+\axiomFun{fortranLiteral} & writes a string on the Fortran output stream \\
+ & \\
+\axiomFun{fortranCarriageReturn} & writes a carriage return on the Fortran output stream \\
+& \\
+\axiomFun{fortranLiteralLine} & writes a string followed by a return
+on the Fortran output stream \\
+\end{tabular}
+}
+{
+\newline
+\axiomFun{fortranLiteral}\tab{25}writes a string on the Fortran output stream\newline
+\axiomFun{fortranCarriageReturn}\tab{25}writes a carriage return on the Fortran output stream\newline
+\axiomFun{fortranLiteralLine}\tab{25}writes a string followed by a return on the Fortran output stream\newline
+}
+\xtc{
+So we could create our comment as follows:
+}{
+\spadpaste{m := matrix [[1,2,3],[4,5,6]]\bound{m}}
+}
+\xtc{
+}{
+\spadpaste{fortranLiteralLine concat ["C\ \ \ \ \ \ The\ Matrix\ has\ ", nrows(m)::String, "\ rows\ and\ ", ncols(m)::String, "\ columns"]\free{m}}
+}
+\xtc{
+or, alternatively:
+}{
+\spadpaste{fortranLiteral "C\ \ \ \ \ \ The\ Matrix\ has\ "}
+}
+\xtc{
+}{
+\spadpaste{fortranLiteral(nrows(m)::String)}
+}
+\xtc{
+}{
+\spadpaste{fortranLiteral "\ rows\ and\ "}
+}
+\xtc{
+}{
+\spadpaste{fortranLiteral(ncols(m)::String)\free{m}}
+}
+\xtc{
+}{
+\spadpaste{fortranLiteral "\ columns"}
+}
+\xtc{
+}{
+\spadpaste{fortranCarriageReturn()}
+}
+
+We should stress that these functions, together with the \axiomFun{outputAsFortran}
+function are the {\em only} sure ways
+of getting output to appear on the Fortran output stream.  Attempts to use
+Axiom commands such as \axiomFun{output} or \axiomFunX{writeline} may appear to give
+the required result when displayed on the console, but will give the wrong
+result when Fortran and algebraic output are sent to differing locations.  On
+the other hand, these functions can be used to send helpful messages to the
+user, without interfering with the generated Fortran.
+
+\subsubsection{Manipulating the Fortran Output Stream}
+\texht{\exptypeindex{FortranOutputStackPackage}}{}
+
+Sometimes it is useful to manipulate the Fortran output stream in a program,
+possibly without being aware of its current value.  The main use of this is
+for gathering type declarations (see ``Fortran Types'' below) but it can be useful
+in other contexts as well.  Thus we provide a set of commands to manipulate
+a stack of (open) output streams.  Only one stream can be written to at
+any given time.  The stack is never empty---its initial value is the
+console or the current value of the Fortran output stream, and can be
+determined using
+\xtc{
+}{
+\spadpaste{topFortranOutputStack()}
+}
+(see below).
+The commands available to manipulate the stack are:
+\texht{
+\begin{tabular}{ll}
+\axiomFun{clearFortranOutputStack} & resets the stack to the console \\
+ & \\
+\axiomFun{pushFortranOutputStack} & pushes a \axiomType{FileName} onto the stack \\
+ & \\
+\axiomFun{popFortranOutputStack} & pops the stack \\
+ & \\
+\axiomFun{showFortranOutputStack} & returns the current stack \\
+ & \\
+\axiomFun{topFortranOutputStack} & returns the top element of the stack \\
+\end{tabular}
+}
+{
+\newline
+\axiomFun{clearFortranOutputStack}\tab{25}resets the stack\newline
+\axiomFun{pushFortranOutputStack}\tab{25}pushes a \axiomType{FileName} onto the stack\newline
+\axiomFun{popFortranOutputStack}\tab{25}pops the stack\newline
+\axiomFun{showFortranOutputStack}\tab{25}returns the current stack\newline
+\axiomFun{topFortranOutputStack}\tab{25}returns the top element of the stack\newline
+}
+These commands are all part of \axiomType{FortranOutputStackPackage}.
+
+\subsubsection{Fortran Types}
+
+When generating code it is important to keep track of the Fortran types of
+the objects which we are generating.  This is useful for a number of reasons,
+not least to ensure that we are actually generating legal Fortran code.  The
+current type system is built up in several layers, and we shall describe each
+in turn.
+
+\subsubsection{FortranScalarType}
+\texht{\exptypeindex{FortranScalarType}}{}
+
+This domain represents the simple Fortran datatypes: REAL, DOUBLE PRECISION,
+COMPLEX, LOGICAL, INTEGER, and CHARACTER.
+It is possible to \axiomFun{coerce} a \axiomType{String} or \axiomType{Symbol}
+into the domain, test whether two objects are equal, and also apply
+the predicate functions \axiomFunFrom{real?}{FortranScalarType} etc.
+
+\subsubsection{FortranType}
+\texht{\exptypeindex{FortranType}}{}
+
+This domain represents ``full'' types: i.e., datatype plus array dimensions
+(where appropriate) plus whether or not the parameter is an external
+subprogram.  It is possible to \axiomFun{coerce} an object of
+\axiomType{FortranScalarType} into the domain or \axiomFun{construct} one
+from an element of \axiomType{FortranScalarType}, a list of
+\axiomType{Polynomial Integer}s (which can of course be simple integers or
+symbols) representing its dimensions, and
+a \axiomType{Boolean} declaring whether it is external or not.  The list
+of dimensions must be empty if the \axiomType{Boolean} is {\tt true}.
+The functions \axiomFun{scalarTypeOf}, \axiomFun{dimensionsOf} and
+\axiomFun{external?} return the appropriate
+parts, and it is possible to get the various basic Fortran Types via
+functions like \axiomFun{fortranReal}.
+\xtc{
+For example:
+}{
+\spadpaste{type:=construct(real,[i,10],false)$FortranType}
+}
+\xtc{
+or
+}{
+\spadpaste{type:=[real,[i,10],false]$FortranType\bound{type}}
+}
+\xtc{
+}{
+\spadpaste{scalarTypeOf type\free{type}}
+}
+\xtc{
+}{
+\spadpaste{dimensionsOf type\free{type}}
+}
+\xtc{
+}{
+\spadpaste{external?  type\free{type}}
+}
+\xtc{
+}{
+\spadpaste{fortranLogical()}
+}
+\xtc{
+}{
+\spadpaste{construct(integer,[],true)$FortranType}
+}
+
+\subsubsection{SymbolTable}
+\texht{\exptypeindex{SymbolTable}}{}
+
+This domain creates and manipulates a symbol table for generated Fortran code.
+This is used by \axiomType{FortranProgram} to represent the types of objects in
+a subprogram.  The commands available are:
+\texht{
+\begin{tabular}{ll}
+\axiomFun{empty} & creates a new \axiomType{SymbolTable} \\
+ & \\
+\axiomFunX{declare} & creates a new entry in a table \\
+ & \\
+\axiomFun{fortranTypeOf} & returns the type of an object in a table \\
+ & \\
+\axiomFun{parametersOf} & returns a list of all the symbols in the table \\
+ & \\
+\axiomFun{typeList} & returns a list of all objects of a given type \\
+ & \\
+\axiomFun{typeLists} & returns a list of lists of all objects sorted by type \\
+ & \\
+\axiomFun{externalList} & returns a list of all {\tt EXTERNAL} objects \\
+ & \\
+\axiomFun{printTypes} & produces Fortran type declarations from a table\\
+\end{tabular}
+}
+{
+\newline
+\axiomFun{empty}\tab{25}creates a new \axiomType{SymbolTable}\newline
+\axiomFunX{declare}\tab{25}creates a new entry in a table \newline
+\axiomFun{fortranTypeOf}\tab{25}returns the type of an object in a table \newline
+\axiomFun{parametersOf}\tab{25}returns a list of all the symbols in the table \newline
+\axiomFun{typeList}\tab{25}returns a list of all objects of a given type \newline
+\axiomFun{typeLists}\tab{25}returns a list of lists of all objects sorted by type \newline
+\axiomFun{externalList}\tab{25}returns a list of all {\tt EXTERNAL} objects \newline
+\axiomFun{printTypes}\tab{25}produces Fortran type declarations from a table\newline
+}
+\xtc{
+}{
+\spadpaste{symbols := empty()$SymbolTable\bound{symbols}}
+}
+\xtc{
+}{
+\spadpaste{declare!(X,fortranReal(),symbols)\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{declare!([i,j],fortranInteger(),symbols)\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{symbols\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{fortranTypeOf(i,symbols)\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{typeList(real,symbols)\free{symbols}}
+}
+\xtc{
+}{
+\spadpaste{printTypes symbols\free{symbols}}
+}
+
+\subsubsection{TheSymbolTable}
+\texht{\exptypeindex{TheSymbolTable}}{}
+
+This domain creates and manipulates one global symbol table to be used, for
+example, during template processing. It is
+also used when
+linking to external Fortran routines. The
+information stored for each subprogram (and the main program segment, where
+relevant) is:
+\indent{4}
+\beginitems
+\item[-] its name;
+\item[-] its return type;
+\item[-] its argument list;
+\item[-] and its argument types.
+\enditems
+\indent{0}
+Initially, any information provided is deemed to be for the main program
+segment.
+\xtc{
+Issuing the following command indicates that from now on all information
+refers to the subprogram \axiom{F}.
+}{
+\spadpaste{newSubProgram F}
+}
+\xtc{
+It is possible to return to processing the main program segment by issuing
+the command:
+}{
+\spadpaste{endSubProgram()}
+}
+The following commands exist:
+\texht{
+\begin{tabular}{p{1.6in}p{2.8in}}
+\axiomFunX{returnType} & declares the return type of the current subprogram \\
+ & \\
+\axiomFun{returnTypeOf} & returns the return type of a subprogram \\
+ & \\
+\axiomFunX{argumentList} &  declares the argument list of the current subprogram \\
+ & \\
+\axiomFun{argumentListOf} &  returns the argument list of a subprogram \\
+ & \\
+\axiomFunX{declare} & provides type declarations for parameters of the current subprogram \\
+ & \\
+\axiomFun{symbolTableOf} & returns the symbol table  of a subprogram \\
+ & \\
+\axiomFun{printHeader} & produces the Fortran header for the current subprogram \\
+\end{tabular}
+}
+{
+\newline
+\axiomFunX{returnType}\tab{25}declares the return type of the current subprogram \newline
+\axiomFun{returnTypeOf}\tab{25}returns the return type of a subprogram \newline
+\axiomFunX{argumentList}\tab{25}declares the argument list of the current subprogram \newline
+\axiomFun{argumentListOf}\tab{25}returns the argument list of a subprogram \newline
+\axiomFunX{declare}\tab{25}provides type declarations for parameters of the current subprogram \newline
+\axiomFun{symbolTableOf}\tab{25}returns the symbol table  of a subprogram \newline
+\axiomFun{printHeader}\tab{25}produce the Fortran header for the current subprogram \newline
+}
+In addition there are versions of these commands which are parameterised by
+the name of a subprogram, and others parameterised by both the name of a
+subprogram and by an instance of \axiomType{TheSymbolTable}.
+\xtc{
+}{
+\spadpaste{newSubProgram F \bound{forPleasure}}
+}
+\xtc{
+}{
+\spadpaste{argumentList!(F,[X])\free{forPleasure}}
+}
+\xtc{
+}{
+\spadpaste{returnType!(F,real)\free{forPleasure}}
+}
+\xtc{
+}{
+\spadpaste{declare!(X,fortranReal(),F)\free{forPleasure}}
+}
+\xtc{
+}{
+\spadpaste{printHeader F\free{forPleasure}}
+}
+
+\subsubsection{Advanced Fortran Code Generation}
+
+This section describes facilities for representing Fortran statements, and
+building up complete subprograms from them.
+
+\subsubsection{Switch}
+\texht{\exptypeindex{Switch}}{}
+
+This domain is used to represent statements like {\tt x < y}.  Although
+these can be represented directly in Axiom, it is a little cumbersome,
+since Axiom evaluates the last statement, for example, to \axiom{true}
+(since \axiom{x} is  lexicographically less than \axiom{y}).
+
+Instead we have a set of operations, such as \axiomFun{LT} to represent \axiom{<},
+to let us build such statements.  The available constructors are:
+\texht{
+\centerline{{\begin{tabular}{ll}}}
+\centerline{{\axiomFun{LT} & $<$ }}
+\centerline{{\axiomFun{GT} & $>$ }}
+\centerline{{\axiomFun{LE} & $\leq$ }}
+\centerline{{\axiomFun{GE} & $\geq$ }}
+\centerline{{\axiomFun{EQ} & $=$ }}
+\centerline{{\axiomFun{AND} & $and$}}
+\centerline{{\axiomFun{OR} & $or$ }}
+\centerline{{\axiomFun{NOT} & $not$ }}
+\centerline{{\end{tabular}}}
+}
+{
+\newline
+\axiomFun{LT}\tab{25}\texht{$<$}{<} \newline
+\axiomFun{GT}\tab{25}\texht{$>$}{>} \newline
+\axiomFun{LE}\tab{25}\texht{$\leq$}{<=} \newline
+\axiomFun{GE}\tab{25}\texht{$\geq$}{>=} \newline
+\axiomFun{EQ}\tab{25}\texht{$=$}{=} \newline
+\axiomFun{AND}\tab{25}\texht{$and$}{{\tt and}}\newline
+\axiomFun{OR}\tab{25}\texht{$or$}{{\tt or}} \newline
+\axiomFun{NOT}\tab{25}\texht{$not$}{{\tt not}} \newline
+}
+\xtc{
+So for example:
+}{
+\spadpaste{LT(x,y)}
+}
+
+\subsubsection{FortranCode}
+
+This domain represents code segments or operations: currently assignments,
+conditionals, blocks, comments, gotos, continues, various kinds of loops,
+and return statements.
+\xtc{
+For example we can create quite a complicated conditional statement using
+assignments, and then turn it into Fortran code:
+}{
+\spadpaste{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c}}
+}
+\xtc{
+}{
+\spadpaste{printCode c\free{c}}
+}
+
+The Fortran code is printed
+on the current Fortran output stream.
+
+\subsubsection{FortranProgram}
+\texht{\exptypeindex{FortranProgram}}{}
+
+This domain is used to construct complete Fortran subprograms out of
+elements of \axiomType{FortranCode}.  It is parameterised by the name of the
+target subprogram (a \axiomType{Symbol}), its return type (from
+\axiomType{Union}(\axiomType{FortranScalarType},``void'')),
+its arguments (from \axiomType{List Symbol}), and
+its symbol table (from \axiomType{SymbolTable}).  One can
+\axiomFun{coerce} elements of either \axiomType{FortranCode}
+or \axiomType{Expression} into it.
+
+\xtc{
+First of all we create a symbol table:
+}{
+\spadpaste{symbols := empty()$SymbolTable\bound{symbols}}
+}
+\xtc{
+Now put some type declarations into it:
+}{
+\spadpaste{declare!([X,Y],fortranReal(),symbols)\free{symbols}}
+}
+\xtc{
+Then (for convenience)
+we set up the particular instantiation of \axiomType{FortranProgram}
+}{
+\spadpaste{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols}\bound{FP}}
+}
+\xtc{
+Create an object of type \axiomType{Expression(Integer)}:
+}{
+\spadpaste{asp := X*sin(Y)\bound{asp}}
+}
+\xtc{
+Now \axiomFun{coerce} it into \axiomType{FP}, and print its Fortran form:
+}{
+\spadpaste{outputAsFortran(asp::FP)\free{FP asp}}
+}
+
+We can generate a \axiomType{FortranProgram} using \axiom{FortranCode}.  For
+example:
+\xtc{
+Augment our symbol table:
+}{
+\spadpaste{declare!(Z,fortranReal(),symbols)\free{symbols}\bound{Z}}
+}
+\xtc{
+and transform the conditional expression we prepared earlier:
+}{
+\spadpaste{outputAsFortran([c,returns()]::FP) \free{FP c Z}}
+}
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\nagTechnicalTitle}{Some technical information}
+\newcommand{\nagTechnicalNumber}{15.3.5.}
+
+@
+\section{Some technical information}
+\label{nagTechnicalPage}
+\index{pages!nagTechnicalPage!ug15.ht}
+\index{ug15.ht!pages!nagTechnicalPage}
+\index{nagTechnicalPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{nagTechnicalPage}{15.3.5. Some technical information}
+\beginscroll
+%------------------------------------------------------------------------
+
+The model adopted for the link is a server-client configuration
+-- Axiom acting as a client via a local agent
+(a process called {\tt nagman}). The server side is implemented
+by the {\tt nagd} daemon process which may run on a different host.
+The {\tt nagman} local agent is started by default whenever you
+start Axiom. The {\tt nagd} server must be started separately.
+Instructions for installing and running the server are supplied
+in the NAG documentation.
+Use the \spadcmd{)set naglink host} system command
+to point your local agent to a server in your network.
+
+On the Axiom side, one sees a set of {\em packages}
+(ask \Browse{} for {\em Nag*}) for each chapter, each exporting
+operations with the same name as a routine in the \naglib{}.
+The arguments and return value of each operation belong to
+standard Axiom types.
+
+The {\tt man} pages for the \naglib{} are accessible via the description
+of each operation in \Browse{} (among other places).
+
+In the implementation of each operation, the set of inputs is passed
+to the local agent {\tt nagman}, which makes a
+Remote Procedure Call (RPC) to the
+remote {\tt nagd} daemon process.  The local agent receives the RPC
+results and forwards them to the Axiom workspace where they
+are interpreted appropriately.
+
+How are Fortran subroutines turned into RPC calls?  For each Fortran
+routine in the \naglib{}, a C main() routine is supplied.  Its job is
+to assemble the RPC input (numeric) data stream into the appropriate
+Fortran data structures for the routine, call the Fortran routine from
+C and serialize the results into an RPC output data stream.
+
+Many \naglib{} routines accept ASPs (Argument Subprogram Parameters).
+These specify user-supplied Fortran routines (e.g. a routine to
+supply values of a function is required for numerical integration).
+How are they handled? There are new facilities in Axiom to help.
+A set of Axiom domains has been provided to turn values in standard
+ Axiom types (such as Expression Integer) into the appropriate
+piece of Fortran for each case (a filename pointing to Fortran source
+for the ASP can always be supplied instead).
+Ask \Browse{} for {\em Asp*} to see these domains. The Fortran fragments
+are included in the outgoing RPC stream, but {\tt nagd} intercepts them,
+compiles them, and links them with the main() C program before executing
+the resulting program on the numeric part of the RPC stream.
+
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewLanguageTitle}{Interactive Front-end and Language}
+\newcommand{\ugWhatsNewLanguageNumber}{15.4.}
+
+@
+\section{Interactive Front-end and Language}
+\label{ugWhatsNewLanguagePage}
+\begin{itemize}
+\item ugLangLoopsBreakPage \ref{ugLangLoopsBreakPage} on
+page~\pageref{ugLangLoopsBreakPage}
+\item ugLangBlocksPage \ref{ugLangBlocksPage} on
+page~\pageref{ugLangBlocksPage}
+\end{itemize}
+\index{pages!ugWhatsNewLanguagePage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewLanguagePage}
+\index{ugWhatsNewLanguagePage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewLanguagePage}{15.4. Interactive Front-end and Language}
+\beginscroll
+%------------------------------------------------------------------------
+
+The \axiom{leave} keyword has been replaced by the \axiom{break}
+keyword for compatibility with the new Axiom extension language.  See
+section \downlink{``\ugLangLoopsBreakTitle''}{ugLangLoopsBreakPage} in
+Section \ugLangLoopsBreakNumber\ignore{ugLangLoopsBreak} for more
+information.
+
+Curly braces are no longer used to create sets. Instead, use
+\axiomFun{set} followed by a bracketed expression. For example,
+\xtc{
+}{
+\spadpaste{set [1,2,3,4]}
+}
+
+Curly braces are now used to enclose a block (see section
+\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} in Section
+\ugLangBlocksNumber\ignore{ugLangBlocks} for more information). For
+compatibility, a block can still be enclosed by parentheses as well.
+
+``Free functions'' created by the \axiomxl{} compiler can now be
+loaded and used within the Axiom interpreter. A {\it free
+function} is a library function that is implemented outside a
+domain or category constructor.
+
+New coercions to and from type \axiomType{Expression} have been
+added. For example, it is now possible to map a polynomial
+represented as an expression to an appropriate polynomial type.
+
+Various messages have been added or rewritten for clarity.
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewLibraryTitle}{Library}
+\newcommand{\ugWhatsNewLibraryNumber}{15.5.}
+
+@
+\section{Library}
+\label{ugWhatsNewLibraryPage}
+\begin{itemize}
+\item FullPartialFractionExpansionXmpPage 
+\ref{FullPartialFractionExpansionXmpPage} on
+page~\pageref{FullPartialFractionExpansionXmpPage}
+\end{itemize}
+\index{pages!ugWhatsNewLibraryPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewLibraryPage}
+\index{ugWhatsNewLibraryPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewLibraryPage}{15.5. Library}
+\beginscroll
+%------------------------------------------------------------------------
+
+The \axiomType{FullPartialFractionExpansion}
+domain has been added. This domain computes factor-free full
+partial fraction expansions.
+See section
+\downlink{`FullPartialFractionExpansion'}
+{FullPartialFractionExpansionXmpPage}\ignore{FullPartialFractionExpansion}
+for examples.
+
+We have implemented the Bertrand/Cantor algorithm for integrals of
+hyperelliptic functions. This brings a major speedup for some
+classes of algebraic integrals.
+
+We have implemented a new (direct) algorithm for integrating trigonometric
+functions. This brings a speedup and an improvement in the answer
+quality.
+
+The {\sf SmallFloat} domain has been renamed
+\axiomType{DoubleFloat} and {\sf SmallInteger} has been renamed
+\axiomType{SingleInteger}. The new abbreviations as
+\axiomType{DFLOAT} and \axiomType{SINT}, respectively.
+We have defined the macro {\sf SF}, the old abbreviation for {\sf
+SmallFloat}, to expand to \axiomType{DoubleFloat} and modified
+the documentation and input file examples to use the new names
+and abbreviations. You should do the same in any private Axiom
+files you have.
+
+There are many new categories, domains and packages related to the
+NAG Library Link facility. See the file
+
+\unixcommand{\env{AXIOM}/../../src/algebra/exposed.lsp}{xterm\ -e\ vi\ +"/naglink"\ \env{AXIOM}/../../src/algebra/exposed.lsp}
+
+for a list of constructors in the {\bf naglink} Axiom exposure group.
+
+We have made improvements to the differential equation solvers
+and there is a new facility for solving systems of first-order 
+linear differential equations.
+In particular, an important fix was made to the solver for
+inhomogeneous linear ordinary differential equations that
+corrected the calculation of particular solutions.
+We also made improvements to the polynomial
+and transcendental equation solvers including the
+ability to solve some classes of systems of transcendental
+equations.
+
+The efficiency of power series have been improved and left and right
+expansions of \spad{tan(f(x))} at \spad{x =} a pole of \spad{f(x)}
+can now be computed.
+A number of power series bugs were fixed and the \axiomType{GeneralUnivariatePowerSeries}
+domain was added.
+The power series variable can appear in the coefficients and when this
+happens, you cannot differentiate or integrate the series.  Differentiation
+and integration with respect to other variables is supported.
+
+A domain was added for representing asymptotic expansions of a
+function at an exponential singularity.
+
+For limits, the main new feature is the exponential expansion domain used
+to treat certain exponential singularities.  Previously, such singularities
+were treated in an {\it ad hoc} way and only a few cases were covered.  Now
+Axiom can do things like
+
+\begin{verbatim}
+limit( (x+1)**(x+1)/x**x - x**x/(x-1)**(x-1), x = %plusInfinity)
+\end{verbatim}
+
+in a systematic way.  It only does one level of nesting, though.  In other
+words, we can handle \spad{exp(} some function with a pole \spad{)}, but not
+\texht{\linebreak}{} \spad{exp(exp(} some function with a pole \spad{)).}
+
+The computation of integral bases has been improved through careful
+use of Hermite row reduction. A P-adic algorithm
+for function fields of algebraic curves in finite characteristic has also
+been developed.
+
+Miscellaneous:
+There is improved conversion of definite and indefinite integrals to
+\axiomType{InputForm};
+binomial coefficients are displayed in a new way;
+some new simplifications of radicals have been implemented;
+the operation \spadfun{complexForm} for converting to rectangular coordinates
+has been added;
+symmetric product operations have been added to \axiomType{LinearOrdinaryDifferentialOperator}.
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewHyperDocTitle}{\HyperName}
+\newcommand{\ugWhatsNewHyperDocNumber}{15.6.}
+
+@
+\section{\HyperName}
+\label{ugWhatsNewHyperDocPage}
+\begin{itemize}
+\item ugHyperKeysPage \ref{ugHyperKeysPage} on
+page~\pageref{ugHyperKeysPage}
+\end{itemize}
+\index{pages!ugWhatsNewHyperDocPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewHyperDocPage}
+\index{ugWhatsNewHyperDocPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewHyperDocPage}{15.6. \HyperName}
+\beginscroll
+%------------------------------------------------------------------------
+
+The buttons on the titlebar and scrollbar have been replaced
+with ones which have a 3D effect. You can change the foreground and
+background colors of these ``controls'' by including and modifying
+the following lines in your {\bf .Xdefaults} file.
+\begin{verbatim}
+Axiom.hyperdoc.ControlBackground: White
+Axiom.hyperdoc.ControlForeground: Black
+\end{verbatim}
+
+For various reasons, \HyperName{} sometimes displays a
+secondary window. You can control the size and placement of this
+window by including and modifying
+the following line in your {\bf .Xdefaults} file.
+%
+\begin{verbatim}
+Axiom.hyperdoc.FormGeometry: =950x450+100+0
+\end{verbatim}
+%
+This setting is a standard X Window System geometry specification:
+you are requesting a window 950 pixels wide by 450 deep and placed in
+the upper left corner.
+
+Some key definitions have been changed to conform more closely with
+the CUA guidelines. Press \texht{F9}{\downlink{F9}{ugHyperKeysPage}}
+to see the current definitions.
+
+Input boxes (for example, in the Browser) now accept paste-ins from
+the X Window System. Use the second button to paste in something
+you have previously copied or cut. An example of how you can use this
+is that you can paste the type from an Axiom computation
+into the main Browser input box.
+
+
+%------------------------------------------------------------------------
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug15.ht>>=
+\newcommand{\ugWhatsNewDocumentationTitle}{Documentation}
+\newcommand{\ugWhatsNewDocumentationNumber}{15.7.}
+
+@
+\section{Documentation}
+\label{ugWhatsNewDocumentationPage}
+\begin{itemize}
+\item ugGraphTwoDbuildPage \ref{ugGraphTwoDbuildPage} on
+page~\pageref{ugGraphTwoDbuildPage}
+\item ugGraphTwoDappendPage \ref{ugGraphTwoDappendPage} on
+page~\pageref{ugGraphTwoDappendPage}
+\item ugIntroCallFunPage \ref{ugIntroCallFunPage} on
+page~\pageref{ugIntroCallFunPage}
+\item ugUserRulesPage \ref{ugUserRulesPage} on
+page~\pageref{ugUserRulesPage}
+\end{itemize}
+\index{pages!ugWhatsNewDocumentationPage!ug15.ht}
+\index{ug15.ht!pages!ugWhatsNewDocumentationPage}
+\index{ugWhatsNewDocumentationPage!ug15.ht!pages}
+<<ug15.ht>>=
+\begin{page}{ugWhatsNewDocumentationPage}{15.7. Documentation}
+\beginscroll
+%------------------------------------------------------------------------
+\texht{
+We describe here a few additions to the on-line
+version of the Axiom book which you can read with
+HyperDoc.
+}{}
+
+A section has been added to the graphics chapter, describing how to
+build \twodim{} graphs from lists of points. An example is given
+showing how to read the points from a file.  See section
+\downlink{``\ugGraphTwoDbuildTitle''}{ugGraphTwoDbuildPage} in Section
+\ugGraphTwoDbuildNumber\ignore{ugGraphTwoDbuild} for details.
+
+A further section has been added to that same chapter, describing how
+to add a \twodim{} graph to a viewport which already contains other
+graphs.  See section
+\downlink{``\ugGraphTwoDappendTitle''}{ugGraphTwoDappendPage} in
+Section \ugGraphTwoDappendNumber\ignore{ugGraphTwoDappend} for
+details.
+
+Chapter 3 
+and the on-line \HyperName{} help have been unified.
+
+An explanation of operation names ending in ``?'' and ``!'' has been
+added to the first chapter.  See the end of the section
+\downlink{``\ugIntroCallFunTitle''}{ugIntroCallFunPage} in Section
+\ugIntroCallFunNumber\ignore{ugIntroCallFun} for details.
+
+An expanded explanation of using predicates has been added to the
+sixth chapter. See the example involving \userfun{evenRule} in the
+middle of the section
+\downlink{``\ugUserRulesTitle''}{ugUserRulesPage} in Section
+\ugUserRulesNumber\ignore{ugUserRules} for details.
+
+Documentation for the \spadcmd{)compile}, \spadcmd{)library} and
+\spadcmd{)load} commands has been greatly changed. This reflects
+the ability of the \spadcmd{)compile} to now invoke the \axiomxl{}
+compiler, the impending deletion of the \spadcmd{)load} command
+and the new \spadcmd{)library} command.
+The \spadcmd{)library} command replaces \spadcmd{)load} and is
+compatible with the compiled output from both the old and new
+compilers.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 16 (ug16.ht)}
+<<ug16.ht>>=
+\newcommand{\lanb}{{\tt [}}
+\newcommand{\ranb}{{\tt ]}}
+\newcommand{\vertline}{\texht{$|$}{{\tt |}}}
+\newcommand{\ugSysCmdTitle}{Axiom System Commands}
+\newcommand{\ugSysCmdNumber}{B.}
+
+@
+\section{Axiom System Commands}
+\label{ugSysCmdPage}
+\begin{itemize}
+\item ugSysCmdOverviewPage \ref{ugSysCmdOverviewPage} on
+page~\pageref{ugSysCmdOverviewPage}
+\item ugSysCmdabbreviationPage \ref{ugSysCmdabbreviationPage} on
+page~\pageref{ugSysCmdabbreviationPage}
+\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
+page~\pageref{ugSysCmdbootPage}
+\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
+page~\pageref{ugSysCmdcdPage}
+\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
+page~\pageref{ugSysCmdclosePage}
+\item ugSysCmdclearPage \ref{ugSysCmdclearPage} on
+page~\pageref{ugSysCmdclearPage}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
+page~\pageref{ugSysCmddisplayPage}
+\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
+page~\pageref{ugSysCmdeditPage}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\item ugSysCmdframePage \ref{ugSysCmdframePage} on
+page~\pageref{ugSysCmdframePage}
+\item ugSysCmdhelpPage \ref{ugSysCmdhelpPage} on
+page~\pageref{ugSysCmdhelpPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
+page~\pageref{ugSysCmdlibraryPage}
+\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
+page~\pageref{ugSysCmdlispPage}
+\item ugSysCmdloadPage \ref{ugSysCmdloadPage} on
+page~\pageref{ugSysCmdloadPage}
+\item ugSysCmdltracePage \ref{ugSysCmdltracePage} on
+page~\pageref{ugSysCmdltracePage}
+\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
+page~\pageref{ugSysCmdpquitPage}
+\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
+page~\pageref{ugSysCmdquitPage}
+\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
+page~\pageref{ugSysCmdreadPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
+page~\pageref{ugSysCmdshowPage}
+\item ugSysCmdspoolPage \ref{ugSysCmdspoolPage} on
+page~\pageref{ugSysCmdspoolPage}
+\item ugSysCmdsynonymPage \ref{ugSysCmdsynonymPage} on
+page~\pageref{ugSysCmdsynonymPage}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
+page~\pageref{ugSysCmdtracePage}
+\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
+page~\pageref{ugSysCmdundoPage}
+\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
+page~\pageref{ugSysCmdwhatPage}
+\end{itemize}
+\index{pages!ugSysCmdPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdPage}
+\index{ugSysCmdPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdPage}{B. Axiom System Commands}
+\beginscroll
+
+\texht{\bgroup\baselineskip 10pt\ixpt{}\def\Isize{\SIsize}}{}
+
+This chapter describes system commands, the command-line
+facilities used to control the Axiom environment.
+The first section is an introduction and discusses the common
+syntax of the commands available.
+
+\table{
+  { \downlink{\menuitemstyle{A.1. Introduction}}{ugSysCmdOverviewPage} }
+  { \downlink{\menuitemstyle{A.2. )abbreviation}}{ugSysCmdabbreviationPage} }
+  { \downlink{\menuitemstyle{A.3. )boot}}{ugSysCmdbootPage} }
+  { \downlink{\menuitemstyle{A.4. )cd}}{ugSysCmdcdPage} }
+  { \downlink{\menuitemstyle{A.5. )close}}{ugSysCmdclosePage} }
+  { \downlink{\menuitemstyle{A.6. )clear}}{ugSysCmdclearPage} }
+  { \downlink{\menuitemstyle{A.7. )compile}}{ugSysCmdcompilePage} }
+  { \downlink{\menuitemstyle{A.8. )display}}{ugSysCmddisplayPage} }
+  { \downlink{\menuitemstyle{A.9. )edit}}{ugSysCmdeditPage} }
+  { \downlink{\menuitemstyle{A.10. )fin}}{ugSysCmdfinPage} }
+  { \downlink{\menuitemstyle{A.11. )frame}}{ugSysCmdframePage} }
+  { \downlink{\menuitemstyle{A.12. )help}}{ugSysCmdhelpPage} }
+  { \downlink{\menuitemstyle{A.13. )history}}{ugSysCmdhistoryPage} }
+  { \downlink{\menuitemstyle{A.14. )library}}{ugSysCmdlibraryPage} }
+  { \downlink{\menuitemstyle{A.15. )lisp}}{ugSysCmdlispPage} }
+  { \downlink{\menuitemstyle{A.16. )load}}{ugSysCmdloadPage} }
+  { \downlink{\menuitemstyle{A.17. )ltrace}}{ugSysCmdltracePage} }
+  { \downlink{\menuitemstyle{A.18. )pquit}}{ugSysCmdpquitPage} }
+  { \downlink{\menuitemstyle{A.19. )quit}}{ugSysCmdquitPage} }
+  { \downlink{\menuitemstyle{A.20. )read}}{ugSysCmdreadPage} }
+  { \downlink{\menuitemstyle{A.21. )set}}{ugSysCmdsetPage} }
+  { \downlink{\menuitemstyle{A.22. )show}}{ugSysCmdshowPage} }
+  { \downlink{\menuitemstyle{A.23. )spool}}{ugSysCmdspoolPage} }
+  { \downlink{\menuitemstyle{A.24. )synonym}}{ugSysCmdsynonymPage} }
+  { \downlink{\menuitemstyle{A.25. )system}}{ugSysCmdsystemPage} }
+  { \downlink{\menuitemstyle{A.26. )trace}}{ugSysCmdtracePage} }
+  { \downlink{\menuitemstyle{A.27. )undo}}{ugSysCmdundoPage} }
+  { \downlink{\menuitemstyle{A.28. )what}}{ugSysCmdwhatPage} }
+}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdOverviewTitle}{Introduction}
+\newcommand{\ugSysCmdOverviewNumber}{B.1.}
+
+@
+\section{Introduction}
+\label{ugSysCmdOverviewPage}
+\begin{itemize}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\end{itemize}
+\index{pages!ugSysCmdOverviewPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdOverviewPage}
+\index{ugSysCmdOverviewPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdOverviewPage}{B.1. Introduction}
+\beginscroll
+
+System commands are used to perform Axiom environment management.
+Among the commands are those that display what has been defined or
+computed, set up multiple logical Axiom environments (frames), clear
+definitions, read files of expressions and commands, show what
+functions are available, and terminate Axiom.
+
+Some commands are restricted: the commands
+\begin{verbatim}
+)set userlevel interpreter
+)set userlevel compiler
+)set userlevel development
+\end{verbatim}
+set the user-access level to the three possible choices.  All commands
+are available at {\tt development} level and the fewest are available
+at {\tt interpreter} level.  The default user-level is {\tt
+interpreter}.  In addition to the \spadcmd{)set} command (discussed in
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} in Section
+\ugSysCmdsetNumber\ignore{ugSysCmdset}) you can use the \HyperName{}
+settings facility to change the {\it user-level.}  \texht{}{Click on
+\lispmemolink{Settings}{(|htSystemVariables|)} here to immediately go
+to the settings facility.}
+
+Each command listing begins with one or more syntax pattern
+descriptions plus examples of related commands.  The syntax
+descriptions are intended to be easy to read and do not necessarily
+represent the most compact way of specifying all possible arguments
+and options; the descriptions may occasionally be redundant.
+
+All system commands begin with a right parenthesis which should be in
+the first available column of the input line (that is, immediately
+after the input prompt, if any).  System commands may be issued
+directly to Axiom or be included in {\bf .input} files.
+
+A system command {\it argument} is a word that directly follows the
+command name and is not followed or preceded by a right parenthesis.
+A system command {\it option} follows the system command and is
+directly preceded by a right parenthesis.  Options may have arguments:
+they directly follow the option.  This example may make it easier to
+remember what is an option and what is an argument:
+
+\centerline{{{\tt )syscmd {\it arg1 arg2} )opt1 {\it opt1arg1 opt1arg2} )opt2 {\it opt2arg1} ...}}}
+
+In the system command descriptions, optional arguments and options are
+enclosed in brackets (``\lanb'' and ``\ranb'').  If an argument or
+option name is in italics, it is meant to be a variable and must have
+some actual value substituted for it when the system command call is
+made.  For example, the syntax pattern description
+
+\noindent
+{\tt )read} {\it fileName} {\tt \lanb{})quietly\ranb{}}
+
+\noindent
+would imply that you must provide an actual file name for
+{\it fileName} but need not use the {\tt )quietly} option.
+Thus
+\begin{verbatim}
+)read matrix.input
+\end{verbatim}
+is a valid instance of the above pattern.
+
+System command names and options may be abbreviated and may be in
+upper or lower case.
+The case of actual arguments may be significant, depending on the
+particular situation (such as in file names).
+System command names and options may be abbreviated to the minimum
+number of starting letters so that the name or option is unique.
+Thus
+\begin{verbatim}
+)s Integer
+\end{verbatim}
+is not a valid abbreviation for the {\tt )set} command,
+because both {\tt )set} and {\tt )show}
+begin with the letter ``s''.
+Typically, two or three letters are sufficient for disambiguating names.
+In our descriptions of the commands, we have used no abbreviations for
+either command names or options.
+
+In some syntax descriptions we use a vertical line ``\vertline''
+to indicate that you must specify one of the listed choices.
+For example, in
+\begin{verbatim}
+)set output fortran on | off
+\end{verbatim}
+only {\tt on} and {\tt off} are acceptable words for following
+{\tt boot}.
+We also sometimes use ``...'' to indicate that additional arguments
+or options of the listed form are allowed.
+Finally, in the syntax descriptions we may also list the syntax of
+related commands.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdabbreviationTitle}{)abbreviation}
+\newcommand{\ugSysCmdabbreviationNumber}{B.2.}
+
+@
+\section{)abbreviation}
+\label{ugSysCmdabbreviationPage}
+\index{pages!ugSysCmdabbreviationPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdabbreviationPage}
+\index{ugSysCmdabbreviationPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdabbreviationPage}{B.2. )abbreviation}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} compiler
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )abbreviation query  \lanb{}{\it nameOrAbbrev}\ranb{}}
+\item {\tt )abbreviation category  {\it abbrev  fullname} \lanb{})quiet\ranb{}}
+\item {\tt )abbreviation domain  {\it abbrev  fullname}   \lanb{})quiet\ranb{}}
+\item {\tt )abbreviation package  {\it abbrev  fullname}  \lanb{})quiet\ranb{}}
+\item {\tt )abbreviation remove  {\it nameOrAbbrev}}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to query, set and remove abbreviations for category,
+domain and package constructors.
+Every constructor must have a unique abbreviation.
+This abbreviation is part of the name of the subdirectory
+under which the components of the compiled constructor are
+stored.
+Furthermore, by issuing this command you
+let the system know what file to load automatically if you use a new
+constructor.
+Abbreviations must start with a letter and then be followed by
+up to seven letters or digits.
+Any letters appearing in the abbreviation must be in uppercase.
+
+When used with the {\tt query} argument,
+this command may be used to list the name
+associated with a  particular abbreviation or the  abbreviation for a
+constructor.
+If no abbreviation or name is given, the names and corresponding
+abbreviations for {\it all} constructors are listed.
+
+The following shows the abbreviation for the constructor \spadtype{List}:
+\begin{verbatim}
+)abbreviation query List
+\end{verbatim}
+The following shows the constructor name corresponding to the
+abbreviation \spadtype{NNI}:
+\begin{verbatim}
+)abbreviation query NNI
+\end{verbatim}
+The following lists all constructor names and their abbreviations.
+\begin{verbatim}
+)abbreviation query
+\end{verbatim}
+
+To add an abbreviation for a constructor, use this command with
+{\tt category}, {\tt domain} or {\tt package}.
+The following add abbreviations to the system for a
+category, domain and package, respectively:
+\begin{verbatim}
+)abbreviation domain   SET Set
+)abbreviation category COMPCAT  ComplexCategory
+)abbreviation package  LIST2MAP ListToMap
+\end{verbatim}
+If the {\tt )quiet} option is used,
+no output is displayed from this command.
+You would normally only define an abbreviation in a library source file.
+If this command is issued for a constructor that has already been loaded, the
+constructor will be reloaded next time it is referenced.  In particular, you
+can use this command to force the automatic reloading of constructors.
+
+To remove an abbreviation, the {\tt remove} argument is used.
+This is usually
+only used to correct a previous command that set an abbreviation for a
+constructor name.
+If, in fact, the abbreviation does exist, you are prompted
+for confirmation of the removal request.
+Either of the following commands
+will remove the abbreviation \spadtype{VECTOR2} and the
+constructor name \spadtype{VectorFunctions2} from the system:
+\begin{verbatim}
+)abbreviation remove VECTOR2
+)abbreviation remove VectorFunctions2
+\end{verbatim}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
+in section \ugSysCmdcompileNumber
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdbootTitle}{)boot}
+\newcommand{\ugSysCmdbootNumber}{B.3.}
+
+@
+\section{)boot}
+\label{ugSysCmdbootPage}
+\begin{itemize}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
+page~\pageref{ugSysCmdlispPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\end{itemize}
+\index{pages!ugSysCmdbootPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdbootPage}
+\index{ugSysCmdbootPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdbootPage}{B.3. )boot}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} development
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )boot} {\it bootExpression}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used by Axiom system developers to execute
+expressions written in the BOOT language.
+For example,
+\begin{verbatim}
+)boot times3(x) == 3*x
+\end{verbatim}
+creates and compiles the \Lisp{} function ``times3''
+obtained by translating the BOOT code.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} in 
+section \ugSysCmdfinNumber
+\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} in 
+section \ugSysCmdlispNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} in 
+section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} in 
+section \ugSysCmdsystemNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdcdTitle}{)cd}
+\newcommand{\ugSysCmdcdNumber}{B.4.}
+
+@
+\section{)cd}
+\label{ugSysCmdcdPage}
+\begin{itemize}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
+page~\pageref{ugSysCmdeditPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
+page~\pageref{ugSysCmdlibraryPage}
+\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
+page~\pageref{ugSysCmdreadPage}
+\item ugSysCmdspoolPage \ref{ugSysCmdspoolPage} on
+page~\pageref{ugSysCmdspoolPage}
+\end{itemize}
+\index{pages!ugSysCmdcdPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdcdPage}
+\index{ugSysCmdcdPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdcdPage}{B.4. )cd}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )cd} {\it directory}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command sets the Axiom working current directory.
+The current directory is used for looking for
+input files (for {\tt )read}),
+Axiom library source files (for {\tt )compile}),
+saved history environment files (for {\tt )history )restore}),
+compiled Axiom library files (for \spadcmd{)library}), and
+files to edit (for {\tt )edit}).
+It is also used for writing
+spool files (via {\tt )spool}),
+writing history input files (via {\tt )history )write}) and
+history environment files (via {\tt )history )save}),and
+compiled Axiom library files (via {\tt )compile}).
+
+If issued with no argument, this command sets the Axiom
+current directory to your home directory.
+If an argument is used, it must be a valid directory name.
+Except for the ``{\tt )}'' at the beginning of the command,
+this has the same syntax as the operating system {\tt cd} command.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in 
+section \ugSysCmdcompileNumber
+\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} in 
+section \ugSysCmdeditNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} in 
+section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdlibraryTitle''}{ugSysCmdlibraryPage} in 
+section \ugSysCmdlibraryNumber
+\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} in 
+section \ugSysCmdreadNumber
+\downlink{``\ugSysCmdspoolTitle''}{ugSysCmdspoolPage} in 
+section \ugSysCmdspoolNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdcloseTitle}{)close}
+\newcommand{\ugSysCmdcloseNumber}{B.5.}
+
+@
+\section{)close}
+\label{ugSysCmdclosePage}
+\begin{itemize}
+\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
+page~\pageref{ugSysCmdquitPage}
+\end{itemize}
+\index{pages!ugSysCmdclosePage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdclosePage}
+\index{ugSysCmdclosePage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdclosePage}{B.5. )close}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )close}
+\item{\tt )close )quietly}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is used to close down interpreter client processes.
+Such processes are started by \HyperName{} to run Axiom examples
+when you click on their text. When you have finished examining or modifying the
+example and you do not want the extra window around anymore, issue
+\begin{verbatim}
+)close
+\end{verbatim}
+to the Axiom prompt in the window.
+
+If you try to close down the last remaining interpreter client
+process, Axiom will offer to close down the entire Axiom
+session and return you to the operating system by displaying something
+like
+\begin{verbatim}
+   This is the last Axiom session. Do you want to kill Axiom?
+\end{verbatim}
+Type "y" (followed by the Return key) if this is what you had in mind.
+Type "n" (followed by the Return key) to cancel the command.
+
+You can use the {\tt )quietly} option to force Axiom to
+close down the interpreter client process without closing down
+the entire Axiom session.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} in 
+section \ugSysCmdquitNumber
+\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} in 
+section \ugSysCmdpquitNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdclearTitle}{)clear}
+\newcommand{\ugSysCmdclearNumber}{B.6.}
+
+@
+\section{)clear}
+\label{ugSysCmdclearPage}
+\begin{itemize}
+\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
+page~\pageref{ugSysCmddisplayPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
+page~\pageref{ugSysCmdundoPage}
+\end{itemize}
+\index{pages!ugSysCmdclearPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdclearPage}
+\index{ugSysCmdclearPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdclearPage}{B.6. )clear}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )clear all}
+\item{\tt )clear completely}
+\item{\tt )clear properties all}
+\item{\tt )clear properties}  {\it obj1 \lanb{}obj2 ...\ranb{}}
+\item{\tt )clear value      all}
+\item{\tt )clear value}     {\it obj1 \lanb{}obj2 ...\ranb{}}
+\item{\tt )clear mode       all}
+\item{\tt )clear mode}      {\it obj1 \lanb{}obj2 ...\ranb{}}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is used to remove function and variable declarations, definitions
+and values  from the workspace.
+To  empty the entire workspace  and reset the
+step counter to 1, issue
+\begin{verbatim}
+)clear all
+\end{verbatim}
+To remove everything in the workspace but not reset the step counter, issue
+\begin{verbatim}
+)clear properties all
+\end{verbatim}
+To remove everything about the object {\tt x}, issue
+\begin{verbatim}
+)clear properties x
+\end{verbatim}
+To remove everything about the objects {\tt x, y} and {\tt f}, issue
+\begin{verbatim}
+)clear properties x y f
+\end{verbatim}
+
+The word {\tt properties} may be abbreviated to the single letter
+``{\tt p}''.
+\begin{verbatim}
+)clear p all
+)clear p x
+)clear p x y f
+\end{verbatim}
+All definitions of functions and values of variables may be removed by either
+\begin{verbatim}
+)clear value all
+)clear v all
+\end{verbatim}
+This retains whatever declarations the objects had.  To remove definitions and
+values for the specific objects {\tt x, y} and {\tt f}, issue
+\begin{verbatim}
+)clear value x y f
+)clear v x y f
+\end{verbatim}
+To remove  the declarations  of everything while  leaving the  definitions and
+values, issue
+\begin{verbatim}
+)clear mode  all
+)clear m all
+\end{verbatim}
+To remove declarations for the specific objects {\tt x, y} and {\tt f}, issue
+\begin{verbatim}
+)clear mode x y f
+)clear m x y f
+\end{verbatim}
+The {\tt )display names} and {\tt )display properties} commands  may be used
+to see what is currently in the workspace.
+
+The command
+\begin{verbatim}
+)clear completely
+\end{verbatim}
+does everything that {\tt )clear all} does, and also clears the internal
+system function and constructor caches.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
+in section \ugSysCmddisplayNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdundoTitle''}{ugSysCmdundoPage} 
+in section \ugSysCmdundoNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdcompileTitle}{)compile}
+\newcommand{\ugSysCmdcompileNumber}{B.7.}
+
+@
+\section{)compile}
+\label{ugSysCmdcompilePage}
+\begin{itemize}
+\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
+page~\pageref{ugSysCmdcdPage}
+\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
+page~\pageref{ugSysCmdtracePage}
+\item ugSysCmdabbreviationPage \ref{ugSysCmdabbreviationPage} on
+page~\pageref{ugSysCmdabbreviationPage}
+\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
+page~\pageref{ugSysCmdeditPage}
+\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
+page~\pageref{ugSysCmdlibraryPage}
+\end{itemize}
+\index{pages!ugSysCmdcompilePage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdcompilePage}
+\index{ugSysCmdcompilePage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdcompilePage}{B.7. )compile}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} compiler
+
+\par\noindent{\bf Command Syntax:}
+
+\begin{items}
+\item {\tt )compile}
+\item {\tt )compile {\it fileName}}
+\item {\tt )compile {\it fileName}.as}
+\item {\tt )compile {\it directory/fileName}.as}
+\item {\tt )compile {\it fileName}.ao}
+\item {\tt )compile {\it directory/fileName}.ao}
+\item {\tt )compile {\it fileName}.al}
+\item {\tt )compile {\it directory/fileName}.al}
+\item {\tt )compile {\it fileName}.lsp}
+\item {\tt )compile {\it directory/fileName}.lsp}
+\item {\tt )compile {\it fileName}.spad}
+\item {\tt )compile {\it directory/fileName}.spad}
+\item {\tt )compile {\it fileName} )new}
+\item {\tt )compile {\it fileName} )old}
+\item {\tt )compile {\it fileName} )translate}
+\item {\tt )compile {\it fileName} )quiet}
+\item {\tt )compile {\it fileName} )noquiet}
+\item {\tt )compile {\it fileName} )moreargs}
+\item {\tt )compile {\it fileName} )onlyargs}
+\item {\tt )compile {\it fileName} )break}
+\item {\tt )compile {\it fileName} )nobreak}
+\item {\tt )compile {\it fileName} )library}
+\item {\tt )compile {\it fileName} )nolibrary}
+\item {\tt )compile {\it fileName} )vartrace}
+\item {\tt )compile {\it fileName} )constructor} {\it nameOrAbbrev}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+You use this command to invoke the new Axiom library compiler or
+the old Axiom system compiler.
+The {\tt )compile} system command is actually a combination of
+Axiom processing and a call to the \axiomxl{} compiler.
+It is performing double-duty, acting as a front-end to
+both the \axiomxl{} compiler and the old Axiom system
+compiler.
+(The old Axiom system compiler was written in Lisp and was
+an integral part of the Axiom environment.
+The \axiomxl{} compiler is written in C and executed by the operating system
+when called from within Axiom.)
+
+The command compiles files with file extensions {\it .as, .ao}
+and {\it .al} with the
+\axiomxl{} compiler and files with file extension {\it .spad} with the
+old Axiom system compiler.
+It also can compile files with file extension {\it .lsp}. These
+are assumed to be Lisp files genererated by the \axiomxl{}
+compiler.
+If you omit the file extension, the command looks to see if you
+have specified the {\tt )new} or {\tt )old} option.
+If you have given one of these options, the corresponding compiler
+is used.
+Otherwise, the command first looks in the standard system
+directories for files with extension {\it .as, .ao} and {\it
+.al} and then files with extension {\it .spad}.
+The first file found has the appropriate compiler invoked on it.
+If the command cannot find a matching file, an error message is
+displayed and the command terminates.
+
+The {\tt )translate} option is used to invoke a special version
+of the old system compiler that will translate a {\it .spad} file
+to a {\it .as} file. That is, the {\it .spad} file will be parsed and
+analyzed and a file using the new syntax will be created. By default,
+the {\it .as} file is created in the same directory as the
+{\it .spad} file. If that directory is not writable, the current
+directory is used. If the current directory is not writable, an
+error message is given and the command terminates.
+Note that {\tt )translate} implies the {\tt )old} option so the
+file extension can safely be omitted. If {\tt )translate} is
+given, all other options are ignored.
+Please be aware that the translation is not necessarily one
+hundred percent complete or correct.
+You should attempt to compile the output with the \axiomxl{} compiler
+and make any necessary corrections.
+
+We now describe the options for the new \axiomxl{} compiler.
+
+The first thing {\tt )compile} does is look for a source code
+filename among its arguments.
+Thus
+\begin{verbatim}
+)compile mycode.as
+)compile /u/jones/as/mycode.as
+)compile mycode
+\end{verbatim}
+all invoke {\tt )compiler} on the file {\tt
+/u/jones/as/mycode.as} if the current Axiom working
+directory is {\tt /u/jones/as.} (Recall that you can set the
+working directory via the {\tt )cd} command. If you don't set it
+explicitly, it is the directory from which you started
+Axiom.)
+
+This is frequently all you need to compile your file.
+This simple command:
+\indent{4}
+\beginitems
+\item[1. ] Invokes the \axiomxl{} compiler and produces Lisp output.
+\item[2. ] Calls the Lisp compiler if the \axiomxl{} compilation was
+successful.
+\item[3. ] Uses the {\tt )library} command to tell Axiom about
+the contents of your compiled file and arrange to have those
+contents loaded on demand.
+\enditems
+\indent{0}
+
+Should you not want the {\tt )library} command automatically
+invoked, call {\tt )compile} with the {\tt )nolibrary} option.
+For example,
+\begin{verbatim}
+)compile mycode.as )nolibrary
+\end{verbatim}
+
+The general description of \axiomxl{} command line arguments is in
+the \axiomxl{} documentation.
+The default options used by the {\tt )compile} command can be
+viewed and set using the {\tt )set compiler args} Axiom
+system command.
+The current defaults are
+\begin{verbatim}
+-O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom
+\end{verbatim}
+These options mean:
+\indent{4}
+\beginitems
+\item[-] {\tt -O}: perform all optimizations,
+\item[-] {\tt -Fasy}: generate a {\tt .asy} file,
+\item[-] {\tt -Fao}: generate a {\tt .ao} file,
+\item[-] {\tt -Flsp}: generate a {\tt .lsp} (Lisp)
+file,
+\item[-] {\tt -laxiom}: use the {\tt axiom} library {\tt libaxiom.al},
+\item[-] {\tt -Mno-AXL\_W\_WillObsolete}: do not display messages
+about older generated files becoming obsolete, and
+\item[-] {\tt -DAxiom}: define the global assertion {\tt Axiom} so that the
+\axiomxl{} libraries for generating stand-alone code
+are not accidentally used with Axiom.
+\enditems
+\indent{0}
+
+To supplement these default arguments, use the {\tt )moreargs} option on
+{\tt )compile.}
+For example,
+\begin{verbatim}
+)compile mycode.as )moreargs "-v"
+\end{verbatim}
+uses the default arguments and appends the {\tt -v} (verbose)
+argument flag.
+The additional argument specification {\bf must be enclosed in
+double quotes.}
+
+To completely replace these default arguments for a particular
+use of {\tt )compile}, use the {\tt )onlyargs} option.
+For example,
+\begin{verbatim}
+)compile mycode.as )onlyargs "-v -O"
+\end{verbatim}
+only uses the {\tt -v} (verbose) and {\tt -O} (optimize)
+arguments.
+The argument specification {\bf must be enclosed in double quotes.}
+In this example, Lisp code is not produced and so the compilation
+output will not be available to Axiom.
+
+To completely replace the default arguments for all calls to {\tt
+)compile} within your Axiom session, use {\tt )set compiler args.}
+For example, to use the above arguments for all compilations, issue
+\begin{verbatim}
+)set compiler args "-v -O"
+\end{verbatim}
+Make sure you include the necessary {\tt -l} and {\tt -Y}
+arguments along with those needed for Lisp file creation.
+As above, {\bf the argument specification must be enclosed in double
+quotes.}
+
+By default, the {\tt )library} system command {\it exposes} all
+domains and categories it processes.
+This means that the Axiom intepreter will consider those
+domains and categories when it is trying to resolve a reference
+to a function.
+Sometimes domains and categories should not be exposed.
+For example, a domain may just be used privately by another
+domain and may not be meant for top-level use.
+The {\tt )library} command should still be used, though, so that
+the code will be loaded on demand.
+In this case, you should use the {\tt )nolibrary} option on {\tt
+)compile} and the {\tt )noexpose} option in the {\tt )library}
+command. For example,
+\begin{verbatim}
+)compile mycode.as )nolibrary
+)library mycode )noexpose
+\end{verbatim}
+
+Once you have established your own collection of compiled code,
+you may find it handy to use the {\tt )dir} option on the
+{\tt )library} command.
+This causes {\tt )library} to process all compiled code in the
+specified directory. For example,
+\begin{verbatim}
+)library )dir /u/jones/as/quantum
+\end{verbatim}
+You must give an explicit directory after {\tt )dir}, even if you
+want all compiled code in the current working directory
+processed, e.g.
+\begin{verbatim}
+)library )dir .
+\end{verbatim}
+
+The {\tt )compile} command works with several file extensions. We saw
+above what happens when it is invoked on a file with extension {\tt
+.as.} A {\tt .ao} file is a portable binary compiled version of a
+{\tt .as} file, and {\tt )compile} simply passes the {\tt .ao} file
+onto \axiomxl{}. The generated Lisp file is compiled and {\tt )library}
+is automatically called, just as if you had specified a {\tt .as} file.
+
+A {\tt .al} file is an archive file containing {\tt .ao} files. The
+archive is created (on Unix systems) with the {\tt ar} program. When
+{\tt )compile} is given a {\tt .al} file, it creates a directory whose
+name is based on that of the archive. For example, if you issue
+\begin{verbatim}
+)compile mylib.al
+\end{verbatim}
+the directory {\tt mylib.axldir} is created. All
+members of the archive are unarchived into the
+directory and {\tt )compile} is called on each {\tt .ao} file found. It
+is your responsibility to remove the directory and its contents, if you
+choose to do so.
+
+A {\tt .lsp} file is a Lisp source file, presumably, in our context,
+generated by \axiomxl{} when called with the {\tt -Flsp} option. When
+{\tt )compile} is used with a {\tt .lsp} file, the Lisp file is
+compiled and {\tt )library} is called. You must also have present a
+{\tt .asy} generated from the same source file.
+
+The following are descriptions of options for the old system compiler.
+
+You can compile category, domain, and package constructors
+contained in files with file extension {\it .spad}.
+You can compile individual constructors or every constructor
+in a file.
+
+The full filename is remembered between invocations of this command and
+{\tt )edit} commands.
+The sequence of commands
+\begin{verbatim}
+)compile matrix.spad
+)edit
+)compile
+\end{verbatim}
+will call the compiler, edit, and then call the compiler again on the
+file {\bf matrix.spad.}  If you do not specify a {\it directory,} the
+working current directory (see
+\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in Section
+\ugSysCmdcdNumber\ignore{ugSysCmdcd}) is searched for the file.  If
+the file is not found, the standard system directories are searched.
+
+If you do not give any options, all constructors within a file are
+compiled.  Each constructor should have an {\tt )abbreviation} command
+in the file in which it is defined.  We suggest that you place the
+{\tt )abbreviation} commands at the top of the file in the order in
+which the constructors are defined.  The list of commands serves as a
+table of contents for the file.
+
+The {\tt )library} option causes directories containing the compiled
+code for each constructor to be created in the working current
+directory.  The name of such a directory consists of the constructor
+abbreviation and the {\bf .nrlib} file extension.  For example, the
+directory containing the compiled code for the \axiomType{MATRIX}
+constructor is called {\bf MATRIX.nrlib.}  The {\tt )nolibrary} option
+says that such files should not be created.  The default is {\tt
+)library.}  Note that the semantics of {\tt )library} and {\tt
+)nolibrary} for the new \axiomxl{} compiler and for the old system
+compiler are completely different.
+
+The {\tt )vartrace} option causes the compiler to generate extra code
+for the constructor to support conditional tracing of variable
+assignments. (see
+\downlink{``\ugSysCmdtraceTitle''}{ugSysCmdtracePage} in Section
+\ugSysCmdtraceNumber\ignore{ugSysCmdtrace}). Without this option, this
+code is suppressed and one cannot use the {\tt )vars} option for the
+trace command.
+
+The {\tt )constructor} option is used to
+specify a particular constructor to compile.
+All other constructors in the file are ignored.
+The constructor name or abbreviation follows {\tt )constructor.}
+Thus either
+\begin{verbatim}
+)compile matrix.spad )constructor RectangularMatrix
+\end{verbatim}
+or
+\begin{verbatim}
+)compile matrix.spad )constructor RMATRIX
+\end{verbatim}
+compiles  the \axiomType{RectangularMatrix} constructor
+defined in {\bf matrix.spad.}
+
+The {\tt )break} and {\tt )nobreak} options determine what the old
+system compiler does when it encounters an error.  {\tt )break} is the
+default and it indicates that processing should stop at the first
+error.  The value of the {\tt )set break} variable then controls what
+happens.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdabbreviationTitle''}{ugSysCmdabbreviationPage} 
+in section \ugSysCmdabbreviationNumber
+\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} 
+in section \ugSysCmdeditNumber
+\downlink{``\ugSysCmdlibraryTitle''}{ugSysCmdlibraryPage} 
+in section \ugSysCmdlibraryNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmddisplayTitle}{)display}
+\newcommand{\ugSysCmddisplayNumber}{B.8.}
+
+@
+\section{)display}
+\label{ugSysCmddisplayPage}
+\begin{itemize}
+\item ugSysCmdclearPage \ref{ugSysCmdclearPage} on
+page~\pageref{ugSysCmdclearPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
+page~\pageref{ugSysCmdshowPage}
+\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
+page~\pageref{ugSysCmdwhatPage}
+\end{itemize}
+\index{pages!ugSysCmddisplayPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmddisplayPage}
+\index{ugSysCmddisplayPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmddisplayPage}{B.8. )display}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )display all}
+\item {\tt )display properties}
+\item {\tt )display properties all}
+\item {\tt )display properties} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
+\item {\tt )display value all}
+\item {\tt )display value} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
+\item {\tt )display mode all}
+\item {\tt )display mode} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
+\item {\tt )display names}
+\item {\tt )display operations} {\it opName}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is  used to display the contents of  the workspace and
+signatures of functions  with a  given  name.\footnote{A
+\spadgloss{signature} gives the argument and return types of a
+function.}
+
+The command
+\begin{verbatim}
+)display names
+\end{verbatim}
+lists the names of all user-defined  objects in the workspace.  This is useful
+if you do  not wish to see everything  about the objects and need  only be
+reminded of their names.
+
+The commands
+\begin{verbatim}
+)display all
+)display properties
+)display properties all
+\end{verbatim}
+all do  the same thing: show  the values and  types and declared modes  of all
+variables in the  workspace.  If you have defined  functions, their signatures
+and definitions will also be displayed.
+
+To show all information about a  particular variable or user functions,
+for example, something named {\tt d}, issue
+\begin{verbatim}
+)display properties d
+\end{verbatim}
+To just show the value (and the type) of {\tt d}, issue
+\begin{verbatim}
+)display value d
+\end{verbatim}
+To just show the declared mode of {\tt d}, issue
+\begin{verbatim}
+)display mode d
+\end{verbatim}
+
+All modemaps for a given operation  may be
+displayed by using {\tt )display operations}.
+A \spadgloss{modemap} is a collection of information about  a particular
+reference
+to an  operation.  This  includes the  types of the  arguments and  the return
+value, the  location of the  implementation and  any conditions on  the types.
+The modemap may contain patterns.  The following displays the modemaps for the
+operation \spadfunFrom{complex}{ComplexCategory}:
+\begin{verbatim}
+)d op complex
+\end{verbatim}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdclearTitle''}{ugSysCmdclearPage} 
+in section \ugSysCmdclearNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdshowTitle''}{ugSysCmdshowPage} 
+in section \ugSysCmdshowNumber
+\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
+in section \ugSysCmdwhatNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdeditTitle}{)edit}
+\newcommand{\ugSysCmdeditNumber}{B.9.}
+
+@
+\section{)edit}
+\label{ugSysCmdeditPage}
+\begin{itemize}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
+page~\pageref{ugSysCmdreadPage}
+\end{itemize}
+\index{pages!ugSysCmdeditPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdeditPage}
+\index{ugSysCmdeditPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdeditPage}{B.9. )edit}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )edit} \lanb{}{\it filename}\ranb{}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is  used to edit files.
+It works in conjunction  with the {\tt )read}
+and {\tt )compile} commands to remember the name
+of the file on which you are working.
+By specifying the name fully, you  can edit any file you wish.
+Thus
+\begin{verbatim}
+)edit /u/julius/matrix.input
+\end{verbatim}
+will place  you in an editor looking at the  file
+{\tt /u/julius/matrix.input}.
+By default, the editor is {\tt vi},
+but if you have an EDITOR shell environment variable defined, that editor
+will be used.
+When Axiom is running under the X Window System,
+it will try to open a separate {\tt xterm} running your editor if
+it thinks one is necessary.
+For example, under the Korn shell, if you issue
+\begin{verbatim}
+export EDITOR=emacs
+\end{verbatim}
+then the emacs
+editor will be used by \spadcmd{)edit}.
+
+If you do not specify a file name, the last file you edited,
+read or compiled will be used.
+If there is no ``last file'' you will be placed in the editor editing
+an empty unnamed file.
+
+It is possible to use the {\tt )system} command to edit a file directly.
+For example,
+\begin{verbatim}
+)system emacs /etc/rc.tcpip
+\end{verbatim}
+calls {\tt emacs} to edit the file.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
+in section \ugSysCmdsystemNumber
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
+in section \ugSysCmdcompileNumber
+\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} 
+in section \ugSysCmdreadNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdfinTitle}{)fin}
+\newcommand{\ugSysCmdfinNumber}{B.10.}
+
+@
+\section{)fin}
+\label{ugSysCmdfinPage}
+\begin{itemize}
+\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
+page~\pageref{ugSysCmdpquitPage}
+\end{itemize}
+\index{pages!ugSysCmdfinPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdfinPage}
+\index{ugSysCmdfinPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdfinPage}{B.10. )fin}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} development
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )fin}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is used by Axiom
+developers to leave the Axiom system and return
+to the underlying \Lisp{} system.
+To return to Axiom, issue the
+``{\tt (\vertline{}spad\vertline{})}''
+function call to \Lisp{}.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
+in section \ugSysCmdpquitNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdframeTitle}{)frame}
+\newcommand{\ugSysCmdframeNumber}{B.11.}
+
+@
+\section{)frame}
+\label{ugSysCmdframePage}
+\begin{itemize}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\end{itemize}
+\index{pages!ugSysCmdframePage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdframePage}
+\index{ugSysCmdframePage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdframePage}{B.11. )frame}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )frame  new  {\it frameName}}
+\item{\tt )frame  drop  {\it \lanb{}frameName\ranb{}}}
+\item{\tt )frame  next}
+\item{\tt )frame  last}
+\item{\tt )frame  names}
+\item{\tt )frame  import {\it frameName} {\it \lanb{}objectName1 \lanb{}objectName2 ...\ranb{}\ranb{}}}
+\item{\tt )set message frame on \vertline{} off}
+\item{\tt )set message prompt frame}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+A {\it frame} can be thought of as a logical session within the
+physical session that you get when you start the system.  You can
+have as many frames as you want, within the limits of your computer's
+storage, paging space, and so on.
+Each frame has its own {\it step number}, {\it environment} and {\it history.}
+You can have a variable named {\tt a} in one frame and it will
+have nothing to do with anything that might be called {\tt a} in
+any other frame.
+
+Some frames are created by the \HyperName{} program and these can
+have pretty strange names, since they are generated automatically.
+To find out the names
+of all frames, issue
+\begin{verbatim}
+)frame names
+\end{verbatim}
+It will indicate the name of the current frame.
+
+You create a new frame
+``{\bf quark}'' by issuing
+\begin{verbatim}
+)frame new quark
+\end{verbatim}
+The history facility can be turned on by issuing either
+{\tt )set history on} or {\tt )history )on}.
+If the history facility is on and you are saving history information
+in a file rather than in the Axiom environment
+then a history file with filename {\bf quark.axh} will
+be created as you enter commands.
+If you wish to go back to what
+you were doing in the
+``{\bf initial}'' frame, use
+\begin{verbatim}
+)frame next
+\end{verbatim}
+or
+\begin{verbatim}
+)frame last
+\end{verbatim}
+to cycle through the ring of available frames to get back to
+``{\bf initial}''.
+
+If you want to throw
+away a frame (say ``{\bf quark}''), issue
+\begin{verbatim}
+)frame drop quark
+\end{verbatim}
+If you omit the name, the current frame is dropped.
+
+If you do use frames with the history facility on and writing to a file,
+you may want to delete some of the older history files.
+These are directories, so you may want to issue a command like
+{\tt rm -r quark.axh} to the operating system.
+
+You can bring things from another frame by using
+{\tt )frame import}.
+For example, to bring the {\tt f} and {\tt g} from the frame ``{\bf quark}''
+to the current frame, issue
+\begin{verbatim}
+)frame import quark f g
+\end{verbatim}
+If you want everything from the frame ``{\bf quark}'', issue
+\begin{verbatim}
+)frame import quark
+\end{verbatim}
+You will be asked to verify that you really want everything.
+
+There are two {\tt )set} flags
+to make it easier to tell where you are.
+\begin{verbatim}
+)set message frame on | off
+\end{verbatim}
+will print more messages about frames when it is set on.
+By default, it is off.
+\begin{verbatim}
+)set message prompt frame
+\end{verbatim}
+will give a prompt
+that looks like
+\begin{verbatim}
+initial (1) ->
+\end{verbatim}
+when you start up. In this case, the frame name and step make up the
+prompt.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdhelpTitle}{)help}
+\newcommand{\ugSysCmdhelpNumber}{B.12.}
+
+@
+\section{)help}
+\label{ugSysCmdhelpPage}
+\index{pages!ugSysCmdhelpPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdhelpPage}
+\index{ugSysCmdhelpPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdhelpPage}{B.12. )help}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )help}
+\item{\tt )help} {\it commandName}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command displays help information about system commands.
+If you issue
+\begin{verbatim}
+)help
+\end{verbatim}
+then this very text will be shown.
+You can also give the name or abbreviation of a system command
+to display information about it.
+For example,
+\begin{verbatim}
+)help clear
+\end{verbatim}
+will display the description of the {\tt )clear} system command.
+
+All this material is available in the Axiom User Guide
+and in \HyperName{}.
+In \HyperName{}, choose the {\bf Commands} item from the
+{\bf Reference} menu.
+
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdhistoryTitle}{)history}
+\newcommand{\ugSysCmdhistoryNumber}{B.13.}
+
+@
+\section{)history}
+\label{ugSysCmdhistoryPage}
+\begin{itemize}
+\item ugSysCmdframePage \ref{ugSysCmdframePage} on
+page~\pageref{ugSysCmdframePage}
+\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
+page~\pageref{ugSysCmdcdPage}
+\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
+page~\pageref{ugSysCmdreadPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
+page~\pageref{ugSysCmdundoPage}
+\end{itemize}
+\index{pages!ugSysCmdhistoryPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdhistoryPage}
+\index{ugSysCmdhistoryPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdhistoryPage}{B.13. )history}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )history )on}
+\item{\tt )history )off}
+\item{\tt )history )write} {\it historyInputFileName}
+\item{\tt )history )show \lanb{}{\it n}\ranb{} \lanb{}both\ranb{}}
+\item{\tt )history )save} {\it savedHistoryName}
+\item{\tt )history )restore} \lanb{}{\it savedHistoryName}\ranb{}
+\item{\tt )history )reset}
+\item{\tt )history )change} {\it n}
+\item{\tt )history )memory}
+\item{\tt )history )file}
+\item{\tt \%}
+\item{\tt \%\%({\it n})}
+\item{\tt )set history on \vertline{} off}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+The {\it history} facility within Axiom allows you to restore your
+environment to that of another session and recall previous
+computational results.
+Additional commands allow you to review previous
+input lines and to create an {\bf .input} file of the lines typed to
+Axiom.
+
+Axiom saves your input and output if the history facility is
+turned on (which is the default).
+This information is saved if either of
+\begin{verbatim}
+)set history on
+)history )on
+\end{verbatim}
+has been issued.
+Issuing either
+\begin{verbatim}
+)set history off
+)history )off
+\end{verbatim}
+will discontinue the recording of information.
+
+Whether the facility is disabled or not, the value of \spadSyntax{\%}
+in Axiom always refers to the result of the last computation.  If you
+have not yet entered anything, \spadSyntax{\%} evaluates to an object
+of type \spadtype{Variable('\%)}.  The function \spadSyntax{\%\%} may
+be used to refer to other previous results if the history facility is
+enabled.  In that case, {\tt \%\%(n)} is the output from step {\tt n}
+if {\tt n > 0}.  If {\tt n < 0}, the step is computed relative to the
+current step.  Thus {\tt \%\%(-1)} is also the previous step, {\tt
+\%\%(-2)}, is the step before that, and so on.  If an invalid step
+number is given, Axiom will signal an error.
+
+The {\it environment} information can either be saved in a file or
+entirely in memory (the default).  Each frame
+(\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} in Section
+\ugSysCmdframeNumber\ignore{ugSysCmdframe}) has its own history
+database.  When it is kept in a file, some of it may also be kept in
+memory for efficiency.  When the information is saved in a file, the
+name of the file is of the form {\bf FRAME.axh} where ``{\bf FRAME}''
+is the name of the current frame.  The history file is placed in the
+current working directory (see
+\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in Section
+\ugSysCmdcdNumber\ignore{ugSysCmdcd}).  Note that these history
+database files are not text files (in fact, they are directories
+themselves), and so are not in human-readable format.
+
+The options to the {\tt )history} command are as follows:
+
+\indent{0}
+\beginitems
+\item[{\tt )change} {\it n}]
+will set the number of steps that are saved in memory to {\it n}.
+This option only has effect when the history data is maintained in a
+file.
+If you have issued {\tt )history )memory} (or not changed the default)
+there is no need to use {\tt )history )change}.
+
+\item[{\tt )on}]
+will start the recording of information.
+If the workspace is not empty, you will be asked to confirm this
+request.
+If you do so, the workspace will be cleared and history data will begin
+being saved.
+You can also turn the facility on by issuing {\tt )set history on}.
+
+\item[{\tt )off}]
+will stop the recording of information.
+The {\tt )history )show} command will not work after issuing this
+command.
+Note that this command may be issued to save time, as there is some
+performance penalty paid for saving the environment data.
+You can also turn the facility off by issuing {\tt )set history off}.
+
+\item[{\tt )file}]
+indicates that history data should be saved in an external file on disk.
+
+\item[{\tt )memory}]
+indicates that all history data should be kept in memory rather than
+saved in a file.
+Note that if you are computing with very large objects it may not be
+practical to kept this data in memory.
+
+\item[{\tt )reset}]
+will flush the internal list of the most recent workspace calculations
+so that the data structures may be garbage collected by the underlying
+\Lisp{} system.
+Like {\tt )history )change}, this option only has real effect when
+history data is being saved in a file.
+
+\item[{\tt )restore} \lanb{}{\it savedHistoryName}\ranb{}]
+completely clears the environment and restores it to a saved session, if
+possible.
+The {\tt )save} option below allows you to save a session to a file
+with a given name. If you had issued
+{\tt )history )save jacobi}
+the command
+{\tt )history )restore jacobi}
+would clear the current workspace and load the contents of the named
+saved session. If no saved session name is specified, the system looks
+for a file called {\bf last.axh}.
+
+\item[{\tt )save} {\it savedHistoryName}]
+is used to save  a snapshot of the environment in a file.
+This file is placed in the current working directory
+(see \downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} 
+in Section \ugSysCmdcdNumber\ignore{ugSysCmdcd}).
+Use {\tt )history )restore} to restore the environment to the state
+preserved in the file.
+This option also creates an input file containing all the lines of input
+since you created the workspace frame (for example, by starting your
+Axiom session) or last did a \spadcmd{)clear all} or
+\spadcmd{)clear completely}.
+
+\item[{\tt )show} \lanb{}{\it n}\ranb{} \lanb{}{\tt both}\ranb{}]
+can show previous input lines and output results.
+{\tt )show} will display up to twenty of the last input lines
+(fewer if you haven't typed in twenty lines).
+{\tt )show} {\it n} will display up to {\it n} of the last input lines.
+{\tt )show both} will display up to five of the last input lines and
+output results.
+{\tt )show} {\it n} {\tt both} will display up to {\it n} of the last
+input lines and output results.
+
+\item[{\tt )write} {\it historyInputFile}]
+creates an {\bf .input} file with the input lines typed since the start
+of the session/frame or the last {\tt )clear all} or {\tt )clear
+completely}.
+If {\it historyInputFileName} does not 
+contain a period (``.'') in the filename,
+{\bf .input} is appended to it.
+For example,
+{\tt )history )write chaos}
+and
+{\tt )history )write chaos.input}
+both write the input lines to a file called {\bf chaos.input} in your
+current working directory.
+If you issued one or more {\tt )undo} commands,
+{\tt )history )write}
+eliminates all
+input lines backtracked over as a result of {\tt )undo}.
+You can edit this file and then use {\tt )read} to have Axiom process
+the contents.
+\enditems
+\indent{0}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
+in section \ugSysCmdframeNumber
+\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} 
+in section \ugSysCmdreadNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdundoTitle''}{ugSysCmdundoPage} 
+in section \ugSysCmdundoNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdlibraryTitle}{)library}
+\newcommand{\ugSysCmdlibraryNumber}{B.14.}
+
+@
+\section{)library}
+\label{ugSysCmdlibraryPage}
+\begin{itemize}
+\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
+page~\pageref{ugSysCmdcdPage}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmdframePage \ref{ugSysCmdframePage} on
+page~\pageref{ugSysCmdframePage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\end{itemize}
+\index{pages!ugSysCmdlibraryPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdlibraryPage}
+\index{ugSysCmdlibraryPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdlibraryPage}{B.14. )library}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )library {\it libName1  \lanb{}libName2 ...\ranb{}}}
+\item{\tt )library )dir {\it dirName}}
+\item{\tt )library )only {\it objName1  \lanb{}objlib2 ...\ranb{}}}
+\item{\tt )library )noexpose}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command replaces the {\tt )load} system command that
+was available in Axiom releases before version 2.0.
+The \spadcmd{)library} command makes available to Axiom the compiled
+objects in the libraries listed.
+
+For example, if you {\tt )compile dopler.as} in your home
+directory, issue {\tt )library dopler} to have Axiom look
+at the library, determine the category and domain constructors present,
+update the internal database with various properties of the
+constructors, and arrange for the constructors to be
+automatically loaded when needed.
+If the {\tt )noexpose} option has not been given, the
+constructors will be exposed (that is, available) in the current
+frame.
+
+If you compiled a file with the old system compiler, you will
+have an {\it nrlib} present, for example, {\it DOPLER.nrlib,}
+where {\tt DOPLER} is a constructor abbreviation.
+The command {\tt )library DOPLER} will then do the analysis and
+database updates as above.
+
+To tell the system about all libraries in a directory, use
+{\tt )library )dir dirName} where {\tt dirName} is an explicit
+directory.
+You may specify ``.'' as the directory, which means the current
+directory from which you started the system or the one you set
+via the \spadcmd{)cd} command. The directory name is required.
+
+You may only want to tell the system about particular
+constructors within a library. In this case, use the {\tt )only}
+option. The command {\tt )library dopler )only Test1} will only
+cause the {\sf Test1} constructor to be analyzed, autoloaded,
+etc..
+
+Finally, each constructor in a library  are usually automatically exposed when the
+\spadcmd{)library} command is used. Use the {\tt )noexpose}
+option if you not want them exposed. At a later time you can use
+{\tt )set expose add constructor} to expose any hidden
+constructors.
+
+{\bf Note for Axiom beta testers:} At various times this
+command was called {\tt )local} and {\tt )with} before the name
+{\tt )library} became the official name.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in section \ugSysCmdcdNumber
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
+in section \ugSysCmdcompileNumber
+\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
+in section \ugSysCmdframeNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdlispTitle}{)lisp}
+\newcommand{\ugSysCmdlispNumber}{B.15.}
+
+@
+\section{)lisp}
+\label{ugSysCmdlispPage}
+\begin{itemize}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
+page~\pageref{ugSysCmdbootPage}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\end{itemize}
+\index{pages!ugSysCmdlispPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdlispPage}
+\index{ugSysCmdlispPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdlispPage}{B.15. )lisp}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} development
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )lisp} {\it\lanb{}lispExpression\ranb{}}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used by Axiom system developers to have single
+expressions evaluated by the \Lisp{} system on which
+Axiom is built.
+The {\it lispExpression} is read by the \Lisp{} reader and
+evaluated.
+If this expression is not complete (unbalanced parentheses, say), the reader
+will wait until a complete expression is entered.
+
+Since this command is only useful  for evaluating single expressions, the
+{\tt )fin}
+command may be used to  drop out  of Axiom  into \Lisp{}.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
+in section \ugSysCmdsystemNumber
+\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
+in section \ugSysCmdbootNumber
+\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
+in section \ugSysCmdfinNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdloadTitle}{)load}
+\newcommand{\ugSysCmdloadNumber}{B.16.}
+
+@
+\section{)load}
+\label{ugSysCmdloadPage}
+\index{pages!ugSysCmdloadPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdloadPage}
+\index{ugSysCmdloadPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdloadPage}{B.16. )load}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+%% BEGIN OBSOLETE
+%% END OBSOLETE
+
+\par\noindent{\bf Command Description:}
+
+This command is obsolete. Use \spadcmd{)library} instead.
+
+%% BEGIN OBSOLETE
+
+%
+%
+%
+%
+
+%% END OBSOLETE
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdltraceTitle}{)ltrace}
+\newcommand{\ugSysCmdltraceNumber}{B.17.}
+
+@
+\section{)ltrace}
+\label{ugSysCmdltracePage}
+\begin{itemize}
+\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
+page~\pageref{ugSysCmdbootPage}
+\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
+page~\pageref{ugSysCmdlispPage}
+\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
+page~\pageref{ugSysCmdtracePage}
+\end{itemize}
+\index{pages!ugSysCmdltracePage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdltracePage}
+\index{ugSysCmdltracePage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdltracePage}{B.17. )ltrace}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} development
+
+\par\noindent{\bf Command Syntax:}
+
+This command has the same arguments as options as the
+\spadcmd{)trace} command.
+
+\par\noindent{\bf Command Description:}
+
+This command is used by Axiom system developers to trace
+\Lisp{} or
+BOOT functions.
+It is not supported for general use.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
+in section \ugSysCmdbootNumber
+\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
+in section \ugSysCmdlispNumber
+\downlink{``\ugSysCmdtraceTitle''}{ugSysCmdtracePage} 
+in section \ugSysCmdtraceNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdpquitTitle}{)pquit}
+\newcommand{\ugSysCmdpquitNumber}{B.18.}
+
+@
+\section{)pquit}
+\label{ugSysCmdpquitPage}
+\begin{itemize}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
+page~\pageref{ugSysCmdclosePage}
+\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
+page~\pageref{ugSysCmdquitPage}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\end{itemize}
+\index{pages!ugSysCmdpquitPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdpquitPage}
+\index{ugSysCmdpquitPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdpquitPage}{B.18. )pquit}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )pquit}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to terminate Axiom  and return to the
+operating system.
+Other than by redoing all your computations or by
+using the {\tt )history )restore}
+command to try to restore your working environment,
+you cannot return to Axiom in the same state.
+
+{\tt )pquit} differs from the {\tt )quit} in that it always asks for
+confirmation that you want to terminate Axiom (the ``p'' is for
+``protected'').
+When you enter the {\tt )pquit} command, Axiom responds
+%
+\centerline{{Please enter {\bf y} or {\bf yes} if you really want to leave the interactive }}
+\centerline{{environment and return to the operating system:}}
+%
+If you respond with {\tt y} or {\tt yes}, you will see the message
+%
+\centerline{{You are now leaving the Axiom interactive environment. }}
+\centerline{{Issue the command {\bf axiom} to the operating system to start a new session.}}
+%
+and Axiom will terminate and return you to the operating
+system (or the environment from which you invoked the system).
+If you responded with something other than {\tt y} or {\tt yes}, then
+the message
+%
+\centerline{{You have chosen to remain in the Axiom interactive environment.}}
+%
+will be displayed and, indeed, Axiom would still be running.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
+in section \ugSysCmdfinNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdcloseTitle''}{ugSysCmdclosePage} 
+in section \ugSysCmdcloseNumber
+\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
+in section \ugSysCmdquitNumber
+\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
+in section \ugSysCmdsystemNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdquitTitle}{)quit}
+\newcommand{\ugSysCmdquitNumber}{B.19.}
+
+@
+\section{)quit}
+\label{ugSysCmdquitPage}
+\begin{itemize}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
+page~\pageref{ugSysCmdclosePage}
+\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
+page~\pageref{ugSysCmdpquitPage}
+\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
+page~\pageref{ugSysCmdsystemPage}
+\end{itemize}
+\index{pages!ugSysCmdquitPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdquitPage}
+\index{ugSysCmdquitPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdquitPage}{B.19. )quit}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )quit}
+\item{\tt )set quit protected \vertline{} unprotected}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to terminate Axiom  and return to the
+operating system.
+Other than by redoing all your computations or by
+using the {\tt )history )restore}
+command to try to restore your working environment,
+you cannot return to Axiom in the same state.
+
+{\tt )quit} differs from the {\tt )pquit} in that it asks for
+confirmation only if the command
+\begin{verbatim}
+)set quit protected
+\end{verbatim}
+has been issued.
+Otherwise, {\tt )quit} will make Axiom terminate and return you
+to the operating system (or the environment from which you invoked the
+system).
+
+The default setting is {\tt )set quit protected} so that {\tt )quit}
+and {\tt )pquit} behave in the same way.
+If you do issue
+\begin{verbatim}
+)set quit unprotected
+\end{verbatim}
+we
+suggest that you do not (somehow) assign {\tt )quit} to be
+executed when you press, say, a function key.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
+in section \ugSysCmdfinNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+\downlink{``\ugSysCmdcloseTitle''}{ugSysCmdclosePage} 
+in section \ugSysCmdcloseNumber
+\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
+in section \ugSysCmdpquitNumber
+\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
+in section \ugSysCmdsystemNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdreadTitle}{)read}
+\newcommand{\ugSysCmdreadNumber}{B.20.}
+
+@
+\section{)read}
+\label{ugSysCmdreadPage}
+\begin{itemize}
+\item ugInOutInPage \ref{ugInOutInPage} on
+page~\pageref{ugInOutInPage}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
+page~\pageref{ugSysCmdeditPage}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\end{itemize}
+\index{pages!ugSysCmdreadPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdreadPage}
+\index{ugSysCmdreadPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdreadPage}{B.20. )read}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )read} {\it \lanb{}fileName\ranb{}}
+\item {\tt )read} {\it \lanb{}fileName\ranb{}} \lanb{}{\tt )quiet}\ranb{} \lanb{}{\tt )ifthere}\ranb{}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+This command is used to read {\bf .input} files into Axiom.
+The command
+\begin{verbatim}
+)read matrix.input
+\end{verbatim}
+will read the contents of the file {\bf matrix.input} into Axiom.  The
+``.input'' file extension is optional.  See
+\downlink{``\ugInOutInTitle''}{ugInOutInPage} in Section
+\ugInOutInNumber\ignore{ugInOutIn} for more information about {\bf
+.input} files.
+
+This command remembers the previous file you edited, read or compiled.
+If you do not specify a file name, the previous file will be read.
+
+The {\tt )ifthere} option checks to see whether the {\bf .input} file
+exists.  If it does not, the {\tt )read} command does nothing.  If you
+do not use this option and the file does not exist, you are asked to
+give the name of an existing {\bf .input} file.
+
+The {\tt )quiet} option suppresses output while the file is being read.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
+in section \ugSysCmdcompileNumber
+\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} 
+in section \ugSysCmdeditNumber
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdsetTitle}{)set}
+\newcommand{\ugSysCmdsetNumber}{B.21.}
+
+@
+\section{)set}
+\label{ugSysCmdsetPage}
+\begin{itemize}
+\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
+page~\pageref{ugSysCmdquitPage}
+\end{itemize}
+\index{pages!ugSysCmdsetPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdsetPage}
+\index{ugSysCmdsetPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdsetPage}{B.21. )set}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item {\tt )set}
+\item {\tt )set} {\it label1 \lanb{}... labelN\ranb{}}
+\item {\tt )set} {\it label1 \lanb{}... labelN\ranb{} newValue}
+\end{items}
+\par\noindent{\bf Command Description:}
+
+The {\tt )set} command is used to view or set system variables that
+control what messages are displayed, the type of output desired, the
+status of the history facility, the way Axiom user functions are
+cached, and so on.
+Since this collection is very large, we will not discuss them here.
+Rather, we will show how the facility is used.
+We urge you to explore the {\tt )set} options to familiarize yourself
+with how you can modify your Axiom working environment.
+There is a \HyperName{} version of this same facility available from the
+main \HyperName{} menu.
+\texht{}{Click \lispmemolink{here}{(|htSystemVariables|)} to go to it.}
+
+The {\tt )set} command is command-driven with a menu display.
+It is tree-structured.
+To see all top-level nodes, issue {\tt )set} by itself.
+\begin{verbatim}
+)set
+\end{verbatim}
+Variables with values have them displayed near the right margin.
+Subtrees of selections have ``{\tt ...}''
+displayed in the value field.
+For example, there are many kinds of messages, so issue
+{\tt )set message} to see the choices.
+\begin{verbatim}
+)set message
+\end{verbatim}
+The current setting  for the variable that displays
+whether computation times
+are displayed is visible in the menu displayed by the last command.
+To see more information, issue
+\begin{verbatim}
+)set message time
+\end{verbatim}
+This shows that time printing is on now.
+To turn it off, issue
+\begin{verbatim}
+)set message time off
+\end{verbatim}
+
+As noted above, not all settings have so many qualifiers.
+For example, to change the {\tt )quit} command to being unprotected
+(that is, you will not be prompted for verification), you need only issue
+\begin{verbatim}
+)set quit unprotected
+\end{verbatim}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
+in section \ugSysCmdquitNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdshowTitle}{)show}
+\newcommand{\ugSysCmdshowNumber}{B.22.}
+
+@
+\section{)show}
+\label{ugSysCmdshowPage}
+\begin{itemize}
+\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
+page~\pageref{ugSysCmddisplayPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
+page~\pageref{ugSysCmdwhatPage}
+\end{itemize}
+\index{pages!ugSysCmdshowPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdshowPage}
+\index{ugSysCmdshowPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdshowPage}{B.22. )show}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )show {\it nameOrAbbrev}}
+\item{\tt )show {\it nameOrAbbrev} )operations}
+\item{\tt )show {\it nameOrAbbrev} )attributes}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+This command displays information about Axiom
+domain, package and category {\it constructors}.
+If no options are given, the {\tt )operations} option is assumed.
+For example,
+\begin{verbatim}
+)show POLY
+)show POLY )operations
+)show Polynomial
+)show Polynomial )operations
+\end{verbatim}
+each display basic information about the
+\spadtype{Polynomial} domain constructor and then provide a
+listing of operations.
+Since \spadtype{Polynomial} requires a \spadtype{Ring} (for example,
+\spadtype{Integer}) as argument, the above commands all refer
+to a unspecified ring {\tt R}.
+In the list of operations, \spadSyntax{\$} means
+\spadtype{Polynomial(R)}.
+
+The basic information displayed includes the {\it signature}
+of the constructor (the name and arguments), the constructor
+{\it abbreviation}, the {\it exposure status} of the constructor, and the
+name of the {\it library source file} for the constructor.
+
+If operation information about a specific domain is wanted,
+the full or abbreviated domain name may be used.
+For example,
+\begin{verbatim}
+)show POLY INT
+)show POLY INT )operations
+)show Polynomial Integer
+)show Polynomial Integer )operations
+\end{verbatim}
+are among  the combinations that will
+display the operations exported  by the
+domain \spadtype{Polynomial(Integer)} (as opposed to the general
+{\it domain constructor} \spadtype{Polynomial}).
+Attributes may be listed by using the {\tt )attributes} option.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
+in section \ugSysCmddisplayNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
+in section \ugSysCmdwhatNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdspoolTitle}{)spool}
+\newcommand{\ugSysCmdspoolNumber}{B.23.}
+
+@
+\section{)spool}
+\label{ugSysCmdspoolPage}
+\begin{itemize}
+\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
+page~\pageref{ugSysCmdcdPage}
+\end{itemize}
+\index{pages!ugSysCmdspoolPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdspoolPage}
+\index{ugSysCmdspoolPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdspoolPage}{B.23. )spool}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )spool} \lanb{}{\it fileName}\ranb{}
+\item{\tt )spool}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to save {\it (spool)} all Axiom input and output
+into a file, called a {\it spool file.}
+You can only have one spool file active at a time.
+To start spool, issue this command with a filename. For example,
+\begin{verbatim}
+)spool integrate.out
+\end{verbatim}
+To stop spooling, issue {\tt )spool} with no filename.
+
+If the filename is qualified with a directory, then the output will
+be placed in that directory.
+If no directory information is given, the spool file will be placed in the
+{\it current directory.}
+The current directory is the directory from which you started
+Axiom or is the directory you specified using the
+{\tt )cd} command.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in section \ugSysCmdcdNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdsynonymTitle}{)synonym}
+\newcommand{\ugSysCmdsynonymNumber}{B.24.}
+
+@
+\section{)synonym}
+\label{ugSysCmdsynonymPage}
+\begin{itemize}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
+page~\pageref{ugSysCmdwhatPage}
+\end{itemize}
+\index{pages!ugSysCmdsynonymPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdsynonymPage}
+\index{ugSysCmdsynonymPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdsynonymPage}{B.24. )synonym}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )synonym}
+\item{\tt )synonym} {\it synonym fullCommand}
+\item{\tt )what synonyms}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to create short synonyms for system command expressions.
+For example, the following synonyms  might simplify commands you often
+use.
+\begin{verbatim}
+)synonym save         history )save
+)synonym restore      history )restore
+)synonym mail         system mail
+)synonym ls           system ls
+)synonym fortran      set output fortran
+\end{verbatim}
+Once defined, synonyms can be
+used in place of the longer  command expressions.
+Thus
+\begin{verbatim}
+)fortran on
+\end{verbatim}
+is the same as the longer
+\begin{verbatim}
+)set fortran output on
+\end{verbatim}
+To list all defined synonyms, issue either of
+\begin{verbatim}
+)synonyms
+)what synonyms
+\end{verbatim}
+To list, say, all synonyms that contain the substring
+``{\tt ap}'', issue
+\begin{verbatim}
+)what synonyms ap
+\end{verbatim}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
+in section \ugSysCmdwhatNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdsystemTitle}{)system}
+\newcommand{\ugSysCmdsystemNumber}{B.25.}
+
+@
+\section{)system}
+\label{ugSysCmdsystemPage}
+\begin{itemize}
+\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
+page~\pageref{ugSysCmdbootPage}
+\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
+page~\pageref{ugSysCmdfinPage}
+\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
+page~\pageref{ugSysCmdlispPage}
+\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
+page~\pageref{ugSysCmdpquitPage}
+\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
+page~\pageref{ugSysCmdquitPage}
+\end{itemize}
+\index{pages!ugSysCmdsystemPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdsystemPage}
+\index{ugSysCmdsystemPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdsystemPage}{B.25. )system}
+\beginscroll
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )system} {\it cmdExpression}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command may be used to issue commands to the operating system while
+remaining in Axiom.
+The {\it cmdExpression} is passed to the operating system for
+execution.
+
+To get an operating system shell, issue, for example,
+\spadcmd{)system sh}.
+When you enter the key combination,
+\texht{\fbox{\bf Ctrl}--\fbox{\bf D}}{{\bf Ctrl-D}}
+(pressing and holding the
+\texht{\fbox{\bf Ctrl}}{{\bf Ctrl}} key and then pressing the
+\texht{\fbox{\bf D}}{{\bf D}} key)
+the shell will terminate and you will return to Axiom.
+We do not recommend this way of creating a shell because
+\Lisp{} may field some interrupts instead of the shell.
+If possible, use a shell running in another window.
+
+If you execute programs that misbehave you may not be able to return to
+Axiom.
+If this happens, you may have no other choice than to restart
+Axiom and restore the environment via {\tt )history )restore}, if
+possible.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
+in section \ugSysCmdbootNumber
+\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
+in section \ugSysCmdfinNumber
+\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
+in section \ugSysCmdlispNumber
+\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
+in section \ugSysCmdpquitNumber
+\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
+in section \ugSysCmdquitNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdtraceTitle}{)trace}
+\newcommand{\ugSysCmdtraceNumber}{B.26.}
+
+@
+\section{)trace}
+\label{ugSysCmdtracePage}
+\begin{itemize}
+\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
+page~\pageref{ugSysCmdcompilePage}
+\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
+page~\pageref{ugSysCmdbootPage}
+\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
+page~\pageref{ugSysCmdlispPage}
+\item ugSysCmdltracePage \ref{ugSysCmdltracePage} on
+page~\pageref{ugSysCmdltracePage}
+\end{itemize}
+\index{pages!ugSysCmdtracePage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdtracePage}
+\index{ugSysCmdtracePage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdtracePage}{B.26. )trace}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )trace}
+\item{\tt )trace )off}
+
+\item{\tt )trace} {\it function \lanb{}options\ranb{}}
+\item{\tt )trace} {\it constructor \lanb{}options\ranb{}}
+\item{\tt )trace} {\it domainOrPackage \lanb{}options\ranb{}}
+\end{items}
+%
+where options can be one or more of
+%
+\begin{items}
+\item{\tt )after} {\it S-expression}
+\item{\tt )before} {\it S-expression}
+\item{\tt )break after}
+\item{\tt )break before}
+\item{\tt )cond} {\it S-expression}
+\item{\tt )count}
+\item{\tt )count} {\it n}
+\item{\tt )depth} {\it n}
+\item{\tt )local} {\it op1 \lanb{}... opN\ranb{}}
+\item{\tt )nonquietly}
+\item{\tt )nt}
+\item{\tt )off}
+\item{\tt )only} {\it listOfDataToDisplay}
+\item{\tt )ops}
+\item{\tt )ops} {\it op1 \lanb{}... opN \ranb{}}
+\item{\tt )restore}
+\item{\tt )stats}
+\item{\tt )stats reset}
+\item{\tt )timer}
+\item{\tt )varbreak}
+\item{\tt )varbreak} {\it var1 \lanb{}... varN \ranb{}}
+\item{\tt )vars}
+\item{\tt )vars} {\it var1 \lanb{}... varN \ranb{}}
+\item{\tt )within} {\it executingFunction}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to trace the execution of functions that make
+up the Axiom system, functions defined by users,
+and functions from the system library.
+Almost all options are available for each type of function but
+exceptions will be noted below.
+
+To list all functions, constructors, domains and packages that are
+traced, simply issue
+\begin{verbatim}
+)trace
+\end{verbatim}
+To untrace everything that is traced, issue
+\begin{verbatim}
+)trace )off
+\end{verbatim}
+When a function is traced, the default system action is to display
+the arguments to the function and the return value when the
+function is exited.
+Note that if a function is left via an action such as a {\tt THROW}, no
+return value will be displayed.
+Also, optimization of tail recursion may decrease the number of
+times a function is actually invoked and so may cause less trace
+information to be displayed.
+Other information can be displayed or collected when a function is
+traced and this is controlled by the various options.
+Most options will be of interest only to Axiom system
+developers.
+If a domain or package is traced, the default action is to trace
+all functions exported.
+
+Individual interpreter, lisp or boot
+functions can be traced by listing their names after
+{\tt )trace}.
+Any options that are present must follow the functions to be
+traced.
+\begin{verbatim}
+)trace f
+\end{verbatim}
+traces the function {\tt f}.
+To untrace {\tt f}, issue
+\begin{verbatim}
+)trace f )off
+\end{verbatim}
+Note that if a function name contains a special character, it will
+be necessary to escape the character with an underscore
+%
+\begin{verbatim}
+)trace _/D_,1
+\end{verbatim}
+%
+To trace all domains or packages that are or will be created from a particular
+constructor, give the constructor name or abbreviation after
+{\tt )trace}.
+%
+\begin{verbatim}
+)trace MATRIX
+)trace List Integer
+\end{verbatim}
+%
+The first command traces all domains currently instantiated with
+\spadtype{Matrix}.
+If additional domains are instantiated with this constructor
+(for example, if you have used \spadtype{Matrix(Integer)} and
+\spadtype{Matrix(Float)}), they will be automatically traced.
+The second command traces \spadtype{List(Integer)}.
+It is possible to trace individual functions in a domain or
+package.
+See the {\tt )ops} option below.
+
+The following are the general options for the {\tt )trace}
+command.
+
+%!! system command parser doesn't treat general s-expressions correctly,
+%!! I recommand not documenting )after )before and )cond
+\indent{0}
+\beginitems
+%\item[{\tt )after} {\it S-expression}]
+%causes the given \Lisp{} {\it S-expression} to be
+%executed after exiting the traced function.
+
+%\item[{\tt )before} {\it S-expression}]
+%causes the given \Lisp{} {\it S-expression} to be
+%executed before entering the traced function.
+
+\item[{\tt )break after}]
+causes a \Lisp{} break loop to be entered after
+exiting the traced function.
+
+\item[{\tt )break before}]
+causes a \Lisp{} break loop to be entered before
+entering the traced function.
+
+\item[{\tt )break}]
+is the same as \spadcmd{)break before}.
+
+%\item[{\tt )cond} {\it S-expression}]
+%causes trace information to be shown only if the given
+%\Lisp{} {\it S-expression} evaluates to non-NIL.  For
+%example, the following command causes the system function
+%{\tt resolveTT} to be traced but to have the information
+%displayed only if the value of the variable
+%{\tt \$reportBottomUpFlag} is non-NIL.
+%\begin{verbatim}
+%)trace resolveTT )cond \_\$reportBottomUpFlag}
+%\end{verbatim}
+
+\item[{\tt )count}]
+causes the system to keep a count of the number of times the
+traced function is entered.  The total can be displayed with
+{\tt )trace )stats} and cleared with {\tt )trace )stats reset}.
+
+\item[{\tt )count} {\it n}]
+causes information about the traced function to be displayed for
+the first {\it n} executions.  After the \eth{\it n} execution, the
+function is untraced.
+
+\item[{\tt )depth} {\it n}]
+causes trace information to be shown for only {\it n} levels of
+recursion of the traced function.  The command
+\begin{verbatim}
+)trace fib )depth 10
+\end{verbatim}
+will cause the display of only 10 levels of trace information for
+the recursive execution of a user function \userfun{fib}.
+
+\item[{\tt )math}]
+causes the function arguments and return value to be displayed in the
+Axiom monospace two-dimensional math format.
+
+\item[{\tt )nonquietly}]
+causes the display of additional messages when a function is
+traced.
+
+\item[{\tt )nt}]
+This suppresses all normal trace information.  This option is
+useful if the {\tt )count} or {\tt )timer} options are used and
+you are interested in the statistics but not the function calling
+information.
+
+\item[{\tt )off}]
+causes untracing of all or specific functions.  Without an
+argument, all functions, constructors, domains and packages are
+untraced.  Otherwise, the given functions and other objects
+are untraced.  To
+immediately retrace the untraced functions, issue {\tt )trace
+)restore}.
+
+\item[{\tt )only} {\it listOfDataToDisplay}]
+causes only specific trace information to be shown.  The items are
+listed by using the following abbreviations:
+\indent{0}
+\beginitems
+\item[a]        display all arguments
+\item[v]        display return value
+\item[1]        display first argument
+\item[2]        display second argument
+\item[15]       display the 15th argument, and so on
+\enditems
+\indent{0}
+\enditems
+\indent{0}
+\indent{0}
+\beginitems
+
+\item[{\tt )restore}]
+causes the last untraced functions to be retraced.  If additional
+options are present, they are added to those previously in effect.
+
+\item[{\tt )stats}]
+causes the display of statistics collected by the use of the
+{\tt )count} and {\tt )timer} options.
+
+\item[{\tt )stats reset}]
+resets to 0 the statistics collected by the use of the
+{\tt )count} and {\tt )timer} options.
+
+\item[{\tt )timer}]
+causes the system to keep a count of execution times for the
+traced function.  The total can be displayed with {\tt )trace
+)stats} and cleared with {\tt )trace )stats reset}.
+
+%!! only for lisp, boot, may not work in any case, recommend removing
+%\item[{\tt )varbreak}]
+%causes a \Lisp{} break loop to be entered after
+%the assignment to any variable in the traced function.
+
+\item[{\tt )varbreak} {\it var1 \lanb{}... varN\ranb{}}]
+causes a \Lisp{} break loop to be entered after
+the assignment to any of the listed variables in the traced
+function.
+
+\item[{\tt )vars}]
+causes the display of the value of any variable after it is assigned
+in the traced function.  Note that library code must have been
+compiled (see
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in Section
+\ugSysCmdcompileNumber\ignore{ugSysCmdcompile}) using the {\tt
+)vartrace} option in order to support this option.
+
+\item[{\tt )vars} {\it var1 \lanb{}... varN\ranb{}}]
+causes the display of the value of any of the specified variables
+after they are assigned in the traced function.  Note that library
+code must have been compiled (see
+\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in Section
+\ugSysCmdcompileNumber\ignore{ugSysCmdcompile}) using the {\tt
+)vartrace} option in order to support this option.
+
+\item[{\tt )within} {\it executingFunction}]
+causes the display of trace information only if the traced
+function is called when the given {\it executingFunction} is running.
+\enditems
+\indent{0}
+
+The following are the options for tracing constructors, domains
+and packages.
+
+\indent{0}
+\beginitems
+\item[{\tt )local} {\it \lanb{}op1 \lanb{}... opN\ranb{}\ranb{}}]
+causes local functions of the constructor to be traced.  Note that
+to untrace an individual local function, you must use the fully
+qualified internal name, using the escape character
+\spadSyntax{\_} before the semicolon.
+\begin{verbatim}
+)trace FRAC )local
+)trace FRAC_;cancelGcd )off
+\end{verbatim}
+
+\item[{\tt )ops} {\it op1 \lanb{}... opN\ranb{}}]
+By default, all operations from a domain or package are traced
+when the domain or package is traced.  This option allows you to
+specify that only particular operations should be traced.  The
+command
+%
+\begin{verbatim}
+)trace Integer )ops min max _+ _-
+\end{verbatim}
+%
+traces four operations from the domain \spadtype{Integer}.  Since
+{\tt +} and {\tt -} are special
+characters, it is necessary
+to escape them with an underscore.
+\enditems
+\indent{0}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
+in section \ugSysCmdbootNumber
+\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
+in section \ugSysCmdlispNumber
+\downlink{``\ugSysCmdltraceTitle''}{ugSysCmdltracePage} 
+in section \ugSysCmdltraceNumber
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdundoTitle}{)undo}
+\newcommand{\ugSysCmdundoNumber}{B.27.}
+
+@
+\section{)undo}
+\label{ugSysCmdundoPage}
+\begin{itemize}
+\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
+page~\pageref{ugSysCmdhistoryPage}
+\end{itemize}
+\index{pages!ugSysCmdundoPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdundoPage}
+\index{ugSysCmdundoPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdundoPage}{B.27. )undo}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )undo}
+\item{\tt )undo} {\it integer}
+\item{\tt )undo} {\it integer \lanb{}option\ranb{}}
+\item{\tt )undo} {\tt )redo}
+\end{items}
+%
+where {\it option} is one of
+%
+\begin{items}
+\item{\tt )after}
+\item{\tt )before}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to
+restore the state of the user environment to an earlier
+point in the interactive session.
+The argument of an {\tt )undo} is an integer which must designate some
+step number in the interactive session.
+
+\begin{verbatim}
+)undo n
+)undo n )after
+\end{verbatim}
+These commands return the state of the interactive
+environment to that immediately after step {\tt n}.
+If {\tt n} is a positive number, then {\tt n} refers to step nummber
+{\tt n}. If {\tt n} is a negative number, it refers to the \eth{\tt n}
+previous command (that is, undoes the effects of the last \smath{-n}
+commands).
+
+A {\tt )clear all} resets the {\tt )undo} facility.
+Otherwise, an {\tt )undo} undoes the effect of {\tt )clear} with
+options {\tt properties}, {\tt value}, and {\tt mode}, and
+that of a previous {\tt undo}.
+If any such system commands are given between steps \smath{n} and
+\smath{n + 1} (\smath{n > 0}), their effect is undone
+for {\tt )undo m} for any \texht{\smath{0 < m \leq n}.}{0 < m <= n}.
+
+The command {\tt )undo} is equivalent to {\tt )undo -1} (it undoes
+the effect of the previous user expression).
+The command {\tt )undo 0} undoes any of the above system commands
+issued since the last user expression.
+
+\begin{verbatim}
+)undo n )before
+\end{verbatim}
+This command returns the state of the interactive
+environment to that immediately before step {\tt n}.
+Any {\tt )undo} or {\tt )clear} system commands
+given before step {\tt n} will not be undone.
+
+\begin{verbatim}
+)undo )redo
+\end{verbatim}
+This command reads the file {\tt redo.input}.
+created by the last {\tt )undo} command.
+This file consists of all user input lines, excluding those
+backtracked over due to a previous {\tt )undo}.
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
+in section \ugSysCmdhistoryNumber
+The command {\tt )history )write} will eliminate the ``undone'' command
+lines of your program.
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug16.ht>>=
+\newcommand{\ugSysCmdwhatTitle}{)what}
+\newcommand{\ugSysCmdwhatNumber}{B.28.}
+
+@
+\section{)what}
+\label{ugSysCmdwhatPage}
+\begin{itemize}
+\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
+page~\pageref{ugSysCmddisplayPage}
+\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
+page~\pageref{ugSysCmdsetPage}
+\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
+page~\pageref{ugSysCmdshowPage}
+\end{itemize}
+\index{pages!ugSysCmdwhatPage!ug16.ht}
+\index{ug16.ht!pages!ugSysCmdwhatPage}
+\index{ugSysCmdwhatPage!ug16.ht!pages}
+<<ug16.ht>>=
+\begin{page}{ugSysCmdwhatPage}{B.28. )what}
+\beginscroll
+
+
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{items}
+\item{\tt )what categories} {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what commands  } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what domains   } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what operations} {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what packages  } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what synonym   } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )what things    } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\item{\tt )apropos        } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
+\end{items}
+
+\par\noindent{\bf Command Description:}
+
+This command is used to display lists of things in the system.  The
+patterns are all strings and, if present, restrict the contents of the
+lists.  Only those items that contain one or more of the strings as
+substrings are displayed.  For example,
+\begin{verbatim}
+)what synonym
+\end{verbatim}
+displays all command synonyms,
+\begin{verbatim}
+)what synonym ver
+\end{verbatim}
+displays all command synonyms containing the substring ``{\tt ver}'',
+\begin{verbatim}
+)what synonym ver pr
+\end{verbatim}
+displays all command synonyms
+containing the substring  ``{\tt ver}'' or  the substring
+``{\tt pr}''.
+Output similar to the following will be displayed
+\begin{verbatim}
+---------------- System Command Synonyms -----------------
+
+user-defined synonyms satisfying patterns:
+      ver pr
+
+  )apr ........................... )what things
+  )apropos ....................... )what things
+  )prompt ........................ )set message prompt
+  )version ....................... )lisp *yearweek*
+\end{verbatim}
+
+Several other things can be listed with the {\tt )what} command:
+
+\indent{0}
+\beginitems
+\item[{\tt categories}] displays a list of category constructors.
+\item[{\tt commands}]  displays a list of  system commands available  at your
+user-level.
+Your user-level
+is set via the  {\tt )set userlevel} command.
+To get a description of a particular command, such as ``{\tt )what}'', issue
+{\tt )help what}.
+\item[{\tt domains}]   displays a list of domain constructors.
+\item[{\tt operations}] displays a list of operations in  the system library.
+It  is recommended that you  qualify this command with one or
+more patterns, as there are thousands of operations available.  For
+example, say you are looking for functions that involve computation of
+eigenvalues.  To find their names, try {\tt )what operations eig}.
+A rather large list of operations  is loaded into the workspace when
+this command  is first issued.  This  list will be deleted  when you
+clear the workspace  via {\tt )clear all} or {\tt )clear completely}.
+It will be re-created if it is needed again.
+\item[{\tt packages}]  displays a list of package constructors.
+\item[{\tt synonym}]  lists system command synonyms.
+\item[{\tt things}]    displays all  of the  above types for  items containing
+the pattern strings as  substrings.
+The command synonym  {\tt )apropos} is equivalent to
+{\tt )what things}.
+\enditems
+\indent{0}
+
+\par\noindent{\bf Also See:}
+\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
+in section \ugSysCmddisplayNumber
+\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
+in section \ugSysCmdsetNumber
+\downlink{``\ugSysCmdshowTitle''}{ugSysCmdshowPage} 
+in section \ugSysCmdshowNumber
+
+\texht{\egroup}{}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Users Guide Chapter 21 (ug21.ht)}
+<<ug21.ht>>=
+\newcommand{\ugAppGraphicsTitle}{Programs for Axiom Images}
+\newcommand{\ugAppGraphicsNumber}{G.}
+
+@
+\section{Programs for Axiom Images}
+\label{ugAppGraphicsPage}
+\index{pages!ugAppGraphicsPage!ug21.ht}
+\index{ug21.ht!pages!ugAppGraphicsPage}
+\index{ugAppGraphicsPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugAppGraphicsPage}{G. Programs for Axiom Images}
+\beginscroll
+%
+This appendix contains the Axiom programs used to generate
+the images in the \Gallery{} color insert of this book.
+All these input files are included
+with the Axiom system.
+To produce the images
+on page 6 of the \Gallery{} insert, for example, issue the command:
+\begin{verbatim}
+)read images6
+\end{verbatim}
+
+These images were produced on an IBM RS/6000 model 530 with a
+standard color graphics adapter.  The smooth shaded images
+were made from X Window System screen dumps.
+The remaining images were produced with Axiom-generated
+PostScript output.  The images were reproduced from slides made on an Agfa
+ChromaScript PostScript interpreter with a Matrix Instruments QCR camera.
+
+\beginmenu
+    \menudownlink{{F.1. images1.input}}{ugFimagesOnePage}
+    \menudownlink{{F.2. images2.input}}{ugFimagesTwoPage}
+    \menudownlink{{F.3. images3.input}}{ugFimagesThreePage}
+    \menudownlink{{F.4. images5.input}}{ugFimagesFivePage}
+    \menudownlink{{F.5. images6.input}}{ugFimagesSixPage}
+    \menudownlink{{F.6. images7.input}}{ugFimagesSevenPage}
+    \menudownlink{{F.7. images8.input}}{ugFimagesEightPage}
+    \menudownlink{{F.8. conformal.input}}{ugFconformalPage}
+    \menudownlink{{F.9. tknot.input}}{ugFtknotPage}
+    \menudownlink{{F.10. ntube.input}}{ugFntubePage}
+    \menudownlink{{F.11. dhtri.input}}{ugFdhtriPage}
+    \menudownlink{{F.12. tetra.input}}{ugFtetraPage}
+    \menudownlink{{F.13. antoine.input}}{ugFantoinePage}
+    \menudownlink{{F.14. scherk.input}}{ugFscherkPage}
+\endmenu
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesOneTitle}{images1.input}
+\newcommand{\ugFimagesOneNumber}{G.1.}
+
+@
+\section{images1.input}
+\label{ugFimagesOnePage}
+\index{pages!ugFimagesOnePage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesOnePage}
+\index{ugFimagesOnePage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesOnePage}{G.1. images1.input}
+\beginscroll
+
+\labelSpace{3pc}
+
+  
+\noindent
+{\tt 1.\ \ \ )read\ tknot}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ torusKnot(15,17,\ 0.1,\ 6,\ 700)}\newline
+  
+\noindent
+
+\newpage
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesTwoTitle}{images2.input}
+\newcommand{\ugFimagesTwoNumber}{G.2.}
+
+@
+\section{images2.input}
+\label{ugFimagesTwoPage}
+\index{pages!ugFimagesTwoPage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesTwoPage}
+\index{ugFimagesTwoPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesTwoPage}{G.2. images2.input}
+\beginscroll
+
+These images illustrate how Newton's method converges when computing the
+complex cube roots of 2.   Each point in the \smath{(x,y)}-plane represents the
+complex number \smath{x + iy,} which is given as a starting point for Newton's
+method.  The poles in these images represent bad starting values.
+The flat areas are the regions of convergence to the three roots.
+
+  
+\noindent
+{\tt 1.\ \ \ )read\ newton}\newline
+{\tt 2.\ \ \ )read\ vectors}\newline
+{\tt 3.\ \ \ f\ :=\ newtonStep(x**3\ -\ 2)}\newline
+{\tt 4.\ \ \ }\newline
+  
+\noindent
+
+The function \texht{$f^n$}{f**n} computes $n$ steps of Newton's method.
+
+  
+\noindent
+{\tt 1.\ \ \ clipValue\ :=\ 4}\newline
+{\tt 2.\ \ \ drawComplexVectorField(f**3,\ -3..3,\ -3..3)}\newline
+{\tt 3.\ \ \ drawComplex(f**3,\ -3..3,\ -3..3)}\newline
+{\tt 4.\ \ \ drawComplex(f**4,\ -3..3,\ -3..3)}\newline
+  
+\noindent
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesThreeTitle}{images3.input}
+\newcommand{\ugFimagesThreeNumber}{G.3.}
+
+@
+\section{images3.input}
+\label{ugFimagesThreePage}
+\index{pages!ugFimagesThreePage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesThreePage}
+\index{ugFimagesThreePage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesThreePage}{G.3. images3.input}
+\beginscroll
+
+  
+\noindent
+{\tt 1.\ \ \ )r\ tknot}\newline
+{\tt 2.\ \ \ for\ i\ in\ 0..4\ repeat\ torusKnot(2,\ 2\ +\ i/4,\ 0.5,\ 25,\ 250)}\newline
+  
+\noindent
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesFiveTitle}{images5.input}
+\newcommand{\ugFimagesFiveNumber}{G.4.}
+
+@
+\section{images5.input}
+\label{ugFimagesFivePage}
+\index{pages!ugFimagesFivePage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesFivePage}
+\index{ugFimagesFivePage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesFivePage}{G.4. images5.input}
+\beginscroll
+
+The parameterization of the Etruscan Venus is due to George Frances.
+
+  
+\noindent
+{\tt 1.\ \ \ venus(a,r,steps)\ ==}\newline
+{\tt 2.\ \ \ \ \ surf\ :=\ (u:DFLOAT,\ v:DFLOAT):\ Point\ DFLOAT\ +->}\newline
+{\tt 3.\ \ \ \ \ \ \ cv\ :=\ cos(v)}\newline
+{\tt 4.\ \ \ \ \ \ \ sv\ :=\ sin(v)}\newline
+{\tt 5.\ \ \ \ \ \ \ cu\ :=\ cos(u)}\newline
+{\tt 6.\ \ \ \ \ \ \ su\ :=\ sin(u)}\newline
+{\tt 7.\ \ \ \ \ \ \ x\ :=\ r\ *\ cos(2*u)\ *\ cv\ +\ sv\ *\ cu}\newline
+{\tt 8.\ \ \ \ \ \ \ y\ :=\ r\ *\ sin(2*u)\ *\ cv\ -\ sv\ *\ su}\newline
+{\tt 9.\ \ \ \ \ \ \ z\ :=\ a\ *\ cv}\newline
+{\tt 10.\ \ \ \ \ \ point\ [x,y,z]}\newline
+{\tt 11.\ \ \ \ draw(surf,\ 0..\%pi,\ -\%pi..\%pi,\ var1Steps==steps,}\newline
+{\tt 12.\ \ \ \ \ \ \ \ \ var2Steps==steps,\ title\ ==\ "Etruscan\ Venus")}\newline
+{\tt 13.\ \ }\newline
+{\tt 14.\ \ venus(5/2,\ 13/10,\ 50)}\newline
+  
+\noindent
+
+The Figure-8 Klein Bottle
+parameterization is from
+``Differential Geometry and Computer Graphics'' by Thomas Banchoff,
+in {\it Perspectives in Mathematics,} Anniversary of Oberwolfasch 1984,
+Birkh\"{a}user-Verlag, Basel, pp. 43-60.
+
+  
+\noindent
+{\tt 1.\ \ \ klein(x,y)\ ==}\newline
+{\tt 2.\ \ \ \ \ cx\ :=\ cos(x)}\newline
+{\tt 3.\ \ \ \ \ cy\ :=\ cos(y)}\newline
+{\tt 4.\ \ \ \ \ sx\ :=\ sin(x)}\newline
+{\tt 5.\ \ \ \ \ sy\ :=\ sin(y)}\newline
+{\tt 6.\ \ \ \ \ sx2\ :=\ sin(x/2)}\newline
+{\tt 7.\ \ \ \ \ cx2\ :=\ cos(x/2)}\newline
+{\tt 8.\ \ \ \ \ sq2\ :=\ sqrt(2.0@DFLOAT)}\newline
+{\tt 9.\ \ \ \ \ point\ [cx\ *\ (cx2\ *\ (sq2\ +\ cy)\ +\ (sx2\ *\ sy\ *\ cy)),\ \_}\newline
+{\tt 10.\ \ \ \ \ \ \ \ \ \ \ sx\ *\ (cx2\ *\ (sq2\ +\ cy)\ +\ (sx2\ *\ sy\ *\ cy)),\ \_}\newline
+{\tt 11.\ \ \ \ \ \ \ \ \ \ \ -sx2\ *\ (sq2\ +\ cy)\ +\ cx2\ *\ sy\ *\ cy]}\newline
+{\tt 12.\ \ }\newline
+{\tt 13.\ \ draw(klein,\ 0..4*\%pi,\ 0..2*\%pi,\ var1Steps==50,}\newline
+{\tt 14.\ \ \ \ \ \ \ var2Steps==50,title=="Figure\ Eight\ Klein\ Bottle")}\newline
+  
+\noindent
+
+The next two images are examples of generalized tubes.
+
+  
+\noindent
+{\tt 15.\ \ )read\ ntube}\newline
+{\tt 16.\ \ rotateBy(p,\ theta)\ ==}\newline
+{\tt 17.\ \ \ \ c\ :=\ cos(theta)}\newline
+{\tt 18.\ \ \ \ s\ :=\ sin(theta)}\newline
+{\tt 19.\ \ \ \ point\ [p.1*c\ -\ p.2*s,\ p.1*s\ +\ p.2*c]}\newline
+{\tt 20.\ \ }\newline
+{\tt 21.\ \ bcircle\ t\ ==\ }\newline
+{\tt 22.\ \ \ \ point\ [3*cos\ t,\ 3*sin\ t,\ 0]}\newline
+{\tt 23.\ \ \ }\newline
+{\tt 24.\ \ twist(u,\ t)\ ==}\newline
+{\tt 25.\ \ \ \ theta\ :=\ 4*t}\newline
+{\tt 26.\ \ \ \ p\ :=\ point\ [sin\ u,\ cos(u)/2]}\newline
+{\tt 27.\ \ \ \ rotateBy(p,\ theta)}\newline
+{\tt 28.\ \ \ }\newline
+{\tt 29.\ \ ntubeDrawOpt(bcircle,\ twist,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
+{\tt 30.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 70,\ var2Steps\ ==\ 250)}\newline
+{\tt 31.\ \ }\newline
+{\tt 32.\ \ twist2(u,\ t)\ ==}\newline
+{\tt 33.\ \ \ \ theta\ :=\ t}\newline
+{\tt 34.\ \ \ \ p\ :=\ point\ [sin\ u,\ cos(u)]}\newline
+{\tt 35.\ \ \ \ rotateBy(p,\ theta)}\newline
+{\tt 36.\ \ }\newline
+{\tt 37.\ \ cf(u,v)\ ==\ sin(21*u)}\newline
+{\tt 38.\ \ }\newline
+{\tt 39.\ \ ntubeDrawOpt(bcircle,\ twist2,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
+{\tt 40.\ \ \ \ colorFunction\ ==\ cf,\ var1Steps\ ==\ 168,}\newline
+{\tt 41.\ \ \ \ var2Steps\ ==\ 126)}\newline
+  
+\noindent
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesSixTitle}{images6.input}
+\newcommand{\ugFimagesSixNumber}{G.5.}
+
+@
+\section{images6.input}
+\label{ugFimagesSixPage}
+\index{pages!ugFimagesSixPage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesSixPage}
+\index{ugFimagesSixPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesSixPage}{G.5. images6.input}
+\beginscroll
+
+\labelSpace{3pc}
+  
+\noindent
+{\tt 1.\ \ \ gam(x,y)\ ==\ }\newline
+{\tt 2.\ \ \ \ \ g\ :=\ Gamma\ complex(x,y)}\newline
+{\tt 3.\ \ \ \ \ point\ [x,y,max(min(real\ g,\ 4),\ -4),\ argument\ g]}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ }\newline
+{\tt 6.\ \ \ draw(gam,\ -\%pi..\%pi,\ -\%pi..\%pi,\ }\newline
+{\tt 7.\ \ \ \ \ \ \ \ title\ ==\ "Gamma(x\ +\ \%i*y)",\ \_}\newline
+{\tt 8.\ \ \ \ \ \ \ \ var1Steps\ ==\ 100,\ var2Steps\ ==\ 100)}\newline
+{\tt 9.\ \ \ }\newline
+{\tt 10.\ \ b(x,y)\ ==\ Beta(x,y)}\newline
+{\tt 11.\ \ }\newline
+{\tt 12.\ \ draw(b,\ -3.1..3,\ -3.1\ ..\ 3,\ title\ ==\ "Beta(x,y)")}\newline
+{\tt 13.\ \ }\newline
+{\tt 14.\ \ atf(x,y)\ ==\ }\newline
+{\tt 15.\ \ \ \ a\ :=\ atan\ complex(x,y)}\newline
+{\tt 16.\ \ \ \ point\ [x,y,real\ a,\ argument\ a]}\newline
+{\tt 17.\ \ }\newline
+{\tt 18.\ \ draw(atf,\ -3.0..\%pi,\ -3.0..\%pi)}\newline
+  
+\noindent
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesSevenTitle}{images7.input}
+\newcommand{\ugFimagesSevenNumber}{G.6.}
+
+@
+\section{images7.input}
+\label{ugFimagesSevenPage}
+\index{pages!ugFimagesSevenPage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesSevenPage}
+\index{ugFimagesSevenPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesSevenPage}{G.6. images7.input}
+\beginscroll
+
+First we look at the conformal
+map \texht{$z \mapsto z + 1/z$}{z +-> z + 1/z}.
+\labelSpace{2pc}
+  
+\noindent
+{\tt 1.\ \ \ )read\ conformal}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ f\ z\ ==\ z}\newline
+{\tt 5.\ \ \ }\newline
+{\tt 6.\ \ \ conformalDraw(f,\ -2..2,\ -2..2,\ 9,\ 9,\ "cartesian")}\newline
+{\tt 7.\ \ \ }\newline
+{\tt 8.\ \ \ f\ z\ ==\ z\ +\ 1/z}\newline
+{\tt 9.\ \ \ \ }\newline
+{\tt 10.\ \ conformalDraw(f,\ -2..2,\ -2..2,\ 9,\ 9,\ "cartesian")}\newline
+  
+\noindent
+
+The map \texht{$z \mapsto -(z+1)/(z-1)$}{z +-> -(z+1)/(z-1)} maps
+the unit disk to the right half-plane, as shown
+on the Riemann sphere.
+
+  
+\noindent
+{\tt 1.\ \ \ f\ z\ ==\ z}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ riemannConformalDraw(f,0.1..0.99,0..2*\%pi,7,11,"polar")}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ f\ z\ ==\ -(z+1)/(z-1)}\newline
+{\tt 6.\ \ \ }\newline
+{\tt 7.\ \ \ riemannConformalDraw(f,0.1..0.99,0..2*\%pi,7,11,"polar")}\newline
+{\tt 8.\ \ \ }\newline
+{\tt 9.\ \ \ riemannSphereDraw(-4..4,\ -4..4,\ 7,\ 7,\ "cartesian")}\newline
+  
+\noindent
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFimagesEightTitle}{images8.input}
+\newcommand{\ugFimagesEightNumber}{G.7.}
+
+@
+\section{images8.input}
+\label{ugFimagesEightPage}
+\index{pages!ugFimagesEightPage!ug21.ht}
+\index{ug21.ht!pages!ugFimagesEightPage}
+\index{ugFimagesEightPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFimagesEightPage}{G.7. images8.input}
+\beginscroll
+
+\labelSpace{1pc}
+  
+\noindent
+{\tt 1.\ \ \ )read\ dhtri}\newline
+{\tt 2.\ \ \ )read\ tetra}\newline
+{\tt 3.\ \ \ drawPyramid\ 4}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ )read\ antoine}\newline
+{\tt 6.\ \ \ drawRings\ 2}\newline
+{\tt 7.\ \ \ }\newline
+{\tt 8.\ \ \ )read\ scherk}\newline
+{\tt 9.\ \ \ drawScherk(3,3)}\newline
+{\tt 10.\ \ }\newline
+{\tt 11.\ \ )read\ ribbonsnew}\newline
+{\tt 12.\ \ drawRibbons([x**i\ for\ i\ in\ 1..5],\ x=-1..1,\ y=0..2)}\newline
+  
+\noindent
+
+
+%\input{gallery/conformal.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFconformalTitle}{conformal.input}
+\newcommand{\ugFconformalNumber}{G.8.}
+
+@
+\section{conformal.input}
+\label{ugFconformalPage}
+\index{pages!ugFconformalPage!ug21.ht}
+\index{ug21.ht!pages!ugFconformalPage}
+\index{ugFconformalPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFconformalPage}{G.8. conformal.input}
+\beginscroll
+%
+The functions in this section draw conformal maps both on the
+plane and on the Riemann sphere.
+
+%-- Compile, don't interpret functions.
+%\xmpLine{)set fun comp on}{}
+  
+\noindent
+{\tt 1.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
+{\tt 2.\ \ \ S\ :=\ Segment\ DoubleFloat}\newline
+{\tt 3.\ \ \ R3\ :=\ Point\ DFLOAT}\newline
+{\tt 4.\ \ \ \ }\newline
+  
+\noindent
+
+\userfun{conformalDraw}{\it (f, rRange, tRange, rSteps, tSteps, coord)}
+draws the image of the coordinate grid under {\it f} in the complex plane.
+The grid may be given in either polar or Cartesian coordinates.
+Argument {\it f} is the function to draw;
+{\it rRange} is the range of the radius (in polar) or real (in Cartesian);
+{\it tRange} is the range of \texht{$\theta$}{\theta} (in polar) or imaginary (in Cartesian);
+{\it tSteps, rSteps}, are the number of intervals in the {\it r} and
+\texht{$\theta$}{\theta} directions; and
+{\it coord} is the coordinate system to use (either {\tt "polar"} or
+{\tt "cartesian"}).
+
+  
+\noindent
+{\tt 1.\ \ \ conformalDraw:\ (C\ ->\ C,\ S,\ S,\ PI,\ PI,\ String)\ ->\ VIEW3D}\newline
+{\tt 2.\ \ \ conformalDraw(f,rRange,tRange,rSteps,tSteps,coord)\ ==}\newline
+{\tt 3.\ \ \ \ \ transformC\ :=}\newline
+{\tt 4.\ \ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
+{\tt 5.\ \ \ \ \ \ \ cartesian2Complex}\newline
+{\tt 6.\ \ \ \ \ cm\ :=\ makeConformalMap(f,\ transformC)}\newline
+{\tt 7.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 8.\ \ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
+{\tt 9.\ \ \ \ \ makeViewport3D(sp,\ "Conformal\ Map")}\newline
+  
+\noindent
+
+\userfun{riemannConformalDraw}{\it (f, rRange, tRange, rSteps, tSteps, coord)}
+draws the image of the coordinate grid under {\it f} on the Riemann sphere.
+The grid may be given in either polar or Cartesian coordinates.
+Its arguments are the same as those for \userfun{conformalDraw}.
+  
+\noindent
+{\tt 10.\ \ riemannConformalDraw:(C->C,S,S,PI,PI,String)->VIEW3D}\newline
+{\tt 11.\ \ riemannConformalDraw(f,\ rRange,\ tRange,}\newline
+{\tt 12.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rSteps,\ tSteps,\ coord)\ ==}\newline
+{\tt 13.\ \ \ \ transformC\ :=}\newline
+{\tt 14.\ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
+{\tt 15.\ \ \ \ \ \ cartesian2Complex}\newline
+{\tt 16.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 17.\ \ \ \ cm\ :=\ makeRiemannConformalMap(f,\ transformC)}\newline
+{\tt 18.\ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
+{\tt 19.\ \ \ \ curve(sp,[point\ [0,0,2.0@DFLOAT,0],point\ [0,0,2.0@DFLOAT,0]])}\newline
+{\tt 20.\ \ \ \ makeViewport3D(sp,"Map\ on\ the\ Riemann\ Sphere")}\newline
+{\tt 21.\ \ }\newline
+{\tt 22.\ \ adaptGrid(sp,\ f,\ uRange,\ vRange,\ \ uSteps,\ vSteps)\ ==}\newline
+{\tt 23.\ \ \ \ delU\ :=\ (hi(uRange)\ -\ lo(uRange))/uSteps}\newline
+{\tt 24.\ \ \ \ delV\ :=\ (hi(vRange)\ -\ lo(vRange))/vSteps}\newline
+{\tt 25.\ \ \ \ uSteps\ :=\ uSteps\ +\ 1;\ vSteps\ :=\ vSteps\ +\ 1}\newline
+{\tt 26.\ \ \ \ u\ :=\ lo\ uRange}\newline
+{\tt 27.\ \ \ \ for\ i\ in\ 1..uSteps\ repeat}\newline
+{\tt 28.\ \ \ \ \ \ c\ :=\ curryLeft(f,u)}\newline
+{\tt 29.\ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 0}\newline
+{\tt 30.\ \ \ \ \ \ makeObject(c,vRange::SEG\ Float,colorFunction==cf,}\newline
+{\tt 31.\ \ \ \ \ \ \ \ space\ ==\ sp,\ tubeRadius\ ==\ .02,\ tubePoints\ ==\ 6)}\newline
+{\tt 32.\ \ \ \ \ \ u\ :=\ u\ +\ delU}\newline
+{\tt 33.\ \ \ \ v\ :=\ lo\ vRange}\newline
+{\tt 34.\ \ \ \ for\ i\ in\ 1..vSteps\ repeat}\newline
+{\tt 35.\ \ \ \ \ \ c\ :=\ curryRight(f,v)}\newline
+{\tt 36.\ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 1}\newline
+{\tt 37.\ \ \ \ \ \ makeObject(c,uRange::SEG\ Float,colorFunction==cf,}\newline
+{\tt 38.\ \ \ \ \ \ \ \ space\ ==\ sp,\ tubeRadius\ ==\ .02,\ tubePoints\ ==\ 6)}\newline
+{\tt 39.\ \ \ \ \ \ v\ :=\ v\ +\ delV}\newline
+{\tt 40.\ \ \ \ void()}\newline
+{\tt 41.\ \ }\newline
+{\tt 42.\ \ riemannTransform(z)\ ==}\newline
+{\tt 43.\ \ \ \ r\ :=\ sqrt\ norm\ z}\newline
+{\tt 44.\ \ \ \ cosTheta\ :=\ (real\ z)/r}\newline
+{\tt 45.\ \ \ \ sinTheta\ :=\ (imag\ z)/r}\newline
+{\tt 46.\ \ \ \ cp\ :=\ 4*r/(4+r**2)}\newline
+{\tt 47.\ \ \ \ sp\ :=\ sqrt(1-cp*cp)}\newline
+{\tt 48.\ \ \ \ if\ r>2\ then\ sp\ :=\ -sp}\newline
+{\tt 49.\ \ \ \ point\ [cosTheta*cp,\ sinTheta*cp,\ -sp\ +\ 1]}\newline
+{\tt 50.\ \ \ }\newline
+{\tt 51.\ \ cartesian2Complex(r:DFLOAT,\ i:DFLOAT):C\ ==}\newline
+{\tt 52.\ \ \ \ complex(r,\ i)}\newline
+{\tt 53.\ \ }\newline
+{\tt 54.\ \ polar2Complex(r:DFLOAT,\ th:DFLOAT):C\ ==\ }\newline
+{\tt 55.\ \ \ \ complex(r*cos(th),\ r*sin(th))}\newline
+{\tt 56.\ \ }\newline
+{\tt 57.\ \ makeConformalMap(f,\ transformC)\ ==}\newline
+{\tt 58.\ \ \ \ (u:DFLOAT,v:DFLOAT):R3\ +->\ }\newline
+{\tt 59.\ \ \ \ \ \ z\ :=\ f\ transformC(u,\ v)}\newline
+{\tt 60.\ \ \ \ \ \ point\ [real\ z,\ imag\ z,\ 0.0@DFLOAT]}\newline
+{\tt 61.\ \ \ }\newline
+{\tt 62.\ \ makeRiemannConformalMap(f,\ transformC)\ ==}\newline
+{\tt 63.\ \ \ \ (u:DFLOAT,\ v:DFLOAT):R3\ +->}\newline
+{\tt 64.\ \ \ \ \ \ riemannTransform\ f\ transformC(u,\ v)}\newline
+{\tt 65.\ \ }\newline
+{\tt 66.\ \ riemannSphereDraw:\ (S,\ S,\ PI,\ PI,\ String)\ ->\ VIEW3D}\newline
+{\tt 67.\ \ riemannSphereDraw(rRange,tRange,rSteps,tSteps,coord)\ ==}\newline
+{\tt 68.\ \ \ \ transformC\ :=}\newline
+{\tt 69.\ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
+{\tt 70.\ \ \ \ \ \ cartesian2Complex}\newline
+{\tt 71.\ \ \ \ grid\ :=\ (u:DFLOAT,\ v:DFLOAT):\ R3\ +->\ }\newline
+{\tt 72.\ \ \ \ \ \ z1\ :=\ transformC(u,\ v)}\newline
+{\tt 73.\ \ \ \ \ \ point\ [real\ z1,\ imag\ z1,\ 0]}\newline
+{\tt 74.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
+{\tt 75.\ \ \ \ adaptGrid(sp,\ grid,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
+{\tt 76.\ \ \ \ connectingLines(sp,grid,rRange,tRange,rSteps,tSteps)}\newline
+{\tt 77.\ \ \ \ makeObject(riemannSphere,0..2*\%pi,0..\%pi,space==sp)}\newline
+{\tt 78.\ \ \ \ f\ :=\ (z:C):C\ +->\ z}\newline
+{\tt 79.\ \ \ \ cm\ :=\ makeRiemannConformalMap(f,\ transformC)}\newline
+{\tt 80.\ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
+{\tt 81.\ \ \ \ makeViewport3D(sp,\ "Riemann\ Sphere")}\newline
+{\tt 82.\ \ \ }\newline
+{\tt 83.\ \ connectingLines(sp,f,uRange,vRange,uSteps,vSteps)\ ==}\newline
+{\tt 84.\ \ \ \ delU\ :=\ (hi(uRange)\ -\ lo(uRange))/uSteps}\newline
+{\tt 85.\ \ \ \ delV\ :=\ (hi(vRange)\ -\ lo(vRange))/vSteps}\newline
+{\tt 86.\ \ \ \ uSteps\ :=\ uSteps\ +\ 1;\ vSteps\ :=\ vSteps\ +\ 1}\newline
+{\tt 87.\ \ \ \ u\ :=\ lo\ uRange}\newline
+{\tt 88.\ \ \ \ for\ i\ in\ 1..uSteps\ repeat}\newline
+{\tt 89.\ \ \ \ \ \ v\ :=\ lo\ vRange}\newline
+{\tt 90.\ \ \ \ \ \ for\ j\ in\ 1..vSteps\ repeat}\newline
+{\tt 91.\ \ \ \ \ \ \ \ p1\ :=\ f(u,v)}\newline
+{\tt 92.\ \ \ \ \ \ \ \ p2\ :=\ riemannTransform\ complex(p1.1,\ p1.2)}\newline
+{\tt 93.\ \ \ \ \ \ \ \ fun\ :=\ lineFromTo(p1,p2)}\newline
+{\tt 94.\ \ \ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 3}\newline
+{\tt 95.\ \ \ \ \ \ \ \ makeObject(fun,\ 0..1,space==sp,tubePoints==4,}\newline
+{\tt 96.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tubeRadius==0.01,colorFunction==cf)}\newline
+{\tt 97.\ \ \ \ \ \ \ \ v\ :=\ v\ +\ delV}\newline
+{\tt 98.\ \ \ \ \ \ u\ :=\ u\ +\ delU}\newline
+{\tt 99.\ \ \ \ void()}\newline
+{\tt 100.\ \ }\newline
+{\tt 101.\ riemannSphere(u,v)\ ==\ }\newline
+{\tt 102.\ \ \ sv\ :=\ sin(v)}\newline
+{\tt 103.\ \ \ 0.99@DFLOAT*(point\ [cos(u)*sv,sin(u)*sv,cos(v),0.0@DFLOAT])+}\newline
+{\tt 104.\ \ \ \ \ point\ [0.0@DFLOAT,\ 0.0@DFLOAT,\ 1.0@DFLOAT,\ 4.0@DFLOAT]}\newline
+{\tt 105.\ \ }\newline
+{\tt 106.\ lineFromTo(p1,\ p2)\ ==}\newline
+{\tt 107.\ \ \ d\ :=\ p2\ -\ p1}\newline
+{\tt 108.\ \ \ (t:DFLOAT):Point\ DFLOAT\ +->}\newline
+{\tt 109.\ \ \ \ \ p1\ +\ t*d}\newline
+  
+\noindent
+
+%\input{gallery/tknot.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFtknotTitle}{tknot.input}
+\newcommand{\ugFtknotNumber}{G.9.}
+
+@
+\section{tknot.input}
+\label{ugFtknotPage}
+\index{pages!ugFtknotPage!ug21.ht}
+\index{ug21.ht!pages!ugFtknotPage}
+\index{ugFtknotPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFtknotPage}{G.9. tknot.input}
+\beginscroll
+%
+Create a $(p,q)$ torus-knot with radius $r$ around the curve.
+The formula was derived by Larry Lambe.
+
+  
+\noindent
+{\tt 1.\ \ \ )read\ ntube}\newline
+{\tt 2.\ \ \ torusKnot:\ (DFLOAT,\ DFLOAT,\ DFLOAT,\ PI,\ PI)\ ->\ VIEW3D}\newline
+{\tt 3.\ \ \ torusKnot(p,\ q\ ,r,\ uSteps,\ tSteps)\ ==}\newline
+{\tt 4.\ \ \ \ \ knot\ :=\ (t:DFLOAT):Point\ DFLOAT\ +->\ }\newline
+{\tt 5.\ \ \ \ \ \ \ fac\ :=\ 4/(2.2@DFLOAT-sin(q*t))}\newline
+{\tt 6.\ \ \ \ \ \ \ fac\ *\ point\ [cos(p*t),\ sin(p*t),\ cos(q*t)]}\newline
+{\tt 7.\ \ \ \ \ circle\ :=\ (u:DFLOAT,\ t:DFLOAT):\ Point\ DFLOAT\ +->}\newline
+{\tt 8.\ \ \ \ \ \ \ r\ *\ point\ [cos\ u,\ sin\ u]}\newline
+{\tt 9.\ \ \ \ \ ntubeDrawOpt(knot,\ circle,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
+{\tt 10.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ uSteps,\ var2Steps\ ==\ tSteps)}\newline
+{\tt 11.\ \ }\newline
+  
+\noindent
+
+%\input{gallery/ntube.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFntubeTitle}{ntube.input}
+\newcommand{\ugFntubeNumber}{G.10.}
+
+@
+\section{ntube.input}
+\label{ugFntubePage}
+\begin{itemize}
+\item ugFimagesFivePage \ref{ugFimagesFivePage} on
+page~\pageref{ugFimagesFivePage}
+\end{itemize}
+\index{pages!ugFntubePage!ug21.ht}
+\index{ug21.ht!pages!ugFntubePage}
+\index{ugFntubePage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFntubePage}{G.10. ntube.input}
+\beginscroll
+%
+The functions in this file create generalized tubes (also known as generalized
+cylinders).
+These functions draw a 2-d curve in the normal
+planes around a 3-d curve.
+
+  
+\noindent
+{\tt 1.\ \ \ R3\ :=\ Point\ DFLOAT}\newline
+{\tt 2.\ \ \ R2\ :=\ Point\ DFLOAT}\newline
+{\tt 3.\ \ \ S\ :=\ Segment\ Float}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ ThreeCurve\ :=\ DFLOAT\ ->\ R3}\newline
+{\tt 6.\ \ \ TwoCurve\ :=\ (DFLOAT,\ DFLOAT)\ ->\ R2}\newline
+{\tt 7.\ \ \ Surface\ :=\ (DFLOAT,\ DFLOAT)\ ->\ R3}\newline
+{\tt 8.\ \ \ }\newline
+{\tt 9.\ \ \ FrenetFrame\ :=\ }\newline
+{\tt 10.\ \ \ \ \ Record(value:R3,tangent:R3,normal:R3,binormal:R3)}\newline
+{\tt 11.\ \ frame:\ FrenetFrame}\newline
+{\tt 12.\ \ }\newline
+  
+\noindent
+
+\userfun{ntubeDraw}{\it (spaceCurve, planeCurve,}
+$u_0 .. u_1,$ $t_0 .. t_1)$
+draws {\it planeCurve} in the normal planes of {\it spaceCurve.}
+The parameter $u_0 .. u_1$ specifies
+the parameter range for {\it planeCurve}
+and $t_0 .. t_1$ specifies the parameter range for {\it spaceCurve}.
+Additionally, the plane curve function takes
+a second parameter: the current parameter of {\it spaceCurve}.
+This allows the plane curve to change shape
+as it goes around the space curve.
+See \downlink{``\ugFimagesFiveTitle''}{ugFimagesFivePage} 
+in Section \ugFimagesFiveNumber\ignore{ugFimagesFive} for an example of this.
+%
+  
+\noindent
+{\tt 1.\ \ \ ntubeDraw:\ (ThreeCurve,TwoCurve,S,S)\ ->\ VIEW3D}\newline
+{\tt 2.\ \ \ ntubeDraw(spaceCurve,planeCurve,uRange,tRange)\ ==}\newline
+{\tt 3.\ \ \ \ \ ntubeDrawOpt(spaceCurve,\ planeCurve,\ uRange,\ \_}\newline
+{\tt 4.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tRange,\ []\$List\ DROPT)}\newline
+{\tt 5.\ \ \ \ }\newline
+{\tt 6.\ \ \ ntubeDrawOpt:\ (ThreeCurve,TwoCurve,S,S,List\ DROPT)}\newline
+{\tt 7.\ \ \ \ \ \ \ ->\ VIEW3D}\newline
+{\tt 8.\ \ \ ntubeDrawOpt(spaceCurve,planeCurve,uRange,tRange,l)\ ==}\newline
+{\tt 9.\ \ \ \ \ \ \ \ \ \ \ \ \ }\newline
+{\tt 10.\ \ \ \ delT:DFLOAT\ :=\ (hi(tRange)\ -\ lo(tRange))/10000}\newline
+{\tt 11.\ \ \ \ oldT:DFLOAT\ :=\ lo(tRange)\ -\ 1}\newline
+{\tt 12.\ \ \ \ fun\ :=\ ngeneralTube(spaceCurve,planeCurve,delT,oldT)}\newline
+{\tt 13.\ \ \ \ draw(fun,\ uRange,\ tRange,\ l)}\newline
+{\tt 14.\ \ }\newline
+  
+\noindent
+
+\userfun{nfrenetFrame}{\it (c, t, delT)}
+numerically computes the Frenet frame
+about the curve {\it c} at {\it t}.
+Parameter {\it delT} is a small number used to
+compute derivatives.
+  
+\noindent
+{\tt 15.\ \ nfrenetFrame(c,\ t,\ delT)\ ==}\newline
+{\tt 16.\ \ \ \ f0\ :=\ c(t)}\newline
+{\tt 17.\ \ \ \ f1\ :=\ c(t+delT)}\newline
+{\tt 18.\ \ \ \ t0\ :=\ f1\ -\ f0}\newline
+{\tt 19.\ \ \ \ n0\ :=\ f1\ +\ f0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\newline
+{\tt 20.\ \ \ \ b\ :=\ cross(t0,\ n0)}\newline
+{\tt 21.\ \ \ \ n\ :=\ cross(b,t0)}\newline
+{\tt 22.\ \ \ \ ln\ :=\ length\ n}\newline
+{\tt 23.\ \ \ \ lb\ :=\ length\ b}\newline
+{\tt 24.\ \ \ \ ln\ =\ 0\ or\ lb\ =\ 0\ =>}\newline
+{\tt 25.\ \ \ \ \ \ \ \ error\ "Frenet\ Frame\ not\ well\ defined"}\newline
+{\tt 26.\ \ \ \ n\ :=\ (1/ln)*n}\newline
+{\tt 27.\ \ \ \ b\ :=\ (1/lb)*b}\newline
+{\tt 28.\ \ \ \ [f0,\ t0,\ n,\ b]\$FrenetFrame}\newline
+  
+\noindent
+
+\userfun{ngeneralTube}{\it (spaceCurve, planeCurve,}{\it  delT, oltT)}
+creates a function that can be passed to the system axiomFun{draw} command.
+The function is a parameterized surface for the general tube
+around {\it spaceCurve}.  {\it delT} is a small number used to compute
+derivatives. {\it oldT} is used to hold the current value of the
+{\it t} parameter for {\it spaceCurve.}  This is an efficiency measure
+to ensure that frames are only computed once for each value of {\it t}.
+  
+\noindent
+{\tt 29.\ \ ngeneralTube:\ (ThreeCurve,\ TwoCurve,\ DFLOAT,\ DFLOAT)\ ->\ Surface}\newline
+{\tt 30.\ \ ngeneralTube(spaceCurve,\ planeCurve,\ delT,\ oldT)\ ==}\newline
+{\tt 31.\ \ \ \ free\ frame}\newline
+{\tt 32.\ \ \ \ (v:DFLOAT,\ t:\ DFLOAT):\ R3\ +->}\newline
+{\tt 33.\ \ \ \ \ \ if\ (t\ \texht{$\sim$}{~}=\ oldT)\ then}\newline
+{\tt 34.\ \ \ \ \ \ \ \ frame\ :=\ nfrenetFrame(spaceCurve,\ t,\ delT)}\newline
+{\tt 35.\ \ \ \ \ \ \ \ oldT\ :=\ t}\newline
+{\tt 36.\ \ \ \ \ \ p\ :=\ planeCurve(v,\ t)}\newline
+{\tt 37.\ \ \ \ \ \ frame.value\ +\ p.1*frame.normal\ +\ p.2*frame.binormal}\newline
+  
+\noindent
+
+%\input{gallery/dhtri.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFdhtriTitle}{dhtri.input}
+\newcommand{\ugFdhtriNumber}{G.11.}
+
+@
+\section{dhtri.input}
+\label{ugFdhtriPage}
+\index{pages!ugFdhtriPage!ug21.ht}
+\index{ug21.ht!pages!ugFdhtriPage}
+\index{ugFdhtriPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFdhtriPage}{G.11. dhtri.input}
+\beginscroll
+%
+Create affine transformations (DH matrices) that transform
+a given triangle into another.
+
+  
+\noindent
+{\tt 1.\ \ \ tri2tri:\ (List\ Point\ DFLOAT,\ List\ Point\ DFLOAT)\ ->\ DHMATRIX(DFLOAT)}\newline
+{\tt 2.\ \ \ tri2tri(t1,\ t2)\ ==}\newline
+{\tt 3.\ \ \ \ \ n1\ :=\ triangleNormal(t1)}\newline
+{\tt 4.\ \ \ \ \ n2\ :=\ triangleNormal(t2)}\newline
+{\tt 5.\ \ \ \ \ tet2tet(concat(t1,\ n1),\ concat(t2,\ n2))}\newline
+{\tt 6.\ \ \ \ }\newline
+{\tt 7.\ \ \ tet2tet:\ (List\ Point\ DFLOAT,\ List\ Point\ DFLOAT)\ ->\ DHMATRIX(DFLOAT)}\newline
+{\tt 8.\ \ \ tet2tet(t1,\ t2)\ ==}\newline
+{\tt 9.\ \ \ \ \ m1\ :=\ makeColumnMatrix\ t1}\newline
+{\tt 10.\ \ \ \ m2\ :=\ makeColumnMatrix\ t2}\newline
+{\tt 11.\ \ \ \ m2\ *\ inverse(m1)}\newline
+{\tt 12.\ \ \ }\newline
+{\tt 13.\ \ makeColumnMatrix(t)\ ==}\newline
+{\tt 14.\ \ \ \ m\ :=\ new(4,4,0)\$DHMATRIX(DFLOAT)}\newline
+{\tt 15.\ \ \ \ for\ x\ in\ t\ for\ i\ in\ 1..repeat}\newline
+{\tt 16.\ \ \ \ \ \ for\ j\ in\ 1..3\ repeat}\newline
+{\tt 17.\ \ \ \ \ \ \ \ m(j,i)\ :=\ x.j}\newline
+{\tt 18.\ \ \ \ \ \ m(4,i)\ :=\ 1}\newline
+{\tt 19.\ \ \ \ m}\newline
+{\tt 20.\ \ \ }\newline
+{\tt 21.\ \ triangleNormal(t)\ ==}\newline
+{\tt 22.\ \ \ \ a\ :=\ triangleArea\ t}\newline
+{\tt 23.\ \ \ \ p1\ :=\ t.2\ -\ t.1}\newline
+{\tt 24.\ \ \ \ p2\ :=\ t.3\ -\ t.2}\newline
+{\tt 25.\ \ \ \ c\ :=\ cross(p1,\ p2)}\newline
+{\tt 26.\ \ \ \ len\ :=\ length(c)}\newline
+{\tt 27.\ \ \ \ len\ =\ 0\ =>\ error\ "degenerate\ triangle!"}\newline
+{\tt 28.\ \ \ \ c\ :=\ (1/len)*c}\newline
+{\tt 29.\ \ \ \ t.1\ +\ sqrt(a)\ *\ c}\newline
+{\tt 30.\ \ \ }\newline
+{\tt 31.\ \ triangleArea\ t\ ==}\newline
+{\tt 32.\ \ \ \ a\ :=\ length(t.2\ -\ t.1)}\newline
+{\tt 33.\ \ \ \ b\ :=\ length(t.3\ -\ t.2)}\newline
+{\tt 34.\ \ \ \ c\ :=\ length(t.1\ -\ t.3)}\newline
+{\tt 35.\ \ \ \ s\ :=\ (a+b+c)/2}\newline
+{\tt 36.\ \ \ \ sqrt(s*(s-a)*(s-b)*(s-c))}\newline
+  
+\noindent
+
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFtetraTitle}{tetra.input}
+\newcommand{\ugFtetraNumber}{G.12.}
+
+@
+\section{tetra.input}
+\label{ugFtetraPage}
+\index{pages!ugFtetraPage!ug21.ht}
+\index{ug21.ht!pages!ugFtetraPage}
+\index{ugFtetraPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFtetraPage}{G.12. tetra.input}
+\beginscroll
+%
+%\input{gallery/tetra.htex}
+%\outdent{Sierpinsky's Tetrahedron}
+
+\labelSpace{3pc}
+
+  
+\noindent
+{\tt 1.\ \ \ )set\ expose\ add\ con\ DenavitHartenbergMatrix}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ x1:DFLOAT\ :=\ sqrt(2.0@DFLOAT/3.0@DFLOAT)}\newline
+{\tt 4.\ \ \ x2:DFLOAT\ :=\ sqrt(3.0@DFLOAT)/6}\newline
+{\tt 5.\ \ \ }\newline
+{\tt 6.\ \ \ p1\ :=\ point\ [-0.5@DFLOAT,\ -x2,\ 0.0@DFLOAT]}\newline
+{\tt 7.\ \ \ p2\ :=\ point\ [0.5@DFLOAT,\ -x2,\ 0.0@DFLOAT]}\newline
+{\tt 8.\ \ \ p3\ :=\ point\ [0.0@DFLOAT,\ 2*x2,\ 0.0@DFLOAT]}\newline
+{\tt 9.\ \ \ p4\ :=\ point\ [0.0@DFLOAT,\ 0.0@DFLOAT,\ x1]}\newline
+{\tt 10.\ \ \ }\newline
+{\tt 11.\ \ baseTriangle\ \ :=\ [p2,\ p1,\ p3]}\newline
+{\tt 12.\ \ }\newline
+{\tt 13.\ \ mt\ \ :=\ [0.5@DFLOAT*(p2+p1),\ 0.5@DFLOAT*(p1+p3),\ 0.5@DFLOAT*(p3+p2)]}\newline
+{\tt 14.\ \ }\newline
+{\tt 15.\ \ bt1\ :=\ [mt.1,\ p1,\ mt.2]}\newline
+{\tt 16.\ \ bt2\ :=\ [p2,\ mt.1,\ mt.3]}\newline
+{\tt 17.\ \ bt3\ :=\ [mt.2,\ p3,\ mt.3]}\newline
+{\tt 18.\ \ bt4\ :=\ [0.5@DFLOAT*(p2+p4),\ 0.5@DFLOAT*(p1+p4),\ 0.5@DFLOAT*(p3+p4)]}\newline
+{\tt 19.\ \ }\newline
+{\tt 20.\ \ tt1\ :=\ tri2tri(baseTriangle,\ bt1)}\newline
+{\tt 21.\ \ tt2\ :=\ tri2tri(baseTriangle,\ bt2)}\newline
+{\tt 22.\ \ tt3\ :=\ tri2tri(baseTriangle,\ bt3)}\newline
+{\tt 23.\ \ tt4\ :=\ tri2tri(baseTriangle,\ bt4)}\newline
+{\tt 24.\ \ }\newline
+{\tt 25.\ \ drawPyramid(n)\ ==}\newline
+{\tt 26.\ \ \ \ s\ :=\ createThreeSpace()}\newline
+{\tt 27.\ \ \ \ dh\ :=\ rotatex(0.0@DFLOAT)}\newline
+{\tt 28.\ \ \ \ drawPyramidInner(s,\ n,\ dh)}\newline
+{\tt 29.\ \ \ \ makeViewport3D(s,\ "Sierpinsky\ Tetrahedron")}\newline
+{\tt 30.\ \ }\newline
+{\tt 31.\ \ drawPyramidInner(s,\ n,\ dh)\ ==}\newline
+{\tt 32.\ \ \ \ n\ =\ 0\ =>\ makeTetrahedron(s,\ dh,\ n)}\newline
+{\tt 33.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt1)}\newline
+{\tt 34.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt2)}\newline
+{\tt 35.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt3)}\newline
+{\tt 36.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt4)}\newline
+{\tt 37.\ \ }\newline
+{\tt 38.\ \ makeTetrahedron(sp,\ dh,\ color)\ ==}\newline
+{\tt 39.\ \ \ \ w1\ :=\ dh*p1}\newline
+{\tt 40.\ \ \ \ w2\ :=\ dh*p2}\newline
+{\tt 41.\ \ \ \ w3\ :=\ dh*p3}\newline
+{\tt 42.\ \ \ \ w4\ :=\ dh*p4}\newline
+{\tt 43.\ \ \ \ polygon(sp,\ [w1,\ w2,\ w4])}\newline
+{\tt 44.\ \ \ \ polygon(sp,\ [w1,\ w3,\ w4])}\newline
+{\tt 45.\ \ \ \ polygon(sp,\ [w2,\ w3,\ w4])}\newline
+{\tt 46.\ \ \ \ void()}\newline
+  
+\noindent
+
+
+%\input{gallery/antoine.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFantoineTitle}{antoine.input}
+\newcommand{\ugFantoineNumber}{G.13.}
+
+@
+\section{antoine.input}
+\label{ugFantoinePage}
+\index{pages!ugFantoinePage!ug21.ht}
+\index{ug21.ht!pages!ugFantoinePage}
+\index{ugFantoinePage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFantoinePage}{G.13. antoine.input}
+\beginscroll
+%
+Draw Antoine's Necklace.
+Thank you to Matthew Grayson at IBM's T.J Watson Research Center for the idea.
+
+  
+\noindent
+{\tt 1.\ \ \ )set\ expose\ add\ con\ DenavitHartenbergMatrix}\newline
+{\tt 2.\ \ \ }\newline
+{\tt 3.\ \ \ torusRot:\ DHMATRIX(DFLOAT)}\newline
+{\tt 4.\ \ \ }\newline
+{\tt 5.\ \ \ }\newline
+{\tt 6.\ \ \ drawRings(n)\ ==}\newline
+{\tt 7.\ \ \ \ \ s\ :=\ createThreeSpace()}\newline
+{\tt 8.\ \ \ \ \ dh:DHMATRIX(DFLOAT)\ :=\ identity()}\newline
+{\tt 9.\ \ \ \ \ drawRingsInner(s,\ n,\ dh)}\newline
+{\tt 10.\ \ \ \ makeViewport3D(s,\ "Antoine's\ Necklace")}\newline
+{\tt 11.\ \ }\newline
+  
+\noindent
+
+In order to draw Antoine rings, we take one ring, scale it down to
+a smaller size, rotate it around its central axis, translate it
+to the edge of the larger ring and rotate it around the edge to
+a point corresponding to its count (there are 10 positions around
+the edge of the larger ring). For each of these new rings we
+recursively perform the operations, each ring becoming 10 smaller
+rings. Notice how the \axiomType{DHMATRIX} operations are used to build up
+the proper matrix composing all these transformations.
+
+  
+\noindent
+{\tt 1.\ \ \ drawRingsInner(s,\ n,\ dh)\ ==}\newline
+{\tt 2.\ \ \ \ \ n\ =\ 0\ =>}\newline
+{\tt 3.\ \ \ \ \ \ \ drawRing(s,\ dh)}\newline
+{\tt 4.\ \ \ \ \ \ \ void()}\newline
+{\tt 5.\ \ \ \ \ t\ :=\ 0.0@DFLOAT}\newline
+{\tt 6.\ \ \ \ \ p\ :=\ 0.0@DFLOAT}\newline
+{\tt 7.\ \ \ \ \ tr\ :=\ 1.0@DFLOAT}\newline
+{\tt 8.\ \ \ \ \ inc\ :=\ 0.1@DFLOAT}\newline
+{\tt 9.\ \ \ \ \ for\ i\ in\ 1..10\ repeat}\newline
+{\tt 10.\ \ \ \ \ \ tr\ :=\ tr\ +\ inc}\newline
+{\tt 11.\ \ \ \ \ \ inc\ :=\ -inc}\newline
+{\tt 12.\ \ \ \ \ \ dh'\ :=\ dh*rotatez(t)*translate(tr,0.0@DFLOAT,0.0@DFLOAT)*}\newline
+{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ rotatey(p)*scale(0.35@DFLOAT,\ 0.48@DFLOAT,\ 0.4@DFLOAT)}\newline
+{\tt 14.\ \ \ \ \ \ drawRingsInner(s,\ n-1,\ dh')}\newline
+{\tt 15.\ \ \ \ \ \ t\ :=\ t\ +\ 36.0@DFLOAT}\newline
+{\tt 16.\ \ \ \ \ \ p\ :=\ p\ +\ 90.0@DFLOAT}\newline
+{\tt 17.\ \ \ \ void()}\newline
+{\tt 18.\ \ }\newline
+{\tt 19.\ \ drawRing(s,\ dh)\ ==}\newline
+{\tt 20.\ \ \ \ free\ torusRot}\newline
+{\tt 21.\ \ \ \ torusRot\ :=\ dh}\newline
+{\tt 22.\ \ \ \ makeObject(torus,\ 0..2*\%pi,\ 0..2*\%pi,\ var1Steps\ ==\ 6,}\newline
+{\tt 23.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ space\ ==\ s,\ var2Steps\ ==\ 15)}\newline
+{\tt 24.\ \ }\newline
+{\tt 25.\ \ torus(u\ ,v)\ ==}\newline
+{\tt 26.\ \ \ \ cu\ :=\ cos(u)/6}\newline
+{\tt 27.\ \ \ \ torusRot*point\ [(1+cu)*cos(v),(1+cu)*sin(v),(sin\ u)/6]}\newline
+  
+\noindent
+
+%\input{gallery/scherk.htex}
+\endscroll
+\autobuttons
+\end{page}
+
+@
+<<ug21.ht>>=
+\newcommand{\ugFscherkTitle}{scherk.input}
+\newcommand{\ugFscherkNumber}{G.14.}
+
+@
+\section{scherk.input}
+\label{ugFscherkPage}
+\index{pages!ugFscherkPage!ug21.ht}
+\index{ug21.ht!pages!ugFscherkPage}
+\index{ugFscherkPage!ug21.ht!pages}
+<<ug21.ht>>=
+\begin{page}{ugFscherkPage}{G.14. scherk.input}
+\beginscroll
+%
+
+Scherk's minimal surface, defined by:
+\texht{$e^z \cos(x) = \cos(y)$}{\axiom{exp(z) * cos(x) = cos(y)}}.
+See: {\it A Comprehensive Introduction to Differential Geometry,} Vol. 3,
+by Michael Spivak, Publish Or Perish, Berkeley, 1979, pp. 249-252.
+
+  
+\noindent
+{\tt 1.\ \ \ (xOffset,\ yOffset):DFLOAT}\newline
+{\tt 2.\ \ \ \ }\newline
+{\tt 3.\ \ \ }\newline
+{\tt 4.\ \ \ drawScherk(m,n)\ ==}\newline
+{\tt 5.\ \ \ \ \ free\ xOffset,\ yOffset}\newline
+{\tt 6.\ \ \ \ \ space\ :=\ createThreeSpace()}\newline
+{\tt 7.\ \ \ \ \ for\ i\ in\ 0..m-1\ repeat}\newline
+{\tt 8.\ \ \ \ \ \ \ xOffset\ :=\ i*\%pi}\newline
+{\tt 9.\ \ \ \ \ \ \ for\ j\ in\ 0\ ..\ n-1\ repeat}\newline
+{\tt 10.\ \ \ \ \ \ \ \ rem(i+j,\ 2)\ =\ 0\ =>\ 'iter}\newline
+{\tt 11.\ \ \ \ \ \ \ \ yOffset\ :=\ j*\%pi}\newline
+{\tt 12.\ \ \ \ \ \ \ \ drawOneScherk(space)}\newline
+{\tt 13.\ \ \ \ makeViewport3D(space,\ "Scherk's\ Minimal\ Surface")}\newline
+{\tt 14.\ \ }\newline
+{\tt 15.\ \ scherk1(u,v)\ ==}\newline
+{\tt 16.\ \ \ \ x\ :=\ cos(u)/exp(v)}\newline
+{\tt 17.\ \ \ \ point\ [xOffset\ +\ acos(x),\ yOffset\ +\ u,\ v,\ abs(v)]}\newline
+{\tt 18.\ \ \ }\newline
+{\tt 19.\ \ scherk2(u,v)\ ==}\newline
+{\tt 20.\ \ \ \ x\ :=\ cos(u)/exp(v)}\newline
+{\tt 21.\ \ \ \ point\ [xOffset\ -\ acos(x),\ yOffset\ +\ u,\ v,\ abs(v)]}\newline
+{\tt 22.\ \ \ }\newline
+{\tt 23.\ \ scherk3(u,v)\ ==\ }\newline
+{\tt 24.\ \ \ \ x\ :=\ exp(v)\ *\ cos(u)}\newline
+{\tt 25.\ \ \ \ point\ [xOffset\ +\ u,\ yOffset\ +\ acos(x),\ v,\ abs(v)]}\newline
+{\tt 26.\ \ \ }\newline
+{\tt 27.\ \ scherk4(u,v)\ ==\ }\newline
+{\tt 28.\ \ \ \ x\ :=\ exp(v)\ *\ cos(u)}\newline
+{\tt 29.\ \ \ \ point\ [xOffset\ +\ u,\ yOffset\ -\ acos(x),\ v,\ abs(v)]}\newline
+{\tt 30.\ \ \ }\newline
+{\tt 31.\ \ drawOneScherk(s)\ ==}\newline
+{\tt 32.\ \ \ \ makeObject(scherk1,-\%pi/2..\%pi/2,0..\%pi/2,space==s,}\newline
+{\tt 33.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
+{\tt 34.\ \ \ \ makeObject(scherk2,-\%pi/2..\%pi/2,0..\%pi/2,space==s,}\newline
+{\tt 35.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
+{\tt 36.\ \ \ \ makeObject(scherk3,-\%pi/2..\%pi/2,-\%pi/2..0,space==s,}\newline
+{\tt 37.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
+{\tt 38.\ \ \ \ makeObject(scherk4,-\%pi/2..\%pi/2,-\%pi/2..0,space==s,}\newline
+{\tt 39.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
+{\tt 40.\ \ \ \ void()}\newline
+  
+\noindent
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\chapter{Hypertex Language Pages}
+\section{hyperdoc.ht}
+\subsection{Creating Hyperdoc Pages}
+\label{Hyperdoc}
+\begin{itemize}
+\item ViewportPage \ref{ViewportPage} on
+page~\pageref{ViewportPage}
+\item BitMaps \ref{BitMaps} on
+page~\pageref{BitMaps}
+\item CPHelp \ref{CPHelp} on
+page~\pageref{CPHelp}
+\end{itemize}
+\index{pages!Hyperdoc!hyperdoc.ht}
+\index{hyperdoc.ht!pages!Hyperdoc}
+\index{Hyperdoc!hyperdoc.ht!pages}
+<<hyperdoc.ht>>=
+\begin{page}{Hyperdoc}{Creating Hyperdoc Pages}
+
+\beginscroll
+This document tells how to create \HyperName pages.
+To start with, it is rather meager but it will grow with time.
+\beginmenu
+\menulink{Viewports}{ViewportPage} Including live graphics in documents.
+\menulink{Gadjets}{BitMaps} Bitmaps for use in macros.
+\menulink{Control Panel Bits}{CPHelp} Development page for help 
+facility for viewports. yuck.
+%\menulink{Test Pages}{TestPage} Some test pages left by J.M.
+%\menulink{Paste Pages}{PastePage} Examples of how to use paste in areas.
+\endmenu
+
+\endscroll
+\autobuttons
+\end{page}
+
+@
+\section{htxadvpage1.ht}
+\subsection{Input Areas}
+\label{HTXAdvPage1}
+See HTXAdvPage2 \ref{HTXAdvPage2} on page~\pageref{HTXAdvPage2}
+\index{pages!HTXAdvPage1!htxadvpage1.ht}
+\index{htxadvpage1.ht!pages!HTXAdvPage1}
+\index{HTXAdvPage1!htxadvpage1.ht!pages}
+<<htxadvpage1.ht>>=
+\begin{page}{HTXAdvPage1}{Input areas}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+You have probably seen input areas in other \HyperName{}
+pages. They provide {\it dynamic link} capabilities.
+Instead of having a choice between certain actions,
+they allow you to specify an action on--the--fly.
+To use them, you need the following commands:
+\beginImportant
+\newline
+{\tt \\inputstring\{{\it label}\}\{{\it length}\}\{{\it default value}\}}
+\newline
+{\tt \\stringvalue\{{\it label}\}}
+\endImportant
+
+The first command puts up an input area of the {\it length}
+specified. The {\it default value} is placed in it.
+The first argument, {\it label} gives a name to the
+contents of the input area.
+You can refer to those contents by using
+the second command. Never place a {\tt \\stringvalue} command
+in an "exposed" part of the page. It is only meant
+to be used as an argument to an {\it action}.
+Here are some examples.
+
+
+
+
+
+\beginImportant
+\begin{paste}{HTXAdvPage1xPaste1}{HTXAdvPage1xPatch1}
+\pastebutton{HTXAdvPage1xPaste1}{Interpret}
+\newline
+{\tt Page name \\tab\{16\} }
+{\tt \\inputstring\{pagetogo\}\{30\}\{RootPage\}}\newline
+{\tt \\newline}\newline
+{\tt \\downlink\{GO!\}\{\\stringvalue\{pagetogo\}\}}\newline
+\end{paste}
+\endImportant
+
+\beginImportant
+\begin{paste}{HTXAdvPage1xPaste2}{HTXAdvPage1xPatch2}
+\pastebutton{HTXAdvPage1xPaste2}{Interpret}
+\newline
+{\tt File to edit \\tab\{16\}}\newline
+{\tt \\inputstring\{filetoedit\}\{30\}\{/etc/passwd\}}\newline
+{\tt \\newline}\newline
+{\tt \\unixcommand\{Ready!\}\{xterm  -e vi \\stringvalue\{filetoedit\}\}}
+\end{paste}
+\endImportant
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next Page --- Radio boxes}{HTXAdvPage2}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXAdvPage1xPatch1 patch}
+\label{HTXAdvPage1xPatch1}
+\index{patch!HTXAdvPage1xPatch1!htxadvpage1.ht}
+\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch1}
+\index{HTXAdvPage1xPatch1!htxadvpage1.ht!patch}
+<<htxadvpage1.ht>>=
+\begin{patch}{HTXAdvPage1xPatch1}
+\begin{paste}{HTXAdvPage1xPaste1A}{HTXAdvPage1xPatch1A}
+\pastebutton{HTXAdvPage1xPaste1A}{Source}
+\newline
+Page name \tab{16}
+\inputstring{pagetogo}{30}{RootPage}
+\newline
+\downlink{GO!}{\stringvalue{pagetogo}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage1xPatch1A patch}
+\label{HTXAdvPage1xPatch1A}
+\index{patch!HTXAdvPage1xPatch1A!htxadvpage1.ht}
+\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch1A}
+\index{HTXAdvPage1xPatch1A!htxadvpage1.ht!patch}
+<<htxadvpage1.ht>>=
+\begin{patch}{HTXAdvPage1xPatch1A}
+\begin{paste}{HTXAdvPage1xPaste1B}{HTXAdvPage1xPatch1}
+\pastebutton{HTXAdvPage1xPaste1B}{Interpret}
+\newline
+{\tt Page name \\tab\{16\} }
+{\tt \\inputstring\{pagetogo\}\{30\}\{RootPage\}}\newline
+{\tt \\newline}\newline
+{\tt \\downlink\{GO!\}\{\\stringvalue\{pagetogo\}\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage1xPatch2 patch}
+\label{HTXAdvPage1xPatch2}
+\index{patch!HTXAdvPage1xPatch2!htxadvpage1.ht}
+\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch2}
+\index{HTXAdvPage1xPatch2!htxadvpage1.ht!patch}
+<<htxadvpage1.ht>>=
+\begin{patch}{HTXAdvPage1xPatch2}
+\begin{paste}{HTXAdvPage1xPaste2A}{HTXAdvPage1xPatch2A}
+\pastebutton{HTXAdvPage1xPaste2A}{Source}
+\newline
+File to edit \tab{16}
+\inputstring{filetoedit}{30}{/etc/passwd}
+\newline
+\unixcommand{Ready!}{xterm  -e vi \stringvalue{filetoedit}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage1xPatch2A patch}
+\label{HTXAdvPage1xPatch2A}
+\index{patch!HTXAdvPage1xPatch2A!htxadvpage1.ht}
+\index{htxadvpage1.ht!patch!HTXAdvPage1xPatch2A}
+\index{HTXAdvPage1xPatch2A!htxadvpage1.ht!patch}
+<<htxadvpage1.ht>>=
+\begin{patch}{HTXAdvPage1xPatch2A}
+\begin{paste}{HTXAdvPage1xPaste2B}{HTXAdvPage1xPatch2}
+\pastebutton{HTXAdvPage1xPaste2B}{Interpret}
+\newline
+{\tt File to edit \\tab\{16\}}\newline
+{\tt \\inputstring\{filetoedit\}\{30\}\{/etc/passwd\}}\newline
+{\tt \\newline}\newline
+{\tt \\unixcommand\{Ready!\}\{xterm  -e vi \\stringvalue\{filetoedit\}\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxadvpage2.ht}
+\subsection{Radio buttons}
+\label{HTXAdvPage2}
+See HTXAdvPage3 \ref{HTXAdvPage3} on page~\pageref{HTXAdvPage3}
+\index{pages!HTXAdvPage2!htxadvpage2.ht}
+\index{htxadvpage2.ht!pages!HTXAdvPage2}
+\index{HTXAdvPage2!htxadvpage2.ht!pages}
+<<htxadvpage2.ht>>=
+\begin{page}{HTXAdvPage2}{Radio buttons}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+
+If you just want to make a multiple-choice
+type selection, why not use the {\it radio buttons}.
+
+You need to use bitmaps for the active areas (the buttons) but
+\HyperName{} will keep track of the currently activated button.
+You can use this boolean information somewhere else on your page.
+The commands to use are:
+\beginImportant
+\newline
+{\tt \\radioboxes\{{\it group name}\}\{{\it bitmap file1}\}\{{\it bitmap file0}\}}
+\newline
+{\tt \\radiobox[{\it initial state}]\{{\it label}\}\{{\it group name}\}}
+\newline
+{\tt \\boxvalue\{{\it label}\}}
+\endImportant
+
+The {\tt \\radioboxes} command sets up a group of {\tt \\radiobox}
+buttons. The {\it group name} is a label for the group. The filenames
+for the bitmaps are specified in {\it bitmap file1} and {\it bitmap file0}.
+The first one should denote an activated button and the second
+a de-activated one.
+
+To display each button in a group, use {\tt \\radiobox}.
+The {\it initial state} should be either {\tt 1} or {\tt 0}
+depending on whether the button should first be displayed as activated or not.
+The second {\it label} argument defines the name by which the
+current state of the button can be referred to.
+The third argument specifies which group this button belongs to.
+
+The {\tt \\boxvalue} command can then be used in various
+actions. The value of it will
+be either {\tt t} or {\tt nil}.
+
+In the example below, we use the {\tt \\htbmfile} macro
+defined in {\bf util.ht} so that we do not have to write
+the full bitmap file pathnames.
+
+This is how we set up the group. The {\tt \\radioboxes} command does not display
+anything.
+Note that these commands cannot be included in a {\it patch}.
+This is why we display this time the source and the result
+at the same time.
+\beginImportant
+\newline
+{\tt \\radioboxes\{group\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}}\newline
+{\tt \\newline \\table\{}\newline
+{\tt \{\\radiobox[1]\{b1\}\{group\}\}}\newline
+{\tt \{\\radiobox[0]\{b2\}\{group\}\}}\newline
+{\tt \{\\radiobox[0]\{b3\}\{group\}\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{lisp\}\{(pprint (list}\newline
+{\tt \\boxvalue\{b1\} \\boxvalue\{b2\} \\boxvalue\{b3\}))\}}\newline
+{\tt \\newline}\newline
+{\tt \\unixcommand\{unix\}\{echo '\\boxvalue\{b1\}}\newline
+{\tt \\boxvalue\{b2\} \\boxvalue\{b3\}'\}}
+\endImportant
+\radioboxes{group}{\htbmfile{pick}}{\htbmfile{unpick}}
+\table{
+{\radiobox[1]{b1}{group}}
+{\radiobox[0]{b2}{group}}
+{\radiobox[0]{b3}{group}}}
+\newline
+\lispcommand{lisp}{(pprint (list
+\boxvalue{b1} \boxvalue{b2} \boxvalue{b3}))}
+\newline
+\unixcommand{unix}{echo '\boxvalue{b1}
+\boxvalue{b2} \boxvalue{b3}'}
+\endImportant
+
+
+
+
+You can only set one radio button at a time. If you want
+a non--exclusive selection, try {\tt \\inputbox}.
+The syntax for this command is
+\beginImportant
+\newline
+{\tt \\inputbox[{\it initial state}]\{{\it label}\}\{{\it bitmap file1}\}\{{\it bitmap file0}\}}
+\endImportant
+
+There is no group command for these.
+\beginImportant
+\newline
+{\tt \\table\{}\newline
+{\tt \{\\inputbox[1]\{c1\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}}\newline
+{\tt \{\\inputbox\{c2\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}}\newline
+{\tt \{\\inputbox[1]\{c3\}\{\\htbmfile\{pick\}\}\{\\htbmfile\{unpick\}\}\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{lisp\}\{(pprint (list}\newline
+{\tt \\boxvalue\{c1\} \\boxvalue\{c2\} \\boxvalue\{c3\}))\}}\newline
+{\tt \\newline}\newline
+{\tt \\unixcommand\{unix\}\{echo }\newline
+{\tt '\\boxvalue\{c1\} \\boxvalue\{c2\} \\boxvalue\{c3\}'\}}\newline
+\endImportant
+\table{
+{\inputbox[1]{c1}{\htbmfile{pick}}{\htbmfile{unpick}}}
+{\inputbox{c2}{\htbmfile{pick}}{\htbmfile{unpick}}}
+{\inputbox[1]{c3}{\htbmfile{pick}}{\htbmfile{unpick}}}}
+\newline
+\lispcommand{lisp}{(pprint (list
+\boxvalue{c1} \boxvalue{c2} \boxvalue{c3}))}
+\newline
+\unixcommand{unix}{echo
+'\boxvalue{c1} \boxvalue{c2} \boxvalue{c3}'}
+\endImportant
+
+
+Note that the {\it initial state} is an
+optional argument. If omitted
+the button will initially
+be deactivated.
+
+\end{scroll}
+\beginmenu
+\menulink{Next Page --- Macros}{HTXAdvPage3}
+\endmenu
+
+\end{page}
+
+@
+\section{htxadvpage3.ht}
+\subsection{Macros}
+\label{HTXAdvPage3}
+See HTXAdvPage4 \ref{HTXAdvPage4} on page~\ref{HTXAdvPage4}p
+\index{pages!HTXAdvPage3!htxadvpage3.ht}
+\index{htxadvpage3.ht!pages!HTXAdvPage3}
+\index{HTXAdvPage3!htxadvpage3.ht!pages}
+<<htxadvpage3.ht>>=
+\begin{page}{HTXAdvPage3}{Macros}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+
+Sometimes you may find yourself having to
+write
+almost the same piece of \HyperName{}
+text many times. Thankfully, there is a command to ease
+the work.
+It is the {\tt \\newcommand} command and provides
+a macro facility for \HyperName{}.
+In this way, you can give a short name to a sequence of \HyperName{}
+text and use that name to include the sequence in your pages.
+The way this works is the following
+\beginImportant
+\newline
+\centerline{{\tt \\newcommand\{\\{\it name}\}[{\it number of arguments}]\{{\it \HyperName{} text}\}}}
+\endImportant
+and here is an example from {\bf util.ht}
+\beginImportant
+\newline
+{\tt \\newcommand\{\\axiomSig\}[2]\{\\axiomType\{\#1\} \{\\tt ->\} \\axiomType\{\#2\}\}}
+\newline
+{\tt \\newcommand\{\\axiomType\}[1]\{\\lispdownlink\{\#1\}\{(|spadType| '|\#1|)\}\}}
+\endImportant
+
+You see that a macro's definition can invoke another.
+Don't create a circular definition though!
+Notice how the arguments of the macro are used
+in the definition. The {\tt \#{\it n}} construct
+is the place--holder of the {\it n}'th argument.
+
+To use the macro, just treat it as an ordinary command.
+For instance
+\beginImportant
+\newline
+{\tt \\axiomSig\{Integer\}\{List Integer\}}
+\endImportant
+displays and acts like this
+\beginImportant
+\newline
+\axiomSig{Integer}{List Integer}
+\endImportant
+
+The best way to familiarise yourself to
+macros is to study the macros defined in
+\centerline{
+{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}
+}
+It is highly probable that a good many of them
+will prove useful to you.
+Clever use of macros will allow you to
+create \HyperName{} text that can be
+formatted by other programs (such as TeX).
+The Axiom User Guide was written
+in such a way as to make translation in
+\HyperName{} form and TeX form a mechanical process.
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next Page --- Patch and Paste}{HTXAdvPage4}
+\endmenu
+
+\end{page}
+
+@
+\section{htxadvpage4.ht}
+\subsection{Patch and Paste}
+\label{HTXAdvPage4}
+See HTXAdvPage5 \ref{HTXAdvPage5} on page~\pageref{HTXAdvPage5}
+\index{pages!HTXAdvPage4!htxadvpage4.ht}
+\index{htxadvpage4.ht!pages!HTXAdvPage4}
+\index{HTXAdvPage4!htxadvpage4.ht!pages}
+<<htxadvpage4.ht>>=
+\begin{page}{HTXAdvPage4}{Patch and Paste}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+
+A powerful \HyperName{} feature is
+the ability to {\it replace}
+part of a displayed page with another part
+when an active area is clicked. The group commands
+{\it patch} and {\it paste} offer this facility.
+A {\it paste} region can appear anywhere
+within a page or a {\it patch}. A {\it patch} region must be defined
+outside a page definition.
+
+We need a few  objects to define the {\it paste}
+region. These are a {\it name} with which to
+refer to it, some way of specifying what it
+is to be replaced by and a {\it trigger} for the
+replacement. A {\it patch} is how we specify the
+second of these objects.
+The {\it patch} is generally a sequence of \HyperName{}
+text.
+
+If we want to have the option of returning to the original
+(or ,indeed, proceeding to a {\it third} alternative)
+we clearly must include a {\it paste} in the {\it patch}.
+
+Let us start with a simple example. We wish to
+have the word {\tt initial} somewhere on the page replaced by the
+word {\tt final} at a click of a button.
+Let us first define the {\it patch}. It will just contain
+the word {\tt final}. Here is a definition of a
+patch called {\tt patch1} (note that
+the actual definition must be outside this page's definition).
+\beginImportant
+\newline
+{\tt \\begin\{patch\}\{patch1\}} \newline
+{\tt final}\newline
+{\tt \\end\{patch\}}
+\endImportant
+We now define a {\it paste} region exactly where we
+want the word {\tt initial} to appear.
+\beginImportant
+\newline
+{\tt \\begin\{paste\}\{paste1\}\{patch1\}}\newline
+{\tt initial}\newline
+{\tt \\end\{paste\}}
+\centerline{{\it results in}}
+\begin{paste}{paste1}{patch1}
+initial
+\end{paste}
+\endImportant
+We have specified first the name of the {\it paste} region
+which is {\tt paste1} and then the name of the
+replacement {\it patch} which is {\tt patch1}.
+Something is missing -- the trigger.
+To include a trigger we write
+\beginImportant
+\newline
+{\tt \\pastebutton\{paste1\}\{trigger\}
+\centerline{{\it results in}}
+\pastebutton{paste1}{trigger}
+\endImportant
+This new command {\tt \\pastebutton} displays the second argument
+as an active area. The first argument specifies the {\it paste}
+region it refers to. Clicking on {\tt trigger} above will
+replace the word {\tt initial} with the word {\tt final}.
+
+We can, if we like, include the {\tt \\pastebutton} in the {\it paste}
+region.
+Let us improve on the situation by providing a way
+of going back to the original word {\tt initial} on the page.
+The {\it patch} must itself include a {\it paste}.
+What will the replacement {\it patch} for this new {\it paste}
+be ? Well, we  have to define a second {\it patch}
+that contains all the stuff in the original {\it paste}
+region. Here is the updated {\it patch} for the first replacement.
+The {\tt \\MenuDotBitmap} macro is defined in {\bf util.ht}.
+It displays a button bitmap.
+This time we put the {\tt \\pastebutton}
+inside the {\it paste}.
+\beginImportant
+\newline
+{\tt \\begin\{patch\}\{Patch1\}}\newline
+{\tt \\begin\{paste\}\{Paste2\}\{Patch2\}}\newline
+{\tt \\pastebutton\{Paste2\}\{\\MenuDotBitmap\}}\newline
+{\tt final}\newline
+{\tt \\end\{paste\}}\newline
+{\tt \\end\{patch\}}\newline
+\endImportant
+and the new {\tt Patch2} {\it patch}
+\beginImportant
+\newline
+{\tt \\begin\{patch\}\{Patch2\}}\newline
+{\tt \\begin\{paste\}\{Paste3\}\{Patch1\}}\newline
+{\tt \\pastebutton\{Paste3\}\{\\MenuDotBitmap\}}\newline
+{\tt initial}\newline
+{\tt \\end\{paste\}}\newline
+{\tt \\end\{patch\}}\newline
+\endImportant
+
+Remember that these {\it patch} definitons must
+occur outside a {\tt \\begin\{page\} - \\end\{page\}} group.
+What is left now is to define the starting {\it paste}
+region.
+\beginImportant
+\newline
+{\tt \\begin\{paste\}\{Paste1\}\{Patch1\}}\newline
+{\tt \\pastebutton\{Paste1\}\{\\MenuDotBitmap\}}\newline
+{\tt initial}\newline
+{\tt \\end\{paste\}}
+\centerline{{\it results in}}
+\begin{paste}{Paste1}{Patch1}
+\pastebutton{Paste1}{\MenuDotBitmap}
+initial
+\end{paste}
+\endImportant
+
+Clicking on the button above next to {\tt initial}
+will replace the {\tt Paste1} region with
+{\tt Patch1}. That {\it patch}
+also contains a {\it paste} region ({\tt Paste2}).
+Clicking on {\it its} button will put up
+{\tt Patch2} which has a {\it paste} region ({\tt Paste3}).
+Clicking on {\it its} button will put up {\tt Patch1}
+again. In that way, we close the chain of replacements.
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next Page --- Axiom paste-ins}{HTXAdvPage5}
+\endmenu
+
+\end{page}
+
+@
+\subsection{patch1 patch}
+\label{patch1}
+\index{patch!patch1!htxadvpage4.ht}
+\index{htxadvpage4.ht!patch!patch1}
+\index{patch1!htxadvpage4.ht!patch}
+<<htxadvpage4.ht>>=
+\begin{patch}{patch1}
+final
+\end{patch}
+
+@
+\subsection{Patch1 patch}
+\label{Patch1}
+\index{patch!Patch1!htxadvpage4.ht}
+\index{htxadvpage4.ht!patch!Patch1}
+\index{Patch1!htxadvpage4.ht!patch}
+<<htxadvpage4.ht>>=
+\begin{patch}{Patch1}
+\begin{paste}{Paste2}{Patch2}
+\pastebutton{Paste2}{\MenuDotBitmap}
+final
+\end{paste}
+\end{patch}
+
+@
+\subsection{Patch2 patch}
+\label{Patch2}
+\index{patch!Patch2!htxadvpage4.ht}
+\index{htxadvpage4.ht!patch!Patch2}
+\index{Patch2!htxadvpage4.ht!patch}
+<<htxadvpage4.ht>>=
+\begin{patch}{Patch2}
+\begin{paste}{Paste3}{Patch1}
+\pastebutton{Paste3}{\MenuDotBitmap}
+initial
+\end{paste}
+\end{patch}
+
+@
+\section{htxadvpage5.ht}
+\subsection{Axiom paste-ins}
+\label{HTXAdvPage5}
+See HTXAdvPage6 \ref{HTXAdvPage6} on page~\pageref{HTXAdvPage6}
+\index{pages!HTXAdvPage5!htxadvpage5.ht}
+\index{htxadvpage5.ht!pages!HTXAdvPage5}
+\index{HTXAdvPage5!htxadvpage5.ht!pages}
+<<htxadvpage5.ht>>=
+\begin{page}{HTXAdvPage5}{Axiom paste-ins}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+The {\it paste} and {\it patch} facility (see \downlink{previous page}{HTXAdvPage4})
+is used to display (or hide) the Axiom output
+of an Axiom command ({\tt\\axiomcommand})
+included in a
+\HyperName{} page.
+
+A mechanism has been set up to {\it automatically} generate
+these paste-ins. It amounts to replacing an
+{\tt \\axiomcommand} by a {\tt \\pastecommand} in the
+\HyperName{} page.
+
+In the case of a \axiomOp{draw} Axiom command
+, where the result is to create an interactive viewport,
+the appropriate command to use is {\tt \\pastegraph}.
+The effect of this is to include (as the output)
+the Axiom generated {\it image} of the graph
+as an active area. Clicking on it will put up an
+interactive viewport.
+The {\tt \\pastegraph} command should be used only when
+the result of the associated Axiom operation is
+to {\it create} an interactive viewport. It is {\it not} necessarily
+appropriate for all commands whose result
+is a \axiomType{Two{}Dimensional{}Viewport} or \axiomType{Three{}Dimensional{}Viewport}.
+The {\tt \\pastecommand} and {\tt \\pastegraph}
+are  macros defined in {\bf util.ht}.
+
+
+
+There is no automatic paste-in generation facility
+for Axiom piles (the {\tt \\begin\{axiomsrc\}} command).
+
+
+The automatic paste-in generation mechanism works
+by invoking Axiom with a particular option.
+\HyperName{} is also started automatically. It reads
+the {\tt \\pastecommand} and {\tt \\pastegraph}
+commands in all pages in a specified
+{\bf somefile.ht}  and passes them to
+Axiom for evaluation. \HyperName{}
+captures the output and writes it out (to a
+file called {\bf somefile.pht}) as the body of
+some {\it patch} definitions. The commands
+encountered are written to a file
+{\bf somefile.input} which you can {\tt )read} from an Axiom session.
+It also creates directories for the graphics
+images encountered. Those files and directories
+will be written under the {\it current} directory.
+The idea is that you then include the {\it patch} definitions
+in {\bf somefile.pht} in your local database using {\bf htadd}.
+
+
+You can try this feature now. Edit a file called, say, {\bf trypaste.ht}
+in a directory, say {\bf /tmp}. Put the following \HyperName{} text
+in it.
+\beginImportant
+\newline
+{\tt \\begin\{page\}\{TryPaste\}\{Trying out paste-in generation\}}\newline
+{\tt \\begin\{scroll\}}\newline
+{\tt \\pastecommand\{f z == z**2 \\bound\{f\}\}}\newline
+{\tt \\pastegraph\{draw(f,-1..1) \\free\{f\}\}}\newline
+{\tt \\pastecommand\{x:= f 3 \\free\{f\}\}}\newline
+{\tt \\end\{scroll\}}\newline
+{\tt \\end\{page\}}\newline
+\endImportant
+
+From the directory that contains the {\bf trypaste.ht},
+issue
+\centerline{
+{\tt htadd -l ./trypaste.ht}
+}
+You will get the
+{\bf ht.db} database file.
+Set the environment variable {\tt HTPATH} so that
+it points first to your directory and then the system directory.
+In the {\bf /bin/csh}, you might use
+\centerline{
+{\tt setenv HTPATH /tmp:\$AXIOM/doc/hypertex/pages}
+}
+Make sure that no {\bf trypaste.input} or {\bf trypaste.pht}
+files exist in the directory.
+Then issue
+\centerline{
+{\tt axiom -paste trypaste.ht}
+}
+ and wait for
+Axiom to finish.
+
+There is a modification you will wish to make to
+the {\bf trypaste.pht} file.
+This is because the generated \HyperName{} text will assume that
+the {\it viewport} data will be located in the
+{\it system} directory.
+\centerline{{\bf \env{AXIOM}/doc/viewports}}
+You may want to place your images in a different directory,
+say, {\bf /u/sugar/viewports}.
+If so, then change all occurences of
+\beginImportant
+\newline
+{\tt \\env\{AXIOM\}/doc/viewports/}
+\centerline{{\it by}}
+{\tt /u/sugar/viewports/}
+\endImportant
+in the file {\bf trypaste.pht}. The last step
+is to include the {\it patch} definitions
+in {\bf trypaste.pht} to your local database.
+Issue
+\centerline{
+{\tt htadd -l ./trypaste.pht}
+}
+to update the database. If you have provided
+a link to your pages from the {\tt RootPage}
+via the {\tt \\localinfo} macro, you should now
+be able to start Axiom or \HyperName{}
+and see the computed Axiom output whenever you
+click on the buttons to the left of each command.
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next Page --- Miscellaneous}{HTXAdvPage6}
+\endmenu
+
+\end{page}
+
+@
+\section{htxadvpage6.ht}
+\subsection{Miscellaneous}
+\label{HTXAdvPage6}
+See HTXAdvTopPage \ref{HTXAdvTopPage} on page~\pageref{HTXAdvTopPage}
+\index{pages!HTXAdvPage6!htxadvpage6.ht}
+\index{htxadvpage6.ht!pages!HTXAdvPage6}
+\index{HTXAdvPage6!htxadvpage6.ht!pages}
+<<htxadvpage6.ht>>=
+\begin{page}{HTXAdvPage6}{Miscellaneous}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+
+We present here a few commands that may be of some use
+to you.
+You may want to know certain parameters so that you can pass
+them to one of the action {\tt \\command}s.
+
+The {\tt \\thispage} command shows the name of the
+current page.
+
+\beginImportant
+\begin{paste}{HTXAdvPage6xPaste1}{HTXAdvPage6xPatch1}
+\pastebutton{HTXAdvPage6xPaste1}{Interpret}
+\newline
+{\tt \\thispage}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Lisp\}\{(pprint "\\thispage")\}}\newline
+\end{paste}
+\endImportant
+
+
+The {\tt \\windowid} command shows the X Windows
+{\it WindowID} of the current window.
+
+\beginImportant
+\begin{paste}{HTXAdvPage6xPaste2}{HTXAdvPage6xPatch2}
+\pastebutton{HTXAdvPage6xPaste2}{Interpret}
+\newline
+{\tt \\windowid}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Lisp\}\{(pprint \\windowid)\}}\newline
+\end{paste}
+\endImportant
+
+% \examplenumber not documented
+
+The {\tt \\env} command gets the value of an environment
+variable. It is an error to use {\tt \\env} with an undefined
+environment variable.
+
+\beginImportant
+\begin{paste}{HTXAdvPage6xPaste3}{HTXAdvPage6xPatch3}
+\pastebutton{HTXAdvPage6xPaste3}{Interpret}
+\newline
+{\tt \\env\{AXIOM\}}
+\end{paste}
+\endImportant
+
+
+The {\tt \\nolines} command, if included somewhere
+in the page, eliminates the horizontal lines that
+delimit the header and footer regions.
+
+
+% \beep not documented
+
+%\returnbutton{homebutton}{ReturnPage}
+
+%\upbutton{upbutton}{UpPage}
+
+
+\end{scroll}
+\beginmenu
+\menulink{Back to Menu}{HTXAdvTopPage}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXAdvPage6xPatch1 patch}
+\label{HTXAdvPage6xPatch1}
+\index{patch!HTXAdvPage6xPatch1!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch1}
+\index{HTXAdvPage6xPatch1!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch1}
+\begin{paste}{HTXAdvPage6xPaste1A}{HTXAdvPage6xPatch1A}
+\pastebutton{HTXAdvPage6xPaste1A}{Source}
+\newline
+\thispage
+\newline
+\lispcommand{Lisp}{(pprint "\thispage")}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage6xPatch1A patch}
+\label{HTXAdvPage6xPatch1A}
+\index{patch!HTXAdvPage6xPatch1A!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch1A}
+\index{HTXAdvPage6xPatch1A!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch1A}
+\begin{paste}{HTXAdvPage6xPaste1B}{HTXAdvPage6xPatch1}
+\pastebutton{HTXAdvPage6xPaste1B}{Interpret}
+\newline
+{\tt \\thispage}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Lisp\}\{(pprint "\\thispage")\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage6xPatch2 patch}
+\label{HTXAdvPage6xPatch2}
+\index{patch!HTXAdvPage6xPatch2!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch2}
+\index{HTXAdvPage6xPatch2!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch2}
+\begin{paste}{HTXAdvPage6xPaste2A}{HTXAdvPage6xPatch2A}
+\pastebutton{HTXAdvPage6xPaste2A}{Source}
+\newline
+\windowid
+\newline
+\lispcommand{Lisp}{(pprint \windowid)}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage6xPatch2A patch}
+\label{HTXAdvPage6xPatch2A}
+\index{patch!HTXAdvPage6xPatch2A!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch2A}
+\index{HTXAdvPage6xPatch2A!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch2A}
+\begin{paste}{HTXAdvPage6xPaste2B}{HTXAdvPage6xPatch2}
+\pastebutton{HTXAdvPage6xPaste2B}{Interpret}
+\newline
+{\tt \\windowid}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Lisp\}\{(pprint \\windowid)\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage6xPatch3 patch}
+\label{HTXAdvPage6xPatch3}
+\index{patch!HTXAdvPage6xPatch3!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch3}
+\index{HTXAdvPage6xPatch3!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch3}
+\begin{paste}{HTXAdvPage6xPaste3A}{HTXAdvPage6xPatch3A}
+\pastebutton{HTXAdvPage6xPaste3A}{Source}
+\newline
+\env{AXIOM}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXAdvPage6xPatch3A patch}
+\label{HTXAdvPage6xPatch3A}
+\index{patch!HTXAdvPage6xPatch3A!htxadvpage6.ht}
+\index{htxadvpage6.ht!patch!HTXAdvPage6xPatch3A}
+\index{HTXAdvPage6xPatch3A!htxadvpage6.ht!patch}
+<<htxadvpage6.ht>>=
+\begin{patch}{HTXAdvPage6xPatch3A}
+\begin{paste}{HTXAdvPage6xPaste3B}{HTXAdvPage6xPatch3}
+\pastebutton{HTXAdvPage6xPaste3B}{Interpret}
+\newline
+{\tt \\env\{AXIOM\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxadvtoppage.ht}
+\subsection{Advanced features in Hyperdoc}
+\label{HTXAdvTopPage}
+\begin{itemize}
+\item HTXAdvPage1 \ref{HTXAdvPage1} on page~\pageref{HTXAdvPage1}
+\item HTXAdvPage2 \ref{HTXAdvPage2} on page~\pageref{HTXAdvPage2}
+\item HTXAdvPage3 \ref{HTXAdvPage3} on page~\pageref{HTXAdvPage3}
+\item HTXAdvPage4 \ref{HTXAdvPage4} on page~\pageref{HTXAdvPage4}
+\item HTXAdvPage5 \ref{HTXAdvPage5} on page~\pageref{HTXAdvPage5}
+\item HTXAdvPage6 \ref{HTXAdvPage6} on page~\pageref{HTXAdvPage6}
+\end{itemize}
+\index{pages!HTXAdvTopPage!htxadvtoppage.ht}
+\index{htxadvtoppage.ht!pages!HTXAdvTopPage}
+\index{HTXAdvTopPage!htxadvtoppage.ht!pages}
+<<htxadvtoppage.ht>>=
+\begin{page}{HTXAdvTopPage}{Advanced features in Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\beginscroll
+\beginmenu
+\menudownlink{Creating input areas}{HTXAdvPage1}
+\menudownlink{Creating radio boxes}{HTXAdvPage2}
+\menudownlink{Define new macros     }{HTXAdvPage3}
+\menudownlink{Using patch and paste}{HTXAdvPage4}
+\menudownlink{Generate paste-ins for Axiom commands}{HTXAdvPage5}
+\menudownlink{Miscellaneous}{HTXAdvPage6}
+\endmenu
+\endscroll
+\end{page}
+
+@
+\section{htxformatpage1.ht}
+\subsection{Using the special characters}
+\label{HTXFormatPage1}
+See HTXFormatPage2 \ref{HTXFormatPage2} on page~\pageref{HTXFormatPage2}
+\index{pages!HTXFormatPage1!htxformatpage1.ht}
+\index{htxformatpage1.ht!pages!HTXFormatPage1}
+\index{HTXFormatPage1!htxformatpage1.ht!pages}
+<<htxformatpage1.ht>>=
+\begin{page}{HTXFormatPage1}{Using the special characters}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+You can display the special characters ({\tt \$ \\ \{ \{ \[ \] \% \#})
+by simply inserting the backslash {\tt \\} character just before any 
+one of them. So,
+\beginImportant
+\begin{paste}{HTXFormatPage1xPaste1}{HTXFormatPage1xPatch1}
+\pastebutton{HTXFormatPage1xPaste1}{Interpret}
+\newline
+{\tt the characters \\\$, \\\\, \\\{, \\\}, \\\[, \\\], \\\%, \\\# }
+\end{paste}
+\endImportant
+
+
+The {\tt \%} character is used in \HyperName{} as a comment marker.
+If it is encountered on any line (without being preceded by the {\tt \\}
+ character,
+of course), \HyperName{} will ignore all remaining characters on that line.
+\beginImportant
+\begin{paste}{HTXFormatPage1xPaste2}{HTXFormatPage1xPatch2}
+\pastebutton{HTXFormatPage1xPaste2}{Interpret}
+\newline
+{\tt  the latest figures indicate \% GET THE LATEST FIGURES}\newline
+{\tt a steady rise}\indent{0}
+\end{paste}
+\endImportant
+
+Earlier versions of \HyperName{} merged the words "indicate" and "a"
+into one word in the example above. This no longer occurs.
+
+%The two lines below are from Release 1.x
+%Note that you must leave a space at the beginning of the line after the comment,
+%otherwise \HyperName{} would treat "indicate" and "a" as one word.
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Formatting without commands}{HTXFormatPage2}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage1xPatch1 patch}
+\label{HTXFormatPage1xPatch1}
+\index{patch!HTXFormatPage1xPatch1!htxformatpage1.ht}
+\index{htxformatpage1.ht!patch!HTXFormatPage1xPatch1}
+\index{HTXFormatPage1xPatch1!htxformatpage1.ht!patch}
+<<htxformatpage1.ht>>=
+\begin{patch}{HTXFormatPage1xPatch1}
+\begin{paste}{HTXFormatPage1xPaste1A}{HTXFormatPage1xPatch1A}
+\pastebutton{HTXFormatPage1xPaste1A}{Source}
+\newline
+the characters \$, \\, \{, \}, \[, \],  \%, \#
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage1xPatch1A}
+\begin{paste}{HTXFormatPage1xPaste1B}{HTXFormatPage1xPatch1}
+\pastebutton{HTXFormatPage1xPaste1B}{Interpret}
+\newline
+{\tt the characters \\\$, \\\\, \\\{, \\\}, \\\[, \\\], \\\%, \\\# }
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage1xPatch2 patch}
+\label{HTXFormatPage1xPatch2}
+\index{patch!HTXFormatPage1xPatch2!htxformatpage1.ht}
+\index{htxformatpage1.ht!patch!HTXFormatPage1xPatch2}
+\index{HTXFormatPage1xPatch2!htxformatpage1.ht!patch}
+<<htxformatpage1.ht>>=
+\begin{patch}{HTXFormatPage1xPatch2}
+\begin{paste}{HTXFormatPage1xPaste2A}{HTXFormatPage1xPatch2A}
+\pastebutton{HTXFormatPage1xPaste2A}{Source}
+\newline
+the latest figures indicate % GET THE LATEST FIGURES
+a steady rise
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage1xPatch2A}
+\begin{paste}{HTXFormatPage1xPaste2B}{HTXFormatPage1xPatch2}
+\pastebutton{HTXFormatPage1xPaste2B}{Interpret}
+\newline
+{\tt  the latest figures indicate \% GET THE LATEST FIGURES}\newline
+{\tt a steady rise}\indent{0}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage2.ht}
+\subsection{Formatting without commands}
+\label{HTXFormatPage2}
+\index{pages!HTXFormatPage2!htxformatpage2.ht}
+\index{htxformatpage2.ht!pages!HTXFormatPage2}
+\index{HTXFormatPage2!htxformatpage2.ht!pages}
+<<htxformatpage2.ht>>=
+\begin{page}{HTXFormatPage2}{Formatting without commands}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+\HyperName{} will interpret normal text in a {\em source file}
+according to the following rules. \newline
+\menuitemstyle{\indentrel{4}
+Spaces mark the ends of words. The number of spaces between
+words is {\em not} significant, that is, you cannot control word spacing
+by inserting or removing extra space characters.
+\indentrel{-4}}
+\beginImportant
+\begin{paste}{HTXFormatPage2xxPaste1}{HTXFormatPage2xPatch1}
+\pastebutton{HTXFormatPage2xxPaste1}{Interpret}
+\begin{verbatim}
+word    spacing is       not  important
+\end{verbatim}
+\end{paste}
+\endImportant
+\menuitemstyle{\indentrel{4}
+End-of-line  characters are not significant.
+You can break up lines in the source file as you like. The end-of-line
+will be interpreted as a space. 
+Take advantage of this feature to improve the readability of the
+source file.
+\indentrel{-4}}
+\beginImportant
+\begin{paste}{HTXFormatPage2xxPaste2}{HTXFormatPage2xPatch2}
+\pastebutton{HTXFormatPage2xxPaste2}{Interpret}
+\begin{verbatim}
+This is
+one
+sentence.
+\end{verbatim}
+\end{paste}
+\endImportant
+\menuitemstyle{\indentrel{4}
+A blank line marks the end of a paragraph. 
+Leaving more blank lines that necessary has no effect.
+\indentrel{-4}}
+\beginImportant
+\begin{paste}{HTXFormatPage2xxPaste3}{HTXFormatPage2xPatch3}
+\pastebutton{HTXFormatPage2xxPaste3}{Interpret}
+\begin{verbatim}
+some end.% A COMMENT
+
+
+Start a paragraph
+
+Start another paragraph.
+\end{verbatim}
+\end{paste}
+\endImportant
+\menuitemstyle{\indentrel{4}
+The two-character combination {\tt \{\}} can be used to indicate
+possible breaking of long words. It does not affect the formatting
+in any other way.
+\indentrel{-4}}
+\beginImportant
+\begin{paste}{HTXFormatPage2xxPaste4}{HTXFormatPage2xPatch4}
+\pastebutton{HTXFormatPage2xxPaste4}{Interpret}
+\begin{verbatim}
+Generalized{}Multivariate{}Factorize
+One{}Dimensional{}Array{}Aggregate
+Elementary{}Function{}Definite{}Integration
+Elementary{}Functions{}Univariate{}Puiseux{}Series
+Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
+\end{verbatim}
+\end{paste}
+\endImportant
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Using different fonts}{HTXFormatPage3}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage2xPatch1 patch}
+\label{HTXFormatPage2xPatch1}
+\index{patch!HTXFormatPage2xPatch1!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch1}
+\index{HTXFormatPage2xPatch1!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch1}
+\begin{paste}{HTXFormatPage2xxPaste1A}{HTXFormatPage2xPatch1A}
+\pastebutton{HTXFormatPage2xxPaste1A}{Source}
+\newline
+word    spacing is       not  important
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage2xPatch1A}
+\begin{paste}{HTXFormatPage2xxPaste1B}{HTXFormatPage2xPatch1}
+\pastebutton{HTXFormatPage2xxPaste1B}{Interpret}
+\begin{verbatim}
+word    spacing is       not  important
+\end{verbatim}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch2 patch}
+\label{HTXFormatPage2xPatch2}
+\index{patch!HTXFormatPage2xPatch2!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch2}
+\index{HTXFormatPage2xPatch2!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch2}
+\begin{paste}{HTXFormatPage2xxPaste2A}{HTXFormatPage2xPatch2A}
+\pastebutton{HTXFormatPage2xxPaste2A}{Source}
+\newline
+This is
+one
+sentence.
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch2A patch}
+\label{HTXFormatPage2xPatch2A}
+\index{patch!HTXFormatPage2xPatch2A!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch2A}
+\index{HTXFormatPage2xPatch2A!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch2A}
+\begin{paste}{HTXFormatPage2xxPaste2B}{HTXFormatPage2xPatch2}
+\pastebutton{HTXFormatPage2xxPaste2B}{Interpret}
+\begin{verbatim}
+This is
+one
+sentence.
+\end{verbatim}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch3 patch}
+\label{HTXFormatPage2xPatch3}
+\index{patch!HTXFormatPage2xPatch3!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch3}
+\index{HTXFormatPage2xPatch3!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch3}
+\begin{paste}{HTXFormatPage2xxPaste3A}{HTXFormatPage2xPatch3A}
+\pastebutton{HTXFormatPage2xxPaste3A}{Source}
+\newline
+some end.% A COMMENT
+
+
+Start a paragraph.
+
+Start another paragraph.
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch3A patch}
+\label{HTXFormatPage2xPatch3A}
+\index{patch!HTXFormatPage2xPatch3A!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch3A}
+\index{HTXFormatPage2xPatch3A!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch3A}
+\begin{paste}{HTXFormatPage2xxPaste3B}{HTXFormatPage2xPatch3}
+\pastebutton{HTXFormatPage2xxPaste3B}{Interpret}
+\begin{verbatim}
+some end.% A COMMENT
+
+
+Start a paragraph
+
+Start another paragraph.
+\end{verbatim}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch4 patch}
+\label{HTXFormatPage2xPatch4}
+\index{patch!HTXFormatPage2xPatch4!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch4}
+\index{HTXFormatPage2xPatch4!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch4}
+\begin{paste}{HTXFormatPage2xxPaste4A}{HTXFormatPage2xPatch4A}
+\pastebutton{HTXFormatPage2xxPaste4A}{Source}
+\newline
+Generalized{}Multivariate{}Factorize
+One{}Dimensional{}Array{}Aggregate
+Elementary{}Function{}Definite{}Integration
+Elementary{}Functions{}Univariate{}Puiseux{}Series
+Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage2xPatch4A patch}
+\label{HTXFormatPage2xPatch4A}
+\index{patch!HTXFormatPage2xPatch4A!htxformatpage2.ht}
+\index{htxformatpage2.ht!patch!HTXFormatPage2xPatch4A}
+\index{HTXFormatPage2xPatch4A!htxformatpage2.ht!patch}
+<<htxformatpage2.ht>>=
+\begin{patch}{HTXFormatPage2xPatch4A}
+\begin{paste}{HTXFormatPage2xxPaste4B}{HTXFormatPage2xPatch4}
+\pastebutton{HTXFormatPage2xxPaste4B}{Interpret}
+\begin{verbatim}
+Generalized{}Multivariate{}Factorize
+One{}Dimensional{}Array{}Aggregate
+Elementary{}Function{}Definite{}Integration
+Elementary{}Functions{}Univariate{}Puiseux{}Series
+Finite{}Field{}Cyclic{}Group{}Extension{}ByPolynomial
+\end{verbatim}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage3.ht}
+\subsection{Using different fonts}
+\label{HTXFormatPage3}
+\index{pages!HTXFormatPage3!htxformatpage3.ht}
+\index{htxformatpage3.ht!pages!HTXFormatPage3}
+\index{HTXFormatPage3!htxformatpage3.ht!pages}
+<<htxformatpage3.ht>>=
+\begin{page}{HTXFormatPage3}{Using different fonts}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+You can use various fonts for the text. \HyperName{} makes
+four {\em logical} fonts available to you: a {\em roman} font, an
+{\em emphasised} font, a {\em bold} font and a
+{\em typewriter} font. The actual font that corresponds to
+each logical font is determined by the end user via a
+defaults file. The colour for each of these fonts can also
+be specified.
+
+Normal text is displayed with the roman font.
+If you want to emphasize some text, use the {\tt \\em}
+command in the following way.
+\beginImportant
+\begin{paste}{HTXFormatPage3xPaste1}{HTXFormatPage3xPatch1}
+\pastebutton{HTXFormatPage3xPaste1}{Interpret}
+\newline
+{\tt this is \{\\em emphasised\} text}
+\end{paste}
+\endImportant
+
+Note the use of the braces to enclose command and "arguments".
+All font commands are specified in the same way. The {\tt \\em} command
+will in fact {\em switch} between roman and emphasised
+font every time it is used.
+\beginImportant
+\begin{paste}{HTXFormatPage3xPaste2}{HTXFormatPage3xPatch2}
+\pastebutton{HTXFormatPage3xPaste2}{Interpret}
+\newline
+{\tt \{\\em this is \{\\em emphasised\} text\}}
+\end{paste}
+\endImportant
+
+If you want to be sure that the emphasized font will be used, specify
+the {\tt \\it} command. Similarly, you can explicitly select the roman font
+with the {\tt \\rm} command.
+\beginImportant
+\begin{paste}{HTXFormatPage3xPaste3}{HTXFormatPage3xPatch3}
+\pastebutton{HTXFormatPage3xPaste3}{Interpret}
+\newline
+{\tt \{\\em this is \{\\it emphasised\} text and this is \{\\rm roman\}\}}
+\end{paste}
+\endImportant
+
+
+The bold font is selected with the {\tt \\bf} command and the typewriter
+font with the {\tt \\tt} command. All these commands can be applied to
+individual characters, words, sentences etc.
+\beginImportant
+\begin{paste}{HTXFormatPage3xPaste4}{HTXFormatPage3xPatch4}
+\pastebutton{HTXFormatPage3xPaste4}{Interpret}
+\newline
+{\tt \{\\bf U\}\{\\tt g\}\{\\it l\}\{\\rm y\}}
+\end{paste}
+\endImportant
+
+
+Currently, \HyperName{} does not adjust its internal spacing rules
+to each font individually. This means that, for consistent results,
+users are encouraged to specify (in the defaults file)
+"character-cell" fonts that are not
+too small or too large for \HyperName{}. Here is the correspondence
+between the above font commands and the defaults names:\newline
+\menuitemstyle{RmFont \tab{26} {\tt \\rm} or {\tt \\em} }\newline
+\menuitemstyle{BoldFont \tab{26} {\tt \\bf} }\newline
+\menuitemstyle{EmphasizeFont \tab{26} {\tt \\it} or {\tt \\em} }\newline
+\menuitemstyle{Ttfont \tab{26} {\tt \\tt} }\newline
+
+\HyperName{} uses two more logical fonts that can be specified by
+the end user : AxiomFont and ActiveFont. However, you cannot
+explicitly use these fonts in your text. The ActiveFont is automatically
+used for active area text and the AxiomFont is reserved for
+active Axiom commands.
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Indentation}{HTXFormatPage4}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage3xPatch1 patch}
+\label{HTXFormatPage3xPatch1}
+\index{patch!HTXFormatPage3xPatch1!htxformatpage3.ht}
+\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch1}
+\index{HTXFormatPage3xPatch1!htxformatpage3.ht!patch}
+<<htxformatpage3.ht>>=
+\begin{patch}{HTXFormatPage3xPatch1}
+\begin{paste}{HTXFormatPage3xPaste1A}{HTXFormatPage3xPatch1A}
+\pastebutton{HTXFormatPage3xPaste1A}{Source}
+\newline
+this is {\em emphasised} text
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage3xPatch1A}
+\begin{paste}{HTXFormatPage3xPaste1B}{HTXFormatPage3xPatch1}
+\pastebutton{HTXFormatPage3xPaste1B}{Interpret}
+\newline
+{\tt this is \{\\em emphasised\} text}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage3xPatch2 patch}
+\label{HTXFormatPage3xPatch2}
+\index{patch!HTXFormatPage3xPatch2!htxformatpage3.ht}
+\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch2}
+\index{HTXFormatPage3xPatch2!htxformatpage3.ht!patch}
+<<htxformatpage3.ht>>=
+\begin{patch}{HTXFormatPage3xPatch2}
+\begin{paste}{HTXFormatPage3xPaste2A}{HTXFormatPage3xPatch2A}
+\pastebutton{HTXFormatPage3xPaste2A}{Source}
+\newline
+{\em this is {\em emphasised} text}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage3xPatch2A}
+\begin{paste}{HTXFormatPage3xPaste2B}{HTXFormatPage3xPatch2}
+\pastebutton{HTXFormatPage3xPaste2B}{Interpret}
+\newline
+{\tt \{\\em this is \{\\em emphasised\} text\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage3xPatch3 patch}
+\label{HTXFormatPage3xPatch3}
+\index{patch!HTXFormatPage3xPatch3!htxformatpage3.ht}
+\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch3}
+\index{HTXFormatPage3xPatch3!htxformatpage3.ht!patch}
+<<htxformatpage3.ht>>=
+\begin{patch}{HTXFormatPage3xPatch3}
+\begin{paste}{HTXFormatPage3xPaste3A}{HTXFormatPage3xPatch3A}
+\pastebutton{HTXFormatPage3xPaste3A}{Source}
+\newline
+{\em this is {\it emphasised} text and this is {\rm roman}}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage3xPatch3A}
+\begin{paste}{HTXFormatPage3xPaste3B}{HTXFormatPage3xPatch3}
+\pastebutton{HTXFormatPage3xPaste3B}{Interpret}
+\newline
+{\tt \{\\em this is \{\\it emphasised\} text and this is \{\\rm roman\}\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage3xPatch4 patch}
+\label{HTXFormatPage3xPatch4}
+\index{patch!HTXFormatPage3xPatch4!htxformatpage3.ht}
+\index{htxformatpage3.ht!patch!HTXFormatPage3xPatch4}
+\index{HTXFormatPage3xPatch4!htxformatpage3.ht!patch}
+<<htxformatpage3.ht>>=
+\begin{patch}{HTXFormatPage3xPatch4}
+\begin{paste}{HTXFormatPage3xPaste4A}{HTXFormatPage3xPatch4A}
+\pastebutton{HTXFormatPage3xPaste4A}{Source}
+\newline
+{\bf U}{\tt g}{\it l}{\rm y}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage3xPatch4A}
+\begin{paste}{HTXFormatPage3xPaste4B}{HTXFormatPage3xPatch4}
+\pastebutton{HTXFormatPage3xPaste4B}{Interpret}
+\newline
+{\tt \{\\bf U\}\{\\tt g\}\{\\it l\}\{\\rm y\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage4.ht}
+\subsection{Indentation}
+\label{HTXFormatPage4}
+\index{pages!HTXFormatPage4!htxformatpage4.ht}
+\index{htxformatpage4.ht!pages!HTXFormatPage4}
+\index{HTXFormatPage4!htxformatpage4.ht!pages}
+<<htxformatpage4.ht>>=
+\begin{page}{HTXFormatPage4}{Indentation}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+You can control the indentation of lines of text in \HyperName{} with
+some useful commands.
+Use the command {\tt \\par} to force a new paragraph if you don't want
+to use the blank-line rule. The first line of a new paragraph
+will normally be indented by a standard small amount. If you
+just want to start on a new line, use the {\tt \\newline}
+command.
+\beginImportant
+\begin{paste}{HTXFormatPage4xPaste1}{HTXFormatPage4xPatch1}
+\pastebutton{HTXFormatPage4xPaste1}{Interpret}
+\newline
+{\tt let us start a new line \\newline here }
+\end{paste}
+\endImportant
+
+The  command {\tt \\indent\{{\it value}\}} will
+set the left-page-margin {\it value} characters
+to the right of the standard left-page-margin.
+The initial (standard) state of a page can be reset by the
+{\tt \\indent\{0\}} command.
+The first lines of paragraphs will be indented
+by the {\it extra} standard  amount. The {\tt \\indent\{{\it value}\}}
+command does {\em not} force a new line or paragraph.
+
+You can also use the {\tt \\indentrel\{{\it value}\}} command.
+Here, the {\it value} argument is a {\em relative} indentation
+which can be positive or negative.
+Otherwise, it behaves in the same way as the {\tt \\indent} command.
+\beginImportant
+\begin{paste}{HTXFormatPage4xPaste2}{HTXFormatPage4xPatch2}
+\pastebutton{HTXFormatPage4xPaste2}{Interpret}
+\newline
+{\tt let us start a new line \\newline \\indent\{10\} here }\newline
+{\tt \\newline \\indentrel\{-5\} there}\newline
+{\tt \\newline \\indentrel\{-5\} back}
+\end{paste}
+\endImportant
+
+The {\tt \\centerline\{{\it some text}\}} command will center its
+argument between the current left and right margins. The argument of
+the command should not be more than a paragraph of text and should not contain
+any commands that change the left margin. The centered text will
+start on a new line.
+\beginImportant
+\begin{paste}{HTXFormatPage4xPaste3}{HTXFormatPage4xPatch3}
+\pastebutton{HTXFormatPage4xPaste3}{Interpret}
+\newline
+{\tt previous text. \\centerline\{This could}\newline
+{\tt be some heading.\} Carry on}
+\end{paste}
+\endImportant
+
+Placing text in vertically aligned columns is easily done with the
+{\tt \\tab\{{\it value}\}} command. The {\tt \\tab} command has the
+immediate effect of placing the next word {\it value} characters to
+the right of the current left margin.
+\beginImportant
+\begin{paste}{HTXFormatPage4xPaste4}{HTXFormatPage4xPatch4}
+\pastebutton{HTXFormatPage4xPaste4}{Interpret}
+\newline
+{\tt \\indent\{5\}\\newline}\newline
+{\tt Team A \\tab\{17\}Score\\tab\{25\}Team B\\tab\{42\}Score\\newline}\newline
+{\tt 012345678901234567890123456789012345678901234567890\\newline}\newline
+{\tt Green-Red\\tab\{17\}4\\tab\{25\}Blue-Black\\tab\{42\}6\\newline}\newline
+{\tt \\indent\{0\}}
+\end{paste}
+\endImportant
+
+If you wish to preserve the indentation of a piece of text
+you can use the {\tt verbatim} group command. Simply place
+a {\tt \\begin\{verbatim\}} and {\tt \\end\{verbatim\}} around
+the text. Note that \HyperName{} commands will
+not be interpreted within the {\tt verbatim} group.
+\beginImportant
+\begin{paste}{HTXFormatPage4xPaste5}{HTXFormatPage4xPatch5}
+\pastebutton{HTXFormatPage4xPaste5}{Interpret}
+\newline
+{\tt \\begin\{verbatim\}}
+\begin{verbatim}
+This    spacing     will be      preserved
+                    {\bf is}     preserved
+\end{verbatim}
+{\tt \\end\{verbatim\}}\newline
+\end{paste}
+
+
+
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Creating Lists and Tables}{HTXFormatPage5}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage4xPatch1 patch}
+\label{HTXFormatPage4xPatch1}
+\index{patch!HTXFormatPage4xPatch1!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch1}
+\index{HTXFormatPage4xPatch1!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch1}
+\begin{paste}{HTXFormatPage4xPaste1A}{HTXFormatPage4xPatch1A}
+\pastebutton{HTXFormatPage4xPaste1A}{Source}
+\newline
+let us start a new line \newline here
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch1A patch}
+\label{HTXFormatPage4xPatch1A}
+\index{patch!HTXFormatPage4xPatch1A!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch1A}
+\index{HTXFormatPage4xPatch1A!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch1A}
+\begin{paste}{HTXFormatPage4xPaste1B}{HTXFormatPage4xPatch1}
+\pastebutton{HTXFormatPage4xPaste1B}{Interpret}
+\newline
+{\tt let us start a new line \\newline here }
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch2 patch}
+\label{HTXFormatPage4xPatch2}
+\index{patch!HTXFormatPage4xPatch2!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch2}
+\index{HTXFormatPage4xPatch2!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch2}
+\begin{paste}{HTXFormatPage4xPaste2A}{HTXFormatPage4xPatch2A}
+\pastebutton{HTXFormatPage4xPaste2A}{Source}
+\newline
+let us start a new line\newline\indent{10} here
+\newline\indentrel{-5} there
+\newline\indentrel{-5} back
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch2A patch}
+\label{HTXFormatPage4xPatch2A}
+\index{patch!HTXFormatPage4xPatch2A!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch2A}
+\index{HTXFormatPage4xPatch2A!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch2A}
+\begin{paste}{HTXFormatPage4xPaste2B}{HTXFormatPage4xPatch2}
+\pastebutton{HTXFormatPage4xPaste2B}{Interpret}
+\newline
+{\tt let us start a new line \\newline \\indent\{10\} here }\newline
+{\tt \\newline \\indentrel\{-5\} there}\newline
+{\tt \\newline \\indentrel\{-5\} back}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch3 patch}
+\label{HTXFormatPage4xPatch3}
+\index{patch!HTXFormatPage4xPatch3!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch3}
+\index{HTXFormatPage4xPatch3!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch3}
+\begin{paste}{HTXFormatPage4xPaste3A}{HTXFormatPage4xPatch3A}
+\pastebutton{HTXFormatPage4xPaste3A}{Source}
+\newline
+previous text. \centerline{This could
+be some heading.} Carry on
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch3A patch}
+\label{HTXFormatPage4xPatch3A}
+\index{patch!HTXFormatPage4xPatch3A!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch3A}
+\index{HTXFormatPage4xPatch3A!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch3A}
+\begin{paste}{HTXFormatPage4xPaste3B}{HTXFormatPage4xPatch3}
+\pastebutton{HTXFormatPage4xPaste3B}{Interpret}
+\newline
+{\tt previous text. \\centerline\{This could}\newline
+{\tt be some heading.\} Carry on}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch4 patch}
+\label{HTXFormatPage4xPatch4}
+\index{patch!HTXFormatPage4xPatch4!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch4}
+\index{HTXFormatPage4xPatch4!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch4}
+\begin{paste}{HTXFormatPage4xPaste4A}{HTXFormatPage4xPatch4A}
+\pastebutton{HTXFormatPage4xPaste4A}{Source}
+\newline
+\indent{5}\newline
+Team A \tab{17}Score\tab{25}Team B\tab{42}Score\newline
+012345678901234567890123456789012345678901234567890\newline
+Green-Red\tab{17}4\tab{25}Blue-Black\tab{42}6\newline
+\indent{0}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage4xPatch4A}
+\begin{paste}{HTXFormatPage4xPaste4B}{HTXFormatPage4xPatch4}
+\pastebutton{HTXFormatPage4xPaste4B}{Interpret}
+\newline
+{\tt \\indent\{5\}\\newline}\newline
+{\tt Team A \\tab\{17\}Score\\tab\{25\}Team B\\tab\{42\}Score\\newline}\newline
+{\tt 012345678901234567890123456789012345678901234567890\\newline}\newline
+{\tt Green-Red\\tab\{17\}4\\tab\{25\}Blue-Black\\tab\{42\}6\\newline}\newline
+{\tt \\indent\{0\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch5 patch}
+\label{HTXFormatPage4xPatch5}
+\index{patch!HTXFormatPage4xPatch5!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch5}
+\index{HTXFormatPage4xPatch5!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch5}
+\begin{paste}{HTXFormatPage4xPaste5A}{HTXFormatPage4xPatch5A}
+\pastebutton{HTXFormatPage4xPaste5A}{Source}
+\begin{verbatim}
+This    spacing     will be      preserved
+                    {\bf is}     preserved
+\end{verbatim}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage4xPatch5A patch}
+\label{HTXFormatPage4xPatch5A}
+\index{patch!HTXFormatPage4xPatch5A!htxformatpage4.ht}
+\index{htxformatpage4.ht!patch!HTXFormatPage4xPatch5A}
+\index{HTXFormatPage4xPatch5A!htxformatpage4.ht!patch}
+<<htxformatpage4.ht>>=
+\begin{patch}{HTXFormatPage4xPatch5A}
+\begin{paste}{HTXFormatPage4xPaste5B}{HTXFormatPage4xPatch5}
+\pastebutton{HTXFormatPage4xPaste5B}{Interpret}
+\newline
+{\tt \\begin\{verbatim\}}
+\begin{verbatim}
+This    spacing     will be      preserved
+                    {\bf is}     preserved
+\end{verbatim}
+{\tt \\end\{verbatim\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage5.ht}
+\subsection{Creating Lists and Tables}
+\label{HTXFormatPage5}
+See HTXFormatPage6 \ref{HTXFormatPage6} on page~\pageref{HTXFormatPage6}
+\index{pages!HTXFormatPage5!htxformatpage5.ht}
+\index{htxformatpage5.ht!pages!HTXFormatPage5}
+\index{HTXFormatPage5!htxformatpage5.ht!pages}
+<<htxformatpage5.ht>>=
+\begin{page}{HTXFormatPage5}{Creating Lists and Tables}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+The {\tt \\begin\{items\} {\rm -}  \\end\{items\}} 
+group command constructs itemized lists.
+The {\tt \\item} command separates the items in the list.
+The indentation rules for the list group are different from those
+of a paragraph. The first line of an item will
+normally extend further to the left than the rest of the lines.
+Both commands accept {\em optional} arguments.
+Optional arguments are enclosed in square brackets ({\tt \[ \]}) rather
+than braces.
+
+The indentation of subsequent lines in an item is determined by the
+optional argument {\it some text} in the 
+{\tt \\begin\{items\}\[{\it some text}\]}
+command. The optional argument is {\em not} displayed. Its width is calculated
+and used to indent all subsequent lines in the group except from the
+first line of each new item. This indentation rule applies to all text
+{\em before} the first {\tt \\item} command as well.
+
+The {\tt \\item\[{\it some text}\]} command specifies the start of a new item.
+The {\it some text} optional argument will be displayed in {\em bold}
+font at the current left-page-margin. Then, the text following the command
+will be displayed in normal fashion with the above indentation rule.
+\beginImportant
+\begin{paste}{HTXFormatPage5xPaste1}{HTXFormatPage5xPatch1}
+\pastebutton{HTXFormatPage5xPaste1}{Interpret}
+\newline
+{\tt \\indent\{5\}}\newline
+{\tt \\begin\{items\}\[how wide am I\]}\newline
+{\tt Here we carry on but a \\newline} \newline
+{\tt new line will be indented } \newline
+{\tt \\item\[how wide am I\] fits nicely. 
+Here is a \\newline new line in an item.}\newline
+{\tt \\item\[again\] to show another item}\newline
+{\tt \\item\[\\\\tab\]\\tab\{0\} can be used \\tab\{15\} effectively}\newline
+{\tt \\end\{items\}}\newline
+{\tt \\indent\{0\}}\newline
+\end{paste}
+\endImportant
+
+
+Note that the {\tt \\begin\{items\}} command immediately sets the left-
+page-margin to a new value. Subsequent 
+{\tt \\tab} or {\tt \\centerline} commands
+refer to this new margin.
+Any explicit margin setting commands included
+in the group {\em will} have the normal effect.
+The {\tt \\par} command does not produce
+the standard paragraph indentation within a list group --- it behaves
+instead like {\tt \\newline}.
+
+
+You can nest list groups like the following example suggests.
+\beginImportant
+\begin{paste}{HTXFormatPage5xPaste2}{HTXFormatPage5xPatch2}
+\pastebutton{HTXFormatPage5xPaste2}{Interpret}
+\newline
+{\tt \\begin\{items\}\[quitealot\]}\newline
+{\tt A nested list:}\newline
+{\tt \\item\[The first\] item of an itemized list is on this line.}\newline
+{\tt \\item\[The second\] item of the list starts here.  It contains another}\newline
+{\tt list nested inside it.}\newline
+{\tt \\begin\{items\}\[somuchmore\]}\newline
+{\tt \\item \[First\]\\tab\{0\}This is the first item of an enumerated}\newline
+{\tt list that is nested within the itemized list.}\newline
+{\tt \\item \[Second\]\\tab\{0\}This is the second item of the inner list.}\newline
+{\tt \\end\{items\}}\newline
+{\tt This is the rest of the second item of the outer list.  It}\newline
+{\tt is no more interesting than any other part of the item.}\newline
+{\tt \\item\[The third\] item of the list.}\newline
+{\tt \\end\{items\}}\newline
+\end{paste}
+\endImportant
+
+Another facility for presenting lists is the {\tt \\table} command.
+The correct syntax for it is : {\tt \\table\{\{{\it item a}\} \{{\it item b}\} {\it ..}\}}.
+The items in the braces will be placed in as many aligned columns
+as is possible for the current window dimensions or page width.
+If one item is particularly long there will probably be only one column
+in the table. Here is a table of color names.
+\beginImportant
+\begin{paste}{HTXFormatPage5xPaste3}{HTXFormatPage5xPatch3}
+\pastebutton{HTXFormatPage5xPaste3}{Interpret}
+\newline
+{\tt
+\\table\{
+\{Dark Orchid\} \{Dark Salmon\} \{Dark Sea Green\} \{Dark Slate Blue\}
+\{Dark Slate Gray\} \{Dark Turquoise\} \{Dark Violet\} \{Deep Pink\}
+\{Deep Sky Blue\} \{Dodger Blue\} \{Floral White\} \{Forest Green\}
+\{Ghost White\} \{Hot Pink\} \{Indian Red\} \{Lavender Blush\}
+\}
+}
+\end{paste}
+\endImportant
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Boxes and Lines}{HTXFormatPage6}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage5xPatch1 patch}
+\label{HTXFormatPage5xPatch1}
+\index{patch!HTXFormatPage5xPatch1!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch1}
+\index{HTXFormatPage5xPatch1!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch1}
+\begin{paste}{HTXFormatPage5xPaste1A}{HTXFormatPage5xPatch1A}
+\pastebutton{HTXFormatPage5xPaste1A}{Source}
+\newline
+\indent{5}
+\begin{items}[how wide am I]
+Here we carry on but a \newline
+new line will be indented
+\item[how wide am I] fits nicely. Here is a \newline new line in an item.
+\item[again] to show another item
+\item[\\tab]\tab{0} can be used \tab{15} effectively
+\end{items}
+\indent{0}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage5xPatch1A patch}
+\label{HTXFormatPage5xPatch1A}
+\index{patch!HTXFormatPage5xPatch1A!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch1A}
+\index{HTXFormatPage5xPatch1A!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch1A}
+\begin{paste}{HTXFormatPage5xPaste1B}{HTXFormatPage5xPatch1}
+\pastebutton{HTXFormatPage5xPaste1B}{Interpret}
+\newline
+{\tt \\indent\{5\}}\newline
+{\tt \\begin\{items\}\[how wide am I\]}\newline
+{\tt Here we carry on but a \\newline} \newline
+{\tt new line will be indented } \newline
+{\tt \\item\[how wide am I\] fits nicely. Here is a \\newline new line in an item.}\newline
+{\tt \\item\[again\] to show another item}\newline
+{\tt \\item\[\\\\tab\]\\tab\{0\} can be used \\tab\{15\} effectively}\newline
+{\tt \\end\{items\}}\newline
+{\tt \\indent\{0\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage5xPatch2 patch}
+\label{HTXFormatPage5xPatch2}
+\index{patch!HTXFormatPage5xPatch2!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch2}
+\index{HTXFormatPage5xPatch2!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch2}
+\begin{paste}{HTXFormatPage5xPaste2A}{HTXFormatPage5xPatch2A}
+\pastebutton{HTXFormatPage5xPaste2A}{Source}
+\newline
+\begin{items}[quitealot]
+A nested list:
+\item[The first] item of an itemized list is on this line.
+\item[The second] item of the list starts here.  It contains another
+list nested inside it.
+\begin{items}[somuchmore]
+\item [First]\tab{0}This is the first item of the
+list that is nested within the itemized list.
+\item [Second]\tab{0}This is the second item of the inner list.
+\end{items}
+This is the rest of the second item of the outer list.  It
+is no more interesting than any other part of the item.
+\item [The third] item of the list.
+\end{items}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage5xPatch2A patch}
+\label{HTXFormatPage5xPatch2A}
+\index{patch!HTXFormatPage5xPatch2A!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch2A}
+\index{HTXFormatPage5xPatch2A!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch2A}
+\begin{paste}{HTXFormatPage5xPaste2B}{HTXFormatPage5xPatch2}
+\pastebutton{HTXFormatPage5xPaste2B}{Interpret}
+\newline
+{\tt \\begin\{items\}\[quitealot\]}\newline
+{\tt A nested list:}\newline
+{\tt \\item\[The first\] item of an itemized list is on this line.}\newline
+{\tt \\item\[The second\] item of the list starts here.  It contains another}\newline
+{\tt list nested inside it.}\newline
+{\tt \\begin\{items\}\[somuchmore\]}\newline
+{\tt \\item \[First\]\\tab\{0\}This is the first item of an enumerated}\newline
+{\tt list that is nested within the itemized list.}\newline
+{\tt \\item \[Second\]\\tab\{0\}This is the second item of the inner list.}\newline
+{\tt \\end\{items\}}\newline
+{\tt This is the rest of the second item of the outer list.  It}\newline
+{\tt is no more interesting than any other part of the item.}\newline
+{\tt \\item\[The third\] item of the list.}\newline
+{\tt \\end\{items\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage5xPatch3 patch}
+\label{HTXFormatPage5xPatch3}
+\index{patch!HTXFormatPage5xPatch3!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch3}
+\index{HTXFormatPage5xPatch3!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch3}
+\begin{paste}{HTXFormatPage5xPaste3A}{HTXFormatPage5xPatch3A}
+\pastebutton{HTXFormatPage5xPaste3A}{Source}
+\newline
+\table{
+{Dark Orchid} {Dark Salmon} {Dark Sea Green} {Dark Slate Blue} {Dark Slate Gray}
+{Dark Turquoise} {Dark Violet} {Deep Pink} {Deep Sky Blue} {Dodger Blue}
+{Floral White} {Forest Green} {Ghost White} {Hot Pink} {Indian Red}
+{Lavender Blush}
+}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage5xPatch3A patch}
+\label{HTXFormatPage5xPatch3A}
+\index{patch!HTXFormatPage5xPatch3A!htxformatpage5.ht}
+\index{htxformatpage5.ht!patch!HTXFormatPage5xPatch3A}
+\index{HTXFormatPage5xPatch3A!htxformatpage5.ht!patch}
+<<htxformatpage5.ht>>=
+\begin{patch}{HTXFormatPage5xPatch3A}
+\begin{paste}{HTXFormatPage5xPaste3B}{HTXFormatPage5xPatch3}
+\pastebutton{HTXFormatPage5xPaste3B}{Interpret}
+\newline
+{\tt
+\\table\{
+\{Dark Orchid\} \{Dark Salmon\} \{Dark Sea Green\} \{Dark Slate Blue\}
+\{Dark Slate Gray\} \{Dark Turquoise\} \{Dark Violet\} \{Deep Pink\}
+\{Deep Sky Blue\} \{Dodger Blue\} \{Floral White\} \{Forest Green\}
+\{Ghost White\} \{Hot Pink\} \{Indian Red\} \{Lavender Blush\}
+\}
+}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage6}
+\subsection{Boxes and Lines}
+\label{HTXFormatPage6}
+\index{pages!HTXFormatPage6!htxformatpage6.ht}
+\index{htxformatpage6.ht!pages!HTXFormatPage6}
+\index{HTXFormatPage6!htxformatpage6.ht!pages}
+<<htxformatpage6.ht>>=
+\begin{page}{HTXFormatPage6}{Boxes and Lines}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+The {\tt \\fbox} command can be used to place a box around one or more
+words. The argument of the {\tt \\fbox} command is the text that will be
+placed in the box. This command should only be used for text that can fit
+in one line.
+
+\beginImportant
+\begin{paste}{HTXFormatPage6xPaste1}{HTXFormatPage6xPatch1}
+\pastebutton{HTXFormatPage6xPaste1}{Interpret}
+\newline
+{\tt \\fbox\{Boxed!\}}\newline
+\end{paste}
+\endImportant
+
+
+Use the {\tt \\horizontalline} command to draw a horizontal line
+across the window. This might be useful for added emphasis.
+
+\beginImportant
+\begin{paste}{HTXFormatPage6xPaste2}{HTXFormatPage6xPatch2}
+\pastebutton{HTXFormatPage6xPaste2}{Interpret}
+\newline
+{\tt \\horizontalline}\newline
+\end{paste}
+\endImportant
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Micro-Spacing}{HTXFormatPage7}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage6xPatch1 patch}
+\label{HTXFormatPage6xPatch1}
+\index{patch!HTXFormatPage6xPatch1!htxformatpage6.ht}
+\index{htxformatpage6.ht!patch!HTXFormatPage6xPatch1}
+\index{HTXFormatPage6xPatch1!htxformatpage6.ht!patch}
+<<htxformatpage6.ht>>=
+\begin{patch}{HTXFormatPage6xPatch1}
+\begin{paste}{HTXFormatPage6xPaste1A}{HTXFormatPage6xPatch1A}
+\pastebutton{HTXFormatPage6xPaste1A}{Source}
+\newline
+\fbox{Boxed!}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage6xPatch1A}
+\begin{paste}{HTXFormatPage6xPaste1B}{HTXFormatPage6xPatch1}
+\pastebutton{HTXFormatPage6xPaste1B}{Interpret}
+\newline
+{\tt \\fbox\{Boxed!\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage6xPatch2 patch}
+\label{HTXFormatPage6xPatch2}
+\index{patch!HTXFormatPage6xPatch2!htxformatpage6.ht}
+\index{htxformatpage6.ht!patch!HTXFormatPage6xPatch2}
+\index{HTXFormatPage6xPatch2!htxformatpage6.ht!patch}
+<<htxformatpage6.ht>>=
+\begin{patch}{HTXFormatPage6xPatch2}
+\begin{paste}{HTXFormatPage6xPaste2A}{HTXFormatPage6xPatch2A}
+\pastebutton{HTXFormatPage6xPaste2A}{Source}
+\newline
+\horizontalline
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage6xPatch2A}
+\begin{paste}{HTXFormatPage6xPaste2B}{HTXFormatPage6xPatch2}
+\pastebutton{HTXFormatPage6xPaste2B}{Interpret}
+\newline
+{\tt \\horizontalline}\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage7}
+\subsection{Micro-Spacing}
+\label{HTXFormatPage7}
+\index{pages!HTXFormatPage7!htxformatpage7.ht}
+\index{htxformatpage7.ht!pages!HTXFormatPage7}
+\index{HTXFormatPage7!htxformatpage7.ht!pages}
+<<htxformatpage7.ht>>=
+\begin{page}{HTXFormatPage7}{Micro-Spacing}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+There are three commands that one can use to exercise finer control
+over the appearance of text on a page: {\tt \\space}, {\tt \\hspace}
+and {\tt \\vspace}.
+
+The {\tt \\space\{{\it value}\}} command accepts an integer argument and simply
+changes the position of the next character to the right or to the left.
+A negative argument will move the next character to the left and a
+positive one to the right. The unit of movement is {\it the width
+of a character}. In this way one can overstrike characters to produce
+various effects.
+
+\beginImportant
+\begin{paste}{HTXFormatPage7xPaste1}{HTXFormatPage7xPatch1}
+\pastebutton{HTXFormatPage7xPaste1}{Interpret}
+\newline
+{\tt 0\\space\{-1\}\\}\newline
+{\tt underlined\\space\{-10\}__________}\newline
+\end{paste}
+\endImportant
+
+
+The {\tt \\hspace\{{\it value}\}} command
+is similar to the {\tt \\space\{{\it value}\}} command.
+It also accepts an integer argument and
+changes the position of the next character to the right or to the left.
+A negative argument will move the next character to the left and a
+positive one to the right. The unit of movement is {\it a pixel}.
+The {\it value} argument specifies an offset from the default placement
+of the character.
+
+\beginImportant
+\begin{paste}{HTXFormatPage7xPaste2}{HTXFormatPage7xPatch2}
+\pastebutton{HTXFormatPage7xPaste2}{Interpret}
+\newline
+{\tt x\\hspace\{-4\}x\\hspace\{-3\}x\\hspace\{-2\}x\\hspace\{-1\}x\%}\newline
+{\tt x\\hspace\{1\}x\\hspace\{2\}x\\hspace\{3\}x\\hspace\{4\}x}
+\end{paste}
+\endImportant
+
+The {\tt \\vspace\{{\it value}\}} command is similar to the
+{\tt \\hspace\{{\it value}\}} command but (as the name suggests)
+works in the vertical direction. The unit of movement is {\it a
+pixel}. The {\it value} argument specifies an offset from {\it
+the next line}. A negative argument moves the next character up
+and a positive down. This command can be used for subscripts and
+superscripts. One drawback in the use of {\tt \\vspace} is that
+it can only work with a particular font at a time. This is
+because the inter-line spacing depends on the font being used
+and the value of it is needed to get "back" on the line.
+In general, the command {\tt \\vspace\{{\it - ils}\}} will
+have a null effect when {\it ils} = ( font ascent + font descent + 5 ).
+The example below assumes that {\it ils} = 25 e.g. the Rom14 font
+on the RISC System/6000.
+
+\beginImportant
+\begin{paste}{HTXFormatPage7xPaste3}{HTXFormatPage7xPatch3}
+\pastebutton{HTXFormatPage7xPaste3}{Interpret}
+\newline
+{\tt CO\\vspace\{-18\}2\\vspace\{-32\} + CaO ->}\newline
+{\tt CaCO\\vspace\{-18\}3\\vspace\{-32\}\\newline}\newline
+{\tt R\\space\{-1\}~\\vspace\{-18\}æv\\vspace\{-32\}}\newline
+{\tt \\hspace\{4\}-\\hspace\{8\}---\\hspace\{-12\}}\newline
+{\tt \\vspace\{-32\}1\\space\{-1\}\\vspace\{-7\}2}\newline
+{\tt \\vspace\{-36\}\\hspace\{8\}g\\space\{-1\}~}\newline
+{\tt \\vspace\{-18\}æv\\vspace\{-32\}\\hspace\{2\}R}\newline
+{\tt \\space\{-1\}~ = T\\vspace\{-18\}æv\\vspace\{-32\}}\newline
+{\tt \\vspace\{-25\}}
+\end{paste}
+\endImportant
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Bitmaps and Images}{HTXFormatPage8}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage7xPatch1 patch}
+\label{HTXFormatPage7xPatch1}
+\index{patch!HTXFormatPage7xPatch1!htxformatpage7.ht}
+\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch1}
+\index{HTXFormatPage7xPatch1!htxformatpage7.ht!patch}
+<<htxformatpage7.ht>>=
+\begin{patch}{HTXFormatPage7xPatch1}
+\begin{paste}{HTXFormatPage7xPaste1A}{HTXFormatPage7xPatch1A}
+\pastebutton{HTXFormatPage7xPaste1A}{Source}
+\newline
+0\space{-1}\\
+underlined\space{-10}__________
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage7xPatch1A}
+\begin{paste}{HTXFormatPage7xPaste1B}{HTXFormatPage7xPatch1}
+\pastebutton{HTXFormatPage7xPaste1B}{Interpret}
+\newline
+{\tt 0\\space\{-1\}\\}\newline
+{\tt underlined\\space\{-10\}__________}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage7xPatch2 patch}
+\label{HTXFormatPage7xPatch2}
+\index{patch!HTXFormatPage7xPatch2!htxformatpage7.ht}
+\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch2}
+\index{HTXFormatPage7xPatch2!htxformatpage7.ht!patch}
+<<htxformatpage7.ht>>=
+\begin{patch}{HTXFormatPage7xPatch2}
+\begin{paste}{HTXFormatPage7xPaste2A}{HTXFormatPage7xPatch2A}
+\pastebutton{HTXFormatPage7xPaste2A}{Source}
+\newline
+x\hspace{-4}x\hspace{-3}x\hspace{-2}x\hspace{-1}x%
+x\hspace{1}x\hspace{2}x\hspace{3}x\hspace{4}x
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage7xPatch2A patch}
+\label{HTXFormatPage7xPatch2A}
+\index{patch!HTXFormatPage7xPatch2A!htxformatpage7.ht}
+\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch2A}
+\index{HTXFormatPage7xPatch2A!htxformatpage7.ht!patch}
+<<htxformatpage7.ht>>=
+\begin{patch}{HTXFormatPage7xPatch2A}
+\begin{paste}{HTXFormatPage7xPaste2B}{HTXFormatPage7xPatch2}
+\pastebutton{HTXFormatPage7xPaste2B}{Interpret}
+\newline
+{\tt x\\hspace\{-4\}x\\hspace\{-3\}x\\hspace\{-2\}x\\hspace\{-1\}x\%}\newline
+{\tt x\\hspace\{1\}x\\hspace\{2\}x\\hspace\{3\}x\\hspace\{4\}x}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage7xPatch3 patch}
+\label{HTXFormatPage7xPatch3}
+\index{patch!HTXFormatPage7xPatch3!htxformatpage7.ht}
+\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch3}
+\index{HTXFormatPage7xPatch3!htxformatpage7.ht!patch}
+<<htxformatpage7.ht>>=
+\begin{patch}{HTXFormatPage7xPatch3}
+\begin{paste}{HTXFormatPage7xPaste3A}{HTXFormatPage7xPatch3A}
+\pastebutton{HTXFormatPage7xPaste3A}{Source}
+\newline
+CO\vspace{-18}2\vspace{-32} + CaO ->
+CaCO\vspace{-18}3\vspace{-32}\newline
+R\space{-1}~\vspace{-18}æv\vspace{-32}
+\hspace{4}-\hspace{8}---\hspace{-12}
+\vspace{-32}1\space{-1}\vspace{-7}2
+\vspace{-36}\hspace{8}g\space{-1}~
+\vspace{-18}æv\vspace{-32}\hspace{2}R
+\space{-1}~ = T\vspace{-18}æv\vspace{-32}
+\vspace{-25}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage7xPatch3A patch}
+\label{HTXFormatPage7xPatch3A}
+\index{patch!HTXFormatPage7xPatch3A!htxformatpage7.ht}
+\index{htxformatpage7.ht!patch!HTXFormatPage7xPatch3A}
+\index{HTXFormatPage7xPatch3A!htxformatpage7.ht!patch}
+<<htxformatpage7.ht>>=
+\begin{patch}{HTXFormatPage7xPatch3A}
+\begin{paste}{HTXFormatPage7xPaste3B}{HTXFormatPage7xPatch3}
+\pastebutton{HTXFormatPage7xPaste3B}{Interpret}
+\newline
+{\tt CO\\vspace\{-18\}2\\vspace\{-32\} + CaO ->}\newline
+{\tt CaCO\\vspace\{-18\}3\\vspace\{-32\}\\newline}\newline
+{\tt R\\space\{-1\}~\\vspace\{-18\}æv\\vspace\{-32\}}\newline
+{\tt \\hspace\{4\}-\\hspace\{8\}---\\hspace\{-12\}}\newline
+{\tt \\vspace\{-32\}1\\space\{-1\}\\vspace\{-7\}2}\newline
+{\tt \\vspace\{-36\}\\hspace\{8\}g\\space\{-1\}~}\newline
+{\tt \\vspace\{-18\}æv\\vspace\{-32\}\\hspace\{2\}R}\newline
+{\tt \\space\{-1\}~ = T\\vspace\{-18\}æv\\vspace\{-32\}}\newline
+{\tt \\vspace\{-25\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformatpage8}
+\subsection{Bitmaps and Images}
+\label{HTXFormatPage8}
+\index{pages!HTXFormatPage8!htxformatpage8.ht}
+\index{htxformatpage8.ht!pages!HTXFormatPage8}
+\index{HTXFormatPage8!htxformatpage8.ht!pages}
+<<htxformatpage8.ht>>=
+\begin{page}{HTXFormatPage8}{Bitmaps and Images}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+The commands {\tt \\inputbitmap\{{\it filename}\}}
+and {\tt \\inputimage\{{\it filename}\}}
+allow you to include an X11 bitmap or an
+Axiom-generated viewport in a \HyperName{}
+page.
+
+In the case of the {\tt \\inputbitmap} command
+the {\it filename} parameter must be the full pathname
+of an X11 bitmap file.
+
+\beginImportant
+\begin{paste}{HTXFormatPage8xPaste1}{HTXFormatPage8xPatch1}
+\pastebutton{HTXFormatPage8xPaste1}{Interpret}
+\newline
+{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
+\end{paste}
+\endImportant
+
+The {\it filename} parameter of the {\tt \\inputimage}
+command must be the full pathname of a {\it compressed XPM image} file without the name extensions.
+\HyperName{} always adds ".xpm.Z" to whatever filename you give and looks for the augmented filename.
+Such files can be generated by Axiom command
+\axiomOp{write} with the {\tt "image"} or {\tt "pixmap"}
+options.
+
+\beginImportant
+\begin{paste}{HTXFormatPage8xPaste2}{HTXFormatPage8xPatch2}
+\pastebutton{HTXFormatPage8xPaste2}{Interpret}
+\newline
+{\tt \\inputimage\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image\}}
+\end{paste}
+\endImportant
+
+Be careful not to break the pathname across lines.
+
+The {\tt \\inputimage} command will automatically select
+the {\it image.xpm} or the {\it image.bm} file for you
+based on the capabilities of your X server. 
+
+For your convenience, there are two macros defined
+in \centerline{ {\bf \env{AXIOM}{}/doc/hypertex/pages/util.ht}.}
+The {\tt \\viewport} macro eliminates the need to specify
+the {\tt .view/image} part and the
+{\tt \\axiomViewport} macro automatically selects viewport
+files in the system directories. The above {\tt \\inputimage}
+could have been written
+\beginImportant
+{\tt \\viewport\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30\}}
+\endImportant
+or
+\beginImportant
+{\tt \\axiomViewport\{ugProblemNumericPage30\}}
+\endImportant
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Back to Formatting menu}{HTXFormatTopPage}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXFormatPage8xPatch1 patch}
+\label{HTXFormatPage8xPatch1}
+\index{patch!HTXFormatPage8xPatch1!htxformatpage8.ht}
+\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch1}
+\index{HTXFormatPage8xPatch1!htxformatpage8.ht!patch}
+<<htxformatpage8.ht>>=
+\begin{patch}{HTXFormatPage8xPatch1}
+\begin{paste}{HTXFormatPage8xPaste1A}{HTXFormatPage8xPatch1A}
+\pastebutton{HTXFormatPage8xPaste1A}{Source}
+\newline
+\inputbitmap{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap}
+\end{paste}
+\end{patch}
+\begin{patch}{HTXFormatPage8xPatch1A}
+\begin{paste}{HTXFormatPage8xPaste1B}{HTXFormatPage8xPatch1}
+\pastebutton{HTXFormatPage8xPaste1B}{Interpret}
+\newline
+{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXFormatPage8xPatch2 patch}
+\label{HTXFormatPage8xPatch2}
+\index{patch!HTXFormatPage8xPatch2!htxformatpage8.ht}
+\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch2}
+\index{HTXFormatPage8xPatch2!htxformatpage8.ht!patch}
+<<htxformatpage8.ht>>=
+\begin{patch}{HTXFormatPage8xPatch2}
+\begin{paste}{HTXFormatPage8xPaste2A}{HTXFormatPage8xPatch2A}
+\pastebutton{HTXFormatPage8xPaste2A}{Source}
+\newline
+\inputimage{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image}
+\end{paste}
+\end{patch}
+@
+\subsection{HTXFormatPage8xPatch2A patch}
+\label{HTXFormatPage8xPatch2A}
+\index{patch!HTXFormatPage8xPatch2A!htxformatpage8.ht}
+\index{htxformatpage8.ht!patch!HTXFormatPage8xPatch2A}
+\index{HTXFormatPage8xPatch2A!htxformatpage8.ht!patch}
+<<htxformatpage8.ht>>=
+\begin{patch}{HTXFormatPage8xPatch2A}
+\begin{paste}{HTXFormatPage8xPaste2B}{HTXFormatPage8xPatch2}
+\pastebutton{HTXFormatPage8xPaste2B}{Interpret}
+\newline
+{\tt \\inputimage\{\env{AXIOM}/doc/viewports/ugProblemNumericPage30.view/image\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxformattoppage.ht}
+\subsection{Formatting in Hyperdoc}
+\begin{itemize}
+\item HTXFormatPage1 \ref{HTXFormatPage1} on page~\pageref{HTXFormatPage1}
+\item HTXFormatPage2 \ref{HTXFormatPage2} on page~\pageref{HTXFormatPage2}
+\item HTXFormatPage3 \ref{HTXFormatPage3} on page~\pageref{HTXFormatPage3}
+\item HTXFormatPage4 \ref{HTXFormatPage4} on page~\pageref{HTXFormatPage4}
+\item HTXFormatPage5 \ref{HTXFormatPage5} on page~\pageref{HTXFormatPage5}
+\item HTXFormatPage6 \ref{HTXFormatPage6} on page~\pageref{HTXFormatPage6}
+\item HTXFormatPage7 \ref{HTXFormatPage7} on page~\pageref{HTXFormatPage7}
+\item HTXFormatPage8 \ref{HTXFormatPage8} on page~\pageref{HTXFormatPage8}
+\end{itemize}
+\label{HTXFormatTopPage}
+\index{pages!HTXFormatTopPage!htxformattoppage.ht}
+\index{htxformattoppage.ht!pages!HTXFormatTopPage}
+\index{HTXFormatTopPage!htxformattoppage.ht!pages}
+<<htxformattoppage.ht>>=
+\begin{page}{HTXFormatTopPage}{Formatting in Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+
+\HyperName{} offers various facilities for formatting text and images.
+You can learn about these facilities by clicking on the topics below.
+\begin{scroll}
+\beginmenu
+\menudownlink{Special Characters}{HTXFormatPage1}
+\menudownlink{Formatting without commands}{HTXFormatPage2}
+\menudownlink{Using different fonts}{HTXFormatPage3}
+\menudownlink{Indentation}{HTXFormatPage4}
+\menudownlink{Creating Lists and Tables}{HTXFormatPage5}
+\menudownlink{Boxes and Lines}{HTXFormatPage6}
+\menudownlink{Micro-Spacing}{HTXFormatPage7}
+\menudownlink{Bitmaps and Images}{HTXFormatPage8}
+\endmenu
+\end{scroll}
+\end{page}
+
+
+@
+\section{htxintropage1.ht}
+\subsection{What Hyperdoc does}
+\label{HTXIntroPage1}
+\begin{itemize}
+\item HTXIntroPage2 \ref{HTXIntroPage2} on page~\pageref{HTXIntroPage2}
+\item ugHyperPage \ref{ugHyperPage} on page~\pageref{ugHyperPage}
+\end{itemize}
+\index{pages!HTXIntroPage1!htxintropage1.ht}
+\index{htxintropage1.ht!pages!HTXIntroPage1}
+\index{HTXIntroPage1!htxintropage1.ht!pages}
+<<htxintropage1.ht>>=
+\begin{page}{HTXIntroPage1}{What Hyperdoc does}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\beginscroll
+
+Take a close look at the objects in the \HyperName{} window you are now reading.
+Most of them are text. Resize the window using the window manager
+facilities. The text is reformatted to fit the window
+border. This action is performed by \HyperName{}. At the simplest
+level, it provides a method for {\em formatting} text in a window.
+In fact, it can place other things on the window as well, such as
+bitmaps or color images. The {\em buttons} you see at either
+side at the top of the window are bitmaps.
+
+Move the cursor so that it rests on one of those buttons. You notice that
+the cursor has changed appearance. This indicates that there is an action associated
+with the button. This action will be performed when you click the mouse button
+over the {\em active area}. If you are familiar with \HyperName{}, you know
+that the active area can be words, bitmaps, images or {\em input areas}. In
+fact, anything that can be displayed in a \HyperName{} window can be an
+active area.
+
+So, what can the action associated with an active area be? \HyperName{}
+allows quite a bit of freedom in defining that action. We will have a close
+look at this issue \downlink{later on}{HTXLinkTopPage}. For now, recall
+the various actions that you have encountered so far --- executing Axiom
+commands, popping up new windows, providing parameters for other active areas,
+and replacing or changing the contents of the window. The most common action
+is to bring up some \HyperName{} text in the same or a different window.
+This lets us create {\em links} between pieces of text and images. A
+system with such capability is usually called a {\em hypertext} system.
+\HyperName{} is in fact much more.
+
+\endscroll
+\beginmenu
+\menulink{Next -- How \HyperName{} does it}{HTXIntroPage2}
+\menuwindowlink{Review some features of \HyperName{}}{ugHyperPage}
+\endmenu
+
+\helppage{ugHyperPage}
+\end{page}
+
+@
+\section{htxintropage2.ht}
+\subsection{How Hyperdoc does it}
+\label{HTXIntroPage2}
+See HTXIntroPage3 \ref{HTXIntroPage3} on page~\pageref{HTXIntroPage3}
+\index{pages!HTXIntroPage2!htxintropage2.ht}
+\index{htxintropage2.ht!pages!HTXIntroPage2}
+\index{HTXIntroPage2!htxintropage2.ht!pages}
+<<htxintropage2.ht>>=
+\begin{page}{HTXIntroPage2}{How Hyperdoc does it}
+{\centerline{\fbox{{\tt \thispage}}}\newline}
+\beginscroll
+
+\HyperName{} can read the {\em hypertext} information from standard text
+files. This means that you can create or change this information with any
+text editor. Once this information has been entered into the files, a
+special program, called {\bf htadd}, scans these files and produces
+a database (another file called {\bf ht.db}) of {\em objects}
+encountered in the files. \HyperName{}
+consults this database when it first starts and so knows where it might
+find the definitions of these objects. You can maintain several such
+databases on different directories. You indicate which database you
+want \HyperName{} to consult by setting an {\em environment variable}
+called {\bf HTPATH}.
+
+In general, hypertext must obviously use some kind of special (that is,
+non-textual) marks for all the  extra functionality it provides. In
+\HyperName{}, these marks are some special characters --- special
+in the sense that they are not interpreted as ordinary displayable text.
+These characters, however, are part of the standard ASCII set.
+There is also a way to display these special characters as text .
+The \HyperName{} special characters are :
+
+\beginImportant
+\noindent{\em Special Characters}: {\tt \table{{\$}{\\}{\{}{\}}{\[}{\]}{\%}{\#}}}
+\endImportant
+
+
+
+\HyperName{} uses the special characters to distinguish between
+{\em text} and {\em commands} (by {\em text}, we mean here anything
+displayable). The commands are instructions to
+\HyperName{} to treat some text in a particular way. Some commands
+define special \HyperName{} objects. The most important objects
+are {\em pages}, {\em patches}, and {\em macros}.
+A {\em page} is a description of the contents of a
+\HyperName{} window. A {\em patch} is a portion of a page.
+A {\em macro} is a user-defined new \HyperName{} command.
+Some commands allow special text {\em formatting} and others
+associate some text with an action.
+
+In order to display anything at all in \HyperName, you must define a
+{\em page}. The next section explains how to define a {\em page} and put
+some simple text into it.
+\endscroll
+\beginmenu
+\menudownlink{Next -- Define a simple text page}{HTXIntroPage3}
+\endmenu
+
+\end{page}
+
+
+@
+\section{htxintropage3.ht}
+\subsection{A simple text page}
+\begin{itemize}
+\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
+\item HTXTryPage \ref{HTXTryPage} on page~\pageref{HTXTryPage}
+\item HTXFormatTopPage \ref{HTXFormatTopPage} on 
+page~\pageref{HTXFormatTopPage}
+\end{itemize}
+\label{HTXIntroPage3}
+\index{pages!HTXIntroPage3!htxintropage3.ht}
+\index{htxintropage3.ht!pages!HTXIntroPage3}
+\index{HTXIntroPage3!htxintropage3.ht!pages}
+<<htxintropage3.ht>>=
+\begin{page}{HTXIntroPage3}{A simple text page}
+{\centerline{\fbox{{\tt \thispage}}}\newline}
+\begin{scroll}
+
+
+A page is defined by a {\em group} command. Group commands are used to
+delimit a group, that is, to declare where a group starts and where it
+ends. The proper syntax for a page definition is as follows:
+\beginImportant
+{\tt \\begin\{page\}\{{\it name}\}\{{\it a title}\}}
+\newline
+.
+\newline
+.
+\newline
+.
+\newline
+{\tt \\end\{page\}}
+\beginImportant
+
+Note the use of the special characters {\tt \\}, {\tt \{} and {\tt
+\}}.  The {\tt \\} (backslash) character introduces a command, in this
+case, {\tt begin}.  The {\tt \{ \}} (braces) delimit the {\em
+parameters} to the command.  The first parameter (the word {\tt page})
+specifies this as a page definition command.
+
+The second parameter can be any single unbroken word consisting of
+alphanumeric characters only, and specifies the name of the page by which
+it can be referred to by other commands. You should choose
+this internal name with care so as to avoid potential conflict with
+page names that are defined by the Axiom system. This caveat only
+applies in the case where you have started \HyperName{} with the Axiom
+database --- see \downlink{later on}{HTXLinkPage6}. It is suggested that
+the page names you define start with the letters {\tt UX} (standing for
+{\tt U}ser e{\tt X}tensions). You can have a look at the Axiom
+system database file {\centerline{\bf \env{AXIOM}/doc/hypertex/pages/ht.db} }
+which contains the names of all pages, macros and patches used by Axiom.
+
+The third parameter specifies a title for the page.
+The title of a page is the area at the very top
+of the window, between the buttons. Virtually anything
+that can be put in the main page can also be put in the
+title. As an example, {\em this} page's
+declaration is like this:\newline
+{\tt \\begin\{page\}\{\thispage\}\{A simple text page\}}
+
+Everything you type between the {\tt \\begin\{page\}} command and the next
+{\tt \\end\{page\}} command will become the body of the page. It is
+an error to insert another {\tt \\begin\{page\}} between the two, that is,
+this group command cannot be nested.
+
+There is another useful group command that should be mentioned here
+--- the {\em scroll} command. It controls the portion of the page that
+will be scrollable. \HyperName{} will split a page in three sections:
+a {\em header}, a {\em scroll region} and a {\em footer}. \HyperName{}
+will always try to keep the header and footer regions visible on the
+page; the header at the top and the footer at the bottom. The middle
+scroll region will be truncated and a scroll bar will be automatically
+provided if the window becomes too small for the whole contents of the
+page. Only one scroll region can be defined in a page and the correct
+syntax is as follows:
+\beginImportant
+{\tt \\begin\{scroll\}}
+\newline
+.
+\newline
+.
+\newline
+.
+\newline
+{\tt \\end\{scroll\}}
+\beginImportant
+
+This group should be placed inside the relevant page group. The text
+between the {\tt \\begin\{page\}} and {\tt \\begin\{scroll\}} commands
+defines the header region, the text inside the scroll group defines
+the scroll region and the text between the {\tt \\end\{scroll\}} and
+{\tt \\end\{page\}} commands defines the footer region. It is
+important to keep the header and footer areas small.  Use them to
+display information that might be needed at any time by the user.  If
+you don't define a scroll region in your page, you may find that a
+portion of the page is truncated.
+
+You are now ready to experiment with a page of your own. If you just
+want to display some text on a page, you don't need any other
+\HyperName{} commands. Just make sure that the text you type for the
+title, header, scroll and footer regions does not contain (for the
+moment) any of the \HyperName{} special characters.
+
+\end{scroll}
+\beginmenu
+\menuwindowlink{Try out what you learned}{HTXTryPage}
+\menudownlink{Next -- Learn how to format text}{HTXFormatTopPage}
+\endmenu
+\end{page}
+
+
+@
+\section{htxintrotoppage.ht}
+\subsection{First Steps}
+\begin{itemize}
+\item HTXIntroPage1 \ref{HTXIntroPage1} on page~\pageref{HTXIntroPage1}
+\item HTXIntroPage2 \ref{HTXIntroPage2} on page~\pageref{HTXIntroPage2}
+\item HTXIntroPage3 \ref{HTXIntroPage3} on page~\pageref{HTXIntroPage3}
+\end{itemize}
+\label{HTXIntroTopPage}
+\index{pages!HTXIntroTopPage!htxintrotoppage.ht}
+\index{htxintrotoppage.ht!pages!HTXIntroTopPage}
+\index{HTXIntroTopPage!htxintrotoppage.ht!pages}
+<<htxintrotoppage.ht>>=
+\begin{page}{HTXIntroTopPage}{First Steps}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\beginscroll
+
+\HyperName{} is both a way of presenting information and
+a customisable front-end. Axiom uses
+it for its own purpose as a front-end and documentation system.
+\HyperName{} has special facilities that allow it to interact
+very closely with Axiom.  The \Browse{} facility, the Basic
+Commands section and the ability to execute Axiom commands
+by clicking on \HyperName{} text are witness to this.
+
+These pages will show you the features of \HyperName{} that might
+make it appropriate for your own use in, for example, providing
+documentation for Axiom code that you write or some other purpose.
+
+It is recommended that you get familiar with the {\em use} of
+\HyperName{} before proceeding.
+
+\endscroll
+\beginmenu
+\menudownlink{What \HyperName{} does}{HTXIntroPage1}
+\menudownlink{How \HyperName{} does it}{HTXIntroPage2}
+\menudownlink{Define a simple text page}{HTXIntroPage3}
+\endmenu
+
+\end{page}
+
+@
+\section{htxlinkpage1.ht}
+\subsection{Linking to a named page}
+\label{HTXLinkPage1}
+\begin{itemize}
+\item HTXLinkTopPage \ref{HTXLinkTopPage} on page~\pageref{HTXLinkTopPage}
+\item TestHelpPage \ref{TestHelpPage} on page~\pageref{TestHelpPage}
+\item HTXLinkPage2 \ref{HTXLinkPage2} on page~pageref{HTXLinkPage2}
+\end{itemize}
+\index{pages!HTXLinkPage1!htxlinkpage1.ht}
+\index{htxlinkpage1.ht!pages!HTXLinkPage1}
+\index{HTXLinkPage1!htxlinkpage1.ht!pages}
+<<htxlinkpage1.ht>>=
+\begin{page}{HTXLinkPage1}{Linking to a named page}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+In \HyperName{}, hypertext links are specified by different
+flavors of the {\tt \\link} command. These commands take two
+arguments. One argument specifies the active area, that
+is, the {\it trigger} of the link. The second argument specifies the
+{\it target} of the link, that is, a page. The trigger can be quite arbitrary
+\HyperName{} text and can include images or whole paragraphs. The trigger
+text will be formatted in the normal fashion but its default font will be
+the font specified by the ActiveFont resource.
+
+The simplest kind of \HyperName{} link is a link to a named page.
+Clicking on the trigger will cause the named page to appear in a
+\HyperName{} window.
+There are three flavors for such a link.
+\begin{items}[123456]
+\item\menuitemstyle{{\tt \\windowlink\{{\it trigger}\}\{{\it page name}\}}}
+\newline
+This link command, when activated, will create a new window for the named page.
+\newline
+There will be no \centerline{\UpBitmap{}  or \ReturnBitmap{}}  
+buttons on the new page.
+The new page will have a \centerline{\ExitBitmap{}} button, however.
+The original page containing the {\tt \\windowlink} command will be unaffected.
+\item\menuitemstyle{{\tt \\downlink\{{\it trigger}\}\{{\it page name}\}} }
+\newline This link command, when activated, will cause the
+current page to be replaced by the target page
+in the same \HyperName{} window.
+A \centerline{\UpBitmap{}}  button will automatically be placed
+on the new page allowing you to get back to the page
+containing the {\tt \\downlink} command.
+If the current page has a \centerline{\ReturnBitmap{}} button then
+the target page will also carry it. The associated
+target page of that button will be the same as it is
+in the current page.
+\item\menuitemstyle{{\tt \\memolink\{{\it trigger}\}\{{\it page name}\}}}
+\newline This link command is similar to the {\tt \\downlink} command.
+In addition, it will cause a \centerline{\ReturnBitmap{}}  
+button to be included in
+the target page and all pages {\tt \\downlink}ed from it. 
+This button will act as a
+direct link to the page containing the {\tt \\memolink} command allowing
+a short-cut to be taken.
+\end{items}
+
+\beginImportant
+\begin{paste}{HTXLinkPage1xPaste1}{HTXLinkPage1xPatch1}
+\pastebutton{HTXLinkPage1xPaste1}{Interpret}
+\newline
+{\tt \\windowlink\{windowlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
+{\tt \\downlink\{downlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
+{\tt \\memolink\{memolink to Actions menu\}\{HTXLinkTopPage\}}
+\end{paste}
+\endImportant
+
+
+There is a fourth button that can appear at the top of the page
+next to the \centerline{\ExitBitmap{}} button.
+Its purpose is to provide access to a particular {\it help page}
+associated with the current page.
+That is the \centerline{\HelpBitmap{}} button. The command to use
+is
+\centerline{{\tt \\helppage\{{\it help page name}\}}}
+The {\tt \\helppage} command {\it must } be placed
+just before the {\tt \\end\{page\}} command.
+For instance, to get a help button on this page
+the following command is used.
+\centerline{{\tt {\\helppage\{TestHelpPage\}}}}
+Clicking on the help button at the top
+will display the {\tt TestHelpPage} page in a new window.
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Standard Pages}{HTXLinkPage2}
+\endmenu
+
+\helppage{TestHelpPage}
+\end{page}
+
+@
+\subsection{HTXLinkPage1xPatch1 patch}
+\label{HTXLinkPage1xPatch1}
+\index{patch!HTXLinkPage1xPatch1!htxlinkpage1.ht}
+\index{htxlinkpage1.ht!patch!HTXLinkPage1xPatch1}
+\index{HTXLinkPage1xPatch1!htxlinkpage1.ht!patch}
+<<htxlinkpage1.ht>>=
+\begin{patch}{HTXLinkPage1xPatch1}
+\begin{paste}{HTXLinkPage1xPaste1A}{HTXLinkPage1xPatch1A}
+\pastebutton{HTXLinkPage1xPaste1A}{Source}
+\newline
+\windowlink{windowlink to Actions
+menu}{HTXLinkTopPage}\newline
+\downlink{downlink to Actions menu}{HTXLinkTopPage}\newline
+\memolink{memolink to Actions menu}{HTXLinkTopPage}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage1xPatch1A patch}
+\label{HTXLinkPage1xPatch1A}
+\index{patch!HTXLinkPage1xPatch1A!htxlinkpage1.ht}
+\index{htxlinkpage1.ht!patch!HTXLinkPage1xPatch1A}
+\index{HTXLinkPage1xPatch1A!htxlinkpage1.ht!patch}
+<<htxlinkpage1.ht>>=
+\begin{patch}{HTXLinkPage1xPatch1A}
+\begin{paste}{HTXLinkPage1xPaste1B}{HTXLinkPage1xPatch1}
+\pastebutton{HTXLinkPage1xPaste1B}{Interpret}
+\newline
+{\tt \\windowlink\{windowlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
+{\tt \\downlink\{downlink to Actions menu\}\{HTXLinkTopPage\}\\newline}\newline
+{\tt \\memolink\{memolink to Actions menu\}\{HTXLinkTopPage\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{Test Help Page}
+\label{TestHelpPage}
+\index{pages!TestHelpPage!htxlinkpage1.ht}
+\index{htxlinkpage1.ht!pages!TestHelpPage}
+\index{TestHelpPage!htxlinkpage1.ht!pages}
+<<htxlinkpage1.ht>>=
+\begin{page}{TestHelpPage}{Test Help Page}
+\begin{scroll}
+
+\vspace{100}
+\centerline{Is this any help?}
+\end{scroll}
+\end{page}
+
+@
+\section{htxlinkpage2.ht}
+\subsection{Standard Pages}
+\label{HTXLinkPage2}
+\begin{itemize}
+\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
+\item SpadNotConnectedPage \ref{SpadNotConnectedPage} on 
+page~\pageref{SpadNotConnectedPage}
+\item UnknownPage \ref{UnknownPage} on page~\pageref{UnknownPage}
+\item ErrorPage \ref{ErrorPage} on page~\pageref{ErrorPage}
+\item ProtectedQuitPage \ref{ProtectedQuitPage} on 
+page~\pageref{ProtectedQuitPage}
+\item HTXLinkPage3 \ref{HTXLinkPage3} on page~\pageref{HTXLinkPage3}
+\end{itemize}
+\index{pages!HTXLinkPage2!htxlinkpage2.ht}
+\index{htxlinkpage2.ht!pages!HTXLinkPage2}
+\index{HTXLinkPage2!htxlinkpage2.ht!pages}
+<<htxlinkpage2.ht>>=
+\begin{page}{HTXLinkPage2}{Standard Pages}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+You have reached this page after performing
+a series of mouse clicks on \HyperName{}
+active areas. Each time, a {\tt \\link}
+command was activated. Well, how does it all
+start?
+The answer is that \HyperName{} always puts up
+a particular page called {\tt RootPage} when
+it starts up. If this page is not found in the database,
+\HyperName{} will immediately exit.
+It is, of course, desirable that the {\tt RootPage}
+contains links to other pages!
+It is possible to override
+Axiom's choice of {\tt RootPage} and provide your own
+to \HyperName{}. This is done in the same way as
+you would override any Axiom-defined page and is
+discussed in \downlink{How to use your pages with \HyperName{}}{HTXLinkPage6}.
+
+
+
+You may have noticed that \HyperName{}
+uses some pages when certain events occur.
+There is a page that is put up, for instance,
+whenever \HyperName{} cannot connect to Axiom.
+Another page is put up whenever there is a formatting
+error and yet another when a request for an unknown page
+is made. Finally, there is a page that prompts
+for confirmation when you press the
+exit button on the initial page.
+
+
+These pages have standard names and must be provided
+in the \HyperName{} page database.
+They are already defined in the Axiom system
+\HyperName{} page database so that you do not have to
+define them yourself.
+
+Here are the pages required by \HyperName{}. You can click on any of these
+to see their contents. Click on their exit buttons when you are finished.
+
+\beginImportant
+\begin{paste}{HTXLinkPage2xPaste1}{HTXLinkPage2xPatch1}
+\pastebutton{HTXLinkPage2xPaste1}{Interpret}
+\newline
+{\tt \\table\{}\newline
+{\tt \{\\windowlink\{SpadNotConnectedPage\}\{SpadNotConnectedPage\}\}}\newline
+{\tt \{\\windowlink\{UnknownPage\}\{UnknownPage\}\}}\newline
+{\tt \{\\windowlink\{ErrorPage\}\{ErrorPage\}\}}\newline
+{\tt \{\\windowlink\{ProtectedQuitPage\}\{ProtectedQuitPage\}\}}\newline
+{\tt \}}\newline
+\end{paste}
+\endImportant
+
+
+In addition, \HyperName{} uses certain bitmaps for its buttons.
+They are also provided in the Axiom system
+bitmap directory and \HyperName{} knows where to find them.
+
+The bitmap files required by \HyperName{} are the following.
+\newline
+\tab{7}{\it exit.bitmap}\tab{22} = \tab{25}{\ExitBitmap{}} \newline
+\tab{7}{\it help2.bitmap}\tab{22} = \tab{25}{\HelpBitmap{}} \newline
+\tab{7}{\it up3.bitmap}\tab{22} = \tab{25}{\UpBitmap{}}\newline
+\tab{7}{\it return3.bitmap}\tab{22} = \tab{25}{\ReturnBitmap{}}\newline
+\tab{7}{\it noop.bitmap}\tab{22} = \tab{25}{\NoopBitmap{}}
+
+These files must exist in your current directory if
+the {\tt AXIOM} environment variable is not set.
+If it is, then \HyperName{} will assume that it points
+to the Axiom system directory and will look for
+these files in
+{\bf \$AXIOM/doc/hypertex/bitmaps}.
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Active Axiom commands}{HTXLinkPage3}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXLinkPage2xPatch1 patch}
+\label{HTXLinkPage2xPatch1}
+\index{patch!HTXLinkPage2xPatch1!htxlinkpage2.ht}
+\index{htxlinkpage2.ht!patch!HTXLinkPage2xPatch1}
+\index{HTXLinkPage2xPatch1!htxlinkpage2.ht!patch}
+<<htxlinkpage2.ht>>=
+\begin{patch}{HTXLinkPage2xPatch1}
+\begin{paste}{HTXLinkPage2xPaste1A}{HTXLinkPage2xPatch1A}
+\pastebutton{HTXLinkPage2xPaste1A}{Source}
+\newline
+\table{
+{\windowlink{SpadNotConnectedPage}{SpadNotConnectedPage}}
+{\windowlink{UnknownPage}{UnknownPage}}
+{\windowlink{ErrorPage}{ErrorPage}}
+{\windowlink{ProtectedQuitPage}{ProtectedQuitPage}}
+}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage2xPatch1A patch}
+\label{HTXLinkPage2xPatch1A}
+\index{patch!HTXLinkPage2xPatch1A!htxlinkpage2.ht}
+\index{htxlinkpage2.ht!patch!HTXLinkPage2xPatch1A}
+\index{HTXLinkPage2xPatch1A!htxlinkpage2.ht!patch}
+<<htxlinkpage2.ht>>=
+\begin{patch}{HTXLinkPage2xPatch1A}
+\begin{paste}{HTXLinkPage2xPaste1B}{HTXLinkPage2xPatch1}
+\pastebutton{HTXLinkPage2xPaste1B}{Interpret}
+\newline
+{\tt \\table\{}\newline
+{\tt \{\\windowlink\{SpadNotConnectedPage\}\{SpadNotConnectedPage\}\}}\newline
+{\tt \{\\windowlink\{UnknownPage\}\{UnknownPage\}\}}\newline
+{\tt \{\\windowlink\{ErrorPage\}\{ErrorPage\}\}}\newline
+{\tt \{\\windowlink\{ProtectedQuitPage\}\{ProtectedQuitPage\}\}}\newline
+{\tt \}}\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxlinkpage3.ht}
+\subsection{Active Axiom commands}
+\label{HTXLinkPage3}
+See HTXLinkPage4 \ref{HTXLinkPage4} on page~\pageref{HTXLinkPage4}
+\index{pages!HTXLinkPage3!htxlinkpage3.ht.ht}
+\index{htxlinkpage3.ht.ht!pages!HTXLinkPage3}
+\index{HTXLinkPage3!htxlinkpage3.ht.ht!pages}
+<<htxlinkpage3.ht.ht>>=
+\begin{page}{HTXLinkPage3}{Active Axiom commands}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+This section explains how to include Axiom
+commands in your page. The commands we will
+introduce are actually {\it macros} that are defined
+in
+\centerline{{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
+This means that you can use them only if you include
+this file in your \HyperName{} database.
+
+The first command to learn is
+\horizontalline
+{\tt \\axiomcommand\{ {\it command }{\tt \ \\free\{}{\it var1 var2 ...}{\tt \}\ \\bound\{}{\it var}{\tt \}\ \}} }
+\horizontalline
+
+
+The {\tt \\free\{\}} and {\tt \\bound\{\}} directives are optional.
+We will come to them in a minute. The {\it command} above is the
+text of the Axiom command. Only single line commands are allowed
+here.
+This text will be displayed in the reserved AxiomFont logical
+font.  The area of the text will be active and clicking on it
+will attempt to send the command to Axiom for evaluation.
+A new Axiom interpreter window (and Axiom frame)
+will be created if this was the first Axiom command
+activated in the current page. If not, the command will be sent
+to the already opened Axiom interpreter window for the current page.
+Note that it {\it is} necessary to escape special
+\HyperName{} characters with the {\tt '\\'} backslash character.
+The exceptions are the characters {\tt \[\]}; they do not
+need to be escaped in this context.
+
+\beginImportant
+\begin{paste}{HTXLinkPage3xPaste1}{HTXLinkPage3xPatch1}
+\pastebutton{HTXLinkPage3xPaste1}{Interpret}
+\newline
+{\tt \\axiomcommand\{ l:=brace[1,2,3] ; length:=\\\# l ; m:=[1,2]\}}
+\end{paste}
+\endImportant
+
+
+The optional {\tt \\free\{\}} and {\tt \\bound\{\}} directives
+provide dependency control. The reader of a \HyperName{}
+page is not forced to click on the commands in the
+order in which in they appear on the page.  If the
+correct {\tt \\free\{\}} and {\tt \\bound\{\}}
+specifications are made, clicking on a command
+will result in execution of all those other
+commands that should be executed before it.
+This will {\it only} happen the first time the command is
+clicked.
+
+So, how are the dependencies specified?
+The arguments of the {\tt \\free\{\}} directive must
+be space-separated words (labels). The argument of {\tt \\bound\{\}}
+must be a single (unique for the page) label. Each label in the {\tt \\free\{\}} list
+must exist as an argument to one (and only one) {\tt \\bound\{\}} directive
+somewhere in the current page.
+When the command is activated, \HyperName{} will look
+in the {\tt \\free\{\}} list and check each label.
+For each label, it will find the command that specifies that label
+in its {\tt \\bound\{\}} directive and
+execute it if it has not been already executed.
+The order of labels in the {\tt \\free\{\}} directive list
+is respected. \HyperName{} will follow all
+dependency links recursively.
+
+Here is  an example.
+Clicking on the third command will automatically
+execute all of them in the correct sequence.
+Note that in this case the order of labels in the last
+line is immaterial since {\tt v2} explicitly depends on {\tt v1}.
+
+\beginImportant
+\begin{paste}{HTXLinkPage3xPaste2}{HTXLinkPage3xPatch2}
+\pastebutton{HTXLinkPage3xPaste2}{Interpret}
+\newline
+{\tt \\axiomcommand\{a:=1;d:=4 \\bound\{v1\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\axiomcommand\{b:=a+3 \\free\{v1\} \\bound\{v2\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\axiomcommand\{c:=b+d \\free\{v1 v2\} \\bound\{v3\}\}}\newline
+\end{paste}
+\endImportant
+
+The second command deals with multi-line Axiom
+code. This is the command to use for execution of
+an Axiom {\it pile}. It is a {\it group}
+command. The proper syntax for it is as follows:
+\horizontalline
+{\tt \\begin\{spadsrc\}\ [\\free\{{\it var1 var2} ...\}\ \\bound\{{\it var}\}]}
+\newline
+.
+\newline
+.
+\newline
+{\tt \\end\{spadsrc\}}
+\horizontalline
+
+Again, the {\tt \\free} and {\tt \\bound} directives are
+optional. If they are specified (in exactly the same way
+as {\tt \\axiomcommand}), they must be enclosed in
+square brackets {\tt []}.
+The lines between the {\tt \\begin} and {\tt \\end}
+contain the Axiom statements. Indentation
+will be respected. \HyperName{} will
+actually save this part in a temporary file
+and instruct Axiom to read the file
+with the {\tt )read} system command.
+
+Here is an example. The execution of the following
+fragment is dependent on the {\tt v3} label.
+Make sure that previous commands are active (and
+hence the label {\tt v3} is "visible") before
+trying to execute it. If the label {\tt v3}
+is not seen in the page, \HyperName{} will
+print an error message on standard output
+and ignore the dependency.
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage3xPaste3}{HTXLinkPage3xPatch3}
+\pastebutton{HTXLinkPage3xPaste3}{Interpret}
+\newline
+{\tt \\begin\{spadsrc\}\ [\\free\{v3\}\ \\bound\{v4\}]}\newline
+{\tt f\ x\ ==}\newline
+{\tt \ \ \ x+c}\newline
+{\tt f\ 3}\newline
+{\tt \\end\{spadsrc\}}
+\end{paste}
+\endImportant
+
+There is, in fact, more that one can do
+with Axiom commands. In pages elsewhere
+in the system, Axiom commands appear next
+to button like this \ \MenuDotBitmap{}.
+Clicking on this button, one can see the output
+for that command. The output has been
+pre-computed and is also stored in
+\HyperName{} files. This is done using
+{\it patch} and {\it paste}.
+It is the same mechanism that
+is used to alternatively display
+\HyperName{} source and interpreted
+result in this and other pages.
+It is explained \downlink{later on}{HTXAdvPage5}.
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Linking to Lisp}{HTXLinkPage4}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXLinkPage3xPatch1 patch}
+\label{HTXLinkPage3xPatch1}
+\index{patch!HTXLinkPage3xPatch1!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch1}
+\index{HTXLinkPage3xPatch1!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch1}
+\begin{paste}{HTXLinkPage3xPaste1A}{HTXLinkPage3xPatch1A}
+\pastebutton{HTXLinkPage3xPaste1A}{Source}
+\newline
+\axiomcommand{ l:=brace[1,2,3] ; length:=\# l ; m:=[1,2]}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage3xPatch1A patch}
+\label{HTXLinkPage3xPatch1A}
+\index{patch!HTXLinkPage3xPatch1A!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch1A}
+\index{HTXLinkPage3xPatch1A!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch1A}
+\begin{paste}{HTXLinkPage3xPaste1B}{HTXLinkPage3xPatch1}
+\pastebutton{HTXLinkPage3xPaste1B}{Interpret}
+\newline
+{\tt \\axiomcommand\{ l:=brace[1,2,3] ; length:=\\\# l ; m:=[1,2]\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage3xPatch2 patch}
+\label{HTXLinkPage3xPatch2}
+\index{patch!HTXLinkPage3xPatch2!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch2}
+\index{HTXLinkPage3xPatch2!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch2}
+\begin{paste}{HTXLinkPage3xPaste2A}{HTXLinkPage3xPatch2A}
+\pastebutton{HTXLinkPage3xPaste2A}{Source}
+\newline
+\axiomcommand{a:=1;d:=4 \bound{v1}}
+\newline
+\axiomcommand{b:=a+3 \free{v1} \bound{v2}}
+\newline
+\axiomcommand{c:=b+d \free{v1 v2} \bound{v3}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage3xPatch2A patch}
+\label{HTXLinkPage3xPatch2A}
+\index{patch!HTXLinkPage3xPatch2A!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch2A}
+\index{HTXLinkPage3xPatch2A!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch2A}
+\begin{paste}{HTXLinkPage3xPaste2B}{HTXLinkPage3xPatch2}
+\pastebutton{HTXLinkPage3xPaste2B}{Interpret}
+\newline
+{\tt \\axiomcommand\{a:=1;d:=4 \\bound\{v1\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\axiomcommand\{b:=a+3 \\free\{v1\} \\bound\{v2\}\}}\newline
+{\tt \\newline}\newline
+{\tt \\axiomcommand\{c:=b+d \\free\{v1 v2\} \\bound\{v3\}\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage3xPatch3 patch}
+\label{HTXLinkPage3xPatch3}
+\index{patch!HTXLinkPage3xPatch3!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch3}
+\index{HTXLinkPage3xPatch3!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch3}
+\begin{paste}{HTXLinkPage3xPaste3A}{HTXLinkPage3xPatch3A}
+\pastebutton{HTXLinkPage3xPaste3A}{Source}
+\newline
+\begin{spadsrc} [\free{v3} \bound{v4}]
+f x ==
+   x+c
+f 3
+\end{spadsrc}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage3xPatch3A patch}
+\label{HTXLinkPage3xPatch3A}
+\index{patch!HTXLinkPage3xPatch3A!htxlinkpage3.ht}
+\index{htxlinkpage3.ht!patch!HTXLinkPage3xPatch3A}
+\index{HTXLinkPage3xPatch3A!htxlinkpage3.ht!patch}
+<<htxlinkpage3.ht>>=
+\begin{patch}{HTXLinkPage3xPatch3A}
+\begin{paste}{HTXLinkPage3xPaste3B}{HTXLinkPage3xPatch3}
+\pastebutton{HTXLinkPage3xPaste3B}{Interpret}
+\newline
+{\tt \\begin\{spadsrc\}\ [\\free\{v3\}\ \\bound\{v4\}]}\newline
+{\tt f\ x\ ==}\newline
+{\tt \ \ \ x+c}\newline
+{\tt f\ 3}\newline
+{\tt \\end\{spadsrc\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxlinkpage4.ht}
+\subsection{Linking to Lisp}
+\label{HTXLinkPage4}
+See HTXLinkPage5 \ref{HTXLinkPage5} on page~\pageref{HTXLinkPage5}
+\index{pages!HTXLinkPage4!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!pages!HTXLinkPage4}
+\index{HTXLinkPage4!htxlinkpage4.ht!pages}
+<<htxlinkpage4.ht>>=
+\begin{page}{HTXLinkPage4}{Linking to Lisp}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+Another feature of the Axiom\hspace{2}--\HyperName{}
+link is the ability to execute {\it Lisp}
+code at a click of a button.
+There are two things one can do.
+
+The first is to cause the evaluation
+of a {\it Lisp} form and ignore (as far as \HyperName{}
+is concerned) its value. The evaluation of the function
+might have an effect however on your Axiom session.
+
+The command for this is
+\horizontalline
+\centerline{ {\tt \\lispcommand\{{\it text}\}\{{\it Lisp form}\}}}
+\horizontalline
+
+Here is an example. We will first define a {\it Lisp} function
+and then execute it.  Notice that the \HyperName{}
+special characters must be escaped (this is on top
+of {\it Lisp} escaping conventions).
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage4xPaste1}{HTXLinkPage4xPatch1}
+\pastebutton{HTXLinkPage4xPaste1}{Interpret}
+\newline
+{\tt \\lispcommand\{Definition\}\{(defun HTXTESTFUNCTION ()}\newline
+{\tt  (print "Hello from HyperDoc \\\\\\\\ \\\% \\\{ \\\}"))\}} \newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Execution\}\{(HTXTESTFUNCTION)\}} \newline
+\end{paste}
+\endImportant
+
+Your command will be executed as soon as
+Axiom completes any computation it might be
+carrying out.
+
+
+%\axiomcommand{)lisp (defun f () (pprint "hello"))}
+%\lispcommand{f}{(|f|)}
+
+
+The second thing you can do is quite powerful. It allows you
+to delegate to a {\it Lisp} function
+the {\it dynamic} creation of a page. This is used
+in \Browse{} to present
+the Axiom Library in a hypertext form.
+
+The command to use is a lot like the {\tt link} commands
+you encountered \downlink{earlier}{HTXLinkPage1} and comes in three flavours.
+\centerline{{\tt \\lispwindowlink\{{\it trigger}\}\{{\it Lisp form}\}}}
+\centerline{{\tt \\lispdownlink\{{\it trigger}\}\{{\it Lisp form}\}}}
+\centerline{{\tt \\lispmemolink\{{\it trigger}\}\{{\it Lisp form}\}}}
+
+The difference between the three versions is the same as before.
+When such a link is activated, \HyperName{} issues the
+{\it Lisp form} to Axiom and waits for a full
+page definition. An important point to note is that
+\HyperName{} does {\it not} use
+the value of the {\it Lisp form} but, instead, it
+depends on its {\it side-effects}.
+What {\it must} happen during evaluation
+of the form is enough evaluations of a special {\it Lisp}
+function called {\bf issueHT} to define a page.
+The argument of {\bf issueHT} is a string
+containing \HyperName{} text. Perhaps an example will clarify
+matters.
+
+First we will define a {\it Lisp} function that accepts
+a string argument and calls {\bf issueHT} a few times.
+The strings that are passed to {\bf issueHT} construct
+a \HyperName{} page that would just contain our
+original argument centered roughly on the page.
+Then we write the {\tt \\lisplink} with a call to
+the function. Finally, we execute a {\it Lisp}
+command that just pretty--prints the function's definition.
+
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage4xPaste2}{HTXLinkPage4xPatch2}
+\pastebutton{HTXLinkPage4xPaste2}{Interpret}
+\newline
+{\tt \\lispcommand\{Definition\}\{(defun HTXTESTPAGE (x) (|issueHT|}\newline
+{\tt  "\\\\\\\\begin\\\{page\\\}\\\{LispTestPage\\\}\\\{Lisp Test Page\\\}}\newline
+{\tt  \\\\\\\\vspace\\\{150\\\} \\\\\\\\centerline\\\{") (|issueHT| x) (|issueHT|}\newline
+{\tt  "\\\} \\\\\\\\end\\\{page\\\}" ) ) \}}\newline
+{\tt \\newline}\newline
+{\tt \\lispwindowlink\{Link to it\}\{(HTXTESTPAGE "Hi there")\}}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Show Lisp definition\}\{(pprint (symbol-function 'HTXTESTPAGE))\}}\newline
+\end{paste}
+\endImportant
+
+The {\tt '\\\{'} and {\tt '\\\}'} is required to escape
+\HyperName{}'s special characters {\tt '\{'} and {\tt  '\}'}.
+The {\tt '\\\\\\\\'} has the following rationale.
+We need to send to \HyperName{} (from {\it Lisp}) the sequence
+{\tt \\begin}. But {\tt '\\'} is a special {\it Lisp}
+character. Therefore the {\it Lisp} string must be
+{\tt '\\\\begin'}. But to specify this
+in \HyperName{} we need to escape the two {\tt '\\'}.
+Therefore, we write {\tt '\\\\\\\\begin'}.
+
+
+The definition of {\tt HTXTESTPAGE} would have been written in {\it Lisp}
+as follows.
+\begin{verbatim}
+(defun HTXTESTPAGE (X)
+   (|issueHT|
+      "\\begin{page}{LispTestPage}{Lisp Test Page} \\vspace{200} \\centerline{")
+   (|issueHT| X)
+   (|issueHT| "} \\end{page}"))
+\end{verbatim}
+
+
+
+You should not execute {\tt HTXTESTPAGE} in the
+{\it Lisp} environment manually. It is meant to
+be executed {\it only} in response to a
+\HyperName{} request.
+
+Can you pop-up a named page from {\it Lisp} regardless of
+user action? Yes --- use {\it Lisp} function {\bf linkToHTPage}
+with the page name as a string argument. Click on the
+{\tt \\axiomcommand} below. Then, in your Axiom
+session, you can repeat it if you like.
+
+\beginImportant
+\begin{paste}{HTXLinkPage4xPaste3}{HTXLinkPage4xPatch3}
+\pastebutton{HTXLinkPage4xPaste3}{Interpret}
+\newline
+{\tt \\axiomcommand\{)lisp (|linkToHTPage| "RootPage")\}}
+\end{paste}
+\endImportant
+
+You can also pop-up a {\it dynamic} page regardless of user action.
+To do this, make sure you evaluate the {\it Lisp form}
+{\bf (|startHTPage| 50)} before using {\bf issueHT}.
+The example below requires the {\tt HTXTESTPAGE} function
+to be defined in {\it Lisp} so you should make sure
+you have executed the command above that defines it.
+
+\beginImportant
+\begin{paste}{HTXLinkPage4xPaste4}{HTXLinkPage4xPatch4}
+\pastebutton{HTXLinkPage4xPaste4}{Interpret}
+\newline
+{\tt \\axiomcommand\{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))\}}
+\end{paste}
+\endImportant
+
+Now, the most important use of this facility
+so far has been in the \Browse{} and Basic Commands components of
+\HyperName{}. Instead of giving you details of the various
+\Browse{} {\it Lisp} functions, a few macros are defined in
+\centerline{{\bf \$AXIOM/doc/hypertex/pages/util.ht}}
+
+The most important defined macros are
+\beginImportant
+\table{
+{ {\tt \\axiomType\{{\it constructor}\}} }
+{ {\tt \\axiomOp\{{\it operation}\}} }
+{ {\tt \\axiomOpFrom\{{\it operation }\}\{{\it constructor}\}}}
+}
+\endImportant
+
+Here are some examples of their use.
+\beginImportant
+\begin{paste}{HTXLinkPage4xPaste5}{HTXLinkPage4xPatch5}
+\pastebutton{HTXLinkPage4xPaste5}{Interpret}
+\newline
+{\tt \\axiomType\{Expression Integer\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomType\{Expression\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomType\{EXPR\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOp\{reduce\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOp\{as*\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOpFrom\{reduce\}\{Expression\}}\newline
+\end{paste}
+\endImportant
+
+The macro {\tt \\axiomType} brings up the \Browse{}
+constructor page for the constructor specified.
+You can specify a full name, or an abbreviation
+or just the top level name.
+The macro {\tt \\axiomOp} brings up a list of operations
+matching the argument.
+The macro {\tt \\axiomOpFrom} shows documentation
+about the specified operation whose origin is
+constructor. No wildcard in the operation name
+or type abbreviation is
+allowed here.  You should also specify just the top level type.
+
+
+
+
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- Linking to Unix}{HTXLinkPage5}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXLinkPage4xPatch1 patch}
+\label{HTXLinkPage4xPatch1}
+\index{patch!HTXLinkPage4xPatch1!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch1}
+\index{HTXLinkPage4xPatch1!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch1}
+\begin{paste}{HTXLinkPage4xPaste1A}{HTXLinkPage4xPatch1A}
+\pastebutton{HTXLinkPage4xPaste1A}{Source}
+\newline
+\lispcommand{Definition}{(defun HTXTESTFUNCTION ()
+(print "Hello from HyperDoc \\\\ \% \{ \}"))}
+\newline
+\lispcommand{Execution}{(HTXTESTFUNCTION)}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch1A patch}
+\label{HTXLinkPage4xPatch1A}
+\index{patch!HTXLinkPage4xPatch1A!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch1A}
+\index{HTXLinkPage4xPatch1A!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch1A}
+\begin{paste}{HTXLinkPage4xPaste1B}{HTXLinkPage4xPatch1}
+\pastebutton{HTXLinkPage4xPaste1B}{Interpret}
+\newline
+{\tt \\lispcommand\{Definition\}\{(defun HTXTESTFUNCTION () (print "Hello from HyperDoc \\\\\\\\ \\\% \\\{ \\\}"))\}} \newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Execution\}\{(HTXTESTFUNCTION)\}} \newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch2 patch}
+\label{HTXLinkPage4xPatch2}
+\index{patch!HTXLinkPage4xPatch2!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch2}
+\index{HTXLinkPage4xPatch2!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch2}
+\begin{paste}{HTXLinkPage4xPaste2A}{HTXLinkPage4xPatch2A}
+\pastebutton{HTXLinkPage4xPaste2A}{Source}
+\newline
+\lispcommand{Definition}{(defun HTXTESTPAGE (x) (|issueHT|
+"\\\\begin\{page\}\{LispTestPage\}\{Lisp Test Page\}
+\\\\vspace\{150\} \\\\centerline\{") (|issueHT| x) (|issueHT|
+"\} \\\\end\{page\}" ) ) }
+\newline
+\lispwindowlink{Link to it}{(HTXTESTPAGE "Hi there")}
+\newline
+\lispcommand{Show Lisp definition}{(pprint (symbol-function 'HTXTESTPAGE))}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch2A patch}
+\label{HTXLinkPage4xPatch2A}
+\index{patch!HTXLinkPage4xPatch2A!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch2A}
+\index{HTXLinkPage4xPatch2A!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch2A}
+\begin{paste}{HTXLinkPage4xPaste2B}{HTXLinkPage4xPatch2}
+\pastebutton{HTXLinkPage4xPaste2B}{Interpret}
+\newline
+{\tt \\lispcommand\{Definition\}\{(defun HTXTESTPAGE (x) (|issueHT|}\newline
+{\tt  "\\\\\\\\begin\\\{page\\\}\\\{LispTestPage\\\}\\\{Lisp Test Page\\\}}\newline
+{\tt  \\\\\\\\vspace\\\{150\\\} \\\\\\\\centerline\\\{") (|issueHT| x) (|issueHT|}\newline
+{\tt  "\\\} \\\\\\\\end\\\{page\\\}" ) ) \}}\newline
+{\tt \\newline}\newline
+{\tt \\lispwindowlink\{Link to it\}\{(HTXTESTPAGE "Hi there")\}}\newline
+{\tt \\newline}\newline
+{\tt \\lispcommand\{Show Lisp definition\}\{(pprint (symbol-function 'HTXTESTPAGE))\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch3 patch}
+\label{HTXLinkPage4xPatch3}
+\index{patch!HTXLinkPage4xPatch3!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch3}
+\index{HTXLinkPage4xPatch3!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch3}
+\begin{paste}{HTXLinkPage4xPaste3A}{HTXLinkPage4xPatch3A}
+\pastebutton{HTXLinkPage4xPaste3A}{Source}
+\newline
+\axiomcommand{)lisp (|linkToHTPage| "RootPage")}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch3A patch}
+\label{HTXLinkPage4xPatch3A}
+\index{patch!HTXLinkPage4xPatch3A!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch3A}
+\index{HTXLinkPage4xPatch3A!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch3A}
+\begin{paste}{HTXLinkPage4xPaste3B}{HTXLinkPage4xPatch3}
+\pastebutton{HTXLinkPage4xPaste3B}{Interpret}
+\newline
+{\tt \\axiomcommand\{)lisp (|linkToHTPage| "RootPage")\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch4 patch}
+\label{HTXLinkPage4xPatch4}
+\index{patch!HTXLinkPage4xPatch4!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch4}
+\index{HTXLinkPage4xPatch4!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch4}
+\begin{paste}{HTXLinkPage4xPaste4A}{HTXLinkPage4xPatch4A}
+\pastebutton{HTXLinkPage4xPaste4A}{Source}
+\newline
+\axiomcommand{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch4A patch}
+\label{HTXLinkPage4xPatch4A}
+\index{patch!HTXLinkPage4xPatch4A!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch4A}
+\index{HTXLinkPage4xPatch4A!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch4A}
+\begin{paste}{HTXLinkPage4xPaste4B}{HTXLinkPage4xPatch4}
+\pastebutton{HTXLinkPage4xPaste4B}{Interpret}
+\newline
+{\tt \\axiomcommand\{)lisp (progn (|startHTPage| 50)(HTXTESTPAGE "Immediately"))\}}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch5 patch}
+\label{HTXLinkPage4xPatch5}
+\index{patch!HTXLinkPage4xPatch5!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch5}
+\index{HTXLinkPage4xPatch5!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch5}
+\begin{paste}{HTXLinkPage4xPaste5A}{HTXLinkPage4xPatch5A}
+\pastebutton{HTXLinkPage4xPaste5A}{Source}
+\newline
+\axiomType{Expression Integer}
+\newline
+\axiomType{Expression}
+\newline
+\axiomType{EXPR}
+\newline
+\axiomOp{reduce}
+\newline
+\axiomOp{as*}
+\newline
+\axiomOpFrom{reduce}{Expression}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage4xPatch5A patch}
+\label{HTXLinkPage4xPatch5A}
+\index{patch!HTXLinkPage4xPatch5A!htxlinkpage4.ht}
+\index{htxlinkpage4.ht!patch!HTXLinkPage4xPatch5A}
+\index{HTXLinkPage4xPatch5A!htxlinkpage4.ht!patch}
+<<htxlinkpage4.ht>>=
+\begin{patch}{HTXLinkPage4xPatch5A}
+\begin{paste}{HTXLinkPage4xPaste5B}{HTXLinkPage4xPatch5}
+\pastebutton{HTXLinkPage4xPaste5B}{Interpret}
+\newline
+{\tt \\axiomType\{Expression Integer\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomType\{Expression\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomType\{EXPR\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOp\{reduce\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOp\{as*\}}\newline
+{\tt \newline}\newline
+{\tt \\axiomOpFrom\{reduce\}\{Expression\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxlinkpage5.ht}
+\subsection{Linking to Unix}
+\label{HTXLinkPage5}
+\index{pages!HTXLinkPage5!htxlinkpage5.ht}
+\index{htxlinkpage5.ht!pages!HTXLinkPage5}
+\index{HTXLinkPage5!htxlinkpage5.ht!pages}
+<<htxlinkpage5.ht>>=
+\begin{page}{HTXLinkPage5}{Linking to Unix}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+Let us conclude the tour of \HyperName{}
+actions that can be triggered with a click of a button
+with two more facilities. These are
+\beginImportant
+\table{
+{ {\tt \\unixcommand\{{\it trigger text}\}\{{\it unix command}\}}}
+{ {\tt \\unixlink\{{\it trigger text}\}\{{\it unix command}\}}}
+}
+\endImportant
+
+
+The first one, {\tt \\unixcommand}, is very much like
+{\tt \\axiomcommand} and {\tt \\lispcommand}.
+The trigger text becomes an active area. Clicking on it
+will force \HyperName{} to pass the second argument
+to the system as a shell command to be executed.
+The shell used is {\bf /bin/sh}.
+\HyperName{} ignores the output of the command.
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage5xPaste1}{HTXLinkPage5xPatch1}
+\pastebutton{HTXLinkPage5xPaste1}{Interpret}
+\newline
+{\tt \\unixcommand\{List \\\$HOME directory\}\{ls \\\$HOME\}}\newline
+\end{paste}
+\endImportant
+
+The {\tt \\unixlink} command delegates to a another
+program the creation of a dynamic page. When the trigger
+text is activated, \HyperName{} will invoke the command
+specified in the second argument. It will then start reading
+the {\it standard output} of the command until
+a complete page has been received. It is important that
+a single page and nothing more is written by the command.
+This command is essentially a {\tt \\downlink}, i.e.
+the new page replaces the current page in the window.
+There aren't any other flavours of {\tt \\unixlink}.
+A trivial example is to use {\bf cat} on a \HyperName{}
+file known to contain just one page.
+
+\beginImportant
+\begin{paste}{HTXLinkPage5xPaste2}{HTXLinkPage5xPatch2}
+\pastebutton{HTXLinkPage5xPaste2}{Interpret}
+\newline
+{\tt \\unixlink\{Some file\}} \newline
+{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
+\end{paste}
+\endImportant
+
+
+Two things to notice in the second argument of
+{\tt \\unixlink}: You must use a {\it hard space}
+{\tt '\\\ '} to preserve the spacing in the command.
+Also, the {\tt \\env} command allows you to use
+an environment variable in \HyperName{} text.
+
+With a little ingenuity (and maybe some shell and {\bf awk} scripts !)
+, one can use these
+facilities to create, say, a point-and-click
+directory viewer which allows you to edit
+a file by clicking on its name.
+
+\end{scroll}
+\beginmenu
+\menulink{Next -- How to use your pages with \HyperName{}}{HTXLinkPage6}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXLinkPage5xPatch1 patch}
+\label{HTXLinkPage5xPatch1}
+\index{patch!HTXLinkPage5xPatch1!htxlinkpage5.ht}
+\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch1}
+\index{HTXLinkPage5xPatch1!htxlinkpage5.ht!patch}
+<<htxlinkpage5.ht>>=
+\begin{patch}{HTXLinkPage5xPatch1}
+\begin{paste}{HTXLinkPage5xPaste1A}{HTXLinkPage5xPatch1A}
+\pastebutton{HTXLinkPage5xPaste1A}{Source}
+\newline
+\unixcommand{List \$HOME directory}{ls \$HOME}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage5xPatch1A patch}
+\label{HTXLinkPage5xPatch1A}
+\index{patch!HTXLinkPage5xPatch1A!htxlinkpage5.ht}
+\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch1A}
+\index{HTXLinkPage5xPatch1A!htxlinkpage5.ht!patch}
+<<htxlinkpage5.ht>>=
+\begin{patch}{HTXLinkPage5xPatch1A}
+\begin{paste}{HTXLinkPage5xPaste1B}{HTXLinkPage5xPatch1}
+\pastebutton{HTXLinkPage5xPaste1B}{Interpret}
+\newline
+{\tt \\unixcommand\{List \\\$HOME directory\}\{ls \\\$HOME\}}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage5xPatch2 patch}
+\label{HTXLinkPage5xPatch2}
+\index{patch!HTXLinkPage5xPatch2!htxlinkpage5.ht}
+\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch2}
+\index{HTXLinkPage5xPatch2!htxlinkpage5.ht!patch}
+<<htxlinkpage5.ht>>=
+\begin{patch}{HTXLinkPage5xPatch2}
+\begin{paste}{HTXLinkPage5xPaste2A}{HTXLinkPage5xPatch2A}
+\pastebutton{HTXLinkPage5xPaste2A}{Source}
+\newline
+\unixlink{Some file}
+{cat\ \env{AXIOM}/doc/hypertex/pages/HTXplay.ht}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage5xPatch2A patch}
+\label{HTXLinkPage5xPatch2A}
+\index{patch!HTXLinkPage5xPatch2A!htxlinkpage5.ht}
+\index{htxlinkpage5.ht!patch!HTXLinkPage5xPatch2A}
+\index{HTXLinkPage5xPatch2A!htxlinkpage5.ht!patch}
+<<htxlinkpage5.ht>>=
+\begin{patch}{HTXLinkPage5xPatch2A}
+\begin{paste}{HTXLinkPage5xPaste2B}{HTXLinkPage5xPatch2}
+\pastebutton{HTXLinkPage5xPaste2B}{Interpret}
+\newline
+{\tt \\unixlink\{Some file\}} \newline
+{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
+\end{paste}
+\end{patch}
+
+@
+\section{htxlinkpage6.ht}
+\subsection{How to use your pages with Hyperdoc}
+\label{HTXLinkPage6}
+\index{pages!HTXLinkPage6!htxlinkpage6.ht}
+\index{htxlinkpage6.ht!pages!HTXLinkPage6}
+\index{HTXLinkPage6!htxlinkpage6.ht!pages}
+<<htxlinkpage6.ht>>=
+\begin{page}{HTXLinkPage6}{How to use your pages with Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\begin{scroll}
+
+Let us say that you have written a few \HyperName{}
+pages and you would like to incorporate them in the system.
+Here is what you should do.
+
+Put all your files in some directory and make sure that
+they all have the {\bf .ht} extension.
+
+You will need a way of "hooking" into a system--defined
+\HyperName{} page. The proper way to do this is to use
+the {\tt \\localinfo} macro. The Axiom system
+\HyperName{} page database includes, as it should,
+a {\tt RootPage}. This is the page that first comes up
+when you start \HyperName{}. This page contains
+a line like this.
+\beginImportant
+\newline
+{\tt \\localinfo}
+\endImportant
+
+This macro is defined in
+\centerline{ {\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
+to be (see \downlink{Macros}{HTXAdvPage3} to learn how to define macros):
+\beginImportant
+\newline
+{\tt \\newcommand\{\\localinfo\}\{\}}
+\endImportant
+which is an empty definition (the second argument of {\tt \\newcommand}).
+The idea then is that you {\it override} this definition of the macro
+with your own.
+To do that, include a definition like the following in one (possibly the
+one that contains your top--level page) of your files. You can
+put this definition in its own file if you like.
+\beginImportant
+\newline
+{\tt \\newcommand\{\\localinfo\}\{\\menuwindowlink\{{\it active text}\}} \newline
+{\tt \{{\it page name}\} \\tab\{16\}{\it short description}\}}
+\endImportant
+
+If you have a look at the initial \HyperName{} page, you will
+probably be able to decipher what this does. The macro
+{\tt \\menuwindowlink} is defined (again in {\bf util.ht})
+and is responsible for putting the little square to the left of the
+active area.
+Specify a word or two for {\it active text}. That will become the
+trigger of the {\tt \\link}. Specify the page name of your top--level page
+in {\it page name}. Finally, you can give a comment about the topic
+under {\it short description}. That will appear to the right of the
+{\it active text}.
+
+The next thing you need to do is to create a {\it local database}
+for your files. You will use the {\bf \env{AXIOM}/bin/htadd} program.
+This program will create an {\bf ht.db} file that summarises your
+definitions and acts as an index. Let us present an example
+of its use. Suppose you have two files {\bf user1.ht} and {\bf user2.ht}
+in directory {\bf /u/sugar/\HyperName{}}. You should create the {\bf ht.db}
+in that same directory. To create the {\bf ht.db} file you issue to
+the unix shell:
+\beginImportant
+\newline
+{\tt htadd -f /u/sugar/\HyperName{} /u/sugar/\HyperName{}/user1.ht /u/sugar/\HyperName{}/user2.ht}
+\centerline{or ,if you are already in /u/sugar/\HyperName{}}
+{\tt htadd -l ./user1.ht ./user2.ht}
+\endImportant
+
+
+The options and conventions for {\bf htadd} will be explained below.
+To start \HyperName{} with your own pages, you now need to tell
+it where to search for {\bf ht.db} files and \HyperName{} {\bf .ht}
+files. To do this, define the shell environment variable
+{\bf HTPATH}. The value should be a colon {\tt ':'} separated
+list of directory full pathnames.
+The order of the directories is respected with earlier entries overriding
+later ones. Since we want all the Axiom pages but need to override the
+{\tt \\localinfo} macro, we should use the value
+\centerline{{\bf /u/sugar/\HyperName{}:\env{AXIOM}/doc/hypertex/pages}}
+The way that you define environment variables depends on the shell
+you are using. In the {\bf /bin/csh}, it would be
+\newline
+{\bf setenv HTPATH /u/sugar/\HyperName{}:\env{AXIOM}{}/doc{}/hypertex{}/pages}
+
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage6xPaste1}{HTXLinkPage6xPatch1}
+\pastebutton{HTXLinkPage6xPaste1}{Options for {\bf htadd}}
+\newline
+\end{paste}
+\endImportant
+
+
+\beginImportant
+\begin{paste}{HTXLinkPage6xPaste2}{HTXLinkPage6xPatch2}
+\pastebutton{HTXLinkPage6xPaste2}{Where does \HyperName{} look for files}
+\newline
+\end{paste}
+\endImportant
+
+
+
+\end{scroll}
+\beginmenu
+\menulink{Back to Actions menu}{HTXLinkTopPage}
+\endmenu
+
+\end{page}
+
+@
+\subsection{HTXLinkPage6xPatch1 patch}
+\label{HTXLinkPage6xPatch1}
+\index{patch!HTXLinkPage6xPatch1!htxlinkpage6.ht}
+\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch1}
+\index{HTXLinkPage6xPatch1!htxlinkpage6.ht!patch}
+<<htxlinkpage6.ht>>=
+\begin{patch}{HTXLinkPage6xPatch1}
+\begin{paste}{HTXLinkPage6xPaste1A}{HTXLinkPage6xPatch1A}
+\pastebutton{HTXLinkPage6xPaste1A}{Hide}
+\newline
+Name:
+
+{\tt htadd - create or modify a \HyperName{} database}
+\vspace{}
+\newline
+Syntax:
+
+{\tt htadd [ -l | -s | -f\ }{\it path}{\tt ] [ -d | -n ]\ }{\it filename ...}
+\vspace{}
+\newline
+Options:\indentrel{4}\newline
+{\tt -l}\tab{8}\indentrel{8}
+build {\bf ht.db} database in current working directory.
+This is the default behaviour if no {\tt -l}, {\tt -s} or {\tt -f}
+is specified.
+
+\indentrel{-8}\newline
+{\tt -s}\tab{8}\indentrel{8}
+build {\bf ht.db} database in {\it system} directory. The
+system directory is built as follows. If the {\tt AXIOM}
+variable is defined, the {\bf \$AXIOM/doc/hypertex/pages} directory
+is used. If {\tt AXIOM} is not defined, the
+{\bf /usr/local/axiom/doc/hypertex/pages} directory is used.
+
+
+\indentrel{-8}\newline
+{\tt -f\ }{\it path}\newline\tab{8}\indentrel{8}
+build {\bf ht.db} database in specified {\it path}.
+
+\indentrel{-8}\newline
+{\tt -d}\tab{8}\indentrel{8}
+delete the entries in the specified files from {\bf ht.db}.
+
+\indentrel{-8}\newline
+{\tt -n}\tab{8}\indentrel{8}
+delete {\bf ht.db} and create a new one using only the files
+specified.
+
+If none of {\tt -n} and {\tt -d} is specified, the {\bf ht.db}
+is updated with the entries in the file specified.
+
+
+\indentrel{-8}
+\indentrel{-4}
+\vspace{}\newline
+Filename interpretation :
+\indentrel{12}\newline
+A full pathname (i.e. anything that has a {\tt '/'} in it)
+will be taken do be a completely specified file.
+Otherwise, the following interpretation will occur:
+If the {\tt HTPATH} variable is defined, the directories
+specified in it will be tried in order. If {\tt HTPATH}
+is not defined, then, if {\tt AXIOM} is defined, the
+{\bf \$AXIOM/doc/hypertex/pages} will be tried, else
+the file will be deemed missing and {\bf htadd} will fail.
+\indentrel{-12}
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage6xPatch1A patch}
+\label{HTXLinkPage6xPatch1A}
+\index{patch!HTXLinkPage6xPatch1A!htxlinkpage6.ht}
+\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch1A}
+\index{HTXLinkPage6xPatch1A!htxlinkpage6.ht!patch}
+<<htxlinkpage6.ht>>=
+\begin{patch}{HTXLinkPage6xPatch1A}
+\begin{paste}{HTXLinkPage6xPaste1B}{HTXLinkPage6xPatch1}
+\pastebutton{HTXLinkPage6xPaste1B}{Options for {\bf htadd}}
+\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage6xPatch2 patch}
+\label{HTXLinkPage6xPatch2}
+\index{patch!HTXLinkPage6xPatch2!htxlinkpage6.ht}
+\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch2}
+\index{HTXLinkPage6xPatch2!htxlinkpage6.ht!patch}
+<<htxlinkpage6.ht>>=
+\begin{patch}{HTXLinkPage6xPatch2}
+\begin{paste}{HTXLinkPage6xPaste2A}{HTXLinkPage6xPatch2A}
+\pastebutton{HTXLinkPage6xPaste2A}{Hide}
+\indentrel{12}\newline
+The \HyperName{} program is
+\centerline{{\bf \env{AXIOM}/lib/hypertex}}
+If {\tt AXIOM} is defined and {\tt HTPATH} is not
+(this is the case when Axiom starts \HyperName{})
+\HyperName{} will look in
+\centerline{{\bf \env{AXIOM}/doc/hypertex/pages}}
+for the {\bf ht.db} file and all \HyperName{} pages.
+If {\tt HTPATH} is defined, it is assumed that
+it alone points to the directories to be searched
+(the above default will NOT be searched unless
+explicitly specified in {\tt HTPATH}).
+For each directory in {\tt HTPATH}, the {\bf ht.db}
+file, if there, will be read.
+Each file listed in {\bf ht.db} will
+then be searched for in the complete sequence
+of directories in {\tt HTPATH}. Note that
+the {\bf ht.db} does not keep full pathnames
+ of files.
+If a {\it page}, {\it macro} or {\it patch}
+(specified in some {\bf ht.db}) happens
+to be (in a file) in more than one of the directories
+specified in {\tt HTPATH}, \HyperName{}
+will print a warning and explain which version
+in which file is ignored. Generally, earlier
+directories in {\tt HTPATH} are preferred over later
+ones.
+\indentrel{-12}\newline
+\end{paste}
+\end{patch}
+
+@
+\subsection{HTXLinkPage6xPatch2A patch}
+\label{HTXLinkPage6xPatch2A}
+\index{patch!HTXLinkPage6xPatch2A!htxlinkpage6.ht}
+\index{htxlinkpage6.ht!patch!HTXLinkPage6xPatch2A}
+\index{HTXLinkPage6xPatch2A!htxlinkpage6.ht!patch}
+<<htxlinkpage6.ht>>=
+\begin{patch}{HTXLinkPage6xPatch2A}
+\begin{paste}{HTXLinkPage6xPaste2B}{HTXLinkPage6xPatch2}
+\pastebutton{HTXLinkPage6xPaste2B}{Where does \HyperName{} look for files}}
+\newline
+\end{paste}
+\end{patch}
+
+@
+\section{htxlinktoppage.ht}
+\subsection{Actions in Hyperdoc}
+\label{HTXLinkTopPage}
+\begin{itemize}
+\item HTXLinkPage1 \ref{HTXLinkPage1} on page~\pageref{HTXLinkPage1}
+\item HTXLinkPage2 \ref{HTXLinkPage2} on page~\pageref{HTXLinkPage2}
+\item HTXLinkPage3 \ref{HTXLinkPage3} on page~\pageref{HTXLinkPage3}
+\item HTXLinkPage4 \ref{HTXLinkPage4} on page~\pageref{HTXLinkPage4}
+\item HTXLinkPage5 \ref{HTXLinkPage5} on page~\pageref{HTXLinkPage5}
+\item HTXLinkPage6 \ref{HTXLinkPage6} on page~\pageref{HTXLinkPage6}
+\end{itemize}
+\index{pages!HTXLinkTopPage!htxlinktoppage.ht}
+\index{htxlinktoppage.ht!pages!HTXLinkTopPage}
+\index{HTXLinkTopPage!htxlinktoppage.ht!pages}
+<<htxlinktoppage.ht>>=
+\begin{page}{HTXLinkTopPage}{Actions in Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+\HyperName{} offers various types of hypertext links.
+You can learn about these facilities by clicking on the topics below.
+\begin{scroll}
+\beginmenu
+\menudownlink{Linking to a named page}{HTXLinkPage1}
+\menudownlink{Standard pages}{HTXLinkPage2}
+\menudownlink{Active Axiom commands}{HTXLinkPage3}
+\menudownlink{Linking to Lisp}{HTXLinkPage4}
+\menudownlink{Linking to Unix}{HTXLinkPage5}
+\menudownlink{How to use your pages with \HyperName{}}{HTXLinkPage6}
+\endmenu
+\end{scroll}
+\end{page}
+
+@
+\section{htxtoppage.ht}
+\subsection{Extending Hyperdoc}
+\label{HTXTopPage}
+\begin{itemize}
+\item HTXIntroTopPage \ref{HTXIntroTopPage} on page~\pageref{HTXIntroTopPage}
+\item HTXFormatTopPage \ref{HTXFormatTopPage} on 
+page~\pageref{HTXFormatTopPage}
+\item HTXLinkTopPage \ref{HTXLinkTopPage} on page~\pageref{HTXLinkTopPage}
+\item HTXAdvTopPage \ref{HTXAdvTopPage} on page~\pageref{HTXAdvTopPage}
+\item HTXTryPage \ref{HTXTryPage} on page~\pageref{HTXTryPage}
+\end{itemize}
+\index{pages!HTXTopPage!htxtoppage.ht}
+\index{htxtoppage.ht!pages!HTXTopPage}
+\index{HTXTopPage!htxtoppage.ht!pages}
+<<htxtoppage.ht>>=
+\begin{page}{HTXTopPage}{Extending Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+This is a guide to extending \HyperName{}. You can learn
+how to write your own \HyperName{} pages and link them to the
+\HyperName{} page database that Axiom uses.
+\begin{scroll}
+\beginmenu
+\menumemolink{Introduction}{HTXIntroTopPage} \tab{20} An easy start.
+\menumemolink{Formatting}{HTXFormatTopPage} \tab{20} Learn how to format text.
+\menumemolink{Actions}{HTXLinkTopPage} \tab{20} Learn how to define actions.
+\menumemolink{Advanced features}{HTXAdvTopPage} \tab{20} More effects.
+\menuwindowlink{Try it!}{HTXTryPage} \tab{20} Try out what you learn.
+\endmenu
+\end{scroll}
+\end{page}
+
+@
+\section{htxtrypage.ht}
+\subsection{Try out Hyperdoc}
+\label{HTXTryPage}
+\index{pages!HTXTryPage!htxtrypage.ht}
+\index{htxtrypage.ht!pages!HTXTryPage}
+\index{HTXTryPage!htxtrypage.ht!pages}
+<<htxtrypage.ht>>=
+\begin{page}{HTXTryPage}{Try out Hyperdoc}
+\centerline{\fbox{{\tt \thispage}}}\newline
+
+This page allows you to quickly experiment with \HyperName{}.
+It is a good idea to keep it handy as you learn about various commands.
+
+\beginscroll
+
+We are going to use here the \HyperName{} facilities that allow
+us to communicate with external programs and files. For more
+information see \downlink{later on}{HTXLinkPage5}.
+\beginmenu
+\item\menuitemstyle{
+In order to use the buttons at the bottom of this page, you must
+first specify a name for the file you are going to use to hold
+\HyperName{} commands. Edit the input area below to change the
+name of the file.}
+\item\menuitemstyle{
+If the file you specified does not yet exist, click on the
+{\bf Initialize} button below. This action will fill the file
+with the minimum of \HyperName{} commands necessary to define a page.}
+\item\menuitemstyle{
+If you want to edit the file, just click on the {\bf Edit} button.
+This action will pop up a window, and invoke the {\it vi}
+editor on the file. Alternatively, use an editor of your choice.}
+\item\menuitemstyle{
+Once you have finished making the changes to the file, update it and
+click on the {\bf Link} button. \HyperName{} will then read
+the file, interpret it as a new page, and display the page on
+this window. If you change the file and want to display it again,
+just get back to this page and click on {\bf Link} again. }
+\endmenu
+\endscroll
+\beginmenu
+{\it Filename: }{\inputstring{filename}{40}{\env{HOME}/HTXplay.ht}}
+\menuunixcommand{Initialize}{cp\space{1}\env{AXIOM}/doc/hypertex/pages/HTXplay.ht \stringvalue{filename}} \tab{20} Get a fresh copy from the system.
+\menuunixcommand{Edit}{xterm -T "\stringvalue{filename}" -e vi \stringvalue{filename}} \tab{20} Edit the file.
+\menuunixwindow{Link}{cat \space{1}\stringvalue{filename}} \tab{20} Link to the page defined in the file.
+\endmenu
+{\it Important : The file must contain
+one and only one page definition and must not contain any macro or patch
+definitions.}
+\end{page}
+
+@
+\chapter{NAG Library Routines}
 \section{nagaux.ht}
 \subsection{NAG On-line Documentation}
 \label{manpageXXonline}
@@ -44467,8 +82172,9 @@ D02KEF(3NAG)                 D02KEF                  D02KEF(3NAG)
 \endscroll
 \end{page}
 
+@
 \section{nage.ht}
-\subsection{ Interpolation}
+\subsection{Interpolation}
 \label{manpageXXe01}
 \index{pages!manpageXXe01!nage.ht}
 \index{nage.ht!pages!manpageXXe01}
@@ -53411,8 +91117,8 @@ D02KEF(3NAG)                 D02KEF                  D02KEF(3NAG)
 \end{page}
 
 @
-\subsection{}
-\label{manpageXXe04 Minimizing or Maximizing a Function}
+\subsection{Minimizing or Maximizing a Function}
+\label{manpageXXe04}
 \index{pages!manpageXXe04!nage.ht}
 \index{nage.ht!pages!manpageXXe04}
 \index{manpageXXe04!nage.ht!pages}
@@ -61207,8 +98913,9 @@ D02KEF(3NAG)                 D02KEF                  D02KEF(3NAG)
 \endscroll
 \end{page}
 
+@
 \section{nagf.ht}
-\subsection{ Linear Algebra}
+\subsection{Linear Algebra}
 \label{manpageXXf}
 \index{pages!manpageXXf!nagf.ht}
 \index{nagf.ht!pages!manpageXXf}
@@ -84492,39462 +122199,1890 @@ D02KEF(3NAG)                 D02KEF                  D02KEF(3NAG)
 \end{page}
 
 @
-\section{newuser.ht}
-\subsection{No More Help :-(}
-\label{NoMoreHelpPage}
-\index{pages!NoMoreHelpPage!newuser.ht}
-\index{newuser.ht!pages!NoMoreHelpPage}
-\index{NoMoreHelpPage!newuser.ht!pages}
-<<newuser.ht>>=
-\begin{page}{NoMoreHelpPage}{No More Help :-(}
-\beginscroll\vspace{2}
-\centerline{No additional or specific help information is available.}
-\centerline{Click on \ \ExitButton{QuitPage} \  to get back.}
-\endscroll
-\end{page}
-
-@
-\subsection{You Tried It!}
-\label{YouTriedIt}
-\index{pages!YouTriedIt!newuser.ht}
-\index{newuser.ht!pages!YouTriedIt}
-\index{YouTriedIt!newuser.ht!pages}
-<<newuser.ht>>=
-\begin{page}{YouTriedIt}{You Tried It!}
-\beginscroll
-\upbutton{Click here}{UpPage} to get back.
-\endscroll
-\end{page}
-
-% Getting Started
-
-%% % Now using text from book
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{GettingStarted}{Getting Started}
-%%  % --------------------------------------------------------------------
-%%  \beginscroll
-%%  \par
-%%  \HyperName{} is the gateway to Axiom.
-%%  It's both an on-line tutorial and an on-line reference.  It also enables you
-%%  to use Axiom simply by using the mouse and filling in templates.
-%%  \HyperName{} is available to you if you are running Axiom under the
-%%  X Window System.
-%%  \par
-%%  Pages usually have active areas, marked in \downlink{this
-%%  font.}{YouTriedIt}
-%%  As you move the mouse pointer to an active area, the pointer changes from a
-%%  filled dot to an open circle.
-%%  The active areas are usually linked to other pages.
-%%  When you click on an active area, you move to the linked page.
-%%  Try clicking \downlink{here}{YouTriedIt} now.
-%%  \par
-%%  Now we suggest that you learn more about other features of
-%%  \HyperName{} by clicking on an active area in the menu below:
-%%  %
-%%  \beginmenu
-%%  \menumemolink{Headings}{ugHyperHeadingsPage}\tab{15}How to use the headings at the top of the page
-%%  \menulink{Scroll Bars}{ugHyperScrollPage}\tab{15}All about {\it scroll bars} on \HyperName{} pages
-%%  \menulink{Input Areas}{ugHyperInputPage}\tab{15}All about {\it input areas} in \HyperName{}
-%%  \menulink{Buttons}{ugHyperButtonsPage}\tab{15}Learn about {\it radio buttons} and {\it toggles}
-%%  \menulink{Search Strings}{SearchStrings}\tab{15}Learn about {\it search strings} in \HyperName{}
-%%  \menulink{Example Pages}{ugHyperExamplePage}\tab{15}How to view or run {\it examples} on \HyperName{} pages
-%%  \menulink{Settings}{ugHyperResourcesPage}\tab{15}X Window Resources for \HyperName{}
-%%  \endmenu
-%%  \endscroll
-%%  \end{page}
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{ExamplesIntro}{Axiom Examples}
-%%  % --------------------------------------------------------------------
-%%  \pp
-%%  \beginscroll
-%%  Many pages have Axiom examples.
-%%  Here are two:
-%%  \spadpaste{a:= x**2 + 1 \bound{a}} \newline
-%%  \spadpaste{(a - 2)**2 \free{a}} \newline
-%%  Each example has an active ``button'' along the left margin.
-%%  When you click on this button the output for the
-%%  command is ``pasted-in.''
-%%  Try it!
-%%  Click again on the button and you'll see
-%%  that the pasted-in output disappears. Got the idea?
-%%  \par
-%%  Maybe you would like to run an example?
-%%  To do so, just click on any part of it!
-%%  When you do, the example line is copied into a new interactive Axiom
-%%  buffer for this \HyperName{} page.
-%%  \par
-%%  Sometimes one example line cannot be run before you run an earlier one.
-%%  Don't worry---this is all automatic!
-%%  For instance, the second example line above refers to \spad{a} which is
-%%  assigned in the first example line.
-%%  What happens if you first click on the second example line?
-%%  Axiom first issues the first line (to assign \spad{a}), then the
-%%  second (to do the computation using \spad{a}).
-%%  \par
-%%  The new interactive Axiom buffer will disappear when you leave
-%%  \HyperName{}.
-%%  If you want to get rid of it beforehand,
-%%  use the ``Cancel'' button of the X window manager.
-%%  \endscroll
-%%  %\autobutt{HelpHelp}
-%%  \end{page}
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{RadioButtons}{Radio Buttons and Toggles}
-%%  % --------------------------------------------------------------------
-%%  \beginscroll
-%%  \radioboxes{sample}{\htbmfile{pick}}{\htbmfile{unpick}}
-%%  \par
-%%  Radio buttons are a group of round buttons like those on car radios: you can
-%%  select only one.
-%%  Here are three radio buttons:
-%%  \centerline{
-%%  {\em\radiobox[1]{rone}{sample}\space{}The first one}\space{3}
-%%  {\em\radiobox[0]{rtwo}{sample}\space{}The second one}\space{3}
-%%  {\em\radiobox[0]{rthree}{sample}\space{}The third one}
-%%  }
-%%  \newline
-%%  The selected button has an {\it X} in the box.
-%%  The others which are not selected are open, i.e. they have no {\it X}.
-%%  To change the selection, move the cursor with the mouse to an
-%%  alternate radio button and click. Try it now.
-%%  %\vspace{1}\centerline{To see another kind of button click on:}
-%%  %\centerline{\box{\downlink{Next Page}{ToggleButton}}}
-%%  %\endscroll
-%%  %\autobuttons\end{page}
-%%  %\begin{page}{ToggleButton}{Toggles}
-%%  %\beginscroll
-%%  \vspace{1}
-%%  \par
-%%  A toggle is a square button you can either select (it has an {\it X}) or
-%%  not (it has no {\it X}).
-%%  Unlike radio buttons, you can set a group of them any way you like.
-%%  Here are three:
-%%  \centerline{
-%%  {\em\inputbox[1]{one}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The first one}
-%%  \space{3}
-%%  {\em\inputbox[0]{two}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The second one}
-%%  \space{3}
-%%  {\em\inputbox[1]{three}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}The third one}
-%%  }
-%%  \newline
-%%  To change the selections, move the cursor with the mouse
-%%  to a toggle and click.
-%%  \endscroll
-%%  \autobuttons\end{page}
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{InputAreas}{Input Areas}
-%%  % --------------------------------------------------------------------
-%%  \beginscroll
-%%  \par Input areas are boxes that you can fill in.
-%%  Here is one:
-%%  \centerline{\inputstring{one}{40}{some text}}
-%%  \newline As you can see, the input area has some initial text {\it some text}
-%%  followed by an underscore (the character {\it _}).
-%%  First, make sure that the mouse cursor is
-%%  on this page. Now type some
-%%  characters at the keyboard.
-%%  The characters that you type are now inserted in front of the underscore.
-%%  You may type as many characters as you like.
-%%  The input area will grow to accomodate as many characters as you type.
-%%  Use the {\it Backspace} key to erase
-%%  characters to the left.
-%%  Use the keys {\it Insert}, {\it Delete}, {\it Home} and {\it End}
-%%  to modify what you type.
-%%  Also try right- and left-arrow keys immediately to the right of the
-%%  standard keyboard.
-%%  \vspace{1}\newline\centerline{\box{\downlink{Next Page}{MultipleugHyperInputPage}}}
-%%  \endscroll
-%%  \end{page}
-
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{MultipleInputAreas}{Multiple Input Areas}
-%%  % --------------------------------------------------------------------
-%%  \beginscroll
-%%  Here is a large input area like the one on the last page:
-%%  \centerline{\inputstring{one}{40}{one}}
-%%  \newline
-%%  and here are two smaller ones:
-%%  \centerline{\inputstring{two}{15}{two}\space{8}\inputstring{three}{7}{three}}
-%%  Move your mouse cursor to somewhere within this page.
-%%  Note that only the first input area has an underscore cursor.
-%%  This means that when you type characters at your keyboard, they
-%%  will go into this first input area. Try it!
-%%  \par
-%%  To type information into another input area,
-%%  use the {\it Enter} or {\it Tab} key to move from one input area to another.
-%%  To move in the reverse order, use {\it Shift + Tab}.
-%%  \par
-%%  You can also move from one input area to another using your mouse.
-%%  Notice that each input area is active. Click on one of the areas.
-%%  As you can see, the underscore cursor now moves to that window.
-%%  \endscroll
-%%  \end{page}
-
-%%  % Now using text from the book
-%%
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{ScrollBars}{Using Scroll Bars}
-%%  % --------------------------------------------------------------------
-%%  When all of the text does not fit within a window, part of the window
-%%  is like a ``looking glass'' you can
-%%  move up and down over the length of the text.
-%%  The text seen by the looking glass has a {\it scroll bar}
-%%  down its right side.
-%%  The {\it scroll bar} allows you to move this looking glass.
-%%  It also tells you the position of the looking glass
-%%  relative to the whole text.
-%%  \beginscroll
-%%  \par
-%%  The part of this \HyperName{} window beginning with this line has a
-%%  {\it scroll bar} along its right side.
-%%  Move the cursor with the mouse to the scroll bar.
-%%  Now move the cursor to the `down-arrow' at the
-%%  bottom of the scroll bar and click. See that the looking glass moves
-%%  down one line. Do it again and again. Each time you click, the
-%%  looking glass moves down one line.
-%%  \par
-%%  Now move the mouse to the 'up-arrow' at the top of the scroll
-%%  bar and click. The looking glass moves up one line each time you click.
-%%  \par
-%%  Next move the mouse to any position along the middle of the
-%%  scroll bar and click.
-%%  This will attempt to move the top of the looking glass to the point where you
-%%  click.
-%%  However, you cannot make the looking glass to go off the bottom edge.
-%%  For this example page, the looking glass region is approximately
-%%  half of the whole region. So the lowest point you can
-%%  set top of the looking glass is halfway down.
-%%  Get the idea?
-%%  \par
-%%  Want to use the keyboard instead of the mouse?
-%%  Then use the {\it Page Up} and {\it Page Down} keys on your
-%%  keyboard. They move the visible part of the region up and down
-%%  one page each time you type them. Try them!
-%%  \par
-%%  If a page does not have an input area, you can also use the {\it Home}
-%%  and up and down arrow keys to move the visible part of the region.
-%%  The {\it Home} key moves the region to the very top of the page.
-%%  The up and down arrow keys move the region up and down one line,
-%%  respectively.
-%%  (If a page does have an input area, these three keys operate on the
-%%  input area.)
-%%  \endscroll
-%%  \autobuttons\end{page}
-
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{StartingButtonHelp}{Know These Buttons}
-%%  % --------------------------------------------------------------------
-%%  \beginscroll
-%%  Most pages have a standard set of buttons at the top of the page.
-%%  \newline
-%%  This is what they mean:
-%%  \par \ExitBitmap   \space{} {\it Exit} from \HyperName{}
-%%  \par \HelpBitmap   \space{} Get {\it Help}
-%%  \par \ReturnBitmap \space{} {\it Jump back} to main page
-%%  \par \UpBitmap     \space{} {\it Go back} one page
-%%  \newline
-%%  \pp
-%%  The {\it Help} button shows you pages that can give you additional
-%%  information.  You can always
-%%  click on {\it Help} while you're
-%%  exploring.
-%%  You can always make forays into new topics.
-%%  \HyperName{} remembers where you came from.
-%%  Don't worry about how to get back. Just click on either the ``up arrow''
-%%  or the ``HOME'' button. Now click on the ``up arrow'' to go back one page.
-%%  \endscroll
-%%  \autobutt{DummyHelp}\end{page}
-
-%%  % --------------------------------------------------------------------
-%%  \begin{page}{StartingMenuHelp}{Menus}
-%%  % --------------------------------------------------------------------
-%%  \pp
-%%  \beginscroll
-%%  A `menu' is a list of topics. Each topic has at least one active area.
-%%  Clicking on the active area marked {\it Menus} is how you got here.
-%%  \horizontalline
-%%  Here is another menu to practice on:
-%%  \newline
-%%  \beginmenu
-%%  %\menulink{Riddle}{RiddlePage}
-%%  %    A classic riddle.
-%%  %\menulink{\HyperName{}}{WhatIsHyperName}
-%%  %    What is \HyperName{}
-%%  \menulink{Buttons}{ButtonHelp}
-%%      Buttons in \HyperName{}.
-%%  \endmenu
-%%  \endscroll
-%%  \autobuttons\end{page}
-
-
-@
-\section{none.ht}
-<<none.ht>>=
-\newcommand{\NoneXmpTitle}{None}
-\newcommand{\NoneXmpNumber}{9.55}
-
-@
-\subsection{None}
-\label{NoneXmpPage}
-\index{pages!NoneXmpPage!none.ht}
-\index{none.ht!pages!NoneXmpPage}
-\index{NoneXmpPage!none.ht!pages}
-<<none.ht>>=
-\begin{page}{NoneXmpPage}{None}
-\beginscroll
-The \spadtype{None} domain is not very useful for interactive
-work but it is provided nevertheless for completeness of the
-Axiom type system.
-\xtc{
-Probably the only place you will ever see it is if you enter an
-empty list with no type information.
-}{
-\spadpaste{[]}
-}
-\xtc{
-Such an empty list can be converted into an empty list
-of any other type.
-}{
-\spadpaste{[] :: List Float}
-}
-\xtc{
-If you wish to produce an empty list of a particular
-type directly, such as \spadtype{List NonNegativeInteger}, do it this way.
-}{
-\spadpaste{[]\$List(NonNegativeInteger)}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{numbers.ht}
-\subsection{Axiom Number Types}
-\label{NumberPage}
-\begin{itemize}
-\item IntegerPage \ref{IntegerPage} on 
-page~\pageref{IntegerPage}
-\item FractionPage \ref{FractionPage} on 
-page~\pageref{FractionPage}
-\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on 
-page~\pageref{DoubleFloatXmpPage}
-\item FloatXmpPage \ref{FloatXmpPage} on 
-page~\pageref{FloatXmpPage}
-\item ComplexXmpPage \ref{ComplexXmpPage} on 
-page~\pageref{ComplexXmpPage}
-\item ugProblemFinitePage \ref{ugProblemFinitePage} on 
-page~\pageref{ugProblemFinitePage}
-\item ugProblemNumericPage \ref{ugProblemNumericPage} on 
-page~\pageref{ugProblemNumericPage}
-\item CardinalNumberXmpPage \ref{CardinalNumberXmpPage} on 
-page~\pageref{CardinalNumberXmpPage}
-\item SingleIntegerXmpPage \ref{SingleIntegerXmpPage} on 
-page~\pageref{SingleIntegerXmpPage}
-\item RomanNumeralXmpPage \ref{RomanNumeralXmpPage} on 
-page~\pageref{RomanNumeralXmpPage}
-\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on 
-page~\pageref{ContinuedFractionXmpPage}
-\item PartialFractionXmpPage \ref{PartialFractionXmpPage} on 
-page~\pageref{PartialFractionXmpPage}
-\item QuaternionXmpPage \ref{QuaternionXmpPage} on 
-page~\pageref{QuaternionXmpPage}
-\item OctonionXmpPage \ref{OctonionXmpPage} on 
-page~\pageref{OctonionXmpPage}
-\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on 
-page~\pageref{DecimalExpansionXmpPage}
-\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on 
-page~\pageref{BinaryExpansionXmpPage}
-\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on 
-page~\pageref{HexadecimalExpansionXmpPage}
-\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on 
-page~\pageref{RadixExpansionXmpPage}
-\item PAdicPage \ref{PAdicPage} on 
-page~\pageref{PAdicPage}
-\end{itemize}
-\index{pages!NumberPage!numbers.ht}
-\index{numbers.ht!pages!NumberPage}
-\index{NumberPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{NumberPage}{Axiom Number Types}
-\beginscroll
-The following types of numbers are among those available in Axiom.
-\beginmenu
-
-\menulink{Integers}{IntegerPage}\tab{16}
-Arithmetic with arbitrarily large integers.
-
-\menulink{Fractions}{FractionPage} \tab{16}
-Rational numbers and general fractions.
-
-\menulink{Machine Floats}{DoubleFloatXmpPage} \tab{16}
-Fixed precision machine floating-point.
-
-\menulink{Real Numbers}{FloatXmpPage} \tab{16}
-Arbitrary precision decimal arithmetic.
-
-\menulink{Complex Numbers}{ComplexXmpPage} \tab{16}
-Complex numbers in general.
-
-\menulink{Finite Fields}{ugProblemFinitePage} \tab{16}
-Arithmetic in characteristic \spad{p}.
-\endmenu
-\horizontalline\newline
-Additional Topics
-\beginmenu
-
-\menulink{Numeric Functions}{ugProblemNumericPage}
-\menulink{Cardinal Numbers}{CardinalNumberXmpPage}
-\menulink{Machine-sized Integers}{SingleIntegerXmpPage}
-\menulink{Roman Numerals}{RomanNumeralXmpPage}
-\menulink{Continued Fractions}{ContinuedFractionXmpPage}
-\menulink{Partial Fractions}{PartialFractionXmpPage}
-\menulink{Quaternions}{QuaternionXmpPage}
-\menulink{Octonions}{OctonionXmpPage}
-\menulink{Repeating Decimals}{DecimalExpansionXmpPage}
-\menulink{Repeating Binary Expansions}{BinaryExpansionXmpPage}
-\menulink{Repeating Hexadecimal Expansions}{HexadecimalExpansionXmpPage}
-\menulink{Expansions in other Bases}{RadixExpansionXmpPage}
-
-%\menulink{p-adic Numbers}{PAdicPage}
-%\menulink{Algebraic Numbers}{AlgebraicNumberPage}
-\endmenu
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Fraction}
-\label{FractionPage}
-\begin{itemize}
-\item RationalNumberPage \ref{RationalNumberPage} on
-page~pageref{RationalNumberPage}
-\item FractionXmpPage \ref{FractionXmpPage} on
-page~pageref{FractionXmpPage}
-\end{itemize}
-\index{pages!FractionPage!numbers.ht}
-\index{numbers.ht!pages!FractionPage}
-\index{FractionPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{FractionPage}{Fractions}
-
-\beginscroll
-Axiom handles fractions in many different contexts
-and will automatically simplify fractions whenever possible.
-Here are some examples:
-\spadpaste{1/4 - 1/5}
-\spadpaste{f := (x**2 + 1)/(x - 1) \bound{f}}
-\spadpaste{g := (x**2 - 3*x + 2)/(x + 2) \bound{g}}
-\spadpaste{f * g \free{f g}}
-\endscroll
-Additional Topics:
-\beginmenu
-
-\menulink{Rational Numbers}{RationalNumberPage} \tab{18}
-Quotients of integers
-
-\menulink{Quotient Fields}{FractionXmpPage}  \tab{18}
-Quotients over an arbitrary integral domain
-
-%\menulink{Localizations}{LocalizationPage}  \tab{18}
-%Fractions in the most general setting
-\endmenu
-\autobuttons
-\end{page}
-
-@
-\subsection{Rational Number}
-\label{RationalNumberPage}
-\index{pages!RationalNumberPage!numbers.ht}
-\index{numbers.ht!pages!RationalNumberPage}
-\index{RationalNumberPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{RationalNumberPage}{Rational Numbers}
-\beginscroll
-Like integers, rational numbers can be arbitrarily large.
-For example:
-\spadpaste{61657 ** 10 / 999983 ** 12}
-Rational numbers will not be converted to decimals unless you explicitly
-ask Axiom to do so.
-To convert a rational number to a decimal, use the function
-\spadfun{numeric}.
-Here's an example:
-\spadpaste{x := 104348/33215 \bound{x}}
-\spadpaste{numeric x \free{x}}
-You can find the numerator and denominator of rational numbers using
-the functions \spadfun{numer} and \spadfun{denom}, respectively.
-\spadpaste{numer(x) \free{x}}
-\spadpaste{denom(x) \free{x}}
-To factor the numerator and denominator of a fraction, use the following
-command:
-\spadpaste{factor(numer x) / factor(denom x) \free{x}}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Integers}
-\label{IntegerPage}
-\begin{itemize}
-\item IntegerXmpPage \ref{IntegerXmpPage} on
-page~pageref{IntegerXmpPage}
-\item ugxIntegerPrimesPage \ref{ugxIntegerPrimesPage} on
-page~pageref{ugxIntegerPrimesPage}
-\item IntegerNumberTheoryFunctionsXmpPage 
-\ref{IntegerNumberTheoryFunctionsXmpPage} on
-page~pageref{IntegerNumberTheoryFunctionsXmpPage}
-\item IntegerExamplePage \ref{IntegerExamplePage} on
-page~pageref{IntegerExamplePage}
-\item IntegerProblemPage \ref{IntegerProblemPage} on
-page~pageref{IntegerProblemPage}
-\end{itemize}
-\index{pages!IntegerPage!numbers.ht}
-\index{numbers.ht!pages!IntegerPage}
-\index{IntegerPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerPage}{Integers}
-\beginscroll
-In Axiom, integers can be as large as you like.
-Try the following examples:
-\spadpaste{x := factorial(200) \bound{x}}
-\spadpaste{y := 2**90 - 1 \bound{y}}
-Of course, you can now do arithmetic as usual on these (very)
-large integers:
-\spadpaste{x + y \free{x y}}
-\spadpaste{x - y \free{x y}}
-\spadpaste{x * y \free{x y}}
-Axiom can factor integers, but numbers with small prime factors
-\spadpaste{factor(x) \free{x}}
-will factor more rapidly than numbers with large prime factors.
-\spadpaste{factor(y) \free{y}}
-\horizontalline
-Additional Topics
-\beginmenu
-
-\menulink{General Info}{IntegerXmpPage} \tab{16}
-General information and examples of integers.
-
-\menulink{Factorization}{ugxIntegerPrimesPage} \tab{16}
-Primes and factorization.
-
-\menulink{Functions}{IntegerNumberTheoryFunctionsXmpPage} \tab{16}
-Number theoretic functions.
-
-\menulink{Examples}{IntegerExamplePage} \tab{16}
-Examples from number theory.
-
-\menulink{Problems}{IntegerProblemPage} \tab{16}
-Problems from number theory.
-
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Integer Examples}
-\label{IntegerExamplePage}
-\begin{itemize}
-\item IntegerExampleProofPage \ref{IntegerExampleProofPage} on
-page~pageref{IntegerExampleProofPage}
-\end{itemize}
-\index{pages!IntegerExamplePage!numbers.ht}
-\index{numbers.ht!pages!IntegerExamplePage}
-\index{IntegerExamplePage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerExamplePage}{Integer Examples}
-\beginscroll
-One can show that if an integer of the form 2**k + 1 is prime, then
-k must be a power of 2.
-\downlink{Proof}{IntegerExampleProofPage}
-\par
-Pierre Fermat conjectured that every integer of the forn 2**(2**n) + 1
-is prime.
-Let's look for a counterexample.
-First define a function:
-\spadpaste{f: NNI -> INT \bound{f1}}
-\spadpaste{f(n) == 2**(2**n) + 1 \bound{f} \free{f1}}
-Now try commands like:
-\spadpaste{factor f(1) \free{f}}
-\spadpaste{factor f(2) \free{f}}
-until you find an integer of this form which is composite.
-You can also try the following command:
-\spadpaste{for n in 1..6 repeat output factor f(n) \free{f}}
-Obviously, Fermat didn't have access to Axiom!
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Integer Example Proof}
-\label{IntegerExampleProofPage}
-\index{pages!IntegerExampleProofPage!numbers.ht}
-\index{numbers.ht!pages!IntegerExampleProofPage}
-\index{IntegerExampleProofPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerExampleProofPage}{Integer Example Proof}
-\beginscroll
-Proposition.  If 2**k + 1 is prime, then k is a power of 2.
-\newline
-Proof.  Suppose that k = m * n with m > 1 odd.  Then
-%
-\centerline{2**n = -1 (mod (2**n + 1))}
-\centerline{2**(n * m) = (-1)**m = -1 (mod (2**n + 1))}
-\centerline{2**k + 1 = 0 (mod (2**n + 1))}
-%
-Therefore, 2**k + 1 is divisible by 2**n + 1.
-Now 1 < 2**n + 1 and since m > 1, 2**n + 1 < 2**k + 1.
-Hence, 2**k + 1 has a non-trivial factor.
-\newline
-QED
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Integer Problems}
-\label{IntegerProblemPage}
-\begin{itemize}
-\item IntegerProblemProofPage \ref{IntegerProblemProofPage} on
-page~pageref{IntegerProblemProofPage}
-\item IntegerProblemAnswerPage1 \ref{IntegerProblemAnswerPage1} on
-page~pageref{IntegerProblemAnswerPage1}
-\item IntegerProblemAnswerPage2 \ref{IntegerProblemAnswerPage2} on
-page~pageref{IntegerProblemAnswerPage2}
-\end{itemize}
-\index{pages!IntegerProblemPage!numbers.ht}
-\index{numbers.ht!pages!IntegerProblemPage}
-\index{IntegerProblemPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerProblemPage}{Integer Problems}
-\beginscroll
-One can show that if an integer of the form 2**k - 1 is prime, then
-k must be prime.
-\downlink{Proof}{IntegerProblemProofPage}
-\newline
-Problem \#1:  Find the smallest prime p such that \spad{2**p - 1} is not prime.
-\downlink{Answer}{IntegerProblemAnswerPage1}
-\newline
-Problem \#2:  Find the smallest positive integer \spad{n} such that
-\spad{n**2 - n + 41} isn't prime.
-\downlink{Answer}{IntegerProblemAnswerPage2}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Integer Problem Proof}
-\label{IntegerProblemProofPage}
-\index{pages!IntegerProblemProofPage!numbers.ht}
-\index{numbers.ht!pages!IntegerProblemProofPage}
-\index{IntegerProblemProofPage!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerProblemProofPage}{Integer Problem Proof}
-\beginscroll
-Proposition.  If \spad{2**k - 1} is prime, then \spad{k} is prime.
-\newline
-Proof.  Suppose that k = m * n is a non-trivial factorization.
-Then
-%
-\centerline{2**m = 1 (mod (2**m - 1))}
-\centerline{2**(m * n) = 1 (mod (2**m - 1))}
-\newline
-and 2**m - 1 is a non-trivial factor of 2**k - 1.
-\newline
-QED
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Solution to Problem \#1}
-\label{IntegerProblemAnswerPage1}
-\index{pages!IntegerProblemAnswerPage1!numbers.ht}
-\index{numbers.ht!pages!IntegerProblemAnswerPage1}
-\index{IntegerProblemAnswerPage1!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerProblemAnswerPage1}{Solution to Problem \#1}
-\beginscroll
-Problem \#1:  Find the smallest prime p such that \spad{2**p - 1}
-is not prime.
-\newline
-First, define a function:
-\spadpaste{f: NNI -> INT \bound{f1}}
-\spadpaste{f(n) == 2**n - 1 \bound{f} \free{f1}}
-You can try factoring f(p) as p ranges through the set of primes.
-For example,
-\spadpaste{factor f(7) \free{f}}
-This gets tedious after a while, so let's use Axiom's stream
-facility.  (A stream is essentially an infinite sequence.)
-\newline
-First, we create a stream consisting of the positive integers:
-\spadpaste{ints := [n for n in 1..] \bound{ints}}
-Now, we create a stream consisting of the primes:
-\spadpaste{primes := [x for x in ints | prime? x] \bound{primes} \free{ints}}
-Here's the 25th prime:
-\spadpaste{primes.25 \free{primes}}
-Next, create the stream of numbers of the form 2**p - 1 with p prime:
-\spadpaste{numbers := [f(n) for n in primes] \bound{numbers} \free{primes f}}
-Finally, form
-the stream of factorizations of the elements of \spad{numbers}:
-\spadpaste{factors := [factor n for n in numbers] \bound{factors} 
-\free{numbers}}
-You can see that the fifth number in the stream (2047 = 23*89)
-is the first one that has a non-trivial factorization.
-Since 2**11 = 2048, the solution to the problem is 11.
-\newline
-Here's another way to see that 2047 is the first number in the stream that
-is composite:
-\spadpaste{nums := [x for x in numbers | not prime? x] \bound{nums} 
-\free{numbers}}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Solution to Problem \#2}
-\label{IntegerProblemAnswerPage2}
-\index{pages!IntegerProblemAnswerPage2!numbers.ht}
-\index{numbers.ht!pages!IntegerProblemAnswerPage2}
-\index{IntegerProblemAnswerPage2!numbers.ht!pages}
-<<numbers.ht>>=
-\begin{page}{IntegerProblemAnswerPage2}{Solution to Problem \#2}
-\beginscroll
-Problem \#2:  Find the smallest positive integer n such that
-\spad{n**2 - n + 41} is not prime.
-\newline
-When n = 41, n**2 - n + 41 = 41**2, which certainly isn't prime.
-Let's see if any smaller integer works.
-Here are the first 40 values:
-\spadpaste{numbers := [n**2 - n + 41 for n in 0..40] \bound{numbers}}
-Now have Axiom factor the numbers on this list:
-\spadpaste{[factor n for n in numbers] \free{numbers}}
-You can see that 41 is the smallest positive integer n such that
-n**n - n + 41 is not prime.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{oct.ht}
-<<oct.ht>>=
-\newcommand{\OctonionXmpTitle}{Octonion}
-\newcommand{\OctonionXmpNumber}{9.56}
-
-@
-\subsection{Octonion}
-\label{OctonionXmpPage}
-See QuaternionXmpPage \ref{QuaternionXmpPage} on 
-page~\pageref{QuaternionXmpPage}
-\index{pages!OctonionXmpPage!oct.ht}
-\index{oct.ht!pages!OctonionXmpPage}
-\index{OctonionXmpPage!oct.ht!pages}
-<<oct.ht>>=
-\begin{page}{OctonionXmpPage}{Octonion}
-\beginscroll
-
-The Octonions, also called the Cayley-Dixon algebra, defined over a
-commutative ring are an eight-dimensional non-associative algebra.
-Their construction from quaternions is similar to the construction
-of quaternions from complex numbers 
-(see \downlink{`Quaternion'}{QuaternionXmpPage}\ignore{Quaternion}).
-%
-\xtc{
-As \spadtype{Octonion} creates an eight-dimensional algebra, you have to
-give eight components to construct an octonion.
-}{
-\spadpaste{oci1 := octon(1,2,3,4,5,6,7,8) \bound{oci1}}
-}
-\xtc{
-}{
-\spadpaste{oci2 := octon(7,2,3,-4,5,6,-7,0) \bound{oci2}}
-}
-%
-%
-\xtc{
-Or you can use two quaternions to create an octonion.
-}{
-\spadpaste{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0)) \bound{oci3}}
-}
-%
-%
-\xtc{
-You can easily demonstrate the non-associativity of multiplication.
-}{
-\spadpaste{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3) \free{oci1 oci2 oci3}}
-}
-%
-As with the quaternions, we have a real part, the imaginary
-parts \spad{i}, \spad{j}, \spad{k}, and four
-additional imaginary parts \spad{E}, \spad{I}, \spad{J} and \spad{K}.
-These parts correspond to the canonical basis
-\spad{(1,i,j,k,E,I,J,K)}.
-\xtc{
-For each basis element there is a component operation to extract
-the coefficient of the basis element for a given octonion.
-%\spadfunFrom{real}{Octonion},
-%\spadfunFrom{imagi}{Octonion},
-%\spadfunFrom{imagj}{Octonion},
-%\spadfunFrom{imagk}{Octonion},
-%\spadfunFrom{imagE}{Octonion},
-%\spadfunFrom{imagI}{Octonion},
-%\spadfunFrom{imagJ}{Octonion}, and
-%\spadfunFrom{imagK}{Octonion}.
-}{
-\spadpaste{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1] \free{oci1}}
-}
-%
-A basis with respect to the
-quaternions is given by \spad{(1,E)}.
-However, you might ask, what then are the commuting rules?
-To answer this, we create some generic elements.
-%
-\xtc{
-We do this in Axiom
-by simply changing the ground ring from \spadtype{Integer} to
-\spadtype{Polynomial Integer}.
-}{
-\spadpaste{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk) \bound{q}}
-}
-\xtc{
-}{
-\spadpaste{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0) \bound{E}}
-}
-%
-\xtc{
-Note that quaternions are automatically converted to octonions in the
-obvious way.
-}{
-\spadpaste{q * E \free{q E}}
-}
-\xtc{
-}{
-\spadpaste{E * q \free{E q}}
-}
-\xtc{
-}{
-\spadpaste{q * 1\$(Octonion Polynomial Integer) \free{q}}
-}
-\xtc{
-}{
-\spadpaste{1\$(Octonion Polynomial Integer) * q \free{q}}
-}
-\xtc{
-Finally, we check that the \spadfunFrom{norm}{Octonion},
-defined as the sum of the squares of the coefficients,
-is a multiplicative map.
-}{
-\spadpaste{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK) \bound{o}}
-}
-\xtc{
-}{
-\spadpaste{norm o \free{o}}
-}
-\xtc{
-}{
-\spadpaste{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK) \bound{p}}
-}
-\xtc{
-Since the result is \spad{0}, the norm is multiplicative.
-}{
-\spadpaste{norm(o*p)-norm(p)*norm(p)\free{o p} }
-}
-\showBlurb{Octonion}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{odpol.ht}
-<<odpol.ht>>=
-\newcommand{\OrderlyDifferentialPolynomialXmpTitle}
-{OrderlyDifferentialPolynomial}
-\newcommand{\OrderlyDifferentialPolynomialXmpNumber}{9.60}
-
-@
-\subsection{OrderlyDifferentialPolynomial}
-\label{OrderlyDifferentialPolynomialXmpPage}
-\index{pages!OrderlyDifferentialPolynomialXmpPage!odpol.ht}
-\index{odpol.ht!pages!OrderlyDifferentialPolynomialXmpPage}
-\index{OrderlyDifferentialPolynomialXmpPage!odpol.ht!pages}
-<<odpol.ht>>=
-\begin{page}{OrderlyDifferentialPolynomialXmpPage}
-{OrderlyDifferentialPolynomial}
-\beginscroll
-
-Many systems of differential equations may be transformed to equivalent
-systems of ordinary differential equations where the equations are
-expressed polynomially in terms of the unknown functions.
-In Axiom, the domain constructors
-\spadtype{OrderlyDifferentialPolynomial}
-(abbreviated \spadtype{ODPOL}) and
-\spadtype{SequentialDifferentialPolynomial} (abbreviation
-\spadtype{SDPOL}) implement two domains of ordinary differential
-polynomials over any differential ring.
-In the simplest case, this differential ring is usually either the ring of
-integers, or the field of rational numbers.
-However, Axiom can handle ordinary differential polynomials over a
-field of rational functions in a single indeterminate.
-
-The two domains \spadtype{ODPOL} and \spadtype{SDPOL} are almost
-identical, the only difference being the choice of a different ranking,
-which is an ordering of the derivatives of the indeterminates.
-The first domain uses an orderly ranking, that is, derivatives of higher
-order are ranked higher, and derivatives of the same order are ranked
-alphabetically.
-The second domain uses a sequential ranking, where derivatives are ordered
-first alphabetically by the differential indeterminates, and then by
-order.
-A more general domain constructor,
-\spadtype{DifferentialSparseMultivariatePolynomial} (abbreviation
-\spadtype{DSMP}) allows both a user-provided list of differential
-indeterminates as well as a user-defined ranking.
-We shall illustrate \spadtype{ODPOL(FRAC INT)}, which constructs a domain
-of ordinary differential polynomials in an arbitrary number of
-differential indeterminates with rational numbers as coefficients.
-\xtc{
-}{
-\spadpaste{dpol:= ODPOL(FRAC INT) \bound{dpol}}
-}
-
-\xtc{
-A differential indeterminate \spad{w} may be viewed as an infinite
-sequence of algebraic indeterminates, which are the derivatives of
-\spad{w}.
-To facilitate referencing these, Axiom provides the operation
-\spadfunFrom{makeVariable}{OrderlyDifferentialPolynomial} to convert an
-element of type \spadtype{Symbol} to a map from the natural numbers to the
-differential polynomial ring.
-}{
-\spadpaste{w := makeVariable('w)\$dpol \free{dpol}\bound{w}}
-}
-\xtc{
-}{
-\spadpaste{z := makeVariable('z)\$dpol \free{dpol}\bound{z}}
-}
-\xtc{
-The fifth derivative of \spad{w} can be obtained by applying the map
-\spad{w} to the number \spad{5.}
-Note that the order of differentiation is given as a subscript (except
-when the order is 0).
-}{
-\spadpaste{w.5 \free{w}}
-}
-\xtc{
-}{
-\spadpaste{w 0 \free{w}}
-}
-\xtc{
-The first five derivatives of \spad{z} can be generated by a list.
-}{
-\spadpaste{[z.i for i in 1..5] \free{z}}
-}
-\xtc{
-The usual arithmetic can be used to form a differential polynomial from
-the derivatives.
-}{
-\spadpaste{f:= w.4 - w.1 * w.1 * z.3 \free{w}\free{z}\bound{f}}
-}
-\xtc{
-}{
-\spadpaste{g:=(z.1)**3 * (z.2)**2 - w.2 \free{z}\free{w}\bound{g}}
-}
-\xtc{
-The operation \spadfunFrom{D}{OrderlyDifferentialPolynomial}
-computes the derivative of any differential polynomial.
-}{
-\spadpaste{D(f) \free{f}}
-}
-\xtc{
-The same operation can compute higher derivatives, like the
-fourth derivative.
-}{
-\spadpaste{D(f,4) \free{f}}
-}
-\xtc{
-The operation \spadfunFrom{makeVariable}{OrderlyDifferentialPolynomial}
-creates a map to facilitate referencing the derivatives of \spad{f},
-similar to the map \spad{w}.
-}{
-\spadpaste{df:=makeVariable(f)\$dpol \free{f}\bound{df}}
-}
-\xtc{
-The fourth derivative of f may be referenced easily.
-}{
-\spadpaste{df.4 \free{df}}
-}
-\xtc{
-The operation \spadfunFrom{order}{OrderlyDifferentialPolynomial}
-returns the order of a differential polynomial, or the order
-in a specified differential indeterminate.
-}{
-\spadpaste{order(g)  \free{g}}
-}
-\xtc{
-}{
-\spadpaste{order(g, 'w)  \free{g}}
-}
-\xtc{
-The operation
-\spadfunFrom{differentialVariables}{OrderlyDifferentialPolynomial} returns
-a list of differential indeterminates occurring in a differential
-polynomial.
-}{
-\spadpaste{differentialVariables(g)  \free{g}}
-}
-\xtc{
-The operation \spadfunFrom{degree}{OrderlyDifferentialPolynomial} returns
-the degree, or the degree in the differential indeterminate specified.
-}{
-\spadpaste{degree(g) \free{g}}
-}
-\xtc{
-}{
-\spadpaste{degree(g, 'w)  \free{g}}
-}
-\xtc{
-The operation \spadfunFrom{weights}{OrderlyDifferentialPolynomial} returns
-a list of weights of differential monomials appearing in differential
-polynomial, or a list of weights in a specified differential
-indeterminate.
-}{
-\spadpaste{weights(g)  \free{g}}
-}
-\xtc{
-}{
-\spadpaste{weights(g,'w) \free{g}}
-}
-\xtc{
-The operation \spadfunFrom{weight}{OrderlyDifferentialPolynomial} returns
-the maximum weight of all differential monomials appearing in the
-differential polynomial.
-}{
-\spadpaste{weight(g)  \free{g}}
-}
-\xtc{
-A differential polynomial is {\em isobaric} if the weights of all
-differential monomials appearing in it are equal.
-}{
-\spadpaste{isobaric?(g) \free{g}}
-}
-\xtc{
-To substitute {\em differentially}, use
-\spadfunFrom{eval}{OrderlyDifferentialPolynomial}.
-Note that we must coerce \spad{'w} to \spadtype{Symbol}, since in
-\spadtype{ODPOL}, differential indeterminates belong to the domain
-\spadtype{Symbol}.
-Compare this result to the next, which substitutes {\em algebraically} (no
-substitution is done since \spad{w.0} does not appear in \spad{g}).
-}{
-\spadpaste{eval(g,['w::Symbol],[f]) \free{f}\free{g}}
-}
-\xtc{
-}{
-\spadpaste{eval(g,variables(w.0),[f]) \free{f}\free{g}}
-}
-\xtc{
-Since \spadtype{OrderlyDifferentialPolynomial} belongs to
-\spadtype{PolynomialCategory}, all the operations defined in the latter
-category, or in packages for the latter category, are available.
-}{
-\spadpaste{monomials(g) \free{g}}
-}
-\xtc{
-}{
-\spadpaste{variables(g) \free{g}}
-}
-\xtc{
-}{
-\spadpaste{gcd(f,g) \free{f}\free{g}}
-}
-\xtc{
-}{
-\spadpaste{groebner([f,g]) \free{f}\free{g}}
-}
-\xtc{
-The next three operations are essential for elimination procedures in
-differential polynomial rings.
-The operation \spadfunFrom{leader}{OrderlyDifferentialPolynomial} returns
-the leader of a differential polynomial, which is the highest ranked
-derivative of the differential indeterminates that occurs.
-}{
-\spadpaste{lg:=leader(g)  \free{g}\bound{lg}}
-}
-\xtc{
-The operation \spadfunFrom{separant}{OrderlyDifferentialPolynomial} returns
-the separant of a differential polynomial, which is the partial derivative
-with respect to the leader.
-}{
-\spadpaste{sg:=separant(g)  \free{g}\bound{sg}}
-}
-\xtc{
-The operation \spadfunFrom{initial}{OrderlyDifferentialPolynomial} returns
-the initial, which is the leading coefficient when the given differential
-polynomial is expressed as a polynomial in the leader.
-}{
-\spadpaste{ig:=initial(g)  \free{g}\bound{ig}}
-}
-\xtc{
-Using these three operations, it is possible to reduce \spad{f} modulo the
-differential ideal generated by \spad{g}.
-The general scheme is to first reduce the order, then reduce the degree in
-the leader.
-First, eliminate \spad{z.3} using the derivative of \spad{g}.
-}{
-\spadpaste{g1 := D g \free{g}\bound{g1}}
-}
-\xtc{
-Find its leader.
-}{
-\spadpaste{lg1:= leader g1 \free{g1}\bound{lg1}}
-}
-\xtc{
-Differentiate \spad{f} partially with respect to this leader.
-}{
-\spadpaste{pdf:=D(f, lg1) \free{f}\free{lg1}\bound{pdf}}
-}
-\xtc{
-Compute the partial remainder of \spad{f} with respect to \spad{g}.
-}{
-\spadpaste{prf:=sg * f- pdf * g1 \free{f}\free{sg}\free{pdf}\free{g1}\bound{prf}}
-}
-\xtc{
-Note that high powers of \spad{lg} still appear in \spad{prf}.
-Compute the leading coefficient of \spad{prf}
-as a polynomial in the leader of \spad{g}.
-}{
-\spadpaste{lcf:=leadingCoefficient univariate(prf, lg) \free{prf}\free{lg}\bound{lcf}}
-}
-\xtc{
-Finally, continue eliminating the high powers of \spad{lg} appearing in
-\spad{prf} to obtain the (pseudo) remainder of \spad{f} modulo \spad{g}
-and its derivatives.
-}{
-\spadpaste{ig * prf - lcf * g * lg \free{ig}\free{prf}\free{lcf}\free{g}\free{lg}}
-}
-\showBlurb{OrderlyDifferentialPolyomial}
-\showBlurb{SequentialDifferentialPolynomial}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{op.ht}
-<<op.ht>>=
-\newcommand{\OperatorXmpTitle}{Operator}
-\newcommand{\OperatorXmpNumber}{9.58}
-
-@
-\subsection{Operator}
-\label{OperatorXmpPage}
-\index{pages!OperatorXmpPage!alist.ht}
-\index{alist.ht!pages!OperatorXmpPage}
-\index{OperatorXmpPage!alist.ht!pages}
-<<alist.ht>>=
-\begin{page}{OperatorXmpPage}{Operator}
-\beginscroll
-Given any ring \spad{R}, the ring of the \spadtype{Integer}-linear operators
-over \spad{R} is called \spadtype{Operator(R)}.
-To create an operator over \spad{R}, first create a basic operator using the
-operation \spadfun{operator}, and then convert it to \spadtype{Operator(R)}
-for the \spad{R} you want.
-%
-\xtc{
-We choose \spad{R} to be the two by two matrices over the integers.
-}{
-\spadpaste{R := SQMATRIX(2, INT)\bound{r}}
-}
-\xtc{
-Create the operator \spad{tilde} on \spad{R}.
-}{
-\spadpaste{t := operator("tilde") :: OP(R) \free{r}\bound{t}}
-}
-%
-Since \spadtype{Operator} is unexposed we must either package-call operations
-from it, or expose it explicitly.  For convenience we will do the latter.
-%
-\noOutputXtc{
-Expose \spad{Operator}.
-}{
-\spadpaste{)set expose add constructor Operator \free{t}\bound{expose}}
-}
-%
-To attach an evaluation function (from \spad{R} to \spad{R}) to an
-operator over \spad{R}, use \spad{evaluate(op, f)} where \spad{op}
-is an operator over \spad{R} and \spad{f} is a function \spad{R ->
-R}.
-This needs to be done only once when the operator is defined.
-Note that \spad{f} must be \spadtype{Integer}-linear (that is,
-\spad{f(ax+y) = a f(x) + f(y)} for any integer \spad{a}, and any
-\spad{x} and \spad{y} in \spad{R}).
-%
-\xtc{
-We now attach the transpose map to the above operator \spad{t}.
-}{
-\spadpaste{evaluate(t, m +-> transpose m)\free{expose}\free{t}\bound{evt}}
-}
-%
-Operators can be manipulated formally as in any ring: \spadop{+} is the
-pointwise addition and \spadop{*} is composition.
-Any element \spad{x} of \spad{R} can be converted to an operator
-\subscriptText{\tt op}{\tt x}
-over \spad{R}, and the evaluation function of
-\subscriptText{\tt op}{\tt x}
-is left-multiplication by \spad{x}.
-%
-\xtc{
-Multiplying on the
-left by this matrix swaps the two rows.
-}{
-\spadpaste{s : R := matrix [[0, 1], [1, 0]]\bound{s}}
-}
-%
-\xtc{
-Can you guess what is the action of the following operator?
-}{
-\spadpaste{rho := t * s\free{evt s}\bound{rho}}
-}
-%
-%
-\xtc{
-Hint: applying \spad{rho} four times gives the identity, so
-\spad{rho**4-1} should return 0 when applied to any two by two matrix.
-}{
-\spadpaste{z := rho**4 - 1\free{rho}\bound{z}}
-}
-%
-%
-\xtc{
-Now check with this matrix.
-}{
-\spadpaste{m:R := matrix [[1, 2], [3, 4]]\bound{m}}
-}
-\xtc{
-}{
-\spadpaste{z m\free{z m}}
-}
-%
-%
-\xtc{
-As you have probably guessed by now, \spad{rho} acts on matrices
-by rotating the elements clockwise.
-}{
-\spadpaste{rho m\free{rho m}}
-}
-\xtc{
-}{
-\spadpaste{rho rho m\free{rho m}}
-}
-\xtc{
-}{
-\spadpaste{(rho**3) m\free{rho m}}
-}
-%
-%
-\xtc{
-Do the swapping of rows and transposition commute?
-We can check by computing their bracket.
-}{
-\spadpaste{b := t * s - s * t\free{s evt}\bound{b}}
-}
-%
-%
-\xtc{
-Now apply it to \spad{m}.
-}{
-\spadpaste{b m \free{b m}}
-}
-%
- 
-Next we demonstrate how to define a differential operator
-on a polynomial ring.
-\xtc{
-This is the recursive definition of the \spad{n}-th Legendre polynomial.
-}{
-\begin{spadsrc}[\bound{l}]
-L n ==
-  n = 0 => 1
-  n = 1 => x
-  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
-\end{spadsrc}
-}
-\xtc{
-Create the differential operator \texht{$d \over {dx}$}{\spad{d/dx}} on
-polynomials in \spad{x} over the rational numbers.
-}{
-\spadpaste{dx := operator("D") :: OP(POLY FRAC INT) \bound{dx}}
-}
-\xtc{
-Now attach the map to it.
-}{
-\spadpaste{evaluate(dx, p +-> D(p, 'x)) \free{dx}\bound{edx}}
-}
-\xtc{
-This is the differential equation satisfied by the \spad{n}-th
-Legendre polynomial.
-}{
-\spadpaste{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1) \free{edx}\bound{E}}
-}
-\xtc{
-Now we verify this for \spad{n = 15}.
-Here is the polynomial.
-}{
-\spadpaste{L 15 \free{L}}
-}
-\xtc{
-Here is the operator.
-}{
-\spadpaste{E 15 \free{E}}
-}
-\xtc{
-Here is the evaluation.
-}{
-\spadpaste{(E 15)(L 15) \free{L E}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ovar.ht}
-<<ovar.ht>>=
-\newcommand{\OrderedVariableListXmpTitle}{OrderedVariableList}
-\newcommand{\OrderedVariableListXmpNumber}{9.59}
-
-@
-\subsection{OrderedVariableList}
-\label{OrderedVariableListXmpPage}
-\index{pages!OrderedVariableListXmpPage!ovar.ht}
-\index{ovar.ht!pages!OrderedVariableListXmpPage}
-\index{OrderedVariableListXmpPage!ovar.ht!pages}
-<<ovar.ht>>=
-\begin{page}{OrderedVariableListXmpPage}{OrderedVariableList}
-\beginscroll
-
-The domain \spadtype{OrderedVariableList} provides symbols
-which are restricted to a particular list and have a definite 
-ordering. Those two features are specified by a \spadtype{List Symbol}
-object that is the argument to the domain.
-\xtc{
-This is a sample ordering of three symbols.
-}{
-\spadpaste{ls:List Symbol:=['x,'a,'z] \bound{ls}}
-}
-\xtc{
-Let's build the domain
-}{
-\spadpaste{Z:=OVAR ls \bound{Z} \free{ls}}
-}
-\xtc{
-How many variables does it have?
-}{
-\spadpaste{size()$Z \free{Z}}
-}
-\xtc{
-They are (in the imposed order)
-}{
-\spadpaste{lv:=[index(i::PI)$Z for i in 1..size()$Z] \bound{lv}\free{Z}}
-}
-\xtc{
-Check that the ordering is right
-}{
-\spadpaste{sorted?(>,lv) \free{lv}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{perman.ht}
-<<perman.ht>>=
-\newcommand{\PermanentXmpTitle}{Permanent}
-\newcommand{\PermanentXmpNumber}{9.62}
-
-@
-\subsection{Permanent}
-\label{PermanentXmpPage}
-\index{pages!PermanentXmpPage!perman.ht}
-\index{perman.ht!pages!PermanentXmpPage}
-\index{PermanentXmpPage!perman.ht!pages}
-<<perman.ht>>=
-\begin{page}{PermanentXmpPage}{Permanent}
-\beginscroll
-The package \spadtype{Permanent} provides the function
-\spadfunFrom{permanent}{Permanent} for square matrices.
-The \spadfunFrom{permanent}{Permanent} of a square matrix can be computed
-in the same way as the determinant by expansion of minors except that for
-the permanent the sign for each element is \spad{1}, rather than being
-\spad{1} if the row plus column indices is positive and \spad{-1}
-otherwise.
-This function is much more difficult to compute efficiently than the
-\spadfunFrom{determinant}{Matrix}.
-An example of the use of \spadfunFrom{permanent}{Permanent} is the
-calculation of the \eth{\spad{n}} derangement number, defined to be the number
-of different possibilities for \spad{n} couples to dance but never with
-their own spouse.
-\xtc{
-Consider an \spad{n} by \spad{n} matrix with entries 
-\spad{0} on the diagonal and
-\spad{1} elsewhere.
-Think of the rows as one-half of each couple (for example, the males) and the
-columns the other half.
-The permanent of such a matrix gives the desired derangement number.
-}{
-\begin{spadsrc}[\bound{kn}]
-kn n ==
-  r : MATRIX INT := new(n,n,1)
-  for i in 1..n repeat
-    r.i.i := 0
-  r
-\end{spadsrc}
-}
-\xtc{
-Here are some derangement numbers, which you see grow quite fast.
-}{
-\spadpaste{permanent(kn(5) :: SQMATRIX(5,INT)) \free{kn}}
-}
-\xtc{
-}{
-\spadpaste{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13] \free{kn}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{pfr.ht}
-<<pfr.ht>>=
-\newcommand{\PartialFractionXmpTitle}{PartialFraction}
-\newcommand{\PartialFractionXmpNumber}{9.61}
-
-@
-\subsection{PartialFraction}
-\label{PartialFractionXmpPage}
-See FullPartialFractionExpansionXmpPage 
-\ref{FullPartialFractionExpansionXmpPage} on
-page~\pageref{FullPartialFractionExpansionXmpPage}
-\index{pages!PartialFractionXmpPage!pfr.ht}
-\index{pfr.ht!pages!PartialFractionXmpPage}
-\index{PartialFractionXmpPage!pfr.ht!pages}
-<<pfr.ht>>=
-\begin{page}{PartialFractionXmpPage}{PartialFraction}
-\beginscroll
-
-A {\it partial fraction} is a decomposition of a quotient into
-a sum
-of quotients where the denominators of the summands are powers of
-primes.\footnote{Most people first encounter partial fractions when they
-are learning integral calculus.
-For a technical discussion of partial fractions, see, for example, Lang's {\it
-Algebra.}} For example, the rational number \spad{1/6} is decomposed into
-\spad{1/2 -1/3}.
-You can compute partial fractions of quotients of objects from domains
-belonging to the category \spadtype{EuclideanDomain}.
-For example, \spadtype{Integer}, \spadtype{Complex Integer}, and
-\spadtype{UnivariatePolynomial(x, Fraction Integer)} all belong to
-\spadtype{EuclideanDomain}.
-In the examples following, we demonstrate how to decompose quotients of
-each of these kinds of object into partial fractions.
-Issue the system command
-\spadcmd{)show PartialFraction}
-to display the full list of operations defined by \spadtype{PartialFraction}.
-
-It is necessary that we know how to factor the denominator when we want to
-compute a partial fraction.
-Although the interpreter can often do this automatically, it may be
-necessary for you to include a call to \spadfun{factor}.
-In these examples, it is not necessary to factor the
-denominators explicitly.
-%
-\xtc{
-The main operation for computing partial fractions is called
-\spadfunFrom{partialFraction}{PartialFraction} and we use this to
-compute a decomposition of \spad{1 / 10!}.
-The first argument to \spadfunFrom{partialFraction}{PartialFraction} is
-the numerator of the quotient and the second argument is the factored
-denominator.
-}{
-\spadpaste{partialFraction(1,factorial 10) \bound{prev1}}
-}
-\xtc{
-Since the denominators are powers of primes, it may be possible
-to expand the numerators further with respect to those primes. Use the
-operation \spadfunFrom{padicFraction}{PartialFraction} to do this.
-}{
-\spadpaste{f := padicFraction(\%) \free{prev1}\bound{f}}
-}
-%
-%
-\xtc{
-The operation \spadfunFrom{compactFraction}{PartialFraction} returns an
-expanded fraction into the usual form.
-The compacted version is used internally for computational efficiency.
-}{
-\spadpaste{compactFraction(f) \free{f}}
-}
-%
-\xtc{
-You can add, subtract, multiply
-and divide partial fractions.  In addition, you can extract the parts
-of the decomposition.
-\spadfunFrom{numberOfFractionalTerms}{PartialFraction} computes
-the number of terms in the fractional part.
-This does not include the whole part of the fraction,
-which you get by calling \spadfunFrom{wholePart}{PartialFraction}.
-In this example, the whole part is just \spad{0}.
-}{
-\spadpaste{numberOfFractionalTerms(f) \free{f}}
-}
-\xtc{
-The operation
-\spadfunFrom{nthFractionalTerm}{PartialFraction} returns the individual terms in the
-decomposition.
-Notice that the object returned is a partial fraction itself.
-\spadfunFrom{firstNumer}{PartialFraction} and
-\spadfunFrom{firstDenom}{PartialFraction} extract the numerator and
-denominator of the first term of the fraction.
-}{
-\spadpaste{nthFractionalTerm(f,3) \free{f}}
-}
-%
-
-%
-\xtc{
-Given two gaussian integers (see \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex}), you can
-decompose their quotient into a partial fraction.
-}{
-\spadpaste{partialFraction(1,- 13 + 14 * \%i) \bound{prev2}}
-}
-%
-\xtc{
-To convert back to a quotient, simply use a conversion.
-}{
-\spadpaste{\% :: Fraction Complex Integer \free{prev2}}
-}
-
-To conclude this section, we compute the decomposition of
-\texht{\narrowDisplay{1 \over {{(x + 1)}{(x + 2)}^2{(x + 3)}^3{(x + 4)}^4}}}{
-\begin{verbatim}
-                   1
-     -------------------------------
-                   2       3       4
-     (x + 1)(x + 2) (x + 3) (x + 4)
-\end{verbatim}
-}
-The polynomials in this object have type
-\spadtype{UnivariatePolynomial(x, Fraction Integer)}.
-%
-\xtc{
-We use the \spadfunFrom{primeFactor}{Factored} operation (see
-\downlink{`Factored'}{FactoredXmpPage}\ignore{Factored}) to create the denominator in factored form directly.
-}{
-\spadpaste{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4]) \bound{u}}
-}
-%
-%
-\xtc{
-These are the compact and expanded partial fractions for the quotient.
-}{
-\spadpaste{partialFraction(1,u) \free{u}\bound{prev3}}
-}
-\xtc{
-}{
-\spadpaste{padicFraction \% \free{prev3}}
-}
-
-All see \downlink{`FullPartialFractionExpansion'}{FullPartialFractionExpansionXmpPage}\ignore{FullPartialFractionExpansion} for examples of
-factor-free conversion of quotients to full partial fractions.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{poly.ht}
-\subsection{Polynomials}
-\label{PolynomialPage}
-\begin{itemize}
-\item PolynomialBasicPage \ref{PolynomialBasicPage} on
-page~\pageref{PolynomialBasicPage}
-\item PolynomialSubstitutionPage \ref{PolynomialSubstitutionPage} on
-page~\pageref{PolynomialSubstitutionPage}
-\item ugProblemFactorPage \ref{ugProblemFactorPage} on
-page~\pageref{ugProblemFactorPage}
-\item PolynomialGCDPage \ref{PolynomialGCDPage} on
-page~\pageref{PolynomialGCDPage}
-\item PolynomialRootPage \ref{PolynomialRootPage} on
-page~\pageref{PolynomialRootPage}
-\item PolynomialTypesPage \ref{PolynomialTypesPage} on
-page~\pageref{PolynomialTypesPage}
-\end{itemize}
-\index{pages!PolynomialPage!poly.ht}
-\index{poly.ht!pages!PolynomialPage}
-\index{PolynomialPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialPage}{Polynomials}
-\beginscroll
-\beginmenu
-\menulink{Basic Functions}{PolynomialBasicPage} \tab{18}
-Create and manipulate polynomials.
-\menulink{Substitutions}{PolynomialSubstitutionPage} \tab{18}
-Evaluate polynomials.
-\menulink{Factorization}{ugProblemFactorPage} \tab{18}
-Factor in different contexts.
-\menulink{GCDs and Friends}{PolynomialGCDPage} \tab{18}
-Greatest common divisors etc..
-\menulink{Roots}{PolynomialRootPage}\tab{18}
-Work with and solve for roots.
-\menulink{Specific Types}{PolynomialTypesPage}\tab{18}
-More specific information.
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{The Specific Polynomial Types}
-\label{PolynomialTypesPage}
-\index{pages!PolynomialTypesPage!poly.ht}
-\index{poly.ht!pages!PolynomialTypesPage}
-\index{PolynomialTypesPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialTypesPage}{The Specific Polynomial Types}
-\beginscroll
-\beginmenu
-\menulink{Polynomial}{PolynomialXmpPage} \newline
-The general type.
-\menulink{UnivariatePolynomial}{UnivariatePolynomialXmpPage} \newline
-One variable polynomials.
-\menulink{MultivariatePolynomial}{MultivariatePolynomialXmpPage} \newline
-Multiple variable polynomials, recursive structure.
-\menulink{DistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage}
-\newline
-Multiple variable polynomials, non-recursive structure.
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Basic Operations On Polynomials}
-\label{PolynomialBasicPage}
-\index{pages!PolynomialBasicPage!poly.ht}
-\index{poly.ht!pages!PolynomialBasicPage}
-\index{PolynomialBasicPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialBasicPage}{Basic Operations On Polynomials}
-\beginscroll
-You create
-polynomials using the usual operations of \spadopFrom{+}{Polynomial},
-\spadopFrom{-}{Polynomial}, \spadopFrom{*}{Polynomial}
-(for multiplication), and \spadopFrom{**}{Polynomial} (for exponentiation).
-Here are two examples: \newline
-\spadpaste{p := a*x**2 + b*x*y + c*y**2 \bound{p}} 
-\spadpaste{q := 13*x**2 + 3*z \bound{q}} 
-These operations can also be used to combine polynomials.
-Try the following:
-\spadpaste{p + q \free{p q}} 
-\spadpaste{p - 3*q \free{p q}} 
-\spadpaste{p**2 + p*q \free{p q}} 
-\spadpaste{r := (p + q)**2 \bound{r} \free{p q}}
-As you can see from the above examples, the variables are ordered
-by defaults \spad{z > y > x > c > b > a},
-that is, \spad{z} is the main variable, then
-\spad{y} and so on in reverse alphabetical order.
-You can redefine this
-ordering (for display purposes only) with the \spadfun{setVariableOrder}
-command.
-For example, the following
-makes \spad{a} the main variable, then \spad{b}, and so on:
-\spadpaste{setVariableOrder [a,b,c,x,y,z] \bound{vord}}
-Now compare the way polynomials are displayed:
-\spadpaste{p \free{p vord}}
-\spadpaste{q \free{q vord}}
-\spadpaste{r \free{r vord}}
-To return to the system's default ordering,
-use \spadfun{resetVariableOrder}.
-\spadpaste{resetVariableOrder() \bound{rvord}}
-\spadpaste{p \free{p rvord}}
-Polynomial coefficients can be pulled out
-using the function \spadfun{coefficient}. \newline
-For example:
-\spadpaste{coefficient(q,x,2) \free{q}} 
-will give you the coefficient of \spad{x**2} in the polynomial \spad{q}.
-\newline
-Try these commands:
-\spadpaste{coefficient(r,x,3) \free{r}} 
-\spadpaste{c := coefficient(r,z,1) \free{r} \bound{c}} 
-\spadpaste{coefficient(c,x,2) \free{c}}
-Coefficients of monomials can be obtained as follows:
-\spadpaste{coefficient(q**2, [x,z], [2,1]) \free{q}}
-This will return the coefficient of x**2 * z in the polynomial q**2.
-Also,
-\spadpaste{coefficient(r, [x,y], [2,2]) \free{r}}
-will return the coefficient of \spad{x**2 * y**2}
-in the polynomial \spad{r(x,y)}.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Polynomial Evaluation and Substitution}
-\label{PolynomialSubstitutionPage}
-\index{pages!PolynomialSubstitutionPage!poly.ht}
-\index{poly.ht!pages!PolynomialSubstitutionPage}
-\index{PolynomialSubstitutionPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialSubstitutionPage}
-{Polynomial Evaluation and Substitution}
-\beginscroll
-The function \spadfun{eval} is used to substitute values into polynomials.
-Here's an example of how to use it:
-\spadpaste{p := x**2 + y**2 \bound{p}}
-\spadpaste{eval(p,x=5) \free{p}}
-\newline
-This example would give you the value of the polynomial \spad{p} at 5.
-You can also substitute into polynomials with
-several variables.  First, specify the polynomial, then give
-a list of bindings of the form \spad{variable = value}. For example:
-\spadpaste{eval(p,[x = a + b,y = c + d]) \free{p}}
-Here \spad{x} was replaced by \spad{a + b},
-and \spad{y} was replaced by \spad{c + d}.
-Here's another example:
-\spadpaste{q := x**3 + 5*x - y**4 \bound{q}}
-\spadpaste{eval(q,[x=y,y=x]) \free{q}}
-Substitution is done ``in parallel.''
-That is, Axiom takes
-\spad{q(x,y)} and returns \spad{q(y,x)}.
-\newline
-You can also substitute numerical values for some or all of the
-variables:
-\spadpaste{px := eval(p, y = sin(2.0)) \bound{px} \free{p}}
-\spadpaste{eval(px, x = cos(2.0)) \free{px}}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Greatest Common Divisors, Resultants, and Discriminants}
-\label{PolynomialGCDPage}
-\index{pages!PolynomialGCDPage!poly.ht}
-\index{poly.ht!pages!PolynomialGCDPage}
-\index{PolynomialGCDPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialGCDPage}
-{Greatest Common Divisors, Resultants, and Discriminants}
-\beginscroll
-You can compute the greatest common divisor of two polynomials using the
-function \spadfun{gcd}.
-Here's an example:
-\spadpaste{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2 \bound{p}}
-\spadpaste{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5 \bound{q}}
-\spadpaste{gcd(p,q) \free{p q}}
-You could
-also see that \spad{p} and \spad{q} have a factor in common by using the
-function \spadfun{resultant}:
-\spadpaste{resultant(p,q,x) \free{p q}}
-The resultant of two polynomials vanishes precisely when they have a
-factor in common.
-(In the example above
-we specified the variable with
-which we wanted to compute the resultant because the
-polynomials could have involved variables other than x.)
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Roots of Polynomials}
-\label{PolynomialRootPage}
-\index{pages!PolynomialRootPage!poly.ht}
-\index{poly.ht!pages!PolynomialRootPage}
-\index{PolynomialRootPage!poly.ht!pages}
-<<poly.ht>>=
-\begin{page}{PolynomialRootPage}{Roots of Polynomials}
-\beginscroll
-\beginmenu
-\menulink{Using a Single Root of a Polynomial}{ugxProblemSymRootOnePage}
-\newline
-Working with a single root of a polynomial.
-\menulink{Using All Roots of a Polynomial}{ugxProblemSymRootAllPage}
-\newline
-Working with all the roots of a polynomial.
-\menulink{Solution of a Single Polynomial Equation}{ugxProblemOnePolPage}
-\newline
-Finding the roots of one polynomial.
-\menulink{Solution of Systems of Polynomial Equations}{ugxProblemPolSysPage}
-\newline
-Finding the roots of a system of polynomials.
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{poly1.ht}
-<<poly1.ht>>=
-\newcommand{\PolynomialXmpTitle}{Polynomial}
-\newcommand{\PolynomialXmpNumber}{9.63}
-
-@
-\subsection{Polynomial}
-\label{PolynomialXmpPage}
-\begin{itemize}
-\item DistributedMultivariatePolynomialXmpPage \ref{DistributedMultivariatePolynomialXmpPage} on
-page~pageref{DistributedMultivariatePolynomialXmpPage}
-\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
-page~pageref{MultivariatePolynomialXmpPage}
-\item UnivariatePolynomialXmpPage \ref{UnivariatePolynomialXmpPage} on
-page~pageref{UnivariatePolynomialXmpPage}
-\item FactoredXmpPage \ref{FactoredXmpPage} on
-page~pageref{FactoredXmpPage}
-\item upProblemFactorPage \ref{upProblemFactorPage} on
-page~pageref{upProblemFactorPage}
-\end{itemize}
-\index{pages!PolynomialXmpPage!poly1.ht}
-\index{poly1.ht!pages!PolynomialXmpPage}
-\index{PolynomialXmpPage!poly1.ht!pages}
-<<poly1.ht>>=
-\begin{page}{PolynomialXmpPage}{Polynomial}
-\beginscroll
-
-The domain constructor \spadtype{Polynomial} (abbreviation: \spadtype{POLY})
-provides polynomials with an arbitrary number of unspecified
-variables.
-
-\xtc{
-It is used to create the default polynomial domains
-in Axiom.
-Here the coefficients are integers.
-}{
-\spadpaste{x + 1}
-}
-\xtc{
-Here the coefficients have type \spadtype{Float}.
-}{
-\spadpaste{z - 2.3}
-}
-\xtc{
-And here we have a polynomial in two variables with coefficients which
-have type \spadtype{Fraction Integer}.
-}{
-\spadpaste{y**2 - z + 3/4}
-}
-
-The representation of objects of domains created by \spadtype{Polynomial}
-is that of recursive univariate polynomials.\footnote{The term
-\spad{univariate} means ``one variable.'' \spad{multivariate} means
-``possibly more than one variable.''}
-\xtc{
-This recursive structure is sometimes obvious from the display of
-a polynomial.
-}{
-\spadpaste{y **2 + x*y + y \bound{prev}}
-}
-In this example, you see that the polynomial is stored as a polynomial in
-\spad{y} with coefficients that are polynomials in \spad{x} with integer
-coefficients.
-In fact, you really don't need to worry about the representation unless
-you are working on an advanced application where it is critical.
-The polynomial types created from
-\spadtype{DistributedMultivariatePolynomial} and
-\spadtype{NewDistributedMultivariatePolynomial} (discussed in
-\downlink{`DistributedMultivariatePolynomial'}
-{DistributedMultivariatePolynomialXmpPage}
-\ignore{DistributedMultivariatePolynomial}) are stored and displayed in a
-non-recursive manner.
-\xtc{
-You see a ``flat'' display of the above
-polynomial by converting to one of those types.
-}{
-\spadpaste{\% :: DMP([y,x],INT) \free{prev}}
-}
-
-We will demonstrate many of the polynomial facilities by using two
-polynomials with integer coefficients.
-\xtc{
-By default, the interpreter expands polynomial expressions, even if they
-are written in a factored format.
-}{
-\spadpaste{p := (y-1)**2 * x * z \bound{p}}
-}
-\xtc{
-See \downlink{`Factored'}{FactoredXmpPage}\ignore{Factored} to see
-how to create objects in factored form directly.
-}{
-\spadpaste{q := (y-1) * x * (z+5) \bound{q}}
-}
-\xtc{
-The fully factored form can be recovered by using
-\spadfunFrom{factor}{Polynomial}.
-}{
-\spadpaste{factor(q) \free{q}}
-}
-This is the same name used for the operation to factor integers.
-Such reuse of names is called \spadglos{overloading} and makes it much easier
-to think of solving problems in general ways.
-Axiom facilities for factoring polynomials created with
-\spadtype{Polynomial} are currently restricted to
-the integer and rational number coefficient cases.
-There are more complete facilities for factoring univariate polynomials:
-see \downlink{``\ugProblemFactorTitle''}{ugProblemFactorPage} 
-in Section \ugProblemFactorNumber\ignore{ugProblemFactor}.
-
-\xtc{
-The standard arithmetic operations are available for polynomials.
-}{
-\spadpaste{p - q**2\free{p q}}
-}
-\xtc{
-The operation \spadfunFrom{gcd}{Polynomial} is used to compute the
-greatest common divisor of two polynomials.
-}{
-\spadpaste{gcd(p,q) \free{p q}\bound{prev4}}
-}
-\xtc{
-In the case of \spad{p} and \spad{q}, the gcd is obvious from their
-definitions.
-We factor the gcd to show this relationship better.
-}{
-\spadpaste{factor \% \free{prev4}}
-}
-\xtc{
-The least common multiple is computed by using \spadfunFrom{lcm}{Polynomial}.
-}{
-\spadpaste{lcm(p,q) \free{p q}}
-}
-\xtc{
-Use \spadfunFrom{content}{Polynomial} to compute the 
-greatest common divisor of the
-coefficients of the polynomial.
-}{
-\spadpaste{content p \free{p}}
-}
-
-Many of the operations on polynomials require you to specify a variable.
-For example, \spadfunFrom{resultant}{Polynomial} requires you to give the
-variable in which the polynomials should be expressed.
-\xtc{
-This computes the resultant of the values of \spad{p} and
-\spad{q}, considering them as polynomials in the variable \spad{z}.
-They do not share a root when thought of as polynomials in \spad{z}.
-}{
-\spadpaste{resultant(p,q,z) \free{p q}}
-}
-\xtc{
-This value is \spad{0} because as polynomials in \spad{x} the polynomials
-have a common root.
-}{
-\spadpaste{resultant(p,q,x) \free{p}\free{q}}
-}
-The data type used for the variables created by \spadtype{Polynomial} is
-\spadtype{Symbol}.
-As mentioned above, the representation used by \spadtype{Polynomial} is
-recursive and so there is a main variable for nonconstant polynomials.
-\xtc{
-The operation \spadfunFrom{mainVariable}{Polynomial} returns this
-variable.
-The return type is actually a union of \spadtype{Symbol} and
-\spad{"failed"}.
-}{
-\spadpaste{mainVariable p \free{p}}
-}
-\xtc{
-The latter branch of the union is be used if the polynomial has no
-variables, that is, is a constant.
-}{
-\spadpaste{mainVariable(1 :: POLY INT)}
-}
-\xtc{
-You can also use the predicate \spadfunFrom{ground?}{Polynomial} to test
-whether a polynomial is in fact a member of its ground ring.
-}{
-\spadpaste{ground? p \free{p}}
-}
-\xtc{
-}{
-\spadpaste{ground?(1 :: POLY INT)}
-}
-\xtc{
-The complete list of variables actually used in a particular polynomial is
-returned by \spadfunFrom{variables}{Polynomial}.
-For constant polynomials, this list is empty.
-}{
-\spadpaste{variables p \free{p}}
-}
-
-\xtc{
-The \spadfunFrom{degree}{Polynomial} operation returns the
-degree of a polynomial in a specific variable.
-}{
-\spadpaste{degree(p,x) \free{p}}
-}
-\xtc{
-}{
-\spadpaste{degree(p,y) \free{p}}
-}
-\xtc{
-}{
-\spadpaste{degree(p,z) \free{p}}
-}
-\xtc{
-If you give a list of variables for the second argument, a list
-of the degrees in those variables is returned.
-}{
-\spadpaste{degree(p,[x,y,z]) \free{p}}
-}
-\xtc{
-The minimum degree of a variable in a polynomial is computed using
-\spadfunFrom{minimumDegree}{Polynomial}.
-}{
-\spadpaste{minimumDegree(p,z) \free{p}}
-}
-\xtc{
-The total degree of a polynomial is returned by
-\spadfunFrom{totalDegree}{Polynomial}.
-}{
-\spadpaste{totalDegree p \free{p}}
-}
-
-\xtc{
-It is often convenient to think of a polynomial as a leading monomial plus
-the remaining terms.
-}{
-\spadpaste{leadingMonomial p \free{p}}
-}
-\xtc{
-The \spadfunFrom{reductum}{Polynomial} operation returns a polynomial
-consisting of the sum of the monomials after the first.
-}{
-\spadpaste{reductum p \free{p}}
-}
-\xtc{
-These have the obvious relationship that the original polynomial
-is equal to the leading monomial plus the reductum.
-}{
-\spadpaste{p - leadingMonomial p - reductum p \free{p}}
-}
-\xtc{
-The value returned by \spadfunFrom{leadingMonomial}{Polynomial} includes
-the coefficient of that term.
-This is extracted by using
-\spadfunFrom{leadingCoefficient}{Polynomial} on the original polynomial.
-}{
-\spadpaste{leadingCoefficient p \free{p}}
-}
-\xtc{
-The operation \spadfunFrom{eval}{Polynomial} is used to substitute a value
-for a variable in a polynomial.
-}{
-\spadpaste{p  \free{p}}
-}
-\xtc{
-This value may be another variable, a constant or a polynomial.
-}{
-\spadpaste{eval(p,x,w) \free{p}}
-}
-\xtc{
-}{
-\spadpaste{eval(p,x,1) \free{p}}
-}
-\xtc{
-Actually, all the things being substituted are just polynomials,
-some more trivial than others.
-}{
-\spadpaste{eval(p,x,y**2 - 1) \free{p}}
-}
-
-\xtc{
-Derivatives are computed using the \spadfunFrom{D}{Polynomial}
-operation.
-}{
-\spadpaste{D(p,x) \free{p}}
-}
-\xtc{
-The first argument is the polynomial and the second is the variable.
-}{
-\spadpaste{D(p,y) \free{p}}
-}
-\xtc{
-Even if the polynomial has only one variable, you must specify it.
-}{
-\spadpaste{D(p,z) \free{p}}
-}
-
-Integration of polynomials is similar and the
-\spadfunFrom{integrate}{Polynomial} operation is used.
-
-\xtc{
-Integration requires that the coefficients support division.
-Consequently,
-Axiom converts polynomials over the integers to polynomials over
-the rational numbers before integrating them.
-}{
-\spadpaste{integrate(p,y) \free{p}}
-}
-
-It is not possible, in general, to divide two polynomials.
-In our example using polynomials over the integers, the operation
-\spadfunFrom{monicDivide}{Polynomial} divides a polynomial by a monic
-polynomial (that is, a polynomial with leading coefficient equal to 1).
-The result is a record of the quotient and remainder of the
-division.
-\xtc{
-You must specify the variable in which to express the polynomial.
-}{
-\spadpaste{qr := monicDivide(p,x+1,x) \free{p}\bound{qr}}
-}
-\xtc{
-The selectors of the components of the record are
-\spad{quotient} and \spad{remainder}.
-Issue this to extract the remainder.
-}{
-\spadpaste{qr.remainder \free{qr}}
-}
-\xtc{
-Now that we can extract the components, we can demonstrate the
-relationship among them and the arguments to our original expression
-\spad{qr := monicDivide(p,x+1,x)}.
-}{
-\spadpaste{p - ((x+1) * qr.quotient + qr.remainder) \free{p}\free{qr}}
-}
-
-\xtc{
-If the \spadopFrom{/}{Fraction} operator is used with polynomials, a
-fraction object is created.
-In this example, the result is an object of type \spadtype{Fraction
-Polynomial Integer}.
-}{
-\spadpaste{p/q \free{p}\free{q}}
-}
-\xtc{
-If you use rational numbers as polynomial coefficients, the
-resulting object is of type \spadtype{Polynomial Fraction Integer}.
-}{
-\spadpaste{(2/3) * x**2 - y + 4/5 \bound{prev1}}
-}
-\xtc{
-This can be converted to a fraction of polynomials and back again, if
-required.
-}{
-\spadpaste{\% :: FRAC POLY INT \free{prev1}\bound{prev2}}
-}
-\xtc{
-}{
-\spadpaste{\% :: POLY FRAC INT \free{prev2}\bound{prev3}}
-}
-\xtc{
-To convert the coefficients to floating point,
-map the \spadfun{numeric} operation on the coefficients of the polynomial.
-}{
-\spadpaste{map(numeric,\%) \free{prev3}}
-}
-
-For more information on related topics, see
-\downlink{`UnivariatePolynomial'}{UnivariatePolynomialXmpPage}\ignore{UnivariatePolynomial},
-\downlink{`MultivariatePolynomial'}{MultivariatePolynomialXmpPage}\ignore{MultivariatePolynomial}, and
-\downlink{`DistributedMultivariatePolynomial'}{DistributedMultivariatePolynomialXmpPage}\ignore{DistributedMultivariatePolynomial}.
-You can also issue the system command
-\spadcmd{)show Polynomial}
-to display the full list of operations defined by
-\spadtype{Polynomial}.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{quat.ht}
-<<quat.ht>>=
-\newcommand{\QuaternionXmpTitle}{Quaternion}
-\newcommand{\QuaternionXmpNumber}{9.64}
-
-@
-\subsection{Quaternion}
-\label{QuaternionXmpPage}
-\index{pages!QuaternionXmpPage!quat.ht}
-\index{quat.ht!pages!QuaternionXmpPage}
-\index{QuaternionXmpPage!quat.ht!pages}
-<<quat.ht>>=
-\begin{page}{QuaternionXmpPage}{Quaternion}
-% =====================================================================
-\beginscroll
-The domain constructor \spadtype{Quaternion} implements quaternions over
-commutative rings.
-For information on related topics, see
-%\menuxmpref{CliffordAlgebra}
-\downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} and
-\downlink{`Octonion'}{OctonionXmpPage}\ignore{Octonion}.
-You can also issue the system command
-\spadcmd{)show Quaternion}
-to display the full list of operations defined by
-\spadtype{Quaternion}.
-
-\xtc{
-The basic operation for creating quaternions is
-\spadfunFrom{quatern}{Quaternion}.
-This is a quaternion over the rational numbers.
-}{
-\spadpaste{q := quatern(2/11,-8,3/4,1) \bound{q}}
-}
-\xtc{
-The four arguments are the real part, the \spad{i} imaginary part, the
-\spad{j} imaginary part, and the \spad{k} imaginary part, respectively.
-}{
-\spadpaste{[real q, imagI q, imagJ q, imagK q] \free{q}}
-}
-\xtc{
-Because \spad{q} is over the rationals (and nonzero), you can invert it.
-}{
-\spadpaste{inv q \free{q}}
-}
-\xtc{
-The usual arithmetic (ring) operations are available
-}{
-\spadpaste{q**6 \free{q}}
-}
-\xtc{
-}{
-\spadpaste{r := quatern(-2,3,23/9,-89); q + r \bound{r}\free{q}}
-}
-%
-\xtc{
-In general, multiplication is not commutative.
-}{
-\spadpaste{q * r - r * q\free{q r}}
-}
-\xtc{
-There are no predefined constants for the imaginary \spad{i, j},
-and \spad{k} parts, but you can easily define them.
-}{
-\spadpaste{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1) \bound{i j k}}
-}
-\xtc{
-These satisfy the normal identities.
-}{
-\spadpaste{[i*i, j*j, k*k, i*j, j*k, k*i, q*i] \free{i j k q}}
-}
-\xtc{
-The norm is the quaternion times its conjugate.
-}{
-\spadpaste{norm q \free{q}}
-}
-\xtc{
-}{
-\spadpaste{conjugate q \free{q} \bound{prev}}
-}
-\xtc{
-}{
-\spadpaste{q * \% \free{q prev}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{radix.ht}
-<<radix.ht>>=
-\newcommand{\RadixExpansionXmpTitle}{RadixExpansion}
-\newcommand{\RadixExpansionXmpNumber}{9.65}
-
-@
-\subsection{RadixExpansion}
-\label{RadixExpansionXmpPage}
-\begin{itemize}
-\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
-page~pageref{HexadecimalExpansionXmpPage}
-\item DecimalExpansion \ref{DecimalExpansion} on
-page~pageref{DecimalExpansion}
-\item BinaryExpansion \ref{BinaryExpansion} on
-page~pageref{BinaryExpansion}
-\end{itemize}
-\index{pages!RadixExpansionXmpPage!radix.ht}
-\index{radix.ht!pages!RadixExpansionXmpPage}
-\index{RadixExpansionXmpPage!radix.ht!pages}
-<<radix.ht>>=
-\begin{page}{RadixExpansionXmpPage}{RadixExpansion}
-\beginscroll
-
-It possible to expand numbers in general bases.
-
-\labelSpace{2pc}
-\xtc{
-Here we expand \spad{111} in base \spad{5}.
-This means
-\texht{$10^2+10^1+10^0 = 4 \cdot 5^2+2 \cdot 5^1 + 5^0.$}{%
-\spad{10**2+10**1+10**0 = 4*5**2+2*5**1+5**0.}}
-}{
-\spadpaste{111::RadixExpansion(5)}
-}
-
-\xtc{
-You can expand fractions to form repeating expansions.
-}{
-\spadpaste{(5/24)::RadixExpansion(2)}
-}
-\xtc{
-}{
-\spadpaste{(5/24)::RadixExpansion(3)}
-}
-\xtc{
-}{
-\spadpaste{(5/24)::RadixExpansion(8)}
-}
-\xtc{
-}{
-\spadpaste{(5/24)::RadixExpansion(10)}
-}
-\xtc{
-For bases from 11 to 36 the letters A through Z are used.
-}{
-\spadpaste{(5/24)::RadixExpansion(12)}
-}
-\xtc{
-}{
-\spadpaste{(5/24)::RadixExpansion(16)}
-}
-\xtc{
-}{
-\spadpaste{(5/24)::RadixExpansion(36)}
-}
-\xtc{
-For bases greater than 36, the ragits are separated by blanks.
-}{
-\spadpaste{(5/24)::RadixExpansion(38)}
-}
-\xtc{
-The \spadtype{RadixExpansion} type provides operations to obtain the
-individual ragits.
-Here is a rational number in base \spad{8}.
-}{
-\spadpaste{a := (76543/210)::RadixExpansion(8) \bound{a}}
-}
-\xtc{
-The operation \spadfunFrom{wholeRagits}{RadixExpansion} returns a list of the
-ragits for the integral part of the number.
-}{
-\spadpaste{w := wholeRagits a \free{a}\bound{w}}
-}
-\xtc{
-The operations \spadfunFrom{prefixRagits}{RadixExpansion} and \spadfunFrom{cycleRagits}{RadixExpansion}
-return lists of the initial and repeating ragits in the
-fractional part of the number.
-}{
-\spadpaste{f0 := prefixRagits a \free{a}\bound{f0}}
-}
-\xtc{
-}{
-\spadpaste{f1 := cycleRagits a \free{a}\bound{f1}}
-}
-\xtc{
-You can construct any radix expansion by giving the
-whole, prefix and cycle parts.
-The declaration is necessary to let Axiom
-know the base of the ragits.
-}{
-\spadpaste{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1) \free{w f0 f1}\bound{u}}
-}
-\xtc{
-If there is no repeating part, then the list \spad{[0]} should be used.
-}{
-\spadpaste{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0]) \bound{v}}
-}
-\xtc{
-If you are not interested in the repeating nature of the expansion,
-an infinite stream of ragits can be obtained using
-\spadfunFrom{fractRagits}{RadixExpansion}.
-}{
-\spadpaste{fractRagits(u) \free{u}}
-}
-\xtc{
-Of course, it's possible to recover the fraction representation:
-}{
-\spadpaste{a :: Fraction(Integer) \free{a}}
-}
-
-\showBlurb{RadixExpansion}
-More examples of expansions are available in
-\downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}\ignore{DecimalExpansion},
-\downlink{`BinaryExpansion'}{BinaryExpansionXmpPage}\ignore{BinaryExpansion}, and
-\downlink{`HexadecimalExpansion'}{HexadecimalExpansionXmpPage}\ignore{HexadecimalExpansion}.
-\endscroll
-\autobuttons
-\end{page}
-%
-
-@
-\section{reclos.ht}
-<<reclos.ht>>=
-\newcommand{\RealClosureXmpTitle}{RealClosure}
-\newcommand{\RealClosureXmpNumber}{9.66}
-
-@
-\subsection{RealClosure}
-\label{RealClosureXmpPage}
-\index{pages!RealClosureXmpPage!reclos.ht}
-\index{reclos.ht!pages!RealClosureXmpPage}
-\index{RealClosureXmpPage!reclos.ht!pages}
-<<reclos.ht>>=
-\begin{page}{RealClosureXmpPage}{RealClosure}
-\beginscroll
-
-The Real Closure 1.0 package provided by 
-Renaud Rioboo (Renaud.Rioboo@lip6.fr) consists of different
-packages, categories and domains :
-
-\begin{items}
-\item The package \axiomType{RealPolynomialUtilitiesPackage} which needs 
-a \axiomType{Field} {\em F} and a
-\axiomType{UnivariatePolynomialCategory} domain with coefficients in {\em F}. 
-It computes some
-simple functions such as Sturm and Sylvester sequences 
-(\axiomOpFrom{sturmSequence}{RealPolynomialUtilitiesPackage}, 
-\axiomOpFrom{sylvesterSequence}{RealPolynomialUtilitiesPackage}).
-
-\item The category \axiomType{RealRootCharacterizationCategory} provides 
-abstract
-functions to work with "real roots" of univariate polynomials. These
-resemble variables with some functionality needed to compute important
-operations.
-
-\item The category \axiomType{RealClosedField} provides common operations 
-available over
-real closed fiels. These include finding all the roots of a univariate
-polynomial, taking square (and higher) roots, ...
-
-\item The domain \axiomType{RightOpenIntervalRootCharacterization} is the 
-main code that
-provides the functionality of \axiomType{RealRootCharacterizationCategory} 
-for the case
-of archimedean fields. Abstract roots are encoded with a left closed right
-open interval containing the root together with a defining polynomial for the
-root.
-
-\item  The \axiomType{RealClosure} domain is the end-user code. It provides 
-usual arithmetic
-with real algebraic numbers, along with the functionality of a real closed
-field. It also provides functions to approximate a real algebraic number by an
-element of the base field. This approximation may either be absolute
-(\axiomOpFrom{approximate}{RealClosure}) or relative 
-(\axiomOpFrom{relativeApprox}{RealClosure}).
-
-
-\end{items}
-
-\centerline{CAVEATS}
-
-Since real algebraic expressions are stored as depending on "real roots" which
-are managed like variables, there is an ordering on these. This ordering is
-dynamical in the sense that any new algebraic takes precedence over older
-ones. In particular every creation function raises a new "real root". This has
-the effect that when you type something like 
-\spad{sqrt(2) + sqrt(2)} you have two
-new variables which happen to be equal. To avoid this name the expression such
-as in \spad{s2 := sqrt(2) ; s2 + s2}
-
-Also note that computing times depend strongly on the ordering you implicitly
-provide. Please provide algebraics in the order 
-which seems most natural to you.
-
-\centerline{LIMITATIONS}
-
-This packages uses
-algorithms which are published in [1] and [2] which are based on field
-arithmetics, in particular for polynomial gcd related algorithms. This can be
-quite slow for high degree polynomials and subresultants methods usually work
-best. Beta versions of the package try to use these techniques in a better
-way and work significantly faster. These are mostly based on unpublished
-algorithms and cannot be distributed. Please contact the author if you have a
-particular problem to solve or want to use these versions.
-
-Be aware that approximations behave as post-processing and that all
-computations are done exactly. They can thus be quite time consuming when
-depending on several "real roots".
-
-\centerline{REFERENCES}
-
-
-[1]  R. Rioboo : Real Algebraic Closure of an ordered Field : Implementation 
-     in Axiom. 
-     In proceedings of the ISSAC'92 Conference, Berkeley 1992 pp. 206-215.
-
-[2]  Z. Ligatsikas, R. Rioboo, M. F. Roy : Generic computation of the real
-     closure of an ordered field.
-     In Mathematics and Computers in Simulation Volume 42, Issue 4-6,
-     November 1996.
-
-\centerline{EXAMPLES}
-\xtc{
-We shall work with the real closure of the ordered field of 
-rational numbers.
-}{
-\spadpaste{Ran := RECLOS(FRAC INT) \bound{Ran}}
-}
-\xtc{
-Some simple signs for square roots, these correspond to an extension
-of degree 16 of the rational numbers. Examples provided by J. Abbot.
-}{
-\spadpaste{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d) \free{Ran} \bound{fs}}
-}
-\xtc{
-These produce values very close to zero.
-}{
-\spadpaste{squareDiff1 := fourSquares(73,548,60,586) \free{fs}\bound{sd1}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff1)\free{sd1}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff1)\free{sd1}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff2 := fourSquares(165,778,86,990) \free{fs}\bound{sd2}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff2)\free{sd2}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff2)\free{sd2}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff3 := fourSquares(217,708,226,692) \free{fs}\bound{sd3}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff3)\free{sd3}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff3)\free{sd3}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff4 := fourSquares(155,836,162,820)  \free{fs}\bound{sd4}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff4)\free{sd4}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff4)\free{sd4}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff5 := fourSquares(591,772,552,818) \free{fs}\bound{sd5}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff5)\free{sd5}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff5)\free{sd5}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff6 := fourSquares(434,1053,412,1088) \free{fs}\bound{sd6}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff6)\free{sd6}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff6)\free{sd6}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff7 := fourSquares(514,1049,446,1152) \free{fs}\bound{sd7}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff7)\free{sd7}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff7)\free{sd7}}
-}
-\xtc{
-}{
-\spadpaste{squareDiff8 := fourSquares(190,1751,208,1698) \free{fs}\bound{sd8}}
-}
-\xtc{
-}{
-\spadpaste{recip(squareDiff8)\free{sd8}}
-}
-\xtc{
-}{
-\spadpaste{sign(squareDiff8)\free{sd8}}
-}
-\xtc{
-This should give three digits of precision
-}{
-\spadpaste{relativeApprox(squareDiff8,10**(-3))::Float \free{sd8}}
-}
-\xtc{
-The sum of these 4 roots is 0
-}{
-\spadpaste{l := allRootsOf((x**2-2)**2-2)$Ran \free{Ran} \bound{l}}
-}
-\xtc{
-Check that they are all roots of the same polynomial
-}{
-\spadpaste{removeDuplicates map(mainDefiningPolynomial,l) \free{l}}
-}
-\xtc{
-We can see at a glance that they are separate roots
-}{
-\spadpaste{map(mainCharacterization,l) \free{l}}
-}
-\xtc{
-Check the sum and product
-}{
-\spadpaste{[reduce(+,l),reduce(*,l)-2] \free{l}}
-}
-\xtc{
-A more complicated test that involve an extension of degree 256.
-This is a way of checking nested radical identities.
-}{
-\spadpaste{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran) \free{Ran}\bound{s2}\bound{s5}\bound{s10}}
-}
-\xtc{
-}{
-\spadpaste{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10) \free{s2}\free{s5}\free{s10}\bound{eq1}}
-}
-\xtc{
-}{
-\spadpaste{eq1::Boolean \free{eq1}}
-}
-\xtc{
-}{
-\spadpaste{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2}\free{s5}\free{s10}\bound{eq2}}
-}
-\xtc{
-}{
-\spadpaste{eq2::Boolean \free{eq2}}
-}
-\xtc{
-Some more examples from J. M. Arnaudies
-}{
-\spadpaste{s3 := sqrt(3)$Ran \free{Ran}\bound{s3}}
-}
-\xtc{
-}{
-\spadpaste{s7:= sqrt(7)$Ran \free{Ran}\bound{s7}}
-}
-\xtc{
-}{
-\spadpaste{e1 := sqrt(2*s7-3*s3,3) \free{s7} \free{s3} \bound{e1}}
-}
-\xtc{
-}{
-\spadpaste{e2 := sqrt(2*s7+3*s3,3) \free{s7} \free{s3} \bound{e2}}
-}
-\xtc{
-This should be null
-}{
-\spadpaste{e2-e1-s3 \free{e2} \free{e1} \free{s3}}
-}
-\xtc{
-A quartic polynomial
-}{
-\spadpaste{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3) \free{Ran} \bound{pol}}
-}
-\xtc{
-Add some cubic roots
-}{
-\spadpaste{r1 := sqrt(7633)$Ran \free{Ran}\bound{r1}}
-}
-\xtc{
-}{
-\spadpaste{alpha := sqrt(5*r1-436,3)/3 \free{r1} \bound{alpha}}
-}
-\xtc{
-}{
-\spadpaste{beta := -sqrt(5*r1+436,3)/3 \free{r1} \bound{beta}}
-}
-\xtc{
-this should be null
-}{
-\spadpaste{pol.(alpha+beta-1/3) \free{pol} \free{alpha} \free{beta}}
-}
-\xtc{
-A quintic polynomial
-}{
-\spadpaste{qol : UP(x,Ran) := x**5+10*x**3+20*x+22 \free{Ran}\bound{qol}}
-}
-\xtc{
-Add some cubic roots
-}{
-\spadpaste{r2 := sqrt(153)$Ran \free{Ran}\bound{r2}}
-}
-\xtc{
-}{
-\spadpaste{alpha2 := sqrt(r2-11,5) \free{r2}\bound{alpha2}}
-}
-\xtc{
-}{
-\spadpaste{beta2 := -sqrt(r2+11,5) \free{r2}\bound{beta2}}
-}
-\xtc{
-this should be null
-}{
-\spadpaste{qol(alpha2+beta2) \free{qol}\free{alpha2}\free{beta2}}
-}
-\xtc{
-Finally, some examples from the book Computer Algebra by 
-Davenport, Siret and Tournier (page 77).
-The last one is due to Ramanujan.
-}{
-\spadpaste{dst1:=sqrt(9+4*s2)=1+2*s2 \free{s2}\bound{dst1}}
-}
-\xtc{
-}{
-\spadpaste{dst1::Boolean \free{dst1}}
-}
-\xtc{
-}{
-\spadpaste{s6:Ran:=sqrt 6 \free{Ran}\bound{s6}}
-}
-\xtc{
-}{
-\spadpaste{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3 \free{s6}\free{s3}\bound{dst2}}
-}
-\xtc{
-}{
-\spadpaste{dst2::Boolean \free{dst2}}
-}
-\xtc{
-}{
-\spadpaste{s29:Ran:=sqrt 29 \free{Ran}\bound{s29}}
-}
-\xtc{
-}{
-\spadpaste{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5 \free{s29}\free{s5}\bound{dst4}}
-}
-\xtc{
-}{
-\spadpaste{dst4::Boolean \free{dst4}}
-}
-\xtc{
-}{
-\spadpaste{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5 \free{s2}\free{s5}\bound{dst6}}
-}
-\xtc{
-}{
-\spadpaste{dst6::Boolean \free{dst6}}
-}
-\xtc{
-}{
-\spadpaste{f3:Ran:=sqrt(3,5) \free{Ran}\bound{f3}}
-}
-\xtc{
-}{
-\spadpaste{f25:Ran:=sqrt(1/25,5) \free{Ran}\bound{f25}}
-}
-\xtc{
-}{
-\spadpaste{f32:Ran:=sqrt(32/5,5) \free{Ran}\bound{f32}}
-}
-\xtc{
-}{
-\spadpaste{f27:Ran:=sqrt(27/5,5) \free{Ran}\bound{f27}}
-}
-\xtc{
-}{
-\spadpaste{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32}\free{f27}\free{f25}\free{f3}\bound{dst5}}
-}
-\xtc{
-}{
-\spadpaste{dst5::Boolean \free{dst5}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{record.ht}
-\subsection{Domain {\bf Record(a:A,...,b:B)}}
-\label{DomainRecord}
-\index{pages!DomainRecord!record.ht}
-\index{record.ht!pages!DomainRecord}
-\index{DomainRecord!record.ht!pages}
-<<record.ht>>=
-\begin{page}{DomainRecord}{Domain {\em Record(a:A,...,b:B)}}
-\beginscroll
-{\em Record} takes any number of selector-domain pairs as arguments:
-\indentrel{2}
-\newline \spad{a}, a selector, an element of domain \spadtype{Symbol}
-\newline \spad{A}, a domain of category \spadtype{SetCategory}
-\newline\tab{10}...
-\newline \spad{b}, a selector, an element of domain \spadtype{Symbol}
-\newline \spad{B}, a domain of category \spadtype{SetCategory}
-\indentrel{-2}\newline
-This constructor is a primitive in Axiom. 
-\newline
-\beginmenu
-\item\menulispdownlink{Description}{(|dbSpecialDescription| '|Record|)}\tab{15}General description
-\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|Record|)}\tab{15}All exported operations of {\em Record(a:A,b:B)}
-%\item\menudownlink{Examples}   {RecordExamples}   \tab{15}Examples illustrating use
-%\item\menudownlink{Exports}    {RecordExports}    \tab{15}Explicit categories and operations
-\endmenu
-\vspace{1}\newline
-The selectors {\em a,...,b} of a \spad{Record} type must be distinct.
-\endscroll\end{page}
- 
-@
-\subsection{Domain Constructor {\bf Record}}
-\label{RecordDescription}
-\index{pages!RecordDescription!record.ht}
-\index{record.ht!pages!RecordDescription}
-\index{RecordDescription!record.ht!pages}
-<<record.ht>>=
-\begin{page}{RecordDescription}{Domain Constructor {\em Record}}
-\beginscroll
-\newline\menuitemstyle{}\tab{2}Record({\em a:A},{\em b:B})
-\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
-{\em a}, a selector, an element of domain \spadtype{Symbol}
-\newline\tab{-2}
-{\em A}, a domain of category \spadtype{SetCategory}
-\newline\tab{10}...
-\newline\tab{-2}
-{\em b}, a selector, an element of domain \spadtype{Symbol}
-\newline\tab{-2}
-{\em B}, a domain of category \spadtype{SetCategory}
-\indent{0}\newline\tab{2}{\em Returns:}\indent{15}\tab{0}
-a record object with component objects of type {\em A},...,{\em B} with 
-correponding selectors {\em a},...,{\em b}
-as described below.
-\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
-{\em Record(a:A,b:B)} is used to create the class of pairs of objects made
-up of a value of type {\em A} selected by the symbol {\em a} and
-a value of type {\em B} selected by the symbol {\em b}.
-In general, the {\em Record} constructor can take any number of arguments and thus can 
-be used to create aggregates of 
-heterogeneous components of arbitrary size selectable by name.
-{\em Record} is a primitive domain of Axiom which cannot be
-defined in the Axiom language. 
-\endscroll
-\end{page}
-
-
-@
-\section{regset.ht}
-<<regset.ht>>=
-\newcommand{\RegularTriangularSetXmpTitle}{RegularTriangularSet}
-\newcommand{\RegularTriangularSetXmpNumber}{9.67}
-
-@
-\subsection{RegularTriangularSet}
-\label{RegularTriangularSetXmpPage}
-\index{pages!RegularTriangularSetXmpPage!regset.ht}
-\index{regset.ht!pages!RegularTriangularSetXmpPage}
-\index{RegularTriangularSetXmpPage!regset.ht!pages}
-<<regset.ht>>=
-\begin{page}{RegularTriangularSetXmpPage}{RegularTriangularSet}
-\beginscroll
-The \spadtype{RegularTriangularSet} domain constructor implements
-regular triangular sets.
-These particular triangular sets were introduced by M. Kalkbrener (1991) 
-in his PhD Thesis under the name regular chains.
-Regular chains and their related concepts are presented in
-the paper "On the Theories of Triangular sets" By P. Aubry, D. Lazard
-and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
-The \spadtype{RegularTriangularSet} 
-constructor also provides a new method (by the third author) 
-for solving polynomial system by means of regular chains.
-This method has two ways of solving.
-One has the same specifications as Kalkbrener's algorithm (1991)
-and the other is closer to Lazard's method (Discr. App. Math, 1991).
-Moreover, this new method removes redundant component from the 
-decompositions when this is not {\em too expensive}.
-This is always the case with square-free regular chains.
-So if you want to obtain decompositions without redundant components
-just use the \spadtype{SquareFreeRegularTriangularSet} domain constructor 
-or the \spadtype{LazardSetSolvingPackage} package constructor.
-See also the \spadtype{LexTriangularPackage} and 
-\spadtype{ZeroDimensionalSolvePackage} for the case of 
-algebraic systems with a finite number of (complex) solutions.
-
-One of the main features of regular triangular sets is that they
-naturally define towers of simple extensions of a field.
-This allows to perform with multivariate polynomials the 
-same kind of operations as one can do in an \spadtype{EuclideanDomain}.
-
-The \spadtype{RegularTriangularSet} constructor takes four arguments.
-The first one, {\bf R}, is the coefficient ring of the polynomials;
-it must belong to the category \spadtype{GcdDomain}.
-The second one, {\bf E}, is the exponent monoid of the polynomials;
-it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
-the third one, {\bf V}, is the ordered set of variables;
-it must belong to the category \spadtype{OrderedSet}.
-The last one is the polynomial ring;
-it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
-The abbreviation for \spadtype{RegularTriangularSet} is
-\spadtype{REGSET}.
-See also the constructor \spadtype{RegularChain} which only takes
-two arguments, the coefficient ring and the ordered set of variables;
-in that case, polynomials are necessarily built with the
-\spadtype{NewSparseMultivariatePolynomial}  domain constructor.
-
-We shall explain now how to use the constructor \spadtype{REGSET} 
-and how to read the decomposition of a polynomial system by means 
-of regular sets.
-
-Let us give some examples.
-We start with an easy one (Donati-Traverso) 
-in order to understand the two ways of
-solving polynomial systems provided by the \spadtype{REGSET} constructor.
-\xtc{
-Define the coefficient ring.
-}{
-\spadpaste{R := Integer \bound{R}}
-}
-\xtc{
-Define the list of variables,
-}{
-\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
-}
-\xtc{
-and make it an ordered set;
-}{
-\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
-}
-\xtc{
-then define the exponent monoid.
-}{
-\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
-}
-\xtc{
-Define the polynomial ring.
-}{
-\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
-}
-\xtc{
-Let the variables be polynomial.
-}{
-\spadpaste{x: P := 'x \free{P} \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{y: P := 'y \free{P} \bound{y}}
-}
-\xtc{
-}{
-\spadpaste{z: P := 'z \free{P} \bound{z}}
-}
-\xtc{
-}{
-\spadpaste{t: P := 't \free{P} \bound{t}}
-}
-\xtc{
-Now call the \spadtype{RegularTriangularSet} domain constructor.
-}{
-\spadpaste{T := REGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
-}
-\xtc{
-Define a polynomial system.
-}{
-\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
-}
-\xtc{
-}{
-\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
-}
-\xtc{
-First of all, let us solve this system in the sense of Kalkbrener.
-}{
-\spadpaste{zeroSetSplit(lp)$T \free{lp} \free{T}}
-}
-\xtc{
-And now in the sense of Lazard (or Wu and other authors).
-}{
-\spadpaste{lts := zeroSetSplit(lp,false)$T \free{lp} \free{T} \bound{lts}}
-}
-
-We can see that the first decomposition is a subset of the second.
-So how can both be correct ?
-
-Recall first that polynomials from a domain of the category
-\spadtype{RecursivePolynomialCategory} are regarded
-as univariate polynomials in their main variable.
-For instance the second polynomial in the first set
-of each decomposition has main variable {\bf y}
-and its initial (i.e. its leading coefficient w.r.t. its main
-variable) is {\bf t z}.
-
-Now let us explain how to read the second decomposition.
-Note that the non-constant initials of the first set are
-\texht{$t^4-t$}{{\bf t^4 - t}} and \texht{$t z$}{{\bf t z}}.
-Then the solutions described by this first set are the common
-zeros of its polynomials that do not cancel the polynomials
-\texht{$t^4-t$}{{\bf t^4 - t}} and \texht{$ty z$}{{\bf t z}}.
-Now the solutions of the input system {\bf lp} satisfying
-these equations are described by the second and the third
-sets of the decomposition.
-Thus, in some sense, they can be considered as degenerated
-solutions.
-The solutions given by the first set are called the generic
-points of the system; they give the general form of the
-solutions.
-The first decomposition only provides these generic points.
-This latter decomposition is useful when they are many degenerated 
-solutions (which is sometimes hard to compute) and when
-one is only interested in general informations, like
-the dimension of the input system.
-
-\xtc{
-We can get the dimensions of each component
-of a decomposition as follows.
-}{
-\spadpaste{[coHeight(ts) for ts in lts] \free{lts}}
-}
-
-Thus the first set has dimension one.
-Indeed {\bf t} can take any value, except {\bf 0}
-or any third root of {\bf 1}, whereas {\bf z}
-is completely determined from {\bf t},
-{\bf y} is given by {\bf z} and {\bf t},
-and finally {\bf x} is given by the other three variables.
-In the second and the third sets of the second decomposition
-the four variables are completely determined and thus
-these sets have dimension zero.
-
-We give now the precise specifications of each decomposition. 
-This assume some mathematical knowledge.
-However, for the non-expert user, the above explanations will 
-be sufficient to understand the other features of the
-\spadtype{RSEGSET} constructor.
-
-The input system {\bf lp} is decomposed in the sense
-of Kalkbrener as finitely many regular sets {\bf T1,...,Ts}
-such that the radical ideal generated by {\bf lp}
-is the intersection of the radicals of the
-saturated ideals of {\bf T1,...,Ts}.
-In other words, the affine variety associated with {\bf lp} 
-is the union of the closures (w.r.t. Zarisky topology)
-of the regular-zeros sets of {\bf T1,...,Ts}.
-
-{\bf N. B.} The prime ideals associated with the 
-radical of the saturated ideal of
-a regular triangular set have all the same dimension;
-moreover these prime ideals can be given by characteristic
-sets with the same main variables. 
-Thus a decomposition in the sense of Kalkbrener
-is unmixed dimensional.
-Then it can be viewed as a {\em lazy}
-decomposition into prime ideals (some of these 
-prime ideals being merged into unmixed dimensional ideals).
-
-Now we explain the other way of solving by means of regular 
-triangular sets.
-The input system {\bf lp} is decomposed in the sense
-of Lazard as finitely many regular triangular sets {\bf T1,...,Ts}
-such that the affine variety associated with {\bf lp}
-is the union of the regular-zeros sets of {\bf T1,...,Ts}.
-Thus a decomposition in the sense of Lazard is also
-a decomposition in the sense of Kalkbrener; the converse
-is false as we have seen before.
-
-When the input system has a finite number of solutions,
-both ways of solving provide similar decompositions as
-we shall see with this second example (Caprasse).
-
-
-\xtc{
-Define a polynomial system.
-}{
-\spadpaste{f1 := y**2*z+2*x*y*t-2*x-z \free{z} \free{x} \free{y} \free{t} \bound{f1}}
-}
-\xtc{
-}{
-\spadpaste{f2 :=   -x**3*z+ 4*x*y**2*z+ 4*x**2*y*t+ 2*y**3*t+ 4*x**2- 10*y**2+ 4*x*z- 10*y*t+ 2 \free{z} \free{x} \free{y} \free{t} \bound{f2}}
-}
-\xtc{
-}{
-\spadpaste{f3 :=  2*y*z*t+x*t**2-x-2*z \free{z} \free{x} \free{y} \free{t} \bound{f3}}
-}
-\xtc{
-}{
-\spadpaste{f4 :=   -x*z**3+ 4*y*z**2*t+ 4*x*z*t**2+ 2*y*t**3+ 4*x*z+ 4*z**2-10*y*t- 10*t**2+2 \free{z} \free{x} \free{y} \free{t} \bound{f4}}
-}
-\xtc{
-}{
-\spadpaste{lf := [f1, f2, f3, f4] \free{f1} \free{f2} \free{f3}  \free{f4} \bound{lf}}
-}
-
-\xtc{
-First of all, let us solve this system in the sense of Kalkbrener.
-}{
-\spadpaste{zeroSetSplit(lf)$T \free{lf} \free{T}}
-}
-\xtc{
-And now in the sense of Lazard (or Wu and other authors).
-}{
-\spadpaste{lts2 := zeroSetSplit(lf,false)$T \free{lf} \free{T} \bound{lts2}}
-}
-
-Up to the ordering of the components, both decompositions are identical.
-
-\xtc{
-Let us check that each component has a finite number of solutions.
-}{
-\spadpaste{[coHeight(ts) for ts in lts2] \free{lts2}}
-}
-
-\xtc{
-Let us count the degrees of each component,
-}{
-\spadpaste{degrees := [degree(ts) for ts in lts2] \free{lts2} \bound{degrees}}
-}
-\xtc{
-and compute their sum.
-}{
-\spadpaste{reduce(+,degrees) \free{degrees}}
-}
-
-We study now the options of the \spadfun{zeroSetSplit} operation.
-As we have seen yet, there is an optional second argument 
-which is a boolean value. If this value is true (this
-is the default) then the decomposition is computed
-in the sense of Kalkbrener, otherwise it is computed
-in the sense of Lazard.
-
-There is a second boolean optional argument that
-can be used (in that case the first optional
-argument must be present).
-This second option allows you to get some information
-during the computations.
-
-Therefore, we need to understand a little what is 
-going on during the computations.
-An important feature of the algorithm is that 
-the intermediate computations are managed in some sense 
-like the processes of a Unix system.
-Indeed, each intermediate computation may generate
-other intermediate computations and the management
-of all these computations is a crucial task for
-the efficiency.
-Thus any intermediate computation may be suspended,
-killed or resumed, depending on algebraic considerations
-that determine priorities for these processes.
-The goal is of course to go as fast as possible 
-towards the final decomposition which means to avoid
-as much as possible unnecessary computations.
-
-To follow the computations, one needs to set to
-\spad{true} the second argument.
-Then a lot of numbers and letters are displayed.
-Between a \spad{[} and a \spad{]} one has 
-the state of the processes at a given time.
-Just after \spad{[} one can see the number of
-processes. 
-Then each process is represented by two numbers
-between \spad{<} and \spad{>}.
-A process consists of a list of polynomial {\bf ps}
-and a triangular set {\bf ts}; its goal is to compute
-the common zeros of {\bf ps} that belong to the
-regular-zeros set of {\bf ts}.
-After the processes, the number between pipes
-gives the total number of polynomials
-in all the sets \spad{ps}.
-Finally, the number between braces gives the number
-of components of a decomposition that are already
-computed. This number may decrease.
-
-Let us take a third example (Czapor-Geddes-Wang) to see how these
-informations are displayed.
-
-\xtc{
-Define a polynomial system.
-}{
-\spadpaste{u : R := 2  \free{R} \bound{u}}
-}
-\xtc{
-}{
-\spadpaste{q1 := 2*(u-1)**2+ 2*(x-z*x+z**2)+ y**2*(x-1)**2- 2*u*x+ 2*y*t*(1-x)*(x-z)+ 2*u*z*t*(t-y)+ u**2*t**2*(1-2*z)+ 2*u*t**2*(z-x)+ 2*u*t*y*(z-1)+ 2*u*z*x*(y+1)+ (u**2-2*u)*z**2*t**2+ 2*u**2*z**2+ 4*u*(1-u)*z+ t**2*(z-x)**2 \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q1}}
-}
-\xtc{
-}{
-\spadpaste{q2 := t*(2*z+1)*(x-z)+ y*(z+2)*(1-x)+ u*(u-2)*t+ u*(1-2*u)*z*t+ u*y*(x+u-z*x-1)+ u*(u+1)*z**2*t \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q2}}
-}
-\xtc{
-}{
-\spadpaste{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1) \free{z} \free{x} \free{y} \free{t} \free{u}  \bound{q3}}
-}
-\xtc{
-}{
-\spadpaste{q4 :=   u**2+4*(z-x**2)+3*y**2*(x-1)**2- 3*t**2*(z-x)**2 +3*u**2*t**2*(z-1)**2+u**2*z*(z-2)+6*u*t*y*(z+x+z*x-1) \free{z} \free{x} \free{y} \free{t} \free{u} \bound{q4}}
-}
-\xtc{
-}{
-\spadpaste{lq := [q1, q2, q3, q4] \free{q1} \free{q2} \free{q3}  \free{q4} \bound{lq}}
-}
-
-
-\xtc{
-Let us try the information option.
-N.B. The timing should be between 1 and 10 minutes, depending on your machine.
-}{
-\spadpaste{zeroSetSplit(lq,true,true)$T \free{lq} \free{T}}
-}
-
-Between a sequence of processes, thus between a \spad{]} and a \spad{[}
-you can see capital letters \spad{W, G, I} and lower case letters
-\spad{i, w}. Each time a capital letter appears a non-trivial computation
-has be performed and its result is put in a hash-table.
-Each time a lower case letter appears a needed result has been 
-found in an hash-table.
-The use of these hash-tables generally speed up the computations.
-However, on very large systems, it may happen that these hash-tables
-become too  big  to be handle by your Axiom configuration.
-Then in these exceptional cases, you may prefer getting a result
-(even if it takes a long time) than getting nothing.
-Hence you need to know how to prevent the \spadtype{RSEGSET} constructor
-from using these hash-tables.
-In that case you will be using the \spadfun{zeroSetSplit} with five arguments.
-The first one is the input system {\bf lp} as above.
-The second one is a boolean value \spad{hash?} which is \spad{true}
-iff you want to use hash-tables.
-The third one is boolean value \spad{clos?} which is \spad{true}
-iff you want to solve your system in the sense of Kalkbrener,
-the other way remaining that of Lazard.
-The fourth argument is boolean value \spad{info?} which is \spad{true}
-iff you want to display information during the computations.
-The last one is boolean value \spad{prep?} which is \spad{true}
-iff you want to use some heuristics that are performed on the
-input system before starting the real algorithm.
-The value of this flag is \spad{true} when you are using \spadfun{zeroSetSplit} 
-with less than five arguments.
-Note that there is no available signature for \spadfun{zeroSetSplit} with 
-four arguments.
-
-We finish this section by some remarks about both ways of
-solving, in the sense of Kalkbrener or in the sense of Lazard.
-For problems with a finite number of solutions, there are
-theoretically equivalent and the resulting decompositions
-are identical, up to the ordering of the components.
-However, when solving in the sense of Lazard, the algorithm
-behaves differently.
-In that case, it becomes more incremental than in the sense
-of Kalkbrener. That means the polynomials of the input system
-are considered one after another whereas in the sense of Kalkbrener
-the input system is treated more globally.
-
-This makes an important difference in positive dimension.
-Indeed when solving in the sense of Kalkbrener, the
-{\em Primeidealkettensatz} of Krull is used.
-That means any regular triangular containing more polynomials
-than the input system can be deleted.
-This is not possible when solving in the sense of Lazard.
-This explains why Kalkbrener's decompositions
-usually contain less components than those of Lazard.
-However, it may happen with some examples that the incremental process
-(that cannot be used when solving in the sense of Kalkbrener)
-provide a more efficient way of solving than the global one
-even if the {\em Primeidealkettensatz} is used.
-Thus just try both, with the various options, before concluding 
-that you cannot solve your favorite system with \spadfun{zeroSetSplit}.
-There exist more options at the development level that are not
-currently available in this public version.
-So you are welcome to contact {\em marc@nag.co.uk} for more
-information and help.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{roman.ht}
-<<roman.ht>>=
-\newcommand{\RomanNumeralXmpTitle}{RomanNumeral}
-\newcommand{\RomanNumeralXmpNumber}{9.68}
-
-@
-\subsection{RomanNumeral}
-\label{RomanNumeralXmpPage}
-\index{pages!RomanNumeralXmpPage!roman.ht}
-\index{roman.ht!pages!RomanNumeralXmpPage}
-\index{RomanNumeralXmpPage!roman.ht!pages}
-<<roman.ht>>=
-\begin{page}{RomanNumeralXmpPage}{RomanNumeral}
-\beginscroll
-
-The Roman numeral package was added to Axiom in MCMLXXXVI
-for use in denoting higher order derivatives.
-
-\xtc{
-For example, let \spad{f} be a symbolic operator.
-}{
-\spadpaste{f := operator 'f \bound{f}}
-}
-\xtc{
-This is the seventh derivative of \spad{f} with respect to \spad{x}.
-}{
-\spadpaste{D(f x,x,7) \free{f}}
-}
-\xtc{
-You can have integers printed as Roman numerals by declaring variables to
-be of type \spadtype{RomanNumeral} (abbreviation \spadtype{ROMAN}).
-}{
-\spadpaste{a := roman(1978 - 1965) \bound{a}}
-}
-
-This package now has a small but devoted group of followers that claim
-this domain has shown its efficacy in many other contexts.
-They claim that Roman numerals are every bit as useful as ordinary
-integers.
-\xtc{
-In a sense, they are correct, because Roman numerals form a ring and you
-can therefore construct polynomials with Roman numeral coefficients,
-matrices over Roman numerals, etc..
-}{
-\spadpaste{x : UTS(ROMAN,'x,0) := x \bound{x}}
-}
-\xtc{
-Was Fibonacci Italian or ROMAN?
-}{
-\spadpaste{recip(1 - x - x**2) \free{x}}
-}
-\xtc{
-You can also construct fractions with Roman numeral numerators and
-denominators, as this matrix Hilberticus illustrates.
-}{
-\spadpaste{m : MATRIX FRAC ROMAN \bound{m}}
-}
-\xtc{
-}{
-\spadpaste{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3] \free{m} \bound{m1}}
-}
-\xtc{
-Note that the inverse of the matrix has integral \spadtype{ROMAN} entries.
-}{
-\spadpaste{inverse m \free{m1}}
-}
-\xtc{
-Unfortunately, the spoil-sports say that the fun stops when
-the numbers get big---mostly
-because the Romans didn't establish conventions about representing
-very large numbers.
-}{
-\spadpaste{y := factorial 10 \bound{y}}
-}
-\xtc{
-You work it out!
-}{
-\spadpaste{roman y \free{y}}
-}
-Issue the system command
-\spadcmd{)show RomanNumeral}
-to display the full list of operations defined by
-\spadtype{RomanNumeral}.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{seg.ht}
-<<seg.ht>>=
-\newcommand{\SegmentXmpTitle}{Segment}
-\newcommand{\SegmentXmpNumber}{9.69}
-
-@
-\subsection{Segment}
-\label{SegmentXmpPage}
-\begin{itemize}
-\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
-page~pageref{SegmentBindingXmpPage}
-\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
-page~pageref{UniversalSegmentXmpPage}
-\end{itemize}
-\index{pages!SegmentXmpPage!seg.ht}
-\index{seg.ht!pages!SegmentXmpPage}
-\index{SegmentXmpPage!seg.ht!pages}
-<<seg.ht>>=
-\begin{page}{SegmentXmpPage}{Segment}
-\beginscroll
-
-The \spadtype{Segment} domain provides a generalized interval type.
-
-\labelSpace{2pc}
-\xtc{
-Segments are created using the \spadSyntax{..} construct
-by indicating the (included) end points.
-}{
-\spadpaste{s := 3..10 \bound{s}}
-}
-\xtc{
-The first end point is called the \spadfunFrom{lo}{Segment}
-and the second is called \spadfunFrom{hi}{Segment}.
-}{
-\spadpaste{lo s \free{s}}
-}
-\xtc{
-These names are used even though the end points might belong to an
-unordered set.
-}{
-\spadpaste{hi s \free{s}}
-}
-
-\xtc{
-In addition to the end points, each segment has an integer ``increment.''
-An increment can be specified using the ``\spad{by}'' construct.
-\spadkey{by}
-}{
-\spadpaste{t := 10..3 by -2 \bound{t}}
-}
-\xtc{
-This part can be obtained using the \spadfunFrom{incr}{Segment} function.
-}{
-\spadpaste{incr s \free{s}}
-}
-\xtc{
-Unless otherwise specified, the increment is \spad{1}.
-}{
-\spadpaste{incr t \free{t}}
-}
-
-\xtc{
-A single value can be converted to a segment with equal end points.
-This happens if segments and single values are mixed in a list.
-}{
-\spadpaste{l := [1..3, 5, 9, 15..11 by -1] \bound{l}}
-}
-
-\xtc{
-If the underlying type is an ordered ring, it is possible to perform
-additional operations.
-The \spadfunFrom{expand}{Segment} operation creates a list of
-points in a segment.
-}{
-\spadpaste{expand s \free{s}}
-}
-\xtc{
-If \spad{k > 0}, then \spad{expand(l..h by k)} creates the list
-\spad{[l, l+k, ..., lN]} where \spad{lN <= h < lN+k}.
-If \spad{k < 0}, then \spad{lN >= h > lN+k}.
-}{
-\spadpaste{expand t \free{t}}
-}
-
-\xtc{
-It is also possible to expand a list of segments.  This is equivalent
-to appending lists obtained by expanding each segment individually.
-}{
-\spadpaste{expand l \free{l}}
-}
-
-For more information on related topics, see
-\downlink{`SegmentBinding'}{SegmentBindingXmpPage}\ignore{SegmentBinding} and
-\downlink{`UniversalSegment'}{UniversalSegmentXmpPage}
-\ignore{UniversalSegment}.
-%
-\showBlurb{Segment}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{segbind.ht}
-<<segbind.ht>>=
-\newcommand{\SegmentBindingXmpTitle}{SegmentBinding}
-\newcommand{\SegmentBindingXmpNumber}{9.70}
-
-@
-\subsection{SegmentBinding}
-\label{SegmentBindingXmpPage}
-\begin{itemize}
-\item SegmentXmpPage \ref{SegmentXmpPage} on
-page~pageref{SegmentXmpPage}
-\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
-page~pageref{UniversalSegmentXmpPage}
-\end{itemize}
-\index{pages!SegmentBindingXmpPage!segbind.ht}
-\index{segbind.ht!pages!SegmentBindingXmpPage}
-\index{SegmentBindingXmpPage!segbind.ht!pages}
-<<segbind.ht>>=
-\begin{page}{SegmentBindingXmpPage}{SegmentBinding}
-\beginscroll
-
-The \spadtype{SegmentBinding} type is used
-to indicate a range for a named symbol.
-
-\labelSpace{2pc}
-\xtc{
-First give the symbol, then an \spadSyntax{=} and finally a
-segment of values.
-}{
-\spadpaste{x = a..b}
-}
-\xtc{
-This is used to provide a convenient
-syntax for arguments to certain operations.
-}{
-\spadpaste{sum(i**2, i = 0..n)}
-}
-\graphpaste{draw(x**2, x = -2..2)}
-
-\xtc{
-The left-hand side must be of type \spadtype{Symbol} but the
-right-hand side can be a segment over any type.
-}{
-\spadpaste{sb := y = 1/2..3/2 \bound{sb}}
-}
-\xtc{
-The left- and right-hand sides can be obtained using the
-\spadfunFrom{variable}{SegmentBinding} and
-\spadfunFrom{segment}{SegmentBinding} operations.
-}{
-\spadpaste{variable(sb) \free{sb}}
-}
-\xtc{
-}{
-\spadpaste{segment(sb)  \free{sb}}
-}
-
-For more information on related topics, see
-\downlink{`Segment'}{SegmentXmpPage}\ignore{Segment} and 
-\downlink{`UniversalSegment'}{UniversalSegmentXmpPage}
-\ignore{UniversalSegment}.
-%
-\showBlurb{SegmentBinding}
-\endscroll
-\autobuttons
-\end{page}
-%
-
-@
-\section{set.ht}
-<<set.ht>>=
-\newcommand{\SetXmpTitle}{Set}
-\newcommand{\SetXmpNumber}{9.71}
-
-@
-\subsection{Set}
-\label{SetXmpPage}
-See ListXmpPage \ref{ListXmpPage} on page~\pageref{ListXmpPage}
-\index{pages!SetXmpPage!set.ht}
-\index{set.ht!pages!SetXmpPage}
-\index{SetXmpPage!set.ht!pages}
-<<set.ht>>=
-\begin{page}{SetXmpPage}{Set}
-\beginscroll
-
-The \spadtype{Set} domain allows one to represent explicit finite 
-sets of values.
-These are similar to lists, but duplicate elements are not allowed.
-\xtc{
-Sets can be created by giving a fixed set of values \ldots
-}{
-\spadpaste{s := set [x**2-1, y**2-1, z**2-1] \bound{s}}
-}
-\xtc{
-or by using a collect form, just as for lists.
-In either case, the set is formed from a finite collection of values.
-}{
-\spadpaste{t := set [x**i - i+1 for i in 2..10 | prime? i] \bound{t}}
-}
-
-\xtc{
-The basic operations on sets are
-\spadfunFrom{intersect}{Set}, \spadfunFrom{union}{Set},
-\spadfunFrom{difference}{Set},
-and \spadfunFrom{symmetricDifference}{Set}.
-}{
-\spadpaste{i := intersect(s,t)      \free{s t}\bound{i}}
-}
-\xtc{
-}{
-\spadpaste{u := union(s,t)          \free{s t}\bound{u}}
-}
-\xtc{
-The set \spad{difference(s,t)} contains those members of \spad{s} which
-are not in \spad{t}.
-}{
-\spadpaste{difference(s,t)          \free{s t}}
-}
-\xtc{
-The set \spad{symmetricDifference(s,t)} contains those elements which are
-in \spad{s} or \spad{t} but not in both.
-}{
-\spadpaste{symmetricDifference(s,t)          \free{s t}}
-}
-
-\xtc{
-Set membership is tested using the \spadfunFrom{member?}{Set} operation.
-}{
-\spadpaste{member?(y, s)               \free{s}}
-}
-\xtc{
-}{
-\spadpaste{member?((y+1)*(y-1), s)     \free{s}}
-}
-\xtc{
-The \spadfunFrom{subset?}{Set} function determines whether one set is a subset
-of another.
-}{
-\spadpaste{subset?(i, s)               \free{i s}}
-}
-\xtc{
-}{
-\spadpaste{subset?(u, s)               \free{u s}}
-}
-
-\xtc{
-When the base type is finite, the absolute complement of a set is
-defined.
-This finds the set of all multiplicative generators of
-\spadtype{PrimeField 11}---the integers mod \spad{11.}
-}{
-\spadpaste{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)] \bound{gs}}
-}
-\xtc{
-The following values are not generators.
-}{
-\spadpaste{complement gs \free{gs}}
-}
-
-Often the members of a set are computed individually; in addition,
-values can be inserted or removed from a set over the course of a
-computation.
-\xtc{
-There are two ways to do this:
-}{
-\spadpaste{a := set [i**2 for i in 1..5] \bound{a}}
-}
-\xtc{
-One is to view a set as a data structure and to apply updating operations.
-}{
-\spadpaste{insert!(32, a) \free{a}\bound{ainsert}}
-}
-\xtc{
-}{
-\spadpaste{remove!(25, a) \free{a}\bound{aremove}}
-}
-\xtc{
-}{
-\spadpaste{a \free{aremove ainsert}}
-}
-\xtc{
-The other way is to view a set as a mathematical entity and to
-create new sets from old.
-}{
-\spadpaste{b := b0 := set [i**2 for i in 1..5] \bound{b}}
-}
-\xtc{
-}{
-\spadpaste{b := union(b, {32})         \free{b}\bound{binsert}}
-}
-\xtc{
-}{
-\spadpaste{b := difference(b, {25})    \free{binsert}\bound{bremove}}
-}
-\xtc{
-}{
-\spadpaste{b0 \free{bremove}}
-}
-
-For more information about lists, see 
-\downlink{`List'}{ListXmpPage}\ignore{List}.
-\showBlurb{Set}
-\endscroll
-\autobuttons
-\end{page}
-%
-
-@
-\section{sint.ht}
-<<sint.ht>>=
-\newcommand{\SingleIntegerXmpTitle}{SingleInteger}
-\newcommand{\SingleIntegerXmpNumber}{9.72}
-
-@
-\subsection{SingleInteger}
-\label{SingleIntegerXmpPage}
-\begin{itemize}
-\item ugTypesDeclare \ref{ugTypesDeclare} on
-page~pageref{ugTypesDeclare}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~pageref{ugTypesPkgCallPage}
-\item ugBrowsePage \ref{ugBrowsePage} on
-page~pageref{ugBrowsePage}
-\end{itemize}
-\index{pages!SingleIntegerXmpPage!sint.ht}
-\index{sint.ht!pages!SingleIntegerXmpPage}
-\index{SingleIntegerXmpPage!sint.ht!pages}
-<<sint.ht>>=
-\begin{page}{SingleIntegerXmpPage}{SingleInteger}
-\beginscroll
-
-The \axiomType{SingleInteger} domain is intended to provide support
-in Axiom for machine integer arithmetic.
-It is generally much faster than (bignum) \axiomType{Integer} arithmetic
-but suffers from a limited range of values.
-Since Axiom can be implemented on top of various
-dialects of Lisp, the actual representation of small integers
-may not correspond exactly to the host machines integer representation.
-
-In the CCL implementation of Axiom (Release 2.1 onwards) the underlying
-representation of \axiomType{SingleInteger} 
-is the same as \axiomType{Integer}.  
-The underlying Lisp primitives treat machine-word sized computations
-specially.
-
-\xtc{
-You can discover the minimum and maximum values in your implementation
-by using \spadfunFrom{min}{SingleInteger} and \spadfunFrom{max}{SingleInteger}.
-}{
-\spadpaste{min()\$SingleInteger}
-}
-\xtc{
-}{
-\spadpaste{max()\$SingleInteger}
-}
-\xtc{
-To avoid confusion with \axiomType{Integer}, which is the default
-type for integers, you usually need to work with declared variables
-(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}) \ldots
-}{
-\spadpaste{a := 1234 :: SingleInteger \bound{a}}
-}
-\xtc{
-or use package calling
-(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
-}{
-\spadpaste{b := 124\$SingleInteger \bound{b}}
-}
-\xtc{
-You can add, multiply and subtract \axiomType{SingleInteger} objects,
-and ask for the greatest common divisor (\spadfun{gcd}).
-}{
-\spadpaste{gcd(a,b) \free{a}\free{b}}
-}
-\xtc{
-The least common multiple (\spadfun{lcm}) is also available.
-}{
-\spadpaste{lcm(a,b) \free{a}\free{b}}
-}
-
-\xtc{
-Operations \spadfunFrom{mulmod}{SingleInteger},
-\spadfunFrom{addmod}{SingleInteger},
-\spadfunFrom{submod}{SingleInteger}, and
-\spadfunFrom{invmod}{SingleInteger} are similar---they provide
-arithmetic modulo a given small integer.
-Here is \spad{5 * 6 {\tt mod} 13}.
-}{
-\spadpaste{mulmod(5,6,13)\$SingleInteger}
-}
-\xtc{
-To reduce a small integer modulo a prime, use 
-\spadfunFrom{positiveRemainder}{SingleInteger}.
-}{
-\spadpaste{positiveRemainder(37,13)\$SingleInteger}
-}
-\xtc{
-Operations
-\spadfunFrom{And}{SingleInteger},
-\spadfunFrom{Or}{SingleInteger},
-\spadfunFrom{xor}{SingleInteger},
-and \spadfunFrom{Not}{SingleInteger}
-provide bit level operations on small integers.
-}{
-\spadpaste{And(3,4)\$SingleInteger}
-}
-\xtc{
-Use
-\spad{shift(int,numToShift)} to shift bits, where
-\spad{i} is shifted left if \spad{numToShift} is positive, right
-if negative.
-}{
-\spadpaste{shift(1,4)\$SingleInteger}
-}
-\xtc{
-}{
-\spadpaste{shift(31,-1)\$SingleInteger}
-}
-
-Many other operations are available for small integers, including
-many of those provided for \axiomType{Integer}.
-To see the other operations, use the Browse \HyperName{} facility
-(\downlink{``\ugBrowseTitle''}{ugBrowsePage} in Section 
-\ugBrowseNumber\ignore{ugBrowse}).
-\showBlurb{SingleInteger}.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{sqmatrix.ht}
-<<sqmatrix.ht>>=
-\newcommand{\SquareMatrixXmpTitle}{SquareMatrix}
-\newcommand{\SquareMatrixXmpNumber}{9.74}
-
-@
-\subsection{SquareMatrix}
-\label{SquareMatrixXmpPage}
-\begin{itemize}
-\item MatrxiXmpPage \ref{MatrxiXmpPage} on
-page~pageref{MatrxiXmpPage}
-\item ugTypesWritingModesPage \ref{ugTypesWritingModesPage} on
-page~pageref{ugTypesWritingModesPage}
-\item ugTypesExposePage \ref{ugTypesExposePage} on
-page~pageref{ugTypesExposePage}
-\end{itemize}
-\index{pages!SquareMatrixXmpPage!sqmatrix.ht}
-\index{sqmatrix.ht!pages!SquareMatrixXmpPage}
-\index{SquareMatrixXmpPage!sqmatrix.ht!pages}
-<<sqmatrix.ht>>=
-\begin{page}{SquareMatrixXmpPage}{SquareMatrix}
-\beginscroll
- 
-The top level matrix type in Axiom is \spadtype{Matrix}
-(see \downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}), which
-provides basic arithmetic and linear algebra functions.
-However, since the matrices can be of any size it is not true that any pair
-can be added or multiplied.
-Thus \spadtype{Matrix} has little algebraic structure.
- 
-Sometimes you want to use matrices as coefficients for polynomials
-or in other algebraic contexts.  In this case, \spadtype{SquareMatrix}
-should be used.  The domain \spadtype{SquareMatrix(n,R)} gives the ring of
-\spad{n} by \spad{n} square matrices over \spad{R}.
- 
-\xtc{
-Since \spadtype{SquareMatrix} is not normally exposed at the top level,
-you must expose it before it can be used.
-}{
-\spadpaste{)set expose add constructor SquareMatrix \bound{SQ}}
-}
-\xtc{
-Once \spad{SQMATRIX} has been exposed,
-values can be created using the \spadfunFrom{squareMatrix}{SquareMatrix}
-function.
-}{
-\spadpaste{m := squareMatrix [[1,-\%i],[\%i,4]] \bound{m}\free{SQ}}
-}
-\xtc{
-The usual arithmetic operations are available.
-}{
-\spadpaste{m*m - m \free{m}}
-}
-\xtc{
-Square matrices can be used where ring elements are required.
-For example, here is a matrix with matrix entries.
-}{
-\spadpaste{mm := squareMatrix [[m, 1], [1-m, m**2]] \free{m}\bound{mm}}
-}
-\xtc{
-Or you can construct a polynomial with  square matrix coefficients.
-}{
-\spadpaste{p := (x + m)**2 \free{m}\bound{p}}
-}
-\xtc{
-This value can be converted to a square matrix with polynomial coefficients.
-}{
-\spadpaste{p::SquareMatrix(2, ?) \free{p}}
-}
- 
-For more information on related topics, see
-\downlink{``\ugTypesWritingModesTitle''}{ugTypesWritingModesPage} 
-in Section \ugTypesWritingModesNumber\ignore{ugTypesWritingModes},
-\downlink{``\ugTypesExposeTitle''}{ugTypesExposePage} 
-in Section \ugTypesExposeNumber\ignore{ugTypesExpose}, and
-\downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}.
-\showBlurb{SquareMatrix}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{sregset.ht}
-<<sregset.ht>>=
-\newcommand{\SquareFreeRegularTriangularSetXmpTitle}{SquareFreeRegularTriangularSet}
-\newcommand{\SquareFreeRegularTriangularSetXmpNumber}{9.75}
-
-@
-\subsection{SquareFreeRegularTriangularSet}
-\label{SquareFreeRegularTriangularSetXmpPage}
-\index{pages!SquareFreeRegularTriangularSetXmpPage!sregset.ht}
-\index{sregset.ht!pages!SquareFreeRegularTriangularSetXmpPage}
-\index{SquareFreeRegularTriangularSetXmpPage!sregset.ht!pages}
-<<sregset.ht>>=
-\begin{page}{SquareFreeRegularTriangularSetXmpPage}
-{SquareFreeRegularTriangularSet}
-\beginscroll
-The \spadtype{SquareFreeRegularTriangularSet} domain constructor implements
-square-free regular triangular sets.
-See the \spadtype{RegularTriangularSet} domain constructor
-for general regular triangular sets.
-Let {\em T} be a regular triangular set consisting of polynomials
-{\em t1, ..., tm} ordered by increasing main variables.
-The regular triangular set {\em T} is square-free if {\em T} 
-is empty or if {\em t1, ..., tm-1} is square-free  and if
-the polynomial {\em tm} is square-free as
-a univariate polynomial with coefficients in the tower
-of simple extensions associated with {\em t1, ..., tm-1}.
-
-The main interest of square-free regular triangular sets
-is that their associated towers of simple extensions
-are product of fields.
-Consequently, the saturated ideal of a square-free regular triangular set
-is radical.
-This property simplifies some of the operations related
-to regular triangular sets.
-However, building square-free regular triangular sets
-is generally more  expensive than building
-general regular triangular sets.
-
-As the \spadtype{RegularTriangularSet} domain constructor,
-the \spadtype{SquareFreeRegularTriangularSet} 
-domain constructor also implements
-a method for solving polynomial systems by means of regular triangular sets.
-This is in fact the same method with some adaptations to take into
-account the fact that the computed regular chains are square-free.
-Note that it is also possible to pass from a decomposition
-into general regular triangular sets to a decomposition into
-square-free regular triangular sets.
-This conversion is used internally by the 
-\spadtype{LazardSetSolvingPackage} package constructor.
-
-{\bf N.B.} When solving polynomial systems with the 
-\spadtype{SquareFreeRegularTriangularSet} domain constructor
-or the \spadtype{LazardSetSolvingPackage} package constructor,
-decompositions have no redundant components.
-See also \spadtype{LexTriangularPackage} and 
-\spadtype{ZeroDimensionalSolvePackage} for the case of 
-algebraic systems with a finite number of (complex) solutions.
-
-We shall explain now how to use the constructor 
-\spadtype{SquareFreeRegularTriangularSet}.
-
-This constructor takes four arguments.
-The first one, {\bf R}, is the coefficient ring of the polynomials;
-it must belong to the category \spadtype{GcdDomain}.
-The second one, {\bf E}, is the exponent monoid of the polynomials;
-it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
-the third one, {\bf V}, is the ordered set of variables;
-it must belong to the category \spadtype{OrderedSet}.
-The last one is the polynomial ring;
-it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
-The abbreviation for \spadtype{SquareFreeRegularTriangularSet} is
-\spadtype{SREGSET}.
-
-Note that the way of understanding triangular decompositions 
-is detailed in the example of the \spadtype{RegularTriangularSet}
-constructor.
-
-\xtc{
-Let us illustrate the use of this constructor 
-with one example (Donati-Traverso).
-Define the coefficient ring.
-}{
-\spadpaste{R := Integer \bound{R}}
-}
-\xtc{
-Define the list of variables,
-}{
-\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
-}
-\xtc{
-and make it an ordered set;
-}{
-\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
-}
-\xtc{
-then define the exponent monoid.
-}{
-\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
-}
-\xtc{
-Define the polynomial ring.
-}{
-\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
-}
-\xtc{
-Let the variables be polynomial.
-}{
-\spadpaste{x: P := 'x \free{P} \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{y: P := 'y \free{P} \bound{y}}
-}
-\xtc{
-}{
-\spadpaste{z: P := 'z \free{P} \bound{z}}
-}
-\xtc{
-}{
-\spadpaste{t: P := 't \free{P} \bound{t}}
-}
-\xtc{
-Now call the \spadtype{SquareFreeRegularTriangularSet} domain constructor.
-}{
-\spadpaste{ST := SREGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{ST} }
-}
-\xtc{
-Define a polynomial system.
-}{
-\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
-}
-\xtc{
-}{
-\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
-}
-
-\xtc{
-First of all, let us solve this system in the sense of Kalkbrener.
-}{
-\spadpaste{zeroSetSplit(lp)$ST \free{lp} \free{ST}}
-}
-\xtc{
-And now in the sense of Lazard (or Wu and other authors).
-}{
-\spadpaste{zeroSetSplit(lp,false)$ST \free{lp} \free{ST} \bound{lts}}
-}
-
-Now to see the difference with the \spadtype{RegularTriangularSet} domain constructor,
-\xtc{
-we define:
-}{
-\spadpaste{T := REGSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
-}
-\xtc{
-and compute:
-}{
-\spadpaste{lts := zeroSetSplit(lp,false)$T \free{lp} \free{T} \bound{lts}}
-}
-If you look at the second set in both decompositions in the sense of Lazard,
-you will see that the polynomial with main variable {\bf y} is not the same.
-
-Let us understand what has happened.
-\xtc{
-We define:
-}{
-\spadpaste{ts := lts.2  \free{lts}  \bound{ts}}
-}
-\xtc{
-}{
-\spadpaste{pol := select(ts,'y)$T \free{ts} \free{y} \free{T} \bound{pol}}
-}
-\xtc{
-}{
-\spadpaste{tower := collectUnder(ts,'y)$T \free{ts} \free{y} \free{T} \bound{tower}}
-}
-\xtc{
-}{
-\spadpaste{pack := RegularTriangularSetGcdPackage(R,E,V,P,T) \free{R} \free{E} \free{V} \free{P} \free{T} \bound{pack}}
-}
-\xtc{
-Then we compute:
-}{
-\spadpaste{toseSquareFreePart(pol,tower)$pack \free{pol} \free{tower} \free{pack}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{stbl.ht}
-<<stbl.ht>>=
-\newcommand{\SparseTableXmpTitle}{SparseTable}
-\newcommand{\SparseTableXmpNumber}{9.73}
-
-@
-\subsection{SparseTable}
-\label{SparseTableXmpPage}
-\begin{itemize}
-\item TableXmpPage \ref{TableXmpPage} on
-page~pageref{TableXmpPage}
-\item GeneralSparseTableXmpPage \ref{GeneralSparseTableXmpPage} on
-page~pageref{GeneralSparseTableXmpPage}
-\end{itemize}
-\index{pages!SparseTableXmpPage!stbl.ht}
-\index{stbl.ht!pages!SparseTableXmpPage}
-\index{SparseTableXmpPage!stbl.ht!pages}
-<<stbl.ht>>=
-\begin{page}{SparseTableXmpPage}{SparseTable}
-\beginscroll
-%
-The \spadtype{SparseTable} domain provides a general purpose
-table type with default entries.
-\xtc{
-Here we create a table to save strings under integer keys.
-The value \spad{"Try again!"} is returned if no other value has been
-stored for a key.
-}{
-\spadpaste{t: SparseTable(Integer, String, "Try again!") := table() \bound{t}}
-}
-\xtc{
-Entries can be stored in the table.
-}{
-\spadpaste{t.3 := "Number three" \free{t}\bound{t1}}
-}
-\xtc{
-}{
-\spadpaste{t.4 := "Number four" \free{t}\bound{t2}}
-}
-\xtc{
-These values can be retrieved as usual, but if a look up fails
-the default entry will be returned.
-}{
-\spadpaste{t.3 \free{t1}}
-}
-\xtc{
-}{
-\spadpaste{t.2 \free{t}}
-}
-\xtc{
-To see which values are explicitly stored, the
-\spadfunFrom{keys}{SparseTable} and \spadfunFrom{entries}{SparseTable}
-functions can be used.
-}{
-\spadpaste{keys t \free{t1 t2}}
-}
-\xtc{
-}{
-\spadpaste{entries t \free{t1 t2}}
-}
-If a specific table representation
-is required, the \spadtype{GeneralSparseTable} constructor should be used.
-The domain \spadtype{SparseTable(K, E, dflt)} is equivalent to
-\spadtype{GeneralSparseTable(K,E, Table(K,E), dflt)}.
-For more information, see
-\downlink{`Table'}{TableXmpPage}\ignore{Table} and
-\downlink{`GeneralSparseTable'}{GeneralSparseTableXmpPage}
-\ignore{GeneralSparseTable}.
-\showBlurb{SparseTable}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{stream.ht}
-<<stream.ht>>=
-\newcommand{\StreamXmpTitle}{Stream}
-\newcommand{\StreamXmpNumber}{9.76}
-
-@
-\subsection{Stream}
-\label{StreamXmpPage}
-\begin{itemize}
-\item ugLangItsPage \ref{ugLangItsPage} on
-page~pageref{ugLangItsPage}
-\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
-page~pageref{ugProblemSeriesPage}
-\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
-page~pageref{ContinuedFractionXmpPage}
-\item ListXmpPage \ref{ListXmpPage} on
-page~pageref{ListXmpPage}
-\end{itemize}
-\index{pages!StreamXmpPage!stream.ht}
-\index{stream.ht!pages!StreamXmpPage}
-\index{StreamXmpPage!stream.ht!pages}
-<<stream.ht>>=
-\begin{page}{StreamXmpPage}{Stream}
-\beginscroll
-
-A \spadtype{Stream} object is represented as a list whose 
-last element contains the
-wherewithal to create the next element, should it ever be required.
-\xtc{
-Let \spad{ints} be the infinite stream of non-negative integers.
-}{
-\spadpaste{ints := [i for i in 0..] \bound{ints}}
-}
-By default, ten stream elements are calculated.
-This number may be changed to something else by the system command
-\spadcmd{)set streams calculate}.
-For the display purposes of this book, we have chosen a smaller value.
-\xtc{
-More generally, you can construct a stream by specifying its initial
-value and a function which, when given an element, creates the next element.
-}{
-\spadpaste{f : List INT -> List INT \bound{fdec}}
-}
-\xtc{
-}{
-\spadpaste{f x == [x.1 + x.2, x.1] \bound{f}\free{fdec}}
-}
-\xtc{
-}{
-\spadpaste{fibs := [i.2 for i in [generate(f,[1,1])]] \bound{fibs}\free{f}}
-}
-\xtc{
-You can create the stream of odd non-negative integers by either filtering
-them from the integers, or by evaluating an expression for each integer.
-}{
-\spadpaste{[i for i in ints | odd? i] \free{ints}}
-}
-\xtc{
-}{
-\spadpaste{odds := [2*i+1 for i in ints]\bound{odds}\free{ints}}
-}
-\xtc{
-You can accumulate the initial segments of a stream using the
-\spadfunFrom{scan}{StreamFunctions2} operation.
-}{
-\spadpaste{scan(0,+,odds) \free{odds}}
-}
-\xtc{
-The corresponding elements of
-two or more streams can be combined in this way.
-}{
-\spadpaste{[i*j for i in ints for j in odds]\free{ints} \free{odds}}
-}
-\xtc{
-}{
-\spadpaste{map(*,ints,odds)\free{ints odds}}
-}
-\xtc{
-Many operations similar to those applicable to lists are available for
-streams.
-}{
-\spadpaste{first ints \free{ints}}
-}
-\xtc{
-}{
-\spadpaste{rest ints \free{ints}}
-}
-\xtc{
-}{
-\spadpaste{fibs 20 \free{fibs}}
-}
-The packages \spadtype{StreamFunctions1},
-\spadtype{StreamFunctions2} and
-\spadtype{StreamFunctions3} export some useful stream manipulation
-operations.
-For more information, see
-\downlink{``\ugLangItsTitle''}{ugLangItsPage} in Section 
-\ugLangItsNumber\ignore{ugLangIts},
-\downlink{``\ugProblemSeriesTitle''}{ugProblemSeriesPage} 
-in Section \ugProblemSeriesNumber\ignore{ugProblemSeries},
-\downlink{`ContinuedFraction'}{ContinuedFractionXmpPage}
-\ignore{ContinuedFraction}, and
-\downlink{`List'}{ListXmpPage}\ignore{List}.
-%
-\showBlurb{Stream}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{string.ht}
-<<string.ht>>=
-\newcommand{\StringXmpTitle}{String}
-\newcommand{\StringXmpNumber}{9.77}
-
-@
-\subsection{String}
-\label{StringXmpPage}
-\begin{itemize}
-\item CharacterXmpPage \ref{CharacterXmpPage} on
-page~pageref{CharacterXmpPage}
-\item CharacterClassXmpPage \ref{CharacterClassXmpPage} on
-page~pageref{CharacterClassXmpPage}
-\end{itemize}
-\index{pages!StringXmpPage!string.ht}
-\index{string.ht!pages!StringXmpPage}
-\index{StringXmpPage!string.ht!pages}
-<<string.ht>>=
-\begin{page}{StringXmpPage}{String}
-\beginscroll
-
-The type \spadtype{String} provides character strings.  Character
-strings provide all the operations for a one-dimensional array of
-characters, plus additional operations for manipulating text.  For
-more information on related topics, see
-\downlink{`Character'}{CharacterXmpPage}\ignore{Character} and
-\downlink{`CharacterClass'}{CharacterClassXmpPage}\ignore{CharacterClass}.
-You can also issue the system command \spadcmd{)show String} to
-display the full list of operations defined by \spadtype{String}.
-
-\xtc{
-String values can be created using double quotes.
-}{
-\spadpaste{hello := "Hello, I'm Axiom!" \bound{hello}}
-}
-\xtc{
-Note, however, that double quotes and underscores must be preceded by
-an extra underscore.
-}{
-\spadpaste{said  := "Jane said, _"Look!_"" \bound{said}}
-}
-\xtc{
-}{
-\spadpaste{saw   := "She saw exactly one underscore: __." \bound{saw}}
-}
-\xtc{
-It is also possible to use \spadfunFrom{new}{String} to create a string of any size
-filled with a given character.
-Since there are many \spadfun{new} functions
-it is necessary to indicate the desired type.
-}{
-\spadpaste{gasp: String := new(32, char "x") \bound{gasp}}
-}
-\xtc{
-The length of a string is given by \spadopFrom{\#}{List}.
-}{
-\spadpaste{\#gasp \free{gasp}}
-}
-\xtc{
-Indexing operations allow characters to be extracted or replaced in strings.
-For any string \spad{s}, indices lie in the range \spad{1..\#s}.
-}{
-\spadpaste{hello.2 \free{hello}}
-}
-\xtc{
-Indexing is really just the application of a string to a subscript,
-so any application syntax works.
-}{
-\spadpaste{hello 2  \free{hello}}
-}
-\xtc{
-}{
-\spadpaste{hello(2) \free{hello}}
-}
-\xtc{
-If it is important not to modify a given string, it should be copied
-before any updating operations are used.
-}{
-\spadpaste{hullo := copy hello \free{hello}\bound{hullo0}}
-}
-\xtc{
-}{
-\spadpaste{hullo.2 := char "u"; [hello, hullo] \free{hullo0 hello}\bound{hullo}}
-}
-
-\xtc{
-Operations are provided to split and join strings.
-The \spadfunFrom{concat}{String} operation allows several strings to be joined
-together.
-}{
-\spadpaste{saidsaw := concat ["alpha","---","omega"] \bound{saidsaw}}
-}
-\xtc{
-There is a version of \spadfunFrom{concat}{String} that works with
-two strings.
-}{
-\spadpaste{concat("hello ","goodbye")}
-}
-\xtc{
-Juxtaposition can also be used to concatenate strings.
-}{
-\spadpaste{"This " "is " "several " "strings " "concatenated."}
-}
-\xtc{
-Substrings are obtained by giving an index range.
-}{
-\spadpaste{hello(1..5) \free{hello}}
-}
-\xtc{
-}{
-\spadpaste{hello(8..) \free{hello}}
-}
-\xtc{
-A string can be split into several substrings by giving a separation character
-or character class.
-}{
-\spadpaste{split(hello, char " ")              \free{hello}}
-}
-\xtc{
-}{
-\spadpaste{other := complement alphanumeric(); \bound{other}}
-}
-\xtc{
-}{
-\spadpaste{split(saidsaw, other)               \free{saidsaw other}}
-}
-\xtc{
-Unwanted characters can be trimmed from the beginning or end of a string
-using the operations \spadfunFrom{trim}{String}, \spadfunFrom{leftTrim}{String}
-and \spadfunFrom{rightTrim}{String}.
-}{
-\spadpaste{trim     ("\#\# ++ relax ++ \#\#", char "\#")}
-}
-\xtc{
-Each of these functions takes a string and a second argument to specify
-the characters to be discarded.
-}{
-\spadpaste{trim     ("\#\# ++ relax ++ \#\#", other) \free{other}}
-}
-\xtc{
-The second argument can be given
-either as a single character or as a character class.
-}{
-\spadpaste{leftTrim ("\#\# ++ relax ++ \#\#", other) \free{other}}
-}
-\xtc{
-}{
-\spadpaste{rightTrim("\#\# ++ relax ++ \#\#", other) \free{other}}
-}
-
-\xtc{
-Strings can be changed to upper case or lower case using the operations
-\spadfunFrom{upperCase}{String}, \spadfunFromX{upperCase}{String}, 
-\spadfunFrom{lowerCase}{String} and
-\spadfunFromX{lowerCase}{String}.
-}{
-\spadpaste{upperCase hello \free{hello}}
-}
-\xtc{
-The versions with the exclamation mark
-change the original string, while the others produce a copy.
-}{
-\spadpaste{lowerCase hello \free{hello}}
-}
-
-\xtc{
-Some basic string matching is provided.
-The function \spadfunFrom{prefix?}{String}
-tests whether one string is an initial prefix of another.
-}{
-\spadpaste{prefix?("He", "Hello")}
-}
-\xtc{
-}{
-\spadpaste{prefix?("Her", "Hello")}
-}
-\xtc{
-A similar function, \spadfunFrom{suffix?}{String}, tests for suffixes.
-}{
-\spadpaste{suffix?("", "Hello")}
-}
-\xtc{
-}{
-\spadpaste{suffix?("LO", "Hello")}
-}
-\xtc{
-The function \spadfunFrom{substring?}{String} tests for a substring 
-given a starting
-position.
-}{
-\spadpaste{substring?("ll", "Hello", 3)}
-}
-\xtc{
-}{
-\spadpaste{substring?("ll", "Hello", 4)}
-}
-
-\xtc{
-A number of \spadfunFrom{position}{String} functions locate things in strings.
-If the first argument to position is a string, then \spad{position(s,t,i)}
-finds the location of \spad{s} as a substring of \spad{t} starting the
-search at position \spad{i}.
-}{
-\spadpaste{n := position("nd", "underground",   1) \bound{n}}
-}
-\xtc{
-}{
-\spadpaste{n := position("nd", "underground", n+1) \free{n} \bound{n1}}
-}
-\xtc{
-If \spad{s} is not found, then \spad{0} is returned (\spad{minIndex(s)-1}
-in \spadtype{IndexedString}).
-}{
-\spadpaste{n := position("nd", "underground", n+1) \free{n1}\bound{n2}}
-}
-\xtc{
-To search for a specific character or a member of a character class,
-a different first argument is used.
-}{
-\spadpaste{position(char "d", "underground", 1)}
-}
-\xtc{
-}{
-\spadpaste{position(hexDigit(), "underground", 1)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{strtbl.ht}
-<<strtbl.ht>>=
-\newcommand{\StringTableXmpTitle}{StringTable}
-\newcommand{\StringTableXmpNumber}{9.78}
-
-@
-\subsection{StringTable}
-\label{StringTableXmpPage}
-See TableXmpPage \ref{TableXmpPage} on page~\pageref{TableXmpPage}
-\index{pages!StringTableXmpPage!strtbl.ht}
-\index{strtbl.ht!pages!StringTableXmpPage}
-\index{StringTableXmpPage!strtbl.ht!pages}
-<<strtbl.ht>>=
-\begin{page}{StringTableXmpPage}{StringTable}
-\beginscroll
-%
-This domain provides a table type in which the keys are known to
-be strings so special techniques can be used.
-Other than performance, the type \spadtype{StringTable(S)} should
-behave exactly the same way as \spadtype{Table(String,S)}.
-See \downlink{`Table'}{TableXmpPage}\ignore{Table} 
-for general information about tables.
-\showBlurb{StringTable}
-
-\xtc{
-This creates a new table whose keys are strings.
-}{
-\spadpaste{t: StringTable(Integer) := table()  \bound{t}}
-}
-\xtc{
-The value associated with each string key is the number of
-characters in the string.
-}{
-\begin{spadsrc}[\free{t}\bound{h}]
-for s in split("My name is Ian Watt.",char " ")
-  repeat
-    t.s := #s
-\end{spadsrc}
-}
-\xtc{
-}{
-\spadpaste{for key in keys t repeat output [key, t.key] \free{t h}}
-}
-\endscroll
-\autobuttons
-\end{page}
-%
-
-@
-\section{symbol.ht}
-<<symbol.ht>>=
-\newcommand{\SymbolXmpTitle}{Symbol}
-\newcommand{\SymbolXmpNumber}{9.79}
-
-@
-\subsection{Symbol}
-\label{SymbolXmpPage}
-\index{pages!SymbolXmpPage!symbol.ht}
-\index{symbol.ht!pages!SymbolXmpPage}
-\index{SymbolXmpPage!symbol.ht!pages}
-<<symbol.ht>>=
-\begin{page}{SymbolXmpPage}{Symbol}
-\beginscroll
- 
-Symbols are one of the basic types manipulated by Axiom.
-The \spadtype{Symbol} domain provides ways to create
-symbols of many varieties.
-\showBlurb{Symbol}
- 
-\xtc{
-The simplest way to create a symbol is to ``single quote'' an identifier.
-}{
-\spadpaste{X: Symbol := 'x \bound{X}}
-}
-\xtc{
-This gives the symbol even if \spad{x} has been assigned a value.
-If \spad{x} has not been assigned a value, then it is possible to omit
-the quote.
-}{
-\spadpaste{XX: Symbol := x}
-}
-\xtc{
-Declarations must be used when working
-with symbols, because otherwise the interpreter tries to place
-values in a more specialized type \spadtype{Variable}.
-}{
-\spadpaste{A := 'a}
-}
-\xtc{
-}{
-\spadpaste{B := b}
-}
-\xtc{
-The normal way of entering polynomials uses this fact.
-}{
-\spadpaste{x**2 + 1}
-}
- 
-\xtc{
-Another convenient way to create symbols is to convert a string.
-This is useful when the name is to be constructed by a program.
-}{
-\spadpaste{"Hello"::Symbol}
-}
-\xtc{
-Sometimes it is necessary to generate new unique symbols, for example, to
-name constants of integration.
-The expression \spad{new()} generates a symbol starting with \spad{\%}.
-}{
-\spadpaste{new()\$Symbol}
-}
-\xtc{
-Successive calls to \spadfunFrom{new}{Symbol} produce different symbols.
-}{
-\spadpaste{new()\$Symbol}
-}
-\xtc{
-The expression \spad{new("s")} produces a symbol starting with \spad{\%s}.
-}{
-\spadpaste{new("xyz")\$Symbol}
-}
- 
-\xtc{
-A symbol can be adorned in various ways.
-The most basic thing is applying a symbol to a list
-of subscripts.
-}{
-\spadpaste{X[i,j] \free{X}}
-}
- 
-\xtc{
-Somewhat less pretty is to attach subscripts, superscripts or arguments.
-}{
-\spadpaste{U := subscript(u, [1,2,1,2]) \bound{U}}
-}
-\xtc{
-}{
-\spadpaste{V := superscript(v, [n]) \bound{V}}
-}
-\xtc{
-}{
-\spadpaste{P := argscript(p, [t]) \bound{P}}
-}
- 
-\xtc{
-It is possible to test whether a symbol has scripts using the
-\spadfunFrom{scripted?}{Symbol} test.
-}{
-\spadpaste{scripted? U \free{U}}
-}
-\xtc{
-}{
-\spadpaste{scripted? X \free{X}}
-}
-\xtc{
-If a symbol is not scripted, then it may be converted to a string.
-}{
-\spadpaste{string X \free{X}}
-}
-\xtc{
-The basic parts can always be extracted using the
-\spadfunFrom{name}{Symbol} and \spadfunFrom{scripts}{Symbol} operations.
-}{
-\spadpaste{name U \free{U}}
-}
-\xtc{
-}{
-\spadpaste{scripts U \free{U}}
-}
-\xtc{
-}{
-\spadpaste{name X \free{X}}
-}
-\xtc{
-}{
-\spadpaste{scripts X \free{X}}
-}
- 
-\xtc{
-The most general form is obtained using the \spadfunFrom{script}{Symbol}
-operation.
-This operation takes an argument which is a list containing, in this order,
-lists of subscripts, superscripts, presuperscripts, presubscripts and
-arguments to a symbol.
-}{
-\spadpaste{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]]) \bound{M}}
-}
-\xtc{
-}{
-\spadpaste{scripts M \free{M}}
-}
-\xtc{
-If trailing lists of scripts are omitted, they are assumed to be empty.
-}{
-\spadpaste{N := script(Nut, [[i,j],[k,l],[0,1]]) \bound{N}}
-}
-\xtc{
-}{
-\spadpaste{scripts N \free{N}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{table.ht}
-<<table.ht>>=
-\newcommand{\TableXmpTitle}{Table}
-\newcommand{\TableXmpNumber}{9.80}
-
-@
-\subsection{Table}
-\label{TableXmpPage}
-\begin{itemize}
-\item AssociationList \ref{AssociationList} on
-page~pageref{AssociationList}
-\item EqTableXmpPage \ref{EqTableXmpPage} on
-page~pageref{EqTableXmpPage}
-\item StringTableXmpPage \ref{StringTableXmpPage} on
-page~pageref{StringTableXmpPage}
-\item SparseTableXmpPage \ref{SparseTableXmpPage} on
-page~pageref{SparseTableXmpPage}
-\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
-page~pageref{KeyedAccessFileXmpPage}
-\end{itemize}
-\index{pages!TableXmpPage!table.ht}
-\index{table.ht!pages!TableXmpPage}
-\index{TableXmpPage!table.ht!pages}
-<<table.ht>>=
-\begin{page}{TableXmpPage}{Table}
-\beginscroll
-
-The \spadtype{Table} constructor provides a general structure
-for associative storage.
-This type provides hash tables in which data objects
-can be saved according to keys of any type.
-For a given table, specific types must be chosen for the keys and entries.
-
-\xtc{
-In this example the keys to the table are polynomials with
-integer coefficients.
-The entries in the table are strings.
-}{
-\spadpaste{t: Table(Polynomial Integer, String) := table() \bound{t}}
-}
-\xtc{
-To save an entry in the table, the \spadfunFrom{setelt}{Table} operation is used.
-This can be called directly, giving the table a key and an entry.
-}{
-\spadpaste{setelt(t, x**2 - 1, "Easy to factor") \bound{p1}\free{t}}
-}
-\xtc{
-Alternatively, you can use assignment syntax.
-}{
-\spadpaste{t(x**3 + 1) := "Harder to factor" \bound{p2}\free{p1}}
-}
-\xtc{
-}{
-\spadpaste{t(x)        := "The easiest to factor" \bound{p3}\free{p2}}
-}
-\xtc{
-Entries are retrieved from the table by calling the
-\spadfunFrom{elt}{Table} operation.
-}{
-\spadpaste{elt(t, x) \free{p3}}
-}
-\xtc{
-This operation is called when a table is ``applied'' to a key using
-this or the following syntax.
-}{
-\spadpaste{t.x \free{p3}}
-}
-\xtc{
-}{
-\spadpaste{t x \free{p3}}
-}
-\xtc{
-Parentheses are used only for grouping.  They are needed if the key is
-an infixed expression.
-}{
-\spadpaste{t.(x**2 - 1) \free{p3}}
-}
-\xtc{
-Note that the \spadfunFrom{elt}{Table} operation is used only when the
-key is known to be in the table---otherwise an error is generated.
-}{
-\spadpaste{t (x**3 + 1) \free{p3}}
-}
-
-\xtc{
-You can get a list of all the keys to a table using the
-\spadfunFrom{keys}{Table} operation.
-}{
-\spadpaste{keys t \free{p3}}
-}
-\xtc{
-If you wish to test whether a key is in a table, the
-\spadfunFrom{search}{Table} operation is used.
-This operation returns either an entry or \spad{"failed"}.
-}{
-\spadpaste{search(x, t) \free{p3}}
-}
-\xtc{
-}{
-\spadpaste{search(x**2, t) \free{p3}}
-}
-\xtc{
-The return type is a union so the success of the search can be tested
-using \spad{case}.
-\spadkey{case}
-}{
-\spadpaste{search(x**2, t) case "failed" \free{p3}}
-}
-\xtc{
-The \spadfunFromX{remove}{Table} operation is used to delete values from a
-table.
-}{
-\spadpaste{remove!(x**2-1, t) \free{p3} \bound{p4}}
-}
-\xtc{
-If an entry exists under the key, then it is returned.  Otherwise
-\spadfunFromX{remove}{Table} returns \spad{"failed"}.
-}{
-\spadpaste{remove!(x-1, t) \free{p4}\bound{p5}}
-}
-
-\xtc{
-The number of key-entry pairs can be found using the
-\spadfunFrom{\#}{Table} operation.
-}{
-\spadpaste{\#t \free{p5}}
-}
-\xtc{
-Just as \spadfunFrom{keys}{Table} returns a list of keys to the table, a
-list of all the entries can be obtained using the
-\spadfunFrom{members}{Table} operation.
-}{
-\spadpaste{members t \free{p5}}
-}
-\xtc{
-A number of useful operations take functions and map them on to the
-table to compute the result.  Here we count the entries which
-have \spad{"Hard"} as a prefix.
-}{
-\spadpaste{count(s: String +-> prefix?("Hard", s), t) \free{p5}}
-}
-
-Other table types are provided to support various needs.
-\indent{4}
-\beginitems
-\item[-] \spadtype{AssociationList} gives a list with a table view.
-This allows new entries to be appended onto the front of the list
-to cover up old entries.
-This is useful when table entries need to be stacked or when
-frequent list traversals are required.
-See 
-\downlink{`AssociationList'}{AssociationListXmpPage}\ignore{AssociationList} 
-for more information.
-\item[-] \spadtype{EqTable} gives tables in which keys are considered
-equal only when they are in fact the same instance of a structure.
-See \downlink{`EqTable'}{EqTableXmpPage}\ignore{EqTable} for more information.
-\item[-] \spadtype{StringTable} should be used when the keys are known to
-be strings.
-See \downlink{`StringTable'}{StringTableXmpPage}\ignore{StringTable} 
-for more information.
-\item[-] \spadtype{SparseTable} provides tables with default
-entries, so
-lookup never fails.  The \spadtype{GeneralSparseTable} constructor
-can be used to make any table type behave this way.
-See \downlink{`SparseTable'}{SparseTableXmpPage}\ignore{SparseTable} 
-for more information.
-\item[-] \spadtype{KeyedAccessFile} allows values to be saved in a file,
-accessed as a table.
-See 
-\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile} 
-for more information.
-\enditems
-\indent{0}
-%
-\showBlurb{Table}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{textfile.ht}
-<<textfile.ht>>=
-\newcommand{\TextFileXmpTitle}{TextFile}
-\newcommand{\TextFileXmpNumber}{9.81}
-
-@
-\subsection{TextFile}
-\label{TextFileXmpPage}
-\begin{itemize}
-\item FileXmpPage \ref{FileXmpPage} on
-page~pageref{FileXmpPage}
-\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
-page~pageref{KeyedAccessFileXmpPage}
-\item LibraryXmpPage \ref{LibraryXmpPage} on
-page~pageref{LibraryXmpPage}
-\end{itemize}
-\index{pages!TextFileXmpPage!textfile.ht}
-\index{textfile.ht!pages!TextFileXmpPage}
-\index{TextFileXmpPage!textfile.ht!pages}
-<<textfile.ht>>=
-\begin{page}{TextFileXmpPage}{TextFile}
-\beginscroll
-
-The domain \spadtype{TextFile} allows Axiom to read and write
-character data and exchange text with other programs.
-This type behaves in Axiom much like a \spadtype{File} of strings,
-with additional operations to cause new lines.
-We give an example of how to produce an upper case copy of a file.
-\xtc{
-This is the file from which we read the text.
-}{
-\spadpaste{f1: TextFile := open("/etc/group", "input")   \bound{f1}}
-}
-\xtc{
-This is the file to which we read the text.
-}{
-\spadpaste{f2: TextFile := open("/tmp/MOTD", "output")  \bound{f2}}
-}
-\xtc{
-Entire lines are handled using the \spadfunFromX{readLine}{TextFile} and
-\spadfunFromX{writeLine}{TextFile} operations.
-}{
-\spadpaste{l := readLine! f1 \free{f1}\bound{l}}
-}
-\xtc{
-}{
-\spadpaste{writeLine!(f2, upperCase l) \free{f2 l}}
-}
-\xtc{
-Use the
-\spadfunFrom{endOfFile?}{TextFile} operation to check if you have
-reached the end of the file.
-}{
-\begin{spadsrc}[\free{f1 f2}\bound{Copied}]
-while not endOfFile? f1 repeat
-    s := readLine! f1
-    writeLine!(f2, upperCase s)
-\end{spadsrc}
-}
-\xtc{
-The file \spad{f1} is exhausted and should be closed.
-}{
-\spadpaste{close! f1  \free{Copied}\bound{closed1}}
-}
-
-\xtc{
-It is sometimes useful to write lines a bit at a time.
-The \spadfunFromX{write}{TextFile} operation allows this.
-}{
-\spadpaste{write!(f2, "-The-")  \free{Copied}\bound{tthhee}}
-}
-\xtc{
-}{
-\spadpaste{write!(f2, "-End-")  \free{tthhee}\bound{eenndd}}
-}
-\xtc{
-This ends the line.
-This is done in a machine-dependent manner.
-}{
-\spadpaste{writeLine! f2        \free{eenndd}\bound{LastLine}}
-}
-\xtc{
-}{
-\spadpaste{close! f2              \free{LastLine}\bound{closed2}}
-}
-\noOutputXtc{
-Finally, clean up.
-}{
-\spadpaste{)system rm /tmp/MOTD   \free{closed2}}
-}
-
-For more information on related topics,  see
-\downlink{`File'}{FileXmpPage}\ignore{File},
-\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile}, and
-\downlink{`Library'}{LibraryXmpPage}\ignore{Library}.
-\showBlurb{TextFile}
-\endscroll
-\autobuttons
-\end{page}
-%
-
-@
-\section{topics.ht}
-\subsection{Axiom Topics}
-\label{TopicPage}
-\includegraphics[scale=.5]{ps/v71topics.eps}
-\index{images!topics}
-\begin{itemize}
-\item ``Numbers'' (NumberPage) \ref{NumberPage} on page~\pageref{NumberPage}
-\item ``Polynomials'' (PolynomialPage) 
-\ref{PolynomialPage} on page~\pageref{PolynomialPage}
-\item ``Functions'' (FunctionPage) 
-\ref{FunctionPage} on page~\pageref{FunctionPage}
-\item ``Solving Equations'' (EquationPage) 
-\ref{EquationPage} on page~\pageref{EquationPage}
-\item ``Calculus'' (CalculusPage) 
-\ref{CalculusPage} on page~\pageref{CalculusPage}
-\item ``Linear Algebra'' (LinAlgPage) 
-\ref{LinAlgPage} on page~\pageref{LinAlgPage}
-\item ``Graphics'' (GraphicsPage) 
-\ref{GraphicsPage} on page~\pageref{GraphicsPage}
-\item ``Algebra'' (AlgebraPage) 
-\ref{AlgebraPage} on page~\pageref{AlgebraPage}
-\end{itemize}
-\index{pages!TopicPage!topics.ht}
-\index{topics.ht!pages!TopicPage}
-\index{TopicPage!topics.ht!pages}
-<<topics.ht>>=
-\begin{page}{TopicPage}{Axiom Topics}
-\beginscroll
-Select a topic below: % or
-%\lispmemolink{search}{(|htTutorialSearch| '|\stringvalue{pattern}|))}
-%for string (use {\em *} for wild card):
-%\newline\inputstring{pattern}{58}{}
-\beginmenu
-\menumemolink{Numbers}{NumberPage}\tab{18}
-A look at different types of numbers
-
-\menumemolink{Polynomials}{PolynomialPage}\tab{18}
-Polynomials in Axiom
-%
-\menumemolink{Functions}{FunctionPage}\tab{18}
-Built-in and user-defined functions
-%
-\menumemolink{Solving Equations}{EquationPage}\tab{18}
-Facilities for solving equations
-%
-\menumemolink{Calculus}{CalculusPage}\tab{18}
-Using Axiom to do calculus
-%
-\menumemolink{Linear Algebra}{LinAlgPage}\tab{18}
-Axiom's linear algebra facilities
-%
-\menumemolink{Graphics}{GraphicsPage}\tab{18}
-Axiom's graphics facilities
-%
-\menumemolink{Algebra}{AlgebraPage}\tab{18}
-Axiom's abstract algebra facilities
-%
-\endmenu
-\endscroll
-\end{page}
-
-@
-\subsection{Solving Equations}
-\label{EquationPage}
-\begin{itemize}
-\item ugxProblemLinSysPage \ref{ugxProblemLinSysPage} on 
-page~\pageref{ugxProblemLinSysPage}
-\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on 
-page~\pageref{ugxProblemOnePolPage}
-\item ugxProblemPolySysPage \ref{ugxProblemPolySysPage} on 
-page~\pageref{ugxProblemPolySysPage}
-\item ugProblemDEQPage \ref{ugProblemDEQPage} on 
-page~\pageref{ugProblemDEQPage}
-\end{itemize}
-\index{pages!EquationPage!topics.ht}
-\index{topics.ht!pages!EquationPage}
-\index{EquationPage!topics.ht!pages}
-<<topics.ht>>=
-\begin{page}{EquationPage}{Solving Equations}
-\beginscroll
-Axiom lets you solve equations of various types:
-\beginmenu
-  \menulink{Solution of Systems of Linear Equations}{ugxProblemLinSysPage}
-    \newline Solve systems of linear equations.
-  \menulink{Solution of a Single Polynomial Equation}{ugxProblemOnePolPage}
-    \newline Find roots of polynomials.
-  \menulink{Solution of Systems of Polynomial Equations}{ugxProblemPolSysPage}
-  \newline Solve systems of polynomial equations.
-  \menulink{Solution of Differential Equations}{ugProblemDEQPage}
-  \newline Closed form and series solutions of differential equations.
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Linear Algebra}
-\label{LinAlgPage}
-\begin{itemize}
-\item ugIntroTwoDimPage \ref{ugIntroTwoDimPage} on 
-page~\pageref{ugIntroTwoDimPage}
-\item ugMatrixCreatePage \ref{ugMatrixCreatePage} on 
-page~\pageref{ugMatrixCreatePage}
-\item ugxMatrixOpsPage \ref{ugxMatrixOpsPage} on 
-page~\pageref{ugxMatrixOpsPage}
-\item ugProblemEigenPage \ref{ugProblemEigenPage} on 
-page~\pageref{ugProblemEigenPage}
-\item ugxFloatHilbertPage \ref{ugxFloatHilbertPage} on 
-page~\pageref{ugxFloatHilbertPage}
-\item PermanentXmpPage \ref{PermanentXmpPage} on 
-page~\pageref{PermanentXmpPage}
-\item VectorXmpPage \ref{VectorXmpPage} on page~\pageref{VectorXmpPage}
-\item SquareMatrixXmpPage \ref{SquareMatrixXmpPage} on 
-page~\pageref{SquareMatrixXmpPage}
-\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on 
-page~\pageref{OneDimensionalArrayXmpPage}
-\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on 
-page~\pageref{TwoDimensionalArrayXmpPage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on 
-page~\pageref{ugTypesConvertPage}
-\end{itemize}
-\index{pages!LinAlgPage!topics.ht}
-\index{topics.ht!pages!LinAlgPage}
-\index{LinAlgPage!topics.ht!pages}
-<<topics.ht>>=
-\begin{page}{LinAlgPage}{Linear Algebra}
-\beginscroll
-\beginmenu
-
-\menulink{Introduction}{ugIntroTwoDimPage}\newline
-
-Create and manipulate matrices.
-Work with the entries of a matrix.
-Perform matrix arithmetic.
-
-\menulink{Creating Matrices}{ugxMatrixCreatePage} \newline
-
-Create matrices from scratch and from other matrices.
-
-\menulink{Operations on Matrices}{ugxMatrixOpsPage} \newline
-
-Algebraic manipulations with matrices.
-Compute the inverse, determinant and trace of a matrix.
-Find the rank, nullspace and row echelon form of a matrix.
-
-\menulink{Eigenvalues and Eigenvectors}{ugProblemEigenPage} \newline
-
-How to compute eigenvalues and eigenvectors.
-\endmenu
-\horizontalline\newline
-Additional Topics:
-\beginmenu
-\menulink{Example: Determinant of a Hilbert Matrix}{ugxFloatHilbertPage}
-\menulink{Computing the Permanent}{PermanentXmpPage}
-\menulink{Working with Vectors}{VectorXmpPage}
-\menulink{Working with Square Matrices}{SquareMatrixXmpPage}
-\menulink{Working with One-Dimensional Arrays}{OneDimensionalArrayXmpPage}
-\menulink{Working with Two-Dimensional Arrays}{TwoDimensionalArrayXmpPage}
-\menulink{Conversion (Polynomials of Matrices)}{ugTypesConvertPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\subsection{Calculus}
-\label{CalculusPage}
-\begin{itemize}
-\item ugProblemLimitsPage \ref{ugProblemLimitsPage} on 
-page~\pageref{ugProblemLimitsPage}
-\item ugIntroCalcDerivPage \ref{ugIntroCalcDerivPage} on 
-page~\pageref{ugIntroCalcDerivPage}
-\item ugIntroIntegratePage \ref{ugIntroIntegratePage} on 
-page~\pageref{ugIntroIntegratePage}
-\item ugProblemIntegrationPage \ref{ugProblemIntegrationPage} on 
-page~\pageref{ugProblemIntegrationPage}
-\item ugProblemLaplacePage \ref{ugProblemLaplacePage} on 
-page~\pageref{ugProblemLaplacePage}
-\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on 
-page~\pageref{ugProblemSeriesPage}
-\item ugProblemDEQPage \ref{ugProblemDEQPage} on 
-page~\pageref{ugProblemDEQPage}
-\end{itemize}
-\index{pages!CalculusPage!topics.ht}
-\index{topics.ht!pages!CalculusPage}
-\index{CalculusPage!topics.ht!pages}
-<<topics.ht>>=
-\begin{page}{CalculusPage}{Calculus}
-\beginscroll
-\beginmenu
-\menulink{Limits}{ugProblemLimitsPage} \tab{17}
-Compute limits of functional expressions.
-\menulink{Derivatives}{ugIntroCalcDerivPage}\tab{17}
-Compute derivatives and partial derivatives.
-\menulink{Integrals}{ugIntroIntegratePage}\tab{17}
-Introduction to Axiom's symbolic integrator.
-\menulink{More Integrals}{ugProblemIntegrationPage}\tab{17}
-More information about symbolic integration.
-\menulink{Laplace}{ugProblemLaplacePage}\tab{17}
-Computing Laplace transforms.
-\menulink{Series}{ugProblemSeriesPage}\tab{17}
-Compute series expansions of expressions.
-\menulink{Differential Eqns}{ugProblemDEQPage}\tab{17}
-Solve differential equations.
-\endmenu
-\endscroll
-\autobuttons \end{page}
-
-@
-\section{type.ht}
-@
-\subsection{Category {\bf Type}}
-\label{CategoryType}
-\index{pages!CategoryType!type.ht}
-\index{type.ht!pages!CategoryType}
-\index{CategoryType!type.ht!pages}
-<<type.ht>>=
-\begin{page}{CategoryType}{Category {\em Type}}
-\beginscroll
-{\em Type} is a primitive category in Axiom,
-one which is an ancestor of all Axiom categories.
-
-{\em Type} is the root of Axiom's category hierarchy,
-a category with no properties (exported operations 
-and attributes) of which all other categories are descendants.
-Two important children of {\em Type} are
-\spadtype{SetCategory}, the category of all algebraic domains,
-and \spadtype{Aggregate}, the category of all data structures.
-\endscroll
-
-@
-\section{ug.ht}
-DO NOT MODIFY THIS FILE BY HAND !! Created by chapmenu.awk.
-\subsection{Users Guide}
-\label{UsersGuidePage}
-\begin{itemize}
-\item ugWhatsNewTwoTwoPage \ref{ugWhatsNewTwoTwoPage} on 
-page~\pageref{ugWhatsNewTwoTwoPage}
-\item ugIntroPage \ref{ugIntroPage} on page~\pageref{ugIntroPage}
-\item ugTypesPage \ref{ugTypesPage} on page~\pageref{ugTypesPage}
-\item ugHyperPage \ref{ugHyperPage} on page~\pageref{ugHyperPage}
-\item ugInOutPage \ref{ugInOutPage} on page~\pageref{ugInOutPage}
-\item ugLangPage \ref{ugLangPage} on page~\pageref{ugLangPage}
-\item ugUserPage \ref{ugUserPage} on page~\pageref{ugUserPage}
-\item ugGraphPage \ref{ugGraphPage} on page~\pageref{ugGraphPage}
-\item ugProblemPage \ref{ugProblemPage} on page~\pageref{ugProblemPage}
-\item ExamplesExposedPage \ref{ExamplesExposedPage} on 
-page~\pageref{ExamplesExposedPage}
-\item ugIntProgPage \ref{ugIntProgPage} on page~\pageref{ugIntProgPage}
-\item ugPackagesPage \ref{ugPackagesPage} on page~\pageref{ugPackagesPage}
-\item ugCategoriesPage \ref{ugCategoriesPage} on 
-page~\pageref{ugCategoriesPage}
-\item ugDomainsPage \ref{ugDomainsPage} on page~\pageref{ugDomainsPage}
-\item ugBrowsePage \ref{ugBrowsePage} on page~\pageref{ugBrowsePage}
-\item ugWhatsNewPage \ref{ugWhatsNewPage} on page~\pageref{ugWhatsNewPage}
-\item ugSysCmdPage \ref{ugSysCmdPage} on page~\pageref{ugSysCmdPage}
-\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on 
-page~\pageref{ugAppGraphicsPage}
-\end{itemize}
-\index{pages!UsersGuidePage!ug.ht}
-\index{ug.ht!pages!UsersGuidePage}
-\index{UsersGuidePage!ug.ht!pages}
-<<ug.ht>>=
-\begin{page}{UsersGuidePage}{Users Guide}
-This is the table of contents for the Users Guide.
-Click on any item below to see that section.
-\beginscroll
-\indent{3}
-\beginmenu
-\menudownlink{{0. What's New in Axiom Version 2.2}}{ugWhatsNewTwoTwoPage}
-\endmenu
-\indent{0}
-Part I.   Basic Features of Axiom
-\indent{3}
-\beginmenu
-\menudownlink{{1. An Overview of Axiom}}{ugIntroPage}
-\menudownlink{{2. Using Types and Modes}}{ugTypesPage}
-\menudownlink{{3. Using \HyperName{}}}{ugHyperPage}
-\menudownlink{{4. Input Files and Output Styles}}{ugInOutPage}
-\menudownlink{{5. Introduction to the Axiom Interactive Language}}{ugLangPage}
-\menudownlink{{6. User-Defined Functions, Macros and Rules}}{ugUserPage}
-\menudownlink{{7. Graphics}}{ugGraphPage}
-\endmenu
-\indent{0}
-Part II.  Advanced Problem Solving and Examples
-\indent{3}
-\beginmenu
-\menudownlink{{8. Advanced Problem Solving}}{ugProblemPage}
-\menudownlink{{9. Some Examples for Domains and Packages}}{ExamplesExposedPage}
-\endmenu
-\indent{0}
-Part III. Advanced Programming in Axiom
-\indent{3}
-\beginmenu
-\menudownlink{{10. Interactive Programming}}{ugIntProgPage}
-\menudownlink{{11. Packages}}{ugPackagesPage}
-\menudownlink{{12. Categories}}{ugCategoriesPage}
-\menudownlink{{13. Domains}}{ugDomainsPage}
-\menudownlink{{14. Browse}}{ugBrowsePage}
-\menudownlink{{15. What's New in Axiom Version 2.0}}{ugWhatsNewPage}
-\endmenu
-\indent{0}
-Appendices.
-\indent{3}
-\beginmenu
-\menudownlink{{A. Axiom System Commands}}{ugSysCmdPage}
-\menudownlink{{F. Programs for Axiom Images}}{ugAppGraphicsPage}
-\menudownlink{{G. Glossary}}{GlossaryPage}
-\endmenu
-\indent{0}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug00.ht}
-<<ug00.ht>>=
-\newcommand{\ugWhatsNewTwoTwoTitle}{What's New in Axiom Version 2.2}
-\newcommand{\ugWhatsNewTwoTwoNumber}{0.}
-
-@
-\subsection{0. What's New in Axiom Version 2.2}
-\label{ugWhatsNewTwoTwoPage}
-\begin{itemize}
-\item ugTwoTwoAldorPage \ref{ugTwoTwoAldorPage} on
-page~\pageref{ugTwoTwoAldorPage}
-\item ugTwoTwoPolynomialsPage \ref{ugTwoTwoPolynomialsPage} on
-page~\pageref{ugTwoTwoPolynomialsPage}
-\item ugTwoTwoHyperdocPage \ref{ugTwoTwoHyperdocPage} on
-page~\pageref{ugTwoTwoHyperdocPage}
-\item ugTwoTwoNAGLinkPage \ref{ugTwoTwoNAGLinkPage} on
-page~\pageref{ugTwoTwoNAGLinkPage}
-\item ugTwoTwoCCLPage \ref{ugTwoTwoCCLPage} on
-page~\pageref{ugTwoTwoCCLPage}
-\end{itemize}
-\index{pages!ugWhatsNewTwoTwoPage!ug00.ht}
-\index{ug00.ht!pages!ugWhatsNewTwoTwoPage}
-\index{ugWhatsNewTwoTwoPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugWhatsNewTwoTwoPage}{0. What's New in Axiom Version 2.2}
-\beginscroll
-
-\beginmenu
-    \menudownlink{{0.1. \axiomxl{} compiler - Enhancements and Additions}}
-{ugTwoTwoAldorPage}
-    \menudownlink{{0.2. New polynomial domains and algorithms}}
-{ugTwoTwoPolynomialsPage}
-    \menudownlink{{0.3. Enhancements to HyperDoc and Graphics}}
-{ugTwoTwoHyperdocPage}
-    \menudownlink{{0.4. Enhancements to NAGLink}}{ugTwoTwoNAGLinkPage}
-    \menudownlink{{0.5. Enhancements to the Lisp system}}{ugTwoTwoCCLPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug00.ht>>=
-\newcommand{\ugTwoTwoAldorTitle}{\axiomxl{} compiler - Enhancements and Additions}
-\newcommand{\ugTwoTwoAldorNumber}{0.1.}
-
-@
-\subsection{0.1. Aldor compiler - Enhancements and Additions}
-\label{ugTwoTwoAldorPage}
-\index{pages!ugTwoTwoAldorPage!ug00.ht}
-\index{ug00.ht!pages!ugTwoTwoAldorPage}
-\index{ugTwoTwoAldorPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugTwoTwoAldorPage}{0.1. \axiomxl{} compiler - Enhancements and Additions}
-\beginscroll
-
-Numerous bug fixes and improvements have been implemented in version 1.1.12
-of \axiomxl{} which is included in this release. You may also notice the name
-{\it Aldor} being used when referring to \axiomxl{}.
-
-The format of {\bf .ao} files has changed somewhat so you need
-to recompile your {\bf .as} source files.
-
-An updated User's Guide is included for on-line use. We provide
-TeX {\bf .dvi} format (including hyper-references), Acrobat {\bf .pdf}
-format, PostScript {\bf .ps} format and plain ASCII {bf .txt}. 
-An up-to-date {\bf .dvi}
-viewer should be able to allow you to follow the cross-references.
-These files can be found in 
-{\bf \env{AXIOM}/compiler/doc/axlugII.*}.
-
-An exception mechanism has been implemented. You can now throw and 
-catch exceptions which are fully-fledged domains that can carry information.
-See Chapter 31 in the on-line guide for details.
-
-Support for linking with Fortran-77 code has been added. You can call
-Fortran-77 code from {\it Aldor}  and vice-versa. See Chapter 32
-in the on-line guide for details.
-
-The \spad{ref} keyword has been added. You must use \spad{_ref} to 
-enable use as an identifier.
-
-A generic configurable C compiler and linker driver i{\bf unicl} has been 
-implemented. You can now select C compiler and linker options with
-greater ease and you can give names to specific configurations. 
-See Chapter 28 in the on-line guide for details.
-
-There is now support for accessing IEEE floating-point rounding modes
-and exception flags. You must ensure however that your C compiler 
-and linker will respect the IEEE standard by enabling the appropriate
-options through {\bf unicl}. 
-See BasicIeeeControlPackage (26.7) in the on-line guide.
-
-Special runtime libraries ({\bf libfoam-gmp.a}) have been prepared to enable
-a drop-in replacement of Aldor's big-integer arithmetic with the GNU gmp
-big-integer library. The executable script {\bf axiomxl.gmp} (in the same place
-as {\bf axiomxl}) expects the {\bf GmpDir} environment variable to be set 
-to the directory where a compiled GNU gmp library resides ({\bf libgmp.a}) and 
-arranges for the appropriate libraries to be linked in when generating 
-a stand-alone executable. 
-
-The language-defined type TrailingArray has been introduced. See 
-TrailingArray (13.7) in the on-line guide.
-
-The supplied library {\bf libaxllib.al}, supporting stand-alone programs, 
-has been updated. Automatically
-generated documentation can be found in Chapters 25 and 26 of the on-line
-guide.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug00.ht>>=
-\newcommand{\ugTwoTwoPolynomialsTitle}{New polynomial domains and algorithms}
-\newcommand{\ugTwoTwoPolynomialsNumber}{0.2.}
-
-@
-\subsection{0.2. New polynomial domains and algorithms}
-\label{ugTwoTwoPolynomialsPage}
-\index{pages!ugTwoTwoPolynomialsPage!ug00.ht}
-\index{ug00.ht!pages!ugTwoTwoPolynomialsPage}
-\index{ugTwoTwoPolynomialsPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugTwoTwoPolynomialsPage}{0.2. New polynomial domains and algorithms}
-\beginscroll
-
-Univariate polynomial factorisation over the integers has been 
-enhanced by updates to the \spadtype{GaloisGroupFactorizer} type
-and friends from Frederic Lehobey (Frederic.Lehobey@lifl.fr, University of 
-Lille I, France).
-
-The package constructor \spadtype{PseudoRemainderSequence}
-provides efficient algorithms by Lionel Ducos 
-(Lionel.Ducos@mathlabo.univ-poitiers.fr, University of Poitiers, France) 
-for computing sub-resultants.
-This leads to a speed up in many places in Axiom where 
-sub-resultants are computed (polynomial system solving, 
-algebraic factorization, integration).
-
-Based on this package, the domain constructor 
-\spadtype{NewSparseUnivariatePolynomial}
-extends the constructor \spadtype{SparseUnivariatePolynomial}.
-In a similar way, the \spadtype{NewSparseMultivariatePolynomial} extends
-the constructor \spadtype{SparseUnivariatePolynomial};
-it also provides some additional operations related 
-to polynomial system solving by means of triangular sets.
-
-Several domain constructors implement
-regular triangular sets (or regular chains).
-Among them \spadtype{RegularTriangularSet}
-and \spadtype{SquareFreeRegularTriangularSet}.
-They also implement an algorithm by Marc Moreno Maza (marc@nag.co.uk, NAG)
-for computing triangular decompositions of polynomial systems.
-This method is refined in the package \spadtype{LazardSetSolvingPackage}
-in order to produce decompositions by means of Lazard triangular sets.
-For the case of polynomial systems with finitely many solutions,
-these decompositions can also be computed by
-the package \spadtype{LexTriangularPackage}.
-
-The domain constructor \spadtype{RealClosure} by Renaud Rioboo
-(Renaud.Rioboo@lip6.fr, University of Paris 6, France)
-provides the real closure of an ordered field.
-The implementation is based on interval arithmetic.
-Moreover, the design of this constructor and its related 
-packages allows an easy use of other codings for real algebraic numbers.
-
-Based on triangular decompositions and the \spadtype{RealClosure} constructor,
-the package \spadtype{ZeroDimensionalSolvePackage}
-provides operations for computing symbolically the real or complex roots
-of polynomial systems with finitely many solutions.
-
-Polynomial arithmetic with non-commutative variables 
-has been improved too by a contribution of Michel Petitot
-(Michel.Petitot@lifl.fr, University of Lille I, France).
-The domain constructors \spadtype{XRecursivePolynomial}
-and \spadtype{XDistributedPolynomial} provide
-recursive and distributed representations for these polynomials.
-They are the non-commutative equivalents for
-the \spadtype{SparseMultivariatePolynomial} 
-and \spadtype{DistributedMultivariatePolynomial} constructors.
-The constructor \spadtype{LiePolynomial} implement Lie
-polynomials in the Lyndon basis.
-The constructor \spadtype{XPBWPolynomial} manage polynomials
-with non-commutative variables in
-the \texht{Poincar\'e}{Poincare\space{-1}'}-Birkhoff-Witt basis from the Lyndon basis.
-This allows to compute in the Lie Group associated with a
-free nilpotent Lie algebra by using the \spadtype{LieExponentials}
-domain constructor.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug00.ht>>=
-\newcommand{\ugTwoTwoHyperdocTitle}{Enhancements to HyperDoc and Graphics}
-\newcommand{\ugTwoTwoHyperdocNumber}{0.3.}
-
-@
-\subsection{0.3. Enhancements to HyperDoc and Graphics}
-\label{ugTwoTwoHyperdocPage}
-\index{pages!ugTwoTwoHyperdocPage!ug00.ht}
-\index{ug00.ht!pages!ugTwoTwoHyperdocPage}
-\index{ugTwoTwoHyperdocPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugTwoTwoHyperdocPage}{0.3. Enhancements to HyperDoc and Graphics}
-\beginscroll
-
-From this version of Axiom onwards, the pixmap format used to save graphics
-images in color and to display them in HyperDoc has been changed to the 
-industry-standard XPM format. See {\tt ftp://koala.inria.fr/pub/xpm}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug00.ht>>=
-\newcommand{\ugTwoTwoNAGLinkTitle}{Enhancements to NAGLink}
-\newcommand{\ugTwoTwoNAGLinkNumber}{0.4.}
-
-@
-\subsection{0.4. Enhancements to NAGLink}
-\label{ugTwoTwoNAGLinkPage}
-\index{pages!ugTwoTwoNAGLinkPage!ug00.ht}
-\index{ug00.ht!pages!ugTwoTwoNAGLinkPage}
-\index{ugTwoTwoNAGLinkPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugTwoTwoNAGLinkPage}{0.4. Enhancements to NAGLink}
-\beginscroll
-
-This version of Axiom incorporates the Axiom/NAG Numerical Analyst (ANNA)
-software developed in the University of Bath. ANNA is an expert system which 
-uses Axiom algebra functionality in choosing the most appropriate NAG Fortran Library
-routine for a particular problem. Documentation is provided on-line on the main HyperDoc page.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug00.ht>>=
-\newcommand{\ugTwoTwoCCLTitle}{Enhancements to the Lisp system}
-\newcommand{\ugTwoTwoCCLNumber}{0.5.}
-
-@
-\subsection{0.5. Enhancements to the Lisp system}
-\label{ugTwoTwoCCLPage}
-\index{pages!ugTwoTwoCCLPage!ug00.ht}
-\index{ug00.ht!pages!ugTwoTwoCCLPage}
-\index{ugTwoTwoCCLPage!ug00.ht!pages}
-<<ug00.ht>>=
-\begin{page}{ugTwoTwoCCLPage}{0.5. Enhancements to the Lisp system}
-\beginscroll
-
-In this version of Axiom, certain Library operations have been
-accelerated by converting their Lisp implementations into kernel
-operations implemented directly in C. Here is a list of the
-accelerated operations. The given names encode the abbreviated type
-the operation comes from, the name of the operation and, in the case
-of exported functions, an encoded signature and numerical index.
-
+\chapter{NAG ASP Example Code}
+\section{aspex.ht}
+\subsection{Asp1 Example Code}
+\label{Asp1ExampleCode}
+\index{pages!Asp1ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp1ExampleCode}
+\index{Asp1ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp1ExampleCode}{Asp1 Example Code}
 \begin{verbatim}
-|A1AGG-;=;2AB;28|
-|A1AGG-;copy;2A;19|
-|A1AGG-;sort!;M2A;2|
-|ABELGRP-;*;Nni2S;3|
-|ABELGRP-;-;3S;1|
-|ABELMON-;*;Pi2S;2|
-|ABELMON-;zero?;SB;1|
-|AGG-;empty?;SB;3|
-|AGG-;size?;SNniB;6|
-|ALIST;keys;$L;6|
-|ALIST;search;Key$U;15|
-|ARR2CAT-;copy;2S;10|
-|BOP;<;2$B;29|
-|BOP;=;2$B;27|
-|BOP;has?;$SB;9|
-|BOP;is?;$SB;1|
-|BOP;name;$S;2|
-|BOP;properties;$Al;3|
-|BOP;property;$SU;7|
-|BOP;weight;$Nni;28|
-|COMPCAT-;*;R2S;18|
-|COMPCAT-;-;2S;17|
-|COMPCAT-;=;2SB;15|
-|COMPCAT-;exquo;SRU;46|
-|COMPCAT-;recip;SU;48|
-|COMPCAT-;rem;3S;53|
-|COMPCAT-;unitNormal;SR;49|
-|COMPLEX;*;3$;10|
-|COMPLEX;+;3$;9|
-|COMPLEX;coerce;R$;5|
-|COMPLEX;exquo;2$U;11|
-|COMPLEX;one?;$B;4|
-|COMPLEX;zero?;$B;3|
-|DIRPROD;<;2$B;18|
-|DIRPROD;subtractIfCan;2$U;14|
-|ELAGG-;removeDuplicates;2A;12|
-|ELTAGG-;qelt;SDomIm;1|
-|ELTAGG-;qsetelt!;SDom2Im;2|
-|EUCDOM-;gcd;3S;5|
-|EUCDOM-;unitNormalizeIdealElt|
-|EXPR;*;3$;11|
-|EXPR;+;3$;12|
-|EXPR;-;2$;8|
-|EXPR;/;3$;14|
-|EXPR;=;2$B;21|
-|EXPR;algkernels!0|
-|EXPR;algkernels|
-|EXPR;coerce;I$;10|
-|EXPR;coerce;Smp$;24|
-|EXPR;commonk0|
-|EXPR;commonk|
-|EXPR;denom;$Smp;23|
-|EXPR;numer;$Smp;22|
-|EXPR;reduc|
-|EXPR;zero?;$B;7|
-|FACUTIL;lowerPolynomial;SupSup;1|
-|FAMR-;coefficients;SL;4|
-|FAMR-;ground;SR;2|
-|FFP;*;3$;21|
-|FFP;+;3$;22|
-|FFP;-;3$;23|
-|FFP;=;2$B;24|
-|FIELD-;/;3S;11|
-|FIELD-;inv;2S;4|
-|FLAGG-;sort!;2A;8|
-|FLAGG-;sort;M2A;6|
-|FLASORT;QuickSort|
-|FLASORT;partition|
-|FLASORT;quickSort;M2V;1|
-|FM;*;R2$;1|
-|FRAC;*;3$;18|
-|FRAC;*;I2$;19|
-|FRAC;+;3$;16|
-|FRAC;=;2$B;22|
-|FRAC;cancelGcd|
-|FRAC;coerce;S$;1|
-|FRAC;normalize|
-|FRAC;one?;$B;23|
-|FRAC;recip;$U;13|
-|FRAC;zero?;$B;2|
-|FSAGG-;brace;LA;3|
-|GDMP;univariate;$OvlSup;21|
-|HDP;<;2$B;1|
-|IARRAY1;#;$Nni;1|
-|IARRAY1;elt;$IS;16|
-|IARRAY1;fill!;$S$;2|
-|IARRAY1;map;M3$;8|
-|IARRAY1;maxIndex;$I;13|
-|IARRAY1;minIndex;$I;3|
-|IARRAY1;new;NniS$;5|
-|IARRAY1;qelt;$IS;14|
-|IARRAY1;qsetelt!;$I2S;15|
-|IARRAY1;setelt;$I2S;17|
-|IDPAM;+;3$;4|
-|IDPAM;map;M2$;7|
-|IDPAM;monomial;AS$;6|
-|IDPO;=;2$B;1|
-|IFARRAY;#;$Nni;4|
-|IFARRAY;concat!;$S$;21|
-|IFARRAY;elt;$IS;17|
-|IFARRAY;empty;$;3|
-|IFARRAY;growAndFill|
-|IFARRAY;growWith|
-|IFARRAY;maxIndex;$I;6|
-|IFARRAY;minIndex;$I;7|
-|IFARRAY;new;NniS$;8|
-|IFARRAY;removeDuplicates!;2$;30|
-|IFARRAY;setelt;$I2S;18|
-|IIARRAY2;elt;$2IR;11|
-|IIARRAY2;empty?;$B;1|
-|IIARRAY2;maxColIndex;$I;7|
-|IIARRAY2;maxRowIndex;$I;6|
-|IIARRAY2;minColIndex;$I;5|
-|IIARRAY2;minRowIndex;$I;4|
-|IIARRAY2;ncols;$Nni;9|
-|IIARRAY2;nrows;$Nni;8|
-|IIARRAY2;qelt;$2IR;10|
-|IIARRAY2;qsetelt!;$2I2R;12|
-|ILIST;concat!;3$;25|
-|ILIST;copy;2$;20|
-|ILIST;empty;$;6|
-|ILIST;first;$S;4|
-|ILIST;member?;S$B;24|
-|ILIST;mergeSort|
-|ILIST;minIndex;$I;18|
-|ILIST;removeDuplicates!;2$;26|
-|ILIST;rest;$Nni$;19|
-|ILIST;sort!;M2$;27|
-|ILIST;split!;$I$;29|
-|IMATLIN;rowEchelon;2M;3|
-|INS-;symmetricRemainder;3S;27|
-|INT;exquo;2$U;44|
-|INT;one?;$B;2|
-|INT;positiveRemainder;3$;23|
-|INT;unitNormal;$R;47|
-|INTDOM-;unitCanonical;2S;2|
-|ISTRING;<;2$B;6|
-|KDAGG-;key?;KeySB;1|
-|KERNEL;<;2$B;14|
-|KERNEL;=;2$B;13|
-|KERNEL;B2Z|
-|KERNEL;argument;$L;6|
-|KERNEL;operator;$Bo;5|
-|KERNEL;position;$Nni;7|
-|KERNEL;triage|
-|LO;-;2$;3|
-|LO;=;2$B;4|
-|LSAGG-;<;2AB;25|
-|LSAGG-;reduce;MA2S;16|
-|LSAGG-;select!;M2A;5|
-|MATCAT-;*;3S;29|
-|MATCAT-;*;S2Col;32|
-|MDDFACT;reduction!0|
-|MDDFACT;reduction|
-|MODRING;reduce;RMod$;6|
-|MODRING;zero?;$B;10|
-|MONOID-;one?;SB;2|
-|NNI;subtractIfCan;2$U;3|
-|NSMP;mvar;$VarSet;5|
-|OVAR;<;2$B;10|
-|PERMGRP;inv|
-|PERMGRP;orbitWithSvc|
-|PERMGRP;testIdentity|
-|PERMGRP;times|
-|PGCD;better|
-|PGCD;gcd;3P;15|
-|PGCD;gcdTermList|
-|POLYCATQ;variables;FL;5|
-|PR;*;3$;20|
-|PR;addm!|
-|PR;coerce;R$;12|
-|PR;degree;$E;4|
-|PR;leadingCoefficient;$R;6|
-|PR;reductum;2$;8|
-|PRIMARR;#;$Nni;1|
-|PRIMARR;fill!;$S$;9|
-|PRIMARR;new;NniS$;4|
-|PRTITION;<;2$B;5|
-|REPSQ;expt;SPiS;1|
-|RING-;coerce;IS;1|
-|SAE;*;3$;15|
-|SAE;+;3$;13|
-|SAE;-;2$;14|
-|SAE;=;2$B;12|
-|SAE;reduce;UP$;11|
-|SCACHE;enterInCache;SMS;5|
-|SET;construct;L$;19|
-|SET;empty;$;4|
-|SGROUP-;**;SPiS;1|
-|SINT;zero?;$B;33|
-|SMP;*;3$;29|
-|SMP;*;R2$;25|
-|SMP;+;3$;26|
-|SMP;-;2$;23|
-|SMP;=;2$B;28|
-|SMP;coerce;R$;20|
-|SMP;coerce;VarSet$;7|
-|SMP;exquo;2$U;35|
-|SMP;exquo;2$U;36|
-|SMP;gcd;3$;41|
-|SMP;gcd;3$;44|
-|SMP;gcd;3$;48|
-|SMP;gcd;3$;51|
-|SMP;ground?;$B;15|
-|SMP;leadingCoefficient;$R;73|
-|SMP;mainVariable;$U;59|
-|SMP;one?;$B;4|
-|SMP;retract;$R;55|
-|SMP;unitNormal;$R;31|
-|SMP;variables;$L;58|
-|SMP;zero?;$B;3|
-|STAGG-;c2|
-|STAGG-;concat;3A;7|
-|STAGG-;elt;AIS;5|
-|STAGG-;first;ANniA;3|
-|STREAM2;map;MSS;2|
-|STREAM2;mapp!0|
-|STREAM2;mapp|
-|STREAM;empty;$;33|
-|STREAM;lazyEval|
-|STREAM;setfrst!|
-|STREAM;setrst!|
-|STTAYLOR;+;3S;2|
-|SUP;exquo;2$U;19|
-|SUP;exquo;2$U;20|
-|SUP;fmecg;$NniR2$;21|
-|SUP;ground?;$B;3|
-|SUP;monicDivide;2$R;28|
-|URAGG-;tail;2A;16|
-|ZMOD;*;3$;30|
-|ZMOD;+;3$;32|
-|ZMOD;-;2$;36|
-|ZMOD;-;3$;33|
+      DOUBLE PRECISION FUNCTION F(X)
+      DOUBLE PRECISION X
+      F=DSIN(X)
+      RETURN
+      END
 \end{verbatim}
-\endscroll
-\autobuttons
 \end{page}
 
 @
-\section{ug01.ht}
-<<ug01.ht>>=
-\newcommand{\ugIntroTitle}{An Overview of Axiom}
-\newcommand{\ugIntroNumber}{1.}
-
-@
-\subsection{1. An Overview of Axiom}
-\label{ugIntroPage}
-\begin{itemize}
-\item ugIntroTypoPage \ref{ugIntroTypoPage} on
-page~\pageref{ugIntroTypoPage}
-\item ugIntroStartPage \ref{ugIntroStartPage} on
-page~\pageref{ugIntroStartPage}
-\item ugIntroTypoPage \ref{ugIntroTypoPage} on
-page~\pageref{ugIntroTypoPage}
-\item ugIntroExpressionsPage \ref{ugIntroExpressionsPage} on
-page~\pageref{ugIntroExpressionsPage}
-\item ugIntroGraphicsPage \ref{ugIntroGraphicsPage} on
-page~\pageref{ugIntroGraphicsPage}
-\item ugIntroNumbersPage \ref{ugIntroNumbersPage} on
-page~\pageref{ugIntroNumbersPage}
-\item ugIntroCollectPage \ref{ugIntroCollectPage} on
-page~\pageref{ugIntroCollectPage}
-\item ugIntroTwoDimPage \ref{ugIntroTwoDimPage} on
-page~\pageref{ugIntroTwoDimPage}
-\item ugIntroYouPage \ref{ugIntroYouPage} on
-page~\pageref{ugIntroYouPage}
-\item ugIntroVariablesPage \ref{ugIntroVariablesPage} on
-page~\pageref{ugIntroVariablesPage}
-\item ugIntroCalcLimitsPage \ref{ugIntroCalcLimitsPage} on
-page~\pageref{ugIntroCalcLimitsPage}
-\item ugIntroSeriesPage \ref{ugIntroSeriesPage} on
-page~\pageref{ugIntroSeriesPage}
-\item ugIntroCalcDerivPage \ref{ugIntroCalcDerivPage} on
-page~\pageref{ugIntroCalcDerivPage}
-\item ugIntroIntegratePage \ref{ugIntroIntegratePage} on
-page~\pageref{ugIntroIntegratePage}
-\item ugIntroDiffEqnsPage \ref{ugIntroDiffEqnsPage} on
-page~\pageref{ugIntroDiffEqnsPage}
-\item ugIntroSolutionPage \ref{ugIntroSolutionPage} on
-page~\pageref{ugIntroSolutionPage}
-\item ugIntroSysCmmandsPage \ref{ugIntroSysCmmandsPage} on
-page~\pageref{ugIntroSysCmmandsPage}
-\end{itemize}
-\index{pages!ugIntroPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroPage}
-\index{ugIntroPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroPage}{1. An Overview of Axiom}
-
-\beginscroll
-
-Welcome to the Axiom environment for interactive computation
-and problem solving.
-Consider this chapter a brief, whirlwind tour of the Axiom
-world.
-We introduce you to Axiom's graphics and the Axiom
-language.
-Then we give a sampling of the large variety of facilities
-in the Axiom system, ranging from the various kinds of
-numbers, to data types (like lists, arrays, and sets) and
-mathematical objects (like matrices, integrals, and differential
-equations).
-We conclude with the discussion of system commands and an
-interactive ``undo.''
-
-Before embarking on the tour, we need to brief those readers
-working interactively with Axiom on some details.
-Others can skip right immediately to
-\downlink{``\ugIntroTypoTitle''}{ugIntroTypoPage} in 
-Section \ugIntroTypoNumber\ignore{ugIntroTypo}.
-
-\beginmenu
-    \menudownlink{{1.1. Starting Up and Winding Down}}{ugIntroStartPage}
-    \menudownlink{{1.2. Typographic Conventions}}{ugIntroTypoPage}
-    \menudownlink{{1.3. The Axiom Language}}{ugIntroExpressionsPage}
-    \menudownlink{{1.4. Graphics}}{ugIntroGraphicsPage}
-    \menudownlink{{1.5. Numbers}}{ugIntroNumbersPage}
-    \menudownlink{{1.6. Data Structures}}{ugIntroCollectPage}
-    \menudownlink{{1.7. Expanding to Higher Dimensions}}{ugIntroTwoDimPage}
-    \menudownlink{{1.8. Writing Your Own Functions}}{ugIntroYouPage}
-    \menudownlink{{1.9. Polynomials}}{ugIntroVariablesPage}
-    \menudownlink{{1.10. Limits}}{ugIntroCalcLimitsPage}
-    \menudownlink{{1.11. Series}}{ugIntroSeriesPage}
-    \menudownlink{{1.12. Derivatives}}{ugIntroCalcDerivPage}
-    \menudownlink{{1.13. Integration}}{ugIntroIntegratePage}
-    \menudownlink{{1.14. Differential Equations}}{ugIntroDiffEqnsPage}
-    \menudownlink{{1.15. Solution of Equations}}{ugIntroSolutionPage}
-    \menudownlink{{1.16. System Commands}}{ugIntroSysCmmandsPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroStartTitle}{Starting Up and Winding Down}
-\newcommand{\ugIntroStartNumber}{1.1.}
-
-@
-\subsection{1.1. Starting Up and Winding Down}
-\label{ugIntroStartPage}
-\begin{itemize}
-\item ugHyperPage \ref{ugHyperPage} on
-page~\pageref{ugHyperPage}
-\item ugSysCmdPage \ref{ugSysCmdPage} on
-page~\pageref{ugSysCmdPage}
-\item ugAvailCLEFPage \ref{ugAvailCLEFPage} on
-page~\pageref{ugAvailCLEFPage}
-\end{itemize}
-\index{pages!ugIntroStartPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroStartPage}
-\index{ugIntroStartPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroStartPage}{1.1. Starting Up and Winding Down}
-\beginscroll
-
-You need to know how to start the Axiom system and how to stop it.
-We assume that Axiom has been correctly installed on your
-machine (as described in another Axiom document).
-
-To begin using Axiom, issue the command {\bf axiom} to the
-operating system shell.
-There is a brief pause, some start-up messages, and then one
-or more windows appear.
-
-If you are not running Axiom under the X Window System, there is
-only one window (the console).
-At the lower left of the screen there is a prompt that
-looks like
+\subsection{Asp10 Example Code}
+\label{Asp10ExampleCode}
+\index{pages!Asp10ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp10ExampleCode}
+\index{Asp10ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp10ExampleCode}{Asp10 Example Code}
 \begin{verbatim}
-(1) ->
+      SUBROUTINE COEFFN(P,Q,DQDL,X,ELAM,JINT)
+      DOUBLE PRECISION ELAM,P,Q,X,DQDL
+      INTEGER JINT
+      P=1.0D0
+      Q=((-1.0D0*X**3)+ELAM*X*X-2.0D0)/(X*X)
+      DQDL=1.0D0
+      RETURN
+      END
 \end{verbatim}
-%%--> do you want to talk about equation numbers on the right, etc.
-When you want to enter input to Axiom, you do so on the same line
-after the prompt.
-The ``1'' in ``(1)'' is the computation step number and is incremented
-after you enter Axiom statements.
-Note, however, that a system command
-such as \spadsys{)clear all}
-may change the step number in other ways.
-We talk about step numbers more when we discuss system commands
-and the workspace history facility.
-
-If you are running Axiom under the X Window System, there may be two
-windows: the console window (as just described) and the \HyperName{}
-main menu.
-\HyperName{} is a multiple-window hypertext system that lets you
-view Axiom documentation and examples on-line,
-execute Axiom expressions, and generate graphics.
-If you are in a graphical windowing environment,
-it is usually started automatically when Axiom begins.
-If it is not running, issue \spadsys{)hd} to start it.
-We discuss the basics of \HyperName{} in
-\downlink{``\ugHyperTitle''}{ugHyperPage} in Chapter 
-\ugHyperNumber\ignore{ugHyper}.
-
-To interrupt an Axiom computation, hold down the
-\texht{\fbox{\bf Ctrl}}{{\bf Ctrl}} (control) key and press
-\texht{\fbox{\bf c}}{{\bf c}}.
-This  brings you back to the Axiom prompt.
-
-\beginImportant
-To exit from Axiom,  move to the console window,
-type \spadsys{)quit}
-at the input prompt and press the \texht{\fbox{\bf Enter}}{{\bf Enter}} key.
-You will probably be prompted with the following message:
-\centerline{{Please enter {\bf y} or {\bf yes} if you really want to leave the }}
-\centerline{{interactive environment and return to the operating system}}
-You should respond {\bf yes}, for example, to exit Axiom.
-\endImportant
-
-We are purposely vague in describing exactly what your screen
-looks like or what messages Axiom displays.
-Axiom runs on a number of different machines, operating
-systems and window environments, and these differences all affect
-the physical look of the system.
-You can also change the way that Axiom behaves via
-\spadgloss{system commands} described later in this chapter and in
-\downlink{``\ugSysCmdTitle''}{ugSysCmdPage} 
-in Appendix \ugSysCmdNumber\ignore{ugSysCmd}.
-System commands are special commands, like \spadcmd{)set}, that begin
-with a closing parenthesis and are used to change your
-environment.
-For example, you can set a system variable so that you are not
-prompted for confirmation when you want to leave Axiom.
-
-\beginmenu
-    \menudownlink{{1.1.1. \Clef{}}}{ugAvailCLEFPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugAvailCLEFTitle}{\Clef{}}
-\newcommand{\ugAvailCLEFNumber}{1.1.1.}
-
-@
-\subsection{1.1.1. Clef}
-\label{ugAvailCLEFPage}
-\index{pages!ugAvailCLEFPage!ug01.ht}
-\index{ug01.ht!pages!ugAvailCLEFPage}
-\index{ugAvailCLEFPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugAvailCLEFPage}{1.1.1. \Clef{}}
-\beginscroll
-%
-If you are using Axiom under the X Window System, the
-\Clef{} command line editor is probably available and installed.
-With this editor you can recall previous lines with the up and
-down arrow keys\texht{ (\fbox{$\uparrow$} and
-\fbox{$\downarrow$})}{}.
-To move forward and backward on a line, use the right and
-left arrows\texht{ (\fbox{$\rightarrow$} and
-\fbox{$\leftarrow$})}{}.
-You can use the
-\texht{\fbox{\bf Insert}}{{\bf Insert}}
-key to toggle insert mode on or off.
-When you are in insert mode,
-the cursor appears as a large block and if you type
-anything, the characters are inserted into the line without
-deleting the previous ones.
-
-If you press the
-\texht{\fbox{\bf Home}}{{\bf Home}}
-key, the cursor moves to the beginning of the line and if you press the
-\texht{\fbox{\bf End}}{{\bf End}}
-key, the cursor moves to the end of the line.
-Pressing
-\texht{\fbox{\bf Ctrl}--\fbox{\bf End}}{{\bf Ctrl-End}}
-deletes all the text from the cursor to the end of the line.
-
-\Clef{} also provides Axiom operation name completion for
-a limited set of operations.
-If you enter a few letters and then press the
-\texht{\fbox{\bf Tab}}{{\bf Tab}} key,
-\Clef{} tries to use those letters as the prefix of an Axiom
-operation name.
-If a name appears and it is not what you want, press
-\texht{\fbox{\bf Tab}}{{\bf Tab}} again
-to see another name.
-
-You are ready to begin your journey into the world of Axiom.
-Proceed to the first stop.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroTypoTitle}{Typographic Conventions}
-\newcommand{\ugIntroTypoNumber}{1.2.}
-
-@
-\subsection{1.2. Typographic Conventions}
-\label{ugIntroTypoPage}
-\index{pages!ugIntroTypoPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroTypoPage}
-\index{ugIntroTypoPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroTypoPage}{1.2. Typographic Conventions}
-\beginscroll
-
-In this book we have followed these typographical conventions:
-\indent{4}
-\beginitems
-%
-\item[-] Categories, domains and packages are displayed in
-\texht{a sans-serif typeface:}{this font:}
-\axiomType{Ring}, \axiomType{Integer}, \axiomType{DiophantineSolutionPackage}.
-%
-\item[-] Prefix operators, infix operators, and punctuation symbols in the Axiom
-language are displayed in the text like this:
-\axiomOp{+}, \axiomSyntax{\$}, \axiomSyntax{+->}.
-%
-\item[-] Axiom expressions or expression fragments are displayed in
-\texht{a mon\-o\-space typeface:}{this font:}
-\axiom{inc(x) == x + 1}.
-%
-\item[-] For clarity of presentation, \TeX{} is often
-used to format expressions\texht{: $g(x)=x^2+1.$}{.}
-%
-\item[-] Function names and \HyperName{} button names
-are displayed in the text in
-\texht{a bold typeface:}{this font:}
-\axiomFun{factor}, \axiomFun{integrate},  {\bf Lighting}.
-%
-\item[-] Italics are used for emphasis and for words defined in the
-glossary: \spadgloss{category}.
-\enditems
-\indent{0}
-
-This book contains over 2500 examples of Axiom input and output.
-All examples were run though Axiom and their output was
-created in \texht{\TeX{}}{TeX} form for this book by the Axiom
-\axiomType{TexFormat} package.
-We have deleted system messages from the example output if those
-messages are not important for the discussions in which the examples
-appear.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroExpressionsTitle}{The Axiom Language}
-\newcommand{\ugIntroExpressionsNumber}{1.3.}
-
-@
-\subsection{1.3. The Axiom Language}
-\label{ugIntroExpressionsPage}
-\begin{itemize}
-\item ugIntroArithmeticPage \ref{ugIntroArithmeticPage} on
-page~\pageref{ugIntroArithmeticPage}
-\item ugIntroPreviousPage \ref{ugIntroPreviousPage} on
-page~\pageref{ugIntroPreviousPage}
-\item ugIntroTypesPage \ref{ugIntroTypesPage} on
-page~\pageref{ugIntroTypesPage}
-\item ugIntroAssignPage \ref{ugIntroAssignPage} on
-page~\pageref{ugIntroAssignPage}
-\item ugIntroConversionPage \ref{ugIntroConversionPage} on
-page~\pageref{ugIntroConversionPage}
-\item ugIntroCallFunPage \ref{ugIntroCallFunPage} on
-page~\pageref{ugIntroCallFunPage}
-\item ugIntroMacrosPage \ref{ugIntroMacrosPage} on
-page~\pageref{ugIntroMacrosPage}
-\item ugIntroLongPage \ref{ugIntroLongPage} on
-page~\pageref{ugIntroLongPage}
-\item ugIntroCommentsPage \ref{ugIntroCommentsPage} on
-page~\pageref{ugIntroCommentsPage}
-\end{itemize}
-\index{pages!ugIntroExpressionsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroExpressionsPage}
-\index{ugIntroExpressionsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroExpressionsPage}{1.3. The Axiom Language}
-\beginscroll
-%
-
-The Axiom language is a rich language for performing
-interactive computations and for building components of the
-Axiom library.
-Here we present only some basic aspects of the language that you
-need to know for the rest of this chapter.
-Our discussion here is intentionally informal, with details
-unveiled on an ``as needed'' basis.
-For more information on a particular construct, we suggest you
-consult the index at the back of the book.
-
-\beginmenu
-    \menudownlink{{1.3.1. Arithmetic Expressions}}{ugIntroArithmeticPage}
-    \menudownlink{{1.3.2. Previous Results}}{ugIntroPreviousPage}
-    \menudownlink{{1.3.3. Some Types}}{ugIntroTypesPage}
-    \menudownlink{{1.3.4. Symbols, Variables, Assignments, and Declarations}}{ugIntroAssignPage}
-    \menudownlink{{1.3.5. Conversion}}{ugIntroConversionPage}
-    \menudownlink{{1.3.6. Calling Functions}}{ugIntroCallFunPage}
-    \menudownlink{{1.3.7. Some Predefined Macros}}{ugIntroMacrosPage}
-    \menudownlink{{1.3.8. Long Lines}}{ugIntroLongPage}
-    \menudownlink{{1.3.9. Comments}}{ugIntroCommentsPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroArithmeticTitle}{Arithmetic Expressions}
-\newcommand{\ugIntroArithmeticNumber}{1.3.1.}
-
-@
-\subsection{1.3.1. Arithmetic Expressions}
-\label{ugIntroArithmeticPage}
-\index{pages!ugIntroArithmeticPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroArithmeticPage}
-\index{ugIntroArithmeticPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroArithmeticPage}{1.3.1. Arithmetic Expressions}
-\beginscroll
-
-For arithmetic expressions, use the \spadop{+} and \spadop{-}
-\spadglossSee{operators}{operator} as in mathematics.
-Use \spadop{*} for multiplication, and \spadop{**} for
-exponentiation.
-To create a fraction, use \spadop{/}.
-When an expression contains several operators, those of highest
-\spadgloss{precedence} are evaluated first.
-For arithmetic operators, \spadop{**} has highest precedence,
-\spadop{*} and \spadop{/} have the next highest
-precedence, and \spadop{+} and \spadop{-} have the lowest
-precedence.
-
-\xtc{
-Axiom puts implicit parentheses around operations of higher
-precedence, and groups those of equal precedence from left to right.
-}{
-\spadpaste{1 + 2 - 3 / 4 * 3 ** 2 - 1}
-}
-\xtc{
-The above expression is equivalent to this.
-}{
-\spadpaste{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
-}
-\xtc{
-If an expression contains subexpressions enclosed in parentheses,
-the parenthesized subexpressions are evaluated first (from left to
-right, from inside out).
-}{
-\spadpaste{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroPreviousTitle}{Previous Results}
-\newcommand{\ugIntroPreviousNumber}{1.3.2.}
-
-@
-\subsection{1.3.2. Previous Results}
-\label{ugIntroPreviousPage}
-\index{pages!ugIntroPreviousPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroPreviousPage}
-\index{ugIntroPreviousPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroPreviousPage}{1.3.2. Previous Results}
-\beginscroll
-
-Use the percent sign (\axiomSyntax{\%}) to refer to the last
-result.
-Also, use \axiomSyntax{\%\%} to refer to previous results.
-\axiom{\%\%(-1)} is equivalent to \axiomSyntax{\%},
-\axiom{\%\%(-2)} returns the next to the last result, and so on.
-\axiom{\%\%(1)} returns the result from step number 1,
-\axiom{\%\%(2)} returns the result from step number 2, and so on.
-\axiom{\%\%(0)} is not defined.
-
-\xtc{
-This is ten to the tenth power.
-}{
-\spadpaste{10 ** 10 \bound{prev}}
-}
-\xtc{
-This is the last result minus one.
-}{
-\spadpaste{\% - 1 \free{prev}\bound{prev1}}
-}
-\xtc{
-This is the last result.
-}{
-\spadpaste{\%\%(-1) \free{prev1}\bound{prev2}}
-}
-\xtc{
-This is the result from step number 1.
-}{
-\spadpaste{\%\%(1) \free{prev2}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroTypesTitle}{Some Types}
-\newcommand{\ugIntroTypesNumber}{1.3.3.}
-
-@
-\subsection{1.3.3. Some Types}
-\label{ugIntroTypesPage}
-\begin{itemize}
-\item ugTypesPage \ref{ugTypesPage} on
-page~\pageref{ugTypesPage}
-\end{itemize}
-\index{pages!ugIntroTypesPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroTypesPage}
-\index{ugIntroTypesPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroTypesPage}{1.3.3. Some Types}
-\beginscroll
-
-Everything in Axiom has a type.
-The type determines what operations you can perform on an object and
-how the object can be used.
-An entire chapter of this book (\downlink{``\ugTypesTitle''}{ugTypesPage} 
-in Chapter \ugTypesNumber\ignore{ugTypes}) is dedicated to
-the interactive use of types.
-Several of the final chapters discuss how types are built and how
-they are organized in the Axiom library.
-
-\xtc{
-Positive integers are given type \spadtype{PositiveInteger}.
-}{
-\spadpaste{8}
-}
-\xtc{
-Negative ones are given type \spadtype{Integer}.
-This fine distinction is helpful to the
-Axiom interpreter.
-}{
-\spadpaste{-8}
-}
-\xtc{
-Here a positive integer exponent gives a polynomial result.
-}{
-\spadpaste{x**8}
-}
-\xtc{
-Here a negative integer exponent produces a fraction.
-}{
-\spadpaste{x**(-8)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroAssignTitle}{Symbols, Variables, Assignments, and Declarations}
-\newcommand{\ugIntroAssignNumber}{1.3.4.}
-
-@
-\subsection{1.3.4. Symbols, Variables, Assignments, and Declarations}
-\label{ugIntroAssignPage}
-\begin{itemize}
-\item ugLangAssignPage \ref{ugLangAssignPage} on
-page~\pageref{ugLangAssignPage}
-\end{itemize}
-\index{pages!ugIntroAssignPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroAssignPage}
-\index{ugIntroAssignPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroAssignPage}
-{1.3.4. Symbols, Variables, Assignments, and Declarations}
-\beginscroll
-
-A \spadgloss{symbol} is a literal used for the input of things like
-the ``variables'' in polynomials and power series.
-
-\labelSpace{2pc}
-\xtc{
-We use the three symbols \axiom{x}, \axiom{y}, and \axiom{z} in
-entering this polynomial.
-}{
-\spadpaste{(x - y*z)**2}
-}
-A symbol has a name beginning with an uppercase or lowercase alphabetic
-character, \axiomSyntax{\%}, or \axiomSyntax{!}.
-Successive characters (if any) can be any of the above, digits, or
-\axiomSyntax{?}.
-Case is distinguished: the symbol \axiom{points} is different
-from the symbol \axiom{Points}.
-
-A symbol can also be used in Axiom as a \spadgloss{variable}.
-A variable refers to a value.
-To \spadglossSee{assign}{assignment}
-a value to a variable,
-the operator \axiomSyntax{:=}
-is used.\footnote{Axiom actually has two forms of assignment:
-{\it immediate} assignment, as discussed here,
-and {\it delayed assignment}. See 
-\downlink{``\ugLangAssignTitle''}{ugLangAssignPage} 
-in Section \ugLangAssignNumber\ignore{ugLangAssign} for details.}
-A variable initially has no restrictions on the kinds of
-values to which it can refer.
-
-\xtc{
-This assignment gives the value \axiom{4} (an integer) to
-a variable named \axiom{x}.
-}{
-\spadpaste{x := 4}
-}
-\xtc{
-This gives the value \axiom{z + 3/5} (a polynomial)  to \axiom{x}.
-}{
-\spadpaste{x := z + 3/5}
-}
-\xtc{
-To restrict the types of objects that can be assigned to a variable,
-use a \spadgloss{declaration}
-}{
-\spadpaste{y : Integer \bound{y}}
-}
-\xtc{
-After a variable is declared to be of some type, only values
-of that type can be assigned to that variable.
-}{
-\spadpaste{y := 89\bound{y1}\free{y}}
-}
-\xtc{
-The declaration for \axiom{y} forces values assigned to \axiom{y} to
-be converted to integer values.
-}{
-\spadpaste{y := sin \%pi}
-}
-\xtc{
-If no such conversion is possible,
-Axiom refuses to assign a value to \axiom{y}.
-}{
-\spadpaste{y := 2/3}
-}
-\xtc{
-A type declaration can also be given together with an assignment.
-The declaration can assist Axiom in choosing the correct
-operations to apply.
-}{
-\spadpaste{f : Float := 2/3}
-}
-
-Any number of expressions can be given on input line.
-Just separate them by semicolons.
-Only the result of evaluating the last expression is displayed.
-
-\xtc{
-These two expressions have the same effect as
-the previous single expression.
-}{
-\spadpaste{f : Float; f := 2/3 \bound{fff}}
-}
-
-The type of a symbol is either \axiomType{Symbol}
-or \axiomType{Variable({\it name})} where {\it name} is the name
-of the symbol.
-
-\xtc{
-By default, the interpreter
-gives this symbol the type \axiomType{Variable(q)}.
-}{
-\spadpaste{q}
-}
-\xtc{
-When multiple symbols are involved, \axiomType{Symbol} is used.
-}{
-\spadpaste{[q, r]}
-}
-
-\xtc{
-What happens when you try to use a symbol that is the name of a variable?
-}{
-\spadpaste{f \free{fff}}
-}
-\xtc{
-Use a single quote (\axiomSyntax{'}) before
-the name to get the symbol.
-}{
-\spadpaste{'f}
-}
-
-Quoting a name creates a symbol by
-preventing evaluation of the name as a variable.
-Experience will teach you when you are most likely going to need to use
-a quote.
-We try to point out the location of such trouble spots.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroConversionTitle}{Conversion}
-\newcommand{\ugIntroConversionNumber}{1.3.5.}
-
-@
-\subsection{1.3.5. Conversion}
-\label{ugIntroConversionPage}
-\begin{itemize}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~\pageref{ugTypesConvertPage}
-\end{itemize}
-\index{pages!ugIntroConversionPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroConversionPage}
-\index{ugIntroConversionPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroConversionPage}{1.3.5. Conversion}
-\beginscroll
-
-Objects of one type can usually be ``converted'' to objects of several
-other types.
-To \spadglossSee{convert}{conversion}
-an object to a new type, use the \axiomSyntax{::} infix
-operator.\footnote{Conversion is discussed in detail in 
-\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
-in Section \ugTypesConvertNumber\ignore{ugTypesConvert}.}
-For example, to display an object, it is necessary to
-convert the object to type \spadtype{OutputForm}.
-
-\xtc{
-This produces a polynomial with rational number coefficients.
-}{
-\spadpaste{p := r**2 + 2/3 \bound{p}}
-}
-\xtc{
-Create a quotient of polynomials with integer coefficients
-by using \axiomSyntax{::}.
-}{
-\spadpaste{p :: Fraction Polynomial Integer \free{p}}
-}
-
-Some conversions can be performed automatically when
-Axiom tries to evaluate your input.
-Others conversions must be explicitly requested.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroCallFunTitle}{Calling Functions}
-\newcommand{\ugIntroCallFunNumber}{1.3.6.}
-
-@
-\subsection{1.3.6. Calling Functions}
-\label{ugIntroCallFunPage}
-\index{pages!ugIntroCallFunPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroCallFunPage}
-\index{ugIntroCallFunPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroCallFunPage}{1.3.6. Calling Functions}
-\beginscroll
-
-As we saw earlier, when you want to add or subtract two values,
-you place the arithmetic operator \spadop{+}
-or \spadop{-} between the two
-\spadglossSee{arguments}{argument} denoting the values.
-To use most other Axiom operations, however, you use another syntax:
-write the name
-of the operation first, then an open parenthesis, then each of the
-arguments separated by commas, and, finally, a closing parenthesis.
-If the operation takes only one argument and the argument is a number
-or a symbol, you can omit the parentheses.
-
-\xtc{
-This calls the operation \axiomFun{factor} with the single
-integer argument \axiom{120}.
-}{
-\spadpaste{factor(120)}
-}
-\xtc{
-This is a call to \axiomFun{divide} with the two integer arguments
-\axiom{125} and \axiom{7}.
-}{
-\spadpaste{divide(125,7)}
-}
-\xtc{
-This calls \axiomFun{quatern} with four floating-point arguments.
-}{
-\spadpaste{quatern(3.4,5.6,2.9,0.1)}
-}
-\xtc{
-This is the same as \axiom{factorial(10)}.
-}{
-\spadpaste{factorial 10}
-}
-
-An operations that returns a \spadtype{Boolean} value (that is,
-\spad{true} or \spad{false}) frequently has a name suffixed with
-a question mark (``?'').  For example, the \spadfun{even?}
-operation returns \spad{true} if its integer argument is an even
-number, \spad{false} otherwise.
-
-An operation that can be destructive on one or more arguments
-usually has a name ending in a exclamation point (``!'').
-This actually means that it is {\it allowed} to update its
-arguments but it is not {\it required} to do so. For example,
-the underlying representation of a collection type may not allow
-the very last element to removed and so an empty object may be
-returned instead. Therefore, it is important that you use the
-object returned by the operation and not rely on a physical
-change having occurred within the object. Usually, destructive
-operations are provided for efficiency reasons.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroMacrosTitle}{Some Predefined Macros}
-\newcommand{\ugIntroMacrosNumber}{1.3.7.}
-
-@
-\subsection{1.3.7. Some Predefined Macros}
-\label{ugIntroMacrosPage}
-\begin{itemize}
-\item ugUserMacrosPage \ref{ugUserMacrosPage} on
-page~\pageref{ugUserMacrosPage}
-\end{itemize}
-\index{pages!ugIntroMacrosPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroMacrosPage}
-\index{ugIntroMacrosPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroMacrosPage}{1.3.7. Some Predefined Macros}
-\beginscroll
-
-Axiom provides several \spadglossSee{macros}{macro}
-for your convenience.\footnote{See 
-\downlink{``\ugUserMacrosTitle''}{ugUserMacrosPage} 
-in Section \ugUserMacrosNumber\ignore{ugUserMacros}
-for a discussion on how to write your own macros.}
-Macros are names
-(or forms) that expand to larger expressions for commonly used values.
-
-\texht{
-\centerline{{\begin{tabular}{ll}}}
-\centerline{{\spadgloss{\%i}             &  The square root of -1. }}
-\centerline{{\spadgloss{\%e}             &  The base of the natural logarithm. }}
-\centerline{{\spadgloss{\%pi}            &  $\pi$. }}
-\centerline{{\spadgloss{\%infinity}      &  $\infty$. }}
-\centerline{{\spadgloss{\%plusInfinity}  &  $+\infty$. }}
-\centerline{{\spadgloss{\%minusInfinity} &  $-\infty$.}}
-\centerline{{\end{tabular}}}
-}{
-\indent{0}
-\beginitems
-\item[\axiomSyntax{\%i}]             \tab{17} The square root of -1.
-\item[\axiomSyntax{\%e}]             \tab{17} The base of the natural logarithm.
-\item[\axiomSyntax{\%pi}]            \tab{17} Pi.
-\item[\axiomSyntax{\%infinity}]      \tab{17} Infinity.
-\item[\axiomSyntax{\%plusInfinity}]  \tab{17} Plus infinity.
-\item[\axiomSyntax{\%minusInfinity}] \tab{17} Minus infinity.
-\enditems
-\indent{0}
-}
-
-%To display all the macros (along with anything you have
-%defined in the workspace), issue the system command \spadsys{)display all}.
-
-\endscroll
-\autobuttons
 \end{page}
 
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroLongTitle}{Long Lines}
-\newcommand{\ugIntroLongNumber}{1.3.8.}
 
 @
-\subsection{1.3.8. Long Lines}
-\label{ugIntroLongPage}
-\begin{itemize}
-\item ugInOutInPage \ref{ugInOutInPage} on
-page~\pageref{ugInOutInPage}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\end{itemize}
-\index{pages!ugIntroLongPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroLongPage}
-\index{ugIntroLongPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroLongPage}{1.3.8. Long Lines}
-\beginscroll
-
-When you enter Axiom expressions from your keyboard, there
-will be times when they are too long to fit on one line.
-Axiom does not care how long your lines are, so you can let
-them continue from the right margin to the left side of the
-next line.
-
-Alternatively, you may want to enter several shorter lines and
-have Axiom glue them together.
-To get this glue, put an underscore (\_) at the end of
-each line you wish to continue.
-\begin{verbatim}
-2_
-+_
-3
-\end{verbatim}
-is the same as if you had entered
+\subsection{Asp12 Example Code}
+\label{Asp12ExampleCode}
+\index{pages!Asp12ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp12ExampleCode}
+\index{Asp12ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp12ExampleCode}{Asp12 Example Code}
 \begin{verbatim}
-2+3
+      SUBROUTINE MONIT (MAXIT,IFLAG,ELAM,FINFO)
+      DOUBLE PRECISION ELAM,FINFO(15)
+      INTEGER MAXIT,IFLAG
+      IF(MAXIT.EQ.-1)THEN
+        PRINT*,"Output from Monit"
+      ENDIF
+      PRINT*,MAXIT,IFLAG,ELAM,(FINFO(I),I=1,4)
+      RETURN
+      END
 \end{verbatim}
-
-If you are putting your Axiom statements in an input file
-(see \downlink{``\ugInOutInTitle''}{ugInOutInPage} 
-in Section \ugInOutInNumber\ignore{ugInOutIn}),
-you can use indentation to indicate the structure of your program.
-(see \downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
-in Section \ugLangBlocksNumber\ignore{ugLangBlocks}).
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroCommentsTitle}{Comments}
-\newcommand{\ugIntroCommentsNumber}{1.3.9.}
-
-@
-\subsection{1.3.9. Comments}
-\label{ugIntroCommentsPage}
-\index{pages!ugIntroCommentsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroCommentsPage}
-\index{ugIntroCommentsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroCommentsPage}{1.3.9. Comments}
-\beginscroll
-
-Comment statements begin with two consecutive hyphens or two
-consecutive plus signs and continue until the end of the line.
-
-\xtc{
-The comment beginning with {\tt --} is ignored by Axiom.
-}{
-\spadpaste{2 + 3   -- this is rather simple, no?}
-}
-
-There is no way to write long multi-line comments
-other than starting each line with \axiomSyntax{--} or
-\axiomSyntax{++}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroGraphicsTitle}{Graphics}
-\newcommand{\ugIntroGraphicsNumber}{1.4.}
-
-@
-\subsection{1.4. Graphics}
-\label{ugIntroGraphicsPage}
-\begin{itemize}
-\item ugProblemNumericPage \ref{ugProblemNumericPage} on
-page~\pageref{ugProblemNumericPage}
-\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on
-page~\pageref{ugAppGraphicsPage}
-\item ugGraphPage \ref{ugGraphPage} on
-page~\pageref{ugGraphPage}
-\end{itemize}
-\index{pages!ugIntroGraphicsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroGraphicsPage}
-\index{ugIntroGraphicsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroGraphicsPage}{1.4. Graphics}
-\beginscroll
-%
-
-Axiom has a two- and three-dimensional drawing and rendering
-package that allows you to draw, shade, color, rotate, translate, map,
-clip, scale and combine graphic output of Axiom computations.
-The graphics interface is capable of plotting functions of one or more
-variables and plotting parametric surfaces.
-Once the graphics figure appears in a window,
-move your mouse to the window and click.
-A control panel appears immediately  and allows you to
-interactively transform the object.
-
-\psXtc{
-This is an example of Axiom's two-dimensional plotting.
-From the 2D Control Panel you can rescale the plot, turn axes and units
-on and off and save the image, among other things.
-This PostScript image was produced by clicking on the
-\texht{\fbox{\bf PS}}{{\bf PS}} 2D Control Panel button.
-}{
-\graphpaste{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
-}{
-\epsffile[72 72 300 300]{../ps/rose-1.ps}
-}
-
-\psXtc{
-This is an example of Axiom's three-dimensional plotting.
-It is a monochrome graph of the complex arctangent
-function.
-The image displayed was rotated and had the ``shade'' and ``outline''
-display options set from the 3D Control Panel.
-The PostScript output was produced by clicking on the
-\texht{\fbox{\bf save}}{{\bf save}} 3D Control Panel button and then
-clicking on the \texht{\fbox{\bf PS}}{{\bf PS}} button.
-See \downlink{``\ugProblemNumericTitle''}{ugProblemNumericPage} 
-in Section \ugProblemNumericNumber\ignore{ugProblemNumeric} for 
-more details and examples
-of Axiom's numeric and graphics capabilities.
-}{
-\graphpaste{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
-}{
-\epsffile[72 72 285 285]{../ps/atan-1.ps}
-}
-
-An exhibit of \Gallery{} is given in the
-center section of this book.
-For a description of the commands and programs that
-produced these figures, see 
-\downlink{``\ugAppGraphicsTitle''}{ugAppGraphicsPage} 
-in Appendix \ugAppGraphicsNumber\ignore{ugAppGraphics}.
-PostScript
-output is available so that Axiom images can be
-printed.\footnote{PostScript is a trademark of Adobe Systems Incorporated,
-registered in the United States.}
-See \downlink{``\ugGraphTitle''}{ugGraphPage} 
-in Chapter \ugGraphNumber\ignore{ugGraph} for 
-more examples and details about using
-Axiom's graphics facilities.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroNumbersTitle}{Numbers}
-\newcommand{\ugIntroNumbersNumber}{1.5.}
-
-@
-\subsection{1.5. Numbers}
-\label{ugIntroNumbersPage}
-\begin{itemize}
-\item FloatXmpPage \ref{FloatXmpPage} on
-page~\pageref{FloatXmpPage}
-\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
-page~\pageref{DoubleFloatXmpPage}
-\item ComplexXmpPage \ref{ComplexXmpPage} on
-page~\pageref{ComplexXmpPage}
-\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
-page~\pageref{DecimalExpansionXmpPage}
-\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
-page~\pageref{ContinuedFractionXmpPage}
-\item PartialFractionXmpPage \ref{PartialFractionXmpPage} on
-page~\pageref{PartialFractionXmpPage}
-\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
-page~\pageref{RadixExpansionXmpPage}
-\item ugxProblemFinitePrimeTitle \ref{ugxProblemFinitePrimeTitle} on
-page~\pageref{ugxProblemFinitePrimeTitle}
-\end{itemize}
-\index{pages!ugIntroNumbersPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroNumbersPage}
-\index{ugIntroNumbersPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroNumbersPage}{1.5. Numbers}
-\beginscroll
-%
-
-Axiom distinguishes very carefully between different kinds
-of numbers, how they are represented and what their properties
-are.
-Here are a sampling of some of these kinds of numbers and some
-things you can do with them.
-
-\xtc{
-Integer arithmetic is always exact.
-}{
-\spadpaste{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
-}
-\xtc{
-Integers can be represented in factored form.
-}{
-\spadpaste{factor 643238070748569023720594412551704344145570763243 \bound{ex1}}
-}
-\xtc{
-Results stay factored when you do arithmetic.
-Note that the \axiom{12} is automatically factored for you.
-}{
-\spadpaste{\% * 12 \free{ex1}}
-}
-\xtc{
-Integers can also be displayed to bases other than 10.
-This is an integer in base 11.
-}{
-\spadpaste{radix(25937424601,11)}
-}
-\xtc{
-Roman numerals are also available for those special occasions.
-}{
-\spadpaste{roman(1992)}
-}
-\xtc{
-Rational number arithmetic is also exact.
-}{
-\spadpaste{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r}}
-}
-\xtc{
-To factor fractions, you have to
-map \axiomFun{factor} onto the numerator and denominator.
-}{
-\spadpaste{map(factor,r) \free{r}}
-}
-\xtc{
-Type \spadtype{SingleInteger} refers to machine word-length
-integers.
-In English, this expression means ``\axiom{11} as a small
-integer''.
-}{
-\spadpaste{11@SingleInteger}
-}
-\xtc{
-Machine double-precision floating-point numbers are also
-available for numeric and graphical
-applications.
-}{
-\spadpaste{123.21@DoubleFloat}
-}
-
-The normal floating-point type in Axiom, \spadtype{Float},
-is a software implementation of floating-point numbers in which
-the exponent and the mantissa may have any number of
-digits.\footnote{See 
-\downlink{`Float'}{FloatXmpPage}\ignore{Float} and 
-\downlink{`DoubleFloat'}{DoubleFloatXmpPage}\ignore{DoubleFloat} for
-additional information on floating-point types.}
-The types \spadtype{Complex(Float)} and
-\spadtype{Complex(DoubleFloat)} are the corresponding software
-implementations of complex floating-point numbers.
-
-\xtc{
-This is a floating-point approximation to about twenty digits.
-The \axiomSyntax{::}
-is used here to change from one kind of object
-(here, a rational number) to another (a floating-point number).
-}{
-\spadpaste{r :: Float \free{r}}
-}
-\xtc{
-Use \spadfunFrom{digits}{Float} to change the number of digits in
-the representation.
-This operation returns the previous value so you can reset it
-later.
-}{
-\spadpaste{digits(22) \bound{fewerdigits}}
-}
-\xtc{
-To \axiom{22} digits of precision, the number
-\texht{$e^{\pi {\sqrt {163.0}}}$}{\axiom{exp(\%pi * sqrt 163.0)}}
-appears to be an integer.
-}{
-\spadpaste{exp(\%pi * sqrt 163.0) \free{fewerdigits}}
-}
-\xtc{
-Increase the precision to forty digits and try again.
-}{
-\spadpaste{digits(40);  exp(\%pi * sqrt 163.0) \free{moredigits}}
-}
-\xtc{
-Here are complex numbers with rational numbers as real and
-imaginary parts.
-}{
-\spadpaste{(2/3 + \%i)**3 \bound{gaussint}}
-}
-\xtc{
-The standard operations on complex numbers are available.
-}{
-\spadpaste{conjugate \% \free{gaussint}}
-}
-\xtc{
-You can factor complex integers.
-}{
-\spadpaste{factor(89 - 23 * \%i)}
-}
-\xtc{
-Complex numbers with floating point parts are also available.
-}{
-\spadpaste{exp(\%pi/4.0 * \%i)}
-}
-%%--> These are not numbers:
-%\xtc{
-%The real and imaginary parts can be symbolic.
-%}{
-%\spadcommand{complex(u,v) \bound{cuv}}
-%}
-%\xtc{
-%Of course, you can do complex arithmetic with these also.
-%See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} 
-for more information.
-%}{
-%\spadcommand{\% ** 2 \free{cuv}}
-%}
-\xtc{
-Every rational number has an exact representation as a
-repeating decimal expansion
-(see \downlink{`DecimalExpansion'}{DecimalExpansionXmpPage}
-\ignore{DecimalExpansion}).
-}{
-\spadpaste{decimal(1/352)}
-}
-\xtc{
-A rational number can also be expressed as a continued fraction (see
-\downlink{`ContinuedFraction'}{ContinuedFractionXmpPage}
-\ignore{ContinuedFraction}).
-}{
-\spadpaste{continuedFraction(6543/210)}
-}
-\xtc{
-Also, partial fractions can be used and can be displayed in a
-compact \ldots
-}{
-\spadpaste{partialFraction(1,factorial(10)) \bound{partfrac}}
-}
-\xtc{
-or expanded format (see 
-\downlink{`PartialFraction'}{PartialFractionXmpPage}\ignore{PartialFraction}).
-}{
-\spadpaste{padicFraction(\%) \free{partfrac}}
-}
-\xtc{
-Like integers, bases (radices) other than ten can be used for rational
-numbers (see 
-\downlink{`RadixExpansion'}{RadixExpansionXmpPage}\ignore{RadixExpansion}).
-Here we use base eight.
-}{
-\spadpaste{radix(4/7, 8)\bound{rad}}
-}
-\xtc{
-Of course, there are complex versions of these as well.
-Axiom decides to make the result a complex rational number.
-}{
-\spadpaste{\% + 2/3*\%i\free{rad}}
-}
-\xtc{
-You can also use Axiom to manipulate fractional powers.
-}{
-\spadpaste{(5 + sqrt 63 + sqrt 847)**(1/3)}
-}
-\xtc{
-You can also compute with integers modulo a prime.
-}{
-\spadpaste{x : PrimeField 7 := 5 \bound{x}}
-}
-\xtc{
-Arithmetic is then done modulo \mathOrSpad{7}.
-}{
-\spadpaste{x**3 \free{x}}
-}
-\xtc{
-Since \mathOrSpad{7} is prime, you can invert nonzero values.
-}{
-\spadpaste{1/x \free{x}}
-}
-\xtc{
-You can also compute modulo an integer that is not a prime.
-}{
-\spadpaste{y : IntegerMod 6 := 5 \bound{y}}
-}
-\xtc{
-All of the usual arithmetic operations are available.
-}{
-\spadpaste{y**3 \free{y}}
-}
-\xtc{
-Inversion is not available if the modulus is not a prime
-number.
-Modular arithmetic and prime fields are discussed in
-\downlink{``\ugxProblemFinitePrimeTitle''}{ugxProblemFinitePrimePage} 
-in Section \ugxProblemFinitePrimeNumber\ignore{ugxProblemFinitePrime}.
-}{
-\spadpaste{1/y \free{y}}
-}
-\xtc{
-This defines \axiom{a} to be an algebraic number, that is,
-a root of a polynomial equation.
-}{
-\spadpaste{a := rootOf(a**5 + a**3 + a**2 + 3,a) \bound{a}}
-}
-\xtc{
-Computations with \axiom{a} are reduced according
-to the polynomial equation.
-}{
-\spadpaste{(a + 1)**10\free{a}}
-}
-\xtc{
-Define \axiom{b} to be an algebraic number involving \axiom{a}.
-}{
-\spadpaste{b := rootOf(b**4 + a,b) \bound{b}\free{a}}
-}
-\xtc{
-Do some arithmetic.
-}{
-\spadpaste{2/(b - 1) \free{b}\bound{check}}
-}
-\xtc{
-To expand and simplify this, call \axiomFun{ratDenom}
-to rationalize the denominator.
-}{
-\spadpaste{ratDenom(\%) \free{check}\bound{check1}}
-}
-\xtc{
-If we do this, we should get \axiom{b}.
-}{
-\spadpaste{2/\%+1 \free{check1}\bound{check2}}
-}
-\xtc{
-But we need to rationalize the denominator again.
-}{
-\spadpaste{ratDenom(\%) \free{check2}}
-}
-\xtc{
-Types \spadtype{Quaternion} and \spadtype{Octonion} are also available.
-Multiplication of quaternions is non-commutative, as expected.
-}{
-\spadpaste{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroCollectTitle}{Data Structures}
-\newcommand{\ugIntroCollectNumber}{1.6.}
-
-@
-\subsection{1.6. Data Structures}
-\label{ugIntroCollectPage}
-\begin{itemize}
-\item ListXmpPage \ref{ListXmpPage} on
-page~\pageref{ListXmpPage}
-\item ugLangItsPage \ref{ugLangItsPage} on
-page~\pageref{ugLangItsPage}
-\item StreamXmpPage \ref{StreamXmpPage} on
-page~\pageref{StreamXmpPage}
-\item ugLangItsPage \ref{ugLangItsPage} on
-page~\pageref{ugLangItsPage}
-\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
-page~\pageref{OneDimensionalArrayXmpPage}
-\item FlexibleArrayXmpPage \ref{FlexibleArrayXmpPage} on
-page~\pageref{FlexibleArrayXmpPage}
-\item HeapXmpPage \ref{HeapXmpPage} on
-page~\pageref{HeapXmpPage}
-\item BinarySearchTreeXmpPage \ref{BinarySearchTreeXmpPage} on
-page~\pageref{BinarySearchTreeXmpPage}
-\item BalancedBinaryTreeXmpPage \ref{BalancedBinaryTreeXmpPage} on
-page~\pageref{BalancedBinaryTreeXmpPage}
-\item SetXmpPage \ref{SetXmpPage} on
-page~\pageref{SetXmpPage}
-\item MultiSetXmpPage \ref{MultiSetXmpPage} on
-page~\pageref{MultiSetXmpPage}
-\item AssociationListXmpPage \ref{AssociationListXmpPage} on
-page~\pageref{AssociationListXmpPage}
-\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
-page~\pageref{KeyedAccessFileXmpPage}
-\item LibraryXmpPage \ref{LibraryXmpPage} on
-page~\pageref{LibraryXmpPage}
-\item SparseTableXmpPage \ref{SparseTableXmpPage} on
-page~\pageref{SparseTableXmpPage}
-\item StringTableXmpPage \ref{StringTableXmpPage} on
-page~\pageref{StringTableXmpPage}
-\item TableXmpPage \ref{TableXmpPage} on
-page~\pageref{TableXmpPage}
-\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
-page~\pageref{ugTypesRecordsPage}
-\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
-page~\pageref{ugTypesUnionsPage}
-\item ugDomainsPage \ref{ugDomainsPage} on
-page~\pageref{ugDomainsPage}
-\end{itemize}
-\index{pages!ugIntroCollectPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroCollectPage}
-\index{ugIntroCollectPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroCollectPage}{1.6. Data Structures}
-\beginscroll
-%
-
-Axiom has a large variety of data structures available.
-Many data structures are particularly useful for interactive
-computation and others are useful for building applications.
-The data structures of Axiom are organized into
-\spadglossSee{category hierarchies}{hierarchy} as shown on
-the inside back cover.
-
-A \spadgloss{list} is the most commonly used data structure in
-Axiom for holding objects all of the same
-type.\footnote{Lists are discussed in 
-\downlink{`List'}{ListXmpPage}\ignore{List} and in
-\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
-in Section \ugLangItsNumber\ignore{ugLangIts}.}
-The name {\it list} is short for ``linked-list of nodes.'' Each
-node consists of a value (\spadfunFrom{first}{List}) and a link
-(\spadfunFrom{rest}{List}) that
-\spadglossSee{points}{pointer} to the next node, or to a
-distinguished value denoting the empty list.
-To get to, say, the third element, Axiom starts at the front
-of the list, then traverses across two links to the third node.
-
-\xtc{
-Write a list of elements using
-square brackets with commas separating the elements.
-}{
-\spadpaste{u := [1,-7,11] \bound{u}}
-}
-\xtc{
-This is the value at the third node.
-Alternatively, you can say \axiom{u.3}.
-}{
-\spadpaste{first rest rest u\free{u}}
-}
-
-Many operations are defined on lists, such as:
-\axiomFun{empty?}, to test that a list has no elements;
-\axiomFun{cons}\axiom{(x,l)}, to create a new list with
-\axiomFun{first} element \axiom{x} and \axiomFun{rest} \axiom{l};
-\axiomFun{reverse}, to create a new list with elements in reverse
-order; and \axiomFun{sort}, to arrange elements in order.
-
-An important point about lists is that they are ``mutable'': their
-constituent elements and links can be changed ``in place.''
-To do this, use any of the operations whose names end with the
-character \axiomSyntax{!}.
-
-\xtc{
-The operation \spadfunFromX{concat}{List}\axiom{(u,v)}
-replaces the last link of the list
-\axiom{u} to point to some other list \axiom{v}.
-Since \axiom{u} refers to the original list,
-this change is seen by \axiom{u}.
-}{
-\spadpaste{concat!(u,[9,1,3,-4]); u\free{u}\bound{u1}}
-}
-\xtc{
-A {\it cyclic list} is a list with a ``cycle'':
-a link pointing back to an earlier node of the list.
-To create a cycle, first get a node somewhere down
-the list.
-}{
-\spadpaste{lastnode := rest(u,3)\free{u1}\bound{u2}}
-}
-\xtc{
-Use \spadfunFromX{setrest}{List} to
-change the link emanating from that node to point back to an
-earlier part of the list.
-}{
-\spadpaste{setrest!(lastnode,rest(u,2)); u\free{u2}}
-}
-
-A \spadgloss{stream}
-is a structure that (potentially) has an infinite number of
-distinct elements.\footnote{Streams are discussed in
-\downlink{`Stream'}{StreamXmpPage}\ignore{Stream} and in 
-\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
-in Section \ugLangItsNumber\ignore{ugLangIts}.}
-Think of a stream as an ``infinite list'' where elements are
-computed successively.
-
-\xtc{
-Create an infinite stream of factored integers.
-Only a certain number of initial elements are computed
-and displayed.
-}{
-\spadpaste{[factor(i) for i in 2.. by 2] \bound{stream1}}
-}
-\xtc{
-Axiom represents streams by a collection of already-computed
-elements together with a function to compute the next element
-``on demand.''
-Asking for the \eth{\axiom{n}} element causes elements \axiom{1} through
-\axiom{n} to be evaluated.
-}{
-\spadpaste{\%.36 \free{stream1}}
-}
-
-Streams can also be finite or cyclic.
-They are implemented by a linked list structure similar to lists
-and have many of the same operations.
-For example, \axiomFun{first} and \axiomFun{rest} are used to access
-elements and successive nodes of a stream.
-%%> reverse and sort do not exist for streams
-%%Don't try to reverse or sort a stream: the
-%%operation will generally run forever!
-
-A \spadgloss{one-dimensional array} is another data structure used
-to hold objects of the same type.\footnote{See 
-\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}
-\ignore{OneDimensionalArray} for
-details.}
-Unlike lists, one-dimensional arrays are inflexible---they are
-implemented using a fixed block of storage.
-Their advantage is that they give quick and equal access time to
-any element.
-
-\xtc{
-A simple way to create a one-dimensional array is to apply the
-operation \axiomFun{oneDimensionalArray} to a list of elements.
-}{
-\spadpaste{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a}}
-}
-\xtc{
-One-dimensional arrays are also mutable:
-you can change their constituent elements ``in place.''
-}{
-\spadpaste{a.3 := 11; a\bound{a1}\free{a}}
-}
-\xtc{
-However, one-dimensional arrays are not flexible structures.
-You cannot destructively \spadfunX{concat} them together.
-}{
-\spadpaste{concat!(a,oneDimensionalArray [1,-2])\free{a1}}
-}
-
-Examples of datatypes similar to \spadtype{OneDimensionalArray}
-are: \spadtype{Vector} (vectors are mathematical structures
-implemented by one-dimensional arrays), \spadtype{String} (arrays
-of ``characters,'' represented by byte vectors), and
-\spadtype{Bits} (represented by ``bit vectors'').
-
-\xtc{
-A vector of 32 bits, 
-each representing the \spadtype{Boolean} value \axiom{true}.
-}{
-\spadpaste{bits(32,true)}
-}
-
-A \spadgloss{flexible array} is a cross between a list
-and a one-dimensional array.\footnote{See 
-\downlink{`FlexibleArray'}{FlexibleArrayXmpPage}\ignore{FlexibleArray} for
-details.}
-Like a one-dimensional array, a flexible array occupies a fixed
-block of storage.
-Its block of storage, however, has room to expand!
-When it gets full, it grows (a new, larger block of storage is
-allocated); when it has too much room, it contracts.
-
-\xtc{
-Create a flexible array of three elements.
-}{
-\spadpaste{f := flexibleArray [2, 7, -5]\bound{f}}
-}
-\xtc{
-Insert some elements between the second and third elements.
-}{
-\spadpaste{insert!(flexibleArray [11, -3],f,2)\free{f}}
-}
-
-Flexible arrays are used to implement ``heaps.'' A
-\spadgloss{heap} is an example of a data structure called a
-\spadgloss{priority queue}, where elements are ordered with
-respect to one another.\footnote{See 
-\downlink{`Heap'}{HeapXmpPage}\ignore{Heap} for more details.
-Heaps are also examples of data structures called
-\spadglossSee{bags}{bag}.
-Other bag data structures are \spadtype{Stack}, \spadtype{Queue},
-and \spadtype{Dequeue}.}
-A heap is organized
-so as to optimize insertion and extraction of maximum elements.
-The \spadfunX{extract} operation
-returns the maximum element of the heap, after destructively
-removing that element and
-reorganizing the heap
-so that the next maximum element is ready to be delivered.
-
-\xtc{
-An easy way to create a heap is to apply the
-operation \spadfun{heap} to a list of values.
-}{
-\spadpaste{h := heap [-4,7,11,3,4,-7]\bound{h}}
-}
-\xtc{
-This loop extracts elements one-at-a-time from \spad{h}
-until the heap is exhausted, returning the elements
-as a list in the order they were extracted.
-}{
-\spadpaste{[extract!(h) while not empty?(h)]\free{h}}
-}
-
-A \spadgloss{binary tree} is a ``tree'' with at most two branches
-per node: it is either empty, or else is a node consisting of a
-value, and a left and right subtree (again, binary trees).\footnote{Example of binary tree types are
-\spadtype{BinarySearchTree} (see 
-\downlink{`BinarySearchTree'}{BinarySearchTreeXmpPage}
-\ignore{BinarySearchTree},
-\spadtype{PendantTree}, \spadtype{TournamentTree},
-and \spadtype{BalancedBinaryTree} (see 
-\downlink{`BalancedBinaryTree'}{BalancedBinaryTreeXmpPage}
-\ignore{BalancedBinaryTree}).}
-
-\xtc{
-A {\it binary search tree} is a binary tree such that,
-for each node, the value of the node is
-greater than all values (if any) in the left subtree,
-and less than or equal all values (if any) in the right subtree.
-}{
-\spadpaste{binarySearchTree [5,3,2,9,4,7,11]}
-}
-
-\xtc{
-A {\it balanced binary tree} is useful for doing modular computations.
-Given a list \axiom{lm} of moduli,
-\axiomFun{modTree}\axiom{(a,lm)} produces a balanced binary
-tree with the values \texht{$a \bmod m$}{a {\tt mod} m}
-at its leaves.
-}{
-\spadpaste{modTree(8,[2,3,5,7])}
-}
-
-A \spadgloss{set} is a collection of elements where duplication
-and order is irrelevant.\footnote{See 
-\downlink{`Set'}{SetXmpPage}\ignore{Set} for more
-details.}
-Sets are always finite and have no corresponding
-structure like streams for infinite collections.
-
-\xtc{
-%Create sets using braces (\axiomSyntax{\{} and \axiomSyntax{\}})
-%rather than brackets.
-}{
-\spadpaste{fs := set[1/3,4/5,-1/3,4/5] \bound{fs}}
-}
-
-A \spadgloss{multiset}
-is a set that keeps track of the number
-of duplicate values.\footnote{See 
-\downlink{`MultiSet'}{MultiSetXmpPage}\ignore{MultiSet} for details.}
-\xtc{
-For all the primes \axiom{p} between 2 and 1000, find the
-distribution of \texht{$p \bmod 5$}{p mod 5}.
-}{
-\spadpaste{multiset [x rem 5 for x in primes(2,1000)]}
-}
-
-A \spadgloss{table}
-is conceptually a set of ``key--value'' pairs and
-is a generalization of a multiset.\footnote{For examples of tables, see
-\spadtype{AssociationList} (
-\downlink{`AssociationList'}{AssociationListXmpPage}\ignore{AssociationList}),
-\spadtype{HashTable},
-\spadtype{KeyedAccessFile} (
-\downlink{`KeyedAccessFile'}{KeyedAccessFileXmpPage}\ignore{KeyedAccessFile}),
-\spadtype{Library} (\downlink{`Library'}{LibraryXmpPage}\ignore{Library}),
-\spadtype{SparseTable} (
-\downlink{`SparseTable'}{SparseTableXmpPage}\ignore{SparseTable}),
-\spadtype{StringTable} (
-\downlink{`StringTable'}{StringTableXmpPage}\ignore{StringTable}),
-and \spadtype{Table} (\downlink{`Table'}{TableXmpPage}\ignore{Table}).}
-The domain \spadtype{Table(Key, Entry)} provides a general-purpose
-type for tables with {\it values} of type \axiom{Entry} indexed
-by {\it keys} of type \axiom{Key}.
-
-\xtc{
-Compute the above distribution of primes using tables.
-First, let \axiom{t} denote an empty table of keys and values,
-each of type \spadtype{Integer}.
-}{
-\spadpaste{t : Table(Integer,Integer) := empty()\bound{t}}
-}
-
-We define a function \userfun{howMany} to return the number
-of values of a given modulus \axiom{k} seen so far.
-It calls \axiomFun{search}\axiom{(k,t)} which returns the number of
-values stored under the key \axiom{k} in table \axiom{t}, or
-\axiom{"failed"} if no such value is yet stored in \axiom{t} under
-\axiom{k}.
-
-\xtc{
-In English, this says ``Define \axiom{howMany(k)} as follows.
-First, let \smath{n} be the value of \axiomFun{search}\smath{(k,t)}.
-Then, if \smath{n} has the value \smath{"failed"}, return the value
-\smath{1}; otherwise return \smath{n + 1}.''
-}{
-\spadpaste{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how}}
-}
-\xtc{
-Run through the primes to create the table, then print the table.
-The expression \axiom{t.m := howMany(m)} updates the value in table \axiom{t}
-stored under key \axiom{m}.
-}{
-\spadpaste{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t}}
-}
-
-A {\it record}
-is an example of an inhomogeneous collection
-of objects.\footnote{See 
-\downlink{``\ugTypesRecordsTitle''}{ugTypesRecordsPage} 
-in Section \ugTypesRecordsNumber\ignore{ugTypesRecords} for details.}
-A record consists of a set of named {\it selectors} that
-can be used to access its components.
-
-\xtc{
-Declare that \axiom{daniel} can only be
-assigned a record with two prescribed fields.
-}{
-\spadpaste{daniel : Record(age : Integer, salary : Float) \bound{danieldec}}
-}
-\xtc{
-Give \axiom{daniel} a value, using square brackets to enclose the values of
-the fields.
-}{
-\spadpaste{daniel := [28, 32005.12] \free{danieldec}\bound{daniel}}
-}
-\xtc{
-Give \axiom{daniel} a raise.
-}{
-\spadpaste{daniel.salary := 35000; daniel \free{daniel}}
-}
-
-A {\it union}
-is a data structure used when objects
-have multiple types.\footnote{See 
-\downlink{``\ugTypesUnionsTitle''}{ugTypesUnionsPage} 
-in Section \ugTypesUnionsNumber\ignore{ugTypesUnions} for details.}
-
-\xtc{
-Let \axiom{dog} be either an integer or a string value.
-}{
-\spadpaste{dog: Union(licenseNumber: Integer, name: String)\bound{xint}}
-}
-\xtc{
-Give \axiom{dog} a name.
-}{
-\spadpaste{dog := "Whisper"\free{xint}}
-}
-
-All told, there are over forty different data structures in
-Axiom.
-Using the domain constructors described in 
-\downlink{``\ugDomainsTitle''}{ugDomainsPage} 
-in Chapter \ugDomainsNumber\ignore{ugDomains}, you
-can add your own data structure or extend an existing one.
-Choosing the right data structure for your application may be the key
-to obtaining good performance.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroTwoDimTitle}{Expanding to Higher Dimensions}
-\newcommand{\ugIntroTwoDimNumber}{1.7.}
-
-@
-\subsection{1.7. Expanding to Higher Dimensions}
-\label{ugIntroTwoDimPage}
-\begin{itemize}
-\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
-page~\pageref{TwoDimensionalArrayXmpPage}
-\item MatrixXmpPage \ref{MatrixXmpPage} on
-page~\pageref{MatrixXmpPage}
-\item PermanentXmpPage \ref{PermanentXmpPage} on
-page~\pageref{PermanentXmpPage}
-\item SquareMatrixXmpPage \ref{SquareMatrixXmpPage} on
-page~\pageref{SquareMatrixXmpPage}
-\item VectorXmpPage \ref{VectorXmpPage} on
-page~\pageref{VectorXmpPage}
-\item ugProblemEigenPage \ref{ugProblemEigenPage} on
-page~\pageref{ugProblemEigenPage}
-\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
-page~\pageref{ugProblemLinPolEqnPage}
-\item ugLangItsPage \ref{ugLangItsPage} on
-page~\pageref{ugLangItsPage}
-\end{itemize}
-\index{pages!ugIntroTwoDimPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroTwoDimPage}
-\index{ugIntroTwoDimPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroTwoDimPage}{1.7. Expanding to Higher Dimensions}
-\beginscroll
-%
-
-To get higher dimensional aggregates, you can create one-dimensional
-aggregates with elements that are themselves
-aggregates, for example, lists of lists, one-dimensional arrays of
-lists of multisets, and so on.
-For applications requiring two-dimensional homogeneous aggregates,
-you will likely find {\it two-dimensional arrays}
-and {\it matrices} most useful.
-
-The entries in \spadtype{TwoDimensionalArray} and
-\spadtype{Matrix} objects
-are all the same type, except that those for
-\spadtype{Matrix} must belong to a \spadtype{Ring}.
-You create and access elements in roughly the same way.
-Since matrices have an understood algebraic structure, certain algebraic
-operations are available for matrices but not for arrays.
-Because of this, we limit our discussion here to
-\spadtype{Matrix}, that can be regarded as an extension of
-\spadtype{TwoDimensionalArray}.\footnote{See
-\downlink{`TwoDimensionalArray'}{TwoDimensionalArrayXmpPage}
-\ignore{TwoDimensionalArray} for more information about arrays.
-For more information about Axiom's linear algebra
-facilities, see \downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix}, 
-\downlink{`Permanent'}{PermanentXmpPage}\ignore{Permanent},
-\downlink{`SquareMatrix'}{SquareMatrixXmpPage}\ignore{SquareMatrix}, 
-\downlink{`Vector'}{VectorXmpPage}\ignore{Vector},
-\downlink{``\ugProblemEigenTitle''}{ugProblemEigenPage} 
-in Section \ugProblemEigenNumber\ignore{ugProblemEigen}
-\texht{(computation of eigenvalues and
-eigenvectors)}{}, and
-\downlink{``\ugProblemLinPolEqnTitle''}{ugProblemLinPolEqnPage} 
-in Section \ugProblemLinPolEqnNumber\ignore{ugProblemLinPolEqn}\
-texht{(solution of linear and
-polynomial equations)}{}.}
-
-\xtc{
-You can create a matrix from a list of lists,
-where each of the inner lists represents a row of the matrix.
-}{
-\spadpaste{m := matrix([[1,2], [3,4]]) \bound{m}}
-}
-\xtc{
-The ``collections'' construct (see 
-\downlink{``\ugLangItsTitle''}{ugLangItsPage} 
-in Section \ugLangItsNumber\ignore{ugLangIts}) is
-useful for creating matrices whose entries are given by formulas.
-}{
-\spadpaste{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4]) \bound{hilb}}
-}
-\xtc{
-Let \axiom{vm} denote the three by three Vandermonde matrix.
-}{
-\spadpaste{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]] \bound{vm}}
-}
-\xtc{
-Use this syntax to extract an entry in the matrix.
-}{
-\spadpaste{vm(3,3) \free{vm}}
-}
-\xtc{
-You can also pull out a \axiomFun{row} or a \axiom{column}.
-}{
-\spadpaste{column(vm,2) \free{vm}}
-}
-\xtc{
-You can do arithmetic.
-}{
-\spadpaste{vm * vm \free{vm}}
-}
-\xtc{
-You can perform operations such as
-\axiomFun{transpose}, \axiomFun{trace}, and \axiomFun{determinant}.
-}{
-\spadpaste{factor determinant vm \free{vm}\bound{d}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroYouTitle}{Writing Your Own Functions}
-\newcommand{\ugIntroYouNumber}{1.8.}
-
-@
-\subsection{1.8. Writing Your Own Functions}
-\label{ugIntroYouPage}
-\begin{itemize}
-\item ugUserPage \ref{ugUserPage} on
-page~\pageref{ugUserPage}
-\item ugInOutInPage \ref{ugInOutInPage} on
-page~\pageref{ugInOutInPage}
-\end{itemize}
-\index{pages!ugIntroYouPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroYouPage}
-\index{ugIntroYouPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroYouPage}{1.8. Writing Your Own Functions}
-\beginscroll
-%
-
-Axiom provides you with a very large library of predefined
-operations and objects to compute with.
-You can use the Axiom library of constructors to create new
-objects dynamically of quite arbitrary complexity.
-For example, you can make lists of matrices of fractions of
-polynomials with complex floating point numbers as coefficients.
-Moreover, the library provides a wealth of operations that allow
-you to create and manipulate these objects.
-
-For many applications,
-you need to interact with the interpreter and write some
-Axiom programs to tackle your application.
-Axiom allows you to write functions interactively,
-thereby effectively extending the system library.
-Here we give a few simple examples, leaving the details to 
-\downlink{``\ugUserTitle''}{ugUserPage} in 
-Chapter \ugUserNumber\ignore{ugUser}.
-
-We begin by looking at several ways that you can define the
-``factorial'' function in Axiom.
-The first way is to give a
-piece-wise definition of the function.
-This method is best for a general recurrence
-relation since the pieces are gathered together and compiled into
-an efficient iterative function.
-Furthermore, enough previously computed values are automatically
-saved so that a subsequent call to the function can pick up from
-where it left off.
-
-\xtc{
-Define the value of \userfun{fact} at \axiom{0}.
-}{
-\spadpaste{fact(0) == 1 \bound{fact}}
-}
-\xtc{
-Define the value of \axiom{fact(n)} for general \axiom{n}.
-}{
-\spadpaste{fact(n) == n*fact(n-1)\bound{facta}\free{fact}}
-}
-\xtc{
-Ask for the value at \axiom{50}.
-The resulting function created by Axiom
-computes the value by iteration.
-}{
-\spadpaste{fact(50) \free{facta}}
-}
-\xtc{
-A second definition uses an \axiom{if-then-else} and recursion.
-}{
-\spadpaste{fac(n) == if n < 3 then n else n * fac(n - 1) \bound{fac}}
-}
-\xtc{
-This function is less efficient than the previous version since
-each iteration involves a recursive function call.
-}{
-\spadpaste{fac(50) \free{fac}}
-}
-\xtc{
-A third version directly uses iteration.
-}{
-\spadpaste{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a) \bound{fa}}
-}
-\xtc{
-This is the least space-consumptive version.
-}{
-\spadpaste{fa(50) \free{fa}}
-}
-\xtc{
-A final version appears to construct a large list and then reduces over
-it with multiplication.
-}{
-\spadpaste{f(n) == reduce(*,[i for i in 2..n]) \bound{f}}
-}
-\xtc{
-In fact, the resulting computation is optimized into an efficient
-iteration loop equivalent to that of the third version.
-}{
-\spadpaste{f(50) \free{f}}
-}
-\xtc{
-The library version uses an algorithm that is different from the four
-above because it highly optimizes the recurrence relation definition of
-\axiomFun{factorial}.
-}{
-\spadpaste{factorial(50)}
-}
-
-You are not limited to one-line functions in Axiom.
-If you place your function definitions in {\bf .input} files
-(see \downlink{``\ugInOutInTitle''}{ugInOutInPage} 
-in Section \ugInOutInNumber\ignore{ugInOutIn}), you can have
-multi-line functions that use indentation for grouping.
-
-Given \axiom{n} elements, \axiomFun{diagonalMatrix} creates an
-\axiom{n} by \axiom{n} matrix with those elements down the diagonal.
-This function uses a permutation matrix
-that interchanges the \axiom{i}th and \axiom{j}th rows of a matrix
-by which it is right-multiplied.
-
-\xtc{
-This function definition shows a style of definition that can be used
-in {\bf .input} files.
-Indentation is used to create \spadglossSee{blocks}{block}\texht{\/}{}:
-sequences of expressions that are evaluated in sequence except as
-modified by control statements such as \axiom{if-then-else} and \axiom{return}.
-}{
-\begin{spadsrc}[\bound{permMat}]
-permMat(n, i, j) ==
-  m := diagonalMatrix
-    [(if i = k or j = k then 0 else 1)
-      for k in 1..n]
-  m(i,j) := 1
-  m(j,i) := 1
-  m
-\end{spadsrc}
-}
-\xtc{
-This creates a four by four matrix that interchanges the second and third
-rows.
-}{
-\spadpaste{p := permMat(4,2,3) \free{permMat}\bound{p}}
-}
-\xtc{
-Create an example matrix to permute.
-}{
-\spadpaste{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m}}
-}
-\xtc{
-Interchange the second and third rows of m.
-}{
-\spadpaste{permMat(4,2,3) * m \free{p m}}
-}
-
-A function can also be passed as an argument to another function,
-which then applies the function or passes it off to some other
-function that does.
-You often have to declare the type of a function that has
-functional arguments.
-
-\xtc{
-This declares \userfun{t} to be a two-argument function that
-returns a \spadtype{Float}.
-The first argument is a function that takes one \spadtype{Float}
-argument and returns a \spadtype{Float}.
-}{
-\spadpaste{t : (Float -> Float, Float) -> Float \bound{tdecl}}
-}
-\xtc{
-This is the definition of \userfun{t}.
-}{
-\spadpaste{t(fun, x) == fun(x)**2 + sin(x)**2 \free{tdecl}\bound{t}}
-}
-\xtc{
-We have not defined a \axiomFun{cos} in the workspace. The one from the
-Axiom library will do.
-}{
-\spadpaste{t(cos, 5.2058) \free{t}}
-}
-\xtc{
-Here we define our own (user-defined) function.
-}{
-\spadpaste{cosinv(y) == cos(1/y) \bound{cosinv}}
-}
-\xtc{
-Pass this function as an argument to \userfun{t}.
-}{
-\spadpaste{t(cosinv, 5.2058) \free{t}\free{cosinv}}
-}
-
-Axiom also has pattern matching capabilities for
-simplification
-of expressions and for defining new functions by rules.
-For example, suppose that you want to apply regularly a transformation
-that groups together products of radicals:
-\texht{$$\sqrt{a}\:\sqrt{b} \mapsto \sqrt{ab}, \quad
-(\forall a)(\forall b)$$}{\axiom{sqrt(a) * sqrt(b) by sqrt(a*b)} for any \axiom{a} and \axiom{b}}
-Note that such a transformation is not generally correct.
-Axiom never uses it automatically.
-
-\xtc{
-Give this rule the name \userfun{groupSqrt}.
-}{
-\spadpaste{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b)) \bound{g}}
-}
-\xtc{
-Here is a test expression.
-}{
-\spadpaste{a := (sqrt(x) + sqrt(y) + sqrt(z))**4 \bound{sxy}}
-}
-\xtc{
-The rule
-\userfun{groupSqrt} successfully simplifies the expression.
-}{
-\spadpaste{groupSqrt a \free{sxy} \free{g}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroVariablesTitle}{Polynomials}
-\newcommand{\ugIntroVariablesNumber}{1.9.}
-
-@
-\subsection{1.9. Polynomials}
-\label{ugIntroVariablesPage}
-\index{pages!ugIntroVariablesPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroVariablesPage}
-\index{ugIntroVariablesPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroVariablesPage}{1.9. Polynomials}
-\beginscroll
-%
-
-Polynomials are the commonly used algebraic types in symbolic
-computation.
-Interactive users of Axiom generally only see one type
-of polynomial: \spadtype{Polynomial(R)}.
-This type represents polynomials in any number of unspecified
-variables over a particular coefficient domain \axiom{R}.
-This type represents its coefficients
-\spadglossSee{sparsely}{sparse}: only terms with non-zero
-coefficients are represented.
-
-In building applications, many other kinds of polynomial
-representations are useful.
-Polynomials may have one variable or multiple variables, the
-variables can be named or unnamed, the coefficients can be stored
-sparsely or densely.
-So-called ``distributed multivariate polynomials'' store
-polynomials as coefficients paired with vectors of exponents.
-This type is particularly efficient for use in algorithms for
-solving systems of non-linear polynomial equations.
-
-\xtc{
-The polynomial constructor most familiar to the interactive user
-is \spadtype{Polynomial}.
-}{
-\spadpaste{(x**2 - x*y**3 +3*y)**2}
-}
-\xtc{
-If you wish to restrict the variables used,
-\spadtype{UnivariatePolynomial}
-provides polynomials in one variable.
-}{
-\spadpaste{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
-}
-\xtc{
-The constructor
-\spadtype{MultivariatePolynomial} provides polynomials in one or more
-specified variables.
-}{
-\spadpaste{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2 \bound{m}}
-}
-\xtc{
-You can change the way the polynomial appears by modifying the variable
-ordering in the explicit list.
-}{
-\spadpaste{m :: MPOLY([y,x],INT) \free{m}}
-}
-\xtc{
-The constructor
-\spadtype{DistributedMultivariatePolynomial} provides
-polynomials in one or more specified variables with the monomials
-ordered lexicographically.
-}{
-\spadpaste{m :: DMP([y,x],INT) \free{m}}
-}
-\xtc{
-The constructor
-\spadtype{HomogeneousDistributedMultivariatePolynomial} is similar except that
-the monomials are ordered by total order refined by reverse
-lexicographic order.
-}{
-\spadpaste{m :: HDMP([y,x],INT) \free{m}}
-}
-
-More generally, the domain constructor
-\spadtype{GeneralDistributedMultivariatePolynomial} allows the
-user to provide an arbitrary predicate to define his own term ordering.
-These last three constructors are typically used in
-\texht{Gr\"{o}bner}{Groebner} basis
-applications and when a flat (that is, non-recursive) display is
-wanted and the term ordering is critical for controlling the computation.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroCalcLimitsTitle}{Limits}
-\newcommand{\ugIntroCalcLimitsNumber}{1.10.}
-
-@
-\subsection{1.10. Limits}
-\label{ugIntroCalcLimitsPage}
-\begin{itemize}
-\item ugProblemLimitsPage \ref{ugProblemLimitsPage} on
-page~\pageref{ugProblemLimitsPage}
-\end{itemize}
-\index{pages!ugIntroCalcLimitsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroCalcLimitsPage}
-\index{ugIntroCalcLimitsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroCalcLimitsPage}{1.10. Limits}
-\beginscroll
-%
-
-Axiom's \axiomFun{limit} function is usually used to
-evaluate limits of quotients where the numerator and denominator
-both tend to zero or both tend to infinity.
-To find the limit of an expression \axiom{f} as a real variable
-\axiom{x} tends to a limit value \axiom{a}, enter \axiom{limit(f, x=a)}.
-Use \axiomFun{complexLimit} if the variable is complex.
-Additional information and examples of limits are in
-\downlink{``\ugProblemLimitsTitle''}{ugProblemLimitsPage} 
-in Section \ugProblemLimitsNumber\ignore{ugProblemLimits}.
-
-\xtc{
-You can take limits of functions with parameters.
-}{
-\spadpaste{g := csc(a*x) / csch(b*x) \bound{g}}
-}
-\xtc{
-As you can see, the limit is expressed in terms of the parameters.
-}{
-\spadpaste{limit(g,x=0) \free{g}}
-}
-%
-\xtc{
-A variable may also approach plus or minus infinity:
-}{
-\spadpaste{h := (1 + k/x)**x \bound{h}}
-}
-\xtc{
-\texht{Use \axiom{\%plusInfinity} and \axiom{\%minusInfinity} to
-denote $\infty$ and $-\infty$.}{}
-}{
-\spadpaste{limit(h,x=\%plusInfinity) \free{h}}
-}
-\xtc{
-A function can be defined on both sides of a particular value, but
-may tend to different limits as its variable approaches that value from the
-left and from the right.
-}{
-\spadpaste{limit(sqrt(y**2)/y,y = 0)}
-}
-\xtc{
-As \axiom{x} approaches \axiom{0} along the real axis, \axiom{exp(-1/x**2)}
-tends to \axiom{0}.
-}{
-\spadpaste{limit(exp(-1/x**2),x = 0)}
-}
-\xtc{
-However, if \axiom{x} is allowed to approach \axiom{0} along any path in the
-complex plane, the limiting value of \axiom{exp(-1/x**2)} depends on the
-path taken because the function has an essential singularity at \axiom{x=0}.
-This is reflected in the error message returned by the function.
-}{
-\spadpaste{complexLimit(exp(-1/x**2),x = 0)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroSeriesTitle}{Series}
-\newcommand{\ugIntroSeriesNumber}{1.11.}
-
-@
-\subsection{1.11. Series}
-\label{ugIntroSeriesPage}
-\begin{itemize}
-\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
-page~\pageref{ugProblemSeriesPage}
-\end{itemize}
-\index{pages!ugIntroSeriesPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroSeriesPage}
-\index{ugIntroSeriesPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroSeriesPage}{1.11. Series}
-\beginscroll
-%
-
-Axiom also provides power series.
-By default, Axiom tries to compute and display the first ten elements
-of a series.
-Use \spadsys{)set streams calculate} to change the default value
-to something else.
-For the purposes of this book, we have used this system command to display
-fewer than ten terms.
-For more information about working with series, see
-\downlink{``\ugProblemSeriesTitle''}{ugProblemSeriesPage} 
-in Section \ugProblemSeriesNumber\ignore{ugProblemSeries}.
-
-\xtc{
-You can convert a functional expression to a power series by using the
-operation \axiomFun{series}.
-In this example,
-\axiom{sin(a*x)} is expanded in powers of \axiom{(x - 0)},
-that is, in powers of \axiom{x}.
-}{
-\spadpaste{series(sin(a*x),x = 0)}
-}
-\xtc{
-This expression expands
-\axiom{sin(a*x)} in powers of \axiom{(x - \%pi/4)}.
-}{
-\spadpaste{series(sin(a*x),x = \%pi/4)}
-}
-\xtc{
-Axiom provides
-{\it Puiseux series:}
-series with rational number exponents.
-The first argument to \axiomFun{series} is an in-place function that
-computes the \eth{\axiom{n}} coefficient.
-(Recall that
-the \axiomSyntax{+->} is an infix operator meaning ``maps to.'')
-}{
-\spadpaste{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
-}
-\xtc{
-Once you have created a power series, you can perform arithmetic operations
-on that series.
-We compute the Taylor expansion of \axiom{1/(1-x)}.
-}{
-\spadpaste{f := series(1/(1-x),x = 0) \bound{f}}
-}
-\xtc{
-Compute the square of the series.
-}{
-\spadpaste{f ** 2 \free{f}}
-}
-\xtc{
-The usual elementary functions
-(\axiomFun{log}, \axiomFun{exp}, trigonometric functions, and so on)
-are defined for power series.
-}{
-\spadpaste{f := series(1/(1-x),x = 0) \bound{f1}}
-}
-\xtc{
-}{
-\spadpaste{g := log(f) \free{f1}\bound{g}}
-}
-\xtc{
-}{
-\spadpaste{exp(g) \free{g}}
-}
-\xtc{
-Here is a way to obtain numerical approximations of
-\axiom{e} from the Taylor series expansion of \axiom{exp(x)}.
-First create the desired Taylor expansion.
-}{
-\spadpaste{f := taylor(exp(x)) \bound{f2}}
-}
-\xtc{
-Evaluate the series at the value \axiom{1.0}.
-As you see, you get a sequence of partial sums.
-}{
-\spadpaste{eval(f,1.0) \free{f2}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroCalcDerivTitle}{Derivatives}
-\newcommand{\ugIntroCalcDerivNumber}{1.12.}
-
-@
-\subsection{1.12. Derivatives}
-\label{ugIntroCalcDerivPage}
-\index{pages!ugIntroCalcDerivPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroCalcDerivPage}
-\index{ugIntroCalcDerivPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroCalcDerivPage}{1.12. Derivatives}
-\beginscroll
-%
-Use the Axiom function \axiomFun{D} to differentiate an
-expression.
-
-\texht{\vskip 2pc}{}
-\xtc{
-To find the derivative of an expression \axiom{f} with respect to a
-variable \axiom{x}, enter \axiom{D(f, x)}.
-}{
-\spadpaste{f := exp exp x \bound{f}}
-}
-\xtc{
-}{
-\spadpaste{D(f, x) \free{f}}
-}
-\xtc{
-An optional third argument \axiom{n} in \axiomFun{D} asks
-Axiom for the \eth{\axiom{n}} derivative of \axiom{f}.
-This finds the fourth derivative of \axiom{f} with respect to \axiom{x}.
-}{
-\spadpaste{D(f, x, 4) \free{f}}
-}
-\xtc{
-You can also compute partial derivatives by specifying the order of
-differentiation.
-}{
-\spadpaste{g := sin(x**2 + y) \bound{g}}
-}
-\xtc{
-}{
-\spadpaste{D(g, y) \free{g}}
-}
-\xtc{
-}{
-\spadpaste{D(g, [y, y, x, x]) \free{g}}
-}
-
-Axiom can manipulate the derivatives (partial and iterated) of
-expressions involving formal operators.
-All the dependencies must be explicit.
-\xtc{
-This returns \axiom{0} since \axiom{F} (so far)
-does not explicitly depend on \axiom{x}.
-}{
-\spadpaste{D(F,x)}
-}
-Suppose that we have \axiom{F} a function of \axiom{x},
-\axiom{y}, and \axiom{z}, where \axiom{x} and \axiom{y} are themselves
-functions of \axiom{z}.
-\xtc{
-Start by declaring that \axiom{F}, \axiom{x}, and \axiom{y}
-are operators.
-}{
-\spadpaste{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y}}
-}
-\xtc{
-You can use \axiom{F}, \axiom{x}, and \axiom{y} in expressions.
-}{
-\spadpaste{a := F(x z, y z, z**2) + x y(z+1) \bound{a}\free{F}\free{x}\free{y}}
-}
-\xtc{
-Differentiate formally with respect to \axiom{z}.
-The formal derivatives appearing in \axiom{dadz} are not just formal symbols,
-but do represent the derivatives of \axiom{x}, \axiom{y}, and \axiom{F}.
-}{
-\spadpaste{dadz := D(a, z)\bound{da}\free{a}}
-}
-\xtc{
-You can evaluate the above for particular functional
-values of \axiom{F}, \axiom{x}, and \axiom{y}.
-If \axiom{x(z)} is \axiom{exp(z)} and \axiom{y(z)} is \axiom{log(z+1)}, then
-this evaluates \axiom{dadz}.
-}{
-\spadpaste{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da}}
-}
-\xtc{
-You obtain the same result by first evaluating \axiom{a} and
-then differentiating.
-}{
-\spadpaste{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1)) \free{a}\bound{eva}}
-}
-\xtc{
-}{
-\spadpaste{D(\%, z)\free{eva}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroIntegrateTitle}{Integration}
-\newcommand{\ugIntroIntegrateNumber}{1.13.}
-
-@
-\subsection{1.13. Integration}
-\label{ugIntroIntegratePage}
-\begin{itemize}
-\item ugProblemIntegrationPage \ref{ugProblemIntegrationPage} on
-page~\pageref{ugProblemIntegrationPage}
-\end{itemize}
-\index{pages!ugIntroIntegratePage!ug01.ht}
-\index{ug01.ht!pages!ugIntroIntegratePage}
-\index{ugIntroIntegratePage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroIntegratePage}{1.13. Integration}
-\beginscroll
-%
-
-Axiom has extensive library facilities for integration.
-
-The first example is the integration of a fraction with
-denominator that factors into a quadratic and a quartic
-irreducible polynomial.
-The usual partial fraction approach used by most other computer
-algebra systems either fails or introduces expensive unneeded
-algebraic numbers.
-
-\xtc{
-We use a factorization-free algorithm.
-}{
-\spadpaste{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-}
-
-When real parameters are present, the form of the integral can depend on
-the signs of some expressions.
-
-\xtc{
-Rather than query the user or make sign assumptions, Axiom returns
-all possible answers.
-}{
-\spadpaste{integrate(1/(x**2 + a),x)}
-}
-
-The \axiomFun{integrate} operation generally assumes that all
-parameters are real.
-The only exception is when the integrand has complex valued
-quantities.
-
-\xtc{
-If the parameter is complex instead of real, then the notion of sign is
-undefined and there is a unique answer.
-You can request this answer by ``prepending'' the word ``complex'' to the
-command name:
-}{
-\spadpaste{complexIntegrate(1/(x**2 + a),x)}
-}
-
-The following two examples illustrate the limitations of
-table-based approaches.
-The two integrands are very similar, but the answer to one of them
-requires the addition of two new algebraic numbers.
-
-\xtc{
-This one is the easy one.
-The next one looks very similar
-but the answer is much more complicated.
-}{
-\spadpaste{integrate(x**3 / (a+b*x)**(1/3),x)}
-}
-\xtc{
-Only an algorithmic approach
-is guaranteed to find what new constants must be added in order to
-find a solution.
-}{
-\spadpaste{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-}
-
-Some computer algebra systems use heuristics or table-driven
-approaches to integration.
-When these systems cannot determine the answer to an integration
-problem, they reply ``I don't know.'' Axiom uses a
-algorithm for integration.
-that conclusively proves that an integral cannot be expressed in
-terms of elementary functions.
-
-\xtc{
-When Axiom returns an integral sign, it has proved
-that no answer exists as an elementary function.
-}{
-\spadpaste{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-}
-Axiom can handle complicated mixed functions much beyond what you
-can find in tables.
-\xtc{
-Whenever possible, Axiom tries to express the answer using the functions
-present in the integrand.
-}{
-\spadpaste{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
-}
-\xtc{
-A strong structure-checking algorithm in Axiom finds hidden algebraic
-relationships between functions.
-}{
-\spadpaste{integrate(tan(atan(x)/3),x)}
-}
-\noindent
-%%--> Bob---> please make these formulas in this section smaller.
-The discovery of this algebraic relationship is necessary for correct
-integration of this function.
-Here are the details:
-\indent{4}
-\beginitems
-\item[1. ] 
-If \texht{$x=\tan t$}{\axiom{x=tan(t)}} and
-\texht{$g=\tan (t/3)$}{\axiom{g=tan(t/3)}} then the following
-algebraic relation is true:
-\texht{$${g^3-3xg^2-3g+x=0}$$}{\centerline{\axiom{g**3 - 3*x*g**2 - 3*g + x = 0}}}
-\item[2. ] 
-Integrate \axiom{g} using this algebraic relation; this produces:
-\texht{$${%
-{(24g^2 - 8)\log(3g^2 - 1) + (81x^2 + 24)g^2 + 72xg - 27x^2 - 16}
-\over{54g^2 - 18}}$$}{\centerline{\axiom{(24g**2 - 8)log(3g**2 - 1) +
-(81x**2 + 24)g**2 + 72xg - 27x**2 - 16/ (54g**2 - 18)}}}
-\item[3. ] 
-Rationalize the denominator, producing:
-\texht{\narrowDisplay{{8\log(3g^2-1) - 3g^2 + 18xg + 16} \over
-{18}}}{\centerline{\axiom{(8*log(3*g**2-1) - 3*g**2 + 18*x*g + 16)/18}}}
-Replace \axiom{g} by the initial definition
-\texht{$g = \tan(\arctan(x)/3)$}{\axiom{g = tan(arctan(x)/3)}}
-to produce the final result.
-\enditems
-\indent{0}
-
-\xtc{
-This is an example of a mixed function where
-the algebraic layer is over the transcendental one.
-}{
-\spadpaste{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
-}
-\xtc{
-While incomplete for non-elementary functions, Axiom can
-handle some of them.
-}{
-\spadpaste{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-}
-
-More examples of Axiom's integration capabilities are discussed in
-\downlink{``\ugProblemIntegrationTitle''}{ugProblemIntegrationPage} 
-in Section \ugProblemIntegrationNumber\ignore{ugProblemIntegration}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroDiffEqnsTitle}{Differential Equations}
-\newcommand{\ugIntroDiffEqnsNumber}{1.14.}
-
-@
-\subsection{1.14. Differential Equations}
-\label{ugIntroDiffEqnsPage}
-\index{pages!ugIntroDiffEqnsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroDiffEqnsPage}
-\index{ugIntroDiffEqnsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroDiffEqnsPage}{1.14. Differential Equations}
-\beginscroll
-%
-The general approach used in integration also carries over to the
-solution of linear differential equations.
-
-\labelSpace{2pc}
-\xtc{
-Let's solve some differential equations.
-Let \axiom{y} be the unknown function in terms of \axiom{x}.
-}{
-\spadpaste{y := operator 'y \bound{y}}
-}
-\xtc{
-Here we solve a third order equation with polynomial coefficients.
-}{
-\spadpaste{deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 \bound{e3}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{e3}\free{y}}
-}
-\xtc{
-Here we find all the algebraic function solutions of the equation.
-}{
-\spadpaste{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 \bound{e5}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{e5}\free{y}}
-}
-
-Coefficients of differential equations can come from arbitrary
-constant fields.
-For example, coefficients can contain algebraic numbers.
-
-\xtc{
-This example has solutions
-whose logarithmic derivative is an algebraic function of
-degree two.
-}{
-\spadpaste{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(eq,y,x).basis\free{eq}}
-}
-
-\xtc{
-Here's another differential equation to solve.
-}{
-\spadpaste{deq := D(y x, x) = y(x) / (x + y(x) * log y x) \bound{deqi}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{deqi y}}
-}
-
-Rather than attempting to get a closed form solution of
-a differential equation, you instead might want to find an
-approximate solution in the form of a series.
-
-\xtc{
-Let's solve a system of nonlinear first order equations and get a
-solution in power series.
-Tell Axiom that \axiom{x} is also an operator.
-}{
-\spadpaste{x := operator 'x\bound{x}}
-}
-\xtc{
-Here are the two equations forming our system.
-}{
-\spadpaste{eq1 := D(x(t), t) = 1 + x(t)**2\free{x}\free{y}\bound{eq1}}
-}
-\xtc{
-}{
-\spadpaste{eq2 := D(y(t), t) = x(t) * y(t)\free{x}\free{y}\bound{eq2}}
-}
-\xtc{
-We can solve the system around \axiom{t = 0} with the initial conditions
-\axiom{x(0) = 0} and \axiom{y(0) = 1}.
-Notice that since we give the unknowns in the
-order \axiom{[x, y]}, the answer is a list of two series in the order
-\axiom{[series for x(t), series for y(t)]}.
-}{
-\spadpaste{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x}\free{y}\free{eq1}\free{eq2}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroSolutionTitle}{Solution of Equations}
-\newcommand{\ugIntroSolutionNumber}{1.15.}
-
-@
-\subsection{1.15. Solution of Equations}
-\label{ugIntroSolutionPage}
-\index{pages!ugIntroSolutionPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroSolutionPage}
-\index{ugIntroSolutionPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroSolutionPage}{1.15. Solution of Equations}
-\beginscroll
-%
-
-Axiom also has state-of-the-art algorithms for the solution
-of systems of polynomial equations.
-When the number of equations and unknowns is the same, and you
-have no symbolic coefficients, you can use \spadfun{solve} for
-real roots and \spadfun{complexSolve} for complex roots.
-In each case, you tell Axiom how accurate you want your
-result to be.
-All operations in the \spadfun{solve} family return answers in
-the form of a list of solution sets, where each solution set is a
-list of equations.
-
-\xtc{
-A system of two equations involving a symbolic
-parameter \axiom{t}.
-}{
-\spadpaste{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1}}
-}
-\xtc{
-Find the real roots of \spad{S(19)} with
-rational arithmetic, correct to within \smath{1/10^{20}}.
-}{
-\spadpaste{solve(S(19),1/10**20)\free{S1}}
-}
-\xtc{
-Find the complex roots of \spad{S(19)} with floating
-point coefficients to \spad{20} digits accuracy in the mantissa.
-}{
-\spadpaste{complexSolve(S(19),10.e-20)\free{S1}}
-}
-\xtc{
-If a system of equations has symbolic coefficients and you want
-a solution in radicals, try \spadfun{radicalSolve}.
-}{
-\spadpaste{radicalSolve(S(a),[x,y])\free{S1}}
-}
-For systems of equations with symbolic coefficients, you can
-apply \spadfun{solve}, listing the variables that you want
-Axiom to solve for.
-For polynomial equations, a solution cannot usually be expressed
-solely in terms of the other variables.
-Instead, the solution is presented as a ``triangular'' system of
-equations, where each polynomial has coefficients involving
-only the succeeding variables. This is analogous to converting  a linear system
-of equations to ``triangular form''.
-\xtc{
-A system of three equations in five variables.
-}{
-\spadpaste{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e}}
-}
-\xtc{
-Solve the system for unknowns \smath{[x,y,z]},
-reducing the solution to triangular form.
-}{
-\spadpaste{solve(eqns,[x,y,z])\free{e}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug01.ht>>=
-\newcommand{\ugIntroSysCmmandsTitle}{System Commands}
-\newcommand{\ugIntroSysCmmandsNumber}{1.16.}
-
-@
-\subsection{1.16. System Commands}
-\label{ugIntroSysCmmandsPage}
-\begin{itemize}
-\item ugSysCmdPage \ref{ugSysCmdPage} on
-page~\pageref{ugSysCmdPage}
-\end{itemize}
-\index{pages!ugIntroSysCmmandsPage!ug01.ht}
-\index{ug01.ht!pages!ugIntroSysCmmandsPage}
-\index{ugIntroSysCmmandsPage!ug01.ht!pages}
-<<ug01.ht>>=
-\begin{page}{ugIntroSysCmmandsPage}{1.16. System Commands}
-\beginscroll
-%
-
-We conclude our tour of Axiom with a brief discussion
-of \spadgloss{system commands}.
-System commands are special statements that start with a
-closing parenthesis (\axiomSyntax{)}). They are used to control or
-display your Axiom environment, start the \HyperName{}
-system, issue operating system commands and leave Axiom.
-For example, \spadsys{)system} is used
-to issue commands to the operating system from Axiom.
-Here is a brief description of some of these commands.
-For more information on specific commands, see
-\downlink{``\ugSysCmdTitle''}{ugSysCmdPage} 
-in Appendix \ugSysCmdNumber\ignore{ugSysCmd}.
-
-Perhaps the most important user command is the \spadsys{)clear all}
-command that initializes your environment.
-Every section and subsection in this book has an invisible
-\spadsys{)clear all} that is read prior to the examples given in
-the section.
-\spadsys{)clear all} gives you a fresh, empty environment with no
-user variables defined and the step number reset to \axiom{1}.
-The \spadsys{)clear} command can also be used to selectively clear
-values and properties of system variables.
-
-Another useful system command is \spadsys{)read}.
-A preferred way to develop an application in Axiom is to put
-your interactive commands into a file, say {\bf my.input} file.
-To get Axiom to read this file, you use the system command
-\spadsys{)read my.input}.
-If you need to make changes to your approach or definitions, go
-into your favorite editor, change {\bf my.input}, then
-\spadsys{)read my.input} again.
-
-Other system commands include: \spadsys{)history}, to display
-previous input and/or output lines; \spadsys{)display}, to display
-properties and values of workspace variables; and \spadsys{)what}.
-
-\xtc{
-Issue \spadsys{)what} to get a list of Axiom objects that
-contain a given substring in their name.
-}{
-\spadpaste{)what operations integrate}
-}
-
-%\head{subsection}{Undo}{ugIntroUndo}
-
-A useful system command is \spadcmd{)undo}.
-Sometimes while computing interactively with Axiom, you make
-a mistake and enter an incorrect definition or assignment.
-Or perhaps you
-need to try one of several alternative approaches, one after
-another, to find the best way to approach an application.
-For this, you will find the \spadgloss{undo} facility of
-Axiom helpful.
-
-System command \spadsys{)undo n} means ``undo back to step \axiom{n}''; it
-restores the values of user variables to those that existed
-immediately after input expression \axiom{n} was evaluated.
-Similarly, \spadsys{)undo -n} undoes changes caused by the last
-\axiom{n} input expressions.
-Once you have done an \spadsys{)undo},
-you can continue on from there, or make a change and
-{\bf redo} all your input expressions from the point
-of the \spadsys{)undo} forward.
-The \spadsys{)undo} is completely general: it changes the environment
-like any user expression.
-Thus you can \spadsys{)undo} any previous undo.
-
-Here is a sample dialogue between user and Axiom.
-\xtc{
-``Let me define
-two mutually dependent functions \axiom{f} and \axiom{g} piece-wise.''
-}{
-\spadpaste{f(0) == 1; g(0) == 1\bound{u1}}
-}
-\xtc{
-``Here is the general term for \axiom{f}.''
-}{
-\spadpaste{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2}\free{u1}}
-}
-\xtc{
-``And here is the general term for \axiom{g}.''
-}{
-\spadpaste{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3}\free{u2}}
-}
-\xtc{
-``What is value of \axiom{f(3)}?''
-}{
-\spadpaste{f(3)\bound{u4}\free{u3}}
-}
-\noOutputXtc{
-``Hmm, I think I want to define \axiom{f} differently.
-Undo to the environment right after I defined \axiom{f}.''
-}{
-\spadpaste{)undo 2\bound{u5}\free{u4}}
-}
-\xtc{
-``Here is how I think I want \axiom{f} to be defined instead.''
-}{
-\spadpaste{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6}\free{u5}}
-}
-\noOutputXtc{
-Redo the computation from expression \axiom{3} forward.
-}{
-\spadpaste{)undo )redo\bound{u7}\free{u6}}
-}
-\noOutputXtc{
-``I want my old definition of
-\axiom{f} after all. Undo the undo and restore
-the environment to that immediately after \axiom{(4)}.''
-}{
-\spadpaste{)undo 4\bound{u8}\free{u7}}
-}
-\xtc{
-``Check that the value of \axiom{f(3)} is restored.''
-}{
-\spadpaste{f(3)\bound{u9}\free{u8}}
-}
-
-After you have gone off on several tangents, then backtracked to
-previous points in your conversation using \spadsys{)undo}, you
-might want to save all the ``correct'' input commands you issued,
-disregarding those undone.
-The system command \spadsys{)history )write mynew.input} writes a
-clean straight-line program onto the file {\bf mynew.input} on
-your disk.
-
-This concludes your tour of Axiom.
-To disembark, issue the system command \spadsys{)quit} to leave Axiom
-and return to the operating system.
-\endscroll
-\autobuttons
-\end{page}
-%
-@
-\section{ug02.ht}
-<<ug02.ht>>=
-\newcommand{\ugTypesTitle}{Using Types and Modes}
-\newcommand{\ugTypesNumber}{2.}
-
-@
-\subsection{2. Using Types and Modes}
-\label{ugTypesPage}
-\begin{itemize}
-\item ugTypesBasicPage \ref{ugTypesBasicPage} on
-page~\pageref{ugTypesBasicPage}
-\item ugTypesWritingPage \ref{ugTypesWritingPage} on
-page~\pageref{ugTypesWritingPage}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
-page~\pageref{ugTypesRecordsPage}
-\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
-page~\pageref{ugTypesUnionsPage}
-\item ugTypesAnyNonePage \ref{ugTypesAnyNonePage} on
-page~\pageref{ugTypesAnyNonePage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~\pageref{ugTypesConvertPage}
-\item ugTypesSubdomainsPage \ref{ugTypesSubdomainsPage} on
-page~\pageref{ugTypesSubdomainsPage}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\item ugTypesResolvePage \ref{ugTypesResolvePage} on
-page~\pageref{ugTypesResolvePage}
-\item ugTypesExposePage \ref{ugTypesExposePage} on
-page~\pageref{ugTypesExposePage}
-\item ugAvailSnoopPage \ref{ugAvailSnoopPage} on
-page~\pageref{ugAvailSnoopPage}
-\end{itemize}
-\index{pages!ugTypesPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesPage}
-\index{ugTypesPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesPage}{2. Using Types and Modes}
-\beginscroll
-
-In this chapter we look at the key notion of \spadgloss{type} and its
-generalization \spadgloss{mode}.
-We show that every Axiom object has a type that
-determines what you can do with the object.
-In particular, we explain how to use types to call specific functions
-from particular parts of the library and how types and modes can be used
-to create new objects from old.
-We also look at \pspadtype{Record} and \pspadtype{Union} types and
-the special type \axiomType{Any}.
-Finally, we give you an idea of how Axiom manipulates types and
-modes internally to resolve ambiguities.
-
-\beginmenu
-    \menudownlink{{2.1. The Basic Idea}}{ugTypesBasicPage}
-    \menudownlink{{2.2. Writing Types and Modes}}{ugTypesWritingPage}
-    \menudownlink{{2.3. Declarations}}{ugTypesDeclarePage}
-    \menudownlink{{2.4. Records}}{ugTypesRecordsPage}
-    \menudownlink{{2.5. Unions}}{ugTypesUnionsPage}
-    \menudownlink{{2.6. The ``Any'' Domain}}{ugTypesAnyNonePage}
-    \menudownlink{{2.7. Conversion}}{ugTypesConvertPage}
-    \menudownlink{{2.8. Subdomains Again}}{ugTypesSubdomainsPage}
-    \menudownlink{{2.9. Package Calling and Target Types}}{ugTypesPkgCallPage}
-    \menudownlink{{2.10. Resolving Types}}{ugTypesResolvePage}
-    \menudownlink{{2.11. Exposing Domains and Packages}}{ugTypesExposePage}
-    \menudownlink{{2.12. Commands for Snooping}}{ugAvailSnoopPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesBasicTitle}{The Basic Idea}
-\newcommand{\ugTypesBasicNumber}{2.1.}
-
-@
-\subsection{2.1. The Basic Idea}
-\label{ugTypesBasicPage}
-\begin{itemize}
-\item ugTypesBasicDomainConsPage \ref{ugTypesBasicDomainConsPage} on
-page~\pageref{ugTypesBasicDomainConsPage}
-\end{itemize}
-\index{pages!ugTypesBasicPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesBasicPage}
-\index{ugTypesBasicPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesBasicPage}{2.1. The Basic Idea}
-\beginscroll
-
-The Axiom world deals with many kinds of objects.
-There are mathematical objects such as numbers and polynomials,
-data structure objects such as lists and arrays, and graphics
-objects such as points and graphic images.
-Functions are objects too.
-
-Axiom organizes objects using the notion of \spadglossSee{domain of
-computation}{domain}, or simply \spadgloss{domain}.
-Each domain denotes a class of objects.
-The class of objects it denotes is usually given by the name of the
-domain: \axiomType{Integer} for the integers, \axiomType{Float} for
-floating-point numbers, and so on.
-The convention is that the first letter of a domain name is capitalized.
-Similarly, the domain \axiomType{Polynomial(Integer)} denotes ``polynomials
-with integer coefficients.''
-Also, \axiomType{Matrix(Float)} denotes ``matrices with floating-point
-entries.''
-
-Every basic Axiom object belongs to a unique domain.
-The integer \axiom{3} belongs to the domain \axiomType{Integer} and
-the polynomial \axiom{x + 3} belongs to the domain
-\axiomType{Polynomial(Integer)}.
-The domain of an object is also called its \spadgloss{type}.
-Thus we speak of ``the type \axiomType{Integer}''
-and ``the type \axiomType{Polynomial(Integer)}.''
-
-\xtc{
-After an Axiom computation, the type is displayed toward the
-right-hand side of the page (or screen).
-}{
-\spadpaste{-3}
-}
-\xtc{
-Here we create a rational number but it looks like the last result.
-The type however tells you it is different.
-You cannot identify the type of an object by how Axiom
-displays the object.
-}{
-\spadpaste{-3/1}
-}
-\xtc{
-When a computation produces a result of a simpler type, Axiom leaves
-the type unsimplified.
-Thus no information is lost.
-}{
-\spadpaste{x + 3 - x \bound{three}}
-}
-\xtc{
-This seldom matters since Axiom retracts the answer to the
-simpler type if it is necessary.
-}{
-\spadpaste{factorial(\%) \free{three}}
-}
-\xtc{
-When you issue a positive number, the type \axiomType{PositiveInteger} is
-printed.
-Surely, \axiom{3} also has type \axiomType{Integer}!
-The curious reader may now have two questions.
-First, is the type of an object not unique?
-Second, how is \axiomType{PositiveInteger} related to \axiomType{Integer}?
-Read on!
-}{
-\spadpaste{3}
-}
-
-Any domain can be refined to a \spadgloss{subdomain} by a membership
-\spadgloss{predicate}.\footnote{A predicate is a function that,
-when applied to an object of the domain, returns either
-\axiom{true} or \axiom{false}.}
-For example, the domain \axiomType{Integer} can be refined to the
-subdomain \axiomType{PositiveInteger}, the set of integers
-\axiom{x} such that \axiom{x > 0}, by giving the Axiom
-predicate \axiom{x +-> x > 0}.
-Similarly, Axiom can define subdomains such as ``the
-subdomain of diagonal matrices,'' ``the subdomain of lists of length
-two,'' ``the subdomain of monic irreducible polynomials in
-\axiom{x},'' and so on.
-Trivially, any domain is a subdomain of itself.
-
-While an object belongs to a unique domain, it can belong to any
-number of subdomains.
-Any subdomain of the domain of an object can be used as the
-{\it type} of that object.
-The type of \axiom{3} is indeed both \axiomType{Integer} and
-\axiomType{PositiveInteger} as well as any other subdomain of
-integer whose predicate is satisfied, such as ``the prime
-integers,'' ``the odd positive integers between 3 and 17,'' and so
-on.
-
-\beginmenu
-    \menudownlink{{2.1.1. Domain Constructors}}{ugTypesBasicDomainConsPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesBasicDomainConsTitle}{Domain Constructors}
-\newcommand{\ugTypesBasicDomainConsNumber}{2.1.1.}
-
-@
-\subsection{2.1.1. Domain Constructors}
-\label{ugTypesBasicDomainConsPage}
-\begin{itemize}
-\item ugCategoriesPage \ref{ugCategoriesPage} on
-page~\pageref{ugCategoriesPage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~\pageref{ugTypesConvertPage}
-\end{itemize}
-\index{pages!ugTypesBasicDomainConsPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesBasicDomainConsPage}
-\index{ugTypesBasicDomainConsPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesBasicDomainConsPage}{2.1.1. Domain Constructors}
-\beginscroll
-
-In Axiom, domains are objects.
-You can create them, pass them to functions, and, as we'll see later, test
-them for certain properties.
-
-In Axiom, you ask for a value of a function by applying its name
-to a set of arguments.
-
-\xtc{
-To ask for ``the factorial of 7'' you enter this expression to
-Axiom.
-This applies the function \axiom{factorial} to the value \axiom{7}
-to compute the result.
-}{
-\spadpaste{factorial(7)}
-}
-\xtc{
-Enter the type \axiomType{Polynomial (Integer)} as an expression to
-Axiom.
-This looks much like a function call as well.
-It is!
-The result is appropriately stated to be of type
-\axiomType{Domain}, which
-according to our usual convention, denotes the class of all domains.
-}{
-\spadpaste{Polynomial(Integer)}
-}
-
-The most basic operation involving domains is that of building a new
-domain from a given one.
-To create the domain of ``polynomials over the integers,'' Axiom
-applies the function \axiomType{Polynomial} to the domain
-\axiomType{Integer}.
-A function like \axiomType{Polynomial} is called a \spadgloss{domain
-constructor} or,
-more simply, a
-\spadgloss{constructor}.
-A domain constructor is a function that creates a domain.
-An argument to a domain constructor can be another domain or, in general,
-an arbitrary kind of object.
-\axiomType{Polynomial} takes a single domain argument while
-\axiomType{SquareMatrix} takes a positive integer as an argument
-to give its dimension and
-a domain argument to give the type of its components.
-
-What kinds of domains can you use as the argument to
-\axiomType{Polynomial} or \axiomType{SquareMatrix} or
-\axiomType{List}?
-Well, the first two are mathematical in nature.
-You want to be able to perform algebraic operations like
-\axiomOp{+} and \axiomOp{*} on polynomials and square matrices,
-and operations such as \axiomFun{determinant} on square matrices.
-So you want to allow polynomials of integers {\it and} polynomials
-of square matrices with complex number coefficients and, in
-general, anything that ``makes sense.'' At the same time, you
-don't want Axiom to be able to build nonsense domains such
-as ``polynomials of strings!''
-
-In contrast to algebraic structures, data structures can hold any
-kind of object.
-Operations on lists such as \axiomFunFrom{insert}{List},
-\axiomFunFrom{delete}{List}, and \axiomFunFrom{concat}{List} just
-manipulate the list itself without changing or operating on its
-elements.
-Thus you can build \axiomType{List} over almost any datatype,
-including itself.
-\xtc{
-Create a complicated algebraic domain.
-}{
-\spadpaste{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
-}
-\xtc{
-Try to create a meaningless domain.
-}{
-\spadpaste{Polynomial(String)}
-}
-Evidently from our last example, Axiom has some mechanism
-that tells what a constructor can use as an argument.
-This brings us to the notion of \spadgloss{category}.
-As domains are objects, they too have a domain.
-The domain of a domain is a category.
-A category is simply a type whose members are domains.
-
-A common algebraic category is \axiomType{Ring}, the class of all domains
-that are ``rings.''
-A ring is an algebraic structure with constants \axiom{0} and \axiom{1} and
-operations \axiomOpFrom{+}{Ring}, \axiomOpFrom{-}{Ring}, and
-\axiomOpFrom{*}{Ring}.
-These operations are assumed ``closed'' with respect to the domain,
-meaning that they take two objects of the domain and produce a result
-object also in the domain.
-The operations are understood to satisfy certain ``axioms,'' certain
-mathematical principles providing the algebraic foundation for rings.
-For example, the {\it additive inverse axiom} for rings states:
-\centerline{{Every element \axiom{x} has an additive inverse \axiom{y} such}}
-\centerline{{that \axiom{x + y = 0}.}}
-The prototypical example of a domain that is a ring is the integers.
-Keep them in mind whenever we mention \axiomType{Ring}.
-
-Many algebraic domain constructors such as \axiomType{Complex},
-\axiomType{Polynomial}, \axiomType{Fraction}, take rings as
-arguments and return rings as values.
-You can use the infix operator ``\axiom{has}''
-\spadkey{has}
-to ask a domain if it belongs to a particular category.
-
-\xtc{
-All numerical types are rings.
-Domain constructor \axiomType{Polynomial} builds ``the ring of polynomials
-over any other ring.''
-}{
-\spadpaste{Polynomial(Integer) has Ring}
-}
-\xtc{
-Constructor \axiomType{List} never produces a ring.
-}{
-\spadpaste{List(Integer) has Ring}
-}
-\xtc{
-The constructor \axiomType{Matrix(R)} builds ``the domain of all matrices
-over the ring \axiom{R}.'' This domain is never a ring since the operations
-\axiomSyntax{+}, \axiomSyntax{-}, and \axiomSyntax{*} on matrices of arbitrary
-shapes are undefined.
-}{
-\spadpaste{Matrix(Integer) has Ring}
-}
-\xtc{
-Thus you can never build polynomials over matrices.
-}{
-\spadpaste{Polynomial(Matrix(Integer))}
-}
-\xtc{
-Use \axiomType{SquareMatrix(n,R)} instead.
-For any positive integer \axiom{n}, it builds ``the ring of \axiom{n} by
-\axiom{n} matrices over \axiom{R}.''
-}{
-\spadpaste{Polynomial(SquareMatrix(7,Complex(Integer)))}
-}
-
-Another common category is \axiomType{Field}, the class of all fields.
-A field is a ring with additional operations.
-For example, a field has commutative multiplication and
-a closed operation \axiomOpFrom{/}{Field} for the
-division of two elements.
-\axiomType{Integer} is not a field since, for example, \axiom{3/2} does not
-have an integer result.
-The prototypical example of a field is the rational numbers, that is, the
-domain \axiomType{Fraction(Integer)}.
-In general, the constructor \axiomType{Fraction} takes a ring as an
-argument and returns a field.\footnote{Actually,
-the argument domain must have some additional
-properties so as to belong to category \axiomType{IntegralDomain}.}
-Other domain constructors, such as \axiomType{Complex}, build fields only if
-their argument domain is a field.
-
-\xtc{
-The complex integers (often called the ``Gaussian integers'') do not form
-a field.
-}{
-\spadpaste{Complex(Integer) has Field}
-}
-\xtc{
-But fractions of complex integers do.
-}{
-\spadpaste{Fraction(Complex(Integer)) has Field}
-}
-\xtc{
-The algebraically equivalent domain of complex rational numbers is a field
-since domain constructor \axiomType{Complex} produces a field whenever its
-argument is a field.
-}{
-\spadpaste{Complex(Fraction(Integer)) has Field}
-}
-
-The most basic category is \axiomType{Type}.
-It denotes the class of all domains and
-subdomains.\footnote{\axiomType{Type} does not denote the class of
-all types.
-The type of all categories is \axiomType{Category}.
-The type of \axiomType{Type} itself is undefined.}
-Domain constructor \axiomType{List} is able to build ``lists of
-elements from domain \axiom{D}'' for arbitrary \axiom{D} simply by
-requiring that \axiom{D} belong to category \axiomType{Type}.
-
-Now, you may ask, what exactly is a category?
-Like domains, categories can be defined in the Axiom language.
-A category is defined by three components:
-%
-\indent{4}
-\beginitems
-\item[1. ] a name (for example, \axiomType{Ring}),
-used to refer to the class of domains that the category represents;
-\item[2. ] a set of operations, used to refer to the operations that
-the domains of this class support
-(for example, \axiomOp{+}, \axiomOp{-}, and \axiomOp{*} for rings); and
-\item[3. ] an optional list of other categories that this category extends.
-\enditems
-\indent{0}
-%
-This last component is a new idea.
-And it is key to the design of Axiom!
-Because categories can extend one another, they form hierarchies.
-\texht{Detailed charts showing the category hierarchies in Axiom are
-displayed in the endpages of this book.
-There you see that all categories are extensions of \axiomType{Type} and that
-\axiomType{Field} is an extension of \axiomType{Ring}.}{}
-
-The operations supported by the domains of a category are called the
-\spadglossSee{exports}{export} of that category because these are the
-operations made available for system-wide use.
-The exports of a domain of a given category are not only the ones
-explicitly mentioned by the category.
-Since a category extends other categories, the operations of these other
-categories---and all categories these other categories extend---are also
-exported by the domains.
-
-For example, polynomial domains belong to \axiomType{PolynomialCategory}.
-This category explicitly mentions some twenty-nine
-operations on polynomials, but it
-extends eleven other categories (including \axiomType{Ring}).
-As a result, the current system has over one hundred operations on polynomials.
-
-If a domain belongs to a category that extends, say, \axiomType{Ring}, it
-is convenient to say that the domain exports \axiomType{Ring}.
-The name of the category thus provides a convenient shorthand for the list
-of operations exported by the category.
-Rather than listing operations such as \axiomOpFrom{+}{Ring} and
-\axiomOpFrom{*}{Ring} of \axiomType{Ring} each time they are needed, the
-definition of a type simply asserts that it exports category
-\axiomType{Ring}.
-
-The category name, however, is more than a shorthand.
-The name \axiomType{Ring}, in fact, implies that the operations exported by
-rings are required to satisfy a set of ``axioms'' associated with the name
-\axiomType{Ring}.\footnote{This subtle
-but important feature distinguishes Axiom from
-other abstract datatype designs.}
-
-Why is it not correct to assume that some type is a ring if it exports all
-of the operations of \axiomType{Ring}?
-Here is why.
-Some languages such as {\bf APL}
-denote the \axiomType{Boolean} constants \axiom{true} and
-\axiom{false} by the integers \axiom{1} and \axiom{0}
-respectively, then use \axiomOp{+} and \axiomOp{*} to denote the
-logical operators \axiomFun{or} and \axiomFun{and}.
-But with these definitions
-\axiomType{Boolean} is not a ring since the additive inverse
-axiom is violated.\footnote{There is no inverse element \axiom{a}
-such that \axiom{1 + a = 0}, or, in the usual terms: \axiom{true
-or a = false}.}
-This alternative definition of \axiomType{Boolean} can be easily
-and correctly implemented in Axiom, since
-\axiomType{Boolean} simply does not assert that it is of category
-\axiomType{Ring}.
-This prevents the system from building meaningless domains such as
-\axiomType{Polynomial(Boolean)} and then wrongfully applying
-algorithms that presume that the ring axioms hold.
-
-
-Enough on categories. To learn more about them, see
-\downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
-in Chapter \ugCategoriesNumber\ignore{ugCategories}.
-We now return to our discussion of domains.
-
-Domains \spadgloss{export} a set of operations to make them
-available for system-wide use.
-\axiomType{Integer}, for example, exports the operations
-\axiomOpFrom{+}{Integer} and \axiomOpFrom{=}{Integer} given by
-the \spadglossSee{signatures}{signature}
-\axiomOpFrom{+}{Integer}: \spadsig{(Integer,Integer)}{Integer} and
-\axiomOpFrom{=}{Integer}: \spadsig{(Integer,Integer)}{Boolean},
-respectively.
-Each of these operations takes two \axiomType{Integer} arguments.
-The \axiomOpFrom{+}{Integer} operation also returns an \axiomType{Integer} but
-\axiomOpFrom{=}{Integer} returns a \axiomType{Boolean}: \axiom{true} or
-\axiom{false}.
-The operations exported by a domain usually manipulate objects of
-the domain---but not always.
-
-The operations of a domain may actually take as arguments, and return as
-values, objects from any domain.
-For example, \axiomType{Fraction (Integer)} exports the operations
-\axiomOpFrom{/}{Fraction}: \spadsig{(Integer,Integer)}{Fraction(Integer)}
-and \axiomFunFrom{characteristic}{Fraction}:
-\spadsig{}{NonNegativeInteger}.
-
-Suppose all operations of a domain take as arguments and return
-as values, only objects from {\it other} domains.
-This kind of domain
-is what Axiom calls a \spadgloss{package}.
-
-A package does not designate a class of objects at all.
-Rather, a package is just a collection of operations.
-Actually the bulk of the Axiom library of algorithms consists
-of packages.
-The facilities for factorization; integration; solution of linear,
-polynomial, and differential equations; computation of limits; and so
-on, are all defined in packages.
-Domains needed by algorithms can be passed to a package as arguments or
-used by name if they are not ``variable.''
-Packages are useful for defining operations that convert objects of one
-type to another, particularly when these types have different
-parameterizations.
-As an example, the package \axiomType{PolynomialFunction2(R,S)} defines
-operations that convert polynomials over a domain \axiom{R} to polynomials
-over \axiom{S}.
-To convert an object from \axiomType{Polynomial(Integer)} to
-\axiomType{Polynomial(Float)}, Axiom builds the package
-\axiomType{PolynomialFunctions2(Integer,Float)} in order to create the
-required conversion function.
-(This happens ``behind the scenes'' for you: see 
-\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
-in Section \ugTypesConvertNumber\ignore{ugTypesConvert}
-for details on how to convert objects.)
-
-Axiom categories, domains and packages and all their contained
-functions are written in the Axiom programming language and have
-been compiled into machine code.
-This is what comprises the Axiom \spadgloss{library}.
-In the rest of this book we show you how to use these domains and
-their functions and how to write your own functions.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingTitle}{Writing Types and Modes}
-\newcommand{\ugTypesWritingNumber}{2.2.}
-
-@
-\subsection{2.2. Writing Types and Modes}
-\label{ugTypesWritingPage}
-\begin{itemize}
-\item ugTypesBasicPage \ref{ugTypesBasicPage} on
-page~\pageref{ugTypesBasicPage}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~\pageref{ugTypesConvertPage}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\item ugTypesWritingZeroPage \ref{ugTypesWritingZeroPage} on
-page~\pageref{ugTypesWritingZeroPage}
-\item ugTypesWritingOnePage \ref{ugTypesWritingOnePage} on
-page~\pageref{ugTypesWritingOnePage}
-\item ugTypesWritingMorePage \ref{ugTypesWritingMorePage} on
-page~\pageref{ugTypesWritingMorePage}
-\item ugTypesWritingModesPage \ref{ugTypesWritingModesPage} on
-page~\pageref{ugTypesWritingModesPage}
-\item ugTypesWritingAbbrPage \ref{ugTypesWritingAbbrPage} on
-page~\pageref{ugTypesWritingAbbrPage}
-\end{itemize}
-\index{pages!ugTypesWritingPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingPage}
-\index{ugTypesWritingPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingPage}{2.2. Writing Types and Modes}
-\beginscroll
-%
-
-We have already seen in \texht{the last
-section}{\downlink{``\ugTypesBasicTitle''}{ugTypesBasicPage} 
-in Section \ugTypesBasicNumber\ignore{ugTypesBasic}} several examples of types.
-Most of these examples had either no arguments (for example,
-\axiomType{Integer}) or one argument (for example,
-\axiomType{Polynomial (Integer)}).
-In this section we give details about writing arbitrary types.
-We then define \spadglossSee{modes}{mode} and discuss how to write
-them.
-We conclude the section with a discussion on constructor
-abbreviations.
-
-\xtc{
-When might you need to write a type or mode?
-You need to do so when you declare variables.
-}{
-\spadpaste{a : PositiveInteger}
-}
-\xtc{
-You need to do so when you declare functions
-(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}),
-}{
-\spadpaste{f : Integer -> String}
-}
-\xtc{
-You need to do so when you convert an object from one type to another
-(\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
-in Section \ugTypesConvertNumber\ignore{ugTypesConvert}).
-}{
-\spadpaste{factor(2 :: Complex(Integer))}
-}
-\xtc{
-}{
-\spadpaste{(2 = 3)\$Integer}
-}
-\xtc{
-You need to do so when you give computation target type information
-(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
-}{
-\spadpaste{(2 = 3)@Boolean}
-}
-
-\beginmenu
-    \menudownlink{{2.2.1. Types with No Arguments}}{ugTypesWritingZeroPage}
-    \menudownlink{{2.2.2. Types with One Argument}}{ugTypesWritingOnePage}
-    \menudownlink{{2.2.3. Types with More Than One Argument}}
-{ugTypesWritingMorePage}
-    \menudownlink{{2.2.4. Modes}}{ugTypesWritingModesPage}
-    \menudownlink{{2.2.5. Abbreviations}}{ugTypesWritingAbbrPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingZeroTitle}{Types with No Arguments}
-\newcommand{\ugTypesWritingZeroNumber}{2.2.1.}
-
-@
-\subsection{2.2.1. Types with No Arguments}
-\label{ugTypesWritingZeroPage}
-\index{pages!ugTypesWritingZeroPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingZeroPage}
-\index{ugTypesWritingZeroPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingZeroPage}{2.2.1. Types with No Arguments}
-\beginscroll
-
-A constructor with no arguments can be written either
-with or without
-trailing opening and closing parentheses (\axiomSyntax{()}).
-\texht{
-\centerline{{\begin{tabular}{ccc}}}
-\centerline{{\axiomType{Boolean()} is the same as \axiomType{Boolean} & \quad &}}
-\centerline{{\axiomType{Integer()} is the same as \axiomType{Integer} }}
-\centerline{{\axiomType{String()} is the same as \axiomType{String} & \quad &}}
-\centerline{{\axiomType{Void()} is the same as \axiomType{Void} }}
-\centerline{{\end{tabular}}}
-}{
-\centerline{{\axiomType{Boolean()} is the same as \axiomType{Boolean} }}
-\centerline{{\axiomType{Integer()} is the same as \axiomType{Integer} }}
-\centerline{{\axiomType{String()} is the same as \axiomType{String} }}
-\centerline{{\axiomType{Void()} is the same as \axiomType{Void} }}
-and so on.
-}
-It is customary to omit the parentheses.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingOneTitle}{Types with One Argument}
-\newcommand{\ugTypesWritingOneNumber}{2.2.2.}
-
-@
-\subsection{2.2.2. Types with One Argument}
-\label{ugTypesWritingOnePage}
-\begin{itemize}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\end{itemize}
-\index{pages!ugTypesWritingOnePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingOnePage}
-\index{ugTypesWritingOnePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingOnePage}{2.2.2. Types with One Argument}
-\beginscroll
-
-A constructor with one argument can frequently be
-written with no
-parentheses.
-Types nest from right to left so that \axiomType{Complex Fraction
-Polynomial Integer} is the same as
-\axiomType{Complex (Fraction (Polynomial (Integer)))}.
-You need to use parentheses to force the application of a constructor
-to the correct argument, but you need not use any more than is
-necessary to remove ambiguities.
-
-Here are some guidelines for using parentheses (they are possibly slightly
-more restrictive than they need to be).
-\xtc{
-If the argument is an expression like \axiom{2 + 3}
-then you must enclose the argument in parentheses.
-}{
-\spadpaste{e : PrimeField(2 + 3)}
-}
-%
-\xtc{
-If the type is to be used with package calling
-then you must enclose the argument in parentheses.
-}{
-\spadpaste{content(2)\$Polynomial(Integer)}
-}
-\xtc{
-Alternatively, you can write the type without parentheses
-then enclose the whole type expression with parentheses.
-}{
-\spadpaste{content(2)\$(Polynomial Complex Fraction Integer)}
-}
-\xtc{
-If you supply computation target type information
-(\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall})
-then you should enclose the argument in parentheses.
-}{
-\spadpaste{(2/3)@Fraction(Polynomial(Integer))}
-}
-%
-\xtc{
-If the type itself has parentheses around it and we are
-not in the case of the first example above,
-then the parentheses can usually be omitted.
-}{
-\spadpaste{(2/3)@Fraction(Polynomial Integer)}
-}
-%
-\xtc{
-If the type is used in a declaration and the argument is a single-word
-type, integer or symbol,
-then the parentheses can usually be omitted.
-}{
-\spadpaste{(d,f,g) : Complex Polynomial Integer}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingMoreTitle}{Types with More Than One Argument}
-\newcommand{\ugTypesWritingMoreNumber}{2.2.3.}
-
-@
-\subsection{2.2.3. Types with More Than One Argument}
-\label{ugTypesWritingMorePage}
-\index{pages!ugTypesWritingMorePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingMorePage}
-\index{ugTypesWritingMorePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingMorePage}{2.2.3. Types with More Than One Argument}
-\beginscroll
-
-If a constructor
-has more than
-one argument, you must use parentheses.
-Some examples are
-\centerline{{\axiomType{UnivariatePolynomial(x, Float)} }}
-\centerline{{\axiomType{MultivariatePolynomial([z,w,r], Complex Float)} }}
-\centerline{{\axiomType{SquareMatrix(3, Integer)} }}
-\centerline{{\axiomType{FactoredFunctions2(Integer,Fraction Integer)}}}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingModesTitle}{Modes}
-\newcommand{\ugTypesWritingModesNumber}{2.2.4.}
-
-@
-\subsection{2.2.4. Modes}
-\label{ugTypesWritingModesPage}
-\begin{itemize}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~\pageref{ugTypesConvertPage}
-\end{itemize}
-\index{pages!ugTypesWritingModesPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingModesPage}
-\index{ugTypesWritingModesPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingModesPage}{2.2.4. Modes}
-\beginscroll
-
-A \spadgloss{mode} is a type that possibly is a
-question mark (\axiomSyntax{?}) or contains one in an argument
-position.
-For example, the following are all modes.
-\texht{
-\centerline{{\begin{tabular}{ccc}}}
-\centerline{{\axiomType{?} & \quad &}}
-\centerline{{\axiomType{Polynomial ?} }}
-\centerline{{\axiomType{Matrix Polynomial ?} & \quad &}}
-\centerline{{\axiomType{SquareMatrix(3,?)} }}
-\centerline{{\axiomType{Integer} & \quad &}}
-\centerline{{\axiomType{OneDimensionalArray(Float)}}}
-\centerline{{\end{tabular}}}
-}{
-\centerline{{\axiomType{?} }}
-\centerline{{\axiomType{Polynomial ?} }}
-\centerline{{\axiomType{Matrix Polynomial ?} }}
-\centerline{{\axiomType{SquareMatrix(3,?)} }}
-\centerline{{\axiomType{Integer} }}
-\centerline{{\axiomType{OneDimensionalArray(Float)}}}
-}
-As is evident from these examples, a mode is a type with a
-part that is not specified (indicated by a question mark).
-Only one \axiomSyntax{?} is allowed per mode and it must appear in the
-most deeply nested argument that is a type. Thus
-\nonLibAxiomType{?(Integer)},
-\nonLibAxiomType{Matrix(? (Polynomial))},
-\nonLibAxiomType{SquareMatrix(?, Integer)} and
-\nonLibAxiomType{SquareMatrix(?, ?)} are all invalid.
-The question mark must take the place of a domain, not data (for example,
-the integer that is the dimension of a square matrix).
-This rules out, for example, the two \axiomType{SquareMatrix}
-expressions.
-
-Modes can be used for declarations
-(\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare})
-and conversions
-(\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
-in Section \ugTypesConvertNumber\ignore{ugTypesConvert}).
-However, you cannot use a mode for package calling or giving target
-type information.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesWritingAbbrTitle}{Abbreviations}
-\newcommand{\ugTypesWritingAbbrNumber}{2.2.5.}
-
-@
-\subsection{2.2.5. Abbreviations}
-\label{ugTypesWritingAbbrPage}
-\begin{itemize}
-\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
-page~\pageref{ugSysCmdwhatPage}
-\end{itemize}
-\index{pages!ugTypesWritingAbbrPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesWritingAbbrPage}
-\index{ugTypesWritingAbbrPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesWritingAbbrPage}{2.2.5. Abbreviations}
-\beginscroll
-
-Every constructor has an abbreviation that
-you can freely
-substitute for the constructor name.
-In some cases, the abbreviation is nothing more than the
-capitalized version of the constructor name.
-
-\beginImportant
-Aside from allowing types to be written more concisely,
-abbreviations are used by Axiom to name various system
-files for constructors (such as library filenames, test input
-files and example files).
-Here are some common abbreviations.
-\texht{}{\table{
-{\axiomType{COMPLEX}    abbreviates \axiomType{Complex}              }
-{\axiomType{DFLOAT}     abbreviates \axiomType{DoubleFloat}          }
-{\axiomType{EXPR}       abbreviates \axiomType{Expression}           }
-{\axiomType{FLOAT}      abbreviates \axiomType{Float}                }
-{\axiomType{FRAC}       abbreviates \axiomType{Fraction}             }
-{\axiomType{INT}        abbreviates \axiomType{Integer}              }
-{\axiomType{MATRIX}     abbreviates \axiomType{Matrix}               }
-{\axiomType{NNI}        abbreviates \axiomType{NonNegativeInteger}   }
-{\axiomType{PI}         abbreviates \axiomType{PositiveInteger}      }
-{\axiomType{POLY}       abbreviates \axiomType{Polynomial}           }
-{\axiomType{STRING}     abbreviates \axiomType{String}               }
-{\axiomType{UP}         abbreviates \axiomType{UnivariatePolynomial} }
-}}
-\endImportant
-
-You can combine both full constructor names and abbreviations
-in a type expression.
-Here are some types using abbreviations.
-\centerline{{\axiomType{POLY INT} is the same as 
-\axiomType{Polynomial(INT)} }}
-\centerline{{\axiomType{POLY(Integer)} is the same 
-as \axiomType{Polynomial(Integer)} }}
-\centerline{{\axiomType{POLY(Integer)} is the same 
-as \axiomType{Polynomial(INT)} }}
-\centerline{{\axiomType{FRAC(COMPLEX(INT))} is the 
-same as \axiomType{Fraction Complex Integer} }}
-\centerline{{\axiomType{FRAC(COMPLEX(INT))} is the 
-same as \axiomType{FRAC(Complex Integer)} }}
-
-There are several ways of finding the names of constructors and
-their abbreviations.
-For a specific constructor, use \spadcmd{)abbreviation query}.
-You can also use the \spadcmd{)what} system command to see the names
-and abbreviations of constructors.
-For more information about \spadcmd{)what}, see
-\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
-in Section \ugSysCmdwhatNumber\ignore{ugSysCmdwhat}.
-\xtc{
-\spadcmd{)abbreviation query} can be
-abbreviated (no pun intended) to \spadcmd{)abb q}.
-}{
-\spadpaste{)abb q Integer}
-}
-\xtc{
-The \spadcmd{)abbreviation query} command lists
-the constructor name if you give the abbreviation.
-Issue \spadcmd{)abb q} if you want to see the names and abbreviations
-of all Axiom constructors.
-}{
-\spadpaste{)abb q DMP}
-}
-\xtc{
-Issue this to see all packages whose names contain the string ``ode''.
-}{
-\spadpaste{)what packages ode}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesDeclareTitle}{Declarations}
-\newcommand{\ugTypesDeclareNumber}{2.3.}
-
-@
-\subsection{2.3. Declarations}
-\label{ugTypesDeclarePage}
-\begin{itemize}
-\item ugLangAssignPage \ref{ugLangAssignPage} on
-page~\pageref{ugLangAssignPage}
-\item ugUserDeclarePage \ref{ugUserDeclarePage} on
-page~\pageref{ugUserDeclarePage}
-\item ugTypesConvertPageugIntroAssignPage \ref{ugTypesConvertPageugIntroAssignPage} on
-page~\pageref{ugTypesConvertPageugIntroAssignPage}
-\end{itemize}
-\index{pages!ugTypesDeclarePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesDeclarePage}
-\index{ugTypesDeclarePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesDeclarePage}{2.3. Declarations}
-\beginscroll
-%
-A \spadgloss{declaration} is an expression used
-to restrict the type of values that can be assigned to variables.
-A colon (\axiomSyntax{:}) is always used after a variable or
-list of variables to be declared.
-
-\beginImportant
-For a single variable, the syntax for declaration is
-\centerline{{{\it variableName \axiom{:} typeOrMode}}}
-For multiple variables, the syntax is
-\centerline{{{\tt (\subscriptIt{variableName}{1}, \subscriptIt{variableName}{2}, \ldots \subscriptIt{variableName}{N}): {\it typeOrMode}}}}
-\endImportant
-
-You can always combine a declaration with an assignment.
-When you do, it is equivalent to first giving a declaration statement,
-then giving an assignment.
-For more information on assignment, see
-\downlink{``\ugIntroAssignTitle''}{ugIntroAssignPage} 
-in Section \ugIntroAssignNumber\ignore{ugIntroAssign} and
-\downlink{``\ugLangAssignTitle''}{ugLangAssignPage} 
-in Section \ugLangAssignNumber\ignore{ugLangAssign}.
-To see how to declare your own functions, see
-\downlink{``\ugUserDeclareTitle''}{ugUserDeclarePage} 
-in Section \ugUserDeclareNumber\ignore{ugUserDeclare}.
-
-\xtc{
-This declares one variable to have a type.
-}{
-\spadpaste{a : Integer \bound{a}}
-}
-\xtc{
-This declares several variables to have a type.
-}{
-\spadpaste{(b,c) : Integer \bound{b c}}
-}
-\xtc{
-\axiom{a, b} and \axiom{c} can only hold integer values.
-}{
-\spadpaste{a := 45 \free{a}}
-}
-\xtc{
-If a value cannot be converted to a declared type,
-an error message is displayed.
-}{
-\spadpaste{b := 4/5 \free{b}}
-}
-\xtc{
-This declares a variable with a mode.
-}{
-\spadpaste{n : Complex ? \bound{n}}
-}
-\xtc{
-This declares several variables with a mode.
-}{
-\spadpaste{(p,q,r) : Matrix Polynomial ? \bound{p q r}}
-}
-\xtc{
-This complex object has integer real and imaginary parts.
-}{
-\spadpaste{n := -36 + 9 * \%i \free{n}}
-}
-\xtc{
-This complex object has fractional symbolic real and imaginary parts.
-}{
-\spadpaste{n := complex(4/(x + y),y/x) \free{n}}
-}
-\xtc{
-This matrix has entries that are polynomials with integer
-coefficients.
-}{
-\spadpaste{p := [[1,2],[3,4],[5,6]] \free{p}}
-}
-\xtc{
-This matrix has a single entry that is a polynomial with
-rational number coefficients.
-}{
-\spadpaste{q := [[x - 2/3]] \free{q}}
-}
-\xtc{
-This matrix has entries that are polynomials with complex integer
-coefficients.
-}{
-\spadpaste{r := [[1-\%i*x,7*y+4*\%i]] \free{r}}
-}
-%
-\xtc{
-Note the difference between this and the next example.
-This is a complex object with polynomial real and imaginary parts.
-}{
-\spadpaste{f : COMPLEX POLY ? := (x + y*\%i)**2}
-}
-\xtc{
-This is a polynomial with complex integer coefficients.
-The objects are convertible from one to the other.
-See \downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} 
-in Section \ugTypesConvertNumber\ignore{ugTypesConvert} for more information.
-}{
-\spadpaste{g : POLY COMPLEX ? := (x + y*\%i)**2}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug02.ht>>=
-\newcommand{\ugTypesRecordsTitle}{Records}
-\newcommand{\ugTypesRecordsNumber}{2.4.}
-
-@
-\subsection{2.4. Records}
-\label{ugTypesRecordsPage}
-\index{pages!ugTypesRecordsPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesRecordsPage}
-\index{ugTypesRecordsPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesRecordsPage}{2.4. Records}
-\beginscroll
-%
-A \pspadtype{Record} is an object composed of one or more other objects,
-each of which is referenced
-with
-a \spadgloss{selector}.
-Components can all belong to the same type or each can have a different type.
-
-\beginImportant
-The syntax for writing a \pspadtype{Record} type is
-\centerline{{{\tt Record(\subscriptIt{selector}{1}:\subscriptIt{type}{1}, \subscriptIt{selector}{2}:\subscriptIt{type}{2}, \ldots, \subscriptIt{selector}{N}:\subscriptIt{type}{N})}}}
-You must be careful if a selector has the same name as a variable in the
-workspace.
-If this occurs, precede the selector name by a single
-quote.
-\endImportant
-
-Record components are implicitly ordered.
-All the components of a record can
-be set at once by assigning the record a
-bracketed \spadgloss{tuple} of values of the proper length
-(for example, \axiom{r : Record(a: Integer, b: String) := [1, "two"]}).
-To access a component of a record \axiom{r},
-write the name \axiom{r}, followed by a period, followed by a selector.
-
-%
-\xtc{
-The object returned by this computation is a record with two components: a
-\axiom{quotient} part and a \axiom{remainder} part.
-}{
-\spadpaste{u := divide(5,2) \bound{u}}
-}
-%
-\xtc{
-This is the quotient part.
-}{
-\spadpaste{u.quotient \free{u}}
-}
-\xtc{
-This is the remainder part.
-}{
-\spadpaste{u.remainder \free{u}}
-}
-%
-\xtc{
-You can use selector expressions on the left-hand side of an assignment
-to change destructively the components of a record.
-}{
-\spadpaste{u.quotient := 8978 \free{u}\bound{u1}}
-}
-\xtc{
-The selected component \axiom{quotient} has the value \axiom{8978},
-which is what is returned by the assignment.
-Check that the value of \axiom{u} was modified.
-}{
-\spadpaste{u \free{u}\free{u1}}
-}
-\xtc{
-Selectors are evaluated.
-Thus you can use variables that evaluate to selectors instead of the
-selectors themselves.
-}{
-\spadpaste{s := 'quotient \bound{s}}
-}
-\xtc{
-Be careful!
-A selector could have the same name as a variable in the workspace.
-If this occurs, precede the selector name by a single quote, as in
-\axiom{u.'quotient}.
-}{
-\spadpaste{divide(5,2).s \free{s}}
-}
-\xtc{
-Here we declare that the value of \axiom{bd}
-has two components: a string,
-to be accessed via \axiom{name}, and an integer,
-to be accessed via \axiom{birthdayMonth}.
-}{
-\spadpaste{bd : Record(name : String, birthdayMonth : Integer) \bound{bddec}}
-}
-\xtc{
-You must initially set the value of the entire \pspadtype{Record}
-at once.
-}{
-\spadpaste{bd := ["Judith", 3] \free{bddec}\bound{bd}}
-}
-\xtc{
-Once set, you can change any of the individual components.
-}{
-\spadpaste{bd.name := "Katie" \free{bd}}
-}
-\xtc{
-Records may be nested and the selector names can be shared at
-different levels.
-}{
-\spadpaste{r : Record(a : Record(b: Integer, c: Integer), b: Integer) \bound{rdec}}
-}
-\xtc{
-The record \axiom{r} has a \axiom{b} selector at two different levels.
-Here is an initial value for \axiom{r}.
-}{
-\spadpaste{r := [[1,2],3] \bound{r}\free{rdec}}
-}
-\xtc{
-This extracts the \axiom{b} component from the \axiom{a} component of \axiom{r}.
-}{
-\spadpaste{r.a.b \free{r}}
-}
-\xtc{
-This extracts the \axiom{b} component from \axiom{r}.
-}{
-\spadpaste{r.b \free{r}}
-}
-%
-\xtc{
-You can also use spaces or parentheses to refer to \pspadtype{Record}
-components.
-This is the same as \axiom{r.a}.
-}{
-\spadpaste{r(a) \free{r}}
-}
-\xtc{
-This is the same as \axiom{r.b}.
-}{
-\spadpaste{r b \free{r}}
-}
-\xtc{
-This is the same as \axiom{r.b := 10}.
-}{
-\spadpaste{r(b) := 10 \free{r}\bound{r1}}
-}
-\xtc{
-Look at \axiom{r} to make sure it was modified.
-}{
-\spadpaste{r \free{r1}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesUnionsTitle}{Unions}
-\newcommand{\ugTypesUnionsNumber}{2.5.}
-
-@
-\subsection{2.5. Unions}
-\label{ugTypesUnionsPage}
-\begin{itemize}
-\item ugTypesUnionsWOSelPage \ref{ugTypesUnionsWOSelPage} on
-page~\pageref{ugTypesUnionsWOSelPage}
-\item ugTypesUnionsWSelPage \ref{ugTypesUnionsWSelPage} on
-page~\pageref{ugTypesUnionsWSelPage}
-\end{itemize}
-\index{pages!ugTypesUnionsPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesUnionsPage}
-\index{ugTypesUnionsPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesUnionsPage}{2.5. Unions}
-\beginscroll
-%
-Type \pspadtype{Union} is used for objects that
-can be of any of a specific finite set of types.
-Two versions of unions are available,
-one with selectors (like records) and one without.
-
-\beginmenu
-    \menudownlink{{2.5.1. Unions Without Selectors}}{ugTypesUnionsWOSelPage}
-    \menudownlink{{2.5.2. Unions With Selectors}}{ugTypesUnionsWSelPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesUnionsWOSelTitle}{Unions Without Selectors}
-\newcommand{\ugTypesUnionsWOSelNumber}{2.5.1.}
-
-@
-\subsection{2.5.1. Unions Without Selectors}
-\label{ugTypesUnionsWOSelPage}
-\index{pages!ugTypesUnionsWOSelPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesUnionsWOSelPage}
-\index{ugTypesUnionsWOSelPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesUnionsWOSelPage}{2.5.1. Unions Without Selectors}
-\beginscroll
-
-The declaration \axiom{x : Union(Integer, String, Float)}
-states that \axiom{x} can have values that are integers,
-strings or ``big'' floats.
-If, for example, the \pspadtype{Union} object is an integer, the object is
-said to belong to the \axiomType{Integer} {\it branch}
-of the \pspadtype{Union}.\footnote{
-Note that we are being a bit careless with the language here.
-Technically, the type of \axiom{x} is always
-\pspadtype{Union(Integer, String, Float)}.
-If it belongs to the \axiomType{Integer} branch, \axiom{x}
-may be converted to an object of type \axiomType{Integer}.}
-
-\beginImportant
-The syntax for writing a \pspadtype{Union} type without selectors is
-\centerline{{{\tt Union(\subscriptIt{type}{1}, \subscriptIt{type}{2}, \ldots, \subscriptIt{type}{N})}}}
-The types in a union without selectors must be distinct.
-\endImportant
-
-It is possible to create unions like
-\pspadtype{Union(Integer, PositiveInteger)} but they are
-difficult to work with because of the overlap in the branch
-types.
-See below for the rules Axiom uses for converting something
-into a union object.
-
-The \axiom{case} infix
-\spadkey{case}
-operator returns a \axiomType{Boolean}
-and can be used to determine the branch in which an object lies.
-
-\xtc{
-This function displays a message stating in which
-branch of the \pspadtype{Union} the object (defined as \axiom{x}
-above) lies.
-}{
-\begin{spadsrc}[\bound{sayBranch}]
-sayBranch(x : Union(Integer,String,Float)) : Void  ==
-  output
-    x case Integer => "Integer branch"
-    x case String  => "String branch"
-    "Float branch"
-\end{spadsrc}
-}
-%
-\xtc{
-This tries \userfun{sayBranch} with an integer.
-}{
-\spadpaste{sayBranch 1 \free{sayBranch}}
-}
-\xtc{
-This tries \userfun{sayBranch} with a string.
-}{
-\spadpaste{sayBranch "hello" \free{sayBranch}}
-}
-\xtc{
-This tries \userfun{sayBranch} with a floating-point number.
-}{
-\spadpaste{sayBranch 2.718281828 \free{sayBranch}}
-}
-%
-
-There are two things of interest about this particular
-example to which we would like to draw your attention.
-\indent{4}
-\beginitems
-%
-\item[1. ] Axiom normally converts a result to the target value
-before passing it to the function.
-If we left the declaration information out of this function definition
-then the \axiom{sayBranch} call would have been attempted with an
-\axiomType{Integer} rather than a \pspadtype{Union}, and an error would have
-resulted.
-%
-\item[2. ] The types in a \pspadtype{Union} are searched in the order given.
-So if the type were given as
-
-\noindent
-{\small\axiom{sayBranch(x: Union(String,Integer,Float,Any)): Void}}
-
-\noindent
-then the result would have been ``String branch'' because there
-is a conversion from \axiomType{Integer} to \axiomType{String}.
-\enditems
-\indent{0}
-
-Sometimes \pspadtype{Union} types can have extremely
-long names.
-Axiom therefore abbreviates the names of unions by printing
-the type of the branch first within the \pspadtype{Union} and then
-eliding the remaining types with an ellipsis (\axiomSyntax{...}).
-
-\xtc{
-Here the \axiomType{Integer} branch is displayed first.
-Use \axiomSyntax{::} to create a \pspadtype{Union} object from an object.
-}{
-\spadpaste{78 :: Union(Integer,String)}
-}
-\xtc{
-Here the \axiomType{String} branch is displayed first.
-}{
-\spadpaste{s := "string" :: Union(Integer,String) \bound{s}}
-}
-\xtc{
-Use \axiom{typeOf} to see the full and actual \pspadtype{Union} type.
-\spadkey{typeOf}
-}{
-\spadpaste{typeOf s}
-}
-\xtc{
-A common operation that returns a union is \axiomFunFrom{exquo}{Integer}
-which returns the ``exact quotient'' if the quotient is exact,...
-}{
-\spadpaste{three := exquo(6,2) \bound{three}}
-}
-\xtc{
-and \axiom{"failed"} if the quotient is not exact.
-}{
-\spadpaste{exquo(5,2)}
-}
-\xtc{
-A union with a \axiom{"failed"} is frequently used to indicate the failure
-or lack of applicability of an object.
-As another example, assign an integer a variable \axiom{r} declared to be a
-rational number.
-}{
-\spadpaste{r: FRAC INT := 3 \bound{r}\bound{rdec}}
-}
-\xtc{
-The operation \axiomFunFrom{retractIfCan}{Fraction} tries to retract the
-fraction to the underlying domain \axiomType{Integer}.
-It produces a union object.
-Here it succeeds.
-}{
-\spadpaste{retractIfCan(r) \free{r}}
-}
-\xtc{
-Assign it a rational number.
-}{
-\spadpaste{r := 3/2 \bound{r1}\free{rdec}}
-}
-\xtc{
-Here the retraction fails.
-}{
-\spadpaste{retractIfCan(r) \free{r1}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesUnionsWSelTitle}{Unions With Selectors}
-\newcommand{\ugTypesUnionsWSelNumber}{2.5.2.}
-
-@
-\subsection{2.5.2. Unions With Selectors}
-\label{ugTypesUnionsWSelPage}
-\begin{itemize}
-\item ugTypesRecordsPage \ref{ugTypesRecordsPage} on
-page~\pageref{ugTypesRecordsPage}
-\item ugTypesUnionsWOSelPage \ref{ugTypesUnionsWOSelPage} on
-page~\pageref{ugTypesUnionsWOSelPage}
-\end{itemize}
-\index{pages!ugTypesUnionsWSelPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesUnionsWSelPage}
-\index{ugTypesUnionsWSelPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesUnionsWSelPage}{2.5.2. Unions With Selectors}
-\beginscroll
-
-Like records (
-\downlink{``\ugTypesRecordsTitle''}{ugTypesRecordsPage} 
-in Section \ugTypesRecordsNumber\ignore{ugTypesRecords}),
-you can write \pspadtype{Union} types
-with selectors.
-
-\beginImportant
-The syntax for writing a \pspadtype{Union} type with selectors is
-\centerline{{{\tt Union(\subscriptIt{selector}{1}:\subscriptIt{type}{1}, \subscriptIt{selector}{2}:\subscriptIt{type}{2}, \ldots, \subscriptIt{selector}{N}:\subscriptIt{type}{N})}}}
-You must be careful if a selector has the same name as a variable in the
-workspace.
-If this occurs, precede the selector name by a single
-quote.
-It is an error to use a selector that does not correspond to the branch of
-the \pspadtype{Union} in which the element actually lies.
-\endImportant
-
-Be sure to understand the difference between records and unions
-with selectors.
-Records can have more than one component and the selectors are
-used to refer to the components.
-Unions always have one component but the type of that one
-component can vary.
-An object of type \pspadtype{Record(a: Integer, b: Float, c:
-String)} contains an integer {\it and} a float  {\it and} a
-string.
-An object of type \pspadtype{Union(a: Integer, b: Float, c:
-String)} contains an integer {\it or} a float  {\it or} a
-string.
-
-Here is a version of the \userfun{sayBranch} function (cf.
-\downlink{``\ugTypesUnionsWOSelTitle''}{ugTypesUnionsWOSelPage} 
-in Section \ugTypesUnionsWOSelNumber\ignore{ugTypesUnionsWOSel}) 
-that works with a union with selectors.
-It displays a message stating in which branch of the \pspadtype{Union} the
-object lies.
+\subsection{Asp19 Example Code}
+\label{Asp19ExampleCode}
+\index{pages!Asp19ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp19ExampleCode}
+\index{Asp19ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp19ExampleCode}{Asp19 Example Code}
 \begin{verbatim}
-sayBranch(x:Union(i:Integer,s:String,f:Float)):Void==
-  output
-    x case i => "Integer branch"
-    x case s  => "String branch"
-    "Float branch"
+      SUBROUTINE LSFUN2(M,N,XC,FVECC,FJACC,LJC)
+      DOUBLE PRECISION FVECC(M),FJACC(LJC,N),XC(N)
+      INTEGER M,N,LJC
+      INTEGER I,J
+      DO 25003 I=1,LJC
+        DO 25004 J=1,N
+          FJACC(I,J)=0.0D0
+25004   CONTINUE
+25003 CONTINUE
+      FVECC(1)=((XC(1)-0.14D0)*XC(3)+(15.0D0*XC(1)-2.1D0)*XC(2)+1.0D0)/(
+     &XC(3)+15.0D0*XC(2))
+      FVECC(2)=((XC(1)-0.18D0)*XC(3)+(7.0D0*XC(1)-1.26D0)*XC(2)+1.0D0)/(
+     &XC(3)+7.0D0*XC(2))
+      FVECC(3)=((XC(1)-0.22D0)*XC(3)+(4.333333333333333D0*XC(1)-0.953333
+     &3333333333D0)*XC(2)+1.0D0)/(XC(3)+4.333333333333333D0*XC(2))
+      FVECC(4)=((XC(1)-0.25D0)*XC(3)+(3.0D0*XC(1)-0.75D0)*XC(2)+1.0D0)/(
+     &XC(3)+3.0D0*XC(2))
+      FVECC(5)=((XC(1)-0.29D0)*XC(3)+(2.2D0*XC(1)-0.6379999999999999D0)*
+     &XC(2)+1.0D0)/(XC(3)+2.2D0*XC(2))
+      FVECC(6)=((XC(1)-0.32D0)*XC(3)+(1.666666666666667D0*XC(1)-0.533333
+     &3333333333D0)*XC(2)+1.0D0)/(XC(3)+1.666666666666667D0*XC(2))
+      FVECC(7)=((XC(1)-0.35D0)*XC(3)+(1.285714285714286D0*XC(1)-0.45D0)*
+     &XC(2)+1.0D0)/(XC(3)+1.285714285714286D0*XC(2))
+      FVECC(8)=((XC(1)-0.39D0)*XC(3)+(XC(1)-0.39D0)*XC(2)+1.0D0)/(XC(3)+
+     &XC(2))
+      FVECC(9)=((XC(1)-0.37D0)*XC(3)+(XC(1)-0.37D0)*XC(2)+1.285714285714
+     &286D0)/(XC(3)+XC(2))
+      FVECC(10)=((XC(1)-0.58D0)*XC(3)+(XC(1)-0.58D0)*XC(2)+1.66666666666
+     &6667D0)/(XC(3)+XC(2))
+      FVECC(11)=((XC(1)-0.73D0)*XC(3)+(XC(1)-0.73D0)*XC(2)+2.2D0)/(XC(3)
+     &+XC(2))
+      FVECC(12)=((XC(1)-0.96D0)*XC(3)+(XC(1)-0.96D0)*XC(2)+3.0D0)/(XC(3)
+     &+XC(2))
+      FVECC(13)=((XC(1)-1.34D0)*XC(3)+(XC(1)-1.34D0)*XC(2)+4.33333333333
+     &3333D0)/(XC(3)+XC(2))
+      FVECC(14)=((XC(1)-2.1D0)*XC(3)+(XC(1)-2.1D0)*XC(2)+7.0D0)/(XC(3)+X
+     &C(2))
+      FVECC(15)=((XC(1)-4.39D0)*XC(3)+(XC(1)-4.39D0)*XC(2)+15.0D0)/(XC(3
+     &)+XC(2))
+      FJACC(1,1)=1.0D0
+      FJACC(1,2)=-15.0D0/(XC(3)**2+30.0D0*XC(2)*XC(3)+225.0D0*XC(2)**2)
+      FJACC(1,3)=-1.0D0/(XC(3)**2+30.0D0*XC(2)*XC(3)+225.0D0*XC(2)**2)
+      FJACC(2,1)=1.0D0
+      FJACC(2,2)=-7.0D0/(XC(3)**2+14.0D0*XC(2)*XC(3)+49.0D0*XC(2)**2)
+      FJACC(2,3)=-1.0D0/(XC(3)**2+14.0D0*XC(2)*XC(3)+49.0D0*XC(2)**2)
+      FJACC(3,1)=1.0D0
+      FJACC(3,2)=((-0.1110223024625157D-15*XC(3))-4.333333333333333D0)/(
+     &XC(3)**2+8.666666666666666D0*XC(2)*XC(3)+18.77777777777778D0*XC(2)
+     &**2)
+      FJACC(3,3)=(0.1110223024625157D-15*XC(2)-1.0D0)/(XC(3)**2+8.666666
+     &666666666D0*XC(2)*XC(3)+18.77777777777778D0*XC(2)**2)
+      FJACC(4,1)=1.0D0
+      FJACC(4,2)=-3.0D0/(XC(3)**2+6.0D0*XC(2)*XC(3)+9.0D0*XC(2)**2)
+      FJACC(4,3)=-1.0D0/(XC(3)**2+6.0D0*XC(2)*XC(3)+9.0D0*XC(2)**2)
+      FJACC(5,1)=1.0D0
+      FJACC(5,2)=((-0.1110223024625157D-15*XC(3))-2.2D0)/(XC(3)**2+4.399
+     &999999999999D0*XC(2)*XC(3)+4.839999999999998D0*XC(2)**2)
+      FJACC(5,3)=(0.1110223024625157D-15*XC(2)-1.0D0)/(XC(3)**2+4.399999
+     &999999999D0*XC(2)*XC(3)+4.839999999999998D0*XC(2)**2)
+      FJACC(6,1)=1.0D0
+      FJACC(6,2)=((-0.2220446049250313D-15*XC(3))-1.666666666666667D0)/(
+     &XC(3)**2+3.333333333333333D0*XC(2)*XC(3)+2.777777777777777D0*XC(2)
+     &**2)
+      FJACC(6,3)=(0.2220446049250313D-15*XC(2)-1.0D0)/(XC(3)**2+3.333333
+     &333333333D0*XC(2)*XC(3)+2.777777777777777D0*XC(2)**2)
+      FJACC(7,1)=1.0D0
+      FJACC(7,2)=((-0.5551115123125783D-16*XC(3))-1.285714285714286D0)/(
+     &XC(3)**2+2.571428571428571D0*XC(2)*XC(3)+1.653061224489796D0*XC(2)
+     &**2)
+      FJACC(7,3)=(0.5551115123125783D-16*XC(2)-1.0D0)/(XC(3)**2+2.571428
+     &571428571D0*XC(2)*XC(3)+1.653061224489796D0*XC(2)**2)
+      FJACC(8,1)=1.0D0
+      FJACC(8,2)=-1.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(8,3)=-1.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(9,1)=1.0D0
+      FJACC(9,2)=-1.285714285714286D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)*
+     &*2)
+      FJACC(9,3)=-1.285714285714286D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)*
+     &*2)
+      FJACC(10,1)=1.0D0
+      FJACC(10,2)=-1.666666666666667D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
+     &**2)
+      FJACC(10,3)=-1.666666666666667D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
+     &**2)
+      FJACC(11,1)=1.0D0
+      FJACC(11,2)=-2.2D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(11,3)=-2.2D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(12,1)=1.0D0
+      FJACC(12,2)=-3.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(12,3)=-3.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(13,1)=1.0D0
+      FJACC(13,2)=-4.333333333333333D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
+     &**2)
+      FJACC(13,3)=-4.333333333333333D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)
+     &**2)
+      FJACC(14,1)=1.0D0
+      FJACC(14,2)=-7.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(14,3)=-7.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(15,1)=1.0D0
+      FJACC(15,2)=-15.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      FJACC(15,3)=-15.0D0/(XC(3)**2+2.0D0*XC(2)*XC(3)+XC(2)**2)
+      RETURN
+      END
 \end{verbatim}
-Note that \axiom{case} uses the selector name as its right-hand argument.
-\spadkey{case}
-If you accidentally use the branch type on the right-hand side of
-\axiom{case}, \axiom{false} will be returned.
-
-\xtc{
-Declare variable \axiom{u} to have a union type with selectors.
-}{
-\spadpaste{u : Union(i : Integer, s : String) \bound{undec}}
-}
-\xtc{
-Give an initial value to \axiom{u}.
-}{
-\spadpaste{u := "good morning" \bound{u}\free{undec}}
-}
-\xtc{
-Use \axiom{case} to determine in which
-branch of a \pspadtype{Union} an object lies.
-}{
-\spadpaste{u case i \free{u}}
-}
-\xtc{
-}{
-\spadpaste{u case s \free{u}}
-}
-\xtc{
-To access the element in a particular branch, use the selector.
-}{
-\spadpaste{u.s \free{u}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesAnyNoneTitle}{The ``Any'' Domain}
-\newcommand{\ugTypesAnyNoneNumber}{2.6.}
-
-@
-\subsection{2.6. The ``Any'' Domain}
-\label{ugTypesAnyNonePage}
-\index{pages!ugTypesAnyNonePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesAnyNonePage}
-\index{ugTypesAnyNonePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesAnyNonePage}{2.6. The ``Any'' Domain}
-\beginscroll
-
-With the exception of objects of type \pspadtype{Record}, all Axiom
-data structures are homogenous, that is, they hold objects all of the same
-type.
-If you need to get around this, you can use type \axiomType{Any}.
-Using \axiomType{Any}, for example, you can create lists whose
-elements are integers, rational numbers, strings, and even other lists.
-
-\xtc{
-Declare \axiom{u} to have type \axiomType{Any}.
-}{
-\spadpaste{u: Any\bound{uany}}
-}
-\xtc{
-Assign a list of mixed type values to \axiom{u}
-}{
-\spadpaste{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany}\bound{u}}
-}
-\xtc{
-When we ask for the elements, Axiom displays these types.
-}{
-\spadpaste{u.1 \free{u}}
-}
-\xtc{
-Actually, these objects belong to \axiomType{Any} but Axiom
-automatically converts them to their natural types for you.
-}{
-\spadpaste{u.3 \free{u}}
-}
-\xtc{
-Since type \axiomType{Any} can be anything,
-it can only belong to type \axiomType{Type}.
-Therefore it cannot be used in algebraic domains.
-}{
-\spadpaste{v : Matrix(Any)}
-}
-
-Perhaps you are wondering how Axiom internally represents
-objects of type \axiomType{Any}.
-An object of type \axiomType{Any} consists not only a data part
-representing its normal value, but also a type part (a {\it badge}) giving
-its type.
-For example, the value \axiom{1} of type \axiomType{PositiveInteger} as an
-object of type \axiomType{Any} internally looks like
-\axiom{[1,\axiomType{PositiveInteger()}]}.
-
-%When should you use \axiomType{Any} instead of a \pspadtype{Union} type?
-%Can you plan ahead?
-%For a \pspadtype{Union}, you must know in advance exactly which types you
-%are
-%\index{union!vs. Any@{vs. \protect\nonLibAxiomType{Any}}}
-%going to allow.
-%For \axiomType{Any}, anything that comes along can be accommodated.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesConvertTitle}{Conversion}
-\newcommand{\ugTypesConvertNumber}{2.7.}
-
-@
-\subsection{2.7. Conversion}
-\label{ugTypesConvertPage}
-\begin{itemize}
-\item ugTypesBasicPage \ref{ugTypesBasicPage} on
-page~\pageref{ugTypesBasicPage}
-\end{itemize}
-\index{pages!ugTypesConvertPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesConvertPage}
-\index{ugTypesConvertPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesConvertPage}{2.7. Conversion}
-\beginscroll
-%
-\beginImportant
-\spadglossSee{Conversion}{conversion}
-is the process of changing an object of one type
-into an object of another type.
-The syntax for conversion is:
-\centerline{{{\it object} {\tt ::} {\it newType}}}
-\endImportant
-
-\xtc{
-By default, \axiom{3} has the type \axiomType{PositiveInteger}.
-}{
-\spadpaste{3}
-}
-\xtc{
-We can change this into an object of type \axiomType{Fraction Integer}
-by using \axiomSyntax{::}.
-}{
-\spadpaste{3 :: Fraction Integer}
-}
-
-A \spadgloss{coercion} is a special kind of conversion that Axiom is
-allowed to do automatically when you enter an expression.
-Coercions are usually somewhat safer than more general conversions.
-The Axiom library contains operations called
-\axiomFun{coerce} and \axiomFun{convert}.
-Only the \axiomFun{coerce} operations can be used by the
-interpreter to change an object into an object of another type unless
-you explicitly use a \axiomSyntax{::}.
-
-By now you will be quite familiar with what types and modes look like.
-It is useful to think of a type or mode as a pattern
-for what you want the result to be.
-\xtc{
-Let's start with a square matrix of polynomials with complex rational number
-coefficients.
-}{
-\spadpaste{m : SquareMatrix(2,POLY COMPLEX FRAC INT) \bound{mdec}}
-}
-\xtc{
-}{
-\spadpaste{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]] \bound{m}\free{mdec}}
-}
-\xtc{
-We first want to interchange the \axiomType{Complex} and
-\axiomType{Fraction} layers.
-We do the conversion by doing the interchange in the type expression.
-}{
-\spadpaste{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT) \free{m}\bound{m1}}
-}
-\xtc{
-Interchange the \axiomType{Polynomial} and the
-\axiomType{Fraction} levels.
-}{
-\spadpaste{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT) \free{m1}\bound{m2}}
-}
-\xtc{
-Interchange the \axiomType{Polynomial} and the
-\axiomType{Complex} levels.
-}{
-\spadpaste{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT) \free{m2}\bound{m3}}
-}
-
-All the entries have changed types, although in comparing the
-last two results only the entry in the lower left corner looks different.
-We did all the intermediate steps to show you what Axiom can do.
-
-\xtc{
-In fact, we could have combined all these into one conversion.
-}{
-\spadpaste{m :: SquareMatrix(2,FRAC COMPLEX POLY INT) \free{m}}
-}
-
-There are times when Axiom is not be able to do the conversion
-in one step.
-You may need to break up the transformation into several conversions
-in order to get an object of the desired type.
-
-We cannot move either \axiomType{Fraction} or \axiomType{Complex}
-above (or to the left of, depending on how you look at it)
-\axiomType{SquareMatrix} because each of these levels requires that its
-argument type have commutative multiplication, whereas
-\axiomType{SquareMatrix} does not.\footnote{\axiomType{Fraction} requires
-that its argument belong to the category \axiomType{IntegralDomain} and
-\axiomType{Complex} requires that its argument belong to
-\axiomType{CommutativeRing}. See
-\downlink{``\ugTypesBasicTitle''}{ugTypesBasicPage} 
-in Section \ugTypesBasicNumber\ignore{ugTypesBasic}
-for a brief discussion of categories.}
-The \axiomType{Integer} level did not move anywhere
-because it does not allow any arguments.
-We also did not move the \axiomType{SquareMatrix} part anywhere, but
-we could have.
-\xtc{
-Recall that \axiom{m} looks like this.
-}{
-\spadpaste{m \free{m}}
-}
-\xtc{
-If we want a polynomial with matrix coefficients rather than a matrix
-with polynomial entries, we can just do the conversion.
-}{
-\spadpaste{m :: POLY SquareMatrix(2,COMPLEX FRAC INT) \free{m}}
-}
-\xtc{
-We have not yet used modes for any conversions.
-Modes are a great shorthand for indicating the type of the
-object you want.
-Instead of using the long type expression in the
-last example, we could have simply said this.
-}{
-\spadpaste{m :: POLY ? \free{m}}
-}
-\xtc{
-We can also indicate more structure if we want the entries
-of the matrices to be fractions.
-}{
-\spadpaste{m :: POLY SquareMatrix(2,FRAC ?) \free{m}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesSubdomainsTitle}{Subdomains Again}
-\newcommand{\ugTypesSubdomainsNumber}{2.8.}
-
-@
-\subsection{2.8. Subdomains Again}
-\label{ugTypesSubdomainsPage}
-\index{pages!ugTypesSubdomainsPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesSubdomainsPage}
-\index{ugTypesSubdomainsPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesSubdomainsPage}{2.8. Subdomains Again}
-\beginscroll
-
-A \spadgloss{subdomain} \axiom{S} of a domain \axiom{D} is a domain
-consisting of
-\indent{4}
-\beginitems
-\item[1. ] those elements of \axiom{D} that satisfy some
-\spadgloss{predicate} (that is, a test that returns \axiom{true} or
-\axiom{false}) and
-\item[2. ] a subset of the operations of \axiom{D}.
-\enditems
-\indent{0}
-Every domain is a subdomain of itself, trivially satisfying the
-membership test: \axiom{true}.
-
-Currently, there are only two system-defined subdomains in Axiom that receive
-substantial use.
-\axiomType{PositiveInteger} and
-\axiomType{NonNegativeInteger} are subdomains of \axiomType{Integer}.
-An element \axiom{x} of \axiomType{NonNegativeInteger} is an integer
-that is greater than or equal to zero, that is, satisfies
-\axiom{x >= 0.}
-An element \axiom{x} of \axiomType{PositiveInteger} is a nonnegative integer
-that is, in fact, greater than zero, that is, satisfies \axiom{x > 0.}
-Not all operations from \axiomType{Integer} are available for these
-subdomains.
-For example, negation and subtraction are not provided since the subdomains
-are not closed under those operations.
-When you use an integer in an expression, Axiom assigns to it the
-type that is the most specific subdomain whose predicate is satisfied.
-\xtc{
-This is a positive integer.
-}{
-\spadpaste{5}
-}
-\xtc{
-This is a nonnegative integer.
-}{
-\spadpaste{0}
-}
-\xtc{
-This is neither of the above.
-}{
-\spadpaste{-5}
-}
-\xtc{
-Furthermore, unless you are assigning an integer to a declared variable
-or using a conversion, any integer result has as type the most
-specific subdomain.
-}{
-\spadpaste{(-2) - (-3)}
-}
-\xtc{
-}{
-\spadpaste{0 :: Integer}
-}
-\xtc{
-}{
-\spadpaste{x : NonNegativeInteger := 5}
-}
-
-When necessary, Axiom converts an integer object into one belonging
-to a less specific subdomain.
-For example, in \axiom{3-2}, the arguments to \axiomOpFrom{-}{Integer} are both
-elements of \axiomType{PositiveInteger}, but this type does not provide
-a subtraction operation.
-Neither does \axiomType{NonNegativeInteger}, so \axiom{3} and \axiom{2}
-are viewed as elements of \axiomType{Integer}, where their difference
-can be calculated.
-The result is \axiom{1}, which Axiom then automatically assigns
-the type \axiomType{PositiveInteger}.
-
-\xtc{
-Certain operations are very sensitive to the subdomains to which their
-arguments belong.
-This is an element of \axiomType{PositiveInteger}.
-}{
-\spadpaste{2 ** 2}
-}
-\xtc{
-This is an element of \axiomType{Fraction Integer}.
-}{
-\spadpaste{2 ** (-2)}
-}
-\xtc{
-It makes sense then that this
-is a list of elements of \axiomType{PositiveInteger}.
-}{
-\spadpaste{[10**i for i in 2..5]}
-}
-What should the type of \axiom{[10**(i-1) for i in 2..5]} be?
-On one hand, \axiom{i-1} is always an integer greater than zero
-as \axiom{i} ranges from \axiom{2} to \axiom{5} and so \axiom{10**i}
-is also always a positive integer.
-On the other, \axiom{i-1} is a very simple function of \axiom{i}.
-Axiom does not try to analyze every such function over the
-index's range of values to determine whether it is always positive
-or nowhere negative.
-For an arbitrary Axiom function, this analysis is not possible.
-
-\xtc{
-So, to be consistent no such analysis is done and we get this.
-}{
-\spadpaste{[10**(i-1) for i in 2..5]}
-}
-\xtc{
-To get a list of elements of \axiomType{PositiveInteger} instead, you
-have two choices.
-You can use a conversion.
-}{
-\spadpaste{[10**((i-1) :: PI) for i in 2..5]}
-}
-\xtc{
-Or you can use \axiom{pretend}.
-\spadkey{pretend}
-}{
-\spadpaste{[10**((i-1) pretend PI) for i in 2..5]}
-}
-
-The operation \axiom{pretend} is used to defeat the Axiom
-type system.
-The expression \axiom{object pretend D} means ``make a new object
-(without copying) of type \axiom{D} from \axiom{object}.''
-If \axiom{object} were an integer and you told Axiom
-to pretend it was a list, you would probably see a message about a
-fatal error being caught and memory possibly being damaged.
-Lists do not have the same internal representation as integers!
-
-You use \axiom{pretend} at your peril.
-
-\xtc{
-Use \axiom{pretend} with great care!
-Axiom trusts you that the value is of the specified type.
-}{
-\spadpaste{(2/3) pretend Complex Integer}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesPkgCallTitle}{Package Calling and Target Types}
-\newcommand{\ugTypesPkgCallNumber}{2.9.}
-
-@
-\subsection{2.9. Package Calling and Target Types}
-\label{ugTypesPkgCallPage}
-\begin{itemize}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\item ugUserUsePage \ref{ugUserUsePage} on
-page~\pageref{ugUserUsePage}
-\end{itemize}
-\index{pages!ugTypesPkgCallPage!ug02.ht}
-\index{ug02.ht!pages!ugTypesPkgCallPage}
-\index{ugTypesPkgCallPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesPkgCallPage}{2.9. Package Calling and Target Types}
-\beginscroll
-
-Axiom works hard to figure out what you mean by an
-expression without your having to qualify it with type
-information.
-Nevertheless, there are times when you need to help it along by
-providing hints (or even orders!) to get Axiom to do what
-you want.
-
-We saw in \downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare} that 
-declarations using types
-and modes control the type of the results produced.
-For example, we can either produce a complex object with
-polynomial real and imaginary parts or a polynomial with complex
-integer coefficients, depending on the declaration.
-
-\spadglossSee{Package calling}{package call} is how you tell
-Axiom to use a particular function from a particular part of
-the library.
-
-\xtc{
-Use the \axiomOpFrom{/}{Fraction} from \axiomType{Fraction Integer}
-to create a fraction of two integers.
-}{
-\spadpaste{2/3}
-}
-\xtc{
-If we wanted a floating point number, we can say ``use the
-\axiomOpFrom{/}{Float} in \axiomType{Float}.''
-}{
-\spadpaste{(2/3)\$Float}
-}
-\xtc{
-Perhaps we actually wanted a fraction of complex integers.
-}{
-\spadpaste{(2/3)\$Fraction(Complex Integer)}
-}
-
-In each case, Axiom used the indicated operations, sometimes
-first needing to convert the two integers into objects of an
-appropriate type.
-In these examples, \axiomOpFrom{/}{Fraction} is written as an
-infix operator.
-
-\beginImportant
-To use package calling with an infix operator, use the
-following syntax:
-\centerline{{{\tt ( \subscriptIt{arg}{1} {\it op} \subscriptIt{arg}{1} )\${\it type} }}}
-\endImportant
-
-We used, for example, \axiom{(2/3)\$Float}.
-The expression \axiom{2 + 3 + 4} is equivalent to \axiom{(2+3) + 4.}
-Therefore in the expression
-\axiom{(2 + 3 + 4)\$Float} the second
-\axiomOp{+} comes from the \axiomType{Float} domain.
-Can you guess whether the first \axiomOp{+} comes from
-\axiomType{Integer} or \axiomType{Float}?\footnote{\axiomType{Float},
-because the package call causes Axiom to convert
-\axiom{(2 + 3)} and \axiom{4} to type \axiomType{Float}.
-Before the sum is converted, it is given a target type (see below) of
-\axiomType{Float} by Axiom and then evaluated.
-The target type causes the \axiomOp{+} from \axiomType{Float} to be used.}
-
-\beginImportant
-For an operator written before its arguments, you must use
-parentheses around the arguments (even if there is only one),
-and follow the closing parenthesis by a \axiomSyntax{\$}
-and then the type.
-\centerline{{{\tt {\it fun} ( \subscriptIt{arg}{1}, \subscriptIt{arg}{1}, \ldots, \subscriptIt{arg}{N} )\${\it type}}}}
-\endImportant
-
-For example, to call the ``minimum'' function from \axiomType{DoubleFloat}
-on two integers, you could write \axiom{min(4,89)\$DoubleFloat}.
-Another use of package calling is to tell Axiom to use a library
-function rather than a function you defined.
-We discuss this in \downlink{``\ugUserUseTitle''}{ugUserUsePage} 
-in Section \ugUserUseNumber\ignore{ugUserUse}.
-
-Sometimes rather than specifying where an operation comes from, you just
-want to say what type the result should be.
-We say that you provide
-a
-\spadglossSee{target type}{target} for the expression.
-Instead of using a \axiomSyntax{\$}, use a \axiomSyntax{@} to specify
-the requested target type.
-Otherwise, the syntax is the same.
-Note that giving a target type is not the same as explicitly doing a
-conversion.
-The first says ``try to pick operations so that the result has
-such-and-such a type.''
-The second says ``compute the result and then convert to an object of
-such-and-such a type.''
-
-\xtc{
-Sometimes it makes sense, as in this expression,
-to say ``choose the operations in this expression so that
-the final result is a \axiomType{Float}.''
-}{
-\spadpaste{(2/3)@Float}
-}
-
-Here we used \axiomSyntax{@} to say that the target type of the
-left-hand side was \axiomType{Float}.
-In this simple case, there was no real difference
-between using \axiomSyntax{\$} and \axiomSyntax{@}.
-You can see the difference if you try the following.
-\xtc{
-This says to try to choose \axiomOp{+} so that the result is
-a string.
-Axiom cannot do this.
-}{
-\spadpaste{(2 + 3)@String}
-}
-\xtc{
-This says to get the \axiomOp{+} from \axiomType{String} and apply
-it to the two integers.
-Axiom also cannot do this because there is no \axiomOp{+}
-exported by \axiomType{String}.
-}{
-\spadpaste{(2 + 3)\$String}
-}
-(By the way, the operation \axiomFunFrom{concat}{String} or juxtaposition
-is used to concatenate two strings.)
-
-When we have more than one operation in an expression, the
-difference is even more evident.
-The following two expressions show that Axiom uses the
-target type to create different objects.
-The \axiomOp{+}, \axiomOp{*} and \axiomOp{**} operations are all
-chosen so that an object of the correct final type is created.
-
-\xtc{
-This says that the operations should be chosen so
-that the result is a \axiomType{Complex} object.
-}{
-\spadpaste{((x + y * \%i)**2)@(Complex Polynomial Integer)}
-}
-\xtc{
-This says that the operations should be chosen so
-that the result is a \axiomType{Polynomial} object.
-}{
-\spadpaste{((x + y * \%i)**2)@(Polynomial Complex Integer)}
-}
-\xtc{
-What do you think might happen if we left off all
-target type and package call information in this last example?
-}{
-\spadpaste{(x + y * \%i)**2 \bound{prevC}}
-}
-\xtc{
-We can convert it to \axiomType{Complex} as an afterthought.
-But this is more work than just saying making what we want in the first
-place.
-}{
-\spadpaste{\% :: Complex ? \free{prevC}}
-}
-
-Finally, another use of package calling is to qualify fully an
-operation that is passed as an argument to a function.
-
-\xtc{
-Start with a small matrix of integers.
-}{
-\spadpaste{h := matrix [[8,6],[-4,9]] \bound{h}}
-}
-%
-\xtc{
-We want to produce a new matrix that has for entries the multiplicative
-inverses of the entries of \axiom{h}.
-One way to do this is by calling
-\axiomFunFrom{map}{MatrixCategoryFunctions2} with the
-\axiomFunFrom{inv}{Fraction} function from \axiomType{Fraction (Integer)}.
-}{
-\spadpaste{map(inv\$Fraction(Integer),h) \free{h}}
-}
-\xtc{
-We could have been a bit less verbose and used abbreviations.
-}{
-\spadpaste{map(inv\$FRAC(INT),h) \free{h}\bound{h1}}
-}
-%
-\xtc{
-As it turns out, Axiom is smart enough to know what we mean
-anyway.
-We can just say this.
-}{
-\spadpaste{map(inv,h) \free{h}}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug02.ht>>=
-\newcommand{\ugTypesResolveTitle}{Resolving Types}
-\newcommand{\ugTypesResolveNumber}{2.10.}
-
-@
-\subsection{2.10. Resolving Types}
-\label{ugTypesResolvePage}
-\index{pages!ugTypesResolvePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesResolvePage}
-\index{ugTypesResolvePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesResolvePage}{2.10. Resolving Types}
-\beginscroll
-
-In this section we briefly describe an internal process by which
-Axiom determines a type to which two objects of possibly
-different types can be converted.
-We do this to give you further insight into how Axiom takes
-your input, analyzes it, and produces a result.
-
-What happens when you enter \axiom{x + 1} to Axiom?
-Let's look at what you get from the two terms of this expression.
-
-\xtc{
-This is a symbolic object whose type indicates the name.
-}{
-\spadpaste{x}
-}
-\xtc{
-This is a positive integer.
-}{
-\spadpaste{1}
-}
-
-There are no operations in \axiomType{PositiveInteger} that add
-positive integers to objects of type \axiomType{Variable(x)} nor
-are there any in \axiomType{Variable(x)}.
-Before it can add the two parts, Axiom must come up with
-a common type to which both \axiom{x} and \axiom{1} can be
-converted.
-We say that Axiom must {\it resolve} the two types
-into a common type.
-In this example, the common type is \axiomType{Polynomial(Integer)}.
-
-\xtc{
-Once this is determined, both parts are converted into polynomials,
-and the addition operation from \axiomType{Polynomial(Integer)} is used to
-get the answer.
-}{
-\spadpaste{x + 1}
-}
-\xtc{
-Axiom can always resolve two types: if nothing resembling
-the original types can be found, then \axiomType{Any} is be used.
-This is fine and useful in some cases.
-}{
-\spadpaste{["string",3.14159]}
-}
-\xtc{
-In other cases objects of type \axiomType{Any} can't be used
-by the operations you specified.
-}{
-\spadpaste{"string" + 3.14159}
-}
-Although this example was contrived, your expressions may need
-to be qualified slightly to help Axiom resolve the
-types involved.
-You may need to declare a few variables, do some package calling,
-provide some target type information or do some explicit
-conversions.
-
-We suggest that you just enter the expression you want evaluated and
-see what Axiom does.
-We think you will be impressed with its ability to ``do what I
-mean.''
-If Axiom is still being obtuse, give it some hints.
-As you work with Axiom, you will learn where it needs a
-little help to analyze quickly and perform your computations.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugTypesExposeTitle}{Exposing Domains and Packages}
-\newcommand{\ugTypesExposeNumber}{2.11.}
-
-@
-\subsection{2.11. Exposing Domains and Packages}
-\label{ugTypesExposePage}
-\begin{itemize}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\item ugUserTrianglePage \ref{ugUserTrianglePage} on
-page~\pageref{ugUserTrianglePage}
-\item ugSysCmdframePage \ref{ugSysCmdframePage} on
-page~\pageref{ugSysCmdframePage}
-\end{itemize}
-\index{pages!ugTypesExposePage!ug02.ht}
-\index{ug02.ht!pages!ugTypesExposePage}
-\index{ugTypesExposePage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugTypesExposePage}{2.11. Exposing Domains and Packages}
-\beginscroll
-
-In this section we discuss how Axiom makes some operations
-available to you while hiding others that are meant to be used by
-developers or only in rare cases.
-If you are a new user of Axiom, it is likely that everything
-you need is available by default and you may want
-to skip over this section on first reading.
-
-Every
-domain and package in the Axiom library
-is
-either
-\spadglossSee{exposed}{expose} (meaning that you can use its 
-operations without doing
-anything special) or it is {\it hidden} (meaning you have to either
-package call
-(see \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall})
-the operations it contains or explicitly expose it to use the
-operations).
-The initial exposure status for a constructor is set in the
-file {\bf exposed.lsp} (see the {\it Installer's Note}
-for Axiom
-if you need to know the location of this file).
-Constructors are collected together in
-{\it exposure groups}.
-Categories are all in the exposure group ``categories'' and the
-bulk of the basic set of packages and domains that are exposed
-are in the exposure group ``basic.''
-Here is an abbreviated sample of the file (without the Lisp parentheses):
-\begin{verbatim}
-basic
-        AlgebraicNumber                          AN
-        AlgebraGivenByStructuralConstants        ALGSC
-        Any                                      ANY
-        AnyFunctions1                            ANY1
-        BinaryExpansion                          BINARY
-        Boolean                                  BOOLEAN
-        CardinalNumber                           CARD
-        CartesianTensor                          CARTEN
-        Character                                CHAR
-        CharacterClass                           CCLASS
-        CliffordAlgebra                          CLIF
-        Color                                    COLOR
-        Complex                                  COMPLEX
-        ContinuedFraction                        CONTFRAC
-        DecimalExpansion                         DECIMAL
-        ...
-\end{verbatim}
+\subsection{Asp20 Example Code}
+\label{Asp20ExampleCode}
+\index{pages!Asp20ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp20ExampleCode}
+\index{Asp20ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp20ExampleCode}{Asp20 Example Code}
 \begin{verbatim}
-categories
-        AbelianGroup                             ABELGRP
-        AbelianMonoid                            ABELMON
-        AbelianMonoidRing                        AMR
-        AbelianSemiGroup                         ABELSG
-        Aggregate                                AGG
-        Algebra                                  ALGEBRA
-        AlgebraicallyClosedField                 ACF
-        AlgebraicallyClosedFunctionSpace         ACFS
-        ArcHyperbolicFunctionCategory            AHYP
-        ...
+      SUBROUTINE QPHESS(N,NROWH,NCOLH,JTHCOL,HESS,X,HX)
+      DOUBLE PRECISION HX(N),X(N),HESS(NROWH,NCOLH)
+      INTEGER JTHCOL,N,NROWH,NCOLH
+      HX(1)=2.0D0*X(1)
+      HX(2)=2.0D0*X(2)
+      HX(3)=2.0D0*X(4)+2.0D0*X(3)
+      HX(4)=2.0D0*X(4)+2.0D0*X(3)
+      HX(5)=2.0D0*X(5)
+      HX(6)=(-2.0D0*X(7))+(-2.0D0*X(6))
+      HX(7)=(-2.0D0*X(7))+(-2.0D0*X(6))
+      RETURN
+      END
 \end{verbatim}
-For each constructor in a group, the full name and the abbreviation
-is given.
-There are other groups in {\bf exposed.lsp} but initially only the
-constructors in exposure groups ``basic'' ``categories'' ``naglink'' 
-and ``anna'' are exposed.
-
-As an interactive user of Axiom, you do not need to modify
-this file.
-Instead, use \spadcmd{)set expose} to expose, hide or query the exposure
-status of an individual constructor or exposure group.
-The reason for having exposure groups is to be able to expose or hide
-multiple constructors with a single command.
-For example, you might group together into exposure group ``quantum'' a
-number of domains and packages useful for quantum mechanical computations.
-These probably should not be available to every user, but you want an easy
-way to make the whole collection visible to Axiom when it is looking
-for operations to apply.
-
-If you wanted to hide all the basic constructors available by default, you
-would issue \spadcmd{)set expose drop group basic}.
-If, however, you discover that you have hidden all the basic constructors,
-you should issue \spadcmd{)set expose add group basic} to restore your
-default environment.
-
-It is more likely that you would want to expose or hide individual
-constructors.
-In \downlink{``\ugUserTriangleTitle''}{ugUserTrianglePage} 
-in Section \ugUserTriangleNumber\ignore{ugUserTriangle} we 
-use several operations from
-\axiomType{OutputForm}, a domain usually hidden.
-To avoid package calling every operation from \axiomType{OutputForm}, we
-expose the domain and let Axiom conclude that those operations should
-be used.
-Use \spadcmd{)set expose add constructor} and \spadcmd{)set expose drop
-constructor} to expose and hide a constructor, respectively.
-You should use the constructor name, not the abbreviation.
-The \spadcmd{)set expose} command guides you through these options.
-
-If you expose a previously hidden constructor, Axiom
-exhibits new behavior (that was your intention) though you might not
-expect the results that you get.
-\axiomType{OutputForm} is, in fact, one of the worst offenders in this
-regard.
-This domain is meant to be used by other domains for creating a
-structure that Axiom knows how to display.
-It has functions like \axiomOpFrom{+}{OutputForm} that form output
-representations rather than do mathematical calculations.
-Because of the order in which Axiom looks at constructors
-when it is deciding what operation to apply, \axiomType{OutputForm}
-might be used instead of what you expect.
-\xtc{
-This is a polynomial.
-}{
-\spadpaste{x + x}
-}
-\xtc{
-Expose \axiomType{OutputForm}.
-}{
-\spadpaste{)set expose add constructor OutputForm \bound{setexposeadd}}
-}
-\xtc{
-This is what we get when \axiomType{OutputForm} is automatically
-available.
-}{
-\spadpaste{x + x \free{setexposeadd}}
-}
-\xtc{
-Hide \axiomType{OutputForm} so we don't run into problems
-with any later examples!
-}{
-\spadpaste{)set expose drop constructor OutputForm \bound{setexposedrop}}
-}
-
-Finally, exposure is done on a frame-by-frame basis.
-A \spadgloss{frame} (see 
-\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
-in Section \ugSysCmdframeNumber\ignore{ugSysCmdframe})
-is one of possibly several
-logical Axiom workspaces within a physical one, each having
-its own environment (for example, variables and function definitions).
-If you have several Axiom workspace windows on your screen, they
-are all different frames, automatically created for you by \HyperName{}.
-Frames can be manually created, made active and destroyed by the
-\spadcmd{)frame} system command.
-They do not share exposure information, so you need to use
-\spadcmd{)set expose} in each one to add or drop constructors from view.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug02.ht>>=
-\newcommand{\ugAvailSnoopTitle}{Commands for Snooping}
-\newcommand{\ugAvailSnoopNumber}{2.12.}
-
-@
-\subsection{2.12. Commands for Snooping}
-\label{ugAvailSnoopPage}
-\begin{itemize}
-\item ugBrowsePage \ref{ugBrowsePage} on
-page~\pageref{ugBrowsePage}
-\item ComplexXmpPage \ref{ComplexXmpPage} on
-page~\pageref{ComplexXmpPage}
-\item ugUserDeclarePage \ref{ugUserDeclarePage} on
-page~\pageref{ugUserDeclarePage}
-\end{itemize}
-\index{pages!ugAvailSnoopPage!ug02.ht}
-\index{ug02.ht!pages!ugAvailSnoopPage}
-\index{ugAvailSnoopPage!ug02.ht!pages}
-<<ug02.ht>>=
-\begin{page}{ugAvailSnoopPage}{2.12. Commands for Snooping}
-\beginscroll
-
-To conclude this chapter, we introduce you to some system commands
-that you can use for getting more information about domains,
-packages, categories, and operations.
-The most powerful Axiom facility for getting information about
-constructors and operations is the \Browse{} component of \HyperName{}.
-This is discussed in \downlink{``\ugBrowseTitle''}{ugBrowsePage} 
-in Chapter \ugBrowseNumber\ignore{ugBrowse}.
-
-Use the \spadsys{)what} system command to see lists of system objects
-whose name contain a particular substring (uppercase or lowercase is
-not significant).
-
-\xtc{
-Issue this to see a list of all operations with
-``{\tt complex}'' in their names.
-}{
-\spadpaste{)what operation complex}
-}
-\xtc{
-If you want to see all domains with ``{\tt matrix}'' in their names, issue
-this.
-}{
-\spadpaste{)what domain matrix}
-}
-\xtc{
-Similarly, if you wish to see all packages whose names contain
-``{\tt gauss}'', enter this.
-}{
-\spadpaste{)what package gauss}
-}
-\xtc{
-This command shows all
-the operations that \axiomType{Any} provides.
-Wherever \axiomSyntax{\$} appears, it means ``\axiomType{Any}''.
-}{
-\spadpaste{)show Any}
-}
-\xtc{
-This displays all operations with the name \axiomFun{complex}.
-}{
-\spadpaste{)display operation complex}
-}
-Let's analyze this output.
-\xtc{
-First we find out what some of the abbreviations mean.
-}{
-\spadpaste{)abbreviation query COMPCAT}
-}
-\xtc{
-}{
-\spadpaste{)abbreviation query COMRING}
-}
-
-So if \axiom{D1} is a commutative ring (such as the integers or
-floats) and \axiom{D} belongs to \axiomType{ComplexCategory
-D1}, then there is an operation called \axiomFun{complex} that
-takes two elements of \axiom{D1} and creates an element of
-\axiom{D}.
-The primary example of a constructor implementing domains
-belonging to \axiomType{ComplexCategory} is \axiomType{Complex}.
-See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} 
-for more information on that and see
-\downlink{``\ugUserDeclareTitle''}{ugUserDeclarePage} in 
-Section \ugUserDeclareNumber\ignore{ugUserDeclare} 
-for more information on function types.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug03.ht}
-<<ug03.ht>>=
-\newcommand{\ugHyperTitle}{Using \HyperName{}}
-\newcommand{\ugHyperNumber}{3.}
-
-@
-\subsection{3. Using \HyperName{}}
-\label{ugHyperPage}
-\begin{itemize}
-\item YouTriedIt \ref{YouTriedIt} on
-page~\pageref{YouTriedIt}
-\item ugHyperHeadingsPage \ref{ugHyperHeadingsPage} on
-page~\pageref{ugHyperHeadingsPage}
-\item ugHyperKeysPage \ref{ugHyperKeysPage} on
-page~\pageref{ugHyperKeysPage}
-\item ugHyperScrollPage \ref{ugHyperScrollPage} on
-page~\pageref{ugHyperScrollPage}
-\item ugHyperInputPage \ref{ugHyperInputPage} on
-page~\pageref{ugHyperInputPage}
-\item ugHyperButtonsPage \ref{ugHyperButtonsPage} on
-page~\pageref{ugHyperButtonsPage}
-\item ugHyperSearchPage \ref{ugHyperSearchPage} on
-page~\pageref{ugHyperSearchPage}
-\item ugHyperExamplePage \ref{ugHyperExamplePage} on
-page~\pageref{ugHyperExamplePage}
-\item ugHyperResourcesPage \ref{ugHyperResourcesPage} on
-page~\pageref{ugHyperResourcesPage}
-\end{itemize}
-\index{pages!ugHyperPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperPage}
-\index{ugHyperPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperPage}{3. Using \HyperName{}}
-\beginscroll
-
-
-\HyperName{} is the gateway to Axiom.
-It's both an on-line tutorial and an on-line reference manual.
-It also enables you to use Axiom simply by using the mouse and
-filling in templates.
-\HyperName{} is available to you if you are running Axiom under the
-X Window System.
-
-Pages usually have active areas, marked in
-\texht{{\bf this font} (bold face).}{\downlink{this font.}{YouTriedIt}}
-As you move the mouse pointer to an active area, the pointer changes from
-a filled dot to an open circle.
-The active areas are usually linked to other pages.
-When you click on an active area, you move to the linked page.
-\texht{}{Try clicking \downlink{here}{YouTriedIt} now.}
-
-We suggest that you learn more about other features of
-\HyperName{} by clicking on an active area in the menu below.
-
-\beginmenu
-    \menudownlink{{3.1. Headings}}{ugHyperHeadingsPage}
-    \menudownlink{{3.2. Key Definitions}}{ugHyperKeysPage}
-    \menudownlink{{3.3. Scroll Bars}}{ugHyperScrollPage}
-    \menudownlink{{3.4. Input Areas}}{ugHyperInputPage}
-    \menudownlink{{3.5. Radio Buttons and Toggles}}{ugHyperButtonsPage}
-    \menudownlink{{3.6. Search Strings}}{ugHyperSearchPage}
-    \menudownlink{{3.7. Example Pages}}{ugHyperExamplePage}
-    \menudownlink{{3.8. X Window Resources for \HyperName{}}}{ugHyperResourcesPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperHeadingsTitle}{Headings}
-\newcommand{\ugHyperHeadingsNumber}{3.1.}
-
-@
-\subsection{3.1. Headings}
-\label{ugHyperHeadingsPage}
-\index{pages!ugHyperHeadingsPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperHeadingsPage}
-\index{ugHyperHeadingsPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperHeadingsPage}{3.1. Headings}
-\beginscroll
-%
-Most pages have a standard set of buttons at the top of the page.
-This is what they mean:
-
-\indent{0}
-\beginitems
-\item[\StdHelpButton{}] Click on this to get help.
-The button only appears if there is specific help for the page you are
-viewing.
-You can get {\it general} help for \HyperName{} by clicking the help
-button on the home page.
-
-\item[\UpButton{}] Click here to go back one page.
-By clicking on this button repeatedly, you can go back several pages and
-then take off in a new direction.
-
-\item[\ReturnButton{}] Go back to the home page, that is,
-the page on which you started.
-Use \HyperName{} to explore, to make forays into new topics.
-Don't worry about how to get back.
-\HyperName{} remembers where you came from.
-Just click on this button to return.
-
-\item[\StdExitButton{}] From the root window (the one that is displayed when
-you start the system) this button leaves the \HyperName{} program, and it
-must be restarted if you want to use it again.
-From any other \HyperName{} window, it just makes that one window go away.
-You {\it must} use this button to get rid of a window.
-If you use the window manager ``Close'' button, then all of \HyperName{}
-goes away.
-\enditems
-\indent{0}
-%
-The buttons are not displayed if they are not applicable to the page
-you are viewing.
-For example, there is no \ReturnButton{} button on the top-level menu.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperKeysTitle}{Key Definitions}
-\newcommand{\ugHyperKeysNumber}{3.2.}
-
-@
-\subsection{3.2. Key Definitions}
-\label{ugHyperKeysPage}
-\begin{itemize}
-\item ugHyperScrollPage \ref{ugHyperScrollPage} on
-page~\pageref{ugHyperScrollPage}
-\item ugHyperInputPage \ref{ugHyperInputPage} on
-page~\pageref{ugHyperInputPage}
-\end{itemize}
-\index{pages!ugHyperKeysPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperKeysPage}
-\index{ugHyperKeysPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperKeysPage}{3.2. Key Definitions}
-\beginscroll
-
-The following keyboard definitions are in effect throughout
-\HyperName{}.
-See \downlink{``\ugHyperScrollTitle''}{ugHyperScrollPage} 
-in Section \ugHyperScrollNumber\ignore{ugHyperScroll} and
-\downlink{``\ugHyperInputTitle''}{ugHyperInputPage} 
-in Section \ugHyperInputNumber\ignore{ugHyperInput}
-for some contextual key definitions.
-%
-\indent{0}
-\beginitems
-\item[F1] Display the main help page.
-\item[F3] Same as \StdExitButton{}, makes the window go away if you are 
-not at the top-level window or quits the \HyperName{} facility if you are 
-at the top-level.
-\item[F5] Rereads the \HyperName{} database, if necessary (for system 
-developers).
-\item[F9] Displays this information about key definitions.
-\item[F12] Same as {\bf F3}.
-\item[Up Arrow] Scroll up one line.
-\item[Down Arrow] Scroll down one line.
-\item[Page Up] Scroll up one page.
-\item[Page Down] Scroll down one page.
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperScrollTitle}{Scroll Bars}
-\newcommand{\ugHyperScrollNumber}{3.3.}
-
-@
-\subsection{3.3. Scroll Bars}
-\label{ugHyperScrollPage}
-\begin{itemize}
-\item ugHyperInputPage \ref{ugHyperInputPage} on
-page~\pageref{ugHyperInputPage}
-\end{itemize}
-\index{pages!ugHyperScrollPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperScrollPage}
-\index{ugHyperScrollPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperScrollPage}{3.3. Scroll Bars}
-\beginscroll
-%
-
-Whenever there is too much text to fit on a page, a {\it scroll
-bar} automatically appears along the right side.
-
-With a scroll bar, your page becomes an aperture, that is, a
-window into a larger amount of text than can be displayed at one
-time.
-The scroll bar lets you move up and down in the text to see
-different parts.
-It also shows where the aperture is relative to the whole text.
-The aperture is indicated by a strip on the scroll bar.
-
-Move the cursor with the mouse to the ``down-arrow'' at the bottom
-of the scroll bar and click.
-See that the aperture moves down one line.
-Do it several times.
-Each time you click, the aperture moves down one line.
-Move the mouse to the ``up-arrow'' at the top of the scroll bar and
-click.
-The aperture moves up one line each time you click.
-
-Next move the mouse to any position along the middle of the scroll bar and
-click.
-\HyperName{} attempts to move the top of the aperture to this point in
-the text.
-
-You cannot make the aperture go off the bottom edge.
-When the aperture is about half the size of text, the lowest you can move
-the aperture is halfway down.
-
-To move up or down one screen at a time, use the
-\texht{\fbox{\bf PageUp}}{{\bf PageUp}} and \texht{\fbox{\bf PageDown}}{{\bf
-PageDown}} keys on your keyboard.
-They move the visible part of the region up and down one page each time you
-press them.
-
-If the \HyperName{} page does not contain an input area
-(see \downlink{``\ugHyperInputTitle''}{ugHyperInputPage} 
-in Section \ugHyperInputNumber\ignore{ugHyperInput}), you can also use the
-\texht{\fbox{\bf Home}}{{\bf Home}} and
-\texht{\fbox{$\uparrow$}}{up} and
-\texht{\fbox{$\downarrow$}}{down} arrow keys to navigate.
-When you press the \texht{\fbox{\bf Home}}{{\bf Home}} key,
-the screen is positioned at the very top of the page.
-Use the \texht{\fbox{$\uparrow$}}{up} and
-\texht{\fbox{$\downarrow$}}{down} arrow keys to move the screen up
-and down one line at a time, respectively.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperInputTitle}{Input Areas}
-\newcommand{\ugHyperInputNumber}{3.4.}
-
-@
-\subsection{3.4. Input Areas}
-\label{ugHyperInputPage}
-\index{pages!ugHyperInputPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperInputPage}
-\index{ugHyperInputPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperInputPage}{3.4. Input Areas}
-\beginscroll
-%
-Input areas are boxes where you can put data.
-Here is one:
-\centerline{\inputstring{one}{40}{some text}}
-\newline As you can see, the input area has some initial text {\it some text}
-followed by an underscore cursor (the character {\it _}).
-
-To enter characters, first
-move your mouse cursor to somewhere within the \HyperName{} page.
-Characters that you type are inserted in front of the underscore.
-This means that when you type characters at your keyboard, they
-go into this first input area.
-
-The input area grows to accommodate as many characters as you type.
-Use the \texht{\fbox{\bf Backspace}}{{\bf Backspace}}
-key to erase characters to the left.
-To modify what you type, use the right-arrow \texht{\fbox{$\rightarrow$}}{}
-and left-arrow keys \texht{\fbox{$\leftarrow$}}{} and the
-keys \texht{\fbox{\bf Insert}}{{\bf Insert}},
-\texht{\fbox{\bf Delete}}{{\bf Delete}},
-\texht{\fbox{\bf Home}}{{\bf Home}} and
-\texht{\fbox{\bf End}}{{\bf End}}.
-These keys are found immediately on the right of the standard IBM keyboard.
-
-If you press the
-\texht{\fbox{\bf Home}}{{\bf Home}}
-key, the cursor moves to the beginning of the line and if you press the
-\texht{\fbox{\bf End}}{{\bf End}}
-key, the cursor moves to the end of the line.
-Pressing
-\texht{\fbox{\bf Ctrl}--\fbox{\bf End}}{{\bf Ctrl-End}}
-deletes all the text from the cursor to the end of the line.
-
-A page may have more than one input area.
-Only one input area has an underscore cursor.
-When you first see apage, the top-most input area contains the
-cursor.
-To type information into another input area,
-use the \texht{\fbox{\bf Enter}}{{\bf Enter}} or
-\texht{\fbox{\bf Tab}}{{\bf Tab}} key to move
-from one input area to another.
-To move in the reverse order, use
-\texht{\fbox{\bf Shift}--\fbox{\bf Tab}}{{\bf Shift-Tab}}.
-
-You can also move from one input area to another using your mouse.
-Notice that each input area is active. Click on one of the areas.
-As you can see, the underscore cursor moves to that window.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperButtonsTitle}{Radio Buttons and Toggles}
-\newcommand{\ugHyperButtonsNumber}{3.5.}
-
-@
-\subsection{3.5. Radio Buttons and Toggles}
-\label{ugHyperButtonsPage}
-\index{pages!ugHyperButtonsPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperButtonsPage}
-\index{ugHyperButtonsPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperButtonsPage}{3.5. Radio Buttons and Toggles}
-\beginscroll
-%
-Some pages have {\it radio buttons} and {\it toggles}.
-Radio buttons are a group of buttons like those on car radios: you can
-select only one at a time.
-\radioboxes{sample}{\htbmfile{pick}}{\htbmfile{unpick}}
-Here are three radio buttons:
-\centerline{
-{\em\radiobox[1]{rone}{sample}\space{}\ First one}\space{3}
-{\em\radiobox[0]{rtwo}{sample}\space{}\ Second one}\space{3}
-{\em\radiobox[0]{rthree}{sample}\space{}\ Third one}
-}
-\newline
-Once you have selected a button, it appears to be inverted and
-contains a checkmark.
-To change the selection, move the cursor with the mouse to a different radio
-button and click.
-\texht{}{Try it now.}
-
-A toggle is an independent button that displays some on/off
-state.
-When ``on'', the button appears to be inverted and
-contains a checkmark.
-When ``off'', the button is raised.
-%
-Unlike radio buttons, you can set a group of them any way you like.
-Here are three:
-\centerline{
-{\em\inputbox[1]{one}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ First one}
-\space{3}
-{\em\inputbox[0]{two}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ Second one}
-\space{3}
-{\em\inputbox[1]{three}{\htbmfile{pick}}{\htbmfile{unpick}}\space{}\ Third one}
-}
-\newline
-To change toggle the selection, move the cursor with the mouse
-to the button and click.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperSearchTitle}{Search Strings}
-\newcommand{\ugHyperSearchNumber}{3.6.}
-
-@
-\subsection{3.6. Search Strings}
-\label{ugHyperSearchPage}
-\begin{itemize}
-\item ugLogicalSearchesPage \ref{ugLogicalSearchesPage} on
-page~\pageref{ugLogicalSearchesPage}
-\end{itemize}
-\index{pages!ugHyperSearchPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperSearchPage}
-\index{ugHyperSearchPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperSearchPage}{3.6. Search Strings}
-\beginscroll
-%
-A {\it search string} is used for searching some database.
-To learn about search strings, we suggest that
-you bring up the \HyperName{} glossary.
-To do this from the top-level page of \HyperName{}:
-\indent{4}
-\beginitems
-\item[1. ] Click on \windowlink{Reference}{TopReferencePage},
-bringing up the Axiom Reference page.
-\item[2. ] Click on \windowlink{Glossary}{GlossaryPage}, bringing up the glossary.
-\texht{}{(You can also just click on the word ``Glossary'' in the
-last sentence.)}
-\enditems
-\indent{0}
-Once you get the window containing the glossary, move it so that
-it and this window are both visible.
-
-The glossary has an input area at its bottom.
-We review the various kinds of search strings
-you can enter to search the glossary.
-
-The simplest search string is a word, for example, {\tt operation}.
-A word only matches an entry having exactly that spelling.
-Enter the word {\tt operation} into the input area above then click on
-{\bf Search}.
-As you can see, {\tt operation} matches only one entry, namely with {\tt
-operation} itself.
-
-Normally matching is insensitive to whether the alphabetic characters of your
-search string are in uppercase or lowercase.
-Thus {\tt operation} and {\tt OperAtion} both have the same effect.
-%If you prefer that matching be case-sensitive, issue the command
-%\spadsys{set HHyperName mixedCase} command to the interpreter.
-
-You will very often want to use the wildcard \spadSyntax{*} in your search
-string so as to match multiple entries in the list.
-The search key \spadSyntax{*}  matches every entry in the list.
-You can also use \spadSyntax{*} anywhere within a search string to match an
-arbitrary substring.
-Try {\tt cat*} for example:
-enter {\tt cat*} into the input area and click on {\bf Search}.
-This matches several entries.
-
-You use any number of wildcards in a search string as long as they are
-not adjacent.
-Try search strings such as {\tt *dom*}.
-As you see, this search string  matches {\tt domain}, {\tt domain
-constructor}, {\tt subdomain}, and so on.
-
-\beginmenu
-    \menudownlink{{3.6.1. Logical Searches}}{ugLogicalSearchesPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugLogicalSearchesTitle}{Logical Searches}
-\newcommand{\ugLogicalSearchesNumber}{3.6.1.}
-
-@
-\subsection{3.6.1. Logical Searches}
-\label{ugLogicalSearchesPage}
-\index{pages!ugLogicalSearchesPage!ug03.ht}
-\index{ug03.ht!pages!ugLogicalSearchesPage}
-\index{ugLogicalSearchesPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugLogicalSearchesPage}{3.6.1. Logical Searches}
-\beginscroll
-
-For more complicated searches, you can use
-\spadSyntax{and}, \spadSyntax{or}, and \spadSyntax{not}
-with basic search strings;
-write logical expressions using these three operators just as
-in the Axiom language.
-For example, {\tt domain or package}  matches the two
-entries {\tt domain} and {\tt package}.
-Similarly, {\tt dom* and *con*} matches {\tt domain constructor}
-and others.
-Also {\tt not *a*} matches every entry that does not contain
-the letter {\tt a} somewhere.
-
-Use parentheses for grouping.
-For example, {\tt dom* and (not *con*)}
-matches {\tt domain} but not {\tt domain constructor}.
-
-There is no limit to how complex your logical expression can be.
-For example,
-\centerline{{{\tt a* or b* or c* or d* or e* and (not *a*)}}}
-is a valid expression.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperExampleTitle}{Example Pages}
-\newcommand{\ugHyperExampleNumber}{3.7.}
-
-@
-\subsection{3.7. Example Pages}
-\label{ugHyperExamplePage}
-\index{pages!ugHyperExamplePage!ug03.ht}
-\index{ug03.ht!pages!ugHyperExamplePage}
-\index{ugHyperExamplePage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperExamplePage}{3.7. Example Pages}
-\beginscroll
-%
-Many pages have Axiom example commands.
-%
-Here are two:
-\spadpaste{a:= x**2 + 1 \bound{a}} 
-\spadpaste{(a - 2)**2 \free{a}} 
-%
-Each command has an active ``button'' along the left margin.
-When you click on this button, the output for the command is
-``pasted-in.''
-Click again on the button and you see that the pasted-in output
-disappears.
-
-Maybe you would like to run an example?
-To do so, just click on any part of its text!
-When you do, the example line is copied into a new interactive
-Axiom buffer for this \HyperName{} page.
-
-Sometimes one example line cannot be run before you run an earlier one.
-Don't worry---\HyperName{} automatically runs all the necessary
-lines in the right order!
-For instance, the second example line above refers to \spad{a} which is
-assigned in the first example line.
-What happens if you first click on the second example line?
-Axiom first issues the first line (to assign \spad{a}), then the
-second (to do the computation using \spad{a}).
-
-The new interactive Axiom buffer disappears when you leave
-\HyperName{}.
-If you want to get rid of it beforehand,
-use the {\bf Cancel} button of the X Window manager
-or issue the Axiom system command \spadsys{)close.}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug03.ht>>=
-\newcommand{\ugHyperResourcesTitle}{X Window Resources for \HyperName{}}
-\newcommand{\ugHyperResourcesNumber}{3.8.}
-
-@
-\subsection{3.8. X Window Resources for \HyperName{}}
-\label{ugHyperResourcesPage}
-\index{pages!ugHyperResourcesPage!ug03.ht}
-\index{ug03.ht!pages!ugHyperResourcesPage}
-\index{ugHyperResourcesPage!ug03.ht!pages}
-<<ug03.ht>>=
-\begin{page}{ugHyperResourcesPage}{3.8. X Window Resources for \HyperName{}}
-\beginscroll
-%
-You can control the appearance of \HyperName{} while running under Version 11
-of the X Window System by placing the following resources
-in the file {\bf .Xdefaults} in your home directory.
-In what follows, {\it font} is any valid X11 font name
-(for example, {\tt Rom14}) and {\it color} is any valid X11 color
-specification (for example, {\tt NavyBlue}).
-For more information about fonts and colors, refer to the
-X Window documentation for your system.
-\indent{0}
-\beginitems
-\item[{\tt Axiom.hyperdoc.RmFont:} {\it font}] \ \newline
-This is the standard text font.  \xdefault{Rom14}
-\item[{\tt Axiom.hyperdoc.RmColor:} {\it color}] \ \newline
-This is the standard text color.  \xdefault{black}
-\item[{\tt Axiom.hyperdoc.ActiveFont:} {\it font}] \ \newline
-This is the font used for \HyperName{} link buttons.  \xdefault{Bld14}
-\item[{\tt Axiom.hyperdoc.ActiveColor:} {\it color}] \ \newline
-This is the color used for \HyperName{} link buttons.  \xdefault{black}
-\item[{\tt Axiom.hyperdoc.AxiomFont:} {\it font}] \ \newline
-This is the font used for active Axiom commands.\footnote{
-This was called {\tt Axiom.hyperdoc.SpadFont} in early versions
-of Axiom.}
-\xdefault{Bld14}
-\item[{\tt Axiom.hyperdoc.AxiomColor:} {\it color}] \ \newline
-This is the color used for active Axiom commands.\footnote{
-This was called {\tt Axiom.hyperdoc.SpadColor} in early versions
-of Axiom.}
-\xdefault{black}
-\item[{\tt Axiom.hyperdoc.BoldFont:} {\it font}] \ \newline
-This is the font used for bold face.  \xdefault{Bld14}
-\item[{\tt Axiom.hyperdoc.BoldColor:} {\it color}] \ \newline
-This is the color used for bold face.  \xdefault{black}
-\item[{\tt Axiom.hyperdoc.TtFont:} {\it font}] \ \newline
-This is the font used for Axiom output in \HyperName{}.
-This font must be fixed-width.  \xdefault{Rom14}
-\item[{\tt Axiom.hyperdoc.TtColor:} {\it color}] \ \newline
-This is the color used for Axiom output in \HyperName{}.
-\xdefault{black}
-\item[{\tt Axiom.hyperdoc.EmphasizeFont:} {\it font}] \ \newline
-This is the font used for italics.  \xdefault{Itl14}
-\item[{\tt Axiom.hyperdoc.EmphasizeColor:} {\it color}] \ \newline
-This is the color used for italics.  \xdefault{black}
-\item[{\tt Axiom.hyperdoc.InputBackground:} {\it color}] \ \newline
-This is the color used as the background for input areas.
-\xdefault{black}
-\item[{\tt Axiom.hyperdoc.InputForeground:} {\it color}] \ \newline
-This is the color used as the foreground for input areas.
-\xdefault{white}
-\item[{\tt Axiom.hyperdoc.BorderColor:} {\it color}] \ \newline
-This is the color used for drawing border lines.
-\xdefault{black}
-\item[{\tt Axiom.hyperdoc.Background:} {\it color}] \ \newline
-This is the color used for the background of all windows.
-\xdefault{white}
-\enditems
-\indent{0}
-\endscroll
-\autobuttons
-\end{page}
-@
-\section{ug04.ht}
-<<ug04.ht>>=
-\newcommand{\ugInOutTitle}{Input Files and Output Styles}
-\newcommand{\ugInOutNumber}{4.}
-
-@
-\subsection{4. Input Files and Output Styles}
-\label{ugInOutPage}
-\begin{itemize}
-\item ugInOutInPage \ref{ugInOutInPage} on
-page~\pageref{ugInOutInPage}
-\item ugInOutSpadprofPage \ref{ugInOutSpadprofPage} on
-page~\pageref{ugInOutSpadprofPage}
-\item ugInOutOutPage \ref{ugInOutOutPage} on
-page~\pageref{ugInOutOutPage}
-\item ugInOutAlgebraPage \ref{ugInOutAlgebraPage} on
-page~\pageref{ugInOutAlgebraPage}
-\item ugInOutTeXPage \ref{ugInOutTeXPage} on
-page~\pageref{ugInOutTeXPage}
-\item ugInOutScriptPage \ref{ugInOutScriptPage} on
-page~\pageref{ugInOutScriptPage}
-\item ugInOutFortranPage \ref{ugInOutFortranPage} on
-page~\pageref{ugInOutFortranPage}
-\end{itemize}
-\index{pages!ugInOutPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutPage}
-\index{ugInOutPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutPage}{4. Input Files and Output Styles}
-\beginscroll
-
-In this chapter we discuss how to collect Axiom statements
-and commands into files and then read the contents into the
-workspace.
-We also show how to display the results of your computations in
-several different styles including \texht{\TeX}{TeX}, FORTRAN and
-monospace two-dimensional format.\footnote{\texht{\TeX}{TeX} is a
-trademark of the American Mathematical Society.}
-
-The printed version of this book uses the Axiom
-\texht{\TeX}{TeX} output formatter.
-When we demonstrate a particular output style, we will need to
-turn \texht{\TeX}{TeX} formatting off and the output style on so
-that the correct output is shown in the text.
-
-\beginmenu
-    \menudownlink{{4.1. Input Files}}{ugInOutInPage}
-    \menudownlink{{4.2. The axiom.input File}}{ugInOutSpadprofPage}
-    \menudownlink{{4.3. Common Features of Using Output Formats}}
-{ugInOutOutPage}
-    \menudownlink{{4.4. Monospace Two-Dimensional Mathematical Format}}
-{ugInOutAlgebraPage}
-    \menudownlink{{4.5. TeX Format}}{ugInOutTeXPage}
-    \menudownlink{{4.6. IBM Script Formula Format}}{ugInOutScriptPage}
-    \menudownlink{{4.7. FORTRAN Format}}{ugInOutFortranPage}
-\endmenu
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug04.ht>>=
-\newcommand{\ugInOutInTitle}{Input Files}
-\newcommand{\ugInOutInNumber}{4.1.}
-
-@
-\subsection{4.1. Input Files}
-\label{ugInOutInPage}
-\begin{itemize}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\end{itemize}
-\index{pages!ugInOutInPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutInPage}
-\index{ugInOutInPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutInPage}{4.1. Input Files}
-\beginscroll
-%
-In this section we explain what an {\it input file} is and
-why you would want to know about it.
-We discuss where Axiom looks for input files and how you can
-direct it to look elsewhere.
-We also show how to read the contents of an input file into the
-\spadgloss{workspace} and how to use the \spadgloss{history}
-facility to generate an input file from the statements you have
-entered directly into the workspace.
-
-An {\it input} file contains Axiom expressions and system
-commands.
-Anything that you can enter directly to Axiom can be put
-into an input file.
-This is how you save input functions and expressions that you wish
-to read into Axiom more than one time.
-
-To read an input file into Axiom, use the \spadcmd{)read}
-system command.
-For example, you can read a file in a particular directory by issuing
-\begin{verbatim}
-)read /spad/src/input/matrix.input
-\end{verbatim}
-The ``{\bf .input}'' is optional; this also works:
-\begin{verbatim}
-)read /spad/src/input/matrix
-\end{verbatim}
-What happens if you just enter
-\spadcmd{)read matrix.input} or even \spadcmd{)read matrix}?
-Axiom looks in your current working directory for input files
-that are not qualified by a directory name.
-Typically, this directory is the directory from which you invoked
-Axiom.
-To change the current working directory, use the \spadcmd{)cd} system command.
-The command \spadsys{)cd} by itself shows the current
-working
-directory.
-To change it to
-the \spadsys{src/input} subdirectory for user ``babar'',
-issue
-\begin{verbatim}
-)cd /u/babar/src/input
-\end{verbatim}
-Axiom looks first in this directory for an input file.
-If it is not found, it looks in the system's directories, assuming
-you meant some input file that was provided with Axiom.
-
-\beginImportant
-If you have the Axiom history facility turned on (which it is
-by default), you can save all the lines you have entered into the
-workspace by entering
+\subsection{Asp24 Example Code}
+\label{Asp24ExampleCode}
+\index{pages!Asp24ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp24ExampleCode}
+\index{Asp24ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp24ExampleCode}{Asp24 Example Code}
 \begin{verbatim}
-)history )write
+      SUBROUTINE FUNCT1(N,XC,FC)
+      DOUBLE PRECISION FC,XC(N)
+      INTEGER N
+      FC=10.0D0*XC(4)**4+(-40.0D0*XC(1)*XC(4)**3)+(60.0D0*XC(1)**2+5
+     &.0D0)*XC(4)**2+((-10.0D0*XC(3))+(-40.0D0*XC(1)**3))*XC(4)+16.0D0*X
+     &C(3)**4+(-32.0D0*XC(2)*XC(3)**3)+(24.0D0*XC(2)**2+5.0D0)*XC(3)**2+
+     &(-8.0D0*XC(2)**3*XC(3))+XC(2)**4+100.0D0*XC(2)**2+20.0D0*XC(1)*XC(
+     &2)+10.0D0*XC(1)**4+XC(1)**2
+      RETURN
+      END
 \end{verbatim}
-
-Axiom tells you what input file to edit to see your
-statements.
-The file is in your home directory or in the directory you
-specified with \spadsys{)cd}.
-\endImportant
-
-In \downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
-in Section \ugLangBlocksNumber\ignore{ugLangBlocks}
-we discuss using indentation in input files to group statements
-into {\it blocks.}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug04.ht>>=
-\newcommand{\ugInOutSpadprofTitle}{The axiom.input File}
-\newcommand{\ugInOutSpadprofNumber}{4.2.}
-
-@
-\subsection{4.2. The axiom.input File}
-\label{ugInOutSpadprofPage}
-\index{pages!ugInOutSpadprofPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutSpadprofPage}
-\index{ugInOutSpadprofPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutSpadprofPage}{4.2. The axiom.input File}
-\beginscroll
-
-When Axiom starts up, it tries to read the input file
-{\bf axiom.input} from your home
-directory.
-It there is no {\bf axiom.input} in your home directory, it reads the copy
-located in its own {\bf src/input} directory.
-The file usually contains
-system commands to personalize your Axiom environment.
-In the remainder of this section we mention a few things
-that users frequently place in their
-{\bf axiom.input} files.
-
-In order to have FORTRAN output always produced from your
-computations, place the system command
-\spadcmd{)set output fortran on}
-in {\bf axiom.input}.
-If you do not want to be prompted for confirmation when you issue
-the \spadcmd{)quit} system command, place
-\spadcmd{)set quit unprotected}
-in {\bf axiom.input}.
-If you then decide that you do want to be prompted, issue
-\spadcmd{)set quit protected}.
-This is the default setting
-so that new users do not leave Axiom
-inadvertently.\footnote{The
-system command \spadsys{)pquit} always prompts you for
-confirmation.}
-
-To see the other system variables you can set, issue \spadsys{)set}
-or use the \HyperName{} {\bf Settings} facility to view and change
-Axiom system variables.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug04.ht>>=
-\newcommand{\ugInOutOutTitle}{Common Features of Using Output Formats}
-\newcommand{\ugInOutOutNumber}{4.3.}
-
-@
-\subsection{4.3. Common Features of Using Output Formats}
-\label{ugInOutOutPage}
-\index{pages!ugInOutOutPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutOutPage}
-\index{ugInOutOutPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutOutPage}{4.3. Common Features of Using Output Formats}
-\beginscroll
-
-In this section we discuss how to start and stop the display
-of the different output formats and how to send the output to the
-screen or to a file.
-To fix ideas, we use FORTRAN output format for most of the
-examples.
-
-You can use the \spadcmd{)set output}
-system
-command to
-toggle or redirect the different kinds of output.
-The name of the kind of output follows ``output'' in the command.
-The names are
-
-\indent{0}
-\beginitems
-\item[fortran]  for FORTRAN output.
-\item[algebra]  for monospace two-dimensional mathematical output.
-\item[tex]      for \texht{\TeX}{TeX} output.
-\item[script]   for IBM Script Formula Format output.
-\enditems
-\indent{0}
-
-For example, issue \spadsys{)set output fortran on} to turn on
-FORTRAN format and
-issue \spadsys{)set output fortran off} to turn it off.
-By default, {\tt algebra} is {\tt on} and all others are {\tt off}.
-When output is started, it is sent to the screen.
-To send the output to a file, give the file name without
-directory or extension.
-Axiom appends a file extension depending on the kind of
-output being produced.
-\xtc{
-Issue this to redirect FORTRAN output to, for example, the file
-{\bf linalg.sfort}.
-}{
-\spadpaste{)set output fortran linalg}
-}
-\noOutputXtc{
-You must {\it also} turn on the creation of FORTRAN output.
-The above just says where it goes if it is created.
-}{
-\spadpaste{)set output fortran on}
-}
-In what directory is this output placed?
-It goes into the directory from which you started Axiom,
-or if you have used the \spadsys{)cd} system command, the one
-that you specified with \spadsys{)cd}.
-You should use \spadcmd{)cd} before you send the output to the file.
-
-\noOutputXtc{
-You can always direct output back to the screen by issuing this.
-}{
-\spadpaste{)set output fortran console}
-}
-\noOutputXtc{
-Let's make sure FORTRAN formatting is off so that nothing we
-do from now on produces FORTRAN output.
-}{
-\spadpaste{)set output fortran off}
-}
-\noOutputXtc{
-We also delete the demonstrated output file we created.
-}{
-\spadpaste{)system rm linalg.sfort}
-}
-
-You can abbreviate the words ``\spad{on},'' ``\spad{off}'' and
-``\spad{console}'' to the minimal number
-of characters needed to distinguish them.
-Because of this, you cannot send output to files called
-{\bf on.sfort, off.sfort, of.sfort,
-console.sfort, consol.sfort} and so on.
-
-The width of the output on the page is set by
-\spadcmd{)set output length}
-for all formats except FORTRAN.
-Use \spadcmd{)set fortran fortlength} to
-change the FORTRAN line length from its default value of \spad{72}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug04.ht>>=
-\newcommand{\ugInOutAlgebraTitle}{Monospace Two-Dimensional Mathematical Format}
-\newcommand{\ugInOutAlgebraNumber}{4.4.}
-
-@
-\subsection{4.4. Monospace Two-Dimensional Mathematical Format}
-\label{ugInOutAlgebraPage}
-\index{pages!ugInOutAlgebraPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutAlgebraPage}
-\index{ugInOutAlgebraPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutAlgebraPage}
-{4.4. Monospace Two-Dimensional Mathematical Format}
-\beginscroll
-
-This is the default output format for Axiom.
-It is usually on when you start the system.
-
-\texht{\vskip 4pc}{}
-\noOutputXtc{
-If it is not, issue this.
-}{
-\spadpaste{)set output algebra on \bound{algon}}
-}
-\noOutputXtc{
-Since the printed version of this book
-(as opposed to the \HyperName{} version)
-shows output produced by the
-\texht{\TeX}{TeX}{} output formatter,
-let us temporarily turn off
-\texht{\TeX}{TeX}{} output.
-}{
-\spadpaste{)set output tex off \bound{texoff}}
-}
-\xtc{
-Here is an example of what it looks like.
-}{
-\spadpaste{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4] \free{algon texoff}}
-}
-\noOutputXtc{
-Issue this to turn off this kind of formatting.
-}{
-\spadpaste{)set output algebra off}
-}
-\noOutputXtc{
-Turn \texht{\TeX}{TeX}{} output on again.
-}{
-\spadpaste{)set output tex on}
-}
-
-The characters used for the matrix brackets above are rather ugly.
-You get this character set when you issue
-\spadcmd{)set output characters plain}.
-This character set should be used when you are running on a machine
-that does not support the IBM extended ASCII character set.
-If you are running on an IBM workstation, for example, issue
-\spadcmd{)set output characters default}
-to get better looking output.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug04.ht>>=
-\newcommand{\ugInOutTeXTitle}{TeX Format}
-\newcommand{\ugInOutTeXNumber}{4.5.}
-
-@
-\subsection{4.5. TeX Format}
-\label{ugInOutTeXPage}
-\index{pages!ugInOutTeXPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutTeXPage}
-\index{ugInOutTeXPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutTeXPage}{4.5. TeX Format}
-\beginscroll
-
-Axiom can produce \texht{\TeX}{TeX}{} output for your
-expressions.
-The output is produced using macros from the
-\texht{\LaTeX}{LaTeX} document preparation system by
-Leslie Lamport.\footnote{See Leslie Lamport, {\it LaTeX: A Document
-Preparation System,} Reading, Massachusetts: Addison-Wesley
-Publishing Company, Inc., 1986.}
-The printed version of this book was produced using this formatter.
-
-\noOutputXtc{
-To turn on \texht{\TeX}{TeX}{} output formatting, issue this.
-}{
-\spadpaste{)set output tex on \bound{texon}}
-}
-Here is an example of its output.
-\begin{verbatim}
-matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]
-
-\[
-\left[
-\begin{array}{cc}
-\displaystyle {{3 \  \%i \  {y \sp 3}}+x}&
-\displaystyle {{3 \  \%i \  {y \sp 3}}+{2 \  {x \sp 2}}} \\
-\displaystyle {{4 \  \%i \  {y \sp 4}}+x}&
-\displaystyle {{4 \  \%i \  {y \sp 4}}+{2 \  {x \sp 2}}}
-\end{array}
-\right]
-\leqno(3)
-\]
-%Axiom STEP NUMBER: 3
-\end{verbatim}
-To turn \texht{\TeX}{TeX}{} output formatting off, issue \spadsys{)set
-output tex off}.
-The \texht{\LaTeX}{LaTeX} macros in the output generated by Axiom
-are all standard except for the following definitions:
+\subsection{Asp27 Example Code}
+\label{Asp27ExampleCode}
+\index{pages!Asp27ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp27ExampleCode}
+\index{Asp27ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp27ExampleCode}{Asp27 Example Code}
 \begin{verbatim}
-\def\csch{\mathop{\rm csch}\nolimits}
-
-\def\erf{\mathop{\rm erf}\nolimits}
-
-\def\zag#1#2{
-  {{\hfill \left. {#1} \right|}
-   \over
-   {\left| {#2} \right. \hfill}
-  }
-}
+      FUNCTION DOT(IFLAG,N,Z,W,RWORK,LRWORK,IWORK,LIWORK)
+      DOUBLE PRECISION W(N),Z(N),RWORK(LRWORK)
+      INTEGER N,LIWORK,IFLAG,LRWORK,IWORK(LIWORK)
+      DOT=(W(16)+(-0.5D0*W(15)))*Z(16)+((-0.5D0*W(16))+W(15)+(-0.5D0*W(1
+     &4)))*Z(15)+((-0.5D0*W(15))+W(14)+(-0.5D0*W(13)))*Z(14)+((-0.5D0*W(
+     &14))+W(13)+(-0.5D0*W(12)))*Z(13)+((-0.5D0*W(13))+W(12)+(-0.5D0*W(1
+     &1)))*Z(12)+((-0.5D0*W(12))+W(11)+(-0.5D0*W(10)))*Z(11)+((-0.5D0*W(
+     &11))+W(10)+(-0.5D0*W(9)))*Z(10)+((-0.5D0*W(10))+W(9)+(-0.5D0*W(8))
+     &)*Z(9)+((-0.5D0*W(9))+W(8)+(-0.5D0*W(7)))*Z(8)+((-0.5D0*W(8))+W(7)
+     &+(-0.5D0*W(6)))*Z(7)+((-0.5D0*W(7))+W(6)+(-0.5D0*W(5)))*Z(6)+((-0.
+     &5D0*W(6))+W(5)+(-0.5D0*W(4)))*Z(5)+((-0.5D0*W(5))+W(4)+(-0.5D0*W(3
+     &)))*Z(4)+((-0.5D0*W(4))+W(3)+(-0.5D0*W(2)))*Z(3)+((-0.5D0*W(3))+W(
+     &2)+(-0.5D0*W(1)))*Z(2)+((-0.5D0*W(2))+W(1))*Z(1)
+      RETURN
+      END
 \end{verbatim}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug04.ht>>=
-\newcommand{\ugInOutScriptTitle}{IBM Script Formula Format}
-\newcommand{\ugInOutScriptNumber}{4.6.}
-
-@
-\subsection{4.6. IBM Script Formula Format}
-\label{ugInOutScriptPage}
-\index{pages!ugInOutScriptPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutScriptPage}
-\index{ugInOutScriptPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutScriptPage}{4.6. IBM Script Formula Format}
-\beginscroll
-
-Axiom can
-produce IBM Script Formula Format output for your
-expressions.
-
-\texht{\vskip 2pc}{}
-\noOutputXtc{
-To turn IBM Script Formula Format on, issue this.
-}{
-\spadpaste{)set output script on}
-}
-Here is an example of its output.
+\subsection{Asp28 Example Code}
+\label{Asp28ExampleCode}
+\index{pages!Asp28ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp28ExampleCode}
+\index{Asp28ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp28ExampleCode}{Asp28 Example Code}
 \begin{verbatim}
-matrix [[i*x**i + j*%i*y**j for i in 1..2] for j in 3..4]
-
-.eq set blank @
-:df.
-<left lb < < < <3 @@ %i @@ <y sup 3>>+x> here < <3 @@ %i @@
-<y sup 3>>+<2 @@ <x sup 2>>>> habove < < <4 @@ %i @@
-<y sup 4>>+x> here < <4 @@ %i @@ <y sup 4>>+<2 @@
-<x up 2>>>>> right rb>
-:edf.
+      SUBROUTINE IMAGE(IFLAG,N,Z,W,RWORK,LRWORK,IWORK,LIWORK)
+      DOUBLE PRECISION Z(N),W(N),IWORK(LRWORK),RWORK(LRWORK)
+      INTEGER N,LIWORK,IFLAG,LRWORK
+      W(1)=0.01707454969713436D0*Z(16)+0.001747395874954051D0*Z(15)+0.00
+     &2106973900813502D0*Z(14)+0.002957434991769087D0*Z(13)+(-0.00700554
+     &0882865317D0*Z(12))+(-0.01219194009813166D0*Z(11))+0.0037230647365
+     &3087D0*Z(10)+0.04932374658377151D0*Z(9)+(-0.03586220812223305D0*Z(
+     &8))+(-0.04723268012114625D0*Z(7))+(-0.02434652144032987D0*Z(6))+0.
+     &2264766947290192D0*Z(5)+(-0.1385343580686922D0*Z(4))+(-0.116530050
+     &8238904D0*Z(3))+(-0.2803531651057233D0*Z(2))+1.019463911841327D0*Z
+     &(1)
+      W(2)=0.0227345011107737D0*Z(16)+0.008812321197398072D0*Z(15)+0.010
+     &94012210519586D0*Z(14)+(-0.01764072463999744D0*Z(13))+(-0.01357136
+     &72105995D0*Z(12))+0.00157466157362272D0*Z(11)+0.05258889186338282D
+     &0*Z(10)+(-0.01981532388243379D0*Z(9))+(-0.06095390688679697D0*Z(8)
+     &)+(-0.04153119955569051D0*Z(7))+0.2176561076571465D0*Z(6)+(-0.0532
+     &5555586632358D0*Z(5))+(-0.1688977368984641D0*Z(4))+(-0.32440166056
+     &67343D0*Z(3))+0.9128222941872173D0*Z(2)+(-0.2419652703415429D0*Z(1
+     &))
+      W(3)=0.03371198197190302D0*Z(16)+0.02021603150122265D0*Z(15)+(-0.0
+     &06607305534689702D0*Z(14))+(-0.03032392238968179D0*Z(13))+0.002033
+     &305231024948D0*Z(12)+0.05375944956767728D0*Z(11)+(-0.0163213312502
+     &9967D0*Z(10))+(-0.05483186562035512D0*Z(9))+(-0.04901428822579872D
+     &0*Z(8))+0.2091097927887612D0*Z(7)+(-0.05760560341383113D0*Z(6))+(-
+     &0.1236679206156403D0*Z(5))+(-0.3523683853026259D0*Z(4))+0.88929961
+     &32269974D0*Z(3)+(-0.2995429545781457D0*Z(2))+(-0.02986582812574917
+     &D0*Z(1))
+      W(4)=0.05141563713660119D0*Z(16)+0.005239165960779299D0*Z(15)+(-0.
+     &01623427735779699D0*Z(14))+(-0.01965809746040371D0*Z(13))+0.054688
+     &97337339577D0*Z(12)+(-0.014224695935687D0*Z(11))+(-0.0505181779315
+     &6355D0*Z(10))+(-0.04353074206076491D0*Z(9))+0.2012230497530726D0*Z
+     &(8)+(-0.06630874514535952D0*Z(7))+(-0.1280829963720053D0*Z(6))+(-0
+     &.305169742604165D0*Z(5))+0.8600427128450191D0*Z(4)+(-0.32415033802
+     &68184D0*Z(3))+(-0.09033531980693314D0*Z(2))+0.09089205517109111D0*
+     &Z(1)
+      W(5)=0.04556369767776375D0*Z(16)+(-0.001822737697581869D0*Z(15))+(
+     &-0.002512226501941856D0*Z(14))+0.02947046460707379D0*Z(13)+(-0.014
+     &45079632086177D0*Z(12))+(-0.05034242196614937D0*Z(11))+(-0.0376966
+     &3291725935D0*Z(10))+0.2171103102175198D0*Z(9)+(-0.0824949256021352
+     &4D0*Z(8))+(-0.1473995209288945D0*Z(7))+(-0.315042193418466D0*Z(6))
+     &+0.9591623347824002D0*Z(5)+(-0.3852396953763045D0*Z(4))+(-0.141718
+     &5427288274D0*Z(3))+(-0.03423495461011043D0*Z(2))+0.319820917706851
+     &6D0*Z(1)
+      W(6)=0.04015147277405744D0*Z(16)+0.01328585741341559D0*Z(15)+0.048
+     &26082005465965D0*Z(14)+(-0.04319641116207706D0*Z(13))+(-0.04931323
+     &319055762D0*Z(12))+(-0.03526886317505474D0*Z(11))+0.22295383396730
+     &01D0*Z(10)+(-0.07375317649315155D0*Z(9))+(-0.1589391311991561D0*Z(
+     &8))+(-0.328001910890377D0*Z(7))+0.952576555482747D0*Z(6)+(-0.31583
+     &09975786731D0*Z(5))+(-0.1846882042225383D0*Z(4))+(-0.0703762046700
+     &4427D0*Z(3))+0.2311852964327382D0*Z(2)+0.04254083491825025D0*Z(1)
+      W(7)=0.06069778964023718D0*Z(16)+0.06681263884671322D0*Z(15)+(-0.0
+     &2113506688615768D0*Z(14))+(-0.083996867458326D0*Z(13))+(-0.0329843
+     &8523869648D0*Z(12))+0.2276878326327734D0*Z(11)+(-0.067356038933017
+     &95D0*Z(10))+(-0.1559813965382218D0*Z(9))+(-0.3363262957694705D0*Z(
+     &8))+0.9442791158560948D0*Z(7)+(-0.3199955249404657D0*Z(6))+(-0.136
+     &2463839920727D0*Z(5))+(-0.1006185171570586D0*Z(4))+0.2057504515015
+     &423D0*Z(3)+(-0.02065879269286707D0*Z(2))+0.03160990266745513D0*Z(1
+     &)
+      W(8)=0.126386868896738D0*Z(16)+0.002563370039476418D0*Z(15)+(-0.05
+     &581757739455641D0*Z(14))+(-0.07777893205900685D0*Z(13))+0.23117338
+     &45834199D0*Z(12)+(-0.06031581134427592D0*Z(11))+(-0.14805474755869
+     &52D0*Z(10))+(-0.3364014128402243D0*Z(9))+0.9364014128402244D0*Z(8)
+     &+(-0.3269452524413048D0*Z(7))+(-0.1396841886557241D0*Z(6))+(-0.056
+     &1733845834199D0*Z(5))+0.1777789320590069D0*Z(4)+(-0.04418242260544
+     &359D0*Z(3))+(-0.02756337003947642D0*Z(2))+0.07361313110326199D0*Z(
+     &1)
+      W(9)=0.07361313110326199D0*Z(16)+(-0.02756337003947642D0*Z(15))+(-
+     &0.04418242260544359D0*Z(14))+0.1777789320590069D0*Z(13)+(-0.056173
+     &3845834199D0*Z(12))+(-0.1396841886557241D0*Z(11))+(-0.326945252441
+     &3048D0*Z(10))+0.9364014128402244D0*Z(9)+(-0.3364014128402243D0*Z(8
+     &))+(-0.1480547475586952D0*Z(7))+(-0.06031581134427592D0*Z(6))+0.23
+     &11733845834199D0*Z(5)+(-0.07777893205900685D0*Z(4))+(-0.0558175773
+     &9455641D0*Z(3))+0.002563370039476418D0*Z(2)+0.126386868896738D0*Z(
+     &1)
+      W(10)=0.03160990266745513D0*Z(16)+(-0.02065879269286707D0*Z(15))+0
+     &.2057504515015423D0*Z(14)+(-0.1006185171570586D0*Z(13))+(-0.136246
+     &3839920727D0*Z(12))+(-0.3199955249404657D0*Z(11))+0.94427911585609
+     &48D0*Z(10)+(-0.3363262957694705D0*Z(9))+(-0.1559813965382218D0*Z(8
+     &))+(-0.06735603893301795D0*Z(7))+0.2276878326327734D0*Z(6)+(-0.032
+     &98438523869648D0*Z(5))+(-0.083996867458326D0*Z(4))+(-0.02113506688
+     &615768D0*Z(3))+0.06681263884671322D0*Z(2)+0.06069778964023718D0*Z(
+     &1)
+      W(11)=0.04254083491825025D0*Z(16)+0.2311852964327382D0*Z(15)+(-0.0
+     &7037620467004427D0*Z(14))+(-0.1846882042225383D0*Z(13))+(-0.315830
+     &9975786731D0*Z(12))+0.952576555482747D0*Z(11)+(-0.328001910890377D
+     &0*Z(10))+(-0.1589391311991561D0*Z(9))+(-0.07375317649315155D0*Z(8)
+     &)+0.2229538339673001D0*Z(7)+(-0.03526886317505474D0*Z(6))+(-0.0493
+     &1323319055762D0*Z(5))+(-0.04319641116207706D0*Z(4))+0.048260820054
+     &65965D0*Z(3)+0.01328585741341559D0*Z(2)+0.04015147277405744D0*Z(1)
+      W(12)=0.3198209177068516D0*Z(16)+(-0.03423495461011043D0*Z(15))+(-
+     &0.1417185427288274D0*Z(14))+(-0.3852396953763045D0*Z(13))+0.959162
+     &3347824002D0*Z(12)+(-0.315042193418466D0*Z(11))+(-0.14739952092889
+     &45D0*Z(10))+(-0.08249492560213524D0*Z(9))+0.2171103102175198D0*Z(8
+     &)+(-0.03769663291725935D0*Z(7))+(-0.05034242196614937D0*Z(6))+(-0.
+     &01445079632086177D0*Z(5))+0.02947046460707379D0*Z(4)+(-0.002512226
+     &501941856D0*Z(3))+(-0.001822737697581869D0*Z(2))+0.045563697677763
+     &75D0*Z(1)
+      W(13)=0.09089205517109111D0*Z(16)+(-0.09033531980693314D0*Z(15))+(
+     &-0.3241503380268184D0*Z(14))+0.8600427128450191D0*Z(13)+(-0.305169
+     &742604165D0*Z(12))+(-0.1280829963720053D0*Z(11))+(-0.0663087451453
+     &5952D0*Z(10))+0.2012230497530726D0*Z(9)+(-0.04353074206076491D0*Z(
+     &8))+(-0.05051817793156355D0*Z(7))+(-0.014224695935687D0*Z(6))+0.05
+     &468897337339577D0*Z(5)+(-0.01965809746040371D0*Z(4))+(-0.016234277
+     &35779699D0*Z(3))+0.005239165960779299D0*Z(2)+0.05141563713660119D0
+     &*Z(1)
+      W(14)=(-0.02986582812574917D0*Z(16))+(-0.2995429545781457D0*Z(15))
+     &+0.8892996132269974D0*Z(14)+(-0.3523683853026259D0*Z(13))+(-0.1236
+     &679206156403D0*Z(12))+(-0.05760560341383113D0*Z(11))+0.20910979278
+     &87612D0*Z(10)+(-0.04901428822579872D0*Z(9))+(-0.05483186562035512D
+     &0*Z(8))+(-0.01632133125029967D0*Z(7))+0.05375944956767728D0*Z(6)+0
+     &.002033305231024948D0*Z(5)+(-0.03032392238968179D0*Z(4))+(-0.00660
+     &7305534689702D0*Z(3))+0.02021603150122265D0*Z(2)+0.033711981971903
+     &02D0*Z(1)
+      W(15)=(-0.2419652703415429D0*Z(16))+0.9128222941872173D0*Z(15)+(-0
+     &.3244016605667343D0*Z(14))+(-0.1688977368984641D0*Z(13))+(-0.05325
+     &555586632358D0*Z(12))+0.2176561076571465D0*Z(11)+(-0.0415311995556
+     &9051D0*Z(10))+(-0.06095390688679697D0*Z(9))+(-0.01981532388243379D
+     &0*Z(8))+0.05258889186338282D0*Z(7)+0.00157466157362272D0*Z(6)+(-0.
+     &0135713672105995D0*Z(5))+(-0.01764072463999744D0*Z(4))+0.010940122
+     &10519586D0*Z(3)+0.008812321197398072D0*Z(2)+0.0227345011107737D0*Z
+     &(1)
+      W(16)=1.019463911841327D0*Z(16)+(-0.2803531651057233D0*Z(15))+(-0.
+     &1165300508238904D0*Z(14))+(-0.1385343580686922D0*Z(13))+0.22647669
+     &47290192D0*Z(12)+(-0.02434652144032987D0*Z(11))+(-0.04723268012114
+     &625D0*Z(10))+(-0.03586220812223305D0*Z(9))+0.04932374658377151D0*Z
+     &(8)+0.00372306473653087D0*Z(7)+(-0.01219194009813166D0*Z(6))+(-0.0
+     &07005540882865317D0*Z(5))+0.002957434991769087D0*Z(4)+0.0021069739
+     &00813502D0*Z(3)+0.001747395874954051D0*Z(2)+0.01707454969713436D0*
+     &Z(1)
+      RETURN
+      END
 \end{verbatim}
-\noOutputXtc{
-To turn IBM Script Formula Format output formatting off, issue this.
-}{
-\spadpaste{)set output script off}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug04.ht>>=
-\newcommand{\ugInOutFortranTitle}{FORTRAN Format}
-\newcommand{\ugInOutFortranNumber}{4.7.}
-
-@
-\subsection{4.7. FORTRAN Format}
-\label{ugInOutFortranPage}
-\index{pages!ugInOutFortranPage!ug04.ht}
-\index{ug04.ht!pages!ugInOutFortranPage}
-\index{ugInOutFortranPage!ug04.ht!pages}
-<<ug04.ht>>=
-\begin{page}{ugInOutFortranPage}{4.7. FORTRAN Format}
-\beginscroll
-
-In addition to turning FORTRAN output on and off and stating where the
-output should be placed, there are many options that control the
-appearance of the generated code.
-In this section we describe some of the basic options.
-Issue \spadcmd{)set fortran} to see a full list with their current
-settings.
-
-The output FORTRAN expression usually begins in column 7.
-If the expression needs more than one line, the ampersand character
-\spadSyntax{\&} is used in column 6.
-Since some versions of FORTRAN have restrictions on the number of lines
-per statement, Axiom breaks long expressions into segments with
-a maximum of 1320 characters (20 lines of 66 characters) per segment.
-If you want to change this, say, to 660 characters,
-issue the system command
-\spadcmd{)set fortran explength 660}.
-You can turn off the line breaking by issuing
-\spadcmd{)set fortran segment off}.
-Various code optimization levels are available.
-%
-\noOutputXtc{
-FORTRAN output is produced after you issue this.
-}{
-\spadpaste{)set output fortran on \bound{forton}}
-}
-\noOutputXtc{
-For the initial examples, we set the optimization level to 0, which is the
-lowest level.
-}{
-\spadpaste{)set fortran optlevel 0 \bound{opt0}\free{forton}}
-}
-\noOutputXtc{
-The output is usually in columns 7 through 72, although fewer columns
-are used in the following examples so that the output
-fits nicely on the page.
-}{
-\spadpaste{)set fortran fortlength 60}
-}
-\xtc{
-By default, the output goes to the screen and is displayed
-before the standard Axiom two-dimensional output.
-In this example, an
-assignment to the variable \spad{R1} was generated because this is
-the result of step 1.
-}{
-\spadpaste{(x+y)**3 \free{opt0}}
-}
-\xtc{
-Here is an example that illustrates the line breaking.
-}{
-\spadpaste{(x+y+z)**3 \free{opt0}}
-}
-
-Note in the above examples that integers are generally converted to
-floating point numbers, except in exponents.
-This is the default behavior but can be turned off by issuing
-\spadcmd{)set fortran ints2floats off}.
-The rules governing when the conversion is done are:
-\indent{4}
-\beginitems
-\item[1. ] If an integer is an exponent, convert it to a floating point
-number if it is greater than 32767 in absolute value, otherwise leave it
-as an integer.
-\item[2. ] Convert all other integers in an expression to floating
-point numbers.
-\enditems
-\indent{0}
-These rules only govern integers in expressions.
-Numbers generated by Axiom for \spad{DIMENSION} statements are also
-integers.
-
-To set the type of generated FORTRAN data,
-use one of the following:
+\subsection{Asp29 Example Code}
+\label{Asp29ExampleCode}
+\index{pages!Asp29ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp29ExampleCode}
+\index{Asp29ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp29ExampleCode}{Asp29 Example Code}
 \begin{verbatim}
-)set fortran defaulttype REAL
-)set fortran defaulttype INTEGER
-)set fortran defaulttype COMPLEX
-)set fortran defaulttype LOGICAL
-)set fortran defaulttype CHARACTER
+      SUBROUTINE MONIT(ISTATE,NEXTIT,NEVALS,NEVECS,K,F,D)
+      DOUBLE PRECISION D(K),F(K)
+      INTEGER K,NEXTIT,NEVALS,NVECS,ISTATE
+      CALL F02FJZ(ISTATE,NEXTIT,NEVALS,NEVECS,K,F,D)
+      RETURN
+      END
 \end{verbatim}
-
-\xtc{
-When temporaries are created, they are given a default type of
-{\tt REAL.}
-Also, the {\tt REAL} versions of functions are used by default.
-}{
-\spadpaste{sin(x) \free{opt1}}
-}
-\noOutputXtc{
-At optimization level 1, Axiom removes common subexpressions.
-}{
-\spadpaste{)set fortran optlevel 1 \bound{opt1}\free{forton}}
-}
-\xtc{
-}{
-\spadpaste{(x+y+z)**3 \free{opt1}}
-}
-\noOutputXtc{
-This changes the precision to {\tt DOUBLE}.
-Substitute \spad{single} for \spad{double}
-to return to single precision.
-}{
-\spadpaste{)set fortran precision double \free{opt1}\bound{double1}}
-}
-\xtc{
-Complex constants display the precision.
-}{
-\spadpaste{2.3 + 5.6*\%i  \free{double1}}
-}
-\xtc{
-The function names that Axiom generates depend on the chosen
-precision.
-}{
-\spadpaste{sin \%e  \free{double1}}
-}
-\noOutputXtc{
-Reset the precision to \spad{single} and look at these two
-examples again.
-}{
-\spadpaste{)set fortran precision single \free{opt1}\bound{single1}}
-}
-\xtc{
-}{
-\spadpaste{2.3 + 5.6*\%i  \free{single1}}
-}
-\xtc{
-}{
-\spadpaste{sin \%e  \free{single1}}
-}
-\xtc{
-Expressions that look like lists, streams, sets or matrices cause
-array code to be generated.
-}{
-\spadpaste{[x+1,y+1,z+1] \free{opt1}}
-}
-\xtc{
-A temporary variable is generated to be the name of the array.
-This may have to be changed in your particular application.
-}{
-\spadpaste{set[2,3,4,3,5] \free{opt1}}
-}
-\xtc{
-By default, the starting index for generated FORTRAN arrays is \spad{0}.
-}{
-\spadpaste{matrix [[2.3,9.7],[0.0,18.778]] \free{opt1}}
-}
-\noOutputXtc{
-To change the starting index for generated FORTRAN arrays to be \spad{1},
-issue this.
-This value can only be \spad{0} or \spad{1}.
-}{
-\spadpaste{)set fortran startindex 1 \free{opt1}\bound{start1}}
-}
-\xtc{
-Look at the code generated for the matrix again.
-}{
-\spadpaste{matrix [[2.3,9.7],[0.0,18.778]] \free{start1}}
-}
-\endscroll
-\autobuttons
 \end{page}
-@
-\section{ug05.ht}
-<<ug05.ht>>=
-\newcommand{\ugLangTitle}{Introduction to the Axiom Interactive Language}
-\newcommand{\ugLangNumber}{5.}
 
 @
-\subsection{5. Introduction to the Axiom Interactive Language}
-\label{ugLangPage}
-\begin{itemize}
-\item ugLangAssignPage \ref{ugLangAssignPage} on
-page~\pageref{ugLangAssignPage}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\item ugLangIfPage \ref{ugLangIfPage} on
-page~\pageref{ugLangIfPage}
-\item ugLangLoopsPage \ref{ugLangLoopsPage} on
-page~\pageref{ugLangLoopsPage}
-\item ugLangItsPage \ref{ugLangItsPage} on
-page~\pageref{ugLangItsPage}
-\item ugLangStreamsPrimesPage \ref{ugLangStreamsPrimesPage} on
-page~\pageref{ugLangStreamsPrimesPage}
-\end{itemize}
-\index{pages!ugLangPage!ug05.ht}
-\index{ug05.ht!pages!ugLangPage}
-\index{ugLangPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangPage}{5. Introduction to the Axiom Interactive Language}
-\beginscroll
-
-In this chapter we look at some of the basic components of the
-Axiom language that you can use interactively.
-We show how to create a \spadgloss{block} of expressions,
-how to form loops and list iterations, how to modify the sequential
-evaluation of a block and how to use {\tt if-then-else} to
-evaluate parts of your program conditionally.
-We suggest you first read the boxed material in each section and then
-proceed to a more thorough reading of the chapter.
-
-\beginmenu
-    \menudownlink{{5.1. Immediate and Delayed Assignments}}{ugLangAssignPage}
-    \menudownlink{{5.2. Blocks}}{ugLangBlocksPage}
-    \menudownlink{{5.3. if-then-else}}{ugLangIfPage}
-    \menudownlink{{5.4. Loops}}{ugLangLoopsPage}
-    \menudownlink{{5.5. Creating Lists and Streams with Iterators}}
-{ugLangItsPage}
-    \menudownlink{{5.6. An Example: Streams of Primes}}
-{ugLangStreamsPrimesPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangAssignTitle}{Immediate and Delayed Assignments}
-\newcommand{\ugLangAssignNumber}{5.1.}
-
-@
-\subsection{5.1. Immediate and Delayed Assignments}
-\label{ugLangAssignPage}
-\begin{itemize}
-\item ugUserDelayPage \ref{ugUserDelayPage} on
-page~\pageref{ugUserDelayPage}
-\end{itemize}
-\index{pages!ugLangAssignPage!ug05.ht}
-\index{ug05.ht!pages!ugLangAssignPage}
-\index{ugLangAssignPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangAssignPage}{5.1. Immediate and Delayed Assignments}
-\beginscroll
-
-A \spadgloss{variable} in Axiom refers to a value.
-A variable has a name beginning with an uppercase or lowercase alphabetic
-character, \axiomSyntax{\%}, or \axiomSyntax{!}.
-Successive characters (if any) can be any of the above, digits, or
-\axiomSyntax{?}.
-Case is distinguished.
-The following are all examples of valid, distinct variable names:
+\subsection{Asp30 Example Code}
+\label{Asp30ExampleCode}
+\index{pages!Asp30ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp30ExampleCode}
+\index{Asp30ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp30ExampleCode}{Asp30 Example Code}
 \begin{verbatim}
-a             tooBig?    a1B2c3%!?
-A             %j         numberOfPoints
-beta6         %J         numberofpoints
+      SUBROUTINE APROD(MODE,M,N,X,Y,RWORK,LRWORK,IWORK,LIWORK)
+      DOUBLE PRECISION X(N),Y(M),RWORK(LRWORK)
+      INTEGER M,N,LIWORK,IFAIL,LRWORK,IWORK(LIWORK),MODE
+      DOUBLE PRECISION A(5,5)
+      EXTERNAL F06PAF
+      A(1,1)=1.0D0
+      A(1,2)=0.0D0
+      A(1,3)=0.0D0
+      A(1,4)=-1.0D0
+      A(1,5)=0.0D0
+      A(2,1)=0.0D0
+      A(2,2)=1.0D0
+      A(2,3)=0.0D0
+      A(2,4)=0.0D0
+      A(2,5)=-1.0D0
+      A(3,1)=0.0D0
+      A(3,2)=0.0D0
+      A(3,3)=1.0D0
+      A(3,4)=-1.0D0
+      A(3,5)=0.0D0
+      A(4,1)=-1.0D0
+      A(4,2)=0.0D0
+      A(4,3)=-1.0D0
+      A(4,4)=4.0D0
+      A(4,5)=-1.0D0
+      A(5,1)=0.0D0
+      A(5,2)=-1.0D0
+      A(5,3)=0.0D0
+      A(5,4)=-1.0D0
+      A(5,5)=4.0D0
+      IF(MODE.EQ.1)THEN
+        CALL F06PAF('N',M,N,1.0D0,A,M,X,1,1.0D0,Y,1)
+      ELSEIF(MODE.EQ.2)THEN
+        CALL F06PAF('T',M,N,1.0D0,A,M,Y,1,1.0D0,X,1)
+      ENDIF
+      RETURN
+      END
 \end{verbatim}
-
-The \axiomSyntax{:=} operator is the immediate \spadgloss{assignment}
-operator.
-Use it to associate a value with a variable.
-
-\beginImportant
-The syntax for immediate assignment for a single variable is
-\centerline{{{\it variable} \axiom{:=} {\it expression}}}
-The value returned by an immediate assignment is the value of {\it expression}.
-\endImportant
-
-\xtc{
-The right-hand side of the expression is evaluated,
-yielding \axiom{1}.  This value is then assigned to \axiom{a}.
-}{
-\spadpaste{a := 1 \bound{a}}
-}
-\xtc{
-The right-hand side of the expression is evaluated,
-yielding \axiom{1}.  This value is then assigned to \axiom{b}.
-Thus \axiom{a} and \axiom{b} both have the value \axiom{1} after the sequence
-of assignments.
-}{
-\spadpaste{b := a \free{a}\bound{b}}
-}
-\xtc{
-What is the value of \axiom{b} if \axiom{a} is
-assigned the value \axiom{2}?
-}{
-\spadpaste{a := 2 \bound{a2}}
-}
-\xtc{
-As you see, the value of \axiom{b} is left unchanged.
-}{
-\spadpaste{b \free{b}}
-}
-This is what we mean when we say this kind of assignment is
-{\it immediate};
-\axiom{b} has no dependency on \axiom{a} after the initial assignment.
-This is the usual notion of assignment found in programming
-languages such as C,
-PASCAL
-and FORTRAN.
-
-Axiom provides delayed assignment with \axiomSyntax{==}.
-This implements a
-delayed evaluation of the right-hand side and dependency
-checking.
-
-\beginImportant
-The syntax for delayed assignment is
-\centerline{{{\it variable} \axiom{==} {\it expression}}}
-The value returned by a delayed assignment is \void{}.
-\endImportant
-
-\xtc{
-Using \axiom{a} and \axiom{b} as above, these are the corresponding delayed
-assignments.
-}{
-\spadpaste{a == 1 \bound{ad}}
-}
-\xtc{
-}{
-\spadpaste{b == a \free{ad}\bound{bd}}
-}
-\xtc{
-The right-hand side of each delayed assignment
-is left unevaluated until the
-variables on the left-hand sides are evaluated.
-Therefore this evaluation and \ldots
-}{
-\spadpaste{a \free{ad}}
-}
-\xtc{
-this evaluation seem the same as before.
-}{
-\spadpaste{b \free{bd}}
-}
-\xtc{
-If we change \axiom{a} to \axiom{2}
-}{
-\spadpaste{a == 2 \bound{ad2}}
-}
-\xtc{
-then
-\axiom{a} evaluates to \axiom{2}, as expected, but
-}{
-\spadpaste{a \free{ad2}}
-}
-\xtc{
-the value of \axiom{b} reflects the change to \axiom{a}.
-}{
-\spadpaste{b \free{bd ad2}}
-}
-
-It is possible to set several variables at the same time
-by using
-a \spadgloss{tuple} of variables and a tuple of expressions.\footnote{A
-\spadgloss{tuple} is a collection of things separated by commas, often
-surrounded by parentheses.}
-
-\beginImportant
-The syntax for multiple immediate assignments is
-\centerline{{{\tt ( \subscriptIt{var}{1}, \subscriptIt{var}{2}, \ldots, \subscriptIt{var}{N} ) := ( \subscriptIt{expr}{1}, \subscriptIt{expr}{2}, \ldots, \subscriptIt{expr}{N} ) }}}
-The value returned by an immediate assignment is the value of
-\subscriptIt{expr}{N}.
-\endImportant
-
-\xtc{
-This sets \axiom{x} to \axiom{1} and \axiom{y} to \axiom{2}.
-}{
-\spadpaste{(x,y) := (1,2) \bound{x}\bound{y}}
-}
-Multiple immediate assigments are parallel in the sense that the
-expressions on the right are all evaluated before any assignments
-on the left are made.
-However, the order of evaluation of these expressions is undefined.
-\xtc{
-You can use multiple immediate assignment to swap the
-values held by variables.
-}{
-\spadpaste{(x,y) := (y,x) \free{x y}\bound{swap}}
-}
-\xtc{
-\axiom{x} has the previous value of \axiom{y}.
-}{
-\spadpaste{x \free{swap}}
-}
-\xtc{
-\axiom{y} has the previous value of \axiom{x}.
-}{
-\spadpaste{y \free{swap}}
-}
-
-There is no syntactic form for multiple delayed assignments.
-See the discussion in
-\downlink{``\ugUserDelayTitle''}{ugUserDelayPage} 
-in Section \ugUserDelayNumber\ignore{ugUserDelay}
-about how Axiom differentiates between delayed assignments and
-user functions of no arguments.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug05.ht>>=
-\newcommand{\ugLangBlocksTitle}{Blocks}
-\newcommand{\ugLangBlocksNumber}{5.2.}
-
-@
-\subsection{5.2. Blocks}
-\label{ugLangBlocksPage}
-\begin{itemize}
-\item ugLangIfPage \ref{ugLangIfPage} on
-page~\pageref{ugLangIfPage}
-\end{itemize}
-\index{pages!ugLangBlocksPage!ug05.ht}
-\index{ug05.ht!pages!ugLangBlocksPage}
-\index{ugLangBlocksPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangBlocksPage}{5.2. Blocks}
-\beginscroll
-
-%%
-%% We should handle tabs in pile correctly but so far we do not.
-%%
-
-A \spadgloss{block} is a sequence of expressions evaluated
-in the order that they appear, except as modified by control expressions
-such as \axiom{break},
-\spadkey{break}
-\axiom{return},
-\spadkey{return}
-\axiom{iterate} and
-\spadkey{iterate}
-\axiom{if-then-else} constructions.
-The value of a block is the value of the expression last evaluated
-in the block.
-
-To leave a block early, use \axiomSyntax{=>}.
-For example, \axiom{i < 0 => x}.
-The expression before the \axiomSyntax{=>} must evaluate to
-\axiom{true} or \axiom{false}.
-The expression following the \axiomSyntax{=>} is the return value
-for the block.
-
-A block can be constructed in two ways:
-\indent{4}
-\beginitems
-\item[1. ] the expressions can be separated by semicolons
-and the resulting expression surrounded by parentheses, and
-\item[2. ] the expressions can be written on succeeding lines with each line
-indented the same number of spaces (which must be greater than zero).
-A block entered in this form is
-called a \spadgloss{pile}.
-\enditems
-\indent{0}
-Only the first form is available if you are entering expressions
-directly to Axiom.
-Both forms are available in {\bf .input} files.
-
-\beginImportant
-The syntax for a simple block of expressions entered interactively is
-\centerline{{{\tt ( \subscriptIt{expression}{1}; \subscriptIt{expression}{2}; \ldots; \subscriptIt{expression}{N} )}}}
-The value returned by a block is the value of an
-\axiomSyntax{=>} expression, or \subscriptIt{expression}{N}
-if no \axiomSyntax{=>} is encountered.
-\endImportant
-
-In {\bf .input} files, blocks can also be written using
-\spadglossSee{piles}{pile}.
-The examples throughout this book are assumed to come from {\bf .input} files.
-
-\xtc{
-In this example, we assign a rational number to \axiom{a} using a block
-consisting of three expressions.
-This block is written as a pile.
-Each expression in the pile has the same indentation, in this case two
-spaces to the right of the first line.
-}{
-\begin{spadsrc}
-a :=
-  i := gcd(234,672)
-  i := 3*i**5 - i + 1
-  1 / i
-\end{spadsrc}
-}
-\xtc{
-Here is the same block written on one line.
-This is how you are required to enter it at the input prompt.
-}{
-\spadpaste{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
-}
-\xtc{
-Blocks can be used to put several expressions on one line.
-The value returned is that of the last expression.
-}{
-\spadpaste{(a := 1; b := 2; c := 3; [a,b,c]) \bound{a b c}}
-}
-
-Axiom gives you two ways of writing a block and the
-preferred way in an {\bf .input} file is to use a pile.
-Roughly speaking, a pile is
-a block whose constituent expressions are indented the same amount.
-You begin a pile by starting a new line for the first expression,
-indenting it to the right of the previous line.
-You then enter the second expression on a new line, vertically aligning
-it with the first line. And so on.
-If you need to enter an inner pile, further indent its lines to the right
-of the outer pile.
-Axiom knows where a pile ends.
-It ends when a subsequent line is indented to the left of the pile or
-the end of the file.
-
-\xtc{
-Blocks can be used to perform several steps before an assignment
-(immediate or delayed) is made.
-}{
-\begin{spadsrc}[\free{a b}]
-d :=
-   c := a**2 + b**2
-   sqrt(c * 1.3)
-\end{spadsrc}
-}
-\xtc{
-Blocks can be used in the arguments to functions.
-(Here \axiom{h} is assigned \axiom{2.1 + 3.5}.)
-}{
-\begin{spadsrc}[\bound{h}]
-h := 2.1 +
-   1.0
-   3.5
-\end{spadsrc}
-}
-\xtc{
-Here the second argument to \axiomFun{eval} is \axiom{x = z}, where
-the value of \axiom{z} is computed in the first line of the block
-starting on the second line.
-}{
-\begin{spadsrc}
-eval(x**2 - x*y**2,
-     z := %pi/2.0 - exp(4.1)
-     x = z
-   )
-\end{spadsrc}
-}
-\xtc{
-Blocks can be used in the clauses of \axiom{if-then-else}
-expressions (see \downlink{``\ugLangIfTitle''}{ugLangIfPage} 
-in Section \ugLangIfNumber\ignore{ugLangIf}).
-}{
-\spadpaste{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5)) \free{h}}
-}
-\xtc{
-This is the pile version of the last block.
-}{
-\begin{spadsrc}[\free{h}]
-if h > 3.1 then
-    1.0
-  else
-    z := cos(h)
-    max(z,0.5)
-\end{spadsrc}
-}
-\xtc{
-Blocks can be nested.
-}{
-\spadpaste{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
-}
-\xtc{
-This is the pile version of the last block.
-}{
-\begin{spadsrc}
-a :=
-  b := factorial(12)
-  c :=
-    d := eulerPhi(22)
-    factorial(d)
-  b+c
-\end{spadsrc}
-}
-
-\xtc{
-Since \axiom{c + d} does equal \axiom{3628855}, \axiom{a} has the value
-of \axiom{c} and the last line is never evaluated.
-}{
-\begin{spadsrc}
-a :=
-  c := factorial 10
-  d := fibonacci 10
-  c + d = 3628855 => c
-  d
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangIfTitle}{if-then-else}
-\newcommand{\ugLangIfNumber}{5.3.}
-
-@
-\subsection{5.3. if-then-else}
-\label{ugLangIfPage}
-\begin{itemize}
-\item ugTypesResolvePage \ref{ugTypesResolvePage} on
-page~\pageref{ugTypesResolvePage}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\end{itemize}
-\index{pages!ugLangIfPage!ug05.ht}
-\index{ug05.ht!pages!ugLangIfPage}
-\index{ugLangIfPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangIfPage}{5.3. if-then-else}
-\beginscroll
-
-Like many other programming languages, Axiom uses the three
-keywords \spadkey{if} \axiom{if, then} \spadkey{then} and \axiom{else}
-\spadkey{else} to form
-conditional expressions.
-The \axiom{else} part of the conditional is optional.
-The expression between the \axiom{if} and \axiom{then} keywords
-is a
-\spadgloss{predicate}: an expression that evaluates to or is convertible to
-either {\tt true} or {\tt false}, that is,
-a \axiomType{Boolean}.
-
-\beginImportant
-The syntax for conditional expressions is
-\centerline{{{\tt if {\it predicate} then \subscriptIt{expression}{1} else \subscriptIt{expression}{2}}}}
-where the \axiom{else} \subscriptIt{\it expression}{2} part is optional.
-The value returned from a conditional expression is
-\subscriptIt{\it expression}{1} if the predicate evaluates to \axiom{true}
-and \subscriptIt{\it expression}{2} otherwise.
-If no \axiom{else} clause is given, the value is always \void{}.
-\endImportant
-
-An \axiom{if-then-else} expression always returns a value.
-If the
-\axiom{else} clause is missing then the entire expression returns
-\void{}.
-If both clauses are present, the type of the value returned by \axiom{if}
-is obtained by resolving the types of the values of the two clauses.
-See \downlink{``\ugTypesResolveTitle''}{ugTypesResolvePage} 
-in Section \ugTypesResolveNumber\ignore{ugTypesResolve}
-for more information.
-
-The predicate must evaluate to, or be convertible to, an object of type
-\axiomType{Boolean}: {\tt true} or {\tt false}.
-By default, the equal sign \spadopFrom{=}{Equation} creates
-an equation.
-\xtc{
-This is an equation.
-In particular, it is an object of type \axiomType{Equation Polynomial Integer}.
-}{
-\spadpaste{x + 1 = y}
-}
-However, for predicates in \axiom{if} expressions, Axiom
-places a default target type of \axiomType{Boolean} on the
-predicate and equality testing is performed.
-Thus you need not qualify the \axiomSyntax{=} in any way.
-In other contexts you may need to tell Axiom that you want
-to test for equality rather than create an equation.
-In those cases, use \axiomSyntax{@} and a target type of
-\axiomType{Boolean}.
-See \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} in Section 
-\ugTypesPkgCallNumber\ignore{ugTypesPkgCall} for more information.
-
-The compound symbol meaning ``not equal'' in Axiom is
-``\texht{$\sim =$}{\axiom{~=}}''.
-This can be used directly without a package call or a target specification.
-The expression
-\axiom{a} \texht{$\sim =$}{\axiom{~=}} \axiom{b} is directly translated into
-\axiom{not (a = b)}.
-
-Many other functions have return values of type \axiomType{Boolean}.
-These include \axiom{<}, \axiom{<=}, \axiom{>},
-\axiom{>=}, \texht{$\sim =$}{\axiom{~=}} and \axiom{member?}.
-By convention, operations with names ending in \axiomSyntax{?}
-return \axiomType{Boolean} values.
-
-The usual rules for piles are suspended for conditional expressions.
-In {\bf .input} files, the \axiom{then} and
-\axiom{else} keywords can begin in the same column as the corresponding
-\axiom{if} but may also appear to the right.
-Each of the following styles of writing \axiom{if-then-else}
-expressions is acceptable:
-\begin{verbatim}
-if i>0 then output("positive") else output("nonpositive")
-
-if i > 0 then output("positive")
-  else output("nonpositive")
-
-if i > 0 then output("positive")
-else output("nonpositive")
-
-if i > 0
-then output("positive")
-else output("nonpositive")
-
-if i > 0
-  then output("positive")
-  else output("nonpositive")
-\end{verbatim}
-
-A block can follow the \axiom{then} or \axiom{else} keywords.
-In the following two assignments to \axiom{a}, 
-the \axiom{then} and \axiom{else}
-clauses each are followed by two-line piles.
-The value returned in each is the value of the second line.
-
-\begin{verbatim}
-a :=
-  if i > 0 then
-    j := sin(i * pi())
-    exp(j + 1/j)
-  else
-    j := cos(i * 0.5 * pi())
-    log(abs(j)**5 + 1)
-
-a :=
-  if i > 0
-    then
-      j := sin(i * pi())
-      exp(j + 1/j)
-    else
-      j := cos(i * 0.5 * pi())
-      log(abs(j)**5 + 1)
-\end{verbatim}
-These are both equivalent to the following:
+\subsection{Asp31 Example Code}
+\label{Asp31ExampleCode}
+\index{pages!Asp31ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp31ExampleCode}
+\index{Asp31ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp31ExampleCode}{Asp31 Example Code}
 \begin{verbatim}
-a :=
-  if i > 0 then (j := sin(i * pi()); exp(j + 1/j))
-  else (j := cos(i * 0.5 * pi()); log(abs(j)**5 + 1))
+      SUBROUTINE PEDERV(X,Y,PW)
+      DOUBLE PRECISION X,Y(*)
+      DOUBLE PRECISION PW(3,3)
+      PW(1,1)=-0.03999999999999999D0
+      PW(1,2)=10000.0D0*Y(3)
+      PW(1,3)=10000.0D0*Y(2)
+      PW(2,1)=0.03999999999999999D0
+      PW(2,2)=(-10000.0D0*Y(3))+(-60000000.0D0*Y(2))
+      PW(2,3)=-10000.0D0*Y(2)
+      PW(3,1)=0.0D0
+      PW(3,2)=60000000.0D0*Y(2)
+      PW(3,3)=0.0D0
+      RETURN
+      END
 \end{verbatim}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsTitle}{Loops}
-\newcommand{\ugLangLoopsNumber}{5.4.}
-
-@
-\subsection{5.4. Loops}
-\label{ugLangLoopsPage}
-\begin{itemize}
-\item ugLangLoopsCompIntPage \ref{ugLangLoopsCompIntPage} on
-page~\pageref{ugLangLoopsCompIntPage}
-\item ugLangLoopsReturnPage \ref{ugLangLoopsReturnPage} on
-page~\pageref{ugLangLoopsReturnPage}
-\item ugLangLoopsBreakPage \ref{ugLangLoopsBreakPage} on
-page~\pageref{ugLangLoopsBreakPage}
-\item ugLangLoopsBreakVsPage \ref{ugLangLoopsBreakVsPage} on
-page~\pageref{ugLangLoopsBreakVsPage}
-\item ugLangLoopsBreakMorePage \ref{ugLangLoopsBreakMorePage} on
-page~\pageref{ugLangLoopsBreakMorePage}
-\item ugLangLoopsIteratePage \ref{ugLangLoopsIteratePage} on
-page~\pageref{ugLangLoopsIteratePage}
-\item ugLangLoopsWhilePage \ref{ugLangLoopsWhilePage} on
-page~\pageref{ugLangLoopsWhilePage}
-\item ugLangLoopsForInPage \ref{ugLangLoopsForInPage} on
-page~\pageref{ugLangLoopsForInPage}
-\item ugLangLoopsForInNMPage \ref{ugLangLoopsForInNMPage} on
-page~\pageref{ugLangLoopsForInNMPage}
-\item ugLangLoopsForInNMSPage \ref{ugLangLoopsForInNMSPage} on
-page~\pageref{ugLangLoopsForInNMSPage}
-\item ugLangLoopsForInNPage \ref{ugLangLoopsForInNPage} on
-page~\pageref{ugLangLoopsForInNPage}
-\item ugLangLoopsForInXLPage \ref{ugLangLoopsForInXLPage} on
-page~\pageref{ugLangLoopsForInXLPage}
-\item ugLangLoopsForInPredPage \ref{ugLangLoopsForInPredPage} on
-page~\pageref{ugLangLoopsForInPredPage}
-\item ugLangLoopsParPage \ref{ugLangLoopsParPage} on
-page~\pageref{ugLangLoopsParPage}
-\end{itemize}
-\index{pages!ugLangLoopsPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsPage}
-\index{ugLangLoopsPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsPage}{5.4. Loops}
-\beginscroll
-
-A \spadgloss{loop} is an expression that contains another expression,
-called the {\it loop body}, which is to be evaluated zero or more
-times.
-All loops contain the \axiom{repeat} keyword and return \void{}.
-Loops can contain inner loops to any depth.
-
-\beginImportant
-The most basic loop is of the form
-\centerline{{\axiom{repeat} {\it loopBody}}}
-Unless {\it loopBody} contains a \axiom{break} or \axiom{return} expression,
-the loop repeats forever.
-The value returned by the loop is \void{}.
-\endImportant
-
-\beginmenu
-    \menudownlink{{5.4.1. Compiling vs. Interpreting Loops}}
-{ugLangLoopsCompIntPage}
-    \menudownlink{{5.4.2. return in Loops}}{ugLangLoopsReturnPage}
-    \menudownlink{{5.4.3. break in Loops}}{ugLangLoopsBreakPage}
-    \menudownlink{{5.4.4. break vs. {\tt =>} in Loop Bodies}}
-{ugLangLoopsBreakVsPage}
-    \menudownlink{{5.4.5. More Examples of break}}{ugLangLoopsBreakMorePage}
-    \menudownlink{{5.4.6. iterate in Loops}}{ugLangLoopsIteratePage}
-    \menudownlink{{5.4.7. while Loops}}{ugLangLoopsWhilePage}
-    \menudownlink{{5.4.8. for Loops}}{ugLangLoopsForInPage}
-    \menudownlink{{5.4.9. for i in n..m repeat}}{ugLangLoopsForInNMPage}
-    \menudownlink{{5.4.10. for i in n..m by s repeat}}{ugLangLoopsForInNMSPage}
-    \menudownlink{{5.4.11. for i in n.. repeat}}{ugLangLoopsForInNPage}
-    \menudownlink{{5.4.12. for x in l repeat}}{ugLangLoopsForInXLPage}
-    \menudownlink{{5.4.13. ``Such that'' Predicates}}{ugLangLoopsForInPredPage}
-    \menudownlink{{5.4.14. Parallel Iteration}}{ugLangLoopsParPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsCompIntTitle}{Compiling vs. Interpreting Loops}
-\newcommand{\ugLangLoopsCompIntNumber}{5.4.1.}
-
-@
-\subsection{5.4.1. Compiling vs. Interpreting Loops}
-\label{ugLangLoopsCompIntPage}
-\begin{itemize}
-\item ugUserCompIntPage \ref{ugUserCompIntPage} on
-page~\pageref{ugUserCompIntPage}
-\end{itemize}
-\index{pages!ugLangLoopsCompIntPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsCompIntPage}
-\index{ugLangLoopsCompIntPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsCompIntPage}{5.4.1. Compiling vs. Interpreting Loops}
-\beginscroll
-
-Axiom tries to determine completely the type of every
-object in a loop and then to translate the loop body to LISP or even to
-machine code.
-This translation is called \spadglossSee{compilation}{compiler}.
-
-If Axiom decides that it cannot compile the loop, it issues a
-message stating the problem and then the following message:
-%
-\centerline{{{\bf We will attempt to step through and interpret the code.}}}
-%
-It is still possible that Axiom can evaluate the loop but in
-\spadgloss{interpret-code mode}.
-See \downlink{``\ugUserCompIntTitle''}{ugUserCompIntPage} 
-in Section \ugUserCompIntNumber\ignore{ugUserCompInt} where 
-this is discussed in terms
-of compiling versus interpreting functions.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsReturnTitle}{return in Loops}
-\newcommand{\ugLangLoopsReturnNumber}{5.4.2.}
-
-@
-\subsection{5.4.2. return in Loops}
-\label{ugLangLoopsReturnPage}
-\begin{itemize}
-\item ugUserBlocksPage \ref{ugUserBlocksPage} on
-page~\pageref{ugUserBlocksPage}
-\end{itemize}
-\index{pages!ugLangLoopsReturnPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsReturnPage}
-\index{ugLangLoopsReturnPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsReturnPage}{5.4.2. return in Loops}
-\beginscroll
-
-A \axiom{return} expression is used to exit a function with
-a particular value.
-In particular, if a \axiom{return} is in a loop within the
-\spadkey{return}
-function, the loop is terminated whenever the \axiom{return}
-is evaluated.
-%> This is a bug! The compiler should never accept allow
-%> Void to be the return type of a function when it has to use
-%> resolve to determine it.
-\xtc{
-Suppose we start with this.
-}{
-\begin{spadsrc}[\bound{f}]
-f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-\end{spadsrc}
-}
-\xtc{
-When \axiom{factorial(i)} is big enough, control passes from
-inside the loop all the way outside the function, returning the
-value of \axiom{i} (or so we think).
-}{
-\spadpaste{f() \free{f}}
-}
-
-What went wrong?
-Isn't it obvious that this function should return an integer?
-Well, Axiom makes no attempt to analyze the structure of a
-loop to determine if it always returns a value because, in
-general, this is impossible.
-So Axiom has this simple rule: the type of the function is
-determined by the type of its body, in this case a block.
-The normal value of a block is the value of its last expression,
-in this case, a loop.
-And the value of every loop is \void{}!
-So the return type of \userfun{f} is \axiomType{Void}.
-
-There are two ways to fix this.
-The best way is for you to tell Axiom what the return type
-of \axiom{f} is.
-You do this by giving \axiom{f} a declaration \axiom{f: () ->
-Integer} prior to calling for its value.
-This tells Axiom: ``trust me---an integer is returned.''
-We'll explain more about this in the next chapter.
-Another clumsy way is to add a dummy expression as follows.
-
-\xtc{
-Since we want an integer, let's stick in a dummy final expression that is
-an integer and will never be evaluated.
-}{
-\begin{spadsrc}[\bound{f1}]
-f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-  0
-\end{spadsrc}
-}
-\xtc{
-When we try \userfun{f} again we get what we wanted.
-See
-\downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} 
-in Section \ugUserBlocksNumber\ignore{ugUserBlocks}
-for more information.
-}{
-\spadpaste{f() \free{f1}}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsBreakTitle}{break in Loops}
-\newcommand{\ugLangLoopsBreakNumber}{5.4.3.}
-
-@
-\subsection{5.4.3. break in Loops}
-\label{ugLangLoopsBreakPage}
-\begin{itemize}
-\item ugLangLoopsReturnPage \ref{ugLangLoopsReturnPage} on
-page~\pageref{ugLangLoopsReturnPage}
-\end{itemize}
-\index{pages!ugLangLoopsBreakPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsBreakPage}
-\index{ugLangLoopsBreakPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsBreakPage}{5.4.3. break in Loops}
-\beginscroll
-
-The \axiom{break} keyword is often more useful
-\spadkey{break}
-in terminating
-a loop.
-%>  and more in keeping with the ideas of structured programming.
-A \axiom{break} causes control to transfer to the expression
-immediately following the loop.
-As loops always return \void{},
-you cannot return a value with \axiom{break}.
-That is, \axiom{break} takes no argument.
-
-\xtc{
-This example is a modification of the last example in
-\texht{the previous section}{
-\downlink{``\ugLangLoopsReturnTitle''}{ugLangLoopsReturnPage} 
-in Section \ugLangLoopsReturnNumber\ignore{ugLangLoopsReturn}}.
-Instead of using \axiom{return}, we'll use \axiom{break}.
-}{
-\begin{spadsrc}[\bound{f1}]
-f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then break
-    i := i + 1
-  i
-\end{spadsrc}
-}
-\xtc{
-The loop terminates when \axiom{factorial(i)} gets big enough,
-the last line of the function evaluates to the corresponding ``good''
-value of \axiom{i}, and the function terminates, returning that value.
-}{
-\spadpaste{f() \free{f1}}
-}
-\xtc{
-You can only use \axiom{break} to terminate the evaluation of one loop.
-Let's consider a loop within a loop, that is, a loop with a nested loop.
-First, we initialize two counter variables.
-}{
-\spadpaste{(i,j) := (1, 1) \bound{i}\bound{j}}
-}
-\xtc{
-Nested loops must have multiple \axiom{break}
-expressions at the appropriate nesting level.
-How would you rewrite this so \axiom{(i + j) > 10} is only evaluated once?
-}{
-\begin{spadsrc}[\free{i j}]
-repeat
-  repeat
-    if (i + j) > 10 then break
-    j := j + 1
-  if (i + j) > 10 then break
-  i := i + 1
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsBreakVsTitle}{break vs. {\tt =>} in Loop Bodies}
-\newcommand{\ugLangLoopsBreakVsNumber}{5.4.4.}
-
-@
-\subsection{5.4.4. break vs. {\tt =>} in Loop Bodies}
-\label{ugLangLoopsBreakVsPage}
-\index{pages!ugLangLoopsBreakVsPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsBreakVsPage}
-\index{ugLangLoopsBreakVsPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsBreakVsPage}{5.4.4. break vs. {\tt =>} in Loop Bodies}
-\beginscroll
-
-Compare the following two loops:
-
+\subsection{Asp33 Example Code}
+\label{Asp33ExampleCode}
+\index{pages!Asp33ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp33ExampleCode}
+\index{Asp33ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp33ExampleCode}{Asp33 Example Code}
 \begin{verbatim}
-i := 1                            i := 1
-repeat                            repeat
-  i := i + 1                        i := i + 1
-  i > 3 => i                        if i > 3 then break
-  output(i)                         output(i)
+      SUBROUTINE REPORT(X,V,JINT)
+      DOUBLE PRECISION V(3),X
+      INTEGER JINT
+      RETURN
+      END
 \end{verbatim}
-
-In the example on the left, the values
-\mathOrSpad{2} and \mathOrSpad{3} for \axiom{i} are displayed
-but then the \axiomSyntax{=>} does not allow control to reach the call to
-\axiomFunFrom{output}{OutputForm} again.
-The loop will not terminate
-until you run out of space or interrupt the execution.
-The variable \axiom{i} will continue to be incremented because
-the \axiomSyntax{=>} only means to leave the {\it block,} not the loop.
-
-In the example on the right,
-upon reaching \mathOrSpad{4}, the \axiom{break} will be
-executed, and both the block and the loop will terminate.
-This is one of the reasons why both \axiomSyntax{=>} and \axiom{break} are
-provided.
-Using a \axiom{while} clause (see below) with the \axiomSyntax{=>}
-\spadkey{while}
-lets you simulate the action of \axiom{break}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsBreakMoreTitle}{More Examples of break}
-\newcommand{\ugLangLoopsBreakMoreNumber}{5.4.5.}
-
-@
-\subsection{5.4.5. More Examples of break}
-\label{ugLangLoopsBreakMorePage}
-\begin{itemize}
-\item ugLangLoopsForInPage \ref{ugLangLoopsForInPage} on
-page~\pageref{ugLangLoopsForInPage}
-\end{itemize}
-\index{pages!ugLangLoopsBreakMorePage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsBreakMorePage}
-\index{ugLangLoopsBreakMorePage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsBreakMorePage}{5.4.5. More Examples of break}
-\beginscroll
-
-Here we give four examples of \axiom{repeat} loops that
-terminate when a value exceeds a given bound.
-
-\texht{\vskip 1pc}{}
-\xtc{
-First, initialize \axiom{i} as the loop counter.
-}{
-\spadpaste{i := 0 \bound{i}}
-}
-\xtc{
-Here is the first loop.
-When the square of \axiom{i} exceeds \axiom{100}, the loop terminates.
-}{
-\begin{spadsrc}[\free{i}\bound{i1}]
-repeat
-  i := i + 1
-  if i**2 > 100 then break
-\end{spadsrc}
-}
-\xtc{
-Upon completion, \axiom{i} should have the value \axiom{11}.
-}{
-\spadpaste{i \free{i1}}
-}
-%
-%
-\xtc{
-Do the same thing except use \axiomSyntax{=>} instead
-an \axiom{if-then} expression.
-}{
-\spadpaste{i := 0 \bound{i2}}
-}
-\xtc{
-}{
-\begin{spadsrc}[\free{i2}\bound{i3}]
-repeat
-  i := i + 1
-  i**2 > 100 => break
-\end{spadsrc}
-}
-\xtc{
-}{
-\spadpaste{i \free{i3}}
-}
-%
-%
-\xtc{
-As a third example, we use a simple loop to compute \axiom{n!}.
-}{
-\spadpaste{(n, i, f) := (100, 1, 1) \bound{n}\bound{i4}\bound{f}}
-}
-\xtc{
-Use \axiom{i} as the iteration variable and \axiom{f}
-to compute the factorial.
-}{
-\begin{spadsrc}[\bound{f1}\bound{i5}\free{f i4 n}]
-repeat
-  if i > n then break
-  f := f * i
-  i := i + 1
-\end{spadsrc}
-}
-\xtc{
-Look at the value of \axiom{f}.
-}{
-\spadpaste{f \free{f1}}
-}
-%
-%
-\xtc{
-Finally, we show an example of nested loops.
-First define a four by four matrix.
-}{
-\spadpaste{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]] \bound{m2}}
-}
-\xtc{
-Next, set row counter \axiom{r} and column counter \axiom{c} to
-\mathOrSpad{1}.
-Note: if we were writing a function, these would all be local
-variables rather than global workspace variables.
-}{
-\spadpaste{(r, c) := (1, 1) \bound{r}\bound{c}}
-}
-\xtc{
-Also, let \axiom{lastrow} and
-\axiom{lastcol} be the final row and column index.
-}{
-\spadpaste{(lastrow, lastcol) := (nrows(m), ncols(m)) \bound{lastrow}\bound{lastcol}\free{m2}}
-}
-%
-\xtc{
-Scan the rows looking for the first negative element.
-We remark that you can reformulate this example in a better, more
-concise form by using a \axiom{for} clause with \axiom{repeat}.
-See
-\downlink{``\ugLangLoopsForInTitle''}{ugLangLoopsForInPage} 
-in Section \ugLangLoopsForInNumber\ignore{ugLangLoopsForIn}
-for more information.
-}{
-\begin{spadsrc}[\free{m2 r c lastrow lastcol}]
-repeat
-  if r > lastrow then break
-  c := 1
-  repeat
-    if c > lastcol then break
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsIterateTitle}{iterate in Loops}
-\newcommand{\ugLangLoopsIterateNumber}{5.4.6.}
-
-@
-\subsection{5.4.6. iterate in Loops}
-\label{ugLangLoopsIteratePage}
-\index{pages!ugLangLoopsIteratePage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsIteratePage}
-\index{ugLangLoopsIteratePage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsIteratePage}{5.4.6. iterate in Loops}
-\beginscroll
-
-Axiom provides an \axiom{iterate} expression that
-\spadkey{iterate}
-skips over the remainder of a loop body and starts the next loop iteration.
-\xtc{
-We first initialize a counter.
-}{
-\spadpaste{i := 0 \bound{i}}
-}
-\xtc{
-Display the even integers from \axiom{2} to \axiom{5}.
-}{
-\begin{spadsrc}[\free{i}]
-repeat
-  i := i + 1
-  if i > 5 then break
-  if odd?(i) then iterate
-  output(i)
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsWhileTitle}{while Loops}
-\newcommand{\ugLangLoopsWhileNumber}{5.4.7.}
-
-@
-\subsection{5.4.7. while Loops}
-\label{ugLangLoopsWhilePage}
-\index{pages!ugLangLoopsWhilePage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsWhilePage}
-\index{ugLangLoopsWhilePage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsWhilePage}{5.4.7. while Loops}
-\beginscroll
-
-The \axiom{repeat} in a loop can be modified by adding one or
-more \axiom{while} clauses.
-\spadkey{while}
-Each clause contains a \spadgloss{predicate}
-immediately following the \axiom{while} keyword.
-The predicate is tested {\it before}
-the evaluation of the body of the loop.
-The loop body is evaluated whenever the predicates in a \axiom{while}
-clause are all \axiom{true}.
-
-\beginImportant
-The syntax for a simple loop using \axiom{while} is
-\centerline{{\axiom{while} {\it predicate} \axiom{repeat} {\it loopBody}}}
-The {\it predicate} is evaluated before {\it loopBody} is evaluated.
-A \axiom{while} loop terminates immediately when {\it predicate}
-evaluates to \axiom{false} or when a \axiom{break} or \axiom{return}
-expression is evaluated in {\it loopBody}.
-The value returned by the loop is \void{}.
-\endImportant
-
-\xtc{
-Here is a simple example of using \axiom{while} in a loop.
-We first initialize the counter.
-}{
-\spadpaste{i := 1 \bound{i}}
-}
-\xtc{
-The steps involved in computing this example are
-(1) set \axiom{i} to \axiom{1}, (2) test the condition \axiom{i < 1} and
-determine that it is not true, and (3) do not evaluate the
-loop body and therefore do not display \axiom{"hello"}.
-}{
-\begin{spadsrc}[\free{i}]
-while i < 1 repeat
-  output "hello"
-  i := i + 1
-\end{spadsrc}
-}
-\xtc{
-If you have multiple predicates to be tested use the
-logical \axiom{and} operation to separate them.
-Axiom evaluates these predicates from left to right.
-}{
-\spadpaste{(x, y) := (1, 1) \bound{x}\bound{y}}
-}
-\xtc{
-}{
-\begin{spadsrc}[\free{x y}]
-while x < 4 and y < 10 repeat
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\end{spadsrc}
-}
-\xtc{
-A \axiom{break} expression can be included in a loop body to terminate a
-loop even if the predicate in any \axiom{while} clauses are not \axiom{false}.
-}{
-\spadpaste{(x, y) := (1, 1) \bound{x1}\bound{y1}}
-}
-\xtc{
-This loop has multiple \axiom{while} clauses and the loop terminates
-before any one of their conditions evaluates to \axiom{false}.
-}{
-\begin{spadsrc}[\free{x1 y1}]
-while x < 4 while y < 10 repeat
-  if x + y > 7 then break
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\end{spadsrc}
-}
-\xtc{
-Here's a different version of the nested loops that looked
-for the first negative element in a matrix.
-}{
-\spadpaste{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]] \bound{m2}}
-}
-\xtc{
-Initialized the row index to \axiom{1} and
-get the number of rows and columns.
-If we were writing a function, these would all be
-local variables.
-}{
-\spadpaste{r := 1 \bound{r}}
-}
-\xtc{
-}{
-\spadpaste{(lastrow, lastcol) := (nrows(m), ncols(m)) \bound{lastrow}\bound{lastcol}\free{m2}}
-}
-%
-\xtc{
-Scan the rows looking for the first negative element.
-}{
-\begin{spadsrc}[\free{m2 r lastrow lastcol}]
-while r <= lastrow repeat
-  c := 1  -- index of first column
-  while c <= lastcol repeat
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInTitle}{for Loops}
-\newcommand{\ugLangLoopsForInNumber}{5.4.8.}
-
-@
-\subsection{5.4.8. for Loops}
-\label{ugLangLoopsForInPage}
-\index{pages!ugLangLoopsForInPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInPage}
-\index{ugLangLoopsForInPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInPage}{5.4.8. for Loops}
-\beginscroll
-
-Axiom provides the \axiom{for}
-\spadkey{for}
-and \axiom{in}
-\spadkey{in}
-keywords in \axiom{repeat} loops,
-allowing you to iterate across all
-elements of a list, or to have a variable take on integral values
-from a lower bound to an upper bound.
-We shall refer to these modifying clauses of \axiom{repeat} loops as
-\axiom{for} clauses.
-These clauses can be present in addition to \axiom{while} clauses.
-As with all other types of \axiom{repeat} loops, \axiom{break} can
-\spadkey{break}
-be used to prematurely terminate the evaluation of the loop.
-
-\beginImportant
-The syntax for a simple loop using \axiom{for} is
-\centerline{{\axiom{for} {\it iterator} \axiom{repeat} {\it loopBody}}}
-The {\it iterator} has several forms.
-Each form has an end test which is evaluated
-before {\it loopBody} is evaluated.
-A \axiom{for} loop terminates immediately when the end test
-succeeds (evaluates to \axiom{true}) or when a \axiom{break} or \axiom{return}
-expression is evaluated in {\it loopBody}.
-The value returned by the loop is \void{}.
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInNMTitle}{for i in n..m repeat}
-\newcommand{\ugLangLoopsForInNMNumber}{5.4.9.}
-
-@
-\subsection{5.4.9. for i in n..m repeat}
-\label{ugLangLoopsForInNMPage}
-\begin{itemize}
-\item SegmentXmpPage \ref{SegmentXmpPage} on
-page~\pageref{SegmentXmpPage}
-\end{itemize}
-\index{pages!ugLangLoopsForInNMPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInNMPage}
-\index{ugLangLoopsForInNMPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInNMPage}{5.4.9. for i in n..m repeat}
-\beginscroll
-
-If \axiom{for}
-\spadkey{for}
-is followed by a variable name, the \axiom{in}
-\spadkey{in}
-keyword and then an integer segment of the form \axiom{n..m},
-the end test for this loop is the predicate \axiom{i > m}.
-The body of the loop is evaluated \axiom{m-n+1} times if this
-number is greater than 0.
-If this number is less than or equal to 0, the loop body is not evaluated
-at all.
-
-The variable \axiom{i} has the value
-\axiom{n, n+1, ..., m} for successive iterations
-of the loop body.
-The loop variable is a \spadgloss{local variable}
-within the loop body: its value is not available outside the loop body
-and its value and type within the loop body completely mask any outer
-definition of a variable with the same name.
-
-%
-\xtc{
-This loop prints the values of
-\texht{${10}^3$, ${11}^3$, and $12^3$}{\axiom{10**3, 11**3, and 12**3}}:
-}{
-\spadpaste{for i in 10..12 repeat output(i**3)}
-}
-%
-\xtc{
-Here is a sample list.
-}{
-\spadpaste{a := [1,2,3] \bound{a}}
-}
-\xtc{
-Iterate across this list, using \axiomSyntax{.} to access the elements of a list and
-the \axiomFun{\#} operation to count its elements.
-}{
-\spadpaste{for i in 1..\#a repeat output(a.i) \free{a}}
-}
-%
-This type of iteration is applicable to anything that uses \axiomSyntax{.}.
-You can also use it with functions that use indices to extract elements.
-%
-\xtc{
-Define \axiom{m} to be a matrix.
-}{
-\spadpaste{m := matrix [[1,2],[4,3],[9,0]] \bound{m}}
-}
-\xtc{
-Display the rows of \axiom{m}.
-}{
-\spadpaste{for i in 1..nrows(m) repeat output row(m,i) \free{m}}
-}
-%
-You can use \axiom{iterate} with \axiom{for}-loops.
-\spadkey{iterate}
-\xtc{
-Display the even integers in a segment.
-}{
-\begin{spadsrc}
-for i in 1..5 repeat
-  if odd?(i) then iterate
-  output(i)
-\end{spadsrc}
-}
-
-See \downlink{`Segment'}{SegmentXmpPage}\ignore{Segment} 
-for more information about segments.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInNMSTitle}{for i in n..m by s repeat}
-\newcommand{\ugLangLoopsForInNMSNumber}{5.4.10.}
-
-@
-\subsection{5.4.10. for i in n..m by s repeat}
-\label{ugLangLoopsForInNMSPage}
-\index{pages!ugLangLoopsForInNMSPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInNMSPage}
-\index{ugLangLoopsForInNMSPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInNMSPage}{5.4.10. for i in n..m by s repeat}
-\beginscroll
-
-By default, the difference between values taken on by a variable in loops
-such as \axiom{for i in n..m repeat ...} is \mathOrSpad{1}.
-It is possible to supply another, possibly negative, step value by using
-the \axiom{by}
-\spadkey{by}
-keyword along with \axiom{for} and \axiom{in}.
-Like the upper and lower bounds, the step value following the
-\axiom{by} keyword must be an integer.
-Note that the loop
-\axiom{for i in 1..2 by 0 repeat output(i)}
-will not terminate by itself, as the step value does not change the index
-from its initial value of \mathOrSpad{1}.
-
-\xtc{
-This expression displays the odd integers between two bounds.
-}{
-\spadpaste{for i in 1..5 by 2 repeat output(i)}
-}
-\xtc{
-Use this to display the numbers in reverse order.
-}{
-\spadpaste{for i in 5..1 by -2 repeat output(i)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInNTitle}{for i in n.. repeat}
-\newcommand{\ugLangLoopsForInNNumber}{5.4.11.}
-
-@
-\subsection{5.4.11. for i in n.. repeat}
-\label{ugLangLoopsForInNPage}
-\index{pages!ugLangLoopsForInNPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInNPage}
-\index{ugLangLoopsForInNPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInNPage}{5.4.11. for i in n.. repeat}
-\beginscroll
-
-If the value after the \axiomSyntax{..}
-is omitted, the loop has no end test.
-A potentially infinite loop is thus created.
-The variable is given the successive values \axiom{n, n+1, n+2, ...}
-and the loop is terminated only if a \axiom{break} or \axiom{return}
-expression is evaluated in the loop body.
-However you may also add some other modifying clause on the
-\axiom{repeat} (for example, a \axiom{while} clause) to stop the loop.
-
-\xtc{
-This loop displays the integers greater than or equal to \axiom{15}
-and less than the first prime greater than \axiom{15}.
-}{
-\spadpaste{for i in 15.. while not prime?(i) repeat output(i)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInXLTitle}{for x in l repeat}
-\newcommand{\ugLangLoopsForInXLNumber}{5.4.12.}
-
-@
-\subsection{5.4.12. for x in l repeat}
-\label{ugLangLoopsForInXLPage}
-\index{pages!ugLangLoopsForInXLPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInXLPage}
-\index{ugLangLoopsForInXLPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInXLPage}{5.4.12. for x in l repeat}
-\beginscroll
-
-Another variant of the \axiom{for} loop has the form:
-\centerline{{{\it \axiom{for} x \axiom{in} list \axiom{repeat} loopBody}}}
-This form is used when you want to iterate directly over the
-elements of a list.
-In this form of the \axiom{for} loop, the variable
-\axiom{x} takes on the value of each successive element in \axiom{l}.
-The end test is most simply stated in English: ``are there no more
-\axiom{x} in \axiom{l}?''
-
-\xtc{
-If \axiom{l} is this list,
-}{
-\spadpaste{l := [0,-5,3] \bound{l}}
-}
-\xtc{
-display all elements of \axiom{l}, one per line.
-}{
-\spadpaste{for x in l repeat output(x) \free{l}}
-}
-
-Since the list constructing expression \axiom{expand [n..m]} creates the
-list \axiom{[n, n+1, ..., m]}\footnote{This list is empty if \axiom{n >
-m}.}, you might be tempted to think that the loops
-\begin{verbatim}
-for i in n..m repeat output(i)
-\end{verbatim}
-and
+\subsection{Asp34 Example Code}
+\label{Asp34ExampleCode}
+\index{pages!Asp34ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp34ExampleCode}
+\index{Asp34ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp34ExampleCode}{Asp34 Example Code}
 \begin{verbatim}
-for x in expand [n..m] repeat output(x)
+      SUBROUTINE MSOLVE(IFLAG,N,X,Y,RWORK,LRWORK,IWORK,LIWORK)
+      DOUBLE PRECISION RWORK(LRWORK),X(N),Y(N)
+      INTEGER I,J,N,LIWORK,IFLAG,LRWORK,IWORK(LIWORK)
+      DOUBLE PRECISION W1(3),W2(3),MS(3,3)
+      IFLAG=-1
+      MS(1,1)=2.0D0
+      MS(1,2)=1.0D0
+      MS(1,3)=0.0D0
+      MS(2,1)=1.0D0
+      MS(2,2)=2.0D0
+      MS(2,3)=1.0D0
+      MS(3,1)=0.0D0
+      MS(3,2)=1.0D0
+      MS(3,3)=2.0D0
+      CALL F04ASF(MS,N,X,N,Y,W1,W2,IFLAG)
+      IFLAG=-IFLAG
+      RETURN
+      END
 \end{verbatim}
-are equivalent.
-The second form first creates the list
-\axiom{expand [n..m]} (no matter how large it might be) and
-then does the iteration.
-The first form potentially runs in much less space, as the index variable
-\axiom{i} is simply incremented once per loop and the list is not actually
-created.
-Using the first form is much more efficient.
-%
-\xtc{
-Of course, sometimes you really want to iterate across a specific list.
-This displays each of the factors of \axiom{2400000}.
-}{
-\spadpaste{for f in factors(factor(2400000)) repeat output(f)}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsForInPredTitle}{``Such that'' Predicates}
-\newcommand{\ugLangLoopsForInPredNumber}{5.4.13.}
-
-@
-\subsection{5.4.13. ``Such that'' Predicates}
-\label{ugLangLoopsForInPredPage}
-\index{pages!ugLangLoopsForInPredPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsForInPredPage}
-\index{ugLangLoopsForInPredPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsForInPredPage}{5.4.13. ``Such that'' Predicates}
-\beginscroll
-
-A \axiom{for} loop can be followed by a \axiomSyntax{|} and then a
-predicate.
-The predicate qualifies the use of the values from the iterator following
-the \axiom{for}.
-Think of the vertical bar
-\axiomSyntax{|} as the phrase ``such that.''
-\xtc{
-This loop expression
-prints out the integers \axiom{n} in the given segment
-such that \axiom{n} is odd.
-}{
-\spadpaste{for n in 0..4 | odd? n repeat output n}
-}
-
-\beginImportant
-A \axiom{for} loop can also be written
-\centerline{{\axiom{for} {\it iterator} \axiom{|} {\it predicate}  \axiom{repeat} {\it loopBody}}}
-which is equivalent to:
-\centerline{{\axiom{for} {\it iterator} \axiom{repeat if}}}
-\centerline{{{\it predicate} \axiom{then} {\it loopBody} \axiom{else} \axiom{iterate}}}
-\endImportant
-
-The predicate need not refer only to the variable in the \axiom{for} clause:
-any variable in an outer scope can be part of the predicate.
-\xtc{
-In this example, the predicate on the inner \axiom{for} loop uses
-\axiom{i} from the outer loop and the \axiom{j} from the \axiom{for}
-clause that it directly modifies.
-}{
-\begin{spadsrc}
-for i in 1..50 repeat
-  for j in 1..50 | factorial(i+j) < 25 repeat
-    output [i,j]
-\end{spadsrc}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangLoopsParTitle}{Parallel Iteration}
-\newcommand{\ugLangLoopsParNumber}{5.4.14.}
-
-@
-\subsection{5.4.14. Parallel Iteration}
-\label{ugLangLoopsParPage}
-\begin{itemize}
-\item ugLangLoopsForInPredPage \ref{ugLangLoopsForInPredPage} on
-page~\pageref{ugLangLoopsForInPredPage}
-\end{itemize}
-\index{pages!ugLangLoopsParPage!ug05.ht}
-\index{ug05.ht!pages!ugLangLoopsParPage}
-\index{ugLangLoopsParPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangLoopsParPage}{5.4.14. Parallel Iteration}
-\beginscroll
-
-The last example of
-\texht{the previous section}{
-\downlink{``\ugLangLoopsForInPredTitle''}{ugLangLoopsForInPredPage} 
-in Section \ugLangLoopsForInPredNumber\ignore{ugLangLoopsForInPred}}
-gives an example of
-\spadgloss{nested iteration}: a loop is contained
-in another loop.
-Sometimes you want to iterate across two lists in parallel, or perhaps
-you want to traverse a list while incrementing a variable.
-
-\beginImportant
-The general syntax of a repeat loop is
-\centerline{{{\tt \subscriptIt{iterator}{1} \subscriptIt{iterator}{2} \ldots \subscriptIt{iterator}{N} repeat {\it loopBody}}}}
-where each {\it iterator} is either a \axiom{for} or a \axiom{while} clause.
-The loop terminates immediately when the end test of any {\it iterator}
-succeeds or when a \axiom{break} or \axiom{return} expression is evaluated
-in {\it loopBody}.
-The value returned by the loop is \void{}.
-\endImportant
-
-\xtc{
-Here we write a loop to iterate across
-two lists, computing the sum of the pairwise product
-of elements. Here is the first list.
-}{
-\spadpaste{l := [1,3,5,7] \bound{l}}
-}
-\xtc{
-And the second.
-}{
-\spadpaste{m := [100,200] \bound{m}}
-}
-\xtc{
-The initial value of the sum counter.
-}{
-\spadpaste{sum := 0 \bound{sum}}
-}
-\xtc{
-The last two elements of \axiom{l} are not used in the calculation
-because \axiom{m} has two fewer elements than \axiom{l}.
-}{
-\begin{spadsrc}[\bound{doit}\free{sum l m}]
-for x in l for y in m repeat
-    sum := sum + x*y
-\end{spadsrc}
-}
-\xtc{
-Display the ``dot product.''
-}{
-\spadpaste{sum \free{doit}}
-}
-
-\xtc{
-Next, we write a loop to compute the sum of the products of the loop 
-elements with
-their positions in the loop.
-}{
-\spadpaste{l := [2,3,5,7,11,13,17,19,23,29,31,37] \bound{l1}}
-}
-\xtc{
-The initial sum.
-}{
-\spadpaste{sum := 0 \bound{sum1}}
-}
-\xtc{
-Here looping stops when the list \axiom{l} is exhausted, even though
-the \axiom{for i in 0..} specifies no terminating condition.
-}{
-\spadpaste{for i in 0.. for x in l repeat sum := i * x \bound{doit1}\free{sum1 l1}}
-}
-\xtc{
-Display this weighted sum.
-}{
-\spadpaste{sum \free{doit1}}
-}
-
-When \axiomSyntax{|} is used to qualify any of the \axiom{for} clauses in a
-parallel iteration, the variables in the predicates can be from an outer
-scope or from a \axiom{for} clause in or to the left of a modified clause.
-
-This is correct:
-\begin{verbatim}
-for i in 1..10 repeat
-  for j in 200..300 | odd? (i+j) repeat
-    output [i,j]
-\end{verbatim}
-This is not correct since the variable \axiom{j} has not been
-defined outside the inner loop.
+\subsection{Asp35 Example Code}
+\label{Asp35ExampleCode}
+\index{pages!Asp35ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp35ExampleCode}
+\index{Asp35ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp35ExampleCode}{Asp35 Example Code}
 \begin{verbatim}
-for i in 1..10 | odd? (i+j) repeat  -- wrong, j not defined
-  for j in 200..300 repeat
-    output [i,j]
+      SUBROUTINE FCN(N,X,FVEC,FJAC,LDFJAC,IFLAG)
+      DOUBLE PRECISION X(N),FVEC(N),FJAC(LDFJAC,N)
+      INTEGER LDFJAC,N,IFLAG
+      IF(IFLAG.EQ.1)THEN
+        FVEC(1)=(-1.0D0*X(2))+X(1)
+        FVEC(2)=(-1.0D0*X(3))+2.0D0*X(2)
+        FVEC(3)=3.0D0*X(3)
+      ELSEIF(IFLAG.EQ.2)THEN
+        FJAC(1,1)=1.0D0
+        FJAC(1,2)=-1.0D0
+        FJAC(1,3)=0.0D0
+        FJAC(2,1)=0.0D0
+        FJAC(2,2)=2.0D0
+        FJAC(2,3)=-1.0D0
+        FJAC(3,1)=0.0D0
+        FJAC(3,2)=0.0D0
+        FJAC(3,3)=3.0D0
+      ENDIF
+      END
 \end{verbatim}
-
-%>% *********************************************************************
-%>\head{subsection}{Mixing Loop Modifiers}{ugLangLoopsMix}
-%>% *********************************************************************
-
-\xtc{
-This example shows that it is possible to mix several of the
-forms of \axiom{repeat} modifying clauses on a loop.
-}{
-\begin{spadsrc}
-for i in 1..10
-    for j in 151..160 | odd? j
-      while i + j < 160 repeat
-        output [i,j]
-\end{spadsrc}
-}
-%
-Here are useful rules for composing loop expressions:
-\indent{4}
-\beginitems
-\item[1. ] \axiom{while} predicates can only refer to variables that
-are global (or in an outer scope)
-or that are defined in \axiom{for} clauses to the left of the
-predicate.
-\item[2. ] A ``such that'' predicate (something following \axiomSyntax{|})
-must directly follow a \axiom{for} clause and can only refer to
-variables that are global (or in an outer scope)
-or defined in the modified \axiom{for} clause
-or any \axiom{for} clause to the left.
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug05.ht>>=
-\newcommand{\ugLangItsTitle}{Creating Lists and Streams with Iterators}
-\newcommand{\ugLangItsNumber}{5.5.}
-
-@
-\subsection{5.5. Creating Lists and Streams with Iterators}
-\label{ugLangItsPage}
-\begin{itemize}
-\item ugLangLoopsPage \ref{ugLangLoopsPage} on
-page~\pageref{ugLangLoopsPage}
-\item ListXmpPage \ref{ListXmpPage} on
-page~\pageref{ListXmpPage}
-\item StreamXmpPage \ref{StreamXmpPage} on
-page~\pageref{StreamXmpPage}
-\end{itemize}
-\index{pages!ugLangItsPage!ug05.ht}
-\index{ug05.ht!pages!ugLangItsPage}
-\index{ugLangItsPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangItsPage}{5.5. Creating Lists and Streams with Iterators}
-\beginscroll
-
-All of what we did for loops in 
-\downlink{``\ugLangLoopsTitle''}{ugLangLoopsPage} 
-in Section \ugLangLoopsNumber\ignore{ugLangLoops}
-can be transformed into expressions that create lists
-and streams.
-The \axiom{repeat,} \axiom{break} or \axiom{iterate} words are not used but
-all the other ideas carry over.
-Before we give you the general rule, here are some examples which
-give you the idea.
-
-\xtc{
-This creates a simple list of the integers from \axiom{1} to \axiom{10}.
-}{
-\spadpaste{list := [i for i in 1..10] \bound{list}}
-}
-\xtc{
-Create a stream of the integers greater than or equal to \axiom{1}.
-}{
-\spadpaste{stream := [i for i in 1..] \bound{stream}}
-}
-\xtc{
-This is a list of the prime integers between \axiom{1} and \axiom{10},
-inclusive.
-}{
-\spadpaste{[i for i in 1..10 | prime? i]}
-}
-\xtc{
-This is a stream of the prime integers greater than or equal to \axiom{1}.
-}{
-\spadpaste{[i for i in 1..   | prime? i]}
-}
-\xtc{
-This is a list of the integers between \axiom{1} and \axiom{10},
-inclusive, whose squares are less than \axiom{700}.
-}{
-\spadpaste{[i for i in 1..10 while i*i < 700]}
-}
-\xtc{
-This is a stream of the integers greater than or equal to \axiom{1}
-whose squares are less than \axiom{700}.
-}{
-\spadpaste{[i for i in 1..   while i*i < 700]}
-}
-
-Got the idea?
-Here is the general rule.
-
-\beginImportant
-The general syntax of a collection is
-\centerline{{{\tt [ {\it collectExpression} \subscriptIt{iterator}{1}  \subscriptIt{iterator}{2}  \ldots  \subscriptIt{iterator}{N} ]}}}
-where each \subscriptIt{iterator}{i} is either a \axiom{for} or a
-\axiom{while} clause.
-The loop terminates immediately when the end test of any
-\subscriptIt{iterator}{i} succeeds or when a \axiom{return} expression is
-evaluated in {\it collectExpression}.
-The value returned by the collection is either a list or a stream of
-elements, one for each iteration of the {\it collectExpression}.
-\endImportant
-
-Be careful when you use \axiom{while}
-to create a stream.
-By default, Axiom tries to compute and display the first ten elements
-of a stream.
-If the \axiom{while} condition is not satisfied quickly, Axiom
-can spend a long (possibly infinite) time trying to compute
-the elements.
-Use \spadcmd{)set streams calculate} to change the default
-to something else.
-This also affects the number of terms computed and displayed for power
-series.
-For the purposes of this book, we have used this system
-command to display fewer than ten terms.
-\xtc{
-Use nested iterators to create lists of
-lists which can then be given as an argument to \axiomFun{matrix}.
-}{
-\spadpaste{matrix [[x**i+j for i in 1..3] for j in 10..12]}
-}
-\xtc{
-You can also create lists of streams, streams of lists and
-streams of streams.
-Here is a stream of streams.
-}{
-\spadpaste{[[i/j for i in j+1..] for j in 1..]}
-}
-\xtc{
-You can use parallel iteration across lists and streams to create
-new lists.
-}{
-\spadpaste{[i/j for i in 3.. by 10 for j in 2..]}
-}
-\xtc{
-Iteration stops if the end of a list or stream is reached.
-}{
-\spadpaste{[i**j for i in 1..7 for j in 2.. ]}
-}
-%\xtc{
-%or a while condition fails.
-%}{
-%\spadcommand{[i**j for i in 1..  for j in 2.. while i + j < 5 ]}
-%}
-\xtc{
-As with loops, you can combine these modifiers to make very
-complicated conditions.
-}{
-\spadpaste{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
-}
-
-See \downlink{`List'}{ListXmpPage}\ignore{List} and 
-\downlink{`Stream'}{StreamXmpPage}\ignore{Stream} 
-for more information on creating and
-manipulating lists and streams, respectively.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug05.ht>>=
-\newcommand{\ugLangStreamsPrimesTitle}{An Example: Streams of Primes}
-\newcommand{\ugLangStreamsPrimesNumber}{5.6.}
-
-@
-\subsection{5.6. An Example: Streams of Primes}
-\label{ugLangStreamsPrimesPage}
-\index{pages!ugLangStreamsPrimesPage!ug05.ht}
-\index{ug05.ht!pages!ugLangStreamsPrimesPage}
-\index{ugLangStreamsPrimesPage!ug05.ht!pages}
-<<ug05.ht>>=
-\begin{page}{ugLangStreamsPrimesPage}{5.6. An Example: Streams of Primes}
-\beginscroll
-
-We conclude this chapter with an example of the creation and manipulation
-of infinite streams of prime integers.
-This might be useful for experiments with numbers or other applications
-where you are using sequences of primes over and over again.
-As for all streams, the stream of primes is only computed as far out as you
-need.
-Once computed, however, all the primes up to that point are saved for
-future reference.
-
-Two useful operations provided by the Axiom library are
-\axiomFunFrom{prime?}{IntegerPrimesPackage} and
-\axiomFunFrom{nextPrime}{IntegerPrimesPackage}.
-A straight-forward way to create a stream of
-prime numbers is to start with the stream of positive integers \axiom{[2,..]} and
-filter out those that are prime.
-\xtc{
-Create a stream of primes.
-}{
-\spadpaste{primes : Stream Integer := [i for i in 2.. | prime? i]}
-}
-A more elegant way, however, is to use the \axiomFunFrom{generate}{Stream}
-operation from \axiomType{Stream}.
-Given an initial value \axiom{a} and a function \axiom{f},
-\axiomFunFrom{generate}{Stream}
-constructs the stream \axiom{[a, f(a), f(f(a)), ...]}.
-This function gives you the quickest method of getting the stream of primes.
-\xtc{
-This is how you use
-\axiomFunFrom{generate}{Stream} to
-generate an infinite stream of primes.
-}{
-\spadpaste{primes := generate(nextPrime,2)}
-}
-\xtc{
-Once the stream is generated, you might only be interested in
-primes starting at a particular value.
-}{
-\spadpaste{smallPrimes := [p for p in primes | p > 1000] \bound{smallPrimes}}
-}
-\xtc{
-Here are the first 11 primes greater than 1000.
-}{
-\spadpaste{[p for p in smallPrimes for i in 1..11] \free{smallPrimes}}
-}
-\xtc{
-Here is a stream of primes between 1000 and 1200.
-}{
-\spadpaste{[p for p in smallPrimes while p < 1200] \free{smallPrimes}}
-}
-\xtc{
-To get these expanded into a finite stream,
-you call \axiomFunFrom{complete}{Stream} on the stream.
-}{
-\spadpaste{complete \%}
-}
-\xtc{
-Twin primes are consecutive odd number pairs which are prime.
-Here is the stream of twin primes.
-}{
-\spadpaste{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
-}
-\xtc{
-Since we already have the primes computed we can
-avoid the call to \axiomFunFrom{prime?}{IntegerPrimesPackage}
-by using a double iteration.
-This time we'll just generate a stream of the first of the twin primes.
-}{
-\spadpaste{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
-}
-
-Let's try to compute the infinite stream of triplet primes,
-the set of primes \axiom{p} such that \axiom{[p,p+2,p+4]}
-are primes. For example, \axiom{[3,5,7]} is a triple prime.
-We could do this by a triple \axiom{for} iteration.
-A more economical way is to use \userfun{firstOfTwins}.
-This time however, put a semicolon at the end of the line.
-
-\xtc{Create the stream of firstTriplets.
-Put a semicolon at the end so that no
-elements are computed.
-}{
-\spadpaste{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
-}
-
-What happened?
-As you know, by default
-Axiom displays the first ten
-elements of a stream when you first display it.
-And, therefore, it needs to compute them!
-If you want {\it no} elements computed, just terminate the expression by a
-semicolon (\axiomSyntax{;}).\footnote{
-Why does this happen? The semi-colon prevents the display of the
-result of evaluating the expression.
-Since no stream elements are needed for display (or anything else, so far),
-none are computed.
-}
-
-\xtc{
-Compute the first triplet prime.
-}{
-\spadpaste{firstTriplets.1}
-}
-
-If you want to compute another, just ask for it.
-But wait a second!
-Given three consecutive odd integers, one of them must be divisible
-by 3. Thus there is only one triplet prime.
-But suppose that you did not know this and wanted to know what was the
-tenth triplet prime.
-\begin{verbatim}
-firstTriples.10
-\end{verbatim}
-To compute the tenth triplet prime, Axiom first must compute the second,
-the third, and so on.
-But since there isn't even a second triplet prime, Axiom will
-compute forever.
-Nonetheless, this effort can produce a useful result.
-After waiting a bit, hit
-\texht{\fbox{\bf Ctrl}--\fbox{\bf c}}{{\bf Ctrl-c}}.
-The system responds as follows.
-\begin{verbatim}
-   >> System error:
-   Console interrupt.
-   You are being returned to the top level of
-   the interpreter.
-\end{verbatim}
-Let's say that you want to know how many primes have been computed.
-Issue
+\subsection{Asp4 Example Code}
+\label{Asp4ExampleCode}
+\index{pages!Asp4ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp4ExampleCode}
+\index{Asp4ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp4ExampleCode}{Asp4 Example Code}
 \begin{verbatim}
-numberOfComputedEntries primes
+      DOUBLE PRECISION FUNCTION FUNCTN(NDIM,X)
+      DOUBLE PRECISION X(NDIM)
+      INTEGER NDIM
+      FUNCTN=(4.0D0*X(1)*X(3)**2*DEXP(2.0D0*X(1)*X(3)))/(X(4)**2+(2.0D0*
+     &X(2)+2.0D0)*X(4)+X(2)**2+2.0D0*X(2)+1.0D0)
+      RETURN
+      END
 \end{verbatim}
-and, for this discussion, let's say that the result is \axiom{2045.}
-\xtc{
-How big is the \eth{\axiom{2045}} prime?
-}{
-\spadpaste{primes.2045}
-}
-
-What you have learned is that there are no triplet primes between 5 and
-17837.
-Although this result is well known (some might even say trivial), there
-are many experiments you could make where the result is not known.
-What you see here is a paradigm for testing of hypotheses.
-Here our hypothesis could have been: ``there is more than one triplet
-prime.''
-We have tested this hypothesis for 17837 cases.
-With streams, you can let your machine run, interrupt it to see how far
-it has progressed,
-then start it up and let it continue from where it left off.
-
-%> RDJ note to RSS:
-%> Expressions not statements or lines--
-%>   By an expression I mean any syntactically correct program fragment.
-%>   Everything in Axiom is an expression since every fragment has a value and a type.
-%>   In most languages including LISP, a "statement" is different from an expression:
-%>   it is executed for side-effect only and an error is incurred if you assign it a value.
-%>   This "gimmick" takes care of incomplete expressions such as "if x > 0 then y" in blocks.
-%>   In LISP, "u := (if x > 0 then y)" is illegal but in Axiom it is legal.
-%>   Also, in Axiom the value of a repeat loop is void even though you might be
-%>   be able to prove that it always returns a valid value (you have an example of this)!
-%>   This will be considered a bug not a feature. But it is how things stand.
-%>   In any case---this point should be in a box somewhere since it is key
-%>   to a user's understanding to the language. I am not sure where. You only
-%>   gain an appreciation for it after are awhile in chapter 5.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug06.ht}
-<<ug06.ht>>=
-\newcommand{\pred}[1]{\subscriptIt{pred}{#1}}
-\newcommand{\expr}[1]{\subscriptIt{expression}{#1}}
-\newcommand{\ugUserTitle}{User-Defined Functions, Macros and Rules}
-\newcommand{\ugUserNumber}{6.}
-
-@
-\subsection{6. User-Defined Functions, Macros and Rules}
-\label{ugUserPage}
-\begin{itemize}
-\item ugUserFunMacPage \ref{ugUserFunMacPage} on
-page~\pageref{ugUserFunMacPage}
-\item ugUserMacrosPage \ref{ugUserMacrosPage} on
-page~\pageref{ugUserMacrosPage}
-\item ugUserIntroPage \ref{ugUserIntroPage} on
-page~\pageref{ugUserIntroPage}
-\item ugUserDeclarePage \ref{ugUserDeclarePage} on
-page~\pageref{ugUserDeclarePage}
-\item ugUserOnePage \ref{ugUserOnePage} on
-page~\pageref{ugUserOnePage}
-\item ugUserDecUndecPage \ref{ugUserDecUndecPage} on
-page~\pageref{ugUserDecUndecPage}
-\item ugUserDecOpersPage \ref{ugUserDecOpersPage} on
-page~\pageref{ugUserDecOpersPage}
-\item ugUserDelayPage \ref{ugUserDelayPage} on
-page~\pageref{ugUserDelayPage}
-\item ugUserUsePage \ref{ugUserUsePage} on
-page~\pageref{ugUserUsePage}
-\item ugUserCompIntPage \ref{ugUserCompIntPage} on
-page~\pageref{ugUserCompIntPage}
-\item ugUserPiecePage \ref{ugUserPiecePage} on
-page~\pageref{ugUserPiecePage}
-\item ugUserCachePage \ref{ugUserCachePage} on
-page~\pageref{ugUserCachePage}
-\item ugUserRecurPage \ref{ugUserRecurPage} on
-page~\pageref{ugUserRecurPage}
-\item ugUserMakePage \ref{ugUserMakePage} on
-page~\pageref{ugUserMakePage}
-\item ugUserBlocksPage \ref{ugUserBlocksPage} on
-page~\pageref{ugUserBlocksPage}
-\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
-page~\pageref{ugUserFreeLocalPage}
-\item ugUserAnonPage \ref{ugUserAnonPage} on
-page~\pageref{ugUserAnonPage}
-\item ugUserDatabasePage \ref{ugUserDatabasePage} on
-page~\pageref{ugUserDatabasePage}
-\item ugUserTrianglePage \ref{ugUserTrianglePage} on
-page~\pageref{ugUserTrianglePage}
-\item ugUserPalPage \ref{ugUserPalPage} on
-page~\pageref{ugUserPalPage}
-\item ugUserRulesPage \ref{ugUserRulesPage} on
-page~\pageref{ugUserRulesPage}
-\end{itemize}
-\index{pages!ugUserPage!ug06.ht}
-\index{ug06.ht!pages!ugUserPage}
-\index{ugUserPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPage}{6. User-Defined Functions, Macros and Rules}
-\beginscroll
-
-In this chapter we show you how to write functions and macros,
-and we explain how Axiom looks for and applies them.
-We show some simple one-line examples of functions, together
-with larger ones that are defined piece-by-piece or through the use of
-piles.
-
-\beginmenu
-    \menudownlink{{6.1. Functions vs. Macros}}{ugUserFunMacPage}
-    \menudownlink{{6.2. Macros}}{ugUserMacrosPage}
-    \menudownlink{{6.3. Introduction to Functions}}{ugUserIntroPage}
-    \menudownlink{{6.4. Declaring the Type of Functions}}{ugUserDeclarePage}
-    \menudownlink{{6.5. One-Line Functions}}{ugUserOnePage}
-    \menudownlink{{6.6. Declared vs. Undeclared Functions}}{ugUserDecUndecPage}
-    \menudownlink{{6.7. Functions vs. Operations}}{ugUserDecOpersPage}
-    \menudownlink{{6.8. Delayed Assignments vs. Functions with No Arguments}}
-{ugUserDelayPage}
-    \menudownlink{{6.9. How Axiom Determines What Function to Use}}
-{ugUserUsePage}
-    \menudownlink{{6.10. Compiling vs. Interpreting}}{ugUserCompIntPage}
-    \menudownlink{{6.11. Piece-Wise Function Definitions}}{ugUserPiecePage}
-    \menudownlink{{6.12. Caching Previously Computed Results}}{ugUserCachePage}
-    \menudownlink{{6.13. Recurrence Relations}}{ugUserRecurPage}
-    \menudownlink{{6.14. Making Functions from Objects}}{ugUserMakePage}
-    \menudownlink{{6.15. Functions Defined with Blocks}}{ugUserBlocksPage}
-    \menudownlink{{6.16. Free and Local Variables}}{ugUserFreeLocalPage}
-    \menudownlink{{6.17. Anonymous Functions}}{ugUserAnonPage}
-    \menudownlink{{6.18. Example: A Database}}{ugUserDatabasePage}
-    \menudownlink{{6.19. Example: A Famous Triangle}}{ugUserTrianglePage}
-    \menudownlink{{6.20. Example: Testing for Palindromes}}{ugUserPalPage}
-    \menudownlink{{6.21. Rules and Pattern Matching}}{ugUserRulesPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserFunMacTitle}{Functions vs. Macros}
-\newcommand{\ugUserFunMacNumber}{6.1.}
-
-@
-\subsection{6.1. Functions vs. Macros}
-\label{ugUserFunMacPage}
-\begin{itemize}
-\item ugUserAnonPage \ref{ugUserAnonPage} on
-page~\pageref{ugUserAnonPage}
-\item ExitXmpPage \ref{ExitXmpPage} on
-page~\pageref{ExitXmpPage}
-\item VoidXmpPage \ref{VoidXmpPage} on
-page~\pageref{VoidXmpPage}
-\end{itemize}
-\index{pages!ugUserFunMacPage!ug06.ht}
-\index{ug06.ht!pages!ugUserFunMacPage}
-\index{ugUserFunMacPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserFunMacPage}{6.1. Functions vs. Macros}
-\beginscroll
-
-A function is a program to perform some
-computation.
-Most functions have names so that it is easy to refer to them.
-A simple example of a function is one named
-\axiomFunFrom{abs}{Integer} which
-computes the absolute value of an integer.
-%
-\xtc{
-This is a use of the ``absolute value'' library function for integers.
-}{
-\spadpaste{abs(-8)}
-}
-\xtc{
-This is an unnamed function that does the same thing, using the
-``maps-to'' syntax \axiomSyntax{+->} that we discuss in
-\downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
-in Section \ugUserAnonNumber\ignore{ugUserAnon}.
-}{
-\spadpaste{(x +-> if x < 0 then -x else x)(-8)}
-}
-%
-Functions can be used alone or serve as the building blocks for larger
-programs.
-Usually they return a value that you might want to use in the next stage
-of a computation, but not always (for example, see
-\downlink{`Exit'}{ExitXmpPage}\ignore{Exit} and 
-\downlink{`Void'}{VoidXmpPage}\ignore{Void}).
-They may also read data from your keyboard, move information from one
-place to another, or format and display results on your screen.
-
-In Axiom, as in mathematics, functions
-are usually \spadglossSee{parameterized}{parameterized form}.
-Each time you {\it call} (some people say \spadgloss{apply} or
-\spadglossSee{invoke}{invocation}) a function, you give
-values to the parameters (variables).
-Such a value is called an \spadgloss{argument} of
-the function.
-Axiom uses the arguments for the computation.
-In this way you get different results depending on what you ``feed'' the
-function.
-
-Functions can have local variables or refer to global variables in the
-workspace.
-Axiom can often \spadglossSee{compile}{compiler} functions so that
-they execute very efficiently.
-Functions can be passed as arguments to other functions.
-
-Macros are textual substitutions.
-They are used to clarify the meaning of constants or expressions and to be
-templates for frequently used expressions.
-Macros can be parameterized but they are not objects that can be passed as
-arguments to functions.
-In effect, macros are extensions to the Axiom expression parser.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserMacrosTitle}{Macros}
-\newcommand{\ugUserMacrosNumber}{6.2.}
-
-@
-\subsection{6.2. Macros}
-\label{ugUserMacrosPage}
-\index{pages!ugUserMacrosPage!ug06.ht}
-\index{ug06.ht!pages!ugUserMacrosPage}
-\index{ugUserMacrosPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserMacrosPage}{6.2. Macros}
-\beginscroll
-
-A \spadgloss{macro} provides general textual substitution of
-an Axiom expression for a name.
-You can think of a macro as being a generalized abbreviation.
-You can only have one macro in your workspace with
-a given name, no matter how many arguments it has.
-
-\beginImportant
-The two general forms for macros are
-\centerline{{{\tt macro} {\it name} {\tt ==} {\it body} }}
-\centerline{{{\tt macro} {\it name(arg1,...)} {\tt ==} {\it body}}}
-where the body of the macro can be any Axiom expression.
-\endImportant
-
-%
-\xtc{
-For example, suppose you decided that you
-like to use \axiom{df} for \axiomFun{D}.
-You define the macro \axiom{df} like this.
-}{
-\spadpaste{macro df == D \bound{df}}
-}
-\xtc{
-Whenever you type \axiom{df}, the system expands it to
-\axiomFun{D}.
-}{
-\spadpaste{df(x**2 + x + 1,x) \free{df}}
-}
-\xtc{
-Macros can be parameterized and so can be used for many different
-kinds of objects.
-}{
-\spadpaste{macro ff(x) == x**2 + 1 \bound{ff}}
-}
-\xtc{
-Apply it to a number, a symbol, or an expression.
-}{
-\spadpaste{ff z \free{ff}}
-}
-\xtc{
-Macros can also be nested, but you get an error message if you
-run out of space because of an infinite nesting loop.
-}{
-\spadpaste{macro gg(x) == ff(2*x - 2/3) \bound{gg}\free{ff}}
-}
-\xtc{
-This new macro is fine as it does not produce a loop.
-}{
-\spadpaste{gg(1/w) \free{gg}}
-}
-%
-\xtc{
-This, however, loops since \axiom{gg} is
-defined in terms of \axiom{ff}.
-}{
-\spadpaste{macro ff(x) == gg(-x) \free{gg}}
-}
-\xtc{
-The body of a macro can be a block.
-}{
-\spadpaste{macro next == (past := present; present := future; future := past + present) \bound{next}}
-}
-\xtc{
-Before entering \axiom{next}, we need
-values for \axiom{present} and \axiom{future}.
-}{
-\spadpaste{present : Integer := 0 \bound{present}}
-}
-\xtc{
-}{
-\spadpaste{future : Integer := 1 \bound{future}}
-}
-\xtc{
-Repeatedly evaluating \axiom{next} produces the next Fibonacci number.
-}{
-\spadpaste{next \free{future}\free{present}}
-}
-\xtc{
-And the next one.
-}{
-\spadpaste{next \free{future}\free{present}}
-}
-\xtc{
-Here is the infinite stream of the rest of the Fibonacci numbers.
-}{
-\spadpaste{[next for i in 1..] \free{future}\free{present}}
-}
-\xtc{
-Bundle all the above lines into a single macro.
-}{
-\begin{spadsrc}[\bound{fibstr}]
-macro fibStream ==
-  present : Integer := 1
-  future : Integer := 1
-  [next for i in 1..] where
-    macro next ==
-      past := present
-      present := future
-      future := past + present
-\end{spadsrc}
-}
-\xtc{
-Use \axiomFunFrom{concat}{Stream} to start with the first two
-Fibonacci numbers.
-}{
-\spadpaste{concat([0,1],fibStream) \free{fibstr}}
-}
-\xtc{
-An easier way to compute these numbers is to
-use the library operation \axiomFun{fibonacci}.
-}{
-\spadpaste{[fibonacci i for i in 1..]}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug06.ht>>=
-\newcommand{\ugUserIntroTitle}{Introduction to Functions}
-\newcommand{\ugUserIntroNumber}{6.3.}
-
-@
-\subsection{6.3. Introduction to Functions}
-\label{ugUserIntroPage}
-\begin{itemize}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\item ugUserAnonPage \ref{ugUserAnonPage} on
-page~\pageref{ugUserAnonPage}
-\end{itemize}
-\index{pages!ugUserIntroPage!ug06.ht}
-\index{ug06.ht!pages!ugUserIntroPage}
-\index{ugUserIntroPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserIntroPage}{6.3. Introduction to Functions}
-\beginscroll
-
-Each name in your workspace can refer to a single object.
-This may be any kind of object including a function.
-You can use interactively any function from the library or any that you
-define in the workspace.
-In the library the same name can have very many functions, but you
-can have only one function with a given name, although it can have any
-number of arguments that you choose.
-
-If you define a function in the workspace that has the same name and number
-of arguments as one in the library, then your definition takes precedence.
-In fact, to get the library function you must
-\spadglossSee{package-call}{package call} it (see 
-\downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}).
-
-To use a function in Axiom, you apply it to its arguments.
-Most functions are applied by entering the name of the function followed by
-its argument or arguments.
-\xtc{
-}{
-\spadpaste{factor(12)}
-}
-%
-\xtc{
-Some functions like 
-\axiomOp{+} have {\it infix} \spadgloss{operators} as names.
-}{
-\spadpaste{3 + 4}
-}
-\xtc{
-The function \axiomOp{+} has two arguments.
-When you give it more than two arguments,
-Axiom groups the arguments to the left.
-This expression is equivalent to \axiom{(1 + 2) + 7}.
-}{
-\spadpaste{1 + 2 + 7}
-}
-
-All operations, including infix operators, can be written in prefix form,
-that is, with the operation name followed by the arguments
-in parentheses.
-For example, \axiom{2 + 3} can alternatively be written as \axiom{+(2,3)}.
-But \axiom{+(2,3,4)} is an error since \axiomOp{+}
-takes only two arguments.
-
-Prefix operations are generally applied before the infix operation.
-Thus \axiom{factorial 3 + 1} means \axiom{factorial(3) + 1} producing
-\axiom{7}, and
-\axiom{- 2 + 5} means \axiom{(-2) + 5} producing \axiom{3}.
-An example of a prefix operator is prefix \axiomOp{-}.
-For example, \axiom{- 2 + 5} converts to \axiom{(- 2) + 5} producing
-the value \axiom{3}.
-Any prefix function taking two arguments can be written in
-an infix manner by putting an
-ampersand (\axiomSyntax{\&}) before the name.
-Thus \axiom{D(2*x,x)} can be written as
-\axiom{2*x \&D x} returning \axiom{2}.
-
-Every function in Axiom is identified by
-a \spadgloss{name} and \spadgloss{type}.\footnote{An exception is
-an ``anonymous function''
-discussed in
-\downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
-in Section \ugUserAnonNumber\ignore{ugUserAnon}.}
-The type of a function is always a mapping of the form
-\spadsig{Source}{Target}
-where \axiom{Source} and \axiom{Target} are types.
-To enter a type from the keyboard, enter the arrow by using
-a hyphen \axiomSyntax{-} followed by a greater-than sign
-\axiomSyntax{>}, e.g. {\tt Integer -> Integer}.
-
-Let's go back to \axiomOp{+}.
-There are many \axiomOp{+} functions in the
-Axiom library: one for integers, one for floats, another for
-rational numbers, and so on.
-These \axiomOp{+} functions have different types and thus are
-different functions.
-You've seen examples of this \spadgloss{overloading}
-before---using the same name for different functions.
-Overloading is the rule rather than the exception.
-You can add two integers, two polynomials, two matrices or
-two power series.
-These are all done with the same function name
-but with different functions.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserDeclareTitle}{Declaring the Type of Functions}
-\newcommand{\ugUserDeclareNumber}{6.4.}
-
-@
-\subsection{6.4. Declaring the Type of Functions}
-\label{ugUserDeclarePage}
-\begin{itemize}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\end{itemize}
-\index{pages!ugUserDeclarePage!ug06.ht}
-\index{ug06.ht!pages!ugUserDeclarePage}
-\index{ugUserDeclarePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserDeclarePage}{6.4. Declaring the Type of Functions}
-\beginscroll
-
-In \downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare} we 
-discussed how to declare a variable
-to restrict the kind of values that can be assigned to it.
-In this section we show how to declare a variable that refers to
-function objects.
-
-\beginImportant
-A function is an object of type
-\centerline{{\spadsig{Source}{Type}}}
-where \axiom{Source} and \axiom{Target} can be any type.
-A common type for \axiom{Source} is
-\axiomType{Tuple}(\subscriptIt{T}{1}, \ldots, \subscriptIt{T}{n}),
-usually written
-(\subscriptIt{T}{1}, \ldots, \subscriptIt{T}{n}),
-to indicate a function of \axiom{n} arguments.
-\endImportant
-
-\xtc{
-If \axiom{g} takes an \axiomType{Integer}, a \axiomType{Float} and
-another \axiomType{Integer}, and returns a
-\axiomType{String}, the declaration is written this way.
-}{
-\spadpaste{g: (Integer,Float,Integer) -> String}
-}
-\xtc{
-The types need not be written fully; using abbreviations, the above
-declaration is:
-}{
-\spadpaste{g: (INT,FLOAT,INT) -> STRING}
-}
-\xtc{
-It is possible for a function to take no arguments.
-If \axiom{ h} takes no arguments
-but returns a \axiomType{Polynomial} \axiomType{Integer}, any
-of the following declarations is acceptable.
-}{
-\spadpaste{h: () -> POLY INT}
-}
-\xtc{
-}{
-\spadpaste{h: () -> Polynomial INT}
-}
-\xtc{
-}{
-\spadpaste{h: () -> POLY Integer}
-}
-
-
-\beginImportant
-Functions can also be declared when they are being defined.
-The syntax for combined declaration/definition is:
-\centerline{{\frenchspacing{\tt {\it functionName}(\subscriptIt{parm}{1}: \subscriptIt{parmType}{1}, \ldots, \subscriptIt{parm}{N}: \subscriptIt{parmType}{N}): {\it functionReturnType}}}}
-\endImportant
-
-The following definition fragments show how this can be done for
-the functions \axiom{g} and \axiom{h} above.
+\subsection{Asp41 Example Code}
+\label{Asp41ExampleCode}
+\index{pages!Asp41ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp41ExampleCode}
+\index{Asp41ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp41ExampleCode}{Asp41 Example Code}
 \begin{verbatim}
-g(arg1: INT, arg2: FLOAT, arg3: INT): STRING == ...
-
-h(): POLY INT == ...
+      SUBROUTINE FCN(X,EPS,Y,F,N)
+      DOUBLE PRECISION EPS,F(N),X,Y(N)
+      INTEGER N
+      F(1)=Y(2)
+      F(2)=Y(3)
+      F(3)=(-1.0D0*Y(1)*Y(3))+2.0D0*EPS*Y(2)**2+(-2.0D0*EPS)
+      RETURN
+      END
+      SUBROUTINE JACOBF(X,EPS,Y,F,N)
+      DOUBLE PRECISION EPS,F(N,N),X,Y(N)
+      INTEGER N
+      F(1,1)=0.0D0
+      F(1,2)=1.0D0
+      F(1,3)=0.0D0
+      F(2,1)=0.0D0
+      F(2,2)=0.0D0
+      F(2,3)=1.0D0
+      F(3,1)=-1.0D0*Y(3)
+      F(3,2)=4.0D0*EPS*Y(2)
+      F(3,3)=-1.0D0*Y(1)
+      RETURN
+      END
+      SUBROUTINE JACEPS(X,EPS,Y,F,N)
+      DOUBLE PRECISION EPS,F(N),X,Y(N)
+      INTEGER N
+      F(1)=0.0D0
+      F(2)=0.0D0
+      F(3)=2.0D0*Y(2)**2-2.0D0
+      RETURN
+      END
 \end{verbatim}
-
-A current restriction on function declarations is that they must
-involve fully specified types (that is, cannot include modes involving
-explicit or implicit \axiomSyntax{?}).
-For more information on declaring things in general, see
-\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} 
-in Section \ugTypesDeclareNumber\ignore{ugTypesDeclare}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserOneTitle}{One-Line Functions}
-\newcommand{\ugUserOneNumber}{6.5.}
-
-@
-\subsection{6.5. One-Line Functions}
-\label{ugUserOnePage}
-\index{pages!ugUserOnePage!ug06.ht}
-\index{ug06.ht!pages!ugUserOnePage}
-\index{ugUserOnePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserOnePage}{6.5. One-Line Functions}
-\beginscroll
-
-As you use Axiom, you will find that you will write many short functions
-to codify sequences of operations that you often perform.
-In this section we write some simple one-line functions.
-
-\xtc{
-This is a simple recursive factorial function for positive integers.
-}{
-\spadpaste{fac n == if n < 3 then n else n * fac(n-1) \bound{fac}}
-}
-\xtc{
-}{
-\spadpaste{fac 10 \free{fac}}
-}
-%>> Thankfully, the $ is no longer needed in the next example.
-\xtc{
-This function computes \axiom{1 + 1/2 + 1/3 + ... + 1/n}.
-}{
-\spadpaste{s n == reduce(+,[1/i for i in 1..n]) \bound{s}}
-}
-\xtc{
-}{
-\spadpaste{s 50 \free{s}}
-}
-\xtc{
-This function computes a Mersenne number, several of which are prime.
-}{
-\spadpaste{mersenne i == 2**i - 1 \bound{mersenne}}
-}
-\xtc{
-If you type \axiom{mersenne}, Axiom shows you
-the function definition.
-}{
-\spadpaste{mersenne \free{mersenne}}
-}
-\xtc{
-Generate a stream of Mersenne numbers.
-}{
-\spadpaste{[mersenne i for i in 1..] \free{mersenne}}
-}
-\xtc{
-Create a stream of those values of \axiom{i} such that
-\axiom{mersenne(i)} is prime.
-}{
-\spadpaste{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))] \bound{mersenneIndex}\free{mersenne}}
-}
-\xtc{
-Finally, write a function that returns the \eth{\axiom{n}} Mersenne
-prime.
-}{
-\spadpaste{mersennePrime n == mersenne mersenneIndex(n) \free{mersenne mersenneIndex}\bound{mersennePrime}}
-}
-\xtc{
-}{
-\spadpaste{mersennePrime 5 \free{mersennePrime}}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug06.ht>>=
-\newcommand{\ugUserDecUndecTitle}{Declared vs. Undeclared Functions}
-\newcommand{\ugUserDecUndecNumber}{6.6.}
-
-@
-\subsection{6.6. Declared vs. Undeclared Functions}
-\label{ugUserDecUndecPage}
-\begin{itemize}
-\item ugCategoriesPage \ref{ugCategoriesPage} on
-page~\pageref{ugCategoriesPage}
-\end{itemize}
-\index{pages!ugUserDecUndecPage!ug06.ht}
-\index{ug06.ht!pages!ugUserDecUndecPage}
-\index{ugUserDecUndecPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserDecUndecPage}{6.6. Declared vs. Undeclared Functions}
-\beginscroll
-
-If you declare the type of a function, you can apply
-it to any data that can be converted to the source type
-of the function.
-
-\labelSpace{2pc}
-\xtc{
-Define \userfun{f} with type \spadsig{Integer}{Integer}.
-}{
-\spadpaste{f(x: Integer): Integer == x + 1 \bound{f}}
-}
-\xtc{
-The function
-\userfun{f} can be applied to integers, \ldots
-}{
-\spadpaste{f 9 \free{f}}
-}
-\xtc{
-and to values that convert to integers, \ldots
-}{
-\spadpaste{f(-2.0) \free{f}}
-}
-\xtc{
-but not to values that cannot be converted to integers.
-}{
-\spadpaste{f(2/3) \free{f}}
-}
-
-To make the function over a wide range of types, do not
-declare its type.
-\xtc{
-Give the same definition with no declaration.
-}{
-\spadpaste{g x == x + 1 \bound{g}}
-}
-\xtc{
-If \axiom{x + 1} makes sense, you can apply \userfun{g} to \axiom{x}.
-}{
-\spadpaste{g 9 \free{g}}
-}
-\xtc{
-A version of \userfun{g} with different argument types
-get compiled for each new kind of argument used.
-}{
-\spadpaste{g(2/3)  \free{g}}
-}
-\xtc{
-Here \axiom{x+1} for \axiom{x = "axiom"} makes no sense.
-}{
-\spadpaste{g("axiom")\free{g}}
-}
-
-As you will see in \downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
-in Chapter \ugCategoriesNumber\ignore{ugCategories},
-Axiom has a formal idea of categories for what ``makes sense.''
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserDecOpersTitle}{Functions vs. Operations}
-\newcommand{\ugUserDecOpersNumber}{6.7.}
-
-@
-\subsection{6.7. Functions vs. Operations}
-\label{ugUserDecOpersPage}
-\begin{itemize}
-\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
-page~\pageref{MappingPackageOneXmpPage}
-\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
-page~\pageref{ugPackagesAbstractPage}
-\item ugPackagesPage \ref{ugPackagesPage} on
-page~\pageref{ugPackagesPage}
-\item ugCategoriesPage \ref{ugCategoriesPage} on
-page~\pageref{ugCategoriesPage}
-\end{itemize}
-\index{pages!ugUserDecOpersPage!ug06.ht}
-\index{ug06.ht!pages!ugUserDecOpersPage}
-\index{ugUserDecOpersPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserDecOpersPage}{6.7. Functions vs. Operations}
-\beginscroll
-
-A function is an object that you can create, manipulate, pass to,
-and return from functions (for some interesting examples of
-library functions that manipulate functions, see
-\downlink{`MappingPackage1'}{MappingPackageOneXmpPage}
-\ignore{MappingPackage1}).
-Yet, we often seem to use the term \spadgloss{operation} and
-function interchangeably in Axiom.
-What is the distinction?
-
-First consider values and types associated with some variable \axiom{n} in
-your workspace.
-You can make the declaration \axiom{n : Integer}, then assign \axiom{n} an
-integer value.
-You then speak of the integer \axiom{n}.
-However, note that the integer is not the name \axiom{n} itself, but
-the value that you assign to \axiom{n}.
-
-Similarly, you can declare a variable \axiom{f} in your workspace to have
-type \spadsig{Integer}{Integer}, then assign \axiom{f}, through a definition
-or an assignment of an anonymous function.
-You then speak of the function \axiom{f}.
-However, the function is not \axiom{f}, but the value that you
-assign to \axiom{f}.
-
-A function is a value, in fact, some machine code for doing something.
-Doing what?
-Well, performing some \spadgloss{operation}.
-Formally, an operation consists of the constituent parts of \axiom{f} in your
-workspace, excluding the value; thus an operation has a name and a type.
-An operation is what domains and packages export.
-Thus \axiomType{Ring} exports one operation \axiomOp{+}.
-Every ring also exports this operation.
-Also, the author of every ring in the system is obliged under contract
-(see \downlink{``\ugPackagesAbstractTitle''}{ugPackagesAbstractPage} 
-in Section \ugPackagesAbstractNumber\ignore{ugPackagesAbstract})
-to provide an implementation for this operation.
-
-This chapter is all about functions---how you create them interactively and
-how you apply them to meet your needs.
-In \downlink{``\ugPackagesTitle''}{ugPackagesPage} in 
-Chapter \ugPackagesNumber\ignore{ugPackages} you will 
-learn how to create them for the
-Axiom library.
-Then in \downlink{``\ugCategoriesTitle''}{ugCategoriesPage} 
-in Chapter \ugCategoriesNumber\ignore{ugCategories}, you will 
-learn about categories and
-exported operations.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserDelayTitle}{Delayed Assignments vs. Functions with No Arguments}
-\newcommand{\ugUserDelayNumber}{6.8.}
-
-@
-\subsection{6.8. Delayed Assignments vs. Functions with No Arguments}
-\label{ugUserDelayPage}
-\begin{itemize}
-\item ugLangAssignPage \ref{ugLangAssignPage} on
-page~\pageref{ugLangAssignPage}
-\end{itemize}
-\index{pages!ugUserDelayPage!ug06.ht}
-\index{ug06.ht!pages!ugUserDelayPage}
-\index{ugUserDelayPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserDelayPage}
-{6.8. Delayed Assignments vs. Functions with No Arguments}
-\beginscroll
-
-In \downlink{``\ugLangAssignTitle''}{ugLangAssignPage} in Section 
-\ugLangAssignNumber\ignore{ugLangAssign} we discussed the difference 
-between immediate and
-delayed assignments.
-In this section we show the difference between delayed
-assignments and functions of no arguments.
-
-\labelSpace{2pc}
-\xtc{
-A function of no arguments is sometimes called a {\it nullary function.}
-}{
-\spadpaste{sin24() == sin(24.0) \bound{sin24}}
-}
-\xtc{
-You must use the parentheses (\axiomSyntax{()}) to evaluate it.
-Like a delayed assignment, the right-hand-side of a function evaluation
-is not evaluated until the left-hand-side is used.
-}{
-\spadpaste{sin24() \free{sin24}}
-}
-\xtc{
-If you omit the parentheses, you just get the function definition.
-%(Note how the explicit floating point number in the definition
-%has been translated into a function call involving a mantissa,
-%exponent and radix.)
-}{
-\spadpaste{sin24 \free{sin24}}
-}
-\xtc{
-You do not use the parentheses \axiomSyntax{()} in a delayed assignment\ldots
-}{
-\spadpaste{cos24 == cos(24.0) \bound{cos24}}
-}
-\xtc{
-nor in the evaluation.
-}{
-\spadpaste{cos24 \free{cos24}}
-}
-The only syntactic difference between delayed assignments
-and nullary functions is that you use \axiomSyntax{()} in the latter case.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserUseTitle}{How Axiom Determines What Function to Use}
-\newcommand{\ugUserUseNumber}{6.9.}
-
-@
-\subsection{6.9. How Axiom Determines What Function to Use}
-\label{ugUserUsePage}
-\begin{itemize}
-\item ugTypesPkgCallPage \ref{ugTypesPkgCallPage} on
-page~\pageref{ugTypesPkgCallPage}
-\item ugTypesResolvePage \ref{ugTypesResolvePage} on
-page~\pageref{ugTypesResolvePage}
-\end{itemize}
-\index{pages!ugUserUsePage!ug06.ht}
-\index{ug06.ht!pages!ugUserUsePage}
-\index{ugUserUsePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserUsePage}{6.9. How Axiom Determines What Function to Use}
-\beginscroll
-
-What happens if you define a function that has the same name as a library
-function?
-Well, if your function has the same name and number of arguments (we
-sometimes say \spadgloss{arity}) as another function
-in the library, then your function covers up the library function.
-If you want then to call the library function, you will have to package-call
-it.
-Axiom can use both the functions you write and those that come
-from the library.
-Let's do a simple example to illustrate this.
-\xtc{
-Suppose you (wrongly!) define \userfun{sin} in this way.
-}{
-\spadpaste{sin x == 1.0 \bound{sin}}
-}
-\xtc{
-The value \axiom{1.0} is returned for any argument.
-}{
-\spadpaste{sin 4.3 \free{sin}}
-}
-\xtc{
-If you want the library operation, we have to package-call it
-(see \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} 
-in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall}
-for more information).
-}{
-\spadpaste{sin(4.3)\$Float}
-}
-\xtc{
-}{
-\spadpaste{sin(34.6)\$Float}
-}
-\xtc{
-Even worse, say we accidentally used the same name as a library
-function in the function.
-}{
-\spadpaste{sin x == sin x \bound{sin1}}
-}
-\xtc{
-Then Axiom definitely does not understand us.
-}{
-\spadpaste{sin 4.3 \free{sin1}}
-}
-\xtc{
-Again, we could package-call the inside function.
-}{
-\spadpaste{sin x == sin(x)\$Float \bound{sin2}}
-}
-\xtc{
-}{
-\spadpaste{sin 4.3 \free{sin2}}
-}
-Of course, you are unlikely to make such obvious errors.
-It is more probable that you would write a function and in the body use a
-function that you think is a library function.
-If you had also written a function by that same name, the library function
-would be invisible.
-
-How does Axiom determine what library function to call?
-It very much depends on the particular example, but the simple case of
-creating the polynomial
-\axiom{x + 2/3} will give you an idea.
-\indent{4}
-\beginitems
-\item[1. ] The \axiom{x} is analyzed and its default type is
-\axiomType{Variable(x)}.
-\item[2. ] The \axiom{2} is analyzed and its default type is
-\axiomType{PositiveInteger}.
-\item[3. ] The \axiom{3} is analyzed and its default type is
-\axiomType{PositiveInteger}.
-\item[4. ] Because the arguments to \axiomOp{/} are integers, Axiom
-gives the expression \axiom{2/3} a default target type of
-\axiomType{Fraction(Integer)}.
-\item[5. ] Axiom looks in \axiomType{PositiveInteger} for \axiomOp{/}.
-It is not found.
-\item[6. ] Axiom looks in \axiomType{Fraction(Integer)} for \axiomOp{/}.
-It is found for arguments of type \axiomType{Integer}.
-\item[7. ] The \axiom{2} and \axiom{3} are converted to objects of type
-\axiomType{Integer} (this is trivial) and \axiomOp{/} is applied,
-creating an object of type \axiomType{Fraction(Integer)}.
-\item[8. ] No \axiomOp{+} for arguments of types \axiomType{Variable(x)} and
-\axiomType{Fraction(Integer)} are found in either domain.
-\item[9. ] Axiom resolves
-(see \downlink{``\ugTypesResolveTitle''}{ugTypesResolvePage} 
-in Section \ugTypesResolveNumber\ignore{ugTypesResolve})
-the types and gets \axiomType{Polynomial (Fraction (Integer))}.
-\item[10. ] The \axiom{x} and the \axiom{2/3} are converted to objects of this
-type and \axiomOp{+} is applied, yielding the answer, an object of type
-\axiomType{Polynomial (Fraction (Integer))}.
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserCompIntTitle}{Compiling vs. Interpreting}
-\newcommand{\ugUserCompIntNumber}{6.10.}
-
-@
-\subsection{6.10. Compiling vs. Interpreting}
-\label{ugUserCompIntPage}
-\begin{itemize}
-\item ugTypesSubdomainsPage \ref{ugTypesSubdomainsPage} on
-page~\pageref{ugTypesSubdomainsPage}
-\end{itemize}
-\index{pages!ugUserCompIntPage!ug06.ht}
-\index{ug06.ht!pages!ugUserCompIntPage}
-\index{ugUserCompIntPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserCompIntPage}{6.10. Compiling vs. Interpreting}
-\beginscroll
-
-When possible, Axiom completely determines the type of every object in
-a function, then translates the function definition to \Lisp{} or
-to machine code (see next section).
-This translation,
-called \spadglossSee{compilation}{compiler}, happens the first time you call
-the function and results in a computational delay.
-Subsequent function calls with the same argument types use the compiled
-version of the code without delay.
-
-If Axiom cannot determine the type of everything, the
-function may still be executed
-but
-in \spadglossSee{interpret-code mode}{interpreter} :
-each statement in the function is analyzed and executed as the control
-flow indicates.
-This process is slower than executing a compiled function, but it
-allows the execution of code that may involve objects whose types
-change.
-
-\beginImportant
-If Axiom decides that it cannot compile the code, it
-issues a message stating the problem and then the following
-message:
-%
-\centerline{{{\bf We will attempt to step through and interpret the code.}}}
-%
-This is not a time to panic.
-Rather, it just means that what you gave to Axiom
-is somehow ambiguous: either it is not specific enough to be analyzed
-completely, or it is beyond Axiom's present interactive
-compilation abilities.
-\endImportant
-
-\xtc{
-This function runs in interpret-code mode, but it does not compile.
-}{
-\begin{spadsrc}[\bound{varPolys}]
-varPolys(vars) ==
-  for var in vars repeat
-    output(1 :: UnivariatePolynomial(var,Integer))
-\end{spadsrc}
-}
-\xtc{
-For \axiom{vars} equal to \axiom{['x, 'y, 'z]}, this function displays
-\axiom{1} three times.
-}{
-\spadpaste{varPolys ['x,'y,'z] \free{varPolys}}
-}
-\xtc{
-The type of the argument to \axiomFun{output} changes in each iteration,
-so Axiom cannot compile the function.
-In this case, even the inner loop by itself would have a problem:
-}{
-\begin{spadsrc}
-for var in ['x,'y,'z] repeat
-  output(1 :: UnivariatePolynomial(var,Integer))
-\end{spadsrc}
-}
-
-Sometimes you can help a function to compile by using an extra conversion
-or by using \axiom{pretend}.
-\spadkey{pretend}
-See \downlink{``\ugTypesSubdomainsTitle''}{ugTypesSubdomainsPage} 
-in Section \ugTypesSubdomainsNumber\ignore{ugTypesSubdomains} for details.
-
-When a function is compilable, you have the choice of whether it is
-compiled to \Lisp{} and then interpreted by the \Lisp{}
-interpreter or then further compiled from \Lisp{} to machine code.
-The option is controlled via \spadcmd{)set functions compile}.
-Issue \spadcmd{)set functions compile on} to compile all the way to
-machine code.
-With
-the default setting \spadcmd{)set functions compile off},
-Axiom has its \Lisp{} code interpreted
-because the overhead of further compilation is larger than the run-time
-of most of the functions our users have defined.
-You may find that selectively turning this option on and off will
-give you the best performance in your particular application.
-For example, if you are writing functions for graphics applications
-where hundreds of points are being computed, it is almost certainly true
-that you will get the best performance by issuing
-\spadcmd{)set functions compile on}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserPieceTitle}{Piece-Wise Function Definitions}
-\newcommand{\ugUserPieceNumber}{6.11.}
-
-@
-\subsection{6.11. Piece-Wise Function Definitions}
-\label{ugUserPiecePage}
-\begin{itemize}
-\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
-page~\pageref{ugUserPieceBasicPage}
-\item ugUserPiecePickingPage \ref{ugUserPiecePickingPage} on
-page~\pageref{ugUserPiecePickingPage}
-\item ugUserPiecePredPage \ref{ugUserPiecePredPage} on
-page~\pageref{ugUserPiecePredPage}
-\end{itemize}
-\index{pages!ugUserPiecePage!ug06.ht}
-\index{ug06.ht!pages!ugUserPiecePage}
-\index{ugUserPiecePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPiecePage}{6.11. Piece-Wise Function Definitions}
-\beginscroll
-
-To move beyond functions defined in one line, we introduce in this section
-functions that are defined piece-by-piece.
-That is, we say ``use this definition when the argument is such-and-such and
-use this other definition when the argument is that-and-that.''
-
-\beginmenu
-    \menudownlink{{6.11.1. A Basic Example}}{ugUserPieceBasicPage}
-    \menudownlink{{6.11.2. Picking Up the Pieces}}{ugUserPiecePickingPage}
-    \menudownlink{{6.11.3. Predicates}}{ugUserPiecePredPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserPieceBasicTitle}{A Basic Example}
-\newcommand{\ugUserPieceBasicNumber}{6.11.1.}
-
-@
-\subsection{6.11.1. A Basic Example}
-\label{ugUserPieceBasicPage}
-\index{pages!ugUserPieceBasicPage!ug06.ht}
-\index{ug06.ht!pages!ugUserPieceBasicPage}
-\index{ugUserPieceBasicPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPieceBasicPage}{6.11.1. A Basic Example}
-\beginscroll
-
-There are many other ways to define a factorial function for nonnegative
-integers.
-You might
-say
-factorial of \axiom{0} is \axiom{1,} otherwise factorial of \axiom{n} is
-\axiom{n} times factorial of \axiom{n-1}.
-Here is one way to do this in Axiom.
-%
-\xtc{
-Here is the value for \axiom{n = 0}.
-}{
-\spadpaste{fact(0) == 1 \bound{fact0}}
-}
-\xtc{
-Here is the value for \axiom{n > 0}.
-The vertical bar \axiomSyntax{|} means
-``such that''.
-}{
-\spadpaste{fact(n | n > 0) == n * fact(n - 1) \free{fact0}\bound{factn}}
-}
-%>> am moving this back
-%The vertical bar \axiomSyntax{|} is read as ``such that'' and so
-%\index{such that}
-%the second line means that that part of the definition for \userfun{fact}
-%is for any \axiom{n} such that \axiom{n} is greater than 0.
-%In fact, the first line is really just a shorthand expression for
-%\axiom{fact(n | n = 0) == 1}.
-%>> prefer scratching next 4 lines
-%We are implicitly using a \spadgloss{predicate} with a \axiomSyntax{|} in
-%this line (see \downlink{``\ugUserPiecePredTitle''}{ugUserPiecePredPage} 
-%in Section \ugUserPiecePredNumber\ignore{ugUserPiecePred} for more 
-%on predicates).
-%So this piece of the function is applicable to all (the not so many!)
-%values of \axiom{n} that are equal to zero.
-\xtc{
-What is the value for \axiom{n = 3}?
-}{
-\spadpaste{fact(3) \free{factn}}
-}
-\xtc{
-What is the value for \axiom{n = -3}?
-}{
-\spadpaste{fact(-3) \free{factn}}
-}
-\xtc{
-Now for a second definition.
-Here is the value for \axiom{n = 0}.
-}{
-\spadpaste{facto(0) == 1 \bound{facto0}}
-}
-\xtc{
-Give an error message if \axiom{n < 0}.
-}{
-\spadpaste{facto(n | n < 0) == error "arguments to facto must be non-negative" \free{facto0}\bound{factop}}
-}
-\xtc{
-Here is the value otherwise.
-}{
-\spadpaste{facto(n) == n * facto(n - 1) \free{factop}\bound{facton}}
-}
-\xtc{
-What is the value for \axiom{n = 7}?
-}{
-\spadpaste{facto(3) \free{facton}}
-}
-\xtc{
-What is the value for \axiom{n = -7}?
-}{
-\spadpaste{facto(-7) \free{facton}}
-}
-\xtc{
-To see the current piece-wise definition of a function,
-use \spadsys{)display value}.
-}{
-\spadpaste{)display value facto \free{facton}}
-}
-
-In general a {\it piece-wise definition} of a function consists of two or
-more parts.
-Each part gives a ``piece'' of the entire definition.
-Axiom collects the pieces of a function as you enter them.
-When you ask for a value of the function, it then ``glues''
-the pieces together to form a function.
-
-The two piece-wise definitions for the factorial function
-are examples of recursive functions, that is, functions that
-are defined in terms of themselves.
-Here is an interesting doubly-recursive function.
-This function returns the value \axiom{11} for all positive integer arguments.
-\xtc{
-Here is the first of two pieces.
-}{
-\spadpaste{eleven(n | n < 1) == n + 11\bound{ff0}}
-}
-\xtc{
-And the general case.
-}{
-\spadpaste{eleven(m) == eleven(eleven(m - 12))\bound{ff1}\free{ff0}}
-}
-\xtc{
-Compute \axiom{elevens}, the infinite stream
-of values of \axiom{eleven}.
-}{
-\spadpaste{elevens := [eleven(i) for i in 0..]\bound{ff2}\free{ff1}}
-}
-\xtc{
-What is the value at \axiom{n = 200}?
-}{
-\spadpaste{elevens 200\free{ff2}}
-}
-\xtc{
-What is the Axiom's definition of \axiom{eleven}?
-}{
-\spadpaste{)display value eleven\free{ff2}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserPiecePickingTitle}{Picking Up the Pieces}
-\newcommand{\ugUserPiecePickingNumber}{6.11.2.}
-
-@
-\subsection{6.11.2. Picking Up the Pieces}
-\label{ugUserPiecePickingPage}
-\begin{itemize}
-\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
-page~\pageref{ugUserPieceBasicPage}
-\end{itemize}
-\index{pages!ugUserPiecePickingPage!ug06.ht}
-\index{ug06.ht!pages!ugUserPiecePickingPage}
-\index{ugUserPiecePickingPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPiecePickingPage}{6.11.2. Picking Up the Pieces}
-\beginscroll
-
-Here are the details about how Axiom creates a function from its
-pieces.
-Axiom converts the \eth{\axiom{i}} piece of a function definition into a
-conditional expression of the form: \axiom{if} \pred{i} \axiom{then}
-\expr{i}.
-If any new piece has a \pred{i} that is identical\footnote{after all
-variables are uniformly named} to an earlier \pred{j}, the earlier piece is
-removed.
-Otherwise, the new piece is always added at the end.
-
-\beginImportant
-If there are \axiom{n} pieces to a function definition for \axiom{f},
-the function defined \axiom{f} is: \newline
-%
-\texht{\hspace*{3pc}}{\tab{6}}
-{\tt if} \pred{1} {\tt then} \expr{1} {\tt else}\newline
-\texht{\hspace*{6pc}}{\tab{12}}. . . \newline
-\texht{\hspace*{3pc}}{\tab{6}}
-{\tt if} \pred{n} {\tt then} \expr{n} {\tt else}\newline
-\texht{\hspace*{3pc}}{\tab{6}}
-{\tt  error "You did not define f for argument <arg>."}
-%
-\endImportant
-
-You can give definitions of any number of mutually recursive function
-definitions, piece-wise or otherwise.
-No computation is done until you ask for a value.
-When you do ask for a value, all the relevant definitions are gathered,
-analyzed, and translated into separate functions and compiled.
-
-\xtc{
-Let's recall the definition of \userfun{eleven} from
-\texht{the previous section}{
-\downlink{``\ugUserPieceBasicTitle''}{ugUserPieceBasicPage} 
-in Section \ugUserPieceBasicNumber\ignore{ugUserPieceBasic}}.
-}{
-\spadpaste{eleven(n | n < 1) == n + 11\bound{ff0}}
-}
-\xtc{
-}{
-\spadpaste{eleven(m) == eleven(eleven(m - 12))\bound{ff1}\free{ff0}}
-}
-
-A similar doubly-recursive function below produces \axiom{-11} for all
-negative positive integers.
-If you haven't worked out why or how \userfun{eleven} works,
-the structure of this definition gives a clue.
-\xtc{
-This definition we write as a block.
-}{
-\begin{spadsrc}[\bound{rf1}]
-minusEleven(n) ==
-  n >= 0 => n - 11
-  minusEleven (5 + minusEleven(n + 7))
-\end{spadsrc}
-}
-\xtc{
-Define \axiom{s(n)} to be the
-sum of plus and minus ``eleven'' functions divided by \axiom{n}.
-Since \axiom{11 - 11 = 0}, we define \axiom{s(0)} to be \axiom{1}.
-}{
-\spadpaste{s(0) == 1\bound{rf2}}
-}
-\xtc{
-And the general term.
-}{
-\spadpaste{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3}\free{rf2 rf1 ff1}}
-}
-\xtc{
-What are the first ten values of \axiom{s}?
-}{
-\spadpaste{[s(n) for n in 0..]\free{rf3}}
-}
-%% interpreter puts the rule at the end - should fix
-Axiom can create infinite streams in the positive direction (for
-example, for index values \axiom{0,1, \ldots}) or negative direction (for
-example, for index values \axiom{0,-1,-2, \ldots}).
-Here we would like a stream of values of \axiom{s(n)} that is infinite in
-both directions.
-The function \axiom{t(n)} below returns the \eth{\axiom{n}} term of the infinite
-stream \axiom{[s(0), s(1), s(-1), s(2), s(-2), \ldots].}
-Its definition has three pieces.
-\xtc{
-Define the initial term.
-}{
-\spadpaste{t(1) == s(0)\bound{t1}\free{rf4}}
-}
-\xtc{
-The even numbered terms are the \axiom{s(i)} for positive \axiom{i}.
-We use \axiomOp{quo} rather than \axiomOp{/}
-since we want the result to be an integer.
-}{
-\spadpaste{t(n | even?(n)) == s(n quo 2)\free{t1}\bound{t2}}
-}
-\xtc{
-Finally, the odd numbered terms are the
-\axiom{s(i)} for negative \axiom{i}.
-In piece-wise definitions, you can use different variables
-to define different pieces. Axiom will not get confused.
-}{
-\spadpaste{t(p) == s(- p quo 2)\free{t2}\bound{t3}}
-}
-\xtc{
-Look at the definition of \axiom{t}.
-In the first piece, the variable \axiom{n}
-was used; in the second piece, \axiom{p}.
-Axiom always uses
-your last variable to display your definitions
-back to you.
-}{
-\spadpaste{)display value t\free{t2}}
-}
-\xtc{
-Create a series of values of \axiom{s} applied to
-alternating positive and negative arguments.
-}{
-\spadpaste{[t(i) for i in 1..]\free{t3}\bound{t4}}
-}
-\xtc{
-Evidently \axiom{t(n) = 1} for all \axiom{i.}
-Check it at \axiom{n= 100}.
-}{
-\spadpaste{t(100)\free{t4}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserPiecePredTitle}{Predicates}
-\newcommand{\ugUserPiecePredNumber}{6.11.3.}
-
-@
-\subsection{6.11.3. Predicates}
-\label{ugUserPiecePredPage}
-\begin{itemize}
-\item ugUserPieceBasicPage \ref{ugUserPieceBasicPage} on
-page~\pageref{ugUserPieceBasicPage}
-ugLangItsPage
-\end{itemize}
-\index{pages!ugUserPiecePredPage!ug06.ht}
-\index{ug06.ht!pages!ugUserPiecePredPage}
-\index{ugUserPiecePredPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPiecePredPage}{6.11.3. Predicates}
-\beginscroll
-
-We have already seen some examples of
-predicates
-(\downlink{``\ugUserPieceBasicTitle''}{ugUserPieceBasicPage} 
-in Section \ugUserPieceBasicNumber\ignore{ugUserPieceBasic}).
-Predicates are \axiomType{Boolean}-valued expressions and Axiom uses them
-for filtering collections
-(see \downlink{``\ugLangItsTitle''}{ugLangItsPage} 
-in Section \ugLangItsNumber\ignore{ugLangIts})
-and for placing
-constraints on function arguments.
-In this section we discuss their latter usage.
-
-\xtc{
-The simplest use of a predicate is one you don't see at all.
-}{
-\spadpaste{opposite 'right == 'left}
-}
-\xtc{
-Here is a longer way to give the ``opposite definition.''
-}{
-\spadpaste{opposite (x | x = 'left) == 'right}
-}
-\xtc{
-Try it out.
-}{
-\spadpaste{for x in ['right,'left,'inbetween] repeat output opposite x}
-}
-
-Explicit predicates tell Axiom that the given function definition
-piece is to be applied if the predicate evaluates to {\tt true} for the
-arguments to the function.
-You can use such ``constant'' arguments for integers,
-strings, and quoted symbols.
-The \axiomType{Boolean} values \axiom{true} and \axiom{false} can also be used
-if qualified with ``\spad{@}'' or ``\spad{\$}'' and \axiomType{Boolean}.
-The following are all valid function definition fragments using
-constant arguments.
+\subsection{Asp42 Example Code}
+\label{Asp42ExampleCode}
+\index{pages!Asp42ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp42ExampleCode}
+\index{Asp42ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp42ExampleCode}{Asp42 Example Code}
 \begin{verbatim}
-a(1) == ...
-b("unramified") == ...
-c('untested) == ...
-d(true@Boolean) == ...
+      SUBROUTINE G(EPS,YA,YB,BC,N)
+      DOUBLE PRECISION EPS,YA(N),YB(N),BC(N)
+      INTEGER N
+      BC(1)=YA(1)
+      BC(2)=YA(2)
+      BC(3)=YB(2)-1.0D0
+      RETURN
+      END
+      SUBROUTINE JACOBG(EPS,YA,YB,AJ,BJ,N)
+      DOUBLE PRECISION EPS,YA(N),AJ(N,N),BJ(N,N),YB(N)
+      INTEGER N
+      AJ(1,1)=1.0D0
+      AJ(1,2)=0.0D0
+      AJ(1,3)=0.0D0
+      AJ(2,1)=0.0D0
+      AJ(2,2)=1.0D0
+      AJ(2,3)=0.0D0
+      AJ(3,1)=0.0D0
+      AJ(3,2)=0.0D0
+      AJ(3,3)=0.0D0
+      BJ(1,1)=0.0D0
+      BJ(1,2)=0.0D0
+      BJ(1,3)=0.0D0
+      BJ(2,1)=0.0D0
+      BJ(2,2)=0.0D0
+      BJ(2,3)=0.0D0
+      BJ(3,1)=0.0D0
+      BJ(3,2)=1.0D0
+      BJ(3,3)=0.0D0
+      RETURN
+      END
+      SUBROUTINE JACGEP(EPS,YA,YB,BCEP,N)
+      DOUBLE PRECISION EPS,YA(N),YB(N),BCEP(N)
+      INTEGER N
+      BCEP(1)=0.0D0
+      BCEP(2)=0.0D0
+      BCEP(3)=0.0D0
+      RETURN
+      END
 \end{verbatim}
-
-If a function has more than one argument,
-each argument can have its own predicate.
-However, if a predicate involves two or more arguments, it must be given
-{\it after} all the arguments mentioned in the predicate have been given.
-You are always safe to give
-a single predicate at the end of the argument list.
-\xtc{
-A function involving predicates on two arguments.
-}{
-\spadpaste{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
-}
-\xtc{
-This is incorrect as it gives a predicate on \axiom{y}
-before the argument \axiom{y} is given.
-}{
-\spadpaste{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
-}
-\xtc{
-It is always correct to write the predicate at the end.
-}{
-\spadpaste{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true \bound{ifq1a}}
-}
-\xtc{
-Here is the rest of the definition.
-}{
-\spadpaste{inFirstHalfQuadrant(x,y) == false \bound{ifq1b}}
-}
-\xtc{
-Try it out.
-}{
-\spadpaste{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b}}
-}
-
-{\bf Remark:} Very old versions of Axiom allowed predicates
-to be given after a {\tt when} keyword as in
-{\tt inFirstHalfQuadrant(x ,y) == true when x >0 and y < x}.
-This is no longer supported, is WRONG, and will cause a syntax
-error or strange behavior.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug06.ht>>=
-\newcommand{\ugUserCacheTitle}{Caching Previously Computed Results}
-\newcommand{\ugUserCacheNumber}{6.12.}
-
-@
-\subsection{6.12. Caching Previously Computed Results}
-\label{ugUserCachePage}
-\begin{itemize}
-\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
-page~\pageref{ugUserFreeLocalPage}
-\end{itemize}
-\index{pages!ugUserCachePage!ug06.ht}
-\index{ug06.ht!pages!ugUserCachePage}
-\index{ugUserCachePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserCachePage}{6.12. Caching Previously Computed Results}
-\beginscroll
-
-By default, Axiom does not save the values of any function.
-You can cause it to save values and not to recompute unnecessarily
-by using \spadcmd{)set functions cache}.
-This should be used before the functions are defined or, at least, before
-they are executed.
-The word following ``cache'' should be \axiom{0} to turn off
-caching, a positive integer \axiom{n} to save the last \axiom{n}
-computed values or ``all'' to save all computed values.
-If you then give a list of names of functions, the caching
-only affects those functions.
-Use no list of names or ``all'' when you want to define the default
-behavior for functions not specifically mentioned in other
-\spadcmd{)set functions cache} statements.
-If you give no list of names, all functions will have the caching behavior.
-If you explicitly turn on caching for one or more names, you must
-explicitly turn off caching for those names when you want to stop
-saving their values.
-
-\xtc{
-This causes the functions \userfun{f} and \userfun{g} to have
-the last three computed values saved.
-}{
-\spadpaste{)set functions cache 3 f g \bound{cache}}
-}
-\xtc{
-This is a sample definition for \userfun{f}.
-}{
-\spadpaste{f x == factorial(2**x) \bound{fdef}\free{cache}}
-}
-\xtc{
-A message is displayed stating what \userfun{f} will cache.
-}{
-\spadpaste{f(4) \free{}\free{cache}}
-}
-\xtc{
-This causes all other functions to have all computed values saved by
-default.
-}{
-\spadpaste{)set functions cache all}
-}
-\xtc{
-This causes all functions that have not been specifically cached in some way
-to have no computed values saved.
-}{
-\spadpaste{)set functions cache 0}
-}
-\xtc{
-We also make \userfun{f} and \userfun{g} uncached.
-}{
-\spadpaste{)set functions cache 0 f g}
-}
-
-\beginImportant
-Be careful about caching functions that have
-\spadglossSee{side effects}{side effect}.
-Such a function might destructively modify the elements of an array or
-issue a \axiomFun{draw} command, for example.
-A function that you expect to execute every time it is called should
-not be cached.
-Also, it is highly unlikely that a function with no arguments should
-be cached.
-\endImportant
-
-You should also be careful about caching functions that depend on
-free variables.
-See \downlink{``\ugUserFreeLocalTitle''}{ugUserFreeLocalPage} in 
-Section \ugUserFreeLocalNumber\ignore{ugUserFreeLocal}
-for an example.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserRecurTitle}{Recurrence Relations}
-\newcommand{\ugUserRecurNumber}{6.13.}
-
-@
-\subsection{6.13. Recurrence Relations}
-\label{ugUserRecurPage}
-\begin{itemize}
-\item ugUserFreeLocalPage \ref{ugUserFreeLocalPage} on
-page~\pageref{ugUserFreeLocalPage}
-\item ugUserCachePage \ref{ugUserCachePage} on
-page~\pageref{ugUserCachePage}
-\end{itemize}
-\index{pages!ugUserRecurPage!ug06.ht}
-\index{ug06.ht!pages!ugUserRecurPage}
-\index{ugUserRecurPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserRecurPage}{6.13. Recurrence Relations}
-\beginscroll
-
-One of the most useful classes of function are those defined via a
-``recurrence relation.''
-A {\it recurrence relation} makes each successive
-value depend on some or all of the previous values.
-A simple example is the ordinary ``factorial'' function:
-\begin{verbatim}
-fact(0) == 1
-fact(n | n > 0) == n * fact(n-1)
-\end{verbatim}
-
-The value of
-\axiom{fact(10)} depends on the value of \axiom{fact(9)}, \axiom{fact(9)}
-on \axiom{fact(8)}, and so on.
-Because it depends on only one previous value, it is usually called a
-{\it first order recurrence relation.}
-You can easily imagine a function based on two, three or more previous
-values.
-The Fibonacci numbers are probably the most famous function defined by a
-second order recurrence relation.
-\xtc{
-The library function \axiomFun{fibonacci} computes Fibonacci numbers.
-It is obviously optimized for speed.
-}{
-\spadpaste{[fibonacci(i) for i in 0..]}
-}
-\xtc{
-Define the
-Fibonacci numbers ourselves using a piece-wise definition.
-}{
-\spadpaste{fib(1) == 1 \bound{fib0}}
-}
-\xtc{
-}{
-\spadpaste{fib(2) == 1 \bound{fib1}\free{fib0}}
-}
-\xtc{
-}{
-\spadpaste{fib(n) == fib(n-1) + fib(n-2) \bound{fibn}\free{fib1}}
-}
-
-As defined, this recurrence relation is obviously doubly-recursive.
-To compute \axiom{fib(10)}, we need to compute \axiom{fib(9)} and
-\axiom{fib(8)}.
-And to  \axiom{fib(9)}, we need to compute \axiom{fib(8)} and
-\axiom{fib(7)}.
-And so on.
-It seems that to compute \axiom{fib(10)} we need to compute
-\axiom{fib(9)} once, \axiom{fib(8)} twice, \axiom{fib(7)} three times.
-Look familiar?
-The number of function calls needed to compute {\it any} second order
-recurrence relation in the obvious way is exactly \axiom{fib(n)}.
-These numbers grow!
-For example, if Axiom actually did this, then \axiom{fib(500)}
-requires more than \texht{$10^{104}$}{\axiom{10**104}} function calls.
-And, given all this, our definition of \userfun{fib} obviously could not be
-used to calculate the five-hundredth Fibonacci number.
-\xtc{
-Let's try it anyway.
-}{
-\spadpaste{fib(500) \free{fibn}}
-}
-
-Since this takes a short time to compute, it obviously didn't do
-as many as \texht{$10^{104}$}{\axiom{10**104}} operations!
-By default, Axiom transforms any recurrence relation it recognizes
-into an iteration.
-Iterations are efficient.
-To compute the value of the \eth{\axiom{n}}
-term of a recurrence relation using an iteration requires only
-\axiom{n} function calls.\footnote{If
-you compare the speed of our \userfun{fib} function
-to the library function, our version is still slower.
-This is because the library
-\axiomFunFrom{fibonacci}{IntegerNumberTheoryFunctions}
-uses a ``powering algorithm'' with a computing time
-proportional to \texht{$\log^3(n)$}{\axiom{log(n)**3}} to compute
-\axiom{fibonacci(n).}}
-
-To turn off this special recurrence relation compilation, issue
+\subsection{Asp49 Example Code}
+\label{Asp49ExampleCode}
+\index{pages!Asp49ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp49ExampleCode}
+\index{Asp49ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp49ExampleCode}{Asp49 Example Code}
 \begin{verbatim}
-)set functions recurrence off
+      SUBROUTINE OBJFUN(MODE,N,X,OBJF,OBJGRD,NSTATE,IUSER,USER)
+      DOUBLE PRECISION X(N),OBJF,OBJGRD(N),USER(*)
+      INTEGER N,IUSER(*),MODE,NSTATE
+      OBJF=X(4)*X(9)+((-1.0D0*X(5))+X(3))*X(8)+((-1.0D0*X(3))+X(1))*X(7)
+     &+(-1.0D0*X(2)*X(6))
+      OBJGRD(1)=X(7)
+      OBJGRD(2)=-1.0D0*X(6)
+      OBJGRD(3)=X(8)+(-1.0D0*X(7))
+      OBJGRD(4)=X(9)
+      OBJGRD(5)=-1.0D0*X(8)
+      OBJGRD(6)=-1.0D0*X(2)
+      OBJGRD(7)=(-1.0D0*X(3))+X(1)
+      OBJGRD(8)=(-1.0D0*X(5))+X(3)
+      OBJGRD(9)=X(4)
+      RETURN
+      END
 \end{verbatim}
-To turn it back on, substitute ``{\tt on}'' for ``{\tt off}''.
-
-The transformations that Axiom uses for \userfun{fib} caches the
-last two values.\footnote{For a more general \eth{\axiom{k}} order recurrence
-relation, Axiom caches the last \axiom{k} values.}
-If, after computing a value for \userfun{fib}, you ask
-for some larger value, Axiom picks up the cached values
-and continues computing from there.
-See \downlink{``\ugUserFreeLocalTitle''}{ugUserFreeLocalPage} 
-in Section \ugUserFreeLocalNumber\ignore{ugUserFreeLocal}
-for an example of a function definition that has this same behavior.
-Also see \downlink{``\ugUserCacheTitle''}{ugUserCachePage} 
-in Section \ugUserCacheNumber\ignore{ugUserCache}
-for a more general discussion of how you can cache function values.
-
-Recurrence relations can be used for defining recurrence relations
-involving polynomials, rational functions, or anything you like.
-Here we compute the infinite stream of Legendre polynomials.
-\xtc{
-The Legendre polynomial of degree \axiom{0.}
-}{
-\spadpaste{p(0) == 1\bound{p0}}
-}
-\xtc{
-The Legendre polynomial of degree \axiom{1.}
-}{
-\spadpaste{p(1) == x\bound{p1}}
-}
-
-\xtc{
-The Legendre polynomial of degree \axiom{n}.
-}{
-\spadpaste{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn}\free{p1}}
-}
-\xtc{
-Compute the Legendre polynomial of degree \axiom{6.}
-}{
-\spadpaste{p(6)\free{pn}}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug06.ht>>=
-\newcommand{\ugUserMakeTitle}{Making Functions from Objects}
-\newcommand{\ugUserMakeNumber}{6.14.}
-
-@
-\subsection{6.14. Making Functions from Objects}
-\label{ugUserMakePage}
-\begin{itemize}
-\item MakeFunctionXmpPage \ref{MakeFunctionXmpPage} on
-page~\pageref{MakeFunctionXmpPage}
-\end{itemize}
-\index{pages!ugUserMakePage!ug06.ht}
-\index{ug06.ht!pages!ugUserMakePage}
-\index{ugUserMakePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserMakePage}{6.14. Making Functions from Objects}
-\beginscroll
-
-There are many times when you compute a complicated expression
-and then wish to use that expression as the body of a function.
-Axiom provides an operation called \axiomFun{function} to do
-this.
-It creates a function object and places it into the workspace.
-There are several versions, depending on how many arguments the function
-has.
-The first argument to \axiomFun{function} is always the expression to be
-converted into the function body, and the second is always the name to be
-used for the function.
-For more information, see \downlink{`MakeFunction'}{MakeFunctionXmpPage}
-\ignore{MakeFunction}.
-
-\xtc{
-Start with a simple example of a polynomial in three variables.
-}{
-\spadpaste{p := -x + y**2 - z**3 \bound{p}}
-}
-\xtc{
-To make this into a function of no arguments that
-simply returns the polynomial, use the two argument form of
-\axiomFun{function}.
-}{
-\spadpaste{function(p,'f0) \free{p}\bound{f0}}
-}
-\xtc{
-To avoid possible conflicts (see below), it is a good idea to
-quote always this second argument.
-}{
-\spadpaste{f0 \free{f0}}
-}
-\xtc{
-This is what you get when you evaluate the function.
-}{
-\spadpaste{f0() \free{f0}}
-}
-\xtc{
-To make a function in \axiom{x}, use a version of
-\axiomFun{function} that takes three arguments.
-The last argument is the name of the variable to use as the parameter.
-Typically, this variable occurs in the expression and, like the function
-name, you should quote it to avoid possible confusion.
-}{
-\spadpaste{function(p,'f1,'x) \free{p}\bound{f1}}
-}
-\xtc{
-This is what the new function looks like.
-}{
-\spadpaste{f1 \free{f1}}
-}
-\xtc{
-This is the value of \userfun{f1} at \axiom{x = 3}.
-Notice that the return type of the function is
-\axiomType{Polynomial (Integer)}, the same as \axiom{p}.
-}{
-\spadpaste{f1(3) \free{f1}}
-}
-\xtc{
-To use \axiom{x} and \axiom{y} as parameters, use the
-four argument form of \axiomFun{function}.
-}{
-\spadpaste{function(p,'f2,'x,'y) \free{p}\bound{f2}}
-}
-\xtc{
-}{
-\spadpaste{f2 \free{f2}}
-}
-\xtc{
-Evaluate \axiom{f2} at \axiom{x = 3} and \axiom{y = 0}.
-The return type of \userfun{f2} is still
-\axiomType{Polynomial(Integer)} because the variable \axiom{z}
-is still present and not one of the parameters.
-}{
-\spadpaste{f2(3,0) \free{f2}}
-}
-\xtc{
-Finally, use all three variables as parameters.
-There is no five argument form of \axiomFun{function}, so use the one with
-three arguments, the third argument being a list of the parameters.
-}{
-\spadpaste{function(p,'f3,['x,'y,'z]) \free{p}\bound{f3}}
-}
-\xtc{
-Evaluate this using the same values for \axiom{x} and \axiom{y}
-as above, but let \axiom{z} be \axiom{-6}.
-The result type of \userfun{f3} is \axiomType{Integer}.
-}{
-\spadpaste{f3 \free{f3}}
-}
-\xtc{
-}{
-\spadpaste{f3(3,0,-6) \free{f3}}
-}
-
-The four functions we have defined via \axiom{p} have been undeclared.
-To declare a function whose body is to be generated by
-\axiomFun{function}, 
-issue the declaration {\it before} the function is created.
-\xtc{
-}{
-\spadpaste{g: (Integer, Integer) -> Float \bound{g}}
-}
-\xtc{
-}{
-\spadpaste{D(sin(x-y)/cos(x+y),x) \bound{prev}}
-}
-\xtc{
-}{
-\spadpaste{function(\%,'g,'x,'y) \free{g}\free{prev}}
-}
-\xtc{
-}{
-\spadpaste{g \free{g}}
-}
-It is an error to use \axiom{g} without the quote in the
-penultimate expression since \axiom{g} had been declared but did not have
-a value.
-Similarly, since it is common to overuse variable names like \axiom{x},
-\axiom{y}, and so on,
-you avoid problems if you always quote the variable names
-for \axiomFun{function}.
-In general,
-if \axiom{x} has a value and you use \axiom{x} without a quote in a call to
-\axiomFun{function}, then
-Axiom does not know what you are trying to do.
-
-What kind of object is allowable as the first argument to \axiomFun{function}?
-Let's use the \Browse{} facility of \HyperName{} to find out.
-At the main \Browse{} menu, enter the string {\tt function} and then
-click on {\bf Operations.}
-The exposed operations called \axiomFun{function} all take an object
-whose type belongs to category \axiomType{ConvertibleTo InputForm}.
-What domains are those?
-Go back to the main \Browse{} menu, erase {\tt function},
-enter {\tt ConvertibleTo} in the
-input area, and click on {\bf categories} on the {\bf Constructors} line.
-At the bottom of the page, enter {\tt InputForm} in the input area
-following {\bf S =}.
-Click on {\bf Cross Reference} and then on {\bf Domains}.
-The list you see contains over forty domains that belong to the
-category \axiomType{ConvertibleTo InputForm}.
-Thus you can use \axiomFun{function} for \axiomType{Integer},
-\axiomType{Float},
-\axiomType{String},
-\axiomType{Complex},
-\axiomType{Expression}, and so on.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserBlocksTitle}{Functions Defined with Blocks}
-\newcommand{\ugUserBlocksNumber}{6.15.}
-
-@
-\subsection{6.15. Functions Defined with Blocks}
-\label{ugUserBlocksPage}
-\begin{itemize}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\end{itemize}
-\index{pages!ugUserBlocksPage!ug06.ht}
-\index{ug06.ht!pages!ugUserBlocksPage}
-\index{ugUserBlocksPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserBlocksPage}{6.15. Functions Defined with Blocks}
-\beginscroll
-
-You need not restrict yourself to functions that only fit on one line
-or are written in a piece-wise manner.
-The body of the function can be a block, as discussed in
-\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} 
-in Section \ugLangBlocksNumber\ignore{ugLangBlocks}.
-
-\labelSpace{1pc}
-\xtc{
-Here is a short function that swaps two elements of a list,
-array or vector.
-}{
-\begin{spadsrc}[\bound{swap}]
-swap(m,i,j) ==
-  temp := m.i
-  m.i := m.j
-  m.j := temp
-\end{spadsrc}
-}
-\xtc{
-The significance of \userfun{swap} is that it has a destructive
-effect on its first argument.
-}{
-\spadpaste{k := [1,2,3,4,5] \bound{k}}
-}
-\xtc{
-}{
-\spadpaste{swap(k,2,4) \free{l swap}\bound{swapk}}
-}
-\xtc{
-You see that the second and fourth elements are interchanged.
-}{
-\spadpaste{k \free{swapk}}
-}
-
-\xtc{
-Using this, we write a couple of different sort functions.
-First, a simple bubble sort.
-The operation \axiomOpFrom{\#}{List} returns the number of elements in
-an aggregate.
-}{
-\begin{spadsrc}[\bound{bubbleSort}]
-bubbleSort(m) ==
-  n := #m
-  for i in 1..(n-1) repeat
-    for j in n..(i+1) by -1 repeat
-      if m.j < m.(j-1) then swap(m,j,j-1)
-  m
-\end{spadsrc}
-}
-\xtc{
-Let this be the list we want to sort.
-}{
-\spadpaste{m := [8,4,-3,9] \bound{m}}
-}
-\xtc{
-This is the result of sorting.
-}{
-\spadpaste{bubbleSort(m) \free{m swap bubbleSort}\bound{sortm}}
-}
-\xtc{
-Moreover, \axiom{m} is destructively changed to be the sorted version.
-}{
-\spadpaste{m \free{sortm}}
-}
-
-\xtc{
-This function implements an insertion sort.
-The basic idea is to traverse the list and insert the \eth{\axiom{i}}
-element in its correct position among the \axiom{i-1} previous
-elements.
-Since we start at the beginning of the list, the list elements before the
-\eth{\axiom{i}} element have already been placed in ascending order.
-}{
-\begin{spadsrc}[\bound{insertionSort}]
-insertionSort(m) ==
-  for i in 2..#m repeat
-    j := i
-    while j > 1 and m.j < m.(j-1) repeat
-      swap(m,j,j-1)
-      j := j - 1
-  m
-\end{spadsrc}
-}
-\xtc{
-As with our bubble sort, this is a destructive function.
-}{
-\spadpaste{m := [8,4,-3,9] \bound{m1}}
-}
-\xtc{
-}{
-\spadpaste{insertionSort(m) \free{m1 swap insertionSort}\bound{sortm1}}
-}
-\xtc{
-}{
-\spadpaste{m \free{sortm1}}
-}
-
-Neither of the above functions is efficient for sorting large lists since
-they reference elements by asking for the \eth{\axiom{j}} element of the
-structure \axiom{m}.
-%For lists, compute \axiom{m.(j+1) = rest(m,j).first}, and thus, starting at
-%the first node of \axiom{m}, walk down to the \eth{\axiom{j}} node, then call
-%\axiomFun{first}.
-
-\xtc{
-Here is a more efficient bubble sort for lists.
-}{
-\begin{spadsrc}[\bound{bubbleSort2}]
-bubbleSort2(m: List Integer): List Integer ==
-  null m => m
-  l := m
-  while not null (r := l.rest) repeat
-     r := bubbleSort2 r
-     x := l.first
-     if x < r.first then
-       l.first := r.first
-       r.first := x
-     l.rest := r
-     l := l.rest
-  m
-\end{spadsrc}
-}
-\xtc{
-Try it out.
-}{
-\spadpaste{bubbleSort2 [3,7,2]\free{bubbleSort2}}
-}
-
-This definition is both recursive and iterative, and is tricky!
-Unless you are {\it really} curious about this definition,
-we suggest you skip immediately to the next section.
-
-Here are the key points in the definition.
-First notice that if you are sorting a list with less than two elements,
-there is nothing to do: just return the list.
-This definition returns immediately if there are zero elements, and skips
-the entire \axiom{while} loop if there is just one element.
-
-The second point to realize is that on each outer iteration, the bubble sort
-ensures that the minimum element is propagated leftmost.
-Each iteration of the \axiom{while} loop calls \userfun{bubbleSort2}
-recursively to sort all but the first element.
-When finished, the minimum element is either in the first or second position.
-The conditional expression ensures that it comes first.
-If it is in the second, then a swap occurs.
-In any case, the \axiomFun{rest} of the original list must be updated to hold
-the result of the recursive call.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserFreeLocalTitle}{Free and Local Variables}
-\newcommand{\ugUserFreeLocalNumber}{6.16.}
-
-@
-\subsection{6.16. Free and Local Variables}
-\label{ugUserFreeLocalPage}
-\begin{itemize}
-\item ugUserCachePage \ref{ugUserCachePage} on
-page~\pageref{ugUserCachePage}
-\item ugUserRecurPage \ref{ugUserRecurPage} on
-page~\pageref{ugUserRecurPage}
-\end{itemize}
-\index{pages!ugUserFreeLocalPage!ug06.ht}
-\index{ug06.ht!pages!ugUserFreeLocalPage}
-\index{ugUserFreeLocalPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserFreeLocalPage}{6.16. Free and Local Variables}
-\beginscroll
-
-When you want to refer to a variable that is not local to your
-function, use a ``\axiom{free}'' declaration.
-\spadkey{free}
-Variables declared to be \axiom{free}
-are assumed to be defined globally
-in the
-workspace.
-
-\labelSpace{1pc}
-\xtc{
-This is a global workspace variable.
-}{
-\spadpaste{counter := 0 \bound{counter}}
-}
-\xtc{
-This function refers to the global \axiom{counter}.
-}{
-\begin{spadsrc}[\free{counter}\bound{f}]
-f() ==
-  free counter
-  counter := counter + 1
-\end{spadsrc}
-}
-\xtc{
-The global \axiom{counter} is incremented by \axiom{1}.
-}{
-\spadpaste{f() \free{f}\bound{f1}}
-}
-\xtc{
-}{
-\spadpaste{counter \free{f1}}
-}
-
-Usually Axiom can tell that you mean to refer to a global
-variable and so \axiom{free} isn't always necessary.
-However, for clarity and the sake of self-documentation, we encourage
-you to use it.
-
-Declare a variable to be ``\axiom{local}'' when you do not want to refer to
-a global variable by the same name.
-
-\xtc{
-This function uses \axiom{counter} as a local variable.
-}{
-\begin{spadsrc}[\bound{g}]
-g() ==
-  local counter
-  counter := 7
-\end{spadsrc}
-}
-\xtc{
-Apply the function.
-}{
-\spadpaste{g() \free{g}}
-}
-\xtc{
-Check that the global value of \axiom{counter} is unchanged.
-}{
-\spadpaste{counter\free{g f1}}
-}
-
-Parameters to a function are local variables in the function.
-Even if you issue a \axiom{free} declaration for a parameter, it is
-still local.
-
-What happens if you do not declare that a variable \axiom{x} in
-the body of your function is \axiom{local} or \axiom{free}?
-Well, Axiom decides on this basis:
-
-\indent{4}
-\beginitems
-\item[1. ] Axiom scans your function line-by-line, from top-to-bottom.
-The right-hand side of an assignment is looked at before the left-hand
-side.
-\item[2. ] If \axiom{x} is referenced before it is assigned a value, it is a
-\axiom{free} (global) variable.
-\item[3. ] If \axiom{x} is assigned a value before it is referenced, it is a
-\axiom{local} variable.
-\enditems
-\indent{0}
-
-\xtc{
-Set two global variables to 1.
-}{
-\spadpaste{a := b := 1\bound{ab1}}
-}
-\xtc{
-Refer to \axiom{a} before it is assigned a value, but
-assign a value to \axiom{b} before it is referenced.
-}{
-\begin{spadsrc}[\bound{hh}]
-h() ==
-  b := a + 1
-  a := b + a
-\end{spadsrc}
-}
-\xtc{
-Can you predict this result?
-}{
-\spadpaste{h() \free{ab1 hh}\bound{hhh}}
-}
-\xtc{
-How about this one?
-}{
-\spadpaste{[a, b] \free{hhh}}
-}
-
-What happened?
-In the first line of the function body for \axiom{h}, \axiom{a} is
-referenced on the right-hand side of the assignment.
-Thus \axiom{a} is a free variable.
-The variable \axiom{b} is not referenced in that line, but it is
-assigned a value.
-Thus \axiom{b} is a local variable and is given the value
-\axiom{a + 1 = 2}.
-In the second line, the free variable \axiom{a} is assigned the value
-\axiom{b + a}which equals \axiom{2 + 1 = 3.}
-This is the value returned by the function.
-Since \axiom{a} was free in \userfun{h}, the global variable \axiom{a}
-has value \axiom{3.}
-Since \axiom{b} was local in \userfun{h}, the global variable \axiom{b}
-is unchanged---it still has the value \axiom{1.}
-
-It is good programming practice always to declare global variables.
-However, by far the most common situation is to have local variables in
-your functions.
-No declaration is needed for this situation, but be sure to
-initialize their values.
-
-Be careful if you use free variables and you cache the value of
-your function (see \downlink{``\ugUserCacheTitle''}{ugUserCachePage} 
-in Section \ugUserCacheNumber\ignore{ugUserCache}).
-Caching {\it only} checks if the values of the function arguments
-are the same as in a function call previously seen.
-It does not check if any of the free variables on which the
-function depends have changed between function calls.
-\xtc{
-Turn on caching for \userfun{p}.
-}{
-\spadpaste{)set fun cache all p \bound{pcache}}
-}
-\xtc{
-Define \userfun{p} to depend on the free variable \axiom{N}.
-}{
-\spadpaste{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) ) \free{pcache}\bound{pdef}}
-}
-\xtc{
-Set the value of \axiom{N}.
-}{
-\spadpaste{N := 1 \bound{Nass}}
-}
-\xtc{
-Evaluate \userfun{p} the first time.
-}{
-\spadpaste{p(0, x) \free{pdef Nass}\bound{pfirst}}
-}
-\xtc{
-Change the value of \axiom{N}.
-}{
-\spadpaste{N := 2 \bound{Nass2}}
-}
-\xtc{
-Evaluate \userfun{p} the second time.
-}{
-\spadpaste{p(0, x) \free{pfirst Nass2}}
-}
-If caching had been turned off, the second evaluation would have
-reflected the changed value of \axiom{N}.
-\xtc{
-Turn off caching for \userfun{p}.
-}{
-\spadpaste{)set fun cache 0 p}
-}
-
-Axiom does not allow {\it fluid variables}, that is, variables
-\spadglossSee{bound}{binding} by a function \spad{f} that can be referenced by
-functions called by \spad{f}.
-
-Values are passed to functions by \spadgloss{reference}: a pointer
-to the value is passed rather than a copy of the value or a pointer to
-a copy.
-
-\xtc{
-This is a global variable that is bound to a record object.
-}{
-\spadpaste{r : Record(i : Integer) := [1] \free{r}}
-}
-\xtc{
-This function first modifies the one component of its
-record argument and then rebinds the parameter to another
-record.
-}{
-\begin{spadsrc}[\bound{resetRecord}]
-resetRecord rr ==
-  rr.i := 2
-  rr := [10]
-\end{spadsrc}
-}
-\xtc{
-Pass \axiom{r} as an argument to \userfun{resetRecord}.
-}{
-\spadpaste{resetRecord r \free{r resetRecord}\bound{rr}}
-}
-\xtc{
-The value of \axiom{r} was changed by the expression
-\axiom{rr.i := 2} but not by \axiom{rr := [10]}.
-}{
-\spadpaste{r \free{rr}}
-}
-
-To conclude this section, we give an iterative definition of
-a function that computes Fibonacci numbers.
-This definition approximates the definition into which Axiom
-transforms the recurrence relation definition of \userfun{fib} in
-\downlink{``\ugUserRecurTitle''}{ugUserRecurPage} 
-in Section \ugUserRecurNumber\ignore{ugUserRecur}.
-
-\xtc{
-Global variables
-\axiom{past} and \axiom{present} are used
-to hold the last computed Fibonacci numbers.
-}{
-\spadpaste{past := present := 1\bound{f0}}
-}
-\xtc{
-Global variable \axiom{index} gives the
-current index of \axiom{present}.
-}{
-\spadpaste{index := 2\bound{f1}\free{f0}}
-}
-\xtc{
-Here is a recurrence relation defined in terms
-of these three global variables.
-}{
-\begin{spadsrc}[\bound{f3}\free{f2}]
-fib(n) ==
-  free past, present, index
-  n < 3 => 1
-  n = index - 1 => past
-  if n < index-1 then
-    (past,present) := (1,1)
-    index := 2
-  while (index < n) repeat
-    (past,present) := (present, past+present)
-    index := index + 1
-  present
-\end{spadsrc}
-}
-\xtc{
-Compute the infinite stream of Fibonacci numbers.
-}{
-\spadpaste{fibs := [fib(n) for n in 1..] \bound{fibs}\free{f3}}
-}
-\xtc{
-What is the 1000th Fibonacci number?
-}{
-\spadpaste{fibs 1000 \free{fibs}}
-}
-
-As an exercise, we suggest you write a function in an iterative
-style that computes the value of the recurrence relation
-\texht{$p(n) = p(n-1) - 2 \, p(n-2) + 4 \, p(n-3)$}{\axiom{p(n) = p(n-1) - 2*p(n-2) + 4*p(n-3)}}
-having the initial values
-\texht{$p(1) = 1,\, p(2) = 3 \hbox{ and } p(3) = 9.$}{\axiom{p(1) = 1, p(2) = 3 {\rm and} p(3) = 9.}}
-How would you write the function using an element
-\axiomType{OneDimensionalArray} or \axiomType{Vector}
-to hold the previously computed values?
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserAnonTitle}{Anonymous Functions}
-\newcommand{\ugUserAnonNumber}{6.17.}
-
-@
-\subsection{6.17. Anonymous Functions}
-\label{ugUserAnonPage}
-\begin{itemize}
-\item ugUserAnonExampPage \ref{ugUserAnonExampPage} on
-page~\pageref{ugUserAnonExampPage}
-\item ugUserAnonDeclarePage \ref{ugUserAnonDeclarePage} on
-page~\pageref{ugUserAnonDeclarePage}
-\end{itemize}
-\index{pages!ugUserAnonPage!ug06.ht}
-\index{ug06.ht!pages!ugUserAnonPage}
-\index{ugUserAnonPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserAnonPage}{6.17. Anonymous Functions}
-\beginscroll
-
-\beginImportant
-An {\it anonymous function} is a function that is
-defined
-by giving a list of parameters, the ``maps-to'' compound
-symbol \axiomSyntax{+->} \texht{(from the mathematical symbol
-$\mapsto$)}{},
-and by an expression involving the parameters, the evaluation of
-which determines the return value of the function.
-
-\centerline{{{\tt ( \subscriptIt{parm}{1}, \subscriptIt{parm}{2}, \ldots, \subscriptIt{parm}{N} ) +-> {\it expression}}}}
-\endImportant
-
-You can apply an anonymous function in several ways.
-\indent{4}
-\beginitems
-\item[1. ] Place the anonymous function definition in parentheses
-directly followed by a list of arguments.
-\item[2. ] Assign the anonymous function to a variable and then
-use the variable name when you would normally use a function name.
-\item[3. ] Use \axiomSyntax{==} to use the anonymous function definition as
-the arguments and body of a regular function definition.
-\item[4. ] Have a named function contain a declared anonymous function and
-use the result returned by the named function.
-\enditems
-\indent{0}
-
-\beginmenu
-    \menudownlink{{6.17.1. Some Examples}}{ugUserAnonExampPage}
-    \menudownlink{{6.17.2. Declaring Anonymous Functions}}
-{ugUserAnonDeclarePage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserAnonExampTitle}{Some Examples}
-\newcommand{\ugUserAnonExampNumber}{6.17.1.}
-
-@
-\subsection{6.17.1. Some Examples}
-\label{ugUserAnonExampPage}
-\index{pages!ugUserAnonExampPage!ug06.ht}
-\index{ug06.ht!pages!ugUserAnonExampPage}
-\index{ugUserAnonExampPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserAnonExampPage}{6.17.1. Some Examples}
-\beginscroll
-
-Anonymous functions are particularly useful for defining functions
-``on the fly.'' That is, they are handy for simple functions that
-are used only in one place.
-In the following examples, we show how to write some simple
-anonymous functions.
-
-\xtc{
-This is a simple absolute value function.
-}{
-\spadpaste{x +-> if x < 0 then -x else x \bound{anon0}}
-}
-\xtc{
-}{
-\spadpaste{abs1 := \% \free{anon0}\bound{abs1}}
-}
-\xtc{
-This function returns {\tt true} if the absolute value of
-the first argument is greater than the absolute value of the
-second, {\tt false} otherwise.
-}{
-\spadpaste{(x,y) +-> abs1(x) > abs1(y) \bound{anon1}\free{abs1}}
-}
-\xtc{
-We use the above function to ``sort'' a list of integers.
-}{
-\spadpaste{sort(\%,[3,9,-4,10,-3,-1,-9,5]) \free{anon1}}
-}
-
-\xtc{
-This function returns \axiom{1} if \axiom{i + j} is even, \axiom{-1} otherwise.
-}{
-\spadpaste{ev := ( (i,j) +-> if even?(i+j) then 1 else -1) \bound{ev}}
-}
-\xtc{
-We create a four-by-four matrix containing \axiom{1} or \axiom{-1}
-depending on whether the row plus the column index is even or not.
-}{
-\spadpaste{matrix([[ev(row,col) for row in 1..4] for col in 1..4]) \free{ev}}
-}
-
-\xtc{
-This function returns {\tt true} if a polynomial in \axiom{x} has multiple
-roots, {\tt false} otherwise.
-It is defined and applied in the same expression.
-}{
-\spadpaste{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
-}
-
-\xtc{
-This and the next expression are equivalent.
-}{
-\spadpaste{g(x,y,z) == cos(x + sin(y + tan(z)))}
-}
-\xtc{
-The one you use is a matter of taste.
-}{
-\spadpaste{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserAnonDeclareTitle}{Declaring Anonymous Functions}
-\newcommand{\ugUserAnonDeclareNumber}{6.17.2.}
-
-@
-\subsection{6.17.2. Declaring Anonymous Functions}
-\label{ugUserAnonDeclarePage}
-\index{pages!ugUserAnonDeclarePage!ug06.ht}
-\index{ug06.ht!pages!ugUserAnonDeclarePage}
-\index{ugUserAnonDeclarePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserAnonDeclarePage}{6.17.2. Declaring Anonymous Functions}
-\beginscroll
-
-If you declare any of the arguments you must declare all of them.
-Thus,
-\begin{verbatim}
-(x: INT,y): FRAC INT +-> (x + 2*y)/(y - 1)
-\end{verbatim}
-is not legal.
-
-\xtc{
-This is an example of a fully declared anonymous
-function.
-The output shown just indicates that the object you created is a
-particular kind of map, that is, function.
-}{
-\spadpaste{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-}
-\xtc{
-Axiom allows you to declare the arguments and not declare
-the return type.
-}{
-\spadpaste{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
-}
-The return type is computed from the types of the arguments and the
-body of the function.
-You cannot declare the return type if you do not declare the arguments.
-Therefore,
+\subsection{Asp50 Example Code}
+\label{Asp50ExampleCode}
+\index{pages!Asp50ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp50ExampleCode}
+\index{Asp50ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp50ExampleCode}{Asp50 Example Code}
 \begin{verbatim}
-(x,y): FRAC INT +-> (x + 2*y)/(y - 1)
+      SUBROUTINE LSFUN1(M,N,XC,FVECC)
+      DOUBLE PRECISION FVECC(M),XC(N)
+      INTEGER I,M,N
+      FVECC(1)=((XC(1)-2.4D0)*XC(3)+(15.0D0*XC(1)-36.0D0)*XC(2)+1.0D0)/(
+     &XC(3)+15.0D0*XC(2))
+      FVECC(2)=((XC(1)-2.8D0)*XC(3)+(7.0D0*XC(1)-19.6D0)*XC(2)+1.0D0)/(X
+     &C(3)+7.0D0*XC(2))
+      FVECC(3)=((XC(1)-3.2D0)*XC(3)+(4.333333333333333D0*XC(1)-13.866666
+     &66666667D0)*XC(2)+1.0D0)/(XC(3)+4.333333333333333D0*XC(2))
+      FVECC(4)=((XC(1)-3.5D0)*XC(3)+(3.0D0*XC(1)-10.5D0)*XC(2)+1.0D0)/(X
+     &C(3)+3.0D0*XC(2))
+      FVECC(5)=((XC(1)-3.9D0)*XC(3)+(2.2D0*XC(1)-8.579999999999998D0)*XC
+     &(2)+1.0D0)/(XC(3)+2.2D0*XC(2))
+      FVECC(6)=((XC(1)-4.199999999999999D0)*XC(3)+(1.666666666666667D0*X
+     &C(1)-7.0D0)*XC(2)+1.0D0)/(XC(3)+1.666666666666667D0*XC(2))
+      FVECC(7)=((XC(1)-4.5D0)*XC(3)+(1.285714285714286D0*XC(1)-5.7857142
+     &85714286D0)*XC(2)+1.0D0)/(XC(3)+1.285714285714286D0*XC(2))
+      FVECC(8)=((XC(1)-4.899999999999999D0)*XC(3)+(XC(1)-4.8999999999999
+     &99D0)*XC(2)+1.0D0)/(XC(3)+XC(2))
+      FVECC(9)=((XC(1)-4.699999999999999D0)*XC(3)+(XC(1)-4.6999999999999
+     &99D0)*XC(2)+1.285714285714286D0)/(XC(3)+XC(2))
+      FVECC(10)=((XC(1)-6.8D0)*XC(3)+(XC(1)-6.8D0)*XC(2)+1.6666666666666
+     &67D0)/(XC(3)+XC(2))
+      FVECC(11)=((XC(1)-8.299999999999999D0)*XC(3)+(XC(1)-8.299999999999
+     &999D0)*XC(2)+2.2D0)/(XC(3)+XC(2))
+      FVECC(12)=((XC(1)-10.6D0)*XC(3)+(XC(1)-10.6D0)*XC(2)+3.0D0)/(XC(3)
+     &+XC(2))
+      FVECC(13)=((XC(1)-1.34D0)*XC(3)+(XC(1)-1.34D0)*XC(2)+4.33333333333
+     &3333D0)/(XC(3)+XC(2))
+      FVECC(14)=((XC(1)-2.1D0)*XC(3)+(XC(1)-2.1D0)*XC(2)+7.0D0)/(XC(3)+X
+     &C(2))
+      FVECC(15)=((XC(1)-4.39D0)*XC(3)+(XC(1)-4.39D0)*XC(2)+15.0D0)/(XC(3
+     &)+XC(2))
+      END
 \end{verbatim}
-is not legal.
-
-\xtc{
-This and the next expression are equivalent.
-}{
-\spadpaste{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
-}
-\xtc{
-The one you use is a matter of taste.
-}{
-\spadpaste{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-}
-
-When should you declare an anonymous function?
-\indent{4}
-\beginitems
-\item[1. ] If you use an anonymous function and Axiom can't figure
-out what you are trying to do, declare the function.
-\item[2. ] If the function has nontrivial argument types or a
-nontrivial return type that
-Axiom may be able to determine eventually, but you are not
-willing to wait that long, declare the function.
-\item[3. ] If the function will only be used for arguments of specific
-types and it is not too much trouble to declare the function, do so.
-\item[4. ] If you are using the anonymous function as an argument to
-another function (such as \axiomFun{map} or \axiomFun{sort}),
-consider declaring the function.
-\item[5. ] If you define an anonymous function inside a named function,
-you {\it must} declare the anonymous function.
-\enditems
-\indent{0}
-
-\xtc{
-This is an example of a named function for integers that returns a
-function.
-}{
-\spadpaste{addx x == ((y: Integer): Integer +-> x + y) \bound{addx}}
-}
-\xtc{
-We define \userfun{g} to be a function that adds \axiom{10} to its
-argument.
-}{
-\spadpaste{g := addx 10 \free{addx}\bound{g}}
-}
-\xtc{
-Try it out.
-}{
-\spadpaste{g 3 \free{g}}
-}
-\xtc{
-}{
-\spadpaste{g(-4) \free{g}}
-}
-
-An anonymous function cannot be recursive: since it does not have a
-name, you cannot even call it within itself!
-If you place an anonymous function inside a named function, the
-anonymous function must be declared.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserDatabaseTitle}{Example: A Database}
-\newcommand{\ugUserDatabaseNumber}{6.18.}
-
-@
-\subsection{6.18. Example: A Database}
-\label{ugUserDatabasePage}
-\index{pages!ugUserDatabasePage!ug06.ht}
-\index{ug06.ht!pages!ugUserDatabasePage}
-\index{ugUserDatabasePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserDatabasePage}{6.18. Example: A Database}
-\beginscroll
-
-This example shows how you can use Axiom to organize a database of
-lineage data and then query the database for relationships.
-
-\labelSpace{1.5pc}
-\xtc{
-The database is entered as ``assertions'' that are really
-pieces of a function definition.
-}{
-\spadpaste{children("albert") == ["albertJr","richard","diane"]\bound{d1}}
-}
-\xtc{
-Each piece
-\axiom{children(x) == y} means
-``the children of \axiom{x} are \axiom{y}''.
-}{
-\spadpaste{children("richard") == ["douglas","daniel","susan"]\free{d1}\bound{d2}}
-}
-\xtc{
-This family tree thus spans four generations.
-}{
-\spadpaste{children("douglas") == ["dougie","valerie"]\free{d2}\bound{d3}}
-}
-\xtc{
-Say ``no one else has children.''
-}{
-\spadpaste{children(x) == []\free{d3}\bound{d4}}
-}
-
-\xtc{
-We need some functions for computing lineage.
-Start with \axiom{childOf}.
-}{
-\spadpaste{childOf(x,y) == member?(x,children(y))\bound{d9}\free{d10}}
-}
-\xtc{
-To find the \axiom{parentOf} someone,
-you have to scan the database of
-people applying \axiom{children}.
-}{
-\begin{spadsrc}[\bound{d8a}\free{d9}]
-parentOf(x) ==
-  for y in people repeat
-    (if childOf(x,y) then return y)
-  "unknown"
-\end{spadsrc}
-}
-\xtc{
-And a grandparent of \axiom{x} is just a parent of a parent of \axiom{x}.
-}{
-\spadpaste{grandParentOf(x) == parentOf parentOf x\bound{d8}\free{d8a}}
-}
-\xtc{
-The grandchildren of \axiom{x}
-are the people \axiom{y} such that
-\axiom{x} is a grandparent of \axiom{y}.
-}{
-\spadpaste{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7}\bound{d8}}
-}
-\xtc{
-Suppose you want to make a list of all great-grandparents.
-Well, a great-grandparent is a grandparent of a person who has children.
-}{
-\begin{spadsrc}[\free{d6}\bound{d7}]
-greatGrandParents == [x for x in people |
-  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
-\end{spadsrc}
-}
-\xtc{
-Define \axiom{descendants} to include the parent as well.
-}{
-\begin{spadsrc}[\free{d5}\bound{d6}]
-descendants(x) ==
-  kids := children(x)
-  null kids => [x]
-  concat(x,reduce(concat,[descendants(y)
-    for y in kids],[]))
-\end{spadsrc}
-}
-\xtc{
-Finally, we need a list of people.
-Since all people are descendants of ``albert'', let's say so.
-}{
-\spadpaste{people == descendants "albert"\free{d4}\bound{d5}}
-}
-
-We have used \axiomSyntax{==} to define the database and some functions to
-query the database.
-But no computation is done until we ask for some information.
-Then, once and for all, the functions are analyzed and compiled to machine
-code for run-time efficiency.
-Notice that no types are given anywhere in this example.
-They are not needed.
-
-\xtc{
-Who are the grandchildren of ``richard''?
-}{
-\spadpaste{grandchildren "richard"\bound{d10}\free{d11}}
-}
-\xtc{
-Who are the great-grandparents?
-}{
-\spadpaste{greatGrandParents\bound{d11}\free{d12}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserTriangleTitle}{Example: A Famous Triangle}
-\newcommand{\ugUserTriangleNumber}{6.19.}
-
-@
-\subsection{6.19. Example: A Famous Triangle}
-\label{ugUserTrianglePage}
-\begin{itemize}
-\item ugTypesExposePage \ref{ugTypesExposePage} on
-page~\pageref{ugTypesExposePage}
-\end{itemize}
-\index{pages!ugUserTrianglePage!ug06.ht}
-\index{ug06.ht!pages!ugUserTrianglePage}
-\index{ugUserTrianglePage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserTrianglePage}{6.19. Example: A Famous Triangle}
-\beginscroll
-
-In this example we write some functions that display
-Pascal's triangle.
-It demonstrates the use of piece-wise definitions and some output
-operations you probably haven't seen before.
-
-\labelSpace{1pc}
-\xtc{
-To make these output operations
-available, we have to \spadgloss{expose} the domain
-\axiomType{OutputForm}.
-See \downlink{``\ugTypesExposeTitle''}{ugTypesExposePage} 
-in Section \ugTypesExposeNumber\ignore{ugTypesExpose} for 
-more information about exposing domains
-and packages.
-}{
-\spadpaste{)set expose add constructor OutputForm \bound{expose}}
-}
-\xtc{
-Define the values along the first
-row and any column \axiom{i}.
-}{
-\spadpaste{pascal(1,i) == 1 \bound{pas1}}
-}
-\xtc{
-Define the values for when the row
-and column index \axiom{i} are equal.
-Repeating the argument name indicates that
-the two index values are equal.
-}{
-\spadpaste{pascal(n,n) == 1 \bound{pas2}\free{pas1}}
-}
-\xtc{
-}{
-\begin{spadsrc}[\bound{pas3}\free{pas1 pas2}]
-pascal(i,j | 1 < i and i < j) ==
-   pascal(i-1,j-1)+pascal(i,j-1)
-\end{spadsrc}
-}
-Now that we have defined the coefficients in Pascal's triangle,
-let's write a couple of one-liners to display it.
-\xtc{
-First, define a function that gives the \eth{\axiom{n}} row.
-}{
-\spadpaste{pascalRow(n) == [pascal(i,n) for i in 1..n] \bound{pascalRow}\free{pas3}}
-}
-\xtc{
-Next, we write the function \userfun{displayRow}
-to display the row, separating entries by blanks and centering.
-}{
-\spadpaste{displayRow(n) == output center blankSeparate pascalRow(n) \free{pascalRow}\bound{displayRow}\free{expose}}
-}
-%
-Here we have used three output operations.
-Operation \axiomFunFrom{output}{OutputForm}
-displays the printable form of objects on the screen,
-\axiomFunFrom{center}{OutputForm} centers a printable form in the
-width of the screen, and \axiomFunFrom{blankSeparate}{OutputForm} takes a list of
-printable forms and inserts a blank between successive elements.
-\xtc{
-Look at the result.
-}{
-\spadpaste{for i in 1..7 repeat displayRow i \free{displayRow}}
-}
-Being purists, we find this less than satisfactory.
-Traditionally, elements of Pascal's triangle are centered between
-the left and right elements on the line above.
-%
-\xtc{
-To fix this misalignment, we go back and
-redefine \userfun{pascalRow} to right adjust the entries within the
-triangle within a width of four characters.
-}{
-\spadpaste{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n] \bound{pascalRow2}}
-}
-%
-\xtc{
-Finally let's look at our purely reformatted triangle.
-}{
-\spadpaste{for i in 1..7 repeat displayRow i \free{pascalRow2}\free{displayRow}}
-}
-\xtc{
-Unexpose \axiomType{OutputForm} so we don't get unexpected
-results later.
-}{
-\spadpaste{)set expose drop constructor OutputForm}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug06.ht>>=
-\newcommand{\ugUserPalTitle}{Example: Testing for Palindromes}
-\newcommand{\ugUserPalNumber}{6.20.}
-
-@
-\subsection{6.20. Example: Testing for Palindromes}
-\label{ugUserPalPage}
-\begin{itemize}
-\item ugUserTrianglePage \ref{ugUserTrianglePage} on
-page~\pageref{ugUserTrianglePage}
-\end{itemize}
-\index{pages!ugUserPalPage!ug06.ht}
-\index{ug06.ht!pages!ugUserPalPage}
-\index{ugUserPalPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserPalPage}{6.20. Example: Testing for Palindromes}
-\beginscroll
-
-
-In this section we define a function \userfun{pal?} that tests whether its
-argument is a {\it palindrome}, that is, something that reads the same
-backwards and forwards.
-For example, the string ``Madam I'm Adam'' is a palindrome (excluding blanks
-and punctuation) and so is the number \axiom{123454321.}
-The definition works for any datatype that has \axiom{n} components that
-are accessed by the indices \axiom{1\ldots n}.
-
-\xtc{
-Here is the definition for \userfun{pal?}.
-It is simply a call to an auxiliary function called
-\userfun{palAux?}.
-We are following the convention of ending a function's name with
-\axiomSyntax{?} if the function returns a \axiomType{Boolean} value.
-}{
-\spadpaste{pal? s ==  palAux?(s,1,\#s) \bound{pal}}
-}
-\xtc{
-Here is \userfun{palAux?}.
-It works by comparing elements that are equidistant from the start and end
-of the object.
-}{
-\begin{spadsrc}[\bound{palAux}]
-palAux?(s,i,j) ==
-  j > i =>
-    (s.i = s.j) and palAux?(s,i+1,i-1)
-  true
-\end{spadsrc}
-}
-\xtc{
-Try \userfun{pal?} on some examples.
-First, a string.
-}{
-\spadpaste{pal? "Oxford"  \free{pal palAux}}
-}
-\xtc{
-A list of polynomials.
-}{
-\spadpaste{pal? [4,a,x-1,0,x-1,a,4]  \free{pal palAux}}
-}
-\xtc{
-A list of integers from the example in
-\texht{the last section.}{\downlink{``\ugUserTriangleTitle''}
-{ugUserTrianglePage} in Section \ugUserTriangleNumber
-\ignore{ugUserTriangle}.}
-}{
-\spadpaste{pal? [1,6,15,20,15,6,1] \free{pal palAux}}
-}
-\xtc{
-To use \userfun{pal?} on an integer, first convert it to a string.
-}{
-\spadpaste{pal?(1441::String)\free{pal palAux}}
-}
-\xtc{
-Compute an infinite stream of decimal numbers,
-each of which is an obvious palindrome.
-}{
-\spadpaste{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux}\bound{pal5}}
-}
-\xtc{
-How about their squares?
-}{
-\spadpaste{squares := [x**2 for x in ones]\free{pal5}\bound{pal6}}
-}
-\xtc{
-Well, let's test them all!
-}{
-\spadpaste{[pal?(x::String) for x in squares]\free{pal6}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug06.ht>>=
-\newcommand{\ugUserRulesTitle}{Rules and Pattern Matching}
-\newcommand{\ugUserRulesNumber}{6.21.}
-
-@
-\subsection{6.21. Rules and Pattern Matching}
-\label{ugUserRulesPage}
-\index{pages!ugUserRulesPage!ug06.ht}
-\index{ug06.ht!pages!ugUserRulesPage}
-\index{ugUserRulesPage!ug06.ht!pages}
-<<ug06.ht>>=
-\begin{page}{ugUserRulesPage}{6.21. Rules and Pattern Matching}
-\beginscroll
-
-A common mathematical formula is
-\texht{\narrowDisplay{%
-\log(x) + \log(y) = \log(x y) \quad\forall \, x \hbox{\ and\ } y.}}{
-\axiom{log(x) + log(y) == log(x * y)} for any \axiom{x} and \axiom{y}.}
-The presence of
-\texht{``$\forall$''}{the word ``any''}
-indicates that \axiom{x} and \axiom{y} can stand for arbitrary mathematical
-expressions in the above formula.
-You can use such mathematical formulas in Axiom to specify ``rewrite
-rules''.
-Rewrite rules are objects in Axiom that can be assigned to variables for
-later use, often for the purpose of simplification.
-Rewrite rules look like ordinary function definitions except that they are
-preceded by the reserved word \axiom{rule}.
-\spadkey{rule}
-For example, a rewrite rule for the above formula is:
-\begin{verbatim}
-rule log(x) + log(y) == log(x * y)
-\end{verbatim}
-Like function definitions, no action is taken when a rewrite rule is issued.
-Think of rewrite rules as functions that take one argument.
-When a rewrite rule \axiom{A = B} is applied to an argument \axiom{f}, its
-meaning is: ``rewrite every subexpression of \axiom{f} that {\it matches}
-\axiom{A} by \axiom{B.}''
-The left-hand side of a rewrite rule is called a \spadgloss{pattern}; its
-right-side side is called its \spadgloss{substitution}.
-
-\xtc{
-Create a rewrite rule named \userfun{logrule}.
-The generated symbol beginning with a \axiomSyntax{\%} is a place-holder
-for any other terms that might occur in the sum.
-}{
-\spadpaste{logrule := rule log(x) + log(y) == log(x * y) \bound{logrule}}
-}
-\xtc{
-Create an expression with logarithms.
-}{
-\spadpaste{f := log sin x + log x \bound{f}}
-}
-\xtc{
-Apply \userfun{logrule} to \axiom{f}.
-}{
-\spadpaste{logrule f \free{f}\free{logrule}}
-}
-
-The meaning of our example rewrite rule is:
-``for all expressions \axiom{x} and \axiom{y}, rewrite
-\axiom{log(x) + log(y)} by \axiom{log(x * y)}.''
-Patterns generally have both operation names
-(here, \axiomFun{log} and \axiomOp{+})
-and variables (here, \axiom{x} and \axiom{y}).
-By default, every operation name stands for itself.
-Thus \axiomFun{log}  matches only ``\axiom{log}'' and not any
-other operation such as \axiomFun{sin}.
-On the other hand, variables do not stand for themselves.
-Rather, a variable denotes a
-{\it pattern variable} that is free to match any expression whatsoever.
-
-When a rewrite rule is applied, a process called
-\spadgloss{pattern matching} goes to work by systematically
-scanning
-the subexpressions of the argument.
-When a subexpression is found that ``matches'' the pattern, the subexpression
-is replaced by the right-hand side of the rule.
-The details of what happens will be covered later.
-
-The customary Axiom notation for patterns is actually a shorthand for a
-longer, more general notation.
-Pattern variables can be made explicit by using a percent
-(\axiomSyntax{\%}) as the first character of the variable name.
-To say that a name stands for itself, you can prefix that name with a quote
-operator (\axiomSyntax{'}).
-Although the current Axiom parser does not let you quote an operation
-name, this more general notation gives you an alternate way of giving the same
-rewrite rule:
-\begin{verbatim}
-rule log(%x) + log(%y) == log(x * y)
-\end{verbatim}
-This longer notation gives you patterns that the
-standard notation won't handle.
-For example, the rule
-\texht{\typeout{check this example}}{}
+\subsection{Asp55 Example Code}
+\label{Asp55ExampleCode}
+\index{pages!Asp55ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp55ExampleCode}
+\index{Asp55ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp55ExampleCode}{Asp55 Example Code}
 \begin{verbatim}
-rule %f(c * 'x) ==  c*%f(x)
+      SUBROUTINE CONFUN(MODE,NCNLN,N,NROWJ,NEEDC,X,C,CJAC,NSTATE,IUSER
+     &,USER)
+      DOUBLE PRECISION C(NCNLN),X(N),CJAC(NROWJ,N),USER(*)
+      INTEGER N,IUSER(*),NEEDC(NCNLN),NROWJ,MODE,NCNLN,NSTATE
+      IF(NEEDC(1).GT.0)THEN
+        C(1)=X(6)**2+X(1)**2
+        CJAC(1,1)=2.0D0*X(1)
+        CJAC(1,2)=0.0D0
+        CJAC(1,3)=0.0D0
+        CJAC(1,4)=0.0D0
+        CJAC(1,5)=0.0D0
+        CJAC(1,6)=2.0D0*X(6)
+      ENDIF
+      IF(NEEDC(2).GT.0)THEN
+        C(2)=X(2)**2+(-2.0D0*X(1)*X(2))+X(1)**2
+        CJAC(2,1)=(-2.0D0*X(2))+2.0D0*X(1)
+        CJAC(2,2)=2.0D0*X(2)+(-2.0D0*X(1))
+        CJAC(2,3)=0.0D0
+        CJAC(2,4)=0.0D0
+        CJAC(2,5)=0.0D0
+        CJAC(2,6)=0.0D0
+      ENDIF
+      IF(NEEDC(3).GT.0)THEN
+        C(3)=X(3)**2+(-2.0D0*X(1)*X(3))+X(2)**2+X(1)**2
+        CJAC(3,1)=(-2.0D0*X(3))+2.0D0*X(1)
+        CJAC(3,2)=2.0D0*X(2)
+        CJAC(3,3)=2.0D0*X(3)+(-2.0D0*X(1))
+        CJAC(3,4)=0.0D0
+        CJAC(3,5)=0.0D0
+        CJAC(3,6)=0.0D0
+      ENDIF
+      RETURN
+      END
 \end{verbatim}
-means ``for all \axiom{f} and \axiom{c}, replace \axiom{f(y)} by
-\axiom{c * f(x)} when \axiom{y} is the product of \axiom{c}
-and the explicit variable \axiom{x}.''
-
-Thus the pattern can have several adornments on the names that appear there.
-Normally, all these adornments are dropped in the substitution on the
-right-hand side.
-
-To summarize:
-
-\beginImportant
-To enter a single rule in Axiom, use the following syntax:
-\spadkey{rule}
-\centerline{{{\tt rule {\it leftHandSide} == {\it rightHandSide}}}}
-The {\it leftHandSide} is a pattern to be matched and
-the {\it rightHandSide} is its substitution.
-The rule is an object of type \axiomType{RewriteRule} that can be
-assigned to a variable and applied to expressions to transform them.
-\endImportant
-
-Rewrite rules can be collected
-into rulesets so that a set of rules can be applied at once.
-Here is another simplification rule for logarithms.
-\texht{\narrowDisplay{y \log(x) = \log(x^y) \quad\forall \, x \hbox{\ and\ } y.}}{
-\axiom{y * log(x) == log(x ** y)} for any \axiom{x} and \axiom{y}.}
-If instead of giving a single rule following the reserved word \axiom{rule}
-you give a ``pile'' of rules, you create
-what is called a {\it ruleset.}
-Like rules, rulesets are objects in Axiom and
-can be assigned to variables.
-You will find it useful to group commonly used rules into input files, and read
-them in as needed.
-\xtc{
-Create a ruleset named \axiom{logrules}.
-}{
-\begin{spadsrc}[\bound{logrules}]
-logrules := rule
-  log(x) + log(y) == log(x * y)
-  y * log x       == log(x ** y)
-\end{spadsrc}
-}
-\xtc{
-Again, create an expression \axiom{f} containing logarithms.
-}{
-\spadpaste{f := a * log(sin x) - 2 * log x \bound{f1}}
-}
-\xtc{
-Apply the ruleset \userfun{logrules} to \axiom{f}.
-}{
-\spadpaste{logrules f \free{f1}\free{logrules}}
-}
-
-We have allowed pattern variables to match arbitrary expressions in the
-above examples.
-Often you want a variable only to match expressions
-satisfying some predicate.
-For example, we may want to apply the transformation
-\texht{\narrowDisplay{y \log(x) = \log(x^y)}}{\axiom{y * log(x) == log(x ** y)}}
-only when \axiom{y} is an integer.
-%
-The way to restrict a pattern variable \axiom{y} by a predicate \axiom{f(y)}
-is by using a vertical bar \axiomSyntax{|}, which means ``such that,'' in
-much the same way it is used in function definitions.
-You do this only once, but at the earliest
-(meaning deepest and leftmost) part of the pattern.
-\xtc{
-This restricts the logarithmic rule to create integer exponents only.
-}{
-\begin{spadsrc}[\bound{logrules2}]
-logrules2 := rule
-  log(x) + log(y)          == log(x * y)
-  (y | integer? y) * log x == log(x ** y)
-\end{spadsrc}
-}
-\xtc{
-Compare this with the result of applying the previous set of rules.
-}{
-\spadpaste{f \free{f1}}
-}
-\xtc{
-}{
-\spadpaste{logrules2 f \free{f1}\free{logrules2}}
-}
-You should be aware that you might need to apply a function like
-\spadfun{integer} within your predicate expression to actually apply
-the test function.
-\xtc{
-Here we use \spadfun{integer} because \spad{n} has
-type \spadtype{Expression Integer} but \spadfun{even?} is an operation
-defined on integers.
-}{
-\spadpaste{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2) \bound{evenRule}}
-}
-\xtc{
-Here is the application of the rule.
-}{
-\spadpaste{evenRule( cos(x)**2 ) \free{evenRule}}
-}
-\xtc{
-This is an example of some of the usual identities involving products of
-sines and cosines.
-}{
-\begin{spadsrc}[\bound{sinCosProducts}]
-sinCosProducts == rule
-  sin(x) * sin(y) == (cos(x-y) - cos(x + y))/2
-  cos(x) * cos(y) == (cos(x-y) + cos(x+y))/2
-  sin(x) * cos(y) == (sin(x-y) + sin(x + y))/2
-\end{spadsrc}
-}
-\xtc{
-}{
-\spadpaste{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a) \bound{g}}
-}
-\xtc{
-}{
-\spadpaste{sinCosProducts g \free{sinCosProducts g}}
-}
-
-Another qualification you will often want to use is to allow a pattern to
-match an identity element.
-Using the pattern \axiom{x + y}, for example, neither \axiom{x} nor \axiom{y}
-matches the expression \axiom{0}.
-Similarly, if a pattern contains a product \axiom{x*y} or an exponentiation
-\axiom{x**y}, then neither \axiom{x} or \axiom{y} matches \axiom{1}.
-%
-\xtc{
-If identical elements were matched, pattern matching would generally loop.
-Here is an expansion rule for exponentials.
-}{
-\spadpaste{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule}}
-}
-\xtc{
-This rule would cause infinite rewriting on this if either \axiom{a} or
-\axiom{b} were allowed to match \axiom{0}.
-}{
-\spadpaste{exprule exp x \free{exprule}}
-}
-%
-There are occasions when you do want a pattern variable in a sum or
-product to match \axiom{0} or \axiom{1}.
-If so, prefix its name
-with a \axiomSyntax{?} whenever it appears in a left-hand side of a rule.
-For example, consider the following rule for the exponential integral:
-\texht{\narrowDisplay{\int \left(\frac{y+e^x}{x}\right)\: dx = \int \frac{y}{x}\: dx + \hbox{\rm Ei}(x)
-\quad\forall \, x \hbox{\ and\ } y.}}{
-\axiom{integral((y + exp x)/x, x) == integral(y/x, x) + Ei x}
-for any \axiom{x} and \axiom{y}.}
-This rule is valid for \axiom{y = 0}.
-One solution is to create a \axiomType{Ruleset} with two
-rules, one with and one without \axiom{y}.
-A better solution is to use an ``optional'' pattern variable.
-%
-\xtc{
-Define rule \axiom{eirule} with
-a pattern variable \axiom{?y} to indicate
-that an expression may or may not occur.
-}{
-\spadpaste{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x \bound{eirule}}
-}
-\xtc{
-Apply rule \axiom{eirule} to an integral without this term.
-}{
-\spadpaste{eirule integral(exp u/u, u) \free{eirule}}
-}
-\xtc{
-Apply rule \axiom{eirule} to an integral with this term.
-}{
-\spadpaste{eirule integral(sin u + exp u/u, u) \free{eirule}}
-}
-
-Here is one final adornment you will find useful.
-When matching a pattern of the form \axiom{x + y} to an expression containing a
-long sum of the form \axiom{a +\ldots+ b}, there is no way to predict in
-advance which subset of the sum  matches \axiom{x} and which matches
-\axiom{y}.
-Aside from efficiency, this is generally unimportant since the rule holds for
-any possible combination of matches for \axiom{x} and \axiom{y}.
-In some situations, however, you may want to say which pattern variable is a sum
-(or product) of several terms, and which should match only a single term.
-To do this, put a prefix colon \axiomSyntax{:} before the pattern variable
-that you want to match multiple terms.
-%
-\xtc{
-The remaining rules involve operators \axiom{u} and \axiom{v}.
-}{
-\spadpaste{u := operator 'u \bound{u}}
-}
-\xtc{
-These definitions tell Axiom that
-\axiom{u} and \axiom{v} are formal operators to be used in expressions.
-}{
-\spadpaste{v := operator 'v \bound{v}}
-}
-\xtc{
-First define \axiom{myRule}
-with no restrictions on the pattern variables
-\axiom{x} and \axiom{y}.
-}{
-\spadpaste{myRule := rule u(x + y) == u x + v y \free{u v}\bound{m}}
-}
-\xtc{
-Apply \axiom{myRule} to an expression.
-}{
-\spadpaste{myRule u(a + b + c + d) \free{m}}
-}
-\xtc{
-Define \axiom{myOtherRule} to match several terms
-so that the rule gets applied recursively.
-}{
-\spadpaste{myOtherRule := rule u(:x + y) == u x + v y \free{u v}\bound{m2}}
-}
-\xtc{
-Apply \axiom{myOtherRule} to the same expression.
-}{
-\spadpaste{myOtherRule u(a + b + c + d) \free{m2}}
-}
-
-
-Here are some final remarks on pattern matching.
-Pattern matching provides a very useful paradigm for solving
-certain classes of problems, namely, those that involve
-transformations of one form to another and back.
-However, it is important to recognize its limitations.
-
-First, pattern matching slows down as the number of rules you have to apply
-increases.
-Thus it is good practice to organize the sets of rules you use optimally so
-that irrelevant rules are never included.
-
-Second, careless use of pattern matching can lead to wrong answers.
-You should avoid using pattern matching to handle hidden algebraic
-relationships that can go undetected by other programs.
-As a simple example, a symbol such as ``J'' can easily be used to represent
-the square root of \axiom{-1} or some other important algebraic quantity.
-Many algorithms branch on whether an expression is zero or not, then divide by
-that expression if it is not.
-If you fail to simplify an expression involving powers of
-\axiom{J} to \axiom{-1,}
-algorithms may incorrectly assume an expression is non-zero, take a wrong
-branch, and produce a meaningless result.
-
-Pattern matching should also not be used as a substitute for a domain.
-In Axiom, objects of one domain are transformed to objects of other
-domains using well-defined \axiomFun{coerce} operations.
-Pattern matching should be used on objects that are all the same type.
-Thus if your application can be handled by type \axiomType{Expression} in
-Axiom and you think you need pattern matching, consider this choice
-carefully.
-You may well be better served by extending an existing domain
-or by building a new domain of objects for your application.
-\endscroll
-\autobuttons
 \end{page}
-@
-\section{ug07.ht}
-<<ug07.ht>>=
-\newcommand{\optArg}[1]{{{\tt [}{#1}{\tt ]}}}
-\newcommand{\argDef}[1]{{\tt ({#1})}}
-\newcommand{\funSyntax}[2]{\axiomFun{#1}{\tt ({\small\it{#2}})}}
-\newcommand{\funArgs}[1]{{\tt ({\small\it {#1}})}\newline}
-\newcommand{\ugGraphTitle}{Graphics}
-\newcommand{\ugGraphNumber}{7.}
 
 @
-\subsection{7. Graphics}
-\label{ugGraphPage}
-\begin{itemize}
-\item ugGraphTwoDPage \ref{ugGraphTwoDPage} on
-page~\pageref{ugGraphTwoDPage}
-\item ugGraphThreeDPage \ref{ugGraphThreeDPage} on
-page~\pageref{ugGraphThreeDPage}
-\end{itemize}
-\index{pages!ugGraphPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphPage}
-\index{ugGraphPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphPage}{7. Graphics}
-\beginscroll
-
-%
-
-This chapter shows how to use the Axiom graphics facilities
-under the X Window System.
-Axiom has \twodim{} and \threedim{} drawing and rendering
-packages that allow the drawing, coloring, transforming, mapping,
-clipping, and combining of graphic output from Axiom
-computations.
-This facility is particularly useful for investigating problems in
-areas such as topology.
-The graphics package is capable of plotting functions of one or
-more variables or plotting parametric surfaces and curves.
-Various coordinate systems are also available, such as polar and
-spherical.
-
-A graph is displayed in a viewport window and it has a
-control-panel that uses interactive mouse commands.
-PostScript and other output forms are available so that Axiom
-images can be printed or used by other programs.\footnote{PostScript
-is a trademark of Adobe Systems Incorporated, registered in the United
-States.}
-
-\beginmenu
-    \menudownlink{{7.1. Two-Dimensional Graphics}}{ugGraphTwoDPage}
-    \menudownlink{{7.2. Three-Dimensional Graphics}}{ugGraphThreeDPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDTitle}{Two-Dimensional Graphics}
-\newcommand{\ugGraphTwoDNumber}{7.1.}
-
-@
-\subsection{7.1. Two-Dimensional Graphics}
-\label{ugGraphTwoDPage}
-\begin{itemize}
-\item ugGraphTwoDPlotPage \ref{ugGraphTwoDPlotPage} on
-page~\pageref{ugGraphTwoDPlotPage}
-\item ugGraphTwoDParPage \ref{ugGraphTwoDParPage} on
-page~\pageref{ugGraphTwoDParPage}
-\item ugGraphTwoDPlanePage \ref{ugGraphTwoDPlanePage} on
-page~\pageref{ugGraphTwoDPlanePage}
-\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
-page~\pageref{ugGraphTwoDOptionsPage}
-\item ugGraphColorPage \ref{ugGraphColorPage} on
-page~\pageref{ugGraphColorPage}
-\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
-page~\pageref{ugGraphColorPalettePage}
-\item ugGraphTwoDControlPage \ref{ugGraphTwoDControlPage} on
-page~\pageref{ugGraphTwoDControlPage}
-\item ugGraphTwoDopsPage \ref{ugGraphTwoDopsPage} on
-page~\pageref{ugGraphTwoDopsPage}
-\item ugGraphTwoDbuildPage \ref{ugGraphTwoDbuildPage} on
-page~\pageref{ugGraphTwoDbuildPage}
-\item ugGraphTwoDappendPage \ref{ugGraphTwoDappendPage} on
-page~\pageref{ugGraphTwoDappendPage}
-\end{itemize}
-\index{pages!ugGraphTwoDPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDPage}
-\index{ugGraphTwoDPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDPage}{7.1. Two-Dimensional Graphics}
-\beginscroll
-%
-The Axiom \twodim{} graphics package provides the ability to
-display
-%
-\indent{4}
-\beginitems
-%
-\item[-] curves defined by functions of a single real variable
-%
-\item[-] curves defined by parametric equations
-%
-\item[-] implicit non-singular curves defined by polynomial equations
-%
-\item[-] planar graphs generated from lists of point components.
-\enditems
-\indent{0}
-These graphs
-can be modified by specifying various options, such as
-calculating points in the polar
-coordinate system or changing the size of the graph viewport window.
-
-\beginmenu
-    \menudownlink{{7.1.1. Plotting Two-Dimensional Functions of One Variable}}
-{ugGraphTwoDPlotPage}
-    \menudownlink{{7.1.2. Plotting Two-Dimensional Parametric Plane Curves}}
-{ugGraphTwoDParPage}
-    \menudownlink{{7.1.3. Plotting Plane Algebraic Curves}}
-{ugGraphTwoDPlanePage}
-    \menudownlink{{7.1.4. Two-Dimensional Options}}{ugGraphTwoDOptionsPage}
-    \menudownlink{{7.1.5. Color}}{ugGraphColorPage}
-    \menudownlink{{7.1.6. Palette}}{ugGraphColorPalettePage}
-    \menudownlink{{7.1.7. Two-Dimensional Control-Panel}}
-{ugGraphTwoDControlPage}
-    \menudownlink{{7.1.8. Operations for Two-Dimensional Graphics}}
-{ugGraphTwoDopsPage}
-    \menudownlink{{7.1.9. Addendum: Building Two-Dimensional Graphs}}
-{ugGraphTwoDbuildPage}
-    \menudownlink{
-{7.1.10. Addendum: Appending a Graph to a Viewport Window Containing a Graph}}
-{ugGraphTwoDappendPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDPlotTitle}{Plotting Two-Dimensional Functions of One Variable}
-\newcommand{\ugGraphTwoDPlotNumber}{7.1.1.}
-
-@
-\subsection{7.1.1. Plotting Two-Dimensional Functions of One Variable}
-\label{ugGraphTwoDPlotPage}
-\begin{itemize}
-\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
-page~\pageref{ugGraphTwoDOptionsPage}
-\end{itemize}
-\index{pages!ugGraphTwoDPlotPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDPlotPage}
-\index{ugGraphTwoDPlotPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDPlotPage}{7.1.1. Plotting Two-Dimensional Functions of One Variable}
-\beginscroll
-
-The first kind of \twodim{} graph is that of a curve defined by a function
-\axiom{y = f(x)} over a finite interval of the \axiom{x} axis.
-
-%
-\beginImportant
-The general format for drawing a function defined by a formula
-\axiom{f(x)} is:
-%
-\centerline{{{\tt draw(f(x), x = a..b, {\it options})}}}
-where \axiom{a..b} defines the range of \axiom{x}, and where
-{\it options} prescribes zero or more options as described in
-\downlink{``\ugGraphTwoDOptionsTitle''}{ugGraphTwoDOptionsPage} 
-in Section \ugGraphTwoDOptionsNumber\ignore{ugGraphTwoDOptions}.
-An example of an option is \axiom{curveColor == bright red().}
-An alternative format involving functions \axiom{f} and \axiom{g}
-is also available.
-\endImportant
-
-A simple way to plot a function is to use a formula.
-The first argument is the formula.
-For the second argument, write the name of the independent variable (here, \axiom{x}),
-followed by an \spadSyntax{=}, and the range of values.
-
-\psXtc{
-Display this formula over the range
-\texht{$0 \leq x \leq 6$}{0 <= x <= 6}.
-Axiom converts your formula to a compiled
-function so that the results can be computed
-quickly and efficiently.
-}{
-\graphpaste{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-}{
-\epsffile[0 0 295 295]{../ps/2d1vara.ps}
-}
-
-Notice that Axiom compiled the function before the graph was put
-on the screen.
-
-\psXtc{
-Here is the same graph on a different interval.
-This time we give the graph a title.
-}{
-\graphpaste{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
-}{
-%window was 300 x 300
-\epsffile[0 0 295 295]{../ps/2d1varb.ps}
-}
-%
-Once again the formula is converted to a compiled function before
-any points were computed.
-If you want to graph the same function on several intervals, it is
-a good idea to define the function first so that the function has
-to be compiled only once.
-\xtc{
-This time we first define the function.
-}{
-\spadpaste{f(x) == (x-1)*(x-2)*(x-3) \bound{f}}
-}
-\psXtc{
-To draw the function, the first argument is its name
-and the second is just the range with no independent variable.
-}{
-\graphpaste{draw(f, 0..4) \free{f}}
-}{
-\epsffile[0 0 295 295]{../ps/2d1vard.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDParTitle}{Plotting Two-Dimensional Parametric Plane Curves}
-\newcommand{\ugGraphTwoDParNumber}{7.1.2.}
-
-@
-\subsection{7.1.2. Plotting Two-Dimensional Parametric Plane Curves}
-\label{ugGraphTwoDParPage}
-\begin{itemize}
-\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
-page~\pageref{ugGraphThreeDOptionsPage}
-\end{itemize}
-\index{pages!ugGraphTwoDParPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDParPage}
-\index{ugGraphTwoDParPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDParPage}
-{7.1.2. Plotting Two-Dimensional Parametric Plane Curves}
-\beginscroll
-
-The second kind of \twodim{} graph is that of
-curves produced by parametric equations.
-Let \axiom{x = f(t)} and \axiom{y = g(t)} be formulas or two
-functions \axiom{f} and \axiom{g} as the parameter \axiom{t} ranges
-over an interval \axiom{[a,b]}.
-The function \axiomFun{curve} takes the two functions \axiom{f} and
-\axiom{g} as its parameters.
-
-\beginImportant
-The general format for drawing a \twodim{} plane curve defined by
-parametric formulas \axiom{x = f(t)} and \axiom{y = g(t)} is:
-%
-\centerline{{{\tt draw(curve(f(t), g(t)), t = a..b, {\it options})}}}
-where \axiom{a..b} defines the range of the independent variable \axiom{t},
-and where {\it options} prescribes zero or more options as
-described in 
-\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
-in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
-An example of an option is \axiom{curveColor == bright red().}
-\endImportant
-
-Here's an example:
-
-\psXtc{
-Define a parametric curve using a range involving
-\axiom{\%pi}, Axiom's way of saying \texht{$\pi$}{``pi''}.
-For parametric curves, Axiom compiles two
-functions, one for each of the functions \axiom{f} and \axiom{g}.
-}{
-\graphpaste{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
-}{
-\epsffile[0 0 295 295]{../ps/2dppca.ps}
-}
-%
-%
-\psXtc{
-The title may be an arbitrary string and is an
-optional argument to the \axiomFun{draw} command.
-}{
-\graphpaste{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
-}{
-\epsffile[0 0 295 295]{../ps/2dppcb.ps}
-}
-%
-If you plan on plotting \axiom{x = f(t)}, \axiom{y = g(t)} as \axiom{t} 
-ranges over several intervals, you may want to define functions 
-\axiom{f} and \axiom{g} first, so
-that they need not be recompiled every time you create a new graph.
-Here's an example:
-\xtc{
-As before, you can first define the functions you wish to draw.
-}{
-\spadpaste{f(t:DFLOAT):DFLOAT == sin(3*t/4) \bound{f}}
-}
-\xtc{
-Axiom compiles them to map \axiomType{DoubleFloat}
-values to \axiomType{DoubleFloat} values.
-}{
-\spadpaste{g(t:DFLOAT):DFLOAT == sin(t) \bound{g}}
-}
-
-\psXtc{
-Give to {\tt curve} the names of the functions,
-then write the range without the name of the
-independent variable.
-}{
-\graphpaste{draw(curve(f,g),0..\%pi) \free{f g}}
-}{
-\epsffile[0 0 295 295]{../ps/2dppcc.ps}
-}
-%
-%
-\psXtc{
-Here is another look at the same curve but over a different
-range. Notice that \axiom{f} and \axiom{g} are not recompiled.
-Also note that Axiom provides a default title based on
-the first function specified in \axiomFun{curve}.
-}{
-\graphpaste{draw(curve(f,g),-4*\%pi..4*\%pi) \free{f g}}
-}{
-\epsffile[0 0 295 295]{../ps/2dppce.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDPlaneTitle}{Plotting Plane Algebraic Curves}
-\newcommand{\ugGraphTwoDPlaneNumber}{7.1.3.}
-
-@
-\subsection{7.1.3. Plotting Plane Algebraic Curves}
-\label{ugGraphTwoDPlanePage}
-\begin{itemize}
-\item ugGraphTwoDOptionsPage \ref{ugGraphTwoDOptionsPage} on
-page~\pageref{ugGraphTwoDOptionsPage}
-\end{itemize}
-\index{pages!ugGraphTwoDPlanePage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDPlanePage}
-\index{ugGraphTwoDPlanePage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDPlanePage}{7.1.3. Plotting Plane Algebraic Curves}
-\beginscroll
-
-A third kind of \twodim{} graph is a non-singular ``solution curve''
-in a rectangular region of the plane.
-A solution curve is a curve defined by a polynomial equation
-\axiom{p(x,y) = 0}.
-Non-singular means that the curve is ``smooth'' in that it does not
-cross itself or come to a point (cusp).
-Algebraically, this means that for any point \axiom{(x,y)} on the curve,
-that is, a point such that \axiom{p(x,y) = 0}, the partial derivatives
-\texht{${{\partial p}\over{\partial x}}(x,y)$ and
-${{\partial p}\over{\partial y}}(x,y)$}{\axiom{dp/dx(x,y)}
-and \axiom{dp/dy(a,b)}}
-are not both zero.
-
-%
-\beginImportant
-The general format for drawing a non-singular solution curve
-given by a polynomial of the form \axiom{p(x,y) = 0} is:
-%
-\centerline{{{\tt draw(p(x,y) = 0, x, y, range == [a..b, c..d], {\it options})}}}
-where the second and third arguments name the first and second
-independent variables of \axiom{p}.
-A {\tt range} option is always given to designate a bounding
-rectangular region of the plane \texht{$a \leq x \leq b, c \leq y
-\leq d$}{a <= x <= b, c <= y <= d}.
-Zero or more additional options as described in
-\downlink{``\ugGraphTwoDOptionsTitle''}{ugGraphTwoDOptionsPage} 
-in Section \ugGraphTwoDOptionsNumber\ignore{ugGraphTwoDOptions} 
-may be given.
-\endImportant
-
-\xtc{
-We require that the polynomial has rational or integral coefficients.
-Here is an algebraic curve example (``Cartesian ovals''):
-}{
-\spadpaste{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1) \bound{p}}
-}
-
-\psXtc{
-The first argument is always expressed as an equation of the form 
-\axiom{p = 0} where \axiom{p} is a polynomial.
-}{
-\graphpaste{draw(p = 0, x, y, range == [-1..11, -7..7]) \free{p}}
-}{
-\epsffile[0 0 295 295]{../ps/2dpaca.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDOptionsTitle}{Two-Dimensional Options}
-\newcommand{\ugGraphTwoDOptionsNumber}{7.1.4.}
-
-@
-\subsection{7.1.4. Two-Dimensional Options}
-\label{ugGraphTwoDOptionsPage}
-\begin{itemize}
-\item ugGraphColorPage \ref{ugGraphColorPage} on
-page~\pageref{ugGraphColorPage}
-\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
-page~\pageref{ugGraphColorPalettePage}
-\item ugGraphColorPage \ref{ugGraphColorPage} on
-page~\pageref{ugGraphColorPage}
-\item ugGraphColorPalettePage \ref{ugGraphColorPalettePage} on
-page~\pageref{ugGraphColorPalettePage}
-\end{itemize}
-\index{pages!ugGraphTwoDOptionsPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDOptionsPage}
-\index{ugGraphTwoDOptionsPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDOptionsPage}{7.1.4. Two-Dimensional Options}
-\beginscroll
-
-The \axiomFun{draw} commands take an optional list of options,
-such as {\tt title} shown above.
-Each option is given by the syntax: {\it name} {\tt ==} {\it value}.
-Here is a list of the available options in the order that they are
-described below.
-
-\table{ {adaptive} {clip} {unit} {clip} {curveColor} {range}
-{toScale} {pointColor} {coordinates}}
-
-The \axiom{adaptive} option turns adaptive plotting on or off.
-Adaptive plotting uses an algorithm that traverses a graph and computes
-more points for those parts of the graph with high curvature.
-The higher the curvature of a region is, the more points the algorithm
-computes.
-%
-%
-\psXtc{
-The {\tt adaptive} option is normally on.
-Here we turn it off.
-}{
-\graphpaste{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
-}{
-\epsffile[0 0 295 295]{../ps/2doptad.ps}
-}
-%
-%
-\psXtc{
-The {\tt clip} option turns clipping on or off.
-If on, large values are cut off according to
-\axiomFunFrom{clipPointsDefault}{GraphicsDefaults}.
-}{
-\graphpaste{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
-}{
-\epsffile[0 0 295 295]{../ps/2doptcp.ps}
-}
-%
-%
-\psXtc{
-Option {\tt toScale} does plotting to scale if {\tt true} or uses
-the entire viewport if {\tt false}.
-The default can be determined using
-\axiomFunFrom{drawToScale}{GraphicsDefaults}.
-}{
-\graphpaste{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
-}{
-\epsffile[0 0 295 295]{../ps/2doptsc.ps}
-}
-%
-%
-\psXtc{
-Option {\tt clip} with a range sets point clipping of a graph within the
-ranges specified in the list \axiom{[x range,y range]}.
-If only one range is specified, clipping applies to the y-axis.
-}{
-\graphpaste{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
-}{
-\epsffile[0 0 295 295]{../ps/2doptcpr.ps}
-}
-%
-\psXtc{
-Option {\tt curveColor} sets the color of the graph curves or lines to be the
-indicated palette color
-(see \downlink{``\ugGraphColorTitle''}{ugGraphColorPage} in Section 
-\ugGraphColorNumber\ignore{ugGraphColor} and 
-\downlink{``\ugGraphColorPaletteTitle''}{ugGraphColorPalettePage} 
-in Section \ugGraphColorPaletteNumber\ignore{ugGraphColorPalette}).
-}{
-\graphpaste{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
-}{
-\epsffile[0 0 295 295]{../ps/2doptcvc.ps}
-}
-%
-\psXtc{
-Option {\tt pointColor}
-sets the color of the graph points to the indicated
-palette color
-(see \downlink{``\ugGraphColorTitle''}{ugGraphColorPage} 
-in Section \ugGraphColorNumber\ignore{ugGraphColor} and 
-\downlink{``\ugGraphColorPaletteTitle''}{ugGraphColorPalettePage} 
-in Section \ugGraphColorPaletteNumber\ignore{ugGraphColorPalette}).
-}{
-\graphpaste{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
-}{
-\epsffile[0 0 295 295]{../ps/2doptptc.ps}
-}
-%
-\psXtc{
-Option {\tt unit} sets the intervals at which the axis units are plotted
-according to the indicated steps [\axiom{x} interval, \axiom{y} interval].
-}{
-\graphpaste{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
-}{
-\epsffile[0 0 295 295]{../ps/2doptut.ps}
-}
-%
-%
-\psXtc{
-Option {\tt range} sets the range of variables in a graph to be
-within the ranges
-for solving plane algebraic curve plots.
-}{
-\graphpaste{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
-}{
-\epsffile[0 0 295 295]{../ps/2doptrga.ps}
-}
-%
-%
-\psXtc{
-A second example of a solution plot.
-}{
-\graphpaste{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
-}{
-\epsffile[0 0 295 295]{../ps/2doptrgb.ps}
-}
-%
-%
-\psXtc{
-Option \axiom{coordinates} indicates the coordinate system
-in which the graph
-is plotted.
-The default is to use the Cartesian coordinate system.
-For more details, see \downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} in Section \ugGraphCoordNumber\ignore{ugGraphCoord} \texht{.}{or
-\axiomType{CoordinateSystems}.}
-}{
-\graphpaste{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
-}{
-\epsffile[0 0 295 295]{../ps/2doptplr.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphColorTitle}{Color}
-\newcommand{\ugGraphColorNumber}{7.1.5.}
-
-@
-\subsection{7.1.5. Color}
-\label{ugGraphColorPage}
-\index{pages!ugGraphColorPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphColorPage}
-\index{ugGraphColorPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphColorPage}{7.1.5. Color}
-\beginscroll
-
-The domain \axiomType{Color}
-provides operations for manipulating
-colors in \twodim{} graphs.
-Colors are objects of \axiomType{Color}.
-Each color has a {\it hue} and a {\it weight}.
-Hues are represented by integers that range from \axiom{1} to the
-\axiomFunFrom{numberOfHues()}{Color}, normally
-\axiom{27}.
-%\footnote{Use \axiomFun{colorDef} to
-%change these values to any range you want for a given \threedim{} viewport}
-Weights are floats and  have the value \axiom{1.0} by default.
-%
-\indent{0}
-\beginitems
-%
-\item[\axiomFun{color}]\funArgs{integer}
-creates a color of hue {\it integer} and weight \axiom{1.0}.
-%
-\item[\axiomFun{hue}]\funArgs{color}
-returns the hue of {\it color} as an integer.
-%
-\item[\axiomFun{red}]\funArgs{},
-\funSyntax{blue}{},
-\funSyntax{green}{}, and \funSyntax{yellow}{}
-create colors of that hue with weight \axiom{1.0}.
-%
-\item[\subscriptIt{color}{1} {\tt +} \subscriptIt{color}{2}] returns the
-color that results from additively combining the indicated
-\subscriptIt{color}{1} and \subscriptIt{color}{2}.
-Color addition is not commutative: changing the order of the arguments
-produces different results.
-%
-\item[{\it integer} {\tt *} {\it color}]
-changes the weight of {\it color} by {\it integer}
-without affecting its hue.
-For example,
-\axiom{red() + 3*yellow()} produces a color closer to yellow than to red.
-Color multiplication is not associative: changing the order of grouping
-produces different results.
-\enditems
-\indent{0}
-%
-\psXtc{
-These functions can be used to change the point and curve colors
-for two- and \threedim{} graphs.
-Use the {\tt pointColor} option for points.
-}{
-\graphpaste{draw(x**2,x=-1..1,pointColor == green())}
-}{
-\epsffile[0 0 295 295]{../ps/23dcola.ps}
-}
-%
-\psXtc{
-Use the {\tt curveColor} option for curves.
-}{
-\graphpaste{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
-}{
-\epsffile[0 0 295 295]{../ps/23dcolb.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphColorPaletteTitle}{Palette}
-\newcommand{\ugGraphColorPaletteNumber}{7.1.6.}
-
-@
-\subsection{7.1.6. Palette}
-\label{ugGraphColorPalettePage}
-\index{pages!ugGraphColorPalettePage!ug07.ht}
-\index{ug07.ht!pages!ugGraphColorPalettePage}
-\index{ugGraphColorPalettePage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphColorPalettePage}{7.1.6. Palette}
-\beginscroll
-
-Domain \axiomType{Palette} is the domain of shades of colors:
-\axiomFun{dark}, \axiomFun{dim}, \axiomFun{bright}, \axiomFun{pastel}, and \axiomFun{light},
-designated by the integers \axiom{1} through \axiom{5}, respectively.
-\xtc{
-Colors are normally ``bright.''
-}{
-\spadpaste{shade red()}
-}
-\xtc{
-To change the shade of a color, apply the name of a shade to it.
-}{
-\spadpaste{myFavoriteColor := dark blue() \bound{mfc}}
-}
-\xtc{
-The expression \axiom{shade(color)}
-returns the value of a shade of \axiom{color}.
-}{
-\spadpaste{shade myFavoriteColor \free{mfc}}
-}
-\xtc{
-The expression \axiom{hue(color)} returns its hue.
-}{
-\spadpaste{hue myFavoriteColor \free{mfc}}
-}
-\psXtc{
-Palettes can be used in specifying colors in \twodim{} graphs.
-}{
-\graphpaste{draw(x**2,x=-1..1,curveColor == dark blue())}
-}{
-\epsffile[0 0 295 295]{../ps/23dpal.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDControlTitle}{Two-Dimensional Control-Panel}
-\newcommand{\ugGraphTwoDControlNumber}{7.1.7.}
-
-@
-\subsection{7.1.7. Two-Dimensional Control-Panel}
-\label{ugGraphTwoDControlPage}
-\index{pages!ugGraphTwoDControlPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDControlPage}
-\index{ugGraphTwoDControlPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDControlPage}{7.1.7. Two-Dimensional Control-Panel}
-\beginscroll
-Once you have created a viewport, move your mouse to the viewport and click
-with your left mouse button to display a control-panel.
-The panel is displayed on the side of the viewport closest to
-where you clicked.  Each of the buttons which toggle on and off show the
-current state of the graph.
-
-
-\subsubsection{Transformations}
-
-Object transformations are executed from the control-panel by mouse-activated
-potentiometer windows.
-%
-\indent{0}
-\beginitems
-%
-\item[Scale:] To scale a graph, click on a mouse button
-within the {\bf Scale} window in the upper left corner of the control-panel.
-The axes along which the scaling is to occur are indicated by setting the
-toggles above the arrow.
-With {\tt X On} and {\tt Y On} appearing, both axes are selected and scaling
-is uniform.
-If either is not selected, for example, if {\tt X Off} appears, scaling is
-non-uniform.
-%
-\item[Translate:] To translate a graph, click the mouse in the
-{\bf Translate} window in the direction you wish the graph to move.
-This window is located in the upper right corner of the control-panel.
-Along the top of the {\bf Translate} window are two buttons for selecting
-the direction of translation.
-Translation along both coordinate axes results when {\tt X On} and {\tt Y
-On} appear or along one axis when one is on, for example, {\tt X On} and
-{\tt Y Off} appear.
-\enditems
-\indent{0}
-
-\subsubsection{Messages}
-
-The window directly below the transformation potentiometer windows is
-used to display system messages relating to the viewport and the control-panel.
-The following format is displayed: \newline
-%
-\centerline{{[scaleX, scaleY] \axiom{>}graph\axiom{<} [translateX, translateY] \newline}}
-The two values to the left show the scale factor along the {\tt X} and
-{\tt Y} coordinate axes.  The two values to the right show the distance of
-translation from the center in the {\tt X} and {\tt Y} directions.  The number
-in the center shows which graph in the viewport this data pertains to.
-When multiple graphs exist in the same viewport,
-the graph must be selected (see ``Multiple Graphs,'' below) in
-order for its transformation data to be shown, otherwise the number
-is 1.
-
-\subsubsection{Multiple Graphs}
-
-The {\bf Graphs} window contains buttons that allow the placement
-of \twodim{} graphs into one of nine available slots in any other
-\twodim{} viewport.
-In the center of the window are numeral buttons from one to nine
-that show whether a graph is displayed in the viewport.
-Below each number button is a button showing whether a graph
-that is present is selected for application of some
-transformation.
-When the caret symbol is displayed, then the graph in that slot
-will be manipulated.
-Initially, the graph for which the viewport is created occupies
-the first slot, is displayed, and is selected.
-%
-%
-\indent{0}
-\beginitems
-%
-\item[Clear:]  The {\bf Clear} button deselects every viewport graph slot.
-A graph slot is reselected by selecting the button below its number.
-%
-\item[Query:]  The {\bf Query} button is used to display the scale and
-translate data for the indicated graph.  When this button is selected the
-message ``Click on the graph to query'' appears.  Select a slot
-number button from the {\bf Graphs} window. The scaling factor and translation
-offset of the graph are then displayed in the message window.
-%
-\item[Pick:]  The {\bf Pick} button is used to select a graph
-to be placed or dropped into the indicated viewport.  When this button is
-selected, the message ``Click on the graph to pick'' appears.
-Click on the slot with the graph number of the desired
-graph.  The graph information is held waiting for
-you to execute a {\bf Drop} in some other graph.
-%
-\item[Drop:]  Once a graph has been picked up using the {\bf Pick} button,
-the {\bf Drop} button places it into a new viewport slot.
-The message ``Click on the graph to drop'' appears in the message
-window when the {\bf Drop} button is selected.
-By selecting one of the slot number buttons in the {\bf Graphs}
-window, the graph currently being held is dropped into this slot
-and displayed.
-\enditems
-\indent{0}
-
-\subsubsection{Buttons}
-
-%
-\indent{0}
-\beginitems
-%
-\item[Axes] turns the coordinate axes on or off.
-%
-\item[Units] turns the units along the {\tt x}
-and {\tt y} axis on or off.
-%
-\item[Box] encloses the area of the viewport graph
-in a bounding box, or removes the box if already enclosed.
-%
-\item[Pts] turns on or off the display of points.
-%
-\item[Lines] turns on or off the display
-of lines connecting points.
-%
-\item[PS] writes the current viewport contents to
-a file {\bf axiom2D.ps} or to a name specified in the user's {\bf
-.Xdefaults} file.
-The file is placed in the directory from which Axiom or the {\bf
-viewalone} program was invoked.
-%
-\item[Reset] resets the object transformation
-characteristics and attributes back to their initial states.
-%
-\item[Hide] makes the control-panel disappear.
-%
-\item[Quit] queries whether the current viewport
-session should be terminated.
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDopsTitle}{Operations for Two-Dimensional Graphics}
-\newcommand{\ugGraphTwoDopsNumber}{7.1.8.}
-
-@
-\subsection{7.1.8. Operations for Two-Dimensional Graphics}
-\label{ugGraphTwoDopsPage}
-\index{pages!ugGraphTwoDopsPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDopsPage}
-\index{ugGraphTwoDopsPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDopsPage}
-{7.1.8. Operations for Two-Dimensional Graphics}
-\beginscroll
-
-Here is a summary of useful Axiom operations for \twodim{}
-graphics.
-Each operation name is followed by a list of arguments.
-Each argument is written as a variable informally named according
-to the type of the argument (for example, {\it integer}).
-If appropriate, a default value for an argument is given in
-parentheses immediately following the name.
-
-%
-\texht{\bgroup\hbadness = 10001\sloppy}{}
-\indent{0}
-\beginitems
-%
-\item[\axiomFun{adaptive}]\funArgs{\optArg{boolean\argDef{true}}}
-sets or indicates whether graphs are plotted
-according to the adaptive refinement algorithm.
-%
-\item[\axiomFun{axesColorDefault}]\funArgs{\optArg{color\argDef{dark blue()}}}
-sets or indicates the default color of the
-axes in a \twodim{} graph viewport.
-%
-\item[\axiomFun{clipPointsDefault}]\funArgs{\optArg{boolean\argDef{false}}}
-sets or
-indicates whether point clipping is
-to be applied as the default for graph plots.
-%
-\item[\axiomFun{drawToScale}]\funArgs{\optArg{boolean\argDef{false}}}
-sets or
-indicates whether the plot of a graph
-is ``to scale'' or uses the entire viewport space as the default.
-%
-\item[\axiomFun{lineColorDefault}]\funArgs{\optArg{color\argDef{pastel yellow()}}}
-sets or indicates the default color of the
-lines or curves in a \twodim{} graph viewport.
-%
-\item[\axiomFun{maxPoints}]\funArgs{\optArg{integer\argDef{500}}}
-sets or indicates
-the default maximum number of
-possible points to be used when constructing a \twodim{} graph.
-%
-\item[\axiomFun{minPoints}]\funArgs{\optArg{integer\argDef{21}}}
-sets or indicates the default minimum number of
-possible points to be used when constructing a \twodim{} graph.
-%
-\item[\axiomFun{pointColorDefault}]\funArgs{\optArg{color\argDef{bright red()}}}
-sets or indicates the default color of the
-points in a \twodim{} graph viewport.
-%
-\item[\axiomFun{pointSizeDefault}]\funArgs{\optArg{integer\argDef{5}}}
-sets or indicates the default size of the
-dot used to plot points in a \twodim{} graph.
-%
-\item[\axiomFun{screenResolution}]\funArgs{\optArg{integer\argDef{600}}}
-sets or indicates the default screen
-resolution constant used in setting the computation limit of adaptively
-generated curve plots.
-%
-\item[\axiomFun{unitsColorDefault}]\funArgs{\optArg{color\argDef{dim green()}}}
-sets or indicates the default color of the
-unit labels in a \twodim{} graph viewport.
-%
-\item[\axiomFun{viewDefaults}]\funArgs{}
-resets the default settings for the following
-attributes:  point color, line color, axes color, units color, point size,
-viewport upper left-hand corner position, and the viewport size.
-%
-\item[\axiomFun{viewPosDefault}]\funArgs{\optArg{list\argDef{[100,100]}}}
-sets or indicates the default position of the
-upper left-hand corner of a \twodim{} viewport, relative to the
-display root window.
-The upper left-hand corner of the display is considered to be at the
-(0, 0) position.
-%
-\item[\axiomFun{viewSizeDefault}]\funArgs{\optArg{list\argDef{[200,200]}}}
-sets or
-indicates the default size in which two
-dimensional viewport windows are shown.
-It is defined by a width and then a height.
-%
-\item[\axiomFun{viewWriteAvailable}]\funArgs{\optArg{list\argDef{["pixmap",
-"bitmap", "postscript", \"image"}}}
-indicates the possible file types
-that can be created with the \axiomFunFrom{write}{TwoDimensionalViewport} function.
-%
-\item[\axiomFun{viewWriteDefault}]
-\funArgs{\optArg{list\argDef{[]}}}
-sets or indicates the default types of files, in
-addition to the {\bf data} file, that are created when a
-\axiomFun{write} function is executed on a viewport.
-%
-\item[\axiomFun{units}]\funArgs{viewport, integer\argDef{1}, string\argDef{"off"}}
-turns the units on or off for the graph with index {\it integer}.
-%
-\item[\axiomFun{axes}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
-turns the axes on
-or off for the graph with index {\it integer}.
-%
-\item[\axiomFun{close}]\funArgs{viewport}
-closes {\it viewport}.
-%
-\item[\axiomFun{connect}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
-declares whether lines
-connecting the points are displayed or not.
-%
-\item[\axiomFun{controlPanel}]\funArgs{viewport, string\argDef{"off"}}
-declares
-whether the \twodim{} control-panel is automatically displayed
-or not.
-%
-\item[\axiomFun{graphs}]\funArgs{viewport}
-returns a list
-describing the state of each graph.
-If the graph state is not being used this is shown by {\tt "undefined"},
-otherwise a description of the graph's contents is shown.
-%
-\item[\axiomFun{graphStates}]\funArgs{viewport}
-displays
-a list of all the graph states available for {\it viewport}, giving the
-values for every property.
-%
-\item[\axiomFun{key}]\funArgs{viewport}
-returns the process
-ID number for {\it viewport}.
-%
-\item[\axiomFun{move}]\funArgs{viewport,
-\subscriptText{integer}{x}(viewPosDefault),
-\subscriptText{integer}{y}(viewPosDefault)}
-moves {\it viewport} on the screen so that the
-upper left-hand corner of {\it viewport} is at the position {\it (x,y)}.
-%
-\item[\axiomFun{options}]\funArgs{\it viewport}
-returns a list
-of all the \axiomType{DrawOption}s used by {\it viewport}.
-%
-\item[\axiomFun{points}]\funArgs{viewport, integer\argDef{1}, string\argDef{"on"}}
-specifies whether the graph points for graph {\it integer} are
-to be displayed or not.
-%
-\item[\axiomFun{region}]\funArgs{viewport, integer\argDef{1}, string\argDef{"off"}}
-declares whether graph {\it integer} is or is not to be displayed
-with a bounding rectangle.
-%
-\item[\axiomFun{reset}]\funArgs{viewport}
-resets all the properties of {\it viewport}.
-%
-\item[\axiomFun{resize}]\funArgs{viewport,
-\subscriptText{integer}{width}, \subscriptText{integer}{height}}
-resizes {\it viewport} with a new {\it width} and {\it height}.
-%
-\item[\axiomFun{scale}]\funArgs{viewport, \subscriptText{integer}{n}\argDef{1},
-\subscriptText{integer}{x}\argDef{0.9}, \subscriptText{integer}{y}\argDef{0.9}}
-scales values for the
-{\it x} and {\it y} coordinates of graph {\it n}.
-%
-\item[\axiomFun{show}]\funArgs{viewport, \subscriptText{integer}{n}\argDef{1},
-string\argDef{"on"}}
-indicates if graph {\it n} is shown or not.
-%
-\item[\axiomFun{title}]\funArgs{viewport, string\argDef{"Axiom 2D"}}
-designates the title for {\it viewport}.
-%
-\item[\axiomFun{translate}]\funArgs{viewport,
-\subscriptText{integer}{n}\argDef{1},
-\subscriptText{float}{x}\argDef{0.0}, \subscriptText{float}{y}\argDef{0.0}}
-causes graph {\it n} to be moved {\it x} and {\it y} units in the respective directions.
-%
-\item[\axiomFun{write}]\funArgs{viewport, \subscriptText{string}{directory},
-\optArg{strings}}
-if no third argument is given, writes the {\bf data} file onto the directory
-with extension {\bf data}.
-The third argument can be a single string or a list of strings with some or
-all the entries {\tt "pixmap"}, {\tt "bitmap"}, {\tt "postscript"}, and
-{\tt "image"}.
-\enditems
-\indent{0}
-\texht{\egroup}{}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDbuildTitle}{Addendum: Building Two-Dimensional Graphs}
-\newcommand{\ugGraphTwoDbuildNumber}{7.1.9.}
-
-@
-\subsection{7.1.9. Addendum: Building Two-Dimensional Graphs}
-\label{ugGraphTwoDbuildPage}
-\index{pages!ugGraphTwoDbuildPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDbuildPage}
-\index{ugGraphTwoDbuildPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDbuildPage}
-{7.1.9. Addendum: Building Two-Dimensional Graphs}
-\beginscroll
-
-In this section we demonstrate how to create \twodim{} graphs from
-lists of points and give an example showing how to read the lists
-of points from a file.
-
-\subsubsection{Creating a Two-Dimensional Viewport from a List of Points}
-
-Axiom creates lists of points in a \twodim{} viewport by utilizing
-the \axiomType{GraphImage} and \axiomType{TwoDimensionalViewport} domains.
-In this example, the \axiomFunFrom{makeGraphImage}{GraphImage}
-function takes a list of lists of points parameter, a list of colors for
-each point in the graph, a list of colors for each line in the graph, and
-a list of sizes for each point in the graph.
-%
-\xtc{
-The following expressions create a list of lists of points which will be read
-by Axiom and made into a \twodim{} viewport.
-}{
-\spadpaste{p1 := point [1,1]\$(Point DFLOAT) \bound{p1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := point [0,1]\$(Point DFLOAT) \bound{p2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := point [0,0]\$(Point DFLOAT) \bound{p3}}
-}
-\xtc{
-}{
-\spadpaste{p4 := point [1,0]\$(Point DFLOAT) \bound{p4}}
-}
-\xtc{
-}{
-\spadpaste{p5 := point [1,.5]\$(Point DFLOAT) \bound{p5}}
-}
-\xtc{
-}{
-\spadpaste{p6 := point [.5,0]\$(Point DFLOAT) \bound{p6}}
-}
-\xtc{
-}{
-\spadpaste{p7 := point [0,0.5]\$(Point DFLOAT) \bound{p7}}
-}
-\xtc{
-}{
-\spadpaste{p8 := point [.5,1]\$(Point DFLOAT) \bound{p8}}
-}
-\xtc{
-}{
-\spadpaste{p9 := point [.25,.25]\$(Point DFLOAT) \bound{p9}}
-}
-\xtc{
-}{
-\spadpaste{p10 := point [.25,.75]\$(Point DFLOAT) \bound{p10}}
-}
-\xtc{
-}{
-\spadpaste{p11 := point [.75,.75]\$(Point DFLOAT) \bound{p11}}
-}
-\xtc{
-}{
-\spadpaste{p12 := point [.75,.25]\$(Point DFLOAT) \bound{p12}}
-}
-\xtc{
-Finally, here is the list.
-}{
-\spadpaste{llp := [[p1,p2], [p2,p3], [p3,p4], [p4,p1], [p5,p6], [p6,p7], [p7,p8], [p8,p5], [p9,p10], [p10,p11], [p11,p12], [p12,p9]] \free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12} \bound{llp}}
-}
-\xtc{
-Now we set the point sizes for all components of the graph.
-}{
-\spadpaste{size1 := 6::PositiveInteger \bound{size1}}
-}
-\xtc{
-}{
-}
-\xtc{
-}{
-\spadpaste{size2 := 8::PositiveInteger \bound{size2}}
-}
-\xtc{
-}{
-\spadpaste{size3 := 10::PositiveInteger \bound{size3}}
-}
-\xtc{
-}{
-\spadpaste{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3] \bound{lsize} \free{size1 size2 size3}}
-}
-\xtc{
-Here are the colors for the points.
-}{
-\spadpaste{pc1 := pastel red() \bound{pc1}}
-}
-\xtc{
-}{
-\spadpaste{pc2 := dim green() \bound{pc2}}
-}
-\xtc{
-}{
-\spadpaste{pc3 := pastel yellow() \bound{pc3}}
-}
-\xtc{
-}{
-\spadpaste{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3] \free{pc1 pc2 pc3} \bound{lpc}}
-}
-\xtc{
-Here are the colors for the lines.
-}{
-\spadpaste{lc := [pastel blue(), light yellow(), dim green(), bright red(), light green(), dim yellow(), bright blue(), dark red(), pastel red(), light blue(), dim green(), light yellow()] \bound{lc}}
-}
-\xtc{
-Now the \axiomType{GraphImage} is created according to the component
-specifications indicated above.
-}{
-\spadpaste{g := makeGraphImage(llp,lpc,lc,lsize)\$GRIMAGE \bound{g} \free{llp lpc lc lsize}}
-}
-\psXtc{
-The \axiomFunFrom{makeViewport2D}{TwoDimensionalViewport} function now
-creates a \axiomType{TwoDimensionalViewport} for this graph according to the
-list of options specified within the brackets.
-}{
-\graphpaste{makeViewport2D(g,[title("Lines")])\$VIEW2D \free{g}}
-}{
-%
-}
-%See Figure #.#.
-\xtc{
-This example demonstrates the use of the \axiomType{GraphImage} functions
-\axiomFunFrom{component}{GraphImage} and \axiomFunFrom{appendPoint}{GraphImage}
-in adding points to an empty \axiomType{GraphImage}.
-}{
-\spadpaste{)clear all \bound{clearAll}}
-}
-\xtc{
-}{
-\spadpaste{g := graphImage()\$GRIMAGE \bound{Sg}\free{clearAll}}
-}
-\xtc{
-}{
-\spadpaste{p1 := point [0,0]\$(Point DFLOAT) \bound{Sp1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := point [.25,.25]\$(Point DFLOAT) \bound{Sp2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := point [.5,.5]\$(Point DFLOAT) \bound{Sp3}}
-}
-\xtc{
-}{
-\spadpaste{p4 := point [.75,.75]\$(Point DFLOAT) \bound{Sp4}}
-}
-\xtc{
-}{
-\spadpaste{p5 := point [1,1]\$(Point DFLOAT) \bound{Sp5}}
-}
-\xtc{
-}{
-\spadpaste{component(g,p1)\$GRIMAGE\free{Sg Sp1}\bound{gp1}}
-}
-\xtc{
-}{
-\spadpaste{component(g,p2)\$GRIMAGE\free{Sg Sp2}\bound{gp2}}
-}
-\xtc{
-}{
-\spadpaste{appendPoint(g,p3)\$GRIMAGE\free{gp1 gp2 Sp3}\bound{gp3}}
-}
-\xtc{
-}{
-\spadpaste{appendPoint(g,p4)\$GRIMAGE\free{gp3 Sp4}\bound{gp4}}
-}
-\xtc{
-}{
-\spadpaste{appendPoint(g,p5)\$GRIMAGE\free{gp4 Sp5}\bound{gp5}}
-}
-\xtc{
-}{
-\spadpaste{g1 := makeGraphImage(g)\$GRIMAGE \bound{Sg1} \free{gp5}}
-}
-\psXtc{
-Here is the graph.
-}{
-\graphpaste{makeViewport2D(g1,[title("Graph Points")])\$VIEW2D \free{Sg1}}
-}{
-%
-}
-%
-%See Figure #.#.
-%
-\xtc{
-A list of points can also be made into a \axiomType{GraphImage} by using
-the operation \axiomFunFrom{coerce}{GraphImage}.  It is equivalent to adding
-each point to \axiom{g2} using \axiomFunFrom{component}{GraphImage}.
-}{
-\spadpaste{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])\$GRIMAGE  \free{Sp1 Sp2 Sp3 Sp4 Sp5} \bound{Sg2}}
-}
-\xtc{
-Now, create an empty \axiomType{TwoDimensionalViewport}.
-}{
-\spadpaste{v := viewport2D()\$VIEW2D \bound{Sv}}
-}
-\xtc{
-}{
-\spadpaste{options(v,[title("Just Points")])\$VIEW2D \free{Sv}\bound{Svo}}
-}
-\xtc{
-Place the graph into the viewport.
-}{
-\spadpaste{putGraph(v,g2,1)\$VIEW2D \free{Sg2 Svo}\bound{Svog2}}
-}
-\psXtc{
-Take a look.
-}{
-\graphpaste{makeViewport2D(v)\$VIEW2D \free{Svog2}}
-}{
-%
-}
-
-%See Figure #.#.
-
-\subsubsection{Creating a Two-Dimensional Viewport of a List of Points from a File}
-
-The following three functions read a list of points from a
-file and then draw the points and the connecting lines. The
-points are stored in the file in readable form as floating point numbers
-(specifically, \axiomType{DoubleFloat} values) as an alternating
-stream of \axiom{x}- and \axiom{y}-values. For example,
+\subsection{Asp6 Example Code}
+\label{Asp6ExampleCode}
+\index{pages!Asp6ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp6ExampleCode}
+\index{Asp6ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp6ExampleCode}{Asp6 Example Code}
 \begin{verbatim}
-0.0 0.0     1.0 1.0     2.0 4.0
-3.0 9.0     4.0 16.0    5.0 25.0
+      SUBROUTINE FCN(N,X,FVEC,IFLAG)
+      DOUBLE PRECISION X(N),FVEC(N)
+      INTEGER N,IFLAG
+      FVEC(1)=(-2.0D0*X(2))+(-2.0D0*X(1)**2)+3.0D0*X(1)+1.0D0
+      FVEC(2)=(-2.0D0*X(3))+(-2.0D0*X(2)**2)+3.0D0*X(2)+(-1.0D0*X(1))+1.
+     &0D0
+      FVEC(3)=(-2.0D0*X(4))+(-2.0D0*X(3)**2)+3.0D0*X(3)+(-1.0D0*X(2))+1.
+     &0D0
+      FVEC(4)=(-2.0D0*X(5))+(-2.0D0*X(4)**2)+3.0D0*X(4)+(-1.0D0*X(3))+1.
+     &0D0
+      FVEC(5)=(-2.0D0*X(6))+(-2.0D0*X(5)**2)+3.0D0*X(5)+(-1.0D0*X(4))+1.
+     &0D0
+      FVEC(6)=(-2.0D0*X(7))+(-2.0D0*X(6)**2)+3.0D0*X(6)+(-1.0D0*X(5))+1.
+     &0D0
+      FVEC(7)=(-2.0D0*X(8))+(-2.0D0*X(7)**2)+3.0D0*X(7)+(-1.0D0*X(6))+1.
+     &0D0
+      FVEC(8)=(-2.0D0*X(9))+(-2.0D0*X(8)**2)+3.0D0*X(8)+(-1.0D0*X(7))+1.
+     &0D0
+      FVEC(9)=(-2.0D0*X(9)**2)+3.0D0*X(9)+(-1.0D0*X(8))+1.0D0
+      RETURN
+      END
 \end{verbatim}
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ drawPoints(lp:List\ Point\ DoubleFloat):VIEW2D\ ==}\newline
-{\tt 2.\ \ \ \ \ g\ :=\ graphImage()\$GRIMAGE}\newline
-{\tt 3.\ \ \ \ \ for\ p\ in\ lp\ repeat}\newline
-{\tt 4.\ \ \ \ \ \ \ component(g,p,pointColorDefault(),lineColorDefault(),}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ pointSizeDefault())}\newline
-{\tt 6.\ \ \ \ \ gi\ :=\ makeGraphImage(g)\$GRIMAGE}\newline
-{\tt 7.\ \ \ \ \ makeViewport2D(gi,[title("Points")])\$VIEW2D}\newline
-{\tt 8.\ \ \ }\newline
-{\tt 9.\ \ \ drawLines(lp:List\ Point\ DoubleFloat):VIEW2D\ ==}\newline
-{\tt 10.\ \ \ \ g\ :=\ graphImage()\$GRIMAGE}\newline
-{\tt 11.\ \ \ \ component(g,\ lp,\ pointColorDefault(),\ lineColorDefault(),}\newline
-{\tt 12.\ \ \ \ \ \ pointSizeDefault())\$GRIMAGE}\newline
-{\tt 13.\ \ \ \ gi\ :=\ makeGraphImage(g)\$GRIMAGE}\newline
-{\tt 14.\ \ \ \ makeViewport2D(gi,[title("Points")])\$VIEW2D}\newline
-{\tt 15.\ \ }\newline
-{\tt 16.\ \ plotData2D(name,\ title)\ ==}\newline
-{\tt 17.\ \ \ \ f:File(DFLOAT)\ :=\ open(name,"input")}\newline
-{\tt 18.\ \ \ \ lp:LIST(Point\ DFLOAT)\ :=\ empty()}\newline
-{\tt 19.\ \ \ \ while\ ((x\ :=\ readIfCan!(f))\ case\ DFLOAT)\ repeat}\newline
-{\tt 20.\ \ \ \ \ \ y\ :\ DFLOAT\ :=\ read!(f)}\newline
-{\tt 21.\ \ \ \ \ \ lp\ :=\ cons(point\ [x,y]\$(Point\ DFLOAT),\ lp)}\newline
-{\tt 22.\ \ \ \ \ \ lp}\newline
-{\tt 23.\ \ \ \ close!(f)}\newline
-{\tt 24.\ \ \ \ drawPoints(lp)}\newline
-{\tt 25.\ \ \ \ drawLines(lp)}\newline
-\endImportant
-%
-This command will actually create the viewport and the graph if
-the point data is in the file \axiom{"file.data"}.
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ plotData2D("file.data",\ "2D\ Data\ Plot")}\newline
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphTwoDappendTitle}{Addendum: Appending a Graph to a Viewport Window Containing a Graph}
-\newcommand{\ugGraphTwoDappendNumber}{7.1.10.}
-
-@
-\subsection{7.1.10. Addendum: Appending a Graph to a Viewport Window Containing a Graph}
-\label{ugGraphTwoDappendPage}
-\index{pages!ugGraphTwoDappendPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphTwoDappendPage}
-\index{ugGraphTwoDappendPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphTwoDappendPage}
-{7.1.10. Addendum: Appending a Graph to a Viewport Window Containing a Graph}
-\beginscroll
-
-This section demonstrates how to append a \twodim{} graph to a viewport
-already containing other graphs.
-The default \axiomFun{draw} command places a graph into the first
-\axiomType{GraphImage} slot position of the \axiomType{TwoDimensionalViewport}.
-
-\xtc{
-This graph is in the first slot in its viewport.
-}{
-\spadpaste{v1 := draw(sin(x),x=0..2*\%pi) \bound{v1}}
-}
-\xtc{
-So is this graph.
-}{
-\spadpaste{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red()) \bound{v2}}
-}
-\xtc{
-The operation \axiomFunFrom{getGraph}{TwoDimensionalViewport}
-retrieves the \axiomType{GraphImage} \axiom{g1} from the first slot position
-in the viewport \axiom{v1}.
-}{
-\spadpaste{g1 := getGraph(v1,1) \bound{g1}\free{v1}}
-}
-\xtc{
-Now \axiomFunFrom{putGraph}{TwoDimensionalViewport}
-places \axiom{g1} into the the second slot position of \axiom{v2}.
-}{
-\spadpaste{putGraph(v2,g1,2) \bound{v22}\free{g1 v2}}
-}
-\psXtc{
-Display the new \axiomType{TwoDimensionalViewport} containing both graphs.
-}{
-\graphpaste{makeViewport2D(v2) \free{v22}}
-}{
-%
-}
-%
-%See Figure #.#.
-%
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDTitle}{Three-Dimensional Graphics}
-\newcommand{\ugGraphThreeDNumber}{7.2.}
-
-@
-\subsection{7.2. Three-Dimensional Graphics}
-\label{ugGraphThreeDPage}
-\begin{itemize}
-\item ugGraphThreeDPlotPage \ref{ugGraphThreeDPlotPage} on
-page~\pageref{ugGraphThreeDPlotPage}
-\item ugGraphThreeDParmPage \ref{ugGraphThreeDParmPage} on
-page~\pageref{ugGraphThreeDParmPage}
-\item ugGraphThreeDParPage \ref{ugGraphThreeDParPage} on
-page~\pageref{ugGraphThreeDParPage}
-\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
-page~\pageref{ugGraphThreeDOptionsPage}
-\item ugGraphMakeObjectPage \ref{ugGraphMakeObjectPage} on
-page~\pageref{ugGraphMakeObjectPage}
-\item ugGraphThreeDBuildPage \ref{ugGraphThreeDBuildPage} on
-page~\pageref{ugGraphThreeDBuildPage}
-\item ugGraphCoordPage \ref{ugGraphCoordPage} on
-page~\pageref{ugGraphCoordPage}
-\item ugGraphClipPage \ref{ugGraphClipPage} on
-page~\pageref{ugGraphClipPage}
-\item ugGraphThreeDControlPage \ref{ugGraphThreeDControlPage} on
-page~\pageref{ugGraphThreeDControlPage}
-\item ugGraphThreeDopsPage \ref{ugGraphThreeDopsPage} on
-page~\pageref{ugGraphThreeDopsPage}
-\item ugXdefaultsPage \ref{ugXdefaultsPage} on
-page~\pageref{ugXdefaultsPage}
-\end{itemize}
-\index{pages!ugGraphThreeDPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDPage}
-\index{ugGraphThreeDPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDPage}{7.2. Three-Dimensional Graphics}
-\beginscroll
-%
-The Axiom \threedim{} graphics package provides the ability to
-%
-\indent{4}
-\beginitems
-%
-\item[-] generate surfaces defined by a function of two real variables
-%
-\item[-] generate space curves and tubes defined by parametric equations
-%
-\item[-] generate surfaces defined by parametric equations
-\enditems
-\indent{0}
-These graphs can be modified by using various options, such as calculating
-points in the spherical coordinate system or changing the polygon grid size
-of a surface.
-
-\beginmenu
-    \menudownlink{
-{7.2.1. Plotting Three-Dimensional Functions of Two Variables}}
-{ugGraphThreeDPlotPage}
-    \menudownlink{
-{7.2.2. Plotting Three-Dimensional Parametric Space Curves}}
-{ugGraphThreeDParmPage}
-    \menudownlink{
-{7.2.3. Plotting Three-Dimensional Parametric Surfaces}}
-{ugGraphThreeDParPage}
-    \menudownlink{{7.2.4. Three-Dimensional Options}}{ugGraphThreeDOptionsPage}
-    \menudownlink{{7.2.5. The makeObject Command}}{ugGraphMakeObjectPage}
-    \menudownlink{
-{7.2.6. Building Three-Dimensional Objects From Primitives}}
-{ugGraphThreeDBuildPage}
-    \menudownlink{{7.2.7. Coordinate System Transformations}}{ugGraphCoordPage}
-    \menudownlink{{7.2.8. Three-Dimensional Clipping}}{ugGraphClipPage}
-    \menudownlink{{7.2.9. Three-Dimensional Control-Panel}}
-{ugGraphThreeDControlPage}
-    \menudownlink{{7.2.10. Operations for Three-Dimensional Graphics}}
-{ugGraphThreeDopsPage}
-    \menudownlink{{7.2.11. Customization using .Xdefaults}}{ugXdefaultsPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDPlotTitle}{Plotting Three-Dimensional Functions of Two Variables}
-\newcommand{\ugGraphThreeDPlotNumber}{7.2.1.}
-
-@
-\subsection{7.2.1. Plotting Three-Dimensional Functions of Two Variables}
-\label{ugGraphThreeDPlotPage}
-\begin{itemize}
-\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
-page~\pageref{ugGraphThreeDOptionsPage}
-\end{itemize}
-\index{pages!ugGraphThreeDPlotPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDPlotPage}
-\index{ugGraphThreeDPlotPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDPlotPage}
-{7.2.1. Plotting Three-Dimensional Functions of Two Variables}
-\beginscroll
-
-The simplest \threedim{} graph is that of a surface defined by a function
-of two variables, \axiom{z = f(x,y)}.
-
-%
-\beginImportant
-The general format for drawing a surface defined by a formula \axiom{f(x,y)}
-of two variables \axiom{x} and \axiom{y} is:
-%
-\centerline{{{\tt draw(f(x,y), x = a..b, y = c..d, {\it options})}}}
-where \axiom{a..b} and \axiom{c..d} define the range of \axiom{x}
-and \axiom{y}, and where {\it options} prescribes zero or more
-options as described in 
-\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
-in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
-An example of an option is \axiom{title == "Title of Graph".}
-An alternative format involving a function \axiom{f} is also
-available.
-\endImportant
-
-%
-\psXtc{
-The simplest way to plot a function of two variables is to use a formula.
-With formulas you always precede the range specifications with
-the variable name and an \spadSyntax{=} sign.
-}{
-\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3)}
-}{
-\epsffile[0 0 295 295]{../ps/3d2vara.ps}
-}
-%
-\xtc{
-If you intend to use a function more than once,
-or it is long and complex, then first
-give its definition to Axiom.
-}{
-\spadpaste{f(x,y) == sin(x)*cos(y) \bound{f}}
-}
-%
-%
-\psXtc{
-To draw the function, just give its name and drop the variables
-from the range specifications.
-Axiom compiles your function for efficient computation
-of data for the graph.
-Notice that Axiom uses the text of your function as a
-default title.
-}{
-\graphpaste{draw(f,-\%pi..\%pi,-\%pi..\%pi) \free{f}}
-}{
-\epsffile[0 0 295 295]{../ps/3d2varb.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDParmTitle}{Plotting Three-Dimensional Parametric Space Curves}
-\newcommand{\ugGraphThreeDParmNumber}{7.2.2.}
-
-@
-\subsection{7.2.2. Plotting Three-Dimensional Parametric Space Curves}
-\label{ugGraphThreeDParmPage}
-\begin{itemize}
-\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
-page~\pageref{ugGraphThreeDOptionsPage}
-\end{itemize}
-\index{pages!ugGraphThreeDParmPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDParmPage}
-\index{ugGraphThreeDParmPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDParmPage}
-{7.2.2. Plotting Three-Dimensional Parametric Space Curves}
-\beginscroll
-
-A second kind of \threedim{} graph is a \threedim{} space curve
-defined by the parametric equations for \axiom{x(t)}, \axiom{y(t)},
-and \axiom{z(t)} as a function of an independent variable \axiom{t}.
-
-%
-\beginImportant
-The general format for drawing a \threedim{} space curve defined by
-parametric formulas \axiom{x = f(t)}, \axiom{y = g(t)}, and
-\axiom{z = h(t)} is:
-%
-\centerline{{{\tt draw(curve(f(t),g(t),h(t)), t = a..b, {\it options})}}}
-where \axiom{a..b} defines the range of the independent variable
-\axiom{t}, and where {\it options} prescribes zero or more options
-as described in 
-\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
-in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
-An example of an option is \axiom{title == "Title of Graph".}
-An alternative format involving functions \axiom{f}, \axiom{g} and
-\axiom{h} is also available.
-\endImportant
-
-%
-\psXtc{
-If you use explicit formulas to draw a space curve, always precede
-the range specification with the variable name and an
-\spadSyntax{=} sign.
-}{
-\graphpaste{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
-}{
-\epsffile[0 0 295 295]{../ps/3dpsca.ps}
-}
-%
-\xtc{
-Alternatively, you can draw space curves by referring to functions.
-}{
-\spadpaste{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5) \bound{i1}}
-}
-\xtc{
-This is useful if the functions are to be used more than once \ldots
-}{
-\spadpaste{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5) \bound{i2}}
-}
-\xtc{
-or if the functions are long and complex.
-}{
-\spadpaste{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5) \bound{i3}}
-}
-%
-%
-\psXtc{
-Give the names of the functions and
-drop the variable name specification in the second argument.
-Again, Axiom supplies a default title.
-}{
-\graphpaste{draw(curve(i1,i2,i3),0..15*\%pi) \free{i1 i2 i3}}
-}{
-\epsffile[0 0 295 295]{../ps/3dpscb.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDParTitle}{Plotting Three-Dimensional Parametric Surfaces}
-\newcommand{\ugGraphThreeDParNumber}{7.2.3.}
-
-@
-\subsection{7.2.3. Plotting Three-Dimensional Parametric Surfaces}
-\label{ugGraphThreeDParPage}
-\begin{itemize}
-\item ugGraphThreeDOptionsPage \ref{ugGraphThreeDOptionsPage} on
-page~\pageref{ugGraphThreeDOptionsPage}
-\item ugGraphCoordPage \ref{ugGraphCoordPage} on
-page~\pageref{ugGraphCoordPage}
-\end{itemize}
-\index{pages!ugGraphThreeDParPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDParPage}
-\index{ugGraphThreeDParPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDParPage}
-{7.2.3. Plotting Three-Dimensional Parametric Surfaces}
-\beginscroll
-
-A third kind of \threedim{} graph is a surface defined by
-parametric equations for \axiom{x(u,v)}, \axiom{y(u,v)}, and
-\axiom{z(u,v)} of two independent variables \axiom{u} and \axiom{v}.
-
-%
-\beginImportant
-The general format for drawing a \threedim{} graph defined by
-parametric formulas \axiom{x = f(u,v)}, \axiom{y = g(u,v)},
-and \axiom{z = h(u,v)} is:
-%
-\centerline{{{\tt draw(surface(f(u,v),g(u,v),h(u,v)), u = a..b, v = c..d, {\it options})}}}
-where \axiom{a..b} and \axiom{c..d} define the range of the
-independent variables \axiom{u} and \axiom{v}, and where
-{\it options} prescribes zero or more options as described in
-\downlink{``\ugGraphThreeDOptionsTitle''}{ugGraphThreeDOptionsPage} 
-in Section \ugGraphThreeDOptionsNumber\ignore{ugGraphThreeDOptions}.
-An example of an option is \axiom{title == "Title of Graph".}
-An alternative format involving functions \axiom{f}, \axiom{g} and
-\axiom{h} is also available.
-\endImportant
-
-%
-\psXtc{
-This example draws a graph of a surface plotted using the
-parabolic cylindrical coordinate system option.
-The values of the functions supplied to \axiomFun{surface} are
-interpreted in coordinates as given by a {\tt coordinates} option,
-here as parabolic cylindrical coordinates (see
-\downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} 
-in Section \ugGraphCoordNumber\ignore{ugGraphCoord}).
-}{
-\graphpaste{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
-}{
-\epsffile[0 0 295 295]{../ps/3dpsa.ps}
-}
-%
-Again, you can graph these parametric surfaces using functions,
-if the functions are long and complex.
-\xtc{
-Here we declare the types of arguments and values to be of type
-\axiomType{DoubleFloat}.
-}{
-\spadpaste{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v) \bound{n1}}
-}
-\xtc{
-As shown by previous examples, these declarations are necessary.
-}{
-\spadpaste{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v) \bound{n2}}
-}
-\xtc{
-In either case, Axiom compiles the functions
-when needed to graph a result.
-}{
-\spadpaste{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u \bound{n3}}
-}
-\xtc{
-Without these declarations, you have to suffix floats
-with \axiom{@DFLOAT} to get a \axiomType{DoubleFloat} result.
-However, a call here with an unadorned float 
-produces a \axiomType{DoubleFloat}.
-}{
-\spadpaste{n3(0.5,1.0)\free{n3}}
-}
-%
-%
-\psXtc{
-Draw the surface by referencing the function names, this time
-choosing the toroidal coordinate system.
-}{
-\graphpaste{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1\$DFLOAT)) \free{n1 n2 n3}}
-}{
-\epsffile[0 0 295 295]{../ps/3dpsb.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDOptionsTitle}{Three-Dimensional Options}
-\newcommand{\ugGraphThreeDOptionsNumber}{7.2.4.}
-
-@
-\subsection{7.2.4. Three-Dimensional Options}
-\label{ugGraphThreeDOptionsPage}
-\begin{itemize}
-\item ugGraphCoordPage \ref{ugGraphCoordPage} on
-page~\pageref{ugGraphCoordPage}
-\end{itemize}
-\index{pages!ugGraphThreeDOptionsPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDOptionsPage}
-\index{ugGraphThreeDOptionsPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDOptionsPage}{7.2.4. Three-Dimensional Options}
-\beginscroll
-
-The \axiomFun{draw} commands optionally take an optional list of options such
-as {\tt coordinates} as shown in the last example.
-Each option is given by the syntax: \axiom{name} {\tt ==} \axiom{value}.
-Here is a list of the available options in the order that they are
-described below:
-
-\table{ {title} {coordinates} {var1Steps} {style} {tubeRadius} {var2Steps}
-{colorFunction} {tubePoints} {space}}
-
-\psXtc{
-The option \axiom{title} gives your graph a title.
-}{
-\graphpaste{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph") }
-}{
-\epsffile[0 0 295 295]{../ps/3doptttl.ps}
-}
-%
-\psXtc{
-The \axiom{style} determines which of four rendering algorithms is used for
-the graph.
-The choices are
-{\tt "wireMesh"}, {\tt "solid"}, {\tt "shade"}, and {\tt "smooth"}.
-}{
-\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
-}{
-\epsffile[0 0 295 295]{../ps/3doptsty.ps}
-}
-%
-
-In all but the wire-mesh style, polygons in a surface or tube plot
-are normally colored in a graph according to their
-\axiom{z}-coordinate value.  Space curves are colored according to their
-parametric variable value.
-To change this, you can give a coloring function.
-The coloring function is sampled across the range of its arguments, then
-normalized onto the standard Axiom colormap.
-
-\xtc{
-A function of one variable  makes the color depend on the
-value of the parametric variable specified for a tube plot.
-}{
-\spadpaste{color1(t) == t \bound{colorFxn1}}
-}
-\psXtc{
-}{
-\graphpaste{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1) \free{colorFxn1}}
-}{
-\epsffile[0 0 295 295]{../ps/3doptcf1.ps}
-}
-%
-\xtc{
-A function of two variables makes the color depend on the
-values of the independent variables.
-}{
-\spadpaste{color2(u,v) == u**2 - v**2 \bound{colorFxn2}}
-}
-\psXtc{
-Use the option {\tt colorFunction} for special coloring.
-}{
-\graphpaste{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2) \free{colorFxn2}}
-}{
-\epsffile[0 0 295 295]{../ps/3doptcf2.ps}
-}
-%
-\xtc{
-With a three variable function, the
-color also depends on the value of the function.
-}{
-\spadpaste{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy) \bound{colorFxn3}}
-}
-\psXtc{
-}{
-\graphpaste{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3) \free{colorFxn3}}
-}{
-\epsffile[0 0 295 295]{../ps/3doptcf3.ps}
-}
-%
-Normally the Cartesian coordinate system is used.
-To change this, use the {\tt coordinates} option.
-For details, see 
-\downlink{``\ugGraphCoordTitle''}{ugGraphCoordPage} 
-in Section \ugGraphCoordNumber\ignore{ugGraphCoord}.
-%
-%
-\xtc{
-}{
-\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
-}
-\psXtc{
-Use the spherical
-coordinate system.
-}{
-\graphpaste{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade") \free{m}}
-}{
-\epsffile[0 0 295 295]{../ps/3doptcrd.ps}
-}
-%
-Space curves may be displayed as tubes with polygonal cross sections.
-Two options, {\tt tubeRadius} and {\tt tubePoints},  control the size and
-shape of this cross section.
-%
-\psXtc{
-The {\tt tubeRadius} option specifies the radius of the tube that
-encircles the specified space curve.
-}{
-\graphpaste{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
-}{
-\epsffile[0 0 295 295]{../ps/3doptrad.ps}
-}
-%
-%
-\psXtc{
-The {\tt tubePoints} option specifies the number of vertices
-defining the polygon that is used to create a tube around the
-specified space curve.
-The larger this number is, the more cylindrical the tube becomes.
-}{
-\graphpaste{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
-}{
-\epsffile[0 0 295 295]{../ps/3doptpts.ps}
-}
-%
-%
-%
-\psXtc{
-Options \axiomFunFrom{var1Steps}{DrawOption} and
-\axiomFunFrom{var2Steps}{DrawOption} specify the number of intervals into
-which the grid defining a surface plot is subdivided with respect to the
-first and second parameters of the surface function(s).
-}{
-\graphpaste{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
-}{
-\epsffile[0 0 295 295]{../ps/3doptvb.ps}
-}
-%
-The {\tt space} option
-of a \axiomFun{draw} command lets you build multiple graphs in three space.
-To use this option, first create an empty three-space object,
-then use the {\tt space} option thereafter.
-There is no restriction as to the number or kinds
-of graphs that can be combined this way.
-\xtc{
-Create an empty three-space object.
-}{
-\spadpaste{s := create3Space()\$(ThreeSpace DFLOAT) \bound{s}}
-}
-%
-%
-\xtc{
-}{
-\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
-}
-\psXtc{
-Add a graph to this three-space object.
-The new graph destructively inserts the graph
-into \axiom{s}.
-}{
-\graphpaste{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s) \free{s m}}
-}{
-\epsffile[0 0 295 295]{../ps/3dmult1a.ps}
-}
-%
-%
-\psXtc{
-Add a second graph to \axiom{s}.
-}{
-\graphpaste{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s) \free{s} \bound{v}}
-}{
-\epsffile[0 0 295 295]{../ps/3dmult1b.ps}
-}
-%
-A three-space object can also be obtained from an existing \threedim{} viewport
-using the \axiomFunFrom{subspace}{ThreeSpace} command.
-You can then use \axiomFun{makeViewport3D} to create a viewport window.
-\xtc{
-Assign to \axiom{subsp} the three-space object in viewport \axiom{v}.
-}{
-\spadpaste{subsp := subspace v \free{v} \bound{su}}
-}
-\xtc{
-Reset the space component of \axiom{v} to the value of \axiom{subsp}.
-}{
-\spadpaste{subspace(v, subsp) \bound{sp} \free{su}}
-}
-\noOutputXtc{
-Create a viewport window from a three-space object.
-}{
-\graphpaste{makeViewport3D(subsp,"Graphs") \free{sp}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphMakeObjectTitle}{The makeObject Command}
-\newcommand{\ugGraphMakeObjectNumber}{7.2.5.}
-
-@
-\subsection{7.2.5. The makeObject Command}
-\label{ugGraphMakeObjectPage}
-\index{pages!ugGraphMakeObjectPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphMakeObjectPage}
-\index{ugGraphMakeObjectPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphMakeObjectPage}{7.2.5. The makeObject Command}
-\beginscroll
-
-An alternate way to create multiple graphs is to use
-\axiomFun{makeObject}.
-The \axiomFun{makeObject} command is similar to the \axiomFun{draw}
-command, except that it returns a three-space object rather than a
-\axiomType{ThreeDimensionalViewport}.
-In fact, \axiomFun{makeObject} is called by the \axiomFun{draw}
-command to create the \axiomType{ThreeSpace} then
-\axiomFunFrom{makeViewport3D}{ThreeDimensionalViewport} to create a
-viewport window.
-
-\xtc{
-}{
-\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1 \bound{m}}
-}
-\noOutputXtc{
-Do the last example a new way.
-First use \axiomFun{makeObject} to
-create a three-space object \axiom{sph}.
-}{
-\spadpaste{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph}\free{m}}
-}
-\noOutputXtc{
-Add a second object to \axiom{sph}.
-}{
-\spadpaste{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25) \free{sph}\bound{v1}}
-}
-\noOutputXtc{
-Create and display a viewport
-containing \axiom{sph}.
-}{
-\graphpaste{makeViewport3D(sph,"Multiple Objects") \free{v1}}
-}
-
-Note that an undefined \axiomType{ThreeSpace} parameter declared in a
-\axiomFun{makeObject} or \axiomFun{draw} command results in an error.
-Use the \axiomFunFrom{create3Space}{ThreeSpace} function to define a
-\axiomType{ThreeSpace}, or obtain a \axiomType{ThreeSpace} that has been
-previously generated before including it in a command line.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDBuildTitle}{Building Three-Dimensional Objects From Primitives}
-\newcommand{\ugGraphThreeDBuildNumber}{7.2.6.}
-
-@
-\subsection{7.2.6. Building Three-Dimensional Objects From Primitives}
-\label{ugGraphThreeDBuildPage}
-\index{pages!ugGraphThreeDBuildPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDBuildPage}
-\index{ugGraphThreeDBuildPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDBuildPage}
-{7.2.6. Building Three-Dimensional Objects From Primitives}
-\beginscroll
-
-Rather than using the \axiomFun{draw} and \axiomFun{makeObject} commands,
-you can create \threedim{} graphs from primitives.
-Operation \axiomFunFrom{create3Space}{ThreeSpace} creates a
-three-space object to which points, curves and polygons
-can be added using the operations from the \axiomType{ThreeSpace}
-domain.
-The resulting object can then be displayed in a viewport using
-\axiomFunFrom{makeViewport3D}{ThreeDimensionalViewport}.
-
-\xtc{
-Create the empty three-space object \axiom{space}.
-}{
-\spadpaste{space := create3Space()\$(ThreeSpace DFLOAT) \bound{space}}
-}
-
-Objects can be sent to this \axiom{space} using the operations
-exported by the \axiomType{ThreeSpace} domain.
-The following examples place curves into \axiom{space}.
-
-\xtc{
-Add these eight curves to the space.
-}{
-\spadpaste{closedCurve(space,[[0,30,20], [0,30,30], [0,40,30], [0,40,100], [0,30,100],[0,30,110], [0,60,110], [0,60,100], [0,50,100], [0,50,30], [0,60,30], [0,60,20]]) \bound{curve1} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[80,0,30], [80,0,100], [70,0,110], [40,0,110], [30,0,100], [30,0,90], [40,0,90], [40,0,95], [45,0,100], [65,0,100], [70,0,95], [70,0,35]]) \bound{curve2} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[70,0,35], [65,0,30], [45,0,30], [40,0,35], [40,0,60], [50,0,60], [50,0,70], [30,0,70], [30,0,30], [40,0,20], [70,0,20], [80,0,30]]) \bound{curve3} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[0,70,20], [0,70,110], [0,110,110], [0,120,100], [0,120,70], [0,115,65], [0,120,60], [0,120,30], [0,110,20], [0,80,20], [0,80,30], [0,80,20]]) \bound{curve4} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[0,105,30], [0,110,35], [0,110,55], [0,105,60], [0,80,60], [0,80,70], [0,105,70], [0,110,75], [0,110,95], [0,105,100], [0,80,100], [0,80,20], [0,80,30]]) \bound{curve5} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[140,0,20], [140,0,110], [130,0,110], [90,0,20], [101,0,20],[114,0,50], [130,0,50], [130,0,60], [119,0,60], [130,0,85], [130,0,20]]) \bound{curve6} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[0,140,20], [0,140,110], [0,150,110], [0,170,50], [0,190,110], [0,200,110], [0,200,20], [0,190,20], [0,190,75], [0,175,35], [0,165,35],[0,150,75], [0,150,20]]) \bound{curve7} \free{space}}
-}
-\xtc{
-}{
-\spadpaste{closedCurve(space,[[200,0,20], [200,0,110], [189,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [161,0,20], [190,0,85], [190,0,20]]) \bound{curve8} \free{space}}
-}
-\psXtc{
-Create and display the viewport using \axiomFun{makeViewport3D}.
-Options may also be given but here are displayed as a list with values
-enclosed in parentheses.
-}{
-\graphpaste{makeViewport3D(space, title == "Letters") \free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8}}
-}{
-\epsffile[0 0 295 295]{../ps/3dbuilda.ps}
-}
-
-\subsubsection{Cube Example}
-
-As a second example of the use of primitives, we generate a cube using a
-polygon mesh.
-It is important to use a consistent orientation of the polygons for
-correct generation of \threedim{} objects.
-
-\xtc{
-Again start with an empty three-space object.
-}{
-\spadpaste{spaceC := create3Space()\$(ThreeSpace DFLOAT) \bound{spaceC}}
-}
-\xtc{
-For convenience,
-give \axiomType{DoubleFloat} values \axiom{+1} and \axiom{-1} names.
-}{
-\spadpaste{x: DFLOAT := 1 \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{y: DFLOAT := -1 \bound{y}}
-}
-\xtc{
-Define the vertices of the cube.
-}{
-\spadpaste{a := point [x,x,y,1::DFLOAT]\$(Point DFLOAT) \bound{a} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{b := point [y,x,y,4::DFLOAT]\$(Point DFLOAT) \bound{b} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{c := point [y,x,x,8::DFLOAT]\$(Point DFLOAT) \bound{c} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{d := point [x,x,x,12::DFLOAT]\$(Point DFLOAT) \bound{d} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{e := point [x,y,y,16::DFLOAT]\$(Point DFLOAT) \bound{e} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{f := point [y,y,y,20::DFLOAT]\$(Point DFLOAT) \bound{f} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{g := point [y,y,x,24::DFLOAT]\$(Point DFLOAT) \bound{g} \free{x y}}
-}
-\xtc{
-}{
-\spadpaste{h := point [x,y,x,27::DFLOAT]\$(Point DFLOAT) \bound{h} \free{x y}}
-}
-\xtc{
-Add the faces of the cube as polygons to the space using a
-consistent orientation.
-}{
-\spadpaste{polygon(spaceC,[d,c,g,h]) \free{d c g h spaceC} \bound{pol1}}
-}
-\xtc{
-}{
-\spadpaste{polygon(spaceC,[d,h,e,a]) \free{d h e a spaceC} \bound{pol2}}
-}
-\xtc{
-}{
-\spadpaste{polygon(spaceC,[c,d,a,b]) \free{c d a b spaceC} \bound{pol3}}
-}
-\xtc{
-}{
-\spadpaste{polygon(spaceC,[g,c,b,f]) \free{g c b f spaceC} \bound{pol4}}
-}
-\xtc{
-}{
-\spadpaste{polygon(spaceC,[h,g,f,e]) \free{h g f e spaceC} \bound{pol5}}
-}
-\xtc{
-}{
-\spadpaste{polygon(spaceC,[e,f,b,a]) \free{e f b a spaceC} \bound{pol6}}
-}
-\psXtc{
-Create and display the viewport.
-}{
-\graphpaste{makeViewport3D(spaceC, title == "Cube") \free{pol1 pol2 pol3 pol4 pol5 pol6}}
-}{
-\epsffile[0 0 295 295]{../ps/3dbuildb.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphCoordTitle}{Coordinate System Transformations}
-\newcommand{\ugGraphCoordNumber}{7.2.7.}
-
-@
-\subsection{7.2.7. Coordinate System Transformations}
-\label{ugGraphCoordPage}
-\index{pages!ugGraphCoordPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphCoordPage}
-\index{ugGraphCoordPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphCoordPage}{7.2.7. Coordinate System Transformations}
-\beginscroll
-
-The \axiomType{CoordinateSystems} package provides coordinate transformation
-functions that map a given data point from the coordinate system specified
-into the Cartesian coordinate system.
-The default coordinate system, given a triplet \axiom{(f(u,v), u, v)}, assumes
-that \axiom{z = f(u, v)}, \axiom{x = u} and \axiom{y = v},
-that is, reads the coordinates in \axiom{(z, x, y)} order.
-
-\xtc{
-}{
-\spadpaste{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2 \bound{m}}
-}
-%
-\psXtc{
-Graph plotted in default coordinate system.
-}{
-\graphpaste{draw(m,0..3,0..5) \free{m}}
-}{
-\epsffile[0 0 295 295]{../ps/defcoord.ps}
-}
-
-The \axiom{z} coordinate comes first since the first argument of
-the \axiomFun{draw} command gives its values.
-In general, the coordinate systems Axiom provides, or any
-that you make up, must provide a map to an \axiom{(x, y, z)} triplet in
-order to be compatible with the
-\axiomFunFrom{coordinates}{DrawOption} \axiomType{DrawOption}.
-Here is an example.
-
-\xtc{
-Define the identity function.
-}{
-\spadpaste{cartesian(point:Point DFLOAT):Point DFLOAT == point \bound{cart}}
-}
-\psXtc{
-Pass \axiom{cartesian} as the \axiomFunFrom{coordinates}{DrawOption}
-parameter to the \axiomFun{draw} command.
-}{
-\graphpaste{draw(m,0..3,0..5,coordinates==cartesian) \free{m cart}}
-}{
-\epsffile[0 0 295 295]{../ps/cartcoord.ps}
-}
-%
-
-What happened?
-The option {\tt coordinates == cartesian} directs Axiom to
-treat the dependent variable \axiom{m} defined by
-\texht{$m=u^2$}{m=u**2} as the \axiom{x} coordinate.
-Thus the triplet of values \axiom{(m, u, v)} is transformed to
-coordinates \axiom{(x, y, z)} and so we get the graph of
-\texht{$x=y^2$}{x=y**2}.
-
-Here is another example.
-The \axiomFunFrom{cylindrical}{CoordinateSystems} transform takes
-input of the form \axiom{(w,u,v)}, interprets it in the order
-\texht{($r$,$\theta$,$z$)}{(\axiom{r}, \axiom{theta}, \axiom{z})}
-and maps it to the Cartesian coordinates
-\texht{$x=r\cos(\theta)$, $y=r\sin(\theta)$, $z=z$}
-{\axiom{x = r * cos(theta)}, \axiom{y = r * sin(theta)}, \axiom{z = z}}
-in which
-\texht{$r$}{\axiom{r}} is the radius,
-\texht{$\theta$}{\axiom{theta}} is the angle and
-\texht{$z$}{\axiom{z}} is the z-coordinate.
-\xtc{
-An example using the \axiomFunFrom{cylindrical}{CoordinateSystems}
-coordinates for the constant \axiom{r = 3}.
-}{
-\spadpaste{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3 \bound{f}}
-}
-\psXtc{
-Graph plotted in cylindrical coordinates.
-}{
-\graphpaste{draw(f,0..\%pi,0..6,coordinates==cylindrical) \free{f}}
-}{
-\epsffile[0 0 295 295]{../ps/cylcoord.ps}
-}
-
-Suppose you would like to specify \smath{z} as a function of
-\smath{r} and \texht{$\theta$}{\axiom{theta}} instead of just
-\smath{r}?
-Well, you still can use the \axiomFun{cylindrical} Axiom
-transformation but we have to reorder the triplet before
-passing it to the transformation.
-
-\xtc{
-First, let's create a point to
-work with and call it \axiom{pt} with some color \axiom{col}.
-}{
-\spadpaste{col := 5 \bound{c}}
-}
-\xtc{
-}{
-\spadpaste{pt := point[1,2,3,col]\$(Point DFLOAT) \free{c} \bound{pt}}
-}
-The reordering you want is
-\texht{$(z,r, \theta)$}{\axiom{(z,r,theta)}} to
-\texht{$(r, \theta,z)$}{\axiom{(r,theta,z)}}
-so that the first element is moved to the third element, while the second
-and third elements move forward and the color element does not change.
-\xtc{
-Define a function \userfun{reorder} to reorder the point elements.
-}{
-\spadpaste{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4] \bound{freo}}
-}
-\xtc{
-The function moves the second and third elements
-forward but the color does not change.
-}{
-\spadpaste{reorder pt \free{pt freo}}
-}
-\xtc{
-The function \userfun{newmap} converts our reordered version of
-the cylindrical coordinate system to the standard
-\texht{$(x,y,z)$}{\axiom{(x,y,z)}} Cartesian system.
-}{
-\spadpaste{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt) \free{freo} \bound{fnewmap}}
-}
-\xtc{
-}{
-\spadpaste{newmap pt \free{fnewmap pt} \bound{new}}
-}
-%
-\psXtc{
-Graph the same function \axiom{f} using the coordinate mapping of the function
-\axiom{newmap}, so it is now interpreted as
-\texht{$z=3$}{\axiom{z = 3}}:
-}{
-\graphpaste{draw(f,0..3,0..2*\%pi,coordinates==newmap) \free{f new}}
-}{
-\epsffile[0 0 295 295]{../ps/newmap.ps}
-}
-
-{\texht{\sloppy}{}
-The \axiomType{CoordinateSystems} package exports the following
-operations:
-\axiomFun{bipolar},
-\axiomFun{bipolarCylindrical},
-\axiomFun{cartesian},
-\axiomFun{conical},
-\axiomFun{cylindrical},
-\axiomFun{elliptic},
-\axiomFun{ellipticCylindrical},
-\axiomFun{oblateSpheroidal},
-\axiomFun{parabolic},
-\axiomFun{parabolicCylindrical},
-\axiomFun{paraboloidal},
-\axiomFun{polar},
-\axiomFun{prolateSpheroidal},
-\axiomFun{spherical}, and
-\axiomFun{toroidal}.
-Use \Browse{} or the \spadcmd{)show} system command
-to get more information.
-
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphClipTitle}{Three-Dimensional Clipping}
-\newcommand{\ugGraphClipNumber}{7.2.8.}
-
-@
-\subsection{7.2.8. Three-Dimensional Clipping}
-\label{ugGraphClipPage}
-\index{pages!ugGraphClipPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphClipPage}
-\index{ugGraphClipPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphClipPage}{7.2.8. Three-Dimensional Clipping}
-\beginscroll
-
-A \threedim{} graph can be explicitly clipped within the \axiomFun{draw}
-command by indicating a minimum and maximum threshold for the
-given function definition.
-These thresholds can be defined using the Axiom \axiomFun{min}
-and \axiomFun{max} functions.
-\xtc{
-}{
-\begin{spadsrc}[\bound{g}]
-gamma(x,y) ==
-  g := Gamma complex(x,y)
-  point [x, y, max( min(real g, 4), -4), argument g]
-\end{spadsrc}
-}
-\psXtc{
-Here is an example that clips
-the gamma function in order to eliminate the extreme divergence it creates.
-}{
-\graphpaste{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50) \free{g}}
-}{
-\epsffile[0 0 295 295]{../ps/clipgamma.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDControlTitle}{Three-Dimensional Control-Panel}
-\newcommand{\ugGraphThreeDControlNumber}{7.2.9.}
-
-@
-\subsection{7.2.9. Three-Dimensional Control-Panel}
-\label{ugGraphThreeDControlPage}
-\index{pages!ugGraphThreeDControlPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDControlPage}
-\index{ugGraphThreeDControlPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDControlPage}{7.2.9. Three-Dimensional Control-Panel}
-\beginscroll
-Once you have created a viewport, move your mouse to the viewport
-and click with your left mouse button.
-This displays a control-panel on the side of the viewport
-that is closest to where you clicked.
-
-
-\subsubsection{Transformations}
-
-We recommend you first select the {\bf Bounds} button while
-executing transformations since the bounding box displayed
-indicates the object's position as it changes.
-%
-\indent{0}
-\beginitems
-%
-\item[Rotate:]  A rotation transformation occurs by clicking the mouse
-within the {\bf Rotate} window in the upper left corner of the
-control-panel.
-The rotation is computed in spherical coordinates, using the
-horizontal mouse position to increment or decrement the value of
-the longitudinal angle \texht{$\theta$}{\axiom{theta}} within the
-range of 0 to \texht{2$\pi$}{2*pi} and the vertical mouse position
-to increment or decrement the value of the latitudinal angle
-\texht{$\phi$}{\axiom{phi}} within the range of \texht{-$\pi$}{pi}
-to \texht{$\pi$}{pi}.
-The active mode of rotation is displayed in green on a color
-monitor or in clear text on a black and white monitor, while the
-inactive mode is displayed in red for color display or a mottled
-pattern for black and white.
-%
-\indent{0}
-\beginitems
-%
-\item[origin:]  The {\bf origin} button indicates that the
-rotation is to occur with respect to the origin of the viewing space, that is
-indicated by the axes.
-%
-\item[object:]  The {\bf object} button indicates that the
-rotation is to occur with respect to the center of volume of the object,
-independent of the axes' origin position.
-\enditems
-\indent{0}
-%
-\item[Scale:]  A scaling transformation occurs by clicking the mouse
-within the {\bf Scale} window in the upper center of the
-control-panel, containing a zoom arrow.
-The axes along which the scaling is to occur are indicated by
-selecting the appropriate button above the zoom arrow window.
-The selected axes are displayed in green on a color monitor or in
-clear text on a black and white monitor, while the unselected axes
-are displayed in red for a color display or a mottled pattern for
-black and white.
-%
-\indent{0}
-\beginitems
-%
-\item[uniform:]  Uniform scaling along the {\tt x}, {\tt y}
-and {\tt z} axes occurs when all the axes buttons are selected.
-%
-\item[non-uniform:]  If any of the axes buttons are
-not selected, non-uniform scaling occurs, that is, scaling occurs only in the
-direction of the axes that are selected.
-\enditems
-\indent{0}
-%
-\item[Translate:]  Translation occurs by indicating with the mouse in the
-{\bf Translate} window the direction you want the graph to move.
-This window is located in the upper right corner of the
-control-panel and contains a potentiometer with crossed arrows
-pointing up, down, left and right.
-Along the top of the {\bf Translate} window are three buttons
-({\bf XY},
-{\bf XZ}, and {\bf YZ}) indicating the three orthographic projection planes.
-Each orientates the group as a view into that plane.
-Any translation of the graph occurs only along this plane.
-\enditems
-\indent{0}
-
-\subsubsection{Messages}
-
-The window directly below the potentiometer windows for transformations is
-used to display system messages relating to the viewport, the control-panel
-and the current graph displaying status.
-
-\subsubsection{Colormap}
-
-Directly below the message window is the colormap range indicator
-window.
-The Axiom Colormap shows a sampling of the spectrum from
-which hues can be drawn to represent the colors of a surface.
-The Colormap is composed of five shades for each of the hues along
-this spectrum.
-By moving the markers above and below the Colormap, the range of
-hues that are used to color the existing surface are set.
-The bottom marker shows the hue for the low end of the color range
-and the top marker shows the hue for the upper end of the range.
-Setting the bottom and top markers at the same hue results in
-monochromatic smooth shading of the graph when {\bf Smooth} mode is selected.
-At each end of the Colormap are {\bf +} and {\bf -} buttons.
-When clicked on, these increment or decrement the top or bottom
-marker.
-
-\subsubsection{Buttons}
-
-Below the Colormap window and to the left are located various
-buttons that determine the characteristics of a graph.
-The buttons along the bottom and right hand side all have special
-meanings; the remaining buttons in the first row indicate the mode
-or style used to display the graph.
-The second row are toggles that turn on or off a property of the
-graph.
-On a color monitor, the property is on if green (clear text, on a
-monochrome monitor) and off if red (mottled pattern, on a
-monochrome monitor).
-Here is a list of their functions.
-%
-\indent{0}
-\beginitems
-%
-\item[Wire] displays surface and tube plots as a
-wireframe image in a single color (blue) with no hidden surfaces removed,
-or displays space curve plots in colors based upon their parametric variables.
-This is the fastest mode for displaying a graph.
-This is very useful when you
-want to find a good orientation of your graph.
-%
-\item[Solid] displays the graph with hidden
-surfaces removed, drawing each polygon beginning with the furthest
-from the viewer.
-The edges of the polygons are displayed in the hues specified by
-the range in the Colormap window.
-%
-\item[Shade] displays the graph with hidden
-surfaces removed and with the polygons shaded, drawing each
-polygon beginning with the furthest from the viewer.
-Polygons are shaded in the hues specified by the range in the
-Colormap window using the Phong illumination model.
-%
-\item[Smooth] displays the graph using a
-renderer that computes the graph one line at a time.
-The location and color of the graph at each visible point on the
-screen are determined and displayed using the Phong illumination
-model.
-Smooth shading is done in one of two ways, depending on the range
-selected in the colormap window and the number of colors available
-from the hardware and/or window manager.
-When the top and bottom markers of the colormap range are set to
-different hues, the graph is rendered by dithering between the
-transitions in color hue.
-When the top and bottom markers of the colormap range are set to
-the same hue, the graph is rendered using the Phong smooth shading
-model.
-However, if enough colors cannot be allocated for this purpose,
-the renderer reverts to the color dithering method until a
-sufficient color supply is available.
-For this reason, it may not be possible to render multiple Phong
-smooth shaded graphs at the same time on some systems.
-%
-\item[Bounds] encloses the entire volume of the
-viewgraph within a bounding box, or removes the box if previously selected.
-The region that encloses the entire volume of the viewport graph is displayed.
-%
-\item[Axes] displays Cartesian
-coordinate axes of the space, or turns them off if previously selected.
-%
-\item[Outline] causes
-quadrilateral polygons forming the graph surface to be outlined in black when
-the graph is displayed in {\bf Shade} mode.
-%
-\item[BW] converts a color viewport to black and white, or vice-versa.
-When this button is selected the
-control-panel and viewport switch to an immutable colormap composed of a range
-of grey scale patterns or tiles that are used wherever shading is necessary.
-%
-\item[Light] takes you to a control-panel described below.
-%
-\item[ViewVolume] takes you to another control-panel as described below.
-%
-\item[Save] creates a menu of the possible file types that can
-be written using the control-panel.
-The {\bf Exit} button leaves the save menu.
-The {\bf Pixmap} button writes an Axiom pixmap of
-the current viewport contents.  The file is called {\bf axiom3D.pixmap} and is
-located in the directory from which Axiom or {\bf viewalone} was
-started.
-The {\bf PS} button writes the current viewport contents to
-PostScript output rather than to the viewport window.
-By default the file is called {\bf axiom3D.ps}; however, if a file
-name is specified in the user's {\bf .Xdefaults} file it is
-used.
-The file is placed in the directory from which the Axiom or
-{\bf viewalone} session was begun.
-See also the \axiomFunFrom{write}{ThreeDimensionalViewport}
-function.
-%
-\item[Reset] returns the object transformation
-characteristics back to their initial states.
-%
-\item[Hide] causes the control-panel for the
-corresponding viewport to disappear from the screen.
-%
-\item[Quit]  queries whether the current viewport
-session should be terminated.
-\enditems
-\indent{0}
-
-\subsubsection{Light}
-
-%
-%>>>\begin{texonly}
-%
-%>>>\begin{figure}[htbp]
-%>>>\begin{picture}(183,252)(-125,0)
-%>>>\special{psfile=../ps/3dlight.ps}
-%>>>\end{picture}
-%>>>\caption{Three-Dimensional Lighting Panel.}
-%>>>\end{figure}
-%>>>\end{texonly}
-%
-
-The {\bf Light} button changes the control-panel into the
-{\bf Lighting Control-Panel}.  At the top of this panel, the three axes
-are shown with the same orientation as the object.  A light vector from
-the origin of the axes shows the current position of the light source
-relative to the object.  At the bottom of the panel is an {\bf Abort}
-button that cancels any changes to the lighting that were made, and a
-{\bf Return} button that carries out the current set of lighting changes
-on the graph.
-%
-\indent{0}
-\beginitems
-%
-\item[XY:]  The {\bf XY} lighting axes window is below the
-{\bf Lighting Control-Panel} title and to the left.
-This changes the light vector within the {\bf XY} view plane.
-%
-\item[Z:]  The {\bf Z} lighting axis window is below the
-{\bf Lighting Control-Panel} title and in the center.  This
-changes the {\bf Z}
-location of the light vector.
-%
-\item[Intensity:]
-Below the {\bf Lighting Control-Panel} title
-and to the right is the light intensity meter.
-Moving the intensity indicator down decreases the amount of
-light emitted from the light source.
-When the indicator is at the top of the meter the light source is
-emitting at 100\% intensity.
-At the bottom of the meter the light source is emitting at a level
-slightly above ambient lighting.
-\enditems
-\indent{0}
-
-\subsubsection{View Volume}
-
-The {\bf View Volume} button changes the control-panel into
-the {\bf Viewing Volume Panel}.
-At the bottom of the viewing panel is an {\bf Abort} button that
-cancels any changes to the viewing volume that were made and a
-{\it Return} button that carries out the current set of
-viewing changes to the graph.
-%
-%>>>\begin{texonly}
-%
-%>>>\begin{figure}[htbp]
-%>>>\begin{picture}(183,252)(-125,0)
-%>>>\special{psfile=../ps/3dvolume.ps}
-%>>>\end{picture}
-%>>>\caption{Three-Dimensional Volume Panel.}
-%>>>\end{figure}
-%>>>\end{texonly}
-%
-\indent{0}
-\beginitems
-%
-\item[Eye Reference:]  At the top of this panel is the
-{\bf Eye Reference} window.
-It shows a planar projection of the viewing pyramid from the eye
-of the viewer relative to the location of the object.
-This has a bounding region represented by the rectangle on the
-left.
-Below the object rectangle is the {\bf Hither} window.
-By moving the slider in this window the hither clipping plane sets
-the front of the view volume.
-As a result of this depth clipping all points of the object closer
-to the eye than this hither plane are not shown.
-The {\bf Eye Distance} slider to the right of the {\bf Hither}
-slider is used to change the degree of perspective in the image.
-%
-\item[Clip Volume:]  The {\bf Clip Volume} window is at the
-bottom of the {\bf Viewing Volume Panel}.
-On the right is a {\bf Settings} menu.
-In this menu are buttons to select viewing attributes.
-Selecting the {\bf Perspective} button computes the image using
-perspective projection.
-The {\bf Show Region} button indicates whether the clipping region
-of the
-volume is to be drawn in the viewport and the {\bf Clipping On}
-button shows whether the view volume clipping is to be in effect
-when the image
-is drawn.
-The left side of the {\bf Clip Volume} window shows the clipping
-boundary of the graph.
-Moving the knobs along the {\bf X}, {\bf Y}, and {\bf Z} sliders
-adjusts the volume of the clipping region accordingly.
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug07.ht>>=
-\newcommand{\ugGraphThreeDopsTitle}{Operations for Three-Dimensional Graphics}
-\newcommand{\ugGraphThreeDopsNumber}{7.2.10.}
-
-@
-\subsection{7.2.10. Operations for Three-Dimensional Graphics}
-\label{ugGraphThreeDopsPage}
-\index{pages!ugGraphThreeDopsPage!ug07.ht}
-\index{ug07.ht!pages!ugGraphThreeDopsPage}
-\index{ugGraphThreeDopsPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugGraphThreeDopsPage}
-{7.2.10. Operations for Three-Dimensional Graphics}
-\beginscroll
-
-Here is a summary of useful Axiom operations for \threedim{}
-graphics.
-Each operation name is followed by a list of arguments.
-Each argument is written as a variable informally named according
-to the type of the argument (for example, {\it integer}).
-If appropriate, a default value for an argument is given in
-parentheses immediately following the name.
-
-%
-\texht{\bgroup\hbadness = 10001\sloppy}{}
-\indent{0}
-\beginitems
-%
-\item[\axiomFun{adaptive3D?}]\funArgs{}
-tests whether space curves are to be plotted
-according to the
-adaptive refinement algorithm.
-
-%
-\item[\axiomFun{axes}]\funArgs{viewport, string\argDef{"on"}}
-turns the axes on and off.
-
-%
-\item[\axiomFun{close}]\funArgs{viewport}
-closes the viewport.
-
-%
-\item[\axiomFun{colorDef}]\funArgs{viewport,
-\subscriptIt{color}{1}\argDef{1}, \subscriptIt{color}{2}\argDef{27}}
-sets the colormap
-range to be from
-\subscriptIt{color}{1} to \subscriptIt{color}{2}.
-
-%
-\item[\axiomFun{controlPanel}]\funArgs{viewport, string\argDef{"off"}}
-declares whether the
-control-panel for the viewport is to be displayed or not.
-
-%
-\item[\axiomFun{diagonals}]\funArgs{viewport, string\argDef{"off"}}
-declares whether the
-polygon outline includes the diagonals or not.
-
-%
-\item[\axiomFun{drawStyle}]\funArgs{viewport, style}
-selects which of four drawing styles
-are used: {\tt "wireMesh", "solid", "shade",} or {\tt "smooth".}
-
-%
-\item[\axiomFun{eyeDistance}]\funArgs{viewport,float\argDef{500}}
-sets the distance of the eye from the origin of the object
-for use in the \axiomFunFrom{perspective}{ThreeDimensionalViewport}.
-
-%
-\item[\axiomFun{key}]\funArgs{viewport}
-returns the operating
-system process ID number for the viewport.
-
-%
-\item[\axiomFun{lighting}]\funArgs{viewport,
-\subscriptText{float}{x}\argDef{-0.5},
-\subscriptText{float}{y}\argDef{0.5}, \subscriptText{float}{z}\argDef{0.5}}
-sets the Cartesian
-coordinates of the light source.
-
-%
-\item[\axiomFun{modifyPointData}]\funArgs{viewport,integer,point}
-replaces the coordinates of the point with
-the index {\it integer} with {\it point}.
-
-%
-\item[\axiomFun{move}]\funArgs{viewport,
-\subscriptText{integer}{x}\argDef{viewPosDefault},
-\subscriptText{integer}{y}\argDef{viewPosDefault}}
-moves the upper
-left-hand corner of the viewport to screen position
-\allowbreak
-({\small \subscriptText{integer}{x}, \subscriptText{integer}{y}}).
-
-%
-\item[\axiomFun{options}]\funArgs{viewport}
-returns a list of all current draw options.
-
-%
-\item[\axiomFun{outlineRender}]\funArgs{viewport, string\argDef{"off"}}
-turns polygon outlining
-off or on when drawing in {\tt "shade"} mode.
-
-%
-\item[\axiomFun{perspective}]\funArgs{viewport, string\argDef{"on"}}
-turns perspective
-viewing on and off.
-
-%
-\item[\axiomFun{reset}]\funArgs{viewport}
-resets the attributes of a viewport to their
-initial settings.
-
-%
-\item[\axiomFun{resize}]\funArgs{viewport,
-\subscriptText{integer}{width} \argDef{viewSizeDefault},
-\subscriptText{integer}{height} \argDef{viewSizeDefault}}
-resets the width and height
-values for a viewport.
-
-%
-\item[\axiomFun{rotate}]\funArgs{viewport,
-\subscriptText{number}{\texht{$\theta$}{\axiom{theta}}}\argDef{viewThetaDefault},
-\subscriptText{number}{\texht{$\phi$}{\axiom{phi}}}\argDef{viewPhiDefault}}
-rotates the viewport by rotation angles for longitude
-({\it \texht{$\theta$}{\axiom{theta}}}) and
-latitude ({\it \texht{$\phi$}{\axiom{phi}}}).
-Angles designate radians if given as floats, or degrees if given
-as integers.
-
-%
-\item[\axiomFun{setAdaptive3D}]\funArgs{boolean\argDef{true}}
-sets whether space curves are to be plotted
-according to the adaptive
-refinement algorithm.
-
-%
-\item[\axiomFun{setMaxPoints3D}]\funArgs{integer\argDef{1000}}
- sets the default maximum number of possible
-points to be used when constructing a \threedim{} space curve.
-
-%
-\item[\axiomFun{setMinPoints3D}]\funArgs{integer\argDef{49}}
-sets the default minimum number of possible
-points to be used when constructing a \threedim{} space curve.
-
-%
-\item[\axiomFun{setScreenResolution3D}]\funArgs{integer\argDef{500}}
-sets the default screen resolution constant
-used in setting the computation limit of adaptively
-generated \threedim{} space curve plots.
-
-%
-\item[\axiomFun{showRegion}]\funArgs{viewport, string\argDef{"off"}}
-declares whether the bounding
-box of a graph is shown or not.
-%
-\item[\axiomFun{subspace}]\funArgs{viewport}
-returns the space component.
-%
-\item[\axiomFun{subspace}]\funArgs{viewport, subspace}
-resets the space component
-to {\it subspace}.
-
-%
-\item[\axiomFun{title}]\funArgs{viewport, string}
-gives the viewport the
-title {\it string}.
-
-%
-\item[\axiomFun{translate}]\funArgs{viewport,
-\subscriptText{float}{x}\argDef{viewDeltaXDefault},
-\subscriptText{float}{y}\argDef{viewDeltaYDefault}}
-translates
-the object horizontally and vertically relative to the center of the viewport.
-
-%
-\item[\axiomFun{intensity}]\funArgs{viewport,float\argDef{1.0}}
-resets the intensity {\it I} of the light source,
-\texht{$0 \le I \le 1.$}{{\it 0 \le I \le 1}.}
-
-%
-\item[\axiomFun{tubePointsDefault}]\funArgs{\optArg{integer\argDef{6}}}
-sets or indicates the default number of
-vertices defining the polygon that is used to create a tube around
-a space curve.
-
-%
-\item[\axiomFun{tubeRadiusDefault}]\funArgs{\optArg{float\argDef{0.5}}}
-sets or indicates the default radius of
-the tube that encircles a space curve.
-
-%
-\item[\axiomFun{var1StepsDefault}]\funArgs{\optArg{integer\argDef{27}}}
-sets or indicates the default number of
-increments into which the grid defining a surface plot is subdivided with
-respect to the first parameter declared in the surface function.
-
-%
-\item[\axiomFun{var2StepsDefault}]\funArgs{\optArg{integer\argDef{27}}}
-sets or indicates the default number of
-increments into which the grid defining a surface plot is subdivided with
-respect to the second parameter declared in the surface function.
-
-%
-\item[\axiomFun{viewDefaults}]\funArgs{{\tt [}\subscriptText{integer}{%
-point}, \subscriptText{integer}{line}, \subscriptText{integer}{axes},
-\subscriptText{integer}{units}, \subscriptText{float}{point},
-\allowbreak\subscriptText{list}{position},
-\subscriptText{list}{size}{\tt ]}}
-resets the default settings for the
-point color, line color, axes color, units color, point size,
-viewport upper left-hand corner position, and the viewport size.
-
-%
-\item[\axiomFun{viewDeltaXDefault}]\funArgs{\optArg{float\argDef{0}}}
-resets the default horizontal offset
-from the center of the viewport, or returns the current default offset if no argument is given.
-
-%
-\item[\axiomFun{viewDeltaYDefault}]\funArgs{\optArg{float\argDef{0}}}
-resets the default vertical offset
-from the center of the viewport, or returns the current default offset if no argument is given.
-
-%
-\item[\axiomFun{viewPhiDefault}]\funArgs{\optArg{float\argDef{-\texht{$\pi$}{{\it pi}}/4}}}
-resets the default latitudinal view angle,
-or returns the current default angle if no argument is given.
-\texht{$\phi$}{{\it phi}} is set to this value.
-
-%
-\item[\axiomFun{viewpoint}]\funArgs{viewport, \subscriptText{float}{x},
-\subscriptText{float}{y}, \subscriptText{float}{z}}
-sets the viewing position in Cartesian coordinates.
-
-%
-\item[\axiomFun{viewpoint}]\funArgs{viewport,
-\subscriptText{float}{\texht{$\theta$}{\axiom{theta}}},
-\subscriptText{Float}{\texht{$\phi$}{\axiom{phi}}}}
-sets the viewing position in spherical coordinates.
-
-%
-\item[\axiomFun{viewpoint}]\funArgs{viewport,
-\subscriptText{Float}{\texht{$\theta$}{\axiom{theta}}},
-\subscriptText{Float}{\texht{$\phi$}{\axiom{phi}}},
-\subscriptText{Float}{scaleFactor},
-\subscriptText{Float}{xOffset}, \subscriptText{Float}{yOffset}}
-sets the viewing position in spherical coordinates,
-the scale factor, and offsets.
-\texht{$\theta$}{{\it theta}} (longitude) and
-\texht{$\phi$}{{\it phi}} (latitude) are in radians.
-
-%
-\item[\axiomFun{viewPosDefault}]\funArgs{\optArg{list\argDef{[0,0]}}}
-sets or indicates the position of the upper
-left-hand corner of a \twodim{} viewport, relative to the display root
-window (the upper left-hand corner of the display is \axiom{[0, 0]}).
-
-%
-\item[\axiomFun{viewSizeDefault}]\funArgs{\optArg{list\argDef{[400,400]}}}
-sets or indicates the width and height dimensions
-of a viewport.
-
-%
-\item[\axiomFun{viewThetaDefault}]\funArgs{\optArg{float\argDef{\texht{$\pi$}{{\it pi}}/4}}}
-resets the default longitudinal view angle,
-or returns the current default angle if no argument is given.
-When a parameter is specified, the default longitudinal view angle
-\texht{$\theta$}{{\it theta}} is set to this value.
-
-%
-\item[\axiomFun{viewWriteAvailable}]\funArgs{\optArg{list\argDef{["pixmap",
-"bitmap", "postscript", "image"}}}
-indicates the possible file types
-that can be created with the \axiomFunFrom{write}{ThreeDimensionalViewport} function.
-
-%
-\item[\axiomFun{viewWriteDefault}]\funArgs{\optArg{list\argDef{[]}}}
-sets or indicates the default types of files
-that are created in addition to the {\bf data} file when a
-\axiomFunFrom{write}{ThreeDimensionalViewport} command
-is executed on a viewport.
-
-%
-\item[\axiomFun{viewScaleDefault}]\funArgs{\optArg{float}}
-sets the default scaling factor, or returns
-the current factor if no argument is given.
-
-%
-\item[\axiomFun{write}]\funArgs{viewport, directory, \optArg{option}}
-writes the file {\bf data} for {\it viewport}
-in the directory {\it directory}.
-An optional third argument specifies a file type (one of {\tt
-pixmap}, {\tt bitmap}, {\tt postscript}, or {\tt image}), or a
-list of file types.
-An additional file is written for each file type listed.
-
-%
-\item[\axiomFun{scale}]\funArgs{viewport, float\argDef{2.5}}
-specifies the scaling factor.
-\enditems
-\indent{0}
-\texht{\egroup}{}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug07.ht>>=
-\newcommand{\ugXdefaultsTitle}{Customization using .Xdefaults}
-\newcommand{\ugXdefaultsNumber}{7.2.11.}
-
-@
-\subsection{7.2.11. Customization using .Xdefaults}
-\label{ugXdefaultsPage}
-\index{pages!ugXdefaultsPage!ug07.ht}
-\index{ug07.ht!pages!ugXdefaultsPage}
-\index{ugXdefaultsPage!ug07.ht!pages}
-<<ug07.ht>>=
-\begin{page}{ugXdefaultsPage}{7.2.11. Customization using .Xdefaults}
-\beginscroll
-
-Both the \twodim{} and \threedim{} drawing facilities consult
-the {\bf .Xdefaults} file for various defaults.
-The list of defaults that are recognized by the graphing routines
-is discussed in this section.
-These defaults are preceded by {\tt Axiom.3D.}
-for \threedim{} viewport defaults, {\tt Axiom.2D.}
-for \twodim{} viewport defaults, or {\tt Axiom*} (no dot) for
-those defaults that are acceptable to either viewport type.
-
-%
-\indent{0}
-\beginitems
-%
-\item[{\tt Axiom*buttonFont:\ \it font}] \ \newline
-This indicates which
-font type is used for the button text on the control-panel.
-\xdefault{Rom11}
-%
-\item[{\tt Axiom.2D.graphFont:\ \it font}] \quad (2D only) \newline
-This indicates
-which font type is used for displaying the graph numbers and
-slots in the {\bf Graphs} section of the \twodim{} control-panel.
-\xdefault{Rom22}
-%
-\item[{\tt Axiom.3D.headerFont:\ \it font}] \ \newline
-This indicates which
-font type is used for the axes labels and potentiometer
-header names on \threedim{} viewport windows.
-This is also used for \twodim{} control-panels for indicating
-which font type is used for potentionmeter header names and
-multiple graph title headers.
-%for example, {\tt Axiom.2D.headerFont: 8x13}.
-\xdefault{Itl14}
-%
-\item[{\tt Axiom*inverse:\ \it switch}] \ \newline
-This indicates whether the
-background color is to be inverted from white to black.
-If {\tt on}, the graph viewports use black as the background
-color.
-If {\tt off} or no declaration is made, the graph viewports use a
-white background.
-\xdefault{off}
-%
-\item[{\tt Axiom.3D.lightingFont:\ \it font}] \quad (3D only) \newline
-This indicates which font type is used for the {\bf x},
-{\bf y}, and {\bf z} labels of the two lighting axes potentiometers, and for
-the {\bf Intensity} title on the lighting control-panel.
-\xdefault{Rom10}
-%
-\item[{\tt Axiom.2D.messageFont, Axiom.3D.messageFont:\ \it font}] \ \newline
-These indicate the font type
-to be used for the text in the control-panel message window.
-\xdefault{Rom14}
-%
-\item[{\tt Axiom*monochrome:\ \it switch}] \ \newline
-This indicates whether the
-graph viewports are to be displayed as if the monitor is black and
-white, that is, a 1 bit plane.
-If {\tt on} is specified, the viewport display is black and white.
-If {\tt off} is specified, or no declaration for this default is
-given, the viewports are displayed in the normal fashion for the
-monitor in use.
-\xdefault{off}
-%
-\item[{\tt Axiom.2D.postScript:\ \it filename}] \ \newline
-This specifies
-the name of the file that is generated when a 2D PostScript graph
-is saved.
-\xdefault{axiom2D.ps}
-%
-\item[{\tt Axiom.3D.postScript:\ \it filename}] \ \newline
-This specifies
-the name of the file that is generated when a 3D PostScript graph
-is saved.
-\xdefault{axiom3D.ps}
-%
-\item[{\tt Axiom*titleFont \it font}] \ \newline
-This
-indicates which font type is used
-for the title text and, for \threedim{} graphs,
-in the lighting and viewing-volume control-panel windows.
-\xdefault{Rom14}
-%
-\item[{\tt Axiom.2D.unitFont:\ \it font}] \quad (2D only) \newline
-This indicates
-which font type is used for displaying the unit labels on
-\twodim{} viewport graphs.
-\xdefault{6x10}
-%
-\item[{\tt Axiom.3D.volumeFont:\ \it font}] \quad (3D only) \newline
-This indicates which font type is used for the {\bf x},
-{\bf y}, and {\bf z} labels of the clipping region sliders; for the
-{\bf Perspective}, {\bf Show Region}, and {\bf Clipping On} buttons under
-{\bf Settings}, and above the windows for the {\bf Hither} and
-{\bf Eye Distance} sliders in the {\bf Viewing Volume Panel} of the
-\threedim{} control-panel.
-\xdefault{Rom8}
-\enditems
-\indent{0}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug08.ht}
-<<ug08.ht>>=
-\newcommand{\ugProblemTitle}{Advanced Problem Solving}
-\newcommand{\ugProblemNumber}{8.}
-
-@
-\subsection{8. Advanced Problem Solving}
-\label{ugProblemPage}
-\begin{itemize}
-\item ugProblemNumericPage \ref{ugProblemNumericPage} on
-page~\pageref{ugProblemNumericPage}
-\item ugProblemFactorPage \ref{ugProblemFactorPage} on
-page~\pageref{ugProblemFactorPage}
-\item ugProblemSymRootPage \ref{ugProblemSymRootPage} on
-page~\pageref{ugProblemSymRootPage}
-\item ugProblemEigenPage \ref{ugProblemEigenPage} on
-page~\pageref{ugProblemEigenPage}
-\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
-page~\pageref{ugProblemLinPolEqnPage}
-\item ugProblemLimitsPage \ref{ugProblemLimitsPage} on
-page~\pageref{ugProblemLimitsPage}
-\item ugProblemLaplacePage \ref{ugProblemLaplacePage} on
-page~\pageref{ugProblemLaplacePage}
-\item ugProblemIntegrationPage \ref{ugProblemIntegrationPage} on
-page~\pageref{ugProblemIntegrationPage}
-\item ugProblemSeriesPage \ref{ugProblemSeriesPage} on
-page~\pageref{ugProblemSeriesPage}
-\item ugProblemDEQPage \ref{ugProblemDEQPage} on
-page~\pageref{ugProblemDEQPage}
-\item ugProblemFinitePage \ref{ugProblemFinitePage} on
-page~\pageref{ugProblemFinitePage}
-\item ugProblemIdealPage \ref{ugProblemIdealPage} on
-page~\pageref{ugProblemIdealPage}
-\item ugProblemGaloisPage \ref{ugProblemGaloisPage} on
-page~\pageref{ugProblemGaloisPage}
-\item ugProblemGeneticPage \ref{ugProblemGeneticPage} on
-page~\pageref{ugProblemGeneticPage}
-\end{itemize}
-\index{pages!ugProblemPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemPage}
-\index{ugProblemPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemPage}{8. Advanced Problem Solving}
-\beginscroll
-
-In this chapter we describe techniques useful in solving advanced problems
-with Axiom.
-
-\beginmenu
-    \menudownlink{{8.1. Numeric Functions}}{ugProblemNumericPage}
-    \menudownlink{{8.2. Polynomial Factorization}}{ugProblemFactorPage}
-    \menudownlink{{8.3. Manipulating Symbolic Roots of a Polynomial}}
-{ugProblemSymRootPage}
-    \menudownlink{{8.4. Computation of Eigenvalues and Eigenvectors}}
-{ugProblemEigenPage}
-    \menudownlink{{8.5. Solution of Linear and Polynomial Equations}}
-{ugProblemLinPolEqnPage}
-    \menudownlink{{8.6. Limits}}{ugProblemLimitsPage}
-    \menudownlink{{8.7. Laplace Transforms}}{ugProblemLaplacePage}
-    \menudownlink{{8.8. Integration}}{ugProblemIntegrationPage}
-    \menudownlink{{8.9. Working with Power Series}}{ugProblemSeriesPage}
-    \menudownlink{{8.10. Solution of Differential Equations}}{ugProblemDEQPage}
-    \menudownlink{{8.11. Finite Fields}}{ugProblemFinitePage}
-    \menudownlink{{8.12. Primary Decomposition of Ideals}}{ugProblemIdealPage}
-    \menudownlink{{8.13. Computation of Galois Groups}}{ugProblemGaloisPage}
-    \menudownlink{{8.14. Non-Associative Algebras and Modelling Genetic Laws}}
-{ugProblemGeneticPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemNumericTitle}{Numeric Functions}
-\newcommand{\ugProblemNumericNumber}{8.1.}
-
-@
-\subsection{8.1. Numeric Functions}
-\label{ugProblemNumericPage}
-\begin{itemize}
-\item ugIntroPage \ref{ugIntroPage} on
-page~\pageref{ugIntroPage}
-\item FloatXmpPage \ref{FloatXmpPage} on
-page~\pageref{FloatXmpPage}
-\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
-page~\pageref{DoubleFloatXmpPage}
-\end{itemize}
-\index{pages!ugProblemNumericPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemNumericPage}
-\index{ugProblemNumericPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemNumericPage}{8.1. Numeric Functions}
-\beginscroll
-%
-Axiom provides two basic floating-point types: \axiomType{Float} and
-\axiomType{DoubleFloat}.  This section describes how to use numerical
-operations defined on these types and the related complex types.
-%
-As we mentioned in \downlink{``\ugIntroTitle''}{ugIntroPage} in 
-Chapter \ugIntroNumber\ignore{ugIntro}, the \axiomType{Float} type 
-is a software
-implementation of floating-point numbers in which the exponent and the
-significand may have any number of digits.
-See \downlink{`Float'}{FloatXmpPage}\ignore{Float} for detailed 
-information about this domain.
-The \axiomType{DoubleFloat} (see 
-\downlink{`DoubleFloat'}{DoubleFloatXmpPage}\ignore{DoubleFloat}) 
-is usually a hardware
-implementation of floating point numbers, corresponding to machine double
-precision.
-The types \axiomType{Complex Float} and \axiomType{Complex DoubleFloat} are
-the corresponding software implementations of complex floating-point numbers.
-In this section the term {\it floating-point type}  means any of these
-four types.
-%
-The floating-point types implement the basic elementary functions.
-These include (where \axiomSyntax{\$} means
-\axiomType{DoubleFloat},
-\axiomType{Float},
-\axiomType{Complex DoubleFloat}, or
-\axiomType{Complex Float}):
-
-\noindent
-\axiomFun{exp},  \axiomFun{log}: \axiom{\$ -> \$} \newline
-\axiomFun{sin},  \axiomFun{cos}, \axiomFun{tan}, \axiomFun{cot}, \axiomFun{sec}, \axiomFun{csc}: \axiom{\$ -> \$} \newline
-\axiomFun{sin},  \axiomFun{cos}, \axiomFun{tan}, \axiomFun{cot}, \axiomFun{sec}, \axiomFun{csc}: \axiom{\$ -> \$}  \newline
-\axiomFun{asin}, \axiomFun{acos}, \axiomFun{atan}, \axiomFun{acot}, \axiomFun{asec}, \axiomFun{acsc}: \axiom{\$ -> \$}  \newline
-\axiomFun{sinh},  \axiomFun{cosh}, \axiomFun{tanh}, \axiomFun{coth}, \axiomFun{sech}, \axiomFun{csch}: \axiom{\$ -> \$}  \newline
-\axiomFun{asinh}, \axiomFun{acosh}, \axiomFun{atanh}, \axiomFun{acoth}, \axiomFun{asech}, \axiomFun{acsch}: \axiom{\$ -> \$}  \newline
-\axiomFun{pi}: \axiom{() -> \$}  \newline
-\axiomFun{sqrt}: \axiom{\$ -> \$} \newline
-\axiomFun{nthRoot}: \axiom{(\$, Integer) -> \$}  \newline
-\axiomFunFrom{**}{Float}: \axiom{(\$, Fraction Integer) -> \$} \newline
-\axiomFunFrom{**}{Float}: \axiom{(\$,\$) -> \$}  \newline
-
-The handling of roots depends on whether the floating-point type
-is real or complex: for the real floating-point types,
-\axiomType{DoubleFloat} and \axiomType{Float}, if a real root exists
-the one with the same sign as the radicand is returned; for the
-complex floating-point types, the principal value is returned.
-Also, for real floating-point types the inverse functions
-produce errors if the results are not real.
-This includes cases such as \axiom{asin(1.2)}, \axiom{log(-3.2)},
-\axiom{sqrt(-1.1)}.
-%
-\xtc{
-The default floating-point type is \axiomType{Float} so to evaluate
-functions using \axiomType{Float} or \axiomType{Complex Float}, just use
-normal decimal notation.
-}{
-\spadpaste{exp(3.1)}
-}
-\xtc{
-}{
-\spadpaste{exp(3.1 + 4.5 * \%i)}
-}
-\xtc{
-To evaluate functions using \axiomType{DoubleFloat}
-or \axiomType{Complex DoubleFloat},
-a declaration or conversion is required.
-}{
-\spadpaste{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
-}
-\xtc{
-}{
-\spadpaste{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
-}
-%
-A number of special functions are provided by the package
-\axiomType{DoubleFloatSpecialFunctions} for the machine-precision
-floating-point types.
-The special functions provided are listed below, where \axiom{F} stands for
-the types \axiomType{DoubleFloat} and \axiomType{Complex DoubleFloat}.
-The real versions of the functions yield an error if the result is not real.
-
-\noindent
-\axiomFun{Gamma}: \axiom{F -> F}\hfill\newline
-\axiom{Gamma(z)} is the Euler gamma function,
-   \texht{$\Gamma(z)$}{\axiom{Gamma(z)}},
-   defined by
-   \texht{\narrowDisplay{\Gamma(z) = \int_{0}^{\infty} t^{z-1} e^{-t} dt.}%
-   }{
-\newline
-\centerline{{\axiom{Gamma(z) = integrate(t**(z-1)*exp(-t), t=0..\%infinity).}}}
-   }
-
-\noindent
-\axiomFun{Beta}: \axiom{F -> F}\hfill\newline
-   \axiom{Beta(u, v)} is the Euler Beta function,
-   \texht{$B(u,v)$}{\axiom{B(u,v)}}, defined by
-   \texht{\narrowDisplay{B(u,v) = \int_{0}^{1} t^{u-1} (1-t)^{v-1} dt.}%
-   }{
-\newline
-\centerline{{      \axiom{Beta(u,v) = integrate(t**(u-1)*(1-t)**(b-1), t=0..1).}}}
-   }
-   This is related to \texht{$\Gamma(z)$}{\axiom{Gamma(z)}} by
-   \texht{\narrowDisplay{B(u,v) = \frac{\Gamma(u) \Gamma(v)}{\Gamma(u + v)}.}%
-   }{
-\newline
-\centerline{{      \axiom{Beta(u,v) = Gamma(u)*Gamma(v)/Gamma(u + v).}}}
-   }%
-
-\noindent
-\axiomFun{logGamma}: \axiom{F -> F}\hfill\newline
-   \axiom{logGamma(z)} is the natural logarithm of
-\texht{$\Gamma(z)$}{\axiom{Gamma(z)}}.
-   This can often be computed even if \texht{$\Gamma(z)$}{\axiom{Gamma(z)}}
-cannot.
-%
-
-\noindent
-\axiomFun{digamma}: \axiom{F -> F}\hfill\newline
-   \axiom{digamma(z)}, also called \axiom{psi(z)},
-is the function \texht{$\psi(z)$}{\axiom{psi(z)}},
-   defined by \texht{\narrowDisplay{\psi(z) = \Gamma'(z)/\Gamma(z).}%
-   }{
-\newline
-\centerline{{      \axiom{psi(z) = Gamma'(z)/Gamma(z).}}}
-  }%
-
-\noindent
-\axiomFun{polygamma}: \axiom{(NonNegativeInteger, F) -> F}\hfill\newline
-   \axiom{polygamma(n, z)} is the \eth{\axiom{n}} derivative of
-   \texht{$\psi(z)$}{\axiom{digamma(z)}}\texht{, written $\psi^{(n)}(z)$}{}.
-
-\noindent
-\axiomFun{besselJ}: \axiom{(F,F) -> F}\hfill\newline
-   \axiom{besselJ(v,z)} is the Bessel function of the first kind,
-   \texht{$J_\nu (z)$}{\axiom{J(v,z)}}.
-   This function satisfies the differential equation
-   \texht{\narrowDisplay{z^2 w''(z) + z w'(z) + (z^2-\nu^2)w(z) = 0.}%
-   }{
-\newline
-\centerline{{      \axiom{z**2*w''(z) + z*w'(z) + (z**2-v**2)*w(z) = 0.}}}
-  }%
-
-\noindent
-\axiomFun{besselY}: \axiom{(F,F) -> F}\hfill\newline
-   \axiom{besselY(v,z)} is the Bessel function of the second kind,
-   \texht{$Y_\nu (z)$}{\axiom{Y(v,z)}}.
-   This function satisfies the same differential equation as
-   \axiomFun{besselJ}.
-   The implementation simply uses the relation
-   \texht{\narrowDisplay{Y_\nu (z) = \frac{J_\nu (z) \cos(\nu \pi) - J_{-\nu} (z)}{\sin(\nu \pi)}.}%
-   }{
-\newline
-\centerline{{      \axiom{Y(v,z) = (J(v,z)*cos(v*\%pi) - J(-v,z))/sin(v*\%pi).}}}
-   }%
-
-\noindent
-\axiomFun{besselI}: \axiom{(F,F) -> F}\hfill\newline
-   \axiom{besselI(v,z)} is the modified Bessel function of the first kind,
-   \texht{$I_\nu (z)$}{\axiom{I(v,z)}}.
-   This function satisfies the differential equation
-   \texht{\narrowDisplay{z^2 w''(z) + z w'(z) - (z^2+\nu^2)w(z) = 0.}%
-   }{
-\newline
-\centerline{{      \axiom{z**2 * w''(z) + z * w'(z) - (z**2+v**2)*w(z) = 0.}}}
-   }%
-
-\noindent
-\axiomFun{besselK}: \axiom{(F,F) -> F}\hfill\newline
-   \axiom{besselK(v,z)} is the modified Bessel function of the second kind,
-   \texht{$K_\nu (z)$}{\axiom{K(v,z)}}.
-   This function satisfies the same differential equation as \axiomFun{besselI}.
-   The implementation simply uses the relation
-   \texht{\narrowDisplay{K_\nu (z) = \pi \frac{I_{-\nu} (z) - I_{\nu} (z)}{2 \sin(\nu \pi)}.}%
-   }{
-\newline
-\centerline{{      \axiom{K(v,z) = \%pi*(I(v,z) - I(-v,z))/(2*sin(v*\%pi)).}}}
-   }
-
-\noindent
-\axiomFun{airyAi}: \axiom{F -> F}\hfill\newline
-   \axiom{airyAi(z)} is the Airy function \texht{$Ai(z)$}{\axiom{Ai(z)}}.
-   This function satisfies the differential equation
-   \texht{$w''(z) - z w(z) = 0.$}{\axiom{w''(z) - z * w(z) = 0.}}
-   The implementation simply uses the relation
-   \texht{\narrowDisplay{Ai(-z) = \frac{1}{3}\sqrt{z} ( J_{-1/3} (\frac{2}{3}z^{3/2}) + J_{1/3} (\frac{2}{3}z^{3/2}) ).}%
-   }{
-\newline
-\centerline{{      \axiom{Ai(-z) = 1/3 * sqrt(z) * (J(-1/3, 2/3*z**(3/2)) + J(1/3, 2/3*z**(3/2)) ).}}}
-   }%
-
-\noindent
-\axiomFun{airyBi}: \axiom{F -> F}\hfill\newline
-   \axiom{airyBi(z)} is the Airy function \texht{$Bi(z)$}{\axiom{Bi(z)}}.
-   This function satisfies the same differential equation as \axiomFun{airyAi}.
-   The implementation simply uses the relation
-   \texht{\narrowDisplay{Bi(-z) = \frac{1}{3}\sqrt{3 z} ( J_{-1/3} (\frac{2}{3}z^{3/2}) - J_{1/3} (\frac{2}{3}z^{3/2}) ).}%
-   }{
-\newline
-\centerline{{      \axiom{Bi(-z) = 1/3 *sqrt(3*z) * (J(-1/3, 2/3*z**(3/2)) - J(1/3, 2/3*z**(3/2)) ).}}}
-   }
-
-\noindent
-\axiomFun{hypergeometric0F1}: \axiom{(F,F) -> F}\hfill\newline
-   \axiom{hypergeometric0F1(c,z)} is the hypergeometric function
-   \texht{${}_0 F_1 ( ; c; z)$}{\axiom{0F1(; c; z)}}.%
-
-\xtc{
-The above special functions are defined only for small floating-point types.
-If you give \axiomType{Float} arguments, they are converted to
-\axiomType{DoubleFloat} by Axiom.
-}{
-\spadpaste{Gamma(0.5)**2}
-}
-\xtc{
-}{
-\spadpaste{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
-}
-%
-A number of additional operations may be used to compute numerical values.
-These are special polynomial functions that can be evaluated for values in
-any commutative ring \axiom{R}, and in particular for values in any
-floating-point type.
-The following operations are provided by the package
-\axiomType{OrthogonalPolynomialFunctions}:
-
-\noindent
-\axiomFun{chebyshevT}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{chebyshevT(n,z)} is the \eth{\axiom{n}} Chebyshev polynomial of the first
-   kind, \texht{$T_n (z)$}{\axiom{T[n](z)}}.  These are defined by
-   \texht{\narrowDisplay{\frac{1-t z}{1-2 t z+t^2} = \sum_{n=0}^{\infty} T_n (z) t^n.}%
-   }{
-\newline
-\centerline{{   \axiom{(1-t*z)/(1-2*t*z+t**2) = sum(T[n](z) *t**n, n = 0..).}}}
-   }%
-
-\noindent
-\axiomFun{chebyshevU}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{chebyshevU(n,z)} is the \eth{\axiom{n}} Chebyshev polynomial of the second
-   kind, \texht{$U_n (z)$}{\axiom{U[n](z)}}. These are defined by
-   \texht{\narrowDisplay{\frac{1}{1-2 t z+t^2} = \sum_{n=0}^{\infty} U_n (z) t^n.}%
-   }{
-\newline
-\centerline{{   \axiom{1/(1-2*t*z+t**2) = sum(U[n](z) *t**n, n = 0..).}}}
-   }%
-
-\noindent
-\axiomFun{hermiteH}:   \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{hermiteH(n,z)} is the \eth{\axiom{n}} Hermite polynomial,
-   \texht{$H_n (z)$}{\axiom{H[n](z)}}.
-   These are defined by
-   \texht{\narrowDisplay{e^{2 t z - t^2} = \sum_{n=0}^{\infty} H_n (z) \frac{t^n}{n!}.}%
-   }{
-\newline
-\centerline{{   \axiom{exp(2*t*z-t**2) = sum(H[n](z)*t**n/n!, n = 0..).}}}
-   }%
-
-\noindent
-\axiomFun{laguerreL}:  \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{laguerreL(n,z)} is the \eth{\axiom{n}} Laguerre polynomial,
-   \texht{$L_n (z)$}{\axiom{L[n](z)}}.
-   These are defined by
-   \texht{\narrowDisplay{\frac{e^{-\frac{t z}{1-t}}}{1-t} = \sum_{n=0}^{\infty} L_n (z) \frac{t^n}{n!}.}%
-   }{
-\newline
-\centerline{{   \axiom{exp(-t*z/(1-t))/(1-t) = sum(L[n](z)*t**n/n!, n = 0..).}}}
-   }%
-
-\noindent
-\axiomFun{laguerreL}:  \axiom{(NonNegativeInteger, NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{laguerreL(m,n,z)} is the associated Laguerre polynomial,
-   \texht{$L^m_n (z)$}{\axiom{L<m>[n](z)}}.
-   This is the \eth{\axiom{m}} derivative of \texht{$L_n (z)$}{\axiom{L[n](z)}}.
-
-\noindent
-\axiomFun{legendreP}:  \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{legendreP(n,z)} is the \eth{\axiom{n}} Legendre polynomial,
-   \texht{$P_n (z)$}{\axiom{P[n](z)}}.  These are defined by
-   \texht{\narrowDisplay{\frac{1}{\sqrt{1-2 t z+t^2}} = \sum_{n=0}^{\infty} P_n (z) t^n.}%
-   }{
-\newline
-\centerline{{   \axiom{1/sqrt(1-2*z*t+t**2) = sum(P[n](z)*t**n, n = 0..).}}}
-   }%
-
-%
-\xtc{
-These operations require non-negative integers for the indices, but otherwise
-the argument can be given as desired.
-}{
-\spadpaste{[chebyshevT(i, z) for i in 0..5]}
-}
-\xtc{
-The expression \axiom{chebyshevT(n,z)} evaluates to the \eth{\axiom{n}} Chebyshev
-polynomial of the first kind.
-}{
-\spadpaste{chebyshevT(3, 5.0 + 6.0*\%i)}
-}
-\xtc{
-}{
-\spadpaste{chebyshevT(3, 5.0::DoubleFloat)}
-}
-\xtc{
-The expression \axiom{chebyshevU(n,z)} evaluates to the \eth{\axiom{n}} Chebyshev
-polynomial of the second kind.
-}{
-\spadpaste{[chebyshevU(i, z) for i in 0..5]}
-}
-\xtc{
-}{
-\spadpaste{chebyshevU(3, 0.2)}
-}
-\xtc{
-The expression \axiom{hermiteH(n,z)} evaluates to the \eth{\axiom{n}} Hermite
-polynomial.
-}{
-\spadpaste{[hermiteH(i, z) for i in 0..5]}
-}
-\xtc{
-}{
-\spadpaste{hermiteH(100, 1.0)}
-}
-\xtc{
-The expression \axiom{laguerreL(n,z)} evaluates to the \eth{\axiom{n}} Laguerre
-polynomial.
-}{
-\spadpaste{[laguerreL(i, z) for i in 0..4]}
-}
-\xtc{
-}{
-\spadpaste{laguerreL(4, 1.2)}
-}
-\xtc{
-}{
-\spadpaste{[laguerreL(j, 3, z) for j in 0..4]}
-}
-\xtc{
-}{
-\spadpaste{laguerreL(1, 3, 2.1)}
-}
-\xtc{
-The expression
-\axiom{legendreP(n,z)} evaluates to the \eth{\axiom{n}} Legendre polynomial,
-}{
-\spadpaste{[legendreP(i,z) for i in 0..5]}
-}
-\xtc{
-}{
-\spadpaste{legendreP(3, 3.0*\%i)}
-}
-%
-
-Finally, three number-theoretic polynomial operations may be evaluated.
-The following operations are provided by the package
-\axiomType{NumberTheoreticPolynomialFunctions}.
-
-\noindent
-\axiomFun{bernoulliB}: \axiom{(NonNegativeInteger, R) -> R} \hbox{}\hfill\newline
-   \axiom{bernoulliB(n,z)} is the \eth{\axiom{n}} Bernoulli polynomial,
-   \texht{$B_n (z)$}{\axiom{B[n](z)}}.  These are defined by
-   \texht{\narrowDisplay{\frac{t e^{z t}}{e^t - 1} = \sum_{n=0}^{\infty} B_n (z) \frac{t^n}{n!}.}
-   }{
-\newline
-\centerline{{   \axiom{t*exp(z*t)/(exp t - 1) = sum(B[n](z)*t**n/n! for n - 0..)}}}
-   }%
-
-\noindent
-\axiomFun{eulerE}: \axiom{(NonNegativeInteger, R) -> R} \hbox{}\hfill\newline
-   \axiom{eulerE(n,z)} is the \eth{\axiom{n}} Euler polynomial,
-   \texht{$E_n (z)$}{\axiom{E[n](z)}}.  These are defined by
-   \texht{\narrowDisplay{\frac{2 e^{z t}}{e^t + 1} = \sum_{n=0}^{\infty} E_n (z) \frac{t^n}{n!}.}%
-   }{
-\newline
-\centerline{{   \axiom{2*exp(z*t)/(exp t + 1) = sum(E[n](z)*t**n/n! for n - 0..)}}}
-   }%
-
-\noindent
-\axiomFun{cyclotomic}: \axiom{(NonNegativeInteger, R) -> R}\hbox{}\hfill\newline
-   \axiom{cyclotomic(n,z)} is the \eth{\axiom{n}} cyclotomic polynomial
-   \texht{$\Phi_n (z)$}{\axiom{phi(n,z)}}.  This is the polynomial whose
-   roots are precisely the primitive \eth{\axiom{n}} roots of unity.
-   This polynomial has degree given by the Euler totient function
-   \texht{$\phi(n)$}{\axiom{phi(n)}}.
-
-\xtc{
-The expression \axiom{bernoulliB(n,z)} evaluates to the \eth{\axiom{n}} Bernoulli
-polynomial.
-}{
-\spadpaste{bernoulliB(3, z)}
-}
-\xtc{
-}{
-\spadpaste{bernoulliB(3, 0.7 + 0.4 * \%i)}
-}
-\xtc{
-The expression
-\axiom{eulerE(n,z)} evaluates to the \eth{\axiom{n}} Euler polynomial.
-}{
-\spadpaste{eulerE(3, z)}
-}
-\xtc{
-}{
-\spadpaste{eulerE(3, 0.7 + 0.4 * \%i)}
-}
-\xtc{
-The expression
-\axiom{cyclotomic(n,z)} evaluates to the \eth{\axiom{n}} cyclotomic polynomial.
-}{
-\spadpaste{cyclotomic(3, z)}
-}
-\xtc{
-}{
-\spadpaste{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
-}
-
-Drawing complex functions in Axiom is presently somewhat
-awkward compared to drawing real functions.
-It is necessary to use the \axiomFun{draw} operations that operate
-on functions rather than expressions.
-
-\psXtc{
-This is the complex exponential function\texht{ (rotated interactively).}{.}
-When this is displayed in color, the height is the value of the real part of
-the function and the color is the imaginary part.
-Red indicates large negative imaginary values, green indicates imaginary
-values near zero and blue/violet indicates large positive imaginary values.
-}{
-\graphpaste{draw((x,y)+-> real exp complex(x,y), -2..2, -2*\%pi..2*\%pi, colorFunction == (x, y) +->  imag exp complex(x,y), title=="exp(x+\%i*y)", style=="smooth")}
-}{
-\epsffile[0 0 295 295]{../ps/compexp.ps}
-}
-
-\psXtc{
-This is the complex arctangent function.
-Again, the height is the real part of the function value but here
-the color indicates the function value's phase.
-The position of the branch cuts are clearly visible and one can
-see that the function is real only for a real argument.
-}{
-\graphpaste{vp := draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction==(x,y) +->argument atan complex(x,y), title=="atan(x+\%i*y)", style=="shade"); rotate(vp,-160,-45); vp}
-}{
-\epsffile[0 0 295 295]{../ps/compatan.ps}
-}
-
-\psXtc{
-This is the complex Gamma function.
-}{
-\graphpaste{draw((x,y) +-> max(min(real Gamma complex(x,y),4),-4), -\%pi..\%pi, -\%pi..\%pi, style=="shade", colorFunction == (x,y) +-> argument Gamma complex(x,y), title == "Gamma(x+\%i*y)", var1Steps == 50, var2Steps== 50)}
-}{
-\epsffile[0 0 295 295]{../ps/compgamm.ps}
-}
-
-\psXtc{
-This shows the real Beta function near the origin.
-}{
-\graphpaste{draw(Beta(x,y)/100, x=-1.6..1.7, y = -1.6..1.7, style=="shade", title=="Beta(x,y)", var1Steps==40, var2Steps==40)}
-}{
-\epsffile[0 0 295 295]{../ps/realbeta.ps}
-}
-
-\psXtc{
-This is the Bessel function \texht{$J_\alpha (x)$}{\axiom{J(alpha,x)}}
-for index \texht{$\alpha$}{\axiom{alpha}} in the range \axiom{-6..4} and
-argument \texht{$x$}{\axiom{x}} in the range \axiom{2..14}.
-}{
-\graphpaste{draw((alpha,x) +-> min(max(besselJ(alpha, x+8), -6), 6), -6..4, -6..6, title=="besselJ(alpha,x)", style=="shade", var1Steps==40, var2Steps==40)}
-}{
-\epsffile[0 0 295 295]{../ps/bessel.ps}
-}
-
-\psXtc{
-This is the modified Bessel function
-\texht{$I_\alpha (x)$}{\axiom{I(alpha,x)}}
-evaluated for various real values of the index \texht{$\alpha$}{\axiom{alpha}}
-and fixed argument \texht{$x = 5$}{\axiom{x = 5}}.
-}{
-\graphpaste{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
-}{
-\epsffile[0 0 295 295]{../ps/modbess.ps}
-}
-
-\psXtc{
-This is similar to the last example
-except the index \texht{$\alpha$}{\axiom{alpha}}
-takes on complex values in a \axiom{6 x 6} rectangle  centered on the origin.
-}{
-\graphpaste{draw((x,y) +-> real besselI(complex(x/20, y/20),5), -60..60, -60..60, colorFunction == (x,y)+-> argument besselI(complex(x/20,y/20),5), title=="besselI(x+i*y,5)", style=="shade")}
-}{
-\epsffile[0 0 295 295]{../ps/modbessc.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFactorTitle}{Polynomial Factorization}
-\newcommand{\ugProblemFactorNumber}{8.2.}
-
-@
-\subsection{8.2. Polynomial Factorization}
-\label{ugProblemFactorPage}
-\begin{itemize}
-\item ugProblemFactorIntRatPage \ref{ugProblemFactorIntRatPage} on
-page~\pageref{ugProblemFactorIntRatPage}
-\item ugProblemFactorFFPage \ref{ugProblemFactorFFPage} on
-page~\pageref{ugProblemFactorFFPage}
-\item ugProblemFactorAlgPage \ref{ugProblemFactorAlgPage} on
-page~\pageref{ugProblemFactorAlgPage}
-\item ugProblemFactorRatFunPage \ref{ugProblemFactorRatFunPage} on
-page~\pageref{ugProblemFactorRatFunPage}
-\end{itemize}
-\index{pages!ugProblemFactorPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFactorPage}
-\index{ugProblemFactorPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFactorPage}{8.2. Polynomial Factorization}
-\beginscroll
-%
-The Axiom polynomial factorization
-facilities are available for all polynomial types and a wide variety of
-coefficient domains.
-Here are some examples.
-
-\beginmenu
-    \menudownlink{{8.2.1. Integer and Rational Number Coefficients}}
-{ugProblemFactorIntRatPage}
-    \menudownlink{{8.2.2. Finite Field Coefficients}}
-{ugProblemFactorFFPage}
-    \menudownlink{{8.2.3. Simple Algebraic Extension Field Coefficients}}
-{ugProblemFactorAlgPage}
-    \menudownlink{{8.2.4. Factoring Rational Functions}}
-{ugProblemFactorRatFunPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFactorIntRatTitle}{Integer and Rational Number Coefficients}
-\newcommand{\ugProblemFactorIntRatNumber}{8.2.1.}
-
-@
-\subsection{8.2.1. Integer and Rational Number Coefficients}
-\label{ugProblemFactorIntRatPage}
-\index{pages!ugProblemFactorIntRatPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFactorIntRatPage}
-\index{ugProblemFactorIntRatPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFactorIntRatPage}
-{8.2.1. Integer and Rational Number Coefficients}
-\beginscroll
-
-\labelSpace{4pc}
-\xtc{
-Polynomials with integer
-coefficients can be be factored.
-}{
-\spadpaste{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12) \bound{v}}
-}
-\xtc{
-}{
-\spadpaste{factor v \free{v}}
-}
-\xtc{
-Also, Axiom can factor polynomials with
-rational number coefficients.
-}{
-\spadpaste{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12) \bound{w}}
-}
-\xtc{
-}{
-\spadpaste{factor w \free{w}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFactorFFTitle}{Finite Field Coefficients}
-\newcommand{\ugProblemFactorFFNumber}{8.2.2.}
-
-@
-\subsection{8.2.2. Finite Field Coefficients}
-\label{ugProblemFactorFFPage}
-\begin{itemize}
-\item ugProblemFinitePage \ref{ugProblemFinitePage} on
-page~\pageref{ugProblemFinitePage}
-\end{itemize}
-\index{pages!ugProblemFactorFFPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFactorFFPage}
-\index{ugProblemFactorFFPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFactorFFPage}{8.2.2. Finite Field Coefficients}
-\beginscroll
-
-Polynomials with coefficients in a finite field
-can be also be factored.
-
-\labelSpace{3pc}
-\xtc{
-}{
-\spadpaste{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18 \bound{u}}
-}
-\xtc{
-These include the integers mod \axiom{p}, where \axiom{p} is prime, and
-extensions of these fields.
-}{
-\spadpaste{factor u \free{u}}
-}
-\xtc{
-Convert this to have coefficients in the finite
-field with \texht{$19^3$}{\axiom{19**3}} elements.
-See \downlink{``\ugProblemFiniteTitle''}{ugProblemFinitePage} 
-in Section \ugProblemFiniteNumber\ignore{ugProblemFinite} for more information
-about finite fields.
-}{
-\spadpaste{factor(u :: POLY FFX(PF 19,3)) \free{u}}
-}
-%
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFactorAlgTitle}{Simple Algebraic Extension Field Coefficients}
-\newcommand{\ugProblemFactorAlgNumber}{8.2.3.}
-
-@
-\subsection{8.2.3. Simple Algebraic Extension Field Coefficients}
-\label{ugProblemFactorAlgPage}
-\index{pages!ugProblemFactorAlgPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFactorAlgPage}
-\index{ugProblemFactorAlgPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFactorAlgPage}
-{8.2.3. Simple Algebraic Extension Field Coefficients}
-\beginscroll
-
-Polynomials with coefficients in simple algebraic extensions
-of the rational numbers can be factored.
-
-\labelSpace{2pc}
-\xtc{
-Here, \axiom{aa} and \axiom{bb} are symbolic roots of polynomials.
-}{
-\spadpaste{aa := rootOf(aa**2+aa+1) \bound{aa}}
-}
-\xtc{
-}{
-\spadpaste{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2 \free{aa}\bound{p}}
-}
-\xtc{
-Note that the second argument to factor can be a list of
-algebraic extensions to factor over.
-}{
-\spadpaste{factor(p,[aa]) \free{p aa}}
-}
-\xtc{
-This factors \axiom{x**2+3} over the integers.
-}{
-\spadpaste{factor(x**2+3)}
-}
-\xtc{
-Factor the same polynomial over the field obtained by adjoining
-\axiom{aa} to the rational numbers.
-}{
-\spadpaste{factor(x**2+3,[aa]) \free{aa}}
-}
-\xtc{
-Factor \axiom{x**6+108} over the same field.
-}{
-\spadpaste{factor(x**6+108,[aa]) \free{aa}}
-}
-\xtc{
-}{
-\spadpaste{bb:=rootOf(bb**3-2) \bound{bb}}
-}
-\xtc{
-}{
-\spadpaste{factor(x**6+108,[bb]) \free{bb}}
-}
-\xtc{
-Factor again over the field obtained by adjoining both \axiom{aa}
-and \axiom{bb} to the rational numbers.
-}{
-\spadpaste{factor(x**6+108,[aa,bb]) \free{aa bb}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFactorRatFunTitle}{Factoring Rational Functions}
-\newcommand{\ugProblemFactorRatFunNumber}{8.2.4.}
-
-@
-\subsection{8.2.4. Factoring Rational Functions}
-\label{ugProblemFactorRatFunPage}
-\index{pages!ugProblemFactorRatFunPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFactorRatFunPage}
-\index{ugProblemFactorRatFunPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFactorRatFunPage}{8.2.4. Factoring Rational Functions}
-\beginscroll
-
-Since fractions of polynomials form a field, every element (other than zero)
-divides any other, so there is no useful notion of irreducible factors.
-Thus the \axiomFun{factor} operation is not very useful for fractions
-of polynomials.
-
-\xtc{
-There is, instead, a specific operation \axiomFun{factorFraction}
-that separately factors the numerator and denominator and returns
-a fraction of the factored results.
-}{
-\spadpaste{factorFraction((x**2-4)/(y**2-4))}
-}
-\xtc{
-You can also use \axiomFun{map}. This expression
-applies the \axiomFun{factor} operation
-to the numerator and denominator.
-}{
-\spadpaste{map(factor,(x**2-4)/(y**2-4))}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemSymRootTitle}{Manipulating Symbolic Roots of a Polynomial}
-\newcommand{\ugProblemSymRootNumber}{8.3.}
-
-@
-\subsection{8.3. Manipulating Symbolic Roots of a Polynomial}
-\label{ugProblemSymRootPage}
-\begin{itemize}
-\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
-page~\pageref{ugxProblemOnePolPage}
-\item ugxProblemPolSysPage \ref{ugxProblemPolSysPage} on
-page~\pageref{ugxProblemPolSysPage}
-\item ugxProblemSymRootOnePage \ref{ugxProblemSymRootOnePage} on
-page~\pageref{ugxProblemSymRootOnePage}
-\item ugxProblemSymRootAllPage \ref{ugxProblemSymRootAllPage} on
-page~\pageref{ugxProblemSymRootAllPage}
-\end{itemize}
-\index{pages!ugProblemSymRootPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemSymRootPage}
-\index{ugProblemSymRootPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemSymRootPage}
-{8.3. Manipulating Symbolic Roots of a Polynomial}
-\beginscroll
-%
-In this section we show you how to work with one root or all roots
-of a polynomial.
-These roots are represented symbolically (as opposed to being
-numeric approximations).
-See \downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} 
-in Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol} and 
-\downlink{``\ugxProblemPolSysTitle''}{ugxProblemPolSysPage} in 
-Section \ugxProblemPolSysNumber\ignore{ugxProblemPolSys} for
-information about solving for the roots of one or more
-polynomials.
-
-\beginmenu
-    \menudownlink{{8.3.1. Using a Single Root of a Polynomial}}
-{ugxProblemSymRootOnePage}
-    \menudownlink{{8.3.2. Using All Roots of a Polynomial}}
-{ugxProblemSymRootAllPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSymRootOneTitle}{Using a Single Root of a Polynomial}
-\newcommand{\ugxProblemSymRootOneNumber}{8.3.1.}
-
-@
-\subsection{8.3.1. Using a Single Root of a Polynomial}
-\label{ugxProblemSymRootOnePage}
-\index{pages!ugxProblemSymRootOnePage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSymRootOnePage}
-\index{ugxProblemSymRootOnePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSymRootOnePage}{8.3.1. Using a Single Root of a Polynomial}
-\beginscroll
-
-Use \axiomFun{rootOf} to get a symbolic root of a polynomial:
-\axiom{rootOf(p, x)} returns a root of \axiom{p(x)}.
-
-\labelSpace{2pc}
-\xtc{
-This creates an algebraic number \axiom{a}.
-}{
-\spadpaste{a := rootOf(a**4+1,a) \bound{a}}
-}
-\xtc{
-To find the algebraic relation that defines \axiom{a},
-use \axiomFun{definingPolynomial}.
-}{
-\spadpaste{definingPolynomial a \free{a}}
-}
-\xtc{
-You can use \axiom{a} in any further expression,
-including a nested \axiomFun{rootOf}.
-}{
-\spadpaste{b := rootOf(b**2-a-1,b) \free{a}\bound{b}}
-}
-\xtc{
-Higher powers of the roots are automatically reduced during
-calculations.
-}{
-\spadpaste{a + b \free{a b}\bound{c}}
-}
-\xtc{
-}{
-\spadpaste{\% ** 5 \free{c}}
-}
-\xtc{
-The operation \axiomFun{zeroOf} is similar to \axiomFun{rootOf},
-except that it may express the root using radicals in some cases.
-}{
-\spadpaste{rootOf(c**2+c+1,c)}
-}
-\xtc{
-}{
-\spadpaste{zeroOf(d**2+d+1,d)}
-}
-\xtc{
-}{
-\spadpaste{rootOf(e**5-2,e)}
-}
-\xtc{
-}{
-\spadpaste{zeroOf(f**5-2,f)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSymRootAllTitle}{Using All Roots of a Polynomial}
-\newcommand{\ugxProblemSymRootAllNumber}{8.3.2.}
-
-@
-\subsection{8.3.2. Using All Roots of a Polynomial}
-\label{ugxProblemSymRootAllPage}
-\begin{itemize}
-\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
-page~\pageref{ugxProblemOnePolPage}
-\end{itemize}
-\index{pages!ugxProblemSymRootAllPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSymRootAllPage}
-\index{ugxProblemSymRootAllPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSymRootAllPage}{8.3.2. Using All Roots of a Polynomial}
-\beginscroll
-
-Use \axiomFun{rootsOf} to get all symbolic roots of a polynomial:
-\axiom{rootsOf(p, x)} returns a
-list of all the roots of \axiom{p(x)}.
-If \axiom{p(x)} has a multiple root of order \axiom{n}, then that root
-appears \axiom{n} times in the list.
-\texht{\typeout{Make sure these variables are x0 etc}}{}
-
-\xtc{
-Compute all the roots of \axiom{x**4 + 1}.
-}{
-\spadpaste{l := rootsOf(x**4+1,x) \bound{l}}
-}
-\xtc{
-As a side effect, the variables \axiom{\%x0, \%x1} and \axiom{\%x2} are bound
-to the first three roots of \axiom{x**4+1}.
-}{
-\spadpaste{\%x0**5 \free{l}}
-}
-\xtc{
-Although they all satisfy \axiom{x**4 + 1 = 0, \%x0, \%x1,}
-and \axiom{\%x2} are different algebraic numbers.
-To find the algebraic relation that defines each of them,
-use \axiomFun{definingPolynomial}.
-}{
-\spadpaste{definingPolynomial \%x0 \free{l}}
-}
-\xtc{
-}{
-\spadpaste{definingPolynomial \%x1 \free{l}}
-}
-\xtc{
-}{
-\spadpaste{definingPolynomial \%x2 \free{l}}
-}
-\xtc{
-We can check that the sum and product of the roots of \axiom{x**4+1} are
-its trace and norm.
-}{
-\spadpaste{x3 := last l \free{l} \bound{x3}}
-}
-\xtc{
-}{
-\spadpaste{\%x0 + \%x1 + \%x2 + x3 \free{x3}}
-}
-\xtc{
-}{
-\spadpaste{\%x0 * \%x1 * \%x2 * x3 \free{x3}}
-}
-\xtc{
-Corresponding to the pair of operations
-\axiomFun{rootOf}/\axiomFun{zeroOf} in
-\downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} in 
-Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol}, there is
-an operation \axiomFun{zerosOf} that, like \axiomFun{rootsOf},
-computes all the roots
-of a given polynomial, but which expresses some of them in terms of
-radicals.
-}{
-\spadpaste{zerosOf(y**4+1,y) \bound{z}}
-}
-\xtc{
-As you see, only one implicit algebraic number was created
-(\axiom{\%y1}), and its defining equation is this.
-The other three roots are expressed in radicals.
-}{
-\spadpaste{definingPolynomial \%y1 \free{z}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemEigenTitle}{Computation of Eigenvalues and Eigenvectors}
-\newcommand{\ugProblemEigenNumber}{8.4.}
-
-@
-\subsection{8.4. Computation of Eigenvalues and Eigenvectors}
-\label{ugProblemEigenPage}
-\index{pages!ugProblemEigenPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemEigenPage}
-\index{ugProblemEigenPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemEigenPage}
-{8.4. Computation of Eigenvalues and Eigenvectors}
-\beginscroll
-%
-In this section we show you
-some of Axiom's facilities for computing and
-manipulating eigenvalues and eigenvectors, also called
-characteristic values and characteristic vectors,
-respectively.
-
-\texht{\vskip 4pc}{}
-
-\xtc{
-Let's first create a matrix with integer entries.
-}{
-\spadpaste{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]] \bound{m1}}
-}
-\xtc{
-To get a list of the {\it rational} eigenvalues,
-use the operation \axiomFun{eigenvalues}.
-}{
-\spadpaste{leig := eigenvalues(m1) \free{m1} \bound{leig}}
-}
-\xtc{
-Given an explicit eigenvalue, \axiomFun{eigenvector} computes the eigenvectors
-corresponding to it.
-}{
-\spadpaste{eigenvector(first(leig),m1) \free{m1 leig}}
-}
-
-The operation \axiomFun{eigenvectors} returns a list of pairs of values and
-vectors. When an eigenvalue is rational, Axiom gives you
-the value explicitly; otherwise, its minimal polynomial is given,
-(the polynomial of lowest degree with the eigenvalues as roots),
-together with a parametric representation of the eigenvector using the
-eigenvalue.
-This means that if you ask Axiom to \axiomFun{solve}
-the minimal polynomial, then you can substitute these roots
-into the parametric form of the corresponding eigenvectors.
-
-\xtc{
-You must be aware that unless an exact eigenvalue has been computed,
-the eigenvector may be badly in error.
-}{
-\spadpaste{eigenvectors(m1) \free{m1}}
-}
-\xtc{
-Another possibility is to use the operation
-\axiomFun{radicalEigenvectors}
-tries to compute explicitly the eigenvectors
-in terms of radicals.
-}{
-\spadpaste{radicalEigenvectors(m1) \free{m1}}
-}
-
-Alternatively, Axiom can compute real or complex approximations to the
-eigenvectors and eigenvalues using the operations \axiomFun{realEigenvectors}
-or \axiomFun{complexEigenvectors}.
-They each take an additional argument \texht{$\epsilon$}{\axiom{epsilon}}
-to specify the ``precision'' required.
-In the real case, this means that each approximation will be within
-\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual
-result.
-In the complex case, this means that each approximation will be within
-\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual result
-in each of the real and imaginary parts.
-
-\xtc{
-The precision can be specified as a \axiomType{Float} if the results are
-desired in floating-point notation, or as \axiomType{Fraction Integer} if the
-results are to be expressed using rational (or complex rational) numbers.
-}{
-\spadpaste{realEigenvectors(m1,1/1000) \free{m1}}
-}
-\xtc{
-If an \axiom{n} by \axiom{n} matrix has \axiom{n} distinct eigenvalues (and
-therefore \axiom{n} eigenvectors) the operation \axiomFun{eigenMatrix}
-gives you a matrix of the eigenvectors.
-}{
-\spadpaste{eigenMatrix(m1) \free{m1}}
-}
-\xtc{
-}{
-\spadpaste{m2 := matrix [[-5,-2],[18,7]] \bound{m2}}
-}
-\xtc{
-}{
-\spadpaste{eigenMatrix(m2) \free{m2}}
-}
-%
-%
-\xtc{
-If a symmetric matrix
-has a basis of orthonormal eigenvectors, then
-\axiomFun{orthonormalBasis} computes a list of these vectors.
-}{
-\spadpaste{m3 := matrix [[1,2],[2,1]] \bound{m3}}
-}
-\xtc{
-}{
-\spadpaste{orthonormalBasis(m3) \free{m3}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemLinPolEqnTitle}{Solution of Linear and Polynomial Equations}
-\newcommand{\ugProblemLinPolEqnNumber}{8.5.}
-
-@
-\subsection{8.5. Solution of Linear and Polynomial Equations}
-\label{ugProblemLinPolEqnPage}
-\begin{itemize}
-\item ugProblemDEQPage \ref{ugProblemDEQPage} on
-page~\pageref{ugProblemDEQPage}
-\item ugxProblemLinSysPage \ref{ugxProblemLinSysPage} on
-page~\pageref{ugxProblemLinSysPage}
-\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
-page~\pageref{ugxProblemOnePolPage}
-\item ugxProblemPolSysPage \ref{ugxProblemPolSysPage} on
-page~\pageref{ugxProblemPolSysPage}
-\end{itemize}
-\index{pages!ugProblemLinPolEqnPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemLinPolEqnPage}
-\index{ugProblemLinPolEqnPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemLinPolEqnPage}
-{8.5. Solution of Linear and Polynomial Equations}
-\beginscroll
-%
-In this section we discuss the Axiom facilities for solving
-systems of linear equations, finding the roots of polynomials and
-solving systems of polynomial equations.
-For a discussion of the solution of differential equations, see
-\downlink{``\ugProblemDEQTitle''}{ugProblemDEQPage} in 
-Section \ugProblemDEQNumber\ignore{ugProblemDEQ}.
-
-\beginmenu
-    \menudownlink{{8.5.1. Solution of Systems of Linear Equations}}
-{ugxProblemLinSysPage}
-    \menudownlink{{8.5.2. Solution of a Single Polynomial Equation}}
-{ugxProblemOnePolPage}
-    \menudownlink{{8.5.3. Solution of Systems of Polynomial Equations}}
-{ugxProblemPolSysPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemLinSysTitle}{Solution of Systems of Linear Equations}
-\newcommand{\ugxProblemLinSysNumber}{8.5.1.}
-
-@
-\subsection{8.5.1. Solution of Systems of Linear Equations}
-\label{ugxProblemLinSysPage}
-\index{pages!ugxProblemLinSysPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemLinSysPage}
-\index{ugxProblemLinSysPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemLinSysPage}{8.5.1. Solution of Systems of Linear Equations}
-\beginscroll
-
-You can use the operation \axiomFun{solve} to solve systems of linear equations.
-
-The operation \axiomFun{solve} takes two arguments, the list of equations and the
-list of the unknowns to be solved for.
-A system of linear equations need not have a unique solution.
-
-\xtc{
-To solve the linear system:
-\centerline{{\axiom{  x +   y +   z = 8} }}
-\centerline{{\axiom{3*x - 2*y +   z = 0} }}
-\centerline{{\axiom{  x + 2*y + 2*z = 17}}}
-evaluate this expression.
-}{
-\spadpaste{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
-}
-
-Parameters are given as new variables starting with a percent sign and
-\spadSyntax{\%} and
-the variables are expressed in terms of the parameters.
-If the system has no solutions then the empty list is returned.
-
-\xtc{
-When you solve the linear system
-\centerline{{\axiom{  x + 2*y + 3*z = 2} }}
-\centerline{{\axiom{2*x + 3*y + 4*z = 2} }}
-\centerline{{\axiom{3*x + 4*y + 5*z = 2}}}
-with this expression
-you get a solution involving a parameter.
-}{
-\spadpaste{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
-}
-
-The system can also be presented as a matrix and a vector.
-The matrix contains the coefficients of the linear equations and
-the vector contains the numbers appearing on the right-hand sides
-of the equations.
-You may input the matrix as a list of rows and the vector as a
-list of its elements.
-
-\xtc{
-To solve the system:
-\centerline{{\axiom{  x +   y +   z = 8} }}
-\centerline{{\axiom{3*x - 2*y +   z = 0} }}
-\centerline{{\axiom{  x + 2*y + 2*z = 17}}}
-in matrix form you would evaluate this expression.
-}{
-\spadpaste{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
-}
-
-The solutions are presented as a \pspadtype{Record} with two
-components: the component \texht{{\it particular}}{{\tt
-particular}} contains a particular solution of the given system or
-the item {\tt "failed"} if there are no solutions, the component
-\texht{{\it basis}}{{\tt basis}} contains a list of vectors that
-are a basis for the space of solutions of the corresponding
-homogeneous system.
-If the system of linear equations does not have a unique solution,
-then the \texht{{\it basis}}{{\tt basis}} component contains
-non-trivial vectors.
-
-\xtc{
-This happens when you solve the linear system
-\centerline{{\axiom{  x + 2*y + 3*z = 2} }}
-\centerline{{\axiom{2*x + 3*y + 4*z = 2} }}
-\centerline{{\axiom{3*x + 4*y + 5*z = 2}}}
-with this command.
-}{
-\spadpaste{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
-}
-
-All solutions of this system are obtained by adding the particular
-solution with a linear combination of the \texht{{\it basis}}{{\tt
-basis}} vectors.
-
-When no solution exists then {\tt "failed"} is returned as the
-\texht{{\it particular}}{{\tt particular}} component, as follows:
-
-\xtc{
-}{
-\spadpaste{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
-}
-
-When you want to solve a system of homogeneous equations (that is,
-a system where the numbers on the right-hand sides of the
-equations are all zero) in the matrix form you can omit the second
-argument and use the \axiomFun{nullSpace} operation.
-
-\xtc{
-This computes the solutions of the following system of equations:
-\centerline{{\axiom{  x + 2*y + 3*z = 0} }}
-\centerline{{\axiom{2*x + 3*y + 4*z = 0} }}
-\centerline{{\axiom{3*x + 4*y + 5*z = 0}}}
-The result is given as a list of vectors and
-these vectors form a basis for the solution space.
-}{
-\spadpaste{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemOnePolTitle}{Solution of a Single Polynomial Equation}
-\newcommand{\ugxProblemOnePolNumber}{8.5.2.}
-
-@
-\subsection{8.5.2. Solution of a Single Polynomial Equation}
-\label{ugxProblemOnePolPage}
-\index{pages!ugxProblemOnePolPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemOnePolPage}
-\index{ugxProblemOnePolPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemOnePolPage}{8.5.2. Solution of a Single Polynomial Equation}
-\beginscroll
-
-Axiom can solve polynomial equations producing either approximate
-or exact solutions.
-Exact solutions are either members of the ground
-field or can be presented symbolically as roots of irreducible polynomials.
-
-\xtc{
-This returns the one rational root along with an irreducible
-polynomial describing the other solutions.
-}{
-\spadpaste{solve(x**3  = 8,x)}
-}
-\xtc{
-If you want solutions expressed in terms of radicals you would use this
-instead.
-}{
-\spadpaste{radicalSolve(x**3  = 8,x)}
-}
-
-The \axiomFun{solve} command always returns a value but
-\axiomFun{radicalSolve} returns only the solutions that it is
-able to express in terms of radicals.
-
-If the polynomial equation has rational coefficients
-you can ask for approximations to its real roots by calling
-solve with a second argument that specifies the ``precision''
-\texht{$\epsilon$}{\axiom{epsilon}}.
-This means that each approximation will be within
-\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual
-result.
-
-\xtc{
-Notice that the type of second argument controls the type of the result.
-}{
-\spadpaste{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
-}
-\xtc{
-If you give a floating-point precision you get a floating-point result;
-if you give the precision as a rational number you get a rational result.
-}{
-\spadpaste{solve(x**3-2,1/1000)}
-}
-\xtc{
-If you want approximate complex results you should use the
-command \axiomFun{complexSolve} that takes the same precision argument
-\texht{$\epsilon$}{\axiom{epsilon}}.
-}{
-\spadpaste{complexSolve(x**3-2,.0001)}
-}
-\xtc{
-Each approximation will be within
-\texht{$\pm\epsilon$}{plus or minus \axiom{epsilon}} of the actual result
-in each of the real and imaginary parts.
-}{
-\spadpaste{complexSolve(x**2-2*\%i+1,1/100)}
-}
-
-Note that if you omit the \axiomOp{=} from the first argument
-Axiom generates an equation by equating the first argument to zero.
-Also, when only one variable is present in the equation, you
-do not need to specify the variable to be solved for, that is,
-you can omit the second argument.
-
-\xtc{
-Axiom can also solve equations involving rational functions.
-Solutions where the denominator vanishes are discarded.
-}{
-\spadpaste{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemPolSysTitle}{Solution of Systems of Polynomial Equations}
-\newcommand{\ugxProblemPolSysNumber}{8.5.3.}
-
-@
-\subsection{8.5.3. Solution of Systems of Polynomial Equations}
-\label{ugxProblemPolSysPage}
-\begin{itemize}
-\item ugxProblemOnePolPage \ref{ugxProblemOnePolPage} on
-page~\pageref{ugxProblemOnePolPage}
-\end{itemize}
-\index{pages!ugxProblemPolSysPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemPolSysPage}
-\index{ugxProblemPolSysPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemPolSysPage}
-{8.5.3. Solution of Systems of Polynomial Equations}
-\beginscroll
-
-Given a system of equations of rational functions with exact coefficients:
-\centerline{{\axiom{p1(x1,...,xn)} }}
-\centerline{{\axiom{.}             }}
-\centerline{{\axiom{.}             }}
-\centerline{{\axiom{.}             }}
-\centerline{{\axiom{pm(x1,...,xn)}}}
-Axiom can find
-numeric or symbolic solutions.
-The system is first split into irreducible components, then for
-each component, a triangular system of equations is found that reduces
-the problem to sequential solution of univariate polynomials resulting
-from substitution of partial solutions from the previous stage.
-\centerline{{\axiom{q1(x1,...,xn)} }}
-\centerline{{\axiom{.} }}
-\centerline{{\axiom{.} }}
-\centerline{{\axiom{.} }}
-\centerline{{\axiom{qm(xn)}}}
-
-Symbolic solutions can be presented using ``implicit'' algebraic numbers
-defined as roots of irreducible polynomials or in terms of radicals.
-Axiom can also find approximations to the real or complex roots
-of a system of polynomial equations to any user-specified accuracy.
-
-The operation \axiomFun{solve} for systems is used in a way similar
-to \axiomFun{solve} for single equations.
-Instead of a polynomial equation, one has to give a list of
-equations and instead of a single variable to solve for, a list of
-variables.
-For solutions of single equations see 
-\downlink{``\ugxProblemOnePolTitle''}{ugxProblemOnePolPage} in 
-Section \ugxProblemOnePolNumber\ignore{ugxProblemOnePol}.
-
-%
-\xtc{
-Use the operation \axiomFun{solve} if you want implicitly presented
-solutions.
-}{
-\spadpaste{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
-}
-\xtc{
-}{
-\spadpaste{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
-}
-\xtc{
-Use \axiomFun{radicalSolve} if you want your solutions expressed
-in terms of radicals.
-}{
-\spadpaste{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
-}
-
-To get numeric solutions you only need to give the list of
-equations and the precision desired.
-The list of variables would be redundant information since there
-can be no parameters for the numerical solver.
-
-\xtc{
-If the precision is expressed as a floating-point number you get
-results expressed as floats.
-}{
-\spadpaste{solve([x**2*y - 1,x*y**2 - 2],.01)}
-}
-\xtc{
-To get complex numeric solutions, use the operation \axiomFun{complexSolve},
-which takes the same arguments as in the real case.
-}{
-\spadpaste{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
-}
-\xtc{
-It is also possible to solve systems of equations in rational functions
-over the rational numbers.
-Note that \axiom{[x = 0.0, a = 0.0]} is not returned as a solution since
-the denominator vanishes there.
-}{
-\spadpaste{solve([x**2/a = a,a = a*x],.001)}
-}
-\xtc{
-When solving equations with
-denominators, all solutions where the denominator vanishes are
-discarded.
-}{
-\spadpaste{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemLimitsTitle}{Limits}
-\newcommand{\ugProblemLimitsNumber}{8.6.}
-
-@
-\subsection{8.6. Limits}
-\label{ugProblemLimitsPage}
-\index{pages!ugProblemLimitsPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemLimitsPage}
-\index{ugProblemLimitsPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemLimitsPage}{8.6. Limits}
-\beginscroll
-%
-To compute a limit, you must specify a functional expression,
-a variable, and a limiting value for that variable.
-If you do not specify a direction, Axiom attempts to
-compute a two-sided limit.
-
-\xtc{
-Issue this to compute the limit
-\texht{$$\lim_{x \rightarrow 1}{{\displaystyle x^2 - 3x +
-2}\over{\displaystyle x^2 - 1}}.$$}{
-of \axiom{(x**2 - 3*x + 2)/(x**2 - 1)} as \axiom{x} approaches \axiom{1}.}
-}{
-\spadpaste{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-}
-
-Sometimes the limit when approached from the left is different from the
-limit from the right and, in this case, you may wish to ask for a
-one-sided limit.
-Also,
-if you have a function that is only defined on one side of a particular value,
-you can compute a one-sided limit.
-
-\xtc{
-The function \axiom{log(x)} is only defined to the right of zero,
-that is, for \axiom{x > 0}.
-Thus, when computing limits of functions involving \axiom{log(x)},
-you probably want a ``right-hand'' limit.
-}{
-\spadpaste{limit(x * log(x),x = 0,"right")}
-}
-\xtc{
-When you do not specify \axiom{"right"} or \axiom{"left"} as the
-optional fourth argument, \axiomFun{limit} tries to compute a
-two-sided limit.
-Here the limit from the left does not exist, as Axiom
-indicates when you try to take a two-sided limit.
-}{
-\spadpaste{limit(x * log(x),x = 0)}
-}
-
-A function can be defined on both sides of a particular value, but
-tend to different limits as its variable approaches that value from the
-left and from the right.
-We can construct an example of this as follows:
-Since
-\texht{$\sqrt{y^2}$}{\axiom{sqrt(y**2)}}
-is simply the absolute value of \axiom{y},
-the function
-\texht{$\sqrt{y^2} / y$}{\axiom{sqrt(y**2) / y}}
-is simply the sign (\axiom{+1} or \axiom{-1}) of the nonzero
-real number \axiom{y}.
-Therefore,
-\texht{$\sqrt{y^2} / y = -1$}{\axiom{sqrt(y**2) / y = -1}}
-for \axiom{y < 0} and
-\texht{$\sqrt{y^2} / y = +1$}{\axiom{sqrt(y**2) / y = +1}}
-for \axiom{y > 0}.
-\xtc{
-This is what happens when we take the limit at \axiom{y = 0}.
-The answer returned by Axiom gives both a
-``left-hand'' and a ``right-hand'' limit.
-}{
-\spadpaste{limit(sqrt(y**2)/y,y = 0)}
-}
-\xtc{
-Here is another example, this time using a more complicated function.
-}{
-\spadpaste{limit(sqrt(1 - cos(t))/t,t = 0)}
-}
-
-You can compute limits at infinity by passing either
-\texht{$+\infty$ or $-\infty$}{``plus infinity'' or ``minus infinity''}
-as the third argument of \axiomFun{limit}.
-\xtc{
-To do this, use the constants \axiom{\%plusInfinity} and \axiom{\%minusInfinity}.
-}{
-\spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-}
-\xtc{
-}{
-\spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-}
-
-\xtc{
-You can take limits of functions with parameters.
-As you can see, the limit is expressed in terms of the parameters.
-}{
-\spadpaste{limit(sinh(a*x)/tan(b*x),x = 0)}
-}
-
-When you use \axiomFun{limit}, you are taking the limit of a real
-function of a real variable.
-\xtc{
-When you compute this,
-Axiom returns \axiom{0} because, as a function of a real variable,
-\axiom{sin(1/z)} is always between \axiom{-1} and \axiom{1}, so \axiom{z * sin(1/z)}
-tends to \axiom{0} as \axiom{z} tends to \axiom{0}.
-}{
-\spadpaste{limit(z * sin(1/z),z = 0)}
-}
-However, as a function of a {\it complex} variable, \axiom{sin(1/z)} is badly
-behaved near \axiom{0} (one says that \axiom{sin(1/z)} has an
-{\it essential singularity} at \axiom{z = 0}).
-\xtc{
-When viewed as a function of a complex variable, \axiom{z * sin(1/z)}
-does not approach any limit as \axiom{z} tends to \axiom{0} in the complex plane.
-Axiom indicates this when we call \axiomFun{complexLimit}.
-}{
-\spadpaste{complexLimit(z * sin(1/z),z = 0)}
-}
-
-%% This is used in chapter 1
-
-You can also take complex limits at infinity, that is, limits of a function of
-\axiom{z} as \axiom{z} approaches infinity on the Riemann sphere.
-Use the symbol \axiom{\%infinity} to denote ``complex infinity.''
-\xtc{
-As above, to compute complex limits rather than real limits, use
-\axiomFun{complexLimit}.
-}{
-\spadpaste{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-}
-\xtc{
-In many cases, a limit of a real function of a real variable
-exists when the corresponding complex limit does not.
-This limit exists.
-}{
-\spadpaste{limit(sin(x)/x,x = \%plusInfinity)}
-}
-\xtc{
-But this limit does not.
-}{
-\spadpaste{complexLimit(sin(x)/x,x = \%infinity)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemLaplaceTitle}{Laplace Transforms}
-\newcommand{\ugProblemLaplaceNumber}{8.7.}
-
-@
-\subsection{8.7. Laplace Transforms}
-\label{ugProblemLaplacePage}
-\index{pages!ugProblemLaplacePage!ug08.ht}
-\index{ug08.ht!pages!ugProblemLaplacePage}
-\index{ugProblemLaplacePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemLaplacePage}{8.7. Laplace Transforms}
-\beginscroll
-%
-Axiom can compute some forward Laplace transforms, mostly
-of elementary
-functions
-not involving logarithms, although some cases of
-special functions are handled.
-\xtc{
-To compute the forward Laplace transform of \axiom{F(t)} with respect to
-\axiom{t} and express the result as \axiom{f(s)}, issue the command
-\axiom{laplace(F(t), t, s)}.
-}{
-\spadpaste{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
-}
-\xtc{
-Here are some other non-trivial examples.
-}{
-\spadpaste{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-}
-\xtc{
-}{
-\spadpaste{laplace(2/t * (1 - cos(a*t)), t, s)}
-}
-\xtc{
-}{
-\spadpaste{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
-}
-\xtc{
-}{
-\spadpaste{laplace((cos(a*t) - cos(b*t))/t, t, s)}
-}
-\xtc{
-Axiom also knows about a few special functions.
-}{
-\spadpaste{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-}
-\xtc{
-}{
-\spadpaste{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-}
-\xtc{
-When Axiom does not know about a particular transform,
-it keeps it as a formal transform in the answer.
-}{
-\spadpaste{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemIntegrationTitle}{Integration}
-\newcommand{\ugProblemIntegrationNumber}{8.8.}
-
-@
-\subsection{8.8. Integration}
-\label{ugProblemIntegrationPage}
-\begin{itemize}
-\item ugxProblemSymRootAllPage \ref{ugxProblemSymRootAllPage} on
-page~\pageref{ugxProblemSymRootAllPage}
-\end{itemize}
-\index{pages!ugProblemIntegrationPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemIntegrationPage}
-\index{ugProblemIntegrationPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemIntegrationPage}{8.8. Integration}
-\beginscroll
-%
-Integration is the reverse process of differentiation, that is,
-an {\it integral} of a function \axiom{f} with respect to a variable
-\axiom{x} is any function \axiom{g} such that \axiom{D(g,x)}
-is equal to \axiom{f}.
-\xtc{
-The package \axiomType{FunctionSpaceIntegration} provides the top-level
-integration operation, \axiomFunFrom{integrate}{FunctionSpaceIntegration},
-for integrating real-valued elementary functions.
-}{
-\spadpaste{integrate(cosh(a*x)*sinh(a*x), x)}
-}
-\xtc{
-Unfortunately, antiderivatives of most functions cannot be expressed in
-terms of elementary functions.
-}{
-\spadpaste{integrate(log(1 + sqrt(a * x + b)) / x, x)}
-}
-Given an elementary function to integrate, Axiom returns a formal
-integral as above only when it can prove that the integral is not
-elementary and not when it cannot determine the integral.
-In this rare case it prints a message that it cannot
-determine if an elementary integral exists.
-%
-\xtc{
-Similar functions may have antiderivatives
-that look quite different because the form of the antiderivative
-depends on the sign of a constant that appears in the function.
-}{
-\spadpaste{integrate(1/(x**2 - 2),x)}
-}
-\xtc{
-}{
-\spadpaste{integrate(1/(x**2 + 2),x)}
-}
-%
-If the integrand contains parameters, then there may be several possible
-antiderivatives, depending on the signs of expressions of the parameters.
-\xtc{
-In this case Axiom returns a list of answers that cover all
-the possible cases.
-Here you
-use the answer involving the square root of \axiom{a} when \axiom{a > 0} and
-the answer involving the square root of \axiom{-a} when \axiom{a < 0}.
-}{
-\spadpaste{integrate(x**2 / (x**4 - a**2), x)}
-}
-
-If the parameters and the variables of integration can be complex
-numbers rather than real, then the notion of sign is not defined.
-In this case all the possible answers can be expressed as one
-complex function.
-To get that function, rather than a list of real functions, use
-\axiomFunFrom{complexIntegrate}{FunctionSpaceComplexIntegration},
-which is provided by the package
-\axiomType{FunctionSpaceComplexIntegration}.
-
-\xtc{
-This operation is used for
-integrating complex-valued elementary functions.
-}{
-\spadpaste{complexIntegrate(x**2 / (x**4 - a**2), x)}
-}
-\xtc{
-As with the real case,
-antiderivatives for most complex-valued functions cannot be expressed
-in terms of elementary functions.
-}{
-\spadpaste{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
-}
-
-Sometimes \axiomFun{integrate} can involve symbolic algebraic numbers
-such as those returned by \axiomFunFrom{rootOf}{Expression}.
-To see how to work with these strange generated symbols (such as
-\axiom{\%\%a0}), see 
-\downlink{``\ugxProblemSymRootAllTitle''}{ugxProblemSymRootAllPage} 
-in Section \ugxProblemSymRootAllNumber\ignore{ugxProblemSymRootAll}.
-
-Definite integration is the process of computing the area between
-the \axiom{x}-axis and the curve of a function \axiom{f(x)}.
-The fundamental theorem of calculus states that if \axiom{f} is
-continuous on an interval \axiom{a..b} and if there exists a function \axiom{g}
-that is differentiable on \axiom{a..b} and such that \axiom{D(g, x)}
-is equal to \axiom{f}, then the definite integral of \axiom{f}
-for \axiom{x} in the interval \axiom{a..b} is equal to \axiom{g(b) - g(a)}.
-
-\xtc{
-The package \axiomType{RationalFunctionDefiniteIntegration} provides
-the top-level definite integration operation,
-\axiomFunFrom{integrate}{RationalFunctionDefiniteIntegration},
-for integrating real-valued rational functions.
-}{
-\spadpaste{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
-}
-Axiom checks beforehand that the function you are integrating is
-defined on the interval \axiom{a..b}, and prints an error message if it
-finds that this is not case, as in the following example:
+\subsection{Asp7 Example Code}
+\label{Asp7ExampleCode}
+\index{pages!Asp7ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp7ExampleCode}
+\index{Asp7ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp7ExampleCode}{Asp7 Example Code}
 \begin{verbatim}
-integrate(1/(x**2-2), x = 1..2)
-
-    >> Error detected within library code:
-       Pole in path of integration
-       You are being returned to the top level
-       of the interpreter.
+      SUBROUTINE FCN(X,Z,F)
+      DOUBLE PRECISION F(*),X,Z(*)
+      F(1)=DTAN(Z(3))
+      F(2)=((-0.03199999999999999D0*DCOS(Z(3))*DTAN(Z(3)))+(-0.02D0*Z(2)
+     &**2))/(Z(2)*DCOS(Z(3)))
+      F(3)=-0.03199999999999999D0/(X*Z(2)**2)
+      RETURN
+      END
 \end{verbatim}
-When parameters are present in the function, the function may or may not be
-defined on the interval of integration.
-
-\xtc{
-If this is the case, Axiom issues a warning that a pole might
-lie in the path of integration, and does not compute the integral.
-}{
-\spadpaste{integrate(1/(x**2-a), x = 1..2)}
-}
-
-If you know that you are using values of the parameter for which
-the function has no pole in the interval of integration, use the
-string {\tt "noPole"} as a third argument to
-\axiomFunFrom{integrate}{RationalFunctionDefiniteIntegration}:
-
-%
-\xtc{
-The value here is, of course, incorrect if \axiom{sqrt(a)} is between
-\axiom{1} and \axiom{2.}
-}{
-\spadpaste{integrate(1/(x**2-a), x = 1..2, "noPole")}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemSeriesTitle}{Working with Power Series}
-\newcommand{\ugProblemSeriesNumber}{8.9.}
-
-@
-\subsection{8.9. Working with Power Series}
-\label{ugProblemSeriesPage}
-\begin{itemize}
-\item ugxProblemDEQSeriesPage \ref{ugxProblemDEQSeriesPage} on
-page~\pageref{ugxProblemDEQSeriesPage}
-\item ugxProblemSeriesCreatePage \ref{ugxProblemSeriesCreatePage} on
-page~\pageref{ugxProblemSeriesCreatePage}
-\item ugxProblemSeriesCoefficientsPage \ref{ugxProblemSeriesCoefficientsPage} on
-page~\pageref{ugxProblemSeriesCoefficientsPage}
-\item ugxProblemSeriesArithmeticPage \ref{ugxProblemSeriesArithmeticPage} on
-page~\pageref{ugxProblemSeriesArithmeticPage}
-\item ugxProblemSeriesFunctionsPage \ref{ugxProblemSeriesFunctionsPage} on
-page~\pageref{ugxProblemSeriesFunctionsPage}
-\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
-page~\pageref{ugxProblemSeriesConversionsPage}
-\item ugxProblemSeriesFormulaPage \ref{ugxProblemSeriesFormulaPage} on
-page~\pageref{ugxProblemSeriesFormulaPage}
-\item ugxProblemSeriesSubstitutePage \ref{ugxProblemSeriesSubstitutePage} on
-page~\pageref{ugxProblemSeriesSubstitutePage}
-\item ugxProblemSeriesBernoulliPage \ref{ugxProblemSeriesBernoulliPage} on
-page~\pageref{ugxProblemSeriesBernoulliPage}
-\end{itemize}
-\index{pages!ugProblemSeriesPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemSeriesPage}
-\index{ugProblemSeriesPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemSeriesPage}{8.9. Working with Power Series}
-\beginscroll
-%
-Axiom has very sophisticated facilities for working with power
-series.
-Infinite series are represented by a list of the
-coefficients that have already been determined, together with a
-function for computing the additional coefficients if needed.
-%
-The system command that determines how many terms of a series is displayed
-is \spadcmd{)set streams calculate}.
-For the purposes of this book, we have used this system command to display
-fewer than ten terms.
-Series can be created from expressions, from functions for the
-series coefficients, and from applications of operations on
-existing series.
-The most general function for creating a series is called
-\axiomFun{series}, although you can also use \axiomFun{taylor},
-\axiomFun{laurent} and \axiomFun{puiseux} in situations where you
-know what kind of exponents are involved.
-
-For information about solving differential equations in terms of
-power series, see 
-\downlink{``\ugxProblemDEQSeriesTitle''}{ugxProblemDEQSeriesPage} in 
-Section \ugxProblemDEQSeriesNumber\ignore{ugxProblemDEQSeries}.
-
-\beginmenu
-    \menudownlink{{8.9.1. Creation of Power Series}}
-{ugxProblemSeriesCreatePage}
-    \menudownlink{{8.9.2. Coefficients of Power Series}}
-{ugxProblemSeriesCoefficientsPage}
-    \menudownlink{{8.9.3. Power Series Arithmetic}}
-{ugxProblemSeriesArithmeticPage}
-    \menudownlink{{8.9.4. Functions on Power Series}}
-{ugxProblemSeriesFunctionsPage}
-    \menudownlink{{8.9.5. Converting to Power Series}}
-{ugxProblemSeriesConversionsPage}
-    \menudownlink{{8.9.6. Power Series from Formulas}}
-{ugxProblemSeriesFormulaPage}
-    \menudownlink{{8.9.7. Substituting Numerical Values in Power Series}}
-{ugxProblemSeriesSubstitutePage}
-    \menudownlink{{8.9.8. Example: Bernoulli Polynomials and Sums of Powers}}
-{ugxProblemSeriesBernoulliPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesCreateTitle}{Creation of Power Series}
-\newcommand{\ugxProblemSeriesCreateNumber}{8.9.1.}
-
-@
-\subsection{8.9.1. Creation of Power Series}
-\label{ugxProblemSeriesCreatePage}
-\begin{itemize}
-\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
-page~\pageref{ugxProblemSeriesConversionsPage}
-\item ugTypesDeclarePage \ref{ugTypesDeclarePage} on
-page~\pageref{ugTypesDeclarePage}
-\item ugxProblemSeriesFunctionsPage \ref{ugxProblemSeriesFunctionsPage} on
-page~\pageref{ugxProblemSeriesFunctionsPage}
-\item ugxProblemSeriesFormulaPage \ref{ugxProblemSeriesFormulaPage} on
-page~\pageref{ugxProblemSeriesFormulaPage}
-\end{itemize}
-\index{pages!ugxProblemSeriesCreatePage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesCreatePage}
-\index{ugxProblemSeriesCreatePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesCreatePage}{8.9.1. Creation of Power Series}
-\beginscroll
-
-\labelSpace{4pc}
-\xtc{
-This is the easiest way to create a power series.
-This tells Axiom that \axiom{x} is to be treated as a power series,
-so functions of \axiom{x} are again power series.
-}{
-\spadpaste{x := series 'x \bound{x}}
-}
-%
-We didn't say anything about the coefficients of the power
-series, so the coefficients are general expressions over the integers.
-This allows us to introduce denominators, symbolic constants, and other
-variables as needed.
-\xtc{
-Here the coefficients are integers (note that the coefficients
-are the Fibonacci
-numbers).
-}{
-\spadpaste{1/(1 - x - x**2) \free{x}}
-}
-\xtc{
-This series has coefficients that are rational numbers.
-}{
-\spadpaste{sin(x) \free{x}}
-}
-\xtc{
-When you enter this expression
-you introduce the symbolic constants \axiom{sin(1)} and \axiom{cos(1).}
-}{
-\spadpaste{sin(1 + x) \free{x}}
-}
-\xtc{
-When you enter the expression
-the variable \axiom{a} appears in the resulting series expansion.
-}{
-\spadpaste{sin(a * x) \free{x}}
-}
-
-\xtc{
-You can also convert an expression into a series expansion.
-This expression creates the series expansion of \axiom{1/log(y)}
-about \axiom{y = 1}.
-For details and more examples, see
-\downlink{``\ugxProblemSeriesConversionsTitle''}
-{ugxProblemSeriesConversionsPage} in Section 
-\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions}.
-}{
-\spadpaste{series(1/log(y),y = 1)}
-}
-
-You can create power series with more general coefficients.
-You normally accomplish this via a type declaration (see
-\downlink{``\ugTypesDeclareTitle''}{ugTypesDeclarePage} in Section 
-\ugTypesDeclareNumber\ignore{ugTypesDeclare}).
-See 
-\downlink{``\ugxProblemSeriesFunctionsTitle''}{ugxProblemSeriesFunctionsPage}
-in Section \ugxProblemSeriesFunctionsNumber\ignore{ugxProblemSeriesFunctions} 
-for some warnings about working with declared series.
-
-\xtc{
-We declare that \axiom{y} is a one-variable Taylor series
-(\axiomType{UTS} is the abbreviation for \axiomType{UnivariateTaylorSeries})
-in the variable \axiom{z} with \axiomType{FLOAT}
-(that is, floating-point) coefficients, centered about \axiom{0.}
-Then, by assignment, we obtain the Taylor expansion of
-\axiom{exp(z)} with floating-point coefficients.
-}{
-\spadpaste{y : UTS(FLOAT,'z,0) := exp(z) \bound{y}}
-}
-
-You can also create a power series by giving an explicit formula
-for its \eth{\axiom{n}} coefficient.
-For details and more examples, see
-\downlink{``\ugxProblemSeriesFormulaTitle''}{ugxProblemSeriesFormulaPage} 
-in Section \ugxProblemSeriesFormulaNumber\ignore{ugxProblemSeriesFormula}.
-
-\xtc{
-To create a series about
-\axiom{w = 0} whose \eth{\axiom{n}} Taylor coefficient
-is \axiom{1/n!}, you can evaluate this expression.
-This is the Taylor expansion of \axiom{exp(w)} at \axiom{w = 0}.
-}{
-\spadpaste{series(1/factorial(n),n,w = 0)}
-}
-%
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesCoefficientsTitle}{Coefficients of Power Series}
-\newcommand{\ugxProblemSeriesCoefficientsNumber}{8.9.2.}
-
-@
-\subsection{8.9.2. Coefficients of Power Series}
-\label{ugxProblemSeriesCoefficientsPage}
-\index{pages!ugxProblemSeriesCoefficientsPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesCoefficientsPage}
-\index{ugxProblemSeriesCoefficientsPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesCoefficientsPage}{8.9.2. Coefficients of Power Series}
-\beginscroll
-
-You can extract any coefficient from a power series---even one
-that hasn't been computed yet.
-This is possible because in Axiom, infinite series are
-represented by a list of the coefficients that have already been
-determined, together with a function for computing the additional
-coefficients.
-(This is known as {\it lazy evaluation}.) When you ask for a
-coefficient that hasn't yet been computed, Axiom computes
-whatever additional coefficients it needs and then stores them in
-the representation of the power series.
-
-\xtc{
-Here's an example of how to extract the coefficients of a power series.
-}{
-\spadpaste{x := series(x) \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{y := exp(x) * sin(x) \free{x} \bound{y}}
-}
-\xtc{
-This coefficient is readily available.
-}{
-\spadpaste{coefficient(y,6) \free{y}}
-}
-\xtc{
-But let's get the fifteenth coefficient of \axiom{y}.
-}{
-\spadpaste{coefficient(y,15) \free{y} \bound{y15}}
-}
-\xtc{
-If you look at \axiom{y}
-then you see that the coefficients up to order \axiom{15}
-have all been computed.
-}{
-\spadpaste{y \free{y15}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesArithmeticTitle}{Power Series Arithmetic}
-\newcommand{\ugxProblemSeriesArithmeticNumber}{8.9.3.}
-
-@
-\subsection{8.9.3. Power Series Arithmetic}
-\label{ugxProblemSeriesArithmeticPage}
-\index{pages!ugxProblemSeriesArithmeticPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesArithmeticPage}
-\index{ugxProblemSeriesArithmeticPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesArithmeticPage}{8.9.3. Power Series Arithmetic}
-\beginscroll
-
-You can manipulate power series using the usual arithmetic operations
-\axiomOpFrom{+}{UnivariatePuiseuxSeries},
-\axiomOpFrom{-}{UnivariatePuiseuxSeries},
-\axiomOpFrom{*}{UnivariatePuiseuxSeries}, and
-\axiomOpFrom{/}{UnivariatePuiseuxSeries}.
-%
-
-\labelSpace{1pc}
-\xtc{
-The results of these operations are also power series.
-}{
-\spadpaste{x := series x \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{(3 + x) / (1 + 7*x)}
-}
-\xtc{
-You can also compute \axiom{f(x) ** g(x)}, where \axiom{f(x)} and \axiom{g(x)}
-are two power series.
-}{
-\spadpaste{base := 1 / (1 - x) \free{x} \bound{base}}
-}
-%
-\xtc{
-}{
-\spadpaste{expon := x * base \free{x base} \bound{expon}}
-}
-%
-\xtc{
-}{
-\spadpaste{base ** expon \free{base expon}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesFunctionsTitle}{Functions on Power Series}
-\newcommand{\ugxProblemSeriesFunctionsNumber}{8.9.4.}
-
-@
-\subsection{8.9.4. Functions on Power Series}
-\label{ugxProblemSeriesFunctionsPage}
-\index{pages!ugxProblemSeriesFunctionsPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesFunctionsPage}
-\index{ugxProblemSeriesFunctionsPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesFunctionsPage}{8.9.4. Functions on Power Series}
-\beginscroll
-
-Once you have created a power series, you can apply transcendental
-functions
-(for example, \axiomFun{exp}, \axiomFun{log}, \axiomFun{sin}, \axiomFun{tan},
-\axiomFun{cosh}, etc.) to it.
-
-\labelSpace{1pc}
-%
-\xtc{
-To demonstrate this, we first create the power series
-expansion of the rational function
-\texht{
-${\displaystyle x^2} \over {\displaystyle 1 - 6x + x^2}$
-}{
-\axiom{x**2/(1 - 6*x + x**2)}
-}
-about \axiom{x = 0}.
-}{
-\spadpaste{x := series 'x \bound{x}}
-}
-%
-\xtc{
-}{
-\spadpaste{rat := x**2 / (1 - 6*x + x**2) \free{x} \bound{rat}}
-}
-%
-%
-\xtc{
-If you want to compute the series expansion of
-\texht{
-$\sin\left({\displaystyle x^2} \over {\displaystyle 1 - 6x + x^2}\right)$
-}{
-\axiom{sin(x**2/(1 - 6*x + x**2))}
-}
-you simply compute the sine of \axiom{rat}.
-}{
-\spadpaste{sin(rat) \free{rat}}
-}
-%
-
-\beginImportant
-\noindent {\bf Warning:}
-the type of the coefficients of a power series may
-affect the kind of computations that you can do with that series.
-This can only happen when you have made a declaration to
-specify a series domain with a certain type of coefficient.
-\endImportant
-
-\xtc{
-If you evaluate
-then you have declared that \axiom{y} is a one variable Taylor series
-(\axiomType{UTS} is the abbreviation for \axiomType{UnivariateTaylorSeries})
-in the variable \axiom{y} with \axiomType{FRAC INT}
-(that is, fractions of integer) coefficients, centered about \axiom{0}.
-}{
-\spadpaste{y : UTS(FRAC INT,y,0) := y \bound{y}}
-}
-%
-\xtc{
-You can now compute certain power series in \axiom{y},
-{\it provided} that these series have rational coefficients.
-}{
-\spadpaste{exp(y) \free{y}}
-}
-%
-\xtc{
-You can get examples of such series
-by applying transcendental functions to
-series in \axiom{y} that have no constant terms.
-}{
-\spadpaste{tan(y**2) \free{y}}
-}
-%
-\xtc{
-}{
-\spadpaste{cos(y + y**5) \free{y}}
-}
-%
-%
-\xtc{
-Similarly, you can compute the logarithm of a power series with rational
-coefficients if the constant coefficient is \axiom{1.}
-}{
-\spadpaste{log(1 + sin(y)) \free{y}}
-}
-%
-If you wanted to apply, say, the operation \axiomFun{exp} to a power
-series with a nonzero constant coefficient \texht{$a_0$}{\axiom{a0}},
-then the constant coefficient of the result would be
-\texht{$e^{a_0}$}{\axiom{exp(a0)}}, which is {\it not} a rational number.
-Therefore, evaluating \axiom{exp(2 + tan(y))} would generate an error
-message.
-
-If you want to compute the Taylor expansion of \axiom{exp(2 + tan(y))}, you must
-ensure that the coefficient domain has an operation \axiomFun{exp} defined
-for it.
-An example of such a domain is \axiomType{Expression Integer}, the type
-of formal functional expressions over the integers.
-%
-\xtc{
-When working with coefficients of this type,
-}{
-\spadpaste{z : UTS(EXPR INT,z,0) := z \bound{z}}
-}
-\xtc{
-this presents no problems.
-}{
-\spadpaste{exp(2 + tan(z)) \free{z}}
-}
-%
-Another way to create Taylor series whose coefficients are expressions over
-the integers is to use \axiomFun{taylor} which works similarly to
-\axiomFun{series}.
-%
-\xtc{
-This is equivalent to the previous computation, except that now we
-are using the variable \axiom{w} instead of \axiom{z}.
-}{
-\spadpaste{w := taylor 'w \bound{w}}
-}
-\xtc{
-}{
-\spadpaste{exp(2 + tan(w)) \free{w}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesConversionsTitle}{Converting to Power Series}
-\newcommand{\ugxProblemSeriesConversionsNumber}{8.9.5.}
-
-@
-\subsection{8.9.5. Converting to Power Series}
-\label{ugxProblemSeriesConversionsPage}
-\index{pages!ugxProblemSeriesConversionsPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesConversionsPage}
-\index{ugxProblemSeriesConversionsPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesConversionsPage}
-{8.9.5. Converting to Power Series}
-\beginscroll
-
-The \axiomType{ExpressionToUnivariatePowerSeries} package provides
-operations for computing series expansions of functions.
-
-\labelSpace{1pc}
-\xtc{
-Evaluate this
-to compute the Taylor expansion of \axiom{sin x} about
-\axiom{x = 0}.
-The first argument, \axiom{sin(x)}, specifies the function whose series
-expansion is to be computed and the second argument, \axiom{x = 0},
-specifies that the series is to be expanded in power of \axiom{(x - 0)},
-that is, in power of \axiom{x}.
-}{
-\spadpaste{taylor(sin(x),x = 0)}
-}
-\xtc{
-Here is the Taylor expansion of \axiom{sin x} about
-\texht{$x = \frac{\pi}{6}$}{\axiom{x = \%pi/6}}:
-}{
-\spadpaste{taylor(sin(x),x = \%pi/6)}
-}
-
-The function to be expanded into a series may have variables other than
-the series variable.
-%
-\xtc{
-For example, we may expand \axiom{tan(x*y)} as a Taylor series in
-\axiom{x}
-}{
-\spadpaste{taylor(tan(x*y),x = 0)}
-}
-%
-\xtc{
-or as a Taylor series in \axiom{y}.
-}{
-\spadpaste{taylor(tan(x*y),y = 0)}
-}
-\xtc{
-A more interesting function is
-\texht{${\displaystyle t e^{x t}} \over {\displaystyle e^t - 1}$}{(t *
-\%e**(x*t))/(\%e**t - 1)}.
-When we expand this function as a Taylor series in \axiom{t}
-the \eth{\axiom{n}} order coefficient is the \eth{\axiom{n}} Bernoulli
-polynomial
-divided by \axiom{n!}.
-}{
-\spadpaste{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0) \bound{bern}}
-}
-\xtc{
-Therefore, this and the next expression
-produce the same result.
-}{
-\spadpaste{factorial(6) * coefficient(bern,6) \free{bern}}
-}
-\xtc{
-}{
-\spadpaste{bernoulliB(6,x)}
-}
-
-Technically, a series with terms of negative degree is not considered to
-be a Taylor series, but, rather, a
-{\it Laurent series}.
-If you try to compute a Taylor series expansion of
-\texht{$\frac{x}{\log x}$}{x/log(x)}
-at \axiom{x = 1} via \axiom{taylor(x/log(x),x = 1)}
-you get an error message.
-The reason is that the function has a {\it pole} at \axiom{x =
-1}, meaning that
-its series expansion about this point has terms of negative degree.
-A series with finitely many terms of negative degree is called a Laurent
-series.
-\xtc{
-You get the desired series expansion by issuing this.
-}{
-\spadpaste{laurent(x/log(x),x = 1)}
-}
-
-Similarly, a series with terms of fractional degree is neither a Taylor
-series nor a Laurent series.
-Such a series is called a
-{\it Puiseux series}.
-The expression \axiom{laurent(sqrt(sec(x)),x = 3 * \%pi/2)}
-results in an error message
-because the series expansion about this point has terms of fractional degree.
-\xtc{
-However, this command produces what you want.
-}{
-\spadpaste{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
-}
-
-Finally, consider the case of functions that do not have Puiseux
-expansions about certain points.
-An example of this is \texht{$x^x$}{\axiom{x^x}} about \axiom{x = 0}.
-\axiom{puiseux(x**x,x=0)}
-produces an error message because of the
-type of singularity of the function at \axiom{x = 0}.
-\xtc{
-The general function \axiomFun{series} can be used in this case.
-Notice that the series returned is not, strictly speaking, a power series
-because of the \axiom{log(x)} in the expansion.
-}{
-\spadpaste{series(x**x,x=0)}
-}
-
-\beginImportant
-The operation \axiomFun{series} returns the most general type of
-infinite series.
-The user who is not interested in distinguishing
-between various types of infinite series may wish to use this operation
-exclusively.
-\endImportant
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesFormulaTitle}{Power Series from Formulas}
-\newcommand{\ugxProblemSeriesFormulaNumber}{8.9.6.}
-
-@
-\subsection{8.9.6. Power Series from Formulas}
-\label{ugxProblemSeriesFormulaPage}
-\begin{itemize}
-\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
-page~\pageref{ugxProblemSeriesConversionsPage}
-\item ugUserAnonPage \ref{ugUserAnonPage} on
-page~\pageref{ugUserAnonPage}
-\item ugxProblemSeriesConversionsPage \ref{ugxProblemSeriesConversionsPage} on
-page~\pageref{ugxProblemSeriesConversionsPage}
-\end{itemize}
-\index{pages!ugxProblemSeriesFormulaPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesFormulaPage}
-\index{ugxProblemSeriesFormulaPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesFormulaPage}{8.9.6. Power Series from Formulas}
-\beginscroll
-
-The \axiomType{GenerateUnivariatePowerSeries} package enables you to
-create power series from explicit formulas for their
-\eth{\axiom{n}} coefficients.
-In what follows, we construct series expansions for certain
-transcendental functions by giving formulas for their
-coefficients.
-You can also compute such series expansions directly simply by
-specifying the function and the point about which the series is to
-be expanded.
-See 
-\downlink{``\ugxProblemSeriesConversionsTitle''}
-{ugxProblemSeriesConversionsPage} in Section 
-\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions} 
-for more information.
-
-Consider the Taylor expansion of \texht{$e^x$}{\axiom{\%e**x}}
-about \axiom{x = 0}:
-\texht{\narrowDisplay{%
-\begin{array}{ccl}
-e^x &=& \displaystyle 1 + x + \frac{x^2}{2} + \frac{x^3}{6} + \cdots \\ \\
-    &=& \displaystyle\sum_{n=0}^\infty \frac{x^n}{n!}
-\end{array}}%
-}{
-\begin{verbatim}
-%e**x = 1 + x + x**2/2 + x**3/6 + ...
-      = sum from n=0 to n=%infty of x**n / n!
-\end{verbatim}
-}
-The \eth{\axiom{n}} Taylor coefficient is \axiom{1/n!}.
-%
-\xtc{
-This is how you create this series in Axiom.
-}{
-\spadpaste{series(n +-> 1/factorial(n),x = 0)}
-}
-
-The first argument specifies a formula for the \eth{\axiom{n}}
-coefficient by giving a function that maps \axiom{n} to
-\axiom{1/n!}.
-The second argument specifies that the series is to be expanded in
-powers of \axiom{(x - 0)}, that is, in powers of \axiom{x}.
-Since we did not specify an initial degree, the first term in the
-series was the term of degree 0 (the constant term).
-Note that the formula was given as an anonymous function.
-These are discussed in \downlink{``\ugUserAnonTitle''}{ugUserAnonPage} 
-in Section \ugUserAnonNumber\ignore{ugUserAnon}.
-
-Consider the Taylor expansion of \axiom{log x} about \axiom{x = 1}:
-\texht{\narrowDisplay{%
-\begin{array}{ccl}
-\log(x) &=& \displaystyle (x - 1) - \frac{(x - 1)^2}{2} + \frac{(x - 1)^3}{3} - \cdots \\ \\
-        &=& \displaystyle\sum_{n = 1}^\infty (-1)^{n-1} \frac{(x - 1)^n}{n}
-\end{array}}%
-}{
-\begin{verbatim}
-log x = (x - 1) - \(x - 1)^2/2 + (x - 1)^3/3 - ...
-      = sum from n=1 to n=%infty of (-1)**(n-1) (x - 1)**n / n
-\end{verbatim}
-}
-If you were to evaluate the expression
-\axiom{series(n +-> (-1)**(n-1) / n, x = 1)}
-you would get an error message because Axiom would try to
-calculate a term of degree \axiom{0} and therefore divide by \axiom{0.}
-
-\xtc{
-Instead, evaluate this.
-The third argument, \axiom{1..}, indicates that only terms of degree
-\axiom{n = 1, ...} are to be computed.
-}{
-\spadpaste{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
-}
-%
-
-Next consider the Taylor expansion of an odd function, say,
-\axiom{sin(x)}:
+\subsection{Asp73 Example Code}
+\label{Asp73ExampleCode}
+\index{pages!Asp73ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp73ExampleCode}
+\index{Asp73ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp73ExampleCode}{Asp73 Example Code}
 \begin{verbatim}
-sin x = x - x**3/3! + x**5/5! - ...
+      SUBROUTINE PDEF(X,Y,ALPHA,BETA,GAMMA,DELTA,EPSOLN,PHI,PSI)
+      DOUBLE PRECISION ALPHA,EPSOLN,PHI,X,Y,BETA,DELTA,GAMMA,PSI
+      ALPHA=DSIN(X)
+      BETA=Y
+      GAMMA=X*Y
+      DELTA=DCOS(X)*DSIN(Y)
+      EPSOLN=Y+X
+      PHI=X
+      PSI=Y
+      RETURN
+      END
 \end{verbatim}
-Here every other coefficient is zero and we would like to give an
-explicit formula only for the odd Taylor coefficients.
-%
-\xtc{
-This is one way to do it.
-The third argument, \axiom{1..}, specifies that the first term to be computed
-is the term of degree 1.
-The fourth argument, \axiom{2}, specifies that we
-increment by \axiom{2} to find the degrees of 
-subsequent terms, that is, the next
-term
-is of degree \axiom{1 + 2}, the next of degree \axiom{1 + 2 + 2}, etc.
-}{
-\spadpaste{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
-}
-%
-
-\xtc{
-The initial degree and the increment do not have to be integers.
-For example, this expression produces a series expansion of
-\texht{$\sin(x^{\frac{1}{3}})$}{\axiom{sin(x**(1/3))}}.
-}{
-\spadpaste{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
-}
-\xtc{
-While the increment must be positive, the initial degree may be negative.
-This yields the Laurent expansion of \axiom{csc(x)} at
-\axiom{x = 0}.
-%
-}{
-\spadpaste{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2) \bound{cscx}}
-}
-\xtc{
-Of course, the reciprocal of this power series is the Taylor expansion
-of \axiom{sin(x)}.
-}{
-\spadpaste{1/cscx \free{cscx}}
-}
-%
-\xtc{
-As a final example,
-here is the Taylor expansion of \axiom{asin(x)} about \axiom{x = 0}.
-}{
-\spadpaste{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2) \bound{asinx}}
-}
-\xtc{
-When we compute the \axiom{sin} of this series, we get \axiom{x}
-(in the sense that all higher terms computed so far are zero).
-}{
-\spadpaste{sin(asinx) \free{asinx}}
-}
-
-As we discussed in 
-\downlink{``\ugxProblemSeriesConversionsTitle''}
-{ugxProblemSeriesConversionsPage} in Section 
-\ugxProblemSeriesConversionsNumber\ignore{ugxProblemSeriesConversions},
-you can also use the operations \axiomFun{taylor}, \axiomFun{laurent} and
-\axiomFun{puiseux} instead of \axiomFun{series} if you know ahead of time
-what kind of exponents a series has.
-You can't go wrong using \axiomFun{series}, though.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesSubstituteTitle}{Substituting Numerical Values in Power Series}
-\newcommand{\ugxProblemSeriesSubstituteNumber}{8.9.7.}
-
-@
-\subsection{8.9.7. Substituting Numerical Values in Power Series}
-\label{ugxProblemSeriesSubstitutePage}
-\index{pages!ugxProblemSeriesSubstitutePage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesSubstitutePage}
-\index{ugxProblemSeriesSubstitutePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesSubstitutePage}{8.9.7. Substituting Numerical Values in Power Series}
-\beginscroll
-
-Use \axiomFunFrom{eval}{UnivariatePowerSeriesCategory}
-to substitute a numerical value for a variable in
-a power series.
-For example, here's a way to obtain numerical approximations of
-\axiom{\%e} from the Taylor series
-expansion of \axiom{exp(x)}.
-
-\labelSpace{1pc}
-\xtc{
-First you create the desired Taylor expansion.
-}{
-\spadpaste{f := taylor(exp(x)) \bound{f}}
-}
-\xtc{
-Then you evaluate the series at the value \axiom{1.0}.
-The result is a sequence of the partial sums.
-}{
-\spadpaste{eval(f,1.0)}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemSeriesBernoulliTitle}{Example: Bernoulli Polynomials and Sums of Powers}
-\newcommand{\ugxProblemSeriesBernoulliNumber}{8.9.8.}
-
-@
-\subsection{8.9.8. Example: Bernoulli Polynomials and Sums of Powers}
-\label{ugxProblemSeriesBernoulliPage}
-\index{pages!ugxProblemSeriesBernoulliPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemSeriesBernoulliPage}
-\index{ugxProblemSeriesBernoulliPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemSeriesBernoulliPage}
-{8.9.8. Example: Bernoulli Polynomials and Sums of Powers}
-\beginscroll
-
-Axiom provides operations for computing definite and
-indefinite sums.
-
-\labelSpace{3pc}
-\xtc{
-You can compute the sum of the first
-ten fourth powers by evaluating this.
-This creates a list whose entries are
-\texht{$m^4$}{\axiom{m**4}} as \texht{$m$}{\axiom{m}} ranges from 1
-to 10, and then computes the sum of the entries of that list.
-}{
-\spadpaste{reduce(+,[m**4 for m in 1..10])}
-}
-\xtc{
-You can also compute a formula for the sum of the first
-\texht{$k$}{\axiom{k}} fourth powers, where \texht{$k$}{\axiom{k}} is an
-unspecified positive integer.
-}{
-\spadpaste{sum4 := sum(m**4, m = 1..k) \bound{sum4}}
-}
-\xtc{
-This formula is valid for any positive integer \texht{$k$}{\axiom{k}}.
-For instance, if we replace \texht{$k$}{\axiom{k}} by 10,
-we obtain the number we computed earlier.
-}{
-\spadpaste{eval(sum4, k = 10) \free{sum4}}
-}
-
-You can compute a formula for the sum of the first
-\texht{$k$}{\axiom{k}} \eth{\axiom{n}} powers in a similar fashion.
-Just replace the \axiom{4} in the definition of \userfun{sum4} by
-any expression not involving \texht{$k$}{\axiom{k}}.
-Axiom computes these formulas using Bernoulli polynomials;
-we
-use the rest of this section to describe this method.
-
-%
-\xtc{
-First consider this function of \axiom{t} and \axiom{x}.
-}{
-\spadpaste{f := t*exp(x*t) / (exp(t) - 1) \bound{f}}
-}
-\noOutputXtc{
-Since the expressions involved get quite large, we tell
-Axiom to show us only terms of degree up to \axiom{5.}
-}{
-\spadpaste{)set streams calculate 5 \bound{set}}
-}
-%
-%
-\xtc{
-If we look at the Taylor expansion of \axiom{f(x, t)} about \axiom{t = 0,}
-we see that the coefficients of the powers of \axiom{t} are polynomials
-in \axiom{x}.
-}{
-\spadpaste{ff := taylor(f,t = 0) \free{f set} \bound{ff}}
-}
-%
-In fact, the \eth{\axiom{n}} coefficient in this series is essentially
-the \eth{\axiom{n}} Bernoulli polynomial:
-the \eth{\axiom{n}} coefficient of the series is
-\texht{${1 \over {n!}} B_n(x)$}{\axiom{1/n! * Bn(x)}}, where
-\texht{$B_n(x)$}{\axiom{Bn(x)}}
-is the \eth{\axiom{n}} Bernoulli polynomial.
-Thus, to obtain the \eth{\axiom{n}} Bernoulli polynomial, we multiply
-the \eth{\axiom{n}} coefficient
-of the series \axiom{ff} by \axiom{n!}.
-%
-\xtc{
-For example, the sixth Bernoulli polynomial is this.
-}{
-\spadpaste{factorial(6) * coefficient(ff,6) \free{ff}}
-}
-%
-\xtc{
-We derive some properties of the function \axiom{f(x,t)}.
-First we compute \axiom{f(x + 1,t) - f(x,t)}.
-}{
-\spadpaste{g := eval(f, x = x + 1) - f \bound{g} \free{f}}
-}
-%
-\xtc{
-If we normalize \axiom{g}, we see that it has a particularly simple form.
-}{
-\spadpaste{normalize(g) \free{g}}
-}
-%
-From this it follows that the \eth{\axiom{n}}
-coefficient in the Taylor expansion of
-\axiom{g(x,t)} at \axiom{t = 0} is
-\texht{${1\over{(n-1)\:!}}\:x^{n-1}$}{\axiom{1/(n-1)! * x**(n-1)}}.
-\xtc{
-If you want to check this, evaluate the next expression.
-}{
-\spadpaste{taylor(g,t = 0) \free{g}}
-}
-%
-However, since \axiom{g(x,t) = f(x+1,t)-f(x,t)}, it follows that the
-\eth{\axiom{n}} coefficient is
-\texht{${1 \over {n!}}\:(B_n(x+1)-B_n(x))$}{\axiom{1/n! * (Bn(x + 1) -
-Bn(x))}}.
-Equating coefficients, we see that
-\texht{${1\over{(n-1)\:!}}\:x^{n-1} = {1\over{n!}}\:(B_n(x + 1) -
-B_n(x))$}{\axiom{1/(n-1)! * x**(n-1) = 1/n! * (Bn(x + 1) - Bn(x))}}
-and, therefore,
-\texht{$x^{n-1} = {1\over{n}}\:(B_n(x + 1) -
-B_n(x))$}{\axiom{x**(n-1) = 1/n * (Bn(x + 1) - Bn(x))}}.
-%
-Let's apply this formula repeatedly, letting \axiom{x} vary between two
-integers \axiom{a} and \axiom{b}, with \axiom{a < b}:
-%
+\subsection{Asp74 Example Code}
+\label{Asp74ExampleCode}
+\index{pages!Asp74ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp74ExampleCode}
+\index{Asp74ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp74ExampleCode}{Asp74 Example Code}
 \begin{verbatim}
-  a**(n-1)       = 1/n * (Bn(a + 1) - Bn(a))
-  (a + 1)**(n-1) = 1/n * (Bn(a + 2) - Bn(a + 1))
-  (a + 2)**(n-1) = 1/n * (Bn(a + 3) - Bn(a + 2))
-     .
-     .
-     .
-  (b - 1)**(n-1) = 1/n * (Bn(b) - Bn(b - 1))
-  b**(n-1)       = 1/n * (Bn(b + 1) - Bn(b))
+      SUBROUTINE BNDY(X,Y,A,B,C,IBND)
+      DOUBLE PRECISION A,B,C,X,Y
+      INTEGER IBND
+      IF(IBND.EQ.0)THEN
+        A=0.0D0
+        B=1.0D0
+        C=-1.0D0*DSIN(X)
+      ELSEIF(IBND.EQ.1)THEN
+        A=1.0D0
+        B=0.0D0
+        C=DSIN(X)*DSIN(Y)
+      ELSEIF(IBND.EQ.2)THEN
+        A=1.0D0
+        B=0.0D0
+        C=DSIN(X)*DSIN(Y)
+      ELSEIF(IBND.EQ.3)THEN
+        A=0.0D0
+        B=1.0D0
+        C=-1.0D0*DSIN(Y)
+      ENDIF
+      END
 \end{verbatim}
-
-When we add these equations we find that
-the sum of the left-hand sides is
-\texht{$\sum_{m=a}^{b} m^{n-1},$}{\axiom{sum(m = a..b,m ** (n-1))},}%
-the sum of the
-\texht{$(n-1)^{\hbox{\small\rm st}}$}{\axiom{(n-1)}-st}
-powers from \axiom{a} to \axiom{b}.
-The sum of the right-hand sides is a ``telescoping series.''
-After cancellation, the sum is simply
-\texht{${1\over{n}}\:(B_n(b + 1) -
-B_n(a))$}{\axiom{1/n * (Bn(b + 1) - Bn(a))}}.
-
-Replacing \axiom{n} by \axiom{n + 1}, we have shown that
-\centerline{{\axiom{sum(m = a..b,m ** n) = 1/(n + 1) * (B<n+1>(b + 1) - B<n+1>(a))}.}}
-
-Let's use this to obtain the formula for the sum of fourth powers.
-\xtc{
-First we obtain the Bernoulli polynomial \texht{$B_5$}{\axiom{B5}}.
-}{
-\spadpaste{B5 := factorial(5) * coefficient(ff,5) \free{ff} \bound{B5}}
-}
-%
-\xtc{
-To find the sum of the first \texht{$k$}{\axiom{k}} 4th powers,
-we multiply \axiom{1/5} by
-\texht{$B_5(k+1) - B_5(1)$}{\axiom{B5(k + 1) - B5(1)}}.
-}{
-\spadpaste{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1)) \free{B5}}
-}
-%
-\xtc{
-This is the same formula that we obtained via \axiom{sum(m**4, m = 1..k)}.
-}{
-\spadpaste{sum4 \free{sum4}}
-}
-
-At this point you may want to do the same computation, but with an
-exponent other than \axiom{4.}
-For example, you might try to find a formula for the sum of the
-first \texht{$k$}{\axiom{k}} 20th powers.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemDEQTitle}{Solution of Differential Equations}
-\newcommand{\ugProblemDEQNumber}{8.10.}
-
-@
-\subsection{8.10. Solution of Differential Equations}
-\label{ugProblemDEQPage}
-\begin{itemize}
-\item ugProblemLinPolEqnPage \ref{ugProblemLinPolEqnPage} on
-page~\pageref{ugProblemLinPolEqnPage}
-\item ugxProblemLDEQClosedPage \ref{ugxProblemLDEQClosedPage} on
-page~\pageref{ugxProblemLDEQClosedPage}
-\item ugxProblemNLDEQClosedPage \ref{ugxProblemNLDEQClosedPage} on
-page~\pageref{ugxProblemNLDEQClosedPage}
-\item ugxProblemDEQSeriesPage \ref{ugxProblemDEQSeriesPage} on
-page~\pageref{ugxProblemDEQSeriesPage}
-\end{itemize}
-\index{pages!ugProblemDEQPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemDEQPage}
-\index{ugProblemDEQPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemDEQPage}{8.10. Solution of Differential Equations}
-\beginscroll
-%
-In this section we discuss Axiom's facilities for
-solving
-differential equations in closed-form and in series.
-
-Axiom provides facilities for closed-form solution of
-single differential equations of the following kinds:
-\indent{4}
-\beginitems
-\item[-] linear ordinary differential equations, and
-\item[-] non-linear first order ordinary differential equations
-when integrating factors can be found just by integration.
-\enditems
-\indent{0}
-
-For a discussion of the solution of systems of linear and polynomial
-equations, see
-\downlink{``\ugProblemLinPolEqnTitle''}{ugProblemLinPolEqnPage} in 
-Section \ugProblemLinPolEqnNumber\ignore{ugProblemLinPolEqn}.
-
-\beginmenu
-    \menudownlink{
-{8.10.1. Closed-Form Solutions of Linear Differential Equations}}
-{ugxProblemLDEQClosedPage}
-    \menudownlink{
-{8.10.2. Closed-Form Solutions of Non-Linear Differential Equations}}
-{ugxProblemNLDEQClosedPage}
-    \menudownlink{
-{8.10.3. Power Series Solutions of Differential Equations}}
-{ugxProblemDEQSeriesPage}
-\endmenu
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugxProblemLDEQClosedTitle}{Closed-Form Solutions of Linear Differential Equations}
-\newcommand{\ugxProblemLDEQClosedNumber}{8.10.1.}
-
-@
-\subsection{8.10.1. Closed-Form Solutions of Linear Differential Equations}
-\label{ugxProblemLDEQClosedPage}
-\index{pages!ugxProblemLDEQClosedPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemLDEQClosedPage}
-\index{ugxProblemLDEQClosedPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemLDEQClosedPage}
-{8.10.1. Closed-Form Solutions of Linear Differential Equations}
-\beginscroll
-
-A {\it differential equation} is an equation involving an unknown {\it
-function} and one or more of its derivatives.
-The equation is called {\it ordinary} if derivatives with respect to
-only one dependent variable appear in the equation (it is called {\it
-partial} otherwise).
-The package \axiomType{ElementaryFunctionODESolver} provides the
-top-level operation \spadfun {solve} for finding closed-form solutions
-of ordinary differential equations.
-
-To solve a differential equation, you must first create an operator for
-the unknown function.
-%
-\xtc{
-We let \axiom{y} be the unknown function in terms of \axiom{x}.
-}{
-\spadpaste{y := operator 'y \bound{y}}
-}
-%
-You then type the equation using \axiomFun{D} to create the
-derivatives of the unknown function \axiom{y(x)} where \axiom{x} is any
-symbol you choose (the so-called {\it dependent variable}).
-%
-\xtc{
-This is how you enter
-the equation \axiom{y'' + y' + y = 0}.
-}{
-\spadpaste{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1}\free{y}}
-}
-%
-The simplest way to invoke the \axiomFun{solve} command is with three
-arguments.
-\begin{items}
-\item the differential equation,
-\item the operator representing the unknown function,
-\item the dependent variable.
-\end{items}
-%
-\xtc{
-So, to solve the above equation, we enter this.
-}{
-\spadpaste{solve(deq, y, x) \free{e1}\free{y}}
-}
-%
-Since linear ordinary differential equations have infinitely many
-solutions, \axiomFun{solve} returns a {\it particular solution}
-\texht{$f_p$}{\axiom{f_p}}
-and a basis
-\texht{$f_1,\dots,f_n$}{\axiom{f1,...,fn}}
-for the solutions of the corresponding homogenuous equation.
-Any expression of the form
-\texht{$f_p + c_1 f_1 + \dots c_n f_n$}{\axiom{fp + c1 f1 + ... + cn fn}}
-where the \texht{$c_i$}{\axiom{ci}} do not involve
-the dependent variable is also a solution.
-This is similar to what you get when you solve systems of linear
-algebraic equations.
-
-A way to select a unique solution is to specify {\it initial
-conditions}: choose a value \axiom{a} for the dependent variable
-and specify the values of the unknown function and its derivatives
-at \axiom{a}.
-If the number of initial conditions is equal to the order of the
-equation, then the solution is unique (if it exists in closed
-form!) and \axiomFun{solve} tries to find it.
-To specify initial conditions to \axiomFun{solve}, use an
-\axiomType{Equation} of the form \axiom{x = a} for the third
-parameter instead of the dependent variable, and add a fourth
-parameter consisting of the list of values \axiom{y(a), y'(a), ...}.
-
-\xtc{
-To find the solution of \axiom{y'' + y = 0} satisfying \axiom{y(0) = y'(0) = 1},
-do this.
-}{
-\spadpaste{deq := D(y x, x, 2) + y x \bound{e2}\free{y}}
-}
-\xtc{
-You can omit the \axiom{= 0} when you enter the equation to be solved.
-}{
-\spadpaste{solve(deq, y, x = 0, [1, 1]) \free{e2}\free{y}}
-}
-%
-
-Axiom is not limited to linear differential equations with
-constant coefficients.
-It can also find solutions when the coefficients are rational or
-algebraic functions of the dependent variable.
-Furthermore, Axiom is not limited by the order of the equation.
-%
-\xtc{
-Axiom can solve the following third order equations with
-polynomial coefficients.
-}{
-\spadpaste{deq := x**3 * D(y x, x, 3) + x**2 * D(y x, x, 2) - 2 * x * D(y x, x) + 2 * y x = 2 * x**4 \bound{e3}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{e3}\free{y}}
-}
-%
-%
-\xtc{
-Here we are solving a homogeneous equation.
-}{
-\spadpaste{deq := (x**9+x**3) * D(y x, x, 3) + 18 * x**8 * D(y x, x, 2) - 90 * x * D(y x, x) - 30 * (11 * x**6 - 3) * y x \bound{e4}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{e4}\free{y}}
-}
-%
-On the other hand, and in contrast with the operation
-\axiomFun{integrate}, it can happen that Axiom finds no solution
-and that some closed-form solution still exists.
-While it is mathematically complicated to describe exactly when the
-solutions are guaranteed to be found, the following statements are
-correct and form good guidelines for linear ordinary differential
-equations:
-\begin{items}
-\item If the coefficients are constants, Axiom finds a complete basis
-of solutions (i,e, all solutions).
-\item If the coefficients are rational functions in the dependent variable,
-Axiom at least finds all solutions that do not involve algebraic
-functions.
-\end{items}
-%
-Note that this last statement does not mean that Axiom does not find
-the solutions that are algebraic functions.
-It means that it is not
-guaranteed that the algebraic function solutions will be found.
-%
-\xtc{
-This is an example where all the algebraic solutions are found.
-}{
-\spadpaste{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0 \bound{e5}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{solve(deq, y, x) \free{e5}\free{y}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemNLDEQClosedTitle}{Closed-Form Solutions of Non-Linear Differential Equations}
-\newcommand{\ugxProblemNLDEQClosedNumber}{8.10.2.}
-
-@
-\subsection{8.10.2. Closed-Form Solutions of Non-Linear Differential Equations}
-\label{ugxProblemNLDEQClosedPage}
-\index{pages!ugxProblemNLDEQClosedPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemNLDEQClosedPage}
-\index{ugxProblemNLDEQClosedPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemNLDEQClosedPage}
-{8.10.2. Closed-Form Solutions of Non-Linear Differential Equations}
-\beginscroll
-
-This is an example that shows how to solve a non-linear
-first order ordinary differential equation manually when an integrating
-factor can be found just by integration.
-At the end, we show you how to solve it directly.
-
-Let's solve the differential equation \axiom{y' = y / (x + y log y)}.
-%
-\xtc{
-Using the notation
-\axiom{m(x, y) + n(x, y) y' = 0},
-we have \axiom{m = -y} and \axiom{n = x + y log y}.
-}{
-\spadpaste{m := -y \bound{m}}
-}
-\xtc{
-}{
-\spadpaste{n := x + y * log y \bound{n}}
-}
-%
-\xtc{
-We first check for exactness, that is, does \axiom{dm/dy = dn/dx}?
-}{
-\spadpaste{D(m, y) - D(n, x) \free{m n}}
-}
-%
-This is not zero, so the equation is not exact.
-Therefore we must look for
-an integrating factor: a function \axiom{mu(x,y)} such that
-\axiom{d(mu m)/dy = d(mu n)/dx}.
-Normally, we first search for \axiom{mu(x,y)} depending only on
-\axiom{x} or only on \axiom{y}.
-%
-\xtc{
-Let's search for such a \axiom{mu(x)} first.
-}{
-\spadpaste{mu := operator 'mu \bound{mu}}
-}
-\xtc{
-}{
-\spadpaste{a := D(mu(x) * m, y) - D(mu(x) * n, x) \bound{a}\free{m n mu}}
-}
-%
-%
-\xtc{
-If the above is zero for a function
-\axiom{mu} that does {\it not} depend on \axiom{y}, then
-\axiom{mu(x)} is an integrating factor.
-}{
-\spadpaste{solve(a = 0, mu, x) \free{mu a}}
-}
-%
-The solution depends on \axiom{y}, so there is no integrating
-factor that depends on \axiom{x} only.
-%
-\xtc{
-Let's look for one that depends on \axiom{y} only.
-}{
-\spadpaste{b := D(mu(y) * m, y) - D(mu(y) * n, x) \bound{b}\free{mu m}}
-}
-\xtc{
-}{
-\spadpaste{sb := solve(b = 0, mu, y) \free{mu b}\bound{sb}}
-}
-\noindent
-We've found one!
-%
-\xtc{
-The above \axiom{mu(y)} is an integrating factor.
-We must multiply our initial equation
-(that is, \axiom{m} and \axiom{n}) by the integrating factor.
-}{
-\spadpaste{intFactor := sb.basis.1 \bound{intFactor}\free{sb}}
-}
-\xtc{
-}{
-\spadpaste{m := intFactor * m \bound{m1}\free{m intFactor}}
-}
-\xtc{
-}{
-\spadpaste{n := intFactor * n \bound{n1}\free{n intFactor}}
-}
-%
-\xtc{
-Let's check for exactness.
-}{
-\spadpaste{D(m, y) - D(n, x) \free{m1 n1}}
-}
-%
-We must solve the exact equation, that is, find a function
-\axiom{s(x,y)} such that
-\axiom{ds/dx = m}  and \axiom{ds/dy = n}.
-%
-\xtc{
-We start by writing \axiom{s(x, y) = h(y) + integrate(m, x)}
-where \axiom{h(y)} is an unknown function of \axiom{y}.
-This guarantees that \axiom{ds/dx = m}.
-}{
-\spadpaste{h := operator 'h \bound{h}}
-}
-\xtc{
-}{
-\spadpaste{sol := h y + integrate(m, x) \bound{sol}\free{h m1}}
-}
-%
-%
-\xtc{
-All we want is to find \axiom{h(y)} such that
-\axiom{ds/dy = n}.
-}{
-\spadpaste{dsol := D(sol, y) \free{sol}\bound{dsol}}
-}
-\xtc{
-}{
-\spadpaste{nsol := solve(dsol = n, h, y) \free{dsol n1 h}\bound{nsol}}
-}
-%
-\xtc{
-The above particular solution is the \axiom{h(y)} we want, so we just replace
-\axiom{h(y)} by it in the implicit solution.
-}{
-\spadpaste{eval(sol, h y = nsol.particular) \free{sol h nsol}}
-}
-%
-A first integral of the initial equation is obtained by setting
-this result equal to an arbitrary constant.
-
-Now that we've seen how to solve the equation ``by hand,''
-we show you how to do it with the \axiomFun{solve} operation.
-\xtc{
-First define \axiom{y} to be an operator.
-}{
-\spadpaste{y := operator 'y \bound{y}}
-}
-\xtc{
-Next we create the differential equation.
-}{
-\spadpaste{deq := D(y x, x) = y(x) / (x + y(x) * log y x) \bound{deqi}\free{y}}
-}
-\xtc{
-Finally, we solve it.
-}{
-\spadpaste{solve(deq, y, x) \free{deqi y}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemDEQSeriesTitle}{Power Series Solutions of Differential Equations}
-\newcommand{\ugxProblemDEQSeriesNumber}{8.10.3.}
-
-@
-\subsection{8.10.3. Power Series Solutions of Differential Equations}
-\label{ugxProblemDEQSeriesPage}
-\index{pages!ugxProblemDEQSeriesPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemDEQSeriesPage}
-\index{ugxProblemDEQSeriesPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemDEQSeriesPage}
-{8.10.3. Power Series Solutions of Differential Equations}
-\beginscroll
-
-The command to solve differential equations in power
-series
-around
-a particular initial point with specific initial conditions is called
-\axiomFun{seriesSolve}.
-It can take a variety of parameters, so we illustrate
-its use with some examples.
-
-\labelSpace{1pc}
-\noOutputXtc{
-Since the coefficients of some solutions
-are quite large, we reset the default to compute only seven terms.
-}{
-\spadpaste{)set streams calculate 7 \bound{c7}}
-}
-
-You can solve a single nonlinear equation of any order. For example,
-we solve  \axiom{y''' = sin(y'') * exp(y) + cos(x)}
-subject to \axiom{y(0) = 1, y'(0) = 0, y''(0) = 0}.
-
-\xtc{
-We first tell Axiom
-that the symbol \axiom{'y} denotes a new operator.
-}{
-\spadpaste{y := operator 'y \bound{y}}
-}
-\xtc{
-Enter the differential equation using \axiom{y} like any system
-function.
-}{
-\spadpaste{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq}\free{y}}
-}
-%
-\xtc{
-Solve it around \axiom{x = 0} with the initial conditions
-\axiom{y(0) = 1, y'(0) = y''(0) = 0}.
-}{
-\spadpaste{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y}\free{eq}\free{c7}}
-}
-
-You can also solve a system of nonlinear first order equations.
-For example, we solve a system that has \axiom{tan(t)} and
-\axiom{sec(t)} as solutions.
-
-\xtc{
-We tell Axiom that \axiom{x} is also an operator.
-}{
-\spadpaste{x := operator 'x\bound{x}}
-}
-\xtc{
-Enter the two equations forming our system.
-}{
-\spadpaste{eq1 := D(x(t), t) = 1 + x(t)**2\free{x}\free{y}\bound{eq1}}
-}
-%
-\xtc{
-}{
-\spadpaste{eq2 := D(y(t), t) = x(t) * y(t)\free{x}\free{y}\bound{eq2}}
-}
-%
-\xtc{
-Solve the system around \axiom{t = 0} with the initial conditions
-\axiom{x(0) = 0} and \axiom{y(0) = 1}.
-Notice that since we give the unknowns in the
-order \axiom{[x, y]}, the answer is a list of two series in the order
-\axiom{[series for x(t), series for y(t)]}.
-}{
-\spadpaste{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x}\free{y}\free{eq1}\free{eq2}\free{c7}}
-}
-\noindent
-The order in which we give the
-equations and the initial conditions has no effect on the order of
-the solution.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemFiniteTitle}{Finite Fields}
-\newcommand{\ugProblemFiniteNumber}{8.11.}
-
-@
-\subsection{8.11. Finite Fields}
-\label{ugProblemFinitePage}
-\begin{itemize}
-\item ugxProblemFinitePrimePage \ref{ugxProblemFinitePrimePage} on
-page~\pageref{ugxProblemFinitePrimePage}
-\item ugxProblemFinitePrimePage \ref{ugxProblemFinitePrimePage} on
-page~\pageref{ugxProblemFinitePrimePage}
-\item ugxProblemFiniteExtensionFinitePage \ref{ugxProblemFiniteExtensionFinitePage} on
-page~\pageref{ugxProblemFiniteExtensionFinitePage}
-\item ugxProblemFiniteModulusPage \ref{ugxProblemFiniteModulusPage} on
-page~\pageref{ugxProblemFiniteModulusPage}
-\item ugxProblemFiniteCyclicPage \ref{ugxProblemFiniteCyclicPage} on
-page~\pageref{ugxProblemFiniteCyclicPage}
-\item ugxProblemFiniteNormalPage \ref{ugxProblemFiniteNormalPage} on
-page~\pageref{ugxProblemFiniteNormalPage}
-\item ugxProblemFiniteConversionPage \ref{ugxProblemFiniteConversionPage} on
-page~\pageref{ugxProblemFiniteConversionPage}
-\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
-page~\pageref{ugxProblemFiniteUtilityPage}
-\end{itemize}
-\index{pages!ugProblemFinitePage!ug08.ht}
-\index{ug08.ht!pages!ugProblemFinitePage}
-\index{ugProblemFinitePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemFinitePage}{8.11. Finite Fields}
-\beginscroll
-%
-
-A {\it finite field} (also called a {\it Galois field}) is a
-finite algebraic structure where one can add, multiply and divide
-under the same laws (for example, commutativity, associativity or
-distributivity) as apply to the rational, real or complex numbers.
-Unlike those three fields, for any finite field there exists a
-positive prime integer \smath{p}, called the
-\axiomFun{characteristic}, such that \texht{$p \: x = 0$}{\axiom{p *
-x = 0}} for any element \smath{x} in the finite field.
-In fact, the number of elements in a finite field is a power of
-the characteristic and for each prime \smath{p} and positive
-integer \smath{n} there exists exactly one finite field with
-\texht{$p^n$}{\axiom{p**n}} elements, up to
-isomorphism.\footnote{For more information about the algebraic
-structure and properties of finite fields, see, for example, S.
-Lang, {\it Algebra}, Second Edition, New York: Addison-Wesley
-Publishing Company, Inc., 1984, ISBN 0 201 05487 6; or R.
-Lidl, H.
-Niederreiter, {\it Finite Fields}, Encyclopedia of Mathematics and
-Its Applications, Vol.
-20, Cambridge: Cambridge Univ.
-Press, 1983, ISBN 0 521 30240 4.}
-
-When \axiom{n = 1,} the field has \smath{p} elements and is
-called a {\it prime field}, discussed in \texht{the next
-section}{
-\downlink{``\ugxProblemFinitePrimeTitle''}{ugxProblemFinitePrimePage} 
-in Section \ugxProblemFinitePrimeNumber\ignore{ugxProblemFinitePrime}}.
-There are several ways of implementing extensions of finite
-fields, and Axiom provides quite a bit of freedom to allow
-you to choose the one that is best for your application.
-Moreover, we provide operations for converting among the different
-representations of extensions and different extensions of a single
-field.
-Finally, note that you usually need to package-call operations
-from finite fields if the operations do not take as an argument an
-object of the field.
-See \downlink{``\ugTypesPkgCallTitle''}{ugTypesPkgCallPage} in Section \ugTypesPkgCallNumber\ignore{ugTypesPkgCall} for more information on
-package-calling.
-
-\beginmenu
-    \menudownlink{{8.11.1. Modular Arithmetic and Prime Fields}}
-{ugxProblemFinitePrimePage}
-    \menudownlink{{8.11.2. Extensions of Finite Fields}}
-{ugxProblemFiniteExtensionFinitePage}
-    \menudownlink{{8.11.3. Irreducible Modulus Polynomial Representations}}
-{ugxProblemFiniteModulusPage}
-    \menudownlink{{8.11.4. Cyclic Group Representations}}
-{ugxProblemFiniteCyclicPage}
-    \menudownlink{{8.11.5. Normal Basis Representations}}
-{ugxProblemFiniteNormalPage}
-    \menudownlink{{8.11.6. Conversion Operations for Finite Fields}}
-{ugxProblemFiniteConversionPage}
-    \menudownlink{{8.11.7. Utility Operations for Finite Fields}}
-{ugxProblemFiniteUtilityPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFinitePrimeTitle}{Modular Arithmetic and Prime Fields}
-\newcommand{\ugxProblemFinitePrimeNumber}{8.11.1.}
-
-@
-\subsection{8.11.1. Modular Arithmetic and Prime Fields}
-\label{ugxProblemFinitePrimePage}
-\index{pages!ugxProblemFinitePrimePage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFinitePrimePage}
-\index{ugxProblemFinitePrimePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFinitePrimePage}
-{8.11.1. Modular Arithmetic and Prime Fields}
-\beginscroll
-
-Let \smath{n} be a positive integer.
-It is well known that you can get the same result if you perform
-addition, subtraction or multiplication of integers and then take
-the remainder on dividing by \smath{n} as if
-you had first done such remaindering on the operands, performed the
-arithmetic and then (if necessary) done remaindering again.
-This allows us to speak of arithmetic
-{\it modulo} \smath{n} or, more simply
-{\it mod} \smath{n}.
-\xtc{
-In Axiom, you use \axiomType{IntegerMod} to do such arithmetic.
-}{
-\spadpaste{(a,b) : IntegerMod 12 \bound{abdec}}
-}
-\xtc{
-}{
-\spadpaste{(a, b) := (16, 7) \free{abdec}\bound{a b}}
-}
-\xtc{
-}{
-\spadpaste{[a - b, a * b] \free{a b}}
-}
-\xtc{
-If \smath{n} is not prime, there is only a limited notion of
-reciprocals and division.
-}{
-\spadpaste{a / b \free{a b}}
-}
-\xtc{
-}{
-\spadpaste{recip a \free{a}}
-}
-\xtc{
-Here \axiom{7} and \axiom{12} are relatively prime, so \axiom{7}
-has a multiplicative inverse modulo \axiom{12}.
-}{
-\spadpaste{recip b \free{b}}
-}
-
-If we take \smath{n} to be a prime number \smath{p},
-then taking inverses and, therefore, division are generally defined.
-\xtc{
-Use \axiomType{PrimeField} instead of \axiomType{IntegerMod}
-for \smath{n} prime.
-}{
-\spadpaste{c : PrimeField 11 := 8 \bound{c}}
-}
-\xtc{
-}{
-\spadpaste{inv c \free{c}}
-}
-\xtc{
-You can also use \axiom{1/c} and \axiom{c**(-1)} for the inverse of
-\smath{c}.
-}{
-\spadpaste{9/c \free{c}}
-}
-
-\axiomType{PrimeField} (abbreviation \axiomType{PF}) checks if its
-argument is prime when you try to use an operation from it.
-If you know the argument is prime (particularly if it is large),
-\axiomType{InnerPrimeField} (abbreviation \axiomType{IPF}) assumes
-the argument has already been verified to be prime.
-If you do use a number that is not prime, you will eventually get
-an error message, most likely a division by zero message.
-For computer science applications, the most important finite fields
-are \axiomType{PrimeField 2} and its extensions.
-
-\xtc{
-In the following examples, we work with the finite field with
-\smath{p = 101} elements.
-}{
-\spadpaste{GF101 := PF 101 \bound{GF101} }
-}
-\xtc{
-Like many domains in Axiom, finite fields provide an operation
-for returning a random element of the domain.
-}{
-\spadpaste{x := random()\$GF101 \bound{x}\free{GF101}}
-}
-\xtc{
-}{
-\spadpaste{y : GF101 := 37 \bound{y}\free{GF101}}
-}
-\xtc{
-}{
-\spadpaste{z := x/y \bound{z}\free{x y}}
-}
-\xtc{
-}{
-\spadpaste{z * y - x \free{x y z}}
-}
-%
-\xtc{
-The element \axiom{2} is a {\it primitive element} of this field,
-}{
-\spadpaste{pe := primitiveElement()\$GF101 \bound{pe}\free{GF101}}
-}
-%
-\xtc{
-in the sense that its powers enumerate all nonzero elements.
-}{
-\spadpaste{[pe**i for i in 0..99] \free{pe}}
-}
-%
-%
-\xtc{
-If every nonzero element is a power of a primitive element, how do you
-determine what the exponent is?
-Use
-\axiomFun{discreteLog}.
-}{
-\spadpaste{ex := discreteLog(y) \bound{ex}\free{y}}
-}
-\xtc{
-}{
-\spadpaste{pe ** ex \free{ex pe}}
-}
-%
-\xtc{
-The \axiomFun{order} of a nonzero element \smath{x} is the
-smallest positive integer \smath{t} such
-\texht{$x^t = 1$}{\axiom{x**t = 1}}.
-}{
-\spadpaste{order y \free{y}}
-}
-\xtc{
-The order of a primitive element is the defining \smath{p-1}.
-}{
-\spadpaste{order pe \free{pe}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteExtensionFiniteTitle}{Extensions of Finite Fields}
-\newcommand{\ugxProblemFiniteExtensionFiniteNumber}{8.11.2.}
-
-@
-\subsection{8.11.2. Extensions of Finite Fields}
-\label{ugxProblemFiniteExtensionFinitePage}
-\index{pages!ugxProblemFiniteExtensionFinitePage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteExtensionFinitePage}
-\index{ugxProblemFiniteExtensionFinitePage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteExtensionFinitePage}
-{8.11.2. Extensions of Finite Fields}
-\beginscroll
-
-When you want to work with an extension of a finite field in Axiom,
-you have three choices to make:
-\indent{4}
-\beginitems
-\item[1. ] Do you want to generate an extension of the prime field
-(for example, \axiomType{PrimeField 2}) or an extension of a given field?
-%
-\item[2. ] Do you want to use a representation that is particularly
-efficient for multiplication, exponentiation and addition but
-uses a lot of computer memory (a representation that models the cyclic
-group structure of the multiplicative group of the field extension
-and uses a Zech logarithm table),  one that
-uses a normal basis for the vector space structure of the field
-extension, or one that performs arithmetic modulo an irreducible
-polynomial?
-The cyclic group representation is only usable up to ``medium''
-(relative to your machine's performance)
-sized fields.
-If the field is large and the normal basis is relatively simple,
-the normal basis representation is more efficient for exponentiation than
-the irreducible polynomial representation.
-%
-\item[3. ] Do you want to provide a polynomial explicitly, a root of which
-``generates'' the extension in one of the three senses in (2),
-or do you wish to have the polynomial generated for you?
-\enditems
-\indent{0}
-
-This illustrates one of the most important features of Axiom:
-you can choose exactly the right data-type and representation to
-suit your application best.
-
-We first tell you what domain constructors to use for each case
-above, and then give some examples.
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that automatically generate extensions of the prime field:
-\newline
-\axiomType{FiniteField} \newline
-\axiomType{FiniteFieldCyclicGroup} \newline
-\axiomType{FiniteFieldNormalBasis}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that generate extensions of an arbitrary field:
-\newline
-\axiomType{FiniteFieldExtension} \newline
-\axiomType{FiniteFieldExtensionByPolynomial} \newline
-\axiomType{FiniteFieldCyclicGroupExtension} \newline
-\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} \newline
-\axiomType{FiniteFieldNormalBasisExtension} \newline
-\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that use a cyclic group representation:
-\newline
-\axiomType{FiniteFieldCyclicGroup} \newline
-\axiomType{FiniteFieldCyclicGroupExtension} \newline
-\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that use a normal basis representation:
-\newline
-\axiomType{FiniteFieldNormalBasis} \newline
-\axiomType{FiniteFieldNormalBasisExtension} \newline
-\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that use an irreducible modulus polynomial representation:
-\newline
-\axiomType{FiniteField} \newline
-\axiomType{FiniteFieldExtension} \newline
-\axiomType{FiniteFieldExtensionByPolynomial}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors that generate a polynomial for you:
-\newline
-\axiomType{FiniteField} \newline
-\axiomType{FiniteFieldExtension} \newline
-\axiomType{FiniteFieldCyclicGroup} \newline
-\axiomType{FiniteFieldCyclicGroupExtension} \newline
-\axiomType{FiniteFieldNormalBasis} \newline
-\axiomType{FiniteFieldNormalBasisExtension}
-
-\texht{\hangafter=1\hangindent=2pc}{\noindent}
-Constructors for which you provide a polynomial:
-\newline
-\axiomType{FiniteFieldExtensionByPolynomial} \newline
-\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} \newline
-\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
-
-These constructors are discussed in the following sections where
-we collect together descriptions of extension fields that have the
-same underlying representation.\footnote{For
-more information on the implementation aspects of finite
-fields, see
-J. Grabmeier, A. Scheerhorn, {\it Finite Fields in AXIOM,}
-Technical Report, IBM Heidelberg Scientific Center, 1992.}
-
-If you don't really care about all this detail, just use
-\axiomType{FiniteField}.
-As your knowledge of your application and its Axiom implementation
-grows, you can come back and choose an alternative constructor that
-may improve the efficiency of your code.
-Note that the exported operations are almost the same for all constructors
-of finite field extensions and include the operations exported by
-\axiomType{PrimeField}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteModulusTitle}{Irreducible Modulus Polynomial Representations}
-\newcommand{\ugxProblemFiniteModulusNumber}{8.11.3.}
-
-@
-\subsection{8.11.3. Irreducible Modulus Polynomial Representations}
-\label{ugxProblemFiniteModulusPage}
-\begin{itemize}
-\item ugxProblemFiniteExtensionFinitePage 
-\ref{ugxProblemFiniteExtensionFinitePage} on
-page~\pageref{ugxProblemFiniteExtensionFinitePage}
-\end{itemize}
-\index{pages!ugxProblemFiniteModulusPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteModulusPage}
-\index{ugxProblemFiniteModulusPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteModulusPage}
-{8.11.3. Irreducible Modulus Polynomial Representations}
-\beginscroll
-
-All finite field extension constructors discussed in this
-section
-use a representation that performs arithmetic with univariate
-(one-variable) polynomials modulo an irreducible polynomial.
-This polynomial may be given explicitly by you or automatically
-generated.
-The ground field may be the prime field or one you specify.
-See 
-\downlink{``\ugxProblemFiniteExtensionFiniteTitle''}
-{ugxProblemFiniteExtensionFinitePage} in Section 
-\ugxProblemFiniteExtensionFiniteNumber\ignore{ugxProblemFiniteExtensionFinite}
-for general information about finite field extensions.
-
-For \axiomType{FiniteField} (abbreviation \axiomType{FF}) you provide a
-prime number \smath{p} and an extension degree \smath{n}.
-This degree can be 1.
-%
-\xtc{
-Axiom uses the prime field \axiomType{PrimeField(p)},
-here \axiomType{PrimeField 2},
-and it chooses an irreducible polynomial of degree \smath{n},
-here 12, over the ground field.
-}{
-\spadpaste{GF4096 := FF(2,12); \bound{GF4096}}
-}
-%
-
-The objects in the generated field extension are polynomials
-of degree at most \smath{n-1} with coefficients in the
-prime field.
-The polynomial indeterminate is automatically chosen by Axiom and
-is typically something like \axiom{\%A} or \axiom{\%D}.
-These (strange) variables are {\it only} for output display;
-there are several ways to construct elements of this field.
-
-The operation \axiomFun{index} enumerates the elements of the field
-extension and accepts as argument the integers from 1 to
-\smath{p \texht{^}{**} n}.
-%
-\xtc{
-The expression
-\axiom{index(p)} always gives the indeterminate.
-}{
-\spadpaste{a := index(2)\$GF4096 \bound{a}\free{GF4096}}
-}
-%
-%
-\xtc{
-You can build polynomials in \smath{a} and calculate in
-\axiom{GF4096}.
-}{
-\spadpaste{b := a**12 - a**5 + a \bound{b}\free{a}}
-}
-\xtc{
-}{
-\spadpaste{b ** 1000 \free{b}}
-}
-\xtc{
-}{
-\spadpaste{c := a/b \free{a b}\bound{c}}
-}
-%
-\xtc{
-Among the available operations are \axiomFun{norm} and \axiomFun{trace}.
-}{
-\spadpaste{norm c \free{c}}
-}
-\xtc{
-}{
-\spadpaste{trace c \free{c}}
-}
-%
-%
-
-Since any nonzero element is a power of a primitive element, how
-do we discover what the exponent is?
-%
-\xtc{
-The operation \axiomFun{discreteLog} calculates
-the exponent and,
-if it is called with only one argument, always refers to the primitive
-element returned by \axiomFun{primitiveElement}.
-}{
-\spadpaste{dL := discreteLog a \free{a}\bound{dL}}
-}
-\xtc{
-}{
-\spadpaste{g ** dL \free{dL g}}
-}
-
-\axiomType{FiniteFieldExtension} (abbreviation \axiomType{FFX}) is
-similar to \axiomType{FiniteField} except that the
-ground-field for \axiomType{FiniteFieldExtension} is arbitrary and
-chosen by you.
-%
-\xtc{
-In case you select the prime field as ground field, there is
-essentially no difference between the constructed two finite field
-extensions.
-}{
-\spadpaste{GF16 := FF(2,4); \bound{GF16}}
-}
-\xtc{
-}{
-\spadpaste{GF4096 := FFX(GF16,3); \bound{GF4096x}\free{GF16}}
-}
-\xtc{
-}{
-\spadpaste{r := (random()\$GF4096) ** 20 \free{GF4096x}\bound{r}}
-}
-\xtc{
-}{
-\spadpaste{norm(r) \free{r}}
-}
-%
-
-\axiomType{FiniteFieldExtensionByPolynomial} (abbreviation \axiomType{FFP})
-is similar to \axiomType{FiniteField} and \axiomType{FiniteFieldExtension}
-but is more general.
-%
-\xtc{
-}{
-\spadpaste{GF4 := FF(2,2); \bound{GF4}}
-}
-\xtc{
-}{
-\spadpaste{f := nextIrreduciblePoly(random(6)\$FFPOLY(GF4))\$FFPOLY(GF4) \free{GF4}\bound{f}}
-}
-\xtc{
-For \axiomType{FFP} you choose both the
-ground field and the irreducible polynomial used in the representation.
-The degree of the extension is the degree of the polynomial.
-}{
-\spadpaste{GF4096 := FFP(GF4,f); \bound{GF4096y}\free{f GF4}}
-}
-\xtc{
-}{
-\spadpaste{discreteLog random()\$GF4096 \free{GF4096y}}
-}
-%
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteCyclicTitle}{Cyclic Group Representations}
-\newcommand{\ugxProblemFiniteCyclicNumber}{8.11.4.}
-
-@
-\subsection{8.11.4. Cyclic Group Representations}
-\label{ugxProblemFiniteCyclicPage}
-\begin{itemize}
-\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
-page~\pageref{ugxProblemFiniteUtilityPage}
-\end{itemize}
-\index{pages!ugxProblemFiniteCyclicPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteCyclicPage}
-\index{ugxProblemFiniteCyclicPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteCyclicPage}{8.11.4. Cyclic Group Representations}
-\beginscroll
-
-In every finite field there exist elements whose powers are all the
-nonzero elements of the field.
-Such an element is called a {\it primitive element}.
-
-In \axiomType{FiniteFieldCyclicGroup} (abbreviation \axiomType{FFCG})
-the nonzero elements are represented by the
-powers of a fixed primitive
-element
-of the field (that is, a generator of its
-cyclic multiplicative group).
-Multiplication (and hence exponentiation) using this representation is easy.
-To do addition, we consider our primitive element as the root of a primitive
-polynomial (an irreducible polynomial whose
-roots are all primitive).
-See 
-\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
-in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility} 
-for examples of how to
-compute such a polynomial.
-
-%
-\xtc{
-To use \axiomType{FiniteFieldCyclicGroup} you provide a prime number and an
-extension degree.
-}{
-\spadpaste{GF81 := FFCG(3,4); \bound{GF81}}
-}
-%
-%
-\xtc{
-Axiom uses the prime field, here \axiomType{PrimeField 3}, as the
-ground field and it chooses a primitive polynomial of degree
-\smath{n}, here 4, over the prime field.
-}{
-\spadpaste{a := primitiveElement()\$GF81 \bound{a}\free{GF81}}
-}
-%
-%
-\xtc{
-You can calculate in \axiom{GF81}.
-}{
-\spadpaste{b  := a**12 - a**5 + a \bound{b}\free{a}}
-}
-%
-\xtc{
-In this representation of finite fields the discrete logarithm
-of an element can be seen directly in its output form.
-}{
-\spadpaste{b \free{b}}
-}
-\xtc{
-}{
-\spadpaste{discreteLog b \free{b}}
-}
-%
-
-\axiomType{FiniteFieldCyclicGroupExtension} (abbreviation
-\axiomType{FFCGX}) is similar to \axiomType{FiniteFieldCyclicGroup}
-except that the ground field for
-\axiomType{FiniteFieldCyclicGroupExtension} is arbitrary and chosen
-by you.
-In case you select the prime field as ground field, there is
-essentially no difference between the constructed two finite field
-extensions.
-%
-\xtc{
-}{
-\spadpaste{GF9 := FF(3,2); \bound{GF9}}
-}
-\xtc{
-}{
-\spadpaste{GF729 := FFCGX(GF9,3); \bound{GF729}\free{GF9}}
-}
-\xtc{
-}{
-\spadpaste{r := (random()\$GF729) ** 20 \free{GF729}\bound{r}}
-}
-\xtc{
-}{
-\spadpaste{trace(r) \free{r}}
-}
-%
-
-\axiomType{FiniteFieldCyclicGroupExtensionByPolynomial}
-(abbreviation \axiomType{FFCGP})
-is similar to \axiomType{FiniteFieldCyclicGroup} and
-\axiomType{FiniteFieldCyclicGroupExtension}
-but is more general.
-For \axiomType{FiniteFieldCyclicGroupExtensionByPolynomial} you choose both the
-ground field and the irreducible polynomial used in the representation.
-The degree of the extension is the degree of the polynomial.
-%
-\xtc{
-}{
-\spadpaste{GF3  := PrimeField 3; \bound{GF3}}
-}
-\xtc{
-We use a utility operation to generate an irreducible primitive
-polynomial (see 
-\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
-in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility}).
-The polynomial has one variable that is ``anonymous'': it displays
-as a question mark.
-}{
-\spadpaste{f := createPrimitivePoly(4)\$FFPOLY(GF3) \bound{f}\free{GF3}}
-}
-\xtc{
-}{
-\spadpaste{GF81 := FFCGP(GF3,f); \bound{GF81x}\free{f GF3}}
-}
-\xtc{
-Let's look at a random element from this field.
-}{
-\spadpaste{random()\$GF81 \free{GF81x}}
-}
-%
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteNormalTitle}{Normal Basis Representations}
-\newcommand{\ugxProblemFiniteNormalNumber}{8.11.5.}
-
-@
-\subsection{8.11.5. Normal Basis Representations}
-\label{ugxProblemFiniteNormalPage}
-\begin{itemize}
-\item ugxProblemFiniteUtilityPage \ref{ugxProblemFiniteUtilityPage} on
-page~\pageref{ugxProblemFiniteUtilityPage}
-\end{itemize}
-\index{pages!ugxProblemFiniteNormalPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteNormalPage}
-\index{ugxProblemFiniteNormalPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteNormalPage}{8.11.5. Normal Basis Representations}
-\beginscroll
-
-Let \smath{K} be a finite extension of degree \smath{n} of the
-finite field \smath{F} and let \smath{F} have \smath{q}
-elements.
-An element \smath{x} of \smath{K} is said to be
-{\it normal} over \smath{F} if the elements
-\centerline{{\axiom{1, x**q, x**(q**2), ..., x**(q**(n-1))}}}
-form a basis of \smath{K} as a vector space over \smath{F}.
-Such a basis is called a {\it normal basis}.\footnote{This
-agrees with the general definition of a normal basis because the
-\smath{n} distinct powers of the automorphism
-\texht{$x \mapsto x^q$}{\axiom{x +-> x**q}}
-constitute the Galois group of \smath{K/F}.}
-
-If \smath{x} is normal over \smath{F}, its minimal
-polynomial is also said to be {\it normal} over \smath{F}.
-There exist normal bases for all finite extensions of arbitrary
-finite fields.
-
-In \axiomType{FiniteFieldNormalBasis} (abbreviation
-\axiomType{FFNB}), the elements of the finite field are represented
-by coordinate vectors with respect to a normal basis.
-
-\xtc{
-You provide a prime \smath{p} and an extension degree
-\smath{n}.
-}{
-\spadpaste{K := FFNB(3,8) \bound{K}}
-}
-%
-Axiom uses the prime field \axiomType{PrimeField(p)},
-here \axiomType{PrimeField 3},
-and it chooses a normal polynomial of degree
-\smath{n}, here 8, over the ground field.
-The remainder class of the indeterminate is used
-as the normal element.
-The polynomial indeterminate is automatically chosen by Axiom and
-is typically something like \axiom{\%A} or \axiom{\%D}.
-These (strange) variables are only for output display;
-there are several ways to construct elements of this field.
-The output of the basis elements is something like
-\texht{$\%A^{q^i}.$}{
+\subsection{Asp77 Example Code}
+\label{Asp77ExampleCode}
+\index{pages!Asp77ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp77ExampleCode}
+\index{Asp77ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp77ExampleCode}{Asp77 Example Code}
 \begin{verbatim}
-   i
-  q
-%A  .
+      SUBROUTINE FCNF(X,F)
+      DOUBLE PRECISION X
+      DOUBLE PRECISION F(2,2)
+      F(1,1)=0.0D0
+      F(1,2)=1.0D0
+      F(2,1)=0.0D0
+      F(2,2)=-10.0D0
+      RETURN
+      END
 \end{verbatim}
-}
-%
-\xtc{
-}{
-\spadpaste{a := normalElement()\$K \bound{a}\free{K}}
-}
-%
-%
-\xtc{
-You can calculate in \smath{K} using \smath{a}.
-}{
-\spadpaste{b  := a**12 - a**5 + a \bound{b}\free{a}}
-}
-
-\axiomType{FiniteFieldNormalBasisExtension} (abbreviation
-\axiomType{FFNBX}) is
-similar to \axiomType{FiniteFieldNormalBasis} except that the
-groundfield for \axiomType{FiniteFieldNormalBasisExtension} is arbitrary and
-chosen by you.
-In case you select the prime field as ground field, there is
-essentially no difference between the constructed two finite field
-extensions.
-\xtc{
-}{
-\spadpaste{GF9 := FFNB(3,2); \bound{GF9}}
-}
-\xtc{
-}{
-\spadpaste{GF729 := FFNBX(GF9,3); \bound{GF729}\free{GF9}}
-}
-\xtc{
-}{
-\spadpaste{r := random()\$GF729 \bound{r}\free{GF729}}
-}
-\xtc{
-}{
-\spadpaste{r + r**3 + r**9 + r**27 \free{r}}
-}
-
-\axiomType{FiniteFieldNormalBasisExtensionByPolynomial}
-(abbreviation \axiomType{FFNBP}) is similar to
-\axiomType{FiniteFieldNormalBasis} and
-\axiomType{FiniteFieldNormalBasisExtension} but is more general.
-For \axiomType{FiniteFieldNormalBasisExtensionByPolynomial} you
-choose both the ground field and the irreducible polynomial used
-in the representation.
-The degree of the extension is the degree of the polynomial.
-
-%
-\xtc{
-}{
-\spadpaste{GF3 := PrimeField 3; \bound{GF3}}
-}
-\xtc{
-We use a utility operation to generate an irreducible normal
-polynomial (see 
-\downlink{``\ugxProblemFiniteUtilityTitle''}{ugxProblemFiniteUtilityPage} 
-in Section \ugxProblemFiniteUtilityNumber\ignore{ugxProblemFiniteUtility}).
-The polynomial has one variable that is ``anonymous'': it displays
-as a question mark.
-}{
-\spadpaste{f := createNormalPoly(4)\$FFPOLY(GF3) \free{GF3}\bound{f}}
-}
-\xtc{
-}{
-\spadpaste{GF81 := FFNBP(GF3,f); \bound{GF81}\free{f GF3}}
-}
-\xtc{
-Let's look at a random element from this field.
-}{
-\spadpaste{r := random()\$GF81 \free{GF81}\bound{r1}}
-}
-\xtc{
-}{
-\spadpaste{r * r**3 * r**9 * r**27 \free{r1}}
-}
-\xtc{
-}{
-\spadpaste{norm r \free{r1}}
-}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteConversionTitle}{Conversion Operations for Finite Fields}
-\newcommand{\ugxProblemFiniteConversionNumber}{8.11.6.}
-
-@
-\subsection{8.11.6. Conversion Operations for Finite Fields}
-\label{ugxProblemFiniteConversionPage}
-\begin{itemize}
-\item ugxProblemFiniteExtensionFinitePage 
-\ref{ugxProblemFiniteExtensionFinitePage} on
-page~\pageref{ugxProblemFiniteExtensionFinitePage}
-\end{itemize}
-\index{pages!ugxProblemFiniteConversionPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteConversionPage}
-\index{ugxProblemFiniteConversionPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteConversionPage}
-{8.11.6. Conversion Operations for Finite Fields}
-\beginscroll
-
-\labelSpace{5pc}
-%
-\xtc{
-Let \texht{$K$}{\axiom{K}} be a finite field.
-}{
-\spadpaste{K := PrimeField 3 \bound{K}}
-}
-%
-An extension field \texht{$K_m$}{\axiom{Km}} of degree
-\smath{m} over \texht{$K$}{\axiom{K}} is a subfield of an
-extension field \texht{$K_n$}{\axiom{Kn}} of degree \smath{n}
-over \texht{$K$}{\axiom{K}} if and only if \smath{m} divides
-\smath{n}.
-\texht{
-\centerline{{\begin{tabular}{ccc}}}
-\centerline{{$K_n$ }}
-\centerline{{$|$ }}
-\centerline{{$K_m$ & $\Longleftrightarrow$ & $m | n$ }}
-\centerline{{$|$ }}
-\centerline{{K}}
-\centerline{{\end{tabular}}}
-}{
+\subsection{Asp78 Example Code}
+\label{Asp78ExampleCode}
+\index{pages!Asp78ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp78ExampleCode}
+\index{Asp78ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp78ExampleCode}{Asp78 Example Code}
 \begin{verbatim}
-Kn
-|
-Km   <==>  m | n
-|
-K
+      SUBROUTINE FCNG(X,G)
+      DOUBLE PRECISION G(*),X
+      G(1)=0.0D0
+      G(2)=0.0D0
+      END
 \end{verbatim}
-}
-\axiomType{FiniteFieldHomomorphisms} provides conversion operations
-between different extensions of one
-fixed finite ground field and between different representations of
-these finite fields.
-\xtc{
-Let's choose \smath{m} and \smath{n},
-}{
-\spadpaste{(m,n) := (4,8) \bound{m n}}
-}
-\xtc{
-build the field extensions,
-}{
-\spadpaste{Km := FiniteFieldExtension(K,m) \bound{Km}\free{K m}}
-}
-\xtc{
-and pick two random elements from the smaller field.
-}{
-\spadpaste{Kn := FiniteFieldExtension(K,n) \bound{Kn}\free{K n}}
-}
-\xtc{
-}{
-\spadpaste{a1 := random()\$Km \bound{a1}\free{Km}}
-}
-\xtc{
-}{
-\spadpaste{b1 := random()\$Km \bound{b1}\free{Km}}
-}
-%
-\xtc{
-Since \smath{m} divides \smath{n},
-\texht{$K_m$}{\axiom{Km}} is a subfield of \texht{$K_n$}{\axiom{Kn}}.
-}{
-\spadpaste{a2 := a1 :: Kn \bound{a2}\free{a1 Kn}}
-}
-\xtc{
-Therefore we can convert the elements of \texht{$K_m$}{\axiom{Km}}
-into elements of \texht{$K_n$}{\axiom{Kn}}.
-}{
-\spadpaste{b2 := b1 :: Kn \bound{b2}\free{b1 Kn}}
-}
-%
-%
-\xtc{
-To check this, let's do some arithmetic.
-}{
-\spadpaste{a1+b1 - ((a2+b2) :: Km) \free{a1 a2 b1 b2 Km Kn}}
-}
-\xtc{
-}{
-\spadpaste{a1*b1 - ((a2*b2) :: Km) \free{a1 a2 b1 b2 Km Kn}}
-}
-%
-There are also conversions available for the
-situation, when \texht{$K_m$}{\axiom{Km}} and \texht{$K_n$}{\axiom{Kn}}
-are represented in different ways (see
-\downlink{``\ugxProblemFiniteExtensionFiniteTitle''}
-{ugxProblemFiniteExtensionFinitePage} in Section 
-\ugxProblemFiniteExtensionFiniteNumber
-\ignore{ugxProblemFiniteExtensionFinite}).
-For example let's choose \texht{$K_m$}{\axiom{Km}} where the
-representation is 0 plus the cyclic multiplicative group and
-\texht{$K_n$}{\axiom{Kn}} with a normal basis representation.
-\xtc{
-}{
-\spadpaste{Km := FFCGX(K,m) \bound{Km2}\free{K m}}
-}
-\xtc{
-}{
-\spadpaste{Kn := FFNBX(K,n) \bound{Kn2}\free{K n}}
-}
-\xtc{
-}{
-\spadpaste{(a1,b1) := (random()\$Km,random()\$Km) \bound{a12 b12}\free{Km2}}
-}
-\xtc{
-}{
-\spadpaste{a2 := a1 :: Kn \bound{a22}\free{a12 Kn2}}
-}
-\xtc{
-}{
-\spadpaste{b2 := b1 :: Kn \bound{b22}\free{b12 Kn2}}
-}
-%
-\xtc{
-Check the arithmetic again.
-}{
-\spadpaste{a1+b1 - ((a2+b2) :: Km) \free{a12 a22 b12 b22 Km2}}
-}
-\xtc{
-}{
-\spadpaste{a1*b1 - ((a2*b2) :: Km) \free{a12 a22 b12 b22 Km2}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugxProblemFiniteUtilityTitle}
-{Utility Operations for Finite Fields}
-\newcommand{\ugxProblemFiniteUtilityNumber}{8.11.7.}
-
-@
-\subsection{8.11.7. Utility Operations for Finite Fields}
-\label{ugxProblemFiniteUtilityPage}
-\index{pages!ugxProblemFiniteUtilityPage!ug08.ht}
-\index{ug08.ht!pages!ugxProblemFiniteUtilityPage}
-\index{ugxProblemFiniteUtilityPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugxProblemFiniteUtilityPage}
-{8.11.7. Utility Operations for Finite Fields}
-\beginscroll
-
-\axiomType{FiniteFieldPolynomialPackage} (abbreviation
-\axiomType{FFPOLY})
-provides operations for generating, counting and testing polynomials
-over finite fields. Let's start with a couple of definitions:
-\indent{4}
-\beginitems
-\item[-] A polynomial is {\it primitive} if its roots are primitive
-elements in an extension of the coefficient field of degree equal
-to the degree of the polynomial.
-\item[-] A polynomial is {\it normal} over its coefficient field
-if its roots are linearly independent
-elements in an extension of the coefficient field of degree equal
-to the degree of the polynomial.
-\enditems
-\indent{0}
-In what follows, many of the generated polynomials have one
-``anonymous'' variable.
-This indeterminate is displayed as a question mark (\spadSyntax{?}).
-
-\xtc{
-To fix ideas, let's use the field with five elements for the first
-few examples.
-}{
-\spadpaste{GF5 := PF 5; \bound{GF5}}
-}
-%
-%
-\xtc{
-You can generate irreducible polynomials of any (positive) degree
-(within the storage capabilities of the computer and your ability
-to wait) by using
-\axiomFunFrom{createIrreduciblePoly}{FiniteFieldPolynomialPackage}.
-}{
-\spadpaste{f := createIrreduciblePoly(8)\$FFPOLY(GF5) \bound{f}\free{GF5}}
-}
-%
-\xtc{
-Does this polynomial have other important properties? Use
-\axiomFun{primitive?} to test whether it is a primitive polynomial.
-}{
-\spadpaste{primitive?(f)\$FFPOLY(GF5) \free{f}}
-}
-\xtc{
-Use \axiomFun{normal?} to test whether it is a normal polynomial.
-}{
-\spadpaste{normal?(f)\$FFPOLY(GF5) \free{f}}
-}
-\noindent
-Note that this is actually a trivial case,
-because a normal polynomial of degree \smath{n}
-must have a nonzero term of degree \smath{n-1}.
-We will refer back to this later.
-
-\xtc{
-To get a primitive polynomial of degree 8 just issue this.
-}{
-\spadpaste{p := createPrimitivePoly(8)\$FFPOLY(GF5) \bound{p}\free{GF5}}
-}
-\xtc{
-}{
-\spadpaste{primitive?(p)\$FFPOLY(GF5) \free{p}}
-}
-\xtc{
-This polynomial is not normal,
-}{
-\spadpaste{normal?(p)\$FFPOLY(GF5) \free{p}}
-}
-\xtc{
-but if you want a normal one simply write this.
-}{
-\spadpaste{n := createNormalPoly(8)\$FFPOLY(GF5) \bound{n} \free{GF5}}
-}
-\xtc{
-This polynomial is not primitive!
-}{
-\spadpaste{primitive?(n)\$FFPOLY(GF5) \free{n}}
-}
-This could have been seen directly, as
-the constant term is 1 here, which is not a primitive
-element up to the factor (\axiom{-1}) raised to the degree of the
-polynomial.\footnote{Cf. Lidl, R. \& Niederreiter,
-H., {\it Finite Fields,} Encycl. of Math. 20, (Addison-Wesley, 1983),
-p.90, Th. 3.18.}
-
-What about
-polynomials that are both primitive and normal?
-The existence of such a polynomial is by no means obvious.
-\footnote{The existence of such polynomials is proved in
-Lenstra, H. W. \& Schoof, R. J., {\it Primitive
-Normal Bases for Finite Fields,} Math. Comp. 48, 1987, pp. 217-231.}
-%
-\xtc{
-If you really need one use either
-\axiomFunFrom{createPrimitiveNormalPoly}{FiniteFieldPolynomialPackage} or
-\axiomFunFrom{createNormalPrimitivePoly}{FiniteFieldPolynomialPackage}.
-}{
-\spadpaste{createPrimitiveNormalPoly(8)\$FFPOLY(GF5) \free{GF5}}
-}
-%
-
-If you want to obtain additional polynomials of the various types above
-as given by the {\bf create...} operations above, you can use the {\bf
-next...} operations.
-For instance,
-\axiomFunFrom{nextIrreduciblePoly}{FiniteFieldPolynomialPackage} yields
-the next monic irreducible polynomial with the same degree as the input
-polynomial.
-By ``next'' we mean ``next in a natural order using the terms and
-coefficients.''
-This will become more clear in the following examples.
-
-\xtc{
-This is the field with five elements.
-}{
-\spadpaste{GF5 := PF 5; \bound{GF5}}
-}
-%
-\xtc{
-Our first example irreducible polynomial, say
-of degree 3, must be ``greater'' than this.
-}{
-\spadpaste{h := monomial(1,8)\$SUP(GF5) \bound{h}\free{GF5}}
-}
-\xtc{
-You can generate it by doing this.
-}{
-\spadpaste{nh := nextIrreduciblePoly(h)\$FFPOLY(GF5) \bound{nh}\free{h}}
-}
-%
-\xtc{
-Notice that this polynomial is not the same as the one
-\axiomFunFrom{createIrreduciblePoly}{FiniteFieldPolynomialPackage}.
-}{
-\spadpaste{createIrreduciblePoly(3)\$FFPOLY(GF5) \free{GF5}}
-}
-\xtc{
-You can step through all irreducible polynomials of degree 8 over
-the field with 5 elements by repeatedly issuing this.
-}{
-\spadpaste{nh := nextIrreduciblePoly(nh)\$FFPOLY(GF5) \free{nh}}
-}
-\xtc{
-You could also ask for the total number of these.
-}{
-\spadpaste{numberOfIrreduciblePoly(5)\$FFPOLY(GF5) \free{GF5}}
-}
-
-We hope that ``natural order'' on polynomials is now clear:
-first we compare the number of monomials of
-two polynomials (``more'' is ``greater'');
-then, if necessary, the degrees of these monomials (lexicographically),
-and lastly their coefficients (also
-lexicographically, and using the operation \axiomFun{lookup} if
-our field is not a prime field).
-Also note that we make both polynomials monic before looking at the
-coefficients:
-multiplying either polynomial  by a nonzero constant
-produces the same result.
-
-%
-\xtc{
-The package
-\axiomType{FiniteFieldPolynomialPackage} also provides similar
-operations for primitive and normal polynomials. With
-the exception of the number of primitive normal polynomials;
-we're not aware of any known formula for this.
-}{
-\spadpaste{numberOfPrimitivePoly(3)\$FFPOLY(GF5) \free{GF5}}
-}
-%
-%
-\xtc{
-Take these,
-}{
-\spadpaste{m := monomial(1,1)\$SUP(GF5) \bound{m}\free{GF5}}
-}
-\xtc{
-}{
-\spadpaste{f := m**3 + 4*m**2 + m + 2 \bound{fx}\free{m}}
-}
-%
-%
-\xtc{
-and then we have:
-}{
-\spadpaste{f1 := nextPrimitivePoly(f)\$FFPOLY(GF5) \free{fx}\bound{f1}}
-}
-\xtc{
-What happened?
-}{
-\spadpaste{nextPrimitivePoly(f1)\$FFPOLY(GF5) \free{f1}}
-}
-%
-Well, for the ordering used in
-\axiomFunFrom{nextPrimitivePoly}{FiniteFieldPolynomialPackage} we
-use as first criterion a comparison of the constant terms of the
-polynomials.
-Analogously, in
-\axiomFunFrom{nextNormalPoly}{FiniteFieldPolynomialPackage} we first
-compare the monomials of degree 1 less than the degree of the
-polynomials (which is nonzero, by an earlier remark).
-%
-\xtc{
-}{
-\spadpaste{f := m**3 + m**2 + 4*m + 1 \bound{fy} \free{m}}
-}
-\xtc{
-}{
-\spadpaste{f1 := nextNormalPoly(f)\$FFPOLY(GF5) \free{fy}\bound{f1y}}
-}
-\xtc{
-}{
-\spadpaste{nextNormalPoly(f1)\$FFPOLY(GF5) \free{f1y}}
-}
-%
-\noindent
-We don't have to restrict ourselves to prime fields.
-%
-\xtc{
-Let's consider, say, a field with 16 elements.
-}{
-\spadpaste{GF16 := FFX(FFX(PF 2,2),2); \bound{GF16} }
-}
-%
-%
-\xtc{
-We can apply any of the operations described above.
-}{
-\spadpaste{createIrreduciblePoly(5)\$FFPOLY(GF16) \free{GF16}}
-}
-
-\xtc{
-Axiom also provides operations
-for producing random polynomials of a given degree
-}{
-\spadpaste{random(5)\$FFPOLY(GF16) \free{GF16}}
-}
-\xtc{
-or with degree between two given bounds.
-}{
-\spadpaste{random(3,9)\$FFPOLY(GF16) \free{GF16}}
-}
-
-\axiomType{\axiom{FiniteFieldPolynomialPackage2}} (abbreviation
-\axiomType{FFPOLY2})
-exports an operation \axiomFun{rootOfIrreduciblePoly}
-for finding one root of an irreducible polynomial \axiom{f}
-in an extension field of the coefficient field.
-The degree of the extension has to be a multiple of the degree of \axiom{f}.
-It is not checked whether \axiom{f} actually is irreducible.
-
-%
-\xtc{
-To illustrate this operation, we fix a ground field \axiom{GF}
-}{
-\spadpaste{GF2 := PrimeField 2; \bound{GF2}}
-}
-%
-%
-\xtc{
-and then an extension field.
-}{
-\spadpaste{F := FFX(GF2,12) \bound{F}\free{GF2}}
-}
-%
-%
-\xtc{
-We construct an irreducible polynomial over \axiom{GF2}.
-}{
-\spadpaste{f := createIrreduciblePoly(6)\$FFPOLY(GF2) \bound{fz}\free{GF2}}
-}
-%
-%
-\xtc{
-We compute a root of \axiom{f}.
-}{
-\spadpaste{root := rootOfIrreduciblePoly(f)\$FFPOLY2(F,GF2) \free{F GF2 fz}\bound{root}}
-}
-%
-%and check the result
-%\spadcommand{eval(f, monomial(1,1)\$SUP(F) = root) \free{fz F root}}
-
-%*********************************************************************
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugProblemIdealTitle}{Primary Decomposition of Ideals}
-\newcommand{\ugProblemIdealNumber}{8.12.}
-
-@
-\subsection{8.12. Primary Decomposition of Ideals}
-\label{ugProblemIdealPage}
-\index{pages!ugProblemIdealPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemIdealPage}
-\index{ugProblemIdealPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemIdealPage}{8.12. Primary Decomposition of Ideals}
-\beginscroll
-%*********************************************************************
-%
-Axiom provides a facility for the primary decomposition
-of
-polynomial ideals over fields of characteristic zero.
-The algorithm
-%is discussed in \cite{gtz:gbpdpi} and
-works in essentially two steps:
-\indent{4}
-\beginitems
-\item[1. ] the problem is solved for 0-dimensional ideals by ``generic''
-projection on the last coordinate
-\item[2. ] a ``reduction process'' uses localization and ideal quotients
-to reduce the general case to the 0-dimensional one.
-\enditems
-\indent{0}
-The Axiom constructor \axiomType{PolynomialIdeals}
-represents ideals with coefficients in any field and
-supports the basic ideal operations,
-including intersection, sum and quotient.
-\axiomType{IdealDecompositionPackage} contains the specific
-operations for the primary decomposition and the computation of the
-radical of an ideal with polynomial
-coefficients in a field of characteristic 0 with
-an effective algorithm for factoring polynomials.
-
-The following examples illustrate the capabilities of this facility.
-%
-\xtc{
-First consider the ideal generated by
-\texht{$x^2 + y^2 - 1$}{\axiom{x**2 + y**2 - 1}}
-(which defines a circle in the \axiom{(x,y)}-plane) and the ideal
-generated by \texht{$x^2 - y^2$}{\axiom{x**2 - y**2}} (corresponding to the
-straight lines \axiom{x = y} and \axiom{x = -y}.
-}{
-\spadpaste{(n,m) : List DMP([x,y],FRAC INT) \bound{nm}}
-}
-\xtc{
-}{
-\spadpaste{m := [x**2+y**2-1] \free{nm} \bound{m}}
-}
-\xtc{
-}{
-\spadpaste{n := [x**2-y**2] \free{nm} \bound{n}}
-}
-%
-%
-\xtc{
-We find the equations defining the intersection of the two loci.
-This correspond to the sum of the associated ideals.
-}{
-\spadpaste{id := ideal m  + ideal n \free{n m} \bound{id}}
-}
-%
-%
-\xtc{
-We can check if the locus contains only a finite number of points,
-that is, if the ideal is zero-dimensional.
-}{
-\spadpaste{zeroDim? id \free{id}}
-}
-\xtc{
-}{
-\spadpaste{zeroDim?(ideal m) \free{m}}
-}
-\xtc{
-}{
-\spadpaste{dimension ideal m \free{m}}
-}
-\xtc{
-We can find polynomial relations among the generators
-(\axiom{f} and \axiom{g} are the parametric equations of the knot).
-}{
-\spadpaste{(f,g):DMP([x,y],FRAC INT) \bound{fg}}
-}
-\xtc{
-}{
-\spadpaste{f := x**2-1 \free{fg} \bound{f}}
-}
-\xtc{
-}{
-\spadpaste{g := x*(x**2-1) \free{fg} \bound{g}}
-}
-\xtc{
-}{
-\spadpaste{relationsIdeal [f,g] \free{f g}}
-}
-
-\xtc{
-We can compute the primary decomposition of an ideal.
-}{
-\spadpaste{l: List DMP([x,y,z],FRAC INT) \bound{ll}}
-}
-\xtc{
-}{
-\spadpaste{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4] \free{ll} \bound{l}}
-}
-\xtc{
-}{
-\spadpaste{ld:=primaryDecomp ideal l \free{l} \bound{ld}}
-}
-\xtc{
-We can intersect back.
-}{
-\spadpaste{reduce(intersect,ld) \free{ld}}
-}
-
-\xtc{
-We can compute the radical of every primary component.
-}{
-\spadpaste{reduce(intersect,[radical ld.i for i in 1..2]) \free{ld}}
-}
-\xtc{
-Their intersection is equal to the radical of the ideal of \axiom{l}.
-}{
-\spadpaste{radical ideal l \free{l}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug08.ht>>=
-\newcommand{\ugProblemGaloisTitle}{Computation of Galois Groups}
-\newcommand{\ugProblemGaloisNumber}{8.13.}
-
-@
-\subsection{8.13. Computation of Galois Groups}
-\label{ugProblemGaloisPage}
-\begin{itemize}
-\item FactoredXmpPage \ref{FactoredXmpPage} on
-page~\pageref{FactoredXmpPage}
-\item ugAvailCLEFPage \ref{ugAvailCLEFPage} on 
-page~\pageref{ugAvailCLEFPage}
-\end{itemize}
-\index{pages!ugProblemGaloisPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemGaloisPage}
-\index{ugProblemGaloisPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemGaloisPage}{8.13. Computation of Galois Groups}
-\beginscroll
-%
-As a sample use of Axiom's algebraic number facilities,
-we compute
-the Galois group of the polynomial
-\texht{$p(x) = x^5 - 5 x + 12$}{\axiom{p(x) = x**5 - 5*x + 12}}.
-%
-\xtc{
-}{
-\spadpaste{p := x**5 - 5*x + 12 \bound{p}}
-}
-%
-We would like to construct a polynomial \smath{f(x)}
-such that the splitting
-field
-of \smath{p(x)} is generated by one root of \smath{f(x)}.
-First we construct a polynomial \smath{r = r(x)} such that one
-root of \smath{r(x)} generates the field generated by two roots of
-the polynomial \smath{p(x)}.
-(As it will turn out, the field generated by two roots of
-\smath{p(x)} is, in fact, the splitting field of
-\smath{p(x)}.)
-
-From the proof of the primitive element theorem we know that
-if \smath{a} and \smath{b} are
-algebraic numbers, then the field
-\texht{${\bf Q}(a,b)$}{\axiom{Q(a,b)}} is equal to
-\texht{${\bf Q}(a+kb)$}{\axiom{Q(a + k*b)}} for an
-appropriately chosen integer \smath{k}.
-In our case, we construct the minimal polynomial of
-\texht{$a_i - a_j$}{\axiom{a[i] - a[j]}}, where
-\texht{$a_i$}{\axiom{a[i]}} and
-\texht{$a_j$}{\axiom{a[j]}} are two roots of \smath{p(x)}.
-We construct this polynomial using \axiomFun{resultant}.
-The main result we  need is the following:
-If \smath{f(x)} is a polynomial with roots
-\texht{$a_i \ldots a_m$}{\axiom{a[1]...a[m]}} and
-\smath{g(x)} is a polynomial
-with roots
-\texht{$b_i \ldots b_n$}{\axiom{b[1]...b[n]}}, then the polynomial
-\axiom{h(x) = resultant(f(y), g(x-y), y)}
-is a polynomial of degree \smath{m*n} with
-roots
-\texht{$a_i + b_j, i = 1 \ldots m, j = 1 \ldots n$}
-{\axiom{a[i] + b[j], 1 <= i <= m, 1 <= j <= n}}.
-
-\xtc{
-For \smath{f(x)} we use the polynomial \smath{p(x)}.
-For \smath{g(x)} we use the polynomial \smath{-p(-x)}.
-Thus, the polynomial we  first construct is
-\axiom{resultant(p(y), -p(y-x), y)}.
-}{
-\spadpaste{q := resultant(eval(p,x,y),-eval(p,x,y-x),y) \free{p} \bound{q}}
-}
-%
-The roots of \smath{q(x)} are
-\texht{$a_i - a_j, i \leq 1, j \leq 5$}
-{\axiom{a[i] - a[j], 1 <= i,j <= 5}}.
-Of course, there are five pairs \smath{(i,j)} with \smath{i = j},
-so \axiom{0} is a 5-fold root of \smath{q(x)}.
-%
-\xtc{
-Let's get rid of this factor.
-}{
-\spadpaste{q1 := exquo(q, x**5) \free{q} \bound{q1}}
-}
-\xtc{
-Factor the polynomial \axiom{q1}.
-}{
-\spadpaste{factoredQ := factor q1 \free{q1} \bound{factoredQ}}
-}
-%
-We see that \axiom{q1} has two irreducible factors, each of degree \axiom{10}.
-(The fact that the polynomial \axiom{q1} has two factors of
-degree \axiom{10} is enough to show
-that the Galois group of \smath{p(x)} is the dihedral group of
-order \axiom{10}.\footnote{See McKay, Soicher,  Computing Galois Groups
-over the Rationals, Journal of Number Theory 20, 273-281 (1983).
-We do not assume the results of this paper, however, and we continue with
-the computation.}
-Note that the type of \axiom{factoredQ} is \axiomType{FR POLY INT}, that is,
-\axiomType{Factored Polynomial Integer}.
-This is a special data type for recording factorizations of polynomials with
-integer coefficients (see \downlink{`Factored'}{FactoredXmpPage}
-\ignore{Factored}).
-%
-\xtc{
-We can access the individual factors using the operation
-\axiomFunFrom{nthFactor}{Factored}.
-}{
-\spadpaste{r := nthFactor(factoredQ,1) \free{factoredQ} \bound{r}}
-}
-%
-
-Consider the polynomial \smath{r = r(x)}.
-This is the minimal polynomial of the difference of two roots of
-\smath{p(x)}.
-Thus, the splitting field of \smath{p(x)} contains a subfield of
-degree \axiom{10}.
-We show that this subfield is, in fact, the splitting field of
-\smath{p(x)} by showing that \smath{p(x)} factors completely
-over this field.
-%
-\xtc{
-First we create a symbolic root of the polynomial \smath{r(x)}.
-(We replaced \axiom{x} by \axiom{b} in the
-polynomial \axiom{r} so that our symbolic root would be
-printed as \axiom{b}.)
-}{
-\spadpaste{beta:AN := rootOf(eval(r,x,b)) \free{r} \bound{beta}}
-}
-\xtc{
-We next tell Axiom to view \smath{p(x)} as a univariate polynomial
-in \axiom{x}
-with algebraic number coefficients.
-This is accomplished with this type declaration.
-}{
-\spadpaste{p := p::UP(x,INT)::UP(x,AN) \free{p} \bound{declareP}}
-}
-%
-%
-\xtc{
-Factor \smath{p(x)} over the field
-\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
-(This computation will take some time!)
-}{
-\spadpaste{algFactors := factor(p,[beta]) \free{declareP beta} \bound{algFactors}}
-}
-%
-When factoring over number fields, it is important to specify the
-field over which the polynomial is to be factored, as polynomials
-have different factorizations over different fields.
-When you use the operation \axiomFun{factor}, the field over which
-the polynomial is factored is the field generated by
-\indent{4}
-\beginitems
-\item[1. ] the algebraic numbers that appear
-in the coefficients of the polynomial, and
-\item[2. ] the algebraic numbers that
-appear in a list passed as an optional second argument of the operation.
-\enditems
-\indent{0}
-In our case, the coefficients of \axiom{p}
-are all rational integers and only \axiom{beta}
-appears in the list, so the field is simply
-\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
-%
-\xtc{
-It was necessary to give the list \axiom{[beta]}
-as a second argument of the operation
-because otherwise the polynomial would have been factored over the field
-generated by its coefficients, namely the rational numbers.
-}{
-\spadpaste{factor(p) \free{declareP}}
-}
-%
-We have shown that the splitting field of \smath{p(x)} has degree
-\axiom{10}.
-Since the symmetric group of degree 5 has only one transitive subgroup
-of order \axiom{10}, we know that the Galois group of \smath{p(x)} must be
-this group, the dihedral group
-of order \axiom{10}.
-Rather than stop here, we explicitly compute the action of the Galois
-group on the roots of \smath{p(x)}.
-
-First we assign the roots of \smath{p(x)} as the values of five
-variables.
-\xtc{
-We can obtain an individual root by negating the constant coefficient of
-one of the factors of \smath{p(x)}.
-}{
-\spadpaste{factor1 := nthFactor(algFactors,1) \free{algFactors} \bound{factor1}}
-}
-\xtc{
-}{
-\spadpaste{root1 := -coefficient(factor1,0) \free{factor1} \bound{root1}}
-}
-%
-%
-\xtc{
-We can obtain a list of all the roots in this way.
-}{
-\spadpaste{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5] \free{algFactors} \bound{roots}}
-}
-
-The expression
+\subsection{Asp8 Example Code}
+\label{Asp8ExampleCode}
+\index{pages!Asp8ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp8ExampleCode}
+\index{Asp8ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp8ExampleCode}{Asp8 Example Code}
 \begin{verbatim}
-- coefficient(nthFactor(algFactors, i), 0)}
+      SUBROUTINE OUTPUT(XSOL,Y,COUNT,M,N,RESULT,FORWRD)
+      DOUBLE PRECISION Y(N),RESULT(M,N),XSOL
+      INTEGER M,N,COUNT
+      LOGICAL FORWRD
+      DOUBLE PRECISION X02ALF,POINTS(8)
+      EXTERNAL X02ALF
+      INTEGER I
+      POINTS(1)=1.0D0
+      POINTS(2)=2.0D0
+      POINTS(3)=3.0D0
+      POINTS(4)=4.0D0
+      POINTS(5)=5.0D0
+      POINTS(6)=6.0D0
+      POINTS(7)=7.0D0
+      POINTS(8)=8.0D0
+      COUNT=COUNT+1
+      DO 25001 I=1,N
+        RESULT(COUNT,I)=Y(I)
+25001 CONTINUE
+      IF(COUNT.EQ.M)THEN
+        IF(FORWRD)THEN
+          XSOL=X02ALF()
+        ELSE
+          XSOL=-X02ALF()
+        ENDIF
+      ELSE
+        XSOL=POINTS(COUNT)
+      ENDIF
+      END
 \end{verbatim}
-is the \eth{\axiom{i }} root
-of \smath{p(x)} and the elements of \axiom{roots} are the \eth{\axiom{i }}
-roots of \smath{p(x)} as \axiom{i} ranges from \axiom{1} to \axiom{5}.
-
-\xtc{
-Assign the roots as the values of the variables \axiom{a1,...,a5}.
-}{
-\spadpaste{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5) \free{roots} \bound{ais}}
-}
-%
-
-Next we express the roots of \smath{r(x)} as polynomials in
-\axiom{beta}.
-We could obtain these roots by calling the operation \axiomFun{factor}:
-\axiom{factor(r, [beta])} factors \axiom{r(x)} over
-\texht{${\bf Q}(\beta)$}{\axiom{Q(beta)}}.
-However, this is a lengthy computation and we can obtain the roots of
-\smath{r(x)} as differences of the roots \axiom{a1,...,a5} of
-\smath{p(x)}.
-Only ten of these differences are roots of \smath{r(x)} and the
-other ten are roots
-of the other irreducible factor of \axiom{q1}.
-We can determine if a given value is a root of \smath{r(x)} by evaluating
-\smath{r(x)} at that particular value.
-(Of course, the order in which factors are returned by the
-operation \axiomFun{factor}
-is unimportant and may change with different implementations of the operation.
-Therefore, we cannot predict in advance which differences are roots of
-\smath{r(x)} and which are not.)
-%
-\xtc{
-Let's look at four examples (two are roots of \smath{r(x)} and
-two are not).
-}{
-\spadpaste{eval(r,x,a1 - a2) \free{ais}}
-}
-\xtc{
-}{
-\spadpaste{eval(r,x,a1 - a3) \free{ais}}
-}
-\xtc{
-}{
-\spadpaste{eval(r,x,a1 - a4) \free{ais}}
-}
-\xtc{
-}{
-\spadpaste{eval(r,x,a1 - a5) \free{ais}}
-}
-%
-
-Take one of the differences that was a root of \smath{r(x)}
-and assign it to the variable \axiom{bb}.
-\xtc{
-For example, if \axiom{eval(r,x,a1 - a4)} returned \axiom{0}, you would
-enter this.
-}{
-\spadpaste{bb := a1 - a4 \free{ais} \bound{bb}}
-}
-Of course, if the difference is, in fact, equal to the root \axiom{beta},
-you should choose another root of \smath{r(x)}.
-
-Automorphisms of the splitting field are given by mapping a generator of
-the field, namely \axiom{beta}, to other roots of its minimal polynomial.
-Let's see what happens when \axiom{beta} is mapped to \axiom{bb}.
-%
-\xtc{
-We compute the images of the roots \axiom{a1,...,a5}
-under this automorphism:
-}{
-\spadpaste{aa1 := subst(a1,beta = bb) \free{beta bb ais} \bound{aa1}}
-}
-\xtc{
-}{
-\spadpaste{aa2 := subst(a2,beta = bb) \free{beta bb ais} \bound{aa2}}
-}
-\xtc{
-}{
-\spadpaste{aa3 := subst(a3,beta = bb) \free{beta bb ais} \bound{aa3}}
-}
-\xtc{
-}{
-\spadpaste{aa4 := subst(a4,beta = bb) \free{beta bb ais} \bound{aa4}}
-}
-\xtc{
-}{
-\spadpaste{aa5 := subst(a5,beta = bb) \free{beta bb ais} \bound{aa5}}
-}
-%
-Of course, the values \axiom{aa1,...,aa5} are simply a permutation of the values
-\axiom{a1,...,a5}.
-%
-\xtc{
-Let's find the value of \axiom{aa1} (execute as many of the following five commands
-as necessary).
-}{
-\spadpaste{(aa1 = a1) :: Boolean \free{aa1}}
-}
-\xtc{
-}{
-\spadpaste{(aa1 = a2) :: Boolean \free{aa1}}
-}
-\xtc{
-}{
-\spadpaste{(aa1 = a3) :: Boolean \free{aa1}}
-}
-\xtc{
-}{
-\spadpaste{(aa1 = a4) :: Boolean \free{aa1}}
-}
-\xtc{
-}{
-\spadpaste{(aa1 = a5) :: Boolean \free{aa1}}
-}
-%
-Proceeding in this fashion, you can find the values of
-\axiom{aa2,...aa5}.\footnote{Here you should use the
-\Clef{} line editor.
-See \downlink{``\ugAvailCLEFTitle''}{ugAvailCLEFPage} in Section 
-\ugAvailCLEFNumber\ignore{ugAvailCLEF} for more information about \Clef{}.}
-You have represented the automorphism \axiom{beta -> bb}
-as a permutation of the roots \axiom{a1,...,a5}.
-If you wish, you can repeat this computation for all the roots of
-\smath{r(x)} and represent the Galois group of
-\smath{p(x)} as a subgroup of the symmetric group on five letters.
-
-Here are two other problems that you may attack in a similar fashion:
-\indent{4}
-\beginitems
-\item[1. ] Show that the Galois group of
-\texht{$p(x) = x^4 + 2 x^3 - 2 x^2 - 3 x + 1$}{\axiom{
-p(x) = x**4 + 2*x**3 - 2*x**2 - 3*x + 1}}
-is the dihedral group of order eight.
-(The splitting field of this polynomial is the Hilbert class field
-of
-the quadratic field
-\texht{${\bf Q}(\sqrt{145})$}{\axiom{Q(sqrt(145))}}.)
-\item[2. ] Show that the Galois group of
-\texht{$p(x) = x^6 + 108$}{\axiom{p(x) = x**6 + 108}}
-has order 6 and is
-isomorphic to \texht{$S_3,$}{} the symmetric group on three letters.
-(The splitting field of this polynomial is the splitting field of
-\texht{$x^3 - 2$}{\axiom{x**3 - 2}}.)
-\enditems
-\indent{0}
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug08.ht>>=
-\newcommand{\ugProblemGeneticTitle}{Non-Associative Algebras and Modelling Genetic Laws}
-\newcommand{\ugProblemGeneticNumber}{8.14.}
-
-@
-\subsection{8.14. Non-Associative Algebras and Modelling Genetic Laws}
-\label{ugProblemGeneticPage}
-\begin{itemize}
-\item OctonionXmpPage \ref{OctonionXmpPage} on
-page~\pageref{OctonionXmpPage}
-\end{itemize}
-\index{pages!ugProblemGeneticPage!ug08.ht}
-\index{ug08.ht!pages!ugProblemGeneticPage}
-\index{ugProblemGeneticPage!ug08.ht!pages}
-<<ug08.ht>>=
-\begin{page}{ugProblemGeneticPage}
-{8.14. Non-Associative Algebras and Modelling Genetic Laws}
-\beginscroll
-
-Many algebraic structures of mathematics and Axiom
-have a multiplication operation \axiomOp{*} that satisfies
-the associativity law
-\texht{$a*(b*c) = (a*b)*c$}{\spad{a*(b*c) = (a*b)*c}}
-for all \smath{a}, \smath{b} and \smath{c}.
-The octonions (see 
-\downlink{`Octonion'}{OctonionXmpPage}\ignore{Octonion}) 
-are a well known exception.
-There are many other interesting non-associative structures, such as the
-class of
-Lie algebras.\footnote{Two Axiom implementations of Lie algebras
-are \spadtype{LieSquareMatrix} and \spadtype{FreeNilpotentLie}.}
-Lie algebras can be used, for example, to analyse Lie symmetry algebras of
-partial differential
-equations.
-In this section we show a different application of non-associative algebras,
-the modelling of genetic laws.
-
-The Axiom library contains several constructors for
-creating non-assoc\-i\-a\-tive structures,
-ranging from the categories \spadtype{Monad},
-\spadtype{NonAssociativeRng}, and
-\spadtype{FramedNonAssociativeAlgebra}, to the domains
-\spadtype{AlgebraGivenByStructuralConstants} and
-\spadtype{GenericNonAssociativeAlgebra}.
-Furthermore, the package \spadtype{AlgebraPackage} provides
-operations for analysing the structure of such algebras.\footnote{%
-The interested reader can learn more about these aspects of the
-Axiom library from the paper
-``Computations in Algebras of Finite Rank,''
-by Johannes Grabmeier and Robert Wisbauer,
-Technical Report, IBM Heidelberg Scientific Center, 1992.}
-
-Mendel's genetic laws are often written in a form like
-\texht{
-\narrowDisplay{Aa \times Aa = {1\over 4}AA + {1\over 2}Aa + {1\over 4}aa.}}{
-\spad{Aa * Aa = (1/4)*AA + (1/2)*Aa + (1/4)*aa.}
-}
-The implementation of general algebras in Axiom allows us to
-use this as the definition for multiplication in an algebra.
-Hence, it is possible to study
-questions of genetic inheritance using Axiom.
-To demonstrate this more precisely,  we discuss one example from a
-monograph of \texht{A. W\"orz-Busekros}{A. Woerz-Busekros},
-where you can also find a general setting of this theory.\footnote{%
-\texht{W\"{o}rz-Busekros}{Woerz-Busekros}, A.,
-{\it Algebras in Genetics},
-Springer Lectures Notes in Biomathematics 36, Berlin e.a. (1980).
-In particular, see example 1.3.}
-
-We assume that there is an infinitely large random mating population.
-Random mating of two gametes \texht{$a_i$}{\spad{ai}}  and
-\texht{$a_j$}{\spad{aj}} gives zygotes
-\texht{$a_ia_j$}{\spad{ai aj}}, which produce new gametes.
-In classical Mendelian segregation we have
-\texht{$a_ia_j = {1 \over 2}a_i+{1 \over 2}a_j$}{\spad{ai aj = (1/2)*ai+(1/2)*aj}}.
-In general, we have
-\texht{\narrowDisplay{a_ia_j = \sum_{k=1}^n \gamma_{i,j}^k\ a_k.}}%
-{\spad{ai aj = gammaij1 a1 + gammaij2 a2 + ... + gammaijn an}}
-The segregation rates \texht{$\gamma_{i,j}$}{\spad{gammaij}}
-are  the structural constants of an
-\smath{n}-dimensional algebra.
-This is provided in Axiom by
-the constructor \spadtype{AlgebraGivenByStructuralConstants}
-(abbreviation \spadtype{ALGSC}).
-
-Consider two coupled autosomal loci with alleles
-\smath{A},\smath{a}, \smath{B}, and \smath{b}, building four
-different gametes
-\texht{$a_1 =  AB, a_2 =  Ab, a_3 =  aB,$ and $a_4 =  ab$}%
-{\spad{a1 :=  AB, a2 :=  Ab, a3 :=  aB,} and \spad{a4 :=  ab}}.
-The zygotes \texht{$a_ia_j$}{\spad{ai aj}}
-produce gametes \texht{$a_i$}{\spad{ai}} and
-\texht{$a_j$}{\spad{aj}}
-with classical Mendelian segregation.
-Zygote \texht{$a_1a_4$}{a1 a4} undergoes transition
-to \texht{$a_2a_3$}{\spad{a2 a3}}
-and vice versa with probability
-\texht{$0 \le \theta \le {1\over 2}$}{0 <= theta <= 1/2}.
-
-\xtc{
-Define a list
-\texht{$[(\gamma_{i,j}^k) 1 \le k \le 4]$}{\spad{[(gammaijk) 1 <= k <= 4]}}
-of four four-by-four matrices giving the segregation
-rates.
-We use the value \smath{1/10} for \smath{\theta}.
-}{
-\spadpaste{segregationRates : List SquareMatrix(4,FRAC INT) := [matrix [ [1, 1/2, 1/2, 9/20], [1/2, 0, 1/20, 0], [1/2, 1/20, 0, 0], [9/20, 0, 0, 0] ], matrix [ [0, 1/2, 0, 1/20], [1/2, 1, 9/20, 1/2], [0, 9/20, 0, 0], [1/20, 1/2, 0, 0] ], matrix [ [0, 0, 1/2, 1/20], [0, 0, 9/20, 0], [1/2, 9/20, 1, 1/2], [1/20, 0, 1/2, 0] ], matrix [ [0, 0, 0, 9/20], [0, 0, 1/20, 1/2], [0, 1/20, 0, 1/2], [9/20, 1/2, 1/2, 1] ] ] \bound{segregationRates}}
-}
-\xtc{
-Choose the appropriate symbols for the basis of gametes,
-}{
-\spadpaste{gametes := ['AB,'Ab,'aB,'ab]  \bound{gametes}}
-}
-\xtc{
-Define the algebra.
-}{
-\spadpaste{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A}\free{gametes, segregationRates}}
-}
-
-\xtc{
-What are the probabilities for zygote
-\texht{$a_1a_4$}{a1 a4} to produce the different gametes?
-}{
-\spadpaste{a := basis()\$A;  a.1*a.4}
-}
-
-Elements in this algebra whose coefficients sum to one play a
-distinguished role.
-They represent a population with the distribution of gametes
-reflected by the coefficients with respect to the basis of
-gametes.
-
-Random mating of different populations \smath{x} and \smath{y} is described by
-their product \smath{x*y}.
-
-\xtc{
-This product is commutative only
-if the gametes are not sex-dependent, as in our example.
-}{
-\spadpaste{commutative?()\$A \free{A}}
-}
-\xtc{
-In general, it is not associative.
-}{
-\spadpaste{associative?()\$A \free{A}}
-}
-
-Random mating within a population \smath{x} is described by
-\smath{x*x.}
-The next generation is \smath{(x*x)*(x*x).}
-
-\xtc{
-Use decimal numbers to compare the distributions more easily.
-}{
-\spadpaste{x : ALGSC(DECIMAL, 4, gametes, segregationRates) :=  convert [3/10, 1/5, 1/10, 2/5]\bound{x}\free{gametes, segregationRates}}
-}
-\xtc{
-To compute directly the gametic distribution in the fifth
-generation, we use \spadfun{plenaryPower}.
-}{
-\spadpaste{plenaryPower(x,5) \free{x}}
-}
-
-We now ask two questions:
-Does this distribution converge to an equilibrium state?
-What are the distributions that are stable?
-
-\xtc{
-This is an invariant of the algebra and it is used to answer
-the first question.
-The new indeterminates describe a symbolic distribution.
-}{
-\spadpaste{q := leftRankPolynomial()\$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q}\free{gametes, segregationRates}}
-}
-\xtc{
-Because the coefficient \texht{${9 \over 20}$}{\axiom{9/20}} has absolute
-value less than 1, all distributions do converge,
-by a theorem of this theory.
-}{
-\spadpaste{factor(q :: POLY FRAC INT) \free{q}}
-}
-\xtc{
-The second question is answered by searching for idempotents in the
-algebra.
-}{
-\spadpaste{cI := conditionsForIdempotents()\$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI} \free{gametes, segregationRates}}
-}
-\xtc{
-Solve these equations and look at the first solution.
-}{
-\spadpaste{gbs:= groebnerFactorize cI; gbs.1\free{cI}\bound{gbs}}
-}
-
-Further analysis using the package \spadtype{PolynomialIdeals}
-shows that there is a two-dimensional variety of equilibrium states and all
-other solutions are contained in it.
-
-\xtc{
-Choose one equilibrium state by setting two indeterminates to
-concrete values.
-}{
-\spadpaste{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol} \free{gbs}}
-}
-\xtc{
-}{
-\spadpaste{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e} \free{A, sol}}
-}
-\xtc{
-Verify the result.
-}{
-\spadpaste{e*e-e \free{e}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug10.ht}
-<<ug10.ht>>=
-\newcommand{\ugIntProgTitle}{Interactive Programming}
-\newcommand{\ugIntProgNumber}{10.}
-
-@
-\subsection{10. Interactive Programming}
-\label{ugIntProgPage}
-\begin{itemize}
-\item ugAppGraphicsPage \ref{ugAppGraphicsPage} on
-page~\pageref{ugAppGraphicsPage}
-\item ugIntProgDrawingPage \ref{ugIntProgDrawingPage} on
-page~\pageref{ugIntProgDrawingPage}
-\item ugIntProgRibbonPage \ref{ugIntProgRibbonPage} on
-page~\pageref{ugIntProgRibbonPage}
-\item ugIntProgColorPage \ref{ugIntProgColorPage} on
-page~\pageref{ugIntProgColorPage}
-\item ugIntProgPLCPage \ref{ugIntProgPLCPage} on
-page~\pageref{ugIntProgPLCPage}
-\item ugIntProgColorArrPage \ref{ugIntProgColorArrPage} on
-page~\pageref{ugIntProgColorArrPage}
-\item ugIntProgVecFieldsPage \ref{ugIntProgVecFieldsPage} on
-page~\pageref{ugIntProgVecFieldsPage}
-\item ugIntProgCompFunsPage \ref{ugIntProgCompFunsPage} on
-page~\pageref{ugIntProgCompFunsPage}
-\item ugIntProgFunctionsPage \ref{ugIntProgFunctionsPage} on
-page~\pageref{ugIntProgFunctionsPage}
-\item ugIntProgNewtonPage \ref{ugIntProgNewtonPage} on
-page~\pageref{ugIntProgNewtonPage}
-\end{itemize}
-\index{pages!ugIntProgPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgPage}
-\index{ugIntProgPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgPage}{10. Interactive Programming}
-\beginscroll
-
-Programming in the interpreter is easy.
-So is the use of Axiom's graphics facility.
-Both are rather flexible and allow you to use them for many
-interesting applications.
-However, both require learning some basic ideas and skills.
-
-All graphics examples in the \Gallery{} section are either
-produced directly by interactive commands or by interpreter
-programs.
-Four of these programs are introduced here.
-By the end of this chapter you will know enough about graphics and
-programming in the interpreter to not only understand all these
-examples, but to tackle interesting and difficult problems on your
-own.
-\downlink{``\ugAppGraphicsTitle''}{ugAppGraphicsPage} in 
-Appendix \ugAppGraphicsNumber\ignore{ugAppGraphics} lists 
-all the remaining commands and
-programs used to create these images.
-
-\beginmenu
-    \menudownlink{{10.1. Drawing Ribbons Interactively}}{ugIntProgDrawingPage}
-    \menudownlink{{10.2. A Ribbon Program}}{ugIntProgRibbonPage}
-    \menudownlink{{10.3. Coloring and Positioning Ribbons}}{ugIntProgColorPage}
-    \menudownlink{{10.4. Points, Lines, and Curves}}{ugIntProgPLCPage}
-    \menudownlink{{10.5. A Bouquet of Arrows}}{ugIntProgColorArrPage}
-    \menudownlink{{10.6. Drawing Complex Vector Fields}}
-{ugIntProgVecFieldsPage}
-    \menudownlink{{10.7. Drawing Complex Functions}}{ugIntProgCompFunsPage}
-    \menudownlink{{10.8. Functions Producing Functions}}
-{ugIntProgFunctionsPage}
-    \menudownlink{{10.9. Automatic Newton Iteration Formulas}}
-{ugIntProgNewtonPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgDrawingTitle}{Drawing Ribbons Interactively}
-\newcommand{\ugIntProgDrawingNumber}{10.1.}
-
-@
-\subsection{10.1. Drawing Ribbons Interactively}
-\label{ugIntProgDrawingPage}
-\begin{itemize}
-\item ugGraphPage \ref{ugGraphPage} on
-page~\pageref{ugGraphPage}
-\end{itemize}
-\index{pages!ugIntProgDrawingPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgDrawingPage}
-\index{ugIntProgDrawingPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgDrawingPage}{10.1. Drawing Ribbons Interactively}
-\beginscroll
-%
-
-We begin our discussion of interactive graphics with the creation
-of a useful facility: plotting ribbons of two-graphs in
-three-space.
-Suppose you want to draw the \twodim{} graphs of \smath{n}
-functions \texht{$f_i(x), 1 \leq i \leq n,$}{\spad{f_i(x), 1 <= i
-<= 5,}} all over some fixed range of \smath{x}.
-One approach is to create a \twodim{} graph for each one, then
-superpose one on top of the other.
-What you will more than likely get is a jumbled mess.
-Even if you make each function a different color, the result is
-likely to be confusing.
-
-A better approach is to display each of the \smath{f_i(x)} in three
-dimensions as a ``ribbon'' of some appropriate width along the
-\smath{y}-direction, laying down each  ribbon next to the
-previous one.
-A ribbon is simply a function of \smath{x} and \smath{y} depending
-only on \smath{x.}
-
-We illustrate this for \smath{f_i(x)} defined as simple powers of
-\smath{x} for \smath{x} ranging between \smath{-1} and \smath{1}.
-
-\psXtc{
-Draw the ribbon for \texht{$z = x^2$}{\spad{z=x ** 2}}.
-}{
-\graphpaste{draw(x**2,x=-1..1,y=0..1)}
-}{
-\epsffile[0 0 295 295]{../ps/ribbon1.ps}
-}
-
-Now that was easy!
-What you get is a ``wire-mesh'' rendition of the ribbon.
-That's fine for now.
-Notice that the mesh-size is small in both the \smath{x} and the
-\smath{y} directions.
-Axiom normally computes points in both these directions.
-This is unnecessary.
-One step is all we need in the \smath{y}-direction.
-To have Axiom economize on \spad{y}-points, we re-draw the
-ribbon with option \spad{var2Steps == 1}.
-
-\psXtc{
-Re-draw the ribbon, but with option \spad{var2Steps == 1}
-so that only \spad{1} step is computed in the
-\smath{y} direction.
-}{
-\graphpaste{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1) \bound{d1}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbon2.ps}
-}
-
-The operation has created a viewport, that is, a graphics window
-on your screen.
-We assigned the viewport to \spad{vp} and now we manipulate
-its contents.
-
-
-Graphs are objects, like numbers and algebraic expressions.
-You may want to do some experimenting with graphs.
-For example, say
+\subsection{Asp80 Example Code}
+\label{Asp80ExampleCode}
+\index{pages!Asp80ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp80ExampleCode}
+\index{Asp80ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp80ExampleCode}{Asp80 Example Code}
 \begin{verbatim}
-showRegion(vp, "on")
+      SUBROUTINE BDYVAL(XL,XR,ELAM,YL,YR)
+      DOUBLE PRECISION ELAM,XL,YL(3),XR,YR(3)
+      YL(1)=XL
+      YL(2)=2.0D0
+      YR(1)=1.0D0
+      YR(2)=-1.0D0*DSQRT(XR+(-1.0D0*ELAM))
+      RETURN
+      END
 \end{verbatim}
-to put a bounding box around the ribbon.
-Try it!
-Issue \spad{rotate(vp, -45, 90)} to rotate the
-figure \smath{-45} longitudinal degrees and \smath{90} latitudinal
-degrees.
-
-\psXtc{
-Here is a different rotation.
-This turns the graph so you can view it along the \smath{y}-axis.
-}{
-\spadpaste{rotate(vp, 0, -90)\bound{d3}\free{d1}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbon2r.ps}
-}
-
-There are many other things you can do.
-In fact, most everything you can do interactively using the
-\threedim{} control panel (such as translating, zooming, resizing,
-coloring, perspective and lighting selections) can also be done
-directly by operations (see \downlink{``\ugGraphTitle''}{ugGraphPage} 
-in Chapter \ugGraphNumber\ignore{ugGraph} for more details).
-
-When you are done experimenting, say \spad{reset(vp)} to restore the
-picture to its original position and settings.
-
-
-Let's add another ribbon to our picture---one
-for \texht{$x^3$}{\spad{x**3}}.
-Since \smath{y} ranges from \smath{0} to \smath{1} for the
-first ribbon, now let \smath{y} range from \smath{1} to
-\smath{2.}
-This puts the second ribbon next to the first one.
-
-How do you add a second ribbon to the viewport?
-One method is
-to extract the ``space'' component from the
-viewport using the operation
-\spadfunFrom{subspace}{ThreeDimensionalViewport}.
-You can think of the space component as the object inside the
-window (here, the ribbon).
-Let's call it \spad{sp}.
-To add the second ribbon, you draw the second ribbon using the
-option \spad{space == sp}.
-
-\xtc{
-Extract the space component of \spad{vp}.
-}{
-\spadpaste{sp := subspace(vp)\bound{d5}\free{d1}}
-}
-
-\psXtc{
-Add the ribbon for
-\texht{$x^3$}{\spad{x**3}} alongside that for
-\texht{$x^2$}{\spad{x**2}}.
-}{
-\graphpaste{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6}\free{d5}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbons.ps}
-}
-
-Unless you moved the original viewport, the new viewport covers
-the old one.
-You might want to check that the old object is still there by
-moving the top window.
-
-Let's show quadrilateral polygon outlines on the ribbons and then
-enclose the ribbons in a box.
-
-\psXtc{
-Show quadrilateral polygon outlines.
-}{
-\spadpaste{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10}\free{d6}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbons2.ps}
-}
-\psXtc{
-Enclose the ribbons in a box.
-}{
-\spadpaste{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11}\free{d10}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbons2b.ps}
-}
-
-This process has become tedious!
-If we had to add two or three more ribbons, we would have to
-repeat the above steps several more times.
-It is time to write an interpreter program to help us take care of
-the details.
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug10.ht>>=
-\newcommand{\ugIntProgRibbonTitle}{A Ribbon Program}
-\newcommand{\ugIntProgRibbonNumber}{10.2.}
-
-@
-\subsection{10.2. A Ribbon Program}
-\label{ugIntProgRibbonPage}
-\begin{itemize}
-\item ugUserPage \ref{ugUserPage} on
-page~\pageref{ugUserPage}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\end{itemize}
-\index{pages!ugIntProgRibbonPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgRibbonPage}
-\index{ugIntProgRibbonPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgRibbonPage}{10.2. A Ribbon Program}
-\beginscroll
-%
-
-The above approach creates a new viewport for each additional
-ribbon.
-A better approach is to build one object composed of all ribbons
-before creating a viewport.
-To do this, use \spadfun{makeObject} rather than \spadfun{draw}.
-The operations have similar formats, but
-\spadfun{draw} returns a viewport and
-\spadfun{makeObject} returns a space object.
-
-We now create a function \userfun{drawRibbons} of two arguments:
-\spad{flist}, a list of formulas for the ribbons you want to draw,
-and \spad{xrange}, the range over which you want them drawn.
-Using this function, you can just say
+\subsection{Asp9 Example Code}
+\label{Asp9ExampleCode}
+\index{pages!Asp9ExampleCode!aspex.ht}
+\index{aspex.ht!pages!Asp9ExampleCode}
+\index{Asp9ExampleCode!aspex.ht!pages}
+<<aspex.ht>>=
+\begin{page}{Asp9ExampleCode}{Asp9 Example Code}
 \begin{verbatim}
-drawRibbons([x**2, x**3], x=-1..1)
+      DOUBLE PRECISION FUNCTION G(X,Y)
+      DOUBLE PRECISION X,Y(*)
+      G=X+Y(1)
+      RETURN
+      END
 \end{verbatim}
-to do all of the work required in the last section.
-Here is the \userfun{drawRibbons} program.
-Invoke your favorite editor and create a file called {\bf ribbon.input}
-containing the following program.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ drawRibbons(flist,\ xrange)\ ==}\newline
-{\tt 2.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 3.\ \ \ \ \ y0\ :=\ 0}\newline
-{\tt 4.\ \ \ \ \ for\ f\ in\ flist\ repeat}\newline
-{\tt 5.\ \ \ \ \ \ \ makeObject(f,\ xrange,\ y=y0..y0+1,\ }\newline
-{\tt 6.\ \ \ \ \ \ \ \ \ \ space==sp,\ var2Steps\ ==\ 1)}\newline
-{\tt 7.\ \ \ \ \ \ \ y0\ :=\ y0\ +\ 1}\newline
-{\tt 8.\ \ \ \ \ vp\ :=\ makeViewport3D(sp,\ "Ribbons")}\newline
-{\tt 9.\ \ \ \ \ drawStyle(vp,\ "shade")}\newline
-{\tt 10.\ \ \ \ outlineRender(vp,\ "on")}\newline
-{\tt 11.\ \ \ \ showRegion(vp,"on")}\newline
-{\tt 12.\ \ \ \ n\ :=\ \#\ flist}\newline
-{\tt 13.\ \ \ \ zoom(vp,n,1,n)}\newline
-{\tt 14.\ \ \ \ rotate(vp,0,75)}\newline
-{\tt 15.\ \ \ \ vp}\newline
-\caption{The first \protect\pspadfun{drawRibbons} function.}\label{fig-ribdraw1}
-\endImportant
-
-Here are some remarks on the syntax used in the \pspadfun{drawRibbons}
-function (consult \downlink{``\ugUserTitle''}{ugUserPage} in Chapter
-\ugUserNumber\ignore{ugUser} for more details).  Unlike most other
-programming languages which use semicolons, parentheses, or {\it
-begin}--{\it end} brackets to delineate the structure of programs, the
-structure of an Axiom program is determined by indentation.  The first
-line of the function definition always begins in column 1.  All other
-lines of the function are indented with respect to the first line and
-form a \spadgloss{pile} (see
-\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} in Section
-\ugLangBlocksNumber\ignore{ugLangBlocks}).
-
-The definition of \userfun{drawRibbons} consists of a pile of
-expressions to be executed one after another.  Each expression of the
-pile is indented at the same level.  Lines 4-7 designate one single
-expression: since lines 5-7 are indented with respect to the others,
-these lines are treated as a continuation of line 4.  Also since lines
-5 and 7 have the same indentation level, these lines designate a pile
-within the outer pile.
-
-The last line of a pile usually gives the value returned by the pile.
-Here it is also the value returned by the function.  Axiom knows this
-is the last line of the function because it is the last line of the
-file.  In other cases, a new expression beginning in column one
-signals the end of a function.
-
-The line \spad{drawStyle(vp,"shade")} is given after the viewport has
-been created to select the draw style.  We have also used the
-\spadfunFrom{zoom}{ThreeDimensionalViewport} option.  Without the
-zoom, the viewport region would be scaled equally in all three
-coordinate directions.
-
-Let's try the function \userfun{drawRibbons}.
-First you must read the file to give Axiom the function definition.
-
-\xtc{
-Read the input file.
-}{
-\spadpaste{)read ribbon \bound{s0}}
-}
-\psXtc{
-Draw ribbons for \texht{$x, x^2,\dots, x^5$}{x, x**2,...,x**5}
-for \texht{$-1 \leq x \leq 1$}{-1 <= x <= 1}
-}{
-\graphpaste{drawRibbons([x**i for i in 1..5],x=-1..1) \free{s0}}
-}{
-\epsffile[0 0 295 295]{../ps/ribbons5.ps}
-}
-
-
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug10.ht>>=
-\newcommand{\ugIntProgColorTitle}{Coloring and Positioning Ribbons}
-\newcommand{\ugIntProgColorNumber}{10.3.}
-
-@
-\subsection{10.3. Coloring and Positioning Ribbons}
-\label{ugIntProgColorPage}
-\index{pages!ugIntProgColorPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgColorPage}
-\index{ugIntProgColorPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgColorPage}{10.3. Coloring and Positioning Ribbons}
-\beginscroll
-%
-
-Before leaving the ribbon example, we  make two improvements.
-Normally, the color given to each point in the space is a
-function of its height within a bounding box.
-The points at the bottom of the
-box are red, those at the top are purple.
-
-To change the normal coloring, you can give
-an option \spad{colorFunction == {\it function}}.
-When Axiom goes about displaying the data, it
-determines the range of colors used for all points within the box.
-Axiom then distributes these numbers uniformly over the number of hues.
-Here we use the simple color function
-\texht{$(x,y) \mapsto i$}{(x,y) +-> i} for the
-\eth{\smath{i}} ribbon.
-
-Also, we add an argument \spad{yrange} so you can give the range of
-\spad{y} occupied by the ribbons.
-For example, if the \spad{yrange} is given as
-\spad{y=0..1} and there are \smath{5} ribbons to be displayed, each
-ribbon would have width \smath{0.2} and would appear in the
-range \texht{$0 \leq y \leq 1$}{\spad{0 <= y <= 1}}.
-
-Refer to lines 4-9.
-Line 4 assigns to \spad{yVar} the variable part of the
-\spad{yrange} (after all, it need not be \spad{y}).
-Suppose that \spad{yrange} is given as \spad{t = a..b} where \spad{a} and
-\spad{b} have numerical values.
-Then line 5 assigns the value of \spad{a} to the variable \spad{y0}.
-Line 6 computes the width of the ribbon by dividing the difference of
-\spad{a} and \spad{b} by the number, \spad{num}, of ribbons.
-The result is assigned to the variable \spad{width}.
-Note that in the for-loop in line 7, we are iterating in parallel; it is
-not a nested loop.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ drawRibbons(flist,\ xrange,\ yrange)\ ==}\newline
-{\tt 2.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 3.\ \ \ \ \ num\ :=\ \#\ flist}\newline
-{\tt 4.\ \ \ \ \ yVar\ :=\ variable\ yrange}\newline
-{\tt 5.\ \ \ \ \ y0:Float\ \ \ \ :=\ lo\ segment\ yrange}\newline
-{\tt 6.\ \ \ \ \ width:Float\ :=\ (hi\ segment\ yrange\ -\ y0)/num}\newline
-{\tt 7.\ \ \ \ \ for\ f\ in\ flist\ for\ color\ in\ 1..num\ repeat}\newline
-{\tt 8.\ \ \ \ \ \ \ makeObject(f,\ xrange,\ yVar\ =\ y0..y0+width,}\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ var2Steps\ ==\ 1,\ colorFunction\ ==\ (x,y)\ +->\ color,\ \_}\newline
-{\tt 10.\ \ \ \ \ \ \ \ space\ ==\ sp)}\newline
-{\tt 11.\ \ \ \ \ \ y0\ :=\ y0\ +\ width}\newline
-{\tt 12.\ \ \ \ vp\ :=\ makeViewport3D(sp,\ "Ribbons")}\newline
-{\tt 13.\ \ \ \ drawStyle(vp,\ "shade")}\newline
-{\tt 14.\ \ \ \ outlineRender(vp,\ "on")}\newline
-{\tt 15.\ \ \ \ showRegion(vp,\ "on")}\newline
-{\tt 16.\ \ \ \ vp}\newline
-\caption{The final \protect\pspadfun{drawRibbons} function.}\label{fig-ribdraw2}
-\endImportant
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgPLCTitle}{Points, Lines, and Curves}
-\newcommand{\ugIntProgPLCNumber}{10.4.}
-
-@
-\subsection{10.4. Points, Lines, and Curves}
-\label{ugIntProgPLCPage}
-\index{pages!ugIntProgPLCPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgPLCPage}
-\index{ugIntProgPLCPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgPLCPage}{10.4. Points, Lines, and Curves}
-\beginscroll
-%
-What you have seen so far is a high-level program using the
-graphics facility.
-We now turn to the more basic notions of points, lines, and curves
-in \threedim{} graphs.
-These facilities use small floats (objects
-of type \spadtype{DoubleFloat}) for data.
-Let us first give names to the small float values \smath{0} and
-\smath{1}.
-\xtc{
-The small float 0.
-}{
-\spadpaste{zero := 0.0@DFLOAT \bound{d1}}
-}
-\xtc{
-The small float 1.
-}{
-\spadpaste{one  := 1.0@DFLOAT \bound{d2}}
-}
-The \spadSyntax{@} sign means ``of the type.'' Thus \spad{zero} is
-\smath{0.0} of the type \spadtype{DoubleFloat}.
-You can also say \spad{0.0::DFLOAT}.
-
-Points can have four small float components: \smath{x, y, z} coordinates and an
-optional color.
-A ``curve'' is simply a list of points connected by straight line
-segments.
-\xtc{
-Create the point \spad{origin} with color zero, that is, the lowest color
-on the color map.
-}{
-\spadpaste{origin := point [zero,zero,zero,zero] \free{d1}\bound{d3}}
-}
-\xtc{
-Create the point \spad{unit} with color zero.
-}{
-\spadpaste{unit := point [one,one,one,zero] \free{d1 d2}\bound{d4}}
-}
-\xtc{
-Create the curve (well, here, a line) from
-\spad{origin} to \spad{unit}.
-}{
-\spadpaste{line := [origin, unit] \free{d3 d4} \bound{d5}}
-}
-
-We make this line segment into an arrow by adding an arrowhead.
-The arrowhead extends to,
-say, \spad{p3} on the left, and to, say, \spad{p4} on the right.
-To describe an arrow, you tell Axiom to draw the two curves
-\spad{[p1, p2, p3]} and \spad{[p2, p4].}
-We also decide through experimentation on
-values for \spad{arrowScale}, the ratio of the size of
-the arrowhead to the stem of the arrow, and \spad{arrowAngle},
-the angle between the arrowhead and the arrow.
-
-Invoke your favorite editor and create
-an input file called {\bf arrows.input}.
-This input file first defines the values of
-%\spad{origin},\spad{unit},
-\spad{arrowAngle} and \spad{arrowScale}, then
-defines the function \userfun{makeArrow}\texht{$(p_1, p_2)$}{(p1, p2)} to
-draw an arrow from point \texht{$p_1$}{p1} to \texht{$p_2$}{p2}.
-
-\beginImportant
-  
-\noindent
-%\xmpLine{origin := point [0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT]}{The point 0 with color 0.}
-%\xmpLine{unit := point [1.0@DFLOAT,1.0@DFLOAT,1.0@DFLOAT,0.0@DFLOAT]}{A second point with color 0.}
-%\xmpLine{}{}
-{\tt 1.\ \ \ arrowAngle\ :=\ \%pi-\%pi/10.0@DFLOAT}\newline
-{\tt 2.\ \ \ arrowScale\ :=\ 0.2@DFLOAT}\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ makeArrow(p1,\ p2)\ ==}\newline
-{\tt 5.\ \ \ \ \ delta\ :=\ p2\ -\ p1}\newline
-{\tt 6.\ \ \ \ \ len\ :=\ arrowScale\ *\ length\ delta}\newline
-{\tt 7.\ \ \ \ \ theta\ :=\ atan(delta.1,\ delta.2)}\newline
-{\tt 8.\ \ \ \ \ c1\ :=\ len*cos(theta\ +\ arrowAngle)}\newline
-{\tt 9.\ \ \ \ \ s1\ :=\ len*sin(theta\ +\ arrowAngle)}\newline
-{\tt 10.\ \ \ \ c2\ :=\ len*cos(theta\ -\ arrowAngle)}\newline
-{\tt 11.\ \ \ \ s2\ :=\ len*sin(theta\ -\ arrowAngle)}\newline
-{\tt 12.\ \ \ \ z\ \ :=\ p2.3*(1\ -\ arrowScale)}\newline
-{\tt 13.\ \ \ \ p3\ :=\ point\ [p2.1\ +\ c1,\ p2.2\ +\ s1,\ z,\ p2.4]}\newline
-{\tt 14.\ \ \ \ p4\ :=\ point\ [p2.1\ +\ c2,\ p2.2\ +\ s2,\ z,\ p2.4]}\newline
-{\tt 15.\ \ \ \ [[p1,\ p2,\ p3],\ [p2,\ p4]]}\newline
-\endImportant
-
-Read the file and then create
-an arrow from the point \spad{origin} to the point \spad{unit}.
-\xtc{
-Read the input file defining \userfun{makeArrow}.
-}{
-\spadpaste{)read arrows\bound{v1}}
-}
-\xtc{
-Construct the arrow (a list of two curves).
-}{
-\spadpaste{arrow := makeArrow(origin,unit)\bound{v2}\free{v1 d3 d4}}
-}
-\xtc{
-Create an empty object \spad{sp} of type \spad{ThreeSpace}.
-}{
-\spadpaste{sp := createThreeSpace()\bound{c1}}
-}
-\xtc{
-Add each curve of the arrow to the space \spad{sp}.
-}{
-\spadpaste{for a in arrow repeat sp := curve(sp,a)\bound{v3}\free{v2}\free{c1}}
-}
-\psXtc{
-Create a \threedim{} viewport containing that space.
-}{
-\graphpaste{vp := makeViewport3D(sp,"Arrow")\bound{v4}\free{v3}}
-}{
-\epsffile[0 0 295 295]{../ps/arrow.ps}
-}
-\psXtc{
-Here is a better viewing angle.
-}{
-\spadpaste{rotate(vp,200,-60)\bound{v5}\free{v4}}
-}{
-\epsffile[0 0 295 295]{../ps/arrowr.ps}
-}
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgColorArrTitle}{A Bouquet of Arrows}
-\newcommand{\ugIntProgColorArrNumber}{10.5.}
-
-@
-\subsection{10.5. A Bouquet of Arrows}
-\label{ugIntProgColorArrPage}
-\index{pages!ugIntProgColorArrPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgColorArrPage}
-\index{ugIntProgColorArrPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgColorArrPage}{10.5. A Bouquet of Arrows}
-\beginscroll
-
-%Axiom gathers up all the points of a graph and looks at the range
-%of color values given as integers.
-%If theses color values range from a minimum value of \spad{a} to a maximum
-%value of \spad{b}, then the \spad{a} values are colored red (the
-%lowest color in our spectrum), and \spad{b} values are colored
-%purple (the highest color), and those in the middle are colored
-%green.
-%When all the points are the same color as above, Axiom
-%chooses green.
-
-Let's draw a ``bouquet'' of arrows.
-Each arrow is identical. The arrowheads are
-uniformly placed on a circle parallel to the \smath{xy}-plane.
-Thus the position of each arrow differs only
-by the angle \texht{$\theta$}{theta},
-\texht{$0 \leq \theta < 2\pi$}{\spad{0 <= theta < 2*\%pi}},
-between the arrow and
-the \smath{x}-axis on the \smath{xy}-plane.
-
-Our bouquet is rather special: each arrow has a different
-color (which won't be evident here, unfortunately).
-This is arranged by letting the color of each successive arrow be
-denoted by \texht{$\theta$}{theta}.
-In this way, the color of arrows ranges from red to green to violet.
-Here is a program to draw a bouquet of \smath{n} arrows.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ drawBouquet(n,title)\ ==}\newline
-{\tt 2.\ \ \ \ \ angle\ :=\ 0.0@DFLOAT}\newline
-{\tt 3.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 4.\ \ \ \ \ for\ i\ in\ 0..n-1\ repeat}\newline
-{\tt 5.\ \ \ \ \ \ \ start\ :=\ point\ [0.0@DFLOAT,0.0@DFLOAT,0.0@DFLOAT,angle]\ }\newline
-{\tt 6.\ \ \ \ \ \ \ end\ \ \ :=\ point\ [cos\ angle,\ sin\ angle,\ 1.0@DFLOAT,\ angle]}\newline
-{\tt 7.\ \ \ \ \ \ \ arrow\ :=\ makeArrow(start,end)}\newline
-{\tt 8.\ \ \ \ \ \ \ for\ a\ in\ makeArrow(start,end)\ repeat\ }\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ curve(sp,a)}\newline
-{\tt 10.\ \ \ \ \ \ angle\ :=\ angle\ +\ 2*\%pi/n}\newline
-{\tt 11.\ \ \ \ makeViewport3D(sp,title)}\newline
-\endImportant
-
-\xtc{
-Read the input file.
-}{
-\spadpaste{)read bouquet\bound{b1}}
-}
-\psXtc{
-A bouquet of a dozen arrows.
-}{
-\graphpaste{drawBouquet(12,"A Dozen Arrows")\free{b1}}
-}{
-\epsffile[0 0 295 295]{../ps/bouquet.ps}
-}
-\ 
-
-%\head{section}{Diversion: When Things Go Wrong}{ugIntProgDivTwo}
-%
-%Up to now, if you have typed in all the programs exactly as they are in
-%the book, you have encountered no errors.
-%In practice, however, it is easy to make mistakes.
-%Computers are unforgiving: your program must be letter-for-letter correct
-%or you will encounter some error.
-%
-%One thing that can go wrong is that you can create a syntactically
-%incorrect program.
-%As pointed out in Diversion 1, the meaning of Axiom programs is
-%affected by indentation.
-%
-%The Axiom parser will ensure that all parentheses, brackets, and
-%braces balance, and that commas and operators appear in the correct
-%context.
-%For example, change line ??
-%to ??
-%and run.
-%
-%A common mistake is to misspell an identifier or operation name.
-%These are generally easy to spot since the interpreter will tell you the
-%name of the operation together with the type and number of arguments which
-%it is trying to find.
-%
-%Another mistake is to either to omit an argument or to give too many.
-%Again Axiom will notify you of the offending operation.
-%
-%Indentation makes your programs more readable.
-%However there are several ways to create a syntactically valid program.
-%A most common problem occurs when a line is either indented improperly.
-%% either or what?
-%If this is a first line of a pile, then all the other lines will act as an
-%inner pile to the first line.
-%If it is a line of the pile other than the first line, Axiom then
-%thinks that this line is a continuation of the previous line.
-%More frequently than not, a syntactically correct expression is created.
-%Almost never however will this be a semantically correct.
-%Only when the program is run will an error be discovered.
-%For example, change line ??
-%to ??
-%and run.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgVecFieldsTitle}{Drawing Complex Vector Fields}
-\newcommand{\ugIntProgVecFieldsNumber}{10.6.}
-
-@
-\subsection{10.6. Drawing Complex Vector Fields}
-\label{ugIntProgVecFieldsPage}
-\index{pages!ugIntProgVecFieldsPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgVecFieldsPage}
-\index{ugIntProgVecFieldsPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgVecFieldsPage}{10.6. Drawing Complex Vector Fields}
-\beginscroll
-
-We now put our arrows to good use drawing complex vector fields.
-These vector fields give a representation of complex-valued
-functions of complex variables.
-Consider a Cartesian coordinate grid of points \smath{(x, y)} in
-the plane, and some complex-valued function \smath{f} defined on
-this grid.
-At every point on this grid, compute the value of \texht{$f(x +
-iy)$}{f(x + y*\%i)} and call it \smath{z}.
-Since \smath{z} has both a real and imaginary value for a given
-\smath{(x,y)} grid point, there are four dimensions to plot.
-What do we do?
-We represent the values of \smath{z} by arrows planted at each
-grid point.
-Each arrow represents the value of \smath{z} in polar coordinates
-\texht{$(r,\theta)$}{(r, theta)}.
-The length of the arrow is proportional to \smath{r}.
-Its direction is given by \texht{$\theta$}{theta}.
-
-The code for drawing vector fields is in the file {\bf vectors.input}.
-We discuss its contents from top to bottom.
-
-Before showing you the code, we have two small
-matters to take care of.
-First, what if the function has large spikes, say, ones that go off
-to infinity?
-We define a variable \spad{clipValue} for this purpose. When
-\spad{r} exceeds the value of \spad{clipValue}, then the value of
-\spad{clipValue} is used instead of that for \spad{r}.
-For convenience, we define a function \spad{clipFun(x)} which uses
-\spad{clipValue} to ``clip'' the value of \spad{x}.
-
-%
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ clipValue\ :\ DFLOAT\ :=\ 6}\newline
-{\tt 2.\ \ \ clipFun(x)\ ==\ min(max(x,-clipValue),clipValue)}\newline
-\endImportant
-
-Notice that we identify \spad{clipValue} as a small float but do
-not declare the type of the function \userfun{clipFun}.
-As it turns out, \userfun{clipFun} is called with a
-small float value.
-This declaration ensures that \userfun{clipFun} never does a
-conversion when it is called.
-
-The second matter concerns the possible ``poles'' of a
-function, the actual points where the spikes have infinite
-values.
-Axiom uses normal \spadtype{DoubleFloat} arithmetic  which
-does not directly handle infinite values.
-If your function has poles, you must adjust your step size to
-avoid landing directly on them (Axiom calls \spadfun{error}
-when asked to divide a value by \axiom{0}, for example).
-
-We set the variables \spad{realSteps} and \spad{imagSteps} to
-hold the number of steps taken in the real and imaginary
-directions, respectively.
-Most examples will have ranges centered around the origin.
-To avoid a pole at the origin, the number of points is taken
-to be odd.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ realSteps:\ INT\ :=\ 25}\newline
-{\tt 2.\ \ \ imagSteps:\ INT\ :=\ 25}\newline
-{\tt 3.\ \ \ )read\ arrows}\newline
-\endImportant
-
-Now define the function \userfun{drawComplexVectorField} to draw the arrows.
-It is good practice to declare the type of the main function in
-the file.
-This one declaration is usually sufficient to ensure that other
-lower-level functions are compiled with the correct types.
-
-\beginImportant
-  
-\noindent
-{\tt 4.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
-{\tt 5.\ \ \ S\ :=\ Segment\ DoubleFloat}\newline
-{\tt 6.\ \ \ drawComplexVectorField:\ (C\ ->\ C,\ S,\ S)\ ->\ VIEW3D}\newline
-\endImportant
-
-The first argument is a function mapping complex small floats into
-complex small floats.
-The second and third arguments give the range of real and
-imaginary values as segments like \spad{a..b}.
-The result is a \threedim{} viewport.
-Here is the full function definition:
-
-\beginImportant
-  
-\noindent
-{\tt 7.\ \ \ drawComplexVectorField(f,\ realRange,imagRange)\ ==}\newline
-{\tt 8.\ \ \ \ \ delReal\ :=\ (hi(realRange)-lo(realRange))/realSteps}\newline
-{\tt 9.\ \ \ \ \ delImag\ :=\ (hi(imagRange)-lo(imagRange))/imagSteps}\newline
-{\tt 10.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 11.\ \ \ \ real\ :=\ lo(realRange)}\newline
-{\tt 12.\ \ \ \ for\ i\ in\ 1..realSteps+1\ repeat}\newline
-{\tt 13.\ \ \ \ \ \ imag\ :=\ lo(imagRange)}\newline
-{\tt 14.\ \ \ \ \ \ for\ j\ in\ 1..imagSteps+1\ repeat}\newline
-{\tt 15.\ \ \ \ \ \ \ \ z\ :=\ f\ complex(real,imag)}\newline
-{\tt 16.\ \ \ \ \ \ \ \ arg\ :=\ argument\ z}\newline
-{\tt 17.\ \ \ \ \ \ \ \ len\ :=\ clipFun\ sqrt\ norm\ z}\newline
-{\tt 18.\ \ \ \ \ \ \ \ p1\ :=\ \ point\ [real,\ imag,\ 0.0@DFLOAT,\ arg]}\newline
-{\tt 19.\ \ \ \ \ \ \ \ scaleLen\ :=\ delReal\ *\ len}\newline
-{\tt 20.\ \ \ \ \ \ \ \ p2\ :=\ point\ [p1.1\ +\ scaleLen*cos(arg),}\newline
-{\tt 21.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p1.2\ +\ scaleLen*sin(arg),0.0@DFLOAT,\ arg]}\newline
-{\tt 22.\ \ \ \ \ \ \ \ arrow\ :=\ makeArrow(p1,\ p2)}\newline
-{\tt 23.\ \ \ \ \ \ \ \ for\ a\ in\ arrow\ repeat\ curve(sp,\ a)}\newline
-{\tt 24.\ \ \ \ \ \ \ \ imag\ :=\ imag\ +\ delImag}\newline
-{\tt 25.\ \ \ \ \ \ real\ :=\ real\ +\ delReal}\newline
-{\tt 26.\ \ \ \ makeViewport3D(sp,\ "Complex\ Vector\ Field")}\newline
-\endImportant
-
-As a first example, let us draw \spad{f(z) == sin(z)}.
-There is no need to create a user function: just pass the
-\spadfunFrom{sin}{Complex DoubleFloat} from \spadtype{Complex DoubleFloat}.
-\xtc{
-Read the file.
-}{
-\spadpaste{)read vectors \bound{readVI}}
-}
-\psXtc{
-Draw the complex vector field of \spad{sin(x)}.
-}{
-\graphpaste{drawComplexVectorField(sin,-2..2,-2..2) \free{readVI}}
-}{
-\epsffile[0 0 295 295]{../ps/vectorsin.ps}
-}
-\ 
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgCompFunsTitle}{Drawing Complex Functions}
-\newcommand{\ugIntProgCompFunsNumber}{10.7.}
-
-@
-\subsection{10.7. Drawing Complex Functions}
-\label{ugIntProgCompFunsPage}
-\begin{itemize}
-\item ugGraphPage \ref{ugGraphPage} on
-page~\pageref{ugGraphPage}
-\end{itemize}
-\index{pages!ugIntProgCompFunsPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgCompFunsPage}
-\index{ugIntProgCompFunsPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgCompFunsPage}{10.7. Drawing Complex Functions}
-\beginscroll
-
-Here is another way to graph a complex function of complex arguments.
-For each complex value \smath{z}, compute \smath{f(z)}, again
-expressing the value in polar coordinates \smath{(r,\theta{})}.  We
-draw the complex valued function, again considering the
-\smath{(x,y)}-plane as the complex plane, using \smath{r} as the
-height (or \smath{z}-coordinate) and \smath{\theta} as the color.
-This is a standard plot---we learned how to do this in
-\downlink{``\ugGraphTitle''}{ugGraphPage} in Chapter
-\ugGraphNumber\ignore{ugGraph}---but here we write a new program to
-illustrate the creation of polygon meshes, or grids.
-
-Call this function \userfun{drawComplex}.
-It displays the points using the ``mesh'' of points.
-The function definition is in three parts.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ drawComplex:\ (C\ ->\ C,\ S,\ S)\ ->\ VIEW3D}\newline
-{\tt 2.\ \ \ drawComplex(f,\ realRange,\ imagRange)\ ==}\newline
-{\tt 3.\ \ \ \ \ delReal\ :=\ (hi(realRange)-lo(realRange))/realSteps}\newline
-{\tt 4.\ \ \ \ \ delImag\ :=\ (hi(imagRange)-lo(imagRange))/imagSteps}\newline
-{\tt 5.\ \ \ \ \ llp:List\ List\ Point\ DFLOAT\ :=\ []}\newline
-\endImportant
-
-Variables \spad{delReal} and \spad{delImag} give the step sizes along
-the real and imaginary directions as computed by the values of the
-global variables \spad{realSteps} and \spad{imagSteps}.  The mesh is
-represented by a list of lists of points \spad{llp}, initially empty.
-Now \spad{[ ]} alone is ambiguous, so to set this initial value you
-have to tell Axiom what type of empty list it is.  Next comes the loop
-which builds \spad{llp}.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ \ \ real\ :=\ lo(realRange)}\newline
-{\tt 2.\ \ \ \ \ for\ i\ in\ 1..realSteps+1\ repeat}\newline
-{\tt 3.\ \ \ \ \ \ \ imag\ :=\ lo(imagRange)}\newline
-{\tt 4.\ \ \ \ \ \ \ lp\ :=\ []\$(List\ Point\ DFLOAT)}\newline
-{\tt 5.\ \ \ \ \ \ \ for\ j\ in\ 1..imagSteps+1\ repeat}\newline
-{\tt 6.\ \ \ \ \ \ \ \ \ z\ :=\ f\ complex(real,imag)}\newline
-{\tt 7.\ \ \ \ \ \ \ \ \ pt\ :=\ point\ [real,imag,\ clipFun\ sqrt\ norm\ z,\ }\newline
-{\tt 8.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ argument\ z]}\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ lp\ :=\ cons(pt,lp)}\newline
-{\tt 10.\ \ \ \ \ \ \ \ imag\ :=\ imag\ +\ delImag}\newline
-{\tt 11.\ \ \ \ \ \ real\ :=\ real\ +\ delReal}\newline
-{\tt 12.\ \ \ \ \ \ llp\ :=\ cons(lp,\ llp)}\newline
-\endImportant
-
-The code consists of both an inner and outer loop.  Each pass through
-the inner loop adds one list \spad{lp} of points to the list of lists
-of points \spad{llp}.  The elements of \spad{lp} are collected in
-reverse order.
-
-\beginImportant
-  
-\noindent
-{\tt 13.\ \ \ \ makeViewport3D(mesh(llp),\ "Complex\ Function")}\newline
-\endImportant
-
-The operation \spadfun{mesh} then creates an object of type
-\spadtype{ThreeSpace(DoubleFloat)} from the list of lists of points.
-This is then passed to \spadfun{makeViewport3D} to display the
-image.
-
-Now add this function directly to your {\bf vectors.input} file and
-re-read the file using \spad{)read vectors}.  We try
-\userfun{drawComplex} using a user-defined function \spad{f}.
-
-\xtc{
-Read the file.
-}{
-\spadpaste{)read vectors \bound{readVI}}
-}
-\xtc{
-This one has a pole at \smath{z=0}.
-}{
-\spadpaste{f(z) == exp(1/z)\bound{e1}}
-}
-\psXtc{
-Draw it with an odd number of steps to avoid the pole.
-}{
-\graphpaste{drawComplex(f,-2..2,-2..2)\free{e1 readVI}}
-}{
-\epsffile[0 0 295 295]{../ps/complexexp.ps}
-}
-\ 
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgFunctionsTitle}{Functions Producing Functions}
-\newcommand{\ugIntProgFunctionsNumber}{10.8.}
-
-@
-\subsection{10.8. Functions Producing Functions}
-\label{ugIntProgFunctionsPage}
-\begin{itemize}
-\item ugUserMakePage \ref{ugUserMakePage} on
-page~\pageref{ugUserMakePage}
-\end{itemize}
-\index{pages!ugIntProgFunctionsPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgFunctionsPage}
-\index{ugIntProgFunctionsPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgFunctionsPage}{10.8. Functions Producing Functions}
-\beginscroll
-
-In \downlink{``\ugUserMakeTitle''}{ugUserMakePage} in Section
-\ugUserMakeNumber\ignore{ugUserMake}, you learned how to use the
-operation \spadfun{function} to create a function from symbolic
-formulas.  Here we introduce a similar operation which not only
-creates functions, but functions from functions.
-
-The facility we need is provided by the package
-\spadtype{MakeUnaryCompiledFunction(E,S,T)}.  This package produces a
-unary (one-argument) compiled function from some symbolic data
-generated by a previous computation.\footnote{%
-\spadtype{MakeBinaryCompiledFunction} is available for binary
-functions.}  The \spad{E} tells where the symbolic data comes from;
-the \spad{S} and \spad{T} give Axiom the source and target type of the
-function, respectively.  The compiled function produced has type
-\spadsig{\spad{S}}{\spad{T}}.  To produce a compiled function with
-definition \spad{p(x) == expr}, call \spad{compiledFunction(expr, x)}
-from this package.  The function you get has no name.  You must to
-assign the function to the variable \spad{p} to give it that name.  %
-\xtc{ Do some computation.  }{ \spadpaste{(x+1/3)**5\bound{p1}} }
-\xtc{ Convert this to an anonymous function of \spad{x}.  Assign it to
-the variable \spad{p} to give the function a name.  }{ \spadpaste{p :=
-compiledFunction(\%,x)\$MakeUnaryCompiledFunction(POLY FRAC
-INT,DFLOAT,DFLOAT)\bound{p2}\free{p1}} } \xtc{ Apply the function.  }{
-\spadpaste{p(sin(1.3))\bound{p3}\free{p2}} }
-
-For a more sophisticated application, read on.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug10.ht>>=
-\newcommand{\ugIntProgNewtonTitle}{Automatic Newton Iteration Formulas}
-\newcommand{\ugIntProgNewtonNumber}{10.9.}
-
-@
-\subsection{10.9. Automatic Newton Iteration Formulas}
-\label{ugIntProgNewtonPage}
-\begin{itemize}
-\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
-page~\pageref{MappingPackageOneXmpPage}
-\end{itemize}
-\index{pages!ugIntProgNewtonPage!ug10.ht}
-\index{ug10.ht!pages!ugIntProgNewtonPage}
-\index{ugIntProgNewtonPage!ug10.ht!pages}
-<<ug10.ht>>=
-\begin{page}{ugIntProgNewtonPage}{10.9. Automatic Newton Iteration Formulas}
-\beginscroll
-
-We resume
-our continuing saga of arrows and complex functions.
-Suppose we want to investigate the behavior of Newton's iteration function
-in the complex plane.
-Given a function \smath{f}, we want to find the complex values
-\smath{z} such that \smath{f(z) = 0}.
-
-The first step is to produce a Newton iteration formula for
-a given \smath{f}:
-\texht{$x_{n+1} = x_n - {{f(x_n)}\over{f'(x_n)}}.$}{%
-\spad{x(n+1) = x(n) - f(x(n))/f'(x(n))}.}
-We represent this formula by a function \smath{g}
-that performs the computation on the right-hand side, that is,
-\texht{$x_{n+1} = {g}(x_n)$}{\spad{x(n+1) = g(x(n))}}.
-
-The type \spadtype{Expression Integer} (abbreviated \spadtype{EXPR
-INT}) is used to represent general symbolic expressions in
-Axiom.
-To make our facility as general as possible, we assume
-\smath{f} has this type.
-Given \smath{f}, we want
-to produce a Newton iteration function \spad{g} which,
-given a complex point \texht{$x_n$}{x(n)}, delivers the next
-Newton iteration point \texht{$x_{n+1}$}{x(n+1)}.
-
-This time we write an input file called {\bf newton.input}.
-We need to import \spadtype{MakeUnaryCompiledFunction} (discussed
-in the last section), call it with appropriate types, and then define
-the function \spad{newtonStep} which references it.
-Here is the function \spad{newtonStep}:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
-{\tt 2.\ \ \ complexFunPack:=MakeUnaryCompiledFunction(EXPR\ INT,C,C)}\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ newtonStep(f)\ ==}\newline
-{\tt 5.\ \ \ \ \ fun\ \ :=\ complexNumericFunction\ f}\newline
-{\tt 6.\ \ \ \ \ deriv\ :=\ complexDerivativeFunction(f,1)}\newline
-{\tt 7.\ \ \ \ \ (x:C):C\ +->}\newline
-{\tt 8.\ \ \ \ \ \ \ x\ -\ fun(x)/deriv(x)}\newline
-{\tt 9.\ \ \ }\newline
-{\tt 10.\ \ complexNumericFunction\ f\ ==}\newline
-{\tt 11.\ \ \ \ v\ :=\ theVariableIn\ f}\newline
-{\tt 12.\ \ \ \ compiledFunction(f,\ v)\$complexFunPack}\newline
-{\tt 13.\ \ }\newline
-{\tt 14.\ \ complexDerivativeFunction(f,n)\ ==}\newline
-{\tt 15.\ \ \ \ v\ :=\ theVariableIn\ f}\newline
-{\tt 16.\ \ \ \ df\ :=\ D(f,v,n)}\newline
-{\tt 17.\ \ \ \ compiledFunction(df,\ v)\$complexFunPack}\newline
-{\tt 18.\ \ }\newline
-{\tt 19.\ \ theVariableIn\ f\ ==\ \ }\newline
-{\tt 20.\ \ \ \ vl\ :=\ variables\ f}\newline
-{\tt 21.\ \ \ \ nv\ :=\ \#\ vl}\newline
-{\tt 22.\ \ \ \ nv\ >\ 1\ =>\ error\ "Expression\ is\ not\ univariate."}\newline
-{\tt 23.\ \ \ \ nv\ =\ 0\ =>\ 'x}\newline
-{\tt 24.\ \ \ \ first\ vl}\newline
-\endImportant
-
-Do you see what is going on here?
-A formula \spad{f} is passed into the function \userfun{newtonStep}.
-First, the function turns \spad{f} into a compiled program mapping
-complex numbers into complex numbers.  Next, it does the same thing
-for the derivative of \spad{f}.  Finally, it returns a function which
-computes a single step of Newton's iteration.
-
-The function \userfun{complexNumericFunction} extracts the variable
-from the expression \spad{f} and then turns \spad{f} into a function
-which maps complex numbers into complex numbers. The function
-\userfun{complexDerivativeFunction} does the same thing for the
-derivative of \spad{f}.  The function \userfun{theVariableIn}
-extracts the variable from the expression \spad{f}, calling the function
-\spadfun{error} if \spad{f} has more than one variable.
-It returns the dummy variable \spad{x} if \spad{f} has no variables.
-
-Let's now apply \userfun{newtonStep} to the formula for computing
-cube roots of two.
-%
-\xtc{
-Read the input file with the definitions.
-}{
-\spadpaste{)read newton\bound{n1}}
-}
-\xtc{}{
-\spadpaste{)read vectors \bound{n1a}}
-}
-
-\xtc{
-The cube root of two.
-}{
-\spadpaste{f := x**3 - 2\bound{n2}\free{n1 n1a}}
-}
-\xtc{
-Get Newton's iteration formula.
-}{
-\spadpaste{g := newtonStep f\bound{n3}\free{n2}}
-}
-\xtc{
-Let \spad{a} denote the result of
-applying Newton's iteration once to the complex number \spad{1 + \%i}.
-}{
-\spadpaste{a := g(1.0 + \%i)\bound{n4}\free{n3}}
-}
-\xtc{
-Now apply it repeatedly. How fast does it converge?
-}{
-\spadpaste{[(a := g(a)) for i in 1..]\bound{n5}\free{n4}}
-}
-\xtc{
-Check the accuracy of the last iterate.
-}{
-\spadpaste{a**3\bound{n6}\free{n5}}
-}
-
-In
-\downlink{`MappingPackage1'}{MappingPackageOneXmpPage}\ignore{MappingPackage1},
-we show how functions can be manipulated as objects in Axiom.  A
-useful operation to consider here is \spadop{*}, which means
-composition.  For example \spad{g*g} causes the Newton iteration
-formula to be applied twice.  Correspondingly, \spad{g**n} means to
-apply the iteration formula \spad{n} times.
-
-%
-\xtc{
-Apply \spad{g} twice to the point \spad{1 + \%i}.
-}{
-\spadpaste{(g*g) (1.0 + \%i)\bound{n10}\free{n3}}
-}
-\xtc{
-Apply \spad{g} 11 times.
-}{
-\spadpaste{(g**11) (1.0 + \%i)\bound{n11}\free{n10}}
-}
-
-Look now at the vector field and surface generated
-after two steps of Newton's formula for the cube root of two.
-The poles in these pictures represent bad starting values, and the
-flat areas are the regions of convergence to the three roots.
-%
-\psXtc{
-The vector field.
-}{
-\graphpaste{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3}}
-}{
-\epsffile[0 0 295 295]{../ps/vectorroot.ps}
-}
-\psXtc{
-The surface.
-}{
-\graphpaste{drawComplex(g**3,-3..3,-3..3)\free{n3}}
-}{
-\epsffile[0 0 295 295]{../ps/complexroot.ps}
-}
-\ 
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug11.ht}
-<<ug11.ht>>=
-\newcommand{\ugPackagesTitle}{Packages}
-\newcommand{\ugPackagesNumber}{11.}
-
-@
-\subsection{11. Packages}
-\label{ugPackagesPage}
-\begin{itemize}
-\item ugIntProgPage \ref{ugIntProgPage} on
-page~\pageref{ugIntProgPage}
-\item ugIntProgPage \ref{ugIntProgPage} on
-page~\pageref{ugIntProgPage}
-\item ugPackagesNamesPage \ref{ugPackagesNamesPage} on
-page~\pageref{ugPackagesNamesPage}
-\item ugPackagesSyntaxPage \ref{ugPackagesSyntaxPage} on
-page~\pageref{ugPackagesSyntaxPage}
-\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
-page~\pageref{ugPackagesAbstractPage}
-\item ugPackagesCapsulesPage \ref{ugPackagesCapsulesPage} on
-page~\pageref{ugPackagesCapsulesPage}
-\item ugPackagesInputFilesPage \ref{ugPackagesInputFilesPage} on
-page~\pageref{ugPackagesInputFilesPage}
-\item ugPackagesPackagesPage \ref{ugPackagesPackagesPage} on
-page~\pageref{ugPackagesPackagesPage}
-\item ugPackagesParametersPage \ref{ugPackagesParametersPage} on
-page~\pageref{ugPackagesParametersPage}
-\item ugPackagesCondsPage \ref{ugPackagesCondsPage} on
-page~\pageref{ugPackagesCondsPage}
-\item ugPackagesCompilingPage \ref{ugPackagesCompilingPage} on
-page~\pageref{ugPackagesCompilingPage}
-\item ugPackagesHowPage \ref{ugPackagesHowPage} on
-page~\pageref{ugPackagesHowPage}
-\end{itemize}
-\index{pages!ugPackagesPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesPage}
-\index{ugPackagesPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesPage}{11. Packages}
-\beginscroll
-
-Packages provide the bulk of
-Axiom's algorithmic library, from numeric packages for computing
-special functions to symbolic facilities for
-differential equations, symbolic integration, and limits.
-
-In \downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
-\ugIntProgNumber\ignore{ugIntProg}, we developed several useful
-functions for drawing vector fields and complex functions.  We now
-show you how you can add these functions to the Axiom library to make
-them available for general use.
-
-The way we created the functions in
-\downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
-\ugIntProgNumber\ignore{ugIntProg} is typical of how you, as an
-advanced Axiom user, may interact with Axiom.  You have an
-application.  You go to your editor and create an input file defining
-some functions for the application.  Then you run the file and try the
-functions.  Once you get them all to work, you will often want to
-extend them, add new features, perhaps write additional functions.
-
-Eventually, when you have a useful set of functions for your
-application, you may want to add them to your local Axiom library.  To
-do this, you embed these function definitions in a package and add
-that package to the library.
-
-To introduce new packages, categories, and domains into the system,
-you need to use the Axiom compiler to convert the constructors into
-executable machine code.  An existing compiler in Axiom is available
-on an ``as-is'' basis.  A new, faster compiler will be available in
-version 2.0 of Axiom.
-
-\beginImportant
-  
-\noindent
-\label{pak-cdraw}
-{\tt 1.\ \ \ C\ \ \ \ \ \ ==>\ Complex\ DoubleFloat}\newline
-{\tt 2.\ \ \ S\ \ \ \ \ \ ==>\ Segment\ DoubleFloat}\newline
-{\tt 3.\ \ \ INT\ \ \ \ ==>\ Integer}\newline
-{\tt 4.\ \ \ DFLOAT\ ==>\ DoubleFloat}\newline
-{\tt 5.\ \ \ VIEW3D\ ==>\ ThreeDimensionalViewport}\newline
-{\tt 6.\ \ \ CURVE\ \ ==>\ List\ List\ Point\ DFLOAT}\newline
-{\tt 7.\ \ \ }\newline
-{\tt 8.\ \ \ )abbrev\ package\ DRAWCX\ DrawComplex}\newline
-{\tt 9.\ \ \ DrawComplex():\ Exports\ ==\ Implementation\ where}\newline
-{\tt 10.\ \ }\newline
-{\tt 11.\ \ \ \ Exports\ ==\ with}\newline
-{\tt 12.\ \ \ \ \ \ drawComplex:\ (C\ ->\ C,S,S,Boolean)\ ->\ VIEW3D}\newline
-{\tt 13.\ \ \ \ \ \ drawComplexVectorField:\ (C\ ->\ C,S,S)\ ->\ VIEW3D}\newline
-{\tt 14.\ \ \ \ \ \ setRealSteps:\ INT\ ->\ INT}\newline
-{\tt 15.\ \ \ \ \ \ setImagSteps:\ INT\ ->\ INT}\newline
-{\tt 16.\ \ \ \ \ \ setClipValue:\ DFLOAT->\ DFLOAT}\newline
-{\tt 17.\ \ }\newline
-{\tt 18.\ \ \ \ Implementation\ ==\ add}\newline
-{\tt 19.\ \ \ \ \ \ arrowScale\ :\ DFLOAT\ :=\ (0.2)::DFLOAT\ --relative\ size}\newline
-{\tt 20.\ \ \ \ \ \ arrowAngle\ :\ DFLOAT\ :=\ pi()-pi()/(20::DFLOAT)}\newline
-{\tt 21.\ \ \ \ \ \ realSteps\ \ :\ INT\ :=\ 11\ --\#\ real\ steps}\newline
-{\tt 22.\ \ \ \ \ \ imagSteps\ \ :\ INT\ :=\ 11\ --\#\ imaginary\ steps}\newline
-{\tt 23.\ \ \ \ \ \ clipValue\ \ :\ DFLOAT\ \ :=\ 10::DFLOAT\ --maximum\ vector\ length}\newline
-{\tt 24.\ \ }\newline
-{\tt 25.\ \ \ \ \ \ setRealSteps(n)\ ==\ realSteps\ :=\ n}\newline
-{\tt 26.\ \ \ \ \ \ setImagSteps(n)\ ==\ imagSteps\ :=\ n}\newline
-{\tt 27.\ \ \ \ \ \ setClipValue(c)\ ==\ clipValue\ :=\ c}\newline
-{\tt 28.\ \ }\newline
-{\tt 29.\ \ \ \ \ \ clipFun:\ DFLOAT\ ->\ DFLOAT\ --Clip\ large\ magnitudes.}\newline
-{\tt 30.\ \ \ \ \ \ clipFun(x)\ ==\ min(max(x,\ -clipValue),\ clipValue)}\newline
-{\tt 31.\ \ }\newline
-{\tt 32.\ \ \ \ \ \ makeArrow:\ (Point\ DFLOAT,Point\ DFLOAT,DFLOAT,DFLOAT)\ ->\ CURVE}\newline
-{\tt 33.\ \ \ \ \ \ makeArrow(p1,\ p2,\ len,\ arg)\ ==\ ...}\newline
-{\tt 34.\ \ }\newline
-{\tt 35.\ \ \ \ \ \ drawComplex(f,\ realRange,\ imagRange,\ arrows?)\ ==\ ...}\newline
-\caption{The DrawComplex package.}\label{fig-pak-cdraw}
-\endImportant
-
+\chapter{NAG ANNA Expert System}
+\section{annaex.ht}
+\subsection{Axiom/NAG Expert System}
+\label{UXANNA}
+\index{pages!UXANNA!annaex.ht}
+\index{annaex.ht!pages!UXANNA}
+\index{UXANNA!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNA}{Axiom/NAG Expert System}
+\centerline{\tt{\inputbitmap{\htbmdir{}/anna_logo.xbm}}\rm}
+\newline
+\centerline{This expert system chooses, and uses, NAG numerical routines.}
+\begin{scroll}
+\blankline
+\indent{2}
 \beginmenu
-    \menudownlink{{11.1. Names, Abbreviations, and File Structure}}
-{ugPackagesNamesPage}
-    \menudownlink{{11.2. Syntax}}{ugPackagesSyntaxPage}
-    \menudownlink{{11.3. Abstract Datatypes}}{ugPackagesAbstractPage}
-    \menudownlink{{11.4. Capsules}}{ugPackagesCapsulesPage}
-    \menudownlink{{11.5. Input Files vs. Packages}}{ugPackagesInputFilesPage}
-    \menudownlink{{11.6. Compiling Packages}}{ugPackagesPackagesPage}
-    \menudownlink{{11.7. Parameters}}{ugPackagesParametersPage}
-    \menudownlink{{11.8. Conditionals}}{ugPackagesCondsPage}
-    \menudownlink{{11.9. Testing}}{ugPackagesCompilingPage}
-    \menudownlink{{11.10. How Packages Work}}{ugPackagesHowPage}
+\menumemolink{Integration}{UXANNAInt}
+\blankline
+\menumemolink{Ordinary Differential Equations}{UXANNAOde}
+\blankline
+\menumemolink{Partial Differential Equations}{UXANNAPde}
+\blankline
+\menumemolink{Optimization}{UXANNAOpt}
+\vspace{10}
+\menumemolink{About the Axiom/NAG Expert System}{UXANNATxt}
+%\unixcommand{(Postscript)}{ghostview \ \htbmdir{}/anna.ps}
+%\blankline
+%\menumemolink{How to use the NAGLINK}{nagLinkIntroPage}
+%\blankline
+%\menumemolink{Tutorial}{tutorialIntroPage}
+%\blankline
+%\item \menulispdownlink{Interpolation}{(|interp1|}
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesNamesTitle}{Names, Abbreviations, and File Structure}
-\newcommand{\ugPackagesNamesNumber}{11.1.}
-
-@ 
-\subsection{11.1. Names, Abbreviations, and File Structure}
-\label{ugPackagesNamesPage} 
-\begin{itemize}
-\item ugIntProgPage \ref{ugIntProgPage} on
-page~\pageref{ugIntProgPage}
-\item ugTypesWritingAbbrPage \ref{ugTypesWritingAbbrPage} on
-page~\pageref{ugTypesWritingAbbrPage}
-\end{itemize}
-\index{pages!ugPackagesNamesPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesNamesPage}
-\index{ugPackagesNamesPage!ug11.ht!pages} 
-<<ug11.ht>>=
-\begin{page}{ugPackagesNamesPage} 
-{11.1. Names, Abbreviations, and File Structure} 
-\beginscroll 
-% 
-
-Each package has a name and an abbreviation.  For a package of the
-complex draw functions from
-\downlink{``\ugIntProgTitle''}{ugIntProgPage} in Chapter
-\ugIntProgNumber\ignore{ugIntProg}, we choose the name
-\nonLibAxiomType{DrawComplex} and abbreviation
-\nonLibAxiomType{DRAWCX}.\footnote{An abbreviation can be any string
-of between two and seven capital letters and digits, beginning with a
-letter.  See
-\downlink{``\ugTypesWritingAbbrTitle''}{ugTypesWritingAbbrPage} in
-Section \ugTypesWritingAbbrNumber\ignore{ugTypesWritingAbbr} for more
-information.}  To be sure that you have not chosen a name or
-abbreviation already used by the system, issue the system command
-\spadcmd{)show} for both the name and the abbreviation.
-
-Once you have named the package and its abbreviation, you can choose
-any new filename you like with extension ``{\bf \spadFileExt{}}'' to
-hold the definition of your package.  We choose the name {\bf
-drawpak\spadFileExt{}}.  If your application involves more than one
-package, you can put them all in the same file.  Axiom assumes no
-relationship between the name of a library file, and the name or
-abbreviation of a package.
-
-Near the top of the ``{\bf \spadFileExt{}}'' file, list all the
-abbreviations for the packages using \spadcmd{)abbrev}, each command
-beginning in column one.  Macros giving names to Axiom expressions can
-also be placed near the top of the file.  The macros are only usable
-from their point of definition until the end of the file.
-
-Consider the definition of
-\nonLibAxiomType{DrawComplex} in Figure \ref{fig-pak-cdraw}.
-After the macro
-definition
-\begin{verbatim}
-S      ==> Segment DoubleFloat
-\end{verbatim}
-the name
-{\tt S} can be used in the file as a
-shorthand for \axiomType{Segment DoubleFloat}.
-\footnote{The interpreter also allows
-{\tt macro} for macro definitions.}
-The abbreviation command for the package
-\begin{verbatim}
-)abbrev package DRAWCX DrawComplex
-\end{verbatim}
-is given after the macros (although it could precede them).
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesSyntaxTitle}{Syntax}
-\newcommand{\ugPackagesSyntaxNumber}{11.2.}
-
-@
-\subsection{11.2. Syntax}
-\label{ugPackagesSyntaxPage}
-\index{pages!ugPackagesSyntaxPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesSyntaxPage}
-\index{ugPackagesSyntaxPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesSyntaxPage}{11.2. Syntax}
-\beginscroll
-%
-The definition of a package has the syntax:
-\centerline{{\frenchspacing{\it PackageForm {\tt :} Exports\quad{\tt ==}\quad Implementation}}}
-The syntax for defining a package constructor is the same as that
-for defining any function in Axiom.
-In practice, the definition extends over many lines so that this syntax is
-not practical.
-Also, the type of a package is expressed by the operator \axiom{with}
-\spadkey{with}
-followed by an explicit list of operations.
-A preferable way to write the definition of a package is with a \axiom{where}
-\spadkey{where}
-expression:
-
-\beginImportant
-The definition of a package usually has the form: \newline
-{\tt%
-{\it PackageForm} : Exports  ==  Implementation where \newline
-\texht{\hspace*{.75pc}}{\tab{3}} {\it optional type declarations}\newline
-\texht{\hspace*{.75pc}}{\tab{3}} Exports  ==   with \newline
-\texht{\hspace*{2.0pc}}{\tab{6}}   {\it list of exported operations}\newline
-\texht{\hspace*{.75pc}}{\tab{3}} Implementation == add \newline
-\texht{\hspace*{2.0pc}}{\tab{6}}   {\it list of function definitions for exported operations}
-}
-\endImportant
-
-The \axiomType{DrawComplex} package takes no parameters and exports five
-operations, each a separate item of a \spadgloss{pile}.
-Each operation is described as a \spadgloss{declaration}: a name, followed
-by a colon (\axiomSyntax{:}), followed by the type of the operation.
-All operations have types expressed as \spadglossSee{mappings}{mapping} with
-the syntax
-\centerline{{{\it}}
-\centerline{{source\quad{\tt ->}\quad target}}
-\centerline{{}}}
-
-%e *********************************************************************
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesAbstractTitle}{Abstract Datatypes}
-\newcommand{\ugPackagesAbstractNumber}{11.3.}
-
-@
-\subsection{11.3. Abstract Datatypes}
-\label{ugPackagesAbstractPage}
-\begin{itemize}
-\item ugIntProgCompFunsPage \ref{ugIntProgCompFunsPage} on
-page~\pageref{ugIntProgCompFunsPage}
-\end{itemize}
-\index{pages!ugPackagesAbstractPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesAbstractPage}
-\index{ugPackagesAbstractPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesAbstractPage}{11.3. Abstract Datatypes}
-\beginscroll
-
-A constructor as defined in Axiom is called an \spadgloss{abstract
-datatype} in the computer science literature.  Abstract datatypes
-separate ``specification'' (what operations are provided) from
-``implementation'' (how the operations are implemented).  The {\tt
-Exports} (specification) part of a constructor is said to be
-``public'' (it provides the user interface to the package) whereas the
-{\tt Implementation} part is ``private'' (information here is
-effectively hidden---programs cannot take advantage of it).
-
-The {\tt Exports} part specifies what operations the package provides
-to users.  As an author of a package, you must ensure that the {\tt
-Implementation} part provides a function for each operation in the
-{\tt Exports} part.\footnote{The \spadtype{DrawComplex} package
-enhances the facility described in
-\downlink{``\ugIntProgCompFunsTitle''}{ugIntProgCompFunsPage} in
-Chapter \ugIntProgCompFunsNumber\ignore{ugIntProgCompFuns} by allowing
-a complex function to have arrows emanating from the surface to
-indicate the direction of the complex argument.}
-
-An important difference between interactive programming and the use of
-packages is in the handling of global variables such as
-\axiom{realSteps} and \axiom{imagSteps}.  In interactive programming,
-you simply change the values of variables by \spadgloss{assignment}.
-With packages, such variables are local to the package---their values
-can only be set using functions exported by the package.  In our
-example package, we provide two functions \fakeAxiomFun{setRealSteps}
-and \fakeAxiomFun{setImagSteps} for this purpose.
-
-Another local variable is \axiom{clipValue} which can be changed using
-the exported operation \fakeAxiomFun{setClipValue}.  This value is
-referenced by the internal function \fakeAxiomFun{clipFun} that
-decides whether to use the computed value of the function at a point
-or, if the magnitude of that value is too large, the value assigned to
-\axiom{clipValue} (with the appropriate sign).
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesCapsulesTitle}{Capsules}
-\newcommand{\ugPackagesCapsulesNumber}{11.4.}
-
-@
-\subsection{11.4. Capsules}
-\label{ugPackagesCapsulesPage}
-\index{pages!ugPackagesCapsulesPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesCapsulesPage}
-\index{ugPackagesCapsulesPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesCapsulesPage}{11.4. Capsules}
-\beginscroll
-%
-The part to the right of {\tt add} in the {\tt Implementation}
-\spadkey{add}
-part of the definition is called a \spadgloss{capsule}.
-The purpose of a capsule is:
-\indent{4}
-\beginitems
-\item[-] to define a function for each exported operation, and
-\item[-] to define a \spadgloss{local environment} for these functions to run.
-\enditems
 \indent{0}
-
-What is a local environment?
-First, what is an environment?
-Think of the capsule as an input file that Axiom reads from top to
-bottom.
-Think of the input file as having a \axiom{)clear all} at the top
-so that initially no variables or functions are defined.
-When this file is read, variables such as \axiom{realSteps} and
-\axiom{arrowSize} in \nonLibAxiomType{DrawComplex} are set to initial values.
-Also, all the functions defined in the capsule are compiled.
-These include those that are exported (like \axiom{drawComplex}), and
-those that are not (like \axiom{makeArrow}).
-At the end, you get a set of name-value pairs:
-variable names (like \axiom{realSteps} and \axiom{arrowSize})
-are paired with assigned values, while
-operation names (like \axiom{drawComplex} and \axiom{makeArrow})
-are paired with function values.
-
-This set of name-value pairs is called an \spadgloss{environment}.
-Actually, we call this environment the ``initial environment'' of a package:
-it is the environment that exists immediately after the package is
-first built.
-Afterwards, functions of this capsule can
-access or reset a variable in the environment.
-The environment is called {\it local} since any changes to the value of a
-variable in this environment can be seen {\it only} by these functions.
-
-Only the functions from the package can change the variables in the local
-environment.
-When two functions are called successively from a package,
-any changes caused by the first function called
-are seen by the second.
-
-Since the environment is local to the package, its names
-don't get mixed
-up with others in the system or your workspace.
-If you happen to have a variable called \axiom{realSteps} in your
-workspace, it does not affect what the
-\nonLibAxiomType{DrawComplex} functions do in any way.
-
-The functions in a package are compiled into machine code.
-Unlike function definitions in input files that may be compiled repeatedly
-as you use them with varying argument types,
-functions in packages have a unique type (generally parameterized by
-the argument parameters of a package) and a unique compilation residing on disk.
-
-The capsule itself is turned into a compiled function.
-This so-called {\it capsule function} is what builds the initial environment
-spoken of above.
-If the package has arguments (see below), then each call to the package
-constructor with a distinct pair of arguments
-builds a distinct package, each with its own local environment.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesInputFilesTitle}{Input Files vs. Packages}
-\newcommand{\ugPackagesInputFilesNumber}{11.5.}
-
-@
-\subsection{11.5. Input Files vs. Packages}
-\label{ugPackagesInputFilesPage}
-\index{pages!ugPackagesInputFilesPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesInputFilesPage}
-\index{ugPackagesInputFilesPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesInputFilesPage}{11.5. Input Files vs. Packages}
-\beginscroll
-%
-A good question at this point would be ``Is writing a package more difficult than
-writing an input file?''
-
-The programs in input files are designed for flexibility and ease-of-use.
-Axiom can usually work out all of your types as it reads your program
-and does the computations you request.
-Let's say that you define a one-argument function without giving its type.
-When you first apply the function to a value, this
-value is understood by Axiom as identifying the type for the
-argument parameter.
-Most of the time Axiom goes through the body of your function and
-figures out the target type that you have in mind.
-Axiom sometimes fails to get it right.
-Then---and only then---do you need a declaration to tell Axiom what
-type you want.
-
-Input files are usually written to be read by Axiom---and by you.
-Without suitable documentation and declarations, your input files
-are likely incomprehensible to a colleague---and to you some
-months later!
-
-Packages are designed for legibility, as well as
-run-time efficiency.
-There are few new concepts you need to learn to write
-packages. Rather, you just have to be explicit about types
-and type conversions.
-The types of all functions are pre-declared so that Axiom---and the reader---
-knows precisely what types of arguments can be passed to and from
-the functions (certainly you don't want a colleague to guess or to
-have to work this out from context!).
-The types of local variables are also declared.
-Type conversions are explicit, never automatic.\footnote{There
-is one exception to this rule: conversions from a subdomain to a
-domain are automatic.
-After all, the objects both have the domain as a common type.}
-
-In summary, packages are more tedious to write than input files.
-When writing input files, you can casually go ahead, giving some
-facts now, leaving others for later.
-Writing packages requires forethought, care and discipline.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesPackagesTitle}{Compiling Packages}
-\newcommand{\ugPackagesPackagesNumber}{11.6.}
-
-@
-\subsection{11.6. Compiling Packages}
-\label{ugPackagesPackagesPage}
-\index{pages!ugPackagesPackagesPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesPackagesPage}
-\index{ugPackagesPackagesPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesPackagesPage}{11.6. Compiling Packages}
-\beginscroll
-%
-
-Once you have defined the package \nonLibAxiomType{DrawComplex},
-you need to compile and test it.
-To compile the package, issue the system command \spadcmd{)compile drawpak}.
-Axiom reads the file {\bf drawpak\spadFileExt{}}
-and compiles its contents into machine binary.
-If all goes well, the file {\bf DRAWCX.nrlib} is created in your
-local directory for the package.
-To test the package, you must load the package before trying an
-operation.
-
-\nullXtc{
-Compile the package.
-}{
-\spadpaste{)compile drawpak}
-}
-\xtc{
-Expose the package.
-}{
-\spadpaste{)expose DRAWCX \bound{dp}}
-}
-\xtc{
-Use an odd step size to avoid
-a pole at the origin.
-}{
-\spadpaste{setRealSteps 51 \free{dp}\bound{srs}}
-}
-\xtc{
-}{
-\spadpaste{setImagSteps 51 \free{dp}\bound{scs}}
-}
-\xtc{
-Define \userfun{f} to be the Gamma function.
-}{
-\spadpaste{f(z) == Gamma(z) \bound{f}}
-}
-\xtc{
-Clip values of function with magnitude larger than 7.
-}{
-\spadpaste{setClipValue 7}
-}
-\psXtc{
-Draw the \spadfun{Gamma} function.
-}{
-\graphpaste{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false) \free{srs scs f}}
-}{
-\epsffile[0 0 300 300]{../ps/3dgamma11.ps}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesParametersTitle}{Parameters}
-\newcommand{\ugPackagesParametersNumber}{11.7.}
-
-@
-\subsection{11.7. Parameters}
-\label{ugPackagesParametersPage}
-\begin{itemize}
-\item ugTypesPage \ref{ugTypesPage} on
-page~\pageref{ugTypesPage}
-\item ugUserBlocksPage \ref{ugUserBlocksPage} on
-page~\pageref{ugUserBlocksPage}
-\item ugCategoriesAttributesPage \ref{ugCategoriesAttributesPage} on
-page~\pageref{ugCategoriesAttributesPage}
-\end{itemize}
-\index{pages!ugPackagesParametersPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesParametersPage}
-\index{ugPackagesParametersPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesParametersPage}{11.7. Parameters}
-\beginscroll
-%
-The power of packages becomes evident when packages have parameters.
-Usually these parameters are domains and the exported operations have types
-involving these parameters.
-
-In \downlink{``\ugTypesTitle''}{ugTypesPage} in Chapter
-\ugTypesNumber\ignore{ugTypes}, you learned that categories denote
-classes of domains.  Although we cover this notion in detail in the
-next chapter, we now give you a sneak preview of its usefulness.
-
-In \downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} in Section
-\ugUserBlocksNumber\ignore{ugUserBlocks}, we defined functions
-\axiom{bubbleSort(m)} and \axiom{insertionSort(m)} to sort a list of
-integers.  If you look at the code for these functions, you see that
-they may be used to sort {\it any} structure \axiom{m} with the right
-properties.  Also, the functions can be used to sort lists of {\it
-any} elements---not just integers.  Let us now recall the code for
-\axiom{bubbleSort}.
-
-\begin{verbatim}
-bubbleSort(m) ==
-  n := #m
-  for i in 1..(n-1) repeat
-    for j in n..(i+1) by -1 repeat
-      if m.j < m.(j-1) then swap!(m,j,j-1)
-  m
-\end{verbatim}
-
-What properties of ``lists of integers'' are assumed by the sorting
-algorithm?  In the first line, the operation \spadfun{\#} computes the
-maximum index of the list.  The first obvious property is that
-\axiom{m} must have a finite number of elements.  In Axiom, this is
-done by your telling Axiom that \axiom{m} has the ``attribute''
-\spadatt{finiteAggregate}.  An \spadgloss{attribute} is a property
-that a domain either has or does not have.  As we show later in
-\downlink{``\ugCategoriesAttributesTitle''}{ugCategoriesAttributesPage}
-in Section
-\ugCategoriesAttributesNumber\ignore{ugCategoriesAttributes}, programs
-can query domains as to the presence or absence of an attribute.
-
-The operation \spadfunX{swap} swaps elements of \axiom{m}.
-Using \Browse{}, you find that \spadfunX{swap} requires its
-elements to come from a domain of category
-\axiomType{IndexedAggregate} with attribute
-\spadatt{shallowlyMutable}.
-This attribute means that you can change the internal components
-of \axiom{m} without changing its external structure.
-Shallowly-mutable data structures include lists, streams, one- and
-two-dimensional arrays, vectors, and matrices.
-
-The category \axiomType{IndexedAggregate} designates the class of
-aggregates whose elements can be accessed by the notation
-\axiom{m.s} for suitable selectors \axiom{s}.
-The category \axiomType{IndexedAggregate} takes two arguments:
-\axiom{Index}, a domain of selectors for the aggregate, and
-\axiom{Entry}, a domain of entries for the aggregate.
-Since the sort functions access elements by integers, we must
-choose \axiom{Index = }\axiomType{Integer}.
-The most general class of domains for which \axiom{bubbleSort} and
-\axiom{insertionSort} are defined are those of
-category \spadtype{IndexedAggregate(Integer,Entry)} with the two
-attributes \spadatt{shallowlyMutable} and
-\spadatt{finiteAggregate}.
-
-Using \Browse{}, you can also discover that Axiom has many kinds of domains
-with attribute \spadatt{shallowlyMutable}.
-Those of class \axiomType{IndexedAggregate(Integer,Entry)} include
-\axiomType{Bits}, \axiomType{FlexibleArray}, \axiomType{OneDimensionalArray},
-\axiomType{List}, \axiomType{String}, and \axiomType{Vector}, and also
-\axiomType{HashTable} and \axiomType{EqTable} with integer keys.
-Although you may never want to sort all such structures, we
-nonetheless demonstrate Axiom's
-ability to do so.
-
-Another requirement is that \nonLibAxiomType{Entry} has an operation
-\axiomOp{<}.  One way to get this operation is to assume that
-\nonLibAxiomType{Entry} has category \axiomType{OrderedSet}.  By
-definition, will then export a \axiomOp{<} operation.  A more general
-approach is to allow any comparison function \axiom{f} to be used for
-sorting.  This function will be passed as an argument to the sorting
-functions.
-
-Our sorting package then takes two arguments: a domain \axiom{S} of
-objects of {\it any} type, and a domain \axiom{A}, an aggregate of
-type \axiomType{IndexedAggregate(Integer, S)} with the above two
-attributes.  Here is its definition using what are close to the
-original definitions of \axiom{bubbleSort} and \axiom{insertionSort}
-for sorting lists of integers.  The symbol \axiomSyntax{!} is added to
-the ends of the operation names.  This uniform naming convention is
-used for Axiom operation names that destructively change one or more
-of their arguments.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ SortPackage(S,A)\ :\ Exports\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ S:\ Object}\newline
-{\tt 3.\ \ \ \ \ A:\ IndexedAggregate(Integer,S)}\newline
-{\tt 4.\ \ \ \ \ \ \ with\ (finiteAggregate;\ shallowlyMutable)}\newline
-{\tt 5.\ \ \ }\newline
-{\tt 6.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 7.\ \ \ \ \ \ \ bubbleSort!:\ (A,(S,S)\ ->\ Boolean)\ ->\ A}\newline
-{\tt 8.\ \ \ \ \ \ \ insertionSort!:\ (A,\ (S,S)\ ->\ Boolean)\ ->\ A}\newline
-{\tt 9.\ \ \ }\newline
-{\tt 10.\ \ \ \ Implementation\ ==\ add}\newline
-{\tt 11.\ \ \ \ \ \ bubbleSort!(m,f)\ ==}\newline
-{\tt 12.\ \ \ \ \ \ \ \ n\ :=\ \#m}\newline
-{\tt 13.\ \ \ \ \ \ \ \ for\ i\ in\ 1..(n-1)\ repeat}\newline
-{\tt 14.\ \ \ \ \ \ \ \ \ \ for\ j\ in\ n..(i+1)\ by\ -1\ repeat}\newline
-{\tt 15.\ \ \ \ \ \ \ \ \ \ \ \ if\ f(m.j,m.(j-1))\ then\ swap!(m,j,j-1)}\newline
-{\tt 16.\ \ \ \ \ \ \ \ m}\newline
-{\tt 17.\ \ \ \ \ \ insertionSort!(m,f)\ ==}\newline
-{\tt 18.\ \ \ \ \ \ \ \ for\ i\ in\ 2..\#m\ repeat}\newline
-{\tt 19.\ \ \ \ \ \ \ \ \ \ j\ :=\ i}\newline
-{\tt 20.\ \ \ \ \ \ \ \ \ \ while\ j\ >\ 1\ and\ f(m.j,m.(j-1))\ repeat}\newline
-{\tt 21.\ \ \ \ \ \ \ \ \ \ \ \ swap!(m,j,j-1)}\newline
-{\tt 22.\ \ \ \ \ \ \ \ \ \ \ \ j\ :=\ (j\ -\ 1)\ pretend\ PositiveInteger}\newline
-{\tt 23.\ \ \ \ \ \ \ \ m}\newline
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesCondsTitle}{Conditionals}
-\newcommand{\ugPackagesCondsNumber}{11.8.}
-
-@
-\subsection{11.8. Conditionals}
-\label{ugPackagesCondsPage}
-\begin{itemize}
-\item ugUserBlocksPage \ref{ugUserBlocksPage} on
-page~\pageref{ugUserBlocksPage}
-\end{itemize}
-\index{pages!ugPackagesCondsPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesCondsPage}
-\index{ugPackagesCondsPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesCondsPage}{11.8. Conditionals}
-\beginscroll
-%
-When packages have parameters, you can say that an operation is or is not
-exported depending on the values of those parameters.
-When the domain of objects \axiom{S} has an \axiomOp{<}
-operation, we can supply one-argument versions of
-\axiom{bubbleSort} and \axiom{insertionSort} which use this operation
-for sorting.
-The presence of the
-operation \axiomOp{<} is guaranteed when \axiom{S} is an ordered set.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ Exports\ ==\ with}\newline
-{\tt 2.\ \ \ \ \ \ \ bubbleSort!:\ (A,(S,S)\ ->\ Boolean)\ ->\ A}\newline
-{\tt 3.\ \ \ \ \ \ \ insertionSort!:\ (A,\ (S,S)\ ->\ Boolean)\ ->\ A}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ \ \ \ \ if\ S\ has\ OrderedSet\ then}\newline
-{\tt 6.\ \ \ \ \ \ \ \ \ bubbleSort!:\ A\ ->\ A}\newline
-{\tt 7.\ \ \ \ \ \ \ \ \ insertionSort!:\ A\ ->\ A}\newline
-\endImportant
-
-In addition to exporting the one-argument sort operations
-conditionally, we must provide conditional definitions for the
-operations in the {\tt Implementation} part.
-This is easy: just have the one-argument functions call the
-corresponding two-argument functions with the operation
-\axiomOp{<} from \axiom{S}.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ \ ...}\newline
-{\tt 3.\ \ \ \ \ \ \ if\ S\ has\ OrderedSet\ then}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ bubbleSort!(m)\ ==\ bubbleSort!(m,<\$S)}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ insertionSort!(m)\ ==\ insertionSort!(m,<\$S)}\newline
-\endImportant
-
-In \downlink{``\ugUserBlocksTitle''}{ugUserBlocksPage} in Section
-\ugUserBlocksNumber\ignore{ugUserBlocks}, we give an alternative
-definition of \fakeAxiomFun{bubbleSort} using
-\spadfunFrom{first}{List} and \spadfunFrom{rest}{List} that is more
-efficient for a list (for which access to any element requires
-traversing the list from its first node).  To implement a more
-efficient algorithm for lists, we need the operation \spadfun{setelt}
-which allows us to destructively change the \spadfun{first} and
-\spadfun{rest} of a list.  Using \Browse{}, you find that these
-operations come from category \axiomType{UnaryRecursiveAggregate}.
-Several aggregate types are unary recursive aggregates including those
-of \axiomType{List} and \axiomType{AssociationList}.  We provide two
-different implementations for \fakeAxiomFun{bubbleSort!} and
-\fakeAxiomFun{insertionSort!}: one for list-like structures, another
-for array-like structures.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ Implementation\ ==\ add}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
-{\tt 3.\ \ \ \ \ \ \ if\ A\ has\ UnaryRecursiveAggregate(S)\ then}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ bubbleSort!(m,fn)\ ==}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ \ \ empty?\ m\ =>\ m}\newline
-{\tt 6.\ \ \ \ \ \ \ \ \ \ \ l\ :=\ m}\newline
-{\tt 7.\ \ \ \ \ \ \ \ \ \ \ while\ not\ empty?\ (r\ :=\ l.rest)\ repeat}\newline
-{\tt 8.\ \ \ \ \ \ \ \ \ \ \ \ \ \ r\ :=\ bubbleSort!\ r}\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ \ \ \ \ \ x\ :=\ l.first}\newline
-{\tt 10.\ \ \ \ \ \ \ \ \ \ \ \ \ if\ fn(r.first,x)\ then}\newline
-{\tt 11.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ l.first\ :=\ r.first}\newline
-{\tt 12.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ r.first\ :=\ x}\newline
-{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ l.rest\ :=\ r}\newline
-{\tt 14.\ \ \ \ \ \ \ \ \ \ \ \ \ l\ :=\ l.rest}\newline
-{\tt 15.\ \ \ \ \ \ \ \ \ \ \ m}\newline
-{\tt 16.\ \ \ \ \ \ \ \ \ insertionSort!(m,fn)\ ==}\newline
-{\tt 17.\ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
-\endImportant
-
-The ordering of definitions is important.
-The standard definitions come first and
-then the predicate
-\begin{verbatim}
-A has UnaryRecursiveAggregate(S)
-\end{verbatim}
-is evaluated.
-If {\tt true}, the special definitions cover up the standard ones.
-
-Another equivalent way to write the capsule is to use an
-\axiom{if-then-else} expression:
-\spadkey{if}
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ \ \ \ \ \ if\ A\ has\ UnaryRecursiveAggregate(S)\ then}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
-{\tt 3.\ \ \ \ \ \ \ \ else}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ \ \ ...}\newline
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesCompilingTitle}{Testing}
-\newcommand{\ugPackagesCompilingNumber}{11.9.}
-
-@
-\subsection{11.9. Testing}
-\label{ugPackagesCompilingPage}
-\begin{itemize}
-\item EqTableXmpPage \ref{EqTableXmpPage} on
-page~\pageref{EqTableXmpPage}
-\end{itemize}
-\index{pages!ugPackagesCompilingPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesCompilingPage}
-\index{ugPackagesCompilingPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesCompilingPage}{11.9. Testing}
-\beginscroll
-%
-Once you have written the package, embed it in a file, for example, {\bf
-sortpak\spadFileExt{}}.
-Be sure to include an \axiom{)abbrev} command at the top of the file:
-\begin{verbatim}
-)abbrev package SORTPAK SortPackage
-\end{verbatim}
-Now compile the file (using \spadcmd{)compile sortpak\spadFileExt{}}).
-\xtc{
-Expose the constructor.
-You are then ready to begin testing.
-}{
-\spadpaste{)expose SORTPAK}
-}
-\xtc{
-Define a list.
-}{
-\spadpaste{l := [1,7,4,2,11,-7,3,2]}
-}
-\xtc{
-Since the integers are an ordered set,
-a one-argument operation will do.
-}{
-\spadpaste{bubbleSort!(l)}
-}
-\xtc{
-Re-sort it using ``greater than.''
-}{
-\spadpaste{bubbleSort!(l,(x,y) +-> x > y)}
-}
-\xtc{
-Now sort it again using \axiomOp{<} on integers.
-}{
-\spadpaste{bubbleSort!(l, <\$Integer)}
-}
-\xtc{
-A string is an aggregate of characters so we can sort them as well.
-}{
-\spadpaste{bubbleSort! "Mathematical Sciences"}
-}
-\xtc{
-Is \axiomOp{<} defined on booleans?
-}{
-\spadpaste{false < true}
-}
-\xtc{
-Good! Create a bit string representing ten consecutive
-boolean values \axiom{true}.
-}{
-\spadpaste{u : Bits := new(10,true)}
-}
-\xtc{
-Set bits 3 through 5 to \axiom{false}, then display the result.
-}{
-\spadpaste{u(3..5) := false; u}
-}
-\xtc{
-Now sort these booleans.
-}{
-\spadpaste{bubbleSort! u}
-}
-\xtc{
-Create an ``eq-table'' (see 
-\downlink{`EqTable'}{EqTableXmpPage}\ignore{EqTable}), a
-table having integers as keys
-and strings as values.
-}{
-\spadpaste{t : EqTable(Integer,String) := table()}
-}
-\xtc{
-Give the table a first entry.
-}{
-\spadpaste{t.1 := "robert"}
-}
-\xtc{
-And a second.
-}{
-\spadpaste{t.2 := "richard"}
-}
-\xtc{
-What does the table look like?
-}{
-\spadpaste{t}
-}
-\xtc{
-Now sort it.
-}{
-\spadpaste{bubbleSort! t}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug11.ht>>=
-\newcommand{\ugPackagesHowTitle}{How Packages Work}
-\newcommand{\ugPackagesHowNumber}{11.10.}
-
-@
-\subsection{11.10. How Packages Work}
-\label{ugPackagesHowPage}
-\begin{itemize}
-\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
-page~\pageref{ugCategoriesHierPage}
-\end{itemize}
-\index{pages!ugPackagesHowPage!ug11.ht}
-\index{ug11.ht!pages!ugPackagesHowPage}
-\index{ugPackagesHowPage!ug11.ht!pages}
-<<ug11.ht>>=
-\begin{page}{ugPackagesHowPage}{11.10. How Packages Work}
-\beginscroll
-%
-Recall that packages as abstract datatypes are compiled independently
-and put into the library.
-The curious reader may ask: ``How is the interpreter able to find an
-operation such as \fakeAxiomFun{bubbleSort!}?
-Also, how is a single compiled function such as \fakeAxiomFun{bubbleSort!} able
-to sort data of different types?''
-
-After the interpreter loads the package \nonLibAxiomType{SortPackage}, the four
-operations from the package become known to the interpreter.
-Each of these operations is expressed as a {\it modemap} in which the type
-of the operation is written in terms of symbolic domains.
-\nullXtc{
-See the modemaps for \fakeAxiomFun{bubbleSort!}.
-}{
-\spadpaste{)display op bubbleSort!}
-}
-\begin{verbatim}
-There are 2 exposed functions called bubbleSort! :
-
-   [1] D1 -> D1 from SortPackage(D2,D1)
-         if D2 has ORDSET and D2 has OBJECT and D1 has
-         IndexedAggregate(Integer, D2) with
-              finiteAggregate
-              shallowlyMutable
-
-   [2] (D1,((D3,D3) -> Boolean)) -> D1 from SortPackage(D3,D1)
-         if D3 has OBJECT and D1 has
-         IndexedAggregate(Integer,D3) with
-              finiteAggregate
-              shallowlyMutable
-\end{verbatim}
-
-What happens if you ask for \axiom{bubbleSort!([1,-5,3])}?
-There is a unique modemap for an operation named
-\fakeAxiomFun{bubbleSort!} with one argument.
-Since \axiom{[1,-5,3]} is a list of integers, the symbolic domain
-\axiom{D1} is defined as \axiomType{List(Integer)}.
-For some operation to apply, it must satisfy the predicate for
-some \axiom{D2}.
-What \axiom{D2}?
-The third expression of the \axiom{and} requires {\tt D1 has
-IndexedAggregate(Integer, D2) with} two attributes.
-So the interpreter searches for an \axiomType{IndexedAggregate}
-among the ancestors of \axiomType{List (Integer)} (see
-
-\downlink{``\ugCategoriesHierTitle''}{ugCategoriesHierPage} in Section
-\ugCategoriesHierNumber\ignore{ugCategoriesHier}).  It finds one:
-\axiomType{IndexedAggregate(Integer, Integer)}.  The interpreter tries
-defining \axiom{D2} as \axiomType{Integer}.  After substituting for
-\axiom{D1} and \axiom{D2}, the predicate evaluates to \axiom{true}.
-An applicable operation has been found!
-
-Now Axiom builds the package \axiomType{SortPackage(List(Integer),
-Integer)}.  According to its definition, this package exports the
-required operation: \fakeAxiomFun{bubbleSort!}: \spadsig{List
-Integer}{List Integer}.  The interpreter then asks the package for a
-function implementing this operation.  The package gets all the
-functions it needs (for example, \axiomFun{rest} and \axiomFunX{swap})
-from the appropriate domains and then it returns a
-\fakeAxiomFun{bubbleSort!} to the interpreter together with the local
-environment for \fakeAxiomFun{bubbleSort!}.  The interpreter applies
-the function to the argument \axiom{[1,-5,3]}.  The
-\fakeAxiomFun{bubbleSort!} function is executed in its local
-environment and produces the result.  \endscroll \autobuttons
+\end{scroll}
+%\unixcommand{Netscape}{netscape \ http:\/\/www.bath.ac.uk\/\~masbjd\/anna.html}
+\autobutt{HelpContents}
 \end{page}
 
 @
-\section{ug12.ht}
-<<ug12.ht>>=
-\newcommand{\ugCategoriesTitle}{Categories}
-\newcommand{\ugCategoriesNumber}{12.}
-
-@
-\subsection{12. Categories}
-\label{ugCategoriesPage}
-\begin{itemize}
-\item ugTypesBasicDomainConsPage \ref{ugTypesBasicDomainConsPage} on
-page~\pageref{ugTypesBasicDomainConsPage}
-\item ugCategoriesDefsPage \ref{ugCategoriesDefsPage} on
-page~\pageref{ugCategoriesDefsPage}
-\item ugCategoriesExportsPage \ref{ugCategoriesExportsPage} on
-page~\pageref{ugCategoriesExportsPage}
-\item ugCategoriesDocPage \ref{ugCategoriesDocPage} on
-page~\pageref{ugCategoriesDocPage}
-\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
-page~\pageref{ugCategoriesHierPage}
-\item ugCategoriesMembershipPage \ref{ugCategoriesMembershipPage} on
-page~\pageref{ugCategoriesMembershipPage}
-\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
-page~\pageref{ugCategoriesDefaultsPage}
-\item ugCategoriesAxiomsPage \ref{ugCategoriesAxiomsPage} on
-page~\pageref{ugCategoriesAxiomsPage}
-\item ugCategoriesCorrectnessPage \ref{ugCategoriesCorrectnessPage} on
-page~\pageref{ugCategoriesCorrectnessPage}
-\item ugCategoriesAttributesPage \ref{ugCategoriesAttributesPage} on
-page~\pageref{ugCategoriesAttributesPage}
-\item ugCategoriesParametersPage \ref{ugCategoriesParametersPage} on
-page~\pageref{ugCategoriesParametersPage}
-\item ugCategoriesConditionalsPage \ref{ugCategoriesConditionalsPage} on
-page~\pageref{ugCategoriesConditionalsPage}
-\item ugCategoriesAndPackagesPage \ref{ugCategoriesAndPackagesPage} on
-page~\pageref{ugCategoriesAndPackagesPage}
-\end{itemize}
-\index{pages!ugCategoriesPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesPage}
-\index{ugCategoriesPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesPage}{12. Categories}
-\beginscroll
-
-This chapter unravels the mysteries of categories---what
-they are, how they are related to domains and packages,
-how they are defined in Axiom, and how you can extend the
-system to include new categories of your own.
-
-We assume that you have read the introductory material on domains and
-categories in
-\downlink{``\ugTypesBasicDomainConsTitle''}{ugTypesBasicDomainConsPage}
-in Section
-\ugTypesBasicDomainConsNumber\ignore{ugTypesBasicDomainCons}.  There
-you learned that the notion of packages covered in the previous
-chapter are special cases of domains.  While this is in fact the case,
-it is useful here to regard domains as distinct from packages.
-
-Think of a domain as a datatype, a collection of objects (the objects
-of the domain).  From your ``sneak preview'' in the previous chapter,
-you might conclude that categories are simply named clusters of
-operations exported by domains.  As it turns out, categories have a
-much deeper meaning.  Categories are fundamental to the design of
-Axiom.  They control the interactions between domains and algorithmic
-packages, and, in fact, between all the components of Axiom.
-
-Categories form hierarchies as shown on the inside cover pages of this
-book.  The inside front-cover pages illustrate the basic algebraic
-hierarchy of the Axiom programming language.  The inside back-cover
-pages show the hierarchy for data structures.
-
-Think of the category structures of Axiom as a foundation for a city
-on which superstructures (domains) are built.  The algebraic
-hierarchy, for example, serves as a foundation for constructive
-mathematical algorithms embedded in the domains of Axiom.  Once in
-place, domains can be constructed, either independently or from one
-another.
-
-Superstructures are built for quality---domains are compiled into
-machine code for run-time efficiency.  You can extend the foundation
-in directions beyond the space directly beneath the superstructures,
-then extend selected superstructures to cover the space.  Because of
-the compilation strategy, changing components of the foundation
-generally means that the existing superstructures (domains) built on
-the changed parts of the foundation (categories) have to be
-rebuilt---that is, recompiled.
-
-Before delving into some of the interesting facts about categories, let's see
-how you define them in Axiom.
-
+\subsection{Integration}
+\label{UXANNAInt}
+\index{pages!UXANNAInt!annaex.ht}
+\index{annaex.ht!pages!UXANNAInt}
+\index{UXANNAInt!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAInt}{Integration}
+Welcome to the Integration section of {\tt
+\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em Axiom/NAG Expert
+System}.  This system chooses, and uses, NAG numerical routines.
+\begin{scroll}
+\blankline
+\indent{2}
 \beginmenu
-    \menudownlink{{12.1. Definitions}}{ugCategoriesDefsPage}
-    \menudownlink{{12.2. Exports}}{ugCategoriesExportsPage}
-    \menudownlink{{12.3. Documentation}}{ugCategoriesDocPage}
-    \menudownlink{{12.4. Hierarchies}}{ugCategoriesHierPage}
-    \menudownlink{{12.5. Membership}}{ugCategoriesMembershipPage}
-    \menudownlink{{12.6. Defaults}}{ugCategoriesDefaultsPage}
-    \menudownlink{{12.7. Axioms}}{ugCategoriesAxiomsPage}
-    \menudownlink{{12.8. Correctness}}{ugCategoriesCorrectnessPage}
-    \menudownlink{{12.9. Attributes}}{ugCategoriesAttributesPage}
-    \menudownlink{{12.10. Parameters}}{ugCategoriesParametersPage}
-    \menudownlink{{12.11. Conditionals}}{ugCategoriesConditionalsPage}
-    \menudownlink{{12.12. Anonymous Categories}}{ugCategoriesAndPackagesPage}
+\item \menulispdownlink{Integration}{(|annaInt|)}\space{}\newline
+\indent{5} Integrating a function over a finite or infinite range.
+\blankline
+\item \menulispdownlink{Multiple Integration}{(|annaMInt|)}\space{}\newline
+\indent{5} Integrating a multivariate function over a finite space.  
+The dimensions of the space need to be 2 <= n <= 15.
+\blankline
+\menudownlink{Examples}{UXANNAIntEx}\space{}\newline
+\indent{5} Examples of integration.  These examples cover all of the major 
+methods.  Parameters can be changed to investigate the effect 
+on the choice of method.
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesDefsTitle}{Definitions}
-\newcommand{\ugCategoriesDefsNumber}{12.1.}
-
-@
-\subsection{12.1. Definitions}
-\label{ugCategoriesDefsPage}
-\begin{itemize}
-\item ugTypesPage \ref{ugTypesPage} on
-page~\pageref{ugTypesPage}
-\end{itemize}
-\index{pages!ugCategoriesDefsPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesDefsPage}
-\index{ugCategoriesDefsPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesDefsPage}{12.1. Definitions}
-\beginscroll
-
-A category is defined by a function with exactly the same format as
-any other function in Axiom.
-
-\beginImportant
-The definition of a category has the syntax:
-\centerline{{{\it CategoryForm} : {\tt Category\quad{}==\quad{}} {\it Extensions} {\tt [ with} {\it Exports} {\tt ]}}}
-
-The brackets {\tt [ ]} here indicate optionality.
-\endImportant
-
-
-The first example of a category definition is
-\spadtype{SetCategory},
-the most basic of the algebraic categories in Axiom.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ SetCategory():\ Category\ ==}\newline
-{\tt 2.\ \ \ \ \ \ Join(Type,CoercibleTo\ OutputForm)\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ "="\ :\ (\$,\ \$)\ ->\ Boolean}\newline
-\endImportant
-
-The definition starts off with the name of the
-category (\spadtype{SetCategory}); this is
-always in column one in the source file.
-%% maybe talk about naming conventions for source files? .spad or .ax?
-All parts of a category definition are then indented with respect to this
-first line.
-
-In \downlink{``\ugTypesTitle''}{ugTypesPage} in Chapter
-\ugTypesNumber\ignore{ugTypes}, we talked about \spadtype{Ring} as
-denoting the class of all domains that are rings, in short, the class
-of all rings.  While this is the usual naming convention in Axiom, it
-is also common to use the word ``Category'' at the end of a category
-name for clarity.  The interpretation of the name
-\spadtype{SetCategory} is, then, ``the category of all domains that
-are (mathematical) sets.''
-
-The name \spadtype{SetCategory} is followed in the definition by its
-formal parameters enclosed in parentheses \spadSyntax{()}.
-Here there are no parameters.
-As required, the type of the result of this category function is the
-distinguished name {\sf Category}.
-
-Then comes the \spadSyntax{==}.
-As usual, what appears to the right of the \spadSyntax{==} is a
-definition, here, a category definition.
-A category definition always has two parts separated by the reserved word
-\spadkey{with}
-\spad{with}.
-%\footnote{Debugging hint: it is very easy to forget
-%the \spad{with}!}
-
-The first part tells what categories the category extends.
-Here, the category extends two categories: \spadtype{Type}, the
-category of all domains, and
-\spadtype{CoercibleTo(OutputForm)}.
-%\footnote{\spadtype{CoercibleTo(OutputForm)}
-%can also be written (and is written in the definition above) without
-%parentheses.}
-The operation \spad{Join} is a system-defined operation that
-\spadkey{Join}
-forms a single category from two or more other categories.
-
-Every category other than \spadtype{Type} is an extension of some other
-category.
-If, for example, \spadtype{SetCategory} extended only the category
-\spadtype{Type}, the definition here would read ``{\tt Type with
-...}''.
-In fact, the {\tt Type} is optional in this line; ``{\tt with
-...}'' suffices.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesExportsTitle}{Exports}
-\newcommand{\ugCategoriesExportsNumber}{12.2.}
-
-@
-\subsection{12.2. Exports}
-\label{ugCategoriesExportsPage}
-\index{pages!ugCategoriesExportsPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesExportsPage}
-\index{ugCategoriesExportsPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesExportsPage}{12.2. Exports}
-\beginscroll
-
-To the right of the \spad{with} is a list of
-\spadkey{with}
-all the \spadglossSee{exports}{export} of the category.
-Each exported operation has a name and a type expressed by a
-\spadgloss{declaration} of the form
-``{\frenchspacing\tt {\it name}: {\it type}}''.
-
-Categories can export symbols, as well as
-{\tt 0} and {\tt 1} which denote
-domain constants.\footnote{The
-numbers {\tt 0} and {\tt 1} are operation names in Axiom.}
-In the current implementation, all other exports are operations with
-types expressed as \spadglossSee{mappings}{mapping} with the syntax
-\centerline{{{\it}}
-\centerline{{source\quad{\tt ->}\quad target}}
-\centerline{{}}}
-
-The category \spadtype{SetCategory} has a single export: the operation
-\spadop{=} whose type is given by the mapping {\tt (\$, \$) -> Boolean}.
-The \spadSyntax{\$} in a mapping type always means ``the domain.'' Thus
-the operation \spadop{=} takes two arguments from the domain and
-returns a value of type \spadtype{Boolean}.
-
-The source part of the mapping here is given by a {\it tuple}
-consisting of two or more types separated by commas and enclosed in
-parentheses.
-If an operation takes only one argument, you can drop the parentheses
-around the source type.
-If the mapping has no arguments, the source part of the mapping is either
-left blank or written as \spadSyntax{()}.
-Here are examples of formats of various operations with some
-contrived names.
-
-\begin{verbatim}
-someIntegerConstant  :    $
-aZeroArgumentOperation:   () -> Integer
-aOneArgumentOperation:    Integer -> $
-aTwoArgumentOperation:    (Integer,$) -> Void
-aThreeArgumentOperation:  ($,Integer,$) -> Fraction($)
-\end{verbatim}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesDocTitle}{Documentation}
-\newcommand{\ugCategoriesDocNumber}{12.3.}
-
-@
-\subsection{12.3. Documentation}
-\label{ugCategoriesDocPage}
-\index{pages!ugCategoriesDocPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesDocPage}
-\index{ugCategoriesDocPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesDocPage}{12.3. Documentation}
-\beginscroll
-
-The definition of \spadtype{SetCategory} above is  missing
-an important component: its library documentation.
-Here is its definition, complete with documentation.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ ++\ Description:}\newline
-{\tt 2.\ \ \ ++\ \bs{}axiomType\{SetCategory\}\ is\ the\ basic\ category}\newline
-{\tt 3.\ \ \ ++\ for\ describing\ a\ collection\ of\ elements\ with}\newline
-{\tt 4.\ \ \ ++\ \bs{}axiomOp\{=\}\ (equality)\ and\ a\ \bs{}axiomFun\{coerce\}}\newline
-{\tt 5.\ \ \ ++\ to\ \bs{}axiomType\{OutputForm\}.}\newline
-{\tt 6.\ \ \ }\newline
-{\tt 7.\ \ \ SetCategory():\ Category\ ==}\newline
-{\tt 8.\ \ \ \ \ Join(Type,\ CoercibleTo\ OutputForm)\ with}\newline
-{\tt 9.\ \ \ \ \ \ \ "=":\ (\$,\ \$)\ ->\ Boolean}\newline
-{\tt 10.\ \ \ \ \ \ \ \ ++\ \bs{}axiom\{x\ =\ y\}\ tests\ if\ \bs{}axiom\{x\}\ and}\newline
-{\tt 11.\ \ \ \ \ \ \ \ ++\ \bs{}axiom\{y\}\ are\ equal.}\newline
-\endImportant
-
-Documentary comments are an important part of constructor definitions.
-Documentation is given both for the category itself and for
-each export.
-A description for the category precedes the code.
-Each line of the description begins in column one with \axiomSyntax{++}.
-The description starts with the word {\tt Description:}.\footnote{Other
-information such as the author's name, date of creation, and so on,
-can go in this
-area as well but are currently ignored by Axiom.}
-All lines of the description following the initial line are
-indented by the same amount.
-
-{\texht{\sloppy}{}
-Surround the name of any constructor (with or without parameters) with an
-\texht{\verb+\axiomType{}+}{\\axiomType\{\}}.
-Similarly, surround an
-operator name with \texht{\verb+\axiomOp{}+}{\\axiomOp\{\}},
-an Axiom operation with \texht{\verb+\axiomFun{}+}{\\axiomFun\{\}}, and a
-variable or Axiom expression with
-\texht{\verb+\axiom{}+}{\\axiom\{\}}.
-Library documentation is given in a \TeX{}-like language so that
-it can be used both for hard-copy and for \Browse{}.
-These different wrappings cause operations and types to have
-mouse-active buttons in \Browse{}.
-For hard-copy output, wrapped expressions appear in a different font.
-The above documentation appears in hard-copy as:
-
-}
-%
-\texht{\begin{quotation}}{\indent{3}}
-%
-\axiomType{SetCategory} is the basic category
-for describing a collection of elements with \axiomOp{=}
-(equality) and a \spadfun{coerce} to \axiomType{OutputForm}.
-%
-\texht{\end{quotation}}{\indent{0}}
-%
-and
-%
-\texht{\begin{quotation}}{\indent{3}}
-%
-\axiom{x = y} tests if \axiom{x} and \axiom{y} are equal.
-%
-\texht{\end{quotation}}{\indent{0}}
-%
-
-For our purposes in this chapter, we omit the documentation from further
-category descriptions.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesHierTitle}{Hierarchies}
-\newcommand{\ugCategoriesHierNumber}{12.4.}
-
-@
-\subsection{12.4. Hierarchies}
-\label{ugCategoriesHierPage}
-\index{pages!ugCategoriesHierPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesHierPage}
-\index{ugCategoriesHierPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesHierPage}{12.4. Hierarchies}
-\beginscroll
-
-A second example of a category is
-\spadtype{SemiGroup}, defined by:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ SemiGroup():\ Category\ ==\ SetCategory\ with}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ "*":\ \ (\$,\$)\ ->\ \$}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
-\endImportant
-
-This definition is as simple as that for \spadtype{SetCategory},
-except that there are two exported operations.
-Multiple exported operations are written as a \spadgloss{pile},
-that is, they all begin in the same column.
-Here you see that the category mentions another type,
-\spadtype{PositiveInteger}, in a signature.
-Any domain can be used in a signature.
-
-Since categories extend one another, they form hierarchies.
-Each category other than \spadtype{Type} has one or more parents given
-by the one or more categories mentioned before the \spad{with} part of
-the definition.
-\spadtype{SemiGroup} extends \spadtype{SetCategory} and
-\spadtype{SetCategory} extends both \spadtype{Type} and
-\spadtype{CoercibleTo (OutputForm)}.
-Since \spadtype{CoercibleTo (OutputForm)} also extends \spadtype{Type},
-the mention of \spadtype{Type} in the definition is unnecessary but
-included for emphasis.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesMembershipTitle}{Membership}
-\newcommand{\ugCategoriesMembershipNumber}{12.5.}
-
-@
-\subsection{12.5. Membership}
-\label{ugCategoriesMembershipPage}
-\index{pages!ugCategoriesMembershipPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesMembershipPage}
-\index{ugCategoriesMembershipPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesMembershipPage}{12.5. Membership}
-\beginscroll
-
-We say a category designates a class of domains.
-What class of domains?
-That is, how does Axiom know what domains belong to what categories?
-The simple answer to this basic question is key to the design of
-Axiom:
-
-\beginImportant
-\centerline{{{\bf Domains belong to categories by assertion.}}}
-\endImportant
-
-When a domain is defined, it is asserted to belong to one or more
-categories.
-Suppose, for example, that an author of domain \spadtype{String} wishes to
-use the binary operator \spadop{*} to denote concatenation.
-Thus \spad{"hello " * "there"} would produce the string
-\spad{"hello there"}\footnote{Actually, concatenation of strings in
-Axiom is done by juxtaposition or by using the operation
-\spadfunFrom{concat}{String}.
-The expression \spad{"hello " "there"} produces the string
-\spad{"hello there"}.}.
-The author of \spadtype{String} could then assert that \spadtype{String}
-is a member of \spadtype{SemiGroup}.
-According to our definition of \spadtype{SemiGroup}, strings
-would then also have the operation \spadop{**} defined automatically.
-Then \spad{"--" ** 4} would produce a string of eight dashes
-\spad{"--------"}.
-Since \spadtype{String} is a member of \spadtype{SemiGroup}, it also is
-a member of \spadtype{SetCategory} and thus has an operation
-\spadop{=} for testing that two strings are equal.
-
-\texht{Now turn to the algebraic category hierarchy inside the
-front cover of this book.}{}
-Any domain that is a member of a
-category extending \spadtype{SemiGroup} is a member of
-\spadtype{SemiGroup} (that is, it {\it is} a semigroup).
-In particular, any domain asserted to be a \spadtype{Ring} is a
-semigroup since \spadtype{Ring} extends \spadtype{Monoid}, that,
-in turn, extends \spadtype{SemiGroup}.
-The definition of \spadtype{Integer} in Axiom asserts that
-\spadtype{Integer} is a member of category
-\spadtype{IntegerNumberSystem}, that, in turn, asserts that it is
-a member of \spadtype{EuclideanDomain}.
-Now \spadtype{EuclideanDomain} extends
-\spadtype{PrincipalIdealDomain} and so on.
-If you trace up the hierarchy, you see that
-\spadtype{EuclideanDomain} extends \spadtype{Ring}, and,
-therefore, \spadtype{SemiGroup}.
-Thus \spadtype{Integer} is a semigroup and also exports the
-operations \spadop{*} and \spadop{**}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesDefaultsTitle}{Defaults}
-\newcommand{\ugCategoriesDefaultsNumber}{12.6.}
-
-@
-\subsection{12.6. Defaults}
-\label{ugCategoriesDefaultsPage}
-\begin{itemize}
-\item ugCategoriesHierPage \ref{ugCategoriesHierPage} on
-page~\pageref{ugCategoriesHierPage}
-\item ugPackagesPage \ref{ugPackagesPage} on
-page~\pageref{ugPackagesPage}
-\end{itemize}
-\index{pages!ugCategoriesDefaultsPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesDefaultsPage}
-\index{ugCategoriesDefaultsPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesDefaultsPage}{12.6. Defaults}
-\beginscroll
-
-We actually omitted the last
-part of the definition of
-\spadtype{SemiGroup} in
-\downlink{``\ugCategoriesHierTitle''}{ugCategoriesHierPage} 
-in Section \ugCategoriesHierNumber\ignore{ugCategoriesHier}.
-Here now is its complete Axiom definition.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ SemiGroup():\ Category\ ==\ SetCategory\ with}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ "*":\ (\$,\ \$)\ ->\ \$}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
-{\tt 4.\ \ \ \ \ \ \ add}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ import\ RepeatedSquaring(\$)}\newline
-{\tt 6.\ \ \ \ \ \ \ \ \ x:\ \$\ **\ n:\ PositiveInteger\ ==\ expt(x,n)}\newline
-\endImportant
-
-The \spad{add} part at the end is used to give ``default definitions'' for
-\spadkey{add}
-exported operations.
-Once you have a multiplication operation \spadop{*}, you can
-define exponentiation
-for positive integer exponents
-using repeated multiplication:
-\centerline{{\spad{x ** n = x * x * ... * x}   ( \spad{n} copies of \spad{x} )}}
-This definition for \spadop{**} is called a {\it default} definition.
-In general, a category can give default definitions for any
-operation it exports.
-Since \spadtype{SemiGroup} and all its category descendants in the hierarchy
-export \spadop{**}, any descendant category may redefine \spadop{**} as well.
-
-A domain of category \spadtype{SemiGroup}
-(such as \spadtype{Integer}) may or may not choose to
-define its own \spadop{**} operation.
-If it does not, a default definition that is closest (in a ``tree-distance''
-sense of the hierarchy) to the domain is chosen.
-
-The part of the category definition following an \spadop{add} operation
-is a \spadgloss{capsule}, as discussed in
-\texht{the previous chapter.}
-{\downlink{``\ugPackagesTitle''}{ugPackagesPage} 
-in Chapter \ugPackagesNumber\ignore{ugPackages}.}
-The line
-\begin{verbatim}
-import RepeatedSquaring($)
-\end{verbatim}
-references the package
-\spadtype{RepeatedSquaring(\$)}, that is, the package
-\spadtype{RepeatedSquaring} that takes ``this domain'' as its
-parameter.
-For example, if the semigroup \spadtype{Polynomial (Integer)}
-does not define its own exponentiation operation, the
-definition used may come from the package
-\spadtype{RepeatedSquaring (Polynomial (Integer))}.
-The next line gives the definition in terms of \spadfun{expt} from that
-package.
-
-The default definitions are collected to form a ``default package''
-for the category.  The name of the package is the same as the category
-but with an ampersand (\spadSyntax{\&}) added at the end.  A default
-package always takes an additional argument relative to the category.
-Here is the definition of the default package \pspadtype{SemiGroup\&}
-as automatically generated by Axiom from the above definition of
-\spadtype{SemiGroup}.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ SemiGroup\_\&(\$):\ Exports\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ \$:\ SemiGroup}\newline
-{\tt 3.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 4.\ \ \ \ \ \ \ "**":\ (\$,\ PositiveInteger)\ ->\ \$}\newline
-{\tt 5.\ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 6.\ \ \ \ \ \ \ import\ RepeatedSquaring(\$)}\newline
-{\tt 7.\ \ \ \ \ \ \ x:\$\ **\ n:PositiveInteger\ ==\ expt(x,n)}\newline
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesAxiomsTitle}{Axioms}
-\newcommand{\ugCategoriesAxiomsNumber}{12.7.}
-
-@
-\subsection{12.7. Axioms}
-\label{ugCategoriesAxiomsPage}
-\begin{itemize}
-\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
-page~\pageref{ugCategoriesDefaultsPage}
-\end{itemize}
-\index{pages!ugCategoriesAxiomsPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesAxiomsPage}
-\index{ugCategoriesAxiomsPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesAxiomsPage}{12.7. Axioms}
-\beginscroll
-
-In \texht{the previous section}
-{\downlink{``\ugCategoriesDefaultsTitle''}{ugCategoriesDefaultsPage}
-in Section \ugCategoriesDefaultsNumber\ignore{ugCategoriesDefaults}}
-you saw the complete Axiom program defining \index{axiom}
-\spadtype{SemiGroup}.  According to this definition, semigroups (that
-is, are sets with the operations \spadopFrom{*}{SemiGroup} and
-\spadopFrom{**}{SemiGroup}.
-
-You might ask: ``Aside from the notion of default packages, isn't a
-category just a \spadgloss{macro}, that is, a shorthand equivalent to
-the two operations \spadop{*} and \spadop{**} with their types?'' If a
-category were a macro, every time you saw the word
-\spadtype{SemiGroup}, you would rewrite it by its list of exported
-operations.  Furthermore, every time you saw the exported operations
-of \spadtype{SemiGroup} among the exports of a constructor, you could
-conclude that the constructor exported \spadtype{SemiGroup}.
-
-A category is {\it not} a macro and here is why.
-The definition for \spadtype{SemiGroup} has documentation that states:
-
-\texht{\begin{quotation}}{\indent{3}}
-    Category \spadtype{SemiGroup} denotes the class of all multiplicative
-    semigroups, that is, a set with an associative operation \spadop{*}.
-
-    \texht{\vskip .5\baselineskip}{}
-    {Axioms:}
-
-    {\small\tt associative("*" : (\$,\$)->\$) -- (x*y)*z = x*(y*z)}
-\texht{\end{quotation}}{\indent{3}}
-
-According to the author's remarks, the mere exporting of an operation
-named \spadop{*} and \spadop{**} is not enough to qualify the domain
-as a \spadtype{SemiGroup}.  In fact, a domain can be a semigroup only
-if it explicitly exports a \spadop{**} and a \spadop{*} satisfying the
-associativity axiom.
-
-In general, a category name implies a set of axioms, even mathematical
-theorems.  There are numerous axioms from \spadtype{Ring}, for
-example, that are well-understood from the literature.  No attempt is
-made to list them all.  Nonetheless, all such mathematical facts are
-implicit by the use of the name \spadtype{Ring}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesCorrectnessTitle}{Correctness}
-\newcommand{\ugCategoriesCorrectnessNumber}{12.8.}
-
-@
-\subsection{12.8. Correctness}
-\label{ugCategoriesCorrectnessPage}
-\index{pages!ugCategoriesCorrectnessPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesCorrectnessPage}
-\index{ugCategoriesCorrectnessPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesCorrectnessPage}{12.8. Correctness}
-\beginscroll
-
-While such statements are only comments,
-Axiom can enforce their intention simply by shifting the burden of
-responsibility onto the author of a domain.
-A domain belongs to category \spad{Ring} only if the
-author asserts that the domain  belongs to \spadtype{Ring} or
-to a category that extends \spadtype{Ring}.
-
-This principle of assertion is important for large user-extendable
-systems.
-Axiom has a large library of operations offering facilities in
-many areas.
-Names such as \spadfun{norm} and \spadfun{product}, for example, have
-diverse meanings in diverse contexts.
-An inescapable hindrance to users would be to force those who wish to
-extend Axiom to always invent new names for operations.
-%>> I don't think disambiguate is really a word, though I like it
-Axiom allows you to reuse names, and then use context to disambiguate one
-from another.
-
-Here is another example of why this is important.
-Some languages, such as {\bf APL},
-denote the \spadtype{Boolean} constants \spad{true} and
-\spad{false} by the integers \spad{1} and \spad{0}.
-You may want to let infix operators \spadop{+} and \spadop{*} serve as the logical
-operators \spadfun{or} and \spadfun{and}, respectively.
-But note this: \spadtype{Boolean} is not a ring.
-The {\it inverse axiom} for \spadtype{Ring} states:
-%
-\centerline{{Every element \spad{x} has an additive inverse \spad{y} such that}}
-\centerline{{\spad{x + y = 0}.}}
-%
-\spadtype{Boolean} is not a ring since \spad{true} has
-no inverse---there is no inverse element \spad{a} such that
-\spad{1 + a = 0} (in terms of booleans, \spad{(true or a) = false}).
-Nonetheless, Axiom {\it could} easily and correctly implement
-\spadtype{Boolean} this way.
-\spadtype{Boolean} simply would not assert that it is of category
-\spadtype{Ring}.
-Thus the \spadop{+} for \spadtype{Boolean} values
-is not confused with the one for \spadtype{Ring}.
-Since the \spadtype{Polynomial} constructor requires its argument
-to be a ring, Axiom would then refuse to build the
-domain \spadtype{Polynomial(Boolean)}. Also, Axiom would refuse to
-wrongfully apply algorithms to \spadtype{Boolean} elements that  presume that the
-ring axioms for \spadop{+} hold.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesAttributesTitle}{Attributes}
-\newcommand{\ugCategoriesAttributesNumber}{12.9.}
-
-@
-\subsection{12.9. Attributes}
-\label{ugCategoriesAttributesPage}
-\begin{itemize}
-\item ugDomainsAssertionsPage \ref{ugDomainsAssertionsPage} on
-page~\pageref{ugDomainsAssertionsPage}
-\end{itemize}
-\index{pages!ugCategoriesAttributesPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesAttributesPage}
-\index{ugCategoriesAttributesPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesAttributesPage}{12.9. Attributes}
-\beginscroll
-
-Most axioms are not computationally useful.
-Those that are can be explicitly expressed by what Axiom calls an
-\spadgloss{attribute}.
-The attribute \spadatt{commutative("*")}, for example, is used to assert
-that a domain has commutative multiplication.
-Its definition is given by its documentation:
-
-\texht{\begingroup \parindent=1pc \narrower\noindent}{\indent{3}}%
-    A domain \spad{R} has \spadatt{commutative("*")}
-    if it has an operation "*": \spadsig{(R,R)}{R} such that \spad{x * y = y * x}.
-\texht{\par\endgroup}{\indent{0}}
-
-Just as you can test whether a domain has the category \spadtype{Ring}, you
-can test that a domain has a given attribute.
-
-\xtc{
-Do polynomials over the integers
-have commutative multiplication?
-}{
-\spadpaste{Polynomial Integer has commutative("*")}
-}
-\xtc{
-Do matrices over the integers
-have commutative multiplication?
-}{
-\spadpaste{Matrix Integer has commutative("*")}
-}
-
-Attributes are used to conditionally export and define
-operations for a domain (see 
-\downlink{``\ugDomainsAssertionsTitle''}{ugDomainsAssertionsPage} in 
-Section \ugDomainsAssertionsNumber\ignore{ugDomainsAssertions}).
-Attributes can also be asserted in a category definition.
-
-After mentioning category \spadtype{Ring} many times in this book,
-it is high time that we show you its definition:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ Ring():\ Category\ ==}\newline
-{\tt 2.\ \ \ \ \ Join(Rng,Monoid,LeftModule(\$:\ Rng))\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ characteristic:\ ->\ NonNegativeInteger}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ coerce:\ Integer\ ->\ \$}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ unitsKnown}\newline
-{\tt 6.\ \ \ \ \ \ \ add}\newline
-{\tt 7.\ \ \ \ \ \ \ \ \ n:Integer}\newline
-{\tt 8.\ \ \ \ \ \ \ \ \ coerce(n)\ ==\ n\ *\ 1\$\$}\newline
-\endImportant
-
-There are only two new things here.  First, look at the
-\spadSyntax{\$\$} on the last line.  This is not a typographic error!
-The first \spadSyntax{\$} says that the \spad{1} is to come from some
-domain.  The second \spadSyntax{\$} says that the domain is ``this
-domain.''  If \spadSyntax{\$} is \spadtype{Fraction(Integer)}, this
-line reads {\tt coerce(n) == n * 1\$Fraction(Integer)}.
-
-The second new thing is the presence of attribute
-``\spad{unitsKnown}''.  Axiom can always distinguish an attribute from
-an operation.  An operation has a name and a type. An attribute has no
-type.  The attribute \spadatt{unitsKnown} asserts a rather subtle
-mathematical fact that is normally taken for granted when working with
-rings.\footnote{With this axiom, the units of a domain are the set of
-elements \spad{x} that each have a multiplicative inverse \spad{y} in
-the domain.  Thus \spad{1} and \spad{-1} are units in domain
-\spadtype{Integer}.  Also, for \spadtype{Fraction Integer}, the domain
-of rational numbers, all non-zero elements are units.}  Because
-programs can test for this attribute, Axiom can correctly handle
-rather more complicated mathematical structures (ones that are similar
-to rings but do not have this attribute).
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesParametersTitle}{Parameters}
-\newcommand{\ugCategoriesParametersNumber}{12.10.}
-
-@
-\subsection{12.10. Parameters}
-\label{ugCategoriesParametersPage}
-\index{pages!ugCategoriesParametersPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesParametersPage}
-\index{ugCategoriesParametersPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesParametersPage}{12.10. Parameters}
-\beginscroll
-
-Like domain constructors, category constructors can also have
-parameters.
-For example, category \spadtype{MatrixCategory} is a parameterized
-category for defining matrices over a ring \spad{R} so that the
-matrix domains can have
-different representations and indexing schemes.
-Its definition has the form:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ MatrixCategory(R,Row,Col):\ Category\ ==}\newline
-{\tt 2.\ \ \ \ \ \ \ TwoDimensionalArrayCategory(R,Row,Col)\ with\ ...}\newline
-\endImportant
-
-The category extends \spadtype{TwoDimensionalArrayCategory} with
-the same arguments.
-You cannot find \spadtype{TwoDimensionalArrayCategory} in the
-algebraic hierarchy listing.
-Rather, it is a member of the data structure hierarchy,
-given inside the back cover of this book.
-In particular, \spadtype{TwoDimensionalArrayCategory} is an extension of
-\spadtype{HomogeneousAggregate} since its elements are all one type.
-
-The domain \spadtype{Matrix(R)}, the class of matrices with coefficients
-from domain \spad{R}, asserts that it is a member of category
-\spadtype{MatrixCategory(R, Vector(R), Vector(R))}.
-The parameters of a category must also have types.
-The first parameter to \spadtype{MatrixCategory}
-\spad{R} is required to be a ring.
-The second and third are required to be domains of category
-\spadtype{FiniteLinearAggregate(R)}.\footnote{%
-This is another extension of
-\spadtype{HomogeneousAggregate} that you can see in
-the data structure hierarchy.}
-In practice, examples of categories having parameters other than
-domains are rare.
-
-Adding the declarations for parameters to the definition for
-\spadtype{MatrixCategory}, we have:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ R:\ Ring}\newline
-{\tt 2.\ \ \ (Row,\ Col):\ FiniteLinearAggregate(R)}\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ MatrixCategory(R,\ Row,\ Col):\ Category\ ==}\newline
-{\tt 5.\ \ \ \ \ \ \ TwoDimensionalArrayCategory(R,\ Row,\ Col)\ with\ ...}\newline
-\endImportant
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesConditionalsTitle}{Conditionals}
-\newcommand{\ugCategoriesConditionalsNumber}{12.11.}
-
-@
-\subsection{12.11. Conditionals}
-\label{ugCategoriesConditionalsPage}
-\begin{itemize}
-\item ugPackagesCondsPage \ref{ugPackagesCondsPage} on
-page~\pageref{ugPackagesCondsPage}
-\end{itemize}
-\index{pages!ugCategoriesConditionalsPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesConditionalsPage}
-\index{ugCategoriesConditionalsPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesConditionalsPage}{12.11. Conditionals}
-\beginscroll
-
-As categories have parameters, the actual operations exported by a
-category can depend on these parameters.
-As an example, the operation \spadfunFrom{determinant}{MatrixCategory}
-from category \spadtype{MatrixCategory} is only exported when the
-underlying domain \spad{R} has commutative multiplication:
-
-\begin{verbatim}
-if R has commutative("*") then
-   determinant: $ -> R
-\end{verbatim}
-
-Conditionals can also define conditional extensions of a category.
-Here is a portion of the definition of \spadtype{QuotientFieldCategory}:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ QuotientFieldCategory(R)\ :\ Category\ ==\ ...\ with\ ...}\newline
-{\tt 2.\ \ \ \ \ \ \ \ if\ R\ has\ OrderedSet\ then\ OrderedSet}\newline
-{\tt 3.\ \ \ \ \ \ \ \ if\ R\ has\ IntegerNumberSystem\ then}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ \ ceiling:\ \$\ ->\ R}\newline
-{\tt 5.\ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
-\endImportant
-
-Think of category \spadtype{QuotientFieldCategory(R)} as
-denoting the domain \spadtype{Fraction(R)}, the
-class of all fractions of the form \smath{a/b} for elements of \spad{R}.
-The first conditional means in English:
-``If the elements of \spad{R} are totally ordered (\spad{R}
-is an \spadtype{OrderedSet}), then so are the fractions \smath{a/b}''.
-
-The second conditional is used to conditionally export an
-operation \spadfun{ceiling} which returns the smallest integer
-greater than or equal to its argument.
-Clearly, ``ceiling'' makes sense for integers but not for
-polynomials and other algebraic structures.
-Because of this conditional,
-the domain \spadtype{Fraction(Integer)} exports
-an operation
-\spadfun{ceiling}: \spadsig{Fraction Integer}{Integer}, but
-\spadtype{Fraction Polynomial Integer} does not.
-
-Conditionals can also appear in the default definitions for the
-operations of a category.
-For example, a default definition for \spadfunFrom{ceiling}{Field}
-within the part following the \spadop{add} reads:
-
-\begin{verbatim}
-if R has IntegerNumberSystem then
-    ceiling x == ...
-\end{verbatim}
-
-Here the predicate used is identical to the predicate in the {\tt
-Exports} part.  This need not be the case.  See
-\downlink{``\ugPackagesCondsTitle''}{ugPackagesCondsPage} in Section
-\ugPackagesCondsNumber\ignore{ugPackagesConds} for a more complicated
-example.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug12.ht>>=
-\newcommand{\ugCategoriesAndPackagesTitle}{Anonymous Categories}
-\newcommand{\ugCategoriesAndPackagesNumber}{12.12.}
-
-@
-\subsection{12.12. Anonymous Categories}
-\label{ugCategoriesAndPackagesPage}
-\begin{itemize}
-\item ugPackagesAbstractPage \ref{ugPackagesAbstractPage} on
-page~\pageref{ugPackagesAbstractPage}
-\end{itemize}
-\index{pages!ugCategoriesAndPackagesPage!ug12.ht}
-\index{ug12.ht!pages!ugCategoriesAndPackagesPage}
-\index{ugCategoriesAndPackagesPage!ug12.ht!pages}
-<<ug12.ht>>=
-\begin{page}{ugCategoriesAndPackagesPage}{12.12. Anonymous Categories}
-\beginscroll
-
-The part of a category to the right of a {\tt with} is also regarded
-as a category---an ``anonymous category.''  Thus you have already seen
-a category definition The {\tt Exports} part of the package
-\pspadtype{DrawComplex}
-(\downlink{``\ugPackagesAbstractTitle''}{ugPackagesAbstractPage} in
-Section \ugPackagesAbstractNumber\ignore{ugPackagesAbstract}) is an
-anonymous category.  This is not necessary.  We could, instead, give
-this category a name:
-
-%
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ DrawComplexCategory():\ Category\ ==\ with}\newline
-{\tt 2.\ \ \ \ \ \ drawComplex:\ (C\ ->\ C,S,S,Boolean)\ ->\ VIEW3D}\newline
-{\tt 3.\ \ \ \ \ \ drawComplexVectorField:\ (C\ ->\ C,S,S)\ ->\ VIEW3D}\newline
-{\tt 4.\ \ \ \ \ \ setRealSteps:\ INT\ ->\ INT}\newline
-{\tt 5.\ \ \ \ \ \ setImagSteps:\ INT\ ->\ INT}\newline
-{\tt 6.\ \ \ \ \ \ setClipValue:\ DFLOAT->\ DFLOAT}\newline
-\endImportant
-%
-and then define \spadtype{DrawComplex} by:
-%
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ DrawComplex():\ DrawComplexCategory\ ==\ Implementation}\newline
-{\tt 2.\ \ \ \ \ \ where}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ ...}\newline
-\endImportant
-%
-
-There is no reason, however, to give this list of exports a name
-since no other domain or package exports it.
-In fact, it is rare for a package to export a named category.
-As you will see in the next chapter, however, it is very common
-for the definition of domains to mention one or more category
-before the {\tt with}.
-\spadkey{with}
-\endscroll
-\autobuttons
+\indent{0}
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
 @
-\section{ug13.ht}
-<<ug13.ht>>=
-\newcommand{\ugDomainsTitle}{Domains}
-\newcommand{\ugDomainsNumber}{13.}
-
-@
-\subsection{13. Domains}
-\label{ugDomainsPage}
-\begin{itemize}
-\item ugPackagesDomsPage \ref{ugPackagesDomsPage} on
-page~\pageref{ugPackagesDomsPage}
-\item ugDomainsDefsPage \ref{ugDomainsDefsPage} on
-page~\pageref{ugDomainsDefsPage}
-\item ugDomainsAssertionsPage \ref{ugDomainsAssertionsPage} on
-page~\pageref{ugDomainsAssertionsPage}
-\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
-page~\pageref{ugDomainsDemoPage}
-\item ugDomainsBrowsePage \ref{ugDomainsBrowsePage} on
-page~\pageref{ugDomainsBrowsePage}
-\item ugDomainsRepPage \ref{ugDomainsRepPage} on
-page~\pageref{ugDomainsRepPage}
-\item ugDomainsMultipleRepsPage \ref{ugDomainsMultipleRepsPage} on
-page~\pageref{ugDomainsMultipleRepsPage}
-\item ugDomainsAddDomainPage \ref{ugDomainsAddDomainPage} on
-page~\pageref{ugDomainsAddDomainPage}
-\item ugDomainsDefaultsPage \ref{ugDomainsDefaultsPage} on
-page~\pageref{ugDomainsDefaultsPage}
-\item ugDomainsOriginsPage \ref{ugDomainsOriginsPage} on
-page~\pageref{ugDomainsOriginsPage}
-\item ugDomainsShortFormsPage \ref{ugDomainsShortFormsPage} on
-page~\pageref{ugDomainsShortFormsPage}
-\item ugDomainsCliffordPage \ref{ugDomainsCliffordPage} on
-page~\pageref{ugDomainsCliffordPage}
-\item ugDomsinsDatabasePage \ref{ugDomsinsDatabasePage} on
-page~\pageref{ugDomsinsDatabasePage}
-\end{itemize}
-\index{pages!ugDomainsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsPage}
-\index{ugDomainsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsPage}{13. Domains}
-\beginscroll
-
-We finally come to the \spadgloss{domain constructor}.
-A few subtle differences between packages and
-domains turn up some interesting issues.
-We first discuss these differences then
-describe the resulting issues by illustrating a program
-for the \axiomType{QuadraticForm} constructor.
-After a short example of an algebraic constructor,
-\axiomType{CliffordAlgebra}, we show how you use domain constructors to build
-a database query facility.
-
+\subsection{Ordinary Differential Equations}
+\label{UXANNAOde}
+\index{pages!UXANNAOde!annaex.ht}
+\index{annaex.ht!pages!UXANNAOde}
+\index{UXANNAOde!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAOde}{Ordinary Differential Equations}
+Welcome to the Ordinary Differential Equations section of {\tt
+\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the 
+{\em Axiom/NAG Expert System}.  
+This system chooses, and uses, NAG numerical routines.
+\begin{scroll}
+\blankline
+\blankline
+\indent{2}
 \beginmenu
-    \menudownlink{{13.1. Domains vs. Packages}}{ugPackagesDomsPage}
-    \menudownlink{{13.2. Definitions}}{ugDomainsDefsPage}
-    \menudownlink{{13.3. Category Assertions}}{ugDomainsAssertionsPage}
-    \menudownlink{{13.4. A Demo}}{ugDomainsDemoPage}
-    \menudownlink{{13.5. Browse}}{ugDomainsBrowsePage}
-    \menudownlink{{13.6. Representation}}{ugDomainsRepPage}
-    \menudownlink{{13.7. Multiple Representations}}{ugDomainsMultipleRepsPage}
-    \menudownlink{{13.8. Add Domain}}{ugDomainsAddDomainPage}
-    \menudownlink{{13.9. Defaults}}{ugDomainsDefaultsPage}
-    \menudownlink{{13.10. Origins}}{ugDomainsOriginsPage}
-    \menudownlink{{13.11. Short Forms}}{ugDomainsShortFormsPage}
-    \menudownlink{{13.12. Example 1: Clifford Algebra}}{ugDomainsCliffordPage}
-    \menudownlink{{13.13. Example 2: Building A Query Facility}}
-{ugDomsinsDatabasePage}
+\item \menulispdownlink{Ordinary Differential Equations}{(|annaOde|)}\space{}\newline
+\indent{5} Finding a solution to an Initial Value Problem of a set of Ordinary Differential Equations.
+\blankline
+\menudownlink{Examples}{UXANNAOdeEx}\newline
+\indent{5} Examples of ODE problems with various features using both stiff
+and non-stiff methods.  Parameters can be changed to investigate the effect 
+on the choice of method.
+\autobutt{MainHelp}
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugPackagesDomsTitle}{Domains vs. Packages}
-\newcommand{\ugPackagesDomsNumber}{13.1.}
-
-@
-\subsection{13.1. Domains vs. Packages}
-\label{ugPackagesDomsPage}
-\begin{itemize}
-\item ugPackagesPage \ref{ugPackagesPage} on
-page~\pageref{ugPackagesPage}
-\end{itemize}
-\index{pages!ugPackagesDomsPage!ug13.ht}
-\index{ug13.ht!pages!ugPackagesDomsPage}
-\index{ugPackagesDomsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugPackagesDomsPage}{13.1. Domains vs. Packages}
-\beginscroll
-%
-Packages are special cases of domains.
-What is the difference between a package and a domain that is not a
-package?
-By definition, there is only one difference: a domain that is not a package
-has the symbol \axiomSyntax{\$} appearing
-somewhere among the types of its exported operations.
-The \axiomSyntax{\$} denotes ``this domain.'' If the \axiomSyntax{\$}
-appears before the \axiomSyntax{->} in the type of a signature, it means
-the operation takes an element from the domain as an argument.
-If it appears after the \axiomSyntax{->}, then the operation returns an
-element of the domain.
-
-If no exported operations mention \axiomSyntax{\$}, then evidently
-there is nothing of interest to do with the objects of the domain.
-You might then say that a package is a ``boring'' domain!  But, as you
-saw in \downlink{``\ugPackagesTitle''}{ugPackagesPage} in Chapter
-\ugPackagesNumber\ignore{ugPackages}, packages are a very useful
-notion indeed.  The exported operations of a package depend solely on
-the parameters to the package constructor and other explicit domains.
-
-To summarize, domain constructors are versatile structures that serve
-two distinct practical purposes: Those like \axiomType{Polynomial} and
-\axiomType{List} describe classes of computational objects; others,
-like \pspadtype{SortPackage}, describe packages of useful operations.
-As in the last chapter, we focus here on the first kind.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDefsTitle}{Definitions}
-\newcommand{\ugDomainsDefsNumber}{13.2.}
-
-@
-\subsection{13.2. Definitions}
-\label{ugDomainsDefsPage}
-\index{pages!ugDomainsDefsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDefsPage}
-\index{ugDomainsDefsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDefsPage}{13.2. Definitions}
-\beginscroll
-%
-
-The syntax for defining a domain constructor is the same as for any
-function in Axiom:
-\centerline{{\frenchspacing{\tt {\it DomainForm} : {\it Exports} == {\it Implementation}}}}
-As this definition usually extends over many lines, a
-\axiom{where} expression is generally used instead.
-\spadkey{where}
-
-\beginImportant
-A recommended format for the definition of a domain is:\newline
-{\tt%
-{\it DomainForm} : Exports  ==  Implementation where \newline
-\texht{\hspace*{.75pc}}{\tab{8}} {\it optional type declarations} \newline
-\texht{\hspace*{.75pc}}{\tab{3}} Exports  ==  [{\it Category Assertions}] with \newline
-\texht{\hspace*{2.0pc}}{\tab{8}}   {\it list of exported operations} \newline
-\texht{\hspace*{.75pc}}{\tab{3}} Implementation  ==  [{\it Add Domain}] add \newline
-\texht{\hspace*{2.0pc}}{\tab{6}}   [Rep := {\it Representation}] \newline
-\texht{\hspace*{2.0pc}}{\tab{8}}   {\it list of function definitions for exported operations}
-}
-
-\texht{\vskip 4pt}{}
-Note: The brackets {\tt [ ]} here denote optionality.
-\endImportant
-
-A complete domain constructor definition for
-\axiomType{QuadraticForm} is shown in Figure \ref{fig-quadform}.
-Interestingly, this little domain illustrates all the new
-concepts you need to learn.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ )abbrev\ domain\ QFORM\ QuadraticForm}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ ++\ Description:}\newline
-{\tt 4.\ \ \ ++\ \ \ This\ domain\ provides\ modest\ support\ for}\newline
-{\tt 5.\ \ \ ++\ \ \ quadratic\ forms.}\newline
-{\tt 6.\ \ \ QuadraticForm(n,\ K):\ Exports\ ==\ Implementation\ where}\newline
-{\tt 7.\ \ \ \ \ \ \ n:\ PositiveInteger}\newline
-{\tt 8.\ \ \ \ \ \ \ K:\ Field}\newline
-{\tt 9.\ \ \ }\newline
-{\tt 10.\ \ \ \ \ \ Exports\ ==\ AbelianGroup\ with}\newline
-{\tt 11.\ \ \ \ \ \ \ \ quadraticForm:\ SquareMatrix(n,K)\ ->\ \$}\newline
-{\tt 12.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{quadraticForm(m)\}\ creates\ a\ quadratic}\newline
-{\tt 13.\ \ \ \ \ \ \ \ \ \ ++\ quadratic\ form\ from\ a\ symmetric,}\newline
-{\tt 14.\ \ \ \ \ \ \ \ \ \ ++\ square\ matrix\ \bs{}axiom\{m\}.}\newline
-{\tt 15.\ \ \ \ \ \ \ \ matrix:\ \$\ ->\ SquareMatrix(n,K)}\newline
-{\tt 16.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{matrix(qf)\}\ creates\ a\ square\ matrix}\newline
-{\tt 17.\ \ \ \ \ \ \ \ \ \ ++\ from\ the\ quadratic\ form\ \bs{}axiom\{qf\}.}\newline
-{\tt 18.\ \ \ \ \ \ \ \ elt:\ (\$,\ DirectProduct(n,K))\ ->\ K}\newline
-{\tt 19.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{qf(v)\}\ evaluates\ the\ quadratic\ form}\newline
-{\tt 20.\ \ \ \ \ \ \ \ \ \ ++\ \bs{}axiom\{qf\}\ on\ the\ vector\ \bs{}axiom\{v\},}\newline
-{\tt 21.\ \ \ \ \ \ \ \ \ \ ++\ producing\ a\ scalar.}\newline
-{\tt 22.\ \ }\newline
-{\tt 23.\ \ \ \ \ \ Implementation\ ==\ SquareMatrix(n,K)\ add}\newline
-{\tt 24.\ \ \ \ \ \ \ \ Rep\ :=\ SquareMatrix(n,K)}\newline
-{\tt 25.\ \ \ \ \ \ \ \ quadraticForm\ m\ ==}\newline
-{\tt 26.\ \ \ \ \ \ \ \ \ \ not\ symmetric?\ m\ =>\ error}\newline
-{\tt 27.\ \ \ \ \ \ \ \ \ \ \ \ "quadraticForm\ requires\ a\ symmetric\ matrix"}\newline
-{\tt 28.\ \ \ \ \ \ \ \ \ \ m\ ::\ \$}\newline
-{\tt 29.\ \ \ \ \ \ \ \ matrix\ q\ ==\ q\ ::\ Rep}\newline
-{\tt 30.\ \ \ \ \ \ \ \ elt(q,v)\ ==\ dot(v,\ (matrix\ q\ *\ v))}\newline
-%
-\caption{The \protect\axiomType{QuadraticForm} domain.}\label{fig-quadform}
-\endImportant
-
-A domain constructor can take any number and type of parameters.
-\axiomType{QuadraticForm} takes a positive integer \axiom{n} and a field
-\axiom{K} as arguments.
-Like a package, a domain has a set of explicit exports and an
-implementation described by a capsule.
-Domain constructors are documented in the same way as package constructors.
-
-Domain \axiomType{QuadraticForm(n, K)}, for a given positive integer
-\axiom{n} and domain \axiom{K}, explicitly exports three operations:
-%
-\indent{4}
-\beginitems
-\item\axiom{quadraticForm(A)} creates a quadratic form from a matrix
-\axiom{A}.
-\item\axiom{matrix(q)} returns the matrix \axiom{A} used to create
-the quadratic form \axiom{q}.
-\item\axiom{q.v} computes the scalar \texht{$v^TAv$}{transpose(v)*A*v}
-for a given vector \axiom{v}.
-\enditems
 \indent{0}
-
-Compared with the corresponding syntax given for the definition of a
-package, you see that a domain constructor has three optional parts to
-its definition: {\it Category Assertions}, {\it Add Domain}, and
-{\it Representation}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsAssertionsTitle}{Category Assertions}
-\newcommand{\ugDomainsAssertionsNumber}{13.3.}
-
-@
-\subsection{13.3. Category Assertions}
-\label{ugDomainsAssertionsPage}
-\begin{itemize}
-\item ugCategoriesCorrectnessPage \ref{ugCategoriesCorrectnessPage} on
-page~\pageref{ugCategoriesCorrectnessPage}
-\item ugCategoriesConditionalsPage \ref{ugCategoriesConditionalsPage} on
-page~\pageref{ugCategoriesConditionalsPage}
-\end{itemize}
-\index{pages!ugDomainsAssertionsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsAssertionsPage}
-\index{ugDomainsAssertionsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsAssertionsPage}{13.3. Category Assertions}
-\beginscroll
-%
-
-The {\it Category Assertions} part of your domain constructor
-definition lists those categories of which all domains created by the
-constructor are unconditionally members.  The word ``unconditionally''
-means that membership in a category does not depend on the values of
-the parameters to the domain constructor.  This part thus defines the
-link between the domains and the category hierarchies given on the
-inside covers of this book.  As described in
-\downlink{``\ugCategoriesCorrectnessTitle''}{ugCategoriesCorrectnessPage}
-in Section
-\ugCategoriesCorrectnessNumber\ignore{ugCategoriesCorrectness}, it is
-this link that makes it possible for you to pass objects of the
-domains as arguments to other operations in Axiom.
-
-Every \axiomType{QuadraticForm} domain is declared to be
-unconditionally a member of category \axiomType{AbelianGroup}.  An
-abelian group is a collection of elements closed under addition.
-Every object {\it x} of an abelian group has an additive inverse {\it
-y} such that \texht{$x + y = 0$}{\axiom{{\it x} + {\it y} = 0}}.  The
-exports of an abelian group include \axiom{0}, \axiomOp{+},
-\axiomOp{-}, and scalar multiplication by an integer.  After asserting
-that \axiomType{QuadraticForm} domains are abelian groups, it is
-possible to pass quadratic forms to algorithms that only assume
-arguments to have these abelian group properties.
-
-In
-\downlink{``\ugCategoriesConditionalsTitle''}{ugCategoriesConditionalsPage}
-in Section
-\ugCategoriesConditionalsNumber\ignore{ugCategoriesConditionals}, you
-saw that \axiomType{Fraction(R)}, a member of
-\axiomType{QuotientFieldCategory(R)}, is a member of
-\axiomType{OrderedSet} if \axiom{R} is a member of
-\axiomType{OrderedSet}.  Likewise, from the {\tt Exports} part of the
-definition of \axiomType{ModMonic(R, S)}, \begin{verbatim}
-UnivariatePolynomialCategory(R) with
-  if R has Finite then Finite
-     ...
-\end{verbatim}
-you see that \axiomType{ModMonic(R, S)} is a member of
-\axiomType{Finite} is \axiom{R} is.
-
-The {\tt Exports} part of a domain definition is the same kind of
-expression that can appear to the right of an \axiomSyntax{==} in a
-category definition.  If a domain constructor is unconditionally a
-member of two or more categories, a \axiom{Join} form is used.
-\spadkey{Join} The {\tt Exports} part of the definition of
-\axiomType{FlexibleArray(S)} reads, for example:
-\begin{verbatim}
-Join(ExtensibleLinearAggregate(S),
-     OneDimensionalArrayAggregate(S)) with...
-\end{verbatim}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDemoTitle}{A Demo}
-\newcommand{\ugDomainsDemoNumber}{13.4.}
-
-@
-\subsection{13.4. A Demo}
-\label{ugDomainsDemoPage}
-\index{pages!ugDomainsDemoPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDemoPage}
-\index{ugDomainsDemoPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDemoPage}{13.4. A Demo}
-\beginscroll
-%
-Before looking at the {\it Implementation} part of \axiomType{QuadraticForm},
-let's try some examples.
-
-\texht{\vskip 2pc}{}
-\xtc{
-Build a domain \axiom{QF}.
-}{
-\spadpaste{QF := QuadraticForm(2,Fraction Integer)\bound{x2}\free{x1}}
-}
-\xtc{
-Define a matrix to be used to construct
-a quadratic form.
-}{
-\spadpaste{A := matrix [[-1,1/2],[1/2,1]]\bound{x3}\free{x2}}
-}
-\xtc{
-Construct the quadratic form.
-A package call {\tt \$QF} is necessary since there
-are other \axiomType{QuadraticForm} domains.
-}{
-\spadpaste{q : QF := quadraticForm(A)\bound{x4}\free{x3}}
-}
-\xtc{
-Looks like a matrix. Try computing
-the number of rows.
-Axiom won't let you.
-}{
-\spadpaste{nrows q\free{x3}}
-}
-\xtc{
-Create a direct product element \axiom{v}.
-A package call is again necessary, but Axiom
-understands your list as denoting a vector.
-}{
-\spadpaste{v := directProduct([2,-1])\$DirectProduct(2,Fraction Integer)\bound{x5}\free{x4}}
-}
-\xtc{
-Compute the product \texht{$v^TAv$}{transpose(v)*A*v}.
-}{
-\spadpaste{q.v\free{x5}}
-}
-\xtc{
-What is 3 times \axiom{q} minus \axiom{q} plus \axiom{q}?
-}{
-\spadpaste{3*q-q+q\free{x4}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsBrowseTitle}{Browse}
-\newcommand{\ugDomainsBrowseNumber}{13.5.}
-
-@
-\subsection{13.5. Browse}
-\label{ugDomainsBrowsePage}
-\index{pages!ugDomainsBrowsePage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsBrowsePage}
-\index{ugDomainsBrowsePage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsBrowsePage}{13.5. Browse}
-\beginscroll
-
-The \Browse{} facility of \HyperName{} is useful for
-investigating
-the properties of domains, packages, and categories.
-From the main \HyperName{} menu, move your mouse to {\bf Browse} and
-click on the left mouse button.
-This brings up the \Browse{} first page.
-Now, with your mouse pointer somewhere in this window, enter the
-string ``quadraticform'' into the input area (all lower case
-letters will do).
-Move your mouse to {\bf Constructors} and click.
-Up comes a page describing \axiomType{QuadraticForm}.
-
-From here, click on {\bf Description}.
-This gives you a page that includes a part labeled by ``{\it
-Description:}''.
-You also see the types for arguments \axiom{n} and \axiom{K}
-displayed as well as the fact that \axiomType{QuadraticForm}
-returns an \axiomType{AbelianGroup}.
-You can go and experiment a bit by selecting {\bf Field} with
-your mouse.
-Eventually, use
-\UpButton{}
-several times to return to the first page on
-\axiomType{QuadraticForm}.
-
-Select {\bf Operations} to get a list of operations for
-\axiomType{QuadraticForm}.
-You can select an operation by clicking on it
-to get an individual page with information about that operation.
-Or you can select the buttons along the bottom to see alternative
-views or get additional information on the operations.
-Then return to the page on \axiomType{QuadraticForm}.
-
-Select {\bf Cross Reference} to get another menu.
-This menu has buttons for {\bf Parents}, {\bf Ancestors}, and
-others.
-Clicking on {\bf Parents}, you see that \axiomType{QuadraticForm}
-has one parent \axiomType{AbelianMonoid}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsRepTitle}{Representation}
-\newcommand{\ugDomainsRepNumber}{13.6.}
-
-@
-\subsection{13.6. Representation}
-\label{ugDomainsRepPage}
-\begin{itemize}
-\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
-page~\pageref{ugDomainsDemoPage}
-\end{itemize}
-\index{pages!ugDomainsRepPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsRepPage}
-\index{ugDomainsRepPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsRepPage}{13.6. Representation}
-\beginscroll
-%
-The {\tt Implementation} part of an Axiom capsule for a
-domain constructor uses the special variable \axiom{Rep} to
-identify the lower level data type used to represent the objects
-of the domain.
-The \axiom{Rep} for quadratic forms is \axiomType{SquareMatrix(n, K)}.
-This means that all objects of the domain are required to be
-\axiom{n} by \axiom{n} matrices with elements from \axiomType{K}.
-
-The code for \axiomFun{quadraticForm} in Figure \ref{fig-quadform} on
-page \pageref{fig-quadform} checks that the matrix is symmetric and
-then converts it to \axiomSyntax{\$}, which means, as usual, ``this
-domain.'' Such explicit conversions \index{conversion} are generally
-required by the compiler.  Aside from checking that the matrix is
-symmetric, the code for this function essentially does nothing.  The
-{\frenchspacing\tt m :: \$} on line 28 coerces \axiom{m} to a
-quadratic form.  In fact, the quadratic form you created in step (3)
-of \downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
-\ugDomainsDemoNumber\ignore{ugDomainsDemo} is just the matrix you
-passed it in disguise!  Without seeing this definition, you would not
-know that.  Nor can you take advantage of this fact now that you do
-know!  When we try in the next step of
-\downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
-\ugDomainsDemoNumber\ignore{ugDomainsDemo} to regard \axiom{q} as a
-matrix by asking for \axiomFun{nrows}, the number of its rows, Axiom
-gives you an error message saying, in effect, ``Good try, but this
-won't work!''
-
-The definition for the \spadfunFrom{matrix}{QuadraticForm}
-function could hardly be simpler:
-it just returns its argument after explicitly
-\spadglossSee{coercing}{coerce} its argument to a matrix.
-Since the argument is already a matrix, this coercion does no computation.
-
-Within the context of a capsule, an object of \axiomSyntax{\$} is
-regarded both as a quadratic form {\it and} as a
-matrix.\footnote{In case each of \axiomSyntax{\$} and \axiom{Rep}
-have the same named operation available,
-the one from \axiom{\$} takes precedence.
-Thus, if you want the one from \axiomSyntax{Rep}, you must
-package call it using a \axiomSyntax{\$Rep} suffix.}
-This makes the definition of \axiom{q.v} easy---it
-just calls the \spadfunFrom{dot}{DirectProduct} product from
-\axiomType{DirectProduct} to perform the indicated operation.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsMultipleRepsTitle}{Multiple Representations}
-\newcommand{\ugDomainsMultipleRepsNumber}{13.7.}
-
-@
-\subsection{13.7. Multiple Representations}
-\label{ugDomainsMultipleRepsPage}
-\begin{itemize}
-\item ugTypesUnionsPage \ref{ugTypesUnionsPage} on
-page~\pageref{ugTypesUnionsPage}
-\end{itemize}
-\index{pages!ugDomainsMultipleRepsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsMultipleRepsPage}
-\index{ugDomainsMultipleRepsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsMultipleRepsPage}{13.7. Multiple Representations}
-\beginscroll
-%
-
-To write functions that implement the operations of a domain, you
-want to choose the most computationally efficient
-data structure to represent the elements of your domain.
-
-A classic problem in computer algebra is the optimal choice for an
-internal representation of polynomials.
-If you create a polynomial, say \texht{$3x^2+ 5$}{\axiom{3*x**2 + 5}}, how
-does Axiom hold this value internally?
-There are many ways.
-Axiom has nearly a dozen different representations of
-polynomials, one to suit almost any purpose.
-Algorithms for solving polynomial equations work most
-efficiently with polynomials represented one way, whereas those for
-factoring polynomials are most efficient using another.
-One often-used representation is  a list of terms, each term
-consisting of exponent-coefficient records written in the order
-of decreasing exponents.
-For example, the polynomial \texht{$3x^2+5$}{3*x**2+5} is
-%>> I changed the k's in next line to e's as I thought that was
-%>> clearer.
-represented by the list \axiom{[[e:2, c:3], [e:0, c:5]]}.
-
-What is the optimal data structure for a matrix?
-It depends on the application.
-For large sparse matrices, a linked-list structure of records
-holding only the non-zero elements may be optimal.
-If the elements can be defined by a simple formula
-\texht{$f(i,j)$}{\axiom{f(i,j)}}, then a compiled function for
-\axiom{f} may be optimal.
-Some programmers prefer to represent ordinary matrices as vectors
-of vectors.
-Others prefer to represent matrices by one big linear array where
-elements are accessed with linearly computable indexes.
-
-While all these simultaneous structures tend to be confusing,
-Axiom provides a helpful organizational tool for such a purpose:
-categories.
-\axiomType{PolynomialCategory}, for example, provides a uniform user
-interface across all polynomial types.
-Each kind of polynomial implements functions for
-all these operations, each in its own way.
-If you use only the top-level operations in
-\axiomType{PolynomialCategory} you usually do not care what kind
-of polynomial implementation is used.
-
-%>> I've often thought, though, that it would be nice to be
-%>> be able to use conditionals for representations.
-
-Within a given domain, however, you define (at most) one
-representation.\footnote{You can make that representation a
-\pspadtype{Union} type, however.  See
-\downlink{``\ugTypesUnionsTitle''}{ugTypesUnionsPage} in Section
-\ugTypesUnionsNumber\ignore{ugTypesUnions} for examples of unions.}
-If you want to have multiple representations (that is, several
-domains, each with its own representation), use a category to describe
-the {\tt Exports}, then define separate domains for each
-representation.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsAddDomainTitle}{Add Domain}
-\newcommand{\ugDomainsAddDomainNumber}{13.8.}
-
-@
-\subsection{13.8. Add Domain}
-\label{ugDomainsAddDomainPage}
-\begin{itemize}
-\item ugDomainsDemoPage \ref{ugDomainsDemoPage} on
-page~\pageref{ugDomainsDemoPage}
-\end{itemize}
-\index{pages!ugDomainsAddDomainPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsAddDomainPage}
-\index{ugDomainsAddDomainPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsAddDomainPage}{13.8. Add Domain}
-\beginscroll
-%
-
-The capsule part of {\tt Implementation} defines functions that
-implement the operations exported by the domain---usually only some of
-the operations.  In our demo in
-\downlink{``\ugDomainsDemoTitle''}{ugDomainsDemoPage} in Section
-\ugDomainsDemoNumber\ignore{ugDomainsDemo}, we asked for the value of
-\axiom{3*q-q+q}.  Where do the operations \axiomOp{*}, \axiomOp{+},
-and \axiomOp{-} come from?  There is no definition for them in the
-capsule!
-
-The {\tt Implementation} part of a definition can optionally specify
-an ``add-domain'' to the left of an {\tt add} \spadkey{add} (for
-\axiomType{QuadraticForm}, defines \axiomType{SquareMatrix(n,K)} is
-the add-domain).  The meaning of an add-domain is simply this: if the
-capsule part of the {\tt Implementation} does not supply a function
-for an operation, Axiom goes to the add-domain to find the function.
-So do \axiomOpFrom{*}{QuadraticForm}, \axiomOpFrom{+}{QuadraticForm}
-and \axiomOpFrom{-}{QuadraticForm} come from
-\axiomType{SquareMatrix(n,K)}?
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDefaultsTitle}{Defaults}
-\newcommand{\ugDomainsDefaultsNumber}{13.9.}
-
-@
-\subsection{13.9. Defaults}
-\label{ugDomainsDefaultsPage}
-\begin{itemize}
-\item ugPackagesPage \ref{ugPackagesPage} on
-page~\pageref{ugPackagesPage}
-\item ugCategoriesDefaultsPage \ref{ugCategoriesDefaultsPage} on
-page~\pageref{ugCategoriesDefaultsPage}
-\end{itemize}
-\index{pages!ugDomainsDefaultsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDefaultsPage}
-\index{ugDomainsDefaultsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDefaultsPage}{13.9. Defaults}
-\beginscroll
-%
-In \downlink{``\ugPackagesTitle''}{ugPackagesPage} in 
-Chapter \ugPackagesNumber\ignore{ugPackages}, we saw that 
-categories can provide
-default implementations for their operations.
-How and when are they used?
-When Axiom finds that \axiomType{QuadraticForm(2, Fraction Integer)} 
-does not implement the operations \axiomOp{*},
-\axiomOp{+}, and \axiomOp{-}, it goes to
-\axiomType{SquareMatrix(2,Fraction Integer)} to find it.
-As it turns out, \axiomType{SquareMatrix(2, Fraction Integer)} does
-not implement {\it any} of these operations!
-
-What does Axiom do then?  Here is its overall strategy.  First, Axiom
-looks for a function in the capsule for the domain.  If it is not
-there, Axiom looks in the add-domain for the operation.  If that
-fails, Axiom searches the add-domain of the add-domain, and so on.  If
-all those fail, it then searches the default packages for the
-categories of which the domain is a member.  In the case of
-\axiomType{QuadraticForm}, it searches \axiomType{AbelianGroup}, then
-its parents, grandparents, and so on.  If this fails, it then searches
-the default packages of the add-domain.  Whenever a function is found,
-the search stops immediately and the function is returned.  When all
-fails, the system calls \axiomFun{error} to report this unfortunate
-news to you.  To find out the actual order of constructors searched
-for \axiomType{QuadraticForm}, consult \Browse{}: from the
-\axiomType{QuadraticForm}, click on {\bf Cross Reference}, then on
-{\bf Lineage}.
-
-Let's apply this search strategy for our example \axiom{3*q-q+q}.  The
-scalar multiplication comes first.  Axiom finds a default
-implementation in \axiomType{AbelianGroup\&}.  Remember from
-\downlink{``\ugCategoriesDefaultsTitle''}{ugCategoriesDefaultsPage} in
-Section \ugCategoriesDefaultsNumber\ignore{ugCategoriesDefaults} that
-\axiomType{SemiGroup} provides a default definition for
-\texht{$x^n$}{x**n} by repeated squaring?  \axiomType{AbelianGroup}
-similarly provides a definition for \texht{$n x$}{n*x} by repeated
-doubling.
-
-But the search of the defaults for \axiomType{QuadraticForm} fails to
-find any \axiomOp{+} or \axiomOp{*} in the default packages for the
-ancestors of \axiomType{QuadraticForm}.  So it now searches among
-those for \axiomType{SquareMatrix}.  Category
-\axiomType{MatrixCategory}, which provides a uniform interface for all
-matrix domains, is a grandparent of \axiomType{SquareMatrix} and has a
-capsule defining many functions for matrices, including matrix
-addition, subtraction, and scalar multiplication.  The default package
-\axiomType{MatrixCategory\&} is where the functions for
-\axiomOpFrom{+}{QuadraticForm} and \spadfunFrom{-}{QuadraticForm} come
-from.
-
-You can use \Browse{} to discover where the operations for
-\axiomType{QuadraticForm} are implemented.  First, get the page
-describing \axiomType{QuadraticForm}.  With your mouse somewhere in
-this window, type a ``2'', press the \texht{\fbox{\bf Tab}}{{\bf Tab}}
-key, and then enter ``Fraction Integer'' to indicate that you want the
-domain \axiomType{QuadraticForm(2, Fraction Integer)}.  Now click on
-{\bf Operations} to get a table of operations and on \axiomOp{*} to
-get a page describing the \axiomOp{*} operation.  Finally, click on
-{\bf implementation} at the bottom.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsOriginsTitle}{Origins}
-\newcommand{\ugDomainsOriginsNumber}{13.10.}
-
-@
-\subsection{13.10. Origins}
-\label{ugDomainsOriginsPage}
-\index{pages!ugDomainsOriginsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsOriginsPage}
-\index{ugDomainsOriginsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsOriginsPage}{13.10. Origins}
-\beginscroll
-%
-
-Aside from the notion of where an operation is implemented,
-a useful notion is  the {\it origin} or ``home'' of an operation.
-When an operation (such as
-\spadfunFrom{quadraticForm}{QuadraticForm}) is explicitly exported by
-a domain (such as \axiomType{QuadraticForm}), you can say that the
-origin of that operation is that domain.
-If an operation is not explicitly exported from a domain, it is inherited
-from, and has as origin, the (closest) category that explicitly exports it.
-The operations \axiomOpFrom{+}{AbelianMonoid} and
-\axiomOpFrom{-}{AbelianMonoid} of \axiomType{QuadraticForm},
-for example, are inherited from \axiomType{AbelianMonoid}.
-As it turns out, \axiomType{AbelianMonoid} is the origin of virtually every
-\axiomOp{+} operation in Axiom!
-
-Again, you can use \Browse{} to discover the origins of
-operations.
-From the \Browse{} page on \axiomType{QuadraticForm}, click on {\bf
-Operations}, then on {\bf origins} at the bottom of the page.
-
-The origin of the operation is the {\it only} place where on-line
-documentation is given.
-However, you can re-export an operation to give it special
-documentation.
-Suppose you have just invented the world's fastest algorithm for
-inverting matrices using a particular internal representation for
-matrices.
-If your matrix domain just declares that it exports
-\axiomType{MatrixCategory}, it exports the \axiomFun{inverse}
-operation, but the documentation the user gets from \Browse{} is
-the standard one from \axiomType{MatrixCategory}.
-To give your version of \axiomFun{inverse} the attention it
-deserves, simply export the operation explicitly with new
-documentation.
-This redundancy gives \axiomFun{inverse} a new origin and tells
-\Browse{} to present your new documentation.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsShortFormsTitle}{Short Forms}
-\newcommand{\ugDomainsShortFormsNumber}{13.11.}
-
-@
-\subsection{13.11. Short Forms}
-\label{ugDomainsShortFormsPage}
-\index{pages!ugDomainsShortFormsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsShortFormsPage}
-\index{ugDomainsShortFormsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsShortFormsPage}{13.11. Short Forms}
-\beginscroll
-%
-In Axiom, a domain could be defined using only an add-domain
-and no capsule.
-Although we talk about rational numbers as quotients of integers,
-there is no type \pspadtype{RationalNumber} in Axiom.
-To create such a type, you could compile the following
-``short-form'' definition:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ RationalNumber()\ ==\ Fraction(Integer)}\newline
-\endImportant
-
-The {\tt Exports} part of this definition is missing and is taken
-to be equivalent to that of \axiomType{Fraction(Integer)}.
-Because of the add-domain philosophy, you get precisely
-what you want.
-The effect is to create a little stub of a domain.
-When a user asks to add two rational numbers, Axiom would
-ask \pspadtype{RationalNumber} for a function implementing this
-\axiomOp{+}.
-Since the domain has no capsule, the domain then immediately
-sends its request to \axiomType{Fraction (Integer)}.
-
-The short form definition for domains is used to
-define such domains as \axiomType{MultivariatePolynomial}:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ MultivariatePolynomial(vl:\ List\ Symbol,\ R:\ Ring)\ ==}\newline
-{\tt 2.\ \ \ \ \ \ SparseMultivariatePolynomial(R,}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ OrderedVariableList\ vl)}\newline
-\endImportant
-
-%% *********************************************************************
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsCliffordTitle}{Example 1: Clifford Algebra}
-\newcommand{\ugDomainsCliffordNumber}{13.12.}
-
-@
-\subsection{13.12. Example 1: Clifford Algebra}
-\label{ugDomainsCliffordPage}
-\begin{itemize}
-\item CliffordAlgebraXmpPage \ref{CliffordAlgebraXmpPage} on
-page~\pageref{CliffordAlgebraXmpPage}
-\end{itemize}
-\index{pages!ugDomainsCliffordPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsCliffordPage}
-\index{ugDomainsCliffordPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsCliffordPage}{13.12. Example 1: Clifford Algebra}
-\beginscroll
-%
-
-Now that we have \axiomType{QuadraticForm} available,
-let's put it to use.
-Given some quadratic form \smath{Q} described by an
-\smath{n} by \smath{n} matrix over a field \smath{K}, the domain
-\axiomType{CliffordAlgebra(n, K, Q)} defines a vector space of
-dimension \texht{$2^n$}{2**n} over \smath{K}.
-This is an interesting domain since complex numbers, quaternions,
-exterior algebras and spin algebras are all examples of Clifford
-algebras.
-
-The basic idea is this:
-the quadratic form \axiom{Q} defines a basis
-\texht{$e_1,e_2\ldots,e_n$}{e1,e2,...,en} for the
-vector space \texht{$K^n$}{K**n}---the direct product of \axiom{K}
-with itself \axiom{n} times.
-From this, the Clifford algebra generates a basis of
-\texht{$2^n$}{2**n} elements given by all the possible products
-of the \texht{$e_i$}{\axiom{ei}} in order without duplicates, that is,
-\texht{
-1,
-$e_1$,
-$e_2$,
-$e_1e_2$,
-$e_3$,
-$e_1e_3$,
-$e_2e_3$,
-$e_1e_2,e_3$}{1, e1, e2, e1*e2, e3, e1*e3, e2*e3, e1*e2*e3},
-and so on.
-
-The algebra is defined by the relations
-\begin{verbatim}
-ei*ei = Q(ei)
-ei*ej = -ej*ei,  i ^= j
-\end{verbatim}
-
-Now look at the snapshot of its definition given in Figure
-\ref{fig-clifalg}.
-Lines 9-10 show part of the definitions of the {\tt Exports}.
-A Clifford algebra over a field \axiom{K} is asserted to be a ring,
-an algebra over \axiom{K}, and a vector space over \axiom{K}.
-Its explicit exports include
-\axiom{e(n),} which returns the \eth{\axiom{n}} unit element.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ NNI\ ==>\ NonNegativeInteger}\newline
-{\tt 2.\ \ \ PI\ \ ==>\ PositiveInteger}\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ CliffordAlgebra(n,K,q):\ Exports\ ==\ Implementation\ where}\newline
-{\tt 5.\ \ \ \ \ \ \ n:\ PI}\newline
-{\tt 6.\ \ \ \ \ \ \ K:\ Field}\newline
-{\tt 7.\ \ \ \ \ \ \ q:\ QuadraticForm(n,\ K)}\newline
-{\tt 8.\ \ \ }\newline
-{\tt 9.\ \ \ \ \ \ \ Exports\ ==\ Join(Ring,Algebra(K),VectorSpace(K))\ with}\newline
-{\tt 10.\ \ \ \ \ \ \ \ e:\ PI\ ->\ \$}\newline
-{\tt 11.\ \ \ \ \ \ \ \ \ \ \ \ ...\ \ \ \ \ \ \ \ }\newline
-{\tt 12.\ \ }\newline
-{\tt 13.\ \ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 14.\ \ \ \ \ \ \ \ Qeelist\ :=\ \ }\newline
-{\tt 15.\ \ \ \ \ \ \ \ \ \ [q.unitVector(i::PI)\ for\ i\ in\ 1..n]}\newline
-{\tt 16.\ \ \ \ \ \ \ \ dim\ \ \ \ \ :=\ \ 2**n}\newline
-{\tt 17.\ \ \ \ \ \ \ \ Rep\ \ \ \ \ :=\ PrimitiveArray\ K}\newline
-{\tt 18.\ \ \ \ \ \ \ \ New\ ==>\ new(dim,\ 0\$K)\$Rep}\newline
-{\tt 19.\ \ \ \ \ \ \ \ x\ +\ y\ ==}\newline
-{\tt 20.\ \ \ \ \ \ \ \ \ \ z\ :=\ New}\newline
-{\tt 21.\ \ \ \ \ \ \ \ \ \ for\ i\ in\ 0..dim-1\ repeat\ z.i\ :=\ x.i\ +\ y.i}\newline
-{\tt 22.\ \ \ \ \ \ \ \ \ \ z}\newline
-{\tt 23.\ \ \ \ \ \ \ \ addMonomProd:\ (K,\ NNI,\ K,\ NNI,\ \$)\ ->\ \$}\newline
-{\tt 24.\ \ \ \ \ \ \ \ addMonomProd(c1,\ b1,\ c2,\ b2,\ z)\ ==\ \ ...}\newline
-{\tt 25.\ \ \ \ \ \ \ \ x\ *\ y\ ==}\newline
-{\tt 26.\ \ \ \ \ \ \ \ \ \ z\ :=\ New}\newline
-{\tt 27.\ \ \ \ \ \ \ \ \ \ for\ ix\ in\ 0..dim-1\ repeat}\newline
-{\tt 28.\ \ \ \ \ \ \ \ \ \ \ \ if\ x.ix\ \notequal{}\ 0\ then\ for\ iy\ in\ 0..dim-1\ repeat}\newline
-{\tt 29.\ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ y.iy\ \notequal{}\ 0}\newline
-{\tt 30.\ \ \ \ \ \ \ \ \ \ \ \ \ \ then\ addMonomProd(x.ix,ix,y.iy,iy,z)}\newline
-{\tt 31.\ \ \ \ \ \ \ \ \ \ \ \ z}\newline
-{\tt 32.\ \ \ \ \ \ \ \ \ \ \ \ \ ...}\newline
-\caption{Part of the \protect\axiomType{CliffordAlgebra} domain.}\label{fig-clifalg}
-\endImportant
-
-The {\tt Implementation} part begins by defining a local variable
-\axiom{Qeelist} to hold the list of all \axiom{q.v} where \axiom{v}
-runs over the unit vectors from 1 to the dimension \axiom{n}.
-Another local variable \axiom{dim} is set to \texht{$2^n$}{2**n},
-computed once and for all.
-The representation for the domain is
-\axiomType{PrimitiveArray(K)},
-which is a basic array of elements from domain \axiom{K}.
-Line 18 defines \axiom{New} as shorthand for the more lengthy
-expression \axiom{new(dim, 0\$K)\$Rep}, which computes a primitive
-array of length \texht{$2^n$}{2**n} filled with \axiom{0}'s from
-domain \axiom{K}.
-
-Lines 19-22 define the sum of two elements \axiom{x} and \axiom{y}
-straightforwardly.
-First, a new array of all \axiom{0}'s is created, then filled with
-the sum of the corresponding elements.
-Indexing for primitive arrays starts at 0.
-The definition of the product of \axiom{x} and \axiom{y} first requires
-the definition of a local function \userfun{addMonomProd}.
-Axiom knows it is local since it is not an exported function.
-The types of all local functions must be declared.
-
-For a demonstration of \axiomType{CliffordAlgebra}, see
-\downlink{`CliffordAlgebra'}{CliffordAlgebraXmpPage}\ignore{CliffordAlgebra}.
-
-\endscroll
-\autobuttons
+\end{scroll}
 \end{page}
 
 @
-<<ug13.ht>>=
-\newcommand{\ugDomsinsDatabaseTitle}{Example 2: Building A Query Facility}
-\newcommand{\ugDomsinsDatabaseNumber}{13.13.}
-
-@
-\subsection{13.13. Example 2: Building A Query Facility}
-\label{ugDomsinsDatabasePage}
-\begin{itemize}
-\item ugDomainsQueryLanguagePage \ref{ugDomainsQueryLanguagePage} on
-page~\pageref{ugDomainsQueryLanguagePage}
-\item ugDomainsDatabaseConstructorPage \ref{ugDomainsDatabaseConstructorPage} on
-page~\pageref{ugDomainsDatabaseConstructorPage}
-\item ugDomainsQueryEquationsPage \ref{ugDomainsQueryEquationsPage} on
-page~\pageref{ugDomainsQueryEquationsPage}
-\item ugDomainsDataListsPage \ref{ugDomainsDataListsPage} on
-page~\pageref{ugDomainsDataListsPage}
-\item ugDomainsDatabasePage \ref{ugDomainsDatabasePage} on
-page~\pageref{ugDomainsDatabasePage}
-\item ugDomainsCreatingPage \ref{ugDomainsCreatingPage} on
-page~\pageref{ugDomainsCreatingPage}
-\item ugDomainsPuttingPage \ref{ugDomainsPuttingPage} on
-page~\pageref{ugDomainsPuttingPage}
-\item ugDomainsExamplesPage \ref{ugDomainsExamplesPage} on
-page~\pageref{ugDomainsExamplesPage}
-\end{itemize}
-\index{pages!ugDomsinsDatabasePage!ug13.ht}
-\index{ug13.ht!pages!ugDomsinsDatabasePage}
-\index{ugDomsinsDatabasePage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomsinsDatabasePage}
-{13.13. Example 2: Building A Query Facility}
-\beginscroll
-%
-We now turn to an entirely different kind of application,
-building a query language for a database.
-
-Here is the practical problem to solve.
-The \Browse{} facility of Axiom has a
-database for all operations and constructors which is
-stored on disk and accessed by \HyperName{}.
-For our purposes here, we regard each line of this file as having
-eight fields:
-{\tt class, name, type, nargs, exposed, kind, origin,} and {\tt condition.}
-Here is an example entry:
-
-\begin{verbatim}
-o`determinant`$->R`1`x`d`Matrix(R)`has(R,commutative("*"))
-\end{verbatim}
-
-In English, the entry means:
-\texht{\begin{quotation}}{\newline}
-\texht{\raggedright}{}
-The operation \axiomFun{determinant}: \spadsig{\$}{R} with {\it 1} argument, is
-{\it exposed} and is exported by {\it domain} \axiomType{Matrix(R)}
-if {\tt R has commutative("*")}.
-\texht{\end{quotation}}{\newline}
-
-Our task is to create a little query language that allows us
-to get useful information from this database.
-
+\subsection{Optimization}
+\label{UXANNAOpt}
+\index{pages!UXANNAOpt!annaex.ht}
+\index{annaex.ht!pages!UXANNAOpt}
+\index{UXANNAOpt!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAOpt}{Optimization}
+Welcome to the Optimization section of {\tt
+\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em Axiom/NAG Expert System}.  
+This system chooses, and uses, NAG numerical routines.
+\begin{scroll}
+\blankline
+\indent{2}
 \beginmenu
-    \menudownlink{{13.13.1. A Little Query Language}}
-{ugDomainsQueryLanguagePage}
-    \menudownlink{{13.13.2. The Database Constructor}}
-{ugDomainsDatabaseConstructorPage}
-    \menudownlink{{13.13.3. Query Equations}}{ugDomainsQueryEquationsPage}
-    \menudownlink{{13.13.4. DataLists}}{ugDomainsDataListsPage}
-    \menudownlink{{13.13.5. Index Cards}}{ugDomainsDatabasePage}
-    \menudownlink{{13.13.6. Creating a Database}}{ugDomainsCreatingPage}
-    \menudownlink{{13.13.7. Putting It All Together}}{ugDomainsPuttingPage}
-    \menudownlink{{13.13.8. Example Queries}}{ugDomainsExamplesPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsQueryLanguageTitle}{A Little Query Language}
-\newcommand{\ugDomainsQueryLanguageNumber}{13.13.1.}
-
-@
-\subsection{13.13.1. A Little Query Language}
-\label{ugDomainsQueryLanguagePage}
-\index{pages!ugDomainsQueryLanguagePage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsQueryLanguagePage}
-\index{ugDomainsQueryLanguagePage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsQueryLanguagePage}{13.13.1. A Little Query Language}
-\beginscroll
-
-First we design a simple language for accessing information from
-the database.
-We have the following simple model in mind for its design.
-Think of the database as a box of index cards.
-There is only one search operation---it
-takes the name of a field and a predicate
-(a boolean-valued function) defined on the fields of the
-index cards.
-When applied, the search operation goes through the entire box
-selecting only those index cards for which the predicate is true.
-The result of a search is a new box of index cards.
-This process can be repeated again and again.
-
-The predicates all have a particularly simple form: {\it symbol}
-{\tt =} {\it pattern}, where {\it symbol} designates one of the
-fields, and {\it pattern} is a ``search string''---a string
-that may contain a ``{\tt *}'' as a
-wildcard.
-Wildcards match any substring, including the empty string.
-Thus the pattern {\tt "*ma*t"} matches
-{\tt "mat", "doormat"} and {\tt "smart".}
-
-To illustrate how queries are given, we give you a sneak preview
-of the facility we are about to create.
-
-\xtc{
-Extract the database of all Axiom operations.
-}{
-\spadpaste{ops := getDatabase("o")\bound{o1}}
-}
-\xtc{
-How many exposed three-argument \axiomFun{map} operations involving streams?
-}{
-\spadpaste{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2}\free{o1}}
-}
-
-As usual, the arguments of \axiomFun{elt} (\axiomSyntax{.})
-associate to the left.
-The first \axiomFun{elt} produces the set of all operations with
-name {\tt map}.
-The second \axiomFun{elt} produces the set of all map operations
-with three arguments.
-The third \axiomFun{elt} produces the set of all three-argument map
-operations having a type mentioning \axiomType{Stream}.
-
-Another thing we'd like to do is to extract one field from each of
-the index cards in the box and look at the result.
-Here is an example of that kind of request.
-
-\xtc{
-What constructors explicitly export a \axiomFun{determinant} operation?
-}{
-\spadpaste{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1}}
-}
-
-The first \axiomFun{elt} produces the set of all index cards with
-name {\tt determinant}.
-The second \axiomFun{elt} extracts the {\tt origin} component from
-each index card. Each origin component
-is the name of a constructor which directly
-exports the operation represented by the index card.
-Extracting a component from each index card produces what we call
-a {\it datalist}.
-The third \axiomFun{elt}, {\tt sort}, causes the datalist of
-origins to be sorted in alphabetic
-order.
-The fourth, {\tt unique}, causes duplicates to be removed.
-
-Before giving you a more extensive demo of this facility,
-we now build the necessary domains and packages to implement it.
-%We will introduce a few of our minor conveniences.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDatabaseConstructorTitle}{The Database Constructor}
-\newcommand{\ugDomainsDatabaseConstructorNumber}{13.13.2.}
-
-@
-\subsection{13.13.2. The Database Constructor}
-\label{ugDomainsDatabaseConstructorPage}
-\index{pages!ugDomainsDatabaseConstructorPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDatabaseConstructorPage}
-\index{ugDomainsDatabaseConstructorPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDatabaseConstructorPage}
-{13.13.2. The Database Constructor}
-\beginscroll
-
-We work from the top down. First, we define a database,
-our box of index cards, as an abstract datatype.
-For sake of illustration and generality,
-we assume that an index card is some type \axiom{S}, and
-that a database is a box of objects of type \axiom{S}.
-Here is the Axiom program defining the \pspadtype{Database}
-domain.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ PI\ ==>\ PositiveInteger}\newline
-{\tt 2.\ \ \ Database(S):\ Exports\ ==\ Implementation\ where}\newline
-{\tt 3.\ \ \ \ \ S:\ Object\ with\ }\newline
-{\tt 4.\ \ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ String}\newline
-{\tt 5.\ \ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
-{\tt 6.\ \ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
-{\tt 7.\ \ \ }\newline
-{\tt 8.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 9.\ \ \ \ \ \ \ elt:\ (\$,QueryEquation)\ ->\ \$}\newline
-{\tt 10.\ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ DataList\ String}\newline
-{\tt 11.\ \ \ \ \ \ "+":\ (\$,\$)\ ->\ \$}\newline
-{\tt 12.\ \ \ \ \ \ "-":\ (\$,\$)\ ->\ \$}\newline
-{\tt 13.\ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
-{\tt 14.\ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
-{\tt 15.\ \ \ \ \ \ fullDisplay:\ (\$,PI,PI)\ ->\ Void}\newline
-{\tt 16.\ \ \ \ \ \ coerce:\ \$\ ->\ OutputForm}\newline
-{\tt 17.\ \ \ \ Implementation\ ==\ add}\newline
-{\tt 18.\ \ \ \ \ \ \ \ ...}\newline
-\endImportant
-
-The domain constructor takes a parameter \axiom{S}, which
-stands for the class of index cards.
-We describe an index card later.
-Here think of an index card as a string which has
-the eight fields mentioned above.
-
-First, we tell Axiom what operations we are going to require
-from index cards.
-We need an \axiomFun{elt} to extract the contents of a field
-(such as {\tt name} and {\tt type}) as a string.
-For example,
-\axiom{c.name} returns a string that is the content of the
-\axiom{name} field on the index card \axiom{c}.
-We need to display an index card in two ways:
-\pspadfun{display} shows only the name and type of an
-operation;
-\pspadfun{fullDisplay} displays all fields.
-The display operations return no useful information and thus have
-return type \axiomType{Void}.
-
-Next, we tell Axiom what operations the user can apply
-to the database.
-This part defines our little query language.
-The most important operation is
-{\frenchspacing\tt db . field = pattern} which
-returns a new database, consisting of all index
-cards of {\tt db} such that the \axiom{field} part of the index
-card is matched by the string pattern called \axiom{pattern}.
-The expression {\tt field = pattern} is an object of type
-\axiomType{QueryEquation} (defined in the next section).
-
-Another \axiomFun{elt} is needed to produce a \pspadtype{DataList}
-object.
-Operation \axiomOp{+} is to merge two databases together;
-\axiomOp{-} is used to subtract away common entries in a second
-database from an initial database.
-There are three display functions.
-The \pspadfun{fullDisplay} function has two versions: one
-that prints all the records, the other that prints only a fixed
-number of records.
-A \axiomFun{coerce} to \axiomType{OutputForm} creates a display
-object.
-
-The {\tt Implementation} part of \axiomType{Database} is straightforward.
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 2.\ \ \ \ \ \ \ s:\ Symbol}\newline
-{\tt 3.\ \ \ \ \ \ \ Rep\ :=\ List\ S}\newline
-{\tt 4.\ \ \ \ \ \ \ elt(db,equation)\ ==\ ...}\newline
-{\tt 5.\ \ \ \ \ \ \ elt(db,key)\ ==\ [x.key\ for\ x\ in\ db]::DataList(String)}\newline
-{\tt 6.\ \ \ \ \ \ \ display(db)\ ==\ \ for\ x\ in\ db\ repeat\ display\ x}\newline
-{\tt 7.\ \ \ \ \ \ \ fullDisplay(db)\ ==\ for\ x\ in\ db\ repeat\ fullDisplay\ x}\newline
-{\tt 8.\ \ \ \ \ \ \ fullDisplay(db,\ n,\ m)\ ==\ for\ x\ in\ db\ for\ i\ in\ 1..m}\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ repeat}\newline
-{\tt 10.\ \ \ \ \ \ \ \ \ \ if\ i\ >=\ n\ then\ fullDisplay\ x}\newline
-{\tt 11.\ \ \ \ \ \ x+y\ ==\ removeDuplicates!\ merge(x,y)}\newline
-{\tt 12.\ \ \ \ \ \ x-y\ ==\ mergeDifference(copy(x::Rep),}\newline
-{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y::Rep)\$MergeThing(S)}\newline
-{\tt 14.\ \ \ \ \ \ coerce(db):\ OutputForm\ ==\ (\#db)::\ OutputForm}\newline
-\endImportant
-
-The database is represented by a list of elements of \axiom{S} (index cards).
-We leave the definition of the first \axiomFun{elt} operation
-(on line 4) until the next section.
-The second \axiomFun{elt} collects all the strings with field name
-{\it key} into a list.
-The \axiomFun{display} function and first \axiomFun{fullDisplay} function
-simply call the corresponding functions from \axiom{S}.
-The second \axiomFun{fullDisplay} function provides an efficient way of
-printing out a portion of a large list.
-The \axiomOp{+} is defined by using the existing
-\spadfunFrom{merge}{List} operation defined on lists, then
-removing duplicates from the result.
-The \axiomOp{-} operation requires writing a corresponding
-subtraction operation.
-A package \axiomType{MergeThing} (not shown) provides this.
-
-The \axiomFun{coerce} function converts the database to an
-\axiomType{OutputForm} by computing the number of index cards.
-This is a good example of the independence of
-the representation of an Axiom object from how it presents
-itself to the user. We usually do not want to look at a database---but
-do care how many ``hits'' we get for a given query.
-So we define the output representation of a database to be simply
-the number of index cards our query finds.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsQueryEquationsTitle}{Query Equations}
-\newcommand{\ugDomainsQueryEquationsNumber}{13.13.3.}
-
-@
-\subsection{13.13.3. Query Equations}
-\label{ugDomainsQueryEquationsPage}
-\index{pages!ugDomainsQueryEquationsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsQueryEquationsPage}
-\index{ugDomainsQueryEquationsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsQueryEquationsPage}{13.13.3. Query Equations}
-\beginscroll
-
-The predicate for our search is given by an object of type
-\pspadtype{QueryEquation}.
-Axiom does not have such an object yet so we
-have to invent it.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ QueryEquation():\ Exports\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ equation:\ (Symbol,\ String)\ ->\ \$}\newline
-{\tt 4.\ \ \ \ \ \ \ variable:\ \$\ ->\ Symbol}\newline
-{\tt 5.\ \ \ \ \ \ \ value:\\ \\ \\ \\ \$\ ->\ String}\newline
-{\tt 6.\ \ \ }\newline
-{\tt 7.\ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 8.\ \ \ \ \ \ \ Rep\ :=\ Record(var:Symbol,\ val:String)}\newline
-{\tt 9.\ \ \ \ \ \ \ equation(x,\ s)\ ==\ [x,\ s]}\newline
-{\tt 10.\ \ \ \ \ \ variable\ q\ ==\ q.var}\newline
-{\tt 11.\ \ \ \ \ \ value\\ \\ \\ \\ q\ ==\ q.val}\newline
-\endImportant
-
-Axiom converts an input expression of the form
-\axiom{{\it a} = {\it b}} to \axiom{equation({\it a, b})}.
-Our equations always have a symbol on the left and a string
-on the right.
-The {\tt Exports} part thus specifies an operation
-\axiomFun{equation} to create a query equation, and
-\pspadfun{variable} and \pspadfun{value} to select the left- and
-right-hand sides.
-The {\tt Implementation} part uses \pspadtype{Record} for a
-space-efficient representation of an equation.
-
-Here is the missing definition for the \axiomFun{elt} function of
-\pspadtype{Database} in the last section:
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ \ \ \ \ elt(db,eq)\ ==}\newline
-{\tt 2.\ \ \ \ \ \ \ \ \ field\\ \ :=\ variable\ eq}\newline
-{\tt 3.\ \ \ \ \ \ \ \ \ value\ :=\ value\ eq}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ [x\ for\ x\ in\ db\ |\ matches?(value,x.field)]}\newline
-\endImportant
-
-Recall that a database is represented by a list.
-Line 4 simply runs over that list collecting all elements
-such that the pattern (that is, \axiom{value})
-matches the selected field of the element.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDataListsTitle}{DataLists}
-\newcommand{\ugDomainsDataListsNumber}{13.13.4.}
-
-@
-\subsection{13.13.4. DataLists}
-\label{ugDomainsDataListsPage}
-\index{pages!ugDomainsDataListsPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDataListsPage}
-\index{ugDomainsDataListsPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDataListsPage}{13.13.4. DataLists}
-\beginscroll
-
-Type \pspadtype{DataList} is a new type invented to hold the result
-of selecting one field from each of the index cards in the box.
-It is useful to make datalists extensions of lists---lists that
-have special \axiomFun{elt} operations defined on them for
-sorting and removing duplicates.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ DataList(S:OrderedSet)\ :\ Exports\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ Exports\ ==\ ListAggregate(S)\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ elt:\ (\$,"unique")\ ->\ \$}\newline
-{\tt 4.\ \ \ \ \ \ \ elt:\ (\$,"sort")\ ->\ \$}\newline
-{\tt 5.\ \ \ \ \ \ \ elt:\ (\$,"count")\ ->\ NonNegativeInteger}\newline
-{\tt 6.\ \ \ \ \ \ \ coerce:\ List\ S\ ->\ \$}\newline
-{\tt 7.\ \ \ }\newline
-{\tt 8.\ \ \ \ \ Implementation\ ==\ \ List(S)\ add}\newline
-{\tt 9.\ \ \ \ \ \ \ Rep\ :=\ List\ S}\newline
-{\tt 10.\ \ \ \ \ \ elt(x,"unique")\ ==\ removeDuplicates(x)}\newline
-{\tt 11.\ \ \ \ \ \ elt(x,"sort")\ ==\ sort(x)}\newline
-{\tt 12.\ \ \ \ \ \ elt(x,"count")\ ==\ \#x}\newline
-{\tt 13.\ \ \ \ \ \ coerce(x:List\ S)\ ==\ x\ ::\ \$}\newline
-\endImportant
-
-The {\tt Exports} part asserts that datalists belong to the
-category \axiomType{ListAggregate}.
-Therefore, you can use all the usual list operations on datalists,
-such as \spadfunFrom{first}{List}, \spadfunFrom{rest}{List}, and
-\spadfunFrom{concat}{List}.
-In addition, datalists have four explicit operations.
-Besides the three \axiomFun{elt} operations, there is a
-\axiomFun{coerce} operation that creates datalists from lists.
-
-The {\tt Implementation} part needs only to define four functions.
-All the rest are obtained from \axiomType{List(S)}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsDatabaseTitle}{Index Cards}
-\newcommand{\ugDomainsDatabaseNumber}{13.13.5.}
-
-@
-\subsection{13.13.5. Index Cards}
-\label{ugDomainsDatabasePage}
-\index{pages!ugDomainsDatabasePage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsDatabasePage}
-\index{ugDomainsDatabasePage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsDatabasePage}{13.13.5. Index Cards}
-\beginscroll
-
-An index card comes from a file as one long string.
-We define functions that extract substrings from the long
-string.
-Each field has a name that
-is passed as a second argument to \axiomFun{elt}.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ IndexCard()\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ elt:\ (\$,\ Symbol)\ ->\ String}\newline
-{\tt 4.\ \ \ \ \ \ \ display:\ \$\ ->\ Void}\newline
-{\tt 5.\ \ \ \ \ \ \ fullDisplay:\ \$\ ->\ Void}\newline
-{\tt 6.\ \ \ \ \ \ \ coerce:\ String\ ->\ \$}\newline
-{\tt 7.\ \ \ \ \ Implementation\ ==\ String\ add\ ...}\newline
-\endImportant
-
-We leave the {\tt Implementation} part to the reader.
-All operations involve straightforward string manipulations.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsCreatingTitle}{Creating a Database}
-\newcommand{\ugDomainsCreatingNumber}{13.13.6.}
-
-@
-\subsection{13.13.6. Creating a Database}
-\label{ugDomainsCreatingPage}
-\index{pages!ugDomainsCreatingPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsCreatingPage}
-\index{ugDomainsCreatingPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsCreatingPage}{13.13.6. Creating a Database}
-\beginscroll
-
-We must not forget one important operation: one that builds the database in the
-first place!
-We'll name it \pspadfun{getDatabase} and put it in a package.
-This function is implemented by calling the \Lisp{} function
-\axiom{getBrowseDatabase(s)} to get appropriate information from
-\Browse{}.
-This operation takes a string indicating which lines you
-want from the database: \axiom{"o"} gives you all operation
-lines, and \axiom{"k"}, all constructor lines.
-Similarly, \axiom{"c"}, \axiom{"d"}, and \axiom{"p"} give
-you all category, domain and package lines respectively.
-%
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ OperationsQuery():\ Exports\ ==\ Implementation\ where}\newline
-{\tt 2.\ \ \ \ \ Exports\ ==\ with}\newline
-{\tt 3.\ \ \ \ \ \ \ getDatabase:\ String\ ->\ Database(IndexCard)}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ \ \ Implementation\ ==\ add}\newline
-{\tt 6.\ \ \ \ \ \ \ getDatabase(s)\ ==\ getBrowseDatabase(s)\$Lisp}\newline
-\endImportant
-
-We do not bother creating a special name for databases of index
-cards.
-\pspadtype{Database (IndexCard)} will do.
-Notice that we used the package \pspadtype{OperationsQuery} to
-create, in effect,
-a new kind of domain: \pspadtype{Database(IndexCard)}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsPuttingTitle}{Putting It All Together}
-\newcommand{\ugDomainsPuttingNumber}{13.13.7.}
-
-@
-\subsection{13.13.7. Putting It All Together}
-\label{ugDomainsPuttingPage}
-\index{pages!ugDomainsPuttingPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsPuttingPage}
-\index{ugDomainsPuttingPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsPuttingPage}{13.13.7. Putting It All Together}
-\beginscroll
-
-To create the database facility, you put all these constructors
-into one file.\footnote{You could use separate files, but we
-are putting them all together because, organizationally, that is
-the logical thing to do.}
-At the top of the file put \spadcmd{)abbrev} commands, giving the
-constructor abbreviations you created.
-
-\beginImportant
-  
-\noindent
-{\tt 1.\ \ \ )abbrev\ domain\ \ ICARD\ \ \ IndexCard}\newline
-{\tt 2.\ \ \ )abbrev\ domain\ \ QEQUAT\ \ QueryEquation}\newline
-{\tt 3.\ \ \ )abbrev\ domain\ \ MTHING\ \ MergeThing}\newline
-{\tt 4.\ \ \ )abbrev\ domain\ \ DLIST\ \ \ DataList}\newline
-{\tt 5.\ \ \ )abbrev\ domain\ \ DBASE\ \ \ Database}\newline
-{\tt 6.\ \ \ )abbrev\ package\ OPQUERY\ OperationsQuery}\newline
-\endImportant
-
-With all this in {\bf alql.spad}, for example, compile it using
-\begin{verbatim}
-)compile alql
-\end{verbatim}
-and then load each of the constructors:
-\begin{verbatim}
-)load ICARD QEQUAT MTHING DLIST DBASE OPQUERY
-\end{verbatim}
-You are ready to try some sample queries.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug13.ht>>=
-\newcommand{\ugDomainsExamplesTitle}{Example Queries}
-\newcommand{\ugDomainsExamplesNumber}{13.13.8.}
-
-@
-\subsection{13.13.8. Example Queries}
-\label{ugDomainsExamplesPage}
-\index{pages!ugDomainsExamplesPage!ug13.ht}
-\index{ug13.ht!pages!ugDomainsExamplesPage}
-\index{ugDomainsExamplesPage!ug13.ht!pages}
-<<ug13.ht>>=
-\begin{page}{ugDomainsExamplesPage}{13.13.8. Example Queries}
-\beginscroll
-
-Our first set of queries give some statistics on constructors in
-the current Axiom system.
-
-\xtc{
-How many constructors does Axiom have?
-}{
-\spadpaste{ks := getDatabase "k"\bound{q1}}
-}
-\xtc{
-Break this down into the number of categories, domains, and packages.
-}{
-\spadpaste{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3}\free{q1}}
-}
-\xtc{
-What are all the domain constructors that take no parameters?
-}{
-\spadpaste{elt(ks.(kind="d").(nargs="0"),name)\bound{q4}\free{q1}}
-}
-\xtc{
-How many constructors have ``Matrix'' in their name?
-}{
-\spadpaste{mk := ks.(name="*Matrix*")\bound{q5}\free{q1}}
-}
-\xtc{
-What are the names of those that are domains?
-}{
-\spadpaste{elt(mk.(kind="d"),name)\bound{q6}\free{q5}}
-}
-\xtc{
-How many operations are there in the library?
-}{
-\spadpaste{o := getDatabase "o"\bound{o1}}
-}
-\xtc{
-Break this down into categories, domains, and packages.
-}{
-\spadpaste{[o.(kind=k) for k in ["c","d","p"]]\free{o1}}
-}
-
-The query language is helpful in getting information about a
-particular operation you might like to apply.
-While this information can be obtained with
-\Browse{}, the use of the query database gives you data that you
-can manipulate in the workspace.
-
-\xtc{
-How many operations have ``eigen'' in the name?
-}{
-\spadpaste{eigens := o.(name="*eigen*")\bound{eigens}\free{o1}}
-}
-\xtc{
-What are their names?
-}{
-\spadpaste{elt(eigens,name)\free{eigens}}
-}
-\xtc{
-Where do they come from?
-}{
-\spadpaste{elt(elt(elt(eigens,origin),sort),unique) \free{eigens}}
-}
-
-The operations \axiomOp{+} and \axiomOp{-} are useful for
-constructing small databases and combining them.
-However, remember that the only matching you can do is string
-matching.
-Thus a pattern such as {\tt "*Matrix*"} on the type field
-matches
-any type containing \axiomType{Matrix}, \axiomType{MatrixCategory},
-\axiomType{SquareMatrix}, and so on.
-
-\xtc{
-How many operations mention ``Matrix'' in their type?
-}{
-\spadpaste{tm := o.(type="*Matrix*")\bound{x10}\free{o1}}
-}
-\xtc{
-How many operations come from constructors with ``Matrix'' in
-their name?
-}{
-\spadpaste{fm := o.(origin="*Matrix*")\bound{x11}\free{o1}}
-}
-\xtc{
-How many operations are in \axiom{fm} but not in \axiom{tm}?
-}{
-\spadpaste{fm-tm \bound{x12}\free{x10 x11}}
-}
-\xtc{
-Display the operations that both mention ``Matrix'' in their type
-and come from a constructor having ``Matrix'' in their name.
-}{
-\spadpaste{fullDisplay(fm-\%) \bound{x13}\free{x12}}
-}
-\xtc{
-How many operations involve matrices?
-}{
-\spadpaste{m := tm+fm \bound{x14}\free{x10 x11}}
-}
-\xtc{
-Display 4 of them.
-}{
-\spadpaste{fullDisplay(m, 202, 205) \free{x14}}
-}
-\xtc{
-How many distinct names of operations involving matrices are there?
-}{
-\spadpaste{elt(elt(elt(m,name),unique),count) \free{x14}}
-}
-
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug14.ht}
-<<ug14.ht>>=
-\newcommand{\ugBrowseTitle}{Browse}
-\newcommand{\ugBrowseNumber}{14.}
-
-@
-\subsection{14. Browse}
-\label{ugBrowsePage}
-\begin{itemize}
-\item ugBrowseStartPage \ref{ugBrowseStartPage} on
-page~\pageref{ugBrowseStartPage}
-\item ugBrowseDomainPage \ref{ugBrowseDomainPage} on
-page~\pageref{ugBrowseDomainPage}
-\item ugBrowseMiscellaneousFeaturesPage \ref{ugBrowseMiscellaneousFeaturesPage} on
-page~\pageref{ugBrowseMiscellaneousFeaturesPage}
-\end{itemize}
-\index{pages!ugBrowsePage!ug14.ht}
-\index{ug14.ht!pages!ugBrowsePage}
-\index{ugBrowsePage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowsePage}{14. Browse}
-\beginscroll
-
-This chapter discusses the \Browse{}
-component of \HyperName{}.
-We suggest you invoke Axiom and work through this
-chapter, section by section, following our examples to gain some
-familiarity with \Browse{}.
-
+\item \menulispdownlink{Optimization of a Single Multivariate Function}
+{(|annaOpt|)}\space{}\newline
+\indent{6} Finding the minimum of a function in n variables. 
+\newline
+\indent{6} Linear Programming and Quadratic Programming problems.
+\blankline
+\indent{4} 
 \beginmenu
-    \menudownlink{{14.1. The Front Page: Searching the Library}}
-{ugBrowseStartPage}
-    \menudownlink{{14.2. The Constructor Page}}{ugBrowseDomainPage}
-    \menudownlink{{14.3. Miscellaneous Features of Browse}}
-{ugBrowseMiscellaneousFeaturesPage}
+\menudownlink{Examples}{UXANNAOptEx}\newline
+\indent{8} Examples of optimization problems with various constraint features.
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseStartTitle}{The Front Page: Searching the Library}
-\newcommand{\ugBrowseStartNumber}{14.1.}
-
-@
-\subsection{14.1. The Front Page: Searching the Library}
-\label{ugBrowseStartPage}
-\begin{itemize}
-\item ugBrowseCapitalizationConventionPage 
-\ref{ugBrowseCapitalizationConventionPage} on
-page~\pageref{ugBrowseCapitalizationConventionPage}
-\item ugBrowseDomainPage \ref{ugBrowseDomainPage} on
-page~\pageref{ugBrowseDomainPage}
-\item ugBrowseViewsOfConstructorsPage \ref{ugBrowseViewsOfConstructorsPage} on
-page~\pageref{ugBrowseViewsOfConstructorsPage}
-\item ugBrowseViewsOfOperationsPage \ref{ugBrowseViewsOfOperationsPage} on
-page~\pageref{ugBrowseViewsOfOperationsPage}
-\end{itemize}
-\index{pages!ugBrowseStartPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseStartPage}
-\index{ugBrowseStartPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseStartPage}{14.1. The Front Page: Searching the Library}
-\beginscroll
-To enter \Browse{}, click on {\bf Browse} on the top level page
-of \HyperName{} to get the {\it front page} of \Browse{}.
-%
-%324pt is 4.5",180pt is 2.5",432pt is 6"=textwidth,54=(432-324)/2
-%ps files are 4.5"x2.5" except source 4.5"x2.5"
-%
-
-To use this page, you first enter a \spadgloss{search string} into
-the input area at the top, then click on one of the buttons below.
-We show the use of each of the buttons by example.
-
-\subsubsection{Constructors}
-
-First enter the search string {\tt Matrix} into the input area and
-click on {\bf Constructors}.  What you get is the {\it constructor
-page} for \axiomType{Matrix}.  We show and describe this page in
-detail in \downlink{``\ugBrowseDomainTitle''}{ugBrowseDomainPage} in
-Section \ugBrowseDomainNumber\ignore{ugBrowseDomain}.  By convention,
-Axiom does a case-insensitive search for a match.  Thus {\tt matrix}
-is just as good as {\tt Matrix}, has the same effect as {\tt MaTrix},
-and so on.  We recommend that you generally use small letters for
-names however.  A search string with only capital letters has a
-special meaning (see
-\downlink{``\ugBrowseCapitalizationConventionTitle''}
-{ugBrowseCapitalizationConventionPage}
-in Section
-\ugBrowseCapitalizationConventionNumber
-\ignore{ugBrowseCapitalizationConvention}).
-
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-Use the symbol ``{\tt *}'' in search strings as a \spadgloss{wild
-card}.
-A wild card matches any substring, including the empty string.
-For example, enter the search string {\tt *matrix*} into the input
-area and click on {\bf Constructors}.\footnote{To get only
-categories, domains, or packages, rather than all constructors,
-you can click on the corresponding button to the right of {\bf
-Constructors}.}
-What you get is a table of all constructors whose names contain
-the string ``{\tt matrix}.''
-
-All constructors containing the string are listed, whether
-\spadglossSee{exposed}{expose} or \spadglossSee{unexposed}{expose}.
-You can hide the names of the unexposed constructors by clicking on
-the {\it *=}{\bf unexposed} button in the {\it Views} panel at the
-bottom of the window.  (The button will change to {\bf exposed} {\it
-only}.)
-
-One of the names in this table is \axiomType{Matrix}.  Click on
-\axiomType{Matrix}.  What you get is again the constructor page for
-\axiomType{Matrix}.  As you see, \Browse{} gives you a large network
-of information in which there are many ways to reach the same pages.
-
-Again click on the \UpBitmap{} to return to the table of constructors
-whose names contain {\tt matrix}.  Below the table is a {\it Views}
-panel.  This panel contains buttons that let you view constructors in
-different ways.  To learn about views of constructors, skip to
-\downlink{``\ugBrowseViewsOfConstructorsTitle''}
-{ugBrowseViewsOfConstructorsPage}
-in Section
-\ugBrowseViewsOfConstructorsNumber\ignore{ugBrowseViewsOfConstructors}.
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-\subsubsection{Operations}
-
-Enter {\tt *matrix} into the input area and click on {\bf Operations}.
-This time you get a table of {\it operations} whose names end with
-{\tt matrix} or {\tt Matrix}.
-
-
-If you select an operation name, you go to a page describing all the
-operations in Axiom of that name.  At the bottom of an operation page
-is another kind of {\it Views} panel, one for operation pages.  To
-learn more about these views, skip to
-\downlink{``\ugBrowseViewsOfOperationsTitle''}{ugBrowseViewsOfOperationsPage}
-in Section
-\ugBrowseViewsOfOperationsNumber\ignore{ugBrowseViewsOfOperations}.
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-\subsubsection{Attributes}
-
-This button gives you a table of attribute names that match the
-search string. Enter the search string {\tt *} and click on
-{\bf Attributes} to get a list
-of all system attributes.
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-Again there is a {\it Views} panel at the bottom with buttons that let
-you view the attributes in different ways.
-
-\subsubsection{General}
-
-This button does a general search for all constructor, operation, and
-attribute names matching the search string.  Enter the search string
-\allowbreak {\tt *matrix*} into the input area.  Click on {\bf
-General} to find all constructs that have {\tt matrix} as a part of
-their name.
-
-
-The summary gives you all the names under a heading when the number of
-entries is less than 10. 
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-\subsubsection{Documentation}
-
-Again enter the search key {\tt *matrix*} and this time click on
-{\bf Documentation}.
-This search matches any constructor, operation, or attribute
-name whose documentation contains a substring matching {\tt
-matrix}.
-
-
-Click on \UpBitmap{} to return to the \Browse{} front page.
-
-\subsubsection{Complete}
-
-This search combines both {\bf General} and {\bf Documentation}.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseDomainTitle}{The Constructor Page}
-\newcommand{\ugBrowseDomainNumber}{14.2.}
-
-@
-\subsection{14.2. The Constructor Page}
-\label{ugBrowseDomainPage}
-\index{pages!ugBrowseDomainPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseDomainPage}
-\index{ugBrowseDomainPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseDomainPage}{14.2. The Constructor Page}
-\beginscroll
-
-In this section we look in detail at a constructor page for domain
-\axiomType{Matrix}.
-Enter {\tt matrix} into the input area on the main \Browse{} page
-and click on {\bf Constructors}.
-
-
-
-The header part tells you that \axiomType{Matrix} has abbreviation
-\axiomType{MATRIX} and one argument called {\tt R} that must be a
-domain of category \axiomType{Ring}.
-Just what domains can be arguments of \axiomType{Matrix}?
-To find this out, click on the {\tt R} on the second line of the
-heading.
-What you get is a table of all acceptable domain parameter values
-of {\tt R}, or a table of \spadgloss{rings} in Axiom.
-
-
-Click on \UpBitmap{} to return to the constructor page for
-\axiomType{Matrix}.
-\texht{\newpage}{}
-
-If you have access to the source code of Axiom, the third
-line of the heading gives you the name of the source file
-containing the definition of \axiomType{Matrix}.
-Click on it to pop up an editor window containing the source code
-of \axiomType{Matrix}.
-
-
-We recommend that you leave the editor window up while working
-through this chapter as you occasionally may want to refer to it.
-\texht{\newpage}{}
-
+\blankline
+\item \menulispdownlink{Optimization of a set of observations of a data set}
+{(|annaOpt2|)}\space{}\newline
+\indent{6} Least-squares problems.
+\newline
+\indent{6} Checking the goodness of fit of a least-squares model.
+\blankline
+\indent{4} 
 \beginmenu
-    \menudownlink{{14.2.1. Constructor Page Buttons}}{ugBrowseDomainButtonsPage}
-    \menudownlink{{14.2.2. Cross Reference}}{ugBrowseCrossReferencePage}
-    \menudownlink{{14.2.3. Views Of Constructors}}{ugBrowseViewsOfConstructorsPage}
-    \menudownlink{{14.2.4. Giving Parameters to Constructors}}{ugBrowseGivingParametersPage}
+\menudownlink{Examples}{UXANNAOpt2Ex}\newline
+\indent{8} Examples of least squares problems.
+\endmenu
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseDomainButtonsTitle}{Constructor Page Buttons}
-\newcommand{\ugBrowseDomainButtonsNumber}{14.2.1.}
-
-@
-\subsection{14.2.1. Constructor Page Buttons}
-\label{ugBrowseDomainButtonsPage}
-\begin{itemize}
-\item ugBrowseViewsOfOperationsPage \ref{ugBrowseViewsOfOperationsPage} on
-page~\pageref{ugBrowseViewsOfOperationsPage}
-\end{itemize}
-\index{pages!ugBrowseDomainButtonsPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseDomainButtonsPage}
-\index{ugBrowseDomainButtonsPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseDomainButtonsPage}{14.2.1. Constructor Page Buttons}
-\beginscroll
-
-We examine each button on this page in order.
-
-\labelSpace{2pc}
-
-\subsubsection{Description}
-
-Click here to bring up a page with a brief description of
-constructor \axiomType{Matrix}.
-If you have access to system source code, note that these comments
-can be found directly over the constructor definition.
-
-
-\subsubsection{Operations}
-
-Click here to get a table of operations exported by
-\axiomType{Matrix}.
-You may wish to widen the window to have multiple columns as
-below.
-
-
-If you click on an operation name, you bring up a description page for
-the operations.  For a detailed description of these pages, skip to
-\downlink{``\ugBrowseViewsOfOperationsTitle''}{ugBrowseViewsOfOperationsPage}
-in Section
-\ugBrowseViewsOfOperationsNumber\ignore{ugBrowseViewsOfOperations}.
-
-\subsubsection{Attributes}
-
-Click here to get a table of the two attributes exported by
-\axiomType{Matrix}:
-\spadatt{\texht{fi\-nite\-Ag\-gre\-gate}{finiteAggregate}} and 
-\spadatt{shallowlyMutable}.
-These are two computational properties that result from
-\axiomType{Matrix} being regarded as a data structure.
-
-\subsubsection{Examples}
-
-Click here to get an {\it examples page} with examples of operations to
-create and manipulate matrices.
-
-Read through this section.
-Try selecting the various buttons.
-Notice that if you click on an operation name, such as
-\spadfunFrom{new}{Matrix}, you bring up a description page for that
-operation from \axiomType{Matrix}.
-
-Example pages have several examples of Axiom commands.
-Each example has an active button to its left.
-Click on it!
-A pre-computed answer is pasted into the page immediately following the
-command.
-If you click on the button a second time, the answer disappears.
-This button thus acts as a toggle:
-``now you see it; now you don't.''
-
-Note also that the Axiom commands themselves are active.
-If you want to see Axiom execute the command, then click on it!
-A new Axiom window appears on your screen and the command is
-executed.
-
-\httex{At the end of the page is generally a menu of buttons that lead
-you to further sections.
-Select one of these topics to explore its contents.}{}
-
-\subsubsection{Exports}
-
-Click here to see a page describing the exports of \axiomType{Matrix}
-exactly as described by the source code.
-
-
-As you see, \axiomType{Matrix} declares that it exports all the operations
-and attributes exported by category
-\axiomType{MatrixCategory(R, Row, Col)}.
-In addition, two operations, \axiomFun{diagonalMatrix} and
-\axiomFun{inverse}, are explicitly exported.
-
-To learn a little about the structure of Axiom, we suggest you do
-the following exercise.
-Otherwise, click on \UpButton{} and go on to the next section.
-\axiomType{Matrix} explicitly exports only two operations.
-The other operations are thus exports of \axiomType{MatrixCategory}.
-In general, operations are usually not explicitly exported by a domain.
-Typically they are \spadglossSee{inherited}{inherit} from several
-different categories.
-Let's find out from where the operations of \axiomType{Matrix} come.
-
-\indent{4}
-\beginitems
-\item[1. ] Click on {\bf MatrixCategory}, then on {\bf Exports}.
-Here you see that {\bf MatrixCategory} explicitly exports many matrix
-operations.
-Also, it inherits its operations from
-\axiomType{TwoDimensionalArrayCategory}.
-
-\item[2. ] Click on {\bf TwoDimensionalArrayCategory}, then on {\bf Exports}.
-Here you see explicit operations dealing with rows and columns.
-In addition, it inherits operations from
-\axiomType{HomogeneousAggregate}.
-
-%\item Click on {\bf HomogeneousAggregate}, then on {\bf Exports}.
-%And so on.
-%If you continue doing this, eventually you will
-
-\item[3. ] Click on \UpBitmap{} and then
-click on {\bf Object}, then on {\bf Exports}, where you see
-there are no exports.
-
-\item[4. ] Click on \UpBitmap{} repeatedly to return to the constructor page
-for \axiomType{Matrix}.
-
-\enditems
-\indent{0}
-
-\subsubsection{Related Operations}
-
-Click here bringing up a table of operations that are exported by
-\spadglossSee{packages}{package} but not by \axiomType{Matrix} itself.
-
-
-To see a table of such packages, use the {\bf Relatives} button on the
-{\bf Cross Reference} page described next.
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseCrossReferenceTitle}{Cross Reference}
-\newcommand{\ugBrowseCrossReferenceNumber}{14.2.2.}
-
-@
-\subsection{14.2.2. Cross Reference}
-\label{ugBrowseCrossReferencePage}
-\index{pages!ugBrowseCrossReferencePage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseCrossReferencePage}
-\index{ugBrowseCrossReferencePage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseCrossReferencePage}{14.2.2. Cross Reference}
-\beginscroll
-Click on the {\bf Cross Reference} button on the main constructor page
-for \axiomType{Matrix}.
-This gives you a page having various cross reference information stored
-under the respective buttons.
-
-
-\subsubsection{Parents}
-
-The parents of a domain are the same as the categories mentioned under
-the {\bf Exports} button on the first page.
-Domain \axiomType{Matrix} has only one parent but in general a domain can
-have any number.
-
-\subsubsection{Ancestors}
-
-The \spadglossSee{ancestors}{ancestor} of a constructor consist of its parents, the
-parents of its parents, and so on.
-Did you perform the exercise in the last section under {\bf Exports}?
-If so, you  see here all the categories you found while ascending the
-{\bf Exports} chain for \axiomType{Matrix}.
-
-\subsubsection{Relatives}
-
-The \spadglossSee{relatives}{relative} of a domain constructor are package
-constructors that provide operations in addition to those
-\spadglossSee{exported}{export} by the domain.
-
-Try this exercise.
-\indent{4}
-\beginitems
-\item[1. ] Click on {\bf Relatives}, bringing up a list of
-\spadglossSee{packages}{package}.
-
-\item[2. ] Click on {\bf LinearSystemMatrixPackage} bringing up its
-constructor page.\footnote{You may want to widen your \HyperName{}
-window to make what follows more legible.}
-
-\item[3. ] Click on {\bf Operations}.
-Here you see \axiomFun{rank}, an operation also exported by
-\axiomType{Matrix} itself.
-
-\item[4. ] Click on {\bf rank}.
-This \spadfunFrom{rank}{LinearSystemMatrixPackage} has two arguments and
-thus is different from the \spadfunFrom{rank}{Matrix} from
-\axiomType{Matrix}.
-
-\item[5. ] Click on \UpBitmap{} to return to the list of operations for the
-package \axiomType{LinearSystemMatrixPackage}.
-
-\item[6. ] Click on {\bf solve} to bring up a
-\spadfunFrom{solve}{LinearSystemMatrixPackage} for linear systems of
-equations.
-
-\item[7. ] Click on \UpBitmap{} several times to return to the cross
-reference page for \axiomType{Matrix}.
-\enditems
-\indent{0}
-
-\subsubsection{Dependents}
-
-The \spadglossSee{dependents}{dependent} of a constructor are those
-\spadglossSee{domains}{domain} or \spadglossSee{packages}{package}
-that mention that
-constructor either as an argument or in its \spadglossSee{exports}{export}.
-
-If you click on {\bf Dependents} two entries may surprise you:
-\axiomType{RectangularMatrix} and \axiomType{SquareMatrix}.
-This happens because \axiomType{Matrix}, as it turns out, appears in
-signatures of operations exported by these domains.
-
-\subsubsection{Lineage}
-
-The term \spadgloss{lineage} refers to the {\it search order} for
-functions.
-If you are an expert user or curious about how the Axiom system
-works, try the following exercise.
-Otherwise, you best skip this button and go on to {\bf Clients}.
-
-Clicking on {\bf Lineage} gives you a
-list of domain constructors:
-\axiomType{InnerIndexedTwoDimensionalArray},
-\aliascon{MatrixCategory\&}{MATCAT-},
-\aliascon{TwoDimensionalArrayCategory\&}{ARR2CAT-},
-\aliascon{HomogeneousAggregate\&}{HOAGG-},
-\aliascon{Aggregate\&}{AGG-}.
-What are these constructors and how are they used?
-
-We explain by an example.
-Suppose you create a matrix using the interpreter, then ask for its
-\axiomFun{rank}.
-Axiom must then find a function implementing the \axiomFun{rank}
-operation for matrices.
-The first place Axiom looks for \axiomFun{rank} is in the \axiomType{Matrix}
-domain.
-
-If not there, the lineage of \axiomType{Matrix} tells Axiom where
-else to look.
-Associated with the matrix domain are five other lineage domains.
-Their order is important.
-Axiom first searches the first one,
-\axiomType{InnerIndexedTwoDimensionalArray}.
-If not there, it searches the second \aliascon{MatrixCategory\&}{MATCAT-}.
-And so on.
-
-Where do these {\it lineage constructors} come from?
-The source code for \axiomType{Matrix} contains this syntax for the
-\spadgloss{function body} of
-\axiomType{Matrix}:\footnote{\axiomType{InnerIndexedTwoDimensionalArray}
-is a special domain implemented for matrix-like domains to provide
-efficient implementations of \twodim{} arrays.
-For example, domains of category \axiomType{TwoDimensionalArrayCategory}
-can have any integer as their \spad{minIndex}.
-Matrices and other members of this special ``inner'' array have their
-\spad{minIndex} defined as \spad{1}.}
-\begin{verbatim}
-InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col)
-   add ...
-\end{verbatim}
-where the ``{\tt ...}'' denotes all the code that follows.
-In English, this means:
-``The functions for matrices are defined as those from
-\axiomType{InnerIndexedTwoDimensionalArray} domain augmented by those
-defined in `{\tt ...}','' where the latter take precedence.
-
-This explains \axiomType{InnerIndexedTwoDimensionalArray}.
-The other names, those with names ending with an ampersand \axiomSyntax{\&} are
-\spadglossSee{default packages}{default package}
-for categories to which \axiomType{Matrix} belongs.
-Default packages are ordered by the notion of ``closest ancestor.''
-
-\subsubsection{Clients}
-
-A client of \axiomType{Matrix} is any constructor that uses
-\axiomType{Matrix} in its implementation.
-For example, \axiomType{Complex} is a client of \axiomType{Matrix}; it
-exports several operations that take matrices as arguments or return
-matrices as values.\footnote{A constructor is a client of
-\axiomType{Matrix} if it handles any matrix.
-For example, a constructor having internal (unexported) operations
-dealing with matrices is also a client.}
-
-\subsubsection{Benefactors}
-
-A \spadgloss{benefactor} of \axiomType{Matrix} is any constructor that
-\axiomType{Matrix} uses in its implementation.
-This information, like that for clients, is gathered from run-time
-structures.\footnote{The benefactors exclude constructors such as
-\axiomType{PrimitiveArray} whose operations macro-expand and so vanish
-from sight!}
-
-Cross reference pages for categories have some different buttons on
-them.
-Starting with the constructor page of \axiomType{Matrix}, click on
-\axiomType{Ring} producing its constructor page.
-Click on {\bf Cross Reference},
-producing the cross-reference page for \axiomType{Ring}.
-Here are buttons {\bf Parents} and {\bf Ancestors} similar to the notion
-for domains, except for categories the relationship between parent and
-child is defined through \spadgloss{category extension}.
-
-\subsubsection{Children}
-
-Category hierarchies go both ways.
-There are children as well as parents.
-A child can have any number of parents, but always at least one.
-Every category is therefore a descendant of exactly one category:
-\axiomType{Object}.
-
-\subsubsection{Descendants}
-
-These are children, children of children, and so on.
-
-Category hierarchies are complicated by the fact that categories take
-parameters.
-Where a parameterized category fits into a hierarchy {\it may} depend on
-values of its parameters.
-In general, the set of categories in Axiom forms a {\it directed
-acyclic graph}, that is, a graph with directed arcs and no cycles.
-
-\subsubsection{Domains}
-
-This produces a table of all domain constructors that can possibly be
-rings (members of category \axiomType{Ring}).
-Some domains are unconditional rings.
-Others are rings for some parameters and not for others.
-To find out which, select the {\bf conditions} button in the views
-panel.
-For example, \axiomType{DirectProduct(n, R)} is a ring if {\tt R} is a
-ring.
-
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseViewsOfConstructorsTitle}{Views Of Constructors}
-\newcommand{\ugBrowseViewsOfConstructorsNumber}{14.2.3.}
-
-@
-\subsection{14.2.3. Views Of Constructors}
-\label{ugBrowseViewsOfConstructorsPage}
-\index{pages!ugBrowseViewsOfConstructorsPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseViewsOfConstructorsPage}
-\index{ugBrowseViewsOfConstructorsPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseViewsOfConstructorsPage}{14.2.3. Views Of Constructors}
-\beginscroll
-
-Below every constructor table page is a {\it Views} panel.
-As an example, click on {\bf Cross Reference} from
-the constructor page of \axiomType{Matrix},
-then on {\bf Benefactors} to produce a
-short table of constructor names.
-
-The {\it Views} panel is at the bottom of the page.
-Two items, {\it names} and {\it conditions,} are in italics.
-Others are active buttons.
-The active buttons are those that give you useful alternative views
-on this table of constructors.
-Once you select a view, you notice that the button turns
-off (becomes italicized) so that you cannot reselect it.
-
-\subsubsection{names}
-
-This view gives you a table of names.
-Selecting any of these names brings up the constructor page for that
-constructor.
-
-\subsubsection{abbrs}
-
-This view gives you a table of abbreviations, in the same order as the
-original constructor names.
-Abbreviations are in capitals and are limited to 7 characters.
-They can be used interchangeably with constructor names in input areas.
-
-\subsubsection{kinds}
-
-This view organizes constructor names into
-the three kinds: categories, domains and packages.
-
-\subsubsection{files}
-
-This view gives a table of file names for the source
-code of the constructors in alphabetic order after removing
-duplicates.
-
-\subsubsection{parameters}
-
-This view presents constructors with the arguments.
-This view of the benefactors of \axiomType{Matrix} shows that
-\axiomType{Matrix} uses as many as five different \axiomType{List} domains
-in its implementation.
-
-\subsubsection{filter}
-
-This button is used to refine the list of names or abbreviations.
-Starting with the {\it names} view, enter {\tt m*} into the input area
-and click on {\bf filter}.
-You then get a shorter table with only the names beginning with {\tt m}.
-
-\subsubsection{documentation}
-
-This gives you documentation for each of the constructors.
-
-\subsubsection{conditions}
-
-This page organizes the constructors according to predicates.
-The view is not available for your example page since all constructors
-are unconditional.
-For a table with conditions, return to the {\bf Cross Reference} page
-for \axiomType{Matrix}, click on {\bf Ancestors}, then on {\bf
-conditions} in the view panel.
-This page shows you that \axiomType{CoercibleTo(OutputForm)} and
-\axiomType{SetCategory} are ancestors of \axiomType{Matrix(R)} only if {\tt R}
-belongs to category \axiomType{SetCategory}.
-
-%*********************************************************************
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseGivingParametersTitle}{Giving Parameters to Constructors}
-\newcommand{\ugBrowseGivingParametersNumber}{14.2.4.}
-
-@
-\subsection{14.2.4. Giving Parameters to Constructors}
-\label{ugBrowseGivingParametersPage}
-\index{pages!ugBrowseGivingParametersPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseGivingParametersPage}
-\index{ugBrowseGivingParametersPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseGivingParametersPage}
-{14.2.4. Giving Parameters to Constructors}
-\beginscroll
-%*********************************************************************
-
-Notice the input area at the bottom of the constructor page.
-If you leave this blank, then the information you get is for the
-domain constructor \axiomType{Matrix(R)}, that is, \axiomType{Matrix} for an
-arbitrary underlying domain {\tt R}.
-
-In general, however, the exports and other information {\it do} usually
-depend on the actual value of {\tt R}.
-For example, \axiomType{Matrix} exports the \axiomFun{inverse} operation
-only if the domain {\tt R} is a \axiomType{Field}.
-To see this, try this from the main constructor page:
-
-\indent{4}
-\beginitems
-\item[1. ] Enter {\tt Integer} into the input area at the bottom of the page.
-
-\item[2. ] Click on {\bf Operations}, producing a table of operations.
-Note the number of operation names that appear at the top of the
-page.
-
-\item[3. ] Click on \UpBitmap{} to return to the constructor page.
-
-\item[4. ] Use the
-\texht{\fbox{\bf Delete}}{{\bf Delete}}
-or
-\texht{\fbox{\bf Backspace}}{{\bf Backspace}}
-keys to erase {\tt Integer} from the input area.
-
-\item[5. ] Click on {\bf Operations} to produce a new table of operations.
-Look at the number of operations you get.
-This number is greater than what you had before.
-Find, for example, the operation \axiomFun{inverse}.
-
-\item[6. ] Click on {\bf inverse} to produce a page describing the operation
-\axiomFun{inverse}.
-At the bottom of the description, you notice that the {\bf
-Conditions} line says ``{\tt R} has \axiomType{Field}.''
-This operation is {\it not} exported by \axiomType{Matrix(Integer)} since
-\axiomType{Integer} is not a \spadgloss{field}.
-
-Try putting the name of a domain such as \axiomType{Fraction Integer}
-(which is a field) into the input area, then clicking on {\bf Operations}.
-As you see, the operation \axiomFun{inverse} is exported.
-\enditems
 \indent{0}
-
-\endscroll
-\autobuttons
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
 @
-<<ug14.ht>>=
-\newcommand{\ugBrowseMiscellaneousFeaturesTitle}{Miscellaneous Features of Browse}
-\newcommand{\ugBrowseMiscellaneousFeaturesNumber}{14.3.}
-
-@
-\subsection{14.3. Miscellaneous Features of Browse}
-\label{ugBrowseMiscellaneousFeaturesPage}
-\index{pages!ugBrowseMiscellaneousFeaturesPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseMiscellaneousFeaturesPage}
-\index{ugBrowseMiscellaneousFeaturesPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseMiscellaneousFeaturesPage}
-{14.3. Miscellaneous Features of Browse}
-\beginscroll
-\labelSpace{4pc}
+\subsection{Partial Differential Equations}
+\label{UXANNAPde}
+\index{pages!UXANNAPde!annaex.ht}
+\index{annaex.ht!pages!UXANNAPde}
+\index{UXANNAPde!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAPde}{Partial Differential Equations}
+Welcome to the Partial Differential Equations section of {\tt
+\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the
+{\em Axiom/NAG Expert System}.  
+\begin{scroll}
+\indent{2}
 \beginmenu
-    \menudownlink{{14.3.1. The Description Page for Operations}}{ugBrowseDescriptionPagePage}
-    \menudownlink{{14.3.2. Views of Operations}}{ugBrowseViewsOfOperationsPage}
-    \menudownlink{{14.3.3. Capitalization Convention}}{ugBrowseCapitalizationConventionPage}
+\menulispdownlink{Second Order Elliptic Partial Differential Equation}{(|annaPDESolve|)}
+\newline
+\indent{4} Discretizing the PDE:
+\newline
+\centerline{\inputbitmap{\htbmdir{}/d03eef.xbm}}
+defined on a rectangular region with boundary conditions of the form 
+\centerline{\inputbitmap{\htbmdir{}/d03eef1.bitmap}} 
+and solving the resulting
+seven-diagonal finite difference equations using a multigrid technique.
+\blankline
+%\menulispdownlink{Helmholtz Equation in 3-D, Cartesian Coordinates}{(|d03fafVars|)}
+%\newline
+%\indent{4} Descretizing the PDE:
+%\newline
+%\centerline{\inputbitmap{\htbmdir{}/d03faf.xbm}}
+%and solving the resulting
+%seven-diagonal finite difference equations using a method based on the Fast
+%Fourier Transform.
 \endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseDescriptionPageTitle}{The Description Page for Operations}
-\newcommand{\ugBrowseDescriptionPageNumber}{14.3.1.}
-
-@
-\subsection{14.3.1. The Description Page for Operations}
-\label{ugBrowseDescriptionPagePage}
-\index{pages!ugBrowseDescriptionPagePage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseDescriptionPagePage}
-\index{ugBrowseDescriptionPagePage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseDescriptionPagePage}
-{14.3.1. The Description Page for Operations}
-\beginscroll
-From the constructor page of \axiomType{Matrix},
-click on {\bf Operations} to bring up the table of operations
-for \axiomType{Matrix}.
-
-Find the operation {\bf inverse} in the table and click on it.
-This takes you to a page showing the documentation for this operation.
-
-
-Here is the significance of the headings you see.
-
-\subsubsection{Arguments}
-
-This lists each of the arguments of the operation in turn, paraphrasing
-the \spadgloss{signature} of the operation.
-As for signatures, a \axiomSyntax{\$} is used to designate {\em this domain},
-that is, \axiomType{Matrix(R)}.
-
-\subsubsection{Returns}
-
-This describes the return value for the operation, analogous to the {\bf
-Arguments} part.
-
-\subsubsection{Origin}
-
-This tells you which domain or category explicitly exports the
-operation.
-In this example, the domain itself is the {\it Origin}.
-
-
-\subsubsection{Conditions}
-
-This tells you that the operation is exported by \axiomType{Matrix(R)} only if
-``{\tt R} has \axiomType{Field},'' that is, ``{\tt R} is a member of
-category \axiomType{Field}.''
-When no {\bf Conditions} part is given, the operation is exported for
-all values of {\tt R}.
-
-\subsubsection{Description}
-
-Here are the \axiomSyntax{++} comments
-that appear in the source code of its {\it Origin}, here \axiomType{Matrix}.
-You find these comments in the source code for \axiomType{Matrix}.
-
-
-Click on \UpBitmap{} to return to the table of operations.
-Click on {\bf map}.
-Here you find three different operations named \axiomFun{map}.
-This should not surprise you.
-Operations are identified by name and \spadgloss{signature}.
-There are three operations named \axiomFun{map}, each with
-different signatures.
-What you see is the {\it descriptions} view of the operations.
-If you like, select the button in the heading of one of these
-descriptions to get {\it only} that operation.
-
-\subsubsection{Where}
-
-This part qualifies domain parameters mentioned in the arguments to the
-operation.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseViewsOfOperationsTitle}{Views of Operations}
-\newcommand{\ugBrowseViewsOfOperationsNumber}{14.3.2.}
-
-@
-\subsection{14.3.2. Views of Operations}
-\label{ugBrowseViewsOfOperationsPage}
-\index{pages!ugBrowseViewsOfOperationsPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseViewsOfOperationsPage}
-\index{ugBrowseViewsOfOperationsPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseViewsOfOperationsPage}{14.3.2. Views of Operations}
-\beginscroll
-
-We suggest that you go to the constructor page for \axiomType{Matrix}
-and click on {\bf Operations} to bring up a table of operations
-with a {\it Views} panel at the bottom.
-
-\subsubsection{names}
-
-This view lists the names of the operations.
-Unlike constructors, however, there may be several operations with the
-same name.
-The heading for the page tells you the number of unique names and the
-number of distinct operations when these numbers are different.
-
-\subsubsection{filter}
-
-As for constructors, you can use this button to cut down the list of
-operations you are looking at.
-Enter, for example, {\tt m*} into the input area to the right of {\bf
-filter} then click on {\bf filter}.
-As usual, any logical expression is permitted.
-For example, use
-\begin{verbatim}
-*! or *?
-\end{verbatim}
-to get a list of destructive operations and predicates.
-
-\subsubsection{documentation}
-
-This gives you the most information:
-a detailed description of all the operations in the form you have seen
-before.
-Every other button summarizes these operations in some form.
-
-\subsubsection{signatures}
-
-This views the operations by showing their signatures.
-
-\subsubsection{parameters}
-
-This views the operations by their distinct syntactic forms with
-parameters.
-
-\subsubsection{origins}
-
-This organizes the operations according to the constructor that
-explicitly exports them.
-
-\subsubsection{conditions}
-
-This view organizes the operations into conditional and unconditional
-operations.
-
-\subsubsection{usage}
-
-This button is only available if your user-level is set to {\it
-development}.
-The {\bf usage} button produces a table of constructors that reference this
-operation.\footnote{Axiom requires an especially long time to
-produce this table, so anticipate this when requesting this
-information.}
-
-\subsubsection{implementation}
-
-This button is only available if your user-level is set to {\it
-development}.
-If you enter values for all domain parameters on the constructor page,
-then the {\bf implementation} button appears in place of the {\bf
-conditions} button.
-This button tells you what domains or packages actually implement the
-various operations.\footnote{This button often takes a long time; expect
-a delay while you wait for an answer.}
-
-With your user-level set to {\it development}, we suggest you try this
-exercise.
-Return to the main constructor page for \axiomType{Matrix}, then enter
-{\tt Integer} into the input area at the bottom as the value of {\tt R}.
-Then click on {\bf Operations} to produce a table of operations.
-Note that the {\bf conditions} part of the {\it Views} table is
-replaced by {\bf implementation}.
-Click on {\bf implementation}.
-After some delay, you get a page describing what implements each of
-the matrix operations, organized by the various domains and packages.
-
-
-\subsubsection{generalize}
-
-This button only appears for an operation page of a constructor
-involving a unique operation name.
-
-From an operations page for \axiomType{Matrix}, select any
-operation name, say {\bf rank}.
-In the views panel, the {\bf filter} button is  replaced by
-{\bf generalize}.
-Click on it!
-%% Replaced {\bf threshold} with 10 below.  MGR 1995oct31
-What you get is a description of all Axiom operations
-named \axiomFun{rank}.\footnote{If there were more than 10
-operations of the name, you get instead a page
-with a {\it Views} panel at the bottom and the message to {\bf
-Select a view below}.
-To get the descriptions of all these operations as mentioned
-above, select the {\bf description} button.}
-
-\subsubsection{all domains}
-
-This button only appears on an operation page resulting from a
-search from the front page of \Browse{} or from selecting
-{\bf generalize} from an operation page for a constructor.
-
-Note that the {\bf filter} button in the {\it Views} panel is
-replaced by {\bf all domains}.
-Click on it to produce a table of {\it all} domains or packages that
-export a \axiomFun{rank} operation.
-
-
-We note that this table specifically refers to all the \axiomFun{rank}
-operations shown in the preceding page.
-Return to the descriptions of all the \axiomFun{rank} operations and
-select one of them by clicking on the button in its heading.
-Select {\bf all domains}.
-As you see, you have a smaller table of constructors.
-When there is only one constructor, you get the
-constructor page for that constructor.
-\texht{\newpage}{}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug14.ht>>=
-\newcommand{\ugBrowseCapitalizationConventionTitle}{Capitalization Convention}
-\newcommand{\ugBrowseCapitalizationConventionNumber}{14.3.3.}
-
-@
-\subsection{14.3.3. Capitalization Convention}
-\label{ugBrowseCapitalizationConventionPage}
-\index{pages!ugBrowseCapitalizationConventionPage!ug14.ht}
-\index{ug14.ht!pages!ugBrowseCapitalizationConventionPage}
-\index{ugBrowseCapitalizationConventionPage!ug14.ht!pages}
-<<ug14.ht>>=
-\begin{page}{ugBrowseCapitalizationConventionPage}
-{14.3.3. Capitalization Convention}
-\beginscroll
-
-When entering search keys for constructors, you can use capital
-letters to search for abbreviations.
-For example, enter {\tt UTS} into the input area and click on {\bf
-Constructors}.
-Up comes a page describing \axiomType{UnivariateTaylorSeries}
-whose abbreviation is \axiomType{UTS}.
-
-Constructor abbreviations always have three or more capital
-letters.
-For short constructor names (six letters or less), abbreviations
-are not generally helpful as their abbreviation is typically the
-constructor name in capitals.
-For example, the abbreviation for \axiomType{Matrix} is
-\axiomType{MATRIX}.
-
-Abbreviations can also contain numbers.
-For example, \axiomType{POLY2} is the abbreviation for constructor
-\axiomType{PolynomialFunctions2}.
-For default packages, the abbreviation is the same as the
-abbreviation for the corresponding category with the ``\&''
-replaced by ``-''.
-For example, for the category default package
-\aliascon{MatrixCategory\&}{MATCAT-} the abbreviation is
-\axiomType{MATCAT-} since the corresponding category
-\axiomType{MatrixCategory} has abbreviation \axiomType{MATCAT}.
-
-\endscroll
-\autobuttons
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
 @
-\section{ug15.ht}
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewTitle}{What's New in Axiom Version 2.0}
-\newcommand{\ugWhatsNewNumber}{15.}
-
-@
-\subsection{15. What's New in Axiom Version 2.0}
-\label{ugWhatsNewPage}
-\index{pages!ugWhatsNewPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewPage}
-\index{ugWhatsNewPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewPage}{15. What's New in Axiom Version 2.0}
-\beginscroll
-
-Many things have changed in this new version of Axiom and
-we describe many of the more important topics here.
-
-%------------------------------------------------------------------------
+\subsection{Examples Using the Axiom/NAG Expert System}
+\label{UXANNAOptEx}
+\index{pages!UXANNAOptEx!annaex.ht}
+\index{annaex.ht!pages!UXANNAOptEx}
+\index{UXANNAOptEx!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAOptEx}{Examples Using the Axiom/NAG Expert System}
+\begin{scroll}
+Select any of these examples and you will be presented with a page which
+contains active areas for the function and its parameters.
+\blankline
+These parameters can be altered by selecting the area and replacing the
+default parameters by the new values. 
+\blankline
 \beginmenu
-    \menudownlink{{15.1. Important Things to Read First}}{ugWhatsNewImportantPage}
-    \menudownlink{{15.2. The New Axiom Library Compiler}}{ugWhatsNewAsharpPage}
-    \menudownlink{{15.3. The NAG Library Link}}{nagLinkIntroPage}
-    \menudownlink{{15.4. Interactive Front-end and Language}}{ugWhatsNewLanguagePage}
-    \menudownlink{{15.5. Library}}{ugWhatsNewLibraryPage}
-    \menudownlink{{15.6. \HyperName}}{ugWhatsNewHyperDocPage}
-    \menudownlink{{15.7. Documentation}}{ugWhatsNewDocumentationPage}
+\item \menulispdownlink{Example 1: \newline 
+\indent{2} Minimize the function: 
+\centerline{\inputbitmap{\htbmdir{}/opt1.xbm}}}{(|annaOptDefaultSolve1|)}\space{}
+\blankline
+\item \menulispdownlink{Example 2: \newline 
+\indent{2} Minimize the function: 
+\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}{(|annaOptDefaultSolve2|)}\space{}
+\newline \indent{3} With conditions: 
+\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}
+\blankline
+\item \menulispdownlink{Example 3: \newline 
+\indent{2} Minimize the function: 
+\centerline{\inputbitmap{\htbmdir{}/opt3.xbm}}}{(|annaOptDefaultSolve3|)}\space{}
+\newline \indent{3} With conditions: 
+\centerline{\inputbitmap{\htbmdir{}/opt3c1.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt3c2.xbm}}
+\blankline
+\item \menulispdownlink{Example 4: \newline 
+\indent{2} Minimize the function: 
+\centerline{\inputbitmap{\htbmdir{}/opt4.xbm}}
+}{(|annaOptDefaultSolve4|)}\space{}
+\newline \indent{3} With conditions: 
+\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
+\blankline
+\item \menulispdownlink{Example 5: \newline 
+\indent{2} Minimize the function: 
+\centerline{\inputbitmap{\htbmdir{}/opt5.xbm}}
+}{(|annaOptDefaultSolve5|)}\space{}
+\newline \indent{3} With conditions: 
+\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
+\blankline
 \endmenu
-\endscroll
-\autobuttons
+\end{scroll}
+\autobutt{Mainhelp}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewImportantTitle}{Important Things to Read First}
-\newcommand{\ugWhatsNewImportantNumber}{15.1.}
-
-@
-\subsection{15.1. Important Things to Read First}
-\label{ugWhatsNewImportantPage}
-\index{pages!ugWhatsNewImportantPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewImportantPage}
-\index{ugWhatsNewImportantPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewImportantPage}{15.1. Important Things to Read First}
-\beginscroll
-%------------------------------------------------------------------------
-
-If you have any private {\tt .spad} files (that is, library files
-which were not shipped with Axiom) you will need to
-recompile them.  For example, if you wrote the file {\tt
-regress.spad} then you should issue {\tt )compile regress.spad}
-before trying to use it.
-
-The internal representation of \axiomType{Union}  has changed. 
-This means that \texht{\linebreak}{} Axiom data saved 
-with Release 1.x may not
-be readable by this Release. If you cannot recreate the saved data      
-by recomputing in Release 2.0, please contact NAG for assistance.       
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
+\subsection{Examples Using the Axiom/NAG Expert System}
+\label{UXANNAOpt2Ex}
+\index{pages!UXANNAOpt2Ex!annaex.ht}
+\index{annaex.ht!pages!UXANNAOpt2Ex}
+\index{UXANNAOpt2Ex!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAOpt2Ex}{Examples Using the Axiom/NAG Expert System}
+\begin{scroll}
+Select this example and you will be presented with a page which
+contains active areas for the function and its parameters.
+\blankline
+These parameters can be altered by selecting the area and replacing the
+default parameters by the new values. 
+\blankline
+\beginmenu
+\blankline
+\item \menulispdownlink{Example 1: \newline 
+\indent{2} Calculate a least-squares minimization of the following functions: 
+\centerline{\inputbitmap{\htbmdir{}/opt61.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt62.xbm}}
+\centerline{\inputbitmap{\htbmdir{}/opt63.xbm}}}
+{(|annaOpt2DefaultSolve|)}\space{}
+\endmenu
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
-@
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewAsharpTitle}{The New Axiom Library Compiler}
-\newcommand{\ugWhatsNewAsharpNumber}{15.2.}
 
 @
-\subsection{15.2. The New Axiom Library Compiler}
-\label{ugWhatsNewAsharpPage}
-\index{pages!ugWhatsNewAsharpPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewAsharpPage}
-\index{ugWhatsNewAsharpPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewAsharpPage}{15.2. The New Axiom Library Compiler}
-\beginscroll
-%------------------------------------------------------------------------
-
-A new compiler is now available for Axiom.
-The programming language is referred to as the Axiom Extension Language
-(or \axiomxl{} for short), and
-improves upon the old Axiom language in many ways.
-The \spadcmd{)compile} command has been upgraded to be able to
-invoke the new or old compilers.
-The language and the compiler are described in the hard-copy
-documentation which came with your Axiom system.
-
-To ease the chore of upgrading your {\it .spad} files (old
-compiler) to {\it .as} files (new compiler), the
-\spadcmd{)compile} command has been given a {\tt )translate}
-option. This invokes a special version of the old compiler which
-parses and analyzes your old code and produces augmented code
-using the new syntax.
-Please be aware that the translation is not necessarily one
-hundred percent complete or correct.
-You should attempt to compile the output with the \axiomxl{} compiler
-and make any necessary corrections.
-
-
-\endscroll
-\autobuttons
+\subsection{Examples Using the Axiom/NAG Expert System}
+\label{UXANNAIntEx}
+\index{pages!UXANNAIntEx!annaex.ht}
+\index{annaex.ht!pages!UXANNAIntEx}
+\index{UXANNAIntEx!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAIntEx}{Examples Using the Axiom/NAG Expert System}
+\begin{scroll}
+Select any of these examples and you will be presented with a page which
+contains active areas for the function and its parameters.
+\blankline
+These parameters can be altered by selecting the area and replacing the
+default parameters by the new values.  In this way you can investigate the
+effect of the new parameters on the choice of method.
+\blankline
+\beginmenu
+\item \menulispdownlink{Example 1: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}{(|annaFoo|)}\space{}
+\blankline
+\item \menulispdownlink{Example 2: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int2.xbm}}}{(|annaBar|)}\space{}
+\blankline
+\item \menulispdownlink{Example 3: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int3.xbm}}}{(|annaJoe|)}\space{}
+\blankline
+\item \menulispdownlink{Example 4: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int4.xbm}}}{(|annaSue|)}\space{}
+\blankline
+\item \menulispdownlink{Example 5: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int5.xbm}}}{(|annaAnn|)}\space{}
+\blankline
+\item \menulispdownlink{Example 6: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int6.xbm}}}{(|annaBab|)}\space{}
+\blankline
+\item \menulispdownlink{Example 7: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int7.xbm}}}{(|annaFnar|)}\space{}
+\blankline
+\item \menulispdownlink{Example 8: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int8.xbm}}}{(|annaDan|)}\space{}
+\blankline
+\item \menulispdownlink{Example 9: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int9.xbm}}}{(|annaBlah|)}\space{}
+\blankline
+\item \menulispdownlink{Example 10: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int10.xbm}}}{(|annaTub|)}\space{}
+\blankline
+\item \menulispdownlink{Example 11: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int13.xbm}}}{(|annaRats|)}\space{}
+\blankline
+\item \menulispdownlink{Example 12: \newline 
+\centerline{\inputbitmap{\htbmdir{}/int11.xbm}}}{(|annaMInt|)}\space{}
+\endmenu
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\nagLinkIntroTitle}{The NAG Library Link}
-\newcommand{\nagLinkIntroNumber}{15.3.}
-
-@
-\subsection{15.3. The NAG Library Link}
-\label{nagLinkIntroPage}
-\begin{itemize}
-\item htxl1 \ref{htxl1} on
-page~\pageref{htxl1}
-\item nagDocumentationPage \ref{nagDocumentationPage} on
-page~\pageref{nagDocumentationPage}
-\item nagLinkUsagePage \ref{nagLinkUsagePage} on
-page~\pageref{nagLinkUsagePage}
-\item aspSectionPage \ref{aspSectionPage} on
-page~\pageref{aspSectionPage}
-\item generalFortranPage \ref{generalFortranPage} on
-page~\pageref{generalFortranPage}
-\item nagTechnicalPage \ref{nagTechnicalPage} on
-page~\pageref{nagTechnicalPage}
-\end{itemize}
-\index{pages!nagLinkIntroPage!ug15.ht}
-\index{ug15.ht!pages!nagLinkIntroPage}
-\index{nagLinkIntroPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{nagLinkIntroPage}{15.3. The NAG Library Link}
-\beginscroll
-
-The \naglib{} link allows you to call NAG Fortran
-routines from within Axiom, passing Axiom objects as parameters
-and getting them back as results.
-
-The \naglib{} and, consequently, the link are divided into {\em chapters},
-which cover different areas of numerical analysis.  The statistical
-and sorting {\em chapters} of the Library, however, are not included in the
-link and various support and utility routines (mainly the F06 and X
-{\em chapters}) have been omitted.
-
-Each {\em chapter} has a short (at most three-letter) name;
-for example, the {\em chapter} devoted to the
-solution of ordinary differential equations is called D02.  When
-using the link via the \downlink{\HyperName{} interface}{htxl1},
-you will be presented with a complete menu of these {\em chapters}. The
-names of individual routines within each {\em chapter} are formed by
-adding three letters to the {\em chapter} name, so for example the routine
-for solving ODEs by Adams method is called
-\axiomFunFrom{d02cjf}{NagOrdinaryDifferentialEquationsPackage}.
-
+\subsection{Examples Using the Axiom/NAG Expert System}
+\label{UXANNAOdeEx}
+\index{pages!UXANNAOdeEx!annaex.ht}
+\index{annaex.ht!pages!UXANNAOdeEx}
+\index{UXANNAOdeEx!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAOdeEx}{Examples Using the Axiom/NAG Expert System}
+\begin{scroll}
+Analyses the function for various attributes, chooses and 
+then uses a suitable ODE solver to provide a 
+solution to the system of n ODEs \center{\htbitmap{d02gaf},}
+for i = 1,2,...,n.
+\blankline
+Select either of these examples and you will be presented with a page which
+contains active areas for the function and its parameters.
+\blankline
+These parameters can be altered by selecting the area and replacing the
+default parameters by the new values.  In this way you can investigate the
+effect of the new parameters on the choice of method.
+\blankline
 \beginmenu
-    \menudownlink{{15.3.1. Interpreting NAG Documentation}}
-{nagDocumentationPage}
-    \menudownlink{{15.3.2. Using the Link}}{nagLinkUsagePage}
-    \menudownlink{{15.3.3. Providing values for Argument Subprograms}}
-{aspSectionPage}
-    \menudownlink{{15.3.4. General Fortran-generation utilities in Axiom}}
-{generalFortranPage}
-    \menudownlink{{15.3.5. Some technical information}}{nagTechnicalPage}
+\item \menulispdownlink{Example 1: \tab{12}
+\inputbitmap{\htbmdir{}/ode1.xbm}}{(|annaOdeDefaultSolve1|)}
+\blankline with initial conditions: \newline
+\tab{12}\inputbitmap{\htbmdir{}/y1.xbm} \space{1} and \space{1}
+\inputbitmap{\htbmdir{}/x1.xbm}
+\blankline
+\blankline
+\blankline
+\item \menulispdownlink{Example 2: \tab{12}
+\inputbitmap{\htbmdir{}/ode2.xbm}}{(|annaOdeDefaultSolve2|)}
+\blankline with initial conditions: \newline
+\tab{12}\inputbitmap{\htbmdir{}/y2.xbm} \space{1} and \space{1}
+\inputbitmap{\htbmdir{}/x1.xbm}
+\blankline
+\blankline
+\blankline
 \endmenu
-\endscroll
-\autobuttons
+\end{scroll}
+\autobutt{MainHelp}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\nagDocumentationTitle}{Interpreting NAG Documentation}
-\newcommand{\nagDocumentationNumber}{15.3.1.}
-
-@
-\subsection{15.3.1. Interpreting NAG Documentation}
-\label{nagDocumentationPage}
+\subsection{About the Axiom/NAG Expert System}
+\label{UXANNATxt}
 \begin{itemize}
-\item manpageXXintro \ref{manpageXXintro} on
-page~\pageref{manpageXXintro}
-\item manpageXXonline \ref{manpageXXonline} on
-page~\pageref{manpageXXonline}
-\item FoundationLibraryDocPage \ref{FoundationLibraryDocPage} on
-page~\pageref{FoundationLibraryDocPage}
-\item aspSectionPage \ref{aspSectionPage} on
-page~\pageref{aspSectionPage}
+\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
+\item UXANNAIntro \ref{UXANNAIntro} on page~\pageref{UXANNAIntro}
+\item UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
+\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
+\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
 \end{itemize}
-\index{pages!nagDocumentationPage!ug15.ht}
-\index{ug15.ht!pages!nagDocumentationPage}
-\index{nagDocumentationPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{nagDocumentationPage}{15.3.1. Interpreting NAG Documentation}
-\beginscroll
-
-Information about using the \naglib{} in general, and about using
-individual routines in particular, can be accessed via \HyperName{}.
-This documentation refers to the Fortran routines directly; the
-purpose of this subsection is to explain how this corresponds to the
-Axiom routines.
-
-For general information about the \naglib{} users should consult
-\downlink{Essential Introduction to the NAG Foundation Library}
-{manpageXXintro}.
-The documentation is in ASCII format, and a description of the conventions
-used to represent mathematical symbols is given in
-\downlink{Introduction to NAG On-Line Documentation}{manpageXXonline}.
-Advice about choosing a routine from a particular {\em chapter} can 
-be found in the \downlink{Chapter Documents}{FoundationLibraryDocPage}.
-
-\subsubsection{Correspondence Between Fortran and Axiom types}
-
-The NAG documentation refers to the Fortran types of objects; in
-general, the correspondence to Axiom types is as follows.
-\indent{4}
-\beginitems
-\item[-] Fortran INTEGER corresponds to Axiom \axiomType{Integer}.
-\item[-] Fortran DOUBLE PRECISION corresponds to Axiom \axiomType{DoubleFloat}.
-\item[-] Fortran COMPLEX corresponds to Axiom \axiomType{Complex DoubleFloat}.
-\item[-] Fortran LOGICAL corresponds to Axiom \axiomType{Boolean}.
-\item[-] Fortran CHARACTER*(*) corresponds to Axiom \axiomType{String}.
-\enditems
-\indent{0}
-(Exceptionally, for NAG EXTERNAL parameters -- ASPs in link parlance
--- REAL and COMPLEX correspond to \axiomType{MachineFloat} and 
-\axiomType{MachineComplex},
-respectively; see \downlink{``\aspSectionTitle''}{aspSectionPage} 
-in Section \aspSectionNumber\ignore{aspSection}.)
-
-The correspondence for aggregates is as follows.
-\indent{4}
-\beginitems
-\item[-] A one-dimensional Fortran array corresponds to an Axiom 
-\texht{\linebreak}{}
-      \axiomType{Matrix} with one column.
-\item[-] A two-dimensional Fortran ARRAY corresponds to an Axiom 
-\texht{\linebreak}{}
-      \axiomType{Matrix}.
-\item[-] A three-dimensional Fortran ARRAY corresponds to an Axiom 
-\texht{\linebreak}{}
-      \axiomType{ThreeDimensionalMatrix}.
-\enditems
-\indent{0}
-Higher-dimensional arrays are not currently needed for the \naglib{}.
-
-Arguments which are Fortran FUNCTIONs or SUBROUTINEs correspond to
-special ASP domains in Axiom. See
-\downlink{``\aspSectionTitle''}{aspSectionPage} in Section
-\aspSectionNumber\ignore{aspSection}.
-
-\subsubsection{Classification of NAG parameters}
-
-NAG parameters are classified as belonging to one (or more) of the
-following categories: {\tt Input}, {\tt Output}, {\tt Workspace} or
-{\tt External} procedure.  Within {\tt External} procedures a similar
-classification is used, and parameters may also be {\tt Dummies}, or
-{\tt User Workspace} (data structures not used by the NAG routine but
-provided for the convenience of the user).
-
-When calling a NAG routine via the link the user only provides values
-for {\tt Input} and {\tt External} parameters.
-
-The order of the parameters is, in general, different from  the order
-specified in the \naglib{} documentation. The Browser description
-for each routine helps in determining the correspondence. As a rule of
-thumb, {\tt Input} parameters come first followed by {\tt Input/Output}
-parameters. The {\tt External} parameters are always found at the end.
-
-
-\subsubsection{IFAIL}
-
-NAG routines often return diagnostic information through a parameter called
-\axiom{ifail}.  With a few exceptions, the principle is that on input
-\axiom{ifail} takes
-one of the values $-1,0,1$.  This determines how the routine behaves when
-it encounters an error:
-\indent{4}
-\beginitems
-\item[-] a value of 1 causes the NAG routine to return without printing 
-an error message;
-\item[-] a value of 0 causes the NAG routine to print an error message 
-and abort;
-\item[-] a value of -1 causes the NAG routine to return and print an 
-error message.
-\enditems
-\indent{0}
-
-The user is STRONGLY ADVISED to set \axiom{ifail} to \texht{$-1$}{-1}
-when using the link.  If \axiom{ifail} has been set to \texht{$1$}{1}
-or \texht{$-1$}{-1} on input, then its value on output will determine
-the possible cause of any error.  A value of \texht{$0$}{0} indicates
-successful completion, otherwise it provides an index into a table of
-diagnostics provided as part of the routine documentation (accessible
-via \Browse{}).
-
-\endscroll
-\autobuttons
+\index{pages!UXANNATxt!annaex.ht}
+\index{annaex.ht!pages!UXANNATxt}
+\index{UXANNATxt!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNATxt}{About the Axiom/NAG Expert System}
+\begin{scroll}
+\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm} 
+\vspace{-30}\horizontalline
+In applied mathematics, electronic and chemical engineering, the modelling
+process can produce a number of mathematical problems which require numerical
+solutions for which symbolic methods are either not possible or not obvious. 
+With the plethora of numerical library routines for the solution of these
+problems often the numerical analyst has to answer the question {\em Which
+routine to choose?} 
+\blankline
+Some analysis needs to be carried out before the
+appropriate routine can be identified i.e. {\em How stiff is this ODE?} and
+{\em Is this function continuous?}  It may well be the case that more than
+one routine is applicable to the problem.  So the question may become {\em
+Which is likely to be the best?}  Such a choice may be critical for both
+accuracy and efficiency.
+\blankline
+An expert system is thus required to make this choice based on the result of
+its own analysis of the problem, call the routine and act on the outcome. 
+This may be to put the answer in a relevant form or react to an apparent
+failure of the chosen routine and thus choose and call an alternative.  
+It should also have sufficient explanation mechanisms to inform on the choice
+of routine and the reasons for that choice.
+\blankline
+\end{scroll}
+\downlink{ Examples }{UXANNAEx}
+\downlink{ Introduction }{UXANNAIntro}
+\downlink{ Decision Agents }{UXANNADec}
+\downlink{ Inference Mechanisms }{UXANNAInfer}
+\downlink{ Measure Functions }{UXANNAMeas}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\nagLinkUsageTitle}{Using the Link}
-\newcommand{\nagLinkUsageNumber}{15.3.2.}
-
-@
-\subsection{15.3.2. Using the Link}
-\label{nagLinkUsagePage}
+\subsection{Introduction to the Axiom/NAG Expert System}
+\label{UXANNAIntro}
 \begin{itemize}
-\item htxl1 \ref{htxl1} on
-page~\pageref{htxl1}
+\item UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
+\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
+\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
+\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
 \end{itemize}
-\index{pages!nagLinkUsagePage!ug15.ht}
-\index{ug15.ht!pages!nagLinkUsagePage}
-\index{nagLinkUsagePage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{nagLinkUsagePage}{15.3.2. Using the Link}
-\beginscroll
-
-The easiest way to use the link is via the
-\downlink{\HyperName{} interface}{htxl1}.
-You will be presented with a set of fill-in forms where
-you can specify the parameters for each call.  Initially, the forms
-contain example values, demonstrating the use of each routine (these,
-in fact, correspond to the standard NAG example program for the
-routine in question).  For some parameters, these values can provide
-reasonable defaults; others, of course, represent data.  When you
-change a parameter which controls the size of an array, the data in
-that array are reset to a ``neutral'' value -- usually zero.
-
-When you are satisfied with the values entered, clicking on the
-``Continue'' button will display the Axiom command needed to
-run the chosen NAG routine with these values.  Clicking on the
-``Do It'' button will then cause Axiom to execute this command
-and return the result in the parent Axiom session, as described
-below.  Note that, for some routines, multiple HyperDoc ``pages'' are
-required, due to the structure of the data.  For these, returning to
-an earlier page causes HyperDoc to reset the later pages (this is a
-general feature of HyperDoc); in such a case, the simplest way to
-repeat a call, varying a parameter on an earlier page, is probably to
-modify the call displayed in the parent session.
-
-An alternative approach is to call NAG routines directly in your
-normal Axiom session (that is, using the Axiom
-interpreter).  Such calls return an
-object of type \axiomType{Result}.  As not
-all parameters in the underlying NAG routine are required in the
-Axiom call (and the parameter ordering may be different), before
-calling a NAG routine you should consult the description of the
-Axiom operation in the Browser.  (The quickest route to this
-is to type the routine name, in lower case, into the Browser's
-input area, then click on {\tt Operations}.)  The parameter names
-used coincide with NAG's, although they will appear here in lower
-case.  Of course, it is also possible to become familiar with the
-Axiom form of a routine by first using it through the
-\downlink{\HyperName{} interface}{htxl1}.
-
-\xtc{
-As an example of this mode of working, we can find a zero
-of a function, lying between 3 and 4, as follows:
-}{
-\spadpaste{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer} }
-}
-\xtc{
-By default, \axiomType{Result} only displays the type of returned values,
-since the amount of information returned can be quite large.  Individual
-components can be examined as follows:
-}{
-\spadpaste{answer . x\free{answer}}
-}
-\xtc{
-}{
-\spadpaste{answer . ifail\free{answer}}
-}
-\xtc{
-In order to avoid conflict with names defined in the workspace, you can also
-get the values by using the \axiomType{String} type (the interpreter automatically
-coerces them to \axiomType{Symbol})
-}{
-\spadpaste{answer "x"\free{answer}}
-}
-
-
-It is possible to have Axiom display the values of scalar or array
-results automatically.  For more details, see the commands  
-\axiomFunFrom{showScalarValues}{Result}
-and \axiomFunFrom{showArrayValues}{Result}.
-
-\xtc{
-There is also a {\bf .input} file for each NAG routine, containing
-Axiom interpreter commands to set up and run the standard NAG
-example for that routine.
-}{
-\spadpaste{)read c05adf.input}
-}
-
-\endscroll
+\index{pages!UXANNAIntro!annaex.ht}
+\index{annaex.ht!pages!UXANNAIntro}
+\index{UXANNAIntro!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAIntro}{Introduction to the Axiom/NAG Expert System}
+\begin{scroll}
+\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm}
+\vspace{-30}\horizontalline
+Deciding amongst, and then implementing, several possible approaches to
+solving a numerical problem can be daunting for a novice user, or tedious for
+an expert.  Different attributes of the problem need to be
+identified and their possible interactions weighed up before a final decision
+about which method to use can be made. 
+\blankline
+The implementation is then largely an
+automatic, if laborious, process of writing, compiling and linking usually
+Fortran code.  The aim is to build an expert system which will use computer
+algebra to analyse such features of a problem, inference mechanisms and a
+knowledge base to choose a numerical method appropriate to the solution of a
+given problem.  
+\blankline
+Any interactive system is constrained by the need to provide a reasonable
+response time for the user.  Given the complexity of some of the analysis our
+system will need to do, it is clear that we should only aim to select a good
+method, rather than try to identify the best one available.  The overall goal
+is to provide a ``black-box'' interface to numerical software which allows
+non-experts access to its full potential.  It will also provide explanation
+mechanisms commensurate with its role as a teaching aid.
+\blankline
+Given, say, an integration to perform (which may or may not be able to be
+handled symbolically), the system should choose and apply an appropriate
+method, thus mirroring as closely as possible the way that an experienced
+numerical analyst would think so, for example, given an integration to
+perform:\newline
+{\it \centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
+\newline
+the experienced analyst would see that the integral is semi-infinite and
+transform it by splitting the range and transforming the integral over {\it
+[1,\inputbitmap{\htbmdir{}/infty.xbm}]} into an integral over 
+{\it [0,1] } using the transformation {\it x -> 1/t}.  
+A different numerical routine might be used over each
+sub-region and the results added to give the final answer. 
+\blankline
+It then requires
+the translation of the problem into Fortran code which may be extensive.
+Even with this simple example, the process is quite involved.
+\blankline
+\end{scroll}
 \autobuttons
+\downlink{ Decision Agents }{UXANNADec}
+\downlink{ Inference Mechanisms }{UXANNAInfer}
+\downlink{ Method Domains }{UXANNAMeth}
+\downlink{ Measure Functions }{UXANNAMeas}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\aspSectionTitle}{Providing values for Argument Subprograms}
-\newcommand{\aspSectionNumber}{15.3.3.}
-
-@
-\subsection{15.3.3. Providing values for Argument Subprograms}
-\label{aspSectionPage}
-\begin{itemize}
-\item generalFortranPage \ref{generalFortranPage} on
-page~\pageref{generalFortranPage}
-\end{itemize}
-\index{pages!aspSectionPage!ug15.ht}
-\index{ug15.ht!pages!aspSectionPage}
-\index{aspSectionPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{aspSectionPage}{15.3.3. Providing values for Argument Subprograms}
-\beginscroll
-
-There are a number of ways in which users can provide values for argument
-subprograms (ASPs).  At the top level the user will see that NAG routines
-require
-an object from the \axiomType{Union} of a \axiomType{Filename} and an ASP.
+\subsection{Example using the Axiom/NAG Expert System}
+\label{UXANNAEx}
+See UXANNAEx2 \ref{UXANNAEx2} on page~\pageref{UXANNAEx2}
+\index{pages!UXANNAEx!annaex.ht}
+\index{annaex.ht!pages!UXANNAEx}
+\index{UXANNAEx!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAEx}{Example using the Axiom/NAG Expert System}
+\begin{scroll}
 \xtc{
-For example \axiomFun{c05adf} requires an object of type \texht{\linebreak}{}
-\axiomType{Union}(fn: \axiomType{FileName},fp: \axiomType{Asp1 F})
-}{
-\spadpaste{)display operation c05adf}
-}
-
-The user thus has a choice of providing the name of a file containing
-Fortran source code, or of somehow generating the ASP within Axiom.
-If a filename is specified, it is searched for in the {\it local} 
-machine, i.e., the machine that Axiom is running on.
-
-\subsubsection{Providing ASPs via \axiomType{FortranExpression}}
-
-The \axiomType{FortranExpression} domain is used to represent expressions
-which can be translated into Fortran under certain circumstances.    It is
-very similar to \axiomType{Expression} except that only operators which exist
-in Fortran can be used, and only certain variables can occur.
-For
-example the instantiation \axiomType{FortranExpression([X],[M],MachineFloat)}
-is the domain of expressions containing the scalar \axiom{X} and the array
-\axiom{M}.
+{\bf Example 1}: The integral
+{\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
+\newline
+is performed as follows:
+\blankline
+}{}
 \xtc{
-This allows us to create expressions like:
 }{
-\spadpaste{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
+\spadpaste{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans} }
 }
+\blankline
 \xtc{
-but not
+It creates a composite structure for which the field containing the result can be 
+expanded as required.\blankline
 }{
-\spadpaste{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
+\spadpaste{ans . 'result\free{ans}}
 }
-
-Those ASPs which represent expressions usually export a \axiomFun{coerce} from
-an appropriate instantiation of \axiomType{FortranExpression} (or perhaps
-\axiomType{Vector FortranExpression} etc.).  For convenience there are also
-retractions from appropriate instantiations of \axiomType{Expression},
-\axiomType{Polynomial} and \axiomType{Fraction Polynomial}.
-
-\subsubsection{Providing ASPs via \axiomType{FortranCode}}
-
-\texht{\exptypeindex{FortranCode}}{} \axiomType{FortranCode} allows us
-to build arbitrarily complex ASPs via a kind of pseudo-code.  It is
-described fully in
-\downlink{``\generalFortranTitle''}{generalFortranPage} in Section
-\generalFortranNumber\ignore{generalFortran}.
-
-Every ASP exports two \axiomFun{coerce} functions: one from
-\axiomType{FortranCode} and one from \axiomType{List FortranCode}.
-There is also a \axiomFun{coerce} from \texht{\linebreak}{}
-\axiomType{Record( localSymbols: SymbolTable, code: List FortranCode)}
-which is used for passing extra symbol information about the ASP.
-
+\blankline
 \xtc{
-So for example, to integrate the function abs(x) we could use the built-in
-\axiomFun{abs} function.  But suppose we want to get back to basics and define
-it directly, then we could do the following:
 }{
-\spadpaste{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result }
+\spadpaste{ans . 'abserr\free{ans}}
 }
-The \axiomFunFrom{cond}{FortranCode} operation creates a conditional clause
-and the \axiomFunFrom{assign}{FortranCode} an assignment statement.
-
-\subsubsection{Providing ASPs via \axiomType{FileName}}
-
-Suppose we have created the file ``asp.f'' as follows:
-\begin{verbatim}
-      DOUBLE PRECISION FUNCTION F(X)
-      DOUBLE PRECISION X
-      F=4.0D0/(X*X+1.0D0)
-      RETURN
-      END
-\end{verbatim}
-and wish to pass it to the NAG
-routine \axiomFun{d01ajf} which performs one-dimensional quadrature.
-We can do this as follows:
-\begin{verbatim}
-d01ajf(0.0 ,1.0, 0.0, 1.0e-5, 800, 200, -1, "asp.f")
-\end{verbatim}
-
-\endscroll
+\blankline
+This system has performed the analysis described above, done the necessary
+problem transformation, written any necessary Fortran, called two different
+numerical routines, and amalgamated their
+results.  This whole process was transparent to the user.
+\end{scroll}
 \autobuttons
+\downlink{Example 2}{UXANNAEx2}
+%\downlink{Decision Agents}{UXANNADec}
 \end{page}
 
 @
-<<ug15.ht>>=
-\newcommand{\generalFortranTitle}{General Fortran-generation utilities in Axiom}
-\newcommand{\generalFortranNumber}{15.3.4.}
-
-@
-\subsection{15.3.4. General Fortran-generation utilities in Axiom}
-\label{generalFortranPage}
-\index{pages!generalFortranPage!ug15.ht}
-\index{ug15.ht!pages!generalFortranPage}
-\index{generalFortranPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{generalFortranPage}
-{15.3.4. General Fortran-generation utilities in Axiom}
-\beginscroll
-
-This section describes more advanced facilities which are available to users
-who wish to generate Fortran code from within Axiom.  There are
-facilities to manipulate templates, store type information, and generate
-code fragments or complete programs.
-
-\subsubsection{Template Manipulation}
-
-A template is a skeletal program which is ``fleshed out'' with data when
-it is processed.  It is a sequence of {\em active} and {\em passive} parts:
-active parts are sequences of Axiom commands which are processed as if they
-had been typed into the interpreter; passive parts are simply echoed
-verbatim on the Fortran output stream.
-
-Suppose, for example, that we have the following template, stored in
-the file ``test.tem'':
-\begin{verbatim}
--- A simple template
-beginVerbatim
-      DOUBLE PRECISION FUNCTION F(X)
-      DOUBLE PRECISION X
-endVerbatim
-outputAsFortran("F",f)
-beginVerbatim
-      RETURN
-      END
-endVerbatim
-\end{verbatim}
-The passive parts lie between the two
-tokens {\tt beginVerbatim} and \texht{\linebreak}{} {\tt endVerbatim}.  There
-are two active statements: one which is simply an Axiom (
-\texht{\verb+--+}{\-\-})
-comment, and one which produces an assignment to the current value
-of {\tt f}.  We could use it as follows:
-\begin{verbatim}
-(4) ->f := 4.0/(1+X**2)
-
-           4
-   (4)   ------
-          2
-         X  + 1
-                       
-(5) ->processTemplate "test.tem"
-      DOUBLE PRECISION FUNCTION F(X)
-      DOUBLE PRECISION X
-      F=4.0D0/(X*X+1.0D0)
-      RETURN 
-      END
-
-   (5)  "CONSOLE"
-\end{verbatim}
-
-(A more reliable method of specifying the filename will be introduced
-below.)  Note that the Fortran assignment {\tt F=4.0D0/(X*X+1.0D0)}
-automatically converted 4.0 and 1 into DOUBLE PRECISION numbers; in
-general, the Axiom Fortran generation facility will convert
-anything which should be a floating point object into either
-a Fortran REAL or DOUBLE PRECISION object.
-\xtc{
-Which alternative is used is determined by the command
-}{
-\spadpaste{)set fortran precision}
-}
-
-It is sometimes useful to end a template before the file itself ends (e.g. to
-allow the template to be tested incrementally or so that a piece of text
-describing how the template works can be included).  It is of course possible
-to ``comment-out'' the remainder of the file.  Alternatively, the single token
-{\tt endInput} as part of an active portion of the template will cause
-processing to be ended prematurely at that point.
-
-The \axiomFun{processTemplate} command comes in two flavours.  In the first case,
-illustrated above, it takes one argument of domain \axiomType{FileName},
-the name of the template to be processed, and writes its output on the
-current Fortran output stream.  In general, a filename can be generated
-from {\em directory}, {\em name} and {\em extension} components, using
-the operation \axiomFun{filename}, as in
-\begin{verbatim}
-processTemplate filename("","test","tem")
-\end{verbatim}
-There is an alternative version of \axiomFun{processTemplate}, which
-takes two arguments (both of domain \axiomType{FileName}).  In this case the
-first argument is the name of the template to be processed, and the
-second is the file in which to write the results.  Both versions return
-the location of the generated Fortran code as their result
-({\tt "CONSOLE"} in the above example).
-
-It is sometimes useful to be able to mix active and passive parts of a
-line or statement.  For example you might want to generate a Fortran
-Comment describing your data set.  For this kind of application we
-provide three functions as follows:
-\texht
-{
-\begin{tabular}{p{1.8in}p{2.6in}}
-\axiomFun{fortranLiteral} & writes a string on the Fortran output stream \\
- & \\
-\axiomFun{fortranCarriageReturn} & writes a carriage return on the Fortran output stream \\
-& \\
-\axiomFun{fortranLiteralLine} & writes a string followed by a return
-on the Fortran output stream \\
-\end{tabular}
-}
-{
-\newline
-\axiomFun{fortranLiteral}\tab{25}writes a string on the Fortran output stream\newline
-\axiomFun{fortranCarriageReturn}\tab{25}writes a carriage return on the Fortran output stream\newline
-\axiomFun{fortranLiteralLine}\tab{25}writes a string followed by a return on the Fortran output stream\newline
-}
-\xtc{
-So we could create our comment as follows:
-}{
-\spadpaste{m := matrix [[1,2,3],[4,5,6]]\bound{m}}
-}
-\xtc{
-}{
-\spadpaste{fortranLiteralLine concat ["C\ \ \ \ \ \ The\ Matrix\ has\ ", nrows(m)::String, "\ rows\ and\ ", ncols(m)::String, "\ columns"]\free{m}}
-}
-\xtc{
-or, alternatively:
-}{
-\spadpaste{fortranLiteral "C\ \ \ \ \ \ The\ Matrix\ has\ "}
-}
-\xtc{
-}{
-\spadpaste{fortranLiteral(nrows(m)::String)}
-}
-\xtc{
-}{
-\spadpaste{fortranLiteral "\ rows\ and\ "}
-}
-\xtc{
-}{
-\spadpaste{fortranLiteral(ncols(m)::String)\free{m}}
-}
-\xtc{
-}{
-\spadpaste{fortranLiteral "\ columns"}
-}
-\xtc{
-}{
-\spadpaste{fortranCarriageReturn()}
-}
-
-We should stress that these functions, together with the \axiomFun{outputAsFortran}
-function are the {\em only} sure ways
-of getting output to appear on the Fortran output stream.  Attempts to use
-Axiom commands such as \axiomFun{output} or \axiomFunX{writeline} may appear to give
-the required result when displayed on the console, but will give the wrong
-result when Fortran and algebraic output are sent to differing locations.  On
-the other hand, these functions can be used to send helpful messages to the
-user, without interfering with the generated Fortran.
-
-\subsubsection{Manipulating the Fortran Output Stream}
-\texht{\exptypeindex{FortranOutputStackPackage}}{}
-
-Sometimes it is useful to manipulate the Fortran output stream in a program,
-possibly without being aware of its current value.  The main use of this is
-for gathering type declarations (see ``Fortran Types'' below) but it can be useful
-in other contexts as well.  Thus we provide a set of commands to manipulate
-a stack of (open) output streams.  Only one stream can be written to at
-any given time.  The stack is never empty---its initial value is the
-console or the current value of the Fortran output stream, and can be
-determined using
-\xtc{
-}{
-\spadpaste{topFortranOutputStack()}
-}
-(see below).
-The commands available to manipulate the stack are:
-\texht{
-\begin{tabular}{ll}
-\axiomFun{clearFortranOutputStack} & resets the stack to the console \\
- & \\
-\axiomFun{pushFortranOutputStack} & pushes a \axiomType{FileName} onto the stack \\
- & \\
-\axiomFun{popFortranOutputStack} & pops the stack \\
- & \\
-\axiomFun{showFortranOutputStack} & returns the current stack \\
- & \\
-\axiomFun{topFortranOutputStack} & returns the top element of the stack \\
-\end{tabular}
-}
-{
-\newline
-\axiomFun{clearFortranOutputStack}\tab{25}resets the stack\newline
-\axiomFun{pushFortranOutputStack}\tab{25}pushes a \axiomType{FileName} onto the stack\newline
-\axiomFun{popFortranOutputStack}\tab{25}pops the stack\newline
-\axiomFun{showFortranOutputStack}\tab{25}returns the current stack\newline
-\axiomFun{topFortranOutputStack}\tab{25}returns the top element of the stack\newline
-}
-These commands are all part of \axiomType{FortranOutputStackPackage}.
-
-\subsubsection{Fortran Types}
-
-When generating code it is important to keep track of the Fortran types of
-the objects which we are generating.  This is useful for a number of reasons,
-not least to ensure that we are actually generating legal Fortran code.  The
-current type system is built up in several layers, and we shall describe each
-in turn.
-
-\subsubsection{FortranScalarType}
-\texht{\exptypeindex{FortranScalarType}}{}
-
-This domain represents the simple Fortran datatypes: REAL, DOUBLE PRECISION,
-COMPLEX, LOGICAL, INTEGER, and CHARACTER.
-It is possible to \axiomFun{coerce} a \axiomType{String} or \axiomType{Symbol}
-into the domain, test whether two objects are equal, and also apply
-the predicate functions \axiomFunFrom{real?}{FortranScalarType} etc.
-
-\subsubsection{FortranType}
-\texht{\exptypeindex{FortranType}}{}
-
-This domain represents ``full'' types: i.e., datatype plus array dimensions
-(where appropriate) plus whether or not the parameter is an external
-subprogram.  It is possible to \axiomFun{coerce} an object of
-\axiomType{FortranScalarType} into the domain or \axiomFun{construct} one
-from an element of \axiomType{FortranScalarType}, a list of
-\axiomType{Polynomial Integer}s (which can of course be simple integers or
-symbols) representing its dimensions, and
-a \axiomType{Boolean} declaring whether it is external or not.  The list
-of dimensions must be empty if the \axiomType{Boolean} is {\tt true}.
-The functions \axiomFun{scalarTypeOf}, \axiomFun{dimensionsOf} and
-\axiomFun{external?} return the appropriate
-parts, and it is possible to get the various basic Fortran Types via
-functions like \axiomFun{fortranReal}.
-\xtc{
-For example:
-}{
-\spadpaste{type:=construct(real,[i,10],false)$FortranType}
-}
-\xtc{
-or
-}{
-\spadpaste{type:=[real,[i,10],false]$FortranType\bound{type}}
-}
-\xtc{
-}{
-\spadpaste{scalarTypeOf type\free{type}}
-}
-\xtc{
-}{
-\spadpaste{dimensionsOf type\free{type}}
-}
-\xtc{
-}{
-\spadpaste{external?  type\free{type}}
-}
-\xtc{
-}{
-\spadpaste{fortranLogical()}
-}
+\subsection{Example using the Axiom/NAG Expert System}
+\label{UXANNAEx2}
+See UXANNAEx3 \ref{UXANNAEx3} on page~\pageref{UXANNAEx3}
+\index{pages!UXANNAEx2!annaex.ht}
+\index{annaex.ht!pages!UXANNAEx2}
+\index{UXANNAEx2!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAEx2}{Example using the Axiom/NAG Expert System}
+\begin{scroll}
 \xtc{
-}{
-\spadpaste{construct(integer,[],true)$FortranType}
-}
-
-\subsubsection{SymbolTable}
-\texht{\exptypeindex{SymbolTable}}{}
-
-This domain creates and manipulates a symbol table for generated Fortran code.
-This is used by \axiomType{FortranProgram} to represent the types of objects in
-a subprogram.  The commands available are:
-\texht{
-\begin{tabular}{ll}
-\axiomFun{empty} & creates a new \axiomType{SymbolTable} \\
- & \\
-\axiomFunX{declare} & creates a new entry in a table \\
- & \\
-\axiomFun{fortranTypeOf} & returns the type of an object in a table \\
- & \\
-\axiomFun{parametersOf} & returns a list of all the symbols in the table \\
- & \\
-\axiomFun{typeList} & returns a list of all objects of a given type \\
- & \\
-\axiomFun{typeLists} & returns a list of lists of all objects sorted by type \\
- & \\
-\axiomFun{externalList} & returns a list of all {\tt EXTERNAL} objects \\
- & \\
-\axiomFun{printTypes} & produces Fortran type declarations from a table\\
-\end{tabular}
-}
-{
+{\bf Example 2}: The ODE
+{\centerline{\inputbitmap{\htbmdir{}/ode3.xbm}\space{1}with
+\space{1}
+{\inputbitmap{\htbmdir{}/y3.xbm}}}}
 \newline
-\axiomFun{empty}\tab{25}creates a new \axiomType{SymbolTable}\newline
-\axiomFunX{declare}\tab{25}creates a new entry in a table \newline
-\axiomFun{fortranTypeOf}\tab{25}returns the type of an object in a table \newline
-\axiomFun{parametersOf}\tab{25}returns a list of all the symbols in the table \newline
-\axiomFun{typeList}\tab{25}returns a list of all objects of a given type \newline
-\axiomFun{typeLists}\tab{25}returns a list of lists of all objects sorted by type \newline
-\axiomFun{externalList}\tab{25}returns a list of all {\tt EXTERNAL} objects \newline
-\axiomFun{printTypes}\tab{25}produces Fortran type declarations from a table\newline
-}
-\xtc{
-}{
-\spadpaste{symbols := empty()$SymbolTable\bound{symbols}}
-}
-\xtc{
-}{
-\spadpaste{declare!(X,fortranReal(),symbols)\free{symbols}}
-}
-\xtc{
-}{
-\spadpaste{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols}}
-}
-\xtc{
-}{
-\spadpaste{declare!([i,j],fortranInteger(),symbols)\free{symbols}}
-}
-\xtc{
-}{
-\spadpaste{symbols\free{symbols}}
-}
+could be solved as follows:
+\blankline
+}{}
 \xtc{
 }{
-\spadpaste{fortranTypeOf(i,symbols)\free{symbols}}
+\spadpaste{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0,
+[1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2} }
 }
+\blankline
 \xtc{
+It creates a composite structure for which the field containing the result can be 
+expanded as required.\blankline
 }{
-\spadpaste{typeList(real,symbols)\free{symbols}}
+\spadpaste{ans2 . 'result\free{ans2}}
 }
+\blankline
 \xtc{
 }{
-\spadpaste{printTypes symbols\free{symbols}}
+\spadpaste{ans2 . 'y\free{ans2}}
 }
+\blankline
+\end{scroll}
+\autobuttons
+\downlink{Example 3}{UXANNAEx3}
+%\downlink{Decision Agents}{UXANNADec}
+\end{page}
 
-\subsubsection{TheSymbolTable}
-\texht{\exptypeindex{TheSymbolTable}}{}
-
-This domain creates and manipulates one global symbol table to be used, for
-example, during template processing. It is
-also used when
-linking to external Fortran routines. The
-information stored for each subprogram (and the main program segment, where
-relevant) is:
-\indent{4}
-\beginitems
-\item[-] its name;
-\item[-] its return type;
-\item[-] its argument list;
-\item[-] and its argument types.
-\enditems
-\indent{0}
-Initially, any information provided is deemed to be for the main program
-segment.
-\xtc{
-Issuing the following command indicates that from now on all information
-refers to the subprogram \axiom{F}.
-}{
-\spadpaste{newSubProgram F}
-}
-\xtc{
-It is possible to return to processing the main program segment by issuing
-the command:
-}{
-\spadpaste{endSubProgram()}
-}
-The following commands exist:
-\texht{
-\begin{tabular}{p{1.6in}p{2.8in}}
-\axiomFunX{returnType} & declares the return type of the current subprogram \\
- & \\
-\axiomFun{returnTypeOf} & returns the return type of a subprogram \\
- & \\
-\axiomFunX{argumentList} &  declares the argument list of the current subprogram \\
- & \\
-\axiomFun{argumentListOf} &  returns the argument list of a subprogram \\
- & \\
-\axiomFunX{declare} & provides type declarations for parameters of the current subprogram \\
- & \\
-\axiomFun{symbolTableOf} & returns the symbol table  of a subprogram \\
- & \\
-\axiomFun{printHeader} & produces the Fortran header for the current subprogram \\
-\end{tabular}
-}
-{
-\newline
-\axiomFunX{returnType}\tab{25}declares the return type of the current subprogram \newline
-\axiomFun{returnTypeOf}\tab{25}returns the return type of a subprogram \newline
-\axiomFunX{argumentList}\tab{25}declares the argument list of the current subprogram \newline
-\axiomFun{argumentListOf}\tab{25}returns the argument list of a subprogram \newline
-\axiomFunX{declare}\tab{25}provides type declarations for parameters of the current subprogram \newline
-\axiomFun{symbolTableOf}\tab{25}returns the symbol table  of a subprogram \newline
-\axiomFun{printHeader}\tab{25}produce the Fortran header for the current subprogram \newline
-}
-In addition there are versions of these commands which are parameterised by
-the name of a subprogram, and others parameterised by both the name of a
-subprogram and by an instance of \axiomType{TheSymbolTable}.
-\xtc{
-}{
-\spadpaste{newSubProgram F \bound{forPleasure}}
-}
-\xtc{
-}{
-\spadpaste{argumentList!(F,[X])\free{forPleasure}}
-}
-\xtc{
-}{
-\spadpaste{returnType!(F,real)\free{forPleasure}}
-}
-\xtc{
-}{
-\spadpaste{declare!(X,fortranReal(),F)\free{forPleasure}}
-}
+@
+\subsection{Example using the Axiom/NAG Expert System}
+\label{UXANNAEx3}
+See UXANNADec \ref{UXANNADec} on page~\pageref{UXANNADec}
+\index{pages!UXANNAEx3!annaex.ht}
+\index{annaex.ht!pages!UXANNAEx3}
+\index{UXANNAEx3!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAEx3}{Example using the Axiom/NAG Expert System}
+\begin{scroll}
 \xtc{
-}{
-\spadpaste{printHeader F\free{forPleasure}}
-}
-
-\subsubsection{Advanced Fortran Code Generation}
-
-This section describes facilities for representing Fortran statements, and
-building up complete subprograms from them.
-
-\subsubsection{Switch}
-\texht{\exptypeindex{Switch}}{}
-
-This domain is used to represent statements like {\tt x < y}.  Although
-these can be represented directly in Axiom, it is a little cumbersome,
-since Axiom evaluates the last statement, for example, to \axiom{true}
-(since \axiom{x} is  lexicographically less than \axiom{y}).
-
-Instead we have a set of operations, such as \axiomFun{LT} to represent \axiom{<},
-to let us build such statements.  The available constructors are:
-\texht{
-\centerline{{\begin{tabular}{ll}}}
-\centerline{{\axiomFun{LT} & $<$ }}
-\centerline{{\axiomFun{GT} & $>$ }}
-\centerline{{\axiomFun{LE} & $\leq$ }}
-\centerline{{\axiomFun{GE} & $\geq$ }}
-\centerline{{\axiomFun{EQ} & $=$ }}
-\centerline{{\axiomFun{AND} & $and$}}
-\centerline{{\axiomFun{OR} & $or$ }}
-\centerline{{\axiomFun{NOT} & $not$ }}
-\centerline{{\end{tabular}}}
-}
-{
+{\bf Example 3}: The function
+{\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}
+with simple bounds
+{\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}}
 \newline
-\axiomFun{LT}\tab{25}\texht{$<$}{<} \newline
-\axiomFun{GT}\tab{25}\texht{$>$}{>} \newline
-\axiomFun{LE}\tab{25}\texht{$\leq$}{<=} \newline
-\axiomFun{GE}\tab{25}\texht{$\geq$}{>=} \newline
-\axiomFun{EQ}\tab{25}\texht{$=$}{=} \newline
-\axiomFun{AND}\tab{25}\texht{$and$}{{\tt and}}\newline
-\axiomFun{OR}\tab{25}\texht{$or$}{{\tt or}} \newline
-\axiomFun{NOT}\tab{25}\texht{$not$}{{\tt not}} \newline
-}
-\xtc{
-So for example:
-}{
-\spadpaste{LT(x,y)}
-}
-
-\subsubsection{FortranCode}
-
-This domain represents code segments or operations: currently assignments,
-conditionals, blocks, comments, gotos, continues, various kinds of loops,
-and return statements.
-\xtc{
-For example we can create quite a complicated conditional statement using
-assignments, and then turn it into Fortran code:
-}{
-\spadpaste{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c}}
-}
-\xtc{
-}{
-\spadpaste{printCode c\free{c}}
-}
-
-The Fortran code is printed
-on the current Fortran output stream.
-
-\subsubsection{FortranProgram}
-\texht{\exptypeindex{FortranProgram}}{}
-
-This domain is used to construct complete Fortran subprograms out of
-elements of \axiomType{FortranCode}.  It is parameterised by the name of the
-target subprogram (a \axiomType{Symbol}), its return type (from
-\axiomType{Union}(\axiomType{FortranScalarType},``void'')),
-its arguments (from \axiomType{List Symbol}), and
-its symbol table (from \axiomType{SymbolTable}).  One can
-\axiomFun{coerce} elements of either \axiomType{FortranCode}
-or \axiomType{Expression} into it.
-
-\xtc{
-First of all we create a symbol table:
-}{
-\spadpaste{symbols := empty()$SymbolTable\bound{symbols}}
-}
-\xtc{
-Now put some type declarations into it:
-}{
-\spadpaste{declare!([X,Y],fortranReal(),symbols)\free{symbols}}
-}
-\xtc{
-Then (for convenience)
-we set up the particular instantiation of \axiomType{FortranProgram}
-}{
-\spadpaste{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols}\bound{FP}}
-}
+could be minimized as follows:
+\blankline
+}{}
 \xtc{
-Create an object of type \axiomType{Expression(Integer)}:
 }{
-\spadpaste{asp := X*sin(Y)\bound{asp}}
-}
-\xtc{
-Now \axiomFun{coerce} it into \axiomType{FP}, and print its Fortran form:
-}{
-\spadpaste{outputAsFortran(asp::FP)\free{FP asp}}
+\spadpaste{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + 
+(X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], 
+[3,0,\%plusInfinity,3])\bound{ans3} }
 }
-
-We can generate a \axiomType{FortranProgram} using \axiom{FortranCode}.  For
-example:
+\blankline
 \xtc{
-Augment our symbol table:
+It creates a composite structure for which the field containing the minimum can be 
+expanded as required.\blankline
 }{
-\spadpaste{declare!(Z,fortranReal(),symbols)\free{symbols}\bound{Z}}
+\spadpaste{ans3 . objf\free{ans3}}
 }
+\blankline
 \xtc{
-and transform the conditional expression we prepared earlier:
 }{
-\spadpaste{outputAsFortran([c,returns()]::FP) \free{FP c Z}}
+\spadpaste{ans3 . x\free{ans3}}
 }
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug15.ht>>=
-\newcommand{\nagTechnicalTitle}{Some technical information}
-\newcommand{\nagTechnicalNumber}{15.3.5.}
-
-@
-\subsection{15.3.5. Some technical information}
-\label{nagTechnicalPage}
-\begin{itemize}
-\item nugNagdPage \ref{nugNagdPage} on
-page~\pageref{nugNagdPage}
-\end{itemize}
-\index{pages!nagTechnicalPage!ug15.ht}
-\index{ug15.ht!pages!nagTechnicalPage}
-\index{nagTechnicalPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{nagTechnicalPage}{15.3.5. Some technical information}
-\beginscroll
-%------------------------------------------------------------------------
-
-The model adopted for the link is a server-client configuration
--- Axiom acting as a client via a local agent
-(a process called {\tt nagman}). The server side is implemented
-by the {\tt nagd} daemon process which may run on a different host.
-The {\tt nagman} local agent is started by default whenever you
-start Axiom. The {\tt nagd} server must be started separately.
-Instructions for installing and running the server are supplied
-in \texht{\downlink{``\nugNagdTitle''}{nugNagdPage} in 
-Section \nugNagdNumber\ignore{nugNagd}}{printed form}. 
-Use the \spadcmd{)set naglink host} system command
-to point your local agent to a server in your network.
-
-On the Axiom side, one sees a set of {\em packages}
-(ask \Browse{} for {\em Nag*}) for each chapter, each exporting
-operations with the same name as a routine in the \naglib{}.
-The arguments and return value of each operation belong to
-standard Axiom types.
-
-The {\tt man} pages for the \naglib{} are accessible via the description
-of each operation in \Browse{} (among other places).
-
-In the implementation of each operation, the set of inputs is passed
-to the local agent {\tt nagman}, which makes a
-Remote Procedure Call (RPC) to the
-remote {\tt nagd} daemon process.  The local agent receives the RPC
-results and forwards them to the Axiom workspace where they
-are interpreted appropriately.
-
-How are Fortran subroutines turned into RPC calls?  For each Fortran
-routine in the \naglib{}, a C main() routine is supplied.  Its job is
-to assemble the RPC input (numeric) data stream into the appropriate
-Fortran data structures for the routine, call the Fortran routine from
-C and serialize the results into an RPC output data stream.
-
-Many \naglib{} routines accept ASPs (Argument Subprogram Parameters).
-These specify user-supplied Fortran routines (e.g. a routine to
-supply values of a function is required for numerical integration).
-How are they handled? There are new facilities in Axiom to help.
-A set of Axiom domains has been provided to turn values in standard
- Axiom types (such as Expression Integer) into the appropriate
-piece of Fortran for each case (a filename pointing to Fortran source
-for the ASP can always be supplied instead).
-Ask \Browse{} for {\em Asp*} to see these domains. The Fortran fragments
-are included in the outgoing RPC stream, but {\tt nagd} intercepts them,
-compiles them, and links them with the main() C program before executing
-the resulting program on the numeric part of the RPC stream.
-
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewLanguageTitle}{Interactive Front-end and Language}
-\newcommand{\ugWhatsNewLanguageNumber}{15.4.}
-
-@
-\subsection{15.4. Interactive Front-end and Language}
-\label{ugWhatsNewLanguagePage}
-\begin{itemize}
-\item ugLangLoopsBreakPage \ref{ugLangLoopsBreakPage} on
-page~\pageref{ugLangLoopsBreakPage}
-\item ugLangBlocksPage \ref{ugLangBlocksPage} on
-page~\pageref{ugLangBlocksPage}
-\end{itemize}
-\index{pages!ugWhatsNewLanguagePage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewLanguagePage}
-\index{ugWhatsNewLanguagePage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewLanguagePage}{15.4. Interactive Front-end and Language}
-\beginscroll
-%------------------------------------------------------------------------
-
-The \axiom{leave} keyword has been replaced by the \axiom{break}
-keyword for compatibility with the new Axiom extension language.  See
-section \downlink{``\ugLangLoopsBreakTitle''}{ugLangLoopsBreakPage} in
-Section \ugLangLoopsBreakNumber\ignore{ugLangLoopsBreak} for more
-information.
-
-Curly braces are no longer used to create sets. Instead, use
-\axiomFun{set} followed by a bracketed expression. For example,
+\blankline
 \xtc{
 }{
-\spadpaste{set [1,2,3,4]}
-}
-
-Curly braces are now used to enclose a block (see section
-\downlink{``\ugLangBlocksTitle''}{ugLangBlocksPage} in Section
-\ugLangBlocksNumber\ignore{ugLangBlocks} for more information). For
-compatibility, a block can still be enclosed by parentheses as well.
-
-``Free functions'' created by the \axiomxl{} compiler can now be
-loaded and used within the Axiom interpreter. A {\it free
-function} is a library function that is implemented outside a
-domain or category constructor.
-
-New coercions to and from type \axiomType{Expression} have been
-added. For example, it is now possible to map a polynomial
-represented as an expression to an appropriate polynomial type.
-
-Various messages have been added or rewritten for clarity.
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewLibraryTitle}{Library}
-\newcommand{\ugWhatsNewLibraryNumber}{15.5.}
-
-@
-\subsection{15.5. Library}
-\label{ugWhatsNewLibraryPage}
-\begin{itemize}
-\item FullPartialFractionExpansionXmpPage 
-\ref{FullPartialFractionExpansionXmpPage} on
-page~\pageref{FullPartialFractionExpansionXmpPage}
-\end{itemize}
-\index{pages!ugWhatsNewLibraryPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewLibraryPage}
-\index{ugWhatsNewLibraryPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewLibraryPage}{15.5. Library}
-\beginscroll
-%------------------------------------------------------------------------
-
-The \axiomType{FullPartialFractionExpansion}
-domain has been added. This domain computes factor-free full
-partial fraction expansions.
-See section
-\downlink{`FullPartialFractionExpansion'}
-{FullPartialFractionExpansionXmpPage}\ignore{FullPartialFractionExpansion}
-for examples.
-
-We have implemented the Bertrand/Cantor algorithm for integrals of
-hyperelliptic functions. This brings a major speedup for some
-classes of algebraic integrals.
-
-We have implemented a new (direct) algorithm for integrating trigonometric
-functions. This brings a speedup and an improvement in the answer
-quality.
-
-The {\sf SmallFloat} domain has been renamed
-\axiomType{DoubleFloat} and {\sf SmallInteger} has been renamed
-\axiomType{SingleInteger}. The new abbreviations as
-\axiomType{DFLOAT} and \axiomType{SINT}, respectively.
-We have defined the macro {\sf SF}, the old abbreviation for {\sf
-SmallFloat}, to expand to \axiomType{DoubleFloat} and modified
-the documentation and input file examples to use the new names
-and abbreviations. You should do the same in any private Axiom
-files you have.
-
-There are many new categories, domains and packages related to the
-NAG Library Link facility. See the file
-
-\unixcommand{\env{AXIOM}/../../src/algebra/exposed.lsp}{xterm\ -e\ vi\ +"/naglink"\ \env{AXIOM}/../../src/algebra/exposed.lsp}
-
-for a list of constructors in the {\bf naglink} Axiom exposure group.
-
-We have made improvements to the differential equation solvers
-and there is a new facility for solving systems of first-order 
-linear differential equations.
-In particular, an important fix was made to the solver for
-inhomogeneous linear ordinary differential equations that
-corrected the calculation of particular solutions.
-We also made improvements to the polynomial
-and transcendental equation solvers including the
-ability to solve some classes of systems of transcendental
-equations.
-
-The efficiency of power series have been improved and left and right
-expansions of \spad{tan(f(x))} at \spad{x =} a pole of \spad{f(x)}
-can now be computed.
-A number of power series bugs were fixed and the \axiomType{GeneralUnivariatePowerSeries}
-domain was added.
-The power series variable can appear in the coefficients and when this
-happens, you cannot differentiate or integrate the series.  Differentiation
-and integration with respect to other variables is supported.
-
-A domain was added for representing asymptotic expansions of a
-function at an exponential singularity.
-
-For limits, the main new feature is the exponential expansion domain used
-to treat certain exponential singularities.  Previously, such singularities
-were treated in an {\it ad hoc} way and only a few cases were covered.  Now
-Axiom can do things like
-
-\begin{verbatim}
-limit( (x+1)**(x+1)/x**x - x**x/(x-1)**(x-1), x = %plusInfinity)
-\end{verbatim}
-
-in a systematic way.  It only does one level of nesting, though.  In other
-words, we can handle \spad{exp(} some function with a pole \spad{)}, but not
-\texht{\linebreak}{} \spad{exp(exp(} some function with a pole \spad{)).}
-
-The computation of integral bases has been improved through careful
-use of Hermite row reduction. A P-adic algorithm
-for function fields of algebraic curves in finite characteristic has also
-been developed.
-
-Miscellaneous:
-There is improved conversion of definite and indefinite integrals to
-\axiomType{InputForm};
-binomial coefficients are displayed in a new way;
-some new simplifications of radicals have been implemented;
-the operation \spadfun{complexForm} for converting to rectangular coordinates
-has been added;
-symmetric product operations have been added to \axiomType{LinearOrdinaryDifferentialOperator}.
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewHyperDocTitle}{\HyperName}
-\newcommand{\ugWhatsNewHyperDocNumber}{15.6.}
-
-@
-\subsection{15.6. \HyperName}
-\label{ugWhatsNewHyperDocPage}
-\begin{itemize}
-\item ugHyperKeysPage \ref{ugHyperKeysPage} on
-page~\pageref{ugHyperKeysPage}
-\end{itemize}
-\index{pages!ugWhatsNewHyperDocPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewHyperDocPage}
-\index{ugWhatsNewHyperDocPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewHyperDocPage}{15.6. \HyperName}
-\beginscroll
-%------------------------------------------------------------------------
-
-The buttons on the titlebar and scrollbar have been replaced
-with ones which have a 3D effect. You can change the foreground and
-background colors of these ``controls'' by including and modifying
-the following lines in your {\bf .Xdefaults} file.
-\begin{verbatim}
-Axiom.hyperdoc.ControlBackground: White
-Axiom.hyperdoc.ControlForeground: Black
-\end{verbatim}
-
-For various reasons, \HyperName{} sometimes displays a
-secondary window. You can control the size and placement of this
-window by including and modifying
-the following line in your {\bf .Xdefaults} file.
-%
-\begin{verbatim}
-Axiom.hyperdoc.FormGeometry: =950x450+100+0
-\end{verbatim}
-%
-This setting is a standard X Window System geometry specification:
-you are requesting a window 950 pixels wide by 450 deep and placed in
-the upper left corner.
-
-Some key definitions have been changed to conform more closely with
-the CUA guidelines. Press \texht{F9}{\downlink{F9}{ugHyperKeysPage}}
-to see the current definitions.
-
-Input boxes (for example, in the Browser) now accept paste-ins from
-the X Window System. Use the second button to paste in something
-you have previously copied or cut. An example of how you can use this
-is that you can paste the type from an Axiom computation
-into the main Browser input box.
-
-
-%------------------------------------------------------------------------
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug15.ht>>=
-\newcommand{\ugWhatsNewDocumentationTitle}{Documentation}
-\newcommand{\ugWhatsNewDocumentationNumber}{15.7.}
-
-@
-\subsection{15.7. Documentation}
-\label{ugWhatsNewDocumentationPage}
-\begin{itemize}
-\item ugGraphTwoDbuildPage \ref{ugGraphTwoDbuildPage} on
-page~\pageref{ugGraphTwoDbuildPage}
-\item ugGraphTwoDappendPage \ref{ugGraphTwoDappendPage} on
-page~\pageref{ugGraphTwoDappendPage}
-\item ugIntroCallFunPage \ref{ugIntroCallFunPage} on
-page~\pageref{ugIntroCallFunPage}
-\item ugUserRulesPage \ref{ugUserRulesPage} on
-page~\pageref{ugUserRulesPage}
-\end{itemize}
-\index{pages!ugWhatsNewDocumentationPage!ug15.ht}
-\index{ug15.ht!pages!ugWhatsNewDocumentationPage}
-\index{ugWhatsNewDocumentationPage!ug15.ht!pages}
-<<ug15.ht>>=
-\begin{page}{ugWhatsNewDocumentationPage}{15.7. Documentation}
-\beginscroll
-%------------------------------------------------------------------------
-\texht{
-We describe here a few additions to the on-line
-version of the Axiom book which you can read with
-HyperDoc.
-}{}
-
-A section has been added to the graphics chapter, describing how to
-build \twodim{} graphs from lists of points. An example is given
-showing how to read the points from a file.  See section
-\downlink{``\ugGraphTwoDbuildTitle''}{ugGraphTwoDbuildPage} in Section
-\ugGraphTwoDbuildNumber\ignore{ugGraphTwoDbuild} for details.
-
-A further section has been added to that same chapter, describing how
-to add a \twodim{} graph to a viewport which already contains other
-graphs.  See section
-\downlink{``\ugGraphTwoDappendTitle''}{ugGraphTwoDappendPage} in
-Section \ugGraphTwoDappendNumber\ignore{ugGraphTwoDappend} for
-details.
-
-Chapter 3 
-and the on-line \HyperName{} help have been unified.
-
-An explanation of operation names ending in ``?'' and ``!'' has been
-added to the first chapter.  See the end of the section
-\downlink{``\ugIntroCallFunTitle''}{ugIntroCallFunPage} in Section
-\ugIntroCallFunNumber\ignore{ugIntroCallFun} for details.
-
-An expanded explanation of using predicates has been added to the
-sixth chapter. See the example involving \userfun{evenRule} in the
-middle of the section
-\downlink{``\ugUserRulesTitle''}{ugUserRulesPage} in Section
-\ugUserRulesNumber\ignore{ugUserRules} for details.
-
-Documentation for the \spadcmd{)compile}, \spadcmd{)library} and
-\spadcmd{)load} commands has been greatly changed. This reflects
-the ability of the \spadcmd{)compile} to now invoke the \axiomxl{}
-compiler, the impending deletion of the \spadcmd{)load} command
-and the new \spadcmd{)library} command.
-The \spadcmd{)library} command replaces \spadcmd{)load} and is
-compatible with the compiled output from both the old and new
-compilers.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug16.ht}
-<<ug16.ht>>=
-\newcommand{\lanb}{{\tt [}}
-\newcommand{\ranb}{{\tt ]}}
-\newcommand{\vertline}{\texht{$|$}{{\tt |}}}
-\newcommand{\ugSysCmdTitle}{Axiom System Commands}
-\newcommand{\ugSysCmdNumber}{B.}
-
-@
-\subsection{B. Axiom System Commands}
-\label{ugSysCmdPage}
-\begin{itemize}
-\item ugSysCmdOverviewPage \ref{ugSysCmdOverviewPage} on
-page~\pageref{ugSysCmdOverviewPage}
-\item ugSysCmdabbreviationPage \ref{ugSysCmdabbreviationPage} on
-page~\pageref{ugSysCmdabbreviationPage}
-\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
-page~\pageref{ugSysCmdbootPage}
-\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
-page~\pageref{ugSysCmdcdPage}
-\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
-page~\pageref{ugSysCmdclosePage}
-\item ugSysCmdclearPage \ref{ugSysCmdclearPage} on
-page~\pageref{ugSysCmdclearPage}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
-page~\pageref{ugSysCmddisplayPage}
-\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
-page~\pageref{ugSysCmdeditPage}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\item ugSysCmdframePage \ref{ugSysCmdframePage} on
-page~\pageref{ugSysCmdframePage}
-\item ugSysCmdhelpPage \ref{ugSysCmdhelpPage} on
-page~\pageref{ugSysCmdhelpPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
-page~\pageref{ugSysCmdlibraryPage}
-\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
-page~\pageref{ugSysCmdlispPage}
-\item ugSysCmdloadPage \ref{ugSysCmdloadPage} on
-page~\pageref{ugSysCmdloadPage}
-\item ugSysCmdltracePage \ref{ugSysCmdltracePage} on
-page~\pageref{ugSysCmdltracePage}
-\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
-page~\pageref{ugSysCmdpquitPage}
-\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
-page~\pageref{ugSysCmdquitPage}
-\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
-page~\pageref{ugSysCmdreadPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
-page~\pageref{ugSysCmdshowPage}
-\item ugSysCmdspoolPage \ref{ugSysCmdspoolPage} on
-page~\pageref{ugSysCmdspoolPage}
-\item ugSysCmdsynonymPage \ref{ugSysCmdsynonymPage} on
-page~\pageref{ugSysCmdsynonymPage}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
-page~\pageref{ugSysCmdtracePage}
-\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
-page~\pageref{ugSysCmdundoPage}
-\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
-page~\pageref{ugSysCmdwhatPage}
-\end{itemize}
-\index{pages!ugSysCmdPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdPage}
-\index{ugSysCmdPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdPage}{B. Axiom System Commands}
-\beginscroll
-
-\texht{\bgroup\baselineskip 10pt\ixpt{}\def\Isize{\SIsize}}{}
-
-This chapter describes system commands, the command-line
-facilities used to control the Axiom environment.
-The first section is an introduction and discusses the common
-syntax of the commands available.
-
-\table{
-  { \downlink{\menuitemstyle{A.1. Introduction}}{ugSysCmdOverviewPage} }
-  { \downlink{\menuitemstyle{A.2. )abbreviation}}{ugSysCmdabbreviationPage} }
-  { \downlink{\menuitemstyle{A.3. )boot}}{ugSysCmdbootPage} }
-  { \downlink{\menuitemstyle{A.4. )cd}}{ugSysCmdcdPage} }
-  { \downlink{\menuitemstyle{A.5. )close}}{ugSysCmdclosePage} }
-  { \downlink{\menuitemstyle{A.6. )clear}}{ugSysCmdclearPage} }
-  { \downlink{\menuitemstyle{A.7. )compile}}{ugSysCmdcompilePage} }
-  { \downlink{\menuitemstyle{A.8. )display}}{ugSysCmddisplayPage} }
-  { \downlink{\menuitemstyle{A.9. )edit}}{ugSysCmdeditPage} }
-  { \downlink{\menuitemstyle{A.10. )fin}}{ugSysCmdfinPage} }
-  { \downlink{\menuitemstyle{A.11. )frame}}{ugSysCmdframePage} }
-  { \downlink{\menuitemstyle{A.12. )help}}{ugSysCmdhelpPage} }
-  { \downlink{\menuitemstyle{A.13. )history}}{ugSysCmdhistoryPage} }
-  { \downlink{\menuitemstyle{A.14. )library}}{ugSysCmdlibraryPage} }
-  { \downlink{\menuitemstyle{A.15. )lisp}}{ugSysCmdlispPage} }
-  { \downlink{\menuitemstyle{A.16. )load}}{ugSysCmdloadPage} }
-  { \downlink{\menuitemstyle{A.17. )ltrace}}{ugSysCmdltracePage} }
-  { \downlink{\menuitemstyle{A.18. )pquit}}{ugSysCmdpquitPage} }
-  { \downlink{\menuitemstyle{A.19. )quit}}{ugSysCmdquitPage} }
-  { \downlink{\menuitemstyle{A.20. )read}}{ugSysCmdreadPage} }
-  { \downlink{\menuitemstyle{A.21. )set}}{ugSysCmdsetPage} }
-  { \downlink{\menuitemstyle{A.22. )show}}{ugSysCmdshowPage} }
-  { \downlink{\menuitemstyle{A.23. )spool}}{ugSysCmdspoolPage} }
-  { \downlink{\menuitemstyle{A.24. )synonym}}{ugSysCmdsynonymPage} }
-  { \downlink{\menuitemstyle{A.25. )system}}{ugSysCmdsystemPage} }
-  { \downlink{\menuitemstyle{A.26. )trace}}{ugSysCmdtracePage} }
-  { \downlink{\menuitemstyle{A.27. )undo}}{ugSysCmdundoPage} }
-  { \downlink{\menuitemstyle{A.28. )what}}{ugSysCmdwhatPage} }
+\spadpaste{ans3 . attributes\free{ans3}}
 }
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdOverviewTitle}{Introduction}
-\newcommand{\ugSysCmdOverviewNumber}{B.1.}
-
-@
-\subsection{B.1. Introduction}
-\label{ugSysCmdOverviewPage}
-\begin{itemize}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\end{itemize}
-\index{pages!ugSysCmdOverviewPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdOverviewPage}
-\index{ugSysCmdOverviewPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdOverviewPage}{B.1. Introduction}
-\beginscroll
-
-System commands are used to perform Axiom environment management.
-Among the commands are those that display what has been defined or
-computed, set up multiple logical Axiom environments (frames), clear
-definitions, read files of expressions and commands, show what
-functions are available, and terminate Axiom.
-
-Some commands are restricted: the commands
-\begin{verbatim}
-)set userlevel interpreter
-)set userlevel compiler
-)set userlevel development
-\end{verbatim}
-set the user-access level to the three possible choices.  All commands
-are available at {\tt development} level and the fewest are available
-at {\tt interpreter} level.  The default user-level is {\tt
-interpreter}.  In addition to the \spadcmd{)set} command (discussed in
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} in Section
-\ugSysCmdsetNumber\ignore{ugSysCmdset}) you can use the \HyperName{}
-settings facility to change the {\it user-level.}  \texht{}{Click on
-\lispmemolink{Settings}{(|htSystemVariables|)} here to immediately go
-to the settings facility.}
-
-Each command listing begins with one or more syntax pattern
-descriptions plus examples of related commands.  The syntax
-descriptions are intended to be easy to read and do not necessarily
-represent the most compact way of specifying all possible arguments
-and options; the descriptions may occasionally be redundant.
-
-All system commands begin with a right parenthesis which should be in
-the first available column of the input line (that is, immediately
-after the input prompt, if any).  System commands may be issued
-directly to Axiom or be included in {\bf .input} files.
-
-A system command {\it argument} is a word that directly follows the
-command name and is not followed or preceded by a right parenthesis.
-A system command {\it option} follows the system command and is
-directly preceded by a right parenthesis.  Options may have arguments:
-they directly follow the option.  This example may make it easier to
-remember what is an option and what is an argument:
-
-\centerline{{{\tt )syscmd {\it arg1 arg2} )opt1 {\it opt1arg1 opt1arg2} )opt2 {\it opt2arg1} ...}}}
-
-In the system command descriptions, optional arguments and options are
-enclosed in brackets (``\lanb'' and ``\ranb'').  If an argument or
-option name is in italics, it is meant to be a variable and must have
-some actual value substituted for it when the system command call is
-made.  For example, the syntax pattern description
-
-\noindent
-{\tt )read} {\it fileName} {\tt \lanb{})quietly\ranb{}}
-
-\noindent
-would imply that you must provide an actual file name for
-{\it fileName} but need not use the {\tt )quietly} option.
-Thus
-\begin{verbatim}
-)read matrix.input
-\end{verbatim}
-is a valid instance of the above pattern.
-
-System command names and options may be abbreviated and may be in
-upper or lower case.
-The case of actual arguments may be significant, depending on the
-particular situation (such as in file names).
-System command names and options may be abbreviated to the minimum
-number of starting letters so that the name or option is unique.
-Thus
-\begin{verbatim}
-)s Integer
-\end{verbatim}
-is not a valid abbreviation for the {\tt )set} command,
-because both {\tt )set} and {\tt )show}
-begin with the letter ``s''.
-Typically, two or three letters are sufficient for disambiguating names.
-In our descriptions of the commands, we have used no abbreviations for
-either command names or options.
-
-In some syntax descriptions we use a vertical line ``\vertline''
-to indicate that you must specify one of the listed choices.
-For example, in
-\begin{verbatim}
-)set output fortran on | off
-\end{verbatim}
-only {\tt on} and {\tt off} are acceptable words for following
-{\tt boot}.
-We also sometimes use ``...'' to indicate that additional arguments
-or options of the listed form are allowed.
-Finally, in the syntax descriptions we may also list the syntax of
-related commands.
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdabbreviationTitle}{)abbreviation}
-\newcommand{\ugSysCmdabbreviationNumber}{B.2.}
-
-@
-\subsection{B.2. )abbreviation}
-\label{ugSysCmdabbreviationPage}
-\index{pages!ugSysCmdabbreviationPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdabbreviationPage}
-\index{ugSysCmdabbreviationPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdabbreviationPage}{B.2. )abbreviation}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} compiler
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )abbreviation query  \lanb{}{\it nameOrAbbrev}\ranb{}}
-\item {\tt )abbreviation category  {\it abbrev  fullname} \lanb{})quiet\ranb{}}
-\item {\tt )abbreviation domain  {\it abbrev  fullname}   \lanb{})quiet\ranb{}}
-\item {\tt )abbreviation package  {\it abbrev  fullname}  \lanb{})quiet\ranb{}}
-\item {\tt )abbreviation remove  {\it nameOrAbbrev}}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to query, set and remove abbreviations for category,
-domain and package constructors.
-Every constructor must have a unique abbreviation.
-This abbreviation is part of the name of the subdirectory
-under which the components of the compiled constructor are
-stored.
-Furthermore, by issuing this command you
-let the system know what file to load automatically if you use a new
-constructor.
-Abbreviations must start with a letter and then be followed by
-up to seven letters or digits.
-Any letters appearing in the abbreviation must be in uppercase.
-
-When used with the {\tt query} argument,
-this command may be used to list the name
-associated with a  particular abbreviation or the  abbreviation for a
-constructor.
-If no abbreviation or name is given, the names and corresponding
-abbreviations for {\it all} constructors are listed.
-
-The following shows the abbreviation for the constructor \spadtype{List}:
-\begin{verbatim}
-)abbreviation query List
-\end{verbatim}
-The following shows the constructor name corresponding to the
-abbreviation \spadtype{NNI}:
-\begin{verbatim}
-)abbreviation query NNI
-\end{verbatim}
-The following lists all constructor names and their abbreviations.
-\begin{verbatim}
-)abbreviation query
-\end{verbatim}
-
-To add an abbreviation for a constructor, use this command with
-{\tt category}, {\tt domain} or {\tt package}.
-The following add abbreviations to the system for a
-category, domain and package, respectively:
-\begin{verbatim}
-)abbreviation domain   SET Set
-)abbreviation category COMPCAT  ComplexCategory
-)abbreviation package  LIST2MAP ListToMap
-\end{verbatim}
-If the {\tt )quiet} option is used,
-no output is displayed from this command.
-You would normally only define an abbreviation in a library source file.
-If this command is issued for a constructor that has already been loaded, the
-constructor will be reloaded next time it is referenced.  In particular, you
-can use this command to force the automatic reloading of constructors.
-
-To remove an abbreviation, the {\tt remove} argument is used.
-This is usually
-only used to correct a previous command that set an abbreviation for a
-constructor name.
-If, in fact, the abbreviation does exist, you are prompted
-for confirmation of the removal request.
-Either of the following commands
-will remove the abbreviation \spadtype{VECTOR2} and the
-constructor name \spadtype{VectorFunctions2} from the system:
-\begin{verbatim}
-)abbreviation remove VECTOR2
-)abbreviation remove VectorFunctions2
-\end{verbatim}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
-in section \ugSysCmdcompileNumber
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdbootTitle}{)boot}
-\newcommand{\ugSysCmdbootNumber}{B.3.}
-
-@
-\subsection{B.3. )boot}
-\label{ugSysCmdbootPage}
-\begin{itemize}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
-page~\pageref{ugSysCmdlispPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\end{itemize}
-\index{pages!ugSysCmdbootPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdbootPage}
-\index{ugSysCmdbootPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdbootPage}{B.3. )boot}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} development
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )boot} {\it bootExpression}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used by Axiom system developers to execute
-expressions written in the BOOT language.
-For example,
-\begin{verbatim}
-)boot times3(x) == 3*x
-\end{verbatim}
-creates and compiles the \Lisp{} function ``times3''
-obtained by translating the BOOT code.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} in 
-section \ugSysCmdfinNumber
-\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} in 
-section \ugSysCmdlispNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} in 
-section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} in 
-section \ugSysCmdsystemNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdcdTitle}{)cd}
-\newcommand{\ugSysCmdcdNumber}{B.4.}
-
-@
-\subsection{B.4. )cd}
-\label{ugSysCmdcdPage}
-\begin{itemize}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
-page~\pageref{ugSysCmdeditPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
-page~\pageref{ugSysCmdlibraryPage}
-\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
-page~\pageref{ugSysCmdreadPage}
-\item ugSysCmdspoolPage \ref{ugSysCmdspoolPage} on
-page~\pageref{ugSysCmdspoolPage}
-\end{itemize}
-\index{pages!ugSysCmdcdPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdcdPage}
-\index{ugSysCmdcdPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdcdPage}{B.4. )cd}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )cd} {\it directory}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command sets the Axiom working current directory.
-The current directory is used for looking for
-input files (for {\tt )read}),
-Axiom library source files (for {\tt )compile}),
-saved history environment files (for {\tt )history )restore}),
-compiled Axiom library files (for \spadcmd{)library}), and
-files to edit (for {\tt )edit}).
-It is also used for writing
-spool files (via {\tt )spool}),
-writing history input files (via {\tt )history )write}) and
-history environment files (via {\tt )history )save}),and
-compiled Axiom library files (via {\tt )compile}).
-
-If issued with no argument, this command sets the Axiom
-current directory to your home directory.
-If an argument is used, it must be a valid directory name.
-Except for the ``{\tt )}'' at the beginning of the command,
-this has the same syntax as the operating system {\tt cd} command.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in 
-section \ugSysCmdcompileNumber
-\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} in 
-section \ugSysCmdeditNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} in 
-section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdlibraryTitle''}{ugSysCmdlibraryPage} in 
-section \ugSysCmdlibraryNumber
-\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} in 
-section \ugSysCmdreadNumber
-\downlink{``\ugSysCmdspoolTitle''}{ugSysCmdspoolPage} in 
-section \ugSysCmdspoolNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdcloseTitle}{)close}
-\newcommand{\ugSysCmdcloseNumber}{B.5.}
-
-@
-\subsection{B.5. )close}
-\label{ugSysCmdclosePage}
-\begin{itemize}
-\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
-page~\pageref{ugSysCmdquitPage}
-\end{itemize}
-\index{pages!ugSysCmdclosePage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdclosePage}
-\index{ugSysCmdclosePage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdclosePage}{B.5. )close}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )close}
-\item{\tt )close )quietly}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is used to close down interpreter client processes.
-Such processes are started by \HyperName{} to run Axiom examples
-when you click on their text. When you have finished examining or modifying the
-example and you do not want the extra window around anymore, issue
-\begin{verbatim}
-)close
-\end{verbatim}
-to the Axiom prompt in the window.
-
-If you try to close down the last remaining interpreter client
-process, Axiom will offer to close down the entire Axiom
-session and return you to the operating system by displaying something
-like
-\begin{verbatim}
-   This is the last Axiom session. Do you want to kill Axiom?
-\end{verbatim}
-Type "y" (followed by the Return key) if this is what you had in mind.
-Type "n" (followed by the Return key) to cancel the command.
-
-You can use the {\tt )quietly} option to force Axiom to
-close down the interpreter client process without closing down
-the entire Axiom session.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} in 
-section \ugSysCmdquitNumber
-\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} in 
-section \ugSysCmdpquitNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdclearTitle}{)clear}
-\newcommand{\ugSysCmdclearNumber}{B.6.}
-
-@
-\subsection{B.6. )clear}
-\label{ugSysCmdclearPage}
-\begin{itemize}
-\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
-page~\pageref{ugSysCmddisplayPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
-page~\pageref{ugSysCmdundoPage}
-\end{itemize}
-\index{pages!ugSysCmdclearPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdclearPage}
-\index{ugSysCmdclearPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdclearPage}{B.6. )clear}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )clear all}
-\item{\tt )clear completely}
-\item{\tt )clear properties all}
-\item{\tt )clear properties}  {\it obj1 \lanb{}obj2 ...\ranb{}}
-\item{\tt )clear value      all}
-\item{\tt )clear value}     {\it obj1 \lanb{}obj2 ...\ranb{}}
-\item{\tt )clear mode       all}
-\item{\tt )clear mode}      {\it obj1 \lanb{}obj2 ...\ranb{}}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is used to remove function and variable declarations, definitions
-and values  from the workspace.
-To  empty the entire workspace  and reset the
-step counter to 1, issue
-\begin{verbatim}
-)clear all
-\end{verbatim}
-To remove everything in the workspace but not reset the step counter, issue
-\begin{verbatim}
-)clear properties all
-\end{verbatim}
-To remove everything about the object {\tt x}, issue
-\begin{verbatim}
-)clear properties x
-\end{verbatim}
-To remove everything about the objects {\tt x, y} and {\tt f}, issue
-\begin{verbatim}
-)clear properties x y f
-\end{verbatim}
-
-The word {\tt properties} may be abbreviated to the single letter
-``{\tt p}''.
-\begin{verbatim}
-)clear p all
-)clear p x
-)clear p x y f
-\end{verbatim}
-All definitions of functions and values of variables may be removed by either
-\begin{verbatim}
-)clear value all
-)clear v all
-\end{verbatim}
-This retains whatever declarations the objects had.  To remove definitions and
-values for the specific objects {\tt x, y} and {\tt f}, issue
-\begin{verbatim}
-)clear value x y f
-)clear v x y f
-\end{verbatim}
-To remove  the declarations  of everything while  leaving the  definitions and
-values, issue
-\begin{verbatim}
-)clear mode  all
-)clear m all
-\end{verbatim}
-To remove declarations for the specific objects {\tt x, y} and {\tt f}, issue
-\begin{verbatim}
-)clear mode x y f
-)clear m x y f
-\end{verbatim}
-The {\tt )display names} and {\tt )display properties} commands  may be used
-to see what is currently in the workspace.
-
-The command
-\begin{verbatim}
-)clear completely
-\end{verbatim}
-does everything that {\tt )clear all} does, and also clears the internal
-system function and constructor caches.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
-in section \ugSysCmddisplayNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdundoTitle''}{ugSysCmdundoPage} 
-in section \ugSysCmdundoNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdcompileTitle}{)compile}
-\newcommand{\ugSysCmdcompileNumber}{B.7.}
-
-@
-\subsection{B.7. )compile}
-\label{ugSysCmdcompilePage}
-\begin{itemize}
-\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
-page~\pageref{ugSysCmdcdPage}
-\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
-page~\pageref{ugSysCmdtracePage}
-\item ugSysCmdabbreviationPage \ref{ugSysCmdabbreviationPage} on
-page~\pageref{ugSysCmdabbreviationPage}
-\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
-page~\pageref{ugSysCmdeditPage}
-\item ugSysCmdlibraryPage \ref{ugSysCmdlibraryPage} on
-page~\pageref{ugSysCmdlibraryPage}
-\end{itemize}
-\index{pages!ugSysCmdcompilePage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdcompilePage}
-\index{ugSysCmdcompilePage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdcompilePage}{B.7. )compile}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} compiler
-
-\par\noindent{\bf Command Syntax:}
-
-\begin{items}
-\item {\tt )compile}
-\item {\tt )compile {\it fileName}}
-\item {\tt )compile {\it fileName}.as}
-\item {\tt )compile {\it directory/fileName}.as}
-\item {\tt )compile {\it fileName}.ao}
-\item {\tt )compile {\it directory/fileName}.ao}
-\item {\tt )compile {\it fileName}.al}
-\item {\tt )compile {\it directory/fileName}.al}
-\item {\tt )compile {\it fileName}.lsp}
-\item {\tt )compile {\it directory/fileName}.lsp}
-\item {\tt )compile {\it fileName}.spad}
-\item {\tt )compile {\it directory/fileName}.spad}
-\item {\tt )compile {\it fileName} )new}
-\item {\tt )compile {\it fileName} )old}
-\item {\tt )compile {\it fileName} )translate}
-\item {\tt )compile {\it fileName} )quiet}
-\item {\tt )compile {\it fileName} )noquiet}
-\item {\tt )compile {\it fileName} )moreargs}
-\item {\tt )compile {\it fileName} )onlyargs}
-\item {\tt )compile {\it fileName} )break}
-\item {\tt )compile {\it fileName} )nobreak}
-\item {\tt )compile {\it fileName} )library}
-\item {\tt )compile {\it fileName} )nolibrary}
-\item {\tt )compile {\it fileName} )vartrace}
-\item {\tt )compile {\it fileName} )constructor} {\it nameOrAbbrev}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-You use this command to invoke the new Axiom library compiler or
-the old Axiom system compiler.
-The {\tt )compile} system command is actually a combination of
-Axiom processing and a call to the \axiomxl{} compiler.
-It is performing double-duty, acting as a front-end to
-both the \axiomxl{} compiler and the old Axiom system
-compiler.
-(The old Axiom system compiler was written in Lisp and was
-an integral part of the Axiom environment.
-The \axiomxl{} compiler is written in C and executed by the operating system
-when called from within Axiom.)
-
-The command compiles files with file extensions {\it .as, .ao}
-and {\it .al} with the
-\axiomxl{} compiler and files with file extension {\it .spad} with the
-old Axiom system compiler.
-It also can compile files with file extension {\it .lsp}. These
-are assumed to be Lisp files genererated by the \axiomxl{}
-compiler.
-If you omit the file extension, the command looks to see if you
-have specified the {\tt )new} or {\tt )old} option.
-If you have given one of these options, the corresponding compiler
-is used.
-Otherwise, the command first looks in the standard system
-directories for files with extension {\it .as, .ao} and {\it
-.al} and then files with extension {\it .spad}.
-The first file found has the appropriate compiler invoked on it.
-If the command cannot find a matching file, an error message is
-displayed and the command terminates.
-
-The {\tt )translate} option is used to invoke a special version
-of the old system compiler that will translate a {\it .spad} file
-to a {\it .as} file. That is, the {\it .spad} file will be parsed and
-analyzed and a file using the new syntax will be created. By default,
-the {\it .as} file is created in the same directory as the
-{\it .spad} file. If that directory is not writable, the current
-directory is used. If the current directory is not writable, an
-error message is given and the command terminates.
-Note that {\tt )translate} implies the {\tt )old} option so the
-file extension can safely be omitted. If {\tt )translate} is
-given, all other options are ignored.
-Please be aware that the translation is not necessarily one
-hundred percent complete or correct.
-You should attempt to compile the output with the \axiomxl{} compiler
-and make any necessary corrections.
-
-We now describe the options for the new \axiomxl{} compiler.
-
-The first thing {\tt )compile} does is look for a source code
-filename among its arguments.
-Thus
-\begin{verbatim}
-)compile mycode.as
-)compile /u/jones/as/mycode.as
-)compile mycode
-\end{verbatim}
-all invoke {\tt )compiler} on the file {\tt
-/u/jones/as/mycode.as} if the current Axiom working
-directory is {\tt /u/jones/as.} (Recall that you can set the
-working directory via the {\tt )cd} command. If you don't set it
-explicitly, it is the directory from which you started
-Axiom.)
-
-This is frequently all you need to compile your file.
-This simple command:
-\indent{4}
-\beginitems
-\item[1. ] Invokes the \axiomxl{} compiler and produces Lisp output.
-\item[2. ] Calls the Lisp compiler if the \axiomxl{} compilation was
-successful.
-\item[3. ] Uses the {\tt )library} command to tell Axiom about
-the contents of your compiled file and arrange to have those
-contents loaded on demand.
-\enditems
-\indent{0}
-
-Should you not want the {\tt )library} command automatically
-invoked, call {\tt )compile} with the {\tt )nolibrary} option.
-For example,
-\begin{verbatim}
-)compile mycode.as )nolibrary
-\end{verbatim}
-
-The general description of \axiomxl{} command line arguments is in
-the \axiomxl{} documentation.
-The default options used by the {\tt )compile} command can be
-viewed and set using the {\tt )set compiler args} Axiom
-system command.
-The current defaults are
-\begin{verbatim}
--O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom
-\end{verbatim}
-These options mean:
-\indent{4}
-\beginitems
-\item[-] {\tt -O}: perform all optimizations,
-\item[-] {\tt -Fasy}: generate a {\tt .asy} file,
-\item[-] {\tt -Fao}: generate a {\tt .ao} file,
-\item[-] {\tt -Flsp}: generate a {\tt .lsp} (Lisp)
-file,
-\item[-] {\tt -laxiom}: use the {\tt axiom} library {\tt libaxiom.al},
-\item[-] {\tt -Mno-AXL\_W\_WillObsolete}: do not display messages
-about older generated files becoming obsolete, and
-\item[-] {\tt -DAxiom}: define the global assertion {\tt Axiom} so that the
-\axiomxl{} libraries for generating stand-alone code
-are not accidentally used with Axiom.
-\enditems
-\indent{0}
-
-To supplement these default arguments, use the {\tt )moreargs} option on
-{\tt )compile.}
-For example,
-\begin{verbatim}
-)compile mycode.as )moreargs "-v"
-\end{verbatim}
-uses the default arguments and appends the {\tt -v} (verbose)
-argument flag.
-The additional argument specification {\bf must be enclosed in
-double quotes.}
-
-To completely replace these default arguments for a particular
-use of {\tt )compile}, use the {\tt )onlyargs} option.
-For example,
-\begin{verbatim}
-)compile mycode.as )onlyargs "-v -O"
-\end{verbatim}
-only uses the {\tt -v} (verbose) and {\tt -O} (optimize)
-arguments.
-The argument specification {\bf must be enclosed in double quotes.}
-In this example, Lisp code is not produced and so the compilation
-output will not be available to Axiom.
-
-To completely replace the default arguments for all calls to {\tt
-)compile} within your Axiom session, use {\tt )set compiler args.}
-For example, to use the above arguments for all compilations, issue
-\begin{verbatim}
-)set compiler args "-v -O"
-\end{verbatim}
-Make sure you include the necessary {\tt -l} and {\tt -Y}
-arguments along with those needed for Lisp file creation.
-As above, {\bf the argument specification must be enclosed in double
-quotes.}
-
-By default, the {\tt )library} system command {\it exposes} all
-domains and categories it processes.
-This means that the Axiom intepreter will consider those
-domains and categories when it is trying to resolve a reference
-to a function.
-Sometimes domains and categories should not be exposed.
-For example, a domain may just be used privately by another
-domain and may not be meant for top-level use.
-The {\tt )library} command should still be used, though, so that
-the code will be loaded on demand.
-In this case, you should use the {\tt )nolibrary} option on {\tt
-)compile} and the {\tt )noexpose} option in the {\tt )library}
-command. For example,
-\begin{verbatim}
-)compile mycode.as )nolibrary
-)library mycode )noexpose
-\end{verbatim}
-
-Once you have established your own collection of compiled code,
-you may find it handy to use the {\tt )dir} option on the
-{\tt )library} command.
-This causes {\tt )library} to process all compiled code in the
-specified directory. For example,
-\begin{verbatim}
-)library )dir /u/jones/as/quantum
-\end{verbatim}
-You must give an explicit directory after {\tt )dir}, even if you
-want all compiled code in the current working directory
-processed, e.g.
-\begin{verbatim}
-)library )dir .
-\end{verbatim}
-
-The {\tt )compile} command works with several file extensions. We saw
-above what happens when it is invoked on a file with extension {\tt
-.as.} A {\tt .ao} file is a portable binary compiled version of a
-{\tt .as} file, and {\tt )compile} simply passes the {\tt .ao} file
-onto \axiomxl{}. The generated Lisp file is compiled and {\tt )library}
-is automatically called, just as if you had specified a {\tt .as} file.
-
-A {\tt .al} file is an archive file containing {\tt .ao} files. The
-archive is created (on Unix systems) with the {\tt ar} program. When
-{\tt )compile} is given a {\tt .al} file, it creates a directory whose
-name is based on that of the archive. For example, if you issue
-\begin{verbatim}
-)compile mylib.al
-\end{verbatim}
-the directory {\tt mylib.axldir} is created. All
-members of the archive are unarchived into the
-directory and {\tt )compile} is called on each {\tt .ao} file found. It
-is your responsibility to remove the directory and its contents, if you
-choose to do so.
-
-A {\tt .lsp} file is a Lisp source file, presumably, in our context,
-generated by \axiomxl{} when called with the {\tt -Flsp} option. When
-{\tt )compile} is used with a {\tt .lsp} file, the Lisp file is
-compiled and {\tt )library} is called. You must also have present a
-{\tt .asy} generated from the same source file.
-
-The following are descriptions of options for the old system compiler.
-
-You can compile category, domain, and package constructors
-contained in files with file extension {\it .spad}.
-You can compile individual constructors or every constructor
-in a file.
-
-The full filename is remembered between invocations of this command and
-{\tt )edit} commands.
-The sequence of commands
-\begin{verbatim}
-)compile matrix.spad
-)edit
-)compile
-\end{verbatim}
-will call the compiler, edit, and then call the compiler again on the
-file {\bf matrix.spad.}  If you do not specify a {\it directory,} the
-working current directory (see
-\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in Section
-\ugSysCmdcdNumber\ignore{ugSysCmdcd}) is searched for the file.  If
-the file is not found, the standard system directories are searched.
-
-If you do not give any options, all constructors within a file are
-compiled.  Each constructor should have an {\tt )abbreviation} command
-in the file in which it is defined.  We suggest that you place the
-{\tt )abbreviation} commands at the top of the file in the order in
-which the constructors are defined.  The list of commands serves as a
-table of contents for the file.
-
-The {\tt )library} option causes directories containing the compiled
-code for each constructor to be created in the working current
-directory.  The name of such a directory consists of the constructor
-abbreviation and the {\bf .nrlib} file extension.  For example, the
-directory containing the compiled code for the \axiomType{MATRIX}
-constructor is called {\bf MATRIX.nrlib.}  The {\tt )nolibrary} option
-says that such files should not be created.  The default is {\tt
-)library.}  Note that the semantics of {\tt )library} and {\tt
-)nolibrary} for the new \axiomxl{} compiler and for the old system
-compiler are completely different.
-
-The {\tt )vartrace} option causes the compiler to generate extra code
-for the constructor to support conditional tracing of variable
-assignments. (see
-\downlink{``\ugSysCmdtraceTitle''}{ugSysCmdtracePage} in Section
-\ugSysCmdtraceNumber\ignore{ugSysCmdtrace}). Without this option, this
-code is suppressed and one cannot use the {\tt )vars} option for the
-trace command.
-
-The {\tt )constructor} option is used to
-specify a particular constructor to compile.
-All other constructors in the file are ignored.
-The constructor name or abbreviation follows {\tt )constructor.}
-Thus either
-\begin{verbatim}
-)compile matrix.spad )constructor RectangularMatrix
-\end{verbatim}
-or
-\begin{verbatim}
-)compile matrix.spad )constructor RMATRIX
-\end{verbatim}
-compiles  the \axiomType{RectangularMatrix} constructor
-defined in {\bf matrix.spad.}
-
-The {\tt )break} and {\tt )nobreak} options determine what the old
-system compiler does when it encounters an error.  {\tt )break} is the
-default and it indicates that processing should stop at the first
-error.  The value of the {\tt )set break} variable then controls what
-happens.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdabbreviationTitle''}{ugSysCmdabbreviationPage} 
-in section \ugSysCmdabbreviationNumber
-\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} 
-in section \ugSysCmdeditNumber
-\downlink{``\ugSysCmdlibraryTitle''}{ugSysCmdlibraryPage} 
-in section \ugSysCmdlibraryNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmddisplayTitle}{)display}
-\newcommand{\ugSysCmddisplayNumber}{B.8.}
-
-@
-\subsection{B.8. )display}
-\label{ugSysCmddisplayPage}
-\begin{itemize}
-\item ugSysCmdclearPage \ref{ugSysCmdclearPage} on
-page~\pageref{ugSysCmdclearPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
-page~\pageref{ugSysCmdshowPage}
-\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
-page~\pageref{ugSysCmdwhatPage}
-\end{itemize}
-\index{pages!ugSysCmddisplayPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmddisplayPage}
-\index{ugSysCmddisplayPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmddisplayPage}{B.8. )display}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )display all}
-\item {\tt )display properties}
-\item {\tt )display properties all}
-\item {\tt )display properties} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
-\item {\tt )display value all}
-\item {\tt )display value} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
-\item {\tt )display mode all}
-\item {\tt )display mode} {\it \lanb{}obj1 \lanb{}obj2 ...\ranb{}\ranb{}}
-\item {\tt )display names}
-\item {\tt )display operations} {\it opName}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is  used to display the contents of  the workspace and
-signatures of functions  with a  given  name.\footnote{A
-\spadgloss{signature} gives the argument and return types of a
-function.}
-
-The command
-\begin{verbatim}
-)display names
-\end{verbatim}
-lists the names of all user-defined  objects in the workspace.  This is useful
-if you do  not wish to see everything  about the objects and need  only be
-reminded of their names.
-
-The commands
-\begin{verbatim}
-)display all
-)display properties
-)display properties all
-\end{verbatim}
-all do  the same thing: show  the values and  types and declared modes  of all
-variables in the  workspace.  If you have defined  functions, their signatures
-and definitions will also be displayed.
-
-To show all information about a  particular variable or user functions,
-for example, something named {\tt d}, issue
-\begin{verbatim}
-)display properties d
-\end{verbatim}
-To just show the value (and the type) of {\tt d}, issue
-\begin{verbatim}
-)display value d
-\end{verbatim}
-To just show the declared mode of {\tt d}, issue
-\begin{verbatim}
-)display mode d
-\end{verbatim}
-
-All modemaps for a given operation  may be
-displayed by using {\tt )display operations}.
-A \spadgloss{modemap} is a collection of information about  a particular
-reference
-to an  operation.  This  includes the  types of the  arguments and  the return
-value, the  location of the  implementation and  any conditions on  the types.
-The modemap may contain patterns.  The following displays the modemaps for the
-operation \spadfunFrom{complex}{ComplexCategory}:
-\begin{verbatim}
-)d op complex
-\end{verbatim}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdclearTitle''}{ugSysCmdclearPage} 
-in section \ugSysCmdclearNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdshowTitle''}{ugSysCmdshowPage} 
-in section \ugSysCmdshowNumber
-\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
-in section \ugSysCmdwhatNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdeditTitle}{)edit}
-\newcommand{\ugSysCmdeditNumber}{B.9.}
-
-@
-\subsection{B.9. )edit}
-\label{ugSysCmdeditPage}
-\begin{itemize}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
-page~\pageref{ugSysCmdreadPage}
-\end{itemize}
-\index{pages!ugSysCmdeditPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdeditPage}
-\index{ugSysCmdeditPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdeditPage}{B.9. )edit}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )edit} \lanb{}{\it filename}\ranb{}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is  used to edit files.
-It works in conjunction  with the {\tt )read}
-and {\tt )compile} commands to remember the name
-of the file on which you are working.
-By specifying the name fully, you  can edit any file you wish.
-Thus
-\begin{verbatim}
-)edit /u/julius/matrix.input
-\end{verbatim}
-will place  you in an editor looking at the  file
-{\tt /u/julius/matrix.input}.
-By default, the editor is {\tt vi},
-but if you have an EDITOR shell environment variable defined, that editor
-will be used.
-When Axiom is running under the X Window System,
-it will try to open a separate {\tt xterm} running your editor if
-it thinks one is necessary.
-For example, under the Korn shell, if you issue
-\begin{verbatim}
-export EDITOR=emacs
-\end{verbatim}
-then the emacs
-editor will be used by \spadcmd{)edit}.
-
-If you do not specify a file name, the last file you edited,
-read or compiled will be used.
-If there is no ``last file'' you will be placed in the editor editing
-an empty unnamed file.
-
-It is possible to use the {\tt )system} command to edit a file directly.
-For example,
-\begin{verbatim}
-)system emacs /etc/rc.tcpip
-\end{verbatim}
-calls {\tt emacs} to edit the file.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
-in section \ugSysCmdsystemNumber
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
-in section \ugSysCmdcompileNumber
-\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} 
-in section \ugSysCmdreadNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdfinTitle}{)fin}
-\newcommand{\ugSysCmdfinNumber}{B.10.}
-
-@
-\subsection{B.10. )fin}
-\label{ugSysCmdfinPage}
-\begin{itemize}
-\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
-page~\pageref{ugSysCmdpquitPage}
-\end{itemize}
-\index{pages!ugSysCmdfinPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdfinPage}
-\index{ugSysCmdfinPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdfinPage}{B.10. )fin}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} development
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )fin}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is used by Axiom
-developers to leave the Axiom system and return
-to the underlying \Lisp{} system.
-To return to Axiom, issue the
-``{\tt (\vertline{}spad\vertline{})}''
-function call to \Lisp{}.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
-in section \ugSysCmdpquitNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdframeTitle}{)frame}
-\newcommand{\ugSysCmdframeNumber}{B.11.}
-
-@
-\subsection{B.11. )frame}
-\label{ugSysCmdframePage}
-\begin{itemize}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\end{itemize}
-\index{pages!ugSysCmdframePage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdframePage}
-\index{ugSysCmdframePage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdframePage}{B.11. )frame}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )frame  new  {\it frameName}}
-\item{\tt )frame  drop  {\it \lanb{}frameName\ranb{}}}
-\item{\tt )frame  next}
-\item{\tt )frame  last}
-\item{\tt )frame  names}
-\item{\tt )frame  import {\it frameName} {\it \lanb{}objectName1 \lanb{}objectName2 ...\ranb{}\ranb{}}}
-\item{\tt )set message frame on \vertline{} off}
-\item{\tt )set message prompt frame}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-A {\it frame} can be thought of as a logical session within the
-physical session that you get when you start the system.  You can
-have as many frames as you want, within the limits of your computer's
-storage, paging space, and so on.
-Each frame has its own {\it step number}, {\it environment} and {\it history.}
-You can have a variable named {\tt a} in one frame and it will
-have nothing to do with anything that might be called {\tt a} in
-any other frame.
-
-Some frames are created by the \HyperName{} program and these can
-have pretty strange names, since they are generated automatically.
-To find out the names
-of all frames, issue
-\begin{verbatim}
-)frame names
-\end{verbatim}
-It will indicate the name of the current frame.
-
-You create a new frame
-``{\bf quark}'' by issuing
-\begin{verbatim}
-)frame new quark
-\end{verbatim}
-The history facility can be turned on by issuing either
-{\tt )set history on} or {\tt )history )on}.
-If the history facility is on and you are saving history information
-in a file rather than in the Axiom environment
-then a history file with filename {\bf quark.axh} will
-be created as you enter commands.
-If you wish to go back to what
-you were doing in the
-``{\bf initial}'' frame, use
-\begin{verbatim}
-)frame next
-\end{verbatim}
-or
-\begin{verbatim}
-)frame last
-\end{verbatim}
-to cycle through the ring of available frames to get back to
-``{\bf initial}''.
-
-If you want to throw
-away a frame (say ``{\bf quark}''), issue
-\begin{verbatim}
-)frame drop quark
-\end{verbatim}
-If you omit the name, the current frame is dropped.
-
-If you do use frames with the history facility on and writing to a file,
-you may want to delete some of the older history files.
-These are directories, so you may want to issue a command like
-{\tt rm -r quark.axh} to the operating system.
-
-You can bring things from another frame by using
-{\tt )frame import}.
-For example, to bring the {\tt f} and {\tt g} from the frame ``{\bf quark}''
-to the current frame, issue
-\begin{verbatim}
-)frame import quark f g
-\end{verbatim}
-If you want everything from the frame ``{\bf quark}'', issue
-\begin{verbatim}
-)frame import quark
-\end{verbatim}
-You will be asked to verify that you really want everything.
-
-There are two {\tt )set} flags
-to make it easier to tell where you are.
-\begin{verbatim}
-)set message frame on | off
-\end{verbatim}
-will print more messages about frames when it is set on.
-By default, it is off.
-\begin{verbatim}
-)set message prompt frame
-\end{verbatim}
-will give a prompt
-that looks like
-\begin{verbatim}
-initial (1) ->
-\end{verbatim}
-when you start up. In this case, the frame name and step make up the
-prompt.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdhelpTitle}{)help}
-\newcommand{\ugSysCmdhelpNumber}{B.12.}
-
-@
-\subsection{B.12. )help}
-\label{ugSysCmdhelpPage}
-\index{pages!ugSysCmdhelpPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdhelpPage}
-\index{ugSysCmdhelpPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdhelpPage}{B.12. )help}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )help}
-\item{\tt )help} {\it commandName}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command displays help information about system commands.
-If you issue
-\begin{verbatim}
-)help
-\end{verbatim}
-then this very text will be shown.
-You can also give the name or abbreviation of a system command
-to display information about it.
-For example,
-\begin{verbatim}
-)help clear
-\end{verbatim}
-will display the description of the {\tt )clear} system command.
-
-All this material is available in the Axiom User Guide
-and in \HyperName{}.
-In \HyperName{}, choose the {\bf Commands} item from the
-{\bf Reference} menu.
-
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdhistoryTitle}{)history}
-\newcommand{\ugSysCmdhistoryNumber}{B.13.}
-
-@
-\subsection{B.13. )history}
-\label{ugSysCmdhistoryPage}
-\begin{itemize}
-\item ugSysCmdframePage \ref{ugSysCmdframePage} on
-page~\pageref{ugSysCmdframePage}
-\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
-page~\pageref{ugSysCmdcdPage}
-\item ugSysCmdreadPage \ref{ugSysCmdreadPage} on
-page~\pageref{ugSysCmdreadPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdundoPage \ref{ugSysCmdundoPage} on
-page~\pageref{ugSysCmdundoPage}
-\end{itemize}
-\index{pages!ugSysCmdhistoryPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdhistoryPage}
-\index{ugSysCmdhistoryPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdhistoryPage}{B.13. )history}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )history )on}
-\item{\tt )history )off}
-\item{\tt )history )write} {\it historyInputFileName}
-\item{\tt )history )show \lanb{}{\it n}\ranb{} \lanb{}both\ranb{}}
-\item{\tt )history )save} {\it savedHistoryName}
-\item{\tt )history )restore} \lanb{}{\it savedHistoryName}\ranb{}
-\item{\tt )history )reset}
-\item{\tt )history )change} {\it n}
-\item{\tt )history )memory}
-\item{\tt )history )file}
-\item{\tt \%}
-\item{\tt \%\%({\it n})}
-\item{\tt )set history on \vertline{} off}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-The {\it history} facility within Axiom allows you to restore your
-environment to that of another session and recall previous
-computational results.
-Additional commands allow you to review previous
-input lines and to create an {\bf .input} file of the lines typed to
-Axiom.
-
-Axiom saves your input and output if the history facility is
-turned on (which is the default).
-This information is saved if either of
-\begin{verbatim}
-)set history on
-)history )on
-\end{verbatim}
-has been issued.
-Issuing either
-\begin{verbatim}
-)set history off
-)history )off
-\end{verbatim}
-will discontinue the recording of information.
-
-Whether the facility is disabled or not, the value of \spadSyntax{\%}
-in Axiom always refers to the result of the last computation.  If you
-have not yet entered anything, \spadSyntax{\%} evaluates to an object
-of type \spadtype{Variable('\%)}.  The function \spadSyntax{\%\%} may
-be used to refer to other previous results if the history facility is
-enabled.  In that case, {\tt \%\%(n)} is the output from step {\tt n}
-if {\tt n > 0}.  If {\tt n < 0}, the step is computed relative to the
-current step.  Thus {\tt \%\%(-1)} is also the previous step, {\tt
-\%\%(-2)}, is the step before that, and so on.  If an invalid step
-number is given, Axiom will signal an error.
-
-The {\it environment} information can either be saved in a file or
-entirely in memory (the default).  Each frame
-(\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} in Section
-\ugSysCmdframeNumber\ignore{ugSysCmdframe}) has its own history
-database.  When it is kept in a file, some of it may also be kept in
-memory for efficiency.  When the information is saved in a file, the
-name of the file is of the form {\bf FRAME.axh} where ``{\bf FRAME}''
-is the name of the current frame.  The history file is placed in the
-current working directory (see
-\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in Section
-\ugSysCmdcdNumber\ignore{ugSysCmdcd}).  Note that these history
-database files are not text files (in fact, they are directories
-themselves), and so are not in human-readable format.
-
-The options to the {\tt )history} command are as follows:
-
-\indent{0}
-\beginitems
-\item[{\tt )change} {\it n}]
-will set the number of steps that are saved in memory to {\it n}.
-This option only has effect when the history data is maintained in a
-file.
-If you have issued {\tt )history )memory} (or not changed the default)
-there is no need to use {\tt )history )change}.
-
-\item[{\tt )on}]
-will start the recording of information.
-If the workspace is not empty, you will be asked to confirm this
-request.
-If you do so, the workspace will be cleared and history data will begin
-being saved.
-You can also turn the facility on by issuing {\tt )set history on}.
-
-\item[{\tt )off}]
-will stop the recording of information.
-The {\tt )history )show} command will not work after issuing this
-command.
-Note that this command may be issued to save time, as there is some
-performance penalty paid for saving the environment data.
-You can also turn the facility off by issuing {\tt )set history off}.
-
-\item[{\tt )file}]
-indicates that history data should be saved in an external file on disk.
-
-\item[{\tt )memory}]
-indicates that all history data should be kept in memory rather than
-saved in a file.
-Note that if you are computing with very large objects it may not be
-practical to kept this data in memory.
-
-\item[{\tt )reset}]
-will flush the internal list of the most recent workspace calculations
-so that the data structures may be garbage collected by the underlying
-\Lisp{} system.
-Like {\tt )history )change}, this option only has real effect when
-history data is being saved in a file.
-
-\item[{\tt )restore} \lanb{}{\it savedHistoryName}\ranb{}]
-completely clears the environment and restores it to a saved session, if
-possible.
-The {\tt )save} option below allows you to save a session to a file
-with a given name. If you had issued
-{\tt )history )save jacobi}
-the command
-{\tt )history )restore jacobi}
-would clear the current workspace and load the contents of the named
-saved session. If no saved session name is specified, the system looks
-for a file called {\bf last.axh}.
-
-\item[{\tt )save} {\it savedHistoryName}]
-is used to save  a snapshot of the environment in a file.
-This file is placed in the current working directory
-(see \downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} 
-in Section \ugSysCmdcdNumber\ignore{ugSysCmdcd}).
-Use {\tt )history )restore} to restore the environment to the state
-preserved in the file.
-This option also creates an input file containing all the lines of input
-since you created the workspace frame (for example, by starting your
-Axiom session) or last did a \spadcmd{)clear all} or
-\spadcmd{)clear completely}.
-
-\item[{\tt )show} \lanb{}{\it n}\ranb{} \lanb{}{\tt both}\ranb{}]
-can show previous input lines and output results.
-{\tt )show} will display up to twenty of the last input lines
-(fewer if you haven't typed in twenty lines).
-{\tt )show} {\it n} will display up to {\it n} of the last input lines.
-{\tt )show both} will display up to five of the last input lines and
-output results.
-{\tt )show} {\it n} {\tt both} will display up to {\it n} of the last
-input lines and output results.
-
-\item[{\tt )write} {\it historyInputFile}]
-creates an {\bf .input} file with the input lines typed since the start
-of the session/frame or the last {\tt )clear all} or {\tt )clear
-completely}.
-If {\it historyInputFileName} does not 
-contain a period (``.'') in the filename,
-{\bf .input} is appended to it.
-For example,
-{\tt )history )write chaos}
-and
-{\tt )history )write chaos.input}
-both write the input lines to a file called {\bf chaos.input} in your
-current working directory.
-If you issued one or more {\tt )undo} commands,
-{\tt )history )write}
-eliminates all
-input lines backtracked over as a result of {\tt )undo}.
-You can edit this file and then use {\tt )read} to have Axiom process
-the contents.
-\enditems
-\indent{0}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
-in section \ugSysCmdframeNumber
-\downlink{``\ugSysCmdreadTitle''}{ugSysCmdreadPage} 
-in section \ugSysCmdreadNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdundoTitle''}{ugSysCmdundoPage} 
-in section \ugSysCmdundoNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdlibraryTitle}{)library}
-\newcommand{\ugSysCmdlibraryNumber}{B.14.}
-
-@
-\subsection{B.14. )library}
-\label{ugSysCmdlibraryPage}
-\begin{itemize}
-\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
-page~\pageref{ugSysCmdcdPage}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmdframePage \ref{ugSysCmdframePage} on
-page~\pageref{ugSysCmdframePage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\end{itemize}
-\index{pages!ugSysCmdlibraryPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdlibraryPage}
-\index{ugSysCmdlibraryPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdlibraryPage}{B.14. )library}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )library {\it libName1  \lanb{}libName2 ...\ranb{}}}
-\item{\tt )library )dir {\it dirName}}
-\item{\tt )library )only {\it objName1  \lanb{}objlib2 ...\ranb{}}}
-\item{\tt )library )noexpose}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command replaces the {\tt )load} system command that
-was available in Axiom releases before version 2.0.
-The \spadcmd{)library} command makes available to Axiom the compiled
-objects in the libraries listed.
-
-For example, if you {\tt )compile dopler.as} in your home
-directory, issue {\tt )library dopler} to have Axiom look
-at the library, determine the category and domain constructors present,
-update the internal database with various properties of the
-constructors, and arrange for the constructors to be
-automatically loaded when needed.
-If the {\tt )noexpose} option has not been given, the
-constructors will be exposed (that is, available) in the current
-frame.
-
-If you compiled a file with the old system compiler, you will
-have an {\it nrlib} present, for example, {\it DOPLER.nrlib,}
-where {\tt DOPLER} is a constructor abbreviation.
-The command {\tt )library DOPLER} will then do the analysis and
-database updates as above.
-
-To tell the system about all libraries in a directory, use
-{\tt )library )dir dirName} where {\tt dirName} is an explicit
-directory.
-You may specify ``.'' as the directory, which means the current
-directory from which you started the system or the one you set
-via the \spadcmd{)cd} command. The directory name is required.
-
-You may only want to tell the system about particular
-constructors within a library. In this case, use the {\tt )only}
-option. The command {\tt )library dopler )only Test1} will only
-cause the {\sf Test1} constructor to be analyzed, autoloaded,
-etc..
-
-Finally, each constructor in a library  are usually automatically exposed when the
-\spadcmd{)library} command is used. Use the {\tt )noexpose}
-option if you not want them exposed. At a later time you can use
-{\tt )set expose add constructor} to expose any hidden
-constructors.
-
-{\bf Note for Axiom beta testers:} At various times this
-command was called {\tt )local} and {\tt )with} before the name
-{\tt )library} became the official name.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in section \ugSysCmdcdNumber
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
-in section \ugSysCmdcompileNumber
-\downlink{``\ugSysCmdframeTitle''}{ugSysCmdframePage} 
-in section \ugSysCmdframeNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdlispTitle}{)lisp}
-\newcommand{\ugSysCmdlispNumber}{B.15.}
-
-@
-\subsection{B.15. )lisp}
-\label{ugSysCmdlispPage}
-\begin{itemize}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
-page~\pageref{ugSysCmdbootPage}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\end{itemize}
-\index{pages!ugSysCmdlispPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdlispPage}
-\index{ugSysCmdlispPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdlispPage}{B.15. )lisp}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} development
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )lisp} {\it\lanb{}lispExpression\ranb{}}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used by Axiom system developers to have single
-expressions evaluated by the \Lisp{} system on which
-Axiom is built.
-The {\it lispExpression} is read by the \Lisp{} reader and
-evaluated.
-If this expression is not complete (unbalanced parentheses, say), the reader
-will wait until a complete expression is entered.
-
-Since this command is only useful  for evaluating single expressions, the
-{\tt )fin}
-command may be used to  drop out  of Axiom  into \Lisp{}.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
-in section \ugSysCmdsystemNumber
-\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
-in section \ugSysCmdbootNumber
-\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
-in section \ugSysCmdfinNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdloadTitle}{)load}
-\newcommand{\ugSysCmdloadNumber}{B.16.}
-
-@
-\subsection{B.16. )load}
-\label{ugSysCmdloadPage}
-\index{pages!ugSysCmdloadPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdloadPage}
-\index{ugSysCmdloadPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdloadPage}{B.16. )load}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-%% BEGIN OBSOLETE
-%% END OBSOLETE
-
-\par\noindent{\bf Command Description:}
-
-This command is obsolete. Use \spadcmd{)library} instead.
-
-%% BEGIN OBSOLETE
-
-%
-%
-%
-%
-
-%% END OBSOLETE
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdltraceTitle}{)ltrace}
-\newcommand{\ugSysCmdltraceNumber}{B.17.}
-
-@
-\subsection{B.17. )ltrace}
-\label{ugSysCmdltracePage}
-\begin{itemize}
-\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
-page~\pageref{ugSysCmdbootPage}
-\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
-page~\pageref{ugSysCmdlispPage}
-\item ugSysCmdtracePage \ref{ugSysCmdtracePage} on
-page~\pageref{ugSysCmdtracePage}
-\end{itemize}
-\index{pages!ugSysCmdltracePage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdltracePage}
-\index{ugSysCmdltracePage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdltracePage}{B.17. )ltrace}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} development
-
-\par\noindent{\bf Command Syntax:}
-
-This command has the same arguments as options as the
-\spadcmd{)trace} command.
-
-\par\noindent{\bf Command Description:}
-
-This command is used by Axiom system developers to trace
-\Lisp{} or
-BOOT functions.
-It is not supported for general use.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
-in section \ugSysCmdbootNumber
-\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
-in section \ugSysCmdlispNumber
-\downlink{``\ugSysCmdtraceTitle''}{ugSysCmdtracePage} 
-in section \ugSysCmdtraceNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdpquitTitle}{)pquit}
-\newcommand{\ugSysCmdpquitNumber}{B.18.}
-
-@
-\subsection{B.18. )pquit}
-\label{ugSysCmdpquitPage}
-\begin{itemize}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
-page~\pageref{ugSysCmdclosePage}
-\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
-page~\pageref{ugSysCmdquitPage}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\end{itemize}
-\index{pages!ugSysCmdpquitPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdpquitPage}
-\index{ugSysCmdpquitPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdpquitPage}{B.18. )pquit}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )pquit}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to terminate Axiom  and return to the
-operating system.
-Other than by redoing all your computations or by
-using the {\tt )history )restore}
-command to try to restore your working environment,
-you cannot return to Axiom in the same state.
-
-{\tt )pquit} differs from the {\tt )quit} in that it always asks for
-confirmation that you want to terminate Axiom (the ``p'' is for
-``protected'').
-When you enter the {\tt )pquit} command, Axiom responds
-%
-\centerline{{Please enter {\bf y} or {\bf yes} if you really want to leave the interactive }}
-\centerline{{environment and return to the operating system:}}
-%
-If you respond with {\tt y} or {\tt yes}, you will see the message
-%
-\centerline{{You are now leaving the Axiom interactive environment. }}
-\centerline{{Issue the command {\bf axiom} to the operating system to start a new session.}}
-%
-and Axiom will terminate and return you to the operating
-system (or the environment from which you invoked the system).
-If you responded with something other than {\tt y} or {\tt yes}, then
-the message
-%
-\centerline{{You have chosen to remain in the Axiom interactive environment.}}
-%
-will be displayed and, indeed, Axiom would still be running.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
-in section \ugSysCmdfinNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdcloseTitle''}{ugSysCmdclosePage} 
-in section \ugSysCmdcloseNumber
-\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
-in section \ugSysCmdquitNumber
-\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
-in section \ugSysCmdsystemNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdquitTitle}{)quit}
-\newcommand{\ugSysCmdquitNumber}{B.19.}
-
-@
-\subsection{B.19. )quit}
-\label{ugSysCmdquitPage}
-\begin{itemize}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\item ugSysCmdclosePage \ref{ugSysCmdclosePage} on
-page~\pageref{ugSysCmdclosePage}
-\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
-page~\pageref{ugSysCmdpquitPage}
-\item ugSysCmdsystemPage \ref{ugSysCmdsystemPage} on
-page~\pageref{ugSysCmdsystemPage}
-\end{itemize}
-\index{pages!ugSysCmdquitPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdquitPage}
-\index{ugSysCmdquitPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdquitPage}{B.19. )quit}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )quit}
-\item{\tt )set quit protected \vertline{} unprotected}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to terminate Axiom  and return to the
-operating system.
-Other than by redoing all your computations or by
-using the {\tt )history )restore}
-command to try to restore your working environment,
-you cannot return to Axiom in the same state.
-
-{\tt )quit} differs from the {\tt )pquit} in that it asks for
-confirmation only if the command
-\begin{verbatim}
-)set quit protected
-\end{verbatim}
-has been issued.
-Otherwise, {\tt )quit} will make Axiom terminate and return you
-to the operating system (or the environment from which you invoked the
-system).
-
-The default setting is {\tt )set quit protected} so that {\tt )quit}
-and {\tt )pquit} behave in the same way.
-If you do issue
-\begin{verbatim}
-)set quit unprotected
-\end{verbatim}
-we
-suggest that you do not (somehow) assign {\tt )quit} to be
-executed when you press, say, a function key.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
-in section \ugSysCmdfinNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-\downlink{``\ugSysCmdcloseTitle''}{ugSysCmdclosePage} 
-in section \ugSysCmdcloseNumber
-\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
-in section \ugSysCmdpquitNumber
-\downlink{``\ugSysCmdsystemTitle''}{ugSysCmdsystemPage} 
-in section \ugSysCmdsystemNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdreadTitle}{)read}
-\newcommand{\ugSysCmdreadNumber}{B.20.}
-
-@
-\subsection{B.20. )read}
-\label{ugSysCmdreadPage}
-\begin{itemize}
-\item ugInOutInPage \ref{ugInOutInPage} on
-page~\pageref{ugInOutInPage}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmdeditPage \ref{ugSysCmdeditPage} on
-page~\pageref{ugSysCmdeditPage}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\end{itemize}
-\index{pages!ugSysCmdreadPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdreadPage}
-\index{ugSysCmdreadPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdreadPage}{B.20. )read}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )read} {\it \lanb{}fileName\ranb{}}
-\item {\tt )read} {\it \lanb{}fileName\ranb{}} \lanb{}{\tt )quiet}\ranb{} \lanb{}{\tt )ifthere}\ranb{}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-This command is used to read {\bf .input} files into Axiom.
-The command
-\begin{verbatim}
-)read matrix.input
-\end{verbatim}
-will read the contents of the file {\bf matrix.input} into Axiom.  The
-``.input'' file extension is optional.  See
-\downlink{``\ugInOutInTitle''}{ugInOutInPage} in Section
-\ugInOutInNumber\ignore{ugInOutIn} for more information about {\bf
-.input} files.
-
-This command remembers the previous file you edited, read or compiled.
-If you do not specify a file name, the previous file will be read.
-
-The {\tt )ifthere} option checks to see whether the {\bf .input} file
-exists.  If it does not, the {\tt )read} command does nothing.  If you
-do not use this option and the file does not exist, you are asked to
-give the name of an existing {\bf .input} file.
-
-The {\tt )quiet} option suppresses output while the file is being read.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} 
-in section \ugSysCmdcompileNumber
-\downlink{``\ugSysCmdeditTitle''}{ugSysCmdeditPage} 
-in section \ugSysCmdeditNumber
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdsetTitle}{)set}
-\newcommand{\ugSysCmdsetNumber}{B.21.}
-
-@
-\subsection{B.21. )set}
-\label{ugSysCmdsetPage}
-\begin{itemize}
-\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
-page~\pageref{ugSysCmdquitPage}
-\end{itemize}
-\index{pages!ugSysCmdsetPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdsetPage}
-\index{ugSysCmdsetPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdsetPage}{B.21. )set}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item {\tt )set}
-\item {\tt )set} {\it label1 \lanb{}... labelN\ranb{}}
-\item {\tt )set} {\it label1 \lanb{}... labelN\ranb{} newValue}
-\end{items}
-\par\noindent{\bf Command Description:}
-
-The {\tt )set} command is used to view or set system variables that
-control what messages are displayed, the type of output desired, the
-status of the history facility, the way Axiom user functions are
-cached, and so on.
-Since this collection is very large, we will not discuss them here.
-Rather, we will show how the facility is used.
-We urge you to explore the {\tt )set} options to familiarize yourself
-with how you can modify your Axiom working environment.
-There is a \HyperName{} version of this same facility available from the
-main \HyperName{} menu.
-\texht{}{Click \lispmemolink{here}{(|htSystemVariables|)} to go to it.}
-
-The {\tt )set} command is command-driven with a menu display.
-It is tree-structured.
-To see all top-level nodes, issue {\tt )set} by itself.
-\begin{verbatim}
-)set
-\end{verbatim}
-Variables with values have them displayed near the right margin.
-Subtrees of selections have ``{\tt ...}''
-displayed in the value field.
-For example, there are many kinds of messages, so issue
-{\tt )set message} to see the choices.
-\begin{verbatim}
-)set message
-\end{verbatim}
-The current setting  for the variable that displays
-whether computation times
-are displayed is visible in the menu displayed by the last command.
-To see more information, issue
-\begin{verbatim}
-)set message time
-\end{verbatim}
-This shows that time printing is on now.
-To turn it off, issue
-\begin{verbatim}
-)set message time off
-\end{verbatim}
-
-As noted above, not all settings have so many qualifiers.
-For example, to change the {\tt )quit} command to being unprotected
-(that is, you will not be prompted for verification), you need only issue
-\begin{verbatim}
-)set quit unprotected
-\end{verbatim}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
-in section \ugSysCmdquitNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdshowTitle}{)show}
-\newcommand{\ugSysCmdshowNumber}{B.22.}
-
-@
-\subsection{B.22. )show}
-\label{ugSysCmdshowPage}
-\begin{itemize}
-\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
-page~\pageref{ugSysCmddisplayPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
-page~\pageref{ugSysCmdwhatPage}
-\end{itemize}
-\index{pages!ugSysCmdshowPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdshowPage}
-\index{ugSysCmdshowPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdshowPage}{B.22. )show}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )show {\it nameOrAbbrev}}
-\item{\tt )show {\it nameOrAbbrev} )operations}
-\item{\tt )show {\it nameOrAbbrev} )attributes}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-This command displays information about Axiom
-domain, package and category {\it constructors}.
-If no options are given, the {\tt )operations} option is assumed.
-For example,
-\begin{verbatim}
-)show POLY
-)show POLY )operations
-)show Polynomial
-)show Polynomial )operations
-\end{verbatim}
-each display basic information about the
-\spadtype{Polynomial} domain constructor and then provide a
-listing of operations.
-Since \spadtype{Polynomial} requires a \spadtype{Ring} (for example,
-\spadtype{Integer}) as argument, the above commands all refer
-to a unspecified ring {\tt R}.
-In the list of operations, \spadSyntax{\$} means
-\spadtype{Polynomial(R)}.
-
-The basic information displayed includes the {\it signature}
-of the constructor (the name and arguments), the constructor
-{\it abbreviation}, the {\it exposure status} of the constructor, and the
-name of the {\it library source file} for the constructor.
-
-If operation information about a specific domain is wanted,
-the full or abbreviated domain name may be used.
-For example,
-\begin{verbatim}
-)show POLY INT
-)show POLY INT )operations
-)show Polynomial Integer
-)show Polynomial Integer )operations
-\end{verbatim}
-are among  the combinations that will
-display the operations exported  by the
-domain \spadtype{Polynomial(Integer)} (as opposed to the general
-{\it domain constructor} \spadtype{Polynomial}).
-Attributes may be listed by using the {\tt )attributes} option.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
-in section \ugSysCmddisplayNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
-in section \ugSysCmdwhatNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdspoolTitle}{)spool}
-\newcommand{\ugSysCmdspoolNumber}{B.23.}
-
-@
-\subsection{B.23. )spool}
-\label{ugSysCmdspoolPage}
-\begin{itemize}
-\item ugSysCmdcdPage \ref{ugSysCmdcdPage} on
-page~\pageref{ugSysCmdcdPage}
-\end{itemize}
-\index{pages!ugSysCmdspoolPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdspoolPage}
-\index{ugSysCmdspoolPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdspoolPage}{B.23. )spool}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )spool} \lanb{}{\it fileName}\ranb{}
-\item{\tt )spool}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to save {\it (spool)} all Axiom input and output
-into a file, called a {\it spool file.}
-You can only have one spool file active at a time.
-To start spool, issue this command with a filename. For example,
-\begin{verbatim}
-)spool integrate.out
-\end{verbatim}
-To stop spooling, issue {\tt )spool} with no filename.
-
-If the filename is qualified with a directory, then the output will
-be placed in that directory.
-If no directory information is given, the spool file will be placed in the
-{\it current directory.}
-The current directory is the directory from which you started
-Axiom or is the directory you specified using the
-{\tt )cd} command.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdcdTitle''}{ugSysCmdcdPage} in section \ugSysCmdcdNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdsynonymTitle}{)synonym}
-\newcommand{\ugSysCmdsynonymNumber}{B.24.}
-
-@
-\subsection{B.24. )synonym}
-\label{ugSysCmdsynonymPage}
-\begin{itemize}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdwhatPage \ref{ugSysCmdwhatPage} on
-page~\pageref{ugSysCmdwhatPage}
-\end{itemize}
-\index{pages!ugSysCmdsynonymPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdsynonymPage}
-\index{ugSysCmdsynonymPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdsynonymPage}{B.24. )synonym}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )synonym}
-\item{\tt )synonym} {\it synonym fullCommand}
-\item{\tt )what synonyms}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to create short synonyms for system command expressions.
-For example, the following synonyms  might simplify commands you often
-use.
-\begin{verbatim}
-)synonym save         history )save
-)synonym restore      history )restore
-)synonym mail         system mail
-)synonym ls           system ls
-)synonym fortran      set output fortran
-\end{verbatim}
-Once defined, synonyms can be
-used in place of the longer  command expressions.
-Thus
-\begin{verbatim}
-)fortran on
-\end{verbatim}
-is the same as the longer
-\begin{verbatim}
-)set fortran output on
-\end{verbatim}
-To list all defined synonyms, issue either of
-\begin{verbatim}
-)synonyms
-)what synonyms
-\end{verbatim}
-To list, say, all synonyms that contain the substring
-``{\tt ap}'', issue
-\begin{verbatim}
-)what synonyms ap
-\end{verbatim}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdwhatTitle''}{ugSysCmdwhatPage} 
-in section \ugSysCmdwhatNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdsystemTitle}{)system}
-\newcommand{\ugSysCmdsystemNumber}{B.25.}
-
-@
-\subsection{B.25. )system}
-\label{ugSysCmdsystemPage}
-\begin{itemize}
-\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
-page~\pageref{ugSysCmdbootPage}
-\item ugSysCmdfinPage \ref{ugSysCmdfinPage} on
-page~\pageref{ugSysCmdfinPage}
-\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
-page~\pageref{ugSysCmdlispPage}
-\item ugSysCmdpquitPage \ref{ugSysCmdpquitPage} on
-page~\pageref{ugSysCmdpquitPage}
-\item ugSysCmdquitPage \ref{ugSysCmdquitPage} on
-page~\pageref{ugSysCmdquitPage}
-\end{itemize}
-\index{pages!ugSysCmdsystemPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdsystemPage}
-\index{ugSysCmdsystemPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdsystemPage}{B.25. )system}
-\beginscroll
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )system} {\it cmdExpression}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command may be used to issue commands to the operating system while
-remaining in Axiom.
-The {\it cmdExpression} is passed to the operating system for
-execution.
-
-To get an operating system shell, issue, for example,
-\spadcmd{)system sh}.
-When you enter the key combination,
-\texht{\fbox{\bf Ctrl}--\fbox{\bf D}}{{\bf Ctrl-D}}
-(pressing and holding the
-\texht{\fbox{\bf Ctrl}}{{\bf Ctrl}} key and then pressing the
-\texht{\fbox{\bf D}}{{\bf D}} key)
-the shell will terminate and you will return to Axiom.
-We do not recommend this way of creating a shell because
-\Lisp{} may field some interrupts instead of the shell.
-If possible, use a shell running in another window.
-
-If you execute programs that misbehave you may not be able to return to
-Axiom.
-If this happens, you may have no other choice than to restart
-Axiom and restore the environment via {\tt )history )restore}, if
-possible.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
-in section \ugSysCmdbootNumber
-\downlink{``\ugSysCmdfinTitle''}{ugSysCmdfinPage} 
-in section \ugSysCmdfinNumber
-\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
-in section \ugSysCmdlispNumber
-\downlink{``\ugSysCmdpquitTitle''}{ugSysCmdpquitPage} 
-in section \ugSysCmdpquitNumber
-\downlink{``\ugSysCmdquitTitle''}{ugSysCmdquitPage} 
-in section \ugSysCmdquitNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdtraceTitle}{)trace}
-\newcommand{\ugSysCmdtraceNumber}{B.26.}
-
-@
-\subsection{B.26. )trace}
-\label{ugSysCmdtracePage}
-\begin{itemize}
-\item ugSysCmdcompilePage \ref{ugSysCmdcompilePage} on
-page~\pageref{ugSysCmdcompilePage}
-\item ugSysCmdbootPage \ref{ugSysCmdbootPage} on
-page~\pageref{ugSysCmdbootPage}
-\item ugSysCmdlispPage \ref{ugSysCmdlispPage} on
-page~\pageref{ugSysCmdlispPage}
-\item ugSysCmdltracePage \ref{ugSysCmdltracePage} on
-page~\pageref{ugSysCmdltracePage}
-\end{itemize}
-\index{pages!ugSysCmdtracePage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdtracePage}
-\index{ugSysCmdtracePage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdtracePage}{B.26. )trace}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )trace}
-\item{\tt )trace )off}
-
-\item{\tt )trace} {\it function \lanb{}options\ranb{}}
-\item{\tt )trace} {\it constructor \lanb{}options\ranb{}}
-\item{\tt )trace} {\it domainOrPackage \lanb{}options\ranb{}}
-\end{items}
-%
-where options can be one or more of
-%
-\begin{items}
-\item{\tt )after} {\it S-expression}
-\item{\tt )before} {\it S-expression}
-\item{\tt )break after}
-\item{\tt )break before}
-\item{\tt )cond} {\it S-expression}
-\item{\tt )count}
-\item{\tt )count} {\it n}
-\item{\tt )depth} {\it n}
-\item{\tt )local} {\it op1 \lanb{}... opN\ranb{}}
-\item{\tt )nonquietly}
-\item{\tt )nt}
-\item{\tt )off}
-\item{\tt )only} {\it listOfDataToDisplay}
-\item{\tt )ops}
-\item{\tt )ops} {\it op1 \lanb{}... opN \ranb{}}
-\item{\tt )restore}
-\item{\tt )stats}
-\item{\tt )stats reset}
-\item{\tt )timer}
-\item{\tt )varbreak}
-\item{\tt )varbreak} {\it var1 \lanb{}... varN \ranb{}}
-\item{\tt )vars}
-\item{\tt )vars} {\it var1 \lanb{}... varN \ranb{}}
-\item{\tt )within} {\it executingFunction}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to trace the execution of functions that make
-up the Axiom system, functions defined by users,
-and functions from the system library.
-Almost all options are available for each type of function but
-exceptions will be noted below.
-
-To list all functions, constructors, domains and packages that are
-traced, simply issue
-\begin{verbatim}
-)trace
-\end{verbatim}
-To untrace everything that is traced, issue
-\begin{verbatim}
-)trace )off
-\end{verbatim}
-When a function is traced, the default system action is to display
-the arguments to the function and the return value when the
-function is exited.
-Note that if a function is left via an action such as a {\tt THROW}, no
-return value will be displayed.
-Also, optimization of tail recursion may decrease the number of
-times a function is actually invoked and so may cause less trace
-information to be displayed.
-Other information can be displayed or collected when a function is
-traced and this is controlled by the various options.
-Most options will be of interest only to Axiom system
-developers.
-If a domain or package is traced, the default action is to trace
-all functions exported.
-
-Individual interpreter, lisp or boot
-functions can be traced by listing their names after
-{\tt )trace}.
-Any options that are present must follow the functions to be
-traced.
-\begin{verbatim}
-)trace f
-\end{verbatim}
-traces the function {\tt f}.
-To untrace {\tt f}, issue
-\begin{verbatim}
-)trace f )off
-\end{verbatim}
-Note that if a function name contains a special character, it will
-be necessary to escape the character with an underscore
-%
-\begin{verbatim}
-)trace _/D_,1
-\end{verbatim}
-%
-To trace all domains or packages that are or will be created from a particular
-constructor, give the constructor name or abbreviation after
-{\tt )trace}.
-%
-\begin{verbatim}
-)trace MATRIX
-)trace List Integer
-\end{verbatim}
-%
-The first command traces all domains currently instantiated with
-\spadtype{Matrix}.
-If additional domains are instantiated with this constructor
-(for example, if you have used \spadtype{Matrix(Integer)} and
-\spadtype{Matrix(Float)}), they will be automatically traced.
-The second command traces \spadtype{List(Integer)}.
-It is possible to trace individual functions in a domain or
-package.
-See the {\tt )ops} option below.
-
-The following are the general options for the {\tt )trace}
-command.
-
-%!! system command parser doesn't treat general s-expressions correctly,
-%!! I recommand not documenting )after )before and )cond
-\indent{0}
-\beginitems
-%\item[{\tt )after} {\it S-expression}]
-%causes the given \Lisp{} {\it S-expression} to be
-%executed after exiting the traced function.
-
-%\item[{\tt )before} {\it S-expression}]
-%causes the given \Lisp{} {\it S-expression} to be
-%executed before entering the traced function.
-
-\item[{\tt )break after}]
-causes a \Lisp{} break loop to be entered after
-exiting the traced function.
-
-\item[{\tt )break before}]
-causes a \Lisp{} break loop to be entered before
-entering the traced function.
-
-\item[{\tt )break}]
-is the same as \spadcmd{)break before}.
-
-%\item[{\tt )cond} {\it S-expression}]
-%causes trace information to be shown only if the given
-%\Lisp{} {\it S-expression} evaluates to non-NIL.  For
-%example, the following command causes the system function
-%{\tt resolveTT} to be traced but to have the information
-%displayed only if the value of the variable
-%{\tt \$reportBottomUpFlag} is non-NIL.
-%\begin{verbatim}
-%)trace resolveTT )cond \_\$reportBottomUpFlag}
-%\end{verbatim}
-
-\item[{\tt )count}]
-causes the system to keep a count of the number of times the
-traced function is entered.  The total can be displayed with
-{\tt )trace )stats} and cleared with {\tt )trace )stats reset}.
-
-\item[{\tt )count} {\it n}]
-causes information about the traced function to be displayed for
-the first {\it n} executions.  After the \eth{\it n} execution, the
-function is untraced.
-
-\item[{\tt )depth} {\it n}]
-causes trace information to be shown for only {\it n} levels of
-recursion of the traced function.  The command
-\begin{verbatim}
-)trace fib )depth 10
-\end{verbatim}
-will cause the display of only 10 levels of trace information for
-the recursive execution of a user function \userfun{fib}.
-
-\item[{\tt )math}]
-causes the function arguments and return value to be displayed in the
-Axiom monospace two-dimensional math format.
-
-\item[{\tt )nonquietly}]
-causes the display of additional messages when a function is
-traced.
-
-\item[{\tt )nt}]
-This suppresses all normal trace information.  This option is
-useful if the {\tt )count} or {\tt )timer} options are used and
-you are interested in the statistics but not the function calling
-information.
-
-\item[{\tt )off}]
-causes untracing of all or specific functions.  Without an
-argument, all functions, constructors, domains and packages are
-untraced.  Otherwise, the given functions and other objects
-are untraced.  To
-immediately retrace the untraced functions, issue {\tt )trace
-)restore}.
-
-\item[{\tt )only} {\it listOfDataToDisplay}]
-causes only specific trace information to be shown.  The items are
-listed by using the following abbreviations:
-\indent{0}
-\beginitems
-\item[a]        display all arguments
-\item[v]        display return value
-\item[1]        display first argument
-\item[2]        display second argument
-\item[15]       display the 15th argument, and so on
-\enditems
-\indent{0}
-\enditems
-\indent{0}
-\indent{0}
-\beginitems
-
-\item[{\tt )restore}]
-causes the last untraced functions to be retraced.  If additional
-options are present, they are added to those previously in effect.
-
-\item[{\tt )stats}]
-causes the display of statistics collected by the use of the
-{\tt )count} and {\tt )timer} options.
-
-\item[{\tt )stats reset}]
-resets to 0 the statistics collected by the use of the
-{\tt )count} and {\tt )timer} options.
-
-\item[{\tt )timer}]
-causes the system to keep a count of execution times for the
-traced function.  The total can be displayed with {\tt )trace
-)stats} and cleared with {\tt )trace )stats reset}.
-
-%!! only for lisp, boot, may not work in any case, recommend removing
-%\item[{\tt )varbreak}]
-%causes a \Lisp{} break loop to be entered after
-%the assignment to any variable in the traced function.
-
-\item[{\tt )varbreak} {\it var1 \lanb{}... varN\ranb{}}]
-causes a \Lisp{} break loop to be entered after
-the assignment to any of the listed variables in the traced
-function.
-
-\item[{\tt )vars}]
-causes the display of the value of any variable after it is assigned
-in the traced function.  Note that library code must have been
-compiled (see
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in Section
-\ugSysCmdcompileNumber\ignore{ugSysCmdcompile}) using the {\tt
-)vartrace} option in order to support this option.
-
-\item[{\tt )vars} {\it var1 \lanb{}... varN\ranb{}}]
-causes the display of the value of any of the specified variables
-after they are assigned in the traced function.  Note that library
-code must have been compiled (see
-\downlink{``\ugSysCmdcompileTitle''}{ugSysCmdcompilePage} in Section
-\ugSysCmdcompileNumber\ignore{ugSysCmdcompile}) using the {\tt
-)vartrace} option in order to support this option.
-
-\item[{\tt )within} {\it executingFunction}]
-causes the display of trace information only if the traced
-function is called when the given {\it executingFunction} is running.
-\enditems
-\indent{0}
-
-The following are the options for tracing constructors, domains
-and packages.
-
-\indent{0}
-\beginitems
-\item[{\tt )local} {\it \lanb{}op1 \lanb{}... opN\ranb{}\ranb{}}]
-causes local functions of the constructor to be traced.  Note that
-to untrace an individual local function, you must use the fully
-qualified internal name, using the escape character
-\spadSyntax{\_} before the semicolon.
-\begin{verbatim}
-)trace FRAC )local
-)trace FRAC_;cancelGcd )off
-\end{verbatim}
-
-\item[{\tt )ops} {\it op1 \lanb{}... opN\ranb{}}]
-By default, all operations from a domain or package are traced
-when the domain or package is traced.  This option allows you to
-specify that only particular operations should be traced.  The
-command
-%
-\begin{verbatim}
-)trace Integer )ops min max _+ _-
-\end{verbatim}
-%
-traces four operations from the domain \spadtype{Integer}.  Since
-{\tt +} and {\tt -} are special
-characters, it is necessary
-to escape them with an underscore.
-\enditems
-\indent{0}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdbootTitle''}{ugSysCmdbootPage} 
-in section \ugSysCmdbootNumber
-\downlink{``\ugSysCmdlispTitle''}{ugSysCmdlispPage} 
-in section \ugSysCmdlispNumber
-\downlink{``\ugSysCmdltraceTitle''}{ugSysCmdltracePage} 
-in section \ugSysCmdltraceNumber
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug16.ht>>=
-\newcommand{\ugSysCmdundoTitle}{)undo}
-\newcommand{\ugSysCmdundoNumber}{B.27.}
-
-@
-\subsection{B.27. )undo}
-\label{ugSysCmdundoPage}
-\begin{itemize}
-\item ugSysCmdhistoryPage \ref{ugSysCmdhistoryPage} on
-page~\pageref{ugSysCmdhistoryPage}
-\end{itemize}
-\index{pages!ugSysCmdundoPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdundoPage}
-\index{ugSysCmdundoPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdundoPage}{B.27. )undo}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )undo}
-\item{\tt )undo} {\it integer}
-\item{\tt )undo} {\it integer \lanb{}option\ranb{}}
-\item{\tt )undo} {\tt )redo}
-\end{items}
-%
-where {\it option} is one of
-%
-\begin{items}
-\item{\tt )after}
-\item{\tt )before}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to
-restore the state of the user environment to an earlier
-point in the interactive session.
-The argument of an {\tt )undo} is an integer which must designate some
-step number in the interactive session.
-
-\begin{verbatim}
-)undo n
-)undo n )after
-\end{verbatim}
-These commands return the state of the interactive
-environment to that immediately after step {\tt n}.
-If {\tt n} is a positive number, then {\tt n} refers to step nummber
-{\tt n}. If {\tt n} is a negative number, it refers to the \eth{\tt n}
-previous command (that is, undoes the effects of the last \smath{-n}
-commands).
-
-A {\tt )clear all} resets the {\tt )undo} facility.
-Otherwise, an {\tt )undo} undoes the effect of {\tt )clear} with
-options {\tt properties}, {\tt value}, and {\tt mode}, and
-that of a previous {\tt undo}.
-If any such system commands are given between steps \smath{n} and
-\smath{n + 1} (\smath{n > 0}), their effect is undone
-for {\tt )undo m} for any \texht{\smath{0 < m \leq n}.}{0 < m <= n}.
-
-The command {\tt )undo} is equivalent to {\tt )undo -1} (it undoes
-the effect of the previous user expression).
-The command {\tt )undo 0} undoes any of the above system commands
-issued since the last user expression.
-
-\begin{verbatim}
-)undo n )before
-\end{verbatim}
-This command returns the state of the interactive
-environment to that immediately before step {\tt n}.
-Any {\tt )undo} or {\tt )clear} system commands
-given before step {\tt n} will not be undone.
-
-\begin{verbatim}
-)undo )redo
-\end{verbatim}
-This command reads the file {\tt redo.input}.
-created by the last {\tt )undo} command.
-This file consists of all user input lines, excluding those
-backtracked over due to a previous {\tt )undo}.
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmdhistoryTitle''}{ugSysCmdhistoryPage} 
-in section \ugSysCmdhistoryNumber
-The command {\tt )history )write} will eliminate the ``undone'' command
-lines of your program.
-
-\endscroll
+\blankline
+\end{scroll}
 \autobuttons
+\downlink{Decision Agents}{UXANNADec}
 \end{page}
 
 @
-<<ug16.ht>>=
-\newcommand{\ugSysCmdwhatTitle}{)what}
-\newcommand{\ugSysCmdwhatNumber}{B.28.}
-
-@
-\subsection{B.28. )what}
-\label{ugSysCmdwhatPage}
+\subsection{Decision Agents}
+\label{UXANNADec}
 \begin{itemize}
-\item ugSysCmddisplayPage \ref{ugSysCmddisplayPage} on
-page~\pageref{ugSysCmddisplayPage}
-\item ugSysCmdsetPage \ref{ugSysCmdsetPage} on
-page~\pageref{ugSysCmdsetPage}
-\item ugSysCmdshowPage \ref{ugSysCmdshowPage} on
-page~\pageref{ugSysCmdshowPage}
+\item UXANNAInfer \ref{UXANNAInfer} on page~\pageref{UXANNAInfer}
+\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
+\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
+\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
 \end{itemize}
-\index{pages!ugSysCmdwhatPage!ug16.ht}
-\index{ug16.ht!pages!ugSysCmdwhatPage}
-\index{ugSysCmdwhatPage!ug16.ht!pages}
-<<ug16.ht>>=
-\begin{page}{ugSysCmdwhatPage}{B.28. )what}
-\beginscroll
-
-
-\par\noindent{\bf User Level Required:} interpreter
-
-\par\noindent{\bf Command Syntax:}
-\begin{items}
-\item{\tt )what categories} {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what commands  } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what domains   } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what operations} {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what packages  } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what synonym   } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )what things    } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\item{\tt )apropos        } {\it pattern1} \lanb{}{\it pattern2 ...\ranb{}}
-\end{items}
-
-\par\noindent{\bf Command Description:}
-
-This command is used to display lists of things in the system.  The
-patterns are all strings and, if present, restrict the contents of the
-lists.  Only those items that contain one or more of the strings as
-substrings are displayed.  For example,
-\begin{verbatim}
-)what synonym
-\end{verbatim}
-displays all command synonyms,
-\begin{verbatim}
-)what synonym ver
-\end{verbatim}
-displays all command synonyms containing the substring ``{\tt ver}'',
-\begin{verbatim}
-)what synonym ver pr
-\end{verbatim}
-displays all command synonyms
-containing the substring  ``{\tt ver}'' or  the substring
-``{\tt pr}''.
-Output similar to the following will be displayed
-\begin{verbatim}
----------------- System Command Synonyms -----------------
-
-user-defined synonyms satisfying patterns:
-      ver pr
-
-  )apr ........................... )what things
-  )apropos ....................... )what things
-  )prompt ........................ )set message prompt
-  )version ....................... )lisp *yearweek*
-\end{verbatim}
-
-Several other things can be listed with the {\tt )what} command:
-
-\indent{0}
-\beginitems
-\item[{\tt categories}] displays a list of category constructors.
-\item[{\tt commands}]  displays a list of  system commands available  at your
-user-level.
-Your user-level
-is set via the  {\tt )set userlevel} command.
-To get a description of a particular command, such as ``{\tt )what}'', issue
-{\tt )help what}.
-\item[{\tt domains}]   displays a list of domain constructors.
-\item[{\tt operations}] displays a list of operations in  the system library.
-It  is recommended that you  qualify this command with one or
-more patterns, as there are thousands of operations available.  For
-example, say you are looking for functions that involve computation of
-eigenvalues.  To find their names, try {\tt )what operations eig}.
-A rather large list of operations  is loaded into the workspace when
-this command  is first issued.  This  list will be deleted  when you
-clear the workspace  via {\tt )clear all} or {\tt )clear completely}.
-It will be re-created if it is needed again.
-\item[{\tt packages}]  displays a list of package constructors.
-\item[{\tt synonym}]  lists system command synonyms.
-\item[{\tt things}]    displays all  of the  above types for  items containing
-the pattern strings as  substrings.
-The command synonym  {\tt )apropos} is equivalent to
-{\tt )what things}.
-\enditems
-\indent{0}
-
-\par\noindent{\bf Also See:}
-\downlink{``\ugSysCmddisplayTitle''}{ugSysCmddisplayPage} 
-in section \ugSysCmddisplayNumber
-\downlink{``\ugSysCmdsetTitle''}{ugSysCmdsetPage} 
-in section \ugSysCmdsetNumber
-\downlink{``\ugSysCmdshowTitle''}{ugSysCmdshowPage} 
-in section \ugSysCmdshowNumber
-
-\texht{\egroup}{}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{ug21.ht}
-<<ug21.ht>>=
-\newcommand{\ugAppGraphicsTitle}{Programs for Axiom Images}
-\newcommand{\ugAppGraphicsNumber}{G.}
-
-@
-\subsection{G. Programs for Axiom Images}
-\label{ugAppGraphicsPage}
-\index{pages!ugAppGraphicsPage!ug21.ht}
-\index{ug21.ht!pages!ugAppGraphicsPage}
-\index{ugAppGraphicsPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugAppGraphicsPage}{G. Programs for Axiom Images}
-\beginscroll
-%
-This appendix contains the Axiom programs used to generate
-the images in the \Gallery{} color insert of this book.
-All these input files are included
-with the Axiom system.
-To produce the images
-on page 6 of the \Gallery{} insert, for example, issue the command:
-\begin{verbatim}
-)read images6
-\end{verbatim}
-
-These images were produced on an IBM RS/6000 model 530 with a
-standard color graphics adapter.  The smooth shaded images
-were made from X Window System screen dumps.
-The remaining images were produced with Axiom-generated
-PostScript output.  The images were reproduced from slides made on an Agfa
-ChromaScript PostScript interpreter with a Matrix Instruments QCR camera.
-
-\beginmenu
-    \menudownlink{{F.1. images1.input}}{ugFimagesOnePage}
-    \menudownlink{{F.2. images2.input}}{ugFimagesTwoPage}
-    \menudownlink{{F.3. images3.input}}{ugFimagesThreePage}
-    \menudownlink{{F.4. images5.input}}{ugFimagesFivePage}
-    \menudownlink{{F.5. images6.input}}{ugFimagesSixPage}
-    \menudownlink{{F.6. images7.input}}{ugFimagesSevenPage}
-    \menudownlink{{F.7. images8.input}}{ugFimagesEightPage}
-    \menudownlink{{F.8. conformal.input}}{ugFconformalPage}
-    \menudownlink{{F.9. tknot.input}}{ugFtknotPage}
-    \menudownlink{{F.10. ntube.input}}{ugFntubePage}
-    \menudownlink{{F.11. dhtri.input}}{ugFdhtriPage}
-    \menudownlink{{F.12. tetra.input}}{ugFtetraPage}
-    \menudownlink{{F.13. antoine.input}}{ugFantoinePage}
-    \menudownlink{{F.14. scherk.input}}{ugFscherkPage}
-\endmenu
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesOneTitle}{images1.input}
-\newcommand{\ugFimagesOneNumber}{G.1.}
-
-@
-\subsection{G.1. images1.input}
-\label{ugFimagesOnePage}
-\index{pages!ugFimagesOnePage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesOnePage}
-\index{ugFimagesOnePage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesOnePage}{G.1. images1.input}
-\beginscroll
-
-\labelSpace{3pc}
-
-  
-\noindent
-{\tt 1.\ \ \ )read\ tknot}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ torusKnot(15,17,\ 0.1,\ 6,\ 700)}\newline
-  
-\noindent
-
-\newpage
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesTwoTitle}{images2.input}
-\newcommand{\ugFimagesTwoNumber}{G.2.}
-
-@
-\subsection{G.2. images2.input}
-\label{ugFimagesTwoPage}
-\index{pages!ugFimagesTwoPage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesTwoPage}
-\index{ugFimagesTwoPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesTwoPage}{G.2. images2.input}
-\beginscroll
-
-These images illustrate how Newton's method converges when computing the
-complex cube roots of 2.   Each point in the \smath{(x,y)}-plane represents the
-complex number \smath{x + iy,} which is given as a starting point for Newton's
-method.  The poles in these images represent bad starting values.
-The flat areas are the regions of convergence to the three roots.
-
-  
-\noindent
-{\tt 1.\ \ \ )read\ newton}\newline
-{\tt 2.\ \ \ )read\ vectors}\newline
-{\tt 3.\ \ \ f\ :=\ newtonStep(x**3\ -\ 2)}\newline
-{\tt 4.\ \ \ }\newline
-  
-\noindent
-
-The function \texht{$f^n$}{f**n} computes $n$ steps of Newton's method.
-
-  
-\noindent
-{\tt 1.\ \ \ clipValue\ :=\ 4}\newline
-{\tt 2.\ \ \ drawComplexVectorField(f**3,\ -3..3,\ -3..3)}\newline
-{\tt 3.\ \ \ drawComplex(f**3,\ -3..3,\ -3..3)}\newline
-{\tt 4.\ \ \ drawComplex(f**4,\ -3..3,\ -3..3)}\newline
-  
-\noindent
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesThreeTitle}{images3.input}
-\newcommand{\ugFimagesThreeNumber}{G.3.}
-
-@
-\subsection{G.3. images3.input}
-\label{ugFimagesThreePage}
-\index{pages!ugFimagesThreePage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesThreePage}
-\index{ugFimagesThreePage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesThreePage}{G.3. images3.input}
-\beginscroll
-
-  
-\noindent
-{\tt 1.\ \ \ )r\ tknot}\newline
-{\tt 2.\ \ \ for\ i\ in\ 0..4\ repeat\ torusKnot(2,\ 2\ +\ i/4,\ 0.5,\ 25,\ 250)}\newline
-  
-\noindent
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesFiveTitle}{images5.input}
-\newcommand{\ugFimagesFiveNumber}{G.4.}
-
-@
-\subsection{G.4. images5.input}
-\label{ugFimagesFivePage}
-\index{pages!ugFimagesFivePage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesFivePage}
-\index{ugFimagesFivePage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesFivePage}{G.4. images5.input}
-\beginscroll
-
-The parameterization of the Etruscan Venus is due to George Frances.
-
-  
-\noindent
-{\tt 1.\ \ \ venus(a,r,steps)\ ==}\newline
-{\tt 2.\ \ \ \ \ surf\ :=\ (u:DFLOAT,\ v:DFLOAT):\ Point\ DFLOAT\ +->}\newline
-{\tt 3.\ \ \ \ \ \ \ cv\ :=\ cos(v)}\newline
-{\tt 4.\ \ \ \ \ \ \ sv\ :=\ sin(v)}\newline
-{\tt 5.\ \ \ \ \ \ \ cu\ :=\ cos(u)}\newline
-{\tt 6.\ \ \ \ \ \ \ su\ :=\ sin(u)}\newline
-{\tt 7.\ \ \ \ \ \ \ x\ :=\ r\ *\ cos(2*u)\ *\ cv\ +\ sv\ *\ cu}\newline
-{\tt 8.\ \ \ \ \ \ \ y\ :=\ r\ *\ sin(2*u)\ *\ cv\ -\ sv\ *\ su}\newline
-{\tt 9.\ \ \ \ \ \ \ z\ :=\ a\ *\ cv}\newline
-{\tt 10.\ \ \ \ \ \ point\ [x,y,z]}\newline
-{\tt 11.\ \ \ \ draw(surf,\ 0..\%pi,\ -\%pi..\%pi,\ var1Steps==steps,}\newline
-{\tt 12.\ \ \ \ \ \ \ \ \ var2Steps==steps,\ title\ ==\ "Etruscan\ Venus")}\newline
-{\tt 13.\ \ }\newline
-{\tt 14.\ \ venus(5/2,\ 13/10,\ 50)}\newline
-  
-\noindent
-
-The Figure-8 Klein Bottle
-parameterization is from
-``Differential Geometry and Computer Graphics'' by Thomas Banchoff,
-in {\it Perspectives in Mathematics,} Anniversary of Oberwolfasch 1984,
-Birkh\"{a}user-Verlag, Basel, pp. 43-60.
-
-  
-\noindent
-{\tt 1.\ \ \ klein(x,y)\ ==}\newline
-{\tt 2.\ \ \ \ \ cx\ :=\ cos(x)}\newline
-{\tt 3.\ \ \ \ \ cy\ :=\ cos(y)}\newline
-{\tt 4.\ \ \ \ \ sx\ :=\ sin(x)}\newline
-{\tt 5.\ \ \ \ \ sy\ :=\ sin(y)}\newline
-{\tt 6.\ \ \ \ \ sx2\ :=\ sin(x/2)}\newline
-{\tt 7.\ \ \ \ \ cx2\ :=\ cos(x/2)}\newline
-{\tt 8.\ \ \ \ \ sq2\ :=\ sqrt(2.0@DFLOAT)}\newline
-{\tt 9.\ \ \ \ \ point\ [cx\ *\ (cx2\ *\ (sq2\ +\ cy)\ +\ (sx2\ *\ sy\ *\ cy)),\ \_}\newline
-{\tt 10.\ \ \ \ \ \ \ \ \ \ \ sx\ *\ (cx2\ *\ (sq2\ +\ cy)\ +\ (sx2\ *\ sy\ *\ cy)),\ \_}\newline
-{\tt 11.\ \ \ \ \ \ \ \ \ \ \ -sx2\ *\ (sq2\ +\ cy)\ +\ cx2\ *\ sy\ *\ cy]}\newline
-{\tt 12.\ \ }\newline
-{\tt 13.\ \ draw(klein,\ 0..4*\%pi,\ 0..2*\%pi,\ var1Steps==50,}\newline
-{\tt 14.\ \ \ \ \ \ \ var2Steps==50,title=="Figure\ Eight\ Klein\ Bottle")}\newline
-  
-\noindent
-
-The next two images are examples of generalized tubes.
-
-  
-\noindent
-{\tt 15.\ \ )read\ ntube}\newline
-{\tt 16.\ \ rotateBy(p,\ theta)\ ==}\newline
-{\tt 17.\ \ \ \ c\ :=\ cos(theta)}\newline
-{\tt 18.\ \ \ \ s\ :=\ sin(theta)}\newline
-{\tt 19.\ \ \ \ point\ [p.1*c\ -\ p.2*s,\ p.1*s\ +\ p.2*c]}\newline
-{\tt 20.\ \ }\newline
-{\tt 21.\ \ bcircle\ t\ ==\ }\newline
-{\tt 22.\ \ \ \ point\ [3*cos\ t,\ 3*sin\ t,\ 0]}\newline
-{\tt 23.\ \ \ }\newline
-{\tt 24.\ \ twist(u,\ t)\ ==}\newline
-{\tt 25.\ \ \ \ theta\ :=\ 4*t}\newline
-{\tt 26.\ \ \ \ p\ :=\ point\ [sin\ u,\ cos(u)/2]}\newline
-{\tt 27.\ \ \ \ rotateBy(p,\ theta)}\newline
-{\tt 28.\ \ \ }\newline
-{\tt 29.\ \ ntubeDrawOpt(bcircle,\ twist,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
-{\tt 30.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 70,\ var2Steps\ ==\ 250)}\newline
-{\tt 31.\ \ }\newline
-{\tt 32.\ \ twist2(u,\ t)\ ==}\newline
-{\tt 33.\ \ \ \ theta\ :=\ t}\newline
-{\tt 34.\ \ \ \ p\ :=\ point\ [sin\ u,\ cos(u)]}\newline
-{\tt 35.\ \ \ \ rotateBy(p,\ theta)}\newline
-{\tt 36.\ \ }\newline
-{\tt 37.\ \ cf(u,v)\ ==\ sin(21*u)}\newline
-{\tt 38.\ \ }\newline
-{\tt 39.\ \ ntubeDrawOpt(bcircle,\ twist2,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
-{\tt 40.\ \ \ \ colorFunction\ ==\ cf,\ var1Steps\ ==\ 168,}\newline
-{\tt 41.\ \ \ \ var2Steps\ ==\ 126)}\newline
-  
-\noindent
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesSixTitle}{images6.input}
-\newcommand{\ugFimagesSixNumber}{G.5.}
-
-@
-\subsection{G.5. images6.input}
-\label{ugFimagesSixPage}
-\index{pages!ugFimagesSixPage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesSixPage}
-\index{ugFimagesSixPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesSixPage}{G.5. images6.input}
-\beginscroll
-
-\labelSpace{3pc}
-  
-\noindent
-{\tt 1.\ \ \ gam(x,y)\ ==\ }\newline
-{\tt 2.\ \ \ \ \ g\ :=\ Gamma\ complex(x,y)}\newline
-{\tt 3.\ \ \ \ \ point\ [x,y,max(min(real\ g,\ 4),\ -4),\ argument\ g]}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ }\newline
-{\tt 6.\ \ \ draw(gam,\ -\%pi..\%pi,\ -\%pi..\%pi,\ }\newline
-{\tt 7.\ \ \ \ \ \ \ \ title\ ==\ "Gamma(x\ +\ \%i*y)",\ \_}\newline
-{\tt 8.\ \ \ \ \ \ \ \ var1Steps\ ==\ 100,\ var2Steps\ ==\ 100)}\newline
-{\tt 9.\ \ \ }\newline
-{\tt 10.\ \ b(x,y)\ ==\ Beta(x,y)}\newline
-{\tt 11.\ \ }\newline
-{\tt 12.\ \ draw(b,\ -3.1..3,\ -3.1\ ..\ 3,\ title\ ==\ "Beta(x,y)")}\newline
-{\tt 13.\ \ }\newline
-{\tt 14.\ \ atf(x,y)\ ==\ }\newline
-{\tt 15.\ \ \ \ a\ :=\ atan\ complex(x,y)}\newline
-{\tt 16.\ \ \ \ point\ [x,y,real\ a,\ argument\ a]}\newline
-{\tt 17.\ \ }\newline
-{\tt 18.\ \ draw(atf,\ -3.0..\%pi,\ -3.0..\%pi)}\newline
-  
-\noindent
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesSevenTitle}{images7.input}
-\newcommand{\ugFimagesSevenNumber}{G.6.}
-
-@
-\subsection{G.6. images7.input}
-\label{ugFimagesSevenPage}
-\index{pages!ugFimagesSevenPage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesSevenPage}
-\index{ugFimagesSevenPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesSevenPage}{G.6. images7.input}
-\beginscroll
-
-First we look at the conformal
-map \texht{$z \mapsto z + 1/z$}{z +-> z + 1/z}.
-\labelSpace{2pc}
-  
-\noindent
-{\tt 1.\ \ \ )read\ conformal}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ f\ z\ ==\ z}\newline
-{\tt 5.\ \ \ }\newline
-{\tt 6.\ \ \ conformalDraw(f,\ -2..2,\ -2..2,\ 9,\ 9,\ "cartesian")}\newline
-{\tt 7.\ \ \ }\newline
-{\tt 8.\ \ \ f\ z\ ==\ z\ +\ 1/z}\newline
-{\tt 9.\ \ \ \ }\newline
-{\tt 10.\ \ conformalDraw(f,\ -2..2,\ -2..2,\ 9,\ 9,\ "cartesian")}\newline
-  
-\noindent
-
-The map \texht{$z \mapsto -(z+1)/(z-1)$}{z +-> -(z+1)/(z-1)} maps
-the unit disk to the right half-plane, as shown
-on the Riemann sphere.
-
-  
-\noindent
-{\tt 1.\ \ \ f\ z\ ==\ z}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ riemannConformalDraw(f,0.1..0.99,0..2*\%pi,7,11,"polar")}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ f\ z\ ==\ -(z+1)/(z-1)}\newline
-{\tt 6.\ \ \ }\newline
-{\tt 7.\ \ \ riemannConformalDraw(f,0.1..0.99,0..2*\%pi,7,11,"polar")}\newline
-{\tt 8.\ \ \ }\newline
-{\tt 9.\ \ \ riemannSphereDraw(-4..4,\ -4..4,\ 7,\ 7,\ "cartesian")}\newline
-  
-\noindent
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFimagesEightTitle}{images8.input}
-\newcommand{\ugFimagesEightNumber}{G.7.}
-
-@
-\subsection{G.7. images8.input}
-\label{ugFimagesEightPage}
-\index{pages!ugFimagesEightPage!ug21.ht}
-\index{ug21.ht!pages!ugFimagesEightPage}
-\index{ugFimagesEightPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFimagesEightPage}{G.7. images8.input}
-\beginscroll
-
-\labelSpace{1pc}
-  
-\noindent
-{\tt 1.\ \ \ )read\ dhtri}\newline
-{\tt 2.\ \ \ )read\ tetra}\newline
-{\tt 3.\ \ \ drawPyramid\ 4}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ )read\ antoine}\newline
-{\tt 6.\ \ \ drawRings\ 2}\newline
-{\tt 7.\ \ \ }\newline
-{\tt 8.\ \ \ )read\ scherk}\newline
-{\tt 9.\ \ \ drawScherk(3,3)}\newline
-{\tt 10.\ \ }\newline
-{\tt 11.\ \ )read\ ribbonsnew}\newline
-{\tt 12.\ \ drawRibbons([x**i\ for\ i\ in\ 1..5],\ x=-1..1,\ y=0..2)}\newline
-  
-\noindent
-
-
-%\input{gallery/conformal.htex}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFconformalTitle}{conformal.input}
-\newcommand{\ugFconformalNumber}{G.8.}
-
-@
-\subsection{G.8. conformal.input}
-\label{ugFconformalPage}
-\index{pages!ugFconformalPage!ug21.ht}
-\index{ug21.ht!pages!ugFconformalPage}
-\index{ugFconformalPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFconformalPage}{G.8. conformal.input}
-\beginscroll
-%
-The functions in this section draw conformal maps both on the
-plane and on the Riemann sphere.
-
-%-- Compile, don't interpret functions.
-%\xmpLine{)set fun comp on}{}
-  
-\noindent
-{\tt 1.\ \ \ C\ :=\ Complex\ DoubleFloat}\newline
-{\tt 2.\ \ \ S\ :=\ Segment\ DoubleFloat}\newline
-{\tt 3.\ \ \ R3\ :=\ Point\ DFLOAT}\newline
-{\tt 4.\ \ \ \ }\newline
-  
-\noindent
-
-\userfun{conformalDraw}{\it (f, rRange, tRange, rSteps, tSteps, coord)}
-draws the image of the coordinate grid under {\it f} in the complex plane.
-The grid may be given in either polar or Cartesian coordinates.
-Argument {\it f} is the function to draw;
-{\it rRange} is the range of the radius (in polar) or real (in Cartesian);
-{\it tRange} is the range of \texht{$\theta$}{\theta} (in polar) or imaginary (in Cartesian);
-{\it tSteps, rSteps}, are the number of intervals in the {\it r} and
-\texht{$\theta$}{\theta} directions; and
-{\it coord} is the coordinate system to use (either {\tt "polar"} or
-{\tt "cartesian"}).
-
-  
-\noindent
-{\tt 1.\ \ \ conformalDraw:\ (C\ ->\ C,\ S,\ S,\ PI,\ PI,\ String)\ ->\ VIEW3D}\newline
-{\tt 2.\ \ \ conformalDraw(f,rRange,tRange,rSteps,tSteps,coord)\ ==}\newline
-{\tt 3.\ \ \ \ \ transformC\ :=}\newline
-{\tt 4.\ \ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
-{\tt 5.\ \ \ \ \ \ \ cartesian2Complex}\newline
-{\tt 6.\ \ \ \ \ cm\ :=\ makeConformalMap(f,\ transformC)}\newline
-{\tt 7.\ \ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 8.\ \ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
-{\tt 9.\ \ \ \ \ makeViewport3D(sp,\ "Conformal\ Map")}\newline
-  
-\noindent
-
-\userfun{riemannConformalDraw}{\it (f, rRange, tRange, rSteps, tSteps, coord)}
-draws the image of the coordinate grid under {\it f} on the Riemann sphere.
-The grid may be given in either polar or Cartesian coordinates.
-Its arguments are the same as those for \userfun{conformalDraw}.
-  
-\noindent
-{\tt 10.\ \ riemannConformalDraw:(C->C,S,S,PI,PI,String)->VIEW3D}\newline
-{\tt 11.\ \ riemannConformalDraw(f,\ rRange,\ tRange,}\newline
-{\tt 12.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rSteps,\ tSteps,\ coord)\ ==}\newline
-{\tt 13.\ \ \ \ transformC\ :=}\newline
-{\tt 14.\ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
-{\tt 15.\ \ \ \ \ \ cartesian2Complex}\newline
-{\tt 16.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 17.\ \ \ \ cm\ :=\ makeRiemannConformalMap(f,\ transformC)}\newline
-{\tt 18.\ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
-{\tt 19.\ \ \ \ curve(sp,[point\ [0,0,2.0@DFLOAT,0],point\ [0,0,2.0@DFLOAT,0]])}\newline
-{\tt 20.\ \ \ \ makeViewport3D(sp,"Map\ on\ the\ Riemann\ Sphere")}\newline
-{\tt 21.\ \ }\newline
-{\tt 22.\ \ adaptGrid(sp,\ f,\ uRange,\ vRange,\ \ uSteps,\ vSteps)\ ==}\newline
-{\tt 23.\ \ \ \ delU\ :=\ (hi(uRange)\ -\ lo(uRange))/uSteps}\newline
-{\tt 24.\ \ \ \ delV\ :=\ (hi(vRange)\ -\ lo(vRange))/vSteps}\newline
-{\tt 25.\ \ \ \ uSteps\ :=\ uSteps\ +\ 1;\ vSteps\ :=\ vSteps\ +\ 1}\newline
-{\tt 26.\ \ \ \ u\ :=\ lo\ uRange}\newline
-{\tt 27.\ \ \ \ for\ i\ in\ 1..uSteps\ repeat}\newline
-{\tt 28.\ \ \ \ \ \ c\ :=\ curryLeft(f,u)}\newline
-{\tt 29.\ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 0}\newline
-{\tt 30.\ \ \ \ \ \ makeObject(c,vRange::SEG\ Float,colorFunction==cf,}\newline
-{\tt 31.\ \ \ \ \ \ \ \ space\ ==\ sp,\ tubeRadius\ ==\ .02,\ tubePoints\ ==\ 6)}\newline
-{\tt 32.\ \ \ \ \ \ u\ :=\ u\ +\ delU}\newline
-{\tt 33.\ \ \ \ v\ :=\ lo\ vRange}\newline
-{\tt 34.\ \ \ \ for\ i\ in\ 1..vSteps\ repeat}\newline
-{\tt 35.\ \ \ \ \ \ c\ :=\ curryRight(f,v)}\newline
-{\tt 36.\ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 1}\newline
-{\tt 37.\ \ \ \ \ \ makeObject(c,uRange::SEG\ Float,colorFunction==cf,}\newline
-{\tt 38.\ \ \ \ \ \ \ \ space\ ==\ sp,\ tubeRadius\ ==\ .02,\ tubePoints\ ==\ 6)}\newline
-{\tt 39.\ \ \ \ \ \ v\ :=\ v\ +\ delV}\newline
-{\tt 40.\ \ \ \ void()}\newline
-{\tt 41.\ \ }\newline
-{\tt 42.\ \ riemannTransform(z)\ ==}\newline
-{\tt 43.\ \ \ \ r\ :=\ sqrt\ norm\ z}\newline
-{\tt 44.\ \ \ \ cosTheta\ :=\ (real\ z)/r}\newline
-{\tt 45.\ \ \ \ sinTheta\ :=\ (imag\ z)/r}\newline
-{\tt 46.\ \ \ \ cp\ :=\ 4*r/(4+r**2)}\newline
-{\tt 47.\ \ \ \ sp\ :=\ sqrt(1-cp*cp)}\newline
-{\tt 48.\ \ \ \ if\ r>2\ then\ sp\ :=\ -sp}\newline
-{\tt 49.\ \ \ \ point\ [cosTheta*cp,\ sinTheta*cp,\ -sp\ +\ 1]}\newline
-{\tt 50.\ \ \ }\newline
-{\tt 51.\ \ cartesian2Complex(r:DFLOAT,\ i:DFLOAT):C\ ==}\newline
-{\tt 52.\ \ \ \ complex(r,\ i)}\newline
-{\tt 53.\ \ }\newline
-{\tt 54.\ \ polar2Complex(r:DFLOAT,\ th:DFLOAT):C\ ==\ }\newline
-{\tt 55.\ \ \ \ complex(r*cos(th),\ r*sin(th))}\newline
-{\tt 56.\ \ }\newline
-{\tt 57.\ \ makeConformalMap(f,\ transformC)\ ==}\newline
-{\tt 58.\ \ \ \ (u:DFLOAT,v:DFLOAT):R3\ +->\ }\newline
-{\tt 59.\ \ \ \ \ \ z\ :=\ f\ transformC(u,\ v)}\newline
-{\tt 60.\ \ \ \ \ \ point\ [real\ z,\ imag\ z,\ 0.0@DFLOAT]}\newline
-{\tt 61.\ \ \ }\newline
-{\tt 62.\ \ makeRiemannConformalMap(f,\ transformC)\ ==}\newline
-{\tt 63.\ \ \ \ (u:DFLOAT,\ v:DFLOAT):R3\ +->}\newline
-{\tt 64.\ \ \ \ \ \ riemannTransform\ f\ transformC(u,\ v)}\newline
-{\tt 65.\ \ }\newline
-{\tt 66.\ \ riemannSphereDraw:\ (S,\ S,\ PI,\ PI,\ String)\ ->\ VIEW3D}\newline
-{\tt 67.\ \ riemannSphereDraw(rRange,tRange,rSteps,tSteps,coord)\ ==}\newline
-{\tt 68.\ \ \ \ transformC\ :=}\newline
-{\tt 69.\ \ \ \ \ \ coord\ =\ "polar"\ =>\ polar2Complex}\newline
-{\tt 70.\ \ \ \ \ \ cartesian2Complex}\newline
-{\tt 71.\ \ \ \ grid\ :=\ (u:DFLOAT,\ v:DFLOAT):\ R3\ +->\ }\newline
-{\tt 72.\ \ \ \ \ \ z1\ :=\ transformC(u,\ v)}\newline
-{\tt 73.\ \ \ \ \ \ point\ [real\ z1,\ imag\ z1,\ 0]}\newline
-{\tt 74.\ \ \ \ sp\ :=\ createThreeSpace()}\newline
-{\tt 75.\ \ \ \ adaptGrid(sp,\ grid,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
-{\tt 76.\ \ \ \ connectingLines(sp,grid,rRange,tRange,rSteps,tSteps)}\newline
-{\tt 77.\ \ \ \ makeObject(riemannSphere,0..2*\%pi,0..\%pi,space==sp)}\newline
-{\tt 78.\ \ \ \ f\ :=\ (z:C):C\ +->\ z}\newline
-{\tt 79.\ \ \ \ cm\ :=\ makeRiemannConformalMap(f,\ transformC)}\newline
-{\tt 80.\ \ \ \ adaptGrid(sp,\ cm,\ rRange,\ tRange,\ rSteps,\ tSteps)}\newline
-{\tt 81.\ \ \ \ makeViewport3D(sp,\ "Riemann\ Sphere")}\newline
-{\tt 82.\ \ \ }\newline
-{\tt 83.\ \ connectingLines(sp,f,uRange,vRange,uSteps,vSteps)\ ==}\newline
-{\tt 84.\ \ \ \ delU\ :=\ (hi(uRange)\ -\ lo(uRange))/uSteps}\newline
-{\tt 85.\ \ \ \ delV\ :=\ (hi(vRange)\ -\ lo(vRange))/vSteps}\newline
-{\tt 86.\ \ \ \ uSteps\ :=\ uSteps\ +\ 1;\ vSteps\ :=\ vSteps\ +\ 1}\newline
-{\tt 87.\ \ \ \ u\ :=\ lo\ uRange}\newline
-{\tt 88.\ \ \ \ for\ i\ in\ 1..uSteps\ repeat}\newline
-{\tt 89.\ \ \ \ \ \ v\ :=\ lo\ vRange}\newline
-{\tt 90.\ \ \ \ \ \ for\ j\ in\ 1..vSteps\ repeat}\newline
-{\tt 91.\ \ \ \ \ \ \ \ p1\ :=\ f(u,v)}\newline
-{\tt 92.\ \ \ \ \ \ \ \ p2\ :=\ riemannTransform\ complex(p1.1,\ p1.2)}\newline
-{\tt 93.\ \ \ \ \ \ \ \ fun\ :=\ lineFromTo(p1,p2)}\newline
-{\tt 94.\ \ \ \ \ \ \ \ cf\ :=\ (t:DFLOAT):DFLOAT\ +->\ 3}\newline
-{\tt 95.\ \ \ \ \ \ \ \ makeObject(fun,\ 0..1,space==sp,tubePoints==4,}\newline
-{\tt 96.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tubeRadius==0.01,colorFunction==cf)}\newline
-{\tt 97.\ \ \ \ \ \ \ \ v\ :=\ v\ +\ delV}\newline
-{\tt 98.\ \ \ \ \ \ u\ :=\ u\ +\ delU}\newline
-{\tt 99.\ \ \ \ void()}\newline
-{\tt 100.\ \ }\newline
-{\tt 101.\ riemannSphere(u,v)\ ==\ }\newline
-{\tt 102.\ \ \ sv\ :=\ sin(v)}\newline
-{\tt 103.\ \ \ 0.99@DFLOAT*(point\ [cos(u)*sv,sin(u)*sv,cos(v),0.0@DFLOAT])+}\newline
-{\tt 104.\ \ \ \ \ point\ [0.0@DFLOAT,\ 0.0@DFLOAT,\ 1.0@DFLOAT,\ 4.0@DFLOAT]}\newline
-{\tt 105.\ \ }\newline
-{\tt 106.\ lineFromTo(p1,\ p2)\ ==}\newline
-{\tt 107.\ \ \ d\ :=\ p2\ -\ p1}\newline
-{\tt 108.\ \ \ (t:DFLOAT):Point\ DFLOAT\ +->}\newline
-{\tt 109.\ \ \ \ \ p1\ +\ t*d}\newline
-  
-\noindent
-
-%\input{gallery/tknot.htex}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFtknotTitle}{tknot.input}
-\newcommand{\ugFtknotNumber}{G.9.}
-
-@
-\subsection{G.9. tknot.input}
-\label{ugFtknotPage}
-\index{pages!ugFtknotPage!ug21.ht}
-\index{ug21.ht!pages!ugFtknotPage}
-\index{ugFtknotPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFtknotPage}{G.9. tknot.input}
-\beginscroll
-%
-Create a $(p,q)$ torus-knot with radius $r$ around the curve.
-The formula was derived by Larry Lambe.
+\index{pages!UXANNADec!annaex.ht}
+\index{annaex.ht!pages!UXANNADec}
+\index{UXANNADec!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNADec}{Decision Agents}
+\begin{scroll}
+\blankline
+Some features are either present or absent in a problem.  Examples of such
+binary decisions include {\em is a matrix symmetric?} and {\em is a
+function continuous?}  However in practice many questions are about the {\em
+degree} to which a problem exhibits a property: {\em how much does a
+function oscillate?}, or {\em how stiff are these differential equations?}
+\blankline
+We have therefore created decision agents of two types, reflecting their
+property --- {\em Binary Agents} are Boolean functions returning either true
+or false and {\em Intensity Functions} are quantitative and return a range of
+different values, either numerical or structured types. The framework we are
+developing is able to deal with both these forms of information.  
+\blankline
 
-  
-\noindent
-{\tt 1.\ \ \ )read\ ntube}\newline
-{\tt 2.\ \ \ torusKnot:\ (DFLOAT,\ DFLOAT,\ DFLOAT,\ PI,\ PI)\ ->\ VIEW3D}\newline
-{\tt 3.\ \ \ torusKnot(p,\ q\ ,r,\ uSteps,\ tSteps)\ ==}\newline
-{\tt 4.\ \ \ \ \ knot\ :=\ (t:DFLOAT):Point\ DFLOAT\ +->\ }\newline
-{\tt 5.\ \ \ \ \ \ \ fac\ :=\ 4/(2.2@DFLOAT-sin(q*t))}\newline
-{\tt 6.\ \ \ \ \ \ \ fac\ *\ point\ [cos(p*t),\ sin(p*t),\ cos(q*t)]}\newline
-{\tt 7.\ \ \ \ \ circle\ :=\ (u:DFLOAT,\ t:DFLOAT):\ Point\ DFLOAT\ +->}\newline
-{\tt 8.\ \ \ \ \ \ \ r\ *\ point\ [cos\ u,\ sin\ u]}\newline
-{\tt 9.\ \ \ \ \ ntubeDrawOpt(knot,\ circle,\ 0..2*\%pi,\ 0..2*\%pi,}\newline
-{\tt 10.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ uSteps,\ var2Steps\ ==\ tSteps)}\newline
-{\tt 11.\ \ }\newline
-  
-\noindent
+In any given problem area (for example solving ordinary differential
+equations, optimization etc.) we have a selection of {\em methods}.  These
+might be to use a particular NAG routine, or they might involve employing a
+higher-level strategy such as transforming the problem into an equivalent,
+but easier to solve, form.  
+\blankline
+Associated with every method we define a {\em
+measure function} which assesses the suitability of that method to a
+particular problem.  Each measure function has access to a range of symbolic
+{\em agents} which can answer questions about the various properties of the
+problem in hand.
+\blankline
+\end{scroll}
+\downlink{ Inference Mechanisms }{UXANNAInfer}
+\downlink{ Method Domains }{UXANNAMeth}
+\downlink{ Measure Functions }{UXANNAMeas}
+\downlink{ Computational Agents }{UXANNAAgent}
 
-%\input{gallery/ntube.htex}
-\endscroll
-\autobuttons
 \end{page}
 
 @
-<<ug21.ht>>=
-\newcommand{\ugFntubeTitle}{ntube.input}
-\newcommand{\ugFntubeNumber}{G.10.}
-
-@
-\subsection{G.10. ntube.input}
-\label{ugFntubePage}
+\subsection{Inference Mechanisms}
+\label{UXANNAInfer}
 \begin{itemize}
-\item ugFimagesFivePage \ref{ugFimagesFivePage} on
-page~\pageref{ugFimagesFivePage}
+\item UXANNAMeth \ref{UXANNAMeth} on page~\pageref{UXANNAMeth}
+\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
+\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
+\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
 \end{itemize}
-\index{pages!ugFntubePage!ug21.ht}
-\index{ug21.ht!pages!ugFntubePage}
-\index{ugFntubePage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFntubePage}{G.10. ntube.input}
-\beginscroll
-%
-The functions in this file create generalized tubes (also known as generalized
-cylinders).
-These functions draw a 2-d curve in the normal
-planes around a 3-d curve.
-
-  
-\noindent
-{\tt 1.\ \ \ R3\ :=\ Point\ DFLOAT}\newline
-{\tt 2.\ \ \ R2\ :=\ Point\ DFLOAT}\newline
-{\tt 3.\ \ \ S\ :=\ Segment\ Float}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ ThreeCurve\ :=\ DFLOAT\ ->\ R3}\newline
-{\tt 6.\ \ \ TwoCurve\ :=\ (DFLOAT,\ DFLOAT)\ ->\ R2}\newline
-{\tt 7.\ \ \ Surface\ :=\ (DFLOAT,\ DFLOAT)\ ->\ R3}\newline
-{\tt 8.\ \ \ }\newline
-{\tt 9.\ \ \ FrenetFrame\ :=\ }\newline
-{\tt 10.\ \ \ \ \ Record(value:R3,tangent:R3,normal:R3,binormal:R3)}\newline
-{\tt 11.\ \ frame:\ FrenetFrame}\newline
-{\tt 12.\ \ }\newline
-  
-\noindent
-
-\userfun{ntubeDraw}{\it (spaceCurve, planeCurve,}
-$u_0 .. u_1,$ $t_0 .. t_1)$
-draws {\it planeCurve} in the normal planes of {\it spaceCurve.}
-The parameter $u_0 .. u_1$ specifies
-the parameter range for {\it planeCurve}
-and $t_0 .. t_1$ specifies the parameter range for {\it spaceCurve}.
-Additionally, the plane curve function takes
-a second parameter: the current parameter of {\it spaceCurve}.
-This allows the plane curve to change shape
-as it goes around the space curve.
-See \downlink{``\ugFimagesFiveTitle''}{ugFimagesFivePage} 
-in Section \ugFimagesFiveNumber\ignore{ugFimagesFive} for an example of this.
-%
-  
-\noindent
-{\tt 1.\ \ \ ntubeDraw:\ (ThreeCurve,TwoCurve,S,S)\ ->\ VIEW3D}\newline
-{\tt 2.\ \ \ ntubeDraw(spaceCurve,planeCurve,uRange,tRange)\ ==}\newline
-{\tt 3.\ \ \ \ \ ntubeDrawOpt(spaceCurve,\ planeCurve,\ uRange,\ \_}\newline
-{\tt 4.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tRange,\ []\$List\ DROPT)}\newline
-{\tt 5.\ \ \ \ }\newline
-{\tt 6.\ \ \ ntubeDrawOpt:\ (ThreeCurve,TwoCurve,S,S,List\ DROPT)}\newline
-{\tt 7.\ \ \ \ \ \ \ ->\ VIEW3D}\newline
-{\tt 8.\ \ \ ntubeDrawOpt(spaceCurve,planeCurve,uRange,tRange,l)\ ==}\newline
-{\tt 9.\ \ \ \ \ \ \ \ \ \ \ \ \ }\newline
-{\tt 10.\ \ \ \ delT:DFLOAT\ :=\ (hi(tRange)\ -\ lo(tRange))/10000}\newline
-{\tt 11.\ \ \ \ oldT:DFLOAT\ :=\ lo(tRange)\ -\ 1}\newline
-{\tt 12.\ \ \ \ fun\ :=\ ngeneralTube(spaceCurve,planeCurve,delT,oldT)}\newline
-{\tt 13.\ \ \ \ draw(fun,\ uRange,\ tRange,\ l)}\newline
-{\tt 14.\ \ }\newline
-  
-\noindent
-
-\userfun{nfrenetFrame}{\it (c, t, delT)}
-numerically computes the Frenet frame
-about the curve {\it c} at {\it t}.
-Parameter {\it delT} is a small number used to
-compute derivatives.
-  
-\noindent
-{\tt 15.\ \ nfrenetFrame(c,\ t,\ delT)\ ==}\newline
-{\tt 16.\ \ \ \ f0\ :=\ c(t)}\newline
-{\tt 17.\ \ \ \ f1\ :=\ c(t+delT)}\newline
-{\tt 18.\ \ \ \ t0\ :=\ f1\ -\ f0}\newline
-{\tt 19.\ \ \ \ n0\ :=\ f1\ +\ f0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\newline
-{\tt 20.\ \ \ \ b\ :=\ cross(t0,\ n0)}\newline
-{\tt 21.\ \ \ \ n\ :=\ cross(b,t0)}\newline
-{\tt 22.\ \ \ \ ln\ :=\ length\ n}\newline
-{\tt 23.\ \ \ \ lb\ :=\ length\ b}\newline
-{\tt 24.\ \ \ \ ln\ =\ 0\ or\ lb\ =\ 0\ =>}\newline
-{\tt 25.\ \ \ \ \ \ \ \ error\ "Frenet\ Frame\ not\ well\ defined"}\newline
-{\tt 26.\ \ \ \ n\ :=\ (1/ln)*n}\newline
-{\tt 27.\ \ \ \ b\ :=\ (1/lb)*b}\newline
-{\tt 28.\ \ \ \ [f0,\ t0,\ n,\ b]\$FrenetFrame}\newline
-  
-\noindent
-
-\userfun{ngeneralTube}{\it (spaceCurve, planeCurve,}{\it  delT, oltT)}
-creates a function that can be passed to the system axiomFun{draw} command.
-The function is a parameterized surface for the general tube
-around {\it spaceCurve}.  {\it delT} is a small number used to compute
-derivatives. {\it oldT} is used to hold the current value of the
-{\it t} parameter for {\it spaceCurve.}  This is an efficiency measure
-to ensure that frames are only computed once for each value of {\it t}.
-  
-\noindent
-{\tt 29.\ \ ngeneralTube:\ (ThreeCurve,\ TwoCurve,\ DFLOAT,\ DFLOAT)\ ->\ Surface}\newline
-{\tt 30.\ \ ngeneralTube(spaceCurve,\ planeCurve,\ delT,\ oldT)\ ==}\newline
-{\tt 31.\ \ \ \ free\ frame}\newline
-{\tt 32.\ \ \ \ (v:DFLOAT,\ t:\ DFLOAT):\ R3\ +->}\newline
-{\tt 33.\ \ \ \ \ \ if\ (t\ \texht{$\sim$}{~}=\ oldT)\ then}\newline
-{\tt 34.\ \ \ \ \ \ \ \ frame\ :=\ nfrenetFrame(spaceCurve,\ t,\ delT)}\newline
-{\tt 35.\ \ \ \ \ \ \ \ oldT\ :=\ t}\newline
-{\tt 36.\ \ \ \ \ \ p\ :=\ planeCurve(v,\ t)}\newline
-{\tt 37.\ \ \ \ \ \ frame.value\ +\ p.1*frame.normal\ +\ p.2*frame.binormal}\newline
-  
-\noindent
-
-%\input{gallery/dhtri.htex}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFdhtriTitle}{dhtri.input}
-\newcommand{\ugFdhtriNumber}{G.11.}
-
-@
-\subsection{G.11. dhtri.input}
-\label{ugFdhtriPage}
-\index{pages!ugFdhtriPage!ug21.ht}
-\index{ug21.ht!pages!ugFdhtriPage}
-\index{ugFdhtriPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFdhtriPage}{G.11. dhtri.input}
-\beginscroll
-%
-Create affine transformations (DH matrices) that transform
-a given triangle into another.
-
-  
-\noindent
-{\tt 1.\ \ \ tri2tri:\ (List\ Point\ DFLOAT,\ List\ Point\ DFLOAT)\ ->\ DHMATRIX(DFLOAT)}\newline
-{\tt 2.\ \ \ tri2tri(t1,\ t2)\ ==}\newline
-{\tt 3.\ \ \ \ \ n1\ :=\ triangleNormal(t1)}\newline
-{\tt 4.\ \ \ \ \ n2\ :=\ triangleNormal(t2)}\newline
-{\tt 5.\ \ \ \ \ tet2tet(concat(t1,\ n1),\ concat(t2,\ n2))}\newline
-{\tt 6.\ \ \ \ }\newline
-{\tt 7.\ \ \ tet2tet:\ (List\ Point\ DFLOAT,\ List\ Point\ DFLOAT)\ ->\ DHMATRIX(DFLOAT)}\newline
-{\tt 8.\ \ \ tet2tet(t1,\ t2)\ ==}\newline
-{\tt 9.\ \ \ \ \ m1\ :=\ makeColumnMatrix\ t1}\newline
-{\tt 10.\ \ \ \ m2\ :=\ makeColumnMatrix\ t2}\newline
-{\tt 11.\ \ \ \ m2\ *\ inverse(m1)}\newline
-{\tt 12.\ \ \ }\newline
-{\tt 13.\ \ makeColumnMatrix(t)\ ==}\newline
-{\tt 14.\ \ \ \ m\ :=\ new(4,4,0)\$DHMATRIX(DFLOAT)}\newline
-{\tt 15.\ \ \ \ for\ x\ in\ t\ for\ i\ in\ 1..repeat}\newline
-{\tt 16.\ \ \ \ \ \ for\ j\ in\ 1..3\ repeat}\newline
-{\tt 17.\ \ \ \ \ \ \ \ m(j,i)\ :=\ x.j}\newline
-{\tt 18.\ \ \ \ \ \ m(4,i)\ :=\ 1}\newline
-{\tt 19.\ \ \ \ m}\newline
-{\tt 20.\ \ \ }\newline
-{\tt 21.\ \ triangleNormal(t)\ ==}\newline
-{\tt 22.\ \ \ \ a\ :=\ triangleArea\ t}\newline
-{\tt 23.\ \ \ \ p1\ :=\ t.2\ -\ t.1}\newline
-{\tt 24.\ \ \ \ p2\ :=\ t.3\ -\ t.2}\newline
-{\tt 25.\ \ \ \ c\ :=\ cross(p1,\ p2)}\newline
-{\tt 26.\ \ \ \ len\ :=\ length(c)}\newline
-{\tt 27.\ \ \ \ len\ =\ 0\ =>\ error\ "degenerate\ triangle!"}\newline
-{\tt 28.\ \ \ \ c\ :=\ (1/len)*c}\newline
-{\tt 29.\ \ \ \ t.1\ +\ sqrt(a)\ *\ c}\newline
-{\tt 30.\ \ \ }\newline
-{\tt 31.\ \ triangleArea\ t\ ==}\newline
-{\tt 32.\ \ \ \ a\ :=\ length(t.2\ -\ t.1)}\newline
-{\tt 33.\ \ \ \ b\ :=\ length(t.3\ -\ t.2)}\newline
-{\tt 34.\ \ \ \ c\ :=\ length(t.1\ -\ t.3)}\newline
-{\tt 35.\ \ \ \ s\ :=\ (a+b+c)/2}\newline
-{\tt 36.\ \ \ \ sqrt(s*(s-a)*(s-b)*(s-c))}\newline
-  
-\noindent
-
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFtetraTitle}{tetra.input}
-\newcommand{\ugFtetraNumber}{G.12.}
-
-@
-\subsection{G.12. tetra.input}
-\label{ugFtetraPage}
-\index{pages!ugFtetraPage!ug21.ht}
-\index{ug21.ht!pages!ugFtetraPage}
-\index{ugFtetraPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFtetraPage}{G.12. tetra.input}
-\beginscroll
-%
-%\input{gallery/tetra.htex}
-%\outdent{Sierpinsky's Tetrahedron}
-
-\labelSpace{3pc}
-
-  
-\noindent
-{\tt 1.\ \ \ )set\ expose\ add\ con\ DenavitHartenbergMatrix}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ x1:DFLOAT\ :=\ sqrt(2.0@DFLOAT/3.0@DFLOAT)}\newline
-{\tt 4.\ \ \ x2:DFLOAT\ :=\ sqrt(3.0@DFLOAT)/6}\newline
-{\tt 5.\ \ \ }\newline
-{\tt 6.\ \ \ p1\ :=\ point\ [-0.5@DFLOAT,\ -x2,\ 0.0@DFLOAT]}\newline
-{\tt 7.\ \ \ p2\ :=\ point\ [0.5@DFLOAT,\ -x2,\ 0.0@DFLOAT]}\newline
-{\tt 8.\ \ \ p3\ :=\ point\ [0.0@DFLOAT,\ 2*x2,\ 0.0@DFLOAT]}\newline
-{\tt 9.\ \ \ p4\ :=\ point\ [0.0@DFLOAT,\ 0.0@DFLOAT,\ x1]}\newline
-{\tt 10.\ \ \ }\newline
-{\tt 11.\ \ baseTriangle\ \ :=\ [p2,\ p1,\ p3]}\newline
-{\tt 12.\ \ }\newline
-{\tt 13.\ \ mt\ \ :=\ [0.5@DFLOAT*(p2+p1),\ 0.5@DFLOAT*(p1+p3),\ 0.5@DFLOAT*(p3+p2)]}\newline
-{\tt 14.\ \ }\newline
-{\tt 15.\ \ bt1\ :=\ [mt.1,\ p1,\ mt.2]}\newline
-{\tt 16.\ \ bt2\ :=\ [p2,\ mt.1,\ mt.3]}\newline
-{\tt 17.\ \ bt3\ :=\ [mt.2,\ p3,\ mt.3]}\newline
-{\tt 18.\ \ bt4\ :=\ [0.5@DFLOAT*(p2+p4),\ 0.5@DFLOAT*(p1+p4),\ 0.5@DFLOAT*(p3+p4)]}\newline
-{\tt 19.\ \ }\newline
-{\tt 20.\ \ tt1\ :=\ tri2tri(baseTriangle,\ bt1)}\newline
-{\tt 21.\ \ tt2\ :=\ tri2tri(baseTriangle,\ bt2)}\newline
-{\tt 22.\ \ tt3\ :=\ tri2tri(baseTriangle,\ bt3)}\newline
-{\tt 23.\ \ tt4\ :=\ tri2tri(baseTriangle,\ bt4)}\newline
-{\tt 24.\ \ }\newline
-{\tt 25.\ \ drawPyramid(n)\ ==}\newline
-{\tt 26.\ \ \ \ s\ :=\ createThreeSpace()}\newline
-{\tt 27.\ \ \ \ dh\ :=\ rotatex(0.0@DFLOAT)}\newline
-{\tt 28.\ \ \ \ drawPyramidInner(s,\ n,\ dh)}\newline
-{\tt 29.\ \ \ \ makeViewport3D(s,\ "Sierpinsky\ Tetrahedron")}\newline
-{\tt 30.\ \ }\newline
-{\tt 31.\ \ drawPyramidInner(s,\ n,\ dh)\ ==}\newline
-{\tt 32.\ \ \ \ n\ =\ 0\ =>\ makeTetrahedron(s,\ dh,\ n)}\newline
-{\tt 33.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt1)}\newline
-{\tt 34.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt2)}\newline
-{\tt 35.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt3)}\newline
-{\tt 36.\ \ \ \ drawPyramidInner(s,\ n-1,\ dh\ *\ tt4)}\newline
-{\tt 37.\ \ }\newline
-{\tt 38.\ \ makeTetrahedron(sp,\ dh,\ color)\ ==}\newline
-{\tt 39.\ \ \ \ w1\ :=\ dh*p1}\newline
-{\tt 40.\ \ \ \ w2\ :=\ dh*p2}\newline
-{\tt 41.\ \ \ \ w3\ :=\ dh*p3}\newline
-{\tt 42.\ \ \ \ w4\ :=\ dh*p4}\newline
-{\tt 43.\ \ \ \ polygon(sp,\ [w1,\ w2,\ w4])}\newline
-{\tt 44.\ \ \ \ polygon(sp,\ [w1,\ w3,\ w4])}\newline
-{\tt 45.\ \ \ \ polygon(sp,\ [w2,\ w3,\ w4])}\newline
-{\tt 46.\ \ \ \ void()}\newline
-  
-\noindent
-
-
-%\input{gallery/antoine.htex}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFantoineTitle}{antoine.input}
-\newcommand{\ugFantoineNumber}{G.13.}
-
-@
-\subsection{G.13. antoine.input}
-\label{ugFantoinePage}
-\index{pages!ugFantoinePage!ug21.ht}
-\index{ug21.ht!pages!ugFantoinePage}
-\index{ugFantoinePage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFantoinePage}{G.13. antoine.input}
-\beginscroll
-%
-Draw Antoine's Necklace.
-Thank you to Matthew Grayson at IBM's T.J Watson Research Center for the idea.
-
-  
-\noindent
-{\tt 1.\ \ \ )set\ expose\ add\ con\ DenavitHartenbergMatrix}\newline
-{\tt 2.\ \ \ }\newline
-{\tt 3.\ \ \ torusRot:\ DHMATRIX(DFLOAT)}\newline
-{\tt 4.\ \ \ }\newline
-{\tt 5.\ \ \ }\newline
-{\tt 6.\ \ \ drawRings(n)\ ==}\newline
-{\tt 7.\ \ \ \ \ s\ :=\ createThreeSpace()}\newline
-{\tt 8.\ \ \ \ \ dh:DHMATRIX(DFLOAT)\ :=\ identity()}\newline
-{\tt 9.\ \ \ \ \ drawRingsInner(s,\ n,\ dh)}\newline
-{\tt 10.\ \ \ \ makeViewport3D(s,\ "Antoine's\ Necklace")}\newline
-{\tt 11.\ \ }\newline
-  
-\noindent
-
-In order to draw Antoine rings, we take one ring, scale it down to
-a smaller size, rotate it around its central axis, translate it
-to the edge of the larger ring and rotate it around the edge to
-a point corresponding to its count (there are 10 positions around
-the edge of the larger ring). For each of these new rings we
-recursively perform the operations, each ring becoming 10 smaller
-rings. Notice how the \axiomType{DHMATRIX} operations are used to build up
-the proper matrix composing all these transformations.
-
-  
-\noindent
-{\tt 1.\ \ \ drawRingsInner(s,\ n,\ dh)\ ==}\newline
-{\tt 2.\ \ \ \ \ n\ =\ 0\ =>}\newline
-{\tt 3.\ \ \ \ \ \ \ drawRing(s,\ dh)}\newline
-{\tt 4.\ \ \ \ \ \ \ void()}\newline
-{\tt 5.\ \ \ \ \ t\ :=\ 0.0@DFLOAT}\newline
-{\tt 6.\ \ \ \ \ p\ :=\ 0.0@DFLOAT}\newline
-{\tt 7.\ \ \ \ \ tr\ :=\ 1.0@DFLOAT}\newline
-{\tt 8.\ \ \ \ \ inc\ :=\ 0.1@DFLOAT}\newline
-{\tt 9.\ \ \ \ \ for\ i\ in\ 1..10\ repeat}\newline
-{\tt 10.\ \ \ \ \ \ tr\ :=\ tr\ +\ inc}\newline
-{\tt 11.\ \ \ \ \ \ inc\ :=\ -inc}\newline
-{\tt 12.\ \ \ \ \ \ dh'\ :=\ dh*rotatez(t)*translate(tr,0.0@DFLOAT,0.0@DFLOAT)*}\newline
-{\tt 13.\ \ \ \ \ \ \ \ \ \ \ \ \ rotatey(p)*scale(0.35@DFLOAT,\ 0.48@DFLOAT,\ 0.4@DFLOAT)}\newline
-{\tt 14.\ \ \ \ \ \ drawRingsInner(s,\ n-1,\ dh')}\newline
-{\tt 15.\ \ \ \ \ \ t\ :=\ t\ +\ 36.0@DFLOAT}\newline
-{\tt 16.\ \ \ \ \ \ p\ :=\ p\ +\ 90.0@DFLOAT}\newline
-{\tt 17.\ \ \ \ void()}\newline
-{\tt 18.\ \ }\newline
-{\tt 19.\ \ drawRing(s,\ dh)\ ==}\newline
-{\tt 20.\ \ \ \ free\ torusRot}\newline
-{\tt 21.\ \ \ \ torusRot\ :=\ dh}\newline
-{\tt 22.\ \ \ \ makeObject(torus,\ 0..2*\%pi,\ 0..2*\%pi,\ var1Steps\ ==\ 6,}\newline
-{\tt 23.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ space\ ==\ s,\ var2Steps\ ==\ 15)}\newline
-{\tt 24.\ \ }\newline
-{\tt 25.\ \ torus(u\ ,v)\ ==}\newline
-{\tt 26.\ \ \ \ cu\ :=\ cos(u)/6}\newline
-{\tt 27.\ \ \ \ torusRot*point\ [(1+cu)*cos(v),(1+cu)*sin(v),(sin\ u)/6]}\newline
-  
-\noindent
-
-%\input{gallery/scherk.htex}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-<<ug21.ht>>=
-\newcommand{\ugFscherkTitle}{scherk.input}
-\newcommand{\ugFscherkNumber}{G.14.}
-
-@
-\subsection{G.14. scherk.input}
-\label{ugFscherkPage}
-\index{pages!ugFscherkPage!ug21.ht}
-\index{ug21.ht!pages!ugFscherkPage}
-\index{ugFscherkPage!ug21.ht!pages}
-<<ug21.ht>>=
-\begin{page}{ugFscherkPage}{G.14. scherk.input}
-\beginscroll
-%
-
-Scherk's minimal surface, defined by:
-\texht{$e^z \cos(x) = \cos(y)$}{\axiom{exp(z) * cos(x) = cos(y)}}.
-See: {\it A Comprehensive Introduction to Differential Geometry,} Vol. 3,
-by Michael Spivak, Publish Or Perish, Berkeley, 1979, pp. 249-252.
-
-  
-\noindent
-{\tt 1.\ \ \ (xOffset,\ yOffset):DFLOAT}\newline
-{\tt 2.\ \ \ \ }\newline
-{\tt 3.\ \ \ }\newline
-{\tt 4.\ \ \ drawScherk(m,n)\ ==}\newline
-{\tt 5.\ \ \ \ \ free\ xOffset,\ yOffset}\newline
-{\tt 6.\ \ \ \ \ space\ :=\ createThreeSpace()}\newline
-{\tt 7.\ \ \ \ \ for\ i\ in\ 0..m-1\ repeat}\newline
-{\tt 8.\ \ \ \ \ \ \ xOffset\ :=\ i*\%pi}\newline
-{\tt 9.\ \ \ \ \ \ \ for\ j\ in\ 0\ ..\ n-1\ repeat}\newline
-{\tt 10.\ \ \ \ \ \ \ \ rem(i+j,\ 2)\ =\ 0\ =>\ 'iter}\newline
-{\tt 11.\ \ \ \ \ \ \ \ yOffset\ :=\ j*\%pi}\newline
-{\tt 12.\ \ \ \ \ \ \ \ drawOneScherk(space)}\newline
-{\tt 13.\ \ \ \ makeViewport3D(space,\ "Scherk's\ Minimal\ Surface")}\newline
-{\tt 14.\ \ }\newline
-{\tt 15.\ \ scherk1(u,v)\ ==}\newline
-{\tt 16.\ \ \ \ x\ :=\ cos(u)/exp(v)}\newline
-{\tt 17.\ \ \ \ point\ [xOffset\ +\ acos(x),\ yOffset\ +\ u,\ v,\ abs(v)]}\newline
-{\tt 18.\ \ \ }\newline
-{\tt 19.\ \ scherk2(u,v)\ ==}\newline
-{\tt 20.\ \ \ \ x\ :=\ cos(u)/exp(v)}\newline
-{\tt 21.\ \ \ \ point\ [xOffset\ -\ acos(x),\ yOffset\ +\ u,\ v,\ abs(v)]}\newline
-{\tt 22.\ \ \ }\newline
-{\tt 23.\ \ scherk3(u,v)\ ==\ }\newline
-{\tt 24.\ \ \ \ x\ :=\ exp(v)\ *\ cos(u)}\newline
-{\tt 25.\ \ \ \ point\ [xOffset\ +\ u,\ yOffset\ +\ acos(x),\ v,\ abs(v)]}\newline
-{\tt 26.\ \ \ }\newline
-{\tt 27.\ \ scherk4(u,v)\ ==\ }\newline
-{\tt 28.\ \ \ \ x\ :=\ exp(v)\ *\ cos(u)}\newline
-{\tt 29.\ \ \ \ point\ [xOffset\ +\ u,\ yOffset\ -\ acos(x),\ v,\ abs(v)]}\newline
-{\tt 30.\ \ \ }\newline
-{\tt 31.\ \ drawOneScherk(s)\ ==}\newline
-{\tt 32.\ \ \ \ makeObject(scherk1,-\%pi/2..\%pi/2,0..\%pi/2,space==s,}\newline
-{\tt 33.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
-{\tt 34.\ \ \ \ makeObject(scherk2,-\%pi/2..\%pi/2,0..\%pi/2,space==s,}\newline
-{\tt 35.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
-{\tt 36.\ \ \ \ makeObject(scherk3,-\%pi/2..\%pi/2,-\%pi/2..0,space==s,}\newline
-{\tt 37.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
-{\tt 38.\ \ \ \ makeObject(scherk4,-\%pi/2..\%pi/2,-\%pi/2..0,space==s,}\newline
-{\tt 39.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ var1Steps\ ==\ 28,\ var2Steps\ ==\ 28)}\newline
-{\tt 40.\ \ \ \ void()}\newline
-  
-\noindent
-\endscroll
-\autobuttons
+\index{pages!UXANNAInfer!annaex.ht}
+\index{annaex.ht!pages!UXANNAInfer}
+\index{UXANNAInfer!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAInfer}{Inference Mechanisms}
+\begin{scroll}
+\blankline
+The inference machine will take the problem description as provided by the
+user and perform an initial analysis to verify its validity.  It will
+consider, in turn, all of the available methods within its knowledge base
+which might solve that problem.  In doing so it analyses the input problem to
+find out about any attributes that could affect the ability of the methods
+under consideration to perform effectively.  
+\blankline
+Some of these
+measures may use lazy evaluation in the sense that, if a method already
+assessed is believed to be a good candidate, and if evaluating the current
+measure will be relatively expensive, then that measure will not be evaluated
+unless later evidence shows that the selected method is not, in fact, a
+successful strategy, for example if it has failed.
+\end{scroll}
+\downlink{ Method Domains }{UXANNAMeth}
+\downlink{ Measure Functions }{UXANNAMeas}
+\downlink{ Computational Agents }{UXANNAAgent}
+\downlink{ Examples }{UXANNAEx}
 \end{page}
 
 @
-\section{union.ht}
-\subsection{Domain {\bf Union(a:A,...,b:B)}}
-\label{DomainUnion}
-\index{pages!DomainUnion!union.ht}
-\index{union.ht!pages!DomainUnion}
-\index{DomainUnion!union.ht!pages}
-<<union.ht>>=
-\begin{page}{DomainUnion}{Domain {\em Union(a:A,...,b:B)}}
-\beginscroll
-{\em Union} takes any number of "tag"-domain pairs of arguments:
-\indentrel{2}
-\newline \spad{a}, a tag, an element of domain \spadtype{Symbol}
-\newline \spad{A}, a domain of category \spadtype{SetCategory}
-\newline\tab{10}...
-\newline \spad{b}, a tag, an element of domain \spadtype{Symbol}
-\newline \spad{B}, a domain of category \spadtype{SetCategory}
-\indentrel{-2}\newline
-This constructor is a primitive in Axiom. 
-\newline
-\beginmenu
-\item\menulispdownlink{Description}{(|dbSpecialDescription| '|Union|)) }\tab{15}General description
-\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|Union|)}\tab{15}All exported operations of \spad{Union(a:A,b:B)}
-%\item\menudownlink{Examples}   {UnionExamples}   \tab{15}Examples illustrating use
-\item\menulispdownlink{Exports}{(|dbSpecialExports| '|Union|)}\tab{15}Explicit categories and operations
-\endmenu
-\vspace{1}\newline
-In this tagged \spad{Union}, tags \spad{a,...,b} must be distinct. 
-\newline
-For an alternate "untagged" form of \spad{Union}, see \downlink{Union(A,B)}{UntaggedUnion}.
-\endscroll\end{page}
- 
-@
-\subsection{Domain Constructor {\bf Union}}
-\label{UnionDescription}
-\index{pages!UnionDescription!union.ht}
-\index{union.ht!pages!UnionDescription}
-\index{UnionDescription!union.ht!pages}
-<<union.ht>>=
-\begin{page}{UnionDescription}{Domain Constructor {\em Union}}
-\beginscroll
-\newline\menuitemstyle{}\tab{2}Union({\em a:A},{\em b:B})
-\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
-{\em a}, a tag, an element of domain \spadtype{Symbol}
-\newline\tab{-2}
-{\em A}, a domain of category \spadtype{SetCategory}
-\newline\tab{-2}
-{\em b}, a tag, an element of domain \spadtype{Symbol}
-\newline\tab{-2}
-{\em B}, a domain of category \spadtype{SetCategory}
-\indent{0}\newline\tab{2}{\em Returns:}\indent{17}\tab{-2}
-the "union of {\em A} and {\em B}" as described below.
-\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
-{\em Union(a:A,b:B)} denotes the class of objects 
-which are either members of domain {\em A} or of domain {\em B}.
-The symbols {\em a} and {\em b} are called "tags" and 
-are used to identify the two "branches"
-of the union.
-The {\em Union} constructor can take any number of arguments and
-has an alternate form without {\em tags}.
-This tagged {\em Union} type is necessary, for example, to disambiguate
-two branches of a union where {\em A} and {\em B} denote the same type.
-{\em Union} is a primitive domain of Axiom which cannot be
-defined in the Axiom language. 
-\endscroll\end{page}
-
-@
-\subsection{Domain {\bf Union(A,...,B)}}
-\label{UntaggedUnion}
-\index{pages!UntaggedUnion!union.ht}
-\index{union.ht!pages!UntaggedUnion}
-\index{UntaggedUnion!union.ht!pages}
-<<union.ht>>=
-\begin{page}{UntaggedUnion}{Domain {\em Union(A,...,B)}}
-\beginscroll
-{\em Union} takes any number of domain arguments:
-\indentrel{2}
-\newline \spad{A}, a domain of category \spadtype{SetCategory}
-\newline\tab{10}...
-\newline \spad{B}, a domain of category \spadtype{SetCategory}
-\indentrel{-2}\newline
-\spad{Union} is a primitive constructor in Axiom. 
-\newline
-\beginmenu
-\item\menulispdownlink{Description}{(|dbSpecialDescription| '|UntaggedUnion|)) }\tab{15}General description
-\item\menulispdownlink{Operations}{(|dbSpecialOperations| '|UntaggedUnion|)}\tab{15}All exported operations of \spad{Union(A,B)}
-%\item\menudownlink{Examples}   {UTUnionExamples}   \tab{15}Examples illustrating use
-%\item\menudownlink{Exports}    {UTUnionExports}    \tab{15}Explicit categories and operations
-\endmenu
-\vspace{1}\newline
-In this untagged form of \spad{Union}, domains \spad{A,...,B} must be distinct.
-\endscroll\end{page}
-
-@
-\subsection{Domain Constructor {\bf Union}}
-\label{UTUnionDescription}
-\index{pages!UTUnionDescription!union.ht}
-\index{union.ht!pages!UTUnionDescription}
-\index{UTUnionDescription!union.ht!pages}
-<<union.ht>>=
-\begin{page}{UTUnionDescription}{Domain Constructor {\em Union}}
-\beginscroll
-\newline\menuitemstyle{}\tab{2}Union({\em A},{\em B})
-\newline\tab{2}{\em Arguments:}\indent{17}\tab{-2}
-{\em A}, a domain of category \spadtype{SetCategory}
-\newline\tab{-2}
-{\em B}, a domain of category \spadtype{SetCategory}
-\indent{0}\newline\tab{2}{\em Returns:}\indent{17}\tab{-2}
-the "union of {\em A} and {\em B}" as described below.
-\indent{0}\newline\tab{2}{\em Description:}\indent{15}\tab{0}
-{\em Union(A,B)} denotes the class of objects which are
-which are either members of domain {\em A} or of domain {\em B}.
-The {\em Union} constructor can take any number of arguments and
-has an alternate form using {\em tags}.
-{\em Union} is a primitive domain of Axiom which cannot be
-defined in the Axiom language. 
-\endscroll\end{page}
-
-
-@
-\subsection{TITLE}
-\label{TPD}
-\index{pages!TPD!alist.ht}
-\index{alist.ht!pages!TPD}
-\index{TPD!alist.ht!pages}
-<<alist.ht>>=
-
-
-@
-\section{uniseg.ht}
-<<uniseg.ht>>=
-\newcommand{\UniversalSegmentXmpTitle}{UniversalSegment}
-\newcommand{\UniversalSegmentXmpNumber}{9.84}
-
-@
-\subsection{UniversalSegment}
-\label{UniversalSegmentXmpPage}
+\subsection{Method Domains}
+\label{UXANNAMeth}
 \begin{itemize}
-\item SegmentXmpPage \ref{SegmentXmpPage} on
-page~pageref{SegmentXmpPage}
-\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
-page~pageref{SegmentBindingXmpPage}
-\item ListXmpPage \ref{ListXmpPage} on
-page~pageref{ListXmpPage}
-\item StreamXmpPage \ref{StreamXmpPage} on
-page~pageref{StreamXmpPage}
+\item UXANNAMeas \ref{UXANNAMeas} on page~\pageref{UXANNAMeas}
+\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
+\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
 \end{itemize}
-\index{pages!UniversalSegmentXmpPage!uniseg.ht}
-\index{uniseg.ht!pages!UniversalSegmentXmpPage}
-\index{UniversalSegmentXmpPage!uniseg.ht!pages}
-<<uniseg.ht>>=
-\begin{page}{UniversalSegmentXmpPage}{UniversalSegment}
-\beginscroll
-
-The \spadtype{UniversalSegment} domain generalizes \spadtype{Segment}
-by allowing segments without a ``hi'' end point.
-\xtc{
-}{
-\spadpaste{pints  := 1..         \bound{pints}}
-}
-\xtc{
-}{
-\spadpaste{nevens := (0..) by -2 \bound{nevens}}
-}
-\xtc{
-Values of type \spadtype{Segment} are automatically converted to
-type \spadtype{UniversalSegment} when appropriate.
-}{
-\spadpaste{useg: UniversalSegment(Integer) := 3..10 \bound{useg}}
-}
-\xtc{
-The operation \spadfunFrom{hasHi}{UniversalSegment} is used to test
-whether a segment has a \spad{hi} end point.
-}{
-\spadpaste{hasHi pints  \free{pints}}
-}
-\xtc{
-}{
-\spadpaste{hasHi nevens \free{nevens}}
-}
-\xtc{
-}{
-\spadpaste{hasHi useg   \free{useg}}
-}
-\xtc{
-All operations available on type \spadtype{Segment} apply to
-\spadtype{UniversalSegment}, with the proviso that expansions produce
-streams rather than lists.
-This is to accommodate infinite expansions.
-}{
-\spadpaste{expand pints \free{pints}}
-}
-\xtc{
-}{
-\spadpaste{expand nevens \free{nevens}}
-}
-\xtc{
-}{
-\spadpaste{expand [1, 3, 10..15, 100..]}
-}
-
-For more information on related topics,  see
-\downlink{`Segment'}{SegmentXmpPage}\ignore{Segment},
-\downlink{`SegmentBinding'}{SegmentBindingXmpPage}\ignore{SegmentBinding},
-\downlink{`List'}{ListXmpPage}\ignore{List}, and
-\downlink{`Stream'}{StreamXmpPage}\ignore{Stream}.
-\showBlurb{UniversalSegment}
-\endscroll
-\autobuttons
+\index{pages!UXANNAMeth!annaex.ht}
+\index{annaex.ht!pages!UXANNAMeth}
+\index{UXANNAMeth!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAMeth}{Method Domains}
+\begin{scroll}
+\blankline
+An Axiom {\em domain} has been created for each method or strategy for
+solving the problem.  These method domains each implement two functions with
+a uniform (method independant) interface.
+\blankline {\bf measure:} A function which calculates an estimate of suitability of
+this particular method to the problem if there is a possibility that the
+method under consideration is more appropriate than one already investigated.
+\blankline
+If it may be possible to improve on the current favourite method, the function
+will call computational agents to analyse the problem for specific features
+and calculate the measure from the results these agents return, 
+using a variation on the Lucks/Gladwell intensity and compatibility
+model if conflict between attributes, as investigated by these computational
+agents, may be present.
+\blankline
+{\bf implementation:} A function which may be one of two distinct kinds. 
+The first kind uses the interface to the NAG Library to call a particular 
+routine with the required parameters.  Some of the parameters may need to be
+calculated from the data provided before the external function call.  
+\blankline
+The other kind will apply a ``high level'' strategy to try to solve the
+problem e.g.~a transformation of an expression from one that is difficult to
+solve to one which is easier, or a splitting of the problem into several more
+easily solvable parts.  For example, for a solution of the equation above,
+since the integral is semi-infinite we might wish to transform the range by,
+say, using the mapping {\it y -> 1/x} on the section {\it 1
+< x < \inputbitmap{\htbmdir{}/infty.xbm}}) and
+adding the result to the unmapped section {\it 0 < x < 1}.
+\blankline
+\end{scroll}
+\downlink{ Measure Functions }{UXANNAMeas}
+\downlink{ Computational Agents }{UXANNAAgent}
+\downlink{ Examples }{UXANNAEx}
 \end{page}
-%
-
-@
-\section{up.ht}
-<<up.ht>>=
-\newcommand{\UnivariatePolynomialXmpTitle}{UnivariatePolynomial}
-\newcommand{\UnivariatePolynomialXmpNumber}{9.83}
 
 @
-\subsection{UnivariatePolynomial}
-\label{UnivariatePolynomialXmpPage}
+\subsection{Measure Functions}
+\label{UXANNAMeas}
 \begin{itemize}
-\item ugProblemFactorPage \ref{ugProblemFactorPage} on
-page~pageref{ugProblemFactorPage}
-\item ugIntroVariablesPage \ref{ugIntroVariablesPage} on
-page~pageref{ugIntroVariablesPage}
-\item ugTypesConvertPage \ref{ugTypesConvertPage} on
-page~pageref{ugTypesConvertPage}
-\item PolynomialXmpPage \ref{PolynomialXmpPage} on
-page~pageref{PolynomialXmpPage}
-\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
-page~pageref{MultivariatePolynomialXmpPage}
-\item DistributedMultivariatePolynomialXmpPage \ref{DistributedMultivariatePolynomialXmpPage} on
-page~pageref{DistributedMultivariatePolynomialXmpPage}
+\item UXANNAAgent \ref{UXANNAAgent} on page~\pageref{UXANNAAgent}
+\item UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
 \end{itemize}
-\index{pages!UnivariatePolynomialXmpPage!up.ht}
-\index{up.ht!pages!UnivariatePolynomialXmpPage}
-\index{UnivariatePolynomialXmpPage!up.ht!pages}
-<<up.ht>>=
-\begin{page}{UnivariatePolynomialXmpPage}{UnivariatePolynomial}
-\beginscroll
-
-The domain constructor \spadtype{UnivariatePolynomial}
-(abbreviated \spadtype{UP})
-creates domains of univariate polynomials in a specified variable.
-For example, the domain
-\spadtype{UP(a1,POLY FRAC INT)} provides polynomials in the single variable
-\spad{a1} whose coefficients are general polynomials with rational
-number coefficients.
-
-\beginImportant
-\noindent {\bf Restriction:}
-\texht{\begin{quotation}\noindent}{\newline\indent{5}}
-Axiom does not allow you to create types where
-\spadtype{UnivariatePolynomial} is contained in the coefficient type of
-\spadtype{Polynomial}. Therefore,
-\spadtype{UP(x,POLY INT)} is legal but \spadtype{POLY UP(x,INT)} is not.
-\texht{\end{quotation}}{\indent{0}}
-\endImportant
-
-\xtc{
-\spadtype{UP(x,INT)} is the domain of polynomials in the single
-variable \spad{x} with integer coefficients.
-}{
-\spadpaste{(p,q) : UP(x,INT) \bound{pdec}\bound{qdec}}
-}
-\xtc{
-}{
-\spadpaste{p := (3*x-1)**2 * (2*x + 8) \free{pdec}\bound{p}}
-}
-\xtc{
-}{
-\spadpaste{q := (1 - 6*x + 9*x**2)**2 \free{qdec}\bound{q}}
-}
-\xtc{
-The usual arithmetic operations are available for univariate
-polynomials.
-}{
-\spadpaste{p**2 + p*q  \free{p q}}
-}
-\xtc{
-The operation \spadfunFrom{leadingCoefficient}{UnivariatePolynomial}
-extracts the coefficient of the term of highest degree.
-}{
-\spadpaste{leadingCoefficient p \free{p}}
-}
-\xtc{
-The operation \spadfunFrom{degree}{UnivariatePolynomial} returns
-the degree of the polynomial.
-Since the polynomial has only one variable, the variable is not supplied
-to operations like \spadfunFrom{degree}{UnivariatePolynomial}.
-}{
-\spadpaste{degree p \free{p}}
-}
-\xtc{
-The reductum of the polynomial, the polynomial obtained by
-subtracting the term of highest order, is returned by
-\spadfunFrom{reductum}{UnivariatePolynomial}.
-}{
-\spadpaste{reductum p \free{p}}
-}
-\xtc{
-The operation \spadfunFrom{gcd}{UnivariatePolynomial} computes the
-greatest common divisor of two polynomials.
-}{
-\spadpaste{gcd(p,q) \free{p q}}
-}
-\xtc{
-The operation \spadfunFrom{lcm}{UnivariatePolynomial} computes the
-least common multiple.
-}{
-\spadpaste{lcm(p,q) \free{p q}}
-}
-\xtc{
-The operation \spadfunFrom{resultant}{UnivariatePolynomial}
-computes the resultant of two univariate polynomials.
-In the case of \spad{p} and \spad{q}, the resultant is \spad{0} because they
-share a common root.
-}{
-\spadpaste{resultant(p,q) \free{p q}}
-}
-\xtc{
-To compute the derivative of a univariate polynomial with respect to its
-variable, use \spadfunFrom{D}{UnivariatePolynomial}.
-}{
-\spadpaste{D p \free{p}}
-}
-\xtc{
-Univariate polynomials can also be used as if they were functions.
-To evaluate a univariate polynomial at some point, apply
-the polynomial to the point.
-}{
-\spadpaste{p(2) \free{p}}
-}
-\xtc{
-The same syntax is used for composing two univariate polynomials, i.e.
-substituting one polynomial for the variable in another.
-This substitutes \spad{q} for the variable in \spad{p}.
-}{
-\spadpaste{p(q) \free{p q}}
-}
-\xtc{
-This substitutes \spad{p} for the variable in \spad{q}.
-}{
-\spadpaste{q(p) \free{p q}}
-}
-\xtc{
-To obtain a list of coefficients of the polynomial, use
-\spadfunFrom{coefficients}{UnivariatePolynomial}.
-}{
-\spadpaste{l := coefficients p \free{p}\bound{l}}
-}
-\xtc{
-From this you can use \spadfunFrom{gcd}{UnivariatePolynomial}
-and \spadfunFrom{reduce}{List}
-to compute the content of the polynomial.
-}{
-\spadpaste{reduce(gcd,l) \free{l}}
-}
-\xtc{
-Alternatively (and more easily),
-you can just call \spadfunFrom{content}{UnivariatePolynomial}.
-}{
-\spadpaste{content p \free{p}}
-}
-
-Note that the operation \spadfunFrom{coefficients}{UnivariatePolynomial}
-omits the zero coefficients from the list.
-Sometimes it is useful to convert a univariate polynomial
-to a vector whose \eth{\spad{i }} position contains the degree \spad{i-1}
-coefficient of the polynomial.
-\xtc{
-}{
-\spadpaste{ux := (x**4+2*x+3)::UP(x,INT) \bound{ux}}
-}
-\xtc{
-To get a complete vector of coefficients, use the operation
-\spadfunFrom{vectorise}{UnivariatePolynomial}, which takes a
-univariate polynomial and an integer denoting the length of the
-desired vector.
-}{
-\spadpaste{vectorise(ux,5) \free{ux}}
-}
-
-It is common to want to do something to every term of a polynomial,
-creating a new polynomial in the process.
-\xtc{
-This is a function for iterating across the terms of a polynomial,
-squaring each term.
-}{
-\begin{spadsrc}[\bound{squareTerms}]
-squareTerms(p) ==
-  reduce(+,[t**2 for t in monomials p])
-\end{spadsrc}
-}
-\xtc{
-Recall what \spad{p} looked like.
-}{
-\spadpaste{p \free{p}}
-}
-\xtc{
-We can demonstrate \userfun{squareTerms} on \spad{p}.
-}{
-\spadpaste{squareTerms p \free{p}\free{squareTerms}}
-}
-
-When the coefficients of the univariate polynomial belong to a
-field,\footnote{For example, when the coefficients are rational
-numbers, as opposed to integers.  The important property of
-a field is that non-zero elements can be divided and produce
-another element. The quotient of the integers 2 and 3 is not
-another integer.}
-it is possible to compute quotients and remainders.
-\xtc{
-}{
-\spadpaste{(r,s) : UP(a1,FRAC INT) \bound{rdec}\bound{sdec}}
-}
-\xtc{
-}{
-\spadpaste{r := a1**2 - 2/3  \free{rdec}\bound{r}}
-}
-\xtc{
-}{
-\spadpaste{s := a1 + 4       \free{sdec}\bound{s}}
-}
-\xtc{
-When the coefficients are rational numbers or rational expressions, the
-operation \spadfunFrom{quo}{UnivariatePolynomial} computes the quotient
-of two polynomials.
-}{
-\spadpaste{r quo s \free{r s}}
-}
-\xtc{
-The operation
-\spadfunFrom{rem}{UnivariatePolynomial} computes the remainder.
-}{
-\spadpaste{r rem s \free{r s}}
-}
-\xtc{
-The operation \spadfunFrom{divide}{UnivariatePolynomial} can be used to
-return a record of both components.
-}{
-\spadpaste{d := divide(r, s) \free{r s}\bound{d}}
-}
-\xtc{
-Now we check the arithmetic!
-}{
-\spadpaste{r - (d.quotient * s + d.remainder) \free{r s d}}
-}
-\xtc{
-It is also possible to integrate univariate polynomials when the
-coefficients belong to a field.
-}{
-\spadpaste{integrate r \free{r}}
-}
-\xtc{
-}{
-\spadpaste{integrate s \free{s}}
-}
-
-One application of univariate polynomials is to see expressions in terms
-of a specific variable.
-%
-\xtc{
-We start with a polynomial in \spad{a1} whose coefficients
-are quotients of polynomials in \spad{b1} and \spad{b2}.
-}{
-\spadpaste{t : UP(a1,FRAC POLY INT) \bound{tdec}}
-}
-\xtc{
-Since in this case we are not talking about using multivariate
-polynomials in only two variables, we use \spadtype{Polynomial}.
-We also use \spadtype{Fraction} because we want fractions.
-}{
-\spadpaste{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3) \free{tdec}\bound{t}}
-}
-\xtc{
-We push all the variables into a single quotient of polynomials.
-}{
-\spadpaste{u : FRAC POLY INT := t \bound{u}\free{t}}
-}
-\xtc{
-Alternatively, we can view this as a polynomial in the variable
-This is a {\it mode-directed} conversion: you indicate
-as much of the structure as you care about and let Axiom
-decide on the full type and how to do the transformation.
-}{
-\spadpaste{u :: UP(b1,?) \free{u}}
-}
-
-See \downlink{``\ugProblemFactorTitle''}{ugProblemFactorPage} in 
-Section \ugProblemFactorNumber\ignore{ugProblemFactor}
-for a discussion of the factorization facilities
-in Axiom for univariate polynomials.
-For more information on related topics, see
-\downlink{``\ugIntroVariablesTitle''}{ugIntroVariablesPage} in 
-Section \ugIntroVariablesNumber\ignore{ugIntroVariables},
-\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} in 
-Section \ugTypesConvertNumber\ignore{ugTypesConvert},
-\downlink{`Polynomial'}{PolynomialXmpPage}\ignore{Polynomial},
-\downlink{`MultivariatePolynomial'}{MultivariatePolynomialXmpPage}
-\ignore{MultivariatePolynomial}, and
-\downlink{`DistributedMultivariatePolynomial'}
-{DistributedMultivariatePolynomialXmpPage}
-\ignore{DistributedMultivariatePolynomial}.
-%
-\showBlurb{UnivariatePolynomial}
-\endscroll
-\autobuttons
+\index{pages!UXANNAMeas!annaex.ht}
+\index{annaex.ht!pages!UXANNAMeas}
+\index{UXANNAMeas!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAMeas}{Measure Functions}
+\begin{scroll}
+\blankline
+Each measure function will estimate the ability of a particular method to
+solve a problem.  It will consult whichever agents are needed to perform
+analysis on the problem in order to calculate the measure.  There is a
+parameter which would contain the best compatibility
+value found so far.  
+\blankline
+However, the interpretation we give to the results of some tests is not
+always clear-cut.  If a set of tests give
+conflicting advice as to the appropriateness of a particular method, it
+becomes important to decide not only {\it whether} certain properties are
+present but also their {\it degree}.  This gives us a basis for estimating the
+compatibility of each property.  
+\blankline
+We have taken for our model the system recommended by Lucks and Gladwell
+which uses a system of measurement of compatibility allowing for interaction
+and conflict between a number of attributes.  All of these processes may not
+be required if the choice is clear-cut e.g. we have an integral to calculate
+which has a particular singularity structure for which one particular method
+has been specifically constructed.  However, for more difficult cases a
+composite picture should be built up to calculate a true measurement. 
+\blankline
+How the compatibility functions interpret the measurements of various
+attributes is up to them and may vary between differing methods.  It is this
+area that takes as its basis the {\it judgement} of Numerical Analysis
+`experts' whether that be from the documentation (which may be deficient in
+certain respects) or from alternative sources.  However, its assessment of
+the suitability or otherwise of a particular method is reflected in a single
+normalised value facilitating the direct comparison of the suitability of a
+number of possible methods.
+\blankline
+\end{scroll}
+\downlink{ Computational Agents }{UXANNAAgent}
+\downlink{ Examples }{UXANNAEx}
 \end{page}
 
 @
-\section{vector.ht}
-<<vector.ht>>=
-\newcommand{\VectorXmpTitle}{Vector}
-\newcommand{\VectorXmpNumber}{9.85}
-
-@
-\subsection{Vector}
-\label{VectorXmpPage}
-\begin{itemize}
-\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
-page~pageref{OneDimensionalArrayXmpPage}
-\item ListXmpPage \ref{ListXmpPage} on
-page~pageref{ListXmpPage}
-\item MatrixXmpPage \ref{MatrixXmpPage} on
-page~pageref{MatrixXmpPage}
-\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
-page~pageref{OneDimensionalArrayXmpPage}
-\item SetXmpPage \ref{SetXmpPage} on
-page~pageref{SetXmpPage}
-\item TableXmpPage \ref{TableXmpPage} on
-page~pageref{TableXmpPage}
-\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
-page~pageref{TwoDimensionalArrayXmpPage}
-\end{itemize}
-\index{pages!VectorXmpPage!vector.ht}
-\index{vector.ht!pages!VectorXmpPage}
-\index{VectorXmpPage!vector.ht!pages}
-<<vector.ht>>=
-\begin{page}{VectorXmpPage}{Vector}
-\beginscroll
-
-The \spadtype{Vector} domain is used for storing data in a one-dimensional
-indexed data structure.
-A vector is a homogeneous data structure in that all the components of the
-vector must belong to the same Axiom domain.
-Each vector has a fixed length specified by the user; vectors are not
-extensible.
-This domain is similar to the \spadtype{OneDimensionalArray} domain,
-except that when the components of a \spadtype{Vector} belong to a
-\spadtype{Ring}, arithmetic operations are provided.
-For more examples of operations that are defined for both
-\spadtype{Vector} and \spadtype{OneDimensionalArray}, see
-\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}
-\ignore{OneDimensionalArray}.
-
-As with the \spadtype{OneDimensionalArray} domain, a \spadtype{Vector} can
-be created by calling the operation \spadfunFrom{new}{Vector}, its components
-can be accessed by calling the operations \spadfunFrom{elt}{Vector} and
-\spadfunFrom{qelt}{Vector}, and its components can be reset by calling the
-operations \spadfunFrom{setelt}{Vector} and
-\spadfunFromX{qsetelt}{Vector}.
-\xtc{
-This creates a vector of integers of length
-\spad{5} all of whose components are \spad{12}.
-}{
-\spadpaste{u : VECTOR INT := new(5,12) \bound{u}}
-}
-\xtc{
-This is how you create a vector from a list of its components.
-}{
-\spadpaste{v : VECTOR INT := vector([1,2,3,4,5]) \bound{v}}
-}
-
-\xtc{
-Indexing for vectors begins at \spad{1}.
-The last element has index equal to the length of the vector,
-which is computed by \spadopFrom{\#}{Vector}.
-}{
-\spadpaste{\#(v) \free{v}}
-}
-\xtc{
-This is the standard way to use \spadfunFrom{elt}{Vector} to extract an
-element.
-Functionally, it is the same as if you had typed \spad{elt(v,2)}.
-}{
-\spadpaste{v.2 \free{v}}
-}
-\xtc{
-This is the standard way to use \spadfunFrom{setelt}{Vector} to change an
-element.
-It is the same as if you had typed \spad{setelt(v,3,99)}.
-}{
-\spadpaste{v.3 := 99 \free{v}\bound{vdelta}}
-}
-\xtc{
-Now look at \spad{v} to see the change.
-You can
-use \spadfunFrom{qelt}{Vector} and \spadfunFromX{qsetelt}{Vector} (instead
-of \spadfunFrom{elt}{Vector} and \spadfunFrom{setelt}{Vector},
-respectively) but {\it only} when you know that the index is within the valid
-range.
-}{
-\spadpaste{v \free{vdelta}}
-}
-
-\xtc{
-When the components belong to a \spadtype{Ring}, Axiom
-provides arithmetic operations for \spadtype{Vector}.
-These include left and right scalar multiplication.
-}{
-\spadpaste{5 * v \free{vdelta}}
-}
-\xtc{
-}{
-\spadpaste{v * 7 \free{vdelta}}
-}
-\xtc{
-}{
-\spadpaste{w : VECTOR INT := vector([2,3,4,5,6]) \bound{w}}
-}
+\subsection{Computational Agents}
+\label{UXANNAAgent}
+See UXANNAEx \ref{UXANNAEx} on page~\pageref{UXANNAEx}
+\index{pages!UXANNAAgent!annaex.ht}
+\index{annaex.ht!pages!UXANNAAgent}
+\index{UXANNAAgent!annaex.ht!pages}
+<<annaex.ht>>=
+\begin{page}{UXANNAAgent}{Computational Agents}
+\begin{scroll}
+\blankline
+Computational Agents are those program segments which investigate the
+attributes of the input function or functions, such as 
+{\bf stiffnessAndStabilityOfODEIF}
+(the {\em IF} indicates that it is an {\em Intensity Function} i.e. one that
+returns a normalised real number or a set of normalised real numbers).  They
+are usually functions or programs written completely in the Axiom
+language and implemented using computer algebra.
+\blankline
+Some agents will be common to more than one problem domain whereas others
+will be specific to a single domain.  They also vary greatly in their
+complexity.  It is a fairly simple task to return details about the range of
+a function since this information will have been included in the problem
+specification.  It is a different order of complexity to return details of
+its singularity structure.
+\blankline
 \xtc{
-Addition and subtraction are also available.
+As an example, here is a call to the computational agent {\bf
+singularitiesOf} to obtain the list of singularities of the function 
+{\it tan x} which are in the range 
+{\it 0..12\inputbitmap{\htbmdir{}/pi.xbm}}:
+\blankline
 }{
-\spadpaste{v + w \free{vdelta w}}
 }
 \xtc{
-Of course, when adding or subtracting, the two vectors must have the same
-length or an error message is displayed.
 }{
-\spadpaste{v - w \free{vdelta w}}
+\spadpaste{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT \free{lib3} }
 }
-
-For more information about other aggregate domains,
-see the following:
-\downlink{`List'}{ListXmpPage}\ignore{List},
-\downlink{`Matrix'}{MatrixXmpPage}\ignore{Matrix},
-\downlink{`OneDimensionalArray'}{OneDimensionalArrayXmpPage}\ignore{OneDimensionalArray},
-\downlink{`Set'}{SetXmpPage}\ignore{Set},
-\downlink{`Table'}{TableXmpPage}\ignore{Table}, and
-\downlink{`TwoDimensionalArray'}{TwoDimensionalArrayXmpPage}\ignore{TwoDimensionalArray}.
-Issue the system command \spadcmd{)show Vector}
-to display the full list of operations defined by
-\spadtype{Vector}.
-
-\endscroll
-\autobuttons
+\blankline
+Each of these computational agents which may be called by a number of method
+domains retain their output in a dynamic hash-table, so speeding the process
+and retaining efficiency.
+\end{scroll}
+\downlink{ Examples }{UXANNAEx}
 \end{page}
-%
-
-@
-\section{void.ht}
-<<void.ht>>=
-\newcommand{\VoidXmpTitle}{Void}
-\newcommand{\VoidXmpNumber}{9.86}
 
 @
-\subsection{Void}
-\label{VoidXmpPage}
-\index{pages!VoidXmpPage!void.ht}
-\index{void.ht!pages!VoidXmpPage}
-\index{VoidXmpPage!void.ht!pages}
-<<void.ht>>=
-\begin{page}{VoidXmpPage}{Void}
-\beginscroll
-
-When an expression is not in a value context, it is given type \spadtype{Void}.
-For example, in the expression
+\chapter{ANNA Algebra Code}
 \begin{verbatim}
-r := (a; b; if c then d else e; f)
+)co annacat.spad
+)co cont.spad
+)co d01Package.spad
+)co d01agents.spad
+)co d01routine.spad
+)co d01transform.spad
+)co d01weights.spad
+)co d02Package.spad
+)co d02agents.spad
+)co d02routine.spad
+)co d03Package.spad
+)co d03agents.spad
+)co d03routine.spad
+)co e04Package.spad
+)co e04agents.spad
+)co e04routine.spad
+)co functions.spad
+)co routines.spad
+)co tools.spad
 \end{verbatim}
-values are used only from the subexpressions \spad{c} and \spad{f}: all
-others are thrown away.
-The subexpressions \spad{a}, \spad{b}, \spad{d} and \spad{e}
-are evaluated for side-effects only and have type \spadtype{Void}.
-There is a unique value of type \spadtype{Void}.
-
-\xtc{
-You will most often see results of type \spadtype{Void} when you
-declare a variable.
-}{
-\spadpaste{a : Integer}
-}
-\noOutputXtc{
-Usually no output is displayed for \spadtype{Void} results.
-You can force the display of a rather ugly object by issuing
-\spadcmd{)set message void on}.
-}{
-\spadpaste{)set message void on}
-}
-\xtc{
-}{
-\spadpaste{b : Fraction Integer}
-}
-\noOutputXtc{
-}{
-\spadpaste{)set message void off}
-}
-\xtc{
-All values can be converted to type \spadtype{Void}.
-}{
-\spadpaste{3::Void \bound{prev}}
-}
-\xtc{
-Once a value has been converted to \spadtype{Void}, it cannot be recovered.
-}{
-\spadpaste{\% :: PositiveInteger \free{prev}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{wutset.ht}
-<<wutset.ht>>=
-\newcommand{\WuWenTsunTriangularSetXmpTitle}{WuWenTsunTriangularSet}
-\newcommand{\WuWenTsunTriangularSetXmpNumber}{9.87}
-
-@
-\subsection{WuWenTsunTriangularSet}
-\label{WuWenTsunTriangularSetXmpPage}
-\index{pages!WuWenTsunTriangularSetXmpPage!wutset.ht}
-\index{wutset.ht!pages!WuWenTsunTriangularSetXmpPage}
-\index{WuWenTsunTriangularSetXmpPage!wutset.ht!pages}
-<<wutset.ht>>=
-\begin{page}{WuWenTsunTriangularSetXmpPage}{WuWenTsunTriangularSet}
-\beginscroll
-The \spadtype{WuWenTsunTriangularSet} domain constructor implements
-the characteristic set method of Wu Wen Tsun.
-This algorithm computes a list of triangular sets from a list
-of polynomials such that the algebraic variety defined by the 
-given list of polynomials decomposes into the union of the regular-zero sets 
-of the computed triangular sets.
-The constructor takes four arguments.
-The first one, {\bf R}, is the coefficient ring of the polynomials;
-it must belong to the category \spadtype{IntegralDomain}.
-The second one, {\bf E}, is the exponent monoid of the polynomials;
-it must belong to the category \spadtype{OrderedAbelianMonoidSup}.
-The third one, {\bf V}, is the ordered set of variables;
-it must belong to the category \spadtype{OrderedSet}.
-The last one is the polynomial ring;
-it must belong to the category \spadtype{RecursivePolynomialCategory(R,E,V)}.
-The abbreviation for \spadtype{WuWenTsunTriangularSet} is
-\spadtype{WUTSET}.
-
-Let us illustrate the facilities by an example.
-
-\xtc{
-Define the coefficient ring.
-}{
-\spadpaste{R := Integer \bound{R}}
-}
-\xtc{
-Define the list of variables,
-}{
-\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
-}
-\xtc{
-and make it an ordered set;
-}{
-\spadpaste{V := OVAR(ls) \free{ls} \bound{V}}
-}
-\xtc{
-then define the exponent monoid.
-}{
-\spadpaste{E := IndexedExponents V \free{V} \bound{E}}
-}
-\xtc{
-Define the polynomial ring.
-}{
-\spadpaste{P := NSMP(R, V) \free{R} \free{V} \bound{P}}
-}
-\xtc{
-Let the variables be polynomial.
-}{
-\spadpaste{x: P := 'x \free{P} \bound{x}}
-}
-\xtc{
-}{
-\spadpaste{y: P := 'y \free{P} \bound{y}}
-}
-\xtc{
-}{
-\spadpaste{z: P := 'z \free{P} \bound{z}}
-}
-\xtc{
-}{
-\spadpaste{t: P := 't \free{P} \bound{t}}
-}
-\xtc{
-Now call the \spadtype{WuWenTsunTriangularSet} domain constructor.
-}{
-\spadpaste{T := WUTSET(R,E,V,P) \free{R} \free{E} \free{V} \free{P} \bound{T} }
-}
-\xtc{
-Define a polynomial system.
-}{
-\spadpaste{p1 := x ** 31 - x ** 6 - x - y \free{x} \free{y} \bound{p1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := x ** 8  - z \free{x} \free{z} \bound{p2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := x ** 10 - t \free{x} \free{t} \bound{p3}}
-}
-\xtc{
-}{
-\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
-}
-\xtc{
-Compute a characteristic set of the system.
-}{
-\spadpaste{characteristicSet(lp)$T \free{lp} \free{T}}
-}
-\xtc{
-Solve the system.
-}{
-\spadpaste{zeroSetSplit(lp)$T \free{lp} \free{T}}
-}
-
-
-The \spadtype{RegularTriangularSet} and 
-\spadtype{SquareFreeRegularTriangularSet} domain constructors,
-and the  \spadtype{LazardSetSolvingPackage}, 
-\spadtype{SquareFreeRegularTriangularSet} 
-and \spadtype{ZeroDimensionalSolvePackage} package constructors
-also provide operations to compute triangular 
-decompositions of algebraic varieties.
-These five constructor use a special kind of 
-characteristic sets, called regular triangular sets.
-These special characteristic sets have better 
-properties than the general ones.
-Regular triangular sets and their related concepts are presented in
-the paper "On the Theories of Triangular sets" By P. Aubry, D. Lazard
-and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
-The decomposition algorithm (due to the third author) available in the 
-four above constructors provide generally better timings than 
-the characteristic set method.
-In fact, the \spadtype{WUTSET} constructor remains interesting 
-for the purpose of manipulating characteristic sets whereas
-the other constructors are more convenient for solving polynomial systems.
-
-Note that the way of understanding triangular decompositions 
-is detailed in the example of the \spadtype{RegularTriangularSet}
-constructor.
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{xmpexp.ht}
-<<xmpexp.ht>>=
-\newcommand{\ExamplesExposedTitle}{Some Examples of Domains and Packages}
-\newcommand{\ExamplesExposedNumber}{9.}
-
-@
-\subsection{Some Examples of Domains and Packages}
-\label{ExamplesExposedPage}
-\begin{itemize}
-\item AssociationListXmpPage \ref{AssociationListXmpPage} on
-page~pageref{AssociationListXmpPage}
-\item BalancedBinaryTreeXmpPage \ref{BalancedBinaryTreeXmpPage} on
-page~pageref{BalancedBinaryTreeXmpPage}
-\item BasicOperatorXmpPage \ref{BasicOperatorXmpPage} on
-page~pageref{BasicOperatorXmpPage}
-\item BinaryExpansionXmpPage \ref{BinaryExpansionXmpPage} on
-page~pageref{BinaryExpansionXmpPage}
-\item BinarySearchTreeXmpPage \ref{BinarySearchTreeXmpPage} on
-page~pageref{BinarySearchTreeXmpPage}
-\item CardinalNumberXmpPage \ref{CardinalNumberXmpPage} on
-page~pageref{CardinalNumberXmpPage}
-\item CartesianTensorXmpPage \ref{CartesianTensorXmpPage} on
-page~pageref{CartesianTensorXmpPage}
-\item CharacterXmpPage \ref{CharacterXmpPage} on
-page~pageref{CharacterXmpPage}
-\item CharacterClassXmpPage \ref{CharacterClassXmpPage} on
-page~pageref{CharacterClassXmpPage}
-\item CliffordAlgebraXmpPage \ref{CliffordAlgebraXmpPage} on
-page~pageref{CliffordAlgebraXmpPage}
-\item ComplexXmpPage \ref{ComplexXmpPage} on
-page~pageref{ComplexXmpPage}
-\item ContinuedFractionXmpPage \ref{ContinuedFractionXmpPage} on
-page~pageref{ContinuedFractionXmpPage}
-\item CycleIndicatorsXmpPage \ref{CycleIndicatorsXmpPage} on
-page~pageref{CycleIndicatorsXmpPage}
-\item DeRhamComplexXmpPage \ref{DeRhamComplexXmpPage} on
-page~pageref{DeRhamComplexXmpPage}
-\item DecimalExpansionXmpPage \ref{DecimalExpansionXmpPage} on
-page~pageref{DecimalExpansionXmpPage}
-\item DistributedMultivariatePolynomialXmpPage 
-\ref{DistributedMultivariatePolynomialXmpPage} on
-page~pageref{DistributedMultivariatePolynomialXmpPage}
-\item DoubleFloatXmpPage \ref{DoubleFloatXmpPage} on
-page~pageref{DoubleFloatXmpPage}
-\item EqTableXmpPage \ref{EqTableXmpPage} on
-page~pageref{EqTableXmpPage}
-\item EquationXmpPage \ref{EquationXmpPage} on
-page~pageref{EquationXmpPage}
-\item ExitXmpPage \ref{ExitXmpPage} on
-page~pageref{ExitXmpPage}
-\item ExpressionXmpPage \ref{ExpressionXmpPage} on
-page~pageref{ExpressionXmpPage}
-\item FactoredXmpPage \ref{FactoredXmpPage} on
-page~pageref{FactoredXmpPage}
-\item FactoredFunctionsTwoXmpPage \ref{FactoredFunctionsTwoXmpPage} on
-page~pageref{FactoredFunctionsTwoXmpPage}
-\item FileXmpPage \ref{FileXmpPage} on
-page~pageref{FileXmpPage}
-\item FileNameXmpPage \ref{FileNameXmpPage} on
-page~pageref{FileNameXmpPage}
-\item FlexibleArrayXmpPage \ref{FlexibleArrayXmpPage} on
-page~pageref{FlexibleArrayXmpPage}
-\item FloatXmpPage \ref{FloatXmpPage} on
-page~pageref{FloatXmpPage}
-\item FractionXmpPage \ref{FractionXmpPage} on
-page~pageref{FractionXmpPage}
-\item FullPartialFractionExpansionXmpPage 
-\ref{FullPartialFractionExpansionXmpPage} on
-page~pageref{FullPartialFractionExpansionXmpPage}
-\item GeneralSparseTableXmpPage \ref{GeneralSparseTableXmpPage} on
-page~pageref{GeneralSparseTableXmpPage}
-\item GroebnerFactorizationPackageXmpPage 
-\ref{GroebnerFactorizationPackageXmpPage} on
-page~pageref{GroebnerFactorizationPackageXmpPage}
-\item HeapXmpPage \ref{HeapXmpPage} on
-page~pageref{HeapXmpPage}
-\item HexadecimalExpansionXmpPage \ref{HexadecimalExpansionXmpPage} on
-page~pageref{HexadecimalExpansionXmpPage}
-\item IntegerXmpPage \ref{IntegerXmpPage} on
-page~pageref{IntegerXmpPage}
-\item IntegerLinearDependenceXmpPage \ref{IntegerLinearDependenceXmpPage} on
-page~pageref{IntegerLinearDependenceXmpPage}
-\item IntegerNumberTheoryFunctionsXmpPage 
-\ref{IntegerNumberTheoryFunctionsXmpPage} on
-page~pageref{IntegerNumberTheoryFunctionsXmpPage}
-\item KernelXmpPage \ref{KernelXmpPage} on
-page~pageref{KernelXmpPage}
-\item KeyedAccessFileXmpPage \ref{KeyedAccessFileXmpPage} on
-page~pageref{KeyedAccessFileXmpPage}
-\item LexTriangularPackageXmpPage \ref{LexTriangularPackageXmpPage} on
-page~pageref{LexTriangularPackageXmpPage}
-\item LazardSetSolvingPackageXmpPage \ref{LazardSetSolvingPackageXmpPage} on
-page~pageref{LazardSetSolvingPackageXmpPage}
-\item LibraryXmpPage \ref{LibraryXmpPage} on
-page~pageref{LibraryXmpPage}
-\item LieExponentialsXmpPage \ref{LieExponentialsXmpPage} on
-page~pageref{LieExponentialsXmpPage}
-\item LiePolynomialXmpPage \ref{LiePolynomialXmpPage} on
-page~pageref{LiePolynomialXmpPage}
-\item LinearOrdinaryDifferentialOperatorXmpPage 
-\ref{LinearOrdinaryDifferentialOperatorXmpPage} on
-page~pageref{LinearOrdinaryDifferentialOperatorXmpPage}
-\item LinearOrdinaryDifferentialOperatorOneXmpPage 
-\ref{LinearOrdinaryDifferentialOperatorOneXmpPage} on
-page~pageref{LinearOrdinaryDifferentialOperatorOneXmpPage}
-\item LinearOrdinaryDifferentialOperatorTwoXmpPage 
-\ref{LinearOrdinaryDifferentialOperatorTwoXmpPage} on
-page~pageref{LinearOrdinaryDifferentialOperatorTwoXmpPage}
-\item ListXmpPage \ref{ListXmpPage} on
-page~pageref{ListXmpPage}
-\item LyndonWordXmpPage \ref{LyndonWordXmpPage} on
-page~pageref{LyndonWordXmpPage}
-\item MagmaXmpPage \ref{MagmaXmpPage} on
-page~pageref{MagmaXmpPage}
-\item MakeFunctionXmpPage \ref{MakeFunctionXmpPage} on
-page~pageref{MakeFunctionXmpPage}
-\item MappingPackageOneXmpPage \ref{MappingPackageOneXmpPage} on
-page~pageref{MappingPackageOneXmpPage}
-\item MatrixXmpPage \ref{MatrixXmpPage} on
-page~pageref{MatrixXmpPage}
-\item MultiSetXmpPage \ref{MultiSetXmpPage} on
-page~pageref{MultiSetXmpPage}
-\item MultivariatePolynomialXmpPage \ref{MultivariatePolynomialXmpPage} on
-page~pageref{MultivariatePolynomialXmpPage}
-\item NoneXmpPage \ref{NoneXmpPage} on
-page~pageref{NoneXmpPage}
-\item OctonionXmpPage \ref{OctonionXmpPage} on
-page~pageref{OctonionXmpPage}
-\item OneDimensionalArrayXmpPage \ref{OneDimensionalArrayXmpPage} on
-page~pageref{OneDimensionalArrayXmpPage}
-\item OperatorXmpPage \ref{OperatorXmpPage} on
-page~pageref{OperatorXmpPage}
-\item OrderedVariableListXmpPage \ref{OrderedVariableListXmpPage} on
-page~pageref{OrderedVariableListXmpPage}
-\item OrderlyDifferentialPolynomialXmpPage 
-\ref{OrderlyDifferentialPolynomialXmpPage} on
-page~pageref{OrderlyDifferentialPolynomialXmpPage}
-\item PartialFractionXmpPage \ref{PartialFractionXmpPage} on
-page~pageref{PartialFractionXmpPage}
-\item PermanentXmpPage \ref{PermanentXmpPage} on
-page~pageref{PermanentXmpPage}
-\item PolynomialXmpPage \ref{PolynomialXmpPage} on
-page~pageref{PolynomialXmpPage}
-\item QuaternionXmpPage \ref{QuaternionXmpPage} on
-page~pageref{QuaternionXmpPage}
-\item RadixExpansionXmpPage \ref{RadixExpansionXmpPage} on
-page~pageref{RadixExpansionXmpPage}
-\item RealClosureXmpPage \ref{RealClosureXmpPage} on
-page~pageref{RealClosureXmpPage}
-\item RegularTriangularSetXmpPage \ref{RegularTriangularSetXmpPage} on
-page~pageref{RegularTriangularSetXmpPage}
-\item RomanNumeralXmpPage \ref{RomanNumeralXmpPage} on
-page~pageref{RomanNumeralXmpPage}
-\item SegmentXmpPage \ref{SegmentXmpPage} on
-page~pageref{SegmentXmpPage}
-\item SegmentBindingXmpPage \ref{SegmentBindingXmpPage} on
-page~pageref{SegmentBindingXmpPage}
-\item SetXmpPage \ref{SetXmpPage} on
-page~pageref{SetXmpPage}
-\item SingleIntegerXmpPage \ref{SingleIntegerXmpPage} on
-page~pageref{SingleIntegerXmpPage}
-\item SparseTableXmpPage \ref{SparseTableXmpPage} on
-page~pageref{SparseTableXmpPage}
-\item SquareMatrixXmpPage \ref{SquareMatrixXmpPage} on
-page~pageref{SquareMatrixXmpPage}
-\item SquareFreeRegularTriangularSetXmpPage 
-\ref{SquareFreeRegularTriangularSetXmpPage} on
-page~pageref{SquareFreeRegularTriangularSetXmpPage}
-\item StreamXmpPage \ref{StreamXmpPage} on
-page~pageref{StreamXmpPage}
-\item StringXmpPage \ref{StringXmpPage} on
-page~pageref{StringXmpPage}
-\item StringTableXmpPage \ref{StringTableXmpPage} on
-page~pageref{StringTableXmpPage}
-\item SymbolXmpPage \ref{SymbolXmpPage} on
-page~pageref{SymbolXmpPage}
-\item TableXmpPage \ref{TableXmpPage} on
-page~pageref{TableXmpPage}
-\item TextFileXmpPage \ref{TextFileXmpPage} on
-page~pageref{TextFileXmpPage}
-\item TwoDimensionalArrayXmpPage \ref{TwoDimensionalArrayXmpPage} on
-page~pageref{TwoDimensionalArrayXmpPage}
-\item UnivariatePolynomialXmpPage \ref{UnivariatePolynomialXmpPage} on
-page~pageref{UnivariatePolynomialXmpPage}
-\item UniversalSegmentXmpPage \ref{UniversalSegmentXmpPage} on
-page~pageref{UniversalSegmentXmpPage}
-\item VectorXmpPage \ref{VectorXmpPage} on
-page~pageref{VectorXmpPage}
-\item VoidXmpPage \ref{VoidXmpPage} on
-page~pageref{VoidXmpPage}
-\item WuWenTsunTriangularSetXmpPage \ref{WuWenTsunTriangularSetXmpPage} on
-page~pageref{WuWenTsunTriangularSetXmpPage}
-\item XPBWPolynomialXmpPage \ref{XPBWPolynomialXmpPage} on
-page~pageref{XPBWPolynomialXmpPage}
-\item XPolynomialXmpPage \ref{XPolynomialXmpPage} on
-page~pageref{XPolynomialXmpPage}
-\item XPolynomialRingXmpPage \ref{XPolynomialRingXmpPage} on
-page~pageref{XPolynomialRingXmpPage}
-\item ZeroDimensionalSolvePackageXmpPage 
-\ref{ZeroDimensionalSolvePackageXmpPage} on
-page~pageref{ZeroDimensionalSolvePackageXmpPage}
-\end{itemize}
-\index{pages!ExamplesExposedPage!xmpexp.ht}
-\index{xmpexp.ht!pages!ExamplesExposedPage}
-\index{ExamplesExposedPage!xmpexp.ht!pages}
-<<xmpexp.ht>>=
-\begin{page}{ExamplesExposedPage}{Some Examples of Domains and Packages}
-This is a menu of examples of some domains and packages.
-Click on any item below to see that section.
-\beginscroll
-\table{
-{ \downlink{AssociationList}{AssociationListXmpPage} }
-{ \downlink{BalancedBinaryTree}{BalancedBinaryTreeXmpPage} }
-{ \downlink{BasicOperator}{BasicOperatorXmpPage} }
-{ \downlink{BinaryExpansion}{BinaryExpansionXmpPage} }
-{ \downlink{BinarySearchTree}{BinarySearchTreeXmpPage} }
-{ \downlink{CardinalNumber}{CardinalNumberXmpPage} }
-{ \downlink{CartesianTensor}{CartesianTensorXmpPage} }
-{ \downlink{Character}{CharacterXmpPage} }
-{ \downlink{CharacterClass}{CharacterClassXmpPage} }
-{ \downlink{CliffordAlgebra}{CliffordAlgebraXmpPage} }
-{ \downlink{Complex}{ComplexXmpPage} }
-{ \downlink{ContinuedFraction}{ContinuedFractionXmpPage} }
-{ \downlink{CycleIndicators}{CycleIndicatorsXmpPage} }
-{ \downlink{DeRhamComplex}{DeRhamComplexXmpPage} }
-{ \downlink{DecimalExpansion}{DecimalExpansionXmpPage} }
-{ \downlink{DistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage} }
-{ \downlink{DoubleFloat}{DoubleFloatXmpPage} }
-{ \downlink{EqTable}{EqTableXmpPage} }
-{ \downlink{Equation}{EquationXmpPage} }
-{ \downlink{Exit}{ExitXmpPage} }
-{ \downlink{Expression}{ExpressionXmpPage} }
-{ \downlink{Factored}{FactoredXmpPage} }
-{ \downlink{FactoredFunctions2}{FactoredFunctionsTwoXmpPage} }
-{ \downlink{File}{FileXmpPage} }
-{ \downlink{FileName}{FileNameXmpPage} }
-{ \downlink{FlexibleArray}{FlexibleArrayXmpPage} }
-{ \downlink{Float}{FloatXmpPage} }
-{ \downlink{Fraction}{FractionXmpPage} }
-{ \downlink{FullPartialFractionExpansion}{FullPartialFractionExpansionXmpPage} }
-{ \downlink{GeneralSparseTable}{GeneralSparseTableXmpPage} }
-{ \downlink{GroebnerFactorizationPackage}{GroebnerFactorizationPackageXmpPage} }
-{ \downlink{Heap}{HeapXmpPage} }
-{ \downlink{HexadecimalExpansion}{HexadecimalExpansionXmpPage} }
-{ \downlink{Integer}{IntegerXmpPage} }
-{ \downlink{IntegerLinearDependence}{IntegerLinearDependenceXmpPage} }
-{ \downlink{IntegerNumberTheoryFunctions}{IntegerNumberTheoryFunctionsXmpPage} }
-{ \downlink{Kernel}{KernelXmpPage} }
-{ \downlink{KeyedAccessFile}{KeyedAccessFileXmpPage} }
-{ \downlink{LexTriangularPackage}{LexTriangularPackageXmpPage} }
-{ \downlink{LazardSetSolvingPackage}{LazardSetSolvingPackageXmpPage} }
-{ \downlink{Library}{LibraryXmpPage} }
-{ \downlink{LieExponentials}{LieExponentialsXmpPage} }
-{ \downlink{LiePolynomial}{LiePolynomialXmpPage} }
-{ \downlink{LinearOrdinaryDifferentialOperator}{LinearOrdinaryDifferentialOperatorXmpPage} }
-{ \downlink{LinearOrdinaryDifferentialOperator1}{LinearOrdinaryDifferentialOperatorOneXmpPage} }
-{ \downlink{LinearOrdinaryDifferentialOperator2}{LinearOrdinaryDifferentialOperatorTwoXmpPage} }
-{ \downlink{List}{ListXmpPage} }
-{ \downlink{LyndonWord}{LyndonWordXmpPage} }
-{ \downlink{Magma}{MagmaXmpPage} }
-{ \downlink{MakeFunction}{MakeFunctionXmpPage} }
-{ \downlink{MappingPackage1}{MappingPackageOneXmpPage} }
-{ \downlink{Matrix}{MatrixXmpPage} }
-{ \downlink{MultiSet}{MultiSetXmpPage} }
-{ \downlink{MultivariatePolynomial}{MultivariatePolynomialXmpPage} }
-{ \downlink{None}{NoneXmpPage} }
-{ \downlink{Octonion}{OctonionXmpPage} }
-{ \downlink{OneDimensionalArray}{OneDimensionalArrayXmpPage} }
-{ \downlink{Operator}{OperatorXmpPage} }
-{ \downlink{OrderedVariableList}{OrderedVariableListXmpPage} }
-{ \downlink{OrderlyDifferentialPolynomial}{OrderlyDifferentialPolynomialXmpPage} }
-{ \downlink{PartialFraction}{PartialFractionXmpPage} }
-{ \downlink{Permanent}{PermanentXmpPage} }
-{ \downlink{Polynomial}{PolynomialXmpPage} }
-{ \downlink{Quaternion}{QuaternionXmpPage} }
-{ \downlink{RadixExpansion}{RadixExpansionXmpPage} }
-{ \downlink{RealClosure}{RealClosureXmpPage} }
-{ \downlink{RegularTriangularSet}{RegularTriangularSetXmpPage} }
-{ \downlink{RomanNumeral}{RomanNumeralXmpPage} }
-{ \downlink{Segment}{SegmentXmpPage} }
-{ \downlink{SegmentBinding}{SegmentBindingXmpPage} }
-{ \downlink{Set}{SetXmpPage} }
-{ \downlink{SingleInteger}{SingleIntegerXmpPage} }
-{ \downlink{SparseTable}{SparseTableXmpPage} }
-{ \downlink{SquareMatrix}{SquareMatrixXmpPage} }
-{ \downlink{SquareFreeRegularTriangularSet}{SquareFreeRegularTriangularSetXmpPage} }
-{ \downlink{Stream}{StreamXmpPage} }
-{ \downlink{String}{StringXmpPage} }
-{ \downlink{StringTable}{StringTableXmpPage} }
-{ \downlink{Symbol}{SymbolXmpPage} }
-{ \downlink{Table}{TableXmpPage} }
-{ \downlink{TextFile}{TextFileXmpPage} }
-{ \downlink{TwoDimensionalArray}{TwoDimensionalArrayXmpPage} }
-{ \downlink{UnivariatePolynomial}{UnivariatePolynomialXmpPage} }
-{ \downlink{UniversalSegment}{UniversalSegmentXmpPage} }
-{ \downlink{Vector}{VectorXmpPage} }
-{ \downlink{Void}{VoidXmpPage} }
-{ \downlink{WuWenTsunTriangularSet}{WuWenTsunTriangularSetXmpPage} }
-{ \downlink{XPBWPolynomial}{XPBWPolynomialXmpPage} }
-{ \downlink{XPolynomial}{XPolynomialXmpPage} }
-{ \downlink{XPolynomialRing}{XPolynomialRingXmpPage} }
-{ \downlink{ZeroDimensionalSolvePackage}{ZeroDimensionalSolvePackageXmpPage} }
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{xpbwpoly.ht}
-<<xpbwpoly.ht>>=
-\newcommand{\XPBWPolynomialXmpTitle}{XPBWPolynomial}
-\newcommand{\XPBWPolynomialXmpNumber}{9.88}
-
-@
-\subsection{XPBWPolynomial}
-\label{XPBWPolynomialXmpPage}
-\index{pages!XPBWPolynomialXmpPage!xpbwpoly.ht}
-\index{xpbwpoly.ht!pages!XPBWPolynomialXmpPage}
-\index{XPBWPolynomialXmpPage!xpbwpoly.ht!pages}
-<<xpbwpoly.ht>>=
-\begin{page}{XPBWPolynomialXmpPage}{XPBWPolynomial}
-\beginscroll
-Initialisations
-\xtc{
-}{
-\spadpaste{a:Symbol := 'a \bound{a}}
-}
-\xtc{
-}{
-\spadpaste{b:Symbol := 'b \bound{b}}
-}
-\xtc{
-}{
-\spadpaste{RN    := Fraction(Integer) \bound{RN}}
-}
-\xtc{
-}{
-\spadpaste{word   := OrderedFreeMonoid Symbol \bound{word}}
-}
-\xtc{
-}{
-\spadpaste{lword := LyndonWord(Symbol) \bound{lword}}
-}
-\xtc{
-}{
-\spadpaste{base  := PoincareBirkhoffWittLyndonBasis Symbol \bound{base}}
-}
-\xtc{
-}{
-\spadpaste{dpoly := XDistributedPolynomial(Symbol, RN) \bound{dpoly} \free{RN}}
-}
-\xtc{
-}{
-\spadpaste{rpoly := XRecursivePolynomial(Symbol, RN) \bound{rpoly} \free{RN}}
-}
-\xtc{
-}{
-\spadpaste{lpoly := LiePolynomial(Symbol, RN) \bound{lpoly} \free{RN}}
-}
-\xtc{
-}{
-\spadpaste{poly  := XPBWPolynomial(Symbol, RN) \bound{poly} \free{RN}}
-}
-\xtc{
-}{
-\spadpaste{liste : List lword := LyndonWordsList([a,b], 6) \bound{liste} \free{lword a b }}
-}
-
-Let's make some polynomials
-\xtc{
-}{
-\spadpaste{0$poly \free{poly}}
-}
-\xtc{
-}{
-\spadpaste{1$poly \free{poly}}
-}
-\xtc{
-}{
-\spadpaste{p : poly := a \free{a poly} \bound{p}}
-}
-\xtc{
-}{
-\spadpaste{q : poly := b \free{b poly} \bound{q}}
-}
-\xtc{
-}{
-\spadpaste{pq: poly := p*q \free{p q poly} \bound{pq}}
-}
-\xtc{
-Coerce to distributed polynomial
-}{
-\spadpaste{pq :: dpoly \free{pq dpoly}}
-}
-
-Check some polynomial operations
-\xtc{
-}{
-\spadpaste{mirror pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{ListOfTerms pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{reductum pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{leadingMonomial pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{coefficients pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{leadingTerm pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{degree pq \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{pq4:=exp(pq,4) \bound{pq4} \free{pq}}
-}
-\xtc{
-}{
-\spadpaste{log(pq4,4) - pq \free{pq4 pq} }
-}
-
-Calculations with verification in \axiomType{XDistributedPolynomial}.
-\xtc{
-}{
-\spadpaste{lp1 :lpoly := LiePoly liste.10 \free{liste lpoly} \bound{lp1}}
-}
-\xtc{
-}{
-\spadpaste{lp2 :lpoly := LiePoly liste.11 \free{liste lpoly} \bound{lp2}}
-}
-\xtc{
-}{
-\spadpaste{lp  :lpoly := [lp1, lp2] \free{lp1 lp2 lpoly} \bound{lp}}
-}
-\xtc{
-}{
-\spadpaste{lpd1: dpoly := lp1 \free{lp1 dpoly} \bound{lpd1}}
-}
-\xtc{
-}{
-\spadpaste{lpd2: dpoly := lp2 \free{lp2 dpoly} \bound{lpd2}}
-}
-\xtc{
-}{
-\spadpaste{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1 \free{dpoly lpd1 lpd2} \bound{lpd}}
-}
-\xtc{
-}{
-\spadpaste{lp :: dpoly - lpd \free{lpd dpoly lp}}
-}
-
-Calculations with verification in \axiomType{XRecursivePolynomial}.
-\xtc{
-}{
-\spadpaste{p := 3 * lp \free{lp} \bound{pp}}
-}
-\xtc{
-}{
-\spadpaste{q := lp1 \free{lp1} \bound{qq}}
-}
-\xtc{
-}{
-\spadpaste{pq:= p * q \free{pp qq} \bound{pqpq}}
-}
-\xtc{
-}{
-\spadpaste{pr:rpoly := p :: rpoly \free{rpoly pp} \bound{pr}}
-}
-\xtc{
-}{
-\spadpaste{qr:rpoly := q :: rpoly \free{rpoly qq} \bound{qr}}
-}
-\xtc{
-}{
-\spadpaste{pq :: rpoly - pr*qr \free{pr qr rpoly pqpq} }
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{xpoly.ht}
-<<xpoly.ht>>=
-\newcommand{\XPolynomialXmpTitle}{XPolynomial}
-\newcommand{\XPolynomialXmpNumber}{9.89}
-
-@
-\subsection{XPolynomial}
-\label{XPolynomialXmpPage}
-\index{pages!XPolynomialXmpPage!xpoly.ht.ht}
-\index{xpoly.ht.ht!pages!XPolynomialXmpPage}
-\index{XPolynomialXmpPage!xpoly.ht.ht!pages}
-<<xpoly.ht.ht>>=
-\begin{page}{XPolynomialXmpPage}{XPolynomial}
-\beginscroll
-The \spadtype{XPolynomial} domain constructor implements 
-multivariate polynomials
-whose set of variables is \spadtype{Symbol}.
-These variables do not commute.
-The only parameter of this construtor is 
-the coefficient ring which may be non-commutative.
-However, coefficients and variables commute.
-The representation of the polynomials is recursive.
-The abbreviation for \spadtype{XPolynomial} is \spadtype{XPOLY}.
-
-Other constructors like \spadtype{XPolynomialRing}, 
-\spadtype{XRecursivePolynomial} 
-\spadtype{XDistributedPolynomial},
-\spadtype{LiePolynomial} and
-\spadtype{XPBWPolynomial}
-implement multivariate polynomials
-in non-commutative variables.
-
-We illustrate now some of the facilities of the \spadtype{XPOLY} domain constructor.
-
-
-\xtc{
-Define a polynomial ring over the integers.
-}{
-\spadpaste{poly := XPolynomial(Integer) \bound{poly}}
-}
-
-\xtc{
-Define a first polynomial,
-}{
-\spadpaste{pr: poly := 2*x + 3*y-5  \free{poly} \bound{pr}}
-}
-
-
-\xtc{
-and a second one.
-}{
-\spadpaste{pr2: poly := pr*pr  \free{poly} \bound{pr2}}
-}
-
-\xtc{
-Rewrite {\bf pr} in a distributive way,
-}{
-\spadpaste{pd  := expand pr   \free{pr} \bound{pd}}
-}
-
-\xtc{
-compute its square,
-}{
-\spadpaste{pd2 := pd*pd   \free{pd} \bound{pd2}}
-}
-
-\xtc{
-and checks that:
-}{
-\spadpaste{expand(pr2) - pd2 \free{pr2} \free{pd2}}
-}
-
-
-\xtc{
-We define:
-}{
-\spadpaste{qr :=  pr**3 \free{pr} \bound{qr}}
-}
-
-\xtc{
-and:
-}{
-\spadpaste{qd :=  pd**3 \free{pd} \bound{qd}}
-}
-
-\xtc{
-We truncate {\bf qd} at degree {\bf 3}:
-}{
-\spadpaste{ trunc(qd,2) \free{qd}}
-}
-
-\xtc{
-The same for {\bf qr}:
-}{
-\spadpaste{trunc(qr,2) \free{qr}}
-}
-
-\xtc{
-We define:
-}{
-\spadpaste{Word := OrderedFreeMonoid Symbol \bound{Word}}
-}
-
-\xtc{
-and:
-}{
-\spadpaste{w: Word := x*y**2 \free{Word} \bound{w}}
-}
-
-\xtc{
-The we can compute the right-quotient of {\bf qr} by {\bf r}:
-}{
-\spadpaste{rquo(qr,w) \free{qr} \free{w}}
-}
-
-\xtc{
-and the shuffle-product of {\bf pr} by {\bf r}:
-}{
-\spadpaste{sh(pr,w::poly) \free{pr} \free{w}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{xpr.ht}
-<<xpr.ht>>=
-\newcommand{\XPolynomialRingXmpTitle}{XPolynomialRing}
-\newcommand{\XPolynomialRingXmpNumber}{9.90}
-
-@
-\subsection{XPolynomialRing}
-\label{XPolynomialRingXmpPage}
-\index{pages!XPolynomialRingXmpPage!xpr.ht}
-\index{xpr.ht!pages!XPolynomialRingXmpPage}
-\index{XPolynomialRingXmpPage!xpr.ht!pages}
-<<xpr.ht>>=
-\begin{page}{XPolynomialRingXmpPage}{XPolynomialRing}
-\beginscroll
-The \spadtype{XPolynomialRing} domain constructor implements
-generalized polynomials with coefficients from an arbitrary \spadtype{Ring}
-(not necessarily commutative) and whose exponents are
-words from an arbitrary \spadtype{OrderedMonoid}
-(not necessarily commutative too).
-Thus these polynomials are (finite) linear combinations of words.
-
-This constructor takes two arguments.
-The first one is a \spadtype{Ring}
-and the second is an \spadtype{OrderedMonoid}.
-The abbreviation for \spadtype{XPolynomialRing} is \spadtype{XPR}.
-
-Other constructors like \spadtype{XPolynomial}, 
-\spadtype{XRecursivePolynomial} 
-\spadtype{XDistributedPolynomial},
-\spadtype{LiePolynomial} and
-\spadtype{XPBWPolynomial}
-implement multivariate polynomials
-in non-commutative variables.
-
-We illustrate now some of the facilities of the \spadtype{XPR} domain constructor.
-
-\xtc{
-Define the free ordered monoid generated by the symbols.
-}{
-\spadpaste{Word := OrderedFreeMonoid(Symbol) \bound{Word}}
-}
-
-\xtc{
-Define the linear combinations of these words with integer coefficients.
-}{
-\spadpaste{poly:= XPR(Integer,Word) \free{Word} \bound{poly}}
-}
-
-
-\xtc{
-Then we define a first element from {\bf poly}.
-}{
-\spadpaste{p:poly := 2 * x - 3 * y + 1 \free{poly} \bound{p}}
-}
-
-\xtc{
-And a second one.
-}{
-\spadpaste{q:poly := 2 * x + 1 \free{poly} \bound{q}}
-}
-
-
-\xtc{
-We compute their sum,
-}{
-\spadpaste{p + q  \free{p}\free{q} }
-}
-
-\xtc{
-their product,
-}{
-\spadpaste{p * q  \free{p}\free{q} }
-}
-
-\xtc{
-and see that variables do not commute.
-}{
-\spadpaste{(p +q)^2 -p^2 -q^2 - 2*p*q  \free{p}\free{q} }
-}
-
-
-
-\xtc{
-Now we define a ring of square matrices,
-}{
-\spadpaste{M := SquareMatrix(2,Fraction Integer)  \bound{M}}
-}
-
-\xtc{
-and the linear combinations of words with these  matrices as coefficients.
-}{
-\spadpaste{poly1:= XPR(M,Word) \free{Word} \free{M} \bound{poly1}}
-}
-
-
-\xtc{
-Define a first matrix,
-}{
-\spadpaste{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2] \free{M} \bound{m1}}
-}
-
-\xtc{
-a second one,
-}{
-\spadpaste{m2:M := m1 - 5/4 \free{M} \free{m1} \bound{m2}}
-}
-
-\xtc{
-and a third one.
-}{
-\spadpaste{m3: M := m2**2 \free{M} \free{m2} \bound{m3}}
-}
-
-\xtc{
-Define a polynomial,
-}{
-\spadpaste{pm:poly1   := m1*x + m2*y + m3*z - 2/3 \free{poly1} \free{m1} \free{m2} \free{m3} \bound{pm}}
-}
-
-
-\xtc{
-a second one,
-}{
-\spadpaste{qm:poly1 := pm - m1*x \free{m1} \free{pm} \bound{qm}}
-}
-
-\xtc{
-and the following power.
-}{
-\spadpaste{qm**3 \bound{qm}}
-}
-
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{zdsolve.ht}
-<<zdsolve.ht>>=
-\newcommand{\ZeroDimensionalSolvePackageXmpTitle}{ZeroDimensionalSolvePackage}
-\newcommand{\ZeroDimensionalSolvePackageXmpNumber}{9.91}
-
-@
-\subsection{ZeroDimensionalSolvePackage}
-\label{ZeroDimensionalSolvePackageXmpPage}
-\index{pages!ZeroDimensionalSolvePackageXmpPage!zdsolve.ht}
-\index{zdsolve.ht!pages!ZeroDimensionalSolvePackageXmpPage}
-\index{ZeroDimensionalSolvePackageXmpPage!zdsolve.ht!pages}
-<<zdsolve.ht>>=
-\begin{page}{ZeroDimensionalSolvePackageXmpPage}{ZeroDimensionalSolvePackage}
-\beginscroll
-The \spadtype{ZeroDimensionalSolvePackage} package constructor 
-provides operations for computing symbolically the complex or real roots of 
-zero-dimensional algebraic systems.
-
-The package provides {\bf no} multiplicity information (i.e. some returned
-roots may be double or higher) but only distinct roots are returned. 
-
-Complex roots are given by means of univariate representations
-of irreducible regular chains. 
-These representations are computed by the 
-\axiomOpFrom{univariateSolve}{ZeroDimensionalSolvePackage}
-operation (by calling the 
-\spadtype{InternalRationalUnivariateRepresentationPackage} 
-package constructor which does the job).
-
-Real roots are given by means of tuples
-of coordinates lying in the \spadtype{RealClosure} of the coefficient ring.
-They are computed by the \axiomOpFrom{realSolve}{ZeroDimensionalSolvePackage}
-and \axiomOpFrom{positiveSolve}{ZeroDimensionalSolvePackage} operations.
-The former computes all the solutions of the input system with real coordinates
-whereas the later concentrate 
-on the solutions with (strictly) positive coordinates.
-In both cases, the computations 
-are performed by the \spadtype{RealClosure} constructor.
-
-Both computations of complex roots 
-and real roots rely on triangular decompositions.
-These decompositions can be computed in two different ways.
-First, by a applying the \axiomOpFrom{zeroSetSplit}{RegularTriangularSet} 
-operation from the \spadtype{REGSET} domain constructor.
-In that case, no Groebner bases are computed.
-This strategy is used by default.
-Secondly, by applying the \axiomOpFrom{zeroSetSplit}{LexTriangularPackage}
-from \spadtype{LEXTRIPK}.
-To use this later strategy with the operations
-\axiomOpFrom{univariateSolve}{ZeroDimensionalSolvePackage},
-\axiomOpFrom{realSolve}{ZeroDimensionalSolvePackage}
-and \axiomOpFrom{positiveSolve}{ZeroDimensionalSolvePackage} 
-one just needs to use an extra boolean argument.
-
-Note that the way of understanding triangular decompositions 
-is detailed in the example of the \spadtype{RegularTriangularSet}
-constructor.
-
-The \spadtype{ZeroDimensionalSolvePackage} constructor takes three arguments. 
-The first one {\bf R} is the coefficient ring;
-it must belong to the categories
-\spadtype{OrderedRing}, \spadtype{EuclideanDomain},  
-\spadtype{CharacteristicZero}
-and \spadtype{RealConstant}.
-This means essentially that {\bf R} is \spadtype{Integer} or 
-\spadtype{Fraction(Integer)}.
-The second argument {\bf ls} is the list of variables involved 
-in the systems to solve. 
-The third one MUST BE {\bf concat(ls,s)} where
-{\bf s} is an additional symbol used for the univariate representations.
-The abbreviation for \spadtype{ZeroDimensionalSolvePackage} is 
-\spadtype{ZDSOLVE}.
-
-We illustrate now how to use the constructor \spadtype{ZDSOLVE}
-by two examples: the {\em Arnborg and Lazard} system and the 
-{\em L-3} system (Aubry and Moreno Maza).
-Note that the use of this package is also demonstrated in the example
-of the \spadtype{LexTriangularPackage} constructor.
-
-\xtc{
-Define the coefficient ring.
-}{
-\spadpaste{R := Integer \bound{R}}
-}
-
-\xtc{
-Define the lists of variables:
-}{
-\spadpaste{ls : List Symbol := [x,y,z,t] \bound{ls}}
-}
-
-\xtc{
-and:
-}{
-\spadpaste{ls2 : List Symbol := [x,y,z,t,new()$Symbol] \bound{ls2}}
-}
-
-\xtc{
-Call the package:
-}{
-\spadpaste{pack := ZDSOLVE(R,ls,ls2) \free{ls} \free{ls2} \free{R} \bound{pack}}
-}
-
-\xtc{
-Define a polynomial system (Arnborg-Lazard)
-}{
-\spadpaste{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z \bound{p1}}
-}
-\xtc{
-}{
-\spadpaste{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z \bound{p2}}
-}
-\xtc{
-}{
-\spadpaste{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1 \bound{p3}}
-}
-\xtc{
-}{
-\spadpaste{lp := [p1, p2, p3] \free{p1} \free{p2} \free{p3} \bound{lp}}
-}
-Note that these polynomials do not involve the variable {\bf t};
-we will use it in the second example.
-
-\xtc{
-First compute a decomposition into regular chains 
-(i.e. regular triangular sets).
-}{
-\spadpaste{triangSolve(lp)$pack \free{lp} \free{pack}}
-}
-
-We can see easily from this decomposition (consisting of a single
-regular chain) that the input system has 20 complex roots.
-
-\xtc{
-Then we compute a univariate representation of this regular chain.
-}{
-\spadpaste{univariateSolve(lp)$pack \free{lp} \free{pack}}
-}
-
-We see that the zeros of our regular chain are split into three components.
-This is due to the use of univariate polynomial factorization.
-
-Each of these components consist of two parts.
-The first one is an irreducible univariate polynomial {\bf p(?)} which defines
-a simple algebraic extension of the field of fractions of {\bf R}.
-The second one consists of multivariate polynomials {\bf pol1(x,\%A)},
-{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)}.
-Each of these polynomials involve two variables: one is an indeterminate
-{\bf x}, {\bf y} or {\bf z}
-of the input system {\bf lp} and the 
-other is {\bf \%A} which represents any root of {\bf p(?)}.
-Recall that this {\bf \%A} is the last element of the third parameter of 
-\spadtype{ZDSOLVE}.
-Thus any complex root {\bf ?} of {\bf p(?)} 
-leads to a solution of the input system {\bf lp} 
-by replacing {\bf \%A} by this {\bf ?} in {\bf pol1(x,\%A)},
-{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)}.
-Note that the polynomials {\bf pol1(x,\%A)},
-{\bf pol2(y,\%A)} and {\bf pol3(z,\%A)} have degree one 
-w.r.t. {\bf x}, {\bf y} or {\bf z} respectively.
-This is always the case for all univariate representations.
-Hence the operation {\bf univariateSolve} replaces a
-system of multivariate polynomials by a list of univariate
-polynomials, what justifies its name.
-Another example of univariate representations illustrates
-the \spadtype{LexTriangularPackage} package constructor.
-
-\xtc{
-We now compute the solutions with real coordinates:
-}{
-\spadpaste{lr := realSolve(lp)$pack \free{lp} \free{pack} \bound{lr}}
-}
-
-\xtc{
-The number of real solutions for the input system is:
-}{
-\spadpaste{\# lr \free{lr}}
-}
-
-Each of these real solutions is given by a 
-list of elements in  \spadtype{RealClosure(R)}.
-In these 8 lists, the first element is a value of {\bf z}, 
-the second of {\bf y} and the last of {\bf x}.
-This is logical since by setting the list of variables of the package
-to {\bf [x,y,z,t]} we mean that the elimination ordering on the
-variables is {\bf t < z < y < x }.
-Note that each system treated by the \spadtype{ZDSOLVE} package constructor
-needs only to be zero-dimensional w.r.t. the variables involved in the system it-self
-and not necessarily w.r.t. all the variables used to define the package.
-
-\xtc{
-We can approximate these real numbers as follows. 
-This computation takes between 30 sec. and 5 min, depending on your machine.
-}{
-\spadpaste{[[approximate(r,1/1000000) for r in point] for point in lr] \free{lr}}
-}
-
-\xtc{
-We can also concentrate on the solutions with real (strictly) positive coordinates:
-}{
-\spadpaste{lpr := positiveSolve(lp)$pack \free{lp} \free{pack} \bound{lpr}}
-}
-
-Thus we have checked that the input system has no solution with strictly positive coordinates.
-
-
-\xtc{
-Let us define another polynomial system ({\em L-3}).
-}{
-\spadpaste{f0 := x**3 + y + z + t- 1 \bound{f0}}
-}
-\xtc{
-}{
-\spadpaste{f1 := x + y**3 + z + t -1 \bound{f1}}
-}
-\xtc{
-}{
-\spadpaste{f2 := x + y + z**3 + t-1 \bound{f2}}
-}
-\xtc{
-}{
-\spadpaste{f3 := x + y + z + t**3 -1 \bound{f3}}
-}
-\xtc{
-}{
-\spadpaste{lf := [f0, f1, f2, f3] \free{f0} \free{f1} \free{f2} \free{f3} \bound{lf}}
-}
-
-
-\xtc{
-First compute a decomposition into regular chains 
-(i.e. regular triangular sets).
-}{
-\spadpaste{lts := triangSolve(lf)$pack \free{lf} \free{pack} \bound{lts}}
-}
-
-
-\xtc{
-Then we compute a univariate representation.
-}{
-\spadpaste{univariateSolve(lf)$pack \free{lf} \free{pack}}
-}
-
-Note that this computation is made from the input system {\bf lf}.
-\xtc{
-However it is possible to reuse a pre-computed regular chain as follows:
-}{
-\spadpaste{ts := lts.1 \free{lts} \bound{ts}}
-}
-\xtc{
-}{
-\spadpaste{univariateSolve(ts)$pack \free{ts} \free{pack}}
-}
-\xtc{
-}{
-\spadpaste{realSolve(ts)$pack  \free{ts} \free{pack}}
-}
-
-\xtc{
-We compute now the full set of points with real coordinates:
-}{
-\spadpaste{lr2 := realSolve(lf)$pack \free{lf} \free{pack}  \bound{lr2}}
-}
-
-
-\xtc{
-The number of real solutions for the input system is:
-}{
-\spadpaste{\#lr2 \free{lr2}}
-}
-Another example of computation of real solutions illustrates
-the \spadtype{LexTriangularPackage} package constructor.
-
-\xtc{
-We concentrate now on the solutions with real (strictly) positive coordinates:
-}{
-\spadpaste{lpr2 := positiveSolve(lf)$pack \free{lf} \free{pack} \bound{lpr2}}
-}
-
-\xtc{
-Finally, we approximate the coordinates of this point with 20 exact digits:
-}{
-\spadpaste{[approximate(r,1/10**21)::Float for r in lpr2.1] \free{lpr2}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
-\section{zlindep.ht}
-<<zlindep.ht>>=
-\newcommand{\IntegerLinearDependenceXmpTitle}{IntegerLinearDependence}
-\newcommand{\IntegerLinearDependenceXmpNumber}{9.35}
-
-@
-\subsection{IntegerLinearDependence}
-\label{IntegerLinearDependenceXmpPage}
-\index{pages!IntegerLinearDependenceXmpPage!zlindep.ht}
-\index{zlindep.ht!pages!IntegerLinearDependenceXmpPage}
-\index{IntegerLinearDependenceXmpPage!zlindep.ht!pages}
-<<zlindep.ht>>=
-\begin{page}{IntegerLinearDependenceXmpPage}{IntegerLinearDependence}
-\beginscroll
-
-The elements \texht{$v_1, \dots,v_n$}{\spad{v1,...,vn}}
-of a module \spad{M} over a ring \spad{R} are
-said to be {\it linearly dependent over \spad{R}} if there exist
-\texht{$c_1,\dots,c_n$}{\spad{c1, ..., cn}} in \spad{R},
-not all \smath{0},
-such that 
-\texht{$c_1 v_1 + \dots c_n v_n = 0$}{\spad{c1*v1 + ... + cn*vn = 0}}.
-If such \texht{$c_i$}{\spad{ci}}'s exist,
-they form what is called a {\it linear dependence
-relation over \spad{R}} for the \texht{$v_i$}{\spad{vi}}'s.
-
-The package \spadtype{IntegerLinearDependence} provides functions
-for testing whether some elements of a module over the integers are
-linearly dependent over the integers, and to find the linear
-dependence relations, if any.
-%
-\xtc{
-Consider the domain of two by two square matrices with integer entries.
-}{
-\spadpaste{M := SQMATRIX(2,INT) \bound{M}}
-}
-%
-%
-\xtc{
-Now create three such matrices.
-}{
-\spadpaste{m1: M := squareMatrix matrix [[1, 2], [0, -1]] \free{M}\bound{m1}}
-}
-\xtc{
-}{
-\spadpaste{m2: M := squareMatrix matrix [[2, 3], [1, -2]] \free{M}\bound{m2}}
-}
-\xtc{
-}{
-\spadpaste{m3: M := squareMatrix matrix [[3, 4], [2, -3]] \free{M}\bound{m3}}
-}
-%
-%
-\xtc{
-This tells you whether \spad{m1}, \spad{m2} and \spad{m3} are linearly
-dependent over the integers.
-}{
-\spadpaste{linearlyDependentOverZ? vector [m1, m2, m3] \free{m1 m2 m3}}
-}
-%
-%
-\xtc{
-Since they are linearly dependent, you can ask for the dependence
-relation.
-}{
-\spadpaste{c := linearDependenceOverZ vector [m1, m2, m3] \free{m1 m2 m3}\bound{c}}
-}
-%
-%
-\xtc{
-This means that the following linear combination should be \spad{0}.
-}{
-\spadpaste{c.1 * m1 + c.2 * m2 + c.3 * m3 \free{c m1 m2 m3}}
-}
-%
-When a given set of elements are linearly dependent over \spad{R}, this
-also means that at least one of them can be rewritten as a linear
-combination of the others with coefficients in the quotient field of
-\spad{R}.
-%
-\xtc{
-To express a given element in terms of other elements, use the operation
-\spadfunFrom{solveLinearlyOverQ}{IntegerLinearDependence}.
-}{
-\spadpaste{solveLinearlyOverQ(vector [m1, m3], m2) \free{m1 m2 m3}}
-}
-\endscroll
-\autobuttons
-\end{page}
-
-@
 \chapter{Page hierarchy layout}
 This is the forest of pages in hyperdoc. Any page at the leftmost
 margin is a root page. Notice that the roots are disconnnected.
@@ -124184,8 +124319,8 @@ RootPage
           ugGraphPage
           ugProblemNumericPage
           DoubleFloatXmpPage
-          ugFloatIntroPage
-          ugFloatConvertPage
+          ugxFloatIntroPage
+          ugxFloatConvertPage
           ugxFloatOutputPage
           ugxFloatHilbertPage
         ComplexXmpPage
@@ -124225,7 +124360,7 @@ RootPage
       EquationPage
         ugxProblemLinSysPage
         ugxProblemOnePolPage
-        ugxProblemPolySysPage
+        ugxProblemPolSysPage
         ugProblemDEQPage
       CalculusPage
         ugProblemLimitsPage
@@ -124237,7 +124372,7 @@ RootPage
         ugProblemDEQPage
       LinAlgPage
         ugIntroTwoDimPage
-        ugMatrixCreatePage
+        ugxMatrixCreatePage
         ugxMatrixOpsPage
         ugProblemEigenPage
         ugxFloatHilbertPage
@@ -124372,7 +124507,7 @@ RootPage
         RadixExpansion
       DistributedMultivariatePolynomialXmpPage
         ugIntroVariablesPage
-        utTypesConvertPage
+        ugTypesConvertPage
         PolynomialXmpPage
         UnivariatePolynomialXmpPage
         MultivariatePolynomialXmpPage
@@ -124437,7 +124572,7 @@ RootPage
         ugxIntegerPrimesPage
           FactoredXmpPage
           ComplexXmpPage
-        ugxIntegerNtPage
+        ugxIntegerNTPage
           IntegerNumberTheoryFunctionsXmpPage
       IntegerLinearDependenceXmpPage
       IntegerNumberTheoryFunctionsXmpPage
@@ -125021,7 +125156,7 @@ UsersGuideExposedPage
       ContinuedFractionXmpPage 
       PartialFractionXmpPage 
       RadixExpansionXmpPage 
-      ugxProblemFinitePrimeTitle 
+      ugxProblemFinitePrimePage 
     ugIntroCollectPage 
       ListXmpPage 
       ugLangItsPage 
diff --git a/books/ps/v71algebrapage.eps b/books/ps/v71algebrapage.eps
new file mode 100644
index 0000000..0ef18d8
--- /dev/null
+++ b/books/ps/v71algebrapage.eps
@@ -0,0 +1,2228 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: algebrapage.eps
+%%CreationDate: Sat Jun 21 10:59:41 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       108050 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5j:\!2]_o
+!9O7\!.k1!rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5j:\!2]_o
+!9O7\!.k1!rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5j:\!2]_o
+!9O7\!.k1!rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG6>
+r;c]o!!)<a!!(UM!!)Zkr;cTl!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG6>
+r;c]o!!)<a!!(UM!!)Zkr;cTl!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG6>
+r;c]o!!)<a!!(UM!!)Zkr;cTl!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1:
+rr<&qrr<&arr<&Mrr<&hrr<&nrr<&[rr<%Ms3puO!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1:
+rr<&qrr<&arr<&Mrr<&hrr<&nrr<&[rr<%Ms3puO!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1:
+rr<&qrr<&arr<&Mrr<&hrr<&nrr<&[rr<%Ms3puO!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG0<!W`6#qu6WrlMghaf)G^Mo)AakrrDio!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG0<!W`6#qu6WrlMghaf)G^Mo)AakrrDio!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG0<!W`6#qu6WrlMghaf)G^Mo)AakrrDio!!)*[!!%TMeGfLKrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1;
+rrN3#!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g6h!W`6#q#:<oq>^Bn
+!ri6#rVufrqu6Zss8;rrs8Duus8E#qs8;qKs6]gi!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!rrE'!rrE'!rrE)o!#5G5
+rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1;
+rrN3#!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g6h!W`6#q#:<oq>^Bn
+!ri6#rVufrqu6Zss8;rrs8Duus8E#qs8;qKs6]gi!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!rrE'!rrE'!rrE)o!#5G5
+rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1;
+rrN3#!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g6h!W`6#q#:<oq>^Bn
+!ri6#rVufrqu6Zss8;rrs8Duus8E#qs8;qKs6]gi!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!rrE'!rrE'!rrE)o!#5G5
+rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG3=!!*#u!!)rsrrE#t!!)ut!!)utrrDrr!!)forrE&u!!)ut!!)ut!!)rs!!)utrrDrr
+!!)Wj!!*#u!!)ip!!)lq!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMn,E@f
+rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG3=!!*#u!!)rsrrE#t!!)ut!!)utrrDrr!!)forrE&u!!)ut!!)ut!!)rs!!)utrrDrr
+!!)Wj!!*#u!!)ip!!)lq!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMn,E@f
+rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcG3=!!*#u!!)rsrrE#t!!)ut!!)utrrDrr!!)forrE&u!!)ut!!)ut!!)rs!!)utrrDrr
+!!)Wj!!*#u!!)ip!!)lq!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMn,E@f
+rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls6fme!<2uu!;uis!;lcr!<2uu
+!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!;$3j!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot
+!;lcr!<)ot!;$3j!.k1<rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls6fme!<2uu!;uis!;lcr!<2uu
+!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!;$3j!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot
+!;lcr!<)ot!;$3j!.k1<rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls6fme!<2uu!;uis!;lcr!<2uu
+!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!;$3j!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot
+!;lcr!<)ot!;$3j!.k1<rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG6>!!)rs!!)ut!!)or!!)utrW)`n!!)fo
+!!)foqZ-Tp!!)Zk!!)Zk!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3In,E@f
+rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!
+!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG6>!!)rs!!)ut!!)or!!)utrW)`n!!)fo
+!!)foqZ-Tp!!)Zk!!)Zk!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3In,E@f
+rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!
+!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG6>!!)rs!!)ut!!)or!!)utrW)`n!!)fo
+!!)foqZ-Tp!!)Zk!!)Zk!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3In,E@f
+rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!
+!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6p!a!<)ot!;lcr!;c`q!;c]q
+!;QQo!;ZWp!;uis!<)ot!;-9k!;-<f!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis
+!.k1<rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.
+rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6p!a!<)ot!;lcr!;c`q!;c]q
+!;QQo!;ZWp!;uis!<)ot!;-9k!;-<f!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis
+!.k1<rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.
+rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6p!a!<)ot!;lcr!;c`q!;c]q
+!;QQo!;ZWp!;uis!<)ot!;-9k!;-<f!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis
+!.k1<rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.
+rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLnc&Rh
+qYpNqrr2ruqu6Wrrr2rur;Q`squ6Wrq#:<oq>UEpr;Q`srVlito`"mkp&>!lqYpNqqu6Wrqu6Wr
+qu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Q`sJcG3=!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duu
+s6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLnc&Rh
+qYpNqrr2ruqu6Wrrr2rur;Q`squ6Wrq#:<oq>UEpr;Q`srVlito`"mkp&>!lqYpNqqu6Wrqu6Wr
+qu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Q`sJcG3=!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duu
+s6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLnc&Rh
+qYpNqrr2ruqu6Wrrr2rur;Q`squ6Wrq#:<oq>UEpr;Q`srVlito`"mkp&>!lqYpNqqu6Wrqu6Wr
+qu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Q`sJcG3=!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duu
+s6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1>rr<&qrr<&us8N)t
+rr<&ts8N)trr<&rrr<&trr<&trr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&qrr<&qrr<&rrr<&q
+rr<&ts8N)trr<&ts8N)ts8N)trr<&srr<&prr<&ts8N(Ms6fmj!<3'!!<;rs!<;rs!<<#u!ri9#
+qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1>rr<&qrr<&us8N)t
+rr<&ts8N)trr<&rrr<&trr<&trr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&qrr<&qrr<&rrr<&q
+rr<&ts8N)trr<&ts8N)ts8N)trr<&srr<&prr<&ts8N(Ms6fmj!<3'!!<;rs!<;rs!<<#u!ri9#
+qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1>rr<&qrr<&us8N)t
+rr<&ts8N)trr<&rrr<&trr<&trr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&qrr<&qrr<&rrr<&q
+rr<&ts8N)trr<&ts8N)ts8N)trr<&srr<&prr<&ts8N(Ms6fmj!<3'!!<;rs!<;rs!<<#u!ri9#
+qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLo)JXgrr;os
+"9/?$s8;rqrrE-"r;cZnr;cisq>gHnr;ZitrW)osr;cWmr;c]or;cisr;cltq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!.k1?rr<&urrW9$!<<#u!ri9#rVuruqu?fu!<<#u!<;<a!ri9#
+rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLo)JXgrr;os
+"9/?$s8;rqrrE-"r;cZnr;cisq>gHnr;ZitrW)osr;cWmr;c]or;cisr;cltq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!.k1?rr<&urrW9$!<<#u!ri9#rVuruqu?fu!<<#u!<;<a!ri9#
+rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLo)JXgrr;os
+"9/?$s8;rqrrE-"r;cZnr;cisq>gHnr;ZitrW)osr;cWmr;c]or;cisr;cltq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!.k1?rr<&urrW9$!<<#u!ri9#rVuruqu?fu!<<#u!<;<a!ri9#
+rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s7ZHm
+!.k0frriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu
+!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s7ZHm
+!.k0frriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu
+!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s7ZHm
+!.k0frriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu
+!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcGKE
+!!%TM`;]f;rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!
+!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcGKE
+!!%TM`;]f;rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!
+!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcGKE
+!!%TM`;]f;rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!
+!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s7cNn!.k0e
+rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bS
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$
+J,~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s7cNn!.k0e
+rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bS
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'j
+J,~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s7cNn!.k0e
+rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bS
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%V
+J,~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG]KquD<J_Z'T9rr3'#rrE)u
+!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG]KquD<J_Z'T9rr3'#rrE)u
+!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG]KquD<J_Z'T9rr3'#rrE)u
+!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G</s8N(Xs8;rRs8;r/s8;qKs+13ds8MBdeieN~>
+!BU8[l%/m+s8N(Xs8;rRs8;r/s8;qKs+13ds8M6`c8pI~>
+!B:&Xj+77%s8N(Xs8;rRs8;r/s8;qKs+13ds8M$Z_`*)~>
+!BpJ^mHafN!:9^c!3lJ'!;-9k!5AI5!7CfH!9*qX!;HKn!;HKn!;QQo!;?Em!8RSS!8[YT!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURm/bd$J,~>
+!BU8[l0JBJ!:9^c!3lJ'!;-9k!5AI5!7CfH!9*qX!;HKn!;HKn!;QQo!;?Em!8RSS!8[YT!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURklK'jJ,~>
+!B:&Xj6QaD!:9^c!3lJ'!;-9k!5AI5!7CfH!9*qX!;HKn!;HKn!;QQo!;?Em!8RSS!8[YT!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURirR%VJ,~>
+!BpJ^mHFQM!:9^c!3lJ'!;-9k!5AI5!7LlI!9!kW!;HKn!;HKn!;QQo!;?Em!8[YT!8RSS!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURm/bd$J,~>
+!BU8[l0/-I!:9^c!3lJ'!;-9k!5AI5!7LlI!9!kW!;HKn!;HKn!;QQo!;?Em!8[YT!8RSS!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURklK'jJ,~>
+!B:&Xj66LC!:9^c!3lJ'!;-9k!5AI5!7LlI!9!kW!;HKn!;HKn!;QQo!;?Em!8[YT!8RSS!7q/M
+!;?Em!8[YT!9!kW!8RSS!/LURirR%VJ,~>
+!BpJ^mHOWP!<3%Yrr<%Zrr<&Lrr<&drr<&Hrr<&Srr<&Mrr<&Hrr<%Ms1eU5m/bd$J,~>
+!BU8[l083L!<3%Yrr<%Zrr<&Lrr<&drr<&Hrr<&Srr<&Mrr<&Hrr<%Ms1eU5klK'jJ,~>
+!B:&Xj6?RF!<3%Yrr<%Zrr<&Lrr<&drr<&Hrr<&Srr<&Mrr<&Hrr<%Ms1eU5irR%VJ,~>
+!BpJ^mHOWP!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ps8N'!s8;rrs8Duus8E#qs8;rq
+s8E#ts8E#ss8E#os8;ourrDusr;c]or;Zlu!;ZZo!<3#t!<)rr!;ulr!!*&u!;lfq!;ZZn!;uls
+!<)rt!;ulq!!3*"q#C0jr;Z]qqZ$Ko!WN/ts8E#mrr<&ps8E#ps7u`ns8E#os8;ros8;ourrDio
+q>gHnr;ccqrVururW)]mq>gNprVururW)iqr;c]or;c`pq>gHnrW)iqrr<'!r;c`pr;Zp!!!)ip
+q>gHnr;ccqrr<'!r;c`prW)cor;Zlu!;ulq!!3*"p](3mqu?Zr!<;utPlLaM!S0Da~>
+!BU8[l083L!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ps8N'!s8;rrs8Duus8E#qs8;rq
+s8E#ts8E#ss8E#os8;ourrDusr;c]or;Zlu!;ZZo!<3#t!<)rr!;ulr!!*&u!;lfq!;ZZn!;uls
+!<)rt!;ulq!!3*"q#C0jr;Z]qqZ$Ko!WN/ts8E#mrr<&ps8E#ps7u`ns8E#os8;ros8;ourrDio
+q>gHnr;ccqrVururW)]mq>gNprVururW)iqr;c]or;c`pq>gHnrW)iqrr<'!r;c`pr;Zp!!!)ip
+q>gHnr;ccqrr<'!r;c`prW)cor;Zlu!;ulq!!3*"p](3mqu?Zr!<;utPlLaI!R<`V~>
+!B:&Xj6?RF!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ps8N'!s8;rrs8Duus8E#qs8;rq
+s8E#ts8E#ss8E#os8;ourrDusr;c]or;Zlu!;ZZo!<3#t!<)rr!;ulr!!*&u!;lfq!;ZZn!;uls
+!<)rt!;ulq!!3*"q#C0jr;Z]qqZ$Ko!WN/ts8E#mrr<&ps8E#ps7u`ns8E#os8;ros8;ourrDio
+q>gHnr;ccqrVururW)]mq>gNprVururW)iqr;c]or;c`pq>gHnrW)iqrr<'!r;c`pr;Zp!!!)ip
+q>gHnr;ccqrr<'!r;c`prW)cor;Zlu!;ulq!!3*"p](3mqu?Zr!<;utPlLaC!Q-jH~>
+!BpJ^mHX]O!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZZp!<)ot!;uls!<2uu
+!<)ot!<)ot!;uis!;uis!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot
+!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;uis!<)rt!;c]q
+!;HKn!;HKn!;QQo!;?Em!;c]q!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr!<2uu!;?Em!;QTo
+!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;uls
+!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!1!T`m/bd$J,~>
+!BU8[l0A9K!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZZp!<)ot!;uls!<2uu
+!<)ot!<)ot!;uis!;uis!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot
+!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;uis!<)rt!;c]q
+!;HKn!;HKn!;QQo!;?Em!;c]q!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr!<2uu!;?Em!;QTo
+!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;uls
+!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!1!T`klK'jJ,~>
+!B:&Xj6HXE!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZZp!<)ot!;uls!<2uu
+!<)ot!<)ot!;uis!;uis!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot
+!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;uis!<)rt!;c]q
+!;HKn!;HKn!;QQo!;?Em!;c]q!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr!<2uu!;?Em!;QTo
+!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;uls
+!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!1!T`irR%VJ,~>
+!BpJ^mHX]O!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrr;Q`srr2ruq>UEpqu6Wrqu6Wrrr2ruqu6WrrVlitr;Q`sp\t3nrr2rup\t3nqu6Wrp&>!l
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mo`"mkrVlitqu6WrqYpNqp\t3np\t3nq#:<opAY*m
+qu6Wrqu6WrrVlitr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpqu6Wrq#:<oqYpNqpAY*m
+qYpNqr;Q`srr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sp&>!l
+qYpNqr;Q`sQ2gjN!S0Da~>
+!BU8[l0A9K!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrr;Q`srr2ruq>UEpqu6Wrqu6Wrrr2ruqu6WrrVlitr;Q`sp\t3nrr2rup\t3nqu6Wrp&>!l
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mo`"mkrVlitqu6WrqYpNqp\t3np\t3nq#:<opAY*m
+qu6Wrqu6WrrVlitr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpqu6Wrq#:<oqYpNqpAY*m
+qYpNqr;Q`srr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sp&>!l
+qYpNqr;Q`sQ2gjJ!R<`V~>
+!B:&Xj6HXE!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrr;Q`srr2ruq>UEpqu6Wrqu6Wrrr2ruqu6WrrVlitr;Q`sp\t3nrr2rup\t3nqu6Wrp&>!l
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mo`"mkrVlitqu6WrqYpNqp\t3np\t3nq#:<opAY*m
+qu6Wrqu6WrrVlitr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpqu6Wrq#:<oqYpNqpAY*m
+qYpNqr;Q`srr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sp&>!l
+qYpNqr;Q`sQ2gjD!Q-jH~>
+!BpJ^mHacP!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr
+!;uis!<2uu!;ZWp!;lcr!;lcr!<3#o!;ulr!;-9k!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot
+!;uis!;ulr!;$3j!;ZZl!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lfl!;ulr!;$3j!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZZj!<)rp!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!<)ot
+!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!1!T`m/bd$J,~>
+!BU8[l0J?L!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr
+!;uis!<2uu!;ZWp!;lcr!;lcr!<3#o!;ulr!;-9k!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot
+!;uis!;ulr!;$3j!;ZZl!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lfl!;ulr!;$3j!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZZj!<)rp!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!<)ot
+!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!1!T`klK'jJ,~>
+!B:&Xj6Q^F!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr
+!;uis!<2uu!;ZWp!;lcr!;lcr!<3#o!;ulr!;-9k!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot
+!;uis!;ulr!;$3j!;ZZl!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lfl!;ulr!;$3j!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZZj!<)rp!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!<)ot
+!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!1!T`irR%VJ,~>
+!BpJ^mHafK!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr!;lct
+!<3&orr<&rrr<&rrr<&urr<&is8N)lrrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis
+!;ZZp!;6?l!;c]q!;uis!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lcr!:p0i!;6?l!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZWp!;HKn!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr
+!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!1!T`m/bd$J,~>
+!BU8[l0JBG!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr!;lct
+!<3&orr<&rrr<&rrr<&urr<&is8N)lrrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis
+!;ZZp!;6?l!;c]q!;uis!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lcr!:p0i!;6?l!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZWp!;HKn!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr
+!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!1!T`klK'jJ,~>
+!B:&Xj6QaA!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;ZWp!;lcr!<)ot!;ZWp!;lcr!;lct
+!<3&orr<&rrr<&rrr<&urr<&is8N)lrrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis
+!;ZZp!;6?l!;c]q!;uis!<)ot!;$3j!;HKn!;HKn!;QQo!;?Em!;lcr!:p0i!;6?l!;c]q!;lcr
+!;uis!:g'h!;QQo!;ZWp!;HKn!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr
+!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!1!T`irR%VJ,~>
+!BpJ^mHjiQ!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrqu6]trrDio!!)or!!)or!!*#u!!)`m!!)rs!!)`m!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqr;Q`srVlitoD\djp\t3np\t3nq#:<opAY*mqu6Wr
+pAY*mr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpp\t3nr;Q`sqYpNqpAY*mqYpNqr;Q`s
+rr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sp&>!lqYpNqr;Q`sQ2gjN
+!S0Da~>
+!BU8[l0SEM!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrqu6]trrDio!!)or!!)or!!*#u!!)`m!!)rs!!)`m!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqr;Q`srVlitoD\djp\t3np\t3nq#:<opAY*mqu6Wr
+pAY*mr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpp\t3nr;Q`sqYpNqpAY*mqYpNqr;Q`s
+rr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sp&>!lqYpNqr;Q`sQ2gjJ
+!R<`V~>
+!B:&Xj6ZdG!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruq>UEpqu6WrrVlitq>UEp
+qu6Wrqu6]trrDio!!)or!!)or!!*#u!!)`m!!)rs!!)`m!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqr;Q`srVlitoD\djp\t3np\t3nq#:<opAY*mqu6Wr
+pAY*mr;Q`spAY*mqYpNqqu6Wrr;Q`snc&Rhq#:<oq>UEpp\t3nr;Q`sqYpNqpAY*mqYpNqr;Q`s
+rr2ruqu6WrpAY*mqYpNqqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sp&>!lqYpNqr;Q`sQ2gjD
+!Q-jH~>
+!BpJ^mHjiQ!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZZp!<)ot!;uis!;QQo
+!<)ot!;ZWp!;HKn!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;6?l!;lcr!<)rt!;lcr!;6?l!;c]q
+!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!;c]q!<)rt!;uis!<)rt!;c]q!;HKn!;HKn!;QQo!<)ot
+!;lcr!;c]q!<)rt!<)rt!<)ot!;?Em!;ZWp!<)ot!;lcr!:g'h!<)ot!<)ot!;QQo!<)rt!<2uu
+!<)rt!;c]q!<)ot!;lcr!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!<2uu!<)ot!;uls!<)ot!;c]q
+!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!1!T`m/bd$J,~>
+!BU8[l0SEM!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZZp!<)ot!;uis!;QQo
+!<)ot!;ZWp!;HKn!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;6?l!;lcr!<)rt!;lcr!;6?l!;c]q
+!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!;c]q!<)rt!;uis!<)rt!;c]q!;HKn!;HKn!;QQo!<)ot
+!;lcr!;c]q!<)rt!<)rt!<)ot!;?Em!;ZWp!<)ot!;lcr!:g'h!<)ot!<)ot!;QQo!<)rt!<2uu
+!<)rt!;c]q!<)ot!;lcr!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!<2uu!<)ot!;uls!<)ot!;c]q
+!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!1!T`klK'jJ,~>
+!B:&Xj6ZdG!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZZp!<)ot!;uis!;QQo
+!<)ot!;ZWp!;HKn!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;6?l!;lcr!<)rt!;lcr!;6?l!;c]q
+!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!;c]q!<)rt!;uis!<)rt!;c]q!;HKn!;HKn!;QQo!<)ot
+!;lcr!;c]q!<)rt!<)rt!<)ot!;?Em!;ZWp!<)ot!;lcr!:g'h!<)ot!<)ot!;QQo!<)rt!<2uu
+!<)rt!;c]q!<)ot!;lcr!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!<2uu!<)ot!;uls!<)ot!;c]q
+!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!1!T`irR%VJ,~>
+!BpJ^mHsrP!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c]r!<;utrVu]oqu?Tpq#:<o
+qZ$Blr;Z]q!ri6#rVufrqu6Zss8;rirr<&qs8;ots8E#us7u`ns7u`ns8;ros8;p!rr<&urrE-"
+r;cTlq>gKor;ZitrW)osr;c`pq>gKoq>gKoq>gBlr;cfrq>gHnr;c`p!<E/u!;HNi!;ulq!;uln
+!;-<i!<3#p!;lfp!;lfp!!*&u!;lfp!<)ro!<3#t!<3#t!<)rr!!3*"p&Fsjr;Z]qqu6Zss8;rq
+s7u`ns8;rprrE-"r;cTlq>gNprW)rtrW&8arp9a;4b*~>
+!BU8[l0\NL!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c]r!<;utrVu]oqu?Tpq#:<o
+qZ$Blr;Z]q!ri6#rVufrqu6Zss8;rirr<&qs8;ots8E#us7u`ns7u`ns8;ros8;p!rr<&urrE-"
+r;cTlq>gKor;ZitrW)osr;c`pq>gKoq>gKoq>gBlr;cfrq>gHnr;c`p!<E/u!;HNi!;ulq!;uln
+!;-<i!<3#p!;lfp!;lfp!!*&u!;lfp!<)ro!<3#t!<3#t!<)rr!!3*"p&Fsjr;Z]qqu6Zss8;rq
+s7u`ns8;rprrE-"r;cTlq>gNprW)rtrW&8arojI/3e.~>
+!B:&Xj6cmF!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c]r!<;utrVu]oqu?Tpq#:<o
+qZ$Blr;Z]q!ri6#rVufrqu6Zss8;rirr<&qs8;ots8E#us7u`ns7u`ns8;ros8;p!rr<&urrE-"
+r;cTlq>gKor;ZitrW)osr;c`pq>gKoq>gKoq>gBlr;cfrq>gHnr;c`p!<E/u!;HNi!;ulq!;uln
+!;-<i!<3#p!;lfp!;lfp!!*&u!;lfp!<)ro!<3#t!<3#t!<)rr!!3*"p&Fsjr;Z]qqu6Zss8;rq
+s7u`ns8;rprrE-"r;cTlq>gNprW)rtrW&8aro4$s2h1~>
+!BpJ^mB?Ni!.k0$s+145rr<&Yrr<%Ms3q#Im/bd$J,~>
+!BU8[l*(*e!.k0$s+145rr<&Yrr<%Ms3q#IklK'jJ,~>
+!B:&Xj0/I_!.k0$s+145rr<&Yrr<%Ms3q#IirR%VJ,~>
+!BpJ^mB?Ni!.k0$s+145rr<&Yrr<%Ms3q#Im/bd$J,~>
+!BU8[l*(*e!.k0$s+145rr<&Yrr<%Ms3q#IklK'jJ,~>
+!B:&Xj0/I_!.k0$s+145rr<&Yrr<%Ms3q#IirR%VJ,~>
+!BpJ^mB?Ni!.k0$s+146rr<&Xrr<%Ms3q#Im/bd$J,~>
+!BU8[l*(*e!.k0$s+146rr<&Xrr<%Ms3q#IklK'jJ,~>
+!B:&Xj0/I_!.k0$s+146rr<&Xrr<%Ms3q#IirR%VJ,~>
+!BpJ^mBHWh!.k0$s+14=s82lUs8;qKs4./Km/bd$J,~>
+!BU8[l*13d!.k0$s+14=s82lUs8;qKs4./KklK'jJ,~>
+!B:&Xj08R^!.k0$s+14=s82lUs8;qKs4./KirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG\*F!2]_o!9O7\!.k0$s+13$s5j:[m/bd$J,~>
+!BU8[l/D[B!2]_o!9O7\!.k0$s+13$s5j:[klK'jJ,~>
+!B:&Xj5L%<!2]_o!9O7\!.k0$s+13$s5j:[irR%VJ,~>
+!BpJ^mGS!E!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[m/bd$J,~>
+!BU8[l/;RA!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[klK'jJ,~>
+!B:&Xj5Bq;!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[irR%VJ,~>
+!BpJ^mGS!E!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[m/bd$J,~>
+!BU8[l/;RA!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[klK'jJ,~>
+!B:&Xj5Bq;!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[irR%VJ,~>
+!BpJ^mGS!E!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[m/bd$J,~>
+!BU8[l/;RA!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[klK'jJ,~>
+!B:&Xj5Bq;!:'Ra!7q/M!9X:]!9F.[!.k0$s+13$s5j:[irR%VJ,~>
+!BpJ^mHX`M!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g9ir;cWm!!)ip
+r;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!.k0$s+13$s8W,um/bd$J,~>
+!BU8[l0A<I!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g9ir;cWm!!)ip
+r;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!.k0$s+13$s8W,uklK'jJ,~>
+!B:&Xj6H[C!;lcs!<;utqu?Tp!WN/us7u`ps8Duus8E#qs8;ros8;ourrE#tq>g9ir;cWm!!)ip
+r;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!.k0$s+13$s8W,uirR%VJ,~>
+!BpJ^mHacP!<)ot!;uls!<)ot!<)ot!<)rt!;lcr!;QTo!<2uu!<)ot!<)ot!;uis!<)rt!;lcr
+!;-9k!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!.k0$s+13$
+rrE)um/bd$J,~>
+!BU8[l0J?L!<)ot!;uls!<)ot!<)ot!<)rt!;lcr!;QTo!<2uu!<)ot!<)ot!;uis!<)rt!;lcr
+!;-9k!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!.k0$s+13$
+rrE)uklK'jJ,~>
+!B:&Xj6Q^F!<)ot!;uls!<)ot!<)ot!<)rt!;lcr!;QTo!<2uu!<)ot!<)ot!;uis!<)rt!;lcr
+!;-9k!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!.k0$s+13$
+rrE)uirR%VJ,~>
+!BpJ^mH4EK!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!:Tpf!;ZWp!;lcr
+!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l/r!G!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!:Tpf!;ZWp!;lcr
+!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6$@A!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;$3j!<)ot!;lcr!;lcr!:Tpf!;ZWp!;lcr
+!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^mHafL!;uis!;lcr!<)rs!;QQo!;QQo!;QTk!<)ot!;-9k!;-<g!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTk!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l0JBH!;uis!;lcr!<)rs!;QQo!;QQo!;QTk!<)ot!;-9k!;-<g!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTk!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6QaB!;uis!;lcr!<)rs!;QQo!;QQo!;QTk!<)ot!;-9k!;-<g!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTk!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^mHjiQ!;uis!;uis!;lcr!;c`q!;c]q!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l0SEM!;uis!;uis!;lcr!;c`q!;c]q!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6ZdG!;uis!;uis!;lcr!;c`q!;c]q!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^mHjiQ!;uis!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l0SEM!;uis!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6ZdG!;uis!;uis!;lcr!<2uu!;uis!;lcr!;QQo!;ZWp!;uis!<)ot!;-9k!;6?l!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^mHjiQ!<)rt!;uls!<)ot!<)rt!<)ot!;lcr!<)ot!<)ot!;ZWp!<)rt!;uis!<)rt!;lcr
+!<)ot!;c]q!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;c`q!.k0$
+s+13,s8MBdeieN~>
+!BU8[l0SEM!<)rt!;uls!<)ot!<)rt!<)ot!;lcr!<)ot!<)ot!;ZWp!<)rt!;uis!<)rt!;lcr
+!<)ot!;c]q!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;c`q!.k0$
+s+13,s8M6`c8pI~>
+!B:&Xj6ZdG!<)rt!;uls!<)ot!<)rt!<)ot!;lcr!<)ot!<)ot!;ZWp!<)rt!;uis!<)rt!;lcr
+!<)ot!;c]q!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;c`q!.k0$
+s+13,s8M$Z_`*)~>
+!BpJ^mHafN!!*&u!<<*!!!*&t!;uit!<;utq>^Bnrr;fpr;Z]q!<<#urVufrq#C9mq#C9m!<<#u
+rr;fpr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`ns8;ots8E#rs8N(Ms+13$s,$dTm/bd$J,~>
+!BU8[l0JBJ!!*&u!<<*!!!*&t!;uit!<;utq>^Bnrr;fpr;Z]q!<<#urVufrq#C9mq#C9m!<<#u
+rr;fpr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`ns8;ots8E#rs8N(Ms+13$s,$dTklK'jJ,~>
+!B:&Xj6QaD!!*&u!<<*!!!*&t!;uit!<;utq>^Bnrr;fpr;Z]q!<<#urVufrq#C9mq#C9m!<<#u
+rr;fpr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`ns8;ots8E#rs8N(Ms+13$s,$dTirR%VJ,~>
+!BpJ^m=G<.rr<%Ms+13$s+14#s8MBdeieN~>
+!BU8[l%/m*rr<%Ms+13$s+14#s8M6`c8pI~>
+!B:&Xj+77$rr<%Ms+13$s+14#s8M$Z_`*)~>
+!BpJ^m=G<.rr<%Ms+13$s+14#s8MBdeieN~>
+!BU8[l%/m*rr<%Ms+13$s+14#s8M6`c8pI~>
+!B:&Xj+77$rr<%Ms+13$s+14#s8M$Z_`*)~>
+!BpJ^m=G</rr<%Ms+13$s+14"s8MBdeieN~>
+!BU8[l%/m+rr<%Ms+13$s+14"s8M6`c8pI~>
+!B:&Xj+77%rr<%Ms+13$s+14"s8M$Z_`*)~>
+!BpJ^m=G<4s82kJs+13$s+14!s8MBdeieN~>
+!BU8[l%/m0s82kJs+13$s+14!s8M6`c8pI~>
+!B:&Xj+77*s82kJs+13$s+14!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!7UuI!.k0$s+13$s1\O4m/bd$J,~>
+!BU8[l+I&q!7UuI!.k0$s+13$s1\O4klK'jJ,~>
+!B:&Xj1PEk!7UuI!.k0$s+13$s1\O4irR%VJ,~>
+!BpJ^mG7gA!<<)s!:'U`!8dbM!!*&u!.k0$s+13$s1\O4m/bd$J,~>
+!BU8[l.uC=!<<)s!:'U`!8dbM!!*&u!.k0$s+13$s1\O4klK'jJ,~>
+!B:&Xj5'b7!<<)s!:'U`!8dbM!!*&u!.k0$s+13$s1\O4irR%VJ,~>
+!BpJ^mHsrH!<)rr!!*&s!9sO`!8dbM!<<*!!.k0$s+13$s1\O4m/bd$J,~>
+!BU8[l0\ND!<)rr!!*&s!9sO`!8dbM!<<*!!.k0$s+13$s1\O4klK'jJ,~>
+!B:&Xj6cm>!<)rr!!*&s!9sO`!8dbM!<<*!!.k0$s+13$s1\O4irR%VJ,~>
+!BpJ^mHsrH!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&uqZ$Qq
+s8W*!s8W*!s8W*!!<;utqu?TpqZ$KorVufrs8W&us8W#ts8W#tJcC<$JcC<$nc/UU!S0Da~>
+!BU8[l0\ND!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&uqZ$Qq
+s8W*!s8W*!s8W*!!<;utqu?TpqZ$KorVufrs8W&us8W#ts8W#tJcC<$JcC<$nc/UQ!R<`V~>
+!B:&Xj6cm>!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&uqZ$Qq
+s8W*!s8W*!s8W*!!<;utqu?TpqZ$KorVufrs8W&us8W#ts8W#tJcC<$JcC<$nc/UK!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZos7lZps7ZNjs8N*!s8N*!
+s8N*!s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+14?s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZos7lZps7ZNjs8N*!s8N*!
+s8N*!s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+14?s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZos7lZps7ZNjs8N*!s8N*!
+s8N*!s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+14?s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVuru
+rW)osrW)rtr;cltrrDrrrrE*!rrE*!rrE*!rW)rtrrE*!rW)osrVururW)osrW)rtr;cltrrE*!
+rrE#trr@WMJcC<$JcG6>rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVuru
+rW)osrW)rtr;cltrrDrrrrE*!rrE*!rrE*!rW)rtrrE*!rW)osrVururW)osrW)rtr;cltrrE*!
+rrE#trr@WMJcC<$JcG6>rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVuru
+rW)osrW)rtr;cltrrDrrrrE*!rrE*!rrE*!rW)rtrrE*!rW)osrVururW)osrW)rtr;cltrrE*!
+rrE#trr@WMJcC<$JcG6>ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#
+!!)orrrE&urW)NhrrDrrrrE#trrE*!rrDrrrr<-#!!)orrrE&urW)fprrE#trr@WMJcC<$JcG6>
+rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#
+!!)orrrE&urW)NhrrDrrrrE#trrE*!rrDrrrr<-#!!)orrrE&urW)fprrE#trr@WMJcC<$JcG6>
+rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#
+!!)orrrE&urW)NhrrDrrrrE#trrE*!rrDrrrr<-#!!)orrrE&urW)fprrE#trr@WMJcC<$JcG6>
+ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!
+pAk3mrrDThrrDrrrrE#trrE*!pAb9p!!)orrrE&urrDiorrE*!rr@WMJcC<$JcG3=rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!
+pAk3mrrDThrrDrrrrE#trrE*!pAb9p!!)orrrE&urrDiorrE*!rr@WMJcC<$JcG3=rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!
+pAk3mrrDThrrDrrrrE#trrE*!pAb9p!!)orrrE&urrDiorrE*!rr@WMJcC<$JcG3=ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNm
+s8N)hs8N)rs8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+14<s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNm
+s8N)hs8N)rs8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+14<s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNm
+s8N)hs8N)rs8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+14<s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#m
+s8N)hs8N)rs8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+14<s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#m
+s8N)hs8N)rs8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+14<s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#m
+s8N)hs8N)rs8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+14<s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus7HBks7lZps7lZhs8)fqs8;rts8;rt
+s7lZos7lZps7lZls8E"Ls+13$s+14;s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus7HBks7lZps7lZhs8)fqs8;rts8;rt
+s7lZos7lZps7lZls8E"Ls+13$s+14;s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus7HBks7lZps7lZhs8)fqs8;rts8;rt
+s7lZos7lZps7lZls8E"Ls+13$s+14;s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZhs8)fq
+s8;rts8;rrs8)fos8;rrs7lZls8N(Ms+13$s+14:s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZhs8)fq
+s8;rts8;rrs8)fos8;rrs7lZls8N(Ms+13$s+14:s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZhs8)fq
+s8;rts8;rrs8)fos8;rrs7lZls8N(Ms+13$s+14:s8M$Z_`*)~>
+!BpJ^mHsrH!.k1Js8N(Ms+13$s+14:s8MBdeieN~>
+!BU8[l0\ND!.k1Js8N(Ms+13$s+14:s8M6`c8pI~>
+!B:&Xj6cm>!.k1Js8N(Ms+13$s+14:s8M$Z_`*)~>
+!BpJ^mHsrH!.k1Ks8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\ND!.k1Ks8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cm>!.k1Ks8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^m=G;ps8)eIs+13$s+14;s8MBdeieN~>
+!BU8[l%/lls8)eIs+13$s+14;s8M6`c8pI~>
+!B:&Xj+76fs8)eIs+13$s+14;s8M$Z_`*)~>
+!BpJ^m=G;ps8)eIs+13$s+14;s8MBdeieN~>
+!BU8[l%/lls8)eIs+13$s+14;s8M6`c8pI~>
+!B:&Xj+76fs8)eIs+13$s+14;s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G<*s8;rZs8N(rs8N)Is8N(Ms+13+s8MBdeieN~>
+!BU8[l%/m&s8;rZs8N(rs8N)Is8N(Ms+13+s8M6`c8pI~>
+!B:&Xj+76us8;rZs8N(rs8N)Is8N(Ms+13+s8M$Z_`*)~>
+!BpJ^mG.a:!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^Sm/bd$J,~>
+!BU8[l.l=6!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^SklK'jJ,~>
+!B:&Xj4s\0!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^SirR%VJ,~>
+!BpJ^mG.^A!<2uu!<2uu!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^Sm/bd$
+J,~>
+!BU8[l.l:=!<2uu!<2uu!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^SklK'j
+J,~>
+!B:&Xj4sY7!<2uu!<2uu!9O4\!8RSS!8RSS!9F.[!8d_U!6P6@!8@GQ!;ZWp!.k0$s+p^SirR%V
+J,~>
+!BpJ^mG.^A!<2uu!<2uu!1Eie!9F.[!2]\q!8@GQ!;ZWp!.k0$s+p^Sm/bd$J,~>
+!BU8[l.l:=!<2uu!<2uu!1Eie!9F.[!2]\q!8@GQ!;ZWp!.k0$s+p^SklK'jJ,~>
+!B:&Xj4sY7!<2uu!<2uu!1Eie!9F.[!2]\q!8@GQ!;ZWp!.k0$s+p^SirR%VJ,~>
+!BpJ^mG.^A!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/os8E#qs8N'!s8;rk
+s8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;ZZp!!*&t!<)rt
+!<)rt!<<*!!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#up]('irVllus8;rps8;ros8;rqs8Duu
+s8E#ss8E#ts8E"Ls+13^s8MBdeieN~>
+!BU8[l.l:=!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/os8E#qs8N'!s8;rk
+s8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;ZZp!!*&t!<)rt
+!<)rt!<<*!!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#up]('irVllus8;rps8;ros8;rqs8Duu
+s8E#ss8E#ts8E"Ls+13^s8M6`c8pI~>
+!B:&Xj4sY7!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/os8E#qs8N'!s8;rk
+s8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;ZZp!!*&t!<)rt
+!<)rt!<<*!!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#up]('irVllus8;rps8;ros8;rqs8Duu
+s8E#ss8E#ts8E"Ls+13^s8M$Z_`*)~>
+!BpJ^mF_F=!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!;QQo
+!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp!;c]q!<)rt
+!;QTo!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu!;?Em!;ZZp
+!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0$s1870m/bd$J,~>
+!BU8[l.H"9!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!;QQo
+!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp!;c]q!<)rt
+!;QTo!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu!;?Em!;ZZp
+!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0$s1870klK'jJ,~>
+!B:&Xj4OA3!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;6?l!;c`q!<)ot!;QQo
+!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp!;c]q!<)rt
+!;QTo!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu!;?Em!;ZZp
+!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0$s1870irR%VJ,~>
+!BpJ^mF_F=!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!;6?l!;c]q!;uis!;$3j
+!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr!;QQo!;uis!<)ot
+!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`snc&Rhq>UEpr;Q`srr2ruqu6Wrrr2ru
+qu6Wrr;Q`sq#:<or;Q`sJcC<$])Vcs!S0Da~>
+!BU8[l.H"9!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!;6?l!;c]q!;uis!;$3j
+!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr!;QQo!;uis!<)ot
+!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`snc&Rhq>UEpr;Q`srr2ruqu6Wrrr2ru
+qu6Wrr;Q`sq#:<or;Q`sJcC<$])Vco!R<`V~>
+!B:&Xj4OA3!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!;6?l!;c]q!;uis!;$3j
+!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr!;QQo!;uis!<)ot
+!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`snc&Rhq>UEpr;Q`srr2ruqu6Wrrr2ru
+qu6Wrr;Q`sq#:<or;Q`sJcC<$])Vci!Q-jH~>
+!BpJ^mF_F=!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!;QTk!;ZWp!;lcr
+!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu!<2uu!<2uu
+!<2uu!;lct!<<)p!;uis!:g'h!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0$s1/1/
+m/bd$J,~>
+!BU8[l.H"9!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!;QTk!;ZWp!;lcr
+!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu!<2uu!<2uu
+!<2uu!;lct!<<)p!;uis!:g'h!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0$s1/1/
+klK'jJ,~>
+!B:&Xj4OA3!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!:p-i!;c]q!;uis!;QTk!;ZWp!;lcr
+!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu!<2uu!<2uu
+!<2uu!;lct!<<)p!;uis!:g'h!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0$s1/1/
+irR%VJ,~>
+!BpJ^mF_F=!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!;ZWp!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`sp\t3nrr2ru
+JcC<$\c;Zr!S0Da~>
+!BU8[l.H"9!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!;ZWp!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`sp\t3nrr2ru
+JcC<$\c;Zn!R<`V~>
+!B:&Xj4OA3!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!;-9k!;c]q!;uis!;ZWp!;uis!;ZWp
+!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`sp\t3nrr2ru
+JcC<$\c;Zh!Q-jH~>
+!BpJ^mF_F=!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;?Em!;uis!;6?l!;c]q!;uis!;ZWp!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis
+!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`spAY0o
+rr@WMJcE7[rp9a;4b*~>
+!BU8[l.H"9!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;?Em!;uis!;6?l!;c]q!;uis!;ZWp!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis
+!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`spAY0o
+rr@WMJcE7[rojI/3e.~>
+!B:&Xj4OA3!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;?Em!;uis!;6?l!;c]q!;uis!;ZWp!;uis
+!;ZWp!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:g'h!;uis!<)ot!;uis
+!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lnc&Rhq>UEpr;Q`srr2rup\t3nqu6Wrr;Q`spAY0o
+rr@WMJcE7[ro4$s2h1~>
+!BpJ^mF_F=!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!;ZWp
+!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q!<)rt!;QQo
+!;uis!<)ot!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!:g'h!<)ot!<2uu!;uis
+!<)ot!<)rt!<)ot!<)ot!;lcr!;?Eo!<3&ps8N(Ms+13es8MBdeieN~>
+!BU8[l.H"9!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!;ZWp
+!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q!<)rt!;QQo
+!;uis!<)ot!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!:g'h!<)ot!<2uu!;uis
+!<)ot!<)rt!<)ot!<)ot!;lcr!;?Eo!<3&ps8N(Ms+13es8M6`c8pI~>
+!B:&Xj4OA3!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;6?l!;c]q!;uis!;ZWp
+!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q!<)rt!;QQo
+!;uis!<)ot!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!:g'h!<)ot!<2uu!;uis
+!<)ot!<)rt!<)ot!<)ot!;lcr!;?Eo!<3&ps8N(Ms+13es8M$Z_`*)~>
+!BpJ^mFqU<!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rls7u`ps8E#ts8E#os8;ots8E#ts7u`n
+s8;ourrDusr;ccqrr<'!r;cfrq>gHnr;ZitrW)rtq>gHnr;cTlrW)rtrW)osr;Zs"!!*&u!<<*!
+!<<*!!!E6$!<;utqu?Tpr;ZTno`+jirr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcC<$_Z0W&
+!S0Da~>
+!BU8[l.Z18!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rls7u`ps8E#ts8E#os8;ots8E#ts7u`n
+s8;ourrDusr;ccqrr<'!r;cfrq>gHnr;ZitrW)rtq>gHnr;cTlrW)rtrW)osr;Zs"!!*&u!<<*!
+!<<*!!!E6$!<;utqu?Tpr;ZTno`+jirr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcC<$_Z0W"
+!R<`V~>
+!B:&Xj4aP2!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rls7u`ps8E#ts8E#os8;ots8E#ts7u`n
+s8;ourrDusr;ccqrr<'!r;cfrq>gHnr;ZitrW)rtq>gHnr;cTlrW)rtrW)osr;Zs"!!*&u!<<*!
+!<<*!!!E6$!<;utqu?Tpr;ZTno`+jirr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcC<$_Z0Vq
+!Q-jH~>
+!BpJ^mD])*!1Nof!.k0Xrr<%Ms+13Zs8MBdeieN~>
+!BU8[l,EZ&!1Nof!.k0Xrr<%Ms+13Zs8M6`c8pI~>
+!B:&Xj2M#u!1Nof!.k0Xrr<%Ms+13Zs8M$Z_`*)~>
+!BpJ^mD])*!1Nof!.k0Yrr<%Ms+13Ys8MBdeieN~>
+!BU8[l,EZ&!1Nof!.k0Yrr<%Ms+13Ys8M6`c8pI~>
+!B:&Xj2M#u!1Nof!.k0Yrr<%Ms+13Ys8M$Z_`*)~>
+!BpJ^mD])*!1Wug!.k0Xrr<%Ms+13Ys8MBdeieN~>
+!BU8[l,EZ&!1Wug!.k0Xrr<%Ms+13Ys8M6`c8pI~>
+!B:&Xj2M#u!1Wug!.k0Xrr<%Ms+13Ys8M$Z_`*)~>
+!BpJ^mDf2)!2BMk!.k0Zs82kJs+13Zs8MBdeieN~>
+!BU8[l,Nc%!2BMk!.k0Zs82kJs+13Zs8M6`c8pI~>
+!B:&Xj2V,t!2BMk!.k0Zs82kJs+13Zs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m?[eO!.k0$s+13$s0Mb)m/bd$J,~>
+!BU8[l'DAK!.k0$s+13$s0Mb)klK'jJ,~>
+!B:&Xj-K`E!.k0$s+13$s0Mb)irR%VJ,~>
+!BpJ^mFqU=!!<0#!71]>!!*&u!.k0$s+13$s0Mb)m/bd$J,~>
+!BU8[l.Z19!!<0#!71]>!!*&u!.k0$s+13$s0Mb)klK'jJ,~>
+!B:&Xj4aP3!!<0#!71]>!!*&u!.k0$s+13$s0Mb)irR%VJ,~>
+!BpJ^mHsrH!;ull!71]>!<<*!!.k0$s+13$s0Mb)m/bd$J,~>
+!BU8[l0\ND!;ull!71]>!<<*!!.k0$s+13$s0Mb)klK'jJ,~>
+!B:&Xj6cm>!;ull!71]>!<<*!!.k0$s+13$s0Mb)irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!!*&t!<<)u!;ulq!<)rs!<<)t!<<)u!!*&t!;ZZp!<<*!!<<*!!<<*!
+!!*&t!;lfp!;c`o!<)rr!<<)u!<<)t!<<)t!.k0$s+13$s5s@\m/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!!*&t!<<)u!;ulq!<)rs!<<)t!<<)u!!*&t!;ZZp!<<*!!<<*!!<<*!
+!!*&t!;lfp!;c`o!<)rr!<<)u!<<)t!<<)t!.k0$s+13$s5s@\klK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!!*&t!<<)u!;ulq!<)rs!<<)t!<<)u!!*&t!;ZZp!<<*!!<<*!!<<*!
+!!*&t!;lfp!;c`o!<)rr!<<)u!<<)t!<<)t!.k0$s+13$s5s@\irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZps8E#us8;rts7cTjs8N*!s8N*!s8N*!
+s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+144s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZps8E#us8;rts7cTjs8N*!s8N*!s8N*!
+s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+144s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZps8E#us8;rts7cTjs8N*!s8N*!s8N*!
+s7lZos7lZos7lZps7ZKns8;rts8;qKs+13$s+144s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)us8E#ts8E#qs8N*!
+s8N*!s8N*!s8E#ts8N*!s8E#ss8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s+143s8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)us8E#ts8E#qs8N*!
+s8N*!s8N*!s8E#ts8N*!s8E#ss8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s+143s8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)us8E#ts8E#qs8N*!
+s8N*!s8N*!s8E#ts8N*!s8E#ss8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s+143s8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)rs8N)t
+s8N*!s8N)rs8N'#rr<&rs8N)us8E#ps8N)ts8N(Ms+13$s+143s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)rs8N)t
+s8N*!s8N)rs8N'#rr<&rs8N)us8E#ps8N)ts8N(Ms+13$s+143s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)rs8N)t
+s8N*!s8N)rs8N'#rr<&rs8N)us8E#ps8N)ts8N(Ms+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N*!s8N(Ms+13$s+142s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N*!s8N(Ms+13$s+142s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N*!s8N(Ms+13$s+142s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+141s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+141s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)us8)frs8N)qs8N)rs8N*!s8N)ts8N)us8N)ss8N)ns8N)r
+s8N)ts8N*!s7ZKprr<&rs8N)us8N)os8N'#rr<%Ms+13$s+141s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#ss8E#us8N)us8E#ts8E#ts8E#ms8N)r
+s8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+141s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#ss8E#us8N)us8E#ts8E#ts8E#ms8N)r
+s8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+141s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#ss8E#us8N)us8E#ts8E#ts8E#ms8N)r
+s8N)ts8N*!s8E#os8E#ss8E#ts8N)ns8;qKs+13$s+141s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cQos7lZns7lZos7cTos7lZis8)fqs8;rts8;rts7lZos7lZp
+s7lZls8E"Ls+13$s+140s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cQos7lZns7lZos7cTos7lZis8)fqs8;rts8;rts7lZos7lZp
+s7lZls8E"Ls+13$s+140s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cQos7lZns7lZos7cTos7lZis8)fqs8;rts8;rts7lZos7lZp
+s7lZls8E"Ls+13$s+140s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8)frs7lZls8;rps8;ots8E#us8N'!s8;rls8)fqs8;rts8;rr
+s8)fos8;rrs7lZls8N(Ms+13$s+14/s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8)frs7lZls8;rps8;ots8E#us8N'!s8;rls8)fqs8;rts8;rr
+s8)fos8;rrs7lZls8N(Ms+13$s+14/s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8)frs7lZls8;rps8;ots8E#us8N'!s8;rls8)fqs8;rts8;rr
+s8)fos8;rrs7lZls8N(Ms+13$s+14/s8M$Z_`*)~>
+!BpJ^mHsrH!7:cG!4r41!.k0$s+13$s5F"Wm/bd$J,~>
+!BU8[l0\ND!7:cG!4r41!.k0$s+13$s5F"WklK'jJ,~>
+!B:&Xj6cm>!7:cG!4r41!.k0$s+13$s5F"WirR%VJ,~>
+!BpJ^mHsrH!7:cG!5&:2!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l0\ND!7:cG!5&:2!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj6cm>!7:cG!5&:2!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mBQ]h!5JR2!.k0$s+13$s5O(Xm/bd$J,~>
+!BU8[l*:9d!5JR2!.k0$s+13$s5O(XklK'jJ,~>
+!B:&Xj0AX^!5JR2!.k0$s+13$s5O(XirR%VJ,~>
+!BpJ^mBQ]h!5JR2!.k0$s+13$s5O(Xm/bd$J,~>
+!BU8[l*:9d!5JR2!.k0$s+13$s5O(XklK'jJ,~>
+!B:&Xj0AX^!5JR2!.k0$s+13$s5O(XirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+140s8N(Ms+144s8MBdeieN~>
+!BU8[l%/kcs+140s8N(Ms+144s8M6`c8pI~>
+!B:&Xj+75]s+140s8N(Ms+144s8M$Z_`*)~>
+!BpJ^mG.a<!7(TE!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8MBdeieN~>
+!BU8[l.l=8!7(TE!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8M6`c8pI~>
+!B:&Xj4s\2!7(TE!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!71ZF!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8MBdeieN~>
+!BU8[l.c4<!;uis!71ZF!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8M6`c8pI~>
+!B:&Xj4jS6!;uis!71ZF!:9^c!;?Em!.k0Vrr<&crr<&mrr<&Trr<&prr<%Ms+144s8M$Z_`*)~>
+!BpJ^mG%X@!;lcr!7:`G!:9^c!.k0Jrr<&crr<&Hrr<&prr<%Ms+144s8MBdeieN~>
+!BU8[l.c4<!;lcr!7:`G!:9^c!.k0Jrr<&crr<&Hrr<&prr<%Ms+144s8M6`c8pI~>
+!B:&Xj4jS6!;lcr!7:`G!:9^c!.k0Jrr<&crr<&Hrr<&prr<%Ms+144s8M$Z_`*)~>
+!BpJ^mG%X@!;lcr!<)rr!;ulr!!*&u!<3#u!!`H'!<<'!!<3#u!<)rt!<)ro!;ulq!;lfm!;ulr
+!;ZZn!;uls!!*&t!;?Hk!!N<%!<<)u!!*&u!;lfp!;uls!<)rt!<3#u!!*&t!;lfp!!3*"qZ$Qq
+p](3m!<<#uqu?Tpr;Zcs!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;rqs8N'!s8;rqs7u`ns8;rp
+s7u`ns8E#os8;rqs8N'!s8;rls7u`orrE-"r;c`pr;c]or;ccqrVururW)osrW)rtrW%NLRK*9R
+!S0Da~>
+!BU8[l.c4<!;lcr!<)rr!;ulr!!*&u!<3#u!!`H'!<<'!!<3#u!<)rt!<)ro!;ulq!;lfm!;ulr
+!;ZZn!;uls!!*&t!;?Hk!!N<%!<<)u!!*&u!;lfp!;uls!<)rt!<3#u!!*&t!;lfp!!3*"qZ$Qq
+p](3m!<<#uqu?Tpr;Zcs!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;rqs8N'!s8;rqs7u`ns8;rp
+s7u`ns8E#os8;rqs8N'!s8;rls7u`orrE-"r;c`pr;c]or;ccqrVururW)osrW)rtrW%NLRK*9N
+!R<`V~>
+!B:&Xj4jS6!;lcr!<)rr!;ulr!!*&u!<3#u!!`H'!<<'!!<3#u!<)rt!<)ro!;ulq!;lfm!;ulr
+!;ZZn!;uls!!*&t!;?Hk!!N<%!<<)u!!*&u!;lfp!;uls!<)rt!<3#u!!*&t!;lfp!!3*"qZ$Qq
+p](3m!<<#uqu?Tpr;Zcs!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;rqs8N'!s8;rqs7u`ns8;rp
+s7u`ns8E#os8;rqs8N'!s8;rls7u`orrE-"r;c`pr;c]or;ccqrVururW)osrW)rtrW%NLRK*9H
+!Q-jH~>
+!BpJ^mG%X@!;lcr!<2uu!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!<2uu!;uis!;lcr!;ZWp!<)ot
+!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;QQo!<)rt!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)rt
+!<)ot!<)ot!<)rt!;c`q!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;uis
+!<)rt!<)ot!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;?Em
+!;ZZp!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0;s8MBdeieN~>
+!BU8[l.c4<!;lcr!<2uu!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!<2uu!;uis!;lcr!;ZWp!<)ot
+!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;QQo!<)rt!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)rt
+!<)ot!<)ot!<)rt!;c`q!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;uis
+!<)rt!<)ot!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;?Em
+!;ZZp!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0;s8M6`c8pI~>
+!B:&Xj4jS6!;lcr!<2uu!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!<2uu!;uis!;lcr!;ZWp!<)ot
+!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;QQo!<)rt!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)rt
+!<)ot!<)ot!<)rt!;c`q!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;uis
+!<)rt!<)ot!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!;?Em
+!;ZZp!<)ot!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!<)ot!;uis!.k0;s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!<2uu!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;-9k!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis
+!:9^c!;ZWp!;lcr!<)ot!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<2uu!;lcr!<)ot!;uis!;lcr
+!;-9k!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;lcr!<2uu!;lcr!;uis
+!;QQo!;uis!.k0;s8MBdeieN~>
+!BU8[l.c4<!;uis!<2uu!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;-9k!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis
+!:9^c!;ZWp!;lcr!<)ot!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<2uu!;lcr!<)ot!;uis!;lcr
+!;-9k!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;lcr!<2uu!;lcr!;uis
+!;QQo!;uis!.k0;s8M6`c8pI~>
+!B:&Xj4jS6!;uis!<2uu!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;-9k!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis
+!:9^c!;ZWp!;lcr!<)ot!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<2uu!;lcr!<)ot!;uis!;lcr
+!;-9k!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;lcr!<2uu!;lcr!;uis
+!;QQo!;uis!.k0;s8M$Z_`*)~>
+!BpJ^mG%[<!<)rn!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<)rs!9sL`!;ZZj!<)ot
+!;lcr!<)ot!;ZZj!;ulr!;lfl!<)ot!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!;?Em!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0:s8MBdeieN~>
+!BU8[l.c78!<)rn!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<)rs!9sL`!;ZZj!<)ot
+!;lcr!<)ot!;ZZj!;ulr!;lfl!<)ot!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!;?Em!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0:s8M6`c8pI~>
+!B:&Xj4jV2!<)rn!;uis!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<)rs!9sL`!;ZZj!<)ot
+!;lcr!<)ot!;ZZj!;ulr!;lfl!<)ot!;uis!;lcr!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!;?Em!;ZWp!;uis!<3#o!<2uu!;lcr!;uis!;HKn!<2uu!.k0:s8M$Z_`*)~>
+!BpJ^mG%X@!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!;c`q!:0Xb!;ZWp
+!;?Em!;lcr!<)ot!;ZWp!:p0i!<)ot!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;HKn!<2uu!.k0:s8MBdeieN~>
+!BU8[l.c4<!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!;c`q!:0Xb!;ZWp
+!;?Em!;lcr!<)ot!;ZWp!:p0i!<)ot!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;HKn!<2uu!.k0:s8M6`c8pI~>
+!B:&Xj4jS6!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!;c`q!:0Xb!;ZWp
+!;?Em!;lcr!<)ot!;ZWp!:p0i!<)ot!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;HKn!<2uu!.k0:s8M$Z_`*)~>
+!BpJ^mG%X@!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis!:9^c
+!;ZWp!;?Em!;lcr!<)ot!;ZWp!;?Em!;uis!<2uu!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;?Eo!<3%Ms-E]am/bd$
+J,~>
+!BU8[l.c4<!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis!:9^c
+!;ZWp!;?Em!;lcr!<)ot!;ZWp!;?Em!;uis!<2uu!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;?Eo!<3%Ms-E]aklK'j
+J,~>
+!B:&Xj4jS6!;QQo!;6?l!;ZWp!<2uu!<2uu!<2uu!;uis!;lcr!;c]q!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;ZWp!;lcr!<)ot!;uis!<)ot!;lcr!<2uu!;uis!:9^c
+!;ZWp!;?Em!;lcr!<)ot!;ZWp!;?Em!;uis!<2uu!;?Em!;uis!;lcr!;c]q!;uis!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!;?Em!;ZWp!;uis!<2uu!;HKn!;lcr!;uis!;?Eo!<3%Ms-E]airR%V
+J,~>
+!BpJ^mG%X@!;HKn!<)rt!;uis!;ZWp!<2uu!<2uu!<2uu!<)rt!;lcr!<)p"!<<'!rVultqYpNq
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`sq#:<orVultr;Q`sq#:<orVlitr;Q`srVultrVultrVlit
+rVultrVlitqu?Zro`"mkq#:<orVultrVultrVlitr;Q`sq#:<orVultrVultrVlitrVlitrVult
+rVlitr;Q`squ6WrrVls"s8N)ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&u
+rr<&srr<&trr<&ts8N)trr<&trr<&rrr<&mrrN3#!;ZZp!.k0Cs8MBdeieN~>
+!BU8[l.c4<!;HKn!<)rt!;uis!;ZWp!<2uu!<2uu!<2uu!<)rt!;lcr!<)p"!<<'!rVultqYpNq
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`sq#:<orVultr;Q`sq#:<orVlitr;Q`srVultrVultrVlit
+rVultrVlitqu?Zro`"mkq#:<orVultrVultrVlitr;Q`sq#:<orVultrVultrVlitrVlitrVult
+rVlitr;Q`squ6WrrVls"s8N)ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&u
+rr<&srr<&trr<&ts8N)trr<&trr<&rrr<&mrrN3#!;ZZp!.k0Cs8M6`c8pI~>
+!B:&Xj4jS6!;HKn!<)rt!;uis!;ZWp!<2uu!<2uu!<2uu!<)rt!;lcr!<)p"!<<'!rVultqYpNq
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`sq#:<orVultr;Q`sq#:<orVlitr;Q`srVultrVultrVlit
+rVultrVlitqu?Zro`"mkq#:<orVultrVultrVlitr;Q`sq#:<orVultrVultrVlitrVlitrVult
+rVlitr;Q`squ6WrrVls"s8N)ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&u
+rr<&srr<&trr<&ts8N)trr<&trr<&rrr<&mrrN3#!;ZZp!.k0Cs8M$Z_`*)~>
+!BpJ^mG.a>!;ZZn!;uln!<3#t!<<*!!<<*!!<3#s!!<0#!;lfp!<)rr!!*&u!;lfp!<)ro!;ulq
+!;ulr!<3#t!;QTm!!3*"rr;fpqu?TpqZ$Ko!ri6#rr3!!s8;rqrrE-"r;c]orrDcmq>gEmr;c`p
+!<E/u!<)ro!;lfp!;lcs!<;utqu?Tpr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtpAb'krr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcDDCrp9a;4b*~>
+!BU8[l.l=:!;ZZn!;uln!<3#t!<<*!!<<*!!<3#s!!<0#!;lfp!<)rr!!*&u!;lfp!<)ro!;ulq
+!;ulr!<3#t!;QTm!!3*"rr;fpqu?TpqZ$Ko!ri6#rr3!!s8;rqrrE-"r;c]orrDcmq>gEmr;c`p
+!<E/u!<)ro!;lfp!;lcs!<;utqu?Tpr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtpAb'krr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcDDCrojI/3e.~>
+!B:&Xj4s\4!;ZZn!;uln!<3#t!<<*!!<<*!!<3#s!!<0#!;lfp!<)rr!!*&u!;lfp!<)ro!;ulq
+!;ulr!<3#t!;QTm!!3*"rr;fpqu?TpqZ$Ko!ri6#rr3!!s8;rqrrE-"r;c]orrDcmq>gEmr;c`p
+!<E/u!<)ro!;lfp!;lcs!<;utqu?Tpr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtpAb'krr;rtrr;rtrVufrqZ$Kor;ZTnq>UEpq#C?oJcDDCro4$s2h1~>
+!BpJ^m=G;hrr<&Srr<&bs8N)Urr<%Ms1eR6!.k08s8MBdeieN~>
+!BU8[l%/ldrr<&Srr<&bs8N)Urr<%Ms1eR6!.k08s8M6`c8pI~>
+!B:&Xj+76^rr<&Srr<&bs8N)Urr<%Ms1eR6!.k08s8M$Z_`*)~>
+!BpJ^m=G;hrr<&Srr<&bs8N)Urr<%Ms1nX7!.k07s8MBdeieN~>
+!BU8[l%/ldrr<&Srr<&bs8N)Urr<%Ms1nX7!.k07s8M6`c8pI~>
+!B:&Xj+76^rr<&Srr<&bs8N)Urr<%Ms1nX7!.k07s8M$Z_`*)~>
+!BpJ^m=G;irr<&Rrr<&cs8N)Trr<%Ms1nX7!.k07s8MBdeieN~>
+!BU8[l%/lerr<&Rrr<&cs8N)Trr<%Ms1nX7!.k07s8M6`c8pI~>
+!B:&Xj+76_rr<&Rrr<&cs8N)Trr<%Ms1nX7!.k07s8M$Z_`*)~>
+!BpJ^m=G;ns82lOs8;r>s8;qKs2G$9!.k08s8MBdeieN~>
+!BU8[l%/ljs82lOs8;r>s8;qKs2G$9!.k08s8M6`c8pI~>
+!B:&Xj+76ds82lOs8;r>s8;qKs2G$9!.k08s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71calculus.eps b/books/ps/v71calculus.eps
new file mode 100644
index 0000000..f423891
--- /dev/null
+++ b/books/ps/v71calculus.eps
@@ -0,0 +1,2087 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: calculus.eps
+%%CreationDate: Sat Jun 21 10:34:43 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        96686 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$
+J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'j
+J,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%V
+J,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG\*F!5&:0!;6Bl!7LoG!:^$g!6>->!.k0$s+13ds8MBdeieN~>
+!BU8[l/D[B!5&:0!;6Bl!7LoG!:^$g!6>->!.k0$s+13ds8M6`c8pI~>
+!B:&Xj5L%<!5&:0!;6Bl!7LoG!:^$g!6>->!.k0$s+13ds8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!<<'!!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:g*e!.k0$s+14$
+s8MBdeieN~>
+!BU8[l0\NL!<3#s!<<'!!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:g*e!.k0$s+14$
+s8M6`c8pI~>
+!B:&Xj6cmF!<3#s!<<'!!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:g*e!.k0$s+14$
+s8M$Z_`*)~>
+!BpJ^mHjiQ!;c]q!<2uu!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:p-i!<)rt!.k0$
+s+14%s8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:p-i!<)rt!.k0$
+s+14%s8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!:'Ra!7:`G!;-9k!71ZF!;HKn!;c]q!9O4\!9=(Z!:p-i!<)rt!.k0$
+s+14%s8M$Z_`*)~>
+!BpJ^mHjiQ!<2uu!<2uu!<2uu!:'Ra!7:`G!;-9k!71ZF!:Tpf!9O4\!9=(Z!:p-i!;uis!.k0$
+s+14%s8MBdeieN~>
+!BU8[l0SEM!<2uu!<2uu!<2uu!:'Ra!7:`G!;-9k!71ZF!:Tpf!9O4\!9=(Z!:p-i!;uis!.k0$
+s+14%s8M6`c8pI~>
+!B:&Xj6ZdG!<2uu!<2uu!<2uu!:'Ra!7:`G!;-9k!71ZF!:Tpf!9O4\!9=(Z!:p-i!;uis!.k0$
+s+14%s8M$Z_`*)~>
+!BpJ^mHjiQ!<2uu!<2uu!<3!!!<;utqu?Tpqu?Kmq>^Eorr;rtrVufrr;ZcsrVultqYpNqq>^Bn
+!WN/qs8E#ts8E#ss8;rqs8N)ts8N)lrr<&ps8E#prrN3#s8;rqs8;rks7u`ns8;rjs8;ourrDus
+r;cNj!!%TMJcC<$fDkj;!S0Da~>
+!BU8[l0SEM!<2uu!<2uu!<3!!!<;utqu?Tpqu?Kmq>^Eorr;rtrVufrr;ZcsrVultqYpNqq>^Bn
+!WN/qs8E#ts8E#ss8;rqs8N)ts8N)lrr<&ps8E#prrN3#s8;rqs8;rks7u`ns8;rjs8;ourrDus
+r;cNj!!%TMJcC<$fDkj7!R<`V~>
+!B:&Xj6ZdG!<2uu!<2uu!<3!!!<;utqu?Tpqu?Kmq>^Eorr;rtrVufrr;ZcsrVultqYpNqq>^Bn
+!WN/qs8E#ts8E#ss8;rqs8N)ts8N)lrr<&ps8E#prrN3#s8;rqs8;rks7u`ns8;rjs8;ourrDus
+r;cNj!!%TMJcC<$fDkj1!Q-jH~>
+!BpJ^mHjiQ!<2uu!<2uu!<3#u!<)ot!<)ot!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;uis!;uis
+!;c]q!;c]q!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;6?l!;HKn!;c]q!<2uu!;lcr!<)ot
+!;6?l!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!;HKn!.k0$s+14$s8MBdeieN~>
+!BU8[l0SEM!<2uu!<2uu!<3#u!<)ot!<)ot!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;uis!;uis
+!;c]q!;c]q!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;6?l!;HKn!;c]q!<2uu!;lcr!<)ot
+!;6?l!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!;HKn!.k0$s+14$s8M6`c8pI~>
+!B:&Xj6ZdG!<2uu!<2uu!<3#u!<)ot!<)ot!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;uis!;uis
+!;c]q!;c]q!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;6?l!;HKn!;c]q!<2uu!;lcr!<)ot
+!;6?l!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!;HKn!.k0$s+14$s8M$Z_`*)~>
+!BpJ^mHacV!<3'!!<3&trr<&srr<&orr<&qrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;QQo!;uis!<2uu!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrqu6WrpAY*m
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrq>UEpJcC<$JcF:#rp9a;4b*~>
+!BU8[l0J?R!<3'!!<3&trr<&srr<&orr<&qrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;QQo!;uis!<2uu!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrqu6WrpAY*m
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrq>UEpJcC<$JcF:#rojI/3e.~>
+!B:&Xj6Q^L!<3'!!<3&trr<&srr<&orr<&qrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;QQo!;uis!<2uu!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrqu6WrpAY*m
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrq>UEpJcC<$JcF:#ro4$s2h1~>
+!BpJ^mHacV!<3'!!<3&trr<&srr<&ts8)fmrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c`p!;c`k!;?Em!;c]q!;lcr
+!;ZWp!;lcr!<2uu!;lcr!;lfr!.k0$s+14"s8MBdeieN~>
+!BU8[l0J?R!<3'!!<3&trr<&srr<&ts8)fmrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c`p!;c`k!;?Em!;c]q!;lcr
+!;ZWp!;lcr!<2uu!;lcr!;lfr!.k0$s+14"s8M6`c8pI~>
+!B:&Xj6Q^L!<3'!!<3&trr<&srr<&ts8)fmrr<&krrrK'rrE*!!<2uu!;lcr!<)ot!;uis!;c]q
+!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c`p!;c`k!;?Em!;c]q!;lcr
+!;ZWp!;lcr!<2uu!;lcr!;lfr!.k0$s+14"s8M$Z_`*)~>
+!BpJ^mHacV!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrn,E@f
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrqu6WrJcC<$JcF4!rp9a;4b*~>
+!BU8[l0J?R!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrn,E@f
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrqu6WrJcC<$JcF4!rojI/3e.~>
+!B:&Xj6Q^L!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;HKn!<2uu!<)ot!;lcr!<)ot!;uis!;6?l!;HKn!;c]t!<<'!qu6Wrn,E@f
+qYpNqqu6Wrq>UEpqu6Wrrr2ruqu6Wrqu6WrJcC<$JcF4!ro4$s2h1~>
+!BpJ^mHacV!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;?Eo!<3&srr<&rrr<&trr<&srr<&lrr<&nrr<&qrr<&urr<&srr<&frr<&q
+rr<&rrr<&prr<&rrr<&urr<&rrr<%Ms+13$s31NBm/bd$J,~>
+!BU8[l0J?R!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;?Eo!<3&srr<&rrr<&trr<&srr<&lrr<&nrr<&qrr<&urr<&srr<&frr<&q
+rr<&rrr<&prr<&rrr<&urr<&rrr<%Ms+13$s31NBklK'jJ,~>
+!B:&Xj6Q^L!<3'!!<3&trr<&srr<&urr<&srr<&qrr<&krrrK'!<3'!!<2uu!;lcr!<)ot!;uis
+!;c]q!;lcr!;lcr!;?Eo!<3&srr<&rrr<&trr<&srr<&lrr<&nrr<&qrr<&urr<&srr<&frr<&q
+rr<&rrr<&prr<&rrr<&urr<&rrr<%Ms+13$s31NBirR%VJ,~>
+!BpJ^mHX]O!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;QQo!<2uu!;uis!<)ot!;uis!<)rt
+!;c]q!;c]q!<)rt!;?Eo!<3&rrr<&trr<&srr<&ts8N)lrr<&nrr<&qrr<&trr<&srr<&ts8N)m
+rr<&trr<&urr<&trr<&nrr<&ts8N)trr<&trr<&qs8N(Ms+13$s4%)Jm/bd$J,~>
+!BU8[l0A9K!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;QQo!<2uu!;uis!<)ot!;uis!<)rt
+!;c]q!;c]q!<)rt!;?Eo!<3&rrr<&trr<&srr<&ts8N)lrr<&nrr<&qrr<&trr<&srr<&ts8N)m
+rr<&trr<&urr<&trr<&nrr<&ts8N)trr<&trr<&qs8N(Ms+13$s4%)JklK'jJ,~>
+!B:&Xj6HXE!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;QQo!<2uu!;uis!<)ot!;uis!<)rt
+!;c]q!;c]q!<)rt!;?Eo!<3&rrr<&trr<&srr<&ts8N)lrr<&nrr<&qrr<&trr<&srr<&ts8N)m
+rr<&trr<&urr<&trr<&nrr<&ts8N)trr<&trr<&qs8N(Ms+13$s4%)JirR%VJ,~>
+!BpJ^mHX]O!<2uu!<)rs!<3#t!<3#s!!*&u!;lfp!;HKn!<2uu!;lfp!;c`o!!<0#!<3#p!;ulq
+!!<0#!;?Em!;ZZn!;c`o!!<0#!;ZZk!<)ro!<3#u!<3#s!<)rr!;$6h!;ulq!;6Bj!!<0#!<)rr
+!;ZZp!.k0$s+14"s8MBdeieN~>
+!BU8[l0A9K!<2uu!<)rs!<3#t!<3#s!!*&u!;lfp!;HKn!<2uu!;lfp!;c`o!!<0#!<3#p!;ulq
+!!<0#!;?Em!;ZZn!;c`o!!<0#!;ZZk!<)ro!<3#u!<3#s!<)rr!;$6h!;ulq!;6Bj!!<0#!<)rr
+!;ZZp!.k0$s+14"s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!<)rs!<3#t!<3#s!!*&u!;lfp!;HKn!<2uu!;lfp!;c`o!!<0#!<3#p!;ulq
+!!<0#!;?Em!;ZZn!;c`o!!<0#!;ZZk!<)ro!<3#u!<3#s!<)rr!;$6h!;ulq!;6Bj!!<0#!<)rr
+!;ZZp!.k0$s+14"s8M$Z_`*)~>
+!BpJ^m=G<7rr<%Ms+13$s+13os8MBdeieN~>
+!BU8[l%/m3rr<%Ms+13$s+13os8M6`c8pI~>
+!B:&Xj+77-rr<%Ms+13$s+13os8M$Z_`*)~>
+!BpJ^m=G<8rr<%Ms+13$s+13ns8MBdeieN~>
+!BU8[l%/m4rr<%Ms+13$s+13ns8M6`c8pI~>
+!B:&Xj+77.rr<%Ms+13$s+13ns8M$Z_`*)~>
+!BpJ^m=G<8rr<%Ms+13$s+13ns8MBdeieN~>
+!BU8[l%/m4rr<%Ms+13$s+13ns8M6`c8pI~>
+!B:&Xj+77.rr<%Ms+13$s+13ns8M$Z_`*)~>
+!BpJ^m=G<;s82kJs+13$s+13os8MBdeieN~>
+!BU8[l%/m7s82kJs+13$s+13os8M6`c8pI~>
+!B:&Xj+771s82kJs+13$s+13os8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!;QTk!;ulo!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\m/bd$J,~>
+!BU8[l-B>/!;QTk!;ulo!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\klK'jJ,~>
+!B:&Xj3I])!;QTk!;ulo!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\irR%VJ,~>
+!BpJ^mG7g=!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\m/bd$J,~>
+!BU8[l.uC9!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\klK'jJ,~>
+!B:&Xj5'b3!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:Tsf!.k0$s+13$s5s@\irR%VJ,~>
+!BpJ^mHsrH!<)rm!:g*h!;QTo!6tQD!94%Y!.k0$s+13$s5s@\m/bd$J,~>
+!BU8[l0\ND!<)rm!:g*h!;QTo!6tQD!94%Y!.k0$s+13$s5s@\klK'jJ,~>
+!B:&Xj6cm>!<)rm!:g*h!;QTo!6tQD!94%Y!.k0$s+13$s5s@\irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!<3#o!;lfp!.k0$s+13$s7H?jm/bd$J,~>
+!BU8[l0\ND!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!<3#o!;lfp!.k0$s+13$s7H?jklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!<3#o!;lfp!.k0$s+13$s7H?jirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZps7lZns7lYGs+13$s+14Ds8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZps7lZns7lYGs+13$s+14Ds8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZps7lZns7lYGs+13$s+14Ds8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)ts8N)qs8E#ss8E"Ls+13$s+14Es8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)ts8N)qs8E#ss8E"Ls+13$s+14Es8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)ts8N)qs8E#ss8E"Ls+13$s+14Es8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)ts8N)qs8N)rs8N(Ms+13$s+14Es8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)ts8N)qs8N)rs8N(Ms+13$s+14Es8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)ts8N)qs8N)rs8N(Ms+13$s+14Es8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZns8N)qs7ZMEs+13$s+14Es8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZns8N)qs7ZMEs+13$s+14Es8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZns8N)qs7ZMEs+13$s+14Es8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTms8N)qs7ZMEs+13$s+14Es8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTms8N)qs7ZMEs+13$s+14Es8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTms8N)qs7ZMEs+13$s+14Es8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)ts8N)ts8N'!s8E"Ls+13$s+14>s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)ts8N)ts8N'!s8E"Ls+13$s+14>s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)ts8N)ts8N'!s8E"Ls+13$s+14>s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNms7lZps7lYGs+13$s+14Ds8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNms7lZps7lYGs+13$s+14Ds8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNms7lZps7lYGs+13$s+14Ds8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#ss82los8)eIs+13$s+14Ds8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#ss82los8)eIs+13$s+14Ds8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#ss82los8)eIs+13$s+14Ds8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m>M#D!:^$c!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+143s8MBdeieN~>
+!BU8[l&5T@!:^$c!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+143s8M6`c8pI~>
+!B:&Xj,<s:!:^$c!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+143s8M$Z_`*)~>
+!BpJ^mG7g=!7CiB!:Kmd!:g*c!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+143s8MBdeieN~>
+!BU8[l.uC9!7CiB!:Kmd!:g*c!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+143s8M6`c8pI~>
+!B:&Xj5'b3!7CiB!:Kmd!:g*c!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!7UuD!:Bgd!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+143s8MBdeieN~>
+!BU8[l0\ND!<)rm!7UuD!:Bgd!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+143s8M6`c8pI~>
+!B:&Xj6cm>!<)rm!7UuD!:Bgd!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!;ulq!;?Hi!<3#t!!*&t!;6Bl!;ulr!!*&t!;ulq!!<0#!;ulq!;ulm
+!<3#r!;ulr!!*&t!<)rq!;ulm!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u
+!<)rp!;c`q!.k0$s+143s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!;ulq!;?Hi!<3#t!!*&t!;6Bl!;ulr!!*&t!;ulq!!<0#!;ulq!;ulm
+!<3#r!;ulr!!*&t!<)rq!;ulm!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u
+!<)rp!;c`q!.k0$s+143s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!;ulq!;?Hi!<3#t!!*&t!;6Bl!;ulr!!*&t!;ulq!!<0#!;ulq!;ulm
+!<3#r!;ulr!!*&t!<)rq!;ulm!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u
+!<)rp!;c`q!.k0$s+143s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZps7cTfs8N)ss7cTns7lZos7lZos7lZo
+s82lps7cTns82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s5j:[
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZps7cTfs8N)ss7cTns7lZos7lZos7lZo
+s82lps7cTns82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s5j:[
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZps7cTfs8N)ss7cTns7lZos7lZos7lZo
+s82lps7cTns82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s5j:[
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)us8E#ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#us8E#ss8E#ss8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s5j:[m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)us8E#ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#us8E#ss8E#ss8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s5j:[klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)us8E#ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#us8E#ss8E#ss8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s5j:[irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)us8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s8N)rs8N)ts8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)t
+s8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N(Ms+13$s5j:[m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)us8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s8N)rs8N)ts8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)t
+s8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N(Ms+13$s5j:[klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)us8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s8N)rs8N)ts8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)t
+s8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N(Ms+13$s5j:[irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZos8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)ps7lZls8N(Ms+13$s5j:[m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZos8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)ps7lZls8N(Ms+13$s5j:[klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZos8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)ps7lZls8N(Ms+13$s5j:[irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTns8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)qs7cTks8N(Ms+13$s5j:[m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTns8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)qs7cTks8N(Ms+13$s5j:[klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTns8N)ts8N)ms8N)rs8N)ts8N*!
+s8N)ss8N*!s7ZNls8N)ns8N)rs8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKp
+rr<&ss8N)ts8N)qs7cTks8N(Ms+13$s5j:[irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)us8N)ts8N)ms8N)rs8N)t
+s8N*!s8E#ts8E#us8E#ls8N)ns8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)t
+s8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N(Ms+13$s5j:[m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)us8N)ts8N)ms8N)rs8N)t
+s8N*!s8E#ts8E#us8E#ls8N)ns8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)t
+s8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N(Ms+13$s5j:[klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)us8N)ts8N)ms8N)rs8N)t
+s8N*!s8E#ts8E#us8E#ls8N)ns8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)t
+s8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N(Ms+13$s5j:[irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZks7ZKns8;rts8;ros7lZps8;rts8;rts7cTos7lZo
+s7lZos7lZps8;rts8;rts7lZns7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNn
+s7lYGs+13$s60L^m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZks7ZKns8;rts8;ros7lZps8;rts8;rts7cTos7lZo
+s7lZos7lZps8;rts8;rts7lZns7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNn
+s7lYGs+13$s60L^klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZks7ZKns8;rts8;ros7lZps8;rts8;rts7cTos7lZo
+s7lZos7lZps8;rts8;rts7lZns7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNn
+s7lYGs+13$s60L^irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ls8;rls82iss8Duus8;rts8;ros7lZps8;rts8;rss8;ot
+s8E#ss8)fqs7lZos7lZps8;rts8;rts7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#
+rr<'!s7lZns82iss8E#us7lYGs+13$s60L^m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ls8;rls82iss8Duus8;rts8;ros7lZps8;rts8;rss8;ot
+s8E#ss8)fqs7lZos7lZps8;rts8;rts7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#
+rr<'!s7lZns82iss8E#us7lYGs+13$s60L^klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ls8;rls82iss8Duus8;rts8;ros7lZps8;rts8;rss8;ot
+s8E#ss8)fqs7lZos7lZps8;rts8;rts7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#
+rr<'!s7lZns82iss8E#us7lYGs+13$s60L^irR%VJ,~>
+!BpJ^mHsrH!.k0Ds8N(Ms+13$s2Y0=m/bd$J,~>
+!BU8[l0\ND!.k0Ds8N(Ms+13$s2Y0=klK'jJ,~>
+!B:&Xj6cm>!.k0Ds8N(Ms+13$s2Y0=irR%VJ,~>
+!BpJ^mHsrH!.k0Es8E"Ls+13$s2Y0=m/bd$J,~>
+!BU8[l0\ND!.k0Es8E"Ls+13$s2Y0=klK'jJ,~>
+!B:&Xj6cm>!.k0Es8E"Ls+13$s2Y0=irR%VJ,~>
+!BpJ^m=G:ls8)eIs+13$s2P*<m/bd$J,~>
+!BU8[l%/khs8)eIs+13$s2P*<klK'jJ,~>
+!B:&Xj+75bs8)eIs+13$s2P*<irR%VJ,~>
+!BpJ^m=G:ls82kJs+13$s2G$;m/bd$J,~>
+!BU8[l%/khs82kJs+13$s2G$;klK'jJ,~>
+!B:&Xj+75bs82kJs+13$s2G$;irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m?mqN!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+13gs8MBdeieN~>
+!BU8[l'VMJ!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+13gs8M6`c8pI~>
+!B:&Xj-]lD!;uls!:Bgd!;c`q!7LoI!6tQA!.k0$s+13gs8M$Z_`*)~>
+!BpJ^mG7g=!8[\O!:Tsa!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+13gs8MBdeieN~>
+!BU8[l.uC9!8[\O!:Tsa!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+13gs8M6`c8pI~>
+!B:&Xj5'b3!8[\O!:Tsa!;uls!:Bgd!;c`q!9sOZ!:p0i!6tQA!.k0$s+13gs8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!8mhO!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+13gs8MBdeieN~>
+!BU8[l0\ND!<)rm!8mhO!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+13gs8M6`c8pI~>
+!B:&Xj6cm>!<)rm!8mhO!:g*h!8.>O!9sOZ!:p0i!6Y?A!.k0$s+13gs8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!;ulq!;?Hi!;QTo!<)rt!;ulq!;ulm!<3#r!;ulr!!*&t!<)rq!;ulm
+!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!.k0$s+13gs8MBd
+eieN~>
+!BU8[l0\ND!;uls!<)rt!;ulq!;?Hi!;QTo!<)rt!;ulq!;ulm!<3#r!;ulr!!*&t!<)rq!;ulm
+!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!.k0$s+13gs8M6`
+c8pI~>
+!B:&Xj6cm>!;uls!<)rt!;ulq!;?Hi!;QTo!<)rt!;ulq!;ulm!<3#r!;ulr!!*&t!<)rq!;ulm
+!;lfp!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!.k0$s+13gs8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs8N)ss8N*!s7lZos7lZos82lps7cTn
+s82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s2=s:m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs8N)ss8N*!s7lZos7lZos82lps7cTn
+s82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s2=s:klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs8N)ss8N*!s7lZos7lZos82lps7cTn
+s82lps7lZns7lZgs8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N(Ms+13$s2=s:irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ss8N'!s8E#ss8E#s
+s8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#t
+s8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s2=s:m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ss8N'!s8E#ss8E#s
+s8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#t
+s8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s2=s:klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ss8N'!s8E#ss8E#s
+s8N)ns8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#ms8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#t
+s8E#ss8;rts8N*!s8N)ts8N)rs8N(Ms+13$s2=s:irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8N)ss8N'#rr<&rs8N)ts8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)t
+s8E#js8N)rs8N(Ms+13$s2=s:m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8N)ss8N'#rr<&rs8N)ts8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)t
+s8E#js8N)rs8N(Ms+13$s2=s:klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8N)ss8N'#rr<&rs8N)ts8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)t
+s8E#js8N)rs8N(Ms+13$s2=s:irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZjs8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N(M
+s+13$s2=s:m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZjs8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N(M
+s+13$s2=s:klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZjs8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N(M
+s+13$s2=s:irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTis8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N(M
+s+13$s2=s:m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTis8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N(M
+s+13$s2=s:klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTis8N)ss8N'!s7ZNls8N)ns8N)r
+s8N)ts8N)rs8N)qs8N)qs7ZNfs8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N(M
+s+13$s2=s:irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N*!s8E#ls8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#s
+s8N)qs8N)ss8N)rs8N(Ms+13$s2=s:m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N*!s8E#ls8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#s
+s8N)qs8N)ss8N)rs8N(Ms+13$s2=s:klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N*!s8E#ls8N)n
+s8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#fs8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#s
+s8N)qs8N)ss8N)rs8N(Ms+13$s2=s:irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZks7ZNjs7cTns7lZos7lZos7lZps8;rts8;rts7lZn
+s7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lYGs+13$s2Y0=m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZks7ZNjs7cTns7lZos7lZos7lZps8;rts8;rts7lZn
+s7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lYGs+13$s2Y0=klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZks7ZNjs7cTns7lZos7lZos7lZps8;rts8;rts7lZn
+s7lZps7lZjs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lYGs+13$s2Y0=irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#qs7u`ls8)fqs7lZos7lZps8;rts8;rt
+s7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#us7lYGs+13$
+s2Y0=m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#qs7u`ls8)fqs7lZos7lZps8;rts8;rt
+s7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#us7lYGs+13$
+s2Y0=klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#qs7u`ls8)fqs7lZos7lZps8;rts8;rt
+s7lZms82los8)fls7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#us7lYGs+13$
+s2Y0=irR%VJ,~>
+!BpJ^mHsrH!.k0es8N(Ms+13$s/,hqm/bd$J,~>
+!BU8[l0\ND!.k0es8N(Ms+13$s/,hqklK'jJ,~>
+!B:&Xj6cm>!.k0es8N(Ms+13$s/,hqirR%VJ,~>
+!BpJ^mHsrH!.k0fs8E"Ls+13$s/,hqm/bd$J,~>
+!BU8[l0\ND!.k0fs8E"Ls+13$s/,hqklK'jJ,~>
+!B:&Xj6cm>!.k0fs8E"Ls+13$s/,hqirR%VJ,~>
+!BpJ^m=G;8s8)eIs+13$s/#bpm/bd$J,~>
+!BU8[l%/l4s8)eIs+13$s/#bpklK'jJ,~>
+!B:&Xj+76.s8)eIs+13$s/#bpirR%VJ,~>
+!BpJ^m=G;8s82kJs+13$s.o\om/bd$J,~>
+!BU8[l%/l4s82kJs+13$s.o\oklK'jJ,~>
+!B:&Xj+76.s82kJs+13$s.o\oirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPm/bd$J,~>
+!BU8[l-B>/!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPklK'jJ,~>
+!B:&Xj3I])!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPirR%VJ,~>
+!BpJ^mG7g:!;uls!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPm/bd$J,~>
+!BU8[l.uC6!;uls!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPklK'jJ,~>
+!B:&Xj5'b0!;uls!:0[a!9sO]!;QTo!:Bgd!;c`q!.k0$s+13$s4[MPirR%VJ,~>
+!BpJ^mHsrH!<)rl!9=+Z!9X=]!87DP!.k0$s+13$s4[MPm/bd$J,~>
+!BU8[l0\ND!<)rl!9=+Z!9X=]!87DP!.k0$s+13$s4[MPklK'jJ,~>
+!B:&Xj6cm>!<)rl!9=+Z!9X=]!87DP!.k0$s+13$s4[MPirR%VJ,~>
+!BpJ^mHsrH!;lfr!<)rt!<<)s!;ulr!!*&t!;ulq!!<0#!;QTk!;6Bl!;lfo!<)rs!!E6$!<<#u
+rr;lrr;ZQmJcC<$JcC<$hZ*TB!S0Da~>
+!BU8[l0\ND!;lfr!<)rt!<<)s!;ulr!!*&t!;ulq!!<0#!;QTk!;6Bl!;lfo!<)rs!!E6$!<<#u
+rr;lrr;ZQmJcC<$JcC<$hZ*T>!R<`V~>
+!B:&Xj6cm>!;lfr!<)rt!<<)s!;ulr!!*&t!;ulq!!<0#!;QTk!;6Bl!;lfo!<)rs!!E6$!<<#u
+rr;lrr;ZQmJcC<$JcC<$hZ*T8!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nq#L6jq#L-grrDrrquH]qp&P-m
+quHZpq#H!GJcC<$JcFU,rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nq#L6jq#L-grrDrrquH]qp&P-m
+quHZpq#H!GJcC<$JcFU,rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nq#L6jq#L-grrDrrquH]qp&P-m
+quHZpq#H!GJcC<$JcFU,ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N*!s8E#ts8E#os8N)ts8N)ms8N)os8N)s
+s8Duus8E!"rr<&ss8N)qs8N(Ms+13$s+14(s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N*!s8E#ts8E#os8N)ts8N)ms8N)os8N)s
+s8Duus8E!"rr<&ss8N)qs8N(Ms+13$s+14(s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N*!s8E#ts8E#os8N)ts8N)ms8N)os8N)s
+s8Duus8E!"rr<&ss8N)qs8N(Ms+13$s+14(s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N*!s8N)ss8N)js8N)ms8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N*!s8N)ss8N)js8N)ms8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N*!s8N)ss8N)js8N)ms8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N*!s8N)ss8N)ps7lZgs8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N*!s8N)ss8N)ps7lZgs8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N*!s8N)ss8N)ps7lZgs8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N*!s8N)ss8N)qs7cTfs8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N*!s8N)ss8N)qs7cTfs8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N*!s8N)ss8N)qs7cTfs8N)os8N)ss8N*!
+s8N*!s8N)ss8N)qs8N(Ms+13$s+14(s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N*!s8E#ts8E#ps8N)ss8N)ms8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N)ts8N(Ms+13$s+14.s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N*!s8E#ts8E#ps8N)ss8N)ms8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N)ts8N(Ms+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N*!s8E#ts8E#ps8N)ss8N)ms8N)os8N)s
+s8N*!s8N*!s8N)ss8N)qs8N)ts8N(Ms+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7cTks7ZNis7lZos7lWps8;ots8Duu
+s8Duus7lZns7lYGs+13$s+14.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7cTks7ZNis7lZos7lWps8;ots8Duu
+s8Duus7lZns7lYGs+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7cTks7ZNis7lZos7lWps8;ots8Duu
+s8Duus7lZns7lYGs+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rss8;ots8E#ps82iss8E#ps7lZos7lWp
+s8;ots8Duus8Duus7lZms82kJs+13$s+14,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rss8;ots8E#ps82iss8E#ps7lZos7lWp
+s8;ots8Duus8Duus7lZms82kJs+13$s+14,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rss8;ots8E#ps82iss8E#ps7lZos7lWp
+s8;ots8Duus8Duus7lZms82kJs+13$s+14,s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G<5s8N)ms8N(Ms+13$s+14*s8MBdeieN~>
+!BU8[l%/m1s8N)ms8N(Ms+13$s+14*s8M6`c8pI~>
+!B:&Xj+77+s8N)ms8N(Ms+13$s+14*s8M$Z_`*)~>
+!BpJ^mG7g=!2TYp!;?Hm!.k0$s+13$s4mYRm/bd$J,~>
+!BU8[l.uC9!2TYp!;?Hm!.k0$s+13$s4mYRklK'jJ,~>
+!B:&Xj5'b3!2TYp!;?Hm!.k0$s+13$s4mYRirR%VJ,~>
+!BpJ^mHsrH!<)rm!2fer!.k0$s+13$s3L`Em/bd$J,~>
+!BU8[l0\ND!<)rm!2fer!.k0$s+13$s3L`EklK'jJ,~>
+!B:&Xj6cm>!<)rm!2fer!.k0$s+13$s3L`EirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rt!;ulq!;?Hi!;HNi!<<)u!<<)t!!*&u!!E6$!<<#u!<<#u"9/?$s8E#s
+s8)fqs7lZns82lms8;rrs8Duus8;qKs+13$s+14Bs8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!;ulq!;?Hi!;HNi!<<)u!<<)t!!*&u!!E6$!<<#u!<<#u"9/?$s8E#s
+s8)fqs7lZns82lms8;rrs8Duus8;qKs+13$s+14Bs8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!;ulq!;?Hi!;HNi!<<)u!<<)t!!*&u!!E6$!<<#u!<<#u"9/?$s8E#s
+s8)fqs7lZns82lms8;rrs8Duus8;qKs+13$s+14Bs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs7lZps8E#us8;ots6B[bs7lZps7lZn
+s82los7lZps7cSFs+13$s+14Cs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs7lZps8E#us8;ots6B[bs7lZps7lZn
+s82los7lZps7cSFs+13$s+14Cs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZjs7lZjs7lZps8E#us8;ots6B[bs7lZps7lZn
+s82los7lZps7cSFs+13$s+14Cs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ts8N)us8N)ts8N*!
+s8Duus8E!#rr<'!rVururW!0&!!*'!!!)utrrE#trrDcmrrDusrW)osrW)uurW)rtrr@WMJcC<$
+JcGECrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ts8N)us8N)ts8N*!
+s8Duus8E!#rr<'!rVururW!0&!!*'!!!)utrrE#trrDcmrrDusrW)osrW)uurW)rtrr@WMJcC<$
+JcGECrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ps8N)ts8N)ps8N)ts8N)us8N)ts8N*!
+s8Duus8E!#rr<'!rVururW!0&!!*'!!!)utrrE#trrDcmrrDusrW)osrW)uurW)rtrr@WMJcC<$
+JcGECro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8;ros8N)ts8N*!s8N*!s8N*!
+s8N'+rr<'!rr<'!rr<&ps8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8;ros8N)ts8N*!s8N*!s8N*!
+s8N'+rr<'!rr<'!rr<&ps8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ks8N)ps8;ros8N)ts8N*!s8N*!s8N*!
+s8N'+rr<'!rr<'!rr<&ps8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZis8)fps8N)ts8N*!s8N*!s8N*!
+s8N'-rr<'!rr<'!rr<'!s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZis8)fps8N)ts8N*!s8N*!s8N*!
+s8N'-rr<'!rr<'!rr<'!s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&rs8N)qs7lZis8)fps8N)ts8N*!s8N*!s8N*!
+s8N'-rr<'!rr<'!rr<'!s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+14Cs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTfs82lrs8N)ts8N*!s8N*!s8N*!
+s8N',rr<'!rr<'!rr<'!p]19mrrDcmrrDusrrDrrrrE*!rrE#trr@WMJcC<$JcGECrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTfs82lrs8N)ts8N*!s8N*!s8N*!
+s8N',rr<'!rr<'!rr<'!p]19mrrDcmrrDusrrDrrrrE*!rrE#trr@WMJcC<$JcGECrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)rs7cTfs82lrs8N)ts8N*!s8N*!s8N*!
+s8N',rr<'!rr<'!rr<'!p]19mrrDcmrrDusrrDrrrrE*!rrE#trr@WMJcC<$JcGECro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N)us8N)us8E#u
+s8N*!s8N*!s8N'.rr<'!rr<'!rr<'!!!)rsrrE#trrE#trrDusrrDusrW)osrW)uurrE#trr@WM
+JcC<$JcGECrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N)us8N)us8E#u
+s8N*!s8N*!s8N'.rr<'!rr<'!rr<'!!!)rsrrE#trrE#trrDusrrDusrW)osrW)uurrE#trr@WM
+JcC<$JcGECrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#qs8N)ss8N)ps8N)ts8N)us8N)us8E#u
+s8N*!s8N*!s8N'.rr<'!rr<'!rr<'!!!)rsrrE#trrE#trrDusrrDusrW)osrW)uurrE#trr@WM
+JcC<$JcGECro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZks7ZNis7lZos7?9ks8Duus8)crs8Duus7?<js7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14Ds8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZks7ZNis7lZos7?9ks8Duus8)crs8Duus7?<js7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14Ds8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZks7ZNis7lZos7?9ks8Duus8)crs8Duus7?<js7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14Ds8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#ps7u`ns8;ots7u]qs8Duus8)crs8Duu
+s8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$s+14Ds8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#ps7u`ns8;ots7u]qs8Duus8)crs8Duu
+s8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$s+14Ds8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ls8;rls82iss8E#ps7u`ns8;ots7u]qs8Duus8)crs8Duu
+s8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$s+14Ds8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71calculuspage.eps b/books/ps/v71calculuspage.eps
new file mode 100644
index 0000000..bc4d535
--- /dev/null
+++ b/books/ps/v71calculuspage.eps
@@ -0,0 +1,2645 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: calculuspage.eps
+%%CreationDate: Sat Jun 21 10:55:26 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       139025 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls02P%!9F1Y
+!.k0PrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!:^!g!9*qX!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)grr<&Xrr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!)Ng!!)!X!!%TMY5\J%rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ls8;rmrr<&ps8;ourrE&urrE#trrDoq!!)orrrE#trrDusr;Zlu!.k0irriE&!<3'!qu?`s
+quA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!rr3]5rrE'!rrE'!
+rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)`m!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrr@WM
+a8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!:g'h!;ZWp!;lcr!;lcr
+!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq
+!!)lq!!)rs!!)rsrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!
+!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$
+J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'j
+J,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;HKn!;uis!;ZWp!;lcr
+!;?Em!;uis!;c]q!;c]q!;uis!;ZZp!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%V
+J,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6`us8N)srr<&prr<&rrr<&mrr<&srr<&qrr<&qrr<&srr<&trr<&srr<%Ms2Y->!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&urr<&t
+s8N)prr<&qrr<&ts8N)trr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:r;Z]q
+!<<#urr;fpr;Z]qqZ$Ko!ri6#rr;fpr;Z]q!ri6#rr3!!s8;qKs2P'=!<3!#!<3'!rW!$"!<<#u
+!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!
+rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!:Bgd!;c`q!.k0Es8;r$s8;rjs8;qps8;qKs2"a7m/bd$J,~>
+!BU8[l-B>/!:Bgd!;c`q!.k0Es8;r$s8;rjs8;qps8;qKs2"a7klK'jJ,~>
+!B:&Xj3I])!:Bgd!;c`q!.k0Es8;r$s8;rjs8;qps8;qKs2"a7irR%VJ,~>
+!BpJ^mG7g>!;QTo!:Bgd!;c`q!.k1@s8;ourrCFG!!)0]!!)cn!!)Bc!!)fo!!(dR!!)Ti!!(XN
+!!)`m!!(UM!!&kq!!&Vjrp9a;4b*~>
+!BU8[l.uC:!;QTo!:Bgd!;c`q!.k1@s8;ourrCFG!!)0]!!)cn!!)Bc!!)fo!!(dR!!)Ti!!(XN
+!!)`m!!(UM!!&kq!!&VjrojI/3e.~>
+!B:&Xj5'b4!;QTo!:Bgd!;c`q!.k1@s8;ourrCFG!!)0]!!)cn!!)Bc!!)fo!!(dR!!)Ti!!(XN
+!!)`m!!(UM!!&kq!!&Vjro4$s2h1~>
+!BpJ^mHsrH!<)rp!87DP!.k1Bs8N)ts8N)Grr<&]rr<&nrr<&crr<&orr<&Srr<&irr<&Mrr<&m
+rr<&Mrr<%qrr<%js8MBdeieN~>
+!BU8[l0\ND!<)rp!87DP!.k1Bs8N)ts8N)Grr<&]rr<&nrr<&crr<&orr<&Srr<&irr<&Mrr<&m
+rr<&Mrr<%qrr<%js8M6`c8pI~>
+!B:&Xj6cm>!<)rp!87DP!.k1Bs8N)ts8N)Grr<&]rr<&nrr<&crr<&orr<&Srr<&irr<&Mrr<&m
+rr<&Mrr<%qrr<%js8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!;ZZm!<)rs!!E6$!<<#urr;lrr;ZQmr;ZTnK`;#Pqu6Wrd/O(Gk5PD]fDbgN
+h#@?So)A[if)G^Mb5VGAJcERdrp9a;4b*~>
+!BU8[l0\ND!;lfr!;ZZm!<)rs!!E6$!<<#urr;lrr;ZQmr;ZTnK`;#Pqu6Wrd/O(Gk5PD]fDbgN
+h#@?So)A[if)G^Mb5VGAJcERdrojI/3e.~>
+!B:&Xj6cm>!;lfr!;ZZm!<)rs!!E6$!<<#urr;lrr;ZQmr;ZTnK`;#Pqu6Wrd/O(Gk5PD]fDbgN
+h#@?So)A[if)G^Mb5VGAJcERdro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ps82lqs7QHms82lps7lZns7lYKrr<&ls8;rrs8N''rr<'!
+rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rhrr<&ps8E#rs8N''rr<'!rr<&ss8E#ps7u`ns8;ou
+rrDfnr;c`pq>g<jq>gNprrE#trrE&urr<'!r;c`pr;Zlu!<)ro!;ulr!;ZZn!;uls!!*&t!;lfp
+!;QQo!;-<i!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rps8;ourrBq9rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ps82lqs7QHms82lps7lZns7lYKrr<&ls8;rrs8N''rr<'!
+rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rhrr<&ps8E#rs8N''rr<'!rr<&ss8E#ps7u`ns8;ou
+rrDfnr;c`pq>g<jq>gNprrE#trrE&urr<'!r;c`pr;Zlu!<)ro!;ulr!;ZZn!;uls!!*&t!;lfp
+!;QQo!;-<i!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rps8;ourrBq9rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ps82lqs7QHms82lps7lZns7lYKrr<&ls8;rrs8N''rr<'!
+rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rhrr<&ps8E#rs8N''rr<'!rr<&ss8E#ps7u`ns8;ou
+rrDfnr;c`pq>g<jq>gNprrE#trrE&urr<'!r;c`pr;Zlu!<)ro!;ulr!;ZZn!;uls!!*&t!;lfp
+!;QQo!;-<i!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rps8;ourrBq9ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ms8N)ss8Duus8E!"rr<&ss8N)qs8N)ps8N)ts8N(Qrr<&m
+rr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&krr<&nrr<&rs8N*!
+s8N*!rr<&rrr<&orr<&prr<&ts8N)orr<&trr<&qrr<&irr<&prr<&srr<&ts8N)trr<&trr<&t
+s8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&trr<&prr<&lrr<&trr<&srr<&trr<&ss8N)t
+rr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&t
+s8N)9s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ms8N)ss8Duus8E!"rr<&ss8N)qs8N)ps8N)ts8N(Qrr<&m
+rr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&krr<&nrr<&rs8N*!
+s8N*!rr<&rrr<&orr<&prr<&ts8N)orr<&trr<&qrr<&irr<&prr<&srr<&ts8N)trr<&trr<&t
+s8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&trr<&prr<&lrr<&trr<&srr<&trr<&ss8N)t
+rr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&t
+s8N)9s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ms8N)ss8Duus8E!"rr<&ss8N)qs8N)ps8N)ts8N(Qrr<&m
+rr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&krr<&nrr<&rs8N*!
+s8N*!rr<&rrr<&orr<&prr<&ts8N)orr<&trr<&qrr<&irr<&prr<&srr<&ts8N)trr<&trr<&t
+s8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&trr<&prr<&lrr<&trr<&srr<&trr<&ss8N)t
+rr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&t
+s8N)9s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ms8N)ss8N*!s8N*!s8N)ss8N)qs8N)ps8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&lrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&prr<&srr<&prr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&mrr<&rrr<&srrW9$rrDrr!!)or!!)ut!!)ip
+!!)or!!)ut!!)rs!!)ut!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!'n9rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ms8N)ss8N*!s8N*!s8N)ss8N)qs8N)ps8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&lrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&prr<&srr<&prr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&mrr<&rrr<&srrW9$rrDrr!!)or!!)ut!!)ip
+!!)or!!)ut!!)rs!!)ut!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!'n9rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ms8N)ss8N*!s8N*!s8N)ss8N)qs8N)ps8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&lrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&prr<&srr<&prr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&mrr<&rrr<&srrW9$rrDrr!!)or!!)ut!!)ip
+!!)or!!)ut!!)rs!!)ut!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!'n9ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)os8)eLrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZfrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&os8E#lrr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ts8)flrr<&ms7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&r
+rr<&rrr<&trr<&srr<&ss8E#5s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)os8)eLrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZfrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&os8E#lrr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ts8)flrr<&ms7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&r
+rr<&rrr<&trr<&srr<&ss8E#5s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)os8)eLrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZfrr<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&os8E#lrr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ts8)flrr<&ms7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&r
+rr<&rrr<&trr<&srr<&ss8E#5s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ms82kNrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&err<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&ls8N)orr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&urr<&srr<&prr<&mrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)p
+rr<&rrr<&rrr<&trr<&srr<&ps8N)8s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ms82kNrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&err<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&ls8N)orr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&urr<&srr<&prr<&mrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)p
+rr<&rrr<&rrr<&trr<&srr<&ps8N)8s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ms82kNrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&err<&nrr<&rrr<&urr<&u
+rr<&rrr<&orr<&ls8N)orr<&rrr<&rrr<&irr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&urr<&srr<&prr<&mrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)p
+rr<&rrr<&rrr<&trr<&srr<&ps8N)8s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ts8N*!s8N)t
+s8N(Prr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)He!!)cn
+!!)or!!*#u!!*#u!!)or!!)fo!!)ip!!)rs!!)ip!!)or!!)or!!)Ti!!)ip!!)rs!!)ut!!)rs
+!!*#u!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!*#u!!)rs!!)ip!!)`m!!)]l!s&B$!;lcr!;lcr
+!<)ot!;ZWp!;?Em!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5ed8m/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ts8N*!s8N)t
+s8N(Prr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)He!!)cn
+!!)or!!*#u!!*#u!!)or!!)fo!!)ip!!)rs!!)ip!!)or!!)or!!)Ti!!)ip!!)rs!!)ut!!)rs
+!!*#u!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!*#u!!)rs!!)ip!!)`m!!)]l!s&B$!;lcr!;lcr
+!<)ot!;ZWp!;?Em!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5ed8klK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8N*!s8N*!s8N)ss8N)qs8N)ts8N*!s8N)t
+s8N(Prr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)He!!)cn
+!!)or!!*#u!!*#u!!)or!!)fo!!)ip!!)rs!!)ip!!)or!!)or!!)Ti!!)ip!!)rs!!)ut!!)rs
+!!*#u!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!*#u!!)rs!!)ip!!)`m!!)]l!s&B$!;lcr!;lcr
+!<)ot!;ZWp!;?Em!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5ed8irR%V
+J,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZNns7lWps8;ots8Duus8Duus7lZns7lZps7lYJs8N)trr<&t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)lrr<&nrr<&r
+rr<&urr<&urr<&rrr<&orr<&trr<&us8N)trr<&orr<&trr<&qrr<&irr<&prr<&ts8N)trr<&s
+rr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZNns7lWps8;ots8Duus8Duus7lZns7lZps7lYJs8N)trr<&t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)lrr<&nrr<&r
+rr<&urr<&urr<&rrr<&orr<&trr<&us8N)trr<&orr<&trr<&qrr<&irr<&prr<&ts8N)trr<&s
+rr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZNns7lWps8;ots8Duus8Duus7lZns7lZps7lYJs8N)trr<&t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)lrr<&nrr<&r
+rr<&urr<&urr<&rrr<&orr<&trr<&us8N)trr<&orr<&trr<&qrr<&irr<&prr<&ts8N)trr<&s
+rr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZNns7lWps8;ots8Duus8Duus7lZms82lqs7u_Hs8;rps8;rr
+s8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQkq>gKoq>gQqrW)uurrE*!rrE*!q>gBl
+r;cfr!<E/u!;?Hk!;lfm!;QTj!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t
+!<3#s!!*&u!<3#p!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZNns7lWps8;ots8Duus8Duus7lZms82lqs7u_Hs8;rps8;rr
+s8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQkq>gKoq>gQqrW)uurrE*!rrE*!q>gBl
+r;cfr!<E/u!;?Hk!;lfm!;QTj!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t
+!<3#s!!*&u!<3#p!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZNns7lWps8;ots8Duus8Duus7lZms82lqs7u_Hs8;rps8;rr
+s8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQkq>gKoq>gQqrW)uurrE*!rrE*!q>gBl
+r;cfr!<E/u!;?Hk!;lfm!;QTj!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t
+!<3#s!!*&u!<3#p!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@irR%VJ,~>
+!BpJ^mHsrH!.k0Brr<%Ms+144rr<%Ms5a4Zm/bd$J,~>
+!BU8[l0\ND!.k0Brr<%Ms+144rr<%Ms5a4ZklK'jJ,~>
+!B:&Xj6cm>!.k0Brr<%Ms+144rr<%Ms5a4ZirR%VJ,~>
+!BpJ^mHsrH!.k0Brr<%Ms+144rr<%Ms5a4Zm/bd$J,~>
+!BU8[l0\ND!.k0Brr<%Ms+144rr<%Ms5a4ZklK'jJ,~>
+!B:&Xj6cm>!.k0Brr<%Ms+144rr<%Ms5a4ZirR%VJ,~>
+!BpJ^m=G:gs8W*!!.k0$s5s=]!.k12s8MBdeieN~>
+!BU8[l%/kcs8W*!!.k0$s5s=]!.k12s8M6`c8pI~>
+!B:&Xj+75]s8W*!!.k0$s5s=]!.k12s8M$Z_`*)~>
+!BpJ^m=G:grrE)t!.k0$s69R^!.k14s8MBdeieN~>
+!BU8[l%/kcrrE)t!.k0$s69R^!.k14s8M6`c8pI~>
+!B:&Xj+75]rrE)t!.k0$s69R^!.k14s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC<2r!9F1[!;?Hm!.k0cs8N(Ms6p!f!4Mq+!.k10s8MBdeieN~>
+!BU8[l+$cn!9F1[!;?Hm!.k0cs8N(Ms6p!f!4Mq+!.k10s8M6`c8pI~>
+!B:&Xj1,-h!9F1[!;?Hm!.k0cs8N(Ms6p!f!4Mq+!.k10s8M$Z_`*)~>
+!BpJ^mG7g=!9=+Z!9F1[!;?Hm!1!T_!!3*"d/O(Gj8T)ZjSo2[ir8uYpAY*m\GlO/ec,ULpAY*m
+m/I%cJcFa0rp9a;4b*~>
+!BU8[l.uC9!9=+Z!9F1[!;?Hm!1!T_!!3*"d/O(Gj8T)ZjSo2[ir8uYpAY*m\GlO/ec,ULpAY*m
+m/I%cJcFa0rojI/3e.~>
+!B:&Xj5'b3!9=+Z!9F1[!;?Hm!1!T_!!3*"d/O(Gj8T)ZjSo2[ir8uYpAY*m\GlO/ec,ULpAY*m
+m/I%cJcFa0ro4$s2h1~>
+!BpJ^mHsrH!<)rm!65'=!/ggV!<)rt!7:`G!9=(Z!9F.[!94"Y!;?Em!4`%/!7h)L!;?Em!:9^c
+!.k10s8MBdeieN~>
+!BU8[l0\ND!<)rm!65'=!/ggV!<)rt!7:`G!9=(Z!9F.[!94"Y!;?Em!4`%/!7h)L!;?Em!:9^c
+!.k10s8M6`c8pI~>
+!B:&Xj6cm>!<)rm!65'=!/ggV!<)rt!7:`G!9=(Z!9F.[!94"Y!;?Em!4`%/!7h)L!;?Em!:9^c
+!.k10s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!;ulq!<)rr!<<)u!<3#r!;ulq!<<)t!<3#q!<3#o!<)rq!;ulq!<<)t
+!<)rr!;lfm!5&72!;lcr!7:`G!9=(Z!6"m;!3H2#!7h)L!9!kW!.k10s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!;ulq!<)rr!<<)u!<3#r!;ulq!<<)t!<3#q!<3#o!<)rq!;ulq!<<)t
+!<)rr!;lfm!5&72!;lcr!7:`G!9=(Z!6"m;!3H2#!7h)L!9!kW!.k10s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!;ulq!<)rr!<<)u!<3#r!;ulq!<<)t!<3#q!<3#o!<)rq!;ulq!<<)t
+!<)rr!;lfm!5&72!;lcr!7:`G!9=(Z!6"m;!3H2#!7h)L!9!kW!.k10s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82lps8;rts8;rts7lZps7lZns82lp
+s8;rts8;rts7lZos7lZ-rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rj
+s8;ourrDusr;ccqrVururW)iqrW)iqrW)rtrW)osr;c`pq>gHnrW)iqrW)rtrW)osr;c]or;Zlu
+!;HNl!;uls!!*&t!;lfp!!3*"q>^Hp!<;utqu?Tpr;Z`r!<<#ur;ZTnr;Z`rq>^Bnq#:<oJcFa0
+rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82lps8;rts8;rts7lZps7lZns82lp
+s8;rts8;rts7lZos7lZ-rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rj
+s8;ourrDusr;ccqrVururW)iqrW)iqrW)rtrW)osr;c`pq>gHnrW)iqrW)rtrW)osr;c]or;Zlu
+!;HNl!;uls!!*&t!;lfp!!3*"q>^Hp!<;utqu?Tpr;Z`r!<<#ur;ZTnr;Z`rq>^Bnq#:<oJcFa0
+rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82lps8;rts8;rts7lZps7lZns82lp
+s8;rts8;rts7lZos7lZ-rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rj
+s8;ourrDusr;ccqrVururW)iqrW)iqrW)rtrW)osr;c`pq>gHnrW)iqrW)rtrW)osr;c]or;Zlu
+!;HNl!;uls!!*&t!;lfp!!3*"q>^Hp!<;utqu?Tpr;Z`r!<<#ur;ZTnr;Z`rq>^Bnq#:<oJcFa0
+ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8;rts8N)ss8N)rs8N)ts8N)us8N)t
+s8N)ts8N)ms8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)3rr<&mrr<&trr<&ts8N*!s8N*!rr<&u
+s8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)trr<&trr<&rs8N)urr<&qrr<&qrr<&s
+rr<&trr<&trr<&qrr<&mrr<&qrr<&srr<&trr<&trr<&srr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)os8N)trr<&trr<&trr<&rs8N)urr<&rrr<&mrr<&qrr<&trr<&prr<%Ms5O(Xm/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8;rts8N)ss8N)rs8N)ts8N)us8N)t
+s8N)ts8N)ms8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)3rr<&mrr<&trr<&ts8N*!s8N*!rr<&u
+s8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)trr<&trr<&rs8N)urr<&qrr<&qrr<&s
+rr<&trr<&trr<&qrr<&mrr<&qrr<&srr<&trr<&trr<&srr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)os8N)trr<&trr<&trr<&rs8N)urr<&rrr<&mrr<&qrr<&trr<&prr<%Ms5O(XklK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8;rts8N)ss8N)rs8N)ts8N)us8N)t
+s8N)ts8N)ms8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)3rr<&mrr<&trr<&ts8N*!s8N*!rr<&u
+s8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)trr<&trr<&rs8N)urr<&qrr<&qrr<&s
+rr<&trr<&trr<&qrr<&mrr<&qrr<&srr<&trr<&trr<&srr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)os8N)trr<&trr<&trr<&rs8N)urr<&rrr<&mrr<&qrr<&trr<&prr<%Ms5O(XirR%V
+J,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)us8E#ms8N)rs8N)ts8N)os8N)ts8N)m
+s8N)rs8N)ts8N*!s8N)rs8N*!s8;r-rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&s
+rr<&rrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&srr<&lrr<&prr<&urr<&nrr<&qrr<&mrr<&p
+rr<&urr<&trr<&rrr<&trr<&srr<&jrr<&srr<&srr<&urr<&rrr<&orr<&rrr<&prr<&rrr<&m
+rr<&mrr<&lrr<&prr<%Ms5O(Xm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)us8E#ms8N)rs8N)ts8N)os8N)ts8N)m
+s8N)rs8N)ts8N*!s8N)rs8N*!s8;r-rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&s
+rr<&rrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&srr<&lrr<&prr<&urr<&nrr<&qrr<&mrr<&p
+rr<&urr<&trr<&rrr<&trr<&srr<&jrr<&srr<&srr<&urr<&rrr<&orr<&rrr<&prr<&rrr<&m
+rr<&mrr<&lrr<&prr<%Ms5O(XklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)us8E#ms8N)rs8N)ts8N)os8N)ts8N)m
+s8N)rs8N)ts8N*!s8N)rs8N*!s8;r-rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&s
+rr<&rrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&srr<&lrr<&prr<&urr<&nrr<&qrr<&mrr<&p
+rr<&urr<&trr<&rrr<&trr<&srr<&jrr<&srr<&srr<&urr<&rrr<&orr<&rrr<&prr<&rrr<&m
+rr<&mrr<&lrr<&prr<%Ms5O(XirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)ts7lZns8N)ms8N)q
+s8N*!s8N)us7ZNms8)f.rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+s7lZjrr<&rrr<&us7lZmrr<&lrr<&prr<&urr<&ss8)fmrr<&mrr<&prr<&urr<&ts7lZms8E#k
+s8)forr<&srr<&urr<&rrr<&orr<&rrr<&us8)fnrr<&mrr<&mrr<&qs8)flrr<%Ms5O(Xm/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)ts7lZns8N)ms8N)q
+s8N*!s8N)us7ZNms8)f.rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+s7lZjrr<&rrr<&us7lZmrr<&lrr<&prr<&urr<&ss8)fmrr<&mrr<&prr<&urr<&ts7lZms8E#k
+s8)forr<&srr<&urr<&rrr<&orr<&rrr<&us8)fnrr<&mrr<&mrr<&qs8)flrr<%Ms5O(XklK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)ts7lZns8N)ms8N)q
+s8N*!s8N)us7ZNms8)f.rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+s7lZjrr<&rrr<&us7lZmrr<&lrr<&prr<&urr<&ss8)fmrr<&mrr<&prr<&urr<&ts7lZms8E#k
+s8)forr<&srr<&urr<&rrr<&orr<&rrr<&us8)fnrr<&mrr<&mrr<&qs8)flrr<%Ms5O(XirR%V
+J,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)us7cTms8N)ms8N)q
+s8N*!s8N)us7ZNks82l0rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+rr<&irr<&rrr<&urr<&lrr<&lrr<&orrN3#!;uis!;uis!;c]q!;?Em!;QQq!<3&srr<&is8N)o
+rr<&srr<&srr<&srr<&urr<&rrr<&orr<&rrrW9$rrDus!!)or!!)`m!!)`m!!)or!!)rs!!)ip
+!!%TMirB#F!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)us7cTms8N)ms8N)q
+s8N*!s8N)us7ZNks82l0rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+rr<&irr<&rrr<&urr<&lrr<&lrr<&orrN3#!;uis!;uis!;c]q!;?Em!;QQq!<3&srr<&is8N)o
+rr<&srr<&srr<&srr<&urr<&rrr<&orr<&rrrW9$rrDus!!)or!!)`m!!)`m!!)or!!)rs!!)ip
+!!%TMirB#B!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)qs8N*!s8N)us7cTms8N)ms8N)q
+s8N*!s8N)us7ZNks82l0rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&q
+rr<&irr<&rrr<&urr<&lrr<&lrr<&orrN3#!;uis!;uis!;c]q!;?Em!;QQq!<3&srr<&is8N)o
+rr<&srr<&srr<&srr<&urr<&rrr<&orr<&rrrW9$rrDus!!)or!!)`m!!)`m!!)or!!)rs!!)ip
+!!%TMirB#<!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ms8N)ms8N)ps8;rrs8N)ss8N)ts8N)ts8N)s
+s8N)ps8;rrs8E#ns8N)ts8N)2rr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs
+!!)or!!)lq!!)Ti!!)or!!*#u!!)]l!!)]l!!)fo!W`6#r;Q`sr;Q`sqYpNqpAY*mq#:BqrrDus
+!!)`m!!)rs!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)or!s&B$!;uis!;lcr!;?Em!;?Em
+!;lcr!;uis!;ZWp!.k10s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ms8N)ms8N)ps8;rrs8N)ss8N)ts8N)ts8N)s
+s8N)ps8;rrs8E#ns8N)ts8N)2rr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs
+!!)or!!)lq!!)Ti!!)or!!*#u!!)]l!!)]l!!)fo!W`6#r;Q`sr;Q`sqYpNqpAY*mq#:BqrrDus
+!!)`m!!)rs!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)or!s&B$!;uis!;lcr!;?Em!;?Em
+!;lcr!;uis!;ZWp!.k10s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ms8N)ms8N)ps8;rrs8N)ss8N)ts8N)ts8N)s
+s8N)ps8;rrs8E#ns8N)ts8N)2rr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs
+!!)or!!)lq!!)Ti!!)or!!*#u!!)]l!!)]l!!)fo!W`6#r;Q`sr;Q`sqYpNqpAY*mq#:BqrrDus
+!!)`m!!)rs!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)or!s&B$!;uis!;lcr!;?Em!;?Em
+!;lcr!;uis!;ZWp!.k10s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZps7lZns7lZms8;rrs7ZNms7lZps7lZms8;rqs7lZo
+s7lZ,s8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&t
+s8N)orr<&ts8N)trr<&ts8N)srr<&lrr<&nrr<&rrr<&ts8N)qrr<&trr<&rrr<&nrr<&qrr<&t
+s8N)ts8N)trr<&prr<&ts8N)srr<&srr<&trr<&ts8N)os8N)trr<&urr<&ts8N)rrr<&mrr<&t
+rr<&rrr<&rrr<&ts8N)prr<%Ms5O(Xm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZps7lZns7lZms8;rrs7ZNms7lZps7lZms8;rqs7lZo
+s7lZ,s8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&t
+s8N)orr<&ts8N)trr<&ts8N)srr<&lrr<&nrr<&rrr<&ts8N)qrr<&trr<&rrr<&nrr<&qrr<&t
+s8N)ts8N)trr<&prr<&ts8N)srr<&srr<&trr<&ts8N)os8N)trr<&urr<&ts8N)rrr<&mrr<&t
+rr<&rrr<&rrr<&ts8N)prr<%Ms5O(XklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZps7lZns7lZms8;rrs7ZNms7lZps7lZms8;rqs7lZo
+s7lZ,s8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&t
+s8N)orr<&ts8N)trr<&ts8N)srr<&lrr<&nrr<&rrr<&ts8N)qrr<&trr<&rrr<&nrr<&qrr<&t
+s8N)ts8N)trr<&prr<&ts8N)srr<&srr<&trr<&ts8N)os8N)trr<&urr<&ts8N)rrr<&mrr<&t
+rr<&rrr<&rrr<&ts8N)prr<%Ms5O(XirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ls8)frs7lZns7lZls8N)rs82iss8E#ss82lqs7lZls8N)p
+s8)fqs7u`*s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cNjr;Zp!!!)ut
+r;ccqq>gHnq>gBl!!)lqr;ZitrW)iqr;cfrq>gBl!!)ipr;c`p!<E/u!;HNl!!*&u!<<)u!<3#t
+!<)rr!!<0#!;ZWq!<;utr;Z]q!<<#us8Voqq>^BnrVu]orVufr!<<#urr;fpJcFj3rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ls8)frs7lZns7lZls8N)rs82iss8E#ss82lqs7lZls8N)p
+s8)fqs7u`*s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cNjr;Zp!!!)ut
+r;ccqq>gHnq>gBl!!)lqr;ZitrW)iqr;cfrq>gBl!!)ipr;c`p!<E/u!;HNl!!*&u!<<)u!<3#t
+!<)rr!!<0#!;ZWq!<;utr;Z]q!<<#us8Voqq>^BnrVu]orVufr!<<#urr;fpJcFj3rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ls8)frs7lZns7lZls8N)rs82iss8E#ss82lqs7lZls8N)p
+s8)fqs7u`*s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cNjr;Zp!!!)ut
+r;ccqq>gHnq>gBl!!)lqr;ZitrW)iqr;cfrq>gBl!!)ipr;c`p!<E/u!;HNl!!*&u!<<)u!<3#t
+!<)rr!!<0#!;ZWq!<;utr;Z]q!<<#us8Voqq>^BnrVu]orVufr!<<#urr;fpJcFj3ro4$s2h1~>
+!BpJ^mHsrH!.k0Brr<%Ms/l;$!.k0@s8MBdeieN~>
+!BU8[l0\ND!.k0Brr<%Ms/l;$!.k0@s8M6`c8pI~>
+!B:&Xj6cm>!.k0Brr<%Ms/l;$!.k0@s8M$Z_`*)~>
+!BpJ^mHsrH!.k0Brr<%Ms/l;$!.k0@s8MBdeieN~>
+!BU8[l0\ND!.k0Brr<%Ms/l;$!.k0@s8M6`c8pI~>
+!B:&Xj6cm>!.k0Brr<%Ms/l;$!.k0@s8M$Z_`*)~>
+!BpJ^m=G:gs8W*!!.k0Prr<%Ms.02hm/bd$J,~>
+!BU8[l%/kcs8W*!!.k0Prr<%Ms.02hklK'jJ,~>
+!B:&Xj+75]s8W*!!.k0Prr<%Ms.02hirR%VJ,~>
+!BpJ^m=G:grrE)t!.k0Ss8;qKs.B>jm/bd$J,~>
+!BU8[l%/kcrrE)t!.k0Ss8;qKs.B>jklK'jJ,~>
+!B:&Xj+75]rrE)t!.k0Ss8;qKs.B>jirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mFM=;!.k0$s+13$s+14@s8MBdeieN~>
+!BU8[l.5n7!.k0$s+13$s+14@s8M6`c8pI~>
+!B:&Xj4=81!.k0$s+13$s+14@s8M$Z_`*)~>
+!BpJ^mFD4:!9F.[!94"Y!;?Em!.k0$s+13$s1JC2m/bd$J,~>
+!BU8[l.,e6!9F.[!94"Y!;?Em!.k0$s+13$s1JC2klK'jJ,~>
+!B:&Xj44/0!9F.[!94"Y!;?Em!.k0$s+13$s1JC2irR%VJ,~>
+!BpJ^mFD4:!9F.[!94"Y!;?Em!.k0$s+13$s1JC2m/bd$J,~>
+!BU8[l.,e6!9F.[!94"Y!;?Em!.k0$s+13$s1JC2klK'jJ,~>
+!B:&Xj44/0!9F.[!94"Y!;?Em!.k0$s+13$s1JC2irR%VJ,~>
+!BpJ^mFD4:!6"m;!.k0$s+13$s02P&m/bd$J,~>
+!BU8[l.,e6!6"m;!.k0$s+13$s02P&klK'jJ,~>
+!B:&Xj44/0!6"m;!.k0$s+13$s02P&irR%VJ,~>
+!BpJ^mFqU=!!3*"r;Z]qr;Z`r!<<#uqu?Wqqu?Wqrr;rtrVufrqu?Kmr;Z`rqu?Wqrr;rtrVufr
+qZ$Ko!WN.Ns+13$s+14.s8MBdeieN~>
+!BU8[l.Z19!!3*"r;Z]qr;Z`r!<<#uqu?Wqqu?Wqrr;rtrVufrqu?Kmr;Z`rqu?Wqrr;rtrVufr
+qZ$Ko!WN.Ns+13$s+14.s8M6`c8pI~>
+!B:&Xj4aP3!!3*"r;Z]qr;Z`r!<<#uqu?Wqqu?Wqrr;rtrVufrqu?Kmr;Z`rqu?Wqrr;rtrVufr
+qZ$Ko!WN.Ns+13$s+14.s8M$Z_`*)~>
+!BpJ^mG%X@!<)rt!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!;uis!<)ot!<)ot!;c]q!;?Em!;c]q
+!;uis!<)ot!<)ot!;uis!<)rt!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.c4<!<)rt!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!;uis!<)ot!<)ot!;c]q!;?Em!;c]q
+!;uis!<)ot!<)ot!;uis!<)rt!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4jS6!<)rt!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!;uis!<)ot!<)ot!;c]q!;?Em!;c]q
+!;uis!<)ot!<)ot!;uis!<)rt!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mG.^A!;lcr!<2uu!;lcr!;uis!;6?l!;ZWp!<2uu!;HKn!;c]q!;?Em!;ZWp!<2uu!<)ot
+!;lcr!<)ot!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.l:=!;lcr!<2uu!;lcr!;uis!;6?l!;ZWp!<2uu!;HKn!;c]q!;?Em!;ZWp!<2uu!<)ot
+!;lcr!<)ot!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4sY7!;lcr!<2uu!;lcr!;uis!;6?l!;ZWp!<2uu!;HKn!;c]q!;?Em!;ZWp!<2uu!<)ot
+!;lcr!<)ot!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mG.^A!;lcr!<3#o!;uis!;6?l!;ZWp!<2uu!;ulo!;c]q!;?Em!;ZWp!<2uu!<)rn!;ulr
+!.k0$s+13$s5!_Sm/bd$J,~>
+!BU8[l.l:=!;lcr!<3#o!;uis!;6?l!;ZWp!<2uu!;ulo!;c]q!;?Em!;ZWp!<2uu!<)rn!;ulr
+!.k0$s+13$s5!_SklK'jJ,~>
+!B:&Xj4sY7!;lcr!<3#o!;uis!;6?l!;ZWp!<2uu!;ulo!;c]q!;?Em!;ZWp!<2uu!<)rn!;ulr
+!.k0$s+13$s5!_SirR%VJ,~>
+!BpJ^mG.^A!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!:p0i
+!.k0$s+13$s53kUm/bd$J,~>
+!BU8[l.l:=!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!:p0i
+!.k0$s+13$s53kUklK'jJ,~>
+!B:&Xj4sY7!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!:p0i
+!.k0$s+13$s53kUirR%VJ,~>
+!BpJ^mG.^A!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!;?Em
+!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.l:=!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!;?Em
+!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4sY7!;lcr!<2uu!;6?l!;6?l!;QQq!<3&srr<&srr<&qrr<&mrr<&orrN3#!;uis!;?Em
+!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mG%X@!<)rt!<)ot!<)rt!;uis!;6?l!;HKn!;lcr!<)rt!;c]q!<)ot!;lcr!;HKn!;c]q
+!<)rt!<)rt!<)ot!;lfr!.k0$s+13$s60L^m/bd$J,~>
+!BU8[l.c4<!<)rt!<)ot!<)rt!;uis!;6?l!;HKn!;lcr!<)rt!;c]q!<)ot!;lcr!;HKn!;c]q
+!<)rt!<)rt!<)ot!;lfr!.k0$s+13$s60L^klK'jJ,~>
+!B:&Xj4jS6!<)rt!<)ot!<)rt!;uis!;6?l!;HKn!;lcr!<)rt!;c]q!<)ot!;lcr!;HKn!;c]q
+!<)rt!<)rt!<)ot!;lfr!.k0$s+13$s60L^irR%VJ,~>
+!BpJ^mFqU=!!<0#!<)rr!;uln!;uln!;c]q!;c`o!!*&u!;lfp!<)ro!;c]q!;ZZn!;lcs!<;ut
+qZ$QqJcC<$JcC<$kl:YL!S0Da~>
+!BU8[l.Z19!!<0#!<)rr!;uln!;uln!;c]q!;c`o!!*&u!;lfp!<)ro!;c]q!;ZZn!;lcs!<;ut
+qZ$QqJcC<$JcC<$kl:YH!R<`V~>
+!B:&Xj4aP3!!<0#!<)rr!;uln!;uln!;c]q!;c`o!!*&u!;lfp!<)ro!;c]q!;ZZn!;lcs!<;ut
+qZ$QqJcC<$JcC<$kl:YB!Q-jH~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!6tQA!.k1)s8N(Ms5O(Y!6Y?A!:9aa!.k1%s8MBdeieN~>
+!BU8[l,E]&!6tQA!.k1)s8N(Ms5O(Y!6Y?A!:9aa!.k1%s8M6`c8pI~>
+!B:&Xj2M&u!6tQA!.k1)s8N(Ms5O(Y!6Y?A!:9aa!.k1%s8M$Z_`*)~>
+!BpJ^mG.a;!:p0i!6tQA!13`^!:^!g!8[YT!9O4\!;?Em!8[YT!9sO^!:9^c!94%Y!6P6@!9sL`
+!;HKn!.k10s8MBdeieN~>
+!BU8[l.l=7!:p0i!6tQA!13`^!:^!g!8[YT!9O4\!;?Em!8[YT!9sO^!:9^c!94%Y!6P6@!9sL`
+!;HKn!.k10s8M6`c8pI~>
+!B:&Xj4s\1!:p0i!6tQA!13`^!:^!g!8[YT!9O4\!;?Em!8[YT!9sO^!:9^c!94%Y!6P6@!9sL`
+!;HKn!.k10s8M$Z_`*)~>
+!BpJ^mHsrH!;ulm!:p0i!6Y?A!0mK`!:Bdd!8[YT!9O4\!;?Em!8[YT!9X:]!:9^c!94%Y!6P6@
+!9sL`!;HKn!.k10s8MBdeieN~>
+!BU8[l0\ND!;ulm!:p0i!6Y?A!0mK`!:Bdd!8[YT!9O4\!;?Em!8[YT!9X:]!:9^c!94%Y!6P6@
+!9sL`!;HKn!.k10s8M6`c8pI~>
+!B:&Xj6cm>!;ulm!:p0i!6Y?A!0mK`!:Bdd!8[YT!9O4\!;?Em!8[YT!9X:]!:9^c!94%Y!6P6@
+!9sL`!;HKn!.k10s8M$Z_`*)~>
+!BpJ^mHsrH!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!;c`l!2BJn
+!:Bdd!8[YT!9O4\!7CfH!9a@`!<3&Crr<&@rr<&`rr<%Ms4@;Mm/bd$J,~>
+!BU8[l0\ND!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!;c`l!2BJn
+!:Bdd!8[YT!9O4\!7CfH!9a@`!<3&Crr<&@rr<&`rr<%Ms4@;MklK'jJ,~>
+!B:&Xj6cm>!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!!*&t!<<)u!<)rp!;c`q!;c`l!2BJn
+!:Bdd!8[YT!9O4\!7CfH!9a@`!<3&Crr<&@rr<&`rr<%Ms4@;MirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N)rs7lYhrr<&r
+s8N'!s8;rqs7u`ps8Duus8E#qs8;ros8;ourrE&urrE#trrDusr;Zlu!<)ro!;ulr!;ZZn!;uls
+!!*&t!;HNi!;ulq!;-9m!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&qrr<&ps8;ourrDfn
+r;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#os8;ourr@WMnGiLT!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N)rs7lYhrr<&r
+s8N'!s8;rqs7u`ps8Duus8E#qs8;ros8;ourrE&urrE#trrDusr;Zlu!<)ro!;ulr!;ZZn!;uls
+!!*&t!;HNi!;ulq!;-9m!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&qrr<&ps8;ourrDfn
+r;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#os8;ourr@WMnGiLP!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cQos7ZNns7lZls8N)rs7lYhrr<&r
+s8N'!s8;rqs7u`ps8Duus8E#qs8;ros8;ourrE&urrE#trrDusr;Zlu!<)ro!;ulr!;ZZn!;uls
+!!*&t!;HNi!;ulq!;-9m!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&qrr<&ps8;ourrDfn
+r;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#os8;ourr@WMnGiLJ!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!
+s8N)ts8N)rs8N)rs8N)ts8N(nrr<&qs8N)trr<&rrr<&os8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&mrr<&prr<&trr<&mrr<&urr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)orr<&ts8N)trr<&srr<&us8N*!
+s8N*!rr<&us8N)trr<&trr<&trr<&prr<&nrr<&qrr<&ts8N(Ms7$'fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!
+s8N)ts8N)rs8N)rs8N)ts8N(nrr<&qs8N)trr<&rrr<&os8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&mrr<&prr<&trr<&mrr<&urr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)orr<&ts8N)trr<&srr<&us8N*!
+s8N*!rr<&us8N)trr<&trr<&trr<&prr<&nrr<&qrr<&ts8N(Ms7$'fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!
+s8N)ts8N)rs8N)rs8N)ts8N(nrr<&qs8N)trr<&rrr<&os8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&mrr<&qrr<&trr<&ss8N)trr<&mrr<&prr<&trr<&mrr<&urr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)orr<&ts8N)trr<&srr<&us8N*!
+s8N*!rr<&us8N)trr<&trr<&trr<&prr<&nrr<&qrr<&ts8N(Ms7$'firR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)r
+s8N)rs8;qhrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&nrr<&urr<&rrrW9$rrDio!!)or!!)or
+!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;c]q!;HKn!;lcr!;lcr!.k1>s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)r
+s8N)rs8;qhrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&nrr<&urr<&rrrW9$rrDio!!)or!!)or
+!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;c]q!;HKn!;lcr!;lcr!.k1>s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N)ts8E#js8N)r
+s8N)rs8;qhrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&rrr<&r
+rr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&nrr<&urr<&rrrW9$rrDio!!)or!!)or
+!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;c]q!;HKn!;lcr!;lcr!.k1>s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N)q
+s8)eirr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&orr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&u
+rr<&is8E#js8E#orr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TM
+l2UbM!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N)q
+s8)eirr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&orr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&u
+rr<&is8E#js8E#orr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TM
+l2UbI!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)ps7lZls8N)q
+s8)eirr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&orr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&u
+rr<&is8E#js8E#orr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TM
+l2UbC!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N)o
+s82kkrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&os7u`ms8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&f
+s8N)js8N)rrr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMl2UbM
+!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N)o
+s82kkrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&os7u`ms8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&f
+s8N)js8N)rrr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMl2UbI
+!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N)ts8N)qs7cTks8N)o
+s82kkrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&urr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&os7u`ms8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&f
+s8N)js8N)rrr<&urr<&trr<&urr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMl2UbC
+!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)s
+s8N)rs8N)rs8N)ts8N(nrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&u
+rr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&prr<&qrr<&trrW9$rrDio!!)or
+!!)or!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)or!W`6#r;Q`srr2rurr2rurr2ruqu6`u
+s8N)rrr<&qrr<&nrr<&rrr<%Ms69R_m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)s
+s8N)rs8N)rs8N)ts8N(nrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&u
+rr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&prr<&qrr<&trrW9$rrDio!!)or
+!!)or!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)or!W`6#r;Q`srr2rurr2rurr2ruqu6`u
+s8N)rrr<&qrr<&nrr<&rrr<%Ms69R_klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#ss8N)qs8N)s
+s8N)rs8N)rs8N)ts8N(nrr<&qrr<&srr<&rrr<&orr<&prr<&rrr<&urr<&rrr<&trr<&srr<&u
+rr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&prr<&qrr<&trrW9$rrDio!!)or
+!!)or!!*#u!!*#u!!*#u!!)Wj!!)rs!!)fo!!)rs!!)or!W`6#r;Q`srr2rurr2rurr2ruqu6`u
+s8N)rrr<&qrr<&nrr<&rrr<%Ms69R_irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lZos7lYh
+rr<&qrr<&srr<&rrr<&trr<&trr<&orr<&trr<&srr<&ts8N)trr<&ts8N)trr<&ts8N)rrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&urr<&trr<&orr<&qrr<&urr<&trr<&prr<&q
+rr<&trr<&trr<&urr<&urr<&js8N)trr<&os8N)trr<&rrrN3#!;uis!<2uu!<2uu!<3#u!<)ot
+!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!.k1>s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lZos7lYh
+rr<&qrr<&srr<&rrr<&trr<&trr<&orr<&trr<&srr<&ts8N)trr<&ts8N)trr<&ts8N)rrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&urr<&trr<&orr<&qrr<&urr<&trr<&prr<&q
+rr<&trr<&trr<&urr<&urr<&js8N)trr<&os8N)trr<&rrrN3#!;uis!<2uu!<2uu!<3#u!<)ot
+!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!.k1>s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZps7lZos7ZNns7lZos7lYh
+rr<&qrr<&srr<&rrr<&trr<&trr<&orr<&trr<&srr<&ts8N)trr<&ts8N)trr<&ts8N)rrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&mrr<&trr<&urr<&trr<&orr<&qrr<&urr<&trr<&prr<&q
+rr<&trr<&trr<&urr<&urr<&js8N)trr<&os8N)trr<&rrrN3#!;uis!<2uu!<2uu!<3#u!<)ot
+!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!.k1>s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#u
+s7lZos7u_ks7u`ps8E#ts8E#qs8;rss7u`ms8;ros8;p!rr<&ts8;p!rr<&ts8;rms8;rrs7u`n
+s8;rqs8E#ts8E#ls8;rqs8;rms8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)krrE-"
+r;cTl!<E/u!;ZWp!;ulr!<<*!!<<*!!!E6$!<;utqu?Tpqu?KmrVu]or;Z]qJcG0<rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#u
+s7lZos7u_ks7u`ps8E#ts8E#qs8;rss7u`ms8;ros8;p!rr<&ts8;p!rr<&ts8;rms8;rrs7u`n
+s8;rqs8E#ts8E#ls8;rqs8;rms8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)krrE-"
+r;cTl!<E/u!;ZWp!;ulr!<<*!!<<*!!!E6$!<;utqu?Tpqu?KmrVu]or;Z]qJcG0<rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p#rr<'!s7lZns82iss8E#u
+s7lZos7u_ks7u`ps8E#ts8E#qs8;rss7u`ms8;ros8;p!rr<&ts8;p!rr<&ts8;rms8;rrs7u`n
+s8;rqs8E#ts8E#ls8;rqs8;rms8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)krrE-"
+r;cTl!<E/u!;ZWp!;ulr!<<*!!<<*!!!E6$!<;utqu?Tpqu?KmrVu]or;Z]qJcG0<ro4$s2h1~>
+!BpJ^mHsrH!6Y?A!.k0$s+14Crr<%Ms/Z2!m/bd$J,~>
+!BU8[l0\ND!6Y?A!.k0$s+14Crr<%Ms/Z2!klK'jJ,~>
+!B:&Xj6cm>!6Y?A!.k0$s+14Crr<%Ms/Z2!irR%VJ,~>
+!BpJ^mHsrH!6bEA!.k0$s+14Drr<%Ms/Q+um/bd$J,~>
+!BU8[l0\ND!6bEA!.k0$s+14Drr<%Ms/Q+uklK'jJ,~>
+!B:&Xj6cm>!6bEA!.k0$s+14Drr<%Ms/Q+uirR%VJ,~>
+!BpJ^mB?Qe!.k0$s+14Crr<%Ms/Q+um/bd$J,~>
+!BU8[l*(-a!.k0$s+14Crr<%Ms/Q+uklK'jJ,~>
+!B:&Xj0/L[!.k0$s+14Crr<%Ms/Q+uirR%VJ,~>
+!BpJ^mB?Qf!.k0$s+14Es82kJs/Z2!m/bd$J,~>
+!BU8[l*(-b!.k0$s+14Es82kJs/Z2!klK'jJ,~>
+!B:&Xj0/L\!.k0$s+14Es82kJs/Z2!irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mF_F=!:Bdd!6bBB!.k0$s+13$s1A=1m/bd$J,~>
+!BU8[l.H"9!:Bdd!6bBB!.k0$s+13$s1A=1klK'jJ,~>
+!B:&Xj4OA3!:Bdd!6bBB!.k0$s+13$s1A=1irR%VJ,~>
+!BpJ^mF_F=!:Bdd!6bBB!.k0$s+13$s1A=1m/bd$J,~>
+!BU8[l.H"9!:Bdd!6bBB!.k0$s+13$s1A=1klK'jJ,~>
+!B:&Xj4OA3!:Bdd!6bBB!.k0$s+13$s1A=1irR%VJ,~>
+!BpJ^mDJr(!6bBB!.k0$s+13$s1A=1m/bd$J,~>
+!BU8[l,3N$!6bBB!.k0$s+13$s1A=1klK'jJ,~>
+!B:&Xj2:ls!6bBB!.k0$s+13$s1A=1irR%VJ,~>
+!BpJ^mFqU>!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulq!;ulr!!*&u
+!.k0$s+13$s4%)Jm/bd$J,~>
+!BU8[l.Z1:!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulq!;ulr!!*&u
+!.k0$s+13$s4%)JklK'jJ,~>
+!B:&Xj4aP4!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulq!;ulr!!*&u
+!.k0$s+13$s4%)JirR%VJ,~>
+!BpJ^mF_F=!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp
+!<)ot!;lfr!<2uu!.k0$s+13$s4./Km/bd$J,~>
+!BU8[l.H"9!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp
+!<)ot!;lfr!<2uu!.k0$s+13$s4./KklK'jJ,~>
+!B:&Xj4OA3!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp
+!<)ot!;lfr!<2uu!.k0$s+13$s4./KirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;c]q!;lcr!;uis!.k0$
+s+13$s3UfFm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;c]q!;lcr!;uis!.k0$
+s+13$s3UfFklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;c]q!;lcr!;uis!.k0$
+s+13$s3UfFirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;c]q!;lcr!;uis
+!.k0$s+13$s3UfFirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!<2uu!<)ot!;lcr!;?Hm!.k0$s+13$s5!_Sm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!<2uu!<)ot!;lcr!;?Hm!.k0$s+13$s5!_SklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!<2uu!<)ot!;lcr!;?Hm!.k0$s+13$s5!_SirR%VJ,~>
+!BpJ^mG%[;!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?Tpr;Z]qr;ZTnqZ$Qq
+JcC<$JcC<$h>dKA!S0Da~>
+!BU8[l.c77!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?Tpr;Z]qr;ZTnqZ$Qq
+JcC<$JcC<$h>dK=!R<`V~>
+!B:&Xj4jV1!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?Tpr;Z]qr;ZTnqZ$Qq
+JcC<$JcC<$h>dK7!Q-jH~>
+!BpJ^mA^*c!.k0$s+13$s.98im/bd$J,~>
+!BU8[l)F[_!.k0$s+13$s.98iklK'jJ,~>
+!B:&Xj/N%Y!.k0$s+13$s.98iirR%VJ,~>
+!BpJ^mA^*c!.k0$s+13$s.98im/bd$J,~>
+!BU8[l)F[_!.k0$s+13$s.98iklK'jJ,~>
+!B:&Xj/N%Y!.k0$s+13$s.98iirR%VJ,~>
+!BpJ^mAg0d!.k0$s+13$s.02hm/bd$J,~>
+!BU8[l)Oa`!.k0$s+13$s.02hklK'jJ,~>
+!B:&Xj/W+Z!.k0$s+13$s.02hirR%VJ,~>
+!BpJ^mB?Qf!.k0$s+13$s.',gm/bd$J,~>
+!BU8[l*(-b!.k0$s+13$s.',gklK'jJ,~>
+!B:&Xj0/L\!.k0$s+13$s.',girR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m?IYN!6tQA!.k1Ks8;qas8N)(s8N)cs8;qKs31NBm/bd$J,~>
+!BU8[l'25J!6tQA!.k1Ks8;qas8N)(s8N)cs8;qKs31NBklK'jJ,~>
+!B:&Xj-9TD!6tQA!.k1Ks8;qas8N)(s8N)cs8;qKs31NBirR%VJ,~>
+!BpJ^mG7gA!;ulr!8@JK!:p0i!6tQA!6Y?@!;ulr!7q/M!:9^c!6kHC!;?Em!7_#K!8meV!7UrJ
+!9sL`!;HKn!.k1%s8MBdeieN~>
+!BU8[l.uC=!;ulr!8@JK!:p0i!6tQA!6Y?@!;ulr!7q/M!:9^c!6kHC!;?Em!7_#K!8meV!7UrJ
+!9sL`!;HKn!.k1%s8M6`c8pI~>
+!B:&Xj5'b7!;ulr!8@JK!:p0i!6tQA!6Y?@!;ulr!7q/M!:9^c!6kHC!;?Em!7_#K!8meV!7UrJ
+!9sL`!;HKn!.k1%s8M$Z_`*)~>
+!BpJ^mHsrH!<)rs!;ulr!8@JK!:p0i!6Y?A!6P9@!;uls!7h)L!:Bdd!6bBB!;?Em!7_#K!8meV
+!7UrJ!9sL`!;HKn!.k1%s8MBdeieN~>
+!BU8[l0\ND!<)rs!;ulr!8@JK!:p0i!6Y?A!6P9@!;uls!7h)L!:Bdd!6bBB!;?Em!7_#K!8meV
+!7UrJ!9sL`!;HKn!.k1%s8M6`c8pI~>
+!B:&Xj6cm>!<)rs!;ulr!8@JK!:p0i!6Y?A!6P9@!;uls!7h)L!:Bdd!6bBB!;?Em!7_#K!8meV
+!7UrJ!9sL`!;HKn!.k1%s8M$Z_`*)~>
+!BpJ^mHsrH!;ulr!<3#t!<)rr!<)rr!<<)u!;ulq!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u
+!!*&t!<<)u!<)rp!;c`q!;c`l!8%5P!<3&urrN3#!5SU7!6bBB!6G0?!8meV!7UrJ!9sL`!.k0o
+s8MBdeieN~>
+!BU8[l0\ND!;ulr!<3#t!<)rr!<)rr!<<)u!;ulq!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u
+!!*&t!<<)u!<)rp!;c`q!;c`l!8%5P!<3&urrN3#!5SU7!6bBB!6G0?!8meV!7UrJ!9sL`!.k0o
+s8M6`c8pI~>
+!B:&Xj6cm>!;ulr!<3#t!<)rr!<)rr!<<)u!;ulq!;-<k!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u
+!!*&t!<<)u!<)rp!;c`q!;c`l!8%5P!<3&urrN3#!5SU7!6bBB!6G0?!8meV!7UrJ!9sL`!.k0o
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZgs8N)ss7cTos7lZns7lZos7cQo
+s7ZNns7lZls8N)rs7lZHrrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8E#qs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ts8N''rr<'!rr<&ss8;rps7u`ns8E#os8;rqs8N'!s8;rks8;rprrE-"r;c`p
+r;ccqrrE#trrE#tq>g9ir;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#o
+s8;ourr@WMjo>>I!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZgs8N)ss7cTos7lZns7lZos7cQo
+s7ZNns7lZls8N)rs7lZHrrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8E#qs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ts8N''rr<'!rr<&ss8;rps7u`ns8E#os8;rqs8N'!s8;rks8;rprrE-"r;c`p
+r;ccqrrE#trrE#tq>g9ir;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#o
+s8;ourr@WMjo>>E!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZgs8N)ss7cTos7lZns7lZos7cQo
+s7ZNns7lZls8N)rs7lZHrrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8E#qs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ts8N''rr<'!rr<&ss8;rps7u`ns8E#os8;rqs8N'!s8;rks8;rprrE-"r;c`p
+r;ccqrrE#trrE#tq>g9ir;Zlu!<3#t!<3#t!"&Z*!<3$!s8N'!rVllus8;rps8;rmrr<&ps8E#o
+s8;ourr@WMjo>>?!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;ots8;ots8E#ss8E#ts8;rts8N'!s8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N)rs8N)ts8N)Nrs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&orr<&trr<&ss8N)trr<&t
+rr<&trr<&srr<&srr<&rrr<&krr<&ts8N)trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&t
+rr<&prr<&nrr<&qrr<&ts8N(Ms5j:[m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;ots8;ots8E#ss8E#ts8;rts8N'!s8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N)rs8N)ts8N)Nrs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&orr<&trr<&ss8N)trr<&t
+rr<&trr<&srr<&srr<&rrr<&krr<&ts8N)trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&t
+rr<&prr<&nrr<&qrr<&ts8N(Ms5j:[klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;ots8;ots8E#ss8E#ts8;rts8N'!s8E#ss8E#ms8N)rs8E#t
+s8N)ts8N)qs8E#ss8Duus8E#ts8E#ss8;rts8N*!s8N)ts8N)rs8N)rs8N)ts8N)Nrs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&orr<&trr<&ss8N)trr<&t
+rr<&trr<&srr<&srr<&rrr<&krr<&ts8N)trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&t
+rr<&prr<&nrr<&qrr<&ts8N(Ms5j:[irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cQqrr<&rs8N)us8E#qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)q
+s8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N)rs8;rHrsJi,rrE'!s8N*!rrDrr!!)rs!!)ip!!)or
+!!)]l!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)ip!!)lq!!)`m!!)or!!)or
+!!)ut!!)rs!!)Wj!!)rs!!)or!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!qu6WrqYpNqp\t3nqu6Wrqu6WrJcFj3rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cQqrr<&rs8N)us8E#qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)q
+s8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N)rs8;rHrsJi,rrE'!s8N*!rrDrr!!)rs!!)ip!!)or
+!!)]l!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)ip!!)lq!!)`m!!)or!!)or
+!!)ut!!)rs!!)Wj!!)rs!!)or!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!qu6WrqYpNqp\t3nqu6Wrqu6WrJcFj3rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cQqrr<&rs8N)us8E#qs8N)rs8N)ns8N)rs8N)ts8N)ts8N)q
+s8N)rs8N'#rr<&ss8N)ts8E#js8N)rs8N)rs8;rHrsJi,rrE'!s8N*!rrDrr!!)rs!!)ip!!)or
+!!)]l!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)ip!!)lq!!)`m!!)or!!)or
+!!)ut!!)rs!!)Wj!!)rs!!)or!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;uis!<)ot!;uis!<2uu
+!<2uu!<2uu!<2uu!;lcu!<<'!qu6WrqYpNqp\t3nqu6Wrqu6WrJcFj3ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8E!%rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDlpq#L<lrrDoqqZ,4I!!*#u!!*#u!s&B$!;lcr!;uis!;ZZj!;6?l
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!;QTk!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6WroDediq>UEprr2rurVlitrr2rurr2ru
+rr2ruqu6`us8N)rrr<&qrr<&nrr<&rrr<%Ms5*eTm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8E!%rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDlpq#L<lrrDoqqZ,4I!!*#u!!*#u!s&B$!;lcr!;uis!;ZZj!;6?l
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!;QTk!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6WroDediq>UEprr2rurVlitrr2rurr2ru
+rr2ruqu6`us8N)rrr<&qrr<&nrr<&rrr<%Ms5*eTklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8E!%rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDlpq#L<lrrDoqqZ,4I!!*#u!!*#u!s&B$!;lcr!;uis!;ZZj!;6?l
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!;QTk!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6WroDediq>UEprr2rurVlitrr2rurr2ru
+rr2ruqu6`us8N)rrr<&qrr<&nrr<&rrr<%Ms5*eTirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!rs&Q(rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDoqp]13krrDioquG@K!!*#u!!*#u!s&B$!;lcr!;uis!;ZWp!:Kje
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpr;Q`sr;Q`squ6`us8N)rrr<&trr<&srr<&rrr<&gs8N)rrr<&urr<&trr<&u
+rr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMhZ*TB!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!rs&Q(rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDoqp]13krrDioquG@K!!*#u!!*#u!s&B$!;lcr!;uis!;ZWp!:Kje
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpr;Q`sr;Q`squ6`us8N)rrr<&trr<&srr<&rrr<&gs8N)rrr<&urr<&trr<&u
+rr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMhZ*T>!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!rs&Q(rr<'!!!)orrrE&urrDoqpAjsfrrDrrrrE#trrE#t
+rrDoqpAb9p!!)rsrrE#trrDoqp]13krrDioquG@K!!*#u!!*#u!s&B$!;lcr!;uis!;ZWp!:Kje
+!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpr;Q`sr;Q`squ6`us8N)rrr<&trr<&srr<&rrr<&gs8N)rrr<&urr<&trr<&u
+rr<&urr<&urr<&rrrW9$rrDrr!!)lq!!)cn!!)or!!%TMhZ*T8!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8N)qs8E#fs8N)rs8N)ts8N)ts8N)t
+s8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N)rs8N)ts8N)Nrr<&qrrW9$rrDrr!!)rs!!)ip
+!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;uis!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6Wro`"mkr;Q`squ6]t
+rrDus!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;c]q!;HKn!;lcr!.k1,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8N)qs8E#fs8N)rs8N)ts8N)ts8N)t
+s8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N)rs8N)ts8N)Nrr<&qrrW9$rrDrr!!)rs!!)ip
+!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;uis!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6Wro`"mkr;Q`squ6]t
+rrDus!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;c]q!;HKn!;lcr!.k1,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#ts8N)qs8E#fs8N)rs8N)ts8N)ts8N)t
+s8N'!s8E#os8E#ts8E#ss8N)qs8N)ss8N)rs8N)rs8N)ts8N)Nrr<&qrrW9$rrDrr!!)rs!!)ip
+!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;uis!;uis!;lcu!<<'!qu6WrrVlitr;Q`squ6Wro`"mkr;Q`squ6]t
+rrDus!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;c]q!;HKn!;lcr!.k1,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss82iss82iss7lZps7lZns7lZjs7lZps8;rts8;rss7lZps7lZo
+s7lZps7lZos7ZNns7lZos7lZHrr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)lrr<&qrr<&srr<&r
+rr<&prr<&trr<&rrr<&prr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs
+!!)ip!!)utrrDusrrE#t!!)ut!!)ut!!)rs!!)utrrDrr!!)ut!!)iprrE#t!!)or!W`6#r;Q`s
+rr2rurr2rurr;uurVlitrVlitrVlitq>UEpp\t3nqYpNqrVultJcFj3rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss82iss82iss7lZps7lZns7lZjs7lZps8;rts8;rss7lZps7lZo
+s7lZps7lZos7ZNns7lZos7lZHrr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)lrr<&qrr<&srr<&r
+rr<&prr<&trr<&rrr<&prr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs
+!!)ip!!)utrrDusrrE#t!!)ut!!)ut!!)rs!!)utrrDrr!!)ut!!)iprrE#t!!)or!W`6#r;Q`s
+rr2rurr2rurr;uurVlitrVlitrVlitq>UEpp\t3nqYpNqrVultJcFj3rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss82iss82iss7lZps7lZns7lZjs7lZps8;rts8;rss7lZps7lZo
+s7lZps7lZos7ZNns7lZos7lZHrr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)lrr<&qrr<&srr<&r
+rr<&prr<&trr<&rrr<&prr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs
+!!)ip!!)utrrDusrrE#t!!)ut!!)ut!!)rs!!)utrrDrr!!)ut!!)iprrE#t!!)or!W`6#r;Q`s
+rr2rurr2rurr;uurVlitrVlitrVlitq>UEpp\t3nqYpNqrVultJcFj3ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts82iss82lrs8;rrs7lZls8)fls7lZps8;rts8;rrs82los8)fp
+s8;p#rr<'!s7lZns82iss8E#us7lZos7u`Is8;rss8;rss8;rqs7u`ms8;rks7u`ps8E#ts8E#t
+s7u`ns8;rqs7u`ps8E#us8N*!s8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#os8;ots8E#u
+s8N'!s8;rps8;ros8;p!rr<&rs8;rmrrE-"r;cZn!!)rsrW)uurrE*!rr<0$!!*&t!;lfp!;lfm
+!<)ro!;ulq!.k11s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts82iss82lrs8;rrs7lZls8)fls7lZps8;rts8;rrs82los8)fp
+s8;p#rr<'!s7lZns82iss8E#us7lZos7u`Is8;rss8;rss8;rqs7u`ms8;rks7u`ps8E#ts8E#t
+s7u`ns8;rqs7u`ps8E#us8N*!s8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#os8;ots8E#u
+s8N'!s8;rps8;ros8;p!rr<&rs8;rmrrE-"r;cZn!!)rsrW)uurrE*!rr<0$!!*&t!;lfp!;lfm
+!<)ro!;ulq!.k11s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts82iss82lrs8;rrs7lZls8)fls7lZps8;rts8;rrs82los8)fp
+s8;p#rr<'!s7lZns82iss8E#us7lZos7u`Is8;rss8;rss8;rqs7u`ms8;rks7u`ps8E#ts8E#t
+s7u`ns8;rqs7u`ps8E#us8N*!s8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#os8;ots8E#u
+s8N'!s8;rps8;ros8;p!rr<&rs8;rmrrE-"r;cZn!!)rsrW)uurrE*!rr<0$!!*&t!;lfp!;lfm
+!<)ro!;ulq!.k11s8M$Z_`*)~>
+!BpJ^mHsrH!1Ele!.k0$s0;S(!.k0Cs8MBdeieN~>
+!BU8[l0\ND!1Ele!.k0$s0;S(!.k0Cs8M6`c8pI~>
+!B:&Xj6cm>!1Ele!.k0$s0;S(!.k0Cs8M$Z_`*)~>
+!BpJ^mHsrH!1Nre!.k0$s0DY)!.k0Bs8MBdeieN~>
+!BU8[l0\ND!1Nre!.k0$s0DY)!.k0Bs8M6`c8pI~>
+!B:&Xj6cm>!1Nre!.k0$s0DY)!.k0Bs8M$Z_`*)~>
+!BpJ^m=G<:s8)eIs+13Trr<%Ms.B>jm/bd$J,~>
+!BU8[l%/m6s8)eIs+13Trr<%Ms.B>jklK'jJ,~>
+!B:&Xj+770s8)eIs+13Trr<%Ms.B>jirR%VJ,~>
+!BpJ^m=G<:s82kJs+13Vs82kJs.KDkm/bd$J,~>
+!BU8[l%/m6s82kJs+13Vs82kJs.KDkklK'jJ,~>
+!B:&Xj+770s82kJs+13Vs82kJs.KDkirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mF_F=!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=m/bd$J,~>
+!BU8[l.H"9!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=klK'jJ,~>
+!B:&Xj4OA3!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=irR%VJ,~>
+!BpJ^mF_F=!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=m/bd$J,~>
+!BU8[l.H"9!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=klK'jJ,~>
+!B:&Xj4OA3!:Bdd!6bBB!;?Em!.k0$s+13$s2Y0=irR%VJ,~>
+!BpJ^mDJr(!6bBB!.k0$s+13$s1A=1m/bd$J,~>
+!BU8[l,3N$!6bBB!.k0$s+13$s1A=1klK'jJ,~>
+!B:&Xj2:ls!6bBB!.k0$s+13$s1A=1irR%VJ,~>
+!BpJ^mFqU>!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulr!;ZZn!;uls
+!!*&t!.k0$s+13$s53kUm/bd$J,~>
+!BU8[l.Z1:!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulr!;ZZn!;uls
+!!*&t!.k0$s+13$s53kUklK'jJ,~>
+!B:&Xj4aP4!;lfr!!*&t!;uln!;ulq!;c`o!!N<%!<<)u!!*&u!;lfp!;lfm!;ulr!;ZZn!;uls
+!!*&t!.k0$s+13$s53kUirR%VJ,~>
+!BpJ^mF_F=!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;?Em
+!;c]q!<)ot!;uls!<)ot!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.H"9!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;?Em
+!;c]q!<)ot!;uls!<)ot!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4OA3!;c`q!<)ot!;lcr!;ZWp!<)ot!;uis!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;?Em
+!;c]q!<)ot!;uls!<)ot!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c`k!<2uu!;lcr!;uis!;QTk!;c]q!;?Em!;lcr!;lcr!<)ot
+!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!;c]q!;HKn!;lcr!;uis!;ZWp!;uis!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mF_F=!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!;lcr!;c]q!<)ot!;uis!;uis!;lfr!.k0$s+13$s60L^m/bd$J,~>
+!BU8[l.H"9!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!;lcr!;c]q!<)ot!;uis!;uis!;lfr!.k0$s+13$s60L^klK'jJ,~>
+!B:&Xj4OA3!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt!;c]q!<)ot
+!;lcr!;c]q!<)ot!;uis!;uis!;lfr!.k0$s+13$s60L^irR%VJ,~>
+!BpJ^mG%[;!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtr;ZcsJcC<$JcC<$kl:YL!S0Da~>
+!BU8[l.c77!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtr;ZcsJcC<$JcC<$kl:YH!R<`V~>
+!B:&Xj4jV1!<3#t!<3#t!;lfp!;ulq!;c`o!!3*"rr;fpr;Z]q!<<#uqu?TprVu]or;Z]qr;Z`r
+rr;rtr;ZcsJcC<$JcC<$kl:YB!Q-jH~>
+!BpJ^mA^*c!.k0$s+13$s.98im/bd$J,~>
+!BU8[l)F[_!.k0$s+13$s.98iklK'jJ,~>
+!B:&Xj/N%Y!.k0$s+13$s.98iirR%VJ,~>
+!BpJ^mA^*c!.k0$s+13$s.98im/bd$J,~>
+!BU8[l)F[_!.k0$s+13$s.98iklK'jJ,~>
+!B:&Xj/N%Y!.k0$s+13$s.98iirR%VJ,~>
+!BpJ^mAg0d!.k0$s+13$s.02hm/bd$J,~>
+!BU8[l)Oa`!.k0$s+13$s.02hklK'jJ,~>
+!B:&Xj/W+Z!.k0$s+13$s.02hirR%VJ,~>
+!BpJ^mB?Qf!.k0$s+13$s.',gm/bd$J,~>
+!BU8[l*(-b!.k0$s+13$s.',gklK'jJ,~>
+!B:&Xj0/L\!.k0$s+13$s.',girR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCWDr!.k0$s5O(W!1Elc!.k0Bs8MBdeieN~>
+!BU8[l+?un!.k0$s5O(W!1Elc!.k0Bs8M6`c8pI~>
+!B:&Xj1G?h!.k0$s5O(W!1Elc!.k0Bs8M$Z_`*)~>
+!BpJ^mG7g>!9O7Y!.k17s8;ourrCFG!!)`m!!(sWquG^U!!(II!!(1A!!%TMS,`KT!S0Da~>
+!BU8[l.uC:!9O7Y!.k17s8;ourrCFG!!)`m!!(sWquG^U!!(II!!(1A!!%TMS,`KP!R<`V~>
+!B:&Xj5'b4!9O7Y!.k17s8;ourrCFG!!)`m!!(sWquG^U!!(II!!(1A!!%TMS,`KJ!Q-jH~>
+!BpJ^mHsrH!<)rp!94%Y!.k19s8N)ts8N)Grr<&mrr<&Urr<&Vrr<&Irr<&Brr<%Ms-iuem/bd$
+J,~>
+!BU8[l0\ND!<)rp!94%Y!.k19s8N)ts8N)Grr<&mrr<&Urr<&Vrr<&Irr<&Brr<%Ms-iueklK'j
+J,~>
+!B:&Xj6cm>!<)rp!94%Y!.k19s8N)ts8N)Grr<&mrr<&Urr<&Vrr<&Irr<&Brr<%Ms-iueirR%V
+J,~>
+!BpJ^mHsrH!;lfr!;QTk!<3#t!!*&t!;c`q!;c`m!;ulq!!<0#!;ulq!0.!Y!;lcr!7:`G!7LlI
+!8meV!7LlI!6bBB!.k0=s8MBdeieN~>
+!BU8[l0\ND!;lfr!;QTk!<3#t!!*&t!;c`q!;c`m!;ulq!!<0#!;ulq!0.!Y!;lcr!7:`G!7LlI
+!8meV!7LlI!6bBB!.k0=s8M6`c8pI~>
+!B:&Xj6cm>!;lfr!;QTk!<3#t!!*&t!;c`q!;c`m!;ulq!!<0#!;ulq!0.!Y!;lcr!7:`G!7LlI
+!8meV!7LlI!6bBB!.k0=s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ps7lZps7cTks8N)rs7lZos7lZos7lYVrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8E#qs8N'!s8;rps8;p!rr<&orr<&ns8;rqs8N'!
+s8;rnrr<&ps8;ros8;ourrDusr;cQkq>gNprVururW)iqr;ccqrr<'!r;c`pr;Zlu!<)ro!;ulq
+!;ulr!!*&u!<3#u!!`H'!<<'!!;ulq!!3*"JcEmmrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ps7lZps7cTks8N)rs7lZos7lZos7lYVrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8E#qs8N'!s8;rps8;p!rr<&orr<&ns8;rqs8N'!
+s8;rnrr<&ps8;ros8;ourrDusr;cQkq>gNprVururW)iqr;ccqrr<'!r;c`pr;Zlu!<)ro!;ulq
+!;ulr!!*&u!<3#u!!`H'!<<'!!;ulq!!3*"JcEmmrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ps7lZps7cTks8N)rs7lZos7lZos7lYVrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8E#qs8N'!s8;rps8;p!rr<&orr<&ns8;rqs8N'!
+s8;rnrr<&ps8;ros8;ourrDusr;cQkq>gNprVururW)iqr;ccqrr<'!r;c`pr;Zlu!<)ro!;ulq
+!;ulr!!*&u!<3#u!!`H'!<<'!!;ulq!!3*"JcEmmro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ps8N)ts8N)us8E#ts8E#rs8N)rs8N)ts8N*!s8E#ts8E#u
+s8E#ss8E"\rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&mrr<&qs8N)t
+rr<&trr<&ts8N)nrr<&orr<&trr<&ss8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)trr<&trr<&l
+rr<&os8N)urr<&trr<&trr<&ss8N)trr<&trr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&us8N*!
+s8N*!rr<&urr<&ts8N(Ms2tB@m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ps8N)ts8N)us8E#ts8E#rs8N)rs8N)ts8N*!s8E#ts8E#u
+s8E#ss8E"\rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&mrr<&qs8N)t
+rr<&trr<&ts8N)nrr<&orr<&trr<&ss8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)trr<&trr<&l
+rr<&os8N)urr<&trr<&trr<&ss8N)trr<&trr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&us8N*!
+s8N*!rr<&urr<&ts8N(Ms2tB@klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ps8N)ts8N)us8E#ts8E#rs8N)rs8N)ts8N*!s8E#ts8E#u
+s8E#ss8E"\rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&mrr<&qs8N)t
+rr<&trr<&ts8N)nrr<&orr<&trr<&ss8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)trr<&trr<&l
+rr<&os8N)urr<&trr<&trr<&ss8N)trr<&trr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&us8N*!
+s8N*!rr<&urr<&ts8N(Ms2tB@irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)js8N)us8N)ss8N)ss8N)ls8N*!s8N)ss8N*!s8N)rs8N(]
+rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&r
+rr<&nrr<&jrr<&srr<&rrr<&rrr<&lrr<&trr<&rrr<&urr<&rrr<&mrr<&orr<&jrr<&srr<&s
+rr<&trr<&srr<&rrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&urr<&srr<%Ms2tB@m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)js8N)us8N)ss8N)ss8N)ls8N*!s8N)ss8N*!s8N)rs8N(]
+rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&r
+rr<&nrr<&jrr<&srr<&rrr<&rrr<&lrr<&trr<&rrr<&urr<&rrr<&mrr<&orr<&jrr<&srr<&s
+rr<&trr<&srr<&rrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&urr<&srr<%Ms2tB@klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)js8N)us8N)ss8N)ss8N)ls8N*!s8N)ss8N*!s8N)rs8N(]
+rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&r
+rr<&nrr<&jrr<&srr<&rrr<&rrr<&lrr<&trr<&rrr<&urr<&rrr<&mrr<&orr<&jrr<&srr<&s
+rr<&trr<&srr<&rrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&urr<&srr<%Ms2tB@irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N*!s7lZos8N)ss8N)ss8N)rs7lZps8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&os8)forr<&rrr<&rrr<&qs8)fprr<&ns7lZgrr<&orr<&os8)forr<&srr<&ss8E#nrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&ts8E"Ls2Y0=m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N*!s7lZos8N)ss8N)ss8N)rs7lZps8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&os8)forr<&rrr<&rrr<&qs8)fprr<&ns7lZgrr<&orr<&os8)forr<&srr<&ss8E#nrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&ts8E"Ls2Y0=klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N*!s7lZos8N)ss8N)ss8N)rs7lZps8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&os8)forr<&rrr<&rrr<&qs8)fprr<&ns7lZgrr<&orr<&os8)forr<&srr<&ss8E#nrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&ts8E"Ls2Y0=irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N'!s7cTns8N)ss8N)ss8N)ss7cTos8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&srrW9$rrDus!!)rs!!)or!!)or!!)or!!)rs!!)ut!!)cn!!)Kf!!)fo!!)ip!!)rs!!)rs
+!!)rs!!)iprrDoq!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)lqrr@WMaoDA-!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N'!s7cTns8N)ss8N)ss8N)ss7cTos8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&srrW9$rrDus!!)rs!!)or!!)or!!)or!!)rs!!)ut!!)cn!!)Kf!!)fo!!)ip!!)rs!!)rs
+!!)rs!!)iprrDoq!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)lqrr@WMaoDA)!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N'!s7cTns8N)ss8N)ss8N)ss7cTos8N)os7ZMUrr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&n
+rr<&srrW9$rrDus!!)rs!!)or!!)or!!)or!!)rs!!)ut!!)cn!!)Kf!!)fo!!)ip!!)rs!!)rs
+!!)rs!!)iprrDoq!!)lq!!)or!!)rs!!)ip!!*#u!!*#u!!)lqrr@WMaoDA#!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8E#ts8E#rs8N)ss8N)ss8N*!s8E#s
+s8Duus8E"Trr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)`m!!)lq
+!!)rs!!*#u!!)or!!)cn!!)rs!s&B$!;uis!;uis!;lcr!;lcr!;lcr!;uis!<)ot!;HKn!:Tpf
+!;QQo!;ZWp!;uis!;uis!;uis!<)ot!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu
+!;uis!.k0ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8E#ts8E#rs8N)ss8N)ss8N*!s8E#s
+s8Duus8E"Trr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)`m!!)lq
+!!)rs!!*#u!!)or!!)cn!!)rs!s&B$!;uis!;uis!;lcr!;lcr!;lcr!;uis!<)ot!;HKn!:Tpf
+!;QQo!;ZWp!;uis!;uis!;uis!<)ot!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu
+!;uis!.k0ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8E#ts8E#rs8N)ss8N)ss8N*!s8E#s
+s8Duus8E"Trr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)`m!!)lq
+!!)rs!!*#u!!)or!!)cn!!)rs!s&B$!;uis!;uis!;lcr!;lcr!;lcr!;uis!<)ot!;HKn!:Tpf
+!;QQo!;ZWp!;uis!;uis!;uis!<)ot!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!<2uu
+!;uis!.k0ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZKns7ZNns7lZos7lZps7ZNns7cTos7lYUs8N)trr<&trr<&t
+rr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&srr<&trr<&ts8N)n
+rr<&srrW9$rrE#trrDusrrE#t!!)lq!!)or!!)utrrDus!!)utrrE#t!!)utrrDcm!!)ut!!)ut
+!!)ip!!)utrrDus!!)rs!!)utrrE#t!!)or!!)ip!!)ut!!)or!!)ip!!*#u!!*#u!!*#urrE#t
+!!)orrr@WMdf9=6!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZKns7ZNns7lZos7lZps7ZNns7cTos7lYUs8N)trr<&trr<&t
+rr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&srr<&trr<&ts8N)n
+rr<&srrW9$rrE#trrDusrrE#t!!)lq!!)or!!)utrrDus!!)utrrE#t!!)utrrDcm!!)ut!!)ut
+!!)ip!!)utrrDus!!)rs!!)utrrE#t!!)or!!)ip!!)ut!!)or!!)ip!!*#u!!*#u!!*#urrE#t
+!!)orrr@WMdf9=2!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZKns7ZNns7lZos7lZps7ZNns7cTos7lYUs8N)trr<&trr<&t
+rr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&srr<&trr<&ts8N)n
+rr<&srrW9$rrE#trrDusrrE#t!!)lq!!)or!!)utrrDus!!)utrrE#t!!)utrrDcm!!)ut!!)ut
+!!)ip!!)utrrDus!!)rs!!)utrrE#t!!)or!!)ip!!)ut!!)or!!)ip!!*#u!!*#u!!*#urrE#t
+!!)orrr@WMdf9=,!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZNns82iss8E#us8N'!s8;rrs7lZos82iss8E#ts8)fns8)eU
+s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;cfrq>gNprW)rtrW)osr;Zlu!;ZZi
+!<3#s!!*&u!<3!!!<;utr;ZTnrVufr!<<#urVufrqZ$KooDeahrr;fpr;Z]q!<<#us8W&urr;rt
+rr3!!s8;rqs7u`ns8;rqs7u`ps8E#us8N*!s8N*!rrE-"r;c]orr@WMdf9=6!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZNns82iss8E#us8N'!s8;rrs7lZos82iss8E#ts8)fns8)eU
+s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;cfrq>gNprW)rtrW)osr;Zlu!;ZZi
+!<3#s!!*&u!<3!!!<;utr;ZTnrVufr!<<#urVufrqZ$KooDeahrr;fpr;Z]q!<<#us8W&urr;rt
+rr3!!s8;rqs7u`ns8;rqs7u`ps8E#us8N*!s8N*!rrE-"r;c]orr@WMdf9=2!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZNns82iss8E#us8N'!s8;rrs7lZos82iss8E#ts8)fns8)eU
+s8;rps8;rrs8E#us8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;cfrq>gNprW)rtrW)osr;Zlu!;ZZi
+!<3#s!!*&u!<3!!!<;utr;ZTnrVufr!<<#urVufrqZ$KooDeahrr;fpr;Z]q!<<#us8W&urr;rt
+rr3!!s8;rqs7u`ns8;rqs7u`ps8E#us8N*!s8N*!rrE-"r;c]orr@WMdf9=,!Q-jH~>
+!BpJ^mHsrH!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8MBdeieN~>
+!BU8[l0\ND!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8M6`c8pI~>
+!B:&Xj6cm>!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8M$Z_`*)~>
+!BpJ^mHsrH!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8MBdeieN~>
+!BU8[l0\ND!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8M6`c8pI~>
+!B:&Xj6cm>!9X=]!.k0_rr<&<rr<&Yrr<%Ms+13Hs8M$Z_`*)~>
+!BpJ^mDo8)!.k0arr<&=rr<&Xrr<%Ms+13Hs8MBdeieN~>
+!BU8[l,Wi%!.k0arr<&=rr<&Xrr<%Ms+13Hs8M6`c8pI~>
+!B:&Xj2_2t!.k0arr<&=rr<&Xrr<%Ms+13Hs8M$Z_`*)~>
+!BpJ^mDo8)!.k0bs8;rBs82lUs8;qKs+13Js8MBdeieN~>
+!BU8[l,Wi%!.k0bs8;rBs82lUs8;qKs+13Js8M6`c8pI~>
+!B:&Xj2_2t!.k0bs8;rBs82lUs8;qKs+13Js8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC<2r!.k0$s+13ss8;qKs2G$;m/bd$J,~>
+!BU8[l+$cn!.k0$s+13ss8;qKs2G$;klK'jJ,~>
+!B:&Xj1,-h!.k0$s+13ss8;qKs2G$;irR%VJ,~>
+!BpJ^mFqU=!!<0#!9X=]!.k17s8;ourrCFG!!("<!!&Jf!!(%=!!&kq!!&Vjrp9a;4b*~>
+!BU8[l.Z19!!<0#!9X=]!.k17s8;ourrCFG!!("<!!&Jf!!(%=!!&kq!!&VjrojI/3e.~>
+!B:&Xj4aP3!!<0#!9X=]!.k17s8;ourrCFG!!("<!!&Jf!!(%=!!&kq!!&Vjro4$s2h1~>
+!BpJ^mHsrH!;ull!.k0qs8N)ts8N)Grr<&<rr<%frr<&>rr<%prr<%js8MBdeieN~>
+!BU8[l0\ND!;ull!.k0qs8N)ts8N)Grr<&<rr<%frr<&>rr<%prr<%js8M6`c8pI~>
+!B:&Xj6cm>!;ull!.k0qs8N)ts8N)Grr<&<rr<%frr<&>rr<%prr<%js8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rr!<<)u!<3#r!;ZZn!;lfm!/1@P!;lcr!7:`G!.k0Err<%M
+s1n[6m/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rr!<<)u!<3#r!;ZZn!;lfm!/1@P!;lcr!7:`G!.k0Err<%M
+s1n[6klK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rr!<<)u!<3#r!;ZZn!;lfm!/1@P!;lcr!7:`G!.k0Err<%M
+s1n[6irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82los7lZos7lYKrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rjs8;ourrDusr;ccqrVururW)iqrW)cor;c]o
+r;Zlu!;HNl!;ulr!<<)u!<3#u!!*&t!;lfp!;uls!!*&t!;lfp!!3*"r;Z`rq>^Bnr;Zcs!<;ut
+qu?Tp!WN/os8;rps7u`is8;rqs8E#us8E#ts8N'!s8;rrs8Duus8E#qs8;ros8;ourrDusr;Zlu
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"_Z0W&!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82los7lZos7lYKrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rjs8;ourrDusr;ccqrVururW)iqrW)cor;c]o
+r;Zlu!;HNl!;ulr!<<)u!<3#u!!*&t!;lfp!;uls!!*&t!;lfp!!3*"r;Z`rq>^Bnr;Zcs!<;ut
+qu?Tp!WN/os8;rps7u`is8;rqs8E#us8E#ts8N'!s8;rrs8Duus8E#qs8;ros8;ourrDusr;Zlu
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"_Z0W"!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZNns82los7lZos7lYKrr<&ls8;rrs8N''
+rr<'!rr<&us8N'!s8;rrs8N)ts8N)ts7u`ns8;rjs8;ourrDusr;ccqrVururW)iqrW)cor;c]o
+r;Zlu!;HNl!;ulr!<<)u!<3#u!!*&t!;lfp!;uls!!*&t!;lfp!!3*"r;Z`rq>^Bnr;Zcs!<;ut
+qu?Tp!WN/os8;rps7u`is8;rqs8E#us8E#ts8N'!s8;rrs8Duus8E#qs8;ros8;ourrDusr;Zlu
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"_Z0Vq!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#ts8;rts8N)ss8N)ss8E#ss8E#us8N)ts8N(Q
+rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)t
+rr<&trr<&rs8N)urr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&srr<&trr<&ss8N)trr<&t
+rr<&trr<&ss8N)trr<&trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&trr<&q
+rr<&krr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)q
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)9s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#ts8;rts8N)ss8N)ss8E#ss8E#us8N)ts8N(Q
+rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)t
+rr<&trr<&rs8N)urr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&srr<&trr<&ss8N)trr<&t
+rr<&trr<&ss8N)trr<&trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&trr<&q
+rr<&krr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)q
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)9s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#ts8;rts8N)ss8N)ss8E#ss8E#us8N)ts8N(Q
+rr<&mrr<&trr<&ts8N*!s8N*!rr<&us8N)trr<&trr<&srr<&rrr<&prr<&trr<&nrr<&ts8N)t
+rr<&trr<&rs8N)urr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&srr<&trr<&ss8N)trr<&t
+rr<&trr<&ss8N)trr<&trr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&trr<&q
+rr<&krr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)trr<&ts8N)q
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N)9s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N)us8E#ms8N)ss8N)rs8N*!s8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&orr<&srr<&urr<&rrr<&s
+rr<&lrr<&rrr<&rrr<&trr<&srr<&prr<&rrr<&srrW9$rrDrr!!)or!!)ip!!)rs!!)rs!!)ut
+!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)ip!!)or!!)or!!)]l!!)or!!)rs!s&B$
+!;lcr!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!5ed8m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N)us8E#ms8N)ss8N)rs8N*!s8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&orr<&srr<&urr<&rrr<&s
+rr<&lrr<&rrr<&rrr<&trr<&srr<&prr<&rrr<&srrW9$rrDrr!!)or!!)ip!!)rs!!)rs!!)ut
+!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)ip!!)or!!)or!!)]l!!)or!!)rs!s&B$
+!;lcr!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!5ed8klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N)us8E#ms8N)ss8N)rs8N*!s8;qKrr<&nrr<&r
+rr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&orr<&srr<&urr<&rrr<&s
+rr<&lrr<&rrr<&rrr<&trr<&srr<&prr<&rrr<&srrW9$rrDrr!!)or!!)ip!!)rs!!)rs!!)ut
+!!)rs!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)ip!!)or!!)or!!)]l!!)or!!)rs!s&B$
+!;lcr!;lcr!<)ot!;ZWp!;lcr!<)ot!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!5ed8irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iss7ZNms8N)ms8N)ss7ZNms8)eLrr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZhs8E#qs7lZmrr<&lrr<&rs7lZms8E#ls7lZl
+s8N)qrr<&rrr<&us8)forr<&srr<&ss8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#lrr<&rrr<&r
+rr<&ls7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#5
+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iss7ZNms8N)ms8N)ss7ZNms8)eLrr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZhs8E#qs7lZmrr<&lrr<&rs7lZms8E#ls7lZl
+s8N)qrr<&rrr<&us8)forr<&srr<&ss8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#lrr<&rrr<&r
+rr<&ls7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#5
+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iss7ZNms8N)ms8N)ss7ZNms8)eLrr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZhs8E#qs7lZmrr<&lrr<&rs7lZms8E#ls7lZl
+s8N)qrr<&rrr<&us8)forr<&srr<&ss8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#lrr<&rrr<&r
+rr<&ls7lZls8N)qrr<&rrr<&trr<&ps7lZms8E#os8E#mrr<&rrr<&rrr<&trr<&srr<&ss8E#5
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)ss7ZNks82kNrr<&nrr<&rrr<&u
+rr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&ds8N)trr<&lrr<&lrr<&rrr<&is8N)o
+rr<&ks8N)qrr<&rrrW9$rrDus!!)rs!!)rs!!)iprrDlp!!)or!!)or!!)ut!!)rs!!)iprrDio
+!!)or!!)or!!)]l!!)ZkrrDoq!!)or!!)ut!!)ip!!)TirrDiorrDlp!!)or!!)or!!)ut!!)rs
+!!)iprrBn8rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)ss7ZNks82kNrr<&nrr<&rrr<&u
+rr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&ds8N)trr<&lrr<&lrr<&rrr<&is8N)o
+rr<&ks8N)qrr<&rrrW9$rrDus!!)rs!!)rs!!)iprrDlp!!)or!!)or!!)ut!!)rs!!)iprrDio
+!!)or!!)or!!)]l!!)ZkrrDoq!!)or!!)ut!!)ip!!)TirrDiorrDlp!!)or!!)or!!)ut!!)rs
+!!)iprrBn8rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNms8N)ms8N)ss7ZNks82kNrr<&nrr<&rrr<&u
+rr<&urr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&ds8N)trr<&lrr<&lrr<&rrr<&is8N)o
+rr<&ks8N)qrr<&rrrW9$rrDus!!)rs!!)rs!!)iprrDlp!!)or!!)or!!)ut!!)rs!!)iprrDio
+!!)or!!)or!!)]l!!)ZkrrDoq!!)or!!)ut!!)ip!!)TirrDiorrDlp!!)or!!)or!!)ut!!)rs
+!!)iprrBn8ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ms8N)ms8N)ss8E#ns8N)ts8N(Prr<&rrrW9$
+rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)Qh!!)rs!!*#u!!)]l!!)]l
+!!)or!!)`m!!)rs!!)ip!!)]l!s&B$!;lcr!;lcu!<<'!r;Q`sr;Q`sr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp&>*os8N)rrr<&rrr<&trr<&p
+rr<&mrr<&srr<&trr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&trr<&srr<&9s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ms8N)ms8N)ss8E#ns8N)ts8N(Prr<&rrrW9$
+rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)Qh!!)rs!!*#u!!)]l!!)]l
+!!)or!!)`m!!)rs!!)ip!!)]l!s&B$!;lcr!;lcu!<<'!r;Q`sr;Q`sr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp&>*os8N)rrr<&rrr<&trr<&p
+rr<&mrr<&srr<&trr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&trr<&srr<&9s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ms8N)ms8N)ss8E#ns8N)ts8N(Prr<&rrrW9$
+rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!*#u!!)rs!!)or!!)lq!!)Qh!!)rs!!*#u!!)]l!!)]l
+!!)or!!)`m!!)rs!!)ip!!)]l!s&B$!;lcr!;lcu!<<'!r;Q`sr;Q`sr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp&>*os8N)rrr<&rrr<&trr<&p
+rr<&mrr<&srr<&trr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&trr<&srr<&9s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZps7lZns7lZos7lZos7lYJs8N)trr<&trr<&trr<&t
+rr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)os8N)trr<&trr<&ts8N)s
+rr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&ts8N)trr<&trr<&ss8N)trr<&urr<&ts8N)srr<&s
+rr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&orr<&trr<&qrr<&krr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZps7lZns7lZos7lZos7lYJs8N)trr<&trr<&trr<&t
+rr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)os8N)trr<&trr<&ts8N)s
+rr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&ts8N)trr<&trr<&ss8N)trr<&urr<&ts8N)srr<&s
+rr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&orr<&trr<&qrr<&krr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZps7lZns7lZos7lZos7lYJs8N)trr<&trr<&trr<&t
+rr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&trr<&urr<&ts8N)os8N)trr<&trr<&ts8N)s
+rr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&ts8N)trr<&trr<&ss8N)trr<&urr<&ts8N)srr<&s
+rr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&orr<&trr<&qrr<&krr<&ts8N)t
+rr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&ts8N)trr<&qrr<&qrr<&trr<&srr<&s
+rr<&ts8N)trr<&rs8N)As8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8)frs7lZns7lZms8)fqs7u_Hs8;rps8;rrs8E#u
+s8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQk!<E/u!;lfp!;uln!;uln!;ulq!;lcs!<;ut
+pAb'kr;Z`rs8W&urVllus8;rqs8;ots8E#us8E#ts8E#trrE-"r;ccqq>gHnr;ccqrW)rtrW)rt
+!<E/u!;?Hk!;lfm!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8)frs7lZns7lZms8)fqs7u_Hs8;rps8;rrs8E#u
+s8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQk!<E/u!;lfp!;uln!;uln!;ulq!;lcs!<;ut
+pAb'kr;Z`rs8W&urVllus8;rqs8;ots8E#us8E#ts8E#trrE-"r;ccqq>gHnr;ccqrW)rtrW)rt
+!<E/u!;?Hk!;lfm!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8)frs7lZns7lZms8)fqs7u_Hs8;rps8;rrs8E#u
+s8N*!s8N*!rrE-"r;c`pr;Zp!!!)orr;ccqr;cQk!<E/u!;lfp!;uln!;uln!;ulq!;lcs!<;ut
+pAb'kr;Z`rs8W&urVllus8;rqs8;ots8E#us8E#ts8E#trrE-"r;ccqq>gHnr;ccqrW)rtrW)rt
+!<E/u!;?Hk!;lfm!;HNl!;ulr!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHn
+r;ccqrW)rtrW)rt!<E/u!;c`q!6Y?@irR%VJ,~>
+!BpJ^mHsrH!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4Zm/bd$J,~>
+!BU8[l0\ND!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4ZklK'jJ,~>
+!B:&Xj6cm>!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4ZirR%VJ,~>
+!BpJ^mHsrH!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4Zm/bd$J,~>
+!BU8[l0\ND!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4ZklK'jJ,~>
+!B:&Xj6cm>!.k0Brr<%Ms7H<k!.k1Brr<%Ms5a4ZirR%VJ,~>
+!BpJ^m=G:gs8W*!!.k1Brr<%Ms7H<k!.k12s8MBdeieN~>
+!BU8[l%/kcs8W*!!.k1Brr<%Ms7H<k!.k12s8M6`c8pI~>
+!B:&Xj+75]s8W*!!.k1Brr<%Ms7H<k!.k12s8M$Z_`*)~>
+!BpJ^m=G:grrE)t!.k1Es8;qKs7cQl!.k14s8MBdeieN~>
+!BU8[l%/kcrrE)t!.k1Es8;qKs7cQl!.k14s8M6`c8pI~>
+!B:&Xj+75]rrE)t!.k1Es8;qKs7cQl!.k14s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!;QTk!;ulo!7LoI!;?Hm!:^$d!3Q;"!8@JQ!:Kmc!;c`o!3uS&!.k0$s53kUm/bd$
+J,~>
+!BU8[l-B>/!;QTk!;ulo!7LoI!;?Hm!:^$d!3Q;"!8@JQ!:Kmc!;c`o!3uS&!.k0$s53kUklK'j
+J,~>
+!B:&Xj3I])!;QTk!;ulo!7LoI!;?Hm!:^$d!3Q;"!8@JQ!:Kmc!;c`o!3uS&!.k0$s53kUirR%V
+J,~>
+!BpJ^mG7g=!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf!7h,K!!3*"n,E@fg&D$PqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mJcDVIrp9a;4b*~>
+!BU8[l.uC9!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf!7h,K!!3*"n,E@fg&D$PqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mJcDVIrojI/3e.~>
+!B:&Xj5'b3!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf!7h,K!!3*"n,E@fg&D$PqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mJcDVIro4$s2h1~>
+!BpJ^mHsrH!<)rm!:g*h!;QTo!6tQD!9!nW!;HNf!7q/M!<3#u!:Tpf!87AP!;c]q!;QQo!;HKn
+!6bBB!;?Em!:9^c!6>*>!;?Em!.k0Is8MBdeieN~>
+!BU8[l0\ND!<)rm!:g*h!;QTo!6tQD!9!nW!;HNf!7q/M!<3#u!:Tpf!87AP!;c]q!;QQo!;HKn
+!6bBB!;?Em!:9^c!6>*>!;?Em!.k0Is8M6`c8pI~>
+!B:&Xj6cm>!<)rm!:g*h!;QTo!6tQD!9!nW!;HNf!7q/M!<3#u!:Tpf!87AP!;c]q!;QQo!;HKn
+!6bBB!;?Em!:9^c!6>*>!;?Em!.k0Is8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!;c`q!;6Bl!<)rt!<3#s!!*&u!!*&u!!*&t!;uln!;HKn!;uis!:Tpf!87AP!:^!g!;HKn
+!6bBB!9!kW!6>*>!.k0=s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!;c`q!;6Bl!<)rt!<3#s!!*&u!!*&u!!*&t!;uln!;HKn!;uis!:Tpf!87AP!:^!g!;HKn
+!6bBB!9!kW!6>*>!.k0=s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq
+!;c`m!;c`q!;6Bl!<)rt!<3#s!!*&u!!*&u!!*&t!;uln!;HKn!;uis!:Tpf!87AP!:^!g!;HKn
+!6bBB!9!kW!6>*>!.k0=s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZls8N)ls8N*!rriE&!!*'!p](<op]1<nq#L0h!!)`mr;cWm!!)orrW)rtrW)osr;cNj
+r;Zlu!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i
+!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcEmmrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZls8N)ls8N*!rriE&!!*'!p](<op]1<nq#L0h!!)`mr;cWm!!)orrW)rtrW)osr;cNj
+r;Zlu!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i
+!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcEmmrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZn
+s82los7lZls8N)ls8N*!rriE&!!*'!p](<op]1<nq#L0h!!)`mr;cWm!!)orrW)rtrW)osr;cNj
+r;Zlu!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i
+!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcEmmro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8E#ts8N)us8N)ts8N)m
+rr<&orr<&trr<&prr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)qrr<&orr<&nrr<&prr<&trr<&r
+s8N)urr<&trr<&trr<&ss8N)trr<&rrr<&mrr<&qrr<&trr<&prr<&lrr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms2tB@m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8E#ts8N)us8N)ts8N)m
+rr<&orr<&trr<&prr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)qrr<&orr<&nrr<&prr<&trr<&r
+s8N)urr<&trr<&trr<&ss8N)trr<&rrr<&mrr<&qrr<&trr<&prr<&lrr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms2tB@klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8E#ts8N)us8N)ts8N)m
+rr<&orr<&trr<&prr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)qrr<&orr<&nrr<&prr<&trr<&r
+s8N)urr<&trr<&trr<&ss8N)trr<&rrr<&mrr<&qrr<&trr<&prr<&lrr<&trr<&srr<&ts8N)t
+rr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms2tB@irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)us8;rfs8;rrrr<&rrr<&q
+rr<&prr<&urr<&trr<&rrr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&t
+rr<&srr<&rrr<&mrr<&lrr<&prr<&mrr<&rrr<&urr<&rrr<&trr<&srr<&orr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&trr<&srr<%Ms2tB@m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)us8;rfs8;rrrr<&rrr<&q
+rr<&prr<&urr<&trr<&rrr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&t
+rr<&srr<&rrr<&mrr<&lrr<&prr<&mrr<&rrr<&urr<&rrr<&trr<&srr<&orr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&trr<&srr<%Ms2tB@klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)us8;rfs8;rrrr<&rrr<&q
+rr<&prr<&urr<&trr<&rrr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&t
+rr<&srr<&rrr<&mrr<&lrr<&prr<&mrr<&rrr<&urr<&rrr<&trr<&srr<&orr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&trr<&srr<%Ms2tB@irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)ts8)fcrr<&urr<&rrr<&qrr<&p
+rr<&urr<&ts7lZjrr<&rrr<&qrr<&orr<&nrr<&qs7lZmrr<&ps7lZnrr<&srr<&rrr<&mrr<&q
+s8)flrr<&ms7lZorr<&rrr<&trr<&srr<&ts8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ss8E"L
+s2Y0=m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)ts8)fcrr<&urr<&rrr<&qrr<&p
+rr<&urr<&ts7lZjrr<&rrr<&qrr<&orr<&nrr<&qs7lZmrr<&ps7lZnrr<&srr<&rrr<&mrr<&q
+s8)flrr<&ms7lZorr<&rrr<&trr<&srr<&ts8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ss8E"L
+s2Y0=klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)ts8)fcrr<&urr<&rrr<&qrr<&p
+rr<&urr<&ts7lZjrr<&rrr<&qrr<&orr<&nrr<&qs7lZmrr<&ps7lZnrr<&srr<&rrr<&mrr<&q
+s8)flrr<&ms7lZorr<&rrr<&trr<&srr<&ts8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ss8E"L
+s2Y0=irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N)rs82ldrrW9$rrDrr!!)lq!!)fo
+!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*mr;Q`squ6WrpAY*mqu6Wr
+r;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+q>^HpJcEjlrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N)rs82ldrrW9$rrDrr!!)lq!!)fo
+!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*mr;Q`squ6WrpAY*mqu6Wr
+r;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+q>^HpJcEjlrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N)rs82ldrrW9$rrDrr!!)lq!!)fo
+!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*mr;Q`squ6WrpAY*mqu6Wr
+r;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+q>^HpJcEjlro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)ts8N)us8N)ts8N)nrr<&r
+rrW9$rrDrr!!)lq!!)fo!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*m
+r;Q`squ6WrpAY*mqu6Wrr;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcEmmrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)ts8N)us8N)ts8N)nrr<&r
+rrW9$rrDrr!!)lq!!)fo!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*m
+r;Q`squ6WrpAY*mqu6Wrr;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcEmmrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#ns8N)ts8N)t
+s8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)ts8N)us8N)ts8N)nrr<&r
+rrW9$rrDrr!!)lq!!)fo!W`6#r;Q`so)A[iqu6WrqYpNqq#:<op\t3nqYpNqp&>!lq>UEppAY*m
+r;Q`squ6WrpAY*mqu6Wrr;Q`sq>UEppAY*mp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcEmmro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNns7lZks7ZNns7lZps8;rts8;rts7lZhs8N)trr<&trr<&trr<&prr<&nrr<&qrr<&t
+s8N)orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&trr<&r
+rr<&rrr<&ts8N)prr<&lrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&q
+rr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms3grHm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNns7lZks7ZNns7lZps8;rts8;rts7lZhs8N)trr<&trr<&trr<&prr<&nrr<&qrr<&t
+s8N)orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&trr<&r
+rr<&rrr<&ts8N)prr<&lrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&q
+rr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms3grHklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZp
+s7lZps7ZNns7lZks7ZNns7lZps8;rts8;rts7lZhs8N)trr<&trr<&trr<&prr<&nrr<&qrr<&t
+s8N)orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&trr<&r
+rr<&rrr<&ts8N)prr<&lrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&q
+rr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms3grHirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#us7lZks7ZNms8;p#rr<'!s8;rts8;rts7u`hrrE-"r;c`pr;c`pq>gBl!!)ip
+r;cNjr;Zp!!!*#uq>gKoq>gKoq>gHnr;ccqq>gEmr;ccqrW)rtrW)iqr;cfrq>gKor;ZitrW)rt
+q>g9ir;c]or;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcF0urp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#us7lZks7ZNms8;p#rr<'!s8;rts8;rts7u`hrrE-"r;c`pr;c`pq>gBl!!)ip
+r;cNjr;Zp!!!*#uq>gKoq>gKoq>gHnr;ccqq>gEmr;ccqrW)rtrW)iqr;cfrq>gKor;ZitrW)rt
+q>g9ir;c]or;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcF0urojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lq
+s7lZos82iss8E#us7lZks7ZNms8;p#rr<'!s8;rts8;rts7u`hrrE-"r;c`pr;c`pq>gBl!!)ip
+r;cNjr;Zp!!!*#uq>gKoq>gKoq>gHnr;ccqq>gEmr;ccqrW)rtrW)iqr;cfrq>gKor;ZitrW)rt
+q>g9ir;c]or;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcF0uro4$s2h1~>
+!BpJ^mHsrH!.k10s8N(Ms,6mW!.k0$s8Dusm/bd$J,~>
+!BU8[l0\ND!.k10s8N(Ms,6mW!.k0$s8DusklK'jJ,~>
+!B:&Xj6cm>!.k10s8N(Ms,6mW!.k0$s8DusirR%VJ,~>
+!BpJ^mHsrH!.k10s8N(Ms,6mW!.k0$s8Dusm/bd$J,~>
+!BU8[l0\ND!.k10s8N(Ms,6mW!.k0$s8DusklK'jJ,~>
+!B:&Xj6cm>!.k10s8N(Ms,6mW!.k0$s8DusirR%VJ,~>
+!BpJ^m=G;Us82kJs,?sX!.k0$s8Dusm/bd$J,~>
+!BU8[l%/lQs82kJs,?sX!.k0$s8DusklK'jJ,~>
+!B:&Xj+76Ks82kJs,?sX!.k0$s8DusirR%VJ,~>
+!BpJ^m=G;Us82kJs,R-X!.k0$s8N&tm/bd$J,~>
+!BU8[l%/lQs82kJs,R-X!.k0$s8N&tklK'jJ,~>
+!B:&Xj+76Ks82kJs,R-X!.k0$s8N&tirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71equationpage.eps b/books/ps/v71equationpage.eps
new file mode 100644
index 0000000..c5c319d
--- /dev/null
+++ b/books/ps/v71equationpage.eps
@@ -0,0 +1,2672 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: equationpage.eps
+%%CreationDate: Sat Jun 21 10:53:47 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       142082 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5*eS!.k0$
+s5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu
+!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duu
+s8MBdeieN~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5*eS!.k0$
+s5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu
+!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M6`c8pI~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls5*eS!.k0$
+s5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu
+!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG?A
+rW!!!!:Tpf!:9^c!9!nQ!8@GQ!;?Em!.k0urr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG?A
+rW!!!!:Tpf!:9^c!9!nQ!8@GQ!;?Em!.k0urr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcG?A
+rW!!!!:Tpf!:9^c!9!nQ!8@GQ!;?Em!.k0urr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1A
+rr<&us8N)frr<&crr<&Vrr<&srr<&Qrr<&mrr<%Ms3^iM!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1A
+rr<&us8N)frr<&crr<&Vrr<&srr<&Qrr<&mrr<%Ms3^iM!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1A
+rr<&us8N)frr<&crr<&Vrr<&srr<&Qrr<&mrr<%Ms3^iM!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGEC!!)rs!!)Kf!!(.@!!)rs!!(aQ!!%TM`r?#=rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGEC!!)rs!!)Kf!!(.@!!)rs!!(aQ!!%TM`r?#=rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGEC!!)rs!!)Kf!!(.@!!)rs!!(aQ!!%TM`r?#=rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&ms8;rmrr<&rs8E#ts8E#ss8E#qs8N'!s8;rps8;p!rr<&prr<&srr<&ss8;p%rr<'!rr<&t
+s8N)ss8;rps7u`ns8E#os8;rqs8N'!s8;rps8;ourr@WMp&>0qrrE'!s82iss82jDrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&c!S0Da~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&ms8;rmrr<&rs8E#ts8E#ss8E#qs8N'!s8;rps8;p!rr<&prr<&srr<&ss8;p%rr<'!rr<&t
+s8N)ss8;rps7u`ns8E#os8;rqs8N'!s8;rps8;ourr@WMp&>0qrrE'!s82iss82jDrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&_!R<`V~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&ms8;rmrr<&rs8E#ts8E#ss8E#qs8N'!s8;rps8;p!rr<&prr<&srr<&ss8;p%rr<'!rr<&t
+s8N)ss8;rps7u`ns8E#os8;rqs8N'!s8;rps8;ourr@WMp&>0qrrE'!s82iss82jDrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&Y!Q-jH~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGBB!!)fo!!)ut!!)ip!!)lq!!)rs!!)lq!!)lqrrE#t!!)ut!!)utrrDio!s&B$!;c]q
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k1Drr<&u
+rrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVmT4
+rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGBB!!)fo!!)ut!!)ip!!)lq!!)rs!!)lq!!)lqrrE#t!!)ut!!)utrrDio!s&B$!;c]q
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k1Drr<&u
+rrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVmT4
+rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGBB!!)fo!!)ut!!)ip!!)lq!!)rs!!)lq!!)lqrrE#t!!)ut!!)utrrDio!s&B$!;c]q
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k1Drr<&u
+rrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urVmT4
+rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls763g!<)ot!;lcr!;c]q!;ZWp
+!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;QTm!;lcr!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!.k1CrriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"
+!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duu
+s8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls763g!<)ot!;lcr!;c]q!;ZWp
+!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;QTm!;lcr!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!.k1CrriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"
+!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls763g!<)ot!;lcr!;c]q!;ZWp
+!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;QTm!;lcr!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!.k1CrriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"
+!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG3=!!*#u!!)or!!)lq!!)ip!!*#u!!)ip
+!!)lq!!)rs!!*#u!!)or!!)fo!s&B$!;lcr!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!.k1Arr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!rrE'!
+rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG3=!!*#u!!)or!!)lq!!)ip!!*#u!!)ip
+!!)lq!!)rs!!*#u!!)or!!)fo!s&B$!;lcr!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!.k1Arr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!rrE'!
+rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcG3=!!*#u!!)or!!)lq!!)ip!!*#u!!)ip
+!!)lq!!)rs!!*#u!!)or!!)fo!s&B$!;lcr!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!.k1Arr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!rrE'!
+rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6]gg!<<'!qu6WrqYpNqq#:Bq
+rrDio!!)lq!!)rs!!*#u!!)or!!)fo!!)rs!!*#u!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m
+!!)or!!)or!!)ut!!)rs!!)iprr@WMo`#'prrE'!s7QEms82iss8E!"rrE)u!!*&u!!*&u!!*&s
+!!*&s!!<0#s8E#urr<&urs\u.!<3'!!<3'!!<3'!kPu%k!<3'!!<3'!!<3'!rVururp9a;4b*~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6]gg!<<'!qu6WrqYpNqq#:Bq
+rrDio!!)lq!!)rs!!*#u!!)or!!)fo!!)rs!!*#u!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m
+!!)or!!)or!!)ut!!)rs!!)iprr@WMo`#'prrE'!s7QEms82iss8E!"rrE)u!!*&u!!*&u!!*&s
+!!*&s!!<0#s8E#urr<&urs\u.!<3'!!<3'!!<3'!kPu%k!<3'!!<3'!!<3'!rVururojI/3e.~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls6]gg!<<'!qu6WrqYpNqq#:Bq
+rrDio!!)lq!!)rs!!*#u!!)or!!)fo!!)rs!!*#u!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m
+!!)or!!)or!!)ut!!)rs!!)iprr@WMo`#'prrE'!s7QEms82iss8E!"rrE)u!!*&u!!*&u!!*&s
+!!*&s!!<0#s8E#urr<&urs\u.!<3'!!<3'!!<3'!kPu%k!<3'!!<3'!!<3'!rVururo4$s2h1~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>!l
+qu6`us8N)rrr<&qrr<&orrN3#!;QQo!;c]q!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k1Drr<&urrW9$!<<#u
+!ri9#rVuruqu?fu!<<#u!<;Ng!ri9#rW!$"!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&
+rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>!l
+qu6`us8N)rrr<&qrr<&orrN3#!;QQo!;c]q!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k1Drr<&urrW9$!<<#u
+!ri9#rVuruqu?fu!<<#u!<;Ng!ri9#rW!$"!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&
+rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>!l
+qu6`us8N)rrr<&qrr<&orrN3#!;QQo!;c]q!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k1Drr<&urrW9$!<<#u
+!ri9#rVuruqu?fu!<<#u!<;Ng!ri9#rW!$"!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&
+rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Bs8N)trr<&trr<&t
+rr<&prr<&nrr<&nrr<&qrr<&srr<&trr<&ts8N)orr<&srr<&trr<&ts8N)trr<&ts8N)urr<&t
+s8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<%Ms7QBq!<3'!!<;rs!<;rs!<<#u
+!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!
+rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Bs8N)trr<&trr<&t
+rr<&prr<&nrr<&nrr<&qrr<&srr<&trr<&ts8N)orr<&srr<&trr<&ts8N)trr<&ts8N)urr<&t
+s8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<%Ms7QBq!<3'!!<;rs!<;rs!<<#u
+!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!
+rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Bs8N)trr<&trr<&t
+rr<&prr<&nrr<&nrr<&qrr<&srr<&trr<&ts8N)orr<&srr<&trr<&ts8N)trr<&ts8N)urr<&t
+s8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<%Ms7QBq!<3'!!<;rs!<;rs!<<#u
+!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!
+rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>$ms8;rp
+s8;rps7u`lrr<&qs7u`ps8E#ts8E#ss8;ourrDlpq#L?mr;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp
+!<)ro!;ulq!;ulr!<3#t!<3!!!<;utJcGEC!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus69Rc
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>$ms8;rp
+s8;rps7u`lrr<&qs7u`ps8E#ts8E#ss8;ourrDlpq#L?mr;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp
+!<)ro!;ulq!;ulr!<3#t!<3!!!<;utJcGEC!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus69Rc
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLp&>$ms8;rp
+s8;rps7u`lrr<&qs7u`ps8E#ts8E#ss8;ourrDlpq#L?mr;Zlu!;ulq!!<0#!<3#s!!*&u!;lfp
+!<)ro!;ulq!;ulr!<3#t!<3!!!<;utJcGEC!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus69Rc
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Orr<&^
+rr<%Ms/>r$!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#u
+s8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Orr<&^
+rr<%Ms/>r$!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#u
+s8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Orr<&^
+rr<%Ms/>r$!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#u
+s8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLXoAA$
+kPkM^JcD_L!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLXoAA$
+kPkM^JcD_L!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLXoAA$
+kPkM^JcD_L!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Prr<&]rr<%M
+s/>r$!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBd
+eieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Prr<&]rr<%M
+s/>r$!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`
+c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Prr<&]rr<%M
+s/>r$!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z
+_`*)~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLZiBq'kPtJ\JcDbM!!*#u!s&?$
+s8E!"rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLZiBq'kPtJ\JcDbM!!*#u!s&?$
+s8E!"rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLZiBq'kPtJ\JcDbM!!*#u!s&?$
+s8E!"rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mB?Qg!1<fb!.k16s8;qKs+13Hs8MBdeieN~>
+!BU8[l*(-c!1<fb!.k16s8;qKs+13Hs8M6`c8pI~>
+!B:&Xj0/L]!1<fb!.k16s8;qKs+13Hs8M$Z_`*)~>
+!BpJ^mHafN!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!65$=!7CfH!7LlI!.k0%s8MBdeieN~>
+!BU8[l0JBJ!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!65$=!7CfH!7LlI!.k0%s8M6`c8pI~>
+!B:&Xj6QaD!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!65$=!7CfH!7LlI!.k0%s8M$Z_`*)~>
+!BpJ^mHFQM!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!6>*>!7:`G!7LlI!.k0%s8MBdeieN~>
+!BU8[l0/-I!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!6>*>!7:`G!7LlI!.k0%s8M6`c8pI~>
+!B:&Xj66LC!:9^c!8RSS!:Bdd!36&!!3uP(!;?Em!6>*>!7:`G!7LlI!.k0%s8M$Z_`*)~>
+!BpJ^mHOWP!<3&>rr<&drr<&!rr<&(rr<&2rr<%lrr<%Ms+::Mm/bd$J,~>
+!BU8[l083L!<3&>rr<&drr<&!rr<&(rr<&2rr<%lrr<%Ms+::MklK'jJ,~>
+!B:&Xj6?RF!<3&>rr<&drr<&!rr<&(rr<&2rr<%lrr<%Ms+::MirR%VJ,~>
+!BpJ^mHOWP!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&lrr<&ps8;rps7u`ns8;ourrDlp
+rW)rtrW)osr;ccqrrE#trrDfnr;Zlu!;ulq!;QQo!;lfq!<3#t!<)rr!;6Bj!;c`o!!`H'!<<'!
+!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r
+!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/ps7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDoq
+rr@WM]Dqlt!S0Da~>
+!BU8[l083L!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&lrr<&ps8;rps7u`ns8;ourrDlp
+rW)rtrW)osr;ccqrrE#trrDfnr;Zlu!;ulq!;QQo!;lfq!<3#t!<)rr!;6Bj!;c`o!!`H'!<<'!
+!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r
+!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/ps7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDoq
+rr@WM]Dqlp!R<`V~>
+!B:&Xj6?RF!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&lrr<&ps8;rps7u`ns8;ourrDlp
+rW)rtrW)osr;ccqrrE#trrDfnr;Zlu!;ulq!;QQo!;lfq!<3#t!<)rr!;6Bj!;c`o!!`H'!<<'!
+!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r
+!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/ps7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDoq
+rr@WM]Dqlj!Q-jH~>
+!BpJ^mHX]O!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q
+!;ZWp!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis
+!<)ot!<)ot!;HKn!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls
+!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot
+!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;c`q!.k0^
+s8MBdeieN~>
+!BU8[l0A9K!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q
+!;ZWp!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis
+!<)ot!<)ot!;HKn!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls
+!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot
+!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;c`q!.k0^
+s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q
+!;ZWp!<)rt!;QQo!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis
+!<)ot!<)ot!;HKn!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls
+!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot
+!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;c`q!.k0^
+s8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wr
+q>UEpr;Q`sq#:<or;Q`srr2ruqu6WrrVlitr;Q`sq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2ru
+rVlitqu6Wrq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wrqu6WrrVlitr;Q`srVlit
+r;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<%Ms0D\(m/bd$J,~>
+!BU8[l0A9K!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wr
+q>UEpr;Q`sq#:<or;Q`srr2ruqu6WrrVlitr;Q`sq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2ru
+rVlitqu6Wrq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wrqu6WrrVlitr;Q`srVlit
+r;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<%Ms0D\(klK'jJ,~>
+!B:&Xj6HXE!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wr
+q>UEpr;Q`sq#:<or;Q`srr2ruqu6WrrVlitr;Q`sq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2ru
+rVlitqu6Wrq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wrqu6WrrVlitr;Q`srVlit
+r;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<%Ms0D\(irR%VJ,~>
+!BpJ^mHacP!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn!;-9k
+!<2uu!<)ot!;lcr!<)ot!;uis!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;ZZj!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;$3j!<2uu
+!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct!<<)p!;ulr
+!.k0Rs8MBdeieN~>
+!BU8[l0J?L!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn!;-9k
+!<2uu!<)ot!;lcr!<)ot!;uis!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;ZZj!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;$3j!<2uu
+!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct!<<)p!;ulr
+!.k0Rs8M6`c8pI~>
+!B:&Xj6Q^F!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn!;-9k
+!<2uu!<)ot!;lcr!<)ot!;uis!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;ZZj!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;$3j!<2uu
+!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct!<<)p!;ulr
+!.k0Rs8M$Z_`*)~>
+!BpJ^mHafK!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k!;6Bl!;?Em!<2uu
+!<)ot!;lcr!<)ot!;uis!;-<k!<)ot!;lcr!;c]q!;QQq!<3&srr<&irr<&nrr<&rrr<&trr<&s
+rr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N)orr<&rrr<&rrr<&irrN3#!;uis
+!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu!;uis!;lcu!<<'!o)J^i
+JcE"Trp9a;4b*~>
+!BU8[l0JBG!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k!;6Bl!;?Em!<2uu
+!<)ot!;lcr!<)ot!;uis!;-<k!<)ot!;lcr!;c]q!;QQq!<3&srr<&irr<&nrr<&rrr<&trr<&s
+rr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N)orr<&rrr<&rrr<&irrN3#!;uis
+!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu!;uis!;lcu!<<'!o)J^i
+JcE"TrojI/3e.~>
+!B:&Xj6QaA!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k!;6Bl!;?Em!<2uu
+!<)ot!;lcr!<)ot!;uis!;-<k!<)ot!;lcr!;c]q!;QQq!<3&srr<&irr<&nrr<&rrr<&trr<&s
+rr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N)orr<&rrr<&rrr<&irrN3#!;uis
+!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu!;uis!;lcu!<<'!o)J^i
+JcE"Tro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wro`"mkq>UEp
+r;Q`spAY0orrDus!!)or!!)ut!!)rs!!)fo!!)rs!!*#u!!)or!!)lq!!)fo!W`6#r;Q`so)A[i
+p\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEp
+qu6Wrqu6Wro)AakrrDus!!)rs!!)or!!)]l!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)`m!!)cn
+!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms0D\(m/bd$J,~>
+!BU8[l0SEM!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wro`"mkq>UEp
+r;Q`spAY0orrDus!!)or!!)ut!!)rs!!)fo!!)rs!!*#u!!)or!!)lq!!)fo!W`6#r;Q`so)A[i
+p\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEp
+qu6Wrqu6Wro)AakrrDus!!)rs!!)or!!)]l!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)`m!!)cn
+!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms0D\(klK'jJ,~>
+!B:&Xj6ZdG!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wro`"mkq>UEp
+r;Q`spAY0orrDus!!)or!!)ut!!)rs!!)fo!!)rs!!*#u!!)or!!)lq!!)fo!W`6#r;Q`so)A[i
+p\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEp
+qu6Wrqu6Wro)AakrrDus!!)rs!!)or!!)]l!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!)`m!!)cn
+!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms0D\(irR%VJ,~>
+!BpJ^mHjiQ!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;?Em!;c]q!<)rt!;lcr
+!<)ot!<3#u!<)ot!;?Eo!<3&rrr<&trr<&srr<&ts8N)os8N)trr<&trr<&trr<&prr<&nrr<&q
+rr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&s
+rr<&srr<&ts8N)trr<&orr<&trr<&qrr<&hrr<&rrr<&ts8N)rrr<&lrr<&qrr<&trr<&srr<&t
+s8N)ts8N)trr<&mrr<&trr<&srrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!;c`q!.k0^s8MBd
+eieN~>
+!BU8[l0SEM!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;?Em!;c]q!<)rt!;lcr
+!<)ot!<3#u!<)ot!;?Eo!<3&rrr<&trr<&srr<&ts8N)os8N)trr<&trr<&trr<&prr<&nrr<&q
+rr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&s
+rr<&srr<&ts8N)trr<&orr<&trr<&qrr<&hrr<&rrr<&ts8N)rrr<&lrr<&qrr<&trr<&srr<&t
+s8N)ts8N)trr<&mrr<&trr<&srrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!;c`q!.k0^s8M6`
+c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;?Em!;c]q!<)rt!;lcr
+!<)ot!<3#u!<)ot!;?Eo!<3&rrr<&trr<&srr<&ts8N)os8N)trr<&trr<&trr<&prr<&nrr<&q
+rr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&s
+rr<&srr<&ts8N)trr<&orr<&trr<&qrr<&hrr<&rrr<&ts8N)rrr<&lrr<&qrr<&trr<&srr<&t
+s8N)ts8N)trr<&mrr<&trr<&srrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!;c`q!.k0^s8M$Z
+_`*)~>
+!BpJ^mHsrP!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c`l!;ulq!;QTm!<)ou!<;ut
+o`"mkq>^BnqZ$Ko!ri6#q>UHqs8;rps8;rps7u`lrr<&ps8;rjs8;ros8;ourrDusr;Zp!!!*#u
+r;ZitrW)iqr;cfrq>gHnr;ccqrW)rtrW)rt!<E/u!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln
+!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQrs8;rps8;rprrE-"r;cZnrr@WM]Dqlt!S0Da~>
+!BU8[l0\NL!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c`l!;ulq!;QTm!<)ou!<;ut
+o`"mkq>^BnqZ$Ko!ri6#q>UHqs8;rps8;rps7u`lrr<&ps8;rjs8;ros8;ourrDusr;Zp!!!*#u
+r;ZitrW)iqr;cfrq>gHnr;ccqrW)rtrW)rt!<E/u!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln
+!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQrs8;rps8;rprrE-"r;cZnrr@WM]Dqlp!R<`V~>
+!B:&Xj6cmF!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;c`l!;ulq!;QTm!<)ou!<;ut
+o`"mkq>^BnqZ$Ko!ri6#q>UHqs8;rps8;rps7u`lrr<&ps8;rjs8;ros8;ourrDusr;Zp!!!*#u
+r;ZitrW)iqr;cfrq>gHnr;ccqrW)rtrW)rt!<E/u!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln
+!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQrs8;rps8;rprrE-"r;cZnrr@WM]Dqlj!Q-jH~>
+!BpJ^m=G<7rr<%^rr<%Ms02M'!;c]q!.k09s8MBdeieN~>
+!BU8[l%/m3rr<%^rr<%Ms02M'!;c]q!.k09s8M6`c8pI~>
+!B:&Xj+77-rr<%^rr<%Ms02M'!;c]q!.k09s8M$Z_`*)~>
+!BpJ^m=G<8rr<%]rr<%Ms0;S(!;ZWp!.k09s8MBdeieN~>
+!BU8[l%/m4rr<%]rr<%Ms0;S(!;ZWp!.k09s8M6`c8pI~>
+!B:&Xj+77.rr<%]rr<%Ms0;S(!;ZWp!.k09s8M$Z_`*)~>
+!BpJ^m=G<8rr<%]rr<%Ms0;S(!;ZWp!.k09s8MBdeieN~>
+!BU8[l%/m4rr<%]rr<%Ms0;S(!;ZWp!.k09s8M6`c8pI~>
+!B:&Xj+77.rr<%]rr<%Ms0;S(!;ZWp!.k09s8M$Z_`*)~>
+!BpJ^m=G<;s82k]s8;qKs0_n)!;lfp!.k0;s8MBdeieN~>
+!BU8[l%/m7s82k]s8;qKs0_n)!;lfp!.k0;s8M6`c8pI~>
+!B:&Xj+771s82k]s8;qKs0_n)!;lfp!.k0;s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDf2(!:Tsf!;?Hm!7LoE!8.>O!6,!8!:9ac!1j/i!;?Hm!.k0$s3grHm/bd$J,~>
+!BU8[l,Nc$!:Tsf!;?Hm!7LoE!8.>O!6,!8!:9ac!1j/i!;?Hm!.k0$s3grHklK'jJ,~>
+!B:&Xj2V,s!:Tsf!;?Hm!7LoE!8.>O!6,!8!:9ac!1j/i!;?Hm!.k0$s3grHirR%VJ,~>
+!BpJ^mFqU=!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfn!;QTo!6bE:!8[\T
+!;?Hm!.k0$s3grHm/bd$J,~>
+!BU8[l.Z19!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfn!;QTo!6bE:!8[\T
+!;?Hm!.k0$s3grHklK'jJ,~>
+!B:&Xj4aP3!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfn!;QTo!6bE:!8[\T
+!;?Hm!.k0$s3grHirR%VJ,~>
+!BpJ^mHsrH!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hi!5SX/!8[\T!.k0$s2G$;m/bd$
+J,~>
+!BU8[l0\ND!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hi!5SX/!8[\T!.k0$s2G$;klK'j
+J,~>
+!B:&Xj6cm>!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hi!5SX/!8[\T!.k0$s2G$;irR%V
+J,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq#C?oq>^?m
+r;Z`r!<;utqu?Tpqu?Nnrr;oss8W&uq#C?orVultrr;os!<<#u!<<#us8W#trVu`prr;corVucq
+q>^BnrVuis!<;utr;ZTnJcC<$pAb-Z!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq#C?oq>^?m
+r;Z`r!<;utqu?Tpqu?Nnrr;oss8W&uq#C?orVultrr;os!<<#u!<<#us8W#trVu`prr;corVucq
+q>^BnrVuis!<;utr;ZTnJcC<$pAb-V!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq#C?oq>^?m
+r;Z`r!<;utqu?Tpqu?Nnrr;oss8W&uq#C?orVultrr;os!<<#u!<<#us8W#trVu`prr;corVucq
+q>^BnrVuis!<;utr;ZTnJcC<$pAb-P!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZis8N)ps82lp
+s7cTns7lZos7lZps7ZNhs8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<n
+q#H!GJcGHDrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZis8N)ps82lp
+s7cTns7lZos7lZps7ZNhs8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<n
+q#H!GJcGHDrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZis8N)ps82lp
+s7cTns7lZos7lZps7ZNhs8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<n
+q#H!GJcGHDro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ks8N)ms8N)rs8E#ts8N*!s8E#ss8E#us8N)ts8N)ts8;rt
+s8N)ps82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+14Ds8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ks8N)ms8N)rs8E#ts8N*!s8E#ss8E#us8N)ts8N)ts8;rt
+s8N)ps82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+14Ds8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ks8N)ms8N)rs8E#ts8N*!s8E#ss8E#us8N)ts8N)ts8;rt
+s8N)ps82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+14Ds8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ks8N)ms8N)rs8N)ts8N*!s8N)rs8N)ps8N)ts8E#js82lqs8N)ss8N)u
+s8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+14@s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ks8N)ms8N)rs8N)ts8N*!s8N)rs8N)ps8N)ts8E#js82lqs8N)ss8N)u
+s8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+14@s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ks8N)ms8N)rs8N)ts8N*!s8N)rs8N)ps8N)ts8E#js82lqs8N)ss8N)u
+s8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+14@s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZNns7lZns8N)js8N*!rr<&ts8N)ss8N)u
+s8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+14Cs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZNns7lZns8N)js8N*!rr<&ts8N)ss8N)u
+s8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+14Cs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZNns7lZns8N)js8N*!rr<&ts8N)ss8N)u
+s8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+14Cs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZKns7cTms8N)js8N)ts8N'#
+rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+14Ds8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZKns7cTms8N)js8N)ts8N'#
+rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+14Ds8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s7ZKns7cTms8N)js8N)ts8N'#
+rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+14Ds8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s8E#os8N)s
+s8N)ts8N)js8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#u
+s8N)ts8N)us8N)ts8N(Ms+14Ds8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s8E#os8N)s
+s8N)ts8N)js8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#u
+s8N)ts8N)us8N)ts8N(Ms+14Ds8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ks8N)ts8N)ss8N)rs8N)ts8N*!s8E#os8N)s
+s8N)ts8N)js8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#u
+s8N)ts8N)us8N)ts8N(Ms+14Ds8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks7ZNns7lZps8;rt
+s8;rts7lZps7ZKns7lZjs7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+14D
+s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks7ZNns7lZps8;rt
+s8;rts7lZps7ZKns7lZjs7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+14D
+s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks7ZNns7lZps8;rt
+s8;rts7lZps7ZKns7lZjs7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+14D
+s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s7ZNns7lZps8;rts8;rrs8)fqs82iss8Duus7lZjs7ZNms8;p!rr<&ts8;ots8E#us82iss8E#s
+s82lqs7lZms8;rrs8;rts8;rts7u_Hs+14Cs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s7ZNns7lZps8;rts8;rrs8)fqs82iss8Duus7lZjs7ZNms8;p!rr<&ts8;ots8E#us82iss8E#s
+s82lqs7lZms8;rrs8;rts8;rts7u_Hs+14Cs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s7ZNns7lZps8;rts8;rrs8)fqs82iss8Duus7lZjs7ZNms8;p!rr<&ts8;ots8E#us82iss8E#s
+s82lqs7lZms8;rrs8;rts8;rts7u_Hs+14Cs8M$Z_`*)~>
+!BpJ^mHsrH!.k1Es8N(Ms3(HB!.k0$s/H%tm/bd$J,~>
+!BU8[l0\ND!.k1Es8N(Ms3(HB!.k0$s/H%tklK'jJ,~>
+!B:&Xj6cm>!.k1Es8N(Ms3(HB!.k0$s/H%tirR%VJ,~>
+!BpJ^mHsrH!.k1Fs8N(Ms2tBA!.k0$s/H%tm/bd$J,~>
+!BU8[l0\ND!.k1Fs8N(Ms2tBA!.k0$s/H%tklK'jJ,~>
+!B:&Xj6cm>!.k1Fs8N(Ms2tBA!.k0$s/H%tirR%VJ,~>
+!BpJ^m=G;ks8)eIs3CZB!.k0$s/Q+um/bd$J,~>
+!BU8[l%/lgs8)eIs3CZB!.k0$s/Q+uklK'jJ,~>
+!B:&Xj+76as8)eIs3CZB!.k0$s/Q+uirR%VJ,~>
+!BpJ^m=G;ks8)eIs3CZB!.k0$s/Q+um/bd$J,~>
+!BU8[l%/lgs8)eIs3CZB!.k0$s/Q+uklK'jJ,~>
+!B:&Xj+76as8)eIs3CZB!.k0$s/Q+uirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],(!.k1Ls8;rns8;qKs+13$s-Wicm/bd$J,~>
+!BU8[l,E]$!.k1Ls8;rns8;qKs+13$s-WicklK'jJ,~>
+!B:&Xj2M&s!.k1Ls8;rns8;qKs+13$s-WicirR%VJ,~>
+!BpJ^mFhO=!!3*"n,E@f]`.s3`W#o<o)A[ip\t3nS,WHgpAY*mJcC<$QN-sO!S0Da~>
+!BU8[l.Q+9!!3*"n,E@f]`.s3`W#o<o)A[ip\t3nS,WHgpAY*mJcC<$QN-sK!R<`V~>
+!B:&Xj4XJ3!!3*"n,E@f]`.s3`W#o<o)A[ip\t3nS,WHgpAY*mJcC<$QN-sE!Q-jH~>
+!BpJ^mFqR?!<3#u!:Tpf!5/=3!65$=!:g'h!;HKn!1Wug!;?Em!.k0$s-E]am/bd$J,~>
+!BU8[l.Z.;!<3#u!:Tpf!5/=3!65$=!:g'h!;HKn!1Wug!;?Em!.k0$s-E]aklK'jJ,~>
+!B:&Xj4aM5!<3#u!:Tpf!5/=3!65$=!:g'h!;HKn!1Wug!;?Em!.k0$s-E]airR%VJ,~>
+!BpJ^mG%X@!;uis!:Tpf!5/=3!65$=!:g'h!0I3\!.k0$s,-jUm/bd$J,~>
+!BU8[l.c4<!;uis!:Tpf!5/=3!65$=!:g'h!0I3\!.k0$s,-jUklK'jJ,~>
+!B:&Xj4jS6!;uis!:Tpf!5/=3!65$=!:g'h!0I3\!.k0$s,-jUirR%VJ,~>
+!BpJ^mG%X@!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g3g!!)iprW)iqrr<'!r;c`pr;c]or;ccqrVururW)Zl
+r;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!.k0$s1870m/bd$
+J,~>
+!BU8[l.c4<!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g3g!!)iprW)iqrr<'!r;c`pr;c]or;ccqrVururW)Zl
+r;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!.k0$s1870klK'j
+J,~>
+!B:&Xj4jS6!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g3g!!)iprW)iqrr<'!r;c`pr;c]or;ccqrVururW)Zl
+r;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!.k0$s1870irR%V
+J,~>
+!BpJ^mFqR?!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!:g'h!;HKn!;c`q!<)ot
+!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!;QQo!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0$s1870m/bd$J,~>
+!BU8[l.Z.;!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!:g'h!;HKn!;c`q!<)ot
+!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!;QQo!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0$s1870klK'jJ,~>
+!B:&Xj4aM5!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!:g'h!;HKn!;c`q!<)ot
+!<)ot!<)ot!;uis!<)ot!;lfr!<2uu!;QQo!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0$s1870irR%VJ,~>
+!BpJ^mFhO<!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!:g'h!;HKn!;c]q!;uis
+!<2uu!;lcr!;QQo!;lcr!;-9k!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!<)ot!;uis!.k0$s1870m/bd$J,~>
+!BU8[l.Q+8!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!:g'h!;HKn!;c]q!;uis
+!<2uu!;lcr!;QQo!;lcr!;-9k!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!<)ot!;uis!.k0$s1870klK'jJ,~>
+!B:&Xj4XJ2!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!:g'h!;HKn!;c]q!;uis
+!<2uu!;lcr!;QQo!;lcr!;-9k!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!<)ot!;uis!.k0$s1870irR%VJ,~>
+!BpJ^mFD4:!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!:g'h!;HKn!;c]q!;uis!<3#o!<)rp!;lcr!;-<e!<2uu
+!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$s0r%-m/bd$J,~>
+!BU8[l.,e6!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!:g'h!;HKn!;c]q!;uis!<3#o!<)rp!;lcr!;-<e!<2uu
+!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$s0r%-klK'jJ,~>
+!B:&Xj44/0!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!:g'h!;HKn!;c]q!;uis!<3#o!<)rp!;lcr!;-<e!<2uu
+!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$s0r%-irR%VJ,~>
+!BpJ^mF;.<!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Qh!!)cn!!)lq!!)rs!!*#u!!)cn!!)rs!!)or!!)Zk!!)cn
+!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m!!)or!!)or!!)ut!!)rs!!)iprr@WMJcE:\rp9a;
+4b*~>
+!BU8[l.#_8!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Qh!!)cn!!)lq!!)rs!!*#u!!)cn!!)rs!!)or!!)Zk!!)cn
+!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m!!)or!!)or!!)ut!!)rs!!)iprr@WMJcE:\rojI/
+3e.~>
+!B:&Xj4+)2!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Qh!!)cn!!)lq!!)rs!!*#u!!)cn!!)rs!!)or!!)Zk!!)cn
+!!)or!!)ut!!)rs!!*#u!!)rs!!)lq!!)`m!!)or!!)or!!)ut!!)rs!!)iprr@WMJcE:\ro4$s
+2h1~>
+!BpJ^mG%X@!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wrnc&Rhp\t3nqYpNqr;Q`srr2rup\t3n
+r;Q`squ6Wro`"mkp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sJcC<$])Vcs!S0Da~>
+!BU8[l.c4<!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wrnc&Rhp\t3nqYpNqr;Q`srr2rup\t3n
+r;Q`squ6Wro`"mkp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sJcC<$])Vco!R<`V~>
+!B:&Xj4jS6!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wrnc&Rhp\t3nqYpNqr;Q`srr2rup\t3n
+r;Q`squ6Wro`"mkp\t3nqu6WrrVlitr;Q`srr2rur;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+rVlitr;Q`sJcC<$])Vci!Q-jH~>
+!BpJ^mG%[@!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&hrr<&nrr<&qrr<&s
+rr<&trr<&ts8N)urr<&ts8N)rrr<&jrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms+13es8MBdeieN~>
+!BU8[l.c7<!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&hrr<&nrr<&qrr<&s
+rr<&trr<&ts8N)urr<&ts8N)rrr<&jrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms+13es8M6`c8pI~>
+!B:&Xj4jV6!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&hrr<&nrr<&qrr<&s
+rr<&trr<&ts8N)urr<&ts8N)rrr<&jrr<&ts8N)trr<&ts8N)trr<&ts8N)urr<&ts8N)qrr<&t
+rr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(Ms+13es8M$Z_`*)~>
+!BpJ^mG%XA!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QTj!<)ro!<3#t!<3#t!<)rr!;lfp!!*&u!<<)q!;?Hk!;c`o
+!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms+13es8MBd
+eieN~>
+!BU8[l.c4=!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QTj!<)ro!<3#t!<3#t!<)rr!;lfp!!*&u!<<)q!;?Hk!;c`o
+!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms+13es8M6`
+c8pI~>
+!B:&Xj4jS7!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QTj!<)ro!<3#t!<3#t!<)rr!;lfp!!*&u!<<)q!;?Hk!;c`o
+!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms+13es8M$Z
+_`*)~>
+!BpJ^m?.DK!.k0nrr<%Ms+13$s6]jcm/bd$J,~>
+!BU8[l&kuG!.k0nrr<%Ms+13$s6]jcklK'jJ,~>
+!B:&Xj,s?A!.k0nrr<%Ms+13$s6]jcirR%VJ,~>
+!BpJ^m?7JL!.k0mrr<%Ms+13$s6]jcm/bd$J,~>
+!BU8[l&u&H!.k0mrr<%Ms+13$s6]jcklK'jJ,~>
+!B:&Xj-'EB!.k0mrr<%Ms+13$s6]jcirR%VJ,~>
+!BpJ^m?7JL!.k0mrr<%Ms+13$s6]jcm/bd$J,~>
+!BU8[l&u&H!.k0mrr<%Ms+13$s6]jcklK'jJ,~>
+!B:&Xj-'EB!.k0mrr<%Ms+13$s6]jcirR%VJ,~>
+!BpJ^m?R_L!.k0ps8;qKs+13$s6fpdm/bd$J,~>
+!BU8[l';;H!.k0ps8;qKs+13$s6fpdklK'jJ,~>
+!B:&Xj-BZB!.k0ps8;qKs+13$s6fpdirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDf2(!:Tsf!;?Hm!7LoE!8RVS!9O7Y!7h,I!6kKC!:^$d!6P9@!;?Hm!.k0$s60L^m/bd$
+J,~>
+!BU8[l,Nc$!:Tsf!;?Hm!7LoE!8RVS!9O7Y!7h,I!6kKC!:^$d!6P9@!;?Hm!.k0$s60L^klK'j
+J,~>
+!B:&Xj2V,s!:Tsf!;?Hm!7LoE!8RVS!9O7Y!7h,I!6kKC!:^$d!6P9@!;?Hm!.k0$s60L^irR%V
+J,~>
+!BpJ^mFqU=!!<0#!;-<h!:Tsf!;?Hm!7UuE!9jI]!!<0#!;uls!9O7Y!:9a]!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s60L^m/bd$J,~>
+!BU8[l.Z19!!<0#!;-<h!:Tsf!;?Hm!7UuE!9jI]!!<0#!;uls!9O7Y!:9a]!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s60L^klK'jJ,~>
+!B:&Xj4aP3!!<0#!;-<h!:Tsf!;?Hm!7UuE!9jI]!!<0#!;uls!9O7Y!:9a]!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s60L^irR%VJ,~>
+!BpJ^mHsrH!;ull!:g*h!:Tsf!65'=!9O7U!8IPR!:9a\!:^$g!4Mq-!;HNf!8[\T!.k0$s4dSQ
+m/bd$J,~>
+!BU8[l0\ND!;ull!:g*h!:Tsf!65'=!9O7U!8IPR!:9a\!:^$g!4Mq-!;HNf!8[\T!.k0$s4dSQ
+klK'jJ,~>
+!B:&Xj6cm>!;ull!:g*h!:Tsf!65'=!9O7U!8IPR!:9a\!:^$g!4Mq-!;HNf!8[\T!.k0$s4dSQ
+irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;QTk!;QTo!<)rs!<<)s!;ulr!!*&t!;ulq!!*&u!;uls!;ZZn!;HNn!<)rs!<)rr!;ZZp!;ulq
+!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#urr;lrqZ$EmqZ$Qqp&G$lrVultrr;os!<<#u!<<#u
+s8W#trVu`prr;corVucqq>^BnrVuis!<;utJcC<$!<<&c!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;QTk!;QTo!<)rs!<<)s!;ulr!!*&t!;ulq!!*&u!;uls!;ZZn!;HNn!<)rs!<)rr!;ZZp!;ulq
+!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#urr;lrqZ$EmqZ$Qqp&G$lrVultrr;os!<<#u!<<#u
+s8W#trVu`prr;corVucqq>^BnrVuis!<;utJcC<$!<<&_!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;QTk!;QTo!<)rs!<<)s!;ulr!!*&t!;ulq!!*&u!;uls!;ZZn!;HNn!<)rs!<)rr!;ZZp!;ulq
+!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#urr;lrqZ$EmqZ$Qqp&G$lrVultrr;os!<<#u!<<#u
+s8W#trVu`prr;corVucqq>^BnrVuis!<;utJcC<$!<<&Y!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs7lZjs8N)ss8N*!s82lps7cTns7cTls8N)rs7lZjs8N)ss8N*!s7lZls8N)ss8;rt
+s8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBn
+quHWoq#LHpp],mFJcG`:!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs7lZjs8N)ss8N*!s82lps7cTns7cTls8N)rs7lZjs8N)ss8N*!s7lZls8N)ss8;rt
+s8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBn
+quHWoq#LHpp],mFJcG`6!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs7lZjs8N)ss8N*!s82lps7cTns7cTls8N)rs7lZjs8N)ss8N*!s7lZls8N)ss8;rt
+s8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBn
+quHWoq#LHpp],mFJcG`0!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)ps82lls8N)rs8E#ts8N*!s8E#ts8E#qs8N)ss8E#s
+s8E#ps8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&s
+s8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N(Ms+14Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)ps82lls8N)rs8E#ts8N*!s8E#ts8E#qs8N)ss8E#s
+s8E#ps8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&s
+s8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N(Ms+14LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)ps82lls8N)rs8E#ts8N*!s8E#ts8E#qs8N)ss8E#s
+s8E#ps8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&s
+s8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N(Ms+14LirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)fs8N)os7u`ms8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss8N)rs8N)q
+s7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)r
+s8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14Lm/bd$
+J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)fs8N)os7u`ms8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss8N)rs8N)q
+s7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)r
+s8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14LklK'j
+J,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)fs8N)os7u`ms8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss8N)rs8N)q
+s7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)r
+s8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14LirR%V
+J,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls7lZfs82lps8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss7ZNis7u`p
+s8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)l
+s8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14Lm/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls7lZfs82lps8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss7ZNis7u`p
+s8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)l
+s8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14LklK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls7lZfs82lps8N)rs8N)ts8N*!s8N)ss8N)rs8N)ss7ZNis7u`p
+s8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)l
+s8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+14LirR%V
+J,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ms7cTis8N)ss8N)ss8N)rs8N)ts8N*!s8N)ss8N)rs8N)s
+s7ZNis8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)s
+s7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(M
+s+14Lm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ms7cTis8N)ss8N)ss8N)rs8N)ts8N*!s8N)ss8N)rs8N)s
+s7ZNis8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)s
+s7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(M
+s+14LklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ms7cTis8N)ss8N)ss8N)rs8N)ts8N*!s8N)ss8N)rs8N)s
+s7ZNis8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+rr<'!rr<'!rr<&ss8N)s
+s7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(M
+s+14LirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ms8N)ss8N)ps8;rss8N)ss8N)rs8N)ts8N*!s8E#t
+s8E#qs8N)ss8E#is8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#ss8E!*rr<'!rr<'!rr<&s
+s8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N(Ms+14Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ms8N)ss8N)ps8;rss8N)ss8N)rs8N)ts8N*!s8E#t
+s8E#qs8N)ss8E#is8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#ss8E!*rr<'!rr<'!rr<&s
+s8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N(Ms+14LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ms8N)ss8N)ps8;rss8N)ss8N)rs8N)ts8N*!s8E#t
+s8E#qs8N)ss8E#is8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#ss8E!*rr<'!rr<'!rr<&s
+s8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)ss8N)ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N(Ms+14LirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7ZNis7lZos7lZps8;rts8;rts7lZos7lZos7lZks8)fns7lZos7lZms8E#rs8;rts8;rt
+s7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rt
+s8;qKs+::Mm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7ZNis7lZos7lZps8;rts8;rts7lZos7lZos7lZks8)fns7lZos7lZms8E#rs8;rts8;rt
+s7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rt
+s8;qKs+::MklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7ZNis7lZos7lZps8;rts8;rts7lZos7lZos7lZks8)fns7lZos7lZms8E#rs8;rts8;rt
+s7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZps7lZos7lZps8;rt
+s8;qKs+::MirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs82iss8E#ps8N'!s8;rrs7lZps8;rts8;rss8;p!rr<&us7lZms8)fms8)fl
+s8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNms8;p!
+rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+::Mm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs82iss8E#ps8N'!s8;rrs7lZps8;rts8;rss8;p!rr<&us7lZms8)fms8)fl
+s8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNms8;p!
+rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+::MklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs82iss8E#ps8N'!s8;rrs7lZps8;rts8;rss8;p!rr<&us7lZms8)fms8)fl
+s8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNms8;p!
+rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+::MirR%VJ,~>
+!BpJ^mHsrH!.k0ps8N)7s8N(ns8N(Ms+13bs8MBdeieN~>
+!BU8[l0\ND!.k0ps8N)7s8N(ns8N(Ms+13bs8M6`c8pI~>
+!B:&Xj6cm>!.k0ps8N)7s8N(ns8N(Ms+13bs8M$Z_`*)~>
+!BpJ^mHsrH!.k0qs8E#7s8N(ms8N(Ms+13bs8MBdeieN~>
+!BU8[l0\ND!.k0qs8E#7s8N(ms8N(Ms+13bs8M6`c8pI~>
+!B:&Xj6cm>!.k0qs8E#7s8N(ms8N(Ms+13bs8M$Z_`*)~>
+!BpJ^m=G;Cs8)f5s8)ems82kJs+13cs8MBdeieN~>
+!BU8[l%/l?s8)f5s8)ems82kJs+13cs8M6`c8pI~>
+!B:&Xj+769s8)f5s8)ems82kJs+13cs8M$Z_`*)~>
+!BpJ^m=G;Cs82l5s8)ems82kJs+13cs8MBdeieN~>
+!BU8[l%/l?s82l5s8)ems82kJs+13cs8M6`c8pI~>
+!B:&Xj+769s82l5s8)ems82kJs+13cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mBuuo!3Q;"!9=+X!4`(-!.k0$s+14(s8MBdeieN~>
+!BU8[l*^Qk!3Q;"!9=+X!4`(-!.k0$s+14(s8M6`c8pI~>
+!B:&Xj0epe!3Q;"!9=+X!4`(-!.k0$s+14(s8M$Z_`*)~>
+!BpJ^mG.a;!;c]q!9sL`!7h)L!8IMR!8RSS!6bBB!:9^c!.k0$s+14(s8MBdeieN~>
+!BU8[l.l=7!;c]q!9sL`!7h)L!8IMR!8RSS!6bBB!:9^c!.k0$s+14(s8M6`c8pI~>
+!B:&Xj4s\1!;c]q!9sL`!7h)L!8IMR!8RSS!6bBB!:9^c!.k0$s+14(s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!;c]q!9sL`!7h)L!8RSS!8IMR!6bBB!:9^c!.k0$s+14(s8MBdeieN~>
+!BU8[l.c4<!;uis!;c]q!9sL`!7h)L!8RSS!8IMR!6bBB!:9^c!.k0$s+14(s8M6`c8pI~>
+!B:&Xj4jS6!;uis!;c]q!9sL`!7h)L!8RSS!8IMR!6bBB!:9^c!.k0$s+14(s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!9*qX!7h)L!8RSS!8IMR!4Dh,!.k0$s+14(s8MBdeieN~>
+!BU8[l.c4<!;uis!9*qX!7h)L!8RSS!8IMR!4Dh,!.k0$s+14(s8M6`c8pI~>
+!B:&Xj4jS6!;uis!9*qX!7h)L!8RSS!8IMR!4Dh,!.k0$s+14(s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!;ulr!;lfr!!*&t!;lfp!!3*"q>^Eo!<<#uqu?TpqZ$Koqu?Kmr;Z]q!WN/o
+s8;rps7u`ks8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMJcC<$kl:YL!S0Da~>
+!BU8[l.c4<!;uis!;ulr!;lfr!!*&t!;lfp!!3*"q>^Eo!<<#uqu?TpqZ$Koqu?Kmr;Z]q!WN/o
+s8;rps7u`ks8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMJcC<$kl:YH!R<`V~>
+!B:&Xj4jS6!;uis!;ulr!;lfr!!*&t!;lfp!!3*"q>^Eo!<<#uqu?TpqZ$Koqu?Kmr;Z]q!WN/o
+s8;rps7u`ks8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMJcC<$kl:YB!Q-jH~>
+!BpJ^mG%XC!<<'!p\t3nqZ$QqrVlitrVlitrVultp](6nrr2rurVlitrVlitr;Q`srVlitqYpNq
+q>UEprVultq#:<orVlitqYpNqo`+pkrVlitrVlitrVlitq>UEpqYpNqr;Q`srVultrVlitrVlit
+rVlitrVults8W*!s8N'!qu6WrqYpNqrVlitq>UEpqYpNqrVultJcC<$JcFs6rp9a;4b*~>
+!BU8[l.c4?!<<'!p\t3nqZ$QqrVlitrVlitrVultp](6nrr2rurVlitrVlitr;Q`srVlitqYpNq
+q>UEprVultq#:<orVlitqYpNqo`+pkrVlitrVlitrVlitq>UEpqYpNqr;Q`srVultrVlitrVlit
+rVlitrVults8W*!s8N'!qu6WrqYpNqrVlitq>UEpqYpNqrVultJcC<$JcFs6rojI/3e.~>
+!B:&Xj4jS9!<<'!p\t3nqZ$QqrVlitrVlitrVultp](6nrr2rurVlitrVlitr;Q`srVlitqYpNq
+q>UEprVultq#:<orVlitqYpNqo`+pkrVlitrVlitrVlitq>UEpqYpNqr;Q`srVultrVlitrVlit
+rVlitrVults8W*!s8N'!qu6WrqYpNqrVlitq>UEpqYpNqrVultJcC<$JcFs6ro4$s2h1~>
+!BpJ^mG%[>!;HKn!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2ru
+rr2rurr2ruqu6Wrp&>!lq>UEpqYpNqr;Q`sJcC<$JcFs6rp9a;4b*~>
+!BU8[l.c7:!;HKn!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2ru
+rr2rurr2ruqu6Wrp&>!lq>UEpqYpNqr;Q`sJcC<$JcFs6rojI/3e.~>
+!B:&Xj4jV4!;HKn!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2ru
+rr2rurr2ruqu6Wrp&>!lq>UEpqYpNqr;Q`sJcC<$JcFs6ro4$s2h1~>
+!BpJ^mG%XC!<<'!p\t3nqYpNqr;Q`srr2ruqu6Wrp\t3nq>UEpqu6Wrrr2ruqu6Wrqu6Wrq#C<n
+pAY*mqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&prr<&urr<&srr<&srr<&urr<&rrr<&urr<&u
+rr<&urr<&rrr<&qs8)flrr<&ps8E"Ls+13$s5j:[m/bd$J,~>
+!BU8[l.c4?!<<'!p\t3nqYpNqr;Q`srr2ruqu6Wrp\t3nq>UEpqu6Wrrr2ruqu6Wrqu6Wrq#C<n
+pAY*mqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&prr<&urr<&srr<&srr<&urr<&rrr<&urr<&u
+rr<&urr<&rrr<&qs8)flrr<&ps8E"Ls+13$s5j:[klK'jJ,~>
+!B:&Xj4jS9!<<'!p\t3nqYpNqr;Q`srr2ruqu6Wrp\t3nq>UEpqu6Wrrr2ruqu6Wrqu6Wrq#C<n
+pAY*mqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&prr<&urr<&srr<&srr<&urr<&rrr<&urr<&u
+rr<&urr<&rrr<&qs8)flrr<&ps8E"Ls+13$s5j:[irR%VJ,~>
+!BpJ^mG%X@!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;6Bl!;QQo
+!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`srr2ruqu6Wrrr2rurr2ru
+rr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC<$JcFp5rp9a;4b*~>
+!BU8[l.c4<!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;6Bl!;QQo
+!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`srr2ruqu6Wrrr2rurr2ru
+rr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC<$JcFp5rojI/3e.~>
+!B:&Xj4jS6!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;6Bl!;QQo
+!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`srr2ruqu6Wrrr2rurr2ru
+rr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC<$JcFp5ro4$s2h1~>
+!BpJ^mG%X@!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u
+!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs!!%TMJcC<$kl:YL!S0Da~>
+!BU8[l.c4<!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u
+!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs!!%TMJcC<$kl:YH!R<`V~>
+!B:&Xj4jS6!;-9k!;c]q!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<2uu!;lcr!;lcr!;ZWp!;uis
+!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u
+!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs!!%TMJcC<$kl:YB!Q-jH~>
+!BpJ^mG%X@!;-9k!;c]q!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;uis!<)ot!;c]q!<)ot!<3#u
+!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&trr<&t
+rr<&urr<&urr<&rrr<&rrr<&ts8N)prr<&qs8N)trr<&rs8N(Ms+13$s7$'fm/bd$J,~>
+!BU8[l.c4<!;-9k!;c]q!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;uis!<)ot!;c]q!<)ot!<3#u
+!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&trr<&t
+rr<&urr<&urr<&rrr<&rrr<&ts8N)prr<&qs8N)trr<&rs8N(Ms+13$s7$'fklK'jJ,~>
+!B:&Xj4jS6!;-9k!;c]q!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;uis!<)ot!;c]q!<)ot!<3#u
+!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&trr<&t
+rr<&urr<&urr<&rrr<&rrr<&ts8N)prr<&qs8N)trr<&rs8N(Ms+13$s7$'firR%VJ,~>
+!BpJ^mG.a?!;ZZk!<3#t!<3#t!<)rr!!<0#!;c`l!;lfp!;c`o!;QTm!<)ou!<;utpAb'kqu?Km
+q#:?ps8;rps8;rps7u`lrr<&rs8E#ts8E#ss8;rrs8E#us8N*!s8N*!s7u`os8;ots8E#ts7u`o
+rrE-"r;c]orr@WMJcC<$nGiLT!S0Da~>
+!BU8[l.l=;!;ZZk!<3#t!<3#t!<)rr!!<0#!;c`l!;lfp!;c`o!;QTm!<)ou!<;utpAb'kqu?Km
+q#:?ps8;rps8;rps7u`lrr<&rs8E#ts8E#ss8;rrs8E#us8N*!s8N*!s7u`os8;ots8E#ts7u`o
+rrE-"r;c]orr@WMJcC<$nGiLP!R<`V~>
+!B:&Xj4s\5!;ZZk!<3#t!<3#t!<)rr!!<0#!;c`l!;lfp!;c`o!;QTm!<)ou!<;utpAb'kqu?Km
+q#:?ps8;rps8;rps7u`lrr<&rs8E#ts8E#ss8;rrs8E#us8N*!s8N*!s7u`os8;ots8E#ts7u`o
+rrE-"r;c]orr@WMJcC<$nGiLJ!Q-jH~>
+!BpJ^m=G;drr<&Urr<%Ms+13$s-Wicm/bd$J,~>
+!BU8[l%/l`rr<&Urr<%Ms+13$s-WicklK'jJ,~>
+!B:&Xj+76Zrr<&Urr<%Ms+13$s-WicirR%VJ,~>
+!BpJ^m=G;drr<&Vrr<%Ms+13$s-Ncbm/bd$J,~>
+!BU8[l%/l`rr<&Vrr<%Ms+13$s-NcbklK'jJ,~>
+!B:&Xj+76Zrr<&Vrr<%Ms+13$s-NcbirR%VJ,~>
+!BpJ^m=G;drr<&Vrr<%Ms+13$s-Ncbm/bd$J,~>
+!BU8[l%/l`rr<&Vrr<%Ms+13$s-NcbklK'jJ,~>
+!B:&Xj+76Zrr<&Vrr<%Ms+13$s-NcbirR%VJ,~>
+!BpJ^m=G;es8;rYs82kJs+13$s-Wicm/bd$J,~>
+!BU8[l%/las8;rYs82kJs+13$s-WicklK'jJ,~>
+!B:&Xj+76[s8;rYs82kJs+13$s-WicirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDf2(!:Tsf!;?Hm!7LoE!8.>O!6,!8!9F1X!6kKC!:^$d!6P9@!;?Hm!.k0$s8N&tm/bd$
+J,~>
+!BU8[l,Nc$!:Tsf!;?Hm!7LoE!8.>O!6,!8!9F1X!6kKC!:^$d!6P9@!;?Hm!.k0$s8N&tklK'j
+J,~>
+!B:&Xj2V,s!:Tsf!;?Hm!7LoE!8.>O!6,!8!9F1X!6kKC!:^$d!6P9@!;?Hm!.k0$s8N&tirR%V
+J,~>
+!BpJ^mFqU=!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfl!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s8N&tm/bd$J,~>
+!BU8[l.Z19!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfl!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s8N&tklK'jJ,~>
+!B:&Xj4aP3!!<0#!;-<h!:Tsf!;?Hm!7UuE!;QTm!!<0#!9jI_!65'8!;lfl!:p0f!6kKC!:^$d
+!;HNf!8[\T!;?Hm!.k0$s8N&tirR%VJ,~>
+!BpJ^mHsrH!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hf!:^$g!4Mq-!;HNf!8[\T!.k0$
+s7--gm/bd$J,~>
+!BU8[l0\ND!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hf!:^$g!4Mq-!;HNf!8[\T!.k0$
+s7--gklK'jJ,~>
+!B:&Xj6cm>!;ull!:g*h!:Tsf!65'=!;6Be!9jI_!65'=!;?Hf!:^$g!4Mq-!;HNf!8[\T!.k0$
+s7--girR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq>^HprVuis
+rVufrq>^Hpr;Z]qs8W#t!<<#u!<;utqu?Tprr;rt"9/?$s8E#ts82lns8)fms8N)ls8N)ts8N)u
+s8;ots8Duus8E#us8;rrs8)fqs7lZns82lms8;rrs8Duus8;rqs7u_Hs.]Pmm/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq>^HprVuis
+rVufrq>^Hpr;Z]qs8W#t!<<#u!<;utqu?Tprr;rt"9/?$s8E#ts82lns8)fms8N)ls8N)ts8N)u
+s8;ots8Duus8E#us8;rrs8)fqs7lZns82lms8;rrs8Duus8;rqs7u_Hs.]PmklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rs!!*&t!<<)t!<3#p!<<)p!;lfp!<3#t!!E6$!<<#urVu]op](0lr;ZQmq>^HprVuis
+rVufrq>^Hpr;Z]qs8W#t!<<#u!<;utqu?Tprr;rt"9/?$s8E#ts82lns8)fms8N)ls8N)ts8N)u
+s8;ots8Duus8E#us8;rrs8)fqs7lZns82lms8;rrs8Duus8;rqs7u_Hs.]PmirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZjs8N)ss8N*!
+s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uu
+r;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GUAt5[!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZjs8N)ss8N*!
+s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uu
+r;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GUAt5W!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N'!s8;rts8;rts7lZps7lZns7lWps7QHms7lZjs7lZos7lZjs8N)ss8N*!
+s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)ls8N*!rriE&!!*'!p](<orW)uu
+r;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GUAt5Q!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ls8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!
+s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)t
+s8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms.]Pmm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ls8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!
+s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)t
+s8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms.]PmklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls82los8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8Duus8Duus8E!&
+rr<'!rr<&ts8N)qs8E#ss8E#ss8N)ls8N)ts8Duus8E#ss8E#rs8N)rs8N)ts8N)us8E#ts8N*!
+s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)t
+s8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms.]PmirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ls7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!
+rr<'!rr<&ss8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;qKs.98im/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ls7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!
+rr<'!rr<&ss8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;qKs.98iklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ks7u`ps8N)ts8N)us8;rns8N)qs8N)rs8N'-rr<'!rr<'!rr<'!
+s8;rks8N)rs8N)ts8N)ls7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!s8N)rs8N'+rr<'!
+rr<'!rr<&ss8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;qKs.98iirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ls7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!
+rr<&ss8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs.TJlm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ls7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!
+rr<&ss8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs.TJlklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)hs82lrs8N*!s8N)ss8)fos8N)qs7ZL#rr<'!rr<'!rr<&us8)fl
+s8N)rs8N)ts8N)ls7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)rs8N'+rr<'!rr<'!
+rr<&ss8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs.TJlirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ls8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+
+rr<'!rr<'!rr<&ss8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs.]Pmm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ls8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+
+rr<'!rr<'!rr<&ss8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs.]PmklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)us8N'#rr<&ps82lqs8N)qs7ZL#rr<'!rr<'!
+rr<&ss82lns8N)rs8N)ts8N)ls8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)rs8N'+
+rr<'!rr<'!rr<&ss8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs.]PmirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ls8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!
+s8E#ss8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms.]Pmm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ls8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!
+s8E#ss8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms.]PmklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8;rss8N)ts8;rqs8N)ts8N)ts8N)ts8N'!s8E#o
+s8N*!s8N*!s8N*!s8N)ts8N)qs8E#ss8E#ss8N)ls8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!
+s8E#ss8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms.]PmirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks8)fns7lZos7lZm
+s8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZp
+s7lZos7lZps8;rts8;rts7lYGs.]Pmm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks8)fns7lZos7lZm
+s8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZp
+s7lZos7lZps8;rts8;rts7lYGs.]PmklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZjs7lZms8E#qs7lZns7lZps7lWps8;ots8Duus8Duus7lZjs7lZos7lZks8)fns7lZos7lZm
+s8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNns7lZks7ZNns7lZos7cQos7ZNms7lZp
+s7lZos7lZps8;rts8;rts7lYGs.]PmirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNm
+s8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_Hs.TJlm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNm
+s8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_Hs.TJlklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZjs8N'!s8;rps8N)qs7u`ms82los8)crs8;ots8Duus8Duus7u`hs8;rqs7lZk
+s8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82iss8E#us7lZks7ZNm
+s8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_Hs.TJlirR%VJ,~>
+!BpJ^mHsrH!.k1Es8N(MrrW3#!2BMn!.k0$s4./Km/bd$J,~>
+!BU8[l0\ND!.k1Es8N(MrrW3#!2BMn!.k0$s4./KklK'jJ,~>
+!B:&Xj6cm>!.k1Es8N(MrrW3#!2BMn!.k0$s4./KirR%VJ,~>
+!BpJ^mHsrH!.k1Fs8N(MrrW3#!29Gm!.k0$s4./Km/bd$J,~>
+!BU8[l0\ND!.k1Fs8N(MrrW3#!29Gm!.k0$s4./KklK'jJ,~>
+!B:&Xj6cm>!.k1Fs8N(MrrW3#!29Gm!.k0$s4./KirR%VJ,~>
+!BpJ^m=G;ks8)eLs8)ems82kJs+14$s8MBdeieN~>
+!BU8[l%/lgs8)eLs8)ems82kJs+14$s8M6`c8pI~>
+!B:&Xj+76as8)eLs8)ems82kJs+14$s8M$Z_`*)~>
+!BpJ^m=G;ks8)eLs8)ems82kJs+14$s8MBdeieN~>
+!BU8[l%/lgs8)eLs8)ems82kJs+14$s8M6`c8pI~>
+!B:&Xj+76as8)eLs8)ems82kJs+14$s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],(!.k1Ls8;rXs8;r-s8;qKs+13$s82iqm/bd$J,~>
+!BU8[l,E]$!.k1Ls8;rXs8;r-s8;qKs+13$s82iqklK'jJ,~>
+!B:&Xj2M&s!.k1Ls8;rXs8;r-s8;qKs+13$s82iqirR%VJ,~>
+!BpJ^mFhO=!!3*"n,E@f]`.s3`W#o<h#@?SbPqPBm/I%ca8Z,>pAY*mJcC<$_Z0W&!S0Da~>
+!BU8[l.Q+9!!3*"n,E@f]`.s3`W#o<h#@?SbPqPBm/I%ca8Z,>pAY*mJcC<$_Z0W"!R<`V~>
+!B:&Xj4XJ3!!3*"n,E@f]`.s3`W#o<h#@?SbPqPBm/I%ca8Z,>pAY*mJcC<$_Z0Vq!Q-jH~>
+!BpJ^mFqR?!<3#u!:Tpf!5/=3!65$=!8IMR!6bBB!:9^c!6>*>!;?Em!.k0$s2+g8m/bd$J,~>
+!BU8[l.Z.;!<3#u!:Tpf!5/=3!65$=!8IMR!6bBB!:9^c!6>*>!;?Em!.k0$s2+g8klK'jJ,~>
+!B:&Xj4aM5!<3#u!:Tpf!5/=3!65$=!8IMR!6bBB!:9^c!6>*>!;?Em!.k0$s2+g8irR%VJ,~>
+!BpJ^mG%X@!;uis!:Tpf!5/=3!65$=!8IMR!4Dh,!6>*>!.k0$s0ht,m/bd$J,~>
+!BU8[l.c4<!;uis!:Tpf!5/=3!65$=!8IMR!4Dh,!6>*>!.k0$s0ht,klK'jJ,~>
+!B:&Xj4jS6!;uis!:Tpf!5/=3!65$=!8IMR!4Dh,!6>*>!.k0$s0ht,irR%VJ,~>
+!BpJ^mG%X@!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g?krr<'!r;c`pr;cWm!!)orrW)rtrW)uurr<'!r;c`p
+r;cfrrr<9'!!*'!!!)rsrW)cor;cWm!!)Zkr;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)co
+r;ccqrr<'!r;c`pr;Zlu!.k0$s5s@\m/bd$J,~>
+!BU8[l.c4<!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g?krr<'!r;c`pr;cWm!!)orrW)rtrW)uurr<'!r;c`p
+r;cfrrr<9'!!*'!!!)rsrW)cor;cWm!!)Zkr;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)co
+r;ccqrr<'!r;c`pr;Zlu!.k0$s5s@\klK'jJ,~>
+!B:&Xj4jS6!;?Hk!;QQo!;lfq!<3#t!<)rr!;6Bj!!3*"rr;rtrr;rtrVufr!WN/us7u`ns8;rr
+s8N''rr<'!rr<&ss8;ourrDfnr;c`pq>g?krr<'!r;c`pr;cWm!!)orrW)rtrW)uurr<'!r;c`p
+r;cfrrr<9'!!*'!!!)rsrW)cor;cWm!!)Zkr;c]or;['%!!*'!!!)utrrDusr;c`pq>gHnrW)co
+r;ccqrr<'!r;c`pr;Zlu!.k0$s5s@\irR%VJ,~>
+!BpJ^mFqR?!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c]q!;uis!<)rt!<)ot!<)ot!<)ot!<)rt!<<*!!<<'!!;lcr!;c]q!<)ot!;ZWp!;6?l
+!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt
+!.k0$s5s@\m/bd$J,~>
+!BU8[l.Z.;!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c]q!;uis!<)rt!<)ot!<)ot!<)ot!<)rt!<<*!!<<'!!;lcr!;c]q!<)ot!;ZWp!;6?l
+!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt
+!.k0$s5s@\klK'jJ,~>
+!B:&Xj4aM5!;QQo!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;HKn!<)rt!<)ot!;uis!<)ot!<)rt
+!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<2uu!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c]q!;uis!<)rt!<)ot!<)ot!<)ot!<)rt!<<*!!<<'!!;lcr!;c]q!<)ot!;ZWp!;6?l
+!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt
+!.k0$s5s@\irR%VJ,~>
+!BpJ^mFhO<!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2rurr2rurr2ruqu6Wrp&>!lq>UEppAY*mqu6Wr
+rr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcC<$k5YGJ
+!S0Da~>
+!BU8[l.Q+8!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2rurr2rurr2ruqu6Wrp&>!lq>UEppAY*mqu6Wr
+rr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcC<$k5YGF
+!R<`V~>
+!B:&Xj4XJ2!<)ot!;lcr!;c]q!;ZWp!<2uu!<)ot!;lcr!;QQo!;uis!<)ot!;uis!<)ot!;uis
+!;lcr!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`srVlitr;Q`srr2ruqu6Wrrr2rurr2rurr2ruqu6Wrp&>!lq>UEppAY*mqu6Wr
+rr2ruqu6WrrVlitr;Q`sq#:<oqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcC<$k5YG@
+!Q-jH~>
+!BpJ^mFD4:!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6WrqZ$Emq>UEppAapgrr2ruqu6WrrVlitr;Q`srVu`pqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`sr;Z`rJcC<$j8],G!S0Da~>
+!BU8[l.,e6!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6WrqZ$Emq>UEppAapgrr2ruqu6WrrVlitr;Q`srVu`pqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`sr;Z`rJcC<$j8],C!R<`V~>
+!B:&Xj44/0!<2uu!;lcr!;c]q!;ZWp!<2uu!<)rn!;HNm!;ZWp!<2uu!;lfq!;QQo!;c`k!<2uu
+!<2uu!<2uu!<)rs!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6WrqZ$Emq>UEppAapgrr2ruqu6WrrVlitr;Q`srVu`pqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`sr;Z`rJcC<$j8],=!Q-jH~>
+!BpJ^mF;.<!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Zk!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu
+!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!.k0$s5j:[m/bd$J,~>
+!BU8[l.#_8!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Zk!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu
+!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!.k0$s5j:[klK'jJ,~>
+!B:&Xj4+)2!<<'!qu6WrqYpNqq#:BqrrDus!!)EdrrDrr!!*#u!!)forrDoq!!)lq!!)cn!!*#u
+!!*#u!!)lqrrDio!!)or!!)or!!)Zk!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu
+!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!.k0$s5j:[irR%VJ,~>
+!BpJ^mG%X@!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&orrN3#
+!;lcr!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k0$s5s@\m/bd$J,~>
+!BU8[l.c4<!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&orrN3#
+!;lcr!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k0$s5s@\klK'jJ,~>
+!B:&Xj4jS6!;lcu!<<'!qu6WrqYpNqq#:BqrrDus!!)Qh!!)rs!!)or!W`6#qu6Wrr;Q`squ6Wr
+qYpNqp\t3nrr2rurr2rurr2rur;Q`sq>UEpqu6Wrqu6Wro`"mkqu6`us8N)rrr<&qrr<&orrN3#
+!;lcr!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot
+!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!.k0$s5s@\irR%VJ,~>
+!BpJ^mG%[@!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&ks8N)trr<&trr<&t
+rr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;6?l
+!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt
+!<)ot!;lfr!.k0$s6fpdm/bd$J,~>
+!BU8[l.c7<!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&ks8N)trr<&trr<&t
+rr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;6?l
+!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt
+!<)ot!;lfr!.k0$s6fpdklK'jJ,~>
+!B:&Xj4jV6!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;QTo!<)ot!;lct!<3&rs8N)trr<&r
+rr<&trr<&urr<&ts8N)urr<&urr<&urr<&us8N)trr<&orr<&trr<&qrr<&ks8N)trr<&trr<&t
+rr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;6?l
+!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt
+!<)ot!;lfr!.k0$s6fpdirR%VJ,~>
+!BpJ^mG%XA!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QQp!<;utqu?Tpqu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!
+s8W*!s8VoqrVufr!<<#urr;fpp](0lqZ$Ko!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rq
+s8E#ts8E#trrE-"r;c]orr@WMJcG0<rp9a;4b*~>
+!BU8[l.c4=!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QQp!<;utqu?Tpqu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!
+s8W*!s8VoqrVufr!<<#urr;fpp](0lqZ$Ko!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rq
+s8E#ts8E#trrE-"r;c]orr@WMJcG0<rojI/3e.~>
+!B:&Xj4jS7!<;utqu?Tpqu?KmqYpNqq>^BnpAY-ns8;rnrr<&qrrE-"r;cZnr;ccqr;cfrrW)uu
+rrE*!rrE*!!<E/u!;?Hk!;lfm!;QQp!<;utqu?Tpqu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!
+s8W*!s8VoqrVufr!<<#urr;fpp](0lqZ$Ko!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rq
+s8E#ts8E#trrE-"r;c]orr@WMJcG0<ro4$s2h1~>
+!BpJ^m?.DK!2KPo!8d_U!2BJn!.k0$s-`odm/bd$J,~>
+!BU8[l&kuG!2KPo!8d_U!2BJn!.k0$s-`odklK'jJ,~>
+!B:&Xj,s?A!2KPo!8d_U!2BJn!.k0$s-`odirR%VJ,~>
+!BpJ^m?7JL!2BJn!8meV!29Dm!.k0$s-`odm/bd$J,~>
+!BU8[l&u&H!2BJn!8meV!29Dm!.k0$s-`odklK'jJ,~>
+!B:&Xj-'EB!2BJn!8meV!29Dm!.k0$s-`odirR%VJ,~>
+!BpJ^m?7JL!2BJn!8meV!29Dm!.k0$s-`odm/bd$J,~>
+!BU8[l&u&H!2BJn!8meV!29Dm!.k0$s-`odklK'jJ,~>
+!B:&Xj-'EB!2BJn!8meV!29Dm!.k0$s-`odirR%VJ,~>
+!BpJ^m?R_L!2TYn!9F1X!2TYn!.k0$s-iuem/bd$J,~>
+!BU8[l';;H!2TYn!9F1X!2TYn!.k0$s-iueklK'jJ,~>
+!B:&Xj-BZB!2TYn!9F1X!2TYn!.k0$s-iueirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDf2(!:Tsf!;?Hm!7LoE!:9ac!;QTk!;ulo!7LoI!;?Hm!:^$d!6P9@!;?Hm!.k0$s/5nr
+m/bd$J,~>
+!BU8[l,Nc$!:Tsf!;?Hm!7LoE!:9ac!;QTk!;ulo!7LoI!;?Hm!:^$d!6P9@!;?Hm!.k0$s/5nr
+klK'jJ,~>
+!B:&Xj2V,s!:Tsf!;?Hm!7LoE!:9ac!;QTk!;ulo!7LoI!;?Hm!:^$d!6P9@!;?Hm!.k0$s/5nr
+irR%VJ,~>
+!BpJ^mFqU=!!<0#!;-<h!:Tsf!;?Hm!7UuE!;lfm!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf
+!8[\T!;?Hm!.k0$s/5nrm/bd$J,~>
+!BU8[l.Z19!!<0#!;-<h!:Tsf!;?Hm!7UuE!;lfm!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf
+!8[\T!;?Hm!.k0$s/5nrklK'jJ,~>
+!B:&Xj4aP3!!<0#!;-<h!:Tsf!;?Hm!7UuE!;lfm!;ZZp!;ZZk!<)ro!7LoI!;?Hm!:^$d!;HNf
+!8[\T!;?Hm!.k0$s/5nrirR%VJ,~>
+!BpJ^mHsrH!;ull!:g*h!:Tsf!65'=!;?Hf!:g*h!;QTo!6tQD!9!nW!;HNf!8[\T!.k0$s-iue
+m/bd$J,~>
+!BU8[l0\ND!;ull!:g*h!:Tsf!65'=!;?Hf!:g*h!;QTo!6tQD!9!nW!;HNf!8[\T!.k0$s-iue
+klK'jJ,~>
+!B:&Xj6cm>!;ull!:g*h!:Tsf!65'=!;?Hf!:g*h!;QTo!6tQD!9!nW!;HNf!8[\T!.k0$s-iue
+irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq!;c`m!;c`q
+!;6Bl!<)rt!<3#s!!*&u!!*&u!<<)t!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s3(HA
+m/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq!;c`m!;c`q
+!;6Bl!<)rt!<3#s!!*&u!!*&u!<<)t!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s3(HA
+klK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;ZZp!;ulr!<<)t!<<)p!<)rq!;ZZn!<)rs!!*&t!;?Hk!;ulm
+!;ZZp!<)rt!<3#r!;lfl!<3#o!;ulq!<)rr!<<)u!;ulq!<)rs!!*&t!<3#o!<)rq!;c`m!;c`q
+!;6Bl!<)rt!<3#s!!*&u!!*&u!<<)t!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s3(HA
+irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZns82los7lZls8N)l
+s8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GJcEpnrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZns82los7lZls8N)l
+s8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GJcEpnrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZls8N)ss8E#us8;rts7lZns82los7lZps7cTi
+s7lZos7lZjs8N)ss8N*!s82los7lZos7lZos7lZps7ZNns7lZps7cTos7lZns82los7lZls8N)l
+s8N*!rriE&!!*'!p](<orW)uur;cisq#LHpq#LBnquHWoq#LHpp]1<nq#H!GJcEpnro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13ns8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13ns8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#rs8N)rs8N)ts8N)ts8N)ms8N)ss8E#ss8E#u
+s8E#ts8N)qs8E#ss8E#ss8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8E#ss8E#ts8;rts8N'!s8E#s
+s8E#us8E#ts8N)ts8N)ms8N)rs8N)ts8N)rs8N)ls82lqs8E#ts8E#ts8N)ts8N)us8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13ns8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)us8;qKs+13js8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)us8;qKs+13js8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs8N)rs8N)us8E#qs8N)rs8N*!
+s8N)ts8N)ts8N)ms8N)ls8N)rs8N)ls82lqs8N)ss8N)us8N)ts8N)os8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)us8;qKs+13js8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs+13ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs+13ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iurr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)ts8N)t
+s8N)ms8N)rs7lZls8N)ls8N*!rr<&ts8N)ss8N)us8N)ts8N)us7lZns8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)ts8)eIs+13ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)t
+s8N)ts8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13ns8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)t
+s8N)ts8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13ns8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'#rr<&rs8N)ss8N)rs8N)ts8N)ts8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)qs8N)rs8N)ts8N)ls8N)ss8N)ss8N)ps8N)os8N)rs7ZNms8N)qs7ZNns8N)t
+s8N)ts8N)ms8N)ss7cTks8N)ls8N)ts8N'#rr<&ss8N)us8N)ts8N*!s7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13ns8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#n
+s8N)ts8N)ts8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)s
+s8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13ns8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#n
+s8N)ts8N)ts8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)s
+s8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13ns8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ss8E#rs8N)rs8N)us8E#ss8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)qs8E#ss8E#ss8N)ls8N)ts8N)rs8N)ps8N)os8N)rs8E#ms8N)qs8E#n
+s8N)ts8N)ts8N)ts8N)ss8N)ss8N)ss8N)rs8N)ls8N)ts8N'!s8E#ts8E#ts8N)us8E#us8N)s
+s8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13ns8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZps7lZps7ZNns7lZks7ZNn
+s7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+13ns8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZps7lZps7ZNns7lZks7ZNn
+s7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+13ns8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTns7lZps7lZos7lZps8;rts8;ros7lZo
+s7lZks7cTns7lZos7lZos7lZos7lZps7lZns7lZps8;rts8;rss7lZps7lZps7ZNns7lZks7ZNn
+s7lZos7cQos7ZNms7lZps7lZos7lZps8;rts8;rts7lYGs+13ns8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZks7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lqs7lZos82is
+s8E#us7lZks7ZNms8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_H
+s+13ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZks7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lqs7lZos82is
+s8E#us7lZks7ZNms8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_H
+s+13ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8;rqs7lZns8;ots8E#ss82lqs7lZms8;rrs8;rt
+s8;rms8;rqs7lZks7u`ns7lZos7lZos7lZms8)frs7lZls8)frs8;rts8;rrs82lqs7lZos82is
+s8E#us7lZks7ZNms8;p!rr<&ts8;ots8E#us82iss8E#ss82lqs7lZms8;rrs8;rts8;rts7u_H
+s+13ms8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s6BXa!.k0$s+14Ls8MBdeieN~>
+!BU8[l0\ND!.k0$s6BXa!.k0$s+14Ls8M6`c8pI~>
+!B:&Xj6cm>!.k0$s6BXa!.k0$s+14Ls8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s6BXa!.k0$s+14Ls8MBdeieN~>
+!BU8[l0\ND!.k0$s6BXa!.k0$s+14Ls8M6`c8pI~>
+!B:&Xj6cm>!.k0$s6BXa!.k0$s+14Ls8M$Z_`*)~>
+!BpJ^m=G:gs31N@!.k0$s+14Ms8MBdeieN~>
+!BU8[l%/kcs31N@!.k0$s+14Ms8M6`c8pI~>
+!B:&Xj+75]s31N@!.k0$s+14Ms8M$Z_`*)~>
+!BpJ^m=G:gs31N@!.k0$s+14Ms8MBdeieN~>
+!BU8[l%/kcs31N@!.k0$s+14Ms8M6`c8pI~>
+!B:&Xj+75]s31N@!.k0$s+14Ms8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEkn3!7_&K!;-<i!58F4!1X#e!2TYn!;-<k!:Kmc!;c`o!3uS&!.k0ss8MBdeieN~>
+!BU8[l-TJ/!7_&K!;-<i!58F4!1X#e!2TYn!;-<k!:Kmc!;c`o!3uS&!.k0ss8M6`c8pI~>
+!B:&Xj3[i)!7_&K!;-<i!58F4!1X#e!2TYn!;-<k!:Kmc!;c`o!3uS&!.k0ss8M$Z_`*)~>
+!BpJ^mFhO<!!3*"qu6Wre,KCJp&>!l\GlO/eGfLK`r?#=mJd.dpAY*m`r?#=n,E@fqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mQiI'P!S0Da~>
+!BU8[l.Q+8!!3*"qu6Wre,KCJp&>!l\GlO/eGfLK`r?#=mJd.dpAY*m`r?#=n,E@fqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mQiI'L!R<`V~>
+!B:&Xj4XJ2!!3*"qu6Wre,KCJp&>!l\GlO/eGfLK`r?#=mJd.dpAY*m`r?#=n,E@fqYpNqp\t3n
+p\t3nbl7YCpAY*mm/I%ca8Z,>pAY*mQiI'F!Q-jH~>
+!BpJ^mG%[@!<)rt!;lcr!7UrJ!;?Em!4Vt.!7_#K!65$=!:Bdd!;?Em!6>*>!:Kje!;c]q!;QQo
+!;HKn!6bBB!;?Em!:9^c!6>*>!;?Em!13`bm/bd$J,~>
+!BU8[l.c7<!<)rt!;lcr!7UrJ!;?Em!4Vt.!7_#K!65$=!:Bdd!;?Em!6>*>!:Kje!;c]q!;QQo
+!;HKn!6bBB!;?Em!:9^c!6>*>!;?Em!13`bklK'jJ,~>
+!B:&Xj4jV6!<)rt!;lcr!7UrJ!;?Em!4Vt.!7_#K!65$=!:Bdd!;?Em!6>*>!:Kje!;c]q!;QQo
+!;HKn!6bBB!;?Em!:9^c!6>*>!;?Em!13`birR%VJ,~>
+!BpJ^mG%X@!;lcr!;lcr!7UrJ!;?Em!4Vt.!1<cd!:Bdd!5&72!:Kje!:^!g!;HKn!6bBB!9!kW
+!6>*>!/pmVm/bd$J,~>
+!BU8[l.c4<!;lcr!;lcr!7UrJ!;?Em!4Vt.!1<cd!:Bdd!5&72!:Kje!:^!g!;HKn!6bBB!9!kW
+!6>*>!/pmVklK'jJ,~>
+!B:&Xj4jS6!;lcr!;lcr!7UrJ!;?Em!4Vt.!1<cd!:Bdd!5&72!:Kje!:^!g!;HKn!6bBB!9!kW
+!6>*>!/pmVirR%VJ,~>
+!BpJ^mG.^A!;$3j!;ZZn!;c`o!!3*"r;Z]qqZ$Ko!WN/ps7u`ns8;rqs8Duus8E#ts8N''rr<'!
+rr<&ns8;rqs8N'!s8;rps8;ourrDfnr;Zlu!;ulq!;ulr!!*&u!;lfq!;ZZn!;c`o!!3*"p](0l
+!WN/ts8;rmrr<&rs8N)ts8N)ts7u`ns8E#os8;rqs8N'!s8;rps8;ourrDfnr;c`pq>g9ir;Zlu
+!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i!;c`o
+!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"]Dqlt!S0Da~>
+!BU8[l.l:=!;$3j!;ZZn!;c`o!!3*"r;Z]qqZ$Ko!WN/ps7u`ns8;rqs8Duus8E#ts8N''rr<'!
+rr<&ns8;rqs8N'!s8;rps8;ourrDfnr;Zlu!;ulq!;ulr!!*&u!;lfq!;ZZn!;c`o!!3*"p](0l
+!WN/ts8;rmrr<&rs8N)ts8N)ts7u`ns8E#os8;rqs8N'!s8;rps8;ourrDfnr;c`pq>g9ir;Zlu
+!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i!;c`o
+!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"]Dqlp!R<`V~>
+!B:&Xj4sY7!;$3j!;ZZn!;c`o!!3*"r;Z]qqZ$Ko!WN/ps7u`ns8;rqs8Duus8E#ts8N''rr<'!
+rr<&ns8;rqs8N'!s8;rps8;ourrDfnr;Zlu!;ulq!;ulr!!*&u!;lfq!;ZZn!;c`o!!3*"p](0l
+!WN/ts8;rmrr<&rs8N)ts8N)ts7u`ns8E#os8;rqs8N'!s8;rps8;ourrDfnr;c`pq>g9ir;Zlu
+!;ulr!;c`l!<)ro!;ulq!;ulr!!*&u!;lfp!;uls!!*&t!;uln!;ulr!;ZZn!;QQo!;-<i!;c`o
+!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"]Dqlj!Q-jH~>
+!BpJ^mG.^A!;$3j!;c]q!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;lfr
+!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)ot!;lfr!<2uu!<)ot!<)ot!;uls!<)ot!;lcr!;?Em!;c]q!<)ot!;ZWp!;6?l!<)ot!;uis
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!5&:1m/bd$
+J,~>
+!BU8[l.l:=!;$3j!;c]q!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;lfr
+!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)ot!;lfr!<2uu!<)ot!<)ot!;uls!<)ot!;lcr!;?Em!;c]q!<)ot!;ZWp!;6?l!<)ot!;uis
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!5&:1klK'j
+J,~>
+!B:&Xj4sY7!;$3j!;c]q!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;lfr
+!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)ot!;lfr!<2uu!<)ot!<)ot!;uls!<)ot!;lcr!;?Em!;c]q!<)ot!;ZWp!;6?l!<)ot!;uis
+!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!5&:1irR%V
+J,~>
+!BpJ^mG.^A!;$3j!;lcr!;lcr!<)ot!;uis!<2uu!;lcr!<2uu!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;-9k!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;uis!;6?l!;lcr
+!;lcr!<)ot!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot
+!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;lcr!;uis!;ZWp
+!;lcr!<)ot!;uis!;lcr!;?Em!;6?l!;ZWp!;?Em!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q
+!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5&:1m/bd$J,~>
+!BU8[l.l:=!;$3j!;lcr!;lcr!<)ot!;uis!<2uu!;lcr!<2uu!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;-9k!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;uis!;6?l!;lcr
+!;lcr!<)ot!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot
+!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;lcr!;uis!;ZWp
+!;lcr!<)ot!;uis!;lcr!;?Em!;6?l!;ZWp!;?Em!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q
+!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5&:1klK'jJ,~>
+!B:&Xj4sY7!;$3j!;lcr!;lcr!<)ot!;uis!<2uu!;lcr!<2uu!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;-9k!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;uis!;6?l!;lcr
+!;lcr!<)ot!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot
+!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;lcr!;uis!;ZWp
+!;lcr!<)ot!;uis!;lcr!;?Em!;6?l!;ZWp!;?Em!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q
+!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!5&:1irR%VJ,~>
+!BpJ^mG.^A!;$3j!;lcr!;lcr!;ulr!;lfl!<2uu!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;ZZl!;uis!;uis!<2uu!;lcr!;HNm!;lfl!;uis!;6?l!;lfl!;ulr!;-<j!;lcr!;lcr
+!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;6?l!;lcr
+!;c]q!;QQo!;HKn!;c`k!;uis!;ZZj!<)ot!;uis!;lcr!;?Em!;c`m!;ZWp!;?Hg!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!4`(.m/bd$J,~>
+!BU8[l.l:=!;$3j!;lcr!;lcr!;ulr!;lfl!<2uu!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;ZZl!;uis!;uis!<2uu!;lcr!;HNm!;lfl!;uis!;6?l!;lfl!;ulr!;-<j!;lcr!;lcr
+!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;6?l!;lcr
+!;c]q!;QQo!;HKn!;c`k!;uis!;ZZj!<)ot!;uis!;lcr!;?Em!;c`m!;ZWp!;?Hg!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!4`(.klK'jJ,~>
+!B:&Xj4sY7!;$3j!;lcr!;lcr!;ulr!;lfl!<2uu!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;ZZl!;uis!;uis!<2uu!;lcr!;HNm!;lfl!;uis!;6?l!;lfl!;ulr!;-<j!;lcr!;lcr
+!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!;?Em!;lcr!;lcr!;6?l!;lcr
+!;c]q!;QQo!;HKn!;c`k!;uis!;ZZj!<)ot!;uis!;lcr!;?Em!;c`m!;ZWp!;?Hg!<2uu!;lcr
+!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!4`(.irR%VJ,~>
+!BpJ^mG.^A!;$3j!;lcr!;lcr!;ZZp!<)ot!;HKn!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;-<k!<)ot!;6?l!;6?l!;lcr!:p0i!;$6j!<)ot
+!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l
+!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em
+!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!4r40m/bd$
+J,~>
+!BU8[l.l:=!;$3j!;lcr!;lcr!;ZZp!<)ot!;HKn!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;-<k!<)ot!;6?l!;6?l!;lcr!:p0i!;$6j!<)ot
+!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l
+!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em
+!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!4r40klK'j
+J,~>
+!B:&Xj4sY7!;$3j!;lcr!;lcr!;ZZp!<)ot!;HKn!;lcr!;?Em!;c]q!;lcr!;uis!;ZWp!<2uu
+!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;-<k!<)ot!;6?l!;6?l!;lcr!:p0i!;$6j!<)ot
+!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l
+!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em
+!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!4r40irR%V
+J,~>
+!BpJ^mG%X@!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!<2uu!;HKn!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;6?l!;6?l!;lcr
+!;?Em!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis
+!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis
+!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!5&:1m/bd$J,~>
+!BU8[l.c4<!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!<2uu!;HKn!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;6?l!;6?l!;lcr
+!;?Em!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis
+!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis
+!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!5&:1klK'jJ,~>
+!B:&Xj4jS6!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!<2uu!;HKn!;lcr!;?Em!;c]q!;lcr!;uis
+!;ZWp!<2uu!<2uu!;c]q!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;6?l!;6?l!;lcr
+!;?Em!;uis!;QQo!;uis!<2uu!;lcr!;c]q!;c]q!;uis!;lcr!;?Em!;lcr!;lcr!<)ot!;uis
+!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l!;lcr!;c]q!;QQo!;HKn!;c]q!;6?l!;ZWp!;?Em!;uis
+!;lcr!;?Em!;lcr!;uis!;ZWp!;?Em!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr
+!;lcr!<)ot!;uis!<)ot!;uis!5&:1irR%VJ,~>
+!BpJ^mG%[@!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)rt!;?Em!;ZWp!<)ot
+!;lcr!;ZWp!<2uu!<2uu!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;6?l!;c]q!<)rt!<)rt!<)ot!;QTo!<)ot!<)ot!<)ot!;ZWp!;c]q!<)rt!;lcr!<)ot!;lcr
+!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)rt!;uis!;QQo!<)rt!<)ot!;uis!;lcr!<)ot!;lcr!;lcr!<)rt!;ZWp!;6?l!<)rt!<)ot
+!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;lfr
+!5nj9m/bd$J,~>
+!BU8[l.c7<!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)rt!;?Em!;ZWp!<)ot
+!;lcr!;ZWp!<2uu!<2uu!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;6?l!;c]q!<)rt!<)rt!<)ot!;QTo!<)ot!<)ot!<)ot!;ZWp!;c]q!<)rt!;lcr!<)ot!;lcr
+!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)rt!;uis!;QQo!<)rt!<)ot!;uis!;lcr!<)ot!;lcr!;lcr!<)rt!;ZWp!;6?l!<)rt!<)ot
+!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;lfr
+!5nj9klK'jJ,~>
+!B:&Xj4jV6!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)rt!;?Em!;ZWp!<)ot
+!;lcr!;ZWp!<2uu!<2uu!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;6?l!;c]q!<)rt!<)rt!<)ot!;QTo!<)ot!<)ot!<)ot!;ZWp!;c]q!<)rt!;lcr!<)ot!;lcr
+!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;QQo!<)ot!;c]q!;-9k!<)rt!;c]q!;QQo!;HKn!;ZWp
+!<)rt!;uis!;QQo!<)rt!<)ot!;uis!;lcr!<)ot!;lcr!;lcr!<)rt!;ZWp!;6?l!<)rt!<)ot
+!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<)rt!<)ot!;lfr
+!5nj9irR%VJ,~>
+!BpJ^mFhO<!;uln!;ulq!;lcs!<;utqu?TpqZ$Ko!ri6#q>^9kr;Z]qr;ZTnrr;rts8W*!s8W*!
+qZ$Ko!<<#us8W&urr;rtrVufr!ri6#q>UHqs8;rps8;rqs7u`ns7u`ns8;rprrE-"r;cTl!<E/u
+!;lfp!;lfm!;ulq!!<0#!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utpAb'kqu?Kmp](0l!ri6#
+rr;fprVu]orVu]or;Z]qr;ZTnqu?Tpr;Z`rrr;rtqu?TprVu]orVufr!<<#urr;fpp](0lqZ$Ko
+!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrBt:rp9a;4b*~>
+!BU8[l.Q+8!;uln!;ulq!;lcs!<;utqu?TpqZ$Ko!ri6#q>^9kr;Z]qr;ZTnrr;rts8W*!s8W*!
+qZ$Ko!<<#us8W&urr;rtrVufr!ri6#q>UHqs8;rps8;rqs7u`ns7u`ns8;rprrE-"r;cTl!<E/u
+!;lfp!;lfm!;ulq!!<0#!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utpAb'kqu?Kmp](0l!ri6#
+rr;fprVu]orVu]or;Z]qr;ZTnqu?Tpr;Z`rrr;rtqu?TprVu]orVufr!<<#urr;fpp](0lqZ$Ko
+!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrBt:rojI/3e.~>
+!B:&Xj4XJ2!;uln!;ulq!;lcs!<;utqu?TpqZ$Ko!ri6#q>^9kr;Z]qr;ZTnrr;rts8W*!s8W*!
+qZ$Ko!<<#us8W&urr;rtrVufr!ri6#q>UHqs8;rps8;rqs7u`ns7u`ns8;rprrE-"r;cTl!<E/u
+!;lfp!;lfm!;ulq!!<0#!;lfp!<)ro!;ulq!;ulr!<3#t!<3!!!<;utpAb'kqu?Kmp](0l!ri6#
+rr;fprVu]orVu]or;Z]qr;ZTnqu?Tpr;Z`rrr;rtqu?TprVu]orVufr!<<#urr;fpp](0lqZ$Ko
+!WN/ts8;p!rr<&us8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrBt:ro4$s2h1~>
+!BpJ^m=G:gs+13$s4RDP!.k1<s8MBdeieN~>
+!BU8[l%/kcs+13$s4RDP!.k1<s8M6`c8pI~>
+!B:&Xj+75]s+13$s4RDP!.k1<s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s4RDP!.k1<s8MBdeieN~>
+!BU8[l%/kcs+13$s4RDP!.k1<s8M6`c8pI~>
+!B:&Xj+75]s+13$s4RDP!.k1<s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s4RDP!.k1<s8MBdeieN~>
+!BU8[l%/kcs+13$s4RDP!.k1<s8M6`c8pI~>
+!B:&Xj+75]s+13$s4RDP!.k1<s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s4dSP!.k1=s8MBdeieN~>
+!BU8[l%/kcs+13$s4dSP!.k1=s8M6`c8pI~>
+!B:&Xj+75]s+13$s4dSP!.k1=s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71functionpage.eps b/books/ps/v71functionpage.eps
new file mode 100644
index 0000000..b65e5f3
--- /dev/null
+++ b/books/ps/v71functionpage.eps
@@ -0,0 +1,3077 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: functionpage.eps
+%%CreationDate: Sat Jun 21 10:52:27 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       173906 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls+13$s0r"3
+!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBd
+eieN~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls+13$s0r"3
+!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`
+c8pI~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls+13$s0r"3
+!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z
+_`*)~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGQG
+q#K.K!!)`m!!(FH!!)<ar;c3a!!%TMhu<ZVrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGQG
+q#K.K!!)`m!!(FH!!)<ar;c3a!!%TMhu<ZVrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGQG
+q#K.K!!)`m!!(FH!!)<ar;c3a!!%TMhu<ZVrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&Qrr<&mrr<&Hrr<&^rr<&crr<%Ms5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&Qrr<&mrr<&Hrr<&^rr<&crr<%Ms5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&Qrr<&mrr<&Hrr<&^rr<&crr<%Ms5*bZ!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!!)rs!!(aQ!!')"!W`6#JcEmm!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!!)rs!!(aQ!!')"!W`6#JcEmm!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!!)rs!!(aQ!!')"!W`6#JcEmm!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&us8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!;HNm
+!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms7cNs!<3'!!<;rs!<;rs
+-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!
+rrE'!rrE'!rrE)o!#5G5rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&us8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!;HNm
+!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms7cNs!<3'!!<;rs!<;rs
+-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!
+rrE'!rrE'!rrE)o!#5G5rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1E
+rr<&srr<&us8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;c`pr;Zlu!;HNm
+!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms7cNs!<3'!!<;rs!<;rs
+-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u'`e76rrE'!rrE'!
+rrE'!rrE'!rrE)o!#5G5rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!s&B$!;c]q!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!;6?l!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!
+!.k1Grr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!s&B$!;c]q!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!;6?l!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!
+!.k1Grr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGNF!s&B$!;c]q!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!;6?l!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!
+!.k1Grr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7cQl!;c]q!;uis!<)ot!;uis
+!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;6?l!;c]q!;uis!;HKn!<2uu
+!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcGNF"T\Q&rrE)s!!*&s!!<0#s7u]srrE)u
+!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!n,O%"!<3'!!<3'!
+!<3'!!<3'!rVururp9a;4b*~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7cQl!;c]q!;uis!<)ot!;uis
+!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;6?l!;c]q!;uis!;HKn!<2uu
+!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcGNF"T\Q&rrE)s!!*&s!!<0#s7u]srrE)u
+!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!n,O%"!<3'!!<3'!
+!<3'!!<3'!rVururojI/3e.~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7cQl!;c]q!;uis!<)ot!;uis
+!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;6?l!;c]q!;uis!;HKn!<2uu
+!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcGNF"T\Q&rrE)s!!*&s!!<0#s7u]srrE)u
+!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!n,O%"!<3'!!<3'!
+!<3'!!<3'!rVururo4$s2h1~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!s&B$!;c]q!;uis!<)ot!;uis!<2uu
+!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!:p-i!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1Grr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!
+rrE'!rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!s&B$!;c]q!;uis!<)ot!;uis!<2uu
+!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!:p-i!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1Grr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!
+rrE'!rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!s&B$!;c]q!;uis!<)ot!;uis!<2uu
+!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!:p-i!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1Grr<&urrW9$!<;fo!ri9#p](<ooDemkp](Bq!<<#urVmH0rrE'!
+rrE'!rrE'!rrE'!s69RorrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cNn!;HKn!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;-9k!;c]q!;uis!;QTj!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1FrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs
+!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cNn!;HKn!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;-9k!;c]q!;uis!;QTj!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1FrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs
+!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cNn!;HKn!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp!;-9k!;c]q!;uis!;QTj!;lfr!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!.k1FrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs
+!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq#:<o
+p\t3nr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpqYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<%Ms7uZp!<3!#!<3'!rW!$"
+!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3
+rrE'!rrE'!rrE'!rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq#:<o
+p\t3nr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpqYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<%Ms7uZp!<3!#!<3'!rW!$"
+!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3
+rrE'!rrE'!rrE'!rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq#:<o
+p\t3nr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpqYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<%Ms7uZp!<3!#!<3'!rW!$"
+!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3
+rrE'!rrE'!rrE'!rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Err<&nrr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&lrr<&qrr<&s
+rr<&prr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<%Ms7lTt!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Err<&nrr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&lrr<&qrr<&s
+rr<&prr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<%Ms7lTt!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Err<&nrr<&ts8N)t
+rr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&lrr<&qrr<&s
+rr<&prr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<%Ms7lTt!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>^Bnq#C9m
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;rls7u`ps8E#ts8E#qs8;rs
+s8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N(Ms8)`q!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#
+rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u
+!<2?deieN~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>^Bnq#C9m
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;rls7u`ps8E#ts8E#qs8;rs
+s8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N(Ms8)`q!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#
+rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u
+!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>^Bnq#C9m
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;rls7u`ps8E#ts8E#qs8;rs
+s8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N(Ms8)`q!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#
+rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u
+!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13Z
+rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!rW)uu!!*#u
+&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$
+\c2X0rr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13ZrriE&
+!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!rr4bSrrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\c2X0rr3'#rrE)u!!<0#
+s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G<1s8;qKs+13$s1n[7!;HNl!2feqm/bd$J,~>
+!BU8[l%/m-s8;qKs+13$s1n[7!;HNl!2feqklK'jJ,~>
+!B:&Xj+77's8;qKs+13$s1n[7!;HNl!2feqirR%VJ,~>
+!BpJ^mHafK!:Bgb!:9^c!5\[8!8%5N!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+m/bd$J,~>
+!BU8[l0JBG!:Bgb!:9^c!5\[8!8%5N!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+klK'jJ,~>
+!B:&Xj6QaA!:Bgb!:9^c!5\[8!8%5N!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+irR%VJ,~>
+!BpJ^mHFQM!9a@^!:9^c!5ea9!7q/M!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+m/bd$J,~>
+!BU8[l0/-I!9a@^!:9^c!5ea9!7q/M!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+klK'jJ,~>
+!B:&Xj66LC!9a@^!:9^c!5ea9!7q/M!;?Em!8RSS!.k1Mrr<&Srr<%Ms4%&K!:Tpf!;-9k!2feq
+irR%VJ,~>
+!BpJ^mHFQM!9jFa!<3&$rr<&Mrr<%Ms+13$s5s=]!;-9k!2feqm/bd$J,~>
+!BU8[l0/-I!9jFa!<3&$rr<&Mrr<%Ms+13$s5s=]!;-9k!2feqklK'jJ,~>
+!B:&Xj66LC!9jFa!<3&$rr<&Mrr<%Ms+13$s5s=]!;-9k!2feqirR%VJ,~>
+!BpJ^mHFQM!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&cs8;rks7u`p
+s8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;cQkrW)cor;Zlu!;HNl!;uls
+!!*&t!;?Hk!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rks8E#qs8N'!s8;rks8;rqs8N'!s8;rps8;rjs8;rqs8Duus8E#os8N''rr<'!rr<&s
+s8;rqs8Duus8E#qs8;rls8E#ts8E#ss8;rqs8Duus8E#qs8E#os8;rprrE-"r;cZn!!)ipr;c]o
+r;Zlu!5JR5m/bd$J,~>
+!BU8[l0/-I!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&cs8;rks7u`p
+s8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;cQkrW)cor;Zlu!;HNl!;uls
+!!*&t!;?Hk!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rks8E#qs8N'!s8;rks8;rqs8N'!s8;rps8;rjs8;rqs8Duus8E#os8N''rr<'!rr<&s
+s8;rqs8Duus8E#qs8;rls8E#ts8E#ss8;rqs8Duus8E#qs8E#os8;rprrE-"r;cZn!!)ipr;c]o
+r;Zlu!5JR5klK'jJ,~>
+!B:&Xj66LC!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&cs8;rks7u`p
+s8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!r;cQkrW)cor;Zlu!;HNl!;uls
+!!*&t!;?Hk!;ulr!<<)u!<3#u!!*&t!<)rs!!*&u!;lfp!;c`o!!3*"r;Z]q!WN/ts8E#os8;rq
+s8N'!s8;rks8E#qs8N'!s8;rks8;rqs8N'!s8;rps8;rjs8;rqs8Duus8E#os8N''rr<'!rr<&s
+s8;rqs8Duus8E#qs8;rls8E#ts8E#ss8;rqs8Duus8E#qs8E#os8;rprrE-"r;cZn!!)ipr;c]o
+r;Zlu!5JR5irR%VJ,~>
+!BpJ^mHFQM!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!:Kje
+!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;6?l
+!;c]q!<)rt!;QQo!<)ot!;uls!<)ot!;QQo!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot
+!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!;6?l!;c`q!<)ot!;QQo!<)ot
+!;uls!<)ot!<)ot!<)ot!;HKn!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu
+!<)ot!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!;uis!<)rt!5JR5m/bd$J,~>
+!BU8[l0/-I!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!:Kje
+!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;6?l
+!;c]q!<)rt!;QQo!<)ot!;uls!<)ot!;QQo!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot
+!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!;6?l!;c`q!<)ot!;QQo!<)ot
+!;uls!<)ot!<)ot!<)ot!;HKn!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu
+!<)ot!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!;uis!<)rt!5JR5klK'jJ,~>
+!B:&Xj66LC!;c`q!<)ot!;HKn!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!:Kje
+!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;6?l
+!;c]q!<)rt!;QQo!<)ot!;uls!<)ot!;QQo!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot
+!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!;6?l!;c`q!<)ot!;QQo!<)ot
+!;uls!<)ot!<)ot!<)ot!;HKn!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu
+!<)ot!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!;uis!<)rt!5JR5irR%VJ,~>
+!BpJ^mHFQM!;c]q!;uis!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rul2L_`
+p&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`soD\djr;Q`sr;Q`sq>UEpqu6Wrr;Qj!s8N)rrr<&rrr<&trr<&prr<&rrr<&trr<&srr<&t
+rr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&r
+rr<&prr<&rrr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)or!!)cn!!*#u!!)cn!!)or
+!!)]l!!)]l!!)rs!!)or!!)or!!)or!!)or!!)ut!!)rs!!'e6rp9a;4b*~>
+!BU8[l0/-I!;c]q!;uis!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rul2L_`
+p&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`soD\djr;Q`sr;Q`sq>UEpqu6Wrr;Qj!s8N)rrr<&rrr<&trr<&prr<&rrr<&trr<&srr<&t
+rr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&r
+rr<&prr<&rrr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)or!!)cn!!*#u!!)cn!!)or
+!!)]l!!)]l!!)rs!!)or!!)or!!)or!!)or!!)ut!!)rs!!'e6rojI/3e.~>
+!B:&Xj66LC!;c]q!;uis!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2rul2L_`
+p&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`soD\djr;Q`sr;Q`sq>UEpqu6Wrr;Qj!s8N)rrr<&rrr<&trr<&prr<&rrr<&trr<&srr<&t
+rr<&srr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&r
+rr<&prr<&rrr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)or!!)cn!!*#u!!)cn!!)or
+!!)]l!!)]l!!)rs!!)or!!)or!!)or!!)or!!)ut!!)rs!!'e6ro4$s2h1~>
+!BpJ^mHFQM!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Kma!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;ZZo!;6Bh!;uis
+!;uis!;ZZj!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;6?l
+!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<3#o!;ZWp!;lcr!;uis!;-9k!<2uu!<3!#!<<'!qu6Wr
+r;Q`sq>^6jp\t3nrr2rur;ZWoqu6Wrp&>!lqZ$Emr;Q`squ6Wrqu6Wrqu?Hlr;Z`r]`7uu!S0Da~>
+!BU8[l0/-I!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Kma!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;ZZo!;6Bh!;uis
+!;uis!;ZZj!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;6?l
+!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<3#o!;ZWp!;lcr!;uis!;-9k!<2uu!<3!#!<<'!qu6Wr
+r;Q`sq>^6jp\t3nrr2rur;ZWoqu6Wrp&>!lqZ$Emr;Q`squ6Wrqu6Wrqu?Hlr;Z`r]`7uq!R<`V~>
+!B:&Xj66LC!;c]q!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Kma!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;ZZo!;6Bh!;uis
+!;uis!;ZZj!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;6?l
+!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<3#o!;ZWp!;lcr!;uis!;-9k!<2uu!<3!#!<<'!qu6Wr
+r;Q`sq>^6jp\t3nrr2rur;ZWoqu6Wrp&>!lqZ$Emr;Q`squ6Wrqu6Wrqu?Hlr;Z`r]`7uk!Q-jH~>
+!BpJ^mHFQM!;c]q!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Tpf!;uis!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;?Hm!;QQo!;uis
+!;uis!;uis!;ZWp!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis
+!;6?l!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<2uu!:p-i!;lcr!;uis!;-9k!<2uu!<3!#!<<'!
+qu6Wrr;Q`sq>UEpn,EFhrrDus!!)rs!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)Ti
+rrBe5rp9a;4b*~>
+!BU8[l0/-I!;c]q!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Tpf!;uis!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;?Hm!;QQo!;uis
+!;uis!;uis!;ZWp!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis
+!;6?l!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<2uu!:p-i!;lcr!;uis!;-9k!<2uu!<3!#!<<'!
+qu6Wrr;Q`sq>UEpn,EFhrrDus!!)rs!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)Ti
+rrBe5rojI/3e.~>
+!B:&Xj66LC!;c]q!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!:Tpf!;uis!;6?l
+!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;6?l!;?Hm!;QQo!;uis
+!;uis!;uis!;ZWp!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis
+!;6?l!;c]q!;uis!;ZWp!;lcr!<)ot!;uis!<2uu!:p-i!;lcr!;uis!;-9k!<2uu!<3!#!<<'!
+qu6Wrr;Q`sq>UEpn,EFhrrDus!!)rs!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)Ti
+rrBe5ro4$s2h1~>
+!BpJ^mHFQM!;c]q!;uis!;ZWp!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2run,E@f
+r;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpr;Q`sr;Q`sr;Q`sq>UEpp&>*os8N)rrr<&rrr<&trr<&prr<&mrr<&srr<&trr<&s
+rr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&irr<&r
+rr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)Kf!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+r;Q`sr;Q`squ6Wrqu6Wrqu6WrpAY*mr;Q`s^]4<#!S0Da~>
+!BU8[l0/-I!;c]q!;uis!;ZWp!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2run,E@f
+r;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpr;Q`sr;Q`sr;Q`sq>UEpp&>*os8N)rrr<&rrr<&trr<&prr<&mrr<&srr<&trr<&s
+rr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&irr<&r
+rr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)Kf!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+r;Q`sr;Q`squ6Wrqu6Wrqu6WrpAY*mr;Q`s^]4;t!R<`V~>
+!B:&Xj66LC!;c]q!;uis!;ZWp!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2run,E@f
+r;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`sp&>!lqYpNq
+r;Q`sq>UEpr;Q`sr;Q`sr;Q`sq>UEpp&>*os8N)rrr<&rrr<&trr<&prr<&mrr<&srr<&trr<&s
+rr<&qrr<&rrr<&rrr<&trr<&srr<&lrr<&qrr<&srr<&prr<&rrr<&trr<&srr<&urr<&irr<&r
+rr<&srr<&krr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)Kf!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wr
+r;Q`sr;Q`squ6Wrqu6Wrqu6WrpAY*mr;Q`s^]4;n!Q-jH~>
+!BpJ^mHFQM!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;lfr
+!;HKn!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!;6?l!;c`q!<)ot!;ZWp!<)rt!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!;uis
+!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!;6?l!;c]q!;uis!;QQo
+!<)ot!;uis!;uis!<)ot!<)rt!;QQo!<)ot!;lcr!;-9k!<2uu!<2uu!<2uu!<)ot!;lcr!;QQo
+!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot
+!;lfr!6>-=m/bd$J,~>
+!BU8[l0/-I!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;lfr
+!;HKn!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!;6?l!;c`q!<)ot!;ZWp!<)rt!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!;uis
+!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!;6?l!;c]q!;uis!;QQo
+!<)ot!;uis!;uis!<)ot!<)rt!;QQo!<)ot!;lcr!;-9k!<2uu!<2uu!<2uu!<)ot!;lcr!;QQo
+!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot
+!;lfr!6>-=klK'jJ,~>
+!B:&Xj66LC!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;lfr
+!;HKn!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!;6?l!;c`q!<)ot!;ZWp!<)rt!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!;uis
+!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!;6?l!;c]q!;uis!;QQo
+!<)ot!;uis!;uis!<)ot!<)rt!;QQo!<)ot!;lcr!;-9k!<2uu!<2uu!<2uu!<)ot!;lcr!;QQo
+!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot
+!;lfr!6>-=irR%VJ,~>
+!BpJ^mHafK!<3#t!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;uls!;?Hk
+!!*&u!;ZZk!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;ZZk!<)ou!<;ut
+p](0l!<<#us8W&urr;rtq#C9mr;Z`rs8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln
+!;ulq!;ulr!<3#t!;ZZk!<3#t!<3#t!;QTm!;ulr!<3#t!<)rr!;6Bj!;uln!;ZZo!<<*!!<<*!
+!<3#s!;uln!;lfp!;$3j!;c`o!!*&u!<<)q!;uln!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;lcs
+!<;utqZ$Qqa8c/+!S0Da~>
+!BU8[l0JBG!<3#t!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;uls!;?Hk
+!!*&u!;ZZk!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;ZZk!<)ou!<;ut
+p](0l!<<#us8W&urr;rtq#C9mr;Z`rs8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln
+!;ulq!;ulr!<3#t!;ZZk!<3#t!<3#t!;QTm!;ulr!<3#t!<)rr!;6Bj!;uln!;ZZo!<<*!!<<*!
+!<3#s!;uln!;lfp!;$3j!;c`o!!*&u!<<)q!;uln!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;lcs
+!<;utqZ$Qqa8c/'!R<`V~>
+!B:&Xj6QaA!<3#t!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;uls!;?Hk
+!!*&u!;ZZk!;ulq!!N<%!<<)u!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;ZZk!<)ou!<;ut
+p](0l!<<#us8W&urr;rtq#C9mr;Z`rs8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln
+!;ulq!;ulr!<3#t!;ZZk!<3#t!<3#t!;QTm!;ulr!<3#t!<)rr!;6Bj!;uln!;ZZo!<<*!!<<*!
+!<3#s!;uln!;lfp!;$3j!;c`o!!*&u!<<)q!;uln!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;lcs
+!<;utqZ$Qqa8c/!!Q-jH~>
+!BpJ^m?dkQ!.k0_rr<%Ms+13$s7cQmm/bd$J,~>
+!BU8[l'MGM!.k0_rr<%Ms+13$s7cQmklK'jJ,~>
+!B:&Xj-TfG!.k0_rr<%Ms+13$s7cQmirR%VJ,~>
+!BpJ^m?dkQ!.k0_rr<%Ms+13$s7cQmm/bd$J,~>
+!BU8[l'MGM!.k0_rr<%Ms+13$s7cQmklK'jJ,~>
+!B:&Xj-TfG!.k0_rr<%Ms+13$s7cQmirR%VJ,~>
+!BpJ^m?mqR!.k0^rr<%Ms+13$s7cQmm/bd$J,~>
+!BU8[l'VMN!.k0^rr<%Ms+13$s7cQmklK'jJ,~>
+!B:&Xj-]lH!.k0^rr<%Ms+13$s7cQmirR%VJ,~>
+!BpJ^m=G:gs3^lF!.k0$s+14Gs8MBdeieN~>
+!BU8[l%/kcs3^lF!.k0$s+14Gs8M6`c8pI~>
+!B:&Xj+75]s3^lF!.k0$s+14Gs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mH4EK!:p0i!94%Y!9=+X!3cG$!1j/g!:Tsf!1X#g!;HNl!9=(Z!0$sV!1!T`m/bd$J,~>
+!BU8[l/r!G!:p0i!94%Y!9=+X!3cG$!1j/g!:Tsf!1X#g!;HNl!9=(Z!0$sV!1!T`klK'jJ,~>
+!B:&Xj6$@A!:p0i!94%Y!9=+X!3cG$!1j/g!:Tsf!1X#g!;HNl!9=(Z!0$sV!1!T`irR%VJ,~>
+!BpJ^mH=KL!;ull!<2uu!;-9k!:Tpf!9F.[!:p-i!;QQo!65$=!8%5N!;?Em!7CfH!;$3j!;ZWp
+!3Q8$!:Tpf!;-9k!94"Y!9O7[!<3#t!3cD&!1!T`m/bd$J,~>
+!BU8[l0&'H!;ull!<2uu!;-9k!:Tpf!9F.[!:p-i!;QQo!65$=!8%5N!;?Em!7CfH!;$3j!;ZWp
+!3Q8$!:Tpf!;-9k!94"Y!9O7[!<3#t!3cD&!1!T`klK'jJ,~>
+!B:&Xj6-FB!;ull!<2uu!;-9k!:Tpf!9F.[!:p-i!;QQo!65$=!8%5N!;?Em!7CfH!;$3j!;ZWp
+!3Q8$!:Tpf!;-9k!94"Y!9O7[!<3#t!3cD&!1!T`irR%VJ,~>
+!BpJ^mH=KL!;uis!<2uu!<2uu!<2uu!;-9k!:Tpf!9O4\!:g'h!;QQo!6>*>!7q/M!;?Em!7LlI
+!:p-i!;ZWp!3Q8$!:Tpf!;-9k!94"Y!9F.[!;uis!3Z>%!1!T`m/bd$J,~>
+!BU8[l0&'H!;uis!<2uu!<2uu!<2uu!;-9k!:Tpf!9O4\!:g'h!;QQo!6>*>!7q/M!;?Em!7LlI
+!:p-i!;ZWp!3Q8$!:Tpf!;-9k!94"Y!9F.[!;uis!3Z>%!1!T`klK'jJ,~>
+!B:&Xj6-FB!;uis!<2uu!<2uu!<2uu!;-9k!:Tpf!9O4\!:g'h!;QQo!6>*>!7q/M!;?Em!7LlI
+!:p-i!;ZWp!3Q8$!:Tpf!;-9k!94"Y!9F.[!;uis!3Z>%!1!T`irR%VJ,~>
+!BpJ^mHFQM!;lcr!<2uu!<2uu!<2uu!9*qX!9O4\!9a@^!6>*>!7q/M!65$=!:p-i!;ZWp!1Nof
+!;-9k!9*qX!9F.[!<2uu!3Q8$!1!T`m/bd$J,~>
+!BU8[l0/-I!;lcr!<2uu!<2uu!<2uu!9*qX!9O4\!9a@^!6>*>!7q/M!65$=!:p-i!;ZWp!1Nof
+!;-9k!9*qX!9F.[!<2uu!3Q8$!1!T`klK'jJ,~>
+!B:&Xj66LC!;lcr!<2uu!<2uu!<2uu!9*qX!9O4\!9a@^!6>*>!7q/M!65$=!:p-i!;ZWp!1Nof
+!;-9k!9*qX!9F.[!<2uu!3Q8$!1!T`irR%VJ,~>
+!BpJ^mHFQM!;lcr!<2uu!<2uu!<3!!!<;utqu?Wqqu?Zr!<;utr;Qfus8W#tp](0lqu?Kmp](3m
+qZ$Blp](0lqZ$Ko!WN/os8;rks7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;cQkr;c`pq>g<jq>gKo!<E/u!;lfp!;c`o!!3*"r;Z]qp](3mrr;rtrVufrr;Z`r!<<#u
+qu?Wqq>^Bnqu6Zss8;rnrr<&ps8;ros8;ourrDoq!!)*[!!*#u!!)orr;ccqrrE#trrDfnr;Zlu
+!;ulq!;uls!!*&t!;?Hk!;QQo!;ZZn!!3*"r;Z]qXT/:e!S0Da~>
+!BU8[l0/-I!;lcr!<2uu!<2uu!<3!!!<;utqu?Wqqu?Zr!<;utr;Qfus8W#tp](0lqu?Kmp](3m
+qZ$Blp](0lqZ$Ko!WN/os8;rks7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;cQkr;c`pq>g<jq>gKo!<E/u!;lfp!;c`o!!3*"r;Z]qp](3mrr;rtrVufrr;Z`r!<<#u
+qu?Wqq>^Bnqu6Zss8;rnrr<&ps8;ros8;ourrDoq!!)*[!!*#u!!)orr;ccqrrE#trrDfnr;Zlu
+!;ulq!;uls!!*&t!;?Hk!;QQo!;ZZn!!3*"r;Z]qXT/:a!R<`V~>
+!B:&Xj66LC!;lcr!<2uu!<2uu!<3!!!<;utqu?Wqqu?Zr!<;utr;Qfus8W#tp](0lqu?Kmp](3m
+qZ$Blp](0lqZ$Ko!WN/os8;rks7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;cQkr;c`pq>g<jq>gKo!<E/u!;lfp!;c`o!!3*"r;Z]qp](3mrr;rtrVufrr;Z`r!<<#u
+qu?Wqq>^Bnqu6Zss8;rnrr<&ps8;ros8;ourrDoq!!)*[!!*#u!!)orr;ccqrrE#trrDfnr;Zlu
+!;ulq!;uls!!*&t!;?Hk!;QQo!;ZZn!!3*"r;Z]qXT/:[!Q-jH~>
+!BpJ^mHFQM!;HKn!;c`q!<)ot!;c]q!;c`q!<)ot!<)ot!<2uu!;?Em!<)ot!;c]q!:g'h!;QQo
+!;-9k!<)ot!;uis!<)rt!;QQo!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!;QQo!<)ot!;c]q!:p-i!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot
+!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot
+!;uis!<)rt!;c]q!9=(\!<3&rrr<&trr<&srr<&srr<&orr<&ts8N)trr<&trr<&ss8N)trr<&o
+rr<&trr<&prr<&qrr<&ts8N)trr<&trr<&$s8MBdeieN~>
+!BU8[l0/-I!;HKn!;c`q!<)ot!;c]q!;c`q!<)ot!<)ot!<2uu!;?Em!<)ot!;c]q!:g'h!;QQo
+!;-9k!<)ot!;uis!<)rt!;QQo!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!;QQo!<)ot!;c]q!:p-i!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot
+!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot
+!;uis!<)rt!;c]q!9=(\!<3&rrr<&trr<&srr<&srr<&orr<&ts8N)trr<&trr<&ss8N)trr<&o
+rr<&trr<&prr<&qrr<&ts8N)trr<&trr<&$s8M6`c8pI~>
+!B:&Xj66LC!;HKn!;c`q!<)ot!;c]q!;c`q!<)ot!<)ot!<2uu!;?Em!<)ot!;c]q!:g'h!;QQo
+!;-9k!<)ot!;uis!<)rt!;QQo!<)ot!;6?l!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em
+!;c]q!<)ot!;uls!<)ot!;QQo!<)ot!;c]q!:p-i!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot
+!<)ot!;HKn!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot
+!;uis!<)rt!;c]q!9=(\!<3&rrr<&trr<&srr<&srr<&orr<&ts8N)trr<&trr<&ss8N)trr<&o
+rr<&trr<&prr<&qrr<&ts8N)trr<&trr<&$s8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+n,E@fr;Q`sr;Q`soD\djp&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6Wrp\t3n
+rr2rup\t3nqu6Wrp&>!lp&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sqYpNqj8T/\rrDus
+!!)or!!)ut!!)rs!!)ip!!)or!!)fo!!)rs!!)rs!!)Wj!!)ip!!)lq!!)rs!!*#u!!)or!!'2%
+rp9a;4b*~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+n,E@fr;Q`sr;Q`soD\djp&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6Wrp\t3n
+rr2rup\t3nqu6Wrp&>!lp&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sqYpNqj8T/\rrDus
+!!)or!!)ut!!)rs!!)ip!!)or!!)fo!!)rs!!)rs!!)Wj!!)ip!!)lq!!)rs!!*#u!!)or!!'2%
+rojI/3e.~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+n,E@fr;Q`sr;Q`soD\djp&>!lq>UEpr;Q`srVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6Wrp\t3n
+rr2rup\t3nqu6Wrp&>!lp&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6WrrVlitr;Q`sqYpNqj8T/\rrDus
+!!)or!!)ut!!)rs!!)ip!!)or!!)fo!!)rs!!)rs!!)Wj!!)ip!!)lq!!)rs!!*#u!!)or!!'2%
+ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)rs!;6?l!;lcr!;lcr!:g'h!;QQo!;-<g
+!;lfq!;6Bh!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZWp
+!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!;ulr!;lfl!;HKn!<2uu!;ulo!;lcr!;6?l!;c`m
+!;uis!;lcr!;lcr!;lfl!;ulr!;HKn!94"Y!;lcr!;lcr!<)ot!;uis!;ZWp!;?Hi!;uis!;uis
+!;QTk!;ZWp!;ZZo!;lcr!;lcr!3ZA$m/bd$J,~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)rs!;6?l!;lcr!;lcr!:g'h!;QQo!;-<g
+!;lfq!;6Bh!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZWp
+!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!;ulr!;lfl!;HKn!<2uu!;ulo!;lcr!;6?l!;c`m
+!;uis!;lcr!;lcr!;lfl!;ulr!;HKn!94"Y!;lcr!;lcr!<)ot!;uis!;ZWp!;?Hi!;uis!;uis
+!;QTk!;ZWp!;ZZo!;lcr!;lcr!3ZA$klK'jJ,~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)rs!;6?l!;lcr!;lcr!:g'h!;QQo!;-<g
+!;lfq!;6Bh!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ZWp
+!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!;ulr!;lfl!;HKn!<2uu!;ulo!;lcr!;6?l!;c`m
+!;uis!;lcr!;lcr!;lfl!;ulr!;HKn!94"Y!;lcr!;lcr!<)ot!;uis!;ZWp!;?Hi!;uis!;uis
+!;QTk!;ZWp!;ZZo!;lcr!;lcr!3ZA$irR%VJ,~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+p&>!lr;Q`sq#C?oq#:<or;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6Wrq>^HprVlitn,EFhrrDus!!)rs
+!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)TirrDlp!!)$Y!!)or!!)or!!)ut!!)rs
+!!)ip!!)cn!!)rs!!)rs!!)rs!!)ip!!)rs!!)ip!!)`mrrE#t!!)or!!'2%rp9a;4b*~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+p&>!lr;Q`sq#C?oq#:<or;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6Wrq>^HprVlitn,EFhrrDus!!)rs
+!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)TirrDlp!!)$Y!!)or!!)or!!)ut!!)rs
+!!)ip!!)cn!!)rs!!)rs!!)rs!!)ip!!)rs!!)ip!!)`mrrE#t!!)or!!'2%rojI/3e.~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)p"!<<'!pAY*mqu6Wrqu6Wrnc&Rhq#:<o
+p&>!lr;Q`sq#C?oq#:<or;Q`sp&>!lq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`sq>UEpqu6Wrqu6Wro)A[iq>UEpr;Q`srr2ruqu6Wrq>^HprVlitn,EFhrrDus!!)rs
+!!)or!!)]l!!)or!!)rs!!)rs!!)or!!)or!!)or!!)TirrDlp!!)$Y!!)or!!)or!!)ut!!)rs
+!!)ip!!)cn!!)rs!!)rs!!)rs!!)ip!!)rs!!)ip!!)`mrrE#t!!)or!!'2%ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<2uu!;HKn!;lcr!;lcr!:g'h!;QQo
+!;6?l!;uis!;uis!;uis!;ZWp!;uis!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!<)ot!;uis!<2uu!:Tph
+!<3&srr<&srr<&rrr<&lrr<&rrr<&srr<&srr<&rrr<&rrr<&rrr<&mrr<&srr<&qrr<&Yrr<&r
+rr<&rrr<&trr<&srr<&prr<&nrr<&srr<&srr<&srr<&prr<&srr<&prr<&qrr<&srr<&urr<&r
+rr<&%s8MBdeieN~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<2uu!;HKn!;lcr!;lcr!:g'h!;QQo
+!;6?l!;uis!;uis!;uis!;ZWp!;uis!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!<)ot!;uis!<2uu!:Tph
+!<3&srr<&srr<&rrr<&lrr<&rrr<&srr<&srr<&rrr<&rrr<&rrr<&mrr<&srr<&qrr<&Yrr<&r
+rr<&rrr<&trr<&srr<&prr<&nrr<&srr<&srr<&srr<&prr<&srr<&prr<&qrr<&srr<&urr<&r
+rr<&%s8M6`c8pI~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<2uu!;HKn!;lcr!;lcr!:g'h!;QQo
+!;6?l!;uis!;uis!;uis!;ZWp!;uis!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZWp!;lcr!;lcr!:p-i!;ZWp!;uis!<2uu!;lcr!<)ot!;uis!<2uu!:Tph
+!<3&srr<&srr<&rrr<&lrr<&rrr<&srr<&srr<&rrr<&rrr<&rrr<&mrr<&srr<&qrr<&Yrr<&r
+rr<&rrr<&trr<&srr<&prr<&nrr<&srr<&srr<&srr<&prr<&srr<&prr<&qrr<&srr<&urr<&r
+rr<&%s8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<)ot!;HKn!<)ot!;c]q!:g'h!;QQo
+!<)ot!;c]q!<)rt!;uls!<)ot!;ZWp!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QQo!<)ot!;c]q!:p-i!<)ot!<2uu!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q
+!<)rt!<)rt!<)ot!;c]q!;QTo!:Bdd!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<2uu!<)rt!;uis
+!;uis!;ZWp!<)rt!;ZWp!;c`q!<)ot!<)ot!<)ot!3Q;#m/bd$J,~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<)ot!;HKn!<)ot!;c]q!:g'h!;QQo
+!<)ot!;c]q!<)rt!;uls!<)ot!;ZWp!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QQo!<)ot!;c]q!:p-i!<)ot!<2uu!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q
+!<)rt!<)rt!<)ot!;c]q!;QTo!:Bdd!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<2uu!<)rt!;uis
+!;uis!;ZWp!<)rt!;ZWp!;c`q!<)ot!<)ot!<)ot!3Q;#klK'jJ,~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;c]q!;c]q!;uis!<)ot!<)ot!;HKn!<)ot!;c]q!:g'h!;QQo
+!<)ot!;c]q!<)rt!;uls!<)ot!;ZWp!<)rt!;6?l!;ZWp!<)rt!<)ot!;uis!<)ot!<)rt!;lcr
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QQo!<)ot!;c]q!:p-i!<)ot!<2uu!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;6?l!;lcr!<)rt!;lcr!;6?l!;lcr!<)rt!;uls!<)ot!;c]q!;c]q
+!<)rt!<)rt!<)ot!;c]q!;QTo!:Bdd!;c]q!<)ot!;uis!<)rt!;QQo!<)rt!<2uu!<)rt!;uis
+!;uis!;ZWp!<)rt!;ZWp!;c`q!<)ot!<)ot!<)ot!3Q;#irR%VJ,~>
+!BpJ^mH=KL!;c`n!<)rs!<3#t!<3#p!<3#t!<3#t!<<*!!<3#s!;QTm!;lfm!;QTj!;c`o!;QTm
+!!*&u!<3!!!<;utp](0l!<<#uq>^9kr;Z]q"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`r
+rr;rtq#C9mqu?Kmp&Fsjrr;rtrr;rtrVufrqu6Zss8;rps8;rhrr<&qs8;ots8E#us7u`ns7u`o
+s8;ots8E#us8N'!s8;rqs7u`ns8;rprrE-"r;c]o!!)cnrrDNfquHWor;c]or;Zp!!!)for;c`p
+r;ZitrW)uurW)rtrW)cor;ZitrW)rtq>gKo!<E/u!;lfp!3H5"m/bd$J,~>
+!BU8[l0&'H!;c`n!<)rs!<3#t!<3#p!<3#t!<3#t!<<*!!<3#s!;QTm!;lfm!;QTj!;c`o!;QTm
+!!*&u!<3!!!<;utp](0l!<<#uq>^9kr;Z]q"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`r
+rr;rtq#C9mqu?Kmp&Fsjrr;rtrr;rtrVufrqu6Zss8;rps8;rhrr<&qs8;ots8E#us7u`ns7u`o
+s8;ots8E#us8N'!s8;rqs7u`ns8;rprrE-"r;c]o!!)cnrrDNfquHWor;c]or;Zp!!!)for;c`p
+r;ZitrW)uurW)rtrW)cor;ZitrW)rtq>gKo!<E/u!;lfp!3H5"klK'jJ,~>
+!B:&Xj6-FB!;c`n!<)rs!<3#t!<3#p!<3#t!<3#t!<<*!!<3#s!;QTm!;lfm!;QTj!;c`o!;QTm
+!!*&u!<3!!!<;utp](0l!<<#uq>^9kr;Z]q"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`r
+rr;rtq#C9mqu?Kmp&Fsjrr;rtrr;rtrVufrqu6Zss8;rps8;rhrr<&qs8;ots8E#us7u`ns7u`o
+s8;ots8E#us8N'!s8;rqs7u`ns8;rprrE-"r;c]o!!)cnrrDNfquHWor;c]or;Zp!!!)for;c`p
+r;ZitrW)uurW)rtrW)cor;ZitrW)rtq>gKo!<E/u!;lfp!3H5"irR%VJ,~>
+!BpJ^mH=KL!.k0$s+13hrr<%Ms.02hm/bd$J,~>
+!BU8[l0&'H!.k0$s+13hrr<%Ms.02hklK'jJ,~>
+!B:&Xj6-FB!.k0$s+13hrr<%Ms.02hirR%VJ,~>
+!BpJ^mH4EK!.k0$s+13jrr<%Ms.',gm/bd$J,~>
+!BU8[l/r!G!.k0$s+13jrr<%Ms.',gklK'jJ,~>
+!B:&Xj6$@A!.k0$s+13jrr<%Ms.',girR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mH4HK!:Kmc!6"p9!3Q;$!7CiF!0@0[!9*tV!6,!:!.k1>s8;r&s8MBdeieN~>
+!BU8[l/r$G!:Kmc!6"p9!3Q;$!7CiF!0@0[!9*tV!6,!:!.k1>s8;r&s8M6`c8pI~>
+!B:&Xj6$CA!:Kmc!6"p9!3Q;$!7CiF!0@0[!9*tV!6,!:!.k1>s8;r&s8M$Z_`*)~>
+!BpJ^mH+?J!:Tpf!;HKn!6kHC!8%5N!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9a@^
+!8%5N!;?Em!8mhT!:9^c!8RSS!:Bdd!65'<m/bd$J,~>
+!BU8[l/hpF!:Tpf!;HKn!6kHC!8%5N!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9a@^
+!8%5N!;?Em!8mhT!:9^c!8RSS!:Bdd!65'<klK'jJ,~>
+!B:&Xj5p:@!:Tpf!;HKn!6kHC!8%5N!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9a@^
+!8%5N!;?Em!8mhT!:9^c!8RSS!:Bdd!65'<irR%VJ,~>
+!BpJ^mH+?J!:^!g!;?Em!6tND!7q/M!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9jF_
+!7q/M!;?Em!8RSS!:9^c!8RSS!:Bdd!65'<m/bd$J,~>
+!BU8[l/hpF!:^!g!;?Em!6tND!7q/M!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9jF_
+!7q/M!;?Em!8RSS!:9^c!8RSS!:Bdd!65'<klK'jJ,~>
+!B:&Xj5p:@!:^!g!;?Em!6tND!7q/M!;?Em!8meV!7(TE!07'Z!9sL`!;HKn!;QQo!:0Xb!9jF_
+!7q/M!;?Em!8RSS!:9^c!8RSS!:Bdd!65'<irR%VJ,~>
+!BpJ^mH+?J!:^!g!5\[8!7q/M!7UrJ!7(TE!07'Z!8d_U!;QQo!7CfH!7q/M!7CfJ!<3&>rr<&d
+rr<&=s8MBdeieN~>
+!BU8[l/hpF!:^!g!5\[8!7q/M!7UrJ!7(TE!07'Z!8d_U!;QQo!7CfH!7q/M!7CfJ!<3&>rr<&d
+rr<&=s8M6`c8pI~>
+!B:&Xj5p:@!:^!g!5\[8!7q/M!7UrJ!7(TE!07'Z!8d_U!;QQo!7CfH!7q/M!7CfJ!<3&>rr<&d
+rr<&=s8M$Z_`*)~>
+!BpJ^mHX`M!!3*"r;Z]qqu?Kmr;Z`rqu?Zr!<;utqu?Tpp&FsjpAashrr;uurVultrr;uu!<;ut
+qu?Tp!WN/us7u`ns8E#os8;rqs8N'!s8;rlrrE-"r;cfrrW)rtrW)fprVururW)osrrE#trrDoq
+!!)ipr;c]or;Zlu!;HNl!;ulr!!*&u!;QTo!<)rt!;ulq!!3*"r;Z]qp&FsjpAY-ns8;rrs8N)t
+s8N)ss8E#mrr<&qs7u`cs8E#qs8N'!s8;rls7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHn
+rW)cor;ccqrr<'!r;cNj!W`6#r;Z`rs8W&ur;Z`rq>^BnrVult#6+Z's8N'!p&>!lq>^Bnqu?Km
+r;Z]q!WN/Ms8MBdeieN~>
+!BU8[l0A<I!!3*"r;Z]qqu?Kmr;Z`rqu?Zr!<;utqu?Tpp&FsjpAashrr;uurVultrr;uu!<;ut
+qu?Tp!WN/us7u`ns8E#os8;rqs8N'!s8;rlrrE-"r;cfrrW)rtrW)fprVururW)osrrE#trrDoq
+!!)ipr;c]or;Zlu!;HNl!;ulr!!*&u!;QTo!<)rt!;ulq!!3*"r;Z]qp&FsjpAY-ns8;rrs8N)t
+s8N)ss8E#mrr<&qs7u`cs8E#qs8N'!s8;rls7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHn
+rW)cor;ccqrr<'!r;cNj!W`6#r;Z`rs8W&ur;Z`rq>^BnrVult#6+Z's8N'!p&>!lq>^Bnqu?Km
+r;Z]q!WN/Ms8M6`c8pI~>
+!B:&Xj6H[C!!3*"r;Z]qqu?Kmr;Z`rqu?Zr!<;utqu?Tpp&FsjpAashrr;uurVultrr;uu!<;ut
+qu?Tp!WN/us7u`ns8E#os8;rqs8N'!s8;rlrrE-"r;cfrrW)rtrW)fprVururW)osrrE#trrDoq
+!!)ipr;c]or;Zlu!;HNl!;ulr!!*&u!;QTo!<)rt!;ulq!!3*"r;Z]qp&FsjpAY-ns8;rrs8N)t
+s8N)ss8E#mrr<&qs7u`cs8E#qs8N'!s8;rls7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHn
+rW)cor;ccqrr<'!r;cNj!W`6#r;Z`rs8W&ur;Z`rq>^BnrVult#6+Z's8N'!p&>!lq>^Bnqu?Km
+r;Z]q!WN/Ms8M$Z_`*)~>
+!BpJ^mHacP!<)rt!<)ot!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)ot!;HKn!<)ot!;6?l!;ZWp
+!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;QTo!<)ot!<)ot!;uis
+!;HNn!<2uu!<)ot!;uis!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;lfr!<2uu!;QQo!;uis
+!<)ot!<)rt!<)ot!<)ot!;HKn!<)ot!;HNn!<)ot!<)ot!;uis!;c]q!;HKn!;QQo!:0Xb!;c`q
+!<)ot!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;HKn
+!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q!;ZWp!<)rt
+!7h,Km/bd$J,~>
+!BU8[l0J?L!<)rt!<)ot!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)ot!;HKn!<)ot!;6?l!;ZWp
+!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;QTo!<)ot!<)ot!;uis
+!;HNn!<2uu!<)ot!;uis!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;lfr!<2uu!;QQo!;uis
+!<)ot!<)rt!<)ot!<)ot!;HKn!<)ot!;HNn!<)ot!<)ot!;uis!;c]q!;HKn!;QQo!:0Xb!;c`q
+!<)ot!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;HKn
+!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q!;ZWp!<)rt
+!7h,KklK'jJ,~>
+!B:&Xj6Q^F!<)rt!<)ot!<)ot!;c]q!;?Em!;c`q!<)ot!<)ot!<)ot!;HKn!<)ot!;6?l!;ZWp
+!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;QTo!<)ot!<)ot!;uis
+!;HNn!<2uu!<)ot!;uis!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;lfr!<2uu!;QQo!;uis
+!<)ot!<)rt!<)ot!<)ot!;HKn!<)ot!;HNn!<)ot!<)ot!;uis!;c]q!;HKn!;QQo!:0Xb!;c`q
+!<)ot!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!;HKn
+!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;?Em!;c]q!<)ot!;c]q!;ZWp!<)rt
+!7h,KirR%VJ,~>
+!BpJ^mHjiQ!;lcr!<2uu!;lcr!;lcr!;?Em!;c]q!;uis!<2uu!;lcr!;$3j!;6?l!;ZWp!;uis
+!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<2uu!;uis!;HKn
+!;QQo!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;$3j!;uis!<)ot!;uis!<2uu
+!;lcr!;$3j!;HKn!;lcr!<2uu!;uis!;c]q!;HKn!;QQo!;c`k!;c]q!;c]q!;uis!;?Em!;ZWp
+!;uis!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;HKn!<2uu!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wrq>UEpr;Q`sec5X9!S0Da~>
+!BU8[l0SEM!;lcr!<2uu!;lcr!;lcr!;?Em!;c]q!;uis!<2uu!;lcr!;$3j!;6?l!;ZWp!;uis
+!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<2uu!;uis!;HKn
+!;QQo!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;$3j!;uis!<)ot!;uis!<2uu
+!;lcr!;$3j!;HKn!;lcr!<2uu!;uis!;c]q!;HKn!;QQo!;c`k!;c]q!;c]q!;uis!;?Em!;ZWp
+!;uis!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;HKn!<2uu!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wrq>UEpr;Q`sec5X5!R<`V~>
+!B:&Xj6ZdG!;lcr!<2uu!;lcr!;lcr!;?Em!;c]q!;uis!<2uu!;lcr!;$3j!;6?l!;ZWp!;uis
+!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<2uu!;uis!;HKn
+!;QQo!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!;uis!;$3j!;uis!<)ot!;uis!<2uu
+!;lcr!;$3j!;HKn!;lcr!<2uu!;uis!;c]q!;HKn!;QQo!;c`k!;c]q!;c]q!;uis!;?Em!;ZWp
+!;uis!<)ot!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!;HKn!<2uu!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr2rupAY*mqu6Wrqu6Wrqu6Wrq>UEpr;Q`sec5X/!Q-jH~>
+!BpJ^mHjiQ!;lcr!<3#o!;lcr!;?Em!;c]q!;uis!<3#o!;QTk!;6?l!;ZWp!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis!;c]q
+!;lfl!;ulr!;?Em!;lcr!;uis!;$3j!;uis!;ulr!;lfl!;QTk!;HKn!;lcr!<2uu!;uis!;c]q
+!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr
+!<)ot!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn
+!7LoHm/bd$J,~>
+!BU8[l0SEM!;lcr!<3#o!;lcr!;?Em!;c]q!;uis!<3#o!;QTk!;6?l!;ZWp!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis!;c]q
+!;lfl!;ulr!;?Em!;lcr!;uis!;$3j!;uis!;ulr!;lfl!;QTk!;HKn!;lcr!<2uu!;uis!;c]q
+!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr
+!<)ot!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn
+!7LoHklK'jJ,~>
+!B:&Xj6ZdG!;lcr!<3#o!;lcr!;?Em!;c]q!;uis!<3#o!;QTk!;6?l!;ZWp!;uis!<)ot!;uis
+!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis!;c]q
+!;lfl!;ulr!;?Em!;lcr!;uis!;$3j!;uis!;ulr!;lfl!;QTk!;HKn!;lcr!<2uu!;uis!;c]q
+!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr
+!<)ot!;uis!;QQo!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lfl!;lcr!;QTn
+!7LoHirR%VJ,~>
+!BpJ^mHjiQ!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis
+!;c]q!;lcr!:p0i!;QQo!;lcr!;uis!;$3j!;uis!;ZZp!<)ot!:p-i!;uis!;HKn!;lcr!<2uu
+!;uis!;c]q!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em
+!;lcr!;lcr!<)ot!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k
+!;6Bl!7_&Jm/bd$J,~>
+!BU8[l0SEM!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis
+!;c]q!;lcr!:p0i!;QQo!;lcr!;uis!;$3j!;uis!;ZZp!<)ot!:p-i!;uis!;HKn!;lcr!<2uu
+!;uis!;c]q!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em
+!;lcr!;lcr!<)ot!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k
+!;6Bl!7_&JklK'jJ,~>
+!B:&Xj6ZdG!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!<)ot!<2uu!;?Em!;QQo!;uis
+!;c]q!;lcr!:p0i!;QQo!;lcr!;uis!;$3j!;uis!;ZZp!<)ot!:p-i!;uis!;HKn!;lcr!<2uu
+!;uis!;c]q!;HKn!;QQo!:0Xb!;c]q!;uis!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em
+!;lcr!;lcr!<)ot!;uis!;QTj!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;?Em!;lcr!;-9k
+!;6Bl!7_&JirR%VJ,~>
+!BpJ^mHjiQ!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!;uiu!<3&lrr<&orr<&srr<&q
+rr<&rrr<&mrr<&srr<&prr<&rrr<&srr<&jrr<&srr<&trr<&srr<&urr<&irr<&srr<&nrr<&r
+rr<&urr<&srr<&qrr<&nrr<&orr<&brr<&qrr<&srr<&mrr<&prr<&srr<&trr<&srr<&urr<&k
+rr<&mrr<&rrr<&rrr<&trr<&srr<&prr<&qrr<&trrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u
+!!)`m!!)or!!)Zk!!)ip!!)rs!!(RLrp9a;4b*~>
+!BU8[l0SEM!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!;uiu!<3&lrr<&orr<&srr<&q
+rr<&rrr<&mrr<&srr<&prr<&rrr<&srr<&jrr<&srr<&trr<&srr<&urr<&irr<&srr<&nrr<&r
+rr<&urr<&srr<&qrr<&nrr<&orr<&brr<&qrr<&srr<&mrr<&prr<&srr<&trr<&srr<&urr<&k
+rr<&mrr<&rrr<&rrr<&trr<&srr<&prr<&qrr<&trrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u
+!!)`m!!)or!!)Zk!!)ip!!)rs!!(RLrojI/3e.~>
+!B:&Xj6ZdG!;lcr!<2uu!;-9k!;?Em!;c]q!;uis!<2uu!:p-i!;uis!;6?l!;ZWp!;uis!<)ot
+!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;QQo!;lcr!;uiu!<3&lrr<&orr<&srr<&q
+rr<&rrr<&mrr<&srr<&prr<&rrr<&srr<&jrr<&srr<&trr<&srr<&urr<&irr<&srr<&nrr<&r
+rr<&urr<&srr<&qrr<&nrr<&orr<&brr<&qrr<&srr<&mrr<&prr<&srr<&trr<&srr<&urr<&k
+rr<&mrr<&rrr<&rrr<&trr<&srr<&prr<&qrr<&trrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u
+!!)`m!!)or!!)Zk!!)ip!!)rs!!(RLro4$s2h1~>
+!BpJ^mHacP!<)rt!<)ot!<)rt!;lcr!;?Em!;c]q!;uis!<)ot!<)rt!;ZWp!<)rt!;6?l!;ZWp
+!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QTo!<)ot!;lct
+!<3&lrr<&orr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&rrr<&jrr<&ts8N)ts8N)t
+rr<&trr<&ts8N)prr<&ts8N)ns8N)trr<&trr<&ts8N)qrr<&nrr<&orr<&trr<&grr<&qrr<&s
+rr<&mrr<&prr<&ts8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&p
+rr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<&mrr<&qrr<&ts8N)rrr<&trr<&u
+s8N)trr<&Ls8MBdeieN~>
+!BU8[l0J?L!<)rt!<)ot!<)rt!;lcr!;?Em!;c]q!;uis!<)ot!<)rt!;ZWp!<)rt!;6?l!;ZWp
+!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QTo!<)ot!;lct
+!<3&lrr<&orr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&rrr<&jrr<&ts8N)ts8N)t
+rr<&trr<&ts8N)prr<&ts8N)ns8N)trr<&trr<&ts8N)qrr<&nrr<&orr<&trr<&grr<&qrr<&s
+rr<&mrr<&prr<&ts8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&p
+rr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<&mrr<&qrr<&ts8N)rrr<&trr<&u
+s8N)trr<&Ls8M6`c8pI~>
+!B:&Xj6Q^F!<)rt!<)ot!<)rt!;lcr!;?Em!;c]q!;uis!<)ot!<)rt!;ZWp!<)rt!;6?l!;ZWp
+!<)rt!<)ot!;uis!<)ot!<)rt!;lcr!<)ot!;lcr!;c]q!<)ot!;uis!;uis!;QTo!<)ot!;lct
+!<3&lrr<&orr<&ts8N)qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&rrr<&jrr<&ts8N)ts8N)t
+rr<&trr<&ts8N)prr<&ts8N)ns8N)trr<&trr<&ts8N)qrr<&nrr<&orr<&trr<&grr<&qrr<&s
+rr<&mrr<&prr<&ts8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&p
+rr<&qrr<&urr<&trr<&prr<&qrr<&trr<&trr<&urr<&urr<&mrr<&qrr<&ts8N)rrr<&trr<&u
+s8N)trr<&Ls8M$Z_`*)~>
+!BpJ^mHX`M!!<0#!<)rr!;lfm!<)ro!<3#t!<3#t!<)rr!;?Hk!!*&u!;ZZk!;ulq!!N<%!<<)u
+!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;c`q!!*&t!;ZWp!;?Hh!;lfp!!<0#!<3#p!;ulq
+!;lcs!<;utpAb'kr;ZTnpAb'k!ri6#rr3!!s8;rps8;rks8;ots8E#ps8N'!s8;rps8;p!rr<&u
+s7u`os7u`ls8;rgs7u`ps8E#ts8E#os7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rq
+s8E#ts8E#qs8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)qs7u`ns8;rms8;rrrrE-"
+r;b@Irp9a;4b*~>
+!BU8[l0A<I!!<0#!<)rr!;lfm!<)ro!<3#t!<3#t!<)rr!;?Hk!!*&u!;ZZk!;ulq!!N<%!<<)u
+!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;c`q!!*&t!;ZWp!;?Hh!;lfp!!<0#!<3#p!;ulq
+!;lcs!<;utpAb'kr;ZTnpAb'k!ri6#rr3!!s8;rps8;rks8;ots8E#ps8N'!s8;rps8;p!rr<&u
+s7u`os7u`ls8;rgs7u`ps8E#ts8E#os7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rq
+s8E#ts8E#qs8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)qs7u`ns8;rms8;rrrrE-"
+r;b@IrojI/3e.~>
+!B:&Xj6H[C!!<0#!<)rr!;lfm!<)ro!<3#t!<3#t!<)rr!;?Hk!!*&u!;ZZk!;ulq!!N<%!<<)u
+!<3#t!<)rr!;QTm!<)ro!;ulq!;ulr!<3#t!;c`q!!*&t!;ZWp!;?Hh!;lfp!!<0#!<3#p!;ulq
+!;lcs!<;utpAb'kr;ZTnpAb'k!ri6#rr3!!s8;rps8;rks8;ots8E#ps8N'!s8;rps8;p!rr<&u
+s7u`os7u`ls8;rgs7u`ps8E#ts8E#os7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rq
+s8E#ts8E#qs8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)qs7u`ns8;rms8;rrrrE-"
+r;b@Iro4$s2h1~>
+!BpJ^m=G;:rr<%Ms+13$s.98im/bd$J,~>
+!BU8[l%/l6rr<%Ms+13$s.98iklK'jJ,~>
+!B:&Xj+760rr<%Ms+13$s.98iirR%VJ,~>
+!BpJ^m=G;;rr<%Ms+13$s.02hm/bd$J,~>
+!BU8[l%/l7rr<%Ms+13$s.02hklK'jJ,~>
+!B:&Xj+761rr<%Ms+13$s.02hirR%VJ,~>
+!BpJ^m=G;;rr<%Ms+13$s.02hm/bd$J,~>
+!BU8[l%/l7rr<%Ms+13$s.02hklK'jJ,~>
+!B:&Xj+761rr<%Ms+13$s.02hirR%VJ,~>
+!BpJ^m=G;>s82kJs+13$s.98im/bd$J,~>
+!BU8[l%/l:s82kJs+13$s.98iklK'jJ,~>
+!B:&Xj+764s82kJs+13$s.98iirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs.fVm!:'Ua!;-<i!.k0$s3^lGm/bd$J,~>
+!BU8[l%/kcs.fVm!:'Ua!;-<i!.k0$s3^lGklK'jJ,~>
+!B:&Xj+75]s.fVm!:'Ua!;-<i!.k0$s3^lGirR%VJ,~>
+!BpJ^m=G9;!2TVp!7LlI!4r11!;HKn!9sL`!;6?l!8%5N!;?Em!.k0's8MBdeieN~>
+!BU8[l%/j7!2TVp!7LlI!4r11!;HKn!9sL`!;6?l!8%5N!;?Em!.k0's8M6`c8pI~>
+!B:&Xj+741!2TVp!7LlI!4r11!;HKn!9sL`!;6?l!8%5N!;?Em!.k0's8M$Z_`*)~>
+!BpJ^m=G9;!2TVp!7LlI!4r11!;HKn!9sL`!;?Em!7q/M!;?Em!.k0's8MBdeieN~>
+!BU8[l%/j7!2TVp!7LlI!4r11!;HKn!9sL`!;?Em!7q/M!;?Em!.k0's8M6`c8pI~>
+!B:&Xj+741!2TVp!7LlI!4r11!;HKn!9sL`!;?Em!7q/M!;?Em!.k0's8M$Z_`*)~>
+!BpJ^m=G9;!.k1Brr<&&rr<&`rr<&mrr<&Mrr<%Ms+14Fs8MBdeieN~>
+!BU8[l%/j7!.k1Brr<&&rr<&`rr<&mrr<&Mrr<%Ms+14Fs8M6`c8pI~>
+!B:&Xj+741!.k1Brr<&&rr<&`rr<&mrr<&Mrr<%Ms+14Fs8M$Z_`*)~>
+!BpJ^mHjlP!<3#t!<)rr!;uls!<)rt!;HNl!!3*"r;Z]qr;Zcs!<;utrVuisrr;rtrVufrr;Z`r
+!<<#ur;ZTnp](0lr;Z`rs8W&urr;uu!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;ourrDusrW)co
+r;ccqrr<'!r;c`pr;Zlu!;QTj!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu!<;utqu?Wq
+p\t3nq>^BnqZ$Ko!WN/ps7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!
+r;c`pr;Zlu!.k0Ks8MBdeieN~>
+!BU8[l0SHL!<3#t!<)rr!;uls!<)rt!;HNl!!3*"r;Z]qr;Zcs!<;utrVuisrr;rtrVufrr;Z`r
+!<<#ur;ZTnp](0lr;Z`rs8W&urr;uu!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;ourrDusrW)co
+r;ccqrr<'!r;c`pr;Zlu!;QTj!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu!<;utqu?Wq
+p\t3nq>^BnqZ$Ko!WN/ps7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!
+r;c`pr;Zlu!.k0Ks8M6`c8pI~>
+!B:&Xj6ZgF!<3#t!<)rr!;uls!<)rt!;HNl!!3*"r;Z]qr;Zcs!<;utrVuisrr;rtrVufrr;Z`r
+!<<#ur;ZTnp](0lr;Z`rs8W&urr;uu!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8;ourrDusrW)co
+r;ccqrr<'!r;c`pr;Zlu!;QTj!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu!<;utqu?Wq
+p\t3nq>^BnqZ$Ko!WN/ps7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccqrr<'!
+r;c`pr;Zlu!.k0Ks8M$Z_`*)~>
+!BpJ^mHacP!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!<)ot!;uis
+!<)ot!<)ot!;lfr!<2uu!;lcr!;-9k!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot
+!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;HKn
+!<)rt!<)ot!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!;c]q!;HKn!;c]q!<)ot!;uis!<)rt!;?Em
+!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0K
+s8MBdeieN~>
+!BU8[l0J?L!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!<)ot!;uis
+!<)ot!<)ot!;lfr!<2uu!;lcr!;-9k!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot
+!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;HKn
+!<)rt!<)ot!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!;c]q!;HKn!;c]q!<)ot!;uis!<)rt!;?Em
+!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0K
+s8M6`c8pI~>
+!B:&Xj6Q^F!;uis!<)ot!<)ot!;uis!;uis!;QQo!<)rt!<)ot!<)ot!;uls!<)ot!<)ot!;uis
+!<)ot!<)ot!;lfr!<2uu!;lcr!;-9k!<)ot!;uis!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot
+!;uis!<)rt!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;ZWp!<)ot!;HKn
+!<)rt!<)ot!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!;c]q!;HKn!;c]q!<)ot!;uis!<)rt!;?Em
+!;ZWp!;uis!<)rt!<)ot!<)ot!<)rt!;lcr!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!.k0K
+s8M$Z_`*)~>
+!BpJ^mHacP!;uis!<2uu!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;lcr!<)ot!;uis!;uis!<2uu
+!<)ot!;lcr!;uis!;?Em!;6?l!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`s
+rVlitr;Q`sqYpNqqu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpqu6Wrrr2ru
+qu6Wrrr2rurr2rurr2rurr2ruqu6Wrqu6Wrp\t3nqu6Wrqu6Wrrr2ruqu6WrpAY*mq>UEpr;Q`s
+rVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcD\Krp9a;4b*~>
+!BU8[l0J?L!;uis!<2uu!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;lcr!<)ot!;uis!;uis!<2uu
+!<)ot!;lcr!;uis!;?Em!;6?l!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`s
+rVlitr;Q`sqYpNqqu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpqu6Wrrr2ru
+qu6Wrrr2rurr2rurr2rurr2ruqu6Wrqu6Wrp\t3nqu6Wrqu6Wrrr2ruqu6WrpAY*mq>UEpr;Q`s
+rVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcD\KrojI/3e.~>
+!B:&Xj6Q^F!;uis!<2uu!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;lcr!<)ot!;uis!;uis!<2uu
+!<)ot!;lcr!;uis!;?Em!;6?l!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`s
+rVlitr;Q`sqYpNqqu6Wrqu6WrrVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpqu6Wrrr2ru
+qu6Wrrr2rurr2rurr2rurr2ruqu6Wrqu6Wrp\t3nqu6Wrqu6Wrrr2ruqu6WrpAY*mq>UEpr;Q`s
+rVlitr;Q`srr2ruqu6Wrqu6WrpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcD\Kro4$s2h1~>
+!BpJ^mHX]O!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;uis!<2uu!<)rn
+!;uis!;?Em!;6Bf!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis
+!;ulr!;$3j!;c]q!;lcr!;ZWp!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;lfl
+!<2uu!;lcr!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr
+!.k0Hs8MBdeieN~>
+!BU8[l0A9K!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;uis!<2uu!<)rn
+!;uis!;?Em!;6Bf!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis
+!;ulr!;$3j!;c]q!;lcr!;ZWp!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;lfl
+!<2uu!;lcr!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr
+!.k0Hs8M6`c8pI~>
+!B:&Xj6HXE!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;uis!<2uu!<)rn
+!;uis!;?Em!;6Bf!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis
+!;ulr!;$3j!;c]q!;lcr!;ZWp!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;lfl
+!<2uu!;lcr!;?Em!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr!;lcr!<)ot!;uis!;ulr
+!.k0Hs8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;lct!<3&srr<&l
+rr<&mrr<&lrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)prr<&rrr<&rrr<&trr<&srr<&p
+s8N)lrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&nrr<&rrr<&n
+rr<&rrr<&mrr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N(M
+s/5nrm/bd$J,~>
+!BU8[l0A9K!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;lct!<3&srr<&l
+rr<&mrr<&lrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)prr<&rrr<&rrr<&trr<&srr<&p
+s8N)lrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&nrr<&rrr<&n
+rr<&rrr<&mrr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N(M
+s/5nrklK'jJ,~>
+!B:&Xj6HXE!<2uu!<)ot!;lcr!<)ot!;uis!;ZWp!;HKn!;lcr!<)ot!;uis!;lct!<3&srr<&l
+rr<&mrr<&lrr<&ks8N)qrr<&rrr<&trr<&prr<&is8N)os8N)prr<&rrr<&rrr<&trr<&srr<&p
+s8N)lrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&nrr<&rrr<&n
+rr<&rrr<&mrr<&prr<&srr<&trr<&srr<&urr<&krr<&mrr<&rrr<&rrr<&trr<&srr<&ps8N(M
+s/5nrirR%VJ,~>
+!BpJ^mHOWP!<3&srr<&rrr<&trr<&srr<&prr<&nrr<&rrr<&trr<&srr<&rrrN3#!;uis!;6?l
+!;?Em!;6?l!;6?o!<<'!qu6Wrqu6WrrVlitq>UEppAY*mr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpp\t3nqu6Wrrr2rurr2rurr2rurr2ruqu6Wr
+qu6Wrp\t3nqu6Wrp\t3nqu6WrpAY*mq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`sJcD\Krp9a;4b*~>
+!BU8[l083L!<3&srr<&rrr<&trr<&srr<&prr<&nrr<&rrr<&trr<&srr<&rrrN3#!;uis!;6?l
+!;?Em!;6?l!;6?o!<<'!qu6Wrqu6WrrVlitq>UEppAY*mr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpp\t3nqu6Wrrr2rurr2rurr2rurr2ruqu6Wr
+qu6Wrp\t3nqu6Wrp\t3nqu6WrpAY*mq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`sJcD\KrojI/3e.~>
+!B:&Xj6?RF!<3&srr<&rrr<&trr<&srr<&prr<&nrr<&rrr<&trr<&srr<&rrrN3#!;uis!;6?l
+!;?Em!;6?l!;6?o!<<'!qu6Wrqu6WrrVlitq>UEppAY*mr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`spAY*mqYpNqqu6Wrq>UEpp\t3nqu6Wrrr2rurr2rurr2rurr2ruqu6Wr
+qu6Wrp\t3nqu6Wrp\t3nqu6WrpAY*mq>UEpr;Q`srVlitr;Q`srr2ruo`"mkpAY*mqu6Wrqu6Wr
+rVlitr;Q`srVlitr;Q`sJcD\Kro4$s2h1~>
+!BpJ^mHOWP!<3&rrr<&trr<&srr<&ts8N)orr<&ts8N)trr<&trr<&srr<&srr<&qrr<&qrr<&t
+s8N)srr<&mrr<&trr<&prr<&ts8N)trr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&t
+s8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&mrr<&trr<&urr<&trr<&nrr<&ts8N)t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&qrr<&nrr<&qrr<&ts8N)trr<&ts8N)mrr<&prr<&t
+s8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(M
+s02P&m/bd$J,~>
+!BU8[l083L!<3&rrr<&trr<&srr<&ts8N)orr<&ts8N)trr<&trr<&srr<&srr<&qrr<&qrr<&t
+s8N)srr<&mrr<&trr<&prr<&ts8N)trr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&t
+s8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&mrr<&trr<&urr<&trr<&nrr<&ts8N)t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&qrr<&nrr<&qrr<&ts8N)trr<&ts8N)mrr<&prr<&t
+s8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(M
+s02P&klK'jJ,~>
+!B:&Xj6?RF!<3&rrr<&trr<&srr<&ts8N)orr<&ts8N)trr<&trr<&srr<&srr<&qrr<&qrr<&t
+s8N)srr<&mrr<&trr<&prr<&ts8N)trr<&trr<&ss8N)trr<&srr<&orr<&ts8N)ts8N)trr<&t
+s8N)trr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&mrr<&trr<&urr<&trr<&nrr<&ts8N)t
+rr<&trr<&trr<&urr<&urr<&us8N)trr<&qrr<&nrr<&qrr<&ts8N)trr<&ts8N)mrr<&prr<&t
+s8N)trr<&srr<&trr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&rs8N(M
+s02P&irR%VJ,~>
+!BpJ^mHFQM!;ZZn!;c`o!!<0#!;QTm!;c`o!;ulr!<3#t!;lcr!;ZZn!;uln!;ZZn!;HNl!;ulr
+!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHnr;ccqrW)rtrW)rt!<E/u!;-<i
+!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnrVu]or;Z]qqZ$Ko!ri6#q>^9kr;Z]q
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms02P&m/bd$J,~>
+!BU8[l0/-I!;ZZn!;c`o!!<0#!;QTm!;c`o!;ulr!<3#t!;lcr!;ZZn!;uln!;ZZn!;HNl!;ulr
+!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHnr;ccqrW)rtrW)rt!<E/u!;-<i
+!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnrVu]or;Z]qqZ$Ko!ri6#q>^9kr;Z]q
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms02P&klK'jJ,~>
+!B:&Xj66LC!;ZZn!;c`o!!<0#!;QTm!;c`o!;ulr!<3#t!;lcr!;ZZn!;uln!;ZZn!;HNl!;ulr
+!<<)u!<)ou!<;utrVu]oqu?Tpqu6Zss8;rqrrE-"r;ccqq>gHnr;ccqrW)rtrW)rt!<E/u!;-<i
+!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnrVu]or;Z]qqZ$Ko!ri6#q>^9kr;Z]q
+"TJH%s8W&urr;rtrVufrq#C9mrVu]or;Z]qr;Z`rrr;rtrr3!!s8;ros8N(Ms02P&irR%VJ,~>
+!BpJ^mHFQM!.k1Err<%Ms5*bU!.k0$s,R-Ym/bd$J,~>
+!BU8[l0/-I!.k1Err<%Ms5*bU!.k0$s,R-YklK'jJ,~>
+!B:&Xj66LC!.k1Err<%Ms5*bU!.k0$s,R-YirR%VJ,~>
+!BpJ^mHOWN!.k1Drr<%Ms5*bU!.k0$s,R-Ym/bd$J,~>
+!BU8[l083J!.k1Drr<%Ms5*bU!.k0$s,R-YklK'jJ,~>
+!B:&Xj6?RD!.k1Drr<%Ms5*bU!.k0$s,R-YirR%VJ,~>
+!BpJ^mHOWN!.k1Drr<%Ms5*bU!.k0$s,R-Ym/bd$J,~>
+!BU8[l083J!.k1Drr<%Ms5*bU!.k0$s,R-YklK'jJ,~>
+!B:&Xj6?RD!.k1Drr<%Ms5*bU!.k0$s,R-YirR%VJ,~>
+!BpJ^mHjlN!.k1Fs8;qKs5F"V!.k0$s,d9[m/bd$J,~>
+!BU8[l0SHJ!.k1Fs8;qKs5F"V!.k0$s,d9[klK'jJ,~>
+!B:&Xj6ZgD!.k1Fs8;qKs5F"V!.k0$s,d9[irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!;?Hm!8@JN!6P9@!;?Hm!.k0Ss8;rXs8;r-s8;qKs2Y0=m/bd$J,~>
+!BU8[l,E]&!;?Hm!8@JN!6P9@!;?Hm!.k0Ss8;rXs8;r-s8;qKs2Y0=klK'jJ,~>
+!B:&Xj2M&u!;?Hm!8@JN!6P9@!;?Hm!.k0Ss8;rXs8;r-s8;qKs2Y0=irR%VJ,~>
+!BpJ^mG7g<!:g*h!;?Hm!8@JN!;HNf!8[\T!;?Hm!2]_p!9=(Z!;?Em!94"Y!8IMR!8RSS!6bBB
+!:9^c!.k0js8MBdeieN~>
+!BU8[l.uC8!:g*h!;?Hm!8@JN!;HNf!8[\T!;?Hm!2]_p!9=(Z!;?Em!94"Y!8IMR!8RSS!6bBB
+!:9^c!.k0js8M6`c8pI~>
+!B:&Xj5'b2!:g*h!;?Hm!8@JN!;HNf!8[\T!;?Hm!2]_p!9=(Z!;?Em!94"Y!8IMR!8RSS!6bBB
+!:9^c!.k0js8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!:p0i!6Y?A!;HNf!8[\T!1Nrf!<3#u!9O4\!;?Em!94"Y!8RSS!8IMR!6bBB
+!:9^c!.k0js8MBdeieN~>
+!BU8[l0\ND!<)rm!:p0i!6Y?A!;HNf!8[\T!1Nrf!<3#u!9O4\!;?Em!94"Y!8RSS!8IMR!6bBB
+!:9^c!.k0js8M6`c8pI~>
+!B:&Xj6cm>!<)rm!:p0i!6Y?A!;HNf!8[\T!1Nrf!<3#u!9O4\!;?Em!94"Y!8RSS!8IMR!6bBB
+!:9^c!.k0js8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<3#q!<3#o!<)rq!;ZZn!<)rs!!*&t!;ulo!;c`q!;6Bl!<)rt!!*&u
+!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!6bBB!;uis!9O4\!7q/M
+!8RSS!8IMR!4Dh,!.k0js8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<3#q!<3#o!<)rq!;ZZn!<)rs!!*&t!;ulo!;c`q!;6Bl!<)rt!!*&u
+!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!6bBB!;uis!9O4\!7q/M
+!8RSS!8IMR!4Dh,!.k0js8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<3#q!<3#o!<)rq!;ZZn!<)rs!!*&t!;ulo!;c`q!;6Bl!<)rt!!*&u
+!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!6bBB!;uis!9O4\!7q/M
+!8RSS!8IMR!4Dh,!.k0js8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZns82los7lZps7cTns7lZls8N)ls8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!6kHC!;c]u!<<'!!<)rt!;ulq
+!;lfm!;ulr!;ZZn!;uls!!*&t!;uln!;ulq!!3*"p](0lqu?Kmq>^Hp!<;utqu?Tpq#:<oqu?Wq
+rr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ns4./Km/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZns82los7lZps7cTns7lZls8N)ls8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!6kHC!;c]u!<<'!!<)rt!;ulq
+!;lfm!;ulr!;ZZn!;uls!!*&t!;uln!;ulq!!3*"p](0lqu?Kmq>^Hp!<;utqu?Tpq#:<oqu?Wq
+rr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ns4./KklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZns82los7lZps7cTns7lZls8N)ls8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!6kHC!;c]u!<<'!!<)rt!;ulq
+!;lfm!;ulr!;ZZn!;uls!!*&t!;uln!;ulq!!3*"p](0lqu?Kmq>^Hp!<;utqu?Tpq#:<oqu?Wq
+rr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ns4./KirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)u
+s8N)ts8N)rs8N)ls82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#t
+s8N)us8N)ts8N)Crr<&qrr<&urr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&r
+rr<&prr<&ts8N)orr<&trr<&qrr<&ks8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&t
+rr<&trr<&ts8N*!s8N*!rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Ms4./Km/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)u
+s8N)ts8N)rs8N)ls82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#t
+s8N)us8N)ts8N)Crr<&qrr<&urr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&r
+rr<&prr<&ts8N)orr<&trr<&qrr<&ks8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&t
+rr<&trr<&ts8N*!s8N*!rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Ms4./KklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)u
+s8N)ts8N)rs8N)ls82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#t
+s8N)us8N)ts8N)Crr<&qrr<&urr<&srr<&trr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&r
+rr<&prr<&ts8N)orr<&trr<&qrr<&ks8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&t
+rr<&trr<&ts8N*!s8N*!rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Ms4./KirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZis8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)os8N)rs8N)l
+s82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r=rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&rrr<&trr<&srr<&rrr<&prr<&srr<&prr<&r
+rr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u
+!!)or!!)]l!!)ip!!)lq!!)rs!!%TMec5X9!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZis8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)os8N)rs8N)l
+s82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r=rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&rrr<&trr<&srr<&rrr<&prr<&srr<&prr<&r
+rr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u
+!!)or!!)]l!!)ip!!)lq!!)rs!!%TMec5X5!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZis8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)os8N)rs8N)l
+s82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r=rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&rrr<&trr<&srr<&rrr<&prr<&srr<&prr<&r
+rr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u
+!!)or!!)]l!!)ip!!)lq!!)rs!!%TMec5X/!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`os7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)us7lZls8N)l
+s8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f>rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rs7lZnrr<&srr<&rrr<&os8E#lrr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lq
+qZ-Hl!!)iprW%NLdf9=6!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`os7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)us7lZls8N)l
+s8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f>rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rs7lZnrr<&srr<&rrr<&os8E#lrr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lq
+qZ-Hl!!)iprW%NLdf9=2!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`os7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)us7lZls8N)l
+s8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f>rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rs7lZnrr<&srr<&rrr<&os8E#lrr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lq
+qZ-Hl!!)iprW%NLdf9=,!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N*!s7cTk
+s8N)ls8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l@rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&srr<&rrr<&ls8N)orr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or
+!!)rs!!)ip!!)`mrr@WMeGoO8!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N*!s7cTk
+s8N)ls8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l@rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&srr<&rrr<&ls8N)orr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or
+!!)rs!!)ip!!)`mrr@WMeGoO4!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N*!s7cTk
+s8N)ls8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l@rr<&q
+rr<&urr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&srr<&rrr<&ls8N)orr<&rrr<&rrr<&k
+rr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or
+!!)rs!!)ip!!)`mrr@WMeGoO.!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N*!s8N)ss8N)rs8N)ls8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Brr<&srr<&trr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&s
+rr<&rrr<&prr<&srr<&prr<&rrr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)fo!W`6#qu6Wrr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEpqYpNqr;Q`sJcF:#rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N*!s8N)ss8N)rs8N)ls8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Brr<&srr<&trr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&s
+rr<&rrr<&prr<&srr<&prr<&rrr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)fo!W`6#qu6Wrr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEpqYpNqr;Q`sJcF:#rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N*!s8N)ss8N)rs8N)ls8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Brr<&srr<&trr<&srr<&urr<&rrr<&rrr<&mrr<&rrr<&mrr<&s
+rr<&rrr<&prr<&srr<&prr<&rrr<&rrr<&krr<&rrrW9$rrDrr!!)lq!!)fo!W`6#qu6Wrr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEpqYpNqr;Q`sJcF:#ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs7?<js7lZps7lZos7lZps8;rts8;ots7ZNns7lZks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZ<s8N)us8N)trr<&ts8N)trr<&t
+rr<&qrr<&trr<&rrr<&qrr<&ts8N)trr<&srr<&rrr<&trr<&us8N)trr<&orr<&trr<&qrr<&k
+s8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr
+!<)rt!;ZWp!;c`q!<)ot!;lfr!.k1+s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs7?<js7lZps7lZos7lZps8;rts8;ots7ZNns7lZks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZ<s8N)us8N)trr<&ts8N)trr<&t
+rr<&qrr<&trr<&rrr<&qrr<&ts8N)trr<&srr<&rrr<&trr<&us8N)trr<&orr<&trr<&qrr<&k
+s8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr
+!<)rt!;ZWp!;c`q!<)ot!;lfr!.k1+s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs7?<js7lZps7lZos7lZps8;rts8;ots7ZNns7lZks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZ<s8N)us8N)trr<&ts8N)trr<&t
+rr<&qrr<&trr<&rrr<&qrr<&ts8N)trr<&srr<&rrr<&trr<&us8N)trr<&orr<&trr<&qrr<&k
+s8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr
+!<)rt!;ZWp!;c`q!<)ot!;lfr!.k1+s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;rts82is
+s8E#us7lZks7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`:s8E#p
+s8;p!rr<&ts8;rms8;rrs7u`ns8;rqs8E#ts8E#qs8;rrrrE-"r;cQkr;c`pq>g<j!<E/u!;lfp
+!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$Qq
+JcFR+rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;rts82is
+s8E#us7lZks7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`:s8E#p
+s8;p!rr<&ts8;rms8;rrs7u`ns8;rqs8E#ts8E#qs8;rrrrE-"r;cQkr;c`pq>g<j!<E/u!;lfp
+!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$Qq
+JcFR+rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;rts82is
+s8E#us7lZks7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`:s8E#p
+s8;p!rr<&ts8;rms8;rrs7u`ns8;rqs8E#ts8E#qs8;rrrrE-"r;cQkr;c`pq>g<j!<E/u!;lfp
+!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$Qq
+JcFR+ro4$s2h1~>
+!BpJ^mHsrH!.k0+s8E#trr<%Rrr<&Urr<%Ms+ULPm/bd$J,~>
+!BU8[l0\ND!.k0+s8E#trr<%Rrr<&Urr<%Ms+ULPklK'jJ,~>
+!B:&Xj6cm>!.k0+s8E#trr<%Rrr<&Urr<%Ms+ULPirR%VJ,~>
+!BpJ^mHsrH!.k0,rr<&us8E"Prr<&Vrr<%Ms+LFOm/bd$J,~>
+!BU8[l0\ND!.k0,rr<&us8E"Prr<&Vrr<%Ms+LFOklK'jJ,~>
+!B:&Xj6cm>!.k0,rr<&us8E"Prr<&Vrr<%Ms+LFOirR%VJ,~>
+!BpJ^m=G:gs+144rr<&Vrr<%Ms+LFOm/bd$J,~>
+!BU8[l%/kcs+144rr<&Vrr<%Ms+LFOklK'jJ,~>
+!B:&Xj+75]s+144rr<&Vrr<%Ms+LFOirR%VJ,~>
+!BpJ^m=G:gs+145s8;rYs82kJs+ULPm/bd$J,~>
+!BU8[l%/kcs+145s8;rYs82kJs+ULPklK'jJ,~>
+!B:&Xj+75]s+145s8;rYs82kJs+ULPirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEtt3!9X=\!8mhV!5AL5!;?Hm!3#qt!6kKC!:Kmc!8.>O!;ZZp!7CiF!4`(-!.k1;s8MBd
+eieN~>
+!BU8[l-]P/!9X=\!8mhV!5AL5!;?Hm!3#qt!6kKC!:Kmc!8.>O!;ZZp!7CiF!4`(-!.k1;s8M6`
+c8pI~>
+!B:&Xj3do)!9X=\!8mhV!5AL5!;?Hm!3#qt!6kKC!:Kmc!8.>O!;ZZp!7CiF!4`(-!.k1;s8M$Z
+_`*)~>
+!BpJ^mG.a>!;lfo!9X=\!8mhV!:9a[!8[\T!;?Hm!42_#!<2uu!6bBB!:Tpf!;HKn!8d_U!;QQo
+!7(TE!6bBB!:9^c!.k1;s8MBdeieN~>
+!BU8[l.l=:!;lfo!9X=\!8mhV!:9a[!8[\T!;?Hm!42_#!<2uu!6bBB!:Tpf!;HKn!8d_U!;QQo
+!7(TE!6bBB!:9^c!.k1;s8M6`c8pI~>
+!B:&Xj4s\4!;lfo!9X=\!8mhV!:9a[!8[\T!;?Hm!42_#!<2uu!6bBB!:Tpf!;HKn!8d_U!;QQo
+!7(TE!6bBB!:9^c!.k1;s8M$Z_`*)~>
+!BpJ^mHsrH!;ulo!;ZZp!9O7\!6G37!8[\T!2fbr!<2uu!<2uu!<2uu!6bBB!:^!g!;?Em!8d_U
+!;QQo!7(TE!6bBB!:9^c!.k1;s8MBdeieN~>
+!BU8[l0\ND!;ulo!;ZZp!9O7\!6G37!8[\T!2fbr!<2uu!<2uu!<2uu!6bBB!:^!g!;?Em!8d_U
+!;QQo!7(TE!6bBB!:9^c!.k1;s8M6`c8pI~>
+!B:&Xj6cm>!;ulo!;ZZp!9O7\!6G37!8[\T!2fbr!<2uu!<2uu!<2uu!6bBB!:^!g!;?Em!8d_U
+!;QQo!7(TE!6bBB!:9^c!.k1;s8M$Z_`*)~>
+!BpJ^mHsrH!;c`o!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!<)rq!;c`o!!<0#
+!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!8%5N
+!<2uu!<2uu!<2uu!6bBB!:^!g!7LlI!;QQo!7(TE!4Dh,!.k1;s8MBdeieN~>
+!BU8[l0\ND!;c`o!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!<)rq!;c`o!!<0#
+!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!8%5N
+!<2uu!<2uu!<2uu!6bBB!:^!g!7LlI!;QQo!7(TE!4Dh,!.k1;s8M6`c8pI~>
+!B:&Xj6cm>!;c`o!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!<)rq!;c`o!!<0#
+!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!8%5N
+!<2uu!<2uu!<2uu!6bBB!:^!g!7LlI!;QQo!7(TE!4Dh,!.k1;s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ps8;rns8N)rs7cTos7lZos7lZps7ZNns7lZos82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!<2uu!<2uu!<3!!!<;ut
+qu?TpqZ$Ko!WN/ts8;rjs8;ourrDusr;c`pq>gHnrW)iqrr<'!r;c`pr;c]or;Zlu!;QQp!<;ut
+rVuisrr;rtqZ$Qq!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`r
+q>^Bnq#:<oJcG-;rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ps8;rns8N)rs7cTos7lZos7lZps7ZNns7lZos82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!<2uu!<2uu!<3!!!<;ut
+qu?TpqZ$Ko!WN/ts8;rjs8;ourrDusr;c`pq>gHnrW)iqrr<'!r;c`pr;c]or;Zlu!;QQp!<;ut
+rVuisrr;rtqZ$Qq!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`r
+q>^Bnq#:<oJcG-;rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ps8;rns8N)rs7cTos7lZos7lZps7ZNns7lZos82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!<2uu!<2uu!<3!!!<;ut
+qu?TpqZ$Ko!WN/ts8;rjs8;ourrDusr;c`pq>gHnrW)iqrr<'!r;c`pr;c]or;Zlu!;QQp!<;ut
+rVuisrr;rtqZ$Qq!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z's8N'!r;Z`r
+q>^Bnq#:<oJcG-;ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N)Jrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)trr<&trr<&n
+rr<&ts8N)trr<&trr<&qrr<&mrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)os8N)trr<&trr<&s
+rr<&os8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!rr<&r
+rr<&qrr<&trr<&prr<%Ms6]jcm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N)Jrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)trr<&trr<&n
+rr<&ts8N)trr<&trr<&qrr<&mrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)os8N)trr<&trr<&s
+rr<&os8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!rr<&r
+rr<&qrr<&trr<&prr<%Ms6]jcklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)ts8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N)Jrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)trr<&trr<&n
+rr<&ts8N)trr<&trr<&qrr<&mrr<&qs8N)trr<&trr<&trr<&srr<&ts8N)os8N)trr<&trr<&s
+rr<&os8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!rr<&r
+rr<&qrr<&trr<&prr<%Ms6]jcirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#j
+s8N)rs8N)ss8N)ss8N)os82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;rDrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&rrr<&prr<&rrr<&urr<&r
+rr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&urr<&rrr<&orr<&rrr<&urr<&srr<&orr<&rrrW9$
+rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!%TM
+mJm1Q!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#j
+s8N)rs8N)ss8N)ss8N)os82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;rDrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&rrr<&prr<&rrr<&urr<&r
+rr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&urr<&rrr<&orr<&rrr<&urr<&srr<&orr<&rrrW9$
+rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!%TM
+mJm1M!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#j
+s8N)rs8N)ss8N)ss8N)os82lps8N)ts8N)us8N)ts8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!
+s8N)ts8N)us8;rDrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&rrr<&prr<&rrr<&urr<&r
+rr<&rrr<&mrr<&qrr<&srr<&urr<&rrr<&urr<&rrr<&orr<&rrr<&urr<&srr<&orr<&rrrW9$
+rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!%TM
+mJm1G!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZls8N)s
+s8N)hs8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fE
+rr<&qrr<&srr<&urr<&rrr<&ss8E#qs7lZjrr<&rrr<&us7lZlrr<&mrr<&qrr<&srr<&us7lZo
+rr<&rrr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!%TMmJm1Q!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZls8N)s
+s8N)hs8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fE
+rr<&qrr<&srr<&urr<&rrr<&ss8E#qs7lZjrr<&rrr<&us7lZlrr<&mrr<&qrr<&srr<&us7lZo
+rr<&rrr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!%TMmJm1M!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZls8N)s
+s8N)hs8N*!rr<&ss8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fE
+rr<&qrr<&srr<&urr<&rrr<&ss8E#qs7lZjrr<&rrr<&us7lZlrr<&mrr<&qrr<&srr<&us7lZo
+rr<&rrr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!%TMmJm1G!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cTks8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lGrr<&q
+rr<&srr<&urr<&rrr<&ps8N)trr<&irr<&rrr<&urr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&r
+rr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or
+!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1Q!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cTks8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lGrr<&q
+rr<&srr<&urr<&rrr<&ps8N)trr<&irr<&rrr<&urr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&r
+rr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or
+!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1M!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cTks8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lGrr<&q
+rr<&srr<&urr<&rrr<&ps8N)trr<&irr<&rrr<&urr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&r
+rr<&orr<&rrr<&trr<&urr<&nrr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u!!)or
+!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1G!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)s
+s8N)rs8N)ss8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Jrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&irr<&rrr<&u
+rr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&rrr<&orr<&rrr<&srrN3#!;?Em!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1Q
+!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)s
+s8N)rs8N)ss8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Jrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&irr<&rrr<&u
+rr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&rrr<&orr<&rrr<&srrN3#!;?Em!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1M
+!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)s
+s8N)rs8N)ss8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)Jrr<&qrr<&srr<&urr<&rrr<&trr<&srr<&urr<&irr<&rrr<&u
+rr<&krr<&mrr<&qrr<&srr<&urr<&nrr<&rrr<&orr<&rrr<&srrN3#!;?Em!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!%TMmJm1G
+!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ts82lss82iss7lZos7lZos7lZps7cTos7lZos7ZNns7lZos7cTk
+s7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZDrr<&qrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)rrr<&mrr<&qrr<&srr<&trr<&ts8N)t
+rr<&ts8N)os8N)trr<&rrrN3#!;?Hm!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&t
+rr<&trr<&urr<&urr<&rrr<&rrr<&ts8N)prr<%Ms6]jcm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ts82lss82iss7lZos7lZos7lZps7cTos7lZos7ZNns7lZos7cTk
+s7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZDrr<&qrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)rrr<&mrr<&qrr<&srr<&trr<&ts8N)t
+rr<&ts8N)os8N)trr<&rrrN3#!;?Hm!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&t
+rr<&trr<&urr<&urr<&rrr<&rrr<&ts8N)prr<%Ms6]jcklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ts82lss82iss7lZos7lZos7lZps7cTos7lZos7ZNns7lZos7cTk
+s7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZDrr<&qrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)rrr<&mrr<&qrr<&srr<&trr<&ts8N)t
+rr<&ts8N)os8N)trr<&rrrN3#!;?Hm!<)ot!<)ot!<)ot!;ZWp!;QQq!<3&rrr<&srr<&trr<&t
+rr<&trr<&urr<&urr<&rrr<&rrr<&ts8N)prr<%Ms6]jcirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&us82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82is
+s8E#us7lZns8)fls7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`F
+s82lqs8E#ts8E#ss8;rprrE-"r;c`pr;cNjr;Zp!!!)utr;c`pq>gKoq>gNprW)rtrW)osr;c]o
+r;Zp!!!)lqrr<'!r;cZn!!)]l!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!
+!<<)q!<)rr!!*&u!<3#p!.k1>s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&us82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82is
+s8E#us7lZns8)fls7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`F
+s82lqs8E#ts8E#ss8;rprrE-"r;c`pr;cNjr;Zp!!!)utr;c`pq>gKoq>gNprW)rtrW)osr;c]o
+r;Zp!!!)lqrr<'!r;cZn!!)]l!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!
+!<<)q!<)rr!!*&u!<3#p!.k1>s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&us82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82is
+s8E#us7lZns8)fls7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`F
+s82lqs8E#ts8E#ss8;rprrE-"r;c`pr;cNjr;Zp!!!)utr;c`pq>gKoq>gNprW)rtrW)osr;c]o
+r;Zp!!!)lqrr<'!r;cZn!!)]l!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr!<)rs!<<*!!<<*!
+!<<)q!<)rr!!*&u!<3#p!.k1>s8M$Z_`*)~>
+!BpJ^mHsrH!9!nW!.k0$s,d6\!;6?l!8d_U!.k0Ns8MBdeieN~>
+!BU8[l0\ND!9!nW!.k0$s,d6\!;6?l!8d_U!.k0Ns8M6`c8pI~>
+!B:&Xj6cm>!9!nW!.k0$s,d6\!;6?l!8d_U!.k0Ns8M$Z_`*)~>
+!BpJ^mHsrH!9*tW!.k0$s,m<]!;-9k!8meV!.k0Ms8MBdeieN~>
+!BU8[l0\ND!9*tW!.k0$s,m<]!;-9k!8meV!.k0Ms8M6`c8pI~>
+!B:&Xj6cm>!9*tW!.k0$s,m<]!;-9k!8meV!.k0Ms8M$Z_`*)~>
+!BpJ^mD],&!.k0$s,d6\!;-9k!8meV!.k0Ms8MBdeieN~>
+!BU8[l,E]"!.k0$s,d6\!;-9k!8meV!.k0Ms8M6`c8pI~>
+!B:&Xj2M&q!.k0$s,d6\!;-9k!8meV!.k0Ms8M$Z_`*)~>
+!BpJ^mD],'!.k0$s-!E[!;?Hk!9F1X!.k0Ns8MBdeieN~>
+!BU8[l,E]#!.k0$s-!E[!;?Hk!9F1X!.k0Ns8M6`c8pI~>
+!B:&Xj2M&r!.k0$s-!E[!;?Hk!9F1X!.k0Ns8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mB-Bg!;?Em!.k0$s+13$s/,hqm/bd$J,~>
+!BU8[l)jsc!;?Em!.k0$s+13$s/,hqklK'jJ,~>
+!B:&Xj/r=]!;?Em!.k0$s+13$s/,hqirR%VJ,~>
+!BpJ^mB-Bg!;?Em!.k0$s+13$s/,hqm/bd$J,~>
+!BU8[l)jsc!;?Em!.k0$s+13$s/,hqklK'jJ,~>
+!B:&Xj/r=]!;?Em!.k0$s+13$s/,hqirR%VJ,~>
+!BpJ^mB-Bg!.k0$s+13$s-iuem/bd$J,~>
+!BU8[l)jsc!.k0$s+13$s-iueklK'jJ,~>
+!B:&Xj/r=]!.k0$s+13$s-iueirR%VJ,~>
+!BpJ^mFqU=!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcC<$
+JcC<$b5_J.!S0Da~>
+!BU8[l.Z19!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcC<$
+JcC<$b5_J*!R<`V~>
+!B:&Xj4aP3!;c`o!!`H'!<<'!!<)rt!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"JcC<$
+JcC<$b5_J$!Q-jH~>
+!BpJ^mG%X@!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l.c4<!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj4jS6!<)ot!;uis!<)rt!<)ot!;uis!<)ot!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot
+!<)ot!<)rt!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mG.^A!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l.l:=!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj4sY7!;lcr!<2uu!;lcr!<)ot!;uis!;QQo!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mG.a;!<2uu!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$
+s+13$s2Y0=m/bd$J,~>
+!BU8[l.l=7!<2uu!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$
+s+13$s2Y0=klK'jJ,~>
+!B:&Xj4s\1!<2uu!;lcr!<)ot!;uis!<)rp!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ulr!.k0$
+s+13$s2Y0=irR%VJ,~>
+!BpJ^mG.^A!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k0$s+13$s2k<?m/bd$J,~>
+!BU8[l.l:=!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k0$s+13$s2k<?klK'jJ,~>
+!B:&Xj4sY7!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k0$s+13$s2k<?irR%VJ,~>
+!BpJ^mG.^A!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l.l:=!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj4sY7!;HKn!;lcr!<)ot!;uis!<2uu!;uis!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!<)ot
+!;uis!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mG%X@!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!<)rt!<)ot!;lfr!.k0$s+13$s3grHm/bd$J,~>
+!BU8[l.c4<!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!<)rt!<)ot!;lfr!.k0$s+13$s3grHklK'jJ,~>
+!B:&Xj4jS6!<)rt!<)ot!<)rt!<)ot!<)rt!<2uu!<)rt!;c]q!<)ot!;lcr!;c]q!<)ot!;uis
+!;uis!<)rt!<)ot!;lfr!.k0$s+13$s3grHirR%VJ,~>
+!BpJ^mFqU=!;c`o!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ro
+s8N(Ms+13$s+13us8MBdeieN~>
+!BU8[l.Z19!;c`o!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ro
+s8N(Ms+13$s+13us8M6`c8pI~>
+!B:&Xj4aP3!;c`o!!3*"r;Z]q!ri6#rr;os!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtrr3!!s8;ro
+s8N(Ms+13$s+13us8M$Z_`*)~>
+!BpJ^mE5G/!.k0$s+13$s+14Ks8MBdeieN~>
+!BU8[l,s#+!.k0$s+13$s+14Ks8M6`c8pI~>
+!B:&Xj3%B%!.k0$s+13$s+14Ks8M$Z_`*)~>
+!BpJ^mE5G/!.k0$s+13$s+14Ks8MBdeieN~>
+!BU8[l,s#+!.k0$s+13$s+14Ks8M6`c8pI~>
+!B:&Xj3%B%!.k0$s+13$s+14Ks8M$Z_`*)~>
+!BpJ^mE5G/!.k0$s+13$s+14Ks8MBdeieN~>
+!BU8[l,s#+!.k0$s+13$s+14Ks8M6`c8pI~>
+!B:&Xj3%B%!.k0$s+13$s+14Ks8M$Z_`*)~>
+!BpJ^mEGV/!.k0$s+13$s+14Ls8MBdeieN~>
+!BU8[l-02+!.k0$s+13$s+14Ls8M6`c8pI~>
+!B:&Xj37Q%!.k0$s+13$s+14Ls8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEtt3!7(WE!2fer!;?Hm!42_*!8RVQ!1Elc!0[B\!9=+X!9F1Y!4;e*m/bd$J,~>
+!BU8[l-]P/!7(WE!2fer!;?Hm!42_*!8RVQ!1Elc!0[B\!9=+X!9F1Y!4;e*klK'jJ,~>
+!B:&Xj3do)!7(WE!2fer!;?Hm!42_*!8RVQ!1Elc!0[B\!9=+X!9F1Y!4;e*irR%VJ,~>
+!BpJ^mG7g:!<<)s!7(WE!7_&C!8[\T!;?Hm!5AL.!<2uu!87AP!6kHC!7:`G!8%5N!;?Em!65$=
+!8RSS!9*qX!4;e*m/bd$J,~>
+!BU8[l.uC6!<<)s!7(WE!7_&C!8[\T!;?Hm!5AL.!<2uu!87AP!6kHC!7:`G!8%5N!;?Em!65$=
+!8RSS!9*qX!4;e*klK'jJ,~>
+!B:&Xj5'b0!<<)s!7(WE!7_&C!8[\T!;?Hm!5AL.!<2uu!87AP!6kHC!7:`G!8%5N!;?Em!65$=
+!8RSS!9*qX!4;e*irR%VJ,~>
+!BpJ^mHsrH!<)rl!;uls!7(WE!7_&C!8[\T!3uP(!<2uu!<2uu!<2uu!87AP!6kHC!7CfH!7q/M
+!;?Em!6>*>!8IMR!9*qX!4;e*m/bd$J,~>
+!BU8[l0\ND!<)rl!;uls!7(WE!7_&C!8[\T!3uP(!<2uu!<2uu!<2uu!87AP!6kHC!7CfH!7q/M
+!;?Em!6>*>!8IMR!9*qX!4;e*klK'jJ,~>
+!B:&Xj6cm>!<)rl!;uls!7(WE!7_&C!8[\T!3uP(!<2uu!<2uu!<2uu!87AP!6kHC!7CfH!7q/M
+!;?Em!6>*>!8IMR!9*qX!4;e*irR%VJ,~>
+!BpJ^mHsrH!;lfr!<)rt!;uls!;ZZn!<3#t!!E6$!<<#ur;Z]qrVuis!<;utrr;cor;ZWorr;os
+s8W&us8W#ts8W#tq>^HprVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis
+!<;utr;ZTnir8uYrr2rurr2rurr2rug&D$Pbl7YCdJj1Hf)G^M]Dhj2g]%6RiVrlX[/^-m!S0Da~>
+!BU8[l0\ND!;lfr!<)rt!;uls!;ZZn!<3#t!!E6$!<<#ur;Z]qrVuis!<;utrr;cor;ZWorr;os
+s8W&us8W#ts8W#tq>^HprVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis
+!<;utr;ZTnir8uYrr2rurr2rurr2rug&D$Pbl7YCdJj1Hf)G^M]Dhj2g]%6RiVrlX[/^-i!R<`V~>
+!B:&Xj6cm>!;lfr!<)rt!;uls!;ZZn!<3#t!!E6$!<<#ur;Z]qrVuis!<;utrr;cor;ZWorr;os
+s8W&us8W#ts8W#tq>^HprVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis
+!<;utr;ZTnir8uYrr2rurr2rurr2rug&D$Pbl7YCdJj1Hf)G^M]Dhj2g]%6RiVrlX[/^-c!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rrW9$!!)rsrrDrrq#CEpp&P-mq#LHpp]1?oq#LBnq#LHp
+pAb3nr;cltr;cZnrrE*!"9AH%!<<#us8W#ts8Viorr;cos8VlprVucqqu?Hls8Viorr;coir8uY
+rr2rurr2rurr3!!s8;rps8;rjs8;rmrr<&ps8;rrs8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ss8E#ts8E#os7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;c`pr;Zlu!;HNl!;lfm!;HNl!!3*"r;Z]qq#:<oq>^Bn!WN0!s8N)ts8N)qrr<&rs8N)t
+s8N)ss8;ourrC=Drp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rrW9$!!)rsrrDrrq#CEpp&P-mq#LHpp]1?oq#LBnq#LHp
+pAb3nr;cltr;cZnrrE*!"9AH%!<<#us8W#ts8Viorr;cos8VlprVucqqu?Hls8Viorr;coir8uY
+rr2rurr2rurr3!!s8;rps8;rjs8;rmrr<&ps8;rrs8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ss8E#ts8E#os7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;c`pr;Zlu!;HNl!;lfm!;HNl!!3*"r;Z]qq#:<oq>^Bn!WN0!s8N)ts8N)qrr<&rs8N)t
+s8N)ss8;ourrC=DrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rrW9$!!)rsrrDrrq#CEpp&P-mq#LHpp]1?oq#LBnq#LHp
+pAb3nr;cltr;cZnrrE*!"9AH%!<<#us8W#ts8Viorr;cos8VlprVucqqu?Hls8Viorr;coir8uY
+rr2rurr2rurr3!!s8;rps8;rjs8;rmrr<&ps8;rrs8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rqs8Duus8E#ss8E#ts8E#os7u`ps8N)ts8N)us8N'!s8;rps8;ourrE#tq>gHnrW)cor;ccq
+rr<'!r;c`pr;Zlu!;HNl!;lfm!;HNl!!3*"r;Z]qq#:<oq>^Bn!WN0!s8N)ts8N)qrr<&rs8N)t
+s8N)ss8;ourrC=Dro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lms8N)ss8E#ss8Duus8Duus8E!#rr<'!rW)osrW)uurW)rt
+rrE#trrDlprrE#trrE#tr;cltrrE*!rrE#trrDioquHZprrE#trrE&urW)rtrrE*!rW)rtrW)os
+rrDcmrrDusrW)osrW)uurW)rtrrE&urrE#trrCpU!!)lqrrE#t!!)ut!!)ut!!)cn!!)ut!!)ip
+!!)lq!!)ut!!)utrrE*!rrE*!!!*#u!!)ut!!)rsrrE#t!!)or!!)ip!!)ut!!)orrrE&u!!)ut
+!!)rs!!)`m!!)ip!!)rs!!)utrrE#t!!)ut!!)utrrDrr!!)`m!!)lq!!)ut!!)rsrrE#t!!)ut
+!!)utrrDio!!)ut!!)lq!!)Zk!!)utrrE#t!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq
+!!)rs!!)ut!!)utrrC=Drp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lms8N)ss8E#ss8Duus8Duus8E!#rr<'!rW)osrW)uurW)rt
+rrE#trrDlprrE#trrE#tr;cltrrE*!rrE#trrDioquHZprrE#trrE&urW)rtrrE*!rW)rtrW)os
+rrDcmrrDusrW)osrW)uurW)rtrrE&urrE#trrCpU!!)lqrrE#t!!)ut!!)ut!!)cn!!)ut!!)ip
+!!)lq!!)ut!!)utrrE*!rrE*!!!*#u!!)ut!!)rsrrE#t!!)or!!)ip!!)ut!!)orrrE&u!!)ut
+!!)rs!!)`m!!)ip!!)rs!!)utrrE#t!!)ut!!)utrrDrr!!)`m!!)lq!!)ut!!)rsrrE#t!!)ut
+!!)utrrDio!!)ut!!)lq!!)Zk!!)utrrE#t!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq
+!!)rs!!)ut!!)utrrC=DrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lms8N)ss8E#ss8Duus8Duus8E!#rr<'!rW)osrW)uurW)rt
+rrE#trrDlprrE#trrE#tr;cltrrE*!rrE#trrDioquHZprrE#trrE&urW)rtrrE*!rW)rtrW)os
+rrDcmrrDusrW)osrW)uurW)rtrrE&urrE#trrCpU!!)lqrrE#t!!)ut!!)ut!!)cn!!)ut!!)ip
+!!)lq!!)ut!!)utrrE*!rrE*!!!*#u!!)ut!!)rsrrE#t!!)or!!)ip!!)ut!!)orrrE&u!!)ut
+!!)rs!!)`m!!)ip!!)rs!!)utrrE#t!!)ut!!)utrrDrr!!)`m!!)lq!!)ut!!)rsrrE#t!!)ut
+!!)utrrDio!!)ut!!)lq!!)Zk!!)utrrE#t!!)ut!!)ip!!)lq!!)utrrE#t!!)rs!!)lq!!)lq
+!!)rs!!)ut!!)utrrC=Dro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lms8N)ss8N)rs8N'.rr<'!rr<'!rr<'!!!)orrrE*!rrE#t
+rrE#trrDZjrrE#trW)fprrE#trrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDus
+rrDrrrrE*!rrE#trrE&ur;bRO!!)lq!!)rs!!*#u!!)or!!)ip!!)or!!)lq!!)or!!)or!!*#u
+!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;lcr!;QQo!;uis!;?Em!;ZWp!;uis!<)ot
+!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l
+!;lcr!;QQo!;ZWp!;lcr!;lcr!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!6tQCm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lms8N)ss8N)rs8N'.rr<'!rr<'!rr<'!!!)orrrE*!rrE#t
+rrE#trrDZjrrE#trW)fprrE#trrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDus
+rrDrrrrE*!rrE#trrE&ur;bRO!!)lq!!)rs!!*#u!!)or!!)ip!!)or!!)lq!!)or!!)or!!*#u
+!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;lcr!;QQo!;uis!;?Em!;ZWp!;uis!<)ot
+!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l
+!;lcr!;QQo!;ZWp!;lcr!;lcr!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!6tQCklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lms8N)ss8N)rs8N'.rr<'!rr<'!rr<'!!!)orrrE*!rrE#t
+rrE#trrDZjrrE#trW)fprrE#trrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDus
+rrDrrrrE*!rrE#trrE&ur;bRO!!)lq!!)rs!!*#u!!)or!!)ip!!)or!!)lq!!)or!!)or!!*#u
+!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!;lcr!;-9k!;lcr!;QQo!;uis!;?Em!;ZWp!;uis!<)ot
+!;uis!<2uu!;lcr!;lcr!;?Em!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;ZWp!;lcr!;lcr!;6?l
+!;lcr!;QQo!;ZWp!;lcr!;lcr!<)ot!;uis!;c]q!;c]q!;uis!<)ot!;uis!6tQCirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDlpq#LBnrrDiorrE*!rrDfnrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrr
+rrE*!rrE#trrE#tqZ,IP!!)lq!!)rs!!*#uq#L6jq#L9k!!)orq#LEo!!*#u!!*#u!W`9#q#LBn
+!!)rs!!)or!!)ipqZ-Nn!!)cn!!*#u!!)]l!!)ip!!)rs!!)ut!!)rs!!*#u!!)Zk!!)`m!!)or
+!!)or!!)ut!!)rs!!)rsrW)Zl!!)or!!)or!!)]l!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq!!)lq
+!!)rs!!)rsrW(+@rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDlpq#LBnrrDiorrE*!rrDfnrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrr
+rrE*!rrE#trrE#tqZ,IP!!)lq!!)rs!!*#uq#L6jq#L9k!!)orq#LEo!!*#u!!*#u!W`9#q#LBn
+!!)rs!!)or!!)ipqZ-Nn!!)cn!!*#u!!)]l!!)ip!!)rs!!)ut!!)rs!!*#u!!)Zk!!)`m!!)or
+!!)or!!)ut!!)rs!!)rsrW)Zl!!)or!!)or!!)]l!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq!!)lq
+!!)rs!!)rsrW(+@rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDlpq#LBnrrDiorrE*!rrDfnrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrr
+rrE*!rrE#trrE#tqZ,IP!!)lq!!)rs!!*#uq#L6jq#L9k!!)orq#LEo!!*#u!!*#u!W`9#q#LBn
+!!)rs!!)or!!)ipqZ-Nn!!)cn!!*#u!!)]l!!)ip!!)rs!!)ut!!)rs!!*#u!!)Zk!!)`m!!)or
+!!)or!!)ut!!)rs!!)rsrW)Zl!!)or!!)or!!)]l!!)`mqZ-Hl!!)or!!)`m!!)rs!!)lq!!)lq
+!!)rs!!)rsrW(+@ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDoqp]19mrrDiorr<-#!!)`mrrDlprrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!
+rrE#trrDrrquGUR!!)lq!!)rs!!*#u!!)Ti!!)Wj!!)or!!)cn!!*#u!!*#u!s&B$!;?Em!;uis
+!;lcr!;c]q!;uis!;lcr!;HKn!<2uu!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l!;HKn!;uis!;ZWp!;lcr!;?Em!;uis!;c]q
+!;c]q!;uis!;ZZp!6kKBm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDoqp]19mrrDiorr<-#!!)`mrrDlprrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!
+rrE#trrDrrquGUR!!)lq!!)rs!!*#u!!)Ti!!)Wj!!)or!!)cn!!*#u!!*#u!s&B$!;?Em!;uis
+!;lcr!;c]q!;uis!;lcr!;HKn!<2uu!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l!;HKn!;uis!;ZWp!;lcr!;?Em!;uis!;c]q
+!;c]q!;uis!;ZZp!6kKBklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss7ZL$rr<'!rr<'!rr<'!pAk6nrrE#trrE#t
+rrDoqp]19mrrDiorr<-#!!)`mrrDlprrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!
+rrE#trrDrrquGUR!!)lq!!)rs!!*#u!!)Ti!!)Wj!!)or!!)cn!!*#u!!*#u!s&B$!;?Em!;uis
+!;lcr!;c]q!;uis!;lcr!;HKn!<2uu!;6?l!;ZWp!;uis!<)ot!;uis!<2uu!;-9k!;?Em!;lcr
+!;lcr!<)ot!;uis!;ZZp!;QQo!;lcr!;lcr!;6?l!;HKn!;uis!;ZWp!;lcr!;?Em!;uis!;c]q
+!;c]q!;uis!;ZZp!6kKBirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#os8N*!s8N*!s8N'!s8E#ns8N)ts8N)t
+s8N)ts8N'#rr<&ss8N)ts8N)ns8;rks8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)Urr<&qrr<&srr<&urr<&irr<&jrr<&rrr<&nrr<&u
+rr<&urrW9$rrDcm!!)rs!!)or!!)lq!!)rs!!)or!!)`m!W`6#o`"mkq>UEpr;Q`srVlitr;Q`s
+rr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp\t3nr;Q`s
+q>UEpqu6WrpAY*mr;Q`sqYpNqqYpNqr;Q`srVlitr;Q`sc2[e1!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#os8N*!s8N*!s8N'!s8E#ns8N)ts8N)t
+s8N)ts8N'#rr<&ss8N)ts8N)ns8;rks8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)Urr<&qrr<&srr<&urr<&irr<&jrr<&rrr<&nrr<&u
+rr<&urrW9$rrDcm!!)rs!!)or!!)lq!!)rs!!)or!!)`m!W`6#o`"mkq>UEpr;Q`srVlitr;Q`s
+rr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp\t3nr;Q`s
+q>UEpqu6WrpAY*mr;Q`sqYpNqqYpNqr;Q`srVlitr;Q`sc2[e-!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#os8N*!s8N*!s8N'!s8E#ns8N)ts8N)t
+s8N)ts8N'#rr<&ss8N)ts8N)ns8;rks8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)Urr<&qrr<&srr<&urr<&irr<&jrr<&rrr<&nrr<&u
+rr<&urrW9$rrDcm!!)rs!!)or!!)lq!!)rs!!)or!!)`m!W`6#o`"mkq>UEpr;Q`srVlitr;Q`s
+rr2ruo`"mkpAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq>UEpqu6Wrqu6Wrp&>!lp\t3nr;Q`s
+q>UEpqu6WrpAY*mr;Q`sqYpNqqYpNqr;Q`srVlitr;Q`sc2[e'!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZNns7lZos7lWps8;ots8Duus8Duus7lZps8;rts8;rss7lWp
+s7ZKns7lZls8E#ms7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZOrr<&q
+rr<&srr<&trr<&ts8N)orr<&ts8N)qrr<&qrr<&ts8N)urr<&urr<&urr<&urr<&ts8N)trr<&s
+rr<&rrr<&trrW9$rrE#trrDrr!!)`m!W`6#o`"mkq>UEprVultrVlitr;Q`srVlitrVultqu6Wr
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitq#:<orVlitqYpNqo`"mkrVultrr2rurVult
+q>UEpqYpNqrVultrVlitrVultqYpNqqYpNqrVultrVultrVlitqu?Zrec5X9!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZNns7lZos7lWps8;ots8Duus8Duus7lZps8;rts8;rss7lWp
+s7ZKns7lZls8E#ms7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZOrr<&q
+rr<&srr<&trr<&ts8N)orr<&ts8N)qrr<&qrr<&ts8N)urr<&urr<&urr<&urr<&ts8N)trr<&s
+rr<&rrr<&trrW9$rrE#trrDrr!!)`m!W`6#o`"mkq>UEprVultrVlitr;Q`srVlitrVultqu6Wr
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitq#:<orVlitqYpNqo`"mkrVultrr2rurVult
+q>UEpqYpNqrVultrVlitrVultqYpNqqYpNqrVultrVultrVlitqu?Zrec5X5!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZNns7lZos7lWps8;ots8Duus8Duus7lZps8;rts8;rss7lWp
+s7ZKns7lZls8E#ms7u`ns7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lZOrr<&q
+rr<&srr<&trr<&ts8N)orr<&ts8N)qrr<&qrr<&ts8N)urr<&urr<&urr<&urr<&ts8N)trr<&s
+rr<&rrr<&trrW9$rrE#trrDrr!!)`m!W`6#o`"mkq>UEprVultrVlitr;Q`srVlitrVultqu6Wr
+rVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitq#:<orVlitqYpNqo`"mkrVultrr2rurVult
+q>UEpqYpNqrVultrVlitrVultqYpNqqYpNqrVultrVultrVlitqu?Zrec5X/!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZNns7lZms8)crs8;ots8Duus8E#ts8)frs8;rts8;rrs82lq
+s82iss8Duus7lZls8N)ms7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`Qs82lqs8E#ts8E#ss8;rjs8;rps7u`ns8;rrs8E#us8N*!s8N)us8;rqs8E#ts8E#qs8;rr
+s8;ots8E#us7u`krr<&ls7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rqs8E#ts8E#t
+rrE-"r;cQkr;c`pq>g9ir;c`pr;ZitrW)rtq>gHnr;c]or;Zp!!!*#uq>gHnr;Zp!!!*#u!<E/u
+!;c`q!7h,Km/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZNns7lZms8)crs8;ots8Duus8E#ts8)frs8;rts8;rrs82lq
+s82iss8Duus7lZls8N)ms7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`Qs82lqs8E#ts8E#ss8;rjs8;rps7u`ns8;rrs8E#us8N*!s8N)us8;rqs8E#ts8E#qs8;rr
+s8;ots8E#us7u`krr<&ls7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rqs8E#ts8E#t
+rrE-"r;cQkr;c`pq>g9ir;c`pr;ZitrW)rtq>gHnr;c]or;Zp!!!*#uq>gHnr;Zp!!!*#u!<E/u
+!;c`q!7h,KklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZNns7lZms8)crs8;ots8Duus8E#ts8)frs8;rts8;rrs82lq
+s82iss8Duus7lZls8N)ms7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`Qs82lqs8E#ts8E#ss8;rjs8;rps7u`ns8;rrs8E#us8N*!s8N)us8;rqs8E#ts8E#qs8;rr
+s8;ots8E#us7u`krr<&ls7u`ns8;p#rr<'!s8E#ts8E#ss8;rms8;rrs7u`ns8;rqs8E#ts8E#t
+rrE-"r;cQkr;c`pq>g9ir;c`pr;ZitrW)rtq>gHnr;c]or;Zp!!!*#uq>gHnr;Zp!!!*#u!<E/u
+!;c`q!7h,KirR%VJ,~>
+!BpJ^mHsrH!13`c!.k0$s69O`!.k0$s6BX`m/bd$J,~>
+!BU8[l0\ND!13`c!.k0$s69O`!.k0$s6BX`klK'jJ,~>
+!B:&Xj6cm>!13`c!.k0$s69O`!.k0$s6BX`irR%VJ,~>
+!BpJ^mHsrH!1<fd!.k0$s69O`!.k0$s69R_m/bd$J,~>
+!BU8[l0\ND!1<fd!.k0$s69O`!.k0$s69R_klK'jJ,~>
+!B:&Xj6cm>!1<fd!.k0$s69O`!.k0$s69R_irR%VJ,~>
+!BpJ^m=G<6s8)eIs+149rr<%Ms+147s8MBdeieN~>
+!BU8[l%/m2s8)eIs+149rr<%Ms+147s8M6`c8pI~>
+!B:&Xj+77,s8)eIs+149rr<%Ms+147s8M$Z_`*)~>
+!BpJ^m=G<6s8)eIs+14<s82kJs+148s8MBdeieN~>
+!BU8[l%/m2s8)eIs+14<s82kJs+148s8M6`c8pI~>
+!B:&Xj+77,s8)eIs+14<s82kJs+148s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!9O7Y!;QTo!;QTk!;uls!9F1[!;?Hm!.k0Bs8;r`s8;qKs+146s8MBdeieN~>
+!BU8[l-B>/!9O7Y!;QTo!;QTk!;uls!9F1[!;?Hm!.k0Bs8;r`s8;qKs+146s8M6`c8pI~>
+!B:&Xj3I])!9O7Y!;QTo!;QTk!;uls!9F1[!;?Hm!.k0Bs8;r`s8;qKs+146s8M$Z_`*)~>
+!BpJ^mFqU=!!<0#!;uls!9O7Y!;QTo!;ZZk!;uls!9F1[!;?Hm!0.$X!<3#t!9*qX!8IMR!9*qX
+!;HKn!;HKn!1Nof!.k0os8MBdeieN~>
+!BU8[l.Z19!!<0#!;uls!9O7Y!;QTo!;ZZk!;uls!9F1[!;?Hm!0.$X!<3#t!9*qX!8IMR!9*qX
+!;HKn!;HKn!1Nof!.k0os8M6`c8pI~>
+!B:&Xj4aP3!!<0#!;uls!9O7Y!;QTo!;ZZk!;uls!9F1[!;?Hm!0.$X!<3#t!9*qX!8IMR!9*qX
+!;HKn!;HKn!1Nof!.k0os8M$Z_`*)~>
+!BpJ^mHsrH!;ull!8IPR!:Kme!8.>O!.k1Mrr<&srr<&Wrr<&Rrr<&Xrr<&nrr<&orr<%err<%M
+s31NBm/bd$J,~>
+!BU8[l0\ND!;ull!8IPR!:Kme!8.>O!.k1Mrr<&srr<&Wrr<&Rrr<&Xrr<&nrr<&orr<%err<%M
+s31NBklK'jJ,~>
+!B:&Xj6cm>!;ull!8IPR!:Kme!8.>O!.k1Mrr<&srr<&Wrr<&Rrr<&Xrr<&nrr<&orr<%err<%M
+s31NBirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<<)s!<)rs!!E6$!<<#us8W&u!<;utqZ$Qqqu?Qoqu?Hlrr;lrqZ$Ko
+!ri6#rVu`prr;corVucqq>^BnrVuis!<;utV#LDpr;Q`si;WcW])Ma1mJd.dJcC<$j8],G!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<<)s!<)rs!!E6$!<<#us8W&u!<;utqZ$Qqqu?Qoqu?Hlrr;lrqZ$Ko
+!ri6#rVu`prr;corVucqq>^BnrVuis!<;utV#LDpr;Q`si;WcW])Ma1mJd.dJcC<$j8],C!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<<)s!<)rs!!E6$!<<#us8W&u!<;utqZ$Qqqu?Qoqu?Hlrr;lrqZ$Ko
+!ri6#rVu`prr;corVucqq>^BnrVuis!<;utV#LDpr;Q`si;WcW])Ma1mJd.dJcC<$j8],=!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s82lqs7QEms7cTks8N)rs82los7lZos82los7lZo
+s7lZps7lZns82los7lZps7cSjrr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rjs8;ourrDusrW)lr
+rr<9'!!*'!!!*#urr<'!r;cZn!!)iprW)fpq>gNprW)rtrW)`nr;ccqrW)uurW)rtrr<'!r;cfr
+rVururW)iqr;c]or;Zlu!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utqu?Tp!WN.Ns7$'fm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s82lqs7QEms7cTks8N)rs82los7lZos82los7lZo
+s7lZps7lZns82los7lZps7cSjrr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rjs8;ourrDusrW)lr
+rr<9'!!*'!!!*#urr<'!r;cZn!!)iprW)fpq>gNprW)rtrW)`nr;ccqrW)uurW)rtrr<'!r;cfr
+rVururW)iqr;c]or;Zlu!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utqu?Tp!WN.Ns7$'fklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s82lqs7QEms7cTks8N)rs82los7lZos82los7lZo
+s7lZps7lZns82los7lZps7cSjrr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rjs8;ourrDusrW)lr
+rr<9'!!*'!!!*#urr<'!r;cZn!!)iprW)fpq>gNprW)rtrW)`nr;ccqrW)uurW)rtrr<'!r;cfr
+rVururW)iqr;c]or;Zlu!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utqu?Tp!WN.Ns7$'firR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lls8N)ss8Duus8E!$rr<'!s8E#ts8E#rs8N)os8N)ps8N)n
+s8N)ss8E#ts8E#ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N(qrr<&srr<&trr<&trr<&s
+rr<&srr<&mrr<&prr<&trr<&nrr<&ts8N)qrr<&rs8N*!s8N*!rr<&us8N)trr<&qrr<&nrr<&o
+rr<&prr<&srr<&orr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms7$'fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lls8N)ss8Duus8E!$rr<'!s8E#ts8E#rs8N)os8N)ps8N)n
+s8N)ss8E#ts8E#ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N(qrr<&srr<&trr<&trr<&s
+rr<&srr<&mrr<&prr<&trr<&nrr<&ts8N)qrr<&rs8N*!s8N*!rr<&us8N)trr<&qrr<&nrr<&o
+rr<&prr<&srr<&orr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms7$'fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lls8N)ss8Duus8E!$rr<'!s8E#ts8E#rs8N)os8N)ps8N)n
+s8N)ss8E#ts8E#ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N(qrr<&srr<&trr<&trr<&s
+rr<&srr<&mrr<&prr<&trr<&nrr<&ts8N)qrr<&rs8N*!s8N*!rr<&us8N)trr<&qrr<&nrr<&o
+rr<&prr<&srr<&orr<&trr<&srr<&trr<&ss8N)trr<&ss8N)urr<&trr<&trr<&srr<&ts8N)t
+rr<&ts8N)qrr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(Ms7$'firR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`ms8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ss8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(qs7u`prr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;ZWp
+!;uis!;ZWp!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcG6>rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`ms8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ss8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(qs7u`prr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;ZWp
+!;uis!;ZWp!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcG6>rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`ms8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ss8N)os8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(qs7u`prr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;ZWp
+!;uis!;ZWp!;lcr!;uj!!<<'!qu6Wrqu6WrrVlitq>UEpqu6WrrVlitr;Q`srVlitr;Q`sqYpNq
+qu6Wrqu6WrrVlitr;Q`srVlitr;Q`sJcG6>ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82lps8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ns7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;HNm!;HKn!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo!<2uu
+!;QTi!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;ulr!.k1;
+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82lps8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ns7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;HNm!;HKn!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo!<2uu
+!;QTi!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;ulr!.k1;
+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82lps8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)ps8N)n
+s8N)ss8N)ns7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'rrE*!
+!;?Em!;c]q!;lcr!;HNm!;HKn!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo!<2uu
+!;QTi!;lfr!;c]q!;lcr!<)ot!;ZZj!;ulr!;ZZo!;HKn!;lcr!;lcr!<)ot!;uis!;ulr!.k1;
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)p
+s8N)ns8N)ss8N)os7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'
+!<3'!!;?Em!;c]q!;lcr!;-<k!;ZWp!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo
+!<2uu!;QQo!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k1=s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)p
+s8N)ns8N)ss8N)os7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'
+!<3'!!;?Em!;c]q!;lcr!;-<k!;ZWp!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo
+!<2uu!;QQo!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k1=s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N)ss8N)ss8N*!s8N*!s8N*!s8N)ss8N)ss8N)os8N)p
+s8N)ns8N)ss8N)os7cTms8N)ms8N)ss8N)rs8N*!s8N)ts8N(qrr<&srr<&urr<&rrr<&trrrK'
+!<3'!!;?Em!;c]q!;lcr!;-<k!;ZWp!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;HKn!;QQo!;QQo
+!<2uu!;QQo!;-<k!;c]q!;lcr!<)ot!;ZWp!:p0i!;QTo!;ZWp!;lcr!;lcr!<)ot!;uis!;ZZp
+!.k1=s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N)ss8N)ss8N*!s8N*!s8N*!s8E#ts8E#rs8N)os8N)p
+s8N)ns8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(qrr<&srr<&u
+rr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr
+!;lcr!;HKn!;QQo!;HKp!<3&nrr<&lrrW9$rrDrr!!)or!!)ut!!)ip!!)`m!!)rs!!)ut!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!%TMnGiLT!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N)ss8N)ss8N*!s8N*!s8N*!s8E#ts8E#rs8N)os8N)p
+s8N)ns8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(qrr<&srr<&u
+rr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr
+!;lcr!;HKn!;QQo!;HKp!<3&nrr<&lrrW9$rrDrr!!)or!!)ut!!)ip!!)`m!!)rs!!)ut!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!%TMnGiLP!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N)ss8N)ss8N*!s8N*!s8N*!s8E#ts8E#rs8N)os8N)p
+s8N)ns8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(qrr<&srr<&u
+rr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!;lcr
+!;lcr!;HKn!;QQo!;HKp!<3&nrr<&lrrW9$rrDrr!!)or!!)ut!!)ip!!)`m!!)rs!!)ut!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!%TMnGiLJ!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lWps8;ots8Duus8Duus7lZos7lZos7lZos7lZos7lZo
+s7cQos7ZNms7lZps7lZos7lZps8;rts8;qprr<&srr<&trr<&trr<&rrr<&urr<&lrr<&trr<&u
+rr<&trr<&ns8N)trr<&qrr<&rrr<&urr<&urr<&us8N)trr<&qrr<&nrr<&orr<&nrrN3#!;?Em
+!<)rt!<)ot!<)ot!;uls!<)ot!;uis!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot
+!;uis!;uis!<)rt!<)ot!;lfr!.k1Fs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lWps8;ots8Duus8Duus7lZos7lZos7lZos7lZos7lZo
+s7cQos7ZNms7lZps7lZos7lZps8;rts8;qprr<&srr<&trr<&trr<&rrr<&urr<&lrr<&trr<&u
+rr<&trr<&ns8N)trr<&qrr<&rrr<&urr<&urr<&us8N)trr<&qrr<&nrr<&orr<&nrrN3#!;?Em
+!<)rt!<)ot!<)ot!;uls!<)ot!;uis!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot
+!;uis!;uis!<)rt!<)ot!;lfr!.k1Fs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lWps8;ots8Duus8Duus7lZos7lZos7lZos7lZos7lZo
+s7cQos7ZNms7lZps7lZos7lZps8;rts8;qprr<&srr<&trr<&trr<&rrr<&urr<&lrr<&trr<&u
+rr<&trr<&ns8N)trr<&qrr<&rrr<&urr<&urr<&us8N)trr<&qrr<&nrr<&orr<&nrrN3#!;?Em
+!<)rt!<)ot!<)ot!;uls!<)ot!;uis!;QQo!<)rt!<)rt!<)ot!<)rt!<)ot!;c]q!;c]q!<)ot
+!;uis!;uis!<)rt!<)ot!;lfr!.k1Fs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rrs7lWps8;ots8Duus8E!#rr<'!r;cfrq#LEoq#LEo
+q#LEoq#LBnqZ-Tpqu?`srW)osquH]qq#L?mr;cfrr;cltr;`bqrW)rtrW)osr;c]o!!*#u!!)Zk
+r;ccqr;cQk!<E/u!;uln!<<)u!<<*!!<<*!!<<'"!<;utr;ZTnrVu]orVu]oqYpNqo`+jir;Z`r
+s8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcGNFrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rrs7lWps8;ots8Duus8E!#rr<'!r;cfrq#LEoq#LEo
+q#LEoq#LBnqZ-Tpqu?`srW)osquH]qq#L?mr;cfrr;cltr;`bqrW)rtrW)osr;c]o!!*#u!!)Zk
+r;ccqr;cQk!<E/u!;uln!<<)u!<<*!!<<*!!<<'"!<;utr;ZTnrVu]orVu]oqYpNqo`+jir;Z`r
+s8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcGNFrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rrs7lWps8;ots8Duus8E!#rr<'!r;cfrq#LEoq#LEo
+q#LEoq#LBnqZ-Tpqu?`srW)osquH]qq#L?mr;cfrr;cltr;`bqrW)rtrW)osr;c]o!!*#u!!)Zk
+r;ccqr;cQk!<E/u!;uln!<<)u!<<*!!<<*!!<<'"!<;utr;ZTnrVu]orVu]oqYpNqo`+jir;Z`r
+s8W&urVllus8;rrs7u`ms8;rprrE-"r;ccq!<E/u!;uln!;ulq!;ulr!<3#t!<3!!!<;utqZ$Qq
+JcGNFro4$s2h1~>
+!BpJ^mHsrH!8IPR!.k0$s3L]F!7UrJ!8meV!.k05s8MBdeieN~>
+!BU8[l0\ND!8IPR!.k0$s3L]F!7UrJ!8meV!.k05s8M6`c8pI~>
+!B:&Xj6cm>!8IPR!.k0$s3L]F!7UrJ!8meV!.k05s8M$Z_`*)~>
+!BpJ^mHsrH!8IPR!.k0$s3L]F!7_#K!8d_U!.k05s8MBdeieN~>
+!BU8[l0\ND!8IPR!.k0$s3L]F!7_#K!8d_U!.k05s8M6`c8pI~>
+!B:&Xj6cm>!8IPR!.k0$s3L]F!7_#K!8d_U!.k05s8M$Z_`*)~>
+!BpJ^mC`Js!.k0$s3^iH!7_#K!8d_U!.k05s8MBdeieN~>
+!BU8[l+I&o!.k0$s3^iH!7_#K!8d_U!.k05s8M6`c8pI~>
+!B:&Xj1PEi!.k0$s3^iH!7_#K!8d_U!.k05s8M$Z_`*)~>
+!BpJ^mC`Js!.k0$s3grG!87DM!9!nU!.k07s8MBdeieN~>
+!BU8[l+I&o!.k0$s3grG!87DM!9!nU!.k07s8M6`c8pI~>
+!B:&Xj1PEi!.k0$s3grG!87DM!9!nU!.k07s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!;QTo!5/@3!:Tse!;6Bl!.k0Ns8N(Ms6BXa!.k17s8MBdeieN~>
+!BU8[l,E]&!;QTo!5/@3!:Tse!;6Bl!.k0Ns8N(Ms6BXa!.k17s8M6`c8pI~>
+!B:&Xj2M&u!;QTo!5/@3!:Tse!;6Bl!.k0Ns8N(Ms6BXa!.k17s8M$Z_`*)~>
+!BpJ^mG7g<!:g*h!;QTo!7_&J!;ulr!;-<k!:Tse!;6Bl!1j/h!<3#t!9*qX!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8MBdeieN~>
+!BU8[l.uC8!:g*h!;QTo!7_&J!;ulr!;-<k!:Tse!;6Bl!1j/h!<3#t!9*qX!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8M6`c8pI~>
+!B:&Xj5'b2!:g*h!;QTo!7_&J!;ulr!;-<k!:Tse!;6Bl!1j/h!<3#t!9*qX!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!:p0i!;QTo!7_&J!;ulr!;-<k!:Kme!07'Z!;uis!9!kW!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8MBdeieN~>
+!BU8[l0\ND!<)rm!:p0i!;QTo!7_&J!;ulr!;-<k!:Kme!07'Z!;uis!9!kW!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8M6`c8pI~>
+!B:&Xj6cm>!<)rm!:p0i!;QTo!7_&J!;ulr!;-<k!:Kme!07'Z!;uis!9!kW!5\[8!;ZWp!71ZF
+!;HKn!5&72!:Kje!.k17s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<3#q!<3#o!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!;QTn!<3#t!<3#q
+!<3#o!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;ulq!!*&u!4Mn-!;uis!9!kW!5\[8!;ZWp
+!71ZF!;HKn!5&72!:Kje!.k17s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<3#q!<3#o!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!;QTn!<3#t!<3#q
+!<3#o!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;ulq!!*&u!4Mn-!;uis!9!kW!5\[8!;ZWp
+!71ZF!;HKn!5&72!:Kje!.k17s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<3#q!<3#o!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!;QTn!<3#t!<3#q
+!<3#o!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;ulq!!*&u!4Mn-!;uis!9!kW!5\[8!;ZWp
+!71ZF!;HKn!5&72!:Kje!.k17s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZos7lZns7lZps7ZKns7cTis8E#ts8E#u
+s7lZps7lZns7lZos7lZos82lps7cTns7cT&rr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rls8N)t
+s8N)ss8;ourrDusr;cQkq>gKo!<E/u!;lfp!;HNn!!*&t!;lfp!;lfm!<)ro!;ulq!;ulr!!*&u
+!<)rt!!*&t!;ZZp!!`H'!<<'!!;ulq!;lfm!;ulq!!3*"rVllus8;rps8;rqs8Duus8E"Os8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZos7lZns7lZps7ZKns7cTis8E#ts8E#u
+s7lZps7lZns7lZos7lZos82lps7cTns7cT&rr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rls8N)t
+s8N)ss8;ourrDusr;cQkq>gKo!<E/u!;lfp!;HNn!!*&t!;lfp!;lfm!<)ro!;ulq!;ulr!!*&u
+!<)rt!!*&t!;ZZp!!`H'!<<'!!;ulq!;lfm!;ulq!!3*"rVllus8;rps8;rqs8Duus8E"Os8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7lZos7lZns7lZps7ZKns7cTis8E#ts8E#u
+s7lZps7lZns7lZos7lZos82lps7cTns7cT&rr<&srr<&ss8;rqs8E#ts8E#os7u`ns8;rls8N)t
+s8N)ss8;ourrDusr;cQkq>gKo!<E/u!;lfp!;HNn!!*&t!;lfp!;lfm!<)ro!;ulq!;ulr!!*&u
+!<)rt!!*&t!;ZZp!!`H'!<<'!!;ulq!;lfm!;ulq!!3*"rVllus8;rps8;rqs8Duus8E"Os8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)os8N)qs8E#ss8E#ts8;rts8N*!
+s8E#ts8N)ps8;ots8;rts8N)ts8N)ts8N)qs8E#ts8E#ts8E#ts8N)rs8N)rs8E#ts8N*!s8E#t
+s8E#+rr<&srr<&trr<&trr<&srr<&srr<&mrr<&prr<&trr<&nrr<&srr<&trr<&ts8N)trr<&t
+rr<&lrr<&ps8N)trr<&trr<&trr<&ns8N)trr<&trr<&trr<&qrr<&nrr<&prr<&trr<&rs8N)u
+rr<&ts8N)trr<&ps8N*!s8N*!rr<&urr<&trr<&qrr<&prr<&ts8N)ts8N)trr<&trr<&trr<&r
+s8N)urr<%Qs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)os8N)qs8E#ss8E#ts8;rts8N*!
+s8E#ts8N)ps8;ots8;rts8N)ts8N)ts8N)qs8E#ts8E#ts8E#ts8N)rs8N)rs8E#ts8N*!s8E#t
+s8E#+rr<&srr<&trr<&trr<&srr<&srr<&mrr<&prr<&trr<&nrr<&srr<&trr<&ts8N)trr<&t
+rr<&lrr<&ps8N)trr<&trr<&trr<&ns8N)trr<&trr<&trr<&qrr<&nrr<&prr<&trr<&rs8N)u
+rr<&ts8N)trr<&ps8N*!s8N*!rr<&urr<&trr<&qrr<&prr<&ts8N)ts8N)trr<&trr<&trr<&r
+s8N)urr<%Qs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8N)os8N)qs8E#ss8E#ts8;rts8N*!
+s8E#ts8N)ps8;ots8;rts8N)ts8N)ts8N)qs8E#ts8E#ts8E#ts8N)rs8N)rs8E#ts8N*!s8E#t
+s8E#+rr<&srr<&trr<&trr<&srr<&srr<&mrr<&prr<&trr<&nrr<&srr<&trr<&ts8N)trr<&t
+rr<&lrr<&ps8N)trr<&trr<&trr<&ns8N)trr<&trr<&trr<&qrr<&nrr<&prr<&trr<&rs8N)u
+rr<&ts8N)trr<&ps8N*!s8N*!rr<&urr<&trr<&qrr<&prr<&ts8N)ts8N)trr<&trr<&trr<&r
+s8N)urr<%Qs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZis8N)ts8N)os8N)qs8N)rs8N)us8E#ps8N)ts8N)ps7cTi
+s8N)ts8N)qs8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),s7u`prr<&rrr<&trrrK'
+rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu!;lcr!;?Em!;ZWp!;uis!<2uu!;lcr
+!;QQo!;lcr!;ZWp!;c]q!;HKn!;c]q!;lcr!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q
+!;c]q!;lcr!<)ot!;uis!<2uu!;lcr!;uis!.k.Ms8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZis8N)ts8N)os8N)qs8N)rs8N)us8E#ps8N)ts8N)ps7cTi
+s8N)ts8N)qs8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),s7u`prr<&rrr<&trrrK'
+rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu!;lcr!;?Em!;ZWp!;uis!<2uu!;lcr
+!;QQo!;lcr!;ZWp!;c]q!;HKn!;c]q!;lcr!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q
+!;c]q!;lcr!<)ot!;uis!<2uu!;lcr!;uis!.k.Ms8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZis8N)ts8N)os8N)qs8N)rs8N)us8E#ps8N)ts8N)ps7cTi
+s8N)ts8N)qs8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),s7u`prr<&rrr<&trrrK'
+rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu!;lcr!;?Em!;ZWp!;uis!<2uu!;lcr
+!;QQo!;lcr!;ZWp!;c]q!;HKn!;c]q!;lcr!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q
+!;c]q!;lcr!<)ot!;uis!<2uu!;lcr!;uis!.k.Ms8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N'!s8E!$
+rr<'!s7lZns8N)qs8N)ns8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),rr<&srr<&urr<&rrr<&t
+rrrK'rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!;ulr!;lfl!;?Em!;ZWp!;uis!<3#o!;QQo!;lcr
+!<3#q!;c]q!;HKn!;c`k!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;c]q!;?Em!;uis
+!<3#o!;uis!.k.Ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N'!s8E!$
+rr<'!s7lZns8N)qs8N)ns8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),rr<&srr<&urr<&rrr<&t
+rrrK'rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!;ulr!;lfl!;?Em!;ZWp!;uis!<3#o!;QQo!;lcr
+!<3#q!;c]q!;HKn!;c`k!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;c]q!;?Em!;uis
+!<3#o!;uis!.k.Ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N'!s8E!$
+rr<'!s7lZns8N)qs8N)ns8N)ts8N)rs8N)rs8N)ts8N*!s8N)ss8N),rr<&srr<&urr<&rrr<&t
+rrrK'rrE*!!;?Em!;c]q!;lcr!;QQo!;uis!;ulr!;lfl!;?Em!;ZWp!;uis!<3#o!;QQo!;lcr
+!<3#q!;c]q!;HKn!;c`k!;uis!;QQo!;uis!;ZWp!<2uu!<2uu!<3#q!;c]q!;c]q!;?Em!;uis
+!<3#o!;uis!.k.Ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N*!rriE&
+rr<'!p]19mrrDoqrrDfnrrE#trrDrrrrDrrrrE#trrE*!rrDusrrBJ,!!)rs!!*#u!!)or!!)ut
+"p"Z'rrE'!pAY*mqYpNqqu6Wrq#:<or;Q`sq>^HprVlitn,E@fq>UEpr;Q`srr2runc&Rhqu6`u
+s8N)srr<&qrr<&nrr<&qrr<&lrr<&orr<&srr<&prr<&urr<&urrW9$rrDus!!)lq!!)lq!!)`m
+!!)rs!!*#u!!)]l!!%TM!<<&c!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N*!rriE&
+rr<'!p]19mrrDoqrrDfnrrE#trrDrrrrDrrrrE#trrE*!rrDusrrBJ,!!)rs!!*#u!!)or!!)ut
+"p"Z'rrE'!pAY*mqYpNqqu6Wrq#:<or;Q`sq>^HprVlitn,E@fq>UEpr;Q`srr2runc&Rhqu6`u
+s8N)srr<&qrr<&nrr<&qrr<&lrr<&orr<&srr<&prr<&urr<&urrW9$rrDus!!)lq!!)lq!!)`m
+!!)rs!!*#u!!)]l!!%TM!<<&_!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)qs7ZNms8N)ps8N)ts8N)ps8N*!rriE&
+rr<'!p]19mrrDoqrrDfnrrE#trrDrrrrDrrrrE#trrE*!rrDusrrBJ,!!)rs!!*#u!!)or!!)ut
+"p"Z'rrE'!pAY*mqYpNqqu6Wrq#:<or;Q`sq>^HprVlitn,E@fq>UEpr;Q`srr2runc&Rhqu6`u
+s8N)srr<&qrr<&nrr<&qrr<&lrr<&orr<&srr<&prr<&urr<&urrW9$rrDus!!)lq!!)lq!!)`m
+!!)rs!!*#u!!)]l!!%TM!<<&Y!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)ts8N)us8N)ts8N'!s8E#ms8N)ps8N)t
+s8N)ps8N)ss8N'#rr<&ss8N)ts8N)ts8N'!s8E#ss8E#us8N)ts8N)rs8N)rs8N)ts8N*!s8E#t
+s8E#+rr<&srr<&urr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu
+!:Tpf!;ZWp!;uis!<2uu!:g'h!;lcu!<<'!r;Q`sqYpNqp\t3nqYpNqp&>!lq#:<or;Q`sq>UEp
+rr2rurr3'#s8N)srr<&qrr<&qrr<&mrr<&srr<&urr<&lrr<%MrrE)um/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)ts8N)us8N)ts8N'!s8E#ms8N)ps8N)t
+s8N)ps8N)ss8N'#rr<&ss8N)ts8N)ts8N'!s8E#ss8E#us8N)ts8N)rs8N)rs8N)ts8N*!s8E#t
+s8E#+rr<&srr<&urr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu
+!:Tpf!;ZWp!;uis!<2uu!:g'h!;lcu!<<'!r;Q`sqYpNqp\t3nqYpNqp&>!lq#:<or;Q`sq>UEp
+rr2rurr3'#s8N)srr<&qrr<&qrr<&mrr<&srr<&urr<&lrr<%MrrE)uklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)ts8N)us8N)ts8N'!s8E#ms8N)ps8N)t
+s8N)ps8N)ss8N'#rr<&ss8N)ts8N)ts8N'!s8E#ss8E#us8N)ts8N)rs8N)rs8N)ts8N*!s8E#t
+s8E#+rr<&srr<&urr<&rrr<&trrrK'!<3'!!;?Em!;c]q!;lcr!;QQo!;uis!<)ot!;uis!<2uu
+!:Tpf!;ZWp!;uis!<2uu!:g'h!;lcu!<<'!r;Q`sqYpNqp\t3nqYpNqp&>!lq#:<or;Q`sq>UEp
+rr2rurr3'#s8N)srr<&qrr<&qrr<&mrr<&srr<&urr<&lrr<%MrrE)uirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)fos7ZNms7lZos7lZps7lZps7lZos8;rts8;rps82iss7-0h
+s7lZps7cQos8;rts8;rts7lZps8;rts8;rts7lZ&rr<&srr<&trr<&trr<&rrr<&urr<&lrr<&t
+rr<&urr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)o
+s8N)trr<&urr<&ts8N)qrr<&trr<&srr<&trr<&urr<&ts8N)srr<&orr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDoq!!)ut!!*#u!!)utrrE#t!!)rs!!)ut!!)utrrDus!!)`mrrA&Yrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)fos7ZNms7lZos7lZps7lZps7lZos8;rts8;rps82iss7-0h
+s7lZps7cQos8;rts8;rts7lZps8;rts8;rts7lZ&rr<&srr<&trr<&trr<&rrr<&urr<&lrr<&t
+rr<&urr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)o
+s8N)trr<&urr<&ts8N)qrr<&trr<&srr<&trr<&urr<&ts8N)srr<&orr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDoq!!)ut!!*#u!!)utrrE#t!!)rs!!)ut!!)utrrDus!!)`mrrA&YrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)fos7ZNms7lZos7lZps7lZps7lZos8;rts8;rps82iss7-0h
+s7lZps7cQos8;rts8;rts7lZps8;rts8;rts7lZ&rr<&srr<&trr<&trr<&rrr<&urr<&lrr<&t
+rr<&urr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)o
+s8N)trr<&urr<&ts8N)qrr<&trr<&srr<&trr<&urr<&ts8N)srr<&orr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDoq!!)ut!!*#u!!)utrrE#t!!)rs!!)ut!!)utrrDus!!)`mrrA&Yro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)fns82iss8E#ss82los82los8)frs7lZos8;rts8;rps82is
+s82iss82iss8E#ss82lps8)fqs8;rts8;rts7lZps8;rts8;rss8;p!rr<&-s8E#ts8E#ss8;ro
+rr<&urr<&ks8;rqs8;rjs8;p!rr<&urrE-"r;c`pr;cHhr;cisrW)rtrW)osr;cQk!<E/u!;ulq
+!!*&u!;lfp!;c`o!;ulq!;uln!<)rs!<3#t!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!;ulq!;ulr
+!<3#t!<)rr!;uln!;c`q!0.$Xm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)fns82iss8E#ss82los82los8)frs7lZos8;rts8;rps82is
+s82iss82iss8E#ss82lps8)fqs8;rts8;rts7lZps8;rts8;rss8;p!rr<&-s8E#ts8E#ss8;ro
+rr<&urr<&ks8;rqs8;rjs8;p!rr<&urrE-"r;c`pr;cHhr;cisrW)rtrW)osr;cQk!<E/u!;ulq
+!!*&u!;lfp!;c`o!;ulq!;uln!<)rs!<3#t!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!;ulq!;ulr
+!<3#t!<)rr!;uln!;c`q!0.$XklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)fns82iss8E#ss82los82los8)frs7lZos8;rts8;rps82is
+s82iss82iss8E#ss82lps8)fqs8;rts8;rts7lZps8;rts8;rss8;p!rr<&-s8E#ts8E#ss8;ro
+rr<&urr<&ks8;rqs8;rjs8;p!rr<&urrE-"r;c`pr;cHhr;cisrW)rtrW)osr;cQk!<E/u!;ulq
+!!*&u!;lfp!;c`o!;ulq!;uln!<)rs!<3#t!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!;ulq!;ulr
+!<3#t!<)rr!;uln!;c`q!0.$XirR%VJ,~>
+!BpJ^mHsrH!.k1%s8N(Ms/>qt!.k0$s6K^am/bd$J,~>
+!BU8[l0\ND!.k1%s8N(Ms/>qt!.k0$s6K^aklK'jJ,~>
+!B:&Xj6cm>!.k1%s8N(Ms/>qt!.k0$s6K^airR%VJ,~>
+!BpJ^mHsrH!.k1&s8E"Ls/>qt!.k0$s6K^am/bd$J,~>
+!BU8[l0\ND!.k1&s8E"Ls/>qt!.k0$s6K^aklK'jJ,~>
+!B:&Xj6cm>!.k1&s8E"Ls/>qt!.k0$s6K^airR%VJ,~>
+!BpJ^m=G;Ms8)eIs/5ks!.k0$s6K^am/bd$J,~>
+!BU8[l%/lIs8)eIs/5ks!.k0$s6K^aklK'jJ,~>
+!B:&Xj+76Cs8)eIs/5ks!.k0$s6K^airR%VJ,~>
+!BpJ^m=G;Ms82kJs/5nq!.k0$s6]jcm/bd$J,~>
+!BU8[l%/lIs82kJs/5nq!.k0$s6]jcklK'jJ,~>
+!B:&Xj+76Cs82kJs/5nq!.k0$s6]jcirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG%[@!;QTo!5&:0!.k0$s+13$s2+g8m/bd$J,~>
+!BU8[l.c7<!;QTo!5&:0!.k0$s+13$s2+g8klK'jJ,~>
+!B:&Xj4jV6!;QTo!5&:0!.k0$s+13$s2+g8irR%VJ,~>
+!BpJ^mHafN!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9im/bd$J,~>
+!BU8[l0JBJ!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iklK'jJ,~>
+!B:&Xj6QaD!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iirR%VJ,~>
+!BpJ^mHFQM!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+m/bd$J,~>
+!BU8[l0/-I!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+klK'jJ,~>
+!B:&Xj66LC!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+irR%VJ,~>
+!BpJ^mHOWP!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8MBdeieN~>
+!BU8[l083L!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M6`c8pI~>
+!B:&Xj6?RF!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M$Z_`*)~>
+!BpJ^mHOWP!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`m/bd$J,~>
+!BU8[l083L!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`klK'jJ,~>
+!B:&Xj6?RF!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`irR%VJ,~>
+!BpJ^mHX]O!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8MBdeieN~>
+!BU8[l0A9K!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8MBdeieN~>
+!BU8[l0A9K!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M$Z_`*)~>
+!BpJ^mHacP!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8MBdeieN~>
+!BU8[l0J?L!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M6`c8pI~>
+!B:&Xj6Q^F!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M$Z_`*)~>
+!BpJ^mHafK!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8MBdeieN~>
+!BU8[l0JBG!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M6`c8pI~>
+!B:&Xj6QaA!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M$Z_`*)~>
+!BpJ^mHjiQ!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rp9a;4b*~>
+!BU8[l0SEM!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rojI/3e.~>
+!B:&Xj6ZdG!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/ro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`m/bd$J,~>
+!BU8[l0\NL!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`klK'jJ,~>
+!B:&Xj6cmF!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`irR%VJ,~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;ts8;qKs+13$s+145s8MBdeieN~>
+!BU8[l%/lps8;qKs+13$s+145s8M6`c8pI~>
+!B:&Xj+76js8;qKs+13$s+145s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!7UuG!9X=\!0@0[!.k1Ms8;rZs8N)Os8;rRs8;qKs5O(Xm/bd$J,~>
+!BU8[l(n@Z!7UuG!9X=\!0@0[!.k1Ms8;rZs8N)Os8;rRs8;qKs5O(XklK'jJ,~>
+!B:&Xj.u_T!7UuG!9X=\!0@0[!.k1Ms8;rZs8N)Os8;rRs8;qKs5O(XirR%VJ,~>
+!BpJ^mFqU=!71]F!8dbR!;lfo!9X=\!1Nr_!<2uu!3Z>%!7:`G!9F.[!87AP!9*qX!;HKn!;HKn
+!;QQo!.k1Es8MBdeieN~>
+!BU8[l.Z19!71]F!8dbR!;lfo!9X=\!1Nr_!<2uu!3Z>%!7:`G!9F.[!87AP!9*qX!;HKn!;HKn
+!;QQo!.k1Es8M6`c8pI~>
+!B:&Xj4aP3!71]F!8dbR!;lfo!9X=\!1Nr_!<2uu!3Z>%!7:`G!9F.[!87AP!9*qX!;HKn!;HKn
+!;QQo!.k1Es8M$Z_`*)~>
+!BpJ^mHsrH!;ulm!7CiH!8dbQ!;ZZp!9O7\!1Nof!<2uu!<2uu!<2uu!3Z>%!7:`G!9F.[!8@GQ
+!9!kW!;HKn!;HKn!;QQo!.k1Es8MBdeieN~>
+!BU8[l0\ND!;ulm!7CiH!8dbQ!;ZZp!9O7\!1Nof!<2uu!<2uu!<2uu!3Z>%!7:`G!9F.[!8@GQ
+!9!kW!;HKn!;HKn!;QQo!.k1Es8M6`c8pI~>
+!B:&Xj6cm>!;ulm!7CiH!8dbQ!;ZZp!9O7\!1Nof!<2uu!<2uu!<2uu!3Z>%!7:`G!9F.[!8@GQ
+!9!kW!;HKn!;HKn!;QQo!.k1Es8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!;lfp!<)rr!<<)u!;HNl
+!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!4Dh,!<2uu!<2uu!<2uu!3Z>%!7:`G
+!9F.[!8@GQ!7h)L!:Bdd!.k1Es8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!;lfp!<)rr!<<)u!;HNl
+!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!4Dh,!<2uu!<2uu!<2uu!3Z>%!7:`G
+!9F.[!8@GQ!7h)L!:Bdd!.k1Es8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!;lfp!<)rr!<<)u!;HNl
+!;ZZp!;c`o!!*&u!<)rr!;uls!!*&t!<3#s!<<)u!<)rp!4Dh,!<2uu!<2uu!<2uu!3Z>%!7:`G
+!9F.[!8@GQ!7h)L!:Bdd!.k1Es8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns7lZps7ZNgs8;rn
+s8N)rs7cTos7lZos7lZps7ZNns7lZ'rr<&urr<&urr<&urrE-"r;c`pr;cNjr;ccqrr<'!r;c`p
+r;ccqrVururW)iqr;c`pq>gHnr;ccqrVururW)Zlr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs
+!!*&u!;lfp!;?Hh!;ulq!;c`o!!3*"r;Z`rp\t3nq>^EoqZ$Blrr;rtrr;rtL]@A@!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns7lZps7ZNgs8;rn
+s8N)rs7cTos7lZos7lZps7ZNns7lZ'rr<&urr<&urr<&urrE-"r;c`pr;cNjr;ccqrr<'!r;c`p
+r;ccqrVururW)iqr;c`pq>gHnr;ccqrVururW)Zlr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs
+!!*&u!;lfp!;?Hh!;ulq!;c`o!!3*"r;Z`rp\t3nq>^EoqZ$Blrr;rtrr;rtL]@A<!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns7lZps7ZNgs8;rn
+s8N)rs7cTos7lZos7lZps7ZNns7lZ'rr<&urr<&urr<&urrE-"r;c`pr;cNjr;ccqrr<'!r;c`p
+r;ccqrVururW)iqr;c`pq>gHnr;ccqrVururW)Zlr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs
+!!*&u!;lfp!;?Hh!;ulq!;c`o!!3*"r;Z`rp\t3nq>^EoqZ$Blrr;rtrr;rtL]@A6!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)qs8E#ss8E#ts8;rts8N)ps8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N))rr<&qs8N)trr<&trr<&trr<&nrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&trr<&qrr<&prr<&trr<&rs8N)urr<&orr<&trr<&prr<&qrr<&ts8N)trr<&trr<&s
+s8N)trr<&ss8N)urr<&trr<&trr<&lrr<&prr<&trr<&srr<&ts8N)qrr<&nrr<&nrr<&orr<&p
+rr<&srr<%Rs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)qs8E#ss8E#ts8;rts8N)ps8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N))rr<&qs8N)trr<&trr<&trr<&nrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&trr<&qrr<&prr<&trr<&rs8N)urr<&orr<&trr<&prr<&qrr<&ts8N)trr<&trr<&s
+s8N)trr<&ss8N)urr<&trr<&trr<&lrr<&prr<&trr<&srr<&ts8N)qrr<&nrr<&nrr<&orr<&p
+rr<&srr<%Rs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)qs8E#ss8E#ts8;rts8N)ps8N*!s8N)qs8N)ss8E#ts8E#us8E#ss8E#us8E#ts8E#ts8;rt
+s8N*!s8N)ts8N))rr<&qs8N)trr<&trr<&trr<&nrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&trr<&qrr<&prr<&trr<&rs8N)urr<&orr<&trr<&prr<&qrr<&ts8N)trr<&trr<&s
+s8N)trr<&ss8N)urr<&trr<&trr<&lrr<&prr<&trr<&srr<&ts8N)qrr<&nrr<&nrr<&orr<&p
+rr<&srr<%Rs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)qs8N)r
+s8N)us8E#js8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#js8N))rr<&qrr<&s
+rr<&urr<&rrr<&prr<&rrr<&trr<&rrrW9$rrDrr!!)rs!!)Wj!!)lq!!)lq!!)or!!)rs!!)He
+!!)ip!!)or!!)or!!*#u!!)or!!)ut!!)or!!)ut!!)Wj!!)]l!!)Zk!!)ut!!)or!!)lq!!)cn
+!!)cn!!)fo!!)ip!!)rs!!%cRrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)qs8N)r
+s8N)us8E#js8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#js8N))rr<&qrr<&s
+rr<&urr<&rrr<&prr<&rrr<&trr<&rrrW9$rrDrr!!)rs!!)Wj!!)lq!!)lq!!)or!!)rs!!)He
+!!)ip!!)or!!)or!!*#u!!)or!!)ut!!)or!!)ut!!)Wj!!)]l!!)Zk!!)ut!!)or!!)lq!!)cn
+!!)cn!!)fo!!)ip!!)rs!!%cRrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)qs8N)r
+s8N)us8E#js8N*!s8N)qs8N)ss8N)ss8N*!s8N)rs8N*!s8N)ss8N)us8E#js8N))rr<&qrr<&s
+rr<&urr<&rrr<&prr<&rrr<&trr<&rrrW9$rrDrr!!)rs!!)Wj!!)lq!!)lq!!)or!!)rs!!)He
+!!)ip!!)or!!)or!!*#u!!)or!!)ut!!)or!!)ut!!)Wj!!)]l!!)Zk!!)ut!!)or!!)lq!!)cn
+!!)cn!!)fo!!)ip!!)rs!!%cRro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZ#rr<&qrr<&srr<&us7lZjrr<&r
+rr<&trr<&rrrN3#s7lZmrr<&os8)fmrr<&qrr<&rrr<&srr<&js8)flrr<&rrr<&rrr<&us7lZn
+rr<&rrr<&trr<&os8)fhrr<&ps8)fprr<&jrr<&nrr<&nrr<&orr<&orr<&urr<%Qs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZ#rr<&qrr<&srr<&us7lZjrr<&r
+rr<&trr<&rrrN3#s7lZmrr<&os8)fmrr<&qrr<&rrr<&srr<&js8)flrr<&rrr<&rrr<&us7lZn
+rr<&rrr<&trr<&os8)fhrr<&ps8)fprr<&jrr<&nrr<&nrr<&orr<&orr<&urr<%Qs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)ps7lZ#rr<&qrr<&srr<&us7lZjrr<&r
+rr<&trr<&rrrN3#s7lZmrr<&os8)fmrr<&qrr<&rrr<&srr<&js8)flrr<&rrr<&rrr<&us7lZn
+rr<&rrr<&trr<&os8)fhrr<&ps8)fprr<&jrr<&nrr<&nrr<&orr<&orr<&urr<%Qs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cT"rr<&qrr<&srr<&urr<&irr<&r
+rr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk!!)rs!!)ip!!)or!!)or
+!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj!!)cn!!)cn!!)fo!!)fo
+!!*#u!!%`Qrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cT"rr<&qrr<&srr<&urr<&irr<&r
+rr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk!!)rs!!)ip!!)or!!)or
+!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj!!)cn!!)cn!!)fo!!)fo
+!!*#u!!%`QrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)qs8N)rs8N)u
+s8N)ks7lZls8N)ss8N)ss8N*!s7ZNns8N)ss8N)us8N)qs7cT"rr<&qrr<&srr<&urr<&irr<&r
+rr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk!!)rs!!)ip!!)or!!)or
+!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj!!)cn!!)cn!!)fo!!)fo
+!!*#u!!%`Qro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N'!
+s8E#ss8E#ts8N)ks8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)ss8N))rr<&q
+rr<&srr<&urr<&irr<&rrr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk
+!!)rs!!)ip!!)or!!)or!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj
+!!)cn!!)cn!!)fo!!)cn!W`6#K`D&=!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N'!
+s8E#ss8E#ts8N)ks8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)ss8N))rr<&q
+rr<&srr<&urr<&irr<&rrr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk
+!!)rs!!)ip!!)or!!)or!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj
+!!)cn!!)cn!!)fo!!)cn!W`6#K`D&9!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N'!
+s8E#ss8E#ts8N)ks8N)ts8N)rs8N)ss8E#ts8E#us8E#ns8E#ts8E#ts8N)qs8N)ss8N))rr<&q
+rr<&srr<&urr<&irr<&rrr<&trr<&rrrW9$rrD`l!!)ip!!)rs!!)lq!!)lq!!)or!!)rs!!)Zk
+!!)rs!!)ip!!)or!!)or!!*#u!!)`m!!)or!!)ut!!)ip!!)rs!!)]l!!)lq!!)rs!!)ut!!)Wj
+!!)cn!!)cn!!)fo!!)cn!W`6#K`D&3!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZps7lZks82lss82is
+s7lZos7lZos7lZps7cTos7lZos7ZN"rr<&qrr<&srr<&trr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)srr<&prr<&ts8N)qrr<&trr<&urr<&trr<&rrr<&krr<&ts8N)prr<&qrr<&ts8N)t
+rr<&ts8N)ts8N)trr<&srr<&prr<&ts8N)lrr<&qrr<&ts8N)srr<&ts8N)qrr<&nrr<&nrr<&o
+rr<&trr<&srrN3#!;ZZp!07*Ym/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZps7lZks82lss82is
+s7lZos7lZos7lZps7cTos7lZos7ZN"rr<&qrr<&srr<&trr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)srr<&prr<&ts8N)qrr<&trr<&urr<&trr<&rrr<&krr<&ts8N)prr<&qrr<&ts8N)t
+rr<&ts8N)ts8N)trr<&srr<&prr<&ts8N)lrr<&qrr<&ts8N)srr<&ts8N)qrr<&nrr<&nrr<&o
+rr<&trr<&srrN3#!;ZZp!07*YklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZps7lZks82lss82is
+s7lZos7lZos7lZps7cTos7lZos7ZN"rr<&qrr<&srr<&trr<&ts8N)orr<&trr<&ss8N)trr<&t
+rr<&ts8N)srr<&prr<&ts8N)qrr<&trr<&urr<&trr<&rrr<&krr<&ts8N)prr<&qrr<&ts8N)t
+rr<&ts8N)ts8N)trr<&srr<&prr<&ts8N)lrr<&qrr<&ts8N)srr<&ts8N)qrr<&nrr<&nrr<&o
+rr<&trr<&srrN3#!;ZZp!07*YirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82los8;rrs7lZk
+s82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82iss8E#+s82lqs8E#ts8E#ss8;rj
+s8;rprrE-"r;c`pr;ccqq>gHnr;ZitrW)iqr;ccqr;ccqq>g9ir;ZitrW)rtq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!;ZZk!<)rr!!*&u!<)rr!;lfm!<)ro!<)ro!;c`o!;c]q!;QTo
+!07*Ym/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82los8;rrs7lZk
+s82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82iss8E#+s82lqs8E#ts8E#ss8;rj
+s8;rprrE-"r;c`pr;ccqq>gHnr;ZitrW)iqr;ccqr;ccqq>g9ir;ZitrW)rtq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!;ZZk!<)rr!!*&u!<)rr!;lfm!<)ro!<)ro!;c`o!;c]q!;QTo
+!07*YklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82los8;rrs7lZk
+s82lss82iss7lZns8;p!rr<&ss8)frs8Duus8;rss7lZns82iss8E#+s82lqs8E#ts8E#ss8;rj
+s8;rprrE-"r;c`pr;ccqq>gHnr;ZitrW)iqr;ccqr;ccqq>g9ir;ZitrW)rtq>gHnr;Zlu!;ulq
+!;uls!!*&t!<)ro!;ulq!!*&u!;ZZk!<)rr!!*&u!<)rr!;lfm!<)ro!<)ro!;c`o!;c]q!;QTo
+!07*YirR%VJ,~>
+!BpJ^mHsrH!:g*h!1!Ta!.k1&rr<%`rr<%Ms8;ls!/(=Nm/bd$J,~>
+!BU8[l0\ND!:g*h!1!Ta!.k1&rr<%`rr<%Ms8;ls!/(=NklK'jJ,~>
+!B:&Xj6cm>!:g*h!1!Ta!.k1&rr<%`rr<%Ms8;ls!/(=NirR%VJ,~>
+!BpJ^mHsrH!:g*h!1*Za!.k1&rr<%`rr<%Ms8Drt!.t7Mm/bd$J,~>
+!BU8[l0\ND!:g*h!1*Za!.k1&rr<%`rr<%Ms8Drt!.t7MklK'jJ,~>
+!B:&Xj6cm>!:g*h!1*Za!.k1&rr<%`rr<%Ms8Drt!.t7MirR%VJ,~>
+!BpJ^mF)%4!1a)d!.k1%rr<%arr<%Ms8;ls!.t7Mm/bd$J,~>
+!BU8[l-fV0!1a)d!.k1%rr<%arr<%Ms8;ls!.t7MklK'jJ,~>
+!B:&Xj3mu*!1a)d!.k1%rr<%arr<%Ms8;ls!.t7MirR%VJ,~>
+!BpJ^mF)%4!1a)e!.k1%s8;qfs82kJs8N&r!/(=Nm/bd$J,~>
+!BU8[l-fV0!1a)e!.k1%s8;qfs82kJs8N&r!/(=NklK'jJ,~>
+!B:&Xj3mu*!1a)e!.k1%s8;qfs82kJs8N&r!/(=NirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71graphicspage.eps b/books/ps/v71graphicspage.eps
new file mode 100644
index 0000000..17a8b59
--- /dev/null
+++ b/books/ps/v71graphicspage.eps
@@ -0,0 +1,2450 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: graphicspage.eps
+%%CreationDate: Sat Jun 21 10:58:36 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       124691 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+m/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+klK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+irR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!8[YT!;-9k!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!8[YT!;-9k!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcE^h
+r;Zlu!8[YT!;-9k!.k0Qrr<&urrW9$!<<#u!ri9#rW";F!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<<#urVneVrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)Trr<&krr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)Trr<&krr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0i
+s8N)ts8N)Trr<&krr<%Ms/l;)!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!(jT!!%TMT`4ulrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!(jT!!%TMT`4ulrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEdj!!)or!!(jT!!%TMT`4ulrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"JcEai"T\Q&rrE)s
+!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#urr<&urtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!!<3'!rVururp9a;4b*~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"JcEai"T\Q&rrE)s
+!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#urr<&urtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!!<3'!rVururojI/3e.~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k0j
+rr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"JcEai"T\Q&rrE)s
+!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#urr<&urtPP6!<3'!
+!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!!<3'!rVururo4$s2h1~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)]lrrE&u!!)ut!!)ut!!)rsrrE#t!!)utrrE#t!!)lq!!)lq!!)utrrE#t!!)ut
+rr@WMa8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)]lrrE&u!!)ut!!)ut!!)rsrrE#t!!)utrrE#t!!)lq!!)lq!!)utrrE#t!!)ut
+rr@WMa8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcEgk!!)]lrrE&u!!)ut!!)ut!!)rsrrE#t!!)utrrE#t!!)lq!!)lq!!)utrrE#t!!)ut
+rr@WMa8Z,>rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!;6?l!;$3j!;uis!;lcr
+!<2uu!;uis!;c]q!;lcr!;lcr!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!;6?l!;$3j!;uis!;lcr
+!<2uu!;uis!;c]q!;lcr!;lcr!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls2Y->!;6?l!;$3j!;uis!;lcr
+!<2uu!;uis!;c]q!;lcr!;lcr!<)ot!;uis!.k0irriE&!<3'!qu?`squ?fu!<;lq!ri9#rVuru
+rVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!
+rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)rsr;cis!!)foqZ-Qo!!)or!!*#u
+!!)rs!!)lq!!)or!!)]lrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!
+!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)rsr;cis!!)foqZ-Qo!!)or!!*#u
+!!)rs!!)lq!!)or!!)]lrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!
+!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcEgk!!)rsr;cis!!)foqZ-Qo!!)or!!*#u
+!!)rs!!)lq!!)or!!)]lrW%NL`;]f;rr3'#rrE)o!!<0#s7cQos7?9ks7cQqrrE)u!<)p0!<3'!
+!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;c]q!<)ot!;ZWp!;uis
+!;uis!;lcr!<2uu!;uis!;c]q!;lcr!:p0i!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u
+!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&u
+m/bd$J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;c]q!<)ot!;ZWp!;uis
+!;uis!;lcr!<2uu!;uis!;c]q!;lcr!:p0i!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u
+!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&u
+klK'jJ,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls2Y->!;c]q!<)ot!;ZWp!;uis
+!;uis!;lcr!<2uu!;uis!;c]q!;lcr!:p0i!.k0hrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u
+!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&u
+irR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6WrrVlitq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNqqu6WrpAY*mr;Q`sJcEdj!!*#u!s&?$
+s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!
+nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6WrrVlitq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNqqu6WrpAY*mr;Q`sJcEdj!!*#u!s&?$
+s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!
+nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLa8Z,>
+qu6WrrVlitq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNqqu6WrpAY*mr;Q`sJcEdj!!*#u!s&?$
+s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!
+nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&srr<&p
+rr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&srr<&p
+rr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0is8N)trr<&srr<&p
+rr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<%Ms2P'B!<3'!!<;rs!<;rs
+!<<#u!ri9#qu?`srVururVururVurup&G0o!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:rVu]o
+r;Z]q!<<#urr3!!s8;rrs8E#ts8E#ts7u`ns8;rprrE-"r;_EK`r?#=rr3'#rrE)u!!<0#s8Duu
+s82iurrE)u!!*&a!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:rVu]o
+r;Z]q!<<#urr3!!s8;rrs8E#ts8E#ts7u`ns8;rprrE-"r;_EK`r?#=rr3'#rrE)u!!<0#s8Duu
+s82iurrE)u!!*&a!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL`W,l:rVu]o
+r;Z]q!<<#urr3!!s8;rrs8E#ts8E#ts7u`ns8;rprrE-"r;_EK`r?#=rr3'#rrE)u!!<0#s8Duu
+s82iurrE)u!!*&a!!<0#s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Hrr<%M
+s-3Ne!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Hrr<%M
+s-3Ne!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Hrr<%M
+s-3Ne!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLVZ-Vr
+JcD#8!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLVZ-Vr
+JcD#8!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLVZ-Vr
+JcD#8!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Hrr<%Ms-3Ne
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Hrr<%Ms-3Ne
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Hrr<%Ms-3Ne
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLVuQ\qJcD):!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLVuQ\qJcD):!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLVuQ\qJcD):!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G<:s8;qKs8Dut!7UuH!5AL3!.k0Rs8;ros8;r!s8MBdeieN~>
+!BU8[l%/m6s8;qKs8Dut!7UuH!5AL3!.k0Rs8;ros8;r!s8M6`c8pI~>
+!B:&Xj+770s8;qKs8Dut!7UuH!5AL3!.k0Rs8;ros8;r!s8M$Z_`*)~>
+!BpJ^mHafN!:9^c!3?,"!:Bdd!0R9]!7_#K!5&72!7CfH!7LlI!/^^U!;HKn!3H5"m/bd$J,~>
+!BU8[l0JBJ!:9^c!3?,"!:Bdd!0R9]!7_#K!5&72!7CfH!7LlI!/^^U!;HKn!3H5"klK'jJ,~>
+!B:&Xj6QaD!:9^c!3?,"!:Bdd!0R9]!7_#K!5&72!7CfH!7LlI!/^^U!;HKn!3H5"irR%VJ,~>
+!BpJ^mHFQM!:9^c!3?,"!:Bdd!0R9]!7h)L!5&72!7:`G!7LlI!/^^U!;HKn!3H5"m/bd$J,~>
+!BU8[l0/-I!:9^c!3?,"!:Bdd!0R9]!7h)L!5&72!7:`G!7LlI!/^^U!;HKn!3H5"klK'jJ,~>
+!B:&Xj66LC!:9^c!3?,"!:Bdd!0R9]!7h)L!5&72!7:`G!7LlI!/^^U!;HKn!3H5"irR%VJ,~>
+!BpJ^mHOWP!<3%brr<&drr<%]rr<&Lrr<&2rr<%lrr<%Urr<&nrr<&#s8MBdeieN~>
+!BU8[l083L!<3%brr<&drr<%]rr<&Lrr<&2rr<%lrr<%Urr<&nrr<&#s8M6`c8pI~>
+!B:&Xj6?RF!<3%brr<&drr<%]rr<&Lrr<&2rr<%lrr<%Urr<&nrr<&#s8M$Z_`*)~>
+!BpJ^mHOWP!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ns8;ourrDusr;ccqrr<'!r;cWm
+rr<'!r;cZn!!)ipr;c`pq>g9ir;Zlu!<3#u!<)rt!<3#t!!*&u!<)rs!<3#t!<)rr!;c`o!!3*"
+p](0lr;Zcs!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]or;Zlu!;ulq
+!;c`o!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/p
+s7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDEcr;c]or;Zlu!;ZZo!<3#t!<)rr!;QQo!;HKn
+!;-<i!;c`o!!3*"b5_J.!S0Da~>
+!BU8[l083L!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ns8;ourrDusr;ccqrr<'!r;cWm
+rr<'!r;cZn!!)ipr;c`pq>g9ir;Zlu!<3#u!<)rt!<3#t!!*&u!<)rs!<3#t!<)rr!;c`o!!3*"
+p](0lr;Zcs!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]or;Zlu!;ulq
+!;c`o!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/p
+s7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDEcr;c]or;Zlu!;ZZo!<3#t!<)rr!;QQo!;HKn
+!;-<i!;c`o!!3*"b5_J*!R<`V~>
+!B:&Xj6?RF!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&ns8;ourrDusr;ccqrr<'!r;cWm
+rr<'!r;cZn!!)ipr;c`pq>g9ir;Zlu!<3#u!<)rt!<3#t!!*&u!<)rs!<3#t!<)rr!;c`o!!3*"
+p](0lr;Zcs!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]or;Zlu!;ulq
+!;c`o!!3*"p](0lqu?Kmq>^Eorr;rtrVufrr;Z`r!<<#uqu?Wqq>^Bnr;ZcsrVultr;Z]q!WN/p
+s7u`ps8E#ts8E#us8N'!s8;rps8;ros8;ourrDEcr;c]or;Zlu!;ZZo!<3#t!<)rr!;QQo!;HKn
+!;-<i!;c`o!!3*"b5_J$!Q-jH~>
+!BpJ^mHX]O!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)ot
+!;uls!<)ot!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!;-9k!<)rt!<)ot!;uis!;uls!<2uu!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!;uis
+!;uls!<2uu!;lcr!;ZWp!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k
+!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis
+!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!:Bdd!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot!;ZWp
+!;HKn!;6?l!<)ot!;uis!<)rt!6Y?@m/bd$J,~>
+!BU8[l0A9K!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)ot
+!;uls!<)ot!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!;-9k!<)rt!<)ot!;uis!;uls!<2uu!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!;uis
+!;uls!<2uu!;lcr!;ZWp!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k
+!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis
+!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!:Bdd!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot!;ZWp
+!;HKn!;6?l!<)ot!;uis!<)rt!6Y?@klK'jJ,~>
+!B:&Xj6HXE!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)ot
+!;uls!<)ot!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!;-9k!<)rt!<)ot!;uis!;uls!<2uu!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!;uis
+!;uls!<2uu!;lcr!;ZWp!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k
+!;uis!<)ot!<)ot!;lfr!<2uu!;c]q!;c]q!<)ot!;uis!;uis!<)ot!<)rt!;?Em!;ZWp!;uis
+!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!:Bdd!<)ot!;uis!<)rt!;QQo!;uis!<)ot!<)ot!;ZWp
+!;HKn!;6?l!<)ot!;uis!<)rt!6Y?@irR%VJ,~>
+!BpJ^mHX]O!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrq#:<or;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lqu6WrrVlitr;Q`sr;Q`sp\t3nrr2rurVlit
+qu6WrrVlitr;Q`soD\djr;Q`sr;Q`srr2ruqu6Wrq#:<or;Q`srVlitr;Q`sr;Q`spAY*mo`"mk
+rVlitqu6Wrrr2ruqu6WrrVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<&_rr<&s
+rr<&srr<&orrrK'rrE*!!<2uu!;lcr!;c]q!;HKn!:^!g!;uis!;uis!6Y?@m/bd$J,~>
+!BU8[l0A9K!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrq#:<or;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lqu6WrrVlitr;Q`sr;Q`sp\t3nrr2rurVlit
+qu6WrrVlitr;Q`soD\djr;Q`sr;Q`srr2ruqu6Wrq#:<or;Q`srVlitr;Q`sr;Q`spAY*mo`"mk
+rVlitqu6Wrrr2ruqu6WrrVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<&_rr<&s
+rr<&srr<&orrrK'rrE*!!<2uu!;lcr!;c]q!;HKn!:^!g!;uis!;uis!6Y?@klK'jJ,~>
+!B:&Xj6HXE!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrq#:<or;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lqu6WrrVlitr;Q`sr;Q`sp\t3nrr2rurVlit
+qu6WrrVlitr;Q`soD\djr;Q`sr;Q`srr2ruqu6Wrq#:<or;Q`srVlitr;Q`sr;Q`spAY*mo`"mk
+rVlitqu6Wrrr2ruqu6WrrVlitr;Q`sq>UEpqu6Wrqu6WroD\djrr2rup\t3nqu6Wrp&>!lqu6Wr
+qu6WrrVlitr;Q`srVlitr;Q`spAY*mq>UEpr;Q`srVlitqu6`us8N)rrr<&trr<&srr<&_rr<&s
+rr<&srr<&orrrK'rrE*!!<2uu!;lcr!;c]q!;HKn!:^!g!;uis!;uis!6Y?@irR%VJ,~>
+!BpJ^mHacP!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;?Hi!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;HKn!<2uu!<)rn!;ulr!;6Bh!;uis
+!;uis!<2uu!;lcr!;HNm!;c]q!;uis!;uis!;?Em!;ZZl!<)ot!;HNh!;ulr!;?Em!;lcr!;lcr
+!;$3j!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct
+!<<)p!;ulr!:'U]!;lfq!;6?r!<<'!s8N)us7lZkrr<&nrr<&ls8)fns8E#=s8MBdeieN~>
+!BU8[l0J?L!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;?Hi!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;HKn!<2uu!<)rn!;ulr!;6Bh!;uis
+!;uis!<2uu!;lcr!;HNm!;c]q!;uis!;uis!;?Em!;ZZl!<)ot!;HNh!;ulr!;?Em!;lcr!;lcr
+!;$3j!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct
+!<<)p!;ulr!:'U]!;lfq!;6?r!<<'!s8N)us7lZkrr<&nrr<&ls8)fns8E#=s8M6`c8pI~>
+!B:&Xj6Q^F!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;?Hi!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;HKn!<2uu!<)rn!;ulr!;6Bh!;uis
+!;uis!<2uu!;lcr!;HNm!;c]q!;uis!;uis!;?Em!;ZZl!<)ot!;HNh!;ulr!;?Em!;lcr!;lcr
+!;$3j!<2uu!;ulo!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ulr!;$3j!;QQo!<2uu!;uis!;lct
+!<<)p!;ulr!:'U]!;lfq!;6?r!<<'!s8N)us7lZkrr<&nrr<&ls8)fns8E#=s8M$Z_`*)~>
+!BpJ^mHafK!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;HKn!;uis!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;?Eo!<3&srr<&is8N)orr<&srr<&s
+rr<&srr<&urr<&rrr<&ks8N)srr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&is8N)orr<&r
+rr<&rrr<&irrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu
+!;uis!;lcu!<<'!o)J^imJd.dr;Q`sq#C?op\tEtrrE'!rrE&u!!)Wj!!)cn!!)`m!!)rs!!)fo
+rrC1@rp9a;4b*~>
+!BU8[l0JBG!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;HKn!;uis!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;?Eo!<3&srr<&is8N)orr<&srr<&s
+rr<&srr<&urr<&rrr<&ks8N)srr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&is8N)orr<&r
+rr<&rrr<&irrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu
+!;uis!;lcu!<<'!o)J^imJd.dr;Q`sq#C?op\tEtrrE'!rrE&u!!)Wj!!)cn!!)`m!!)rs!!)fo
+rrC1@rojI/3e.~>
+!B:&Xj6QaA!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;HKn!;uis!;uis!;uis!;QQo
+!;lcr!;lcr!;lcr!;lcr!;lcr!;6?l!;?Em!;uis!;uis!;?Eo!<3&srr<&is8N)orr<&srr<&s
+rr<&srr<&urr<&rrr<&ks8N)srr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&is8N)orr<&r
+rr<&rrr<&irrN3#!;uis!;uis!;lcr!;6?l!;lcr!;lcr!<)ot!;uis!;ZZp!;6?l!;QQo!<2uu
+!;uis!;lcu!<<'!o)J^imJd.dr;Q`sq#C?op\tEtrrE'!rrE&u!!)Wj!!)cn!!)`m!!)rs!!)fo
+rrC1@ro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqp\t3nr;Q`sr;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lpAY*mr;Q`sr;Q`spAY0orrDus!!)`m!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)rs!!)ut!!)rs!!)rs!!)`m!!)lq!!)rs!!)ut
+!!)cn!!)`m!!)rs!!)ip!!)or!!)or!!)Ti!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wrqu6WrrVlit
+r;Q`srVlitr;Q`spAY*mp\t9prrDrr!!)or!s&B$!;?Em!;uis!:Kje!;uis!;uis!;uis!;QQu
+!<3'!!<3&urr<&jrr<&nrr<&mrr<&srr<&srr<&srr<&As8MBdeieN~>
+!BU8[l0SEM!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqp\t3nr;Q`sr;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lpAY*mr;Q`sr;Q`spAY0orrDus!!)`m!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)rs!!)ut!!)rs!!)rs!!)`m!!)lq!!)rs!!)ut
+!!)cn!!)`m!!)rs!!)ip!!)or!!)or!!)Ti!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wrqu6WrrVlit
+r;Q`srVlitr;Q`spAY*mp\t9prrDrr!!)or!s&B$!;?Em!;uis!:Kje!;uis!;uis!;uis!;QQu
+!<3'!!<3&urr<&jrr<&nrr<&mrr<&srr<&srr<&srr<&As8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruqYpNqp\t3nr;Q`sr;Q`s
+r;Q`sq#:<oqu6Wrqu6Wrqu6Wrqu6Wrqu6Wrp&>!lpAY*mr;Q`sr;Q`spAY0orrDus!!)`m!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)fo!!)rs!!)ut!!)rs!!)rs!!)`m!!)lq!!)rs!!)ut
+!!)cn!!)`m!!)rs!!)ip!!)or!!)or!!)Ti!W`6#r;Q`sr;Q`squ6Wrp&>!lqu6Wrqu6WrrVlit
+r;Q`srVlitr;Q`spAY*mp\t9prrDrr!!)or!s&B$!;?Em!;uis!:Kje!;uis!;uis!;uis!;QQu
+!<3'!!<3&urr<&jrr<&nrr<&mrr<&srr<&srr<&srr<&As8M$Z_`*)~>
+!BpJ^mHjiQ!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZWp!<)rt!<2uu!<)rt
+!;uis!;uis!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!<)ot!;ZWp!<)rt!<)ot!<)rt!;uis!;6?l
+!;c]q!<)rt!<)rt!<)ot!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;?Em!;c]q!<)rt!;uis!<)rt!<)ot!<)rt!<)rt!<)ot!;QQo!<)ot!;c]q!:g'h!;lcr!<)rt
+!;lcr!;6?l!;c]q!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&t
+s8N)ts8N)trr<&qs8N)nrr<&ts8N)ss8N)trr<&nrr<&urr<&srr<&ts8N)qrr<&nrr<&mrr<&t
+s8N)ss8N)trr<&As8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZWp!<)rt!<2uu!<)rt
+!;uis!;uis!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!<)ot!;ZWp!<)rt!<)ot!<)rt!;uis!;6?l
+!;c]q!<)rt!<)rt!<)ot!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;?Em!;c]q!<)rt!;uis!<)rt!<)ot!<)rt!<)rt!<)ot!;QQo!<)ot!;c]q!:g'h!;lcr!<)rt
+!;lcr!;6?l!;c]q!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&t
+s8N)ts8N)trr<&qs8N)nrr<&ts8N)ss8N)trr<&nrr<&urr<&srr<&ts8N)qrr<&nrr<&mrr<&t
+s8N)ss8N)trr<&As8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;ZWp!<)rt!<2uu!<)rt
+!;uis!;uis!;QTo!<)ot!;c]q!;c]q!<)ot!;c]q!<)ot!;ZWp!<)rt!<)ot!<)rt!;uis!;6?l
+!;c]q!<)rt!<)rt!<)ot!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QTo!<)ot!<)ot!<)rt!;uis
+!;?Em!;c]q!<)rt!;uis!<)rt!<)ot!<)rt!<)rt!<)ot!;QQo!<)ot!;c]q!:g'h!;lcr!<)rt
+!;lcr!;6?l!;c]q!<)ot!;uis!<)rt!<)rt!<)ot!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&t
+s8N)ts8N)trr<&qs8N)nrr<&ts8N)ss8N)trr<&nrr<&urr<&srr<&ts8N)qrr<&nrr<&mrr<&t
+s8N)ss8N)trr<&As8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;ZZn!;lfp!!*&u!<<)u!<3#t
+!;ZWq!<;utr;ZTnr;Z]qq#C9mp](0lqZ$Ko"TJH%s8Voqq>UEpq>^Bnqu6Zss8;rls8;ots8E#u
+s8E#ts8E#ss8;p!rr<&prrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)osr;c]or;c`p!<E/u
+!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQr
+s8;rps8;rprrE-"r;cZnrrDcmr;ZitrW)rt!<E/u!;?Em!<2uu!;lfp!;lfm!<)ro!;QTm!!*&u
+!<3!!!<;utaoDA-!S0Da~>
+!BU8[l0\NL!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;ZZn!;lfp!!*&u!<<)u!<3#t
+!;ZWq!<;utr;ZTnr;Z]qq#C9mp](0lqZ$Ko"TJH%s8Voqq>UEpq>^Bnqu6Zss8;rls8;ots8E#u
+s8E#ts8E#ss8;p!rr<&prrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)osr;c]or;c`p!<E/u
+!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQr
+s8;rps8;rprrE-"r;cZnrrDcmr;ZitrW)rt!<E/u!;?Em!<2uu!;lfp!;lfm!<)ro!;QTm!!*&u
+!<3!!!<;utaoDA)!R<`V~>
+!B:&Xj6cmF!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;ZZn!;lfp!!*&u!<<)u!<3#t
+!;ZWq!<;utr;ZTnr;Z]qq#C9mp](0lqZ$Ko"TJH%s8Voqq>UEpq>^Bnqu6Zss8;rls8;ots8E#u
+s8E#ts8E#ss8;p!rr<&prrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)osr;c]or;c`p!<E/u
+!;?Hk!;lfm!;6?l!;c`o!!*&u!<<)q!;uln!;ulq!;c`o!!<0#!<3!!!<;uto`+jiqYpNqqYpQr
+s8;rps8;rprrE-"r;cZnrrDcmr;ZitrW)rt!<E/u!;?Em!<2uu!;lfp!;lfm!<)ro!;QTm!!*&u
+!<3!!!<;utaoDA#!Q-jH~>
+!BpJ^m>:iC!.k0$s,?sX!;c]q!8mhV!.k1.s8MBdeieN~>
+!BU8[l&#E?!.k0$s,?sX!;c]q!8mhV!.k1.s8M6`c8pI~>
+!B:&Xj,*d9!.k0$s,?sX!;c]q!8mhV!.k1.s8M$Z_`*)~>
+!BpJ^m>:iC!.k0$s,I$Y!;ZWp!8mhV!.k1.s8MBdeieN~>
+!BU8[l&#E?!.k0$s,I$Y!;ZWp!8mhV!.k1.s8M6`c8pI~>
+!B:&Xj,*d9!.k0$s,I$Y!;ZWp!8mhV!.k1.s8M$Z_`*)~>
+!BpJ^m>:iC!.k0$s,I$Y!;ZWp!9!nW!.k1-s8MBdeieN~>
+!BU8[l&#E?!.k0$s,I$Y!;ZWp!9!nW!.k1-s8M6`c8pI~>
+!B:&Xj,*d9!.k0$s,I$Y!;ZWp!9!nW!.k1-s8M$Z_`*)~>
+!BpJ^m>CrB!.k0$s-!E[!;lfp!.k0as8MBdeieN~>
+!BU8[l&,N>!.k0$s-!E[!;lfp!.k0as8M6`c8pI~>
+!B:&Xj,3m8!.k0$s-!E[!;lfp!.k0as8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mHafN!4r4/!0.$Y!8RVQ!.k0$s+13ls8MBdeieN~>
+!BU8[l0JBJ!4r4/!0.$Y!8RVQ!.k0$s+13ls8M6`c8pI~>
+!B:&Xj6QaD!4r4/!0.$Y!8RVQ!.k0$s+13ls8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!:Bdd!8IMR!8RSS!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8MBdeieN~>
+!BU8[l0/-I!;HKn!:Bdd!8IMR!8RSS!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8M6`c8pI~>
+!B:&Xj66LC!;HKn!:Bdd!8IMR!8RSS!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!:Bdd!8RSS!8IMR!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8MBdeieN~>
+!BU8[l0/-I!;HKn!:Bdd!8RSS!8IMR!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8M6`c8pI~>
+!B:&Xj66LC!;HKn!:Bdd!8RSS!8IMR!:Bdd!9X:]!9jF_!;ZWp!87AP!.k0$s+13ls8M$Z_`*)~>
+!BpJ^mHFQM!94"Y!8RSS!65$=!6kHC!;ZWp!87AP!.k0$s+13ls8MBdeieN~>
+!BU8[l0/-I!94"Y!8RSS!65$=!6kHC!;ZWp!87AP!.k0$s+13ls8M6`c8pI~>
+!B:&Xj66LC!94"Y!8RSS!65$=!6kHC!;ZWp!87AP!.k0$s+13ls8M$Z_`*)~>
+!BpJ^mHFQM!;ZZo!;ZZn!!3*"rVu]or;Z]q!WN/os8;rps7u`ks8N'!s8;rps8;ros8E#qs8N'!
+s8;rqs7u`ns8;ourrDfnrW)iqrr<'!r;cTlq>gKo!<E/u!;lfp!;HNn!!*&t!;ZWp!;ZZn!;uls
+!!*&t!;lfp!.k0$s+149s8MBdeieN~>
+!BU8[l0/-I!;ZZo!;ZZn!!3*"rVu]or;Z]q!WN/os8;rps7u`ks8N'!s8;rps8;ros8E#qs8N'!
+s8;rqs7u`ns8;ourrDfnrW)iqrr<'!r;cTlq>gKo!<E/u!;lfp!;HNn!!*&t!;ZWp!;ZZn!;uls
+!!*&t!;lfp!.k0$s+149s8M6`c8pI~>
+!B:&Xj66LC!;ZZo!;ZZn!!3*"rVu]or;Z]q!WN/os8;rps7u`ks8N'!s8;rps8;ros8E#qs8N'!
+s8;rqs7u`ns8;ourrDfnrW)iqrr<'!r;cTlq>gKo!<E/u!;lfp!;HNn!!*&t!;ZWp!;ZZn!;uls
+!!*&t!;lfp!.k0$s+149s8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!;c]q!<)rt!;lcr!;ZWp!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c`q!<)ot!;lcr!;ZWp!<)rt!;6?l!;c`q!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HNn
+!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!.k0$s+14:s8MBdeieN~>
+!BU8[l0/-I!;HKn!;c]q!<)rt!;lcr!;ZWp!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c`q!<)ot!;lcr!;ZWp!<)rt!;6?l!;c`q!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HNn
+!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!.k0$s+14:s8M6`c8pI~>
+!B:&Xj66LC!;HKn!;c]q!<)rt!;lcr!;ZWp!<)rt!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot!<)ot
+!;ZWp!;c`q!<)ot!;lcr!;ZWp!<)rt!;6?l!;c`q!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HNn
+!<)ot!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!.k0$s+14:s8M$Z_`*)~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2ruqu6Wrq#:<o
+qu6Wrqu6Wrp&>!lr;Q`sr;Q`srr2ruqu6WrJcC<$JcG-;rp9a;4b*~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2ruqu6Wrq#:<o
+qu6Wrqu6Wrp&>!lr;Q`sr;Q`srr2ruqu6WrJcC<$JcG-;rojI/3e.~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2ruqu6Wrq#:<o
+qu6Wrqu6Wrp&>!lr;Q`sr;Q`srr2ruqu6WrJcC<$JcG-;ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;ZZo!;QQo!;QTn!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrq#C<no)A[iqYpNqr;Q`spAY*mq>UEpr;Q`srr;coq#:<oqu6Wrqu6WrqZ$Emr;Q`s
+r;Q`srr;coJcC<$JcG-;rp9a;4b*~>
+!BU8[l0/-I!;HKn!;ZZo!;QQo!;QTn!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrq#C<no)A[iqYpNqr;Q`spAY*mq>UEpr;Q`srr;coq#:<oqu6Wrqu6WrqZ$Emr;Q`s
+r;Q`srr;coJcC<$JcG-;rojI/3e.~>
+!B:&Xj66LC!;HKn!;ZZo!;QQo!;QTn!;?Em!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrq#C<no)A[iqYpNqr;Q`spAY*mq>UEpr;Q`srr;coq#:<oqu6Wrqu6WrqZ$Emr;Q`s
+r;Q`srr;coJcC<$JcG-;ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;?Hm!;c]q!;6Bl!;QQo!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrp&G$lo`"mkqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wrqu6Wrqu6Wrr;Q`s
+r;Q`sr;Q`srr2ruJcC<$JcFm4rp9a;4b*~>
+!BU8[l0/-I!;HKn!;?Hm!;c]q!;6Bl!;QQo!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrp&G$lo`"mkqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wrqu6Wrqu6Wrr;Q`s
+r;Q`sr;Q`srr2ruJcC<$JcFm4rojI/3e.~>
+!B:&Xj66LC!;HKn!;?Hm!;c]q!;6Bl!;QQo!;lcr!;lcr!;-9k!;lcu!<<'!qu6WrqYpNqqYpNq
+r;Q`squ6Wrp&G$lo`"mkqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wrqu6Wrqu6Wrr;Q`s
+r;Q`sr;Q`srr2ruJcC<$JcFm4ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wr
+qu6Wrqu6Wrr;Q`sr;Q`sr;Q`srr2ruJcC<$JcFm4rp9a;4b*~>
+!BU8[l0/-I!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wr
+qu6Wrqu6Wrr;Q`sr;Q`sr;Q`srr2ruJcC<$JcFm4rojI/3e.~>
+!B:&Xj66LC!;HKn!;c]q!;uis!;lcr!;ZWp!;uis!;ZWp!;lcr!;lcr!;-9k!;lcu!<<'!qu6Wr
+qYpNqqYpNqr;Q`squ6Wrq>UEpr;Q`sp&>!lqYpNqr;Q`spAY*mq>UEpr;Q`srr2runc&Rhqu6Wr
+qu6Wrqu6Wrr;Q`sr;Q`sr;Q`srr2ruJcC<$JcFm4ro4$s2h1~>
+!BpJ^mHFQM!;HKn!;c`q!<)ot!;lcr!<)ot!<3#u!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot
+!<)ot!;ZWp!;c]q!;uis!;lcr!<)ot!<3#u!<)ot!;6?l!;c]q!;uis!;?Em!<)ot!<2uu!;uis
+!<)ot!<)rt!;QTo!<)ot!;c]q!;lcr!<)rt!;uis!;uis!<)ot!<)rt!;lfr!.k0$s+14Cs8MBd
+eieN~>
+!BU8[l0/-I!;HKn!;c`q!<)ot!;lcr!<)ot!<3#u!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot
+!<)ot!;ZWp!;c]q!;uis!;lcr!<)ot!<3#u!<)ot!;6?l!;c]q!;uis!;?Em!<)ot!<2uu!;uis
+!<)ot!<)rt!;QTo!<)ot!;c]q!;lcr!<)rt!;uis!;uis!<)ot!<)rt!;lfr!.k0$s+14Cs8M6`
+c8pI~>
+!B:&Xj66LC!;HKn!;c`q!<)ot!;lcr!<)ot!<3#u!<)ot!;QQo!<)ot!;c]q!;-<k!<)ot!<)ot
+!<)ot!;ZWp!;c]q!;uis!;lcr!<)ot!<3#u!<)ot!;6?l!;c]q!;uis!;?Em!<)ot!<2uu!;uis
+!<)ot!<)rt!;QTo!<)ot!;c]q!;lcr!<)rt!;uis!;uis!<)ot!<)rt!;lfr!.k0$s+14Cs8M$Z
+_`*)~>
+!BpJ^mHafK!<)ro!<)ou!<;utq>^BnrVllus8;rks8;rps7u`jrrE-"r;c`pr;c`pq>gNprW)rt
+rW)iqr;cfr!<E/u!;HNi!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;?En!<;utr;ZTnrVufr!<<#u
+s8W&urr;rtrVufrq>^HpJcC<$JcGECrp9a;4b*~>
+!BU8[l0JBG!<)ro!<)ou!<;utq>^BnrVllus8;rks8;rps7u`jrrE-"r;c`pr;c`pq>gNprW)rt
+rW)iqr;cfr!<E/u!;HNi!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;?En!<;utr;ZTnrVufr!<<#u
+s8W&urr;rtrVufrq>^HpJcC<$JcGECrojI/3e.~>
+!B:&Xj6QaA!<)ro!<)ou!<;utq>^BnrVllus8;rks8;rps7u`jrrE-"r;c`pr;c`pq>gNprW)rt
+rW)iqr;cfr!<E/u!;HNi!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;?En!<;utr;ZTnrVufr!<<#u
+s8W&urr;rtrVufrq>^HpJcC<$JcGECro4$s2h1~>
+!BpJ^m?IVN!.k1Hrr<%Ms+13$s1A=1m/bd$J,~>
+!BU8[l'22J!.k1Hrr<%Ms+13$s1A=1klK'jJ,~>
+!B:&Xj-9QD!.k1Hrr<%Ms+13$s1A=1irR%VJ,~>
+!BpJ^m?IVN!.k1Hrr<%Ms+13$s1A=1m/bd$J,~>
+!BU8[l'22J!.k1Hrr<%Ms+13$s1A=1klK'jJ,~>
+!B:&Xj-9QD!.k1Hrr<%Ms+13$s1A=1irR%VJ,~>
+!BpJ^m?IVN!.k1Hrr<%Ms+13$s1A=1m/bd$J,~>
+!BU8[l'22J!.k1Hrr<%Ms+13$s1A=1klK'jJ,~>
+!B:&Xj-9QD!.k1Hrr<%Ms+13$s1A=1irR%VJ,~>
+!BpJ^m?R_M!.k1Ks8;qKs+13$s1SI3m/bd$J,~>
+!BU8[l';;I!.k1Ks8;qKs+13$s1SI3klK'jJ,~>
+!B:&Xj-BZC!.k1Ks8;qKs+13$s1SI3irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA9j\!.k0ss8;rEs8;q\s8N(Ms+14Lm/bd$J,~>
+!BU8[l)"FX!.k0ss8;rEs8;q\s8N(Ms+14LklK'jJ,~>
+!B:&Xj/)eR!.k0ss8;rEs8;q\s8N(Ms+14LirR%VJ,~>
+!BpJ^mG7g:!7UuG!3?/!!!3*"W;chtdJj1Hp&Fsjm/I%cZi:"*o`"mkJcCf2rp9a;4b*~>
+!BU8[l.uC6!7UuG!3?/!!!3*"W;chtdJj1Hp&Fsjm/I%cZi:"*o`"mkJcCf2rojI/3e.~>
+!B:&Xj5'b0!7UuG!3?/!!!3*"W;chtdJj1Hp&Fsjm/I%cZi:"*o`"mkJcCf2ro4$s2h1~>
+!BpJ^mHsrH!<)rl!7:cG!3H2#!<3#u!3#nt!7LlI!:g'h!:9^c!42\*!;-9k!.k02s8MBdeieN~>
+!BU8[l0\ND!<)rl!7:cG!3H2#!<3#u!3#nt!7LlI!:g'h!:9^c!42\*!;-9k!.k02s8M6`c8pI~>
+!B:&Xj6cm>!<)rl!7:cG!3H2#!<3#u!3#nt!7LlI!:g'h!:9^c!42\*!;-9k!.k02s8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnqu?Km
+`r?#=r;Q`sW;chtdf0:Io)AakrrAYj!!%TMJcG`:!S0Da~>
+!BU8[l0\ND!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnqu?Km
+`r?#=r;Q`sW;chtdf0:Io)AakrrAYj!!%TMJcG`6!R<`V~>
+!B:&Xj6cm>!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnqu?Km
+`r?#=r;Q`sW;chtdf0:Io)AakrrAYj!!%TMJcG`0!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!<3#o
+!65$=!;?Hk!;c`o!;6Bj!;ulr!<<)u!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;c`o
+!!3*"p](0lqu?KmpAY0orrDusrW)uurW)lrrW)cor;cfrrr<9'!!*'!!!)cnr;[!#!!*'!rVuru
+rW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN.Ns/>tsm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!<3#o
+!65$=!;?Hk!;c`o!;6Bj!;ulr!<<)u!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;c`o
+!!3*"p](0lqu?KmpAY0orrDusrW)uurW)lrrW)cor;cfrrr<9'!!*'!!!)cnr;[!#!!*'!rVuru
+rW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN.Ns/>tsklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!<3#o
+!65$=!;?Hk!;c`o!;6Bj!;ulr!<<)u!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;c`o
+!!3*"p](0lqu?KmpAY0orrDusrW)uurW)lrrW)cor;cfrrr<9'!!*'!!!)cnr;[!#!!*'!rVuru
+rW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN.Ns/>tsirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#us8N)ts8N)<rr<&orr<&trr<&srr<&trr<&nrr<&trr<&srr<&trr<&srr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&qrr<&jrr<&u
+rr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&prr<&ts8N)ss8N)urr<&trr<&trr<&s
+s8N)trr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N(Ms/>tsm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#us8N)ts8N)<rr<&orr<&trr<&srr<&trr<&nrr<&trr<&srr<&trr<&srr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&qrr<&jrr<&u
+rr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&prr<&ts8N)ss8N)urr<&trr<&trr<&s
+s8N)trr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N(Ms/>tsklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#us8N)ts8N)<rr<&orr<&trr<&srr<&trr<&nrr<&trr<&srr<&trr<&srr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&ts8N)orr<&trr<&qrr<&jrr<&u
+rr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&prr<&ts8N)ss8N)urr<&trr<&trr<&s
+s8N)trr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N(Ms/>tsirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N*!s8;r5s8;rrrr<&rrr<&urr<&rrr<&prr<&rrr<&srrW9$rrDcm!!)ut!!*#u!!*#u
+!!*#u!!)or!!)or!!)or!!)or!!)ut!!)rs!!)ip!!)or!!)or!!)Wj!!*#u!!)or!s&B$!;QQo
+!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;uis!;$3j!;uis!;lcr!<2uu!;uis!;c]q!;lcr
+!;lcr!<)ot!;uis!.k0Ks8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N*!s8;r5s8;rrrr<&rrr<&urr<&rrr<&prr<&rrr<&srrW9$rrDcm!!)ut!!*#u!!*#u
+!!*#u!!)or!!)or!!)or!!)or!!)ut!!)rs!!)ip!!)or!!)or!!)Wj!!*#u!!)or!s&B$!;QQo
+!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;uis!;$3j!;uis!;lcr!<2uu!;uis!;c]q!;lcr
+!;lcr!<)ot!;uis!.k0Ks8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N*!s8;r5s8;rrrr<&rrr<&urr<&rrr<&prr<&rrr<&srrW9$rrDcm!!)ut!!*#u!!*#u
+!!*#u!!)or!!)or!!)or!!)or!!)ut!!)rs!!)ip!!)or!!)or!!)Wj!!*#u!!)or!s&B$!;QQo
+!;lcr!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;uis!;$3j!;uis!;lcr!<2uu!;uis!;c]q!;lcr
+!;lcr!<)ot!;uis!.k0Ks8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZNms8)f2rr<&us7lZos7lZjs7lZls8N)qs8)fprr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZm
+s8E#lrr<&rrr<&rrr<&krr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&qrr<&rrr<&s
+rr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E"Ls/#bpm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZNms8)f2rr<&us7lZos7lZjs7lZls8N)qs8)fprr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZm
+s8E#lrr<&rrr<&rrr<&krr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&qrr<&rrr<&s
+rr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E"Ls/#bpklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZNms8)f2rr<&us7lZos7lZjs7lZls8N)qs8)fprr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZm
+s8E#lrr<&rrr<&rrr<&krr<&srr<&rs8N)nrr<&rrr<&rrr<&urr<&urr<&urr<&qrr<&rrr<&s
+rr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E"Ls/#bpirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZNks82l3rrW9$rrDfn!!)Ti!!)ZkrrDrr!!)rs!!)ut!!*#u!!*#u!!*#u!!)or!!)or
+!!)or!!)TirrDio!!)or!!)or!!)Zkq>gEmrrDfn!!)or!!)or!!*#u!!*#u!!*#u!!)lq!!)or
+!!)rs!!)ip!!)rs!!)rs!!)or!!*#u!!)rs!!)lq!!)or!!)Tirr@WMVuQb`!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZNks82l3rrW9$rrDfn!!)Ti!!)ZkrrDrr!!)rs!!)ut!!*#u!!*#u!!*#u!!)or!!)or
+!!)or!!)TirrDio!!)or!!)or!!)Zkq>gEmrrDfn!!)or!!)or!!*#u!!*#u!!*#u!!)lq!!)or
+!!)rs!!)ip!!)rs!!)rs!!)or!!*#u!!)rs!!)lq!!)or!!)Tirr@WMVuQb\!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZNks82l3rrW9$rrDfn!!)Ti!!)ZkrrDrr!!)rs!!)ut!!*#u!!*#u!!*#u!!)or!!)or
+!!)or!!)TirrDio!!)or!!)or!!)Zkq>gEmrrDfn!!)or!!)or!!*#u!!*#u!!*#u!!)lq!!)or
+!!)rs!!)ip!!)rs!!)rs!!)or!!*#u!!)rs!!)lq!!)or!!)Tirr@WMVuQbV!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#ns8N)ts8N)=rr<&rrrW9$rrDfn!!)Ti!!)]l!s&B$!;uis!;uis!<)ot!<2uu
+!<2uu!<2uu!;lcr!;lcr!;lcr!;?Em!;uis!;ZWp!;lcr!;lcr!;6?l!;c]q!<)p"!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNq
+qu6WrpAY*mr;Q`sJcD\Krp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#ns8N)ts8N)=rr<&rrrW9$rrDfn!!)Ti!!)]l!s&B$!;uis!;uis!<)ot!<2uu
+!<2uu!<2uu!;lcr!;lcr!;lcr!;?Em!;uis!;ZWp!;lcr!;lcr!;6?l!;c]q!<)p"!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNq
+qu6WrpAY*mr;Q`sJcD\KrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#ns8N)ts8N)=rr<&rrrW9$rrDfn!!)Ti!!)]l!s&B$!;uis!;uis!<)ot!<2uu
+!<2uu!<2uu!;lcr!;lcr!;lcr!;?Em!;uis!;ZWp!;lcr!;lcr!;6?l!;c]q!<)p"!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`sqYpNq
+qu6WrpAY*mr;Q`sJcD\Kro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZos7lZ7s8N)t
+rr<&trr<&ts8N)trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&ts8N)trr<&urr<&urr<&us8N)t
+rr<&qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&qrr<&urr<&trr<&prr<&qrr<&t
+rr<&trr<&urr<&urr<&prr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&t
+s8N)ts8N)trr<%Ms/>tsm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZos7lZ7s8N)t
+rr<&trr<&ts8N)trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&ts8N)trr<&urr<&urr<&us8N)t
+rr<&qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&qrr<&urr<&trr<&prr<&qrr<&t
+rr<&trr<&urr<&urr<&prr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&t
+s8N)ts8N)trr<%Ms/>tsklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZos7lZ7s8N)t
+rr<&trr<&ts8N)trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&ts8N)trr<&urr<&urr<&us8N)t
+rr<&qrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&qrr<&urr<&trr<&prr<&qrr<&t
+rr<&trr<&urr<&urr<&prr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&t
+s8N)ts8N)trr<%Ms/>tsirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-Wqq>eM7!<E/u!;lfp!;c`o!;6Bj!;ulr!<<)u!<)rr!!*&u!!*&u!<<*!!<<*!!<<'"!<;ut
+r;ZTnr;Z]qqu6Zss8;rks8;rps7u`ls8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)p
+s8;ourrE&uq>gHnr;ZitrW)rt!<E/u!<)rs!<3#t!<3#p!;ulq!;lcs!<;utJcDYJrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-Wqq>eM7!<E/u!;lfp!;c`o!;6Bj!;ulr!<<)u!<)rr!!*&u!!*&u!<<*!!<<*!!<<'"!<;ut
+r;ZTnr;Z]qqu6Zss8;rks8;rps7u`ls8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)p
+s8;ourrE&uq>gHnr;ZitrW)rt!<E/u!<)rs!<3#t!<3#p!;ulq!;lcs!<;utJcDYJrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-Wqq>eM7!<E/u!;lfp!;c`o!;6Bj!;ulr!<<)u!<)rr!!*&u!!*&u!<<*!!<<*!!<<'"!<;ut
+r;ZTnr;Z]qqu6Zss8;rks8;rps7u`ls8;rss8;ots8E#us8E#ss7u`ns8;rrs8E#us8N*!s8N)p
+s8;ourrE&uq>gHnr;ZitrW)rt!<E/u!<)rs!<3#t!<3#p!;ulq!;lcs!<;utJcDYJro4$s2h1~>
+!BpJ^mHsrH!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlirR%VJ,~>
+!BpJ^mHsrH!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0prr<%Ms7H<k!9a@^!.k0$s7ZKlirR%VJ,~>
+!BpJ^mBQ]h!.k0rrr<%Ms7QBl!9X:]!.k0$s7ZKlm/bd$J,~>
+!BU8[l*:9d!.k0rrr<%Ms7QBl!9X:]!.k0$s7ZKlklK'jJ,~>
+!B:&Xj0AX^!.k0rrr<%Ms7QBl!9X:]!.k0$s7ZKlirR%VJ,~>
+!BpJ^mBQ]h!.k0ss8;qKs8;op!9X=[!.k0$s7lWnm/bd$J,~>
+!BU8[l*:9d!.k0ss8;qKs8;op!9X=[!.k0$s7lWnklK'jJ,~>
+!B:&Xj0AX^!.k0ss8;qKs8;op!9X=[!.k0$s7lWnirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mFqU=!5\^7!;6Bl!1j/i!3H5#!65';!8@JQ!6kKA!7_&I!.k0ss8MBdeieN~>
+!BU8[l.Z19!5\^7!;6Bl!1j/i!3H5#!65';!8@JQ!6kKA!7_&I!.k0ss8M6`c8pI~>
+!B:&Xj4aP3!5\^7!;6Bl!1j/i!3H5#!65';!8@JQ!6kKA!7_&I!.k0ss8M$Z_`*)~>
+!BpJ^mG%[<!<3#p!;6Bj!!<0#!8mhU!;6Bl!65';!!3*"h>[HTo`"mkh#@?Skl1V_q>UEp_uB]:
+g&D$Pao;>@dJj1HJcF*srp9a;4b*~>
+!BU8[l.c78!<3#p!;6Bj!!<0#!8mhU!;6Bl!65';!!3*"h>[HTo`"mkh#@?Skl1V_q>UEp_uB]:
+g&D$Pao;>@dJj1HJcF*srojI/3e.~>
+!B:&Xj4jV2!<3#p!;6Bj!!<0#!8mhU!;6Bl!65';!!3*"h>[HTo`"mkh#@?Skl1V_q>UEp_uB]:
+g&D$Pao;>@dJj1HJcF*sro4$s2h1~>
+!BpJ^mHsrH!;uls!<3#t!<<)o!;ZZi!8dbU!4r41!<)rt!8[YT!;-9k!8RSS!9jF_!;ZWp!5ng:
+!87AP!6P6@!7CfH!.k0ss8MBdeieN~>
+!BU8[l0\ND!;uls!<3#t!<<)o!;ZZi!8dbU!4r41!<)rt!8[YT!;-9k!8RSS!9jF_!;ZWp!5ng:
+!87AP!6P6@!7CfH!.k0ss8M6`c8pI~>
+!B:&Xj6cm>!;uls!<3#t!<<)o!;ZZi!8dbU!4r41!<)rt!8[YT!;-9k!8RSS!9jF_!;ZWp!5ng:
+!87AP!6P6@!7CfH!.k0ss8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t
+!<)rq!;c`o!!<0#!<)ro!9*qX!;lcr!8[YT!4;b+!;ZWp!5ng:!87AP!6P6@!7CfH!.k0ss8MBd
+eieN~>
+!BU8[l0\ND!;uls!<)rt!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t
+!<)rq!;c`o!!<0#!<)ro!9*qX!;lcr!8[YT!4;b+!;ZWp!5ng:!87AP!6P6@!7CfH!.k0ss8M6`
+c8pI~>
+!B:&Xj6cm>!;uls!<)rt!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t
+!<)rq!;c`o!!<0#!<)ro!9*qX!;lcr!8[YT!4;b+!;ZWp!5ng:!87AP!6P6@!7CfH!.k0ss8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZSrr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"p](3m
+qu?Zr!<;utp]('irVllus8;rps8;rls8Duus8E#qs8;ros8;rmrr<&ks8;rqs8N'!s8;rps8;ou
+rrDfnr;Zlu!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;ulr!<<)u!;ZZp!!*&t!;ZWp
+!;ZZn!;uls!!*&t!;lfp!.k1@s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZSrr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"p](3m
+qu?Zr!<;utp]('irVllus8;rps8;rls8Duus8E#qs8;ros8;rmrr<&ks8;rqs8N'!s8;rps8;ou
+rrDfnr;Zlu!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;ulr!<<)u!;ZZp!!*&t!;ZWp
+!;ZZn!;uls!!*&t!;lfp!.k1@s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZSrr<&ns8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;c`prW)cor;Zlu!;ulq!!3*"p](3m
+qu?Zr!<;utp]('irVllus8;rps8;rls8Duus8E#qs8;ros8;rmrr<&ks8;rqs8N'!s8;rps8;ou
+rrDfnr;Zlu!;ulq!<)rt!!`H'!<<'!!<3#u!!*&t!;ZWp!;ZZn!;ulr!<<)u!;ZZp!!*&t!;ZWp
+!;ZZn!;uls!!*&t!;lfp!.k1@s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Yrr<&ls8N)urr<&trr<&trr<&ss8N)trr<&ts8N)t
+rr<&qrr<&qrr<&ts8N)trr<&ts8N)lrr<&qs8N)trr<&mrr<&ps8N)trr<&trr<&trr<&ms8N)u
+rr<&trr<&trr<&srr<&trr<&prr<&lrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&trr<&ns8N)trr<&qrr<&qrr<&t
+rr<&ss8N)trr<&trr<&trr<%Ms7?9im/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Yrr<&ls8N)urr<&trr<&trr<&ss8N)trr<&ts8N)t
+rr<&qrr<&qrr<&ts8N)trr<&ts8N)lrr<&qs8N)trr<&mrr<&ps8N)trr<&trr<&trr<&ms8N)u
+rr<&trr<&trr<&srr<&trr<&prr<&lrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&trr<&ns8N)trr<&qrr<&qrr<&t
+rr<&ss8N)trr<&trr<&trr<%Ms7?9iklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Yrr<&ls8N)urr<&trr<&trr<&ss8N)trr<&ts8N)t
+rr<&qrr<&qrr<&ts8N)trr<&ts8N)lrr<&qs8N)trr<&mrr<&ps8N)trr<&trr<&trr<&ms8N)u
+rr<&trr<&trr<&srr<&trr<&prr<&lrr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rr<&us8N)trr<&qrr<&qrr<&trr<&srr<&trr<&ns8N)trr<&qrr<&qrr<&t
+rr<&ss8N)trr<&trr<&trr<%Ms7?9iirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ns8E#ss8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rSrr<&lrr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&rrr<&trr<&s
+rr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&rrr<&nrr<&prr<&rrr<&orr<&prr<&grr<&s
+rr<&srr<&urr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&r
+rr<&srrW9$rrDcm!!)or!!)or!!)]l!!)rs!!)rs!!*#u!!)or!!%TMo`+pX!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ns8E#ss8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rSrr<&lrr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&rrr<&trr<&s
+rr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&rrr<&nrr<&prr<&rrr<&orr<&prr<&grr<&s
+rr<&srr<&urr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&r
+rr<&srrW9$rrDcm!!)or!!)or!!)]l!!)rs!!)rs!!*#u!!)or!!%TMo`+pT!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ns8E#ss8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rSrr<&lrr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&rrr<&trr<&s
+rr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&rrr<&nrr<&prr<&rrr<&orr<&prr<&grr<&s
+rr<&srr<&urr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&r
+rr<&srrW9$rrDcm!!)or!!)or!!)]l!!)rs!!)rs!!*#u!!)or!!%TMo`+pN!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8E#rs8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fTrr<&ss8;rsrr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#h
+rr<&qrr<&srr<&mrr<&prr<&srr<&us7lZhrr<&ps7lZns8)flrr<&ls8)forr<&srr<&urr<&r
+rr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZls8N)lrr<&rrr<&rrr<&q
+s8)forr<&srr<&us7lYGs7H?jm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8E#rs8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fTrr<&ss8;rsrr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#h
+rr<&qrr<&srr<&mrr<&prr<&srr<&us7lZhrr<&ps7lZns8)flrr<&ls8)forr<&srr<&urr<&r
+rr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZls8N)lrr<&rrr<&rrr<&q
+s8)forr<&srr<&us7lYGs7H?jklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8E#rs8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fTrr<&ss8;rsrr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#h
+rr<&qrr<&srr<&mrr<&prr<&srr<&us7lZhrr<&ps7lZns8)flrr<&ls8)forr<&srr<&urr<&r
+rr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rs7lZls8N)lrr<&rrr<&rrr<&q
+s8)forr<&srr<&us7lYGs7H?jirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ps8E#qs8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lVrr<&qrr<&trr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&i
+s8N)krr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&srr<&prr<&mrr<&srr<&s
+rr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)l
+rr<&rrr<&rrr<&rrr<&srr<&srr<&srr<&urr<%Ms6]jcm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ps8E#qs8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lVrr<&qrr<&trr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&i
+s8N)krr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&srr<&prr<&mrr<&srr<&s
+rr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)l
+rr<&rrr<&rrr<&rrr<&srr<&srr<&srr<&urr<%Ms6]jcklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ps8E#qs8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lVrr<&qrr<&trr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&i
+s8N)krr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&srr<&prr<&mrr<&srr<&s
+rr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)l
+rr<&rrr<&rrr<&rrr<&srr<&srr<&srr<&urr<%Ms6]jcirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8E#ps8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#ts8E#u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&rrr<&trr<&prr<&srr<&srr<&rrr<&urr<&s
+rr<&qrr<&rrr<&mrr<&srr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&s
+rr<&prr<&mrr<&srr<&srr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&r
+rr<&rrr<&rrr<&lrrW9$rrDcm!!)or!!)or!!)or!!)rs!!)rs!!)rs!!*#u!!%TMmJm1Q!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8E#ps8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#ts8E#u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&rrr<&trr<&prr<&srr<&srr<&rrr<&urr<&s
+rr<&qrr<&rrr<&mrr<&srr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&s
+rr<&prr<&mrr<&srr<&srr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&r
+rr<&rrr<&rrr<&lrrW9$rrDcm!!)or!!)or!!)or!!)rs!!)rs!!)rs!!*#u!!%TMmJm1M!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8E#ps8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#ts8E#u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&rrr<&trr<&prr<&srr<&srr<&rrr<&urr<&s
+rr<&qrr<&rrr<&mrr<&srr<&lrr<&qrr<&srr<&mrr<&prr<&srr<&urr<&grr<&prr<&nrr<&s
+rr<&prr<&mrr<&srr<&srr<&srr<&urr<&rrr<&prr<&nrr<&rrr<&urr<&urr<&urr<&urr<&r
+rr<&rrr<&rrr<&lrrW9$rrDcm!!)or!!)or!!)or!!)rs!!)rs!!)rs!!*#u!!%TMmJm1G!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRs8N)trr<&srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<&l
+rr<&qrr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)nrr<&orr<&ts8N)urr<&ts8N)prr<&m
+rr<&ts8N)srr<&srr<&trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&urr<&urr<&us8N)trr<&q
+rr<&qrr<&ts8N)trr<&trr<&ns8N)trr<&qrr<&rrr<&ts8N)srr<&srr<&trr<&ts8N(Ms7H?j
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRs8N)trr<&srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<&l
+rr<&qrr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)nrr<&orr<&ts8N)urr<&ts8N)prr<&m
+rr<&ts8N)srr<&srr<&trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&urr<&urr<&us8N)trr<&q
+rr<&qrr<&ts8N)trr<&trr<&ns8N)trr<&qrr<&rrr<&ts8N)srr<&srr<&trr<&ts8N(Ms7H?j
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRs8N)trr<&srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)ts8N)trr<&l
+rr<&qrr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)nrr<&orr<&ts8N)urr<&ts8N)prr<&m
+rr<&ts8N)srr<&srr<&trr<&ts8N)orr<&ts8N)trr<&trr<&trr<&urr<&urr<&us8N)trr<&q
+rr<&qrr<&ts8N)trr<&trr<&ns8N)trr<&qrr<&rrr<&ts8N)srr<&srr<&trr<&ts8N(Ms7H?j
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7lZps7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ps8;rrs7u`ns8;ots8E#trrE-"r;cfrrW)rtrW)rtq>gHnr;c`p!<E/u!;HNi
+!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;HNi!;lfp!;lfp!!*&u!<3#p!;QTm!!*&u!<<)u!<3#t
+!<)rr!!<0#!;QTm!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnr;Z]qr;Z`rs8W&uq#:?ps8;rq
+s7u`os8;ots8E#us8E#ts8E#ss8;qKs763hm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7lZps7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ps8;rrs7u`ns8;ots8E#trrE-"r;cfrrW)rtrW)rtq>gHnr;c`p!<E/u!;HNi
+!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;HNi!;lfp!;lfp!!*&u!<3#p!;QTm!!*&u!<<)u!<3#t
+!<)rr!!<0#!;QTm!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnr;Z]qr;Z`rs8W&uq#:?ps8;rq
+s7u`os8;ots8E#us8E#ts8E#ss8;qKs763hklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7lZps7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ps8;rrs7u`ns8;ots8E#trrE-"r;cfrrW)rtrW)rtq>gHnr;c`p!<E/u!;HNi
+!<3#t!<3#t!;?Hk!<3#t!<3#t!<)rr!;HNi!;lfp!;lfp!!*&u!<3#p!;QTm!!*&u!<<)u!<3#t
+!<)rr!!<0#!;QTm!;c`o!<)rs!<<*!!<<*!!<<'"!<;utr;ZTnr;Z]qr;Z`rs8W&uq#:?ps8;rq
+s7u`os8;ots8E#us8E#ts8E#ss8;qKs763hirR%VJ,~>
+!BpJ^mHsrH!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8m/bd$J,~>
+!BU8[l0\ND!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8klK'jJ,~>
+!B:&Xj6cm>!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8irR%VJ,~>
+!BpJ^mHsrH!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8m/bd$J,~>
+!BU8[l0\ND!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8klK'jJ,~>
+!B:&Xj6cm>!5SX7!07'Z!.k00rr<&Hrr<%Ms2+g8irR%VJ,~>
+!BpJ^m@jRX!0I3\!.k00rr<&Hrr<%Ms2+g8m/bd$J,~>
+!BU8[l(S.T!0I3\!.k00rr<&Hrr<%Ms2+g8klK'jJ,~>
+!B:&Xj.ZMN!0I3\!.k00rr<&Hrr<%Ms2+g8irR%VJ,~>
+!BpJ^m@jRX!0R<[!.k03s8;rIs8;qKs2=s:m/bd$J,~>
+!BU8[l(S.T!0R<[!.k03s8;rIs8;qKs2=s:klK'jJ,~>
+!B:&Xj.ZMN!0R<[!.k03s8;rIs8;qKs2=s:irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mFqU<!5ed8!;6Bl!58F2!4r4/!.k0cs8N(ls8N(Ms8)cpm/bd$J,~>
+!BU8[l.Z18!5ed8!;6Bl!58F2!4r4/!.k0cs8N(ls8N(Ms8)cpklK'jJ,~>
+!B:&Xj4aP2!5ed8!;6Bl!58F2!4r4/!.k0cs8N(ls8N(Ms8)cpirR%VJ,~>
+!BpJ^mG%[;!<<)q!;6Bj!!<0#!8mhU!;6Bl!6P9;!;ZWp!:Bdd!7:`G!.k0rrr<&err<%krr<%M
+s8)cpm/bd$J,~>
+!BU8[l.c77!<<)q!;6Bj!!<0#!8mhU!;6Bl!6P9;!;ZWp!:Bdd!7:`G!.k0rrr<&err<%krr<%M
+s8)cpklK'jJ,~>
+!B:&Xj4jV1!<<)q!;6Bj!!<0#!8mhU!;6Bl!6P9;!;ZWp!:Bdd!7:`G!.k0rrr<&err<%krr<%M
+s8)cpirR%VJ,~>
+!BpJ^mHsrH!;lfr!<3#u!<<)o!;ZZi!8dbU!4r11!;uis!;c]q!:Bdd!7CfH!.k0qrr<&err<%k
+rr<%Ms8)cpm/bd$J,~>
+!BU8[l0\ND!;lfr!<3#u!<<)o!;ZZi!8dbU!4r11!;uis!;c]q!:Bdd!7CfH!.k0qrr<&err<%k
+rr<%Ms8)cpklK'jJ,~>
+!B:&Xj6cm>!;lfr!<3#u!<<)o!;ZZi!8dbU!4r11!;uis!;c]q!:Bdd!7CfH!.k0qrr<&err<%k
+rr<%Ms8)cpirR%VJ,~>
+!BpJ^mHsrH!;?Hm!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t!<)rq
+!;c`o!!<0#!<)ro!9*qX!;lcr!;lcr!:Bdd!7CfH!.k0qrr<&err<%krr<%Ms8)cpm/bd$J,~>
+!BU8[l0\ND!;?Hm!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t!<)rq
+!;c`o!!<0#!<)ro!9*qX!;lcr!;lcr!:Bdd!7CfH!.k0qrr<&err<%krr<%Ms8)cpklK'jJ,~>
+!B:&Xj6cm>!;?Hm!<3#u!<)rt!;ZZp!<)rs!!*&t!<<)u!<)rp!<3#t!!*&t!<)rt!!*&t!<)rq
+!;c`o!!<0#!<)ro!9*qX!;lcr!;lcr!:Bdd!7CfH!.k0qrr<&err<%krr<%Ms8)cpirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ms8N)ts8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZRrr<&rrr<&rrr<&ps8;rps7u`is8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]o
+r;Zlu!;ulq!;c`o!!3*"m/R"a!WN0!s8N)ts8N)us8Duus8E#ss8E#ts8E#ss8;ros8;ourrDEc
+r;ccqrVururW)]mq>gNprrE#trrE#t!<E/u!;lfp!;c`o!!3*"p](0lr;Z`r!<<#uqu?Tpr;Zcs
+rVultrr;uu!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)osrW)rtrW)osr;c]or;Zlu
+!5\^7m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ms8N)ts8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZRrr<&rrr<&rrr<&ps8;rps7u`is8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]o
+r;Zlu!;ulq!;c`o!!3*"m/R"a!WN0!s8N)ts8N)us8Duus8E#ss8E#ts8E#ss8;ros8;ourrDEc
+r;ccqrVururW)]mq>gNprrE#trrE#t!<E/u!;lfp!;c`o!!3*"p](0lr;Z`r!<<#uqu?Tpr;Zcs
+rVultrr;uu!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)osrW)rtrW)osr;c]or;Zlu
+!5\^7klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ms8N)ts8N)ss8N)rs8N)rs8N'!s7ZNns7lZps7cTns7lZos82lo
+s7lZos7lZRrr<&rrr<&rrr<&ps8;rps7u`is8;ourrE&urrE#trrE&urVururW)lrq>gHnr;c]o
+r;Zlu!;ulq!;c`o!!3*"m/R"a!WN0!s8N)ts8N)us8Duus8E#ss8E#ts8E#ss8;ros8;ourrDEc
+r;ccqrVururW)]mq>gNprrE#trrE#t!<E/u!;lfp!;c`o!!3*"p](0lr;Z`r!<<#uqu?Tpr;Zcs
+rVultrr;uu!<;utqu?Tp!WN/os8;ourrE&urrE#trrE&urVururW)osrW)rtrW)osr;c]or;Zlu
+!5\^7irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8;rqs8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Xrr<&rrr<&rrr<&qrr<&trr<&qrr<&krr<&ts8N)t
+rr<&srr<&ss8N)urr<&rrr<&prr<&trr<&srr<&ts8N)trr<&trr<&srr<&ts8N)drr<&ts8N)t
+rr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&srr<&ts8N)drr<&trr<&rs8N)urr<&mrr<&p
+rr<&srr<&ts8N)trr<&trr<&trr<&srr<&ts8N)orr<&trr<&rs8N)urr<&trr<&trr<&srr<&s
+rr<&ts8N)trr<&trr<&ts8N)orr<&ts8N)trr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&s
+rr<&ts8N)8s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8;rqs8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Xrr<&rrr<&rrr<&qrr<&trr<&qrr<&krr<&ts8N)t
+rr<&srr<&ss8N)urr<&rrr<&prr<&trr<&srr<&ts8N)trr<&trr<&srr<&ts8N)drr<&ts8N)t
+rr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&srr<&ts8N)drr<&trr<&rs8N)urr<&mrr<&p
+rr<&srr<&ts8N)trr<&trr<&trr<&srr<&ts8N)orr<&trr<&rs8N)urr<&trr<&trr<&srr<&s
+rr<&ts8N)trr<&trr<&ts8N)orr<&ts8N)trr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&s
+rr<&ts8N)8s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8;rqs8N)ss8N)rs8N)ms8;rts8N*!s8N)ts8N)us8E#ts8E#u
+s8E#ts8N)rs8N)ss8E#ts8E#ts8N)ts8N)Xrr<&rrr<&rrr<&qrr<&trr<&qrr<&krr<&ts8N)t
+rr<&srr<&ss8N)urr<&rrr<&prr<&trr<&srr<&ts8N)trr<&trr<&srr<&ts8N)drr<&ts8N)t
+rr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&srr<&ts8N)drr<&trr<&rs8N)urr<&mrr<&p
+rr<&srr<&ts8N)trr<&trr<&trr<&srr<&ts8N)orr<&trr<&rs8N)urr<&trr<&trr<&srr<&s
+rr<&ts8N)trr<&trr<&ts8N)orr<&ts8N)trr<&srr<&ss8N)urr<&trr<&srr<&trr<&trr<&s
+rr<&ts8N)8s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ps82lqs8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rRrr<&srr<&qrr<&rrr<&rrr<&rrr<&krr<&srr<&trr<&srr<&srr<&m
+rr<&krr<&trr<&rrr<&urr<&rrr<&trr<&srr<&err<&rrr<&trr<&srr<&srr<&nrr<&urr<&t
+rr<&rrr<&trr<&srr<&err<&rrr<&srr<&hrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs
+!!)Wj!!)or!!)ip!!)or!!)ut!!)rs!!)ut!!)rs!!*#u!!)or!!)ip!!)or!!)ut!!)rs!!)rs
+!!)cn!!*#u!!)ut!!)or!!)ut!!)rs!!'k8rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ps82lqs8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rRrr<&srr<&qrr<&rrr<&rrr<&rrr<&krr<&srr<&trr<&srr<&srr<&m
+rr<&krr<&trr<&rrr<&urr<&rrr<&trr<&srr<&err<&rrr<&trr<&srr<&srr<&nrr<&urr<&t
+rr<&rrr<&trr<&srr<&err<&rrr<&srr<&hrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs
+!!)Wj!!)or!!)ip!!)or!!)ut!!)rs!!)ut!!)rs!!*#u!!)or!!)ip!!)or!!)ut!!)rs!!)rs
+!!)cn!!*#u!!)ut!!)or!!)ut!!)rs!!'k8rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ps82lqs8N)ss8N)rs8N)ms8E#js8N)us8N)ss8N*!s8N)ts8N)r
+s8N)ss8N)ss8N)us8;rRrr<&srr<&qrr<&rrr<&rrr<&rrr<&krr<&srr<&trr<&srr<&srr<&m
+rr<&krr<&trr<&rrr<&urr<&rrr<&trr<&srr<&err<&rrr<&trr<&srr<&srr<&nrr<&urr<&t
+rr<&rrr<&trr<&srr<&err<&rrr<&srr<&hrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs
+!!)Wj!!)or!!)ip!!)or!!)ut!!)rs!!)ut!!)rs!!*#u!!)or!!)ip!!)or!!)ut!!)rs!!)rs
+!!)cn!!*#u!!)ut!!)or!!)ut!!)rs!!'k8ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fSs8)flrr<&rrr<&rrr<&rrr<&js8E#prr<&srr<&srr<&mrr<&ps8)fp
+rr<&ns7lZms8E#arr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#arr<&rrr<&srr<&hrr<&p
+rr<&srr<&trr<&rrrN3#s7lZms8E#ks8)fnrr<&prr<&rrr<&trr<&srr<&trr<&srr<&urr<&r
+rr<&prr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#4s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fSs8)flrr<&rrr<&rrr<&rrr<&js8E#prr<&srr<&srr<&mrr<&ps8)fp
+rr<&ns7lZms8E#arr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#arr<&rrr<&srr<&hrr<&p
+rr<&srr<&trr<&rrrN3#s7lZms8E#ks8)fnrr<&prr<&rrr<&trr<&srr<&trr<&srr<&urr<&r
+rr<&prr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#4s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ns8E#ts8N)ss8N)rs8N)us8)frs8N)ps7lZos8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ms8)fSs8)flrr<&rrr<&rrr<&rrr<&js8E#prr<&srr<&srr<&mrr<&ps8)fp
+rr<&ns7lZms8E#arr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#arr<&rrr<&srr<&hrr<&p
+rr<&srr<&trr<&rrrN3#s7lZms8E#ks8)fnrr<&prr<&rrr<&trr<&srr<&trr<&srr<&urr<&r
+rr<&prr<&mrr<&srr<&srr<&nrr<&urr<&ts7lZms8E#4s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lUrr<&krr<&rrr<&rrr<&rrr<&gs8N)srr<&srr<&srr<&mrr<&qrr<&s
+rr<&trr<&nrr<&is8N)drr<&mrr<&srr<&srr<&mrrN3#!;uis!:p0i!:Bdd!;lcr!;uis!:g'h
+!;ZWp!;uis!<)ot!;lcu!<<'!o)J^iq#:<or;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`s
+rr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0orrDus!!)TirrBk7rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lUrr<&krr<&rrr<&rrr<&rrr<&gs8N)srr<&srr<&srr<&mrr<&qrr<&s
+rr<&trr<&nrr<&is8N)drr<&mrr<&srr<&srr<&mrrN3#!;uis!:p0i!:Bdd!;lcr!;uis!:g'h
+!;ZWp!;uis!<)ot!;lcu!<<'!o)J^iq#:<or;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`s
+rr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0orrDus!!)TirrBk7rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ls8N)us8N)ss8N)rs8N)us8)frs8N)qs7cTns8N)ss8N*!s8N)t
+s8N)rs8N)ss8N)ks82lUrr<&krr<&rrr<&rrr<&rrr<&gs8N)srr<&srr<&srr<&mrr<&qrr<&s
+rr<&trr<&nrr<&is8N)drr<&mrr<&srr<&srr<&mrrN3#!;uis!:p0i!:Bdd!;lcr!;uis!:g'h
+!;ZWp!;uis!<)ot!;lcu!<<'!o)J^iq#:<or;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`s
+rr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0orrDus!!)TirrBk7ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#t
+s8E#us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&krr<&rrr<&rrr<&rrr<&krr<&srr<&t
+rr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&mrr<&srr<&err<&mrr<&srr<&srr<&mrrN3#
+!;uis!;?Em!;uis!:Kje!;lcr!;uis!:g'h!;ZWp!;uis!<)ot!;lcu!<<'!pAY*mr;Q`sq>UEp
+r;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`srr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0o
+rrDus!!)`m!!)rs!!'k8rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#t
+s8E#us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&krr<&rrr<&rrr<&rrr<&krr<&srr<&t
+rr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&mrr<&srr<&err<&mrr<&srr<&srr<&mrrN3#
+!;uis!;?Em!;uis!:Kje!;lcr!;uis!:g'h!;ZWp!;uis!<)ot!;lcu!<<'!pAY*mr;Q`sq>UEp
+r;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`srr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0o
+rrDus!!)`m!!)rs!!'k8rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)ps8N)ss8N)us8N)qs8N)ss8N)us8E#t
+s8E#us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)Xrr<&krr<&rrr<&rrr<&rrr<&krr<&srr<&t
+rr<&srr<&srr<&mrr<&qrr<&srr<&trr<&nrr<&mrr<&srr<&err<&mrr<&srr<&srr<&mrrN3#
+!;uis!;?Em!;uis!:Kje!;lcr!;uis!:g'h!;ZWp!;uis!<)ot!;lcu!<<'!pAY*mr;Q`sq>UEp
+r;Q`squ6Wrq>UEpqu6WrrVlitr;Q`srVlitr;Q`srr2ruqu6Wrq>UEppAY*mr;Q`sr;Q`spAY0o
+rrDus!!)`m!!)rs!!'k8ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7u`ps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRrr<&krr<&qrr<&trr<&qrr<&trr<&ps8N)trr<&trr<&ts8N)srr<&mrr<&qrr<&ts8N)s
+rr<&ts8N)trr<&ts8N)ts8N)trr<&qs8N)mrr<&ts8N)trr<&ts8N)srr<&lrr<&qrr<&ts8N)t
+s8N)trr<&qs8N)mrr<&trr<&rrr<&hrr<&trr<&urr<&ts8N)ts8N)trr<&trr<&ts8N)ts8N)t
+rr<&prr<&ts8N)rrr<&orr<&trr<&srr<&ts8N)trr<&srr<&trr<&ts8N)orr<&ts8N)trr<&t
+s8N)srr<&lrr<&qrr<&ts8N)ts8N)trr<&8s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7u`ps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRrr<&krr<&qrr<&trr<&qrr<&trr<&ps8N)trr<&trr<&ts8N)srr<&mrr<&qrr<&ts8N)s
+rr<&ts8N)trr<&ts8N)ts8N)trr<&qs8N)mrr<&ts8N)trr<&ts8N)srr<&lrr<&qrr<&ts8N)t
+s8N)trr<&qs8N)mrr<&trr<&rrr<&hrr<&trr<&urr<&ts8N)ts8N)trr<&trr<&ts8N)ts8N)t
+rr<&prr<&ts8N)rrr<&orr<&trr<&srr<&ts8N)trr<&srr<&trr<&ts8N)orr<&ts8N)trr<&t
+s8N)srr<&lrr<&qrr<&ts8N)ts8N)trr<&8s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7u`ps7cTis7cQos7lZos7ZNns7lZps8;rts8;rts7lZos7cTo
+s7lZRrr<&krr<&qrr<&trr<&qrr<&trr<&ps8N)trr<&trr<&ts8N)srr<&mrr<&qrr<&ts8N)s
+rr<&ts8N)trr<&ts8N)ts8N)trr<&qs8N)mrr<&ts8N)trr<&ts8N)srr<&lrr<&qrr<&ts8N)t
+s8N)trr<&qs8N)mrr<&trr<&rrr<&hrr<&trr<&urr<&ts8N)ts8N)trr<&trr<&ts8N)ts8N)t
+rr<&prr<&ts8N)rrr<&orr<&trr<&srr<&ts8N)trr<&srr<&trr<&ts8N)orr<&ts8N)trr<&t
+s8N)srr<&lrr<&qrr<&ts8N)ts8N)trr<&8s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lqs7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ss82lns7u`ns8;rms8;rmrrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)os
+r;c]or;c`p!<E/u!;ZZp!;6Bj!;c`o!!N<%!<<)q!;ZWp!;ZZn!;lcs!<;utq>^Hpp&Fsjr;ZTn
+o`+jir;Z]q#QFc(s8N'!s8;rps8;rprrE-"r;cTlr;ZitrW)uuq>gEmr;c]or;[!#!!*'!rW)rt
+rW)osr;Zp!!!)for;c]or;[!#!!*'!q>g?k!!)ipr;c`p!<E/u!5SX6m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lqs7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ss82lns7u`ns8;rms8;rmrrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)os
+r;c]or;c`p!<E/u!;ZZp!;6Bj!;c`o!!N<%!<<)q!;ZWp!;ZZn!;lcs!<;utq>^Hpp&Fsjr;ZTn
+o`+jir;Z]q#QFc(s8N'!s8;rps8;rprrE-"r;cTlr;ZitrW)uuq>gEmr;c]or;[!#!!*'!rW)rt
+rW)osr;Zp!!!)for;c]or;[!#!!*'!q>g?k!!)ipr;c`p!<E/u!5SX6klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lqs7u`gs8)frs7lZns82iss8E#us8N'!s8;rss8;rts8;rt
+s7lZns8)fps7u`Ss82lns7u`ns8;rms8;rmrrE-"r;c`pr;[!#!!*'!q>gHnq>gKor;ZitrW)os
+r;c]or;c`p!<E/u!;ZZp!;6Bj!;c`o!!N<%!<<)q!;ZWp!;ZZn!;lcs!<;utq>^Hpp&Fsjr;ZTn
+o`+jir;Z]q#QFc(s8N'!s8;rps8;rprrE-"r;cTlr;ZitrW)uuq>gEmr;c]or;[!#!!*'!rW)rt
+rW)osr;Zp!!!)for;c]or;[!#!!*'!q>g?k!!)ipr;c`p!<E/u!5SX6irR%VJ,~>
+!BpJ^mHsrH!5SX7!.k0Gs8N)(s8N(Ms+14's8MBdeieN~>
+!BU8[l0\ND!5SX7!.k0Gs8N)(s8N(Ms+14's8M6`c8pI~>
+!B:&Xj6cm>!5SX7!.k0Gs8N)(s8N(Ms+14's8M$Z_`*)~>
+!BpJ^mHsrH!5SX7!.k0Gs8N)(s8N(Ms+14's8MBdeieN~>
+!BU8[l0\ND!5SX7!.k0Gs8N)(s8N(Ms+14's8M6`c8pI~>
+!B:&Xj6cm>!5SX7!.k0Gs8N)(s8N(Ms+14's8M$Z_`*)~>
+!BpJ^m@jRX!.k0Js8N)(s8N(Ms+14&s8MBdeieN~>
+!BU8[l(S.T!.k0Js8N)(s8N(Ms+14&s8M6`c8pI~>
+!B:&Xj.ZMN!.k0Js8N)(s8N(Ms+14&s8M$Z_`*)~>
+!BpJ^m@jRX!.k0$s+13$s/Q+um/bd$J,~>
+!BU8[l(S.T!.k0$s+13$s/Q+uklK'jJ,~>
+!B:&Xj.ZMN!.k0$s+13$s/Q+uirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!5nj:!.k0Qs8N(Ms+132s8MBdeieN~>
+!BU8[l-B>/!5nj:!.k0Qs8N(Ms+132s8M6`c8pI~>
+!B:&Xj3I])!5nj:!.k0Qs8N(Ms+132s8M$Z_`*)~>
+!BpJ^mG7g?!<<)s!<3#u!5nj:!5JR4!!3*"k5PD]i;WcWZi:"*o`"mk`r?#=iW&iVrr;osr;Q`s
+_>aK8JcEpnrp9a;4b*~>
+!BU8[l.uC;!<<)s!<3#u!5nj:!5JR4!!3*"k5PD]i;WcWZi:"*o`"mk`r?#=iW&iVrr;osr;Q`s
+_>aK8JcEpnrojI/3e.~>
+!B:&Xj5'b5!<<)s!<3#u!5nj:!5JR4!!3*"k5PD]i;WcWZi:"*o`"mk`r?#=iW&iVrr;osr;Q`s
+_>aK8JcEpnro4$s2h1~>
+!BpJ^mHsrH!<)rq!<<)s!5AL5!5\^8!<)rt!9X:]!9!kW!42\*!;-9k!65$=!9!kW!;c]q!;lcr
+!5\[8!.k0ns8MBdeieN~>
+!BU8[l0\ND!<)rq!<<)s!5AL5!5\^8!<)rt!9X:]!9!kW!42\*!;-9k!65$=!9!kW!;c]q!;lcr
+!5\[8!.k0ns8M6`c8pI~>
+!B:&Xj6cm>!<)rq!<<)s!5AL5!5\^8!<)rt!9X:]!9!kW!42\*!;-9k!65$=!9!kW!;c]q!;lcr
+!5\[8!.k0ns8M$Z_`*)~>
+!BpJ^mHsrH!;uls!;lfr!!*&s!;ZZn!<)rr!<3#p!!*&t!;lfp!<)rr!<<)u!<<)p!;uln!7CfH
+!;lcr!9X:]!0R9]!1*Wb!;c]q!4r11!.k0ns8MBdeieN~>
+!BU8[l0\ND!;uls!;lfr!!*&s!;ZZn!<)rr!<3#p!!*&t!;lfp!<)rr!<<)u!<<)p!;uln!7CfH
+!;lcr!9X:]!0R9]!1*Wb!;c]q!4r11!.k0ns8M6`c8pI~>
+!B:&Xj6cm>!;uls!;lfr!!*&s!;ZZn!<)rr!<3#p!!*&t!;lfp!<)rr!<<)u!<<)p!;uln!7CfH
+!;lcr!9X:]!0R9]!1*Wb!;c]q!4r11!.k0ns8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)rs8N'!s82los7lZps8;rss7?<js7lZps7ZKns7lZns7lZC
+rr<&ns8N)ts8N)ss8;ourrE#tq>gHnr;cfrrr<9'!!*'!!!)rsrW)fpq>gHnr;cNjr;[!#!!*'!
+rVururW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN/qs8N)ts8N)ss8;ourrDus
+rW)iqrr<'!r;c`pr;Zp!!!)ip!!)rs!!)rsrW)cor;ccqrW)rtrW)uurr<'!r;c`pr;ccqrVuru
+rW)lrq>gHnr;Zlu!.k1(s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)rs8N'!s82los7lZps8;rss7?<js7lZps7ZKns7lZns7lZC
+rr<&ns8N)ts8N)ss8;ourrE#tq>gHnr;cfrrr<9'!!*'!!!)rsrW)fpq>gHnr;cNjr;[!#!!*'!
+rVururW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN/qs8N)ts8N)ss8;ourrDus
+rW)iqrr<'!r;c`pr;Zp!!!)ip!!)rs!!)rsrW)cor;ccqrW)rtrW)uurr<'!r;c`pr;ccqrVuru
+rW)lrq>gHnr;Zlu!.k1(s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)rs8N'!s82los7lZps8;rss7?<js7lZps7ZKns7lZns7lZC
+rr<&ns8N)ts8N)ss8;ourrE#tq>gHnr;cfrrr<9'!!*'!!!)rsrW)fpq>gHnr;cNjr;[!#!!*'!
+rVururW)iqr;ccqrr<'!r;ccq!<E/u!;lfq!;ZZn!!3*"r;Z]q!WN/qs8N)ts8N)ss8;ourrDus
+rW)iqrr<'!r;c`pr;Zp!!!)ip!!)rs!!)rsrW)cor;ccqrW)rtrW)uurr<'!r;c`pr;ccqrVuru
+rW)lrq>gHnr;Zlu!.k1(s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ss8E#us8N*!rrrK'rr<'!s8E#ts8Duu
+s8E#ss8E#ts8;rts8N)us8N)ps8N)ts8N)Irr<&mrr<&srr<&trr<&ts8N)rrr<&prr<&trr<&t
+s8N*!s8N*!rr<&rrr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)ss8N)urr<&trr<&trr<&ss8N)t
+rr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N)orr<&srr<&trr<&ts8N)qrr<&qs8N)trr<&t
+rr<&ts8N)orr<&srr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&trr<&trr<&rs8N)urr<&r
+rr<&prr<&ts8N(Ms4[MPm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ss8E#us8N*!rrrK'rr<'!s8E#ts8Duu
+s8E#ss8E#ts8;rts8N)us8N)ps8N)ts8N)Irr<&mrr<&srr<&trr<&ts8N)rrr<&prr<&trr<&t
+s8N*!s8N*!rr<&rrr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)ss8N)urr<&trr<&trr<&ss8N)t
+rr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N)orr<&srr<&trr<&ts8N)qrr<&qs8N)trr<&t
+rr<&ts8N)orr<&srr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&trr<&trr<&rs8N)urr<&r
+rr<&prr<&ts8N(Ms4[MPklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ss8E#us8N*!rrrK'rr<'!s8E#ts8Duu
+s8E#ss8E#ts8;rts8N)us8N)ps8N)ts8N)Irr<&mrr<&srr<&trr<&ts8N)rrr<&prr<&trr<&t
+s8N*!s8N*!rr<&rrr<&qrr<&srr<&trr<&trr<&nrr<&ts8N)ss8N)urr<&trr<&trr<&ss8N)t
+rr<&ts8N)trr<&qrr<&qrr<&ts8N)trr<&ts8N)orr<&srr<&trr<&ts8N)qrr<&qs8N)trr<&t
+rr<&ts8N)orr<&srr<&qrr<&qrr<&trr<&srr<&srr<&ts8N)trr<&trr<&trr<&rs8N)urr<&r
+rr<&prr<&ts8N(Ms4[MPirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)rs8N*!s8N'!s8E!&rr<'!rr<&ss8N'#
+rr<&rs8N)us8E#os8N)ps8;rCrr<&mrr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&qrr<&trr<&trr<&rrr<&prr<&rrr<&srr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&rrr<&trr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&p
+rr<&rrr<&rrr<&trrrK'rrE*!!<)ot!;lcu!<<'!qu6Wrr;Q`spAY*mq>UEpr;Q`sJcFI(rp9a;
+4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)rs8N*!s8N'!s8E!&rr<'!rr<&ss8N'#
+rr<&rs8N)us8E#os8N)ps8;rCrr<&mrr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&qrr<&trr<&trr<&rrr<&prr<&rrr<&srr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&rrr<&trr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&p
+rr<&rrr<&rrr<&trrrK'rrE*!!<)ot!;lcu!<<'!qu6Wrr;Q`spAY*mq>UEpr;Q`sJcFI(rojI/
+3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)rs8N*!s8N'!s8E!&rr<'!rr<&ss8N'#
+rr<&rs8N)us8E#os8N)ps8;rCrr<&mrr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&qrr<&trr<&trr<&rrr<&prr<&rrr<&srr<&jrr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&rrr<&trr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&p
+rr<&rrr<&rrr<&trrrK'rrE*!!<)ot!;lcu!<<'!qu6Wrr;Q`spAY*mq>UEpr;Q`sJcFI(ro4$s
+2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8N*!s8N)rs8N)ss7ZNns8N'!s8E!&rr<'!rr<&ss8N'#rr<&r
+s8N)us8N)os8N)os8)fDrr<&mrr<&srr<&ss8E#nrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&m
+rr<&ss7lZjrr<&rrr<&srr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#krr<&srr<&s
+s8E#mrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&prr<&rs7lZnrrrK'rrE*!!<)ot!;lcu!<<'!
+qu6Wrr;Q`spAY*mq#C<nJcF@%rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8N*!s8N)rs8N)ss7ZNns8N'!s8E!&rr<'!rr<&ss8N'#rr<&r
+s8N)us8N)os8N)os8)fDrr<&mrr<&srr<&ss8E#nrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&m
+rr<&ss7lZjrr<&rrr<&srr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#krr<&srr<&s
+s8E#mrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&prr<&rs7lZnrrrK'rrE*!!<)ot!;lcu!<<'!
+qu6Wrr;Q`spAY*mq#C<nJcF@%rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8N*!s8N)rs8N)ss7ZNns8N'!s8E!&rr<'!rr<&ss8N'#rr<&r
+s8N)us8N)os8N)os8)fDrr<&mrr<&srr<&ss8E#nrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&m
+rr<&ss7lZjrr<&rrr<&srr<&os8)forr<&rrr<&urr<&srr<&qrr<&rrr<&ls8E#krr<&srr<&s
+s8E#mrr<&qrr<&srr<&urr<&rrr<&nrr<&urr<&prr<&rs7lZnrrrK'rrE*!!<)ot!;lcu!<<'!
+qu6Wrr;Q`spAY*mq#C<nJcF@%ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ps8N*!s8N)rs8N)ss7ZNms8Duus8E#ts8N)ss8N'#rr<&rs8N)u
+s8N)os8N)ms82lFrr<&mrr<&srr<&ps8N)qrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&nrr<&r
+rr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&is8N)nrr<&srr<&p
+s8N)prr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr!;?Es!<3'!!<3&trr<&rrrW9$rrDrr
+!!)rs!!)`m!!)]lrr@WMg&M'=!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ps8N*!s8N)rs8N)ss7ZNms8Duus8E#ts8N)ss8N'#rr<&rs8N)u
+s8N)os8N)ms82lFrr<&mrr<&srr<&ps8N)qrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&nrr<&r
+rr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&is8N)nrr<&srr<&p
+s8N)prr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr!;?Es!<3'!!<3&trr<&rrrW9$rrDrr
+!!)rs!!)`m!!)]lrr@WMg&M'9!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ps8N*!s8N)rs8N)ss7ZNms8Duus8E#ts8N)ss8N'#rr<&rs8N)u
+s8N)os8N)ms82lFrr<&mrr<&srr<&ps8N)qrr<&qrr<&rrr<&urr<&urr<&urr<&rrr<&nrr<&r
+rr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&rrr<&is8N)nrr<&srr<&p
+s8N)prr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr!;?Es!<3'!!<3&trr<&rrrW9$rrDrr
+!!)rs!!)`m!!)]lrr@WMg&M'3!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8;ros8N)ss8E#ms8Duus8E#ts8E#ts8Duus8E#ss8E#ts8N)o
+s8N)ts8N*!s8N)ts8N)Hrr<&rrr<&urr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&orr<&urr<&urr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&mrr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr
+!;?Es!<3'!!<3&trr<&rrrW9$rrDrr!!)rs!!)`m!!)ip!!)rs!!%TMgAh0>!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8;ros8N)ss8E#ms8Duus8E#ts8E#ts8Duus8E#ss8E#ts8N)o
+s8N)ts8N*!s8N)ts8N)Hrr<&rrr<&urr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&orr<&urr<&urr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&mrr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr
+!;?Es!<3'!!<3&trr<&rrrW9$rrDrr!!)rs!!)`m!!)ip!!)rs!!%TMgAh0:!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8;ros8N)ss8E#ms8Duus8E#ts8E#ts8Duus8E#ss8E#ts8N)o
+s8N)ts8N*!s8N)ts8N)Hrr<&rrr<&urr<&srr<&trr<&srr<&rrr<&qrr<&rrr<&urr<&urr<&u
+rr<&rrr<&orr<&urr<&urr<&irr<&rrr<&srr<&prr<&srr<&srr<&rrr<&urr<&srr<&qrr<&r
+rr<&mrr<&srr<&orr<&srr<&trr<&srr<&qrr<&qrr<&srr<&urr<&rrr<&mrrN3#!;QQo!;lcr
+!;?Es!<3'!!<3&trr<&rrrW9$rrDrr!!)rs!!)`m!!)ip!!)rs!!%TMgAh04!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8;rrs7lZos7lZns8N)us8N)us7lZos7lZps7lZms7lZps7lZB
+s8N)trr<&trr<&ts8N)ts8N)trr<&rrr<&trr<&urr<&trr<&trr<&urr<&urr<&rrr<&prr<&t
+rr<&trr<&ts8N)orr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)t
+s8N)trr<&orr<&ts8N)ts8N)trr<&qrr<&qrr<&srr<&trr<&ts8N)lrr<&nrr<&qrr<&ts8N)s
+rr<&urr<&ss8N)trr<&trr<&trr<&rrr<&mrr<&trr<&us8N)trr<%Ms4[MPm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8;rrs7lZos7lZns8N)us8N)us7lZos7lZps7lZms7lZps7lZB
+s8N)trr<&trr<&ts8N)ts8N)trr<&rrr<&trr<&urr<&trr<&trr<&urr<&urr<&rrr<&prr<&t
+rr<&trr<&ts8N)orr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)t
+s8N)trr<&orr<&ts8N)ts8N)trr<&qrr<&qrr<&srr<&trr<&ts8N)lrr<&nrr<&qrr<&ts8N)s
+rr<&urr<&ss8N)trr<&trr<&trr<&rrr<&mrr<&trr<&us8N)trr<%Ms4[MPklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8;rrs7lZos7lZns8N)us8N)us7lZos7lZps7lZms7lZps7lZB
+s8N)trr<&trr<&ts8N)ts8N)trr<&rrr<&trr<&urr<&trr<&trr<&urr<&urr<&rrr<&prr<&t
+rr<&trr<&ts8N)orr<&ts8N)srr<&prr<&ts8N)ss8N)trr<&trr<&srr<&qrr<&qrr<&ts8N)t
+s8N)trr<&orr<&ts8N)ts8N)trr<&qrr<&qrr<&srr<&trr<&ts8N)lrr<&nrr<&qrr<&ts8N)s
+rr<&urr<&ss8N)trr<&trr<&trr<&rrr<&mrr<&trr<&us8N)trr<%Ms4[MPirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os8N)ss7lZms8)fps8N)us8N)us8N'!s8;rps8;rrs7lZls82lq
+s7u`@s8;rps8;p!rr<&urrE-"r;cZnr;ccqr;cfrrW)uurrE*!rrE*!q>gKoq>gHnr;cNjr;Zlu
+!<3#p!;ulq!!*&u!<3!!!<;utrVuisrr;rtrr;fpr;Z]qqu6Zss8;rks8;p!rr<&urrE-"r;ccq
+q>gNprW)rtrW)osr;Zlu!;6?l!;c`l!;ulq!;c]q!<2uu!;uit!<;utqu?Tpr;ZTnq>^BnrVllu
+s8;qKs4RGOm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&os8N)ss7lZms8)fps8N)us8N)us8N'!s8;rps8;rrs7lZls82lq
+s7u`@s8;rps8;p!rr<&urrE-"r;cZnr;ccqr;cfrrW)uurrE*!rrE*!q>gKoq>gHnr;cNjr;Zlu
+!<3#p!;ulq!!*&u!<3!!!<;utrVuisrr;rtrr;fpr;Z]qqu6Zss8;rks8;p!rr<&urrE-"r;ccq
+q>gNprW)rtrW)osr;Zlu!;6?l!;c`l!;ulq!;c]q!<2uu!;uit!<;utqu?Tpr;ZTnq>^BnrVllu
+s8;qKs4RGOklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os8N)ss7lZms8)fps8N)us8N)us8N'!s8;rps8;rrs7lZls82lq
+s7u`@s8;rps8;p!rr<&urrE-"r;cZnr;ccqr;cfrrW)uurrE*!rrE*!q>gKoq>gHnr;cNjr;Zlu
+!<3#p!;ulq!!*&u!<3!!!<;utrVuisrr;rtrr;fpr;Z]qqu6Zss8;rks8;p!rr<&urrE-"r;ccq
+q>gNprW)rtrW)osr;Zlu!;6?l!;c`l!;ulq!;c]q!<2uu!;uit!<;utqu?Tpr;ZTnq>^BnrVllu
+s8;qKs4RGOirR%VJ,~>
+!BpJ^mHsrH!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsirR%VJ,~>
+!BpJ^mHsrH!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0Trr<&^rr<%`rr<&Crr<%Ms/>tsirR%VJ,~>
+!BpJ^mBQ]h!.k0Wrr<&]rr<%arr<&Brr<%Ms/>tsm/bd$J,~>
+!BU8[l*:9d!.k0Wrr<&]rr<%arr<&Brr<%Ms/>tsklK'jJ,~>
+!B:&Xj0AX^!.k0Wrr<&]rr<%arr<&Brr<%Ms/>tsirR%VJ,~>
+!BpJ^mBQ]h!.k0\s82lZs8;qfs82l?s8;qKs/Q+um/bd$J,~>
+!BU8[l*:9d!.k0\s82lZs8;qfs82l?s8;qKs/Q+uklK'jJ,~>
+!B:&Xj0AX^!.k0\s82lZs8;qfs82l?s8;qKs/Q+uirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71linalgpage.eps b/books/ps/v71linalgpage.eps
new file mode 100644
index 0000000..9988a29
--- /dev/null
+++ b/books/ps/v71linalgpage.eps
@@ -0,0 +1,3608 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: linalgpage.eps
+%%CreationDate: Sat Jun 21 10:56:46 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 562
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 547.19241432849071 translate
+681.59055118110246 -547.19241432849071 scale
+% Image geometry
+710 570 8
+% Transformation matrix
+[ 710 0 0 570 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       206888 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-!E\!9O7\
+!.k0krriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-!E\!9O7\
+!.k0krriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-!E\!9O7\
+!.k0krriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFm4
+quHKk!!(.@r;cTl!!)*[!!%TMao;>@rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFm4
+quHKk!!(.@r;cTl!!)*[!!%TMao;>@rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFm4
+quHKk!!(.@r;cTl!!)*[!!%TMao;>@rr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&lrr<&=rr<&nrr<&[rr<%Ms2b3D!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&lrr<&=rr<&nrr<&[rr<%Ms2b3D!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&lrr<&=rr<&nrr<&[rr<%Ms2b3D!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!'V1!W`6#q#:<ojSo2[JcEjl!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!'V1!W`6#q#:<ojSo2[JcEjl!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!'V1!W`6#q#:<ojSo2[JcEjl!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#srtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!q>_<2
+!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&ns8E#qs8N'!s8;rps8;ros8;rqs8Duus8E#krrN3#!;QQo!;ZZn!!<0#!<)rr!;lcs!<;ut
+rVuis!<<#uqu?TpJcFa0"T\Q&rrE)s!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8E#urr<&urtPP6!<3'!!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!
+!<3'!rVururp9a;4b*~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&ns8E#qs8N'!s8;rps8;ros8;rqs8Duus8E#krrN3#!;QQo!;ZZn!!<0#!<)rr!;lcs!<;ut
+rVuis!<<#uqu?TpJcFa0"T\Q&rrE)s!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8E#urr<&urtPP6!<3'!!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!
+!<3'!rVururojI/3e.~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k11
+rr<&ns8E#qs8N'!s8;rps8;ros8;rqs8Duus8E#krrN3#!;QQo!;ZZn!!<0#!<)rr!;lcs!<;ut
+rVuis!<<#uqu?TpJcFa0"T\Q&rrE)s!!*&s!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8E#urr<&urtPP6!<3'!!<3'!!<3'!!<3'!!<3'!p])$.!<3'!!<3'!!<3'!!<3'!
+!<3'!rVururo4$s2h1~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!)]l!!)lqrrE#t!!)ut!!)ut!!)rs!!)ut!!)orrrE&u!!)cn!!*#u!!)ip!!)lq
+!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMjSo2[rr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!
+!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!)]l!!)lqrrE#t!!)ut!!)ut!!)rs!!)ut!!)orrrE&u!!)cn!!*#u!!)ip!!)lq
+!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMjSo2[rr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!
+!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcFg2!!)]l!!)lqrrE#t!!)ut!!)ut!!)rs!!)ut!!)orrrE&u!!)cn!!*#u!!)ip!!)lq
+!!)utrrE#t!!)ut!!)rsrrE#t!!)rsrrE&u!!)ut!!)ut!!%TMjSo2[rr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!
+!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls5X+Z!;6?l!;c]q!;uis!<2uu
+!;lcr!;QQo!;lcr!:p-i!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k11
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls5X+Z!;6?l!;c]q!;uis!<2uu
+!;lcr!;QQo!;lcr!:p-i!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k11
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls5X+Z!;6?l!;c]q!;uis!<2uu
+!;lcr!;QQo!;lcr!:p-i!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!.k11
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcFg2!!)]l!!)lq!!)rs!!*#uq#LBnqZ-Nn
+!!)Wj!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3IjSo2[rr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rb
+!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcFg2!!)]l!!)lq!!)rs!!*#uq#LBnqZ-Nn
+!!)Wj!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3IjSo2[rr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)r^
+!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcFg2!!)]l!!)lq!!)rs!!*#uq#LBnqZ-Nn
+!!)Wj!!)rs!!)lq!!)or!!)or!!*#uq#LBn!!)or!!)ut!!)foqZ)3IjSo2[rr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rX
+!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls5X+Z!;uis!;lcr!;c]q!;uis
+!<2uu!;HKn!;uis!;lcr!;$6e!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k11
+rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!
+rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls5X+Z!;uis!;lcr!;c]q!;uis
+!<2uu!;HKn!;uis!;lcr!;$6e!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k11
+rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!
+rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls5X+Z!;uis!;lcr!;c]q!;uis
+!<2uu!;HKn!;uis!;lcr!;$6e!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!.k11
+rriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!
+rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLjSo2[
+r;Q`squ6WrqYpNqr;Q`srr2rup\t3nr;Q`squ6Wro`"mkqYpNqqu6Wrqu6Wrqu6Wrrr2rupAY*m
+qu6WrrVlitq>UEpr;Q`sJcFg2!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#
+s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLjSo2[
+r;Q`squ6WrqYpNqr;Q`srr2rup\t3nr;Q`squ6Wro`"mkqYpNqqu6Wrqu6Wrqu6Wrrr2rupAY*m
+qu6WrrVlitq>UEpr;Q`sJcFg2!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#
+s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLjSo2[
+r;Q`squ6WrqYpNqr;Q`srr2rup\t3nr;Q`squ6Wro`"mkqYpNqqu6Wrqu6Wrqu6Wrrr2rupAY*m
+qu6WrrVlitq>UEpr;Q`sJcFg2!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!irrE)u!!<0#
+s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k11rr<&srr<&rrr<&q
+rr<&srr<&trr<&ts8N)urr<&ts8N)rrr<&krr<&qrr<&rrr<&qrr<&ts8N)trr<&ts8N)ts8N)t
+rr<&srr<&prr<&ts8N(Ms5X+_!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVurup&G0o
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k11rr<&srr<&rrr<&q
+rr<&srr<&trr<&ts8N)urr<&ts8N)rrr<&krr<&qrr<&rrr<&qrr<&ts8N)trr<&ts8N)ts8N)t
+rr<&srr<&prr<&ts8N(Ms5X+_!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVurup&G0o
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k11rr<&srr<&rrr<&q
+rr<&srr<&trr<&ts8N)urr<&ts8N)rrr<&krr<&qrr<&rrr<&qrr<&ts8N)trr<&ts8N)ts8N)t
+rr<&srr<&prr<&ts8N(Ms5X+_!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVurup&G0o
+!<<#us8N'!rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLk5Y2Vrr;fp
+rr;rtrr;rtrVufrqu?Tp!<<#us8Voqq>^Bnrr;oss8Voqr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`n
+s8;ots8E"Ls5s=]!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!
+rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLk5Y2Vrr;fp
+rr;rtrr;rtrVufrqu?Tp!<<#us8Voqq>^Bnrr;oss8Voqr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`n
+s8;ots8E"Ls5s=]!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!
+rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLk5Y2Vrr;fp
+rr;rtrr;rtrVufrqu?Tp!<<#us8Voqq>^Bnrr;oss8Voqr;Z]q!WN/ts8;rqs8N'!s8;rrs7u`n
+s8;ots8E"Ls5s=]!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!
+rrE'!rrE'!rrE'!s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$rr<%M
+s1&(4!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$rr<%M
+s1&(4!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$rr<%M
+s1&(4!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLK)YfN
+JcE:\!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLK)YfN
+JcE:\!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLK)YfN
+JcE:\!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0%rr<%Ms0r"3
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0%rr<%Ms0r"3
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0%rr<%Ms0r"3
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLM#[AQJcE4Z!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLM#[AQJcE4Z!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLM#[AQJcE4Z!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!8dbT!9aC^!;?Hm!.k0$s+13$s3grHm/bd$J,~>
+!BU8[l,E]&!8dbT!9aC^!;?Hm!.k0$s+13$s3grHklK'jJ,~>
+!B:&Xj2M&u!8dbT!9aC^!;?Hm!.k0$s+13$s3grHirR%VJ,~>
+!BpJ^mG.a;!:p0i!8dbT!9aC^!;?Hm!.k0$s+13$s3grHm/bd$J,~>
+!BU8[l.l=7!:p0i!8dbT!9aC^!;?Hm!.k0$s+13$s3grHklK'jJ,~>
+!B:&Xj4s\1!:p0i!8dbT!9aC^!;?Hm!.k0$s+13$s3grHirR%VJ,~>
+!BpJ^mHsrH!;ulm!:p0i!8[\T!9aC^!.k0$s+13$s2G$;m/bd$J,~>
+!BU8[l0\ND!;ulm!:p0i!8[\T!9aC^!.k0$s+13$s2G$;klK'jJ,~>
+!B:&Xj6cm>!;ulm!:p0i!8[\T!9aC^!.k0$s+13$s2G$;irR%VJ,~>
+!BpJ^mHsrH!;ZZp!;ulr!!*&t!<3#o!<3#s!<<)u!;ulq!;lfp!!N<%!<<)u!<<)t!<)rr!!N<%
+!<<)p!<)rq!;ZZn!<)rs!!*&t!.k0$s+13$s6BX`m/bd$J,~>
+!BU8[l0\ND!;ZZp!;ulr!!*&t!<3#o!<3#s!<<)u!;ulq!;lfp!!N<%!<<)u!<<)t!<)rr!!N<%
+!<<)p!<)rq!;ZZn!<)rs!!*&t!.k0$s+13$s6BX`klK'jJ,~>
+!B:&Xj6cm>!;ZZp!;ulr!!*&t!<3#o!<3#s!<<)u!;ulq!;lfp!!N<%!<<)u!<<)t!<)rr!!N<%
+!<<)p!<)rq!;ZZn!<)rs!!*&t!.k0$s+13$s6BX`irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)ss7cTos7lZos7ZNns7lZos7lZps8E#us8;rss7lZps7lZn
+s82los7lZps7cSFs+13$s+149s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)ss7cTos7lZos7ZNns7lZos7lZps8E#us8;rss7lZps7lZn
+s82los7lZps7cSFs+13$s+149s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)ss7cTos7lZos7ZNns7lZos7lZps8E#us8;rss7lZps7lZn
+s82los7lZps7cSFs+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)os8;rts8N'!s8E#ss8Duus8E#ts8E#t
+s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)os8;rts8N'!s8E#ss8Duus8E#ts8E#t
+s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)os8;rts8N'!s8E#ss8Duus8E#ts8E#t
+s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8E#qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8E#qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8E#qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)os8N)qs8N)rs8N'#rr<&ss8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N)us8N)qs8E#ss8Duus8E#ts8E#t
+s8N)us8E#us8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(Ms+13$s+149s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N)us8N)qs8E#ss8Duus8E#ts8E#t
+s8N)us8E#us8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(Ms+13$s+149s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N)us8N)qs8E#ss8Duus8E#ts8E#t
+s8N)us8E#us8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N(Ms+13$s+149s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lWps7lZns7lZos7cTos7cTos7cTns7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14:s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lWps7lZns7lZos7cTos7cTos7cTns7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14:s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lWps7lZns7lZos7cTos7cTos7cTns7lZp
+s7lZos7lZps8;rts8;qKs+13$s+14:s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82lrs7lZls8;rps8;ots8E#ts8;ots8E#t
+s8)fns82lqs7lZms8;rrs8;rts8;qKs+13$s+14:s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82lrs7lZls8;rps8;ots8E#ts8;ots8E#t
+s8)fns82lqs7lZms8;rrs8;rts8;qKs+13$s+14:s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82lrs7lZls8;rps8;ots8E#ts8;ots8E#t
+s8)fns82lqs7lZms8;rrs8;rts8;qKs+13$s+14:s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G<5s8N)-s8;qKs2Y0>!7LoI!9jI_!/COP!2]_pm/bd$J,~>
+!BU8[l%/m1s8N)-s8;qKs2Y0>!7LoI!9jI_!/COP!2]_pklK'jJ,~>
+!B:&Xj+77+s8N)-s8;qKs2Y0>!7LoI!9jI_!/COP!2]_pirR%VJ,~>
+!BpJ^mFhO<!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.ddJj1Hli-qb`rGu;rr;osl2L_`jSo2[q#:<o
+q>UEpnG`Igq>UEpci3tFli-qbdJj1HU&Y,Z!S0Da~>
+!BU8[l.Q+8!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.ddJj1Hli-qb`rGu;rr;osl2L_`jSo2[q#:<o
+q>UEpnG`Igq>UEpci3tFli-qbdJj1HU&Y,V!R<`V~>
+!B:&Xj4XJ2!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.ddJj1Hli-qb`rGu;rr;osl2L_`jSo2[q#:<o
+q>UEpnG`Igq>UEpci3tFli-qbdJj1HU&Y,P!Q-jH~>
+!BpJ^mG%[@!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7CfH!:0Xb!6+s<!;c]q!9jF_!9F.[!;QQo
+!;ZWp!:^!g!;ZWp!71ZF!:0Xb!7LlI!20Akm/bd$J,~>
+!BU8[l.c7<!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7CfH!:0Xb!6+s<!;c]q!9jF_!9F.[!;QQo
+!;ZWp!:^!g!;ZWp!71ZF!:0Xb!7LlI!20AkklK'jJ,~>
+!B:&Xj4jV6!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7CfH!:0Xb!6+s<!;c]q!9jF_!9F.[!;QQo
+!;ZWp!:^!g!;ZWp!71ZF!:0Xb!7LlI!20AkirR%VJ,~>
+!BpJ^mG%X@!;lcr!8IMR!6tND!42\*!:Bdd!7CfH!3Z>%!<2uu!<2uu!9jF_!8@GQ!;ZWp!:^!g
+!;ZWp!71ZF!5&72!20Akm/bd$J,~>
+!BU8[l.c4<!;lcr!8IMR!6tND!42\*!:Bdd!7CfH!3Z>%!<2uu!<2uu!9jF_!8@GQ!;ZWp!:^!g
+!;ZWp!71ZF!5&72!20AkklK'jJ,~>
+!B:&Xj4jS6!;lcr!8IMR!6tND!42\*!:Bdd!7CfH!3Z>%!<2uu!<2uu!9jF_!8@GQ!;ZWp!:^!g
+!;ZWp!71ZF!5&72!20AkirR%VJ,~>
+!BpJ^mG.^A!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z'
+s8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVultqYpNqq>^Bnqu?Kmr;Z]qq#C?o#6+Z'
+s8N'!r;Z]qqu?Kmrr;rt!<<#uqu?Wqq>^Bn!WN/ts8;ros8;ourrD<`!!*#u!!*#u!!)utr;ccq
+rVururW)lr!W`9#r;cZnrW)rtrW)osrW)fpq>gKo!<E/u!;HNi!<)ou!<;utqu?Tpp&Fsjr;Zcs
+!<;utr;ZTnrr;rt!<<#uqu?Wqq>^BnqZ$Ko!WN/os8;rps7u`is8;r's8MBdeieN~>
+!BU8[l.l:=!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z'
+s8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVultqYpNqq>^Bnqu?Kmr;Z]qq#C?o#6+Z'
+s8N'!r;Z]qqu?Kmrr;rt!<<#uqu?Wqq>^Bn!WN/ts8;ros8;ourrD<`!!*#u!!*#u!!)utr;ccq
+rVururW)lr!W`9#r;cZnrW)rtrW)osrW)fpq>gKo!<E/u!;HNi!<)ou!<;utqu?Tpp&Fsjr;Zcs
+!<;utr;ZTnrr;rt!<<#uqu?Wqq>^BnqZ$Ko!WN/os8;rps7u`is8;r's8M6`c8pI~>
+!B:&Xj4sY7!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z'
+s8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVultqYpNqq>^Bnqu?Kmr;Z]qq#C?o#6+Z'
+s8N'!r;Z]qqu?Kmrr;rt!<<#uqu?Wqq>^Bn!WN/ts8;ros8;ourrD<`!!*#u!!*#u!!)utr;ccq
+rVururW)lr!W`9#r;cZnrW)rtrW)osrW)fpq>gKo!<E/u!;HNi!<)ou!<;utqu?Tpp&Fsjr;Zcs
+!<;utr;ZTnrr;rt!<<#uqu?Wqq>^BnqZ$Ko!WN/os8;rps7u`is8;r's8M$Z_`*)~>
+!BpJ^mG.^A!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;HKn!<)ot!;uls!<)ot
+!<)ot!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q
+!<)rt!<)ot!<)ot!;uis!<)rt!9sL`!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em
+!;uis!;c]q!;QQo!;ZZp!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HKn!<)ot!;uls!<)ot!;lcr
+!;QTo!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k!<)ot!42_)m/bd$J,~>
+!BU8[l.l:=!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;HKn!<)ot!;uls!<)ot
+!<)ot!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q
+!<)rt!<)ot!<)ot!;uis!<)rt!9sL`!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em
+!;uis!;c]q!;QQo!;ZZp!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HKn!<)ot!;uls!<)ot!;lcr
+!;QTo!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k!<)ot!42_)klK'jJ,~>
+!B:&Xj4sY7!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;HKn!<)ot!;uls!<)ot
+!<)ot!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q
+!<)rt!<)ot!<)ot!;uis!<)rt!9sL`!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em
+!;uis!;c]q!;QQo!;ZZp!<)ot!;?Em!;ZZp!<)ot!<)ot!<)ot!;HKn!<)ot!;uls!<)ot!;lcr
+!;QTo!<2uu!;c]q!;c]q!<)ot!;uis!<)rt!;QQo!<)ot!;c]q!;-9k!<)ot!42_)irR%VJ,~>
+!BpJ^mG.^A!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;$3j!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;c]q!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!9jFe!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`spAY*mq>UEpr;Q`s
+rr2ruqu6Wrq>UEpqu6WrrVlitr;Q`squ6Wrq#:<op&>!lqu6Wrqu6WrrVlitr;Q`sq>UEpqu6Wr
+qu6Wrn,E@fZiC$l!S0Da~>
+!BU8[l.l:=!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;$3j!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;c]q!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!9jFe!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`spAY*mq>UEpr;Q`s
+rr2ruqu6Wrq>UEpqu6WrrVlitr;Q`squ6Wrq#:<op&>!lqu6Wrqu6WrrVlitr;Q`sq>UEpqu6Wr
+qu6Wrn,E@fZiC$h!R<`V~>
+!B:&Xj4sY7!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;$3j!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;c]q!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!9jFe!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`spAY*mq>UEpr;Q`s
+rr2ruqu6Wrq>UEpqu6WrrVlitr;Q`squ6Wrq#:<op&>!lqu6Wrqu6WrrVlitr;Q`sq>UEpqu6Wr
+qu6Wrn,E@fZiC$b!Q-jH~>
+!BpJ^mG.^A!;6?l!;ZZj!<)rp!;c]q!;c`k!;QTk!;uis!;uis!<2uu!;lcr!;ZWp!<2uu!<2uu
+!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;c`k!;ZWp!<2uu!<2uu
+!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh!;ulr!9O4b!<3'!!<3&urr<&rrr<&srr<&os8E#jrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;?Em!;ZWp!;uis!<3#o!;ZZj!<)ot!;uis!;lcr!;QQo!;6?l
+!;lfl!;ulr!;?Em!;lcr!;lcr!;-<g!42_)m/bd$J,~>
+!BU8[l.l:=!;6?l!;ZZj!<)rp!;c]q!;c`k!;QTk!;uis!;uis!<2uu!;lcr!;ZWp!<2uu!<2uu
+!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;c`k!;ZWp!<2uu!<2uu
+!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh!;ulr!9O4b!<3'!!<3&urr<&rrr<&srr<&os8E#jrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;?Em!;ZWp!;uis!<3#o!;ZZj!<)ot!;uis!;lcr!;QQo!;6?l
+!;lfl!;ulr!;?Em!;lcr!;lcr!;-<g!42_)klK'jJ,~>
+!B:&Xj4sY7!;6?l!;ZZj!<)rp!;c]q!;c`k!;QTk!;uis!;uis!<2uu!;lcr!;ZWp!<2uu!<2uu
+!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;c`k!;ZWp!<2uu!<2uu
+!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh!;ulr!9O4b!<3'!!<3&urr<&rrr<&srr<&os8E#jrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;?Em!;ZWp!;uis!<3#o!;ZZj!<)ot!;uis!;lcr!;QQo!;6?l
+!;lfl!;ulr!;?Em!;lcr!;lcr!;-<g!42_)irR%VJ,~>
+!BpJ^mG.^A!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+qYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&is8N)^rrrK'!<3'!!<2uu
+!;lcr!;uis!;QQr!<<'!p&>3rrrE'!rrDoq!!)fo!!)ip!!)rs!!)`m!!)ip!!)rs!!*#u!!)Ti
+!!)`m!!)rs!!)or!!)fo!!)]l!!)or!!)TirrDio!!)or!!)or!!)]l!!)rs!!'A*rp9a;4b*~>
+!BU8[l.l:=!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+qYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&is8N)^rrrK'!<3'!!<2uu
+!;lcr!;uis!;QQr!<<'!p&>3rrrE'!rrDoq!!)fo!!)ip!!)rs!!)`m!!)ip!!)rs!!*#u!!)Ti
+!!)`m!!)rs!!)or!!)fo!!)]l!!)or!!)TirrDio!!)or!!)or!!)]l!!)rs!!'A*rojI/3e.~>
+!B:&Xj4sY7!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+qYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&is8N)^rrrK'!<3'!!<2uu
+!;lcr!;uis!;QQr!<<'!p&>3rrrE'!rrDoq!!)fo!!)ip!!)rs!!)`m!!)ip!!)rs!!*#u!!)Ti
+!!)`m!!)rs!!)or!!)fo!!)]l!!)or!!)TirrDio!!)or!!)or!!)]l!!)rs!!'A*ro4$s2h1~>
+!BpJ^mG%X@!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`s
+qYpNqqYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<&_rrrK'
+!<3'!!<2uu!;lcr!;uis!;QQo!<2uu!;?Es!<3'!!<3&qrr<&orr<&prr<&srr<&mrr<&prr<&s
+rr<&urr<&irr<&mrr<&srr<&rrr<&orr<&lrr<&rrr<&mrr<&srr<&prr<&rrr<&rrr<&lrr<&s
+rr<&*s8MBdeieN~>
+!BU8[l.c4<!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`s
+qYpNqqYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<&_rrrK'
+!<3'!!<2uu!;lcr!;uis!;QQo!<2uu!;?Es!<3'!!<3&qrr<&orr<&prr<&srr<&mrr<&prr<&s
+rr<&urr<&irr<&mrr<&srr<&rrr<&orr<&lrr<&rrr<&mrr<&srr<&prr<&rrr<&rrr<&lrr<&s
+rr<&*s8M6`c8pI~>
+!B:&Xj4jS6!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`s
+qYpNqqYpNqo)A[irr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<&_rrrK'
+!<3'!!<2uu!;lcr!;uis!;QQo!<2uu!;?Es!<3'!!<3&qrr<&orr<&prr<&srr<&mrr<&prr<&s
+rr<&urr<&irr<&mrr<&srr<&rrr<&orr<&lrr<&rrr<&mrr<&srr<&prr<&rrr<&rrr<&lrr<&s
+rr<&*s8M$Z_`*)~>
+!BpJ^mG%[@!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<)rt!;uis
+!;uis!<)ot!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVult
+qYpNqqu6WrrVultqYpNqrVlitrr2rurVultq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&l
+rr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N)frr<&urr<&srr<&trr<&rrr<&orr<&trr<&m
+rr<&urr<&prr<&orr<&trr<&urr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)orr<&ts8N)t
+rr<&srr<&rrr<&trr<&trr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&ts8N)*
+s8MBdeieN~>
+!BU8[l.c7<!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<)rt!;uis
+!;uis!<)ot!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVult
+qYpNqqu6WrrVultqYpNqrVlitrr2rurVultq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&l
+rr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N)frr<&urr<&srr<&trr<&rrr<&orr<&trr<&m
+rr<&urr<&prr<&orr<&trr<&urr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)orr<&ts8N)t
+rr<&srr<&rrr<&trr<&trr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&ts8N)*
+s8M6`c8pI~>
+!B:&Xj4jV6!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<)rt!;uis
+!;uis!<)ot!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVult
+qYpNqqu6WrrVultqYpNqrVlitrr2rurVultq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&l
+rr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N)frr<&urr<&srr<&trr<&rrr<&orr<&trr<&m
+rr<&urr<&prr<&orr<&trr<&urr<&srr<&mrr<&trr<&urr<&srr<&trr<&ts8N)orr<&ts8N)t
+rr<&srr<&rrr<&trr<&trr<&lrr<&qrr<&ts8N)ts8N)trr<&orr<&trr<&qrr<&lrr<&ts8N)*
+s8M$Z_`*)~>
+!BpJ^mFhO<!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;?Hk!!*&u!<<)u!<3#t!<)rr!!<0#!;lfq
+!<<*!!<<*!!<<)t!!*&u!<<)u!<3#t!<3#p!<)ou!<;utqu?Tp!ri6#rr;fprVufr!<<#uqu?Tp
+r;Z]qq#C<ns8W*!s8W*!s8W#t!<<#uqu?Tprr;fpr;ZTnr;Z]qqZ$Koqu6Zss8;ros8N)frr<&u
+rr<&rs8;rqs7u`os8N)us8;rmrr<&urr<&ss7u`ls8;rss8E#ts8E#ls8;rss8E#ts8E#ss8;rj
+s8;rqs8E#ts8E#qs8;rss7u`ns7u`ns8;rprrE-"r;cQkr;c`pq>g<jr;ZitrW'A+rp9a;4b*~>
+!BU8[l.Q+8!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;?Hk!!*&u!<<)u!<3#t!<)rr!!<0#!;lfq
+!<<*!!<<*!!<<)t!!*&u!<<)u!<3#t!<3#p!<)ou!<;utqu?Tp!ri6#rr;fprVufr!<<#uqu?Tp
+r;Z]qq#C<ns8W*!s8W*!s8W#t!<<#uqu?Tprr;fpr;ZTnr;Z]qqZ$Koqu6Zss8;ros8N)frr<&u
+rr<&rs8;rqs7u`os8N)us8;rmrr<&urr<&ss7u`ls8;rss8E#ts8E#ls8;rss8E#ts8E#ss8;rj
+s8;rqs8E#ts8E#qs8;rss7u`ns7u`ns8;rprrE-"r;cQkr;c`pq>g<jr;ZitrW'A+rojI/3e.~>
+!B:&Xj4XJ2!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;?Hk!!*&u!<<)u!<3#t!<)rr!!<0#!;lfq
+!<<*!!<<*!!<<)t!!*&u!<<)u!<3#t!<3#p!<)ou!<;utqu?Tp!ri6#rr;fprVufr!<<#uqu?Tp
+r;Z]qq#C<ns8W*!s8W*!s8W#t!<<#uqu?Tprr;fpr;ZTnr;Z]qqZ$Koqu6Zss8;ros8N)frr<&u
+rr<&rs8;rqs7u`os8N)us8;rmrr<&urr<&ss7u`ls8;rss8E#ts8E#ls8;rss8E#ts8E#ss8;rj
+s8;rqs8E#ts8E#qs8;rss7u`ns7u`ns8;rprrE-"r;cQkr;c`pq>g<jr;ZitrW'A+ro4$s2h1~>
+!BpJ^m=G;Srr<%Ms+13$s+ULPm/bd$J,~>
+!BU8[l%/lOrr<%Ms+13$s+ULPklK'jJ,~>
+!B:&Xj+76Irr<%Ms+13$s+ULPirR%VJ,~>
+!BpJ^m=G;Srr<%Ms+13$s+ULPm/bd$J,~>
+!BU8[l%/lOrr<%Ms+13$s+ULPklK'jJ,~>
+!B:&Xj+76Irr<%Ms+13$s+ULPirR%VJ,~>
+!BpJ^m=G;Srr<%Ms+13$s+ULPm/bd$J,~>
+!BU8[l%/lOrr<%Ms+13$s+ULPklK'jJ,~>
+!B:&Xj+76Irr<%Ms+13$s+ULPirR%VJ,~>
+!BpJ^m=G;Ts8;qKs+13$s+gXRm/bd$J,~>
+!BU8[l%/lPs8;qKs+13$s+gXRklK'jJ,~>
+!B:&Xj+76Js8;qKs+13$s+gXRirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G;ps8;qKs5s@]!.k0$s+p^Sm/bd$J,~>
+!BU8[l%/lls8;qKs5s@]!.k0$s+p^SklK'jJ,~>
+!B:&Xj+76fs8;qKs5s@]!.k0$s+p^SirR%VJ,~>
+!BpJ^mDJr(!:0Xb!8IPM!9=(Z!5/=3!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-m/bd$
+J,~>
+!BU8[l,3N$!:0Xb!8IPM!9=(Z!5/=3!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-klK'j
+J,~>
+!B:&Xj2:ls!:0Xb!8IPM!9=(Z!5/=3!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-irR%V
+J,~>
+!BpJ^mDJr(!:0Xb!8@GQ!;uis!9O4\!5&72!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-
+m/bd$J,~>
+!BU8[l,3N$!:0Xb!8@GQ!;uis!9O4\!5&72!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-
+klK'jJ,~>
+!B:&Xj2:ls!:0Xb!8@GQ!;uis!9O4\!5&72!:0Xb!7CfH!;QQo!;ZWp!8meV!;?Em!.k0$s0r%-
+irR%VJ,~>
+!BpJ^mDJr(!5ng:!;lcr!9X:]!5&72!3lJ'!;ZWp!8meV!.k0$s/Z2!m/bd$J,~>
+!BU8[l,3N$!5ng:!;lcr!9X:]!5&72!3lJ'!;ZWp!8meV!.k0$s/Z2!klK'jJ,~>
+!B:&Xj2:ls!5ng:!;lcr!9X:]!5&72!3lJ'!;ZWp!8meV!.k0$s/Z2!irR%VJ,~>
+!BpJ^mG7gB!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u!;lfq!;lfq!<<)u!9jF_!;lcr!<)rr!;ulr
+!!*&u!;uln!;ulq!;ulr!!*&u!<3#u!!`H'!<<'!!;c`q!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;lfq!<<)u!;HNl!;ulr!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Km
+r;Z`rq>^Bn!WN.Ns+13hs8MBdeieN~>
+!BU8[l.uC>!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u!;lfq!;lfq!<<)u!9jF_!;lcr!<)rr!;ulr
+!!*&u!;uln!;ulq!;ulr!!*&u!<3#u!!`H'!<<'!!;c`q!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;lfq!<<)u!;HNl!;ulr!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Km
+r;Z`rq>^Bn!WN.Ns+13hs8M6`c8pI~>
+!B:&Xj5'b8!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u!;lfq!;lfq!<<)u!9jF_!;lcr!<)rr!;ulr
+!!*&u!;uln!;ulq!;ulr!!*&u!<3#u!!`H'!<<'!!;c`q!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;lfq!<<)u!;HNl!;ulr!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Km
+r;Z`rq>^Bn!WN.Ns+13hs8M$Z_`*)~>
+!BpJ^mG.aA!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@^!;lcr!<2uu
+!<)ot!;lfr!<2uu!;lcr!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;c`q!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!;HKn!<)ot!;lfr!<2uu!;c]q!;QQo!;ZZp!<)ot
+!<3#u!<<*!!<<'!!<2uu!<)ot!;c]q!;?Em!;c]q!<)rt!.k0$s2G$;m/bd$J,~>
+!BU8[l.l==!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@^!;lcr!<2uu
+!<)ot!;lfr!<2uu!;lcr!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;c`q!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!;HKn!<)ot!;lfr!<2uu!;c]q!;QQo!;ZZp!<)ot
+!<3#u!<<*!!<<'!!<2uu!<)ot!;c]q!;?Em!;c]q!<)rt!.k0$s2G$;klK'jJ,~>
+!B:&Xj4s\7!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@^!;lcr!<2uu
+!<)ot!;lfr!<2uu!;lcr!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;c`q!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!;HKn!<)ot!;lfr!<2uu!;c]q!;QQo!;ZZp!<)ot
+!<3#u!<<*!!<<'!!<2uu!<)ot!;c]q!;?Em!;c]q!<)rt!.k0$s2G$;irR%VJ,~>
+!BpJ^mG.^A!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5PD]r;Q`srr2ruqu6Wrr;Q`s
+pAY*mqYpNqqu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr2ruq>UEpqYpNqq#:<op&>!lq>UNs
+s8N)hrr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m!!)or!!)or
+!!%TMJcE^hrp9a;4b*~>
+!BU8[l.l:=!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5PD]r;Q`srr2ruqu6Wrr;Q`s
+pAY*mqYpNqqu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr2ruq>UEpqYpNqq#:<op&>!lq>UNs
+s8N)hrr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m!!)or!!)or
+!!%TMJcE^hrojI/3e.~>
+!B:&Xj4sY7!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5PD]r;Q`srr2ruqu6Wrr;Q`s
+pAY*mqYpNqqu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr2ruq>UEpqYpNqq#:<op&>!lq>UNs
+s8N)hrr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m!!)or!!)or
+!!%TMJcE^hro4$s2h1~>
+!BpJ^mG.^A!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O7X!<)rn!;uis!;?Em!;c]q!;lcr
+!;uis!;ZWp!<2uu!<2uu!;c]q!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!;6Bh!;lcr!;6?l
+!;QQo!;ZWp!;uis!<2uu!<2uu!<3!"!<<)p!;lcr!;?Em!;lcr!.k0$s1\O4m/bd$J,~>
+!BU8[l.l:=!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O7X!<)rn!;uis!;?Em!;c]q!;lcr
+!;uis!;ZWp!<2uu!<2uu!;c]q!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!;6Bh!;lcr!;6?l
+!;QQo!;ZWp!;uis!<2uu!<2uu!<3!"!<<)p!;lcr!;?Em!;lcr!.k0$s1\O4klK'jJ,~>
+!B:&Xj4sY7!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O7X!<)rn!;uis!;?Em!;c]q!;lcr
+!;uis!;ZWp!<2uu!<2uu!;c]q!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!;6Bh!;lcr!;6?l
+!;QQo!;ZWp!;uis!<2uu!<2uu!<3!"!<<)p!;lcr!;?Em!;lcr!.k0$s1\O4irR%VJ,~>
+!BpJ^mG.^A!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\q#:<op&>!lpAY*mqYpNq
+qu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&os8N)mrr<&s
+rr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!%TMJcEIarp9a;
+4b*~>
+!BU8[l.l:=!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\q#:<op&>!lpAY*mqYpNq
+qu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&os8N)mrr<&s
+rr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!%TMJcEIarojI/
+3e.~>
+!B:&Xj4sY7!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\q#:<op&>!lpAY*mqYpNq
+qu6Wrr;Q`sq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)srr<&qrr<&orr<&lrr<&os8N)mrr<&s
+rr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!%TMJcEIaro4$s
+2h1~>
+!BpJ^mG.^A!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]rr<&orr<&lrr<&mrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&qrr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$
+!;HKn!;uis!;lcr!;6?l!;QQo!;ZWp!;uis!<2uu!<2uu!<3!#!<<'!o`"mkpAY*mqu6WrJcC<$
+^An3"!S0Da~>
+!BU8[l.l:=!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]rr<&orr<&lrr<&mrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&qrr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$
+!;HKn!;uis!;lcr!;6?l!;QQo!;ZWp!;uis!<2uu!<2uu!<3!#!<<'!o`"mkpAY*mqu6WrJcC<$
+^An2s!R<`V~>
+!B:&Xj4sY7!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]rr<&orr<&lrr<&mrr<&q
+rr<&rrr<&srr<&prr<&urr<&urr<&qrr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$
+!;HKn!;uis!;lcr!;6?l!;QQo!;ZWp!;uis!<2uu!<2uu!<3!#!<<'!o`"mkpAY*mqu6WrJcC<$
+^An2m!Q-jH~>
+!BpJ^mG.^A!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igp\t3n
+rVultr;Q`spAY*mq>UEprVlitqu6Wrq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&trr<&orr<&ts8N)rrr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&u
+rr<&urr<&ts8N)rrr<&trr<&rrr<&qrr<&ts8N)rs8N(Ms+13ps8MBdeieN~>
+!BU8[l.l:=!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igp\t3n
+rVultr;Q`spAY*mq>UEprVlitqu6Wrq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&trr<&orr<&ts8N)rrr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&u
+rr<&urr<&ts8N)rrr<&trr<&rrr<&qrr<&ts8N)rs8N(Ms+13ps8M6`c8pI~>
+!B:&Xj4sY7!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igp\t3n
+rVultr;Q`spAY*mq>UEprVlitqu6Wrq>UEprr2rurr2ruqYpNqrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&trr<&orr<&ts8N)rrr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&u
+rr<&urr<&ts8N)rrr<&trr<&rrr<&qrr<&ts8N)rs8N(Ms+13ps8M$Z_`*)~>
+!BpJ^mG7gA!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!:g*e!;ZZn!;uln
+!;uln!;ulq!;uln!<3#t!<<*!!<<*!!;ulr!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t
+!<<)u!;QTm!!*&u!<<)q!;uln!;c`o!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq
+!;ZZp!.k0$s3:TCm/bd$J,~>
+!BU8[l.uC=!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!:g*e!;ZZn!;uln
+!;uln!;ulq!;uln!<3#t!<<*!!<<*!!;ulr!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t
+!<<)u!;QTm!!*&u!<<)q!;uln!;c`o!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq
+!;ZZp!.k0$s3:TCklK'jJ,~>
+!B:&Xj5'b7!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!:g*e!;ZZn!;uln
+!;uln!;ulq!;uln!<3#t!<<*!!<<*!!;ulr!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t
+!<<)u!;QTm!!*&u!<<)q!;uln!;c`o!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq
+!;ZZp!.k0$s3:TCirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mB?Qi!;?Hm!6P9@!:0[b!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l*(-e!;?Hm!6P9@!:0[b!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj0/L_!;?Hm!6P9@!:0[b!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mFqU=!!<0#!8[\T!;?Hm!9*tW!;ulr!;-<k!:0[b!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l.Z19!!<0#!8[\T!;?Hm!9*tW!;ulr!;-<k!:0[b!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj4aP3!!<0#!8[\T!;?Hm!9*tW!;ulr!;-<k!:0[b!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mHsrH!;ull!8[\T!7_&J!;ulr!;-<k!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l0\ND!;ull!8[\T!7_&J!;ulr!;-<k!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj6cm>!;ull!8[\T!7_&J!;ulr!;-<k!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!!*&t!<<)u!;ulq!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u!;c`p
+!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s+13?s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!!*&t!<<)u!;ulq!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u!;c`p
+!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s+13?s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!!*&t!<<)u!;ulq!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u!;c`p
+!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s+13?s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZos7lZps7lZns82lps7cTns7cTjs8E#t
+s8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZos7lZps7lZns82lps7cTns7cTjs8E#t
+s8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'!s7ZNns7lZos7lZps7lZns82lps7cTns7cTjs8E#t
+s8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#os8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#u
+s8N)ts8N(Ms+13$s.',gm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#os8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#u
+s8N)ts8N(Ms+13$s.',gklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ms8;rts8N'!s8E#ss8E#us8N)ts8N)ts8N)ms8N)rs8E#t
+s8N*!s8E#ts8E#os8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#u
+s8N)ts8N(Ms+13$s.',girR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N)ps8N)ts8N)ms8N)rs8N)ts8N*!s8N)s
+s8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13$s-Wicm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N)ps8N)ts8N)ms8N)rs8N)ts8N*!s8N)s
+s8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13$s-WicklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)ms8E#qs8N)rs8N)ps8N)ts8N)ms8N)rs8N)ts8N*!s8N)s
+s8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13$s-WicirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ms8N)qs7ZNns7lZns8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13$s-s&fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ms8N)qs7ZNns7lZns8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13$s-s&fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ms8N)qs7ZNns7lZns8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13$s-s&firR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)ms8N)qs7ZKns7cTms8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcC<$SH&TU!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)ms8N)qs7ZKns7cTms8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcC<$SH&TQ!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)ms8N)qs7ZKns7cTms8N)ms8N)rs8N)ts8N*!s8N)ss8N)p
+s8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcC<$SH&TK!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#os8N)ss8N)ts8N)ts8N)ss8N)rs8N)t
+s8N*!s8E#ts8E#os8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)t
+s8N(Ms+13$s.',gm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#os8N)ss8N)ts8N)ts8N)ss8N)rs8N)t
+s8N*!s8E#ts8E#os8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)t
+s8N(Ms+13$s.',gklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N)us8N)qs8E#os8N)ss8N)ts8N)ts8N)ss8N)rs8N)t
+s8N*!s8E#ts8E#os8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)t
+s8N(Ms+13$s.',girR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cQos7lZns7lZps7ZNms7lZps7lZps8;rts8;rts7lZks82is
+s7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cQos7lZns7lZps7ZNms7lZps7lZps8;rts8;rts7lZks82is
+s7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cQos7lZns7lZps7ZNms7lZps7lZps8;rts8;rts7lZks82is
+s7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82lrs7lZls8)fqs82iss8E#ss82lqs7lZps8;rts8;rss8;p!
+rr<&qs82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13$s-s&fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82lrs7lZls8)fqs82iss8E#ss82lqs7lZps8;rts8;rss8;p!
+rr<&qs82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13$s-s&fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82lrs7lZls8)fqs82iss8E#ss82lqs7lZps8;rts8;rss8;p!
+rr<&qs82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13$s-s&firR%VJ,~>
+!BpJ^mHsrH!3-"u!.k0$s+13$s1eU5m/bd$J,~>
+!BU8[l0\ND!3-"u!.k0$s+13$s1eU5klK'jJ,~>
+!B:&Xj6cm>!3-"u!.k0$s+13$s1eU5irR%VJ,~>
+!BpJ^mHsrH!36(u!.k0$s+13$s1eU5m/bd$J,~>
+!BU8[l0\ND!36(u!.k0$s+13$s1eU5klK'jJ,~>
+!B:&Xj6cm>!36(u!.k0$s+13$s1eU5irR%VJ,~>
+!BpJ^m>h5D!.k0$s+13$s1\O4m/bd$J,~>
+!BU8[l&Pf@!.k0$s+13$s1\O4klK'jJ,~>
+!B:&Xj,X0:!.k0$s+13$s1\O4irR%VJ,~>
+!BpJ^m>h5E!.k0$s+13$s1SI3m/bd$J,~>
+!BU8[l&PfA!.k0$s+13$s1SI3klK'jJ,~>
+!B:&Xj,X0;!.k0$s+13$s1SI3irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G;Ds8;qas8N)Ns8N)ks8;r8s8N(Ms+11Ms8MBdeieN~>
+!BU8[l%/l@s8;qas8N)Ns8N)ks8;r8s8N(Ms+11Ms8M6`c8pI~>
+!B:&Xj+76:s8;qas8N)Ns8N)ks8;r8s8N(Ms+11Ms8M$Z_`*)~>
+!BpJ^mFhO<!!3*"g]%6RdJj1Hli-qbdJj1HVZ-Vrmf*7ef)G^Mp&>!la8Z,>q>UEp`;]f;li-qb
+JcF:#rp9a;4b*~>
+!BU8[l.Q+8!!3*"g]%6RdJj1Hli-qbdJj1HVZ-Vrmf*7ef)G^Mp&>!la8Z,>q>UEp`;]f;li-qb
+JcF:#rojI/3e.~>
+!B:&Xj4XJ2!!3*"g]%6RdJj1Hli-qbdJj1HVZ-Vrmf*7ef)G^Mp&>!la8Z,>q>UEp`;]f;li-qb
+JcF:#ro4$s2h1~>
+!BpJ^mG%[@!<)rt!8IMR!7CfH!:0Xb!7LlI!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!:0Xb
+!.k1#s8MBdeieN~>
+!BU8[l.c7<!<)rt!8IMR!7CfH!:0Xb!7LlI!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!:0Xb
+!.k1#s8M6`c8pI~>
+!B:&Xj4jV6!<)rt!8IMR!7CfH!:0Xb!7LlI!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!:0Xb
+!.k1#s8M$Z_`*)~>
+!BpJ^mG%X@!;lcr!8IMR!7CfH!5&72!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!.k0as8MBd
+eieN~>
+!BU8[l.c4<!;lcr!8IMR!7CfH!5&72!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!.k0as8M6`
+c8pI~>
+!B:&Xj4jS6!;lcr!8IMR!7CfH!5&72!2]\q!:Kje!7q/M!;?Em!65$=!;ZWp!6"m;!.k0as8M$Z
+_`*)~>
+!BpJ^mG.^A!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;QTo!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN/ps7u`ps8Duus8E#qs8;rrs8N''rr<'!rr<&ns8;ourrDus
+r;Zlu!<3#t!!*&u!;lfp!;lfm!;ulq!!3*"rVllus8;rks8;rqs8N'!s8;rps8;ourrDioq>gNp
+rVururW)iqr;cfrrr<9'!!*'!!!)cnr;c`pq>gKo!<E/u!;lfp!;ulr!!*&u!;ZZp!!`H'!<<'!
+!;ulq!;lfm!<3#t!!*&u!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN.Ns7u]om/bd$J,~>
+!BU8[l.l:=!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;QTo!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN/ps7u`ps8Duus8E#qs8;rrs8N''rr<'!rr<&ns8;ourrDus
+r;Zlu!<3#t!!*&u!;lfp!;lfm!;ulq!!3*"rVllus8;rks8;rqs8N'!s8;rps8;ourrDioq>gNp
+rVururW)iqr;cfrrr<9'!!*'!!!)cnr;c`pq>gKo!<E/u!;lfp!;ulr!!*&u!;ZZp!!`H'!<<'!
+!;ulq!;lfm!<3#t!!*&u!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN.Ns7u]oklK'jJ,~>
+!B:&Xj4sY7!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;QTo!!`H'!<<'!!;ulq!;lfm!<3#t!!*&u
+!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN/ps7u`ps8Duus8E#qs8;rrs8N''rr<'!rr<&ns8;ourrDus
+r;Zlu!<3#t!!*&u!;lfp!;lfm!;ulq!!3*"rVllus8;rks8;rqs8N'!s8;rps8;ourrDioq>gNp
+rVururW)iqr;cfrrr<9'!!*'!!!)cnr;c`pq>gKo!<E/u!;lfp!;ulr!!*&u!;ZZp!!`H'!<<'!
+!;ulq!;lfm!<3#t!!*&u!;lfq!;ZZn!!3*"r;Z]qqZ$Ko!WN.Ns7u]oirR%VJ,~>
+!BpJ^mG.^A!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;QTo!<2uu!<)ot
+!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp!<)rt
+!<)rt!<)ot!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu!<)ot!<)ot!<)rt!<<*!
+!<<'!!;ZWp!<)ot!;c]q!;ZZp!<)ot!<)ot!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot
+!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!.k1Gs8MBdeieN~>
+!BU8[l.l:=!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;QTo!<2uu!<)ot
+!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp!<)rt
+!<)rt!<)ot!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu!<)ot!<)ot!<)rt!<<*!
+!<<'!!;ZWp!<)ot!;c]q!;ZZp!<)ot!<)ot!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot
+!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!.k1Gs8M6`c8pI~>
+!B:&Xj4sY7!;6Bl!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!;?Em!;QTo!<2uu!<)ot
+!<)ot!<)rt!<<*!!<<'!!;ZWp!<)rt!<)ot!<)rt!;uls!<2uu!<)ot!<)ot!;c]q!;ZWp!<)rt
+!<)rt!<)ot!;QQo!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu!<)ot!<)ot!<)rt!<<*!
+!<<'!!;ZWp!<)ot!;c]q!;ZZp!<)ot!<)ot!<)ot!;lfr!<2uu!;ZZp!<<*!!<<'!!<2uu!<)ot
+!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis!<)rt!.k1Gs8M$Z_`*)~>
+!BpJ^mG.^A!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo
+!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;ZWp
+!;uis!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!<)ot!;uis!;$3j!;uis!;uis!<2uu!;lcr
+!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;lcr!;ZWp!;uis!<2uu!;lcr!;uis
+!;-9k!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!.k1Gs8MBd
+eieN~>
+!BU8[l.l:=!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo
+!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;ZWp
+!;uis!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!<)ot!;uis!;$3j!;uis!;uis!<2uu!;lcr
+!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;lcr!;ZWp!;uis!<2uu!;lcr!;uis
+!;-9k!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!.k1Gs8M6`
+c8pI~>
+!B:&Xj4sY7!;6?l!;ZWp!;lcr!;QQo!;c]q!;c]q!;lcr!;ZWp!<2uu!<2uu!;ZWp!;c]q!;QQo
+!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;ZWp
+!;uis!<2uu!;lcr!;uis!;$3j!;c]q!;c]q!;lcr!<)ot!;uis!;$3j!;uis!;uis!<2uu!;lcr
+!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q!;lcr!;lcr!;ZWp!;uis!<2uu!;lcr!;uis
+!;-9k!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;lcr!;lcr!<2uu!;lcr!<)ot!;uis!.k1Gs8M$Z
+_`*)~>
+!BpJ^mG.^A!;6?l!;ZZj!<)rp!;c]q!;c`k!;ZWp!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr
+!;HNh!;ulr!;$3j!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;QTn!;lcr!;6?l!;QTk!;c]q!;c]q
+!;?Em!;uis!;QTk!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q
+!;lcr!;lcr!;ZWp!;uis!<3#o!;uis!;-9k!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh
+!;ulr!.k1Ds8MBdeieN~>
+!BU8[l.l:=!;6?l!;ZZj!<)rp!;c]q!;c`k!;ZWp!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr
+!;HNh!;ulr!;$3j!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;QTn!;lcr!;6?l!;QTk!;c]q!;c]q
+!;?Em!;uis!;QTk!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q
+!;lcr!;lcr!;ZWp!;uis!<3#o!;uis!;-9k!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh
+!;ulr!.k1Ds8M6`c8pI~>
+!B:&Xj4sY7!;6?l!;ZZj!<)rp!;c]q!;c`k!;ZWp!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr
+!;HNh!;ulr!;$3j!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;QTn!;lcr!;6?l!;QTk!;c]q!;c]q
+!;?Em!;uis!;QTk!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;lcr!<2uu!<2uu!<2uu!;c]q
+!;lcr!;lcr!;ZWp!;uis!<3#o!;uis!;-9k!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;lcr!;HNh
+!;ulr!.k1Ds8M$Z_`*)~>
+!BpJ^mG.^A!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<o
+p&>!lqu6Wrp\t3no)J^ip&>!lq#:<oq>UEpqu6Wrrr2rurr2rurr2rup&G$lrVlitp&>!lq>UEp
+r;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*mq#:<oq>UEpqu6Wr
+rr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2rurr3'#s8N)srr<&q
+rr<&orr<&lrr<&rrr<&nrr<&is8N(Ms7lWnm/bd$J,~>
+!BU8[l.l:=!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<o
+p&>!lqu6Wrp\t3no)J^ip&>!lq#:<oq>UEpqu6Wrrr2rurr2rurr2rup&G$lrVlitp&>!lq>UEp
+r;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*mq#:<oq>UEpqu6Wr
+rr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2rurr3'#s8N)srr<&q
+rr<&orr<&lrr<&rrr<&nrr<&is8N(Ms7lWnklK'jJ,~>
+!B:&Xj4sY7!;6?l!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<o
+p&>!lqu6Wrp\t3no)J^ip&>!lq#:<oq>UEpqu6Wrrr2rurr2rurr2rup&G$lrVlitp&>!lq>UEp
+r;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*mq#:<oq>UEpqu6Wr
+rr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2rurr3'#s8N)srr<&q
+rr<&orr<&lrr<&rrr<&nrr<&is8N(Ms7lWnirR%VJ,~>
+!BpJ^mG%X@!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNq
+q#:<op&>!lqu6Wrp\t3npAY*mr;Q`spAY*mq#:<oq>UEpqu6Wrrr2rurr2rurr2ruq>UEpr;Q`s
+rr2rup&>!lq>UEpr;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*m
+q#:<oq>UEpqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2ru
+rr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<%Ms7u]om/bd$J,~>
+!BU8[l.c4<!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNq
+q#:<op&>!lqu6Wrp\t3npAY*mr;Q`spAY*mq#:<oq>UEpqu6Wrrr2rurr2rurr2ruq>UEpr;Q`s
+rr2rup&>!lq>UEpr;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*m
+q#:<oq>UEpqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2ru
+rr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<%Ms7u]oklK'jJ,~>
+!B:&Xj4jS6!;lcr!<)ot!;ZWp!;HKn!;uis!;c]q!;c]q!:p-i!<2uu!<3!#!<<'!r;Q`sqYpNq
+q#:<op&>!lqu6Wrp\t3npAY*mr;Q`spAY*mq#:<oq>UEpqu6Wrrr2rurr2rurr2ruq>UEpr;Q`s
+rr2rup&>!lq>UEpr;Q`sqYpNqqYpNqpAY*mr;Q`sq>UEpr;Q`sr;Q`sr;Q`srr2ruqu6WrpAY*m
+q#:<oq>UEpqu6Wrrr2rurr2rurr2ruqYpNqqu6Wrqu6Wrq>UEpr;Q`srr2rup&>!lo`"mkrr2ru
+rr3'#s8N)srr<&qrr<&orr<&lrr<&rrr<&nrr<&mrr<&srr<%Ms7u]oirR%VJ,~>
+!BpJ^mG%[@!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVultrVlitrVultrVultrVlitpAY*mq#:<oq#:<o
+rVlitrVlitrr2rurr2ruq>^HprVlitrVlitrVultr;Q`sq>UEprVultqYpNqrVlitrr2rurVult
+rVlitr;Q`sq>UEprVultr;Q`sr;Q`srVlitrVultpAY*mq#:<oq#:<orVlitrVlitrr2rurr2ru
+q>UEprVlitqYpNqrVlitrr2rur;Q`srVlitrVultr;Q`so`"mkrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N(Ms8MBdeieN~>
+!BU8[l.c7<!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVultrVlitrVultrVultrVlitpAY*mq#:<oq#:<o
+rVlitrVlitrr2rurr2ruq>^HprVlitrVlitrVultr;Q`sq>UEprVultqYpNqrVlitrr2rurVult
+rVlitr;Q`sq>UEprVultr;Q`sr;Q`srVlitrVultpAY*mq#:<oq#:<orVlitrVlitrr2rurr2ru
+q>UEprVlitqYpNqrVlitrr2rur;Q`srVlitrVultr;Q`so`"mkrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N(Ms8M6`c8pI~>
+!B:&Xj4jV6!<)ot!;uis!;QQo!<)rt!<2uu!<)rt!;c]q!<)ot!<2uu!<)rt!;ZWp!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVultrVlitrVultrVultrVlitpAY*mq#:<oq#:<o
+rVlitrVlitrr2rurr2ruq>^HprVlitrVlitrVultr;Q`sq>UEprVultqYpNqrVlitrr2rurVult
+rVlitr;Q`sq>UEprVultr;Q`sr;Q`srVlitrVultpAY*mq#:<oq#:<orVlitrVlitrr2rurr2ru
+q>UEprVlitqYpNqrVlitrr2rur;Q`srVlitrVultr;Q`so`"mkrr2rurr3'#s8N)ts8N)qrr<&t
+rr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)ts8N)trr<&rs8N(Ms8M$Z_`*)~>
+!BpJ^mFhO<!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;QTn!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p
+!;uln!;ulq!;c`o!;lcs!<;utp]('irr;fpqu?TprVuiss8W*!s8W*!qYpQrs8;rps8;rqs7u`n
+s8;ots8E#qs8;rqs8;rqs8E#ts8E#os8;ots8E#us8E#ts8E#ss8;p!rr<&ps7u`ps7u`ms8;rr
+s8E#us8N*!s8N)ps8;rms8;rss8E#ts8E#ss8;rqs7u`ks8E#us8N*!s8N*!s8;ots8E#qs8;rs
+s7u`ns7u`ns8;ros8;rprrE-"r;c]orr@WMrp9a;4b*~>
+!BU8[l.Q+8!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;QTn!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p
+!;uln!;ulq!;c`o!;lcs!<;utp]('irr;fpqu?TprVuiss8W*!s8W*!qYpQrs8;rps8;rqs7u`n
+s8;ots8E#qs8;rqs8;rqs8E#ts8E#os8;ots8E#us8E#ts8E#ss8;p!rr<&ps7u`ps7u`ms8;rr
+s8E#us8N*!s8N)ps8;rms8;rss8E#ts8E#ss8;rqs7u`ks8E#us8N*!s8N*!s8;ots8E#qs8;rs
+s7u`ns7u`ns8;ros8;rprrE-"r;c]orr@WMrojI/3e.~>
+!B:&Xj4XJ2!<)ro!;lfp!;lfp!!*&u!;lfp!;ulq!;QTn!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p
+!;uln!;ulq!;c`o!;lcs!<;utp]('irr;fpqu?TprVuiss8W*!s8W*!qYpQrs8;rps8;rqs7u`n
+s8;ots8E#qs8;rqs8;rqs8E#ts8E#os8;ots8E#us8E#ts8E#ss8;p!rr<&ps7u`ps7u`ms8;rr
+s8E#us8N*!s8N)ps8;rms8;rss8E#ts8E#ss8;rqs7u`ks8E#us8N*!s8N*!s8;ots8E#qs8;rs
+s7u`ns7u`ns8;ros8;rprrE-"r;c]orr@WMro4$s2h1~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!;?Hm!2KSo!:0[b!.k0$s+13Ls8MBdeieN~>
+!BU8[l(n@Z!;?Hm!2KSo!:0[b!.k0$s+13Ls8M6`c8pI~>
+!B:&Xj.u_T!;?Hm!2KSo!:0[b!.k0$s+13Ls8M$Z_`*)~>
+!BpJ^mFqU=!71]F!;?Hm!5&:1!;ulr!;-<k!:0[b!.k0$s+13Ls8MBdeieN~>
+!BU8[l.Z19!71]F!;?Hm!5&:1!;ulr!;-<k!:0[b!.k0$s+13Ls8M6`c8pI~>
+!B:&Xj4aP3!71]F!;?Hm!5&:1!;ulr!;-<k!:0[b!.k0$s+13Ls8M$Z_`*)~>
+!BpJ^mHsrH!;ulm!7CiH!3ZA$!;ulr!;-<k!.k0$s+134s8MBdeieN~>
+!BU8[l0\ND!;ulm!7CiH!3ZA$!;ulr!;-<k!.k0$s+134s8M6`c8pI~>
+!B:&Xj6cm>!;ulm!7CiH!3ZA$!;ulr!;-<k!.k0$s+134s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t
+!;uln!;HNl!<)rs!!*&t!;QTn!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm
+!.k0$s+13ps8MBdeieN~>
+!BU8[l0\ND!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t
+!;uln!;HNl!<)rs!!*&t!;QTn!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm
+!.k0$s+13ps8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rt!<<)u!!*&t!;lfp!<)rr!<<)u!<)rp!<3#o!<)rq!;ZZn!<)rs!!*&t
+!;uln!;HNl!<)rs!!*&t!;QTn!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm
+!.k0$s+13ps8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns82los7lZps7cTn
+s7lZjs7lZps7cTis8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s3:TCm/bd$
+J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns82los7lZps7cTn
+s7lZjs7lZps7cTis8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s3:TCklK'j
+J,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'!s7cTns7lZps7ZNns7lZps7lZns82los7lZps7cTn
+s7lZjs7lZps7cTis8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13$s3:TCirR%V
+J,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)qs8E#ss8E#us8E#ts8N)ps8;ots8;rts8N)t
+s8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)ts8N(Ms+13$s3:TCm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)qs8E#ss8E#us8E#ts8N)ps8;ots8;rts8N)t
+s8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)ts8N(Ms+13$s3:TCklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8Duus8E#ss8E#ts8;rts8N*!s8N)ts8N)t
+s8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)qs8E#ss8E#us8E#ts8N)ps8;ots8;rts8N)t
+s8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)ts8N(Ms+13$s3:TCirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)us8;rks8N)rs8N*!s8N)ts8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)s
+s8N*!s8N)rs8N*!s8;qKs+13$s2k<?m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)us8;rks8N)rs8N*!s8N)ts8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)s
+s8N*!s8N)rs8N*!s8;qKs+13$s2k<?klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'#rr<&rs8N)us8E#js8N)ts8N)ms8N)s
+s8N)rs8N*!s8N)ts8N)us8;rks8N)rs8N*!s8N)ts8N)ps7cTis8N)ts8N)os8E#ms8N)ss8N)s
+s8N*!s8N)rs8N*!s8;qKs+13$s2k<?irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)ts8)fls8N)rs8N*!s8N)ts8N)ps8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)s
+s8N)os7ZNms8)eIs+13$s31NBm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)ts8)fls8N)rs8N*!s8N)ts8N)ps8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)s
+s8N)os7ZNms8)eIs+13$s31NBklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ss8N'!s7ZNms8N)ps7lZns8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)ts8)fls8N)rs8N*!s8N)ts8N)ps8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)s
+s8N)os7ZNms8)eIs+13$s31NBirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82lns8N)rs8N*!s8N)ts8N)ps8N*!rriE&rr<'!p]19mrrDiorrDcmrrDus
+rrDiopAk-kquD<JJcC<$c2[e1!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82lns8N)rs8N*!s8N)ts8N)ps8N*!rriE&rr<'!p]19mrrDiorrDcmrrDus
+rrDiopAk-kquD<JJcC<$c2[e-!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ss8N'!s7ZNms8N)qs7cTms8N)ms8N)ss8N)r
+s8N*!s8N)ts8N)rs82lns8N)rs8N*!s8N)ts8N)ps8N*!rriE&rr<'!p]19mrrDiorrDcmrrDus
+rrDiopAk-kquD<JJcC<$c2[e'!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)qs8E#ss8E#us8N)ts8N)ps8N)ss8N'#rr<&ss8N)t
+s8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N(Ms+13$s3:TCm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)qs8E#ss8E#us8N)ts8N)ps8N)ss8N'#rr<&ss8N)t
+s8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N(Ms+13$s3:TCklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)us8E#ts8Duus8E#ms8N)qs8N)ss8N)ts8N)ts8N)s
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)qs8E#ss8E#us8N)ts8N)ps8N)ss8N'#rr<&ss8N)t
+s8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N(Ms+13$s3:TCirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZos7lZps8;rts8;rt
+s7lZjs7lZps8;rts8;rps82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s3:TCm/bd$
+J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZos7lZps8;rts8;rt
+s7lZjs7lZps8;rts8;rps82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s3:TCklK'j
+J,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZps7lZos7ZNms7lZps7lZos7lZps8;rts8;rt
+s7lZjs7lZps8;rts8;rps82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lYGs+13$s3:TCirR%V
+J,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82lqs7lZms8;rr
+s8;rts8;rts7u`hs8;rrs8;rts8;rps82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fq
+s7u_Hs+13$s31NBm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82lqs7lZms8;rr
+s8;rts8;rts7u`hs8;rrs8;rts8;rps82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fq
+s7u_Hs+13$s31NBklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8;rqs8N'!s8;rps8)frs7lZns82iss8E#ss82lqs7lZms8;rr
+s8;rts8;rts7u`hs8;rrs8;rts8;rps82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fq
+s7u_Hs+13$s31NBirR%VJ,~>
+!BpJ^mHsrH!:g*h!.k0$s+13$s+14Es8MBdeieN~>
+!BU8[l0\ND!:g*h!.k0$s+13$s+14Es8M6`c8pI~>
+!B:&Xj6cm>!:g*h!.k0$s+13$s+14Es8M$Z_`*)~>
+!BpJ^mHsrH!:g*h!.k0$s+13$s+14Es8MBdeieN~>
+!BU8[l0\ND!:g*h!.k0$s+13$s+14Es8M6`c8pI~>
+!B:&Xj6cm>!:g*h!.k0$s+13$s+14Es8M$Z_`*)~>
+!BpJ^mF)%4!.k0$s+13$s+14Gs8MBdeieN~>
+!BU8[l-fV0!.k0$s+13$s+14Gs8M6`c8pI~>
+!B:&Xj3mu*!.k0$s+13$s+14Gs8M$Z_`*)~>
+!BpJ^mF)%4!.k0$s+13$s+14Gs8MBdeieN~>
+!BU8[l-fV0!.k0$s+13$s+14Gs8M6`c8pI~>
+!B:&Xj3mu*!.k0$s+13$s+14Gs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEkn3!9O7\!/1CN!0dH_!.k0Ls8N(Ms5X.Ym/bd$J,~>
+!BU8[l-TJ/!9O7\!/1CN!0dH_!.k0Ls8N(Ms5X.YklK'jJ,~>
+!B:&Xj3[i)!9O7\!/1CN!0dH_!.k0Ls8N(Ms5X.YirR%VJ,~>
+!BpJ^mG%[>!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!5ed7
+!!3*"d/O(GkPkM^q>UEpjSo2[JcG`:!S0Da~>
+!BU8[l.c7:!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!5ed7
+!!3*"d/O(GkPkM^q>UEpjSo2[JcG`6!R<`V~>
+!B:&Xj4jV4!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!5ed7
+!!3*"d/O(GkPkM^q>UEpjSo2[JcG`0!Q-jH~>
+!BpJ^mF_F=!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!6"p;
+!<)rt!7:`G!9a@^!;ZWp!9F.[!.k1Lm/bd$J,~>
+!BU8[l.H"9!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!6"p;
+!<)rt!7:`G!9a@^!;ZWp!9F.[!.k1LklK'jJ,~>
+!B:&Xj4OA3!;HKn!9F.[!8d_U!65$=!9*qX!:Bdd!;?Em!65$=!;QQo!;ZWp!8@GQ!:0Xb!6"p;
+!<)rt!7:`G!9a@^!;ZWp!9F.[!.k1LirR%VJ,~>
+!BpJ^mFhL@!<3&orr<&[rr<%Mrr<&drr<&'rr<&prr<&Qrr<&$rr<&rrr<&Grr<&^rr<&prr<%M
+s5X.Ym/bd$J,~>
+!BU8[l.Q(<!<3&orr<&[rr<%Mrr<&drr<&'rr<&prr<&Qrr<&$rr<&rrr<&Grr<&^rr<&prr<%M
+s5X.YklK'jJ,~>
+!B:&Xj4XG6!<3&orr<&[rr<%Mrr<&drr<&'rr<&prr<&Qrr<&$rr<&rrr<&Grr<&^rr<&prr<%M
+s5X.YirR%VJ,~>
+!BpJ^mFhL@!<3&orr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;c`q
+!!`H'!<<'!!;ulq!;uls!!*&t!;lfq!;lfr!!*&t!<)rt!<)rt!;c]q!;ZZn!;lfm!;ulr!;ZZn
+!;uls!!*&t!;lfp!!3*"q>^Eorr;rtrVuisqZ$BlrVllus8;rns8N''rr<'!rr<&ss8;rps7u`p
+s8Duus8E#qs8E#os8;ourrDusr;c]or;Zlu!9sL`!;6Bj!<)rt!!`H'!<<'!!<3#u!!*&t!<)rt
+!<)rt!<)ro!;ulq!;?Hh!<)ou!<;utqu?Tpp&G!kqu?Zr!<;utrVuisrr;rtrVufrr;Z`r!<<#u
+qu?Tp!WN/ts8;r9s8MBdeieN~>
+!BU8[l.Q(<!<3&orr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;c`q
+!!`H'!<<'!!;ulq!;uls!!*&t!;lfq!;lfr!!*&t!<)rt!<)rt!;c]q!;ZZn!;lfm!;ulr!;ZZn
+!;uls!!*&t!;lfp!!3*"q>^Eorr;rtrVuisqZ$BlrVllus8;rns8N''rr<'!rr<&ss8;rps7u`p
+s8Duus8E#qs8E#os8;ourrDusr;c]or;Zlu!9sL`!;6Bj!<)rt!!`H'!<<'!!<3#u!!*&t!<)rt
+!<)rt!<)ro!;ulq!;?Hh!<)ou!<;utqu?Tpp&G!kqu?Zr!<;utrVuisrr;rtrVufrr;Z`r!<<#u
+qu?Tp!WN/ts8;r9s8M6`c8pI~>
+!B:&Xj4XG6!<3&orr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iqr;c]orW)cor;Zlu!;c`q
+!!`H'!<<'!!;ulq!;uls!!*&t!;lfq!;lfr!!*&t!<)rt!<)rt!;c]q!;ZZn!;lfm!;ulr!;ZZn
+!;uls!!*&t!;lfp!!3*"q>^Eorr;rtrVuisqZ$BlrVllus8;rns8N''rr<'!rr<&ss8;rps7u`p
+s8Duus8E#qs8E#os8;ourrDusr;c]or;Zlu!9sL`!;6Bj!<)rt!!`H'!<<'!!<3#u!!*&t!<)rt
+!<)rt!<)ro!;ulq!;?Hh!<)ou!<;utqu?Tpp&G!kqu?Zr!<;utrVuisrr;rtrVufrr;Z`r!<<#u
+qu?Tp!WN/ts8;r9s8M$Z_`*)~>
+!BpJ^mFqR?!<2uu!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp
+!;c]q!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!;uis!;c]q!;QQo!;ZZp
+!<)ot!;ZZp!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis
+!<)rt!9sL`!;?Em!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;6?l
+!;ZZp!<)ot!<)ot!<)ot!;-9k!;c`q!<)ot!<)ot!;uis!<)ot!<)ot!;lfr!<2uu!<)ot!<)rt
+!<)ot!<)ot!6,!;m/bd$J,~>
+!BU8[l.Z.;!<2uu!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp
+!;c]q!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!;uis!;c]q!;QQo!;ZZp
+!<)ot!;ZZp!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis
+!<)rt!9sL`!;?Em!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;6?l
+!;ZZp!<)ot!<)ot!<)ot!;-9k!;c`q!<)ot!<)ot!;uis!<)ot!<)ot!;lfr!<2uu!<)ot!<)rt
+!<)ot!<)ot!6,!;klK'jJ,~>
+!B:&Xj4aM5!<2uu!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!;ZWp
+!;c]q!<)rt!;ZZp!<<*!!<<'!!<2uu!<)ot!;uls!<)ot!;c]q!;c`q!<)ot!<)ot!;uis!;c]q
+!;c]q!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!;uis!;c]q!;QQo!;ZZp
+!<)ot!;ZZp!<<*!!<<'!!<2uu!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)rt!<)ot!<)ot!;uis
+!<)rt!9sL`!;?Em!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;6?l
+!;ZZp!<)ot!<)ot!<)ot!;-9k!;c`q!<)ot!<)ot!;uis!<)ot!<)ot!;lfr!<2uu!<)ot!<)rt
+!<)ot!<)ot!6,!;irR%VJ,~>
+!BpJ^mFqR?!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;QQu!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&u
+rr<&prr<&qrr<&orr<&lrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&`rr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&mrr<&prr<&srr<&urr<&rrr<&lrr<&q
+rr<&srr<&srr<&urr<&trr<&rrr<&srr<&orr<&srr<&urr<&rrr<&=s8MBdeieN~>
+!BU8[l.Z.;!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;QQu!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&u
+rr<&prr<&qrr<&orr<&lrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&`rr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&mrr<&prr<&srr<&urr<&rrr<&lrr<&q
+rr<&srr<&srr<&urr<&trr<&rrr<&srr<&orr<&srr<&urr<&rrr<&=s8M6`c8pI~>
+!B:&Xj4aM5!<2uu!;ZWp!;lcr!;lcr!<2uu!;lcr!<)ot!;lcr!<)ot!;$3j!;ZWp!;lcr!;lcr
+!;ZWp!<2uu!<2uu!;ZWp!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;6?l!;c]q!;?Em
+!;lcr!;lcr!<)ot!;uis!<)ot!;uis!;QQu!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&u
+rr<&prr<&qrr<&orr<&lrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&`rr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&mrr<&prr<&srr<&urr<&rrr<&lrr<&q
+rr<&srr<&srr<&urr<&trr<&rrr<&srr<&orr<&srr<&urr<&rrr<&=s8M$Z_`*)~>
+!BpJ^mG%X@!;uis!;c]q!;lcr!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:p-i!<2uu
+!<2uu!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!;6?r!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&urr<&us8)fmrr<&o
+rr<&lrr<&rrr<&ns7lZms8E#\rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&r
+rr<&qs7lZgrr<&prr<&srr<&us7lZfrr<&qrr<&srr<&srr<&urr<&ts7lZmrr<&ns8E#qs7lZ7
+s8MBdeieN~>
+!BU8[l.c4<!;uis!;c]q!;lcr!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:p-i!<2uu
+!<2uu!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!;6?r!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&urr<&us8)fmrr<&o
+rr<&lrr<&rrr<&ns7lZms8E#\rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&r
+rr<&qs7lZgrr<&prr<&srr<&us7lZfrr<&qrr<&srr<&srr<&urr<&ts7lZmrr<&ns8E#qs7lZ7
+s8M6`c8pI~>
+!B:&Xj4jS6!;uis!;c]q!;lcr!;lcr!<3#o!<)ot!;lcr!<)ot!;QTk!;ZWp!;lcr!:p-i!<2uu
+!<2uu!<3#q!;uis!;uis!;c]q!;c]q!;lcr!<2uu!;uis!;c]q!;c`m!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!;ulr!;6?r!<<'!s8N)qrr<&orr<&prr<&srr<&prr<&urr<&urr<&us8)fmrr<&o
+rr<&lrr<&rrr<&ns7lZms8E#\rr<&nrr<&rrr<&urr<&urr<&urr<&urr<&rrr<&urr<&srr<&r
+rr<&qs7lZgrr<&prr<&srr<&us7lZfrr<&qrr<&srr<&srr<&urr<&ts7lZmrr<&ns8E#qs7lZ7
+s8M$Z_`*)~>
+!BpJ^mG%[;!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i!<2uu
+!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`sq>^Hpp\tEtrrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u!!*#u!s&B$
+!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!:p0i!9jF_!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr
+!<2uu!;uis!;lcr!;c]q!:Tpf!;ZWp!;uis!<2uu!:Kje!;c]q!;uis!;lct!<3&srr<&lrr<&k
+s8N)trr<&6s8MBdeieN~>
+!BU8[l.c77!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i!<2uu
+!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`sq>^Hpp\tEtrrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u!!*#u!s&B$
+!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!:p0i!9jF_!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr
+!<2uu!;uis!;lcr!;c]q!:Tpf!;ZWp!;uis!<2uu!:Kje!;c]q!;uis!;lct!<3&srr<&lrr<&k
+s8N)trr<&6s8M6`c8pI~>
+!B:&Xj4jV1!;c]q!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i!<2uu
+!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNqpAY*m
+qu6Wrqu6WrrVlitr;Q`sq>^Hpp\tEtrrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u!!*#u!s&B$
+!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!:p0i!9jF_!;HKn!;lcr!<2uu!<2uu!<2uu!<2uu!;lcr
+!<2uu!;uis!;lcr!;c]q!:Tpf!;ZWp!;uis!<2uu!:Kje!;c]q!;uis!;lct!<3&srr<&lrr<&k
+s8N)trr<&6s8M$Z_`*)~>
+!BpJ^mG.^A!;c]q!;lcr!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq#:NurrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u
+!!*#u!s&B$!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!;?Em!;uis!9jF_!;lcu!<<'!qu6Wrrr2ru
+rr2rurr2rurr2ruqu6Wrrr2rur;Q`squ6WrqYpNqn,E@fq>UEpr;Q`srr2rumf*7eqYpNqr;Q`s
+qu6]trrDus!!)]l!!)fo!!)rs!!*#u!!'e6rp9a;4b*~>
+!BU8[l.l:=!;c]q!;lcr!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq#:NurrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u
+!!*#u!s&B$!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!;?Em!;uis!9jF_!;lcu!<<'!qu6Wrrr2ru
+rr2rurr2rurr2ruqu6Wrrr2rur;Q`squ6WrqYpNqn,E@fq>UEpr;Q`srr2rumf*7eqYpNqr;Q`s
+qu6]trrDus!!)]l!!)fo!!)rs!!*#u!!'e6rojI/3e.~>
+!B:&Xj4sY7!;c]q!;lcr!;lcr!;lcr!<2uu!;?Em!;lcr!<)ot!;ZWp!;uis!;ZWp!;lcr!:p-i
+!<2uu!<3!#!<<'!r;Q`sr;Q`sr;Q`sqYpNqqYpNqqu6Wrrr2rur;Q`sqYpNqqu6Wrr;Q`sqYpNq
+pAY*mqu6Wrqu6WrrVlitr;Q`srVlitr;Q`sq#:NurrE'!rrDoq!!)fo!!)ip!!)rs!!)ip!!*#u
+!!*#u!s&B$!;uis!;c]q!;QQo!;6?l!;lcr!;HKn!;?Em!;uis!9jF_!;lcu!<<'!qu6Wrrr2ru
+rr2rurr2rurr2ruqu6Wrrr2rur;Q`squ6WrqYpNqn,E@fq>UEpr;Q`srr2rumf*7eqYpNqr;Q`s
+qu6]trrDus!!)]l!!)fo!!)rs!!*#u!!'e6ro4$s2h1~>
+!BpJ^mG.^A!;c]q!;lcr!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q
+!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVultqYpNqqu6Wr
+rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitp\t3nrr2ruq>UEpq#:<orVlit
+rr2rur;Q`sq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)t
+s8N)trr<&rs8N)gs8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&t
+rr<&urr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)lrr<&qrr<&srr<&qrr<&qrr<&ts8N)s
+rr<&os8N)trr<&trr<&ts8N)qs8N)Fs8MBdeieN~>
+!BU8[l.l:=!;c]q!;lcr!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q
+!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVultqYpNqqu6Wr
+rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitp\t3nrr2ruq>UEpq#:<orVlit
+rr2rur;Q`sq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)t
+s8N)trr<&rs8N)gs8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&t
+rr<&urr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)lrr<&qrr<&srr<&qrr<&qrr<&ts8N)s
+rr<&os8N)trr<&trr<&ts8N)qs8N)Fs8M6`c8pI~>
+!B:&Xj4sY7!;c]q!;lcr!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot!;uis!;ZWp!<)rt!;ZWp!;c]q
+!<)rt!;ZWp!<2uu!<3!#!<<'!rVultr;Q`sr;Q`sqYpNqqZ$QqrVlitrVlitrVultqYpNqqu6Wr
+rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`srVultrVlitp\t3nrr2ruq>UEpq#:<orVlit
+rr2rur;Q`sq>UEprr2rurr3'#s8N)ts8N)qrr<&trr<&trr<&lrr<&qrr<&ts8N)trr<&ts8N)t
+s8N)trr<&rs8N)gs8N)trr<&trr<&trr<&trr<&urr<&urr<&us8N)trr<&trr<&ts8N)rrr<&t
+rr<&urr<&ts8N)mrr<&trr<&urr<&srr<&trr<&ts8N)lrr<&qrr<&srr<&qrr<&qrr<&ts8N)s
+rr<&os8N)trr<&trr<&ts8N)qs8N)Fs8M$Z_`*)~>
+!BpJ^mG7g@!<3#s!<<)q!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#urr;fpr;Z]qq#C<n
+s8W*!s8W*!s8W#t!<<#us8W&urr;rtrr;fprVllus8;rps8;p!rr<&us7u`os8;ots8E#qs8;rr
+s7u`ns8;rqs8E#ts8E#trrE-"r;cQk!!*#u!!)rsq>gBlr;cisrW)rtrW)iqrW)uurrE*!rrE*!
+r;ZitrW)iqr;cisq>gHnq>gHnr;c]or;c`p!<E/u!;c`q!:Kmc!;lfp!<)rs!<<*!!<<*!!<<'"
+!<;utqu?Tp!ri6#qu?Tpr;Z]qoDeahrr;rtrr;rtrVufrpAashrr;rtrr;rtqu6Wrq>^Bnr;ZTn
+r;Qcts8;rps8;rms8N)Fs8MBdeieN~>
+!BU8[l.uC<!<3#s!<<)q!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#urr;fpr;Z]qq#C<n
+s8W*!s8W*!s8W#t!<<#us8W&urr;rtrr;fprVllus8;rps8;p!rr<&us7u`os8;ots8E#qs8;rr
+s7u`ns8;rqs8E#ts8E#trrE-"r;cQk!!*#u!!)rsq>gBlr;cisrW)rtrW)iqrW)uurrE*!rrE*!
+r;ZitrW)iqr;cisq>gHnq>gHnr;c]or;c`p!<E/u!;c`q!:Kmc!;lfp!<)rs!<<*!!<<*!!<<'"
+!<;utqu?Tp!ri6#qu?Tpr;Z]qoDeahrr;rtrr;rtrVufrpAashrr;rtrr;rtqu6Wrq>^Bnr;ZTn
+r;Qcts8;rps8;rms8N)Fs8M6`c8pI~>
+!B:&Xj5'b6!<3#s!<<)q!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#urr;fpr;Z]qq#C<n
+s8W*!s8W*!s8W#t!<<#us8W&urr;rtrr;fprVllus8;rps8;p!rr<&us7u`os8;ots8E#qs8;rr
+s7u`ns8;rqs8E#ts8E#trrE-"r;cQk!!*#u!!)rsq>gBlr;cisrW)rtrW)iqrW)uurrE*!rrE*!
+r;ZitrW)iqr;cisq>gHnq>gHnr;c]or;c`p!<E/u!;c`q!:Kmc!;lfp!<)rs!<<*!!<<*!!<<'"
+!<;utqu?Tp!ri6#qu?Tpr;Z]qoDeahrr;rtrr;rtrVufrpAashrr;rtrr;rtqu6Wrq>^Bnr;ZTn
+r;Qcts8;rps8;rms8N)Fs8M$Z_`*)~>
+!BpJ^mD&Z$!/gdV!.k0$s4dPR!.k1*s8N)Es8MBdeieN~>
+!BU8[l+d5u!/gdV!.k0$s4dPR!.k1*s8N)Es8M6`c8pI~>
+!B:&Xj1kTo!/gdV!.k0$s4dPR!.k1*s8N)Es8M$Z_`*)~>
+!BpJ^mD&Z$!/gdV!.k0$s4dPR!.k1*s8N)Es8MBdeieN~>
+!BU8[l+d5u!/gdV!.k0$s4dPR!.k1*s8N)Es8M6`c8pI~>
+!B:&Xj1kTo!/gdV!.k0$s4dPR!.k1*s8N)Es8M$Z_`*)~>
+!BpJ^mD/`%!/^^U!.k0$s4dPR!.k1+s8N)Ds8MBdeieN~>
+!BU8[l+m<!!/^^U!.k0$s4dPR!.k1+s8N)Ds8M6`c8pI~>
+!B:&Xj1tZp!/^^U!.k0$s4dPR!.k1+s8N)Ds8M$Z_`*)~>
+!BpJ^mD],'!/^aS!.k0$s5*eS!.k0Ls8MBdeieN~>
+!BU8[l,E]#!/^aS!.k0$s5*eS!.k0Ls8M6`c8pI~>
+!B:&Xj2M&r!/^aS!.k0$s5*eS!.k0Ls8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mFM=;!.k1=s8N)$s8;qKs6Tdc!:Kme!6>->!7CiF!;c`o!/:IPm/bd$J,~>
+!BU8[l.5n7!.k1=s8N)$s8;qKs6Tdc!:Kme!6>->!7CiF!;c`o!/:IPklK'jJ,~>
+!B:&Xj4=81!.k1=s8N)$s8;qKs6Tdc!:Kme!6>->!7CiF!;c`o!/:IPirR%VJ,~>
+!BpJ^mFD4:!:^!g!7h)L!8%5N!8.;O!;?Em!4r11!6tND!:0Xb!8IPL!;c]q!9sL`!;?Em!;ZWp
+!65$=!7(TE!;HKn!/:IPm/bd$J,~>
+!BU8[l.,e6!:^!g!7h)L!8%5N!8.;O!;?Em!4r11!6tND!:0Xb!8IPL!;c]q!9sL`!;?Em!;ZWp
+!65$=!7(TE!;HKn!/:IPklK'jJ,~>
+!B:&Xj44/0!:^!g!7h)L!8%5N!8.;O!;?Em!4r11!6tND!:0Xb!8IPL!;c]q!9sL`!;?Em!;ZWp
+!65$=!7(TE!;HKn!/:IPirR%VJ,~>
+!BpJ^mFD4:!:^!g!7h)L!8%5N!8.;O!;?Em!5&72!6kHC!:0Xb!8@GQ!;uis!;c]q!9sL`!;?Em
+!;ZWp!65$=!7(TE!;HKn!/:IPm/bd$J,~>
+!BU8[l.,e6!:^!g!7h)L!8%5N!8.;O!;?Em!5&72!6kHC!:0Xb!8@GQ!;uis!;c]q!9sL`!;?Em
+!;ZWp!65$=!7(TE!;HKn!/:IPklK'jJ,~>
+!B:&Xj44/0!:^!g!7h)L!8%5N!8.;O!;?Em!5&72!6kHC!:0Xb!8@GQ!;uis!;c]q!9sL`!;?Em
+!;ZWp!65$=!7(TE!;HKn!/:IPirR%VJ,~>
+!BpJ^mFD4:!:^!g!36&!!8.;O!;?Em!5&72!6kHC!5ng:!;uis!9*qX!;?Em!;ZWp!65$=!7(TE
+!;HKn!/:IPm/bd$J,~>
+!BU8[l.,e6!:^!g!36&!!8.;O!;?Em!5&72!6kHC!5ng:!;uis!9*qX!;?Em!;ZWp!65$=!7(TE
+!;HKn!/:IPklK'jJ,~>
+!B:&Xj44/0!:^!g!36&!!8.;O!;?Em!5&72!6kHC!5ng:!;uis!9*qX!;?Em!;ZWp!65$=!7(TE
+!;HKn!/:IPirR%VJ,~>
+!BpJ^mFqU=!!3*"r;Z]qqu?Kmr;Z]qr;Z`r!<<#urr;uu#6+Z's8N'!r;Z`rqu?Zr!<;utqu?Tp
+r;Zcs!<;utr;ZTnp](0lr;Zcs!<;utqu?Tp!WN/ps7u`ps8Duus8E#qs8;ros8;ourrDusr;cNj
+r;c`pq>g9ir;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW)0^!!)rs!!)rs
+rW)iqrr<'!r;c`pr;Zlu!;QTj!<)ou!<;utqu?Tpp](3m!<<#uqu?Tpr;Zcs!<;utr;Qfus8W#t
+mf3:e!<;utrVultrVultqYpNqp\t3nq>^Bn!WN0!s8N'!s8;rps8;ros8;ourrDusr;aP2rp9a;
+4b*~>
+!BU8[l.Z19!!3*"r;Z]qqu?Kmr;Z]qr;Z`r!<<#urr;uu#6+Z's8N'!r;Z`rqu?Zr!<;utqu?Tp
+r;Zcs!<;utr;ZTnp](0lr;Zcs!<;utqu?Tp!WN/ps7u`ps8Duus8E#qs8;ros8;ourrDusr;cNj
+r;c`pq>g9ir;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW)0^!!)rs!!)rs
+rW)iqrr<'!r;c`pr;Zlu!;QTj!<)ou!<;utqu?Tpp](3m!<<#uqu?Tpr;Zcs!<;utr;Qfus8W#t
+mf3:e!<;utrVultrVultqYpNqp\t3nq>^Bn!WN0!s8N'!s8;rps8;ros8;ourrDusr;aP2rojI/
+3e.~>
+!B:&Xj4aP3!!3*"r;Z]qqu?Kmr;Z]qr;Z`r!<<#urr;uu#6+Z's8N'!r;Z`rqu?Zr!<;utqu?Tp
+r;Zcs!<;utr;ZTnp](0lr;Zcs!<;utqu?Tp!WN/ps7u`ps8Duus8E#qs8;ros8;ourrDusr;cNj
+r;c`pq>g9ir;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW)0^!!)rs!!)rs
+rW)iqrr<'!r;c`pr;Zlu!;QTj!<)ou!<;utqu?Tpp](3m!<<#uqu?Tpr;Zcs!<;utr;Qfus8W#t
+mf3:e!<;utrVultrVultqYpNqp\t3nq>^Bn!WN0!s8N'!s8;rps8;ros8;ourrDusr;aP2ro4$s
+2h1~>
+!BpJ^mG%X@!<)rt!<)ot!<)ot!;c]q!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;lcr!;c`q
+!<)ot!<)ot!<)ot!;uls!<)ot!;lcr!;-9k!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu
+!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@a!<<'!p\t3nqZ$QqrVlitrVlitrVultpAY*m
+q>^HprVlitrVlitrVlitpAb-mrr2rurVlitrVlitr;ZcsrVlitrVlitrr2ruli6tbrVlitrVlit
+r;Q`sqYpNqp\t3nqYpNqrVultrVultrVlitrVlitrVlitr;Q`srVultrVlitrVlit^An3"!S0Da~>
+!BU8[l.c4<!<)rt!<)ot!<)ot!;c]q!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;lcr!;c`q
+!<)ot!<)ot!<)ot!;uls!<)ot!;lcr!;-9k!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu
+!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@a!<<'!p\t3nqZ$QqrVlitrVlitrVultpAY*m
+q>^HprVlitrVlitrVlitpAb-mrr2rurVlitrVlitr;ZcsrVlitrVlitrr2ruli6tbrVlitrVlit
+r;Q`sqYpNqp\t3nqYpNqrVultrVultrVlitrVlitrVlitr;Q`srVultrVlitrVlit^An2s!R<`V~>
+!B:&Xj4jS6!<)rt!<)ot!<)ot!;c]q!;ZWp!<)ot!;lfr!<2uu!<3#u!<<*!!<<'!!;lcr!;c`q
+!<)ot!<)ot!<)ot!;uls!<)ot!;lcr!;-9k!<)ot!;uls!<)ot!<)ot!<)rt!;?Em!;QTo!<2uu
+!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu
+!<)ot!;c]q!;QTo!<2uu!;c]q!;c]q!<)ot!9a@a!<<'!p\t3nqZ$QqrVlitrVlitrVultpAY*m
+q>^HprVlitrVlitrVlitpAb-mrr2rurVlitrVlitr;ZcsrVlitrVlitrr2ruli6tbrVlitrVlit
+r;Q`sqYpNqp\t3nqYpNqrVultrVultrVlitrVlitrVlitr;Q`srVultrVlitrVlit^An2m!Q-jH~>
+!BpJ^mG.^A!;lcr!<2uu!;lcr!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis
+!;QQo!;uis!;uis!;lcr!:Tpf!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;$3j!<)ot!;lcr!<2uu
+!;lcr!;ZWp!;lcr!;lcr!:Tpf!;QQo!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5YA[
+p\t3nqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ruqu6Wrp\t3noD\djr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrr<&prr<&trr<&rrr<&urr<&r
+rr<&6s8MBdeieN~>
+!BU8[l.l:=!;lcr!<2uu!;lcr!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis
+!;QQo!;uis!;uis!;lcr!:Tpf!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;$3j!<)ot!;lcr!<2uu
+!;lcr!;ZWp!;lcr!;lcr!:Tpf!;QQo!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5YA[
+p\t3nqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ruqu6Wrp\t3noD\djr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrr<&prr<&trr<&rrr<&urr<&r
+rr<&6s8M6`c8pI~>
+!B:&Xj4sY7!;lcr!<2uu!;lcr!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis
+!;QQo!;uis!;uis!;lcr!:Tpf!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;$3j!<)ot!;lcr!<2uu
+!;lcr!;ZWp!;lcr!;lcr!:Tpf!;QQo!<2uu!<2uu!;ZWp!;c]q!;QQo!;6?l!;ZWs!<<'!k5YA[
+p\t3nqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ruqu6Wrp\t3noD\djr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrr<&prr<&trr<&rrr<&urr<&r
+rr<&6s8M$Z_`*)~>
+!BpJ^mG.^A!;lcr!<3#o!;lcr!;c`k!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<)rp!;uis
+!;uis!;lcr!;-<g!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;QTk!<)ot!;HNh!;ZWp!;lcr!;lcr
+!;-<g!;QQo!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O4_!<<'!p\t3nqYpNqr;Q`srr2ru
+qu6WrpAY*mq>UEpr;Q`srr;cop\t3nq#C3kr;Q`sr;Q`srVuisl2L_`r;Q`srVlitr;Q`sqYpNq
+p\t3nq>^EoqYpNqqu6Wrrr;iqrVlitp]($h^]4<#!S0Da~>
+!BU8[l.l:=!;lcr!<3#o!;lcr!;c`k!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<)rp!;uis
+!;uis!;lcr!;-<g!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;QTk!<)ot!;HNh!;ZWp!;lcr!;lcr
+!;-<g!;QQo!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O4_!<<'!p\t3nqYpNqr;Q`srr2ru
+qu6WrpAY*mq>UEpr;Q`srr;cop\t3nq#C3kr;Q`sr;Q`srVuisl2L_`r;Q`srVlitr;Q`sqYpNq
+p\t3nq>^EoqYpNqqu6Wrrr;iqrVlitp]($h^]4;t!R<`V~>
+!B:&Xj4sY7!;lcr!<3#o!;lcr!;c`k!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<)rp!;uis
+!;uis!;lcr!;-<g!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;QTk!<)ot!;HNh!;ZWp!;lcr!;lcr
+!;-<g!;QQo!<2uu!<2uu!<3#q!;c]q!;QQo!;6?l!;QTo!9O4_!<<'!p\t3nqYpNqr;Q`srr2ru
+qu6WrpAY*mq>UEpr;Q`srr;cop\t3nq#C3kr;Q`sr;Q`srVuisl2L_`r;Q`srVlitr;Q`sqYpNq
+p\t3nq>^EoqYpNqqu6Wrrr;iqrVlitp]($h^]4;n!Q-jH~>
+!BpJ^mG.^A!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\
+o`"mkqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2runG`Igq>UEpr;Q`sr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&ms8N)srr<&rrrW9$rrDus!!)ut!!)cn!!'P/rp9a;
+4b*~>
+!BU8[l.l:=!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\
+o`"mkqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2runG`Igq>UEpr;Q`sr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&ms8N)srr<&rrrW9$rrDus!!)ut!!)cn!!'P/rojI/
+3e.~>
+!B:&Xj4sY7!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq#C?ojo5;\
+o`"mkqYpNqr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2runG`Igq>UEpr;Q`sr;Q`sr;Q`srVls"
+s8N)arr<&srr<&trr<&srr<&qrr<&nrr<&ms8N)srr<&rrrW9$rrDus!!)ut!!)cn!!'P/ro4$s
+2h1~>
+!BpJ^mG.^A!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]
+rr<&krr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&urr<&grr<&prr<&srr<&srr<&srr<&t
+rr<&urr<&brr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrrW9$rrDus!!)ut!!)cn
+!!'P/rp9a;4b*~>
+!BU8[l.l:=!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]
+rr<&krr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&urr<&grr<&prr<&srr<&srr<&srr<&t
+rr<&urr<&brr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrrW9$rrDus!!)ut!!)cn
+!!'P/rojI/3e.~>
+!B:&Xj4sY7!;lcr!<2uu!;-9k!;c]q!;6?l!;ZWp!<2uu!<2uu!;lcr!;c]q!;uis!<2uu!;uis
+!;uis!;uis!;lcr!;6?l!;uis!;uis!;uis!<2uu!;lcr!;?Em!;QQo!;ZWp!;uis!<)ot!;HKn
+!:p-i!;lcr!;lcr!;6?l!;uis!;QQo!<2uu!<3!#!<<'!r;Q`sqYpNqq#:<op&>!lq>UNss8N)]
+rr<&krr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&urr<&grr<&prr<&srr<&srr<&srr<&t
+rr<&urr<&brr<&srr<&trr<&srr<&qrr<&nrr<&qrr<&srr<&trr<&rrrW9$rrDus!!)ut!!)cn
+!!'P/ro4$s2h1~>
+!BpJ^mG%X@!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q
+!;uis!<2uu!<)rt!;uis!;uis!;lcr!<)ot!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;?Em!<)ot
+!<)ot!;ZWp!<)rt!;uis!<)rt!<)ot!<)rt!;QQo!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igo`"mkqYpNqr;Q`srVlitrVult
+pAY*mrVlitrr2rur;Q`srVlitrVultp\t3nq>UEprVultr;Q`sr;Q`srVlitrVlitq>^HppAY*m
+r;Q`srVlitrVultqYpNqp\t3nqZ$QqrVlitrVultrVlitrr2rurVultr;Q`srVultrVlitrVult
+^]4<#!S0Da~>
+!BU8[l.c4<!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q
+!;uis!<2uu!<)rt!;uis!;uis!;lcr!<)ot!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;?Em!<)ot
+!<)ot!;ZWp!<)rt!;uis!<)rt!<)ot!<)rt!;QQo!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igo`"mkqYpNqr;Q`srVlitrVult
+pAY*mrVlitrr2rur;Q`srVlitrVultp\t3nq>UEprVultr;Q`sr;Q`srVlitrVlitq>^HppAY*m
+r;Q`srVlitrVultqYpNqp\t3nqZ$QqrVlitrVultrVlitrr2rurVultr;Q`srVultrVlitrVult
+^]4;t!R<`V~>
+!B:&Xj4jS6!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;uis!;ZWp!<2uu!<2uu!;lcr!;c]q
+!;uis!<2uu!<)rt!;uis!;uis!;lcr!<)ot!;c]q!<)rt!;uis!;uis!<)ot!<)rt!;?Em!<)ot
+!<)ot!;ZWp!<)rt!;uis!<)rt!<)ot!<)rt!;QQo!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#
+!<<'!rVultqYpNqrVlitrVlitp&>!lqYpNqrVlitqZ$QqnG`Igo`"mkqYpNqr;Q`srVlitrVult
+pAY*mrVlitrr2rur;Q`srVlitrVultp\t3nq>UEprVultr;Q`sr;Q`srVlitrVlitq>^HppAY*m
+r;Q`srVlitrVultqYpNqp\t3nqZ$QqrVlitrVultrVlitrr2rurVultr;Q`srVultrVlitrVult
+^]4;n!Q-jH~>
+!BpJ^mFqU=!!<0#!<)rr!;QTm!;ulq!;uln!<3#t!<<*!!<<*!!<<)q!<3#t!<3#t!<3#s!!*&u
+!<<)u!<3#t!;lfp!;QTm!!*&u!<<)u!<3#t!<)rr!!<0#!;?Hk!<3#p!;ulq!!*&u!<)rr!;c`o
+!;6Bj!;lfm!;QTm!!*&u!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr
+!:g*f!;ZZk!<3#t!<3#t!<)rr!!<0#!;?Hk!<3#t!<3#t!<)rr!;HNi!;ulq!!*&u!<<)u!<3#t
+!<<*!!<3#s!;lfr!;HNm!<3#t!<)rr!!<0#!<3#p!<)ro!<)ou!<;utr;Qcts8;rqs8;ots8E#s
+s8;ros8;r2s8MBdeieN~>
+!BU8[l.Z19!!<0#!<)rr!;QTm!;ulq!;uln!<3#t!<<*!!<<*!!<<)q!<3#t!<3#t!<3#s!!*&u
+!<<)u!<3#t!;lfp!;QTm!!*&u!<<)u!<3#t!<)rr!!<0#!;?Hk!<3#p!;ulq!!*&u!<)rr!;c`o
+!;6Bj!;lfm!;QTm!!*&u!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr
+!:g*f!;ZZk!<3#t!<3#t!<)rr!!<0#!;?Hk!<3#t!<3#t!<)rr!;HNi!;ulq!!*&u!<<)u!<3#t
+!<<*!!<3#s!;lfr!;HNm!<3#t!<)rr!!<0#!<3#p!<)ro!<)ou!<;utr;Qcts8;rqs8;ots8E#s
+s8;ros8;r2s8M6`c8pI~>
+!B:&Xj4aP3!!<0#!<)rr!;QTm!;ulq!;uln!<3#t!<<*!!<<*!!<<)q!<3#t!<3#t!<3#s!!*&u
+!<<)u!<3#t!;lfp!;QTm!!*&u!<<)u!<3#t!<)rr!!<0#!;?Hk!<3#p!;ulq!!*&u!<)rr!;c`o
+!;6Bj!;lfm!;QTm!!*&u!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr
+!:g*f!;ZZk!<3#t!<3#t!<)rr!!<0#!;?Hk!<3#t!<3#t!<)rr!;HNi!;ulq!!*&u!<<)u!<3#t
+!<<*!!<3#s!;lfr!;HNm!<3#t!<)rr!!<0#!<3#p!<)ro!<)ou!<;utr;Qcts8;rqs8;ots8E#s
+s8;ros8;r2s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s7H?k!5AI5!1<fcm/bd$J,~>
+!BU8[l%/kcs+13$s7H?k!5AI5!1<fcklK'jJ,~>
+!B:&Xj+75]s+13$s7H?k!5AI5!1<fcirR%VJ,~>
+!BpJ^m=G:gs+13$s7H?k!5AI5!1<fcm/bd$J,~>
+!BU8[l%/kcs+13$s7H?k!5AI5!1<fcklK'jJ,~>
+!B:&Xj+75]s+13$s7H?k!5AI5!1<fcirR%VJ,~>
+!BpJ^m=G:gs+13$s7QEl!58C4!1<fcm/bd$J,~>
+!BU8[l%/kcs+13$s7QEl!58C4!1<fcklK'jJ,~>
+!B:&Xj+75]s+13$s7QEl!58C4!1<fcirR%VJ,~>
+!BpJ^m=G:gs+13$s02P%!1Nrem/bd$J,~>
+!BU8[l%/kcs+13$s02P%!1NreklK'jJ,~>
+!B:&Xj+75]s+13$s02P%!1NreirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD/c%!58F4!:9aa!8IPP!6P9>!.k0$s+13ps8MBdeieN~>
+!BU8[l+m?!!58F4!:9aa!8IPP!6P9>!.k0$s+13ps8M6`c8pI~>
+!B:&Xj1t]p!58F4!:9aa!8IPP!6P9>!.k0$s+13ps8M$Z_`*)~>
+!BpJ^mD&Z$!5/=3!9sL`!8RSS!65$=!6tND!:0Xb!.k0$s-<W`m/bd$J,~>
+!BU8[l+d5u!5/=3!9sL`!8RSS!65$=!6tND!:0Xb!.k0$s-<W`klK'jJ,~>
+!B:&Xj1kTo!5/=3!9sL`!8RSS!65$=!6tND!:0Xb!.k0$s-<W`irR%VJ,~>
+!BpJ^mD&Z$!5/=3!9sL`!8[YT!65$=!6kHC!:0Xb!.k0$s-<W`m/bd$J,~>
+!BU8[l+d5u!5/=3!9sL`!8[YT!65$=!6kHC!:0Xb!.k0$s-<W`klK'jJ,~>
+!B:&Xj1kTo!5/=3!9sL`!8[YT!65$=!6kHC!:0Xb!.k0$s-<W`irR%VJ,~>
+!BpJ^mD&Z$!5/=3!9sL`!8[YT!65$=!6kHC!.k0$s+14Ls8MBdeieN~>
+!BU8[l+d5u!5/=3!9sL`!8[YT!65$=!6kHC!.k0$s+14Ls8M6`c8pI~>
+!B:&Xj1kTo!5/=3!9sL`!8[YT!65$=!6kHC!.k0$s+14Ls8M$Z_`*)~>
+!BpJ^mFqU=!;uls!!*&t!;lfp!!3*"q>^Eo!<<#uqu?Tpr;Z`rrr;rtq#C9mqZ$Ko!WN/urrE-"
+r;c`pr;cWm!!)ipr;ccqrr<'!r;cTlq>gHnr;ccqrVururW)rtrr<9'!!*'!!!)cnr;c`pq>g9i
+r;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW%NLJcDMFrp9a;4b*~>
+!BU8[l.Z19!;uls!!*&t!;lfp!!3*"q>^Eo!<<#uqu?Tpr;Z`rrr;rtq#C9mqZ$Ko!WN/urrE-"
+r;c`pr;cWm!!)ipr;ccqrr<'!r;cTlq>gHnr;ccqrVururW)rtrr<9'!!*'!!!)cnr;c`pq>g9i
+r;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW%NLJcDMFrojI/3e.~>
+!B:&Xj4aP3!;uls!!*&t!;lfp!!3*"q>^Eo!<<#uqu?Tpr;Z`rrr;rtq#C9mqZ$Ko!WN/urrE-"
+r;c`pr;cWm!!)ipr;ccqrr<'!r;cTlq>gHnr;ccqrVururW)rtrr<9'!!*'!!!)cnr;c`pq>g9i
+r;cWmrr<9'!!*'!!!)rsr;c`pq>gNprVururW)iqrW)iqrW)uurW%NLJcDMFro4$s2h1~>
+!BpJ^mG%X@!<)ot!;uls!<)ot!<)ot!<)rt!;HNn!<2uu!<)ot!<)ot!;uis!;uis!;QQo!<)ot
+!;uis!<)rt!<)rt!<)ot!<)ot!<)ot!;ZWp!;c]q!<)ot!;uls!<)ot!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q
+!;QTo!<2uu!;c]q!;c]q!<)ot!.k0$s.]Pmm/bd$J,~>
+!BU8[l.c4<!<)ot!;uls!<)ot!<)ot!<)rt!;HNn!<2uu!<)ot!<)ot!;uis!;uis!;QQo!<)ot
+!;uis!<)rt!<)rt!<)ot!<)ot!<)ot!;ZWp!;c]q!<)ot!;uls!<)ot!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q
+!;QTo!<2uu!;c]q!;c]q!<)ot!.k0$s.]PmklK'jJ,~>
+!B:&Xj4jS6!<)ot!;uls!<)ot!<)ot!<)rt!;HNn!<2uu!<)ot!<)ot!;uis!;uis!;QQo!<)ot
+!;uis!<)rt!<)rt!<)ot!<)ot!<)ot!;ZWp!;c]q!<)ot!;uls!<)ot!;?Em!;ZWp!<)ot!;lfr
+!<2uu!<3#u!<<*!!<<'!!;ZWp!<)ot!;c]q!;-9k!<)ot!;QTo!<<*!!<<'!!<2uu!<)ot!;c]q
+!;QTo!<2uu!;c]q!;c]q!<)ot!.k0$s.]PmirR%VJ,~>
+!BpJ^mFM:;!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)prr<&rrr<&urr<&r
+rr<&trr<&srr<&urr<&rrr<&qrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&u
+rr<&urr<&qrr<&rrr<&rrr<&frr<&orr<&urr<&urr<&prr<&qrr<&orr<&lrr<&prrW9$rr@WM
+JcDGDrp9a;4b*~>
+!BU8[l.5k7!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)prr<&rrr<&urr<&r
+rr<&trr<&srr<&urr<&rrr<&qrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&u
+rr<&urr<&qrr<&rrr<&rrr<&frr<&orr<&urr<&urr<&prr<&qrr<&orr<&lrr<&prrW9$rr@WM
+JcDGDrojI/3e.~>
+!B:&Xj4=51!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)prr<&rrr<&urr<&r
+rr<&trr<&srr<&urr<&rrr<&qrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&u
+rr<&urr<&qrr<&rrr<&rrr<&frr<&orr<&urr<&urr<&prr<&qrr<&orr<&lrr<&prrW9$rr@WM
+JcDGDro4$s2h1~>
+!BpJ^mG%[<!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)ps7lZorr<&mrr<&s
+rr<&us7lZkrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&qrr<&r
+rr<&rrr<&ks8)fkrr<&urr<&urr<&us8)fmrr<&orr<&lrr<&os8N(Ms+13Cs8MBdeieN~>
+!BU8[l.c78!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)ps7lZorr<&mrr<&s
+rr<&us7lZkrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&qrr<&r
+rr<&rrr<&ks8)fkrr<&urr<&urr<&us8)fmrr<&orr<&lrr<&os8N(Ms+13Cs8M6`c8pI~>
+!B:&Xj4jV2!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<<'!s8N)ps7lZorr<&mrr<&s
+rr<&us7lZkrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&qrr<&r
+rr<&rrr<&ks8)fkrr<&urr<&urr<&us8)fmrr<&orr<&lrr<&os8N(Ms+13Cs8M$Z_`*)~>
+!BpJ^mG.^A!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)forr@WMJcDDC
+rp9a;4b*~>
+!BU8[l.l:=!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)forr@WMJcDDC
+rojI/3e.~>
+!B:&Xj4sY7!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)forr@WMJcDDC
+ro4$s2h1~>
+!BpJ^mG.^A!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$!.k0$
+s.TJlm/bd$J,~>
+!BU8[l.l:=!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$!.k0$
+s.TJlklK'jJ,~>
+!B:&Xj4sY7!;uis!;uis!;uis!<2uu!;lcr!;HKn!;ZWp!;lcr!<)p%!<3'!!<3&prr<&nrr<&m
+rr<&srr<&urr<&jrr<&rrr<&rrr<&trr<&srr<&mrr<&qrr<&rrr<&srr<&prr<&urr<&urr<&q
+rr<&rrr<&rrr<&lrr<&srr<&orr<&urr<&urrW9$rrDus!!)lq!!)fo!!)]l!!)ip!s&B$!.k0$
+s.TJlirR%VJ,~>
+!BpJ^mG.^A!<)rt!;uis!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;lcr!<2uu!;HKn!<)rt!<)ot
+!<)rt!<)ot!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlit
+p&>!lqYpNqrVlitqZ$QqJcC<$X8i1d!S0Da~>
+!BU8[l.l:=!<)rt!;uis!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;lcr!<2uu!;HKn!<)rt!<)ot
+!<)rt!<)ot!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlit
+p&>!lqYpNqrVlitqZ$QqJcC<$X8i1`!R<`V~>
+!B:&Xj4sY7!<)rt!;uis!;uis!<)ot!<)rt!;HKn!;QQo!<)ot!;lcr!<2uu!;HKn!<)rt!<)ot
+!<)rt!<)ot!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;lcr!;ZWp
+!<2uu!<2uu!;ZWp!<)ot!;c]q!;6?l!<)rt!;QQo!<2uu!<3!#!<<'!rVultqYpNqrVlitrVlit
+p&>!lqYpNqrVlitqZ$QqJcC<$X8i1Z!Q-jH~>
+!BpJ^mG%[>!!*&u!<<)u!<3#t!<)rr!!<0#!;c`l!;lfp!;c]q!<2uu!;?Hk!;c`o!;ulr!<3#t
+!<)rr!;lfm!;ulq!;ulr!<3#t!;ZZk!;ulq!;uln!<3#t!<<*!!<<*!!;ZZn!;lfm!;QTm!!*&u
+!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!.k0$s/Z2!m/bd$J,~>
+!BU8[l.c7:!!*&u!<<)u!<3#t!<)rr!!<0#!;c`l!;lfp!;c]q!<2uu!;?Hk!;c`o!;ulr!<3#t
+!<)rr!;lfm!;ulq!;ulr!<3#t!;ZZk!;ulq!;uln!<3#t!<<*!!<<*!!;ZZn!;lfm!;QTm!!*&u
+!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!.k0$s/Z2!klK'jJ,~>
+!B:&Xj4jV4!!*&u!<<)u!<3#t!<)rr!!<0#!;c`l!;lfp!;c]q!<2uu!;?Hk!;c`o!;ulr!<3#t
+!<)rr!;lfm!;ulq!;ulr!<3#t!;ZZk!;ulq!;uln!<3#t!<<*!!<<*!!;ZZn!;lfm!;QTm!!*&u
+!;lfq!<<*!!<<*!!<<)t!!*&u!;lfp!<3#p!;uln!<3#t!<<)u!;lfr!.k0$s/Z2!irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!6"p8!4r40!:0[b!4`(/!.k0$s+147s8MBdeieN~>
+!BU8[l-B>/!6"p8!4r40!:0[b!4`(/!.k0$s+147s8M6`c8pI~>
+!B:&Xj3I])!6"p8!4r40!:0[b!4`(/!.k0$s+147s8M$Z_`*)~>
+!BpJ^mG7g:!;uls!6"p8!4r40!;c`i!;uls!4`(/!.k0$s+147s8MBdeieN~>
+!BU8[l.uC6!;uls!6"p8!4r40!;c`i!;uls!4`(/!.k0$s+147s8M6`c8pI~>
+!B:&Xj5'b0!;uls!6"p8!4r40!;c`i!;uls!4`(/!.k0$s+147s8M$Z_`*)~>
+!BpJ^mHsrH!<)rl!4r41!4i.0!;c`i!3uS(!.k0$s+147s8MBdeieN~>
+!BU8[l0\ND!<)rl!4r41!4i.0!;c`i!3uS(!.k0$s+147s8M6`c8pI~>
+!B:&Xj6cm>!<)rl!4r41!4i.0!;c`i!3uS(!.k0$s+147s8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs!!*&t!<3#s!<<)t!<3#q!;c`q!;ulr
+!<<)t!;ulq!;lfm!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs
+!!*&t!<3#s!<<)t!<)rr!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro!.k0$s,[3Zm/bd$J,~>
+!BU8[l0\ND!;lfr!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs!!*&t!<3#s!<<)t!<3#q!;c`q!;ulr
+!<<)t!;ulq!;lfm!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs
+!!*&t!<3#s!<<)t!<)rr!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro!.k0$s,[3ZklK'jJ,~>
+!B:&Xj6cm>!;lfr!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs!!*&t!<3#s!<<)t!<3#q!;c`q!;ulr
+!<<)t!;ulq!;lfm!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo!<)rt!<<)s!;c`o!!*&u!<)rr!<)rs
+!!*&t!<3#s!<<)t!<)rr!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro!.k0$s,[3ZirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHWop]1?oq#LHpp]1?or;cltr;cltq#L<l
+rrDusrW)uur;cisq#LEoq#L6jq#LHpp]1<nq#L3irrE*!"T\Q&!<<)s!;lfk!<<)p!<<)o!<<)t
+!<<)t!<<)p!<3#o!<<)p!<)rn!<<)n!<<)p!.k0$s,[3Zm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHWop]1?oq#LHpp]1?or;cltr;cltq#L<l
+rrDusrW)uur;cisq#LEoq#L6jq#LHpp]1<nq#L3irrE*!"T\Q&!<<)s!;lfk!<<)p!<<)o!<<)t
+!<<)t!<<)p!<3#o!<<)p!<)rn!<<)n!<<)p!.k0$s,[3ZklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHWop]1?oq#LHpp]1?or;cltr;cltq#L<l
+rrDusrW)uur;cisq#LEoq#L6jq#LHpp]1<nq#L3irrE*!"T\Q&!<<)s!;lfk!<<)p!<<)o!<<)t
+!<<)t!<<)p!<3#o!<<)p!<)rn!<<)n!<<)p!.k0$s,[3ZirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N)u
+s8N)ts8N)rs8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)ps8N)ts8N)us8E#ts8N*!s8E#ts8E#n
+s82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8Duus8E#ts8E#ss8N)q
+s8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+132s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N)u
+s8N)ts8N)rs8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)ps8N)ts8N)us8E#ts8N*!s8E#ts8E#n
+s82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8Duus8E#ts8E#ss8N)q
+s8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+132s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N)u
+s8N)ts8N)rs8N)rs8N)ts8N*!s8E#ss8E#us8N)ts8N)ps8N)ts8N)us8E#ts8N*!s8E#ts8E#n
+s82lms8N)ss8E#ts8E#us8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8Duus8E#ts8E#ss8N)q
+s8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+132s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lms8N)ss8N)ss8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N)o
+s8N)rs8N)rs8N)ts8N*!s8N)rs8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)os82lms8N)ss8N)s
+s8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N)us8E#p
+s8;qKs+13.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lms8N)ss8N)ss8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N)o
+s8N)rs8N)rs8N)ts8N*!s8N)rs8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)os82lms8N)ss8N)s
+s8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N)us8E#p
+s8;qKs+13.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lms8N)ss8N)ss8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N)o
+s8N)rs8N)rs8N)ts8N*!s8N)rs8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)os82lms8N)ss8N)s
+s8N*!s8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N)us8E#p
+s8;qKs+13.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)t
+s7lZls8N)rs8N)ts8N*!s7ZNms8)fks7lZos8N)ts8N*!s8N)ss8N)os8N*!rr<&ps8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)os8)eIs+131s8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)t
+s7lZls8N)rs8N)ts8N*!s7ZNms8)fks7lZos8N)ts8N*!s8N)ss8N)os8N*!rr<&ps8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)os8)eIs+131s8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)t
+s7lZls8N)rs8N)ts8N*!s7ZNms8)fks7lZos8N)ts8N*!s8N)ss8N)os8N*!rr<&ps8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)os8)eIs+131s8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)u
+s7cTks8N)rs8N)ts8N*!s7ZNks82lns7cTns8N)ts8N*!s8N)ss8N)os8N)ts8N)ss8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)ms82kJs+132s8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)u
+s7cTks8N)rs8N)ts8N*!s7ZNks82lns7cTns8N)ts8N*!s8N)ss8N)os8N)ts8N)ss8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)ms82kJs+132s8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ss8N)ss8N)ss8N*!s7ZNns8N)ts8N)ts8N*!s8N)u
+s7cTks8N)rs8N)ts8N*!s7ZNks82lns7cTns8N)ts8N*!s8N)ss8N)os8N)ts8N)ss8N)ss8N)s
+s8N*!s7ZNns8N)ts8N)ts8N*!s8N)us7ZKprr<&ms8N)qs8N)rs8N)us8N)ms82kJs+132s8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8N)s
+s8N)rs8N)rs8N)us8E#us8E#ns8N)ts8N)qs8N)ss8N)us8N)ts8N*!s8E#ts8E#ns8N)ts8N)s
+s8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8E#os8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)p
+s8N)ts8N(Ms+132s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8N)s
+s8N)rs8N)rs8N)us8E#us8E#ns8N)ts8N)qs8N)ss8N)us8N)ts8N*!s8E#ts8E#ns8N)ts8N)s
+s8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8E#os8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)p
+s8N)ts8N(Ms+132s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ss8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8N)s
+s8N)rs8N)rs8N)us8E#us8E#ns8N)ts8N)qs8N)ss8N)us8N)ts8N*!s8E#ts8E#ns8N)ts8N)s
+s8N)ss8E#ts8E#us8E#ns8N)ts8N)ss8;rrs8E#os8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)p
+s8N)ts8N(Ms+132s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZNns7lZos7lZos7lZps8;rts8;rrs8;rrs7ZNns7lZos7cTo
+s7lZos7lZks7ZKns8;rts8;rts7cTks7ZNns7lZos7lZos7lZps8;rts8;rrs8;rqs7lZos7cTn
+s7lZps7lZps7lZns7lYGs+132s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZNns7lZos7lZos7lZps8;rts8;rrs8;rrs7ZNns7lZos7cTo
+s7lZos7lZks7ZKns8;rts8;rts7cTks7ZNns7lZos7lZos7lZps8;rts8;rrs8;rqs7lZos7cTn
+s7lZps7lZps7lZns7lYGs+132s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZNns7lZos7lZos7lZps8;rts8;rrs8;rrs7ZNns7lZos7cTo
+s7lZos7lZks7ZKns8;rts8;rts7cTks7ZNns7lZos7lZos7lZps8;rts8;rrs8;rqs7lZos7cTn
+s7lZps7lZps7lZns7lYGs+132s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZNns7lZns8;p!rr<&ss8)frs8;rts8;rqs8N)rs82iss8E#u
+s7lZns8;ots8E#ss8)fqs7u`js82iss8Duus8;rts8;rss8;ots8E#qs7ZNns7lZns8;p!rr<&s
+s8)frs8;rts8;rqs8N)ps8)fps8)fns82los8;rrs7lZns7u_Hs+131s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZNns7lZns8;p!rr<&ss8)frs8;rts8;rqs8N)rs82iss8E#u
+s7lZns8;ots8E#ss8)fqs7u`js82iss8Duus8;rts8;rss8;ots8E#qs7ZNns7lZns8;p!rr<&s
+s8)frs8;rts8;rqs8N)ps8)fps8)fns82los8;rrs7lZns7u_Hs+131s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZNns7lZns8;p!rr<&ss8)frs8;rts8;rqs8N)rs82iss8E#u
+s7lZns8;ots8E#ss8)fqs7u`js82iss8Duus8;rts8;rss8;ots8E#qs7ZNns7lZns8;p!rr<&s
+s8)frs8;rts8;rqs8N)ps8)fps8)fns82los8;rrs7lZns7u_Hs+131s8M$Z_`*)~>
+!BpJ^mHsrH!9!nW!.k1-s8N(Ms+13$s/c8"m/bd$J,~>
+!BU8[l0\ND!9!nW!.k1-s8N(Ms+13$s/c8"klK'jJ,~>
+!B:&Xj6cm>!9!nW!.k1-s8N(Ms+13$s/c8"irR%VJ,~>
+!BpJ^mHsrH!9*tW!.k1.s8E"Ls+13$s/c8"m/bd$J,~>
+!BU8[l0\ND!9*tW!.k1.s8E"Ls+13$s/c8"klK'jJ,~>
+!B:&Xj6cm>!9*tW!.k1.s8E"Ls+13$s/c8"irR%VJ,~>
+!BpJ^mD],&!.k11s8)eIs+13$s/Z2!m/bd$J,~>
+!BU8[l,E]"!.k11s8)eIs+13$s/Z2!klK'jJ,~>
+!B:&Xj2M&q!.k11s8)eIs+13$s/Z2!irR%VJ,~>
+!BpJ^mD],'!.k10s82kJs+13$s/Q+um/bd$J,~>
+!BU8[l,E]#!.k10s82kJs+13$s/Q+uklK'jJ,~>
+!B:&Xj2M&r!.k10s82kJs+13$s/Q+uirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs82ip!4i.0!.k0$s-`odm/bd$J,~>
+!BU8[l%/kcs82ip!4i.0!.k0$s-`odklK'jJ,~>
+!B:&Xj+75]s82ip!4i.0!.k0$s-`odirR%VJ,~>
+!BpJ^mG.a@!<3#t!9*qX!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8Dusm/bd$J,~>
+!BU8[l.l=<!<3#t!9*qX!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8DusklK'jJ,~>
+!B:&Xj4s\6!<3#t!9*qX!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8DusirR%VJ,~>
+!BpJ^mG%X@!;uis!9!kW!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8Dusm/bd$J,~>
+!BU8[l.c4<!;uis!9!kW!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8DusklK'jJ,~>
+!B:&Xj4jS6!;uis!9!kW!3lJ'!8IMR!5SU7!4`%/!:'Ra!4Mn-!.k0$s8DusirR%VJ,~>
+!BpJ^mG%X@!;uis!9!kW!3lJ'!1Eie!4`%/!1s2j!.k0$s8Dusm/bd$J,~>
+!BU8[l.c4<!;uis!9!kW!3lJ'!1Eie!4`%/!1s2j!.k0$s8DusklK'jJ,~>
+!B:&Xj4jS6!;uis!9!kW!3lJ'!1Eie!4`%/!1s2j!.k0$s8DusirR%VJ,~>
+!BpJ^mG%X@!;uis!;ulq!;ulr!<3#t!;ZZk!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu
+!<;utrVultrVultrVu]or;Z]qp&FsjqZ$Npq>^Bn!ri6#rVufrr;Zcs!<;utrVuisrr;rtrVufr
+q#:<oqu?ZrrVultr;Z]qqZ$Ko!WN/os8;rqs8N'!s8;rps8;ourrDfnr;c]orW)cor;Zp!!!)ut
+r;ccqrr<'!r;cfrrW)rtrW)osr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;lfp!!3*"JcDJErp9a;
+4b*~>
+!BU8[l.c4<!;uis!;ulq!;ulr!<3#t!;ZZk!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu
+!<;utrVultrVultrVu]or;Z]qp&FsjqZ$Npq>^Bn!ri6#rVufrr;Zcs!<;utrVuisrr;rtrVufr
+q#:<oqu?ZrrVultr;Z]qqZ$Ko!WN/os8;rqs8N'!s8;rps8;ourrDfnr;c]orW)cor;Zp!!!)ut
+r;ccqrr<'!r;cfrrW)rtrW)osr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;lfp!!3*"JcDJErojI/
+3e.~>
+!B:&Xj4jS6!;uis!;ulq!;ulr!<3#t!;ZZk!;ulq!;6Bj!!3*"r;Z]qrVult#6+Z's8N'!rr;uu
+!<;utrVultrVultrVu]or;Z]qp&FsjqZ$Npq>^Bn!ri6#rVufrr;Zcs!<;utrVuisrr;rtrVufr
+q#:<oqu?ZrrVultr;Z]qqZ$Ko!WN/os8;rqs8N'!s8;rps8;ourrDfnr;c]orW)cor;Zp!!!)ut
+r;ccqrr<'!r;cfrrW)rtrW)osr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;lfp!!3*"JcDJEro4$s
+2h1~>
+!BpJ^mG%X@!;uis!<)ot!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!<)rt
+!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;HKn!<)ot!;ZWp!;c]q!<)rt!<)ot
+!<)ot!;uls!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;lcr!;ZWp!<)ot!;lfr!<2uu!<)ot!<)rt!.k0Es8MBdeieN~>
+!BU8[l.c4<!;uis!<)ot!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!<)rt
+!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;HKn!<)ot!;ZWp!;c]q!<)rt!<)ot
+!<)ot!;uls!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;lcr!;ZWp!<)ot!;lfr!<2uu!<)ot!<)rt!.k0Es8M6`c8pI~>
+!B:&Xj4jS6!;uis!<)ot!<)ot!;uis!;uis!;?Em!;ZWp!<)ot!;HKn!<)rt!<)ot!<)ot!<)rt
+!<<*!!<<'!!<3#u!<)ot!<)ot!;uis!;lcr!;ZWp!<)ot!;HKn!<)ot!;ZWp!;c]q!<)rt!<)ot
+!<)ot!;uls!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)ot!;ZWp!;c]q!<)rt!<)ot!<)ot!;uls!<)ot!<)ot
+!;uis!<)ot!<)ot!;uis!<)rt!;lcr!;ZWp!<)ot!;lfr!<2uu!<)ot!<)rt!.k0Es8M$Z_`*)~>
+!BpJ^mG%[;!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&r
+rr<&trr<&srr<&srr<&urr<&nrr<&prr<&qrr<&srr<&urr<&rrr<&trr<&srr<&jrr<&srr<&s
+rr<&urr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&srr<&urr<&trr<&r
+rr<&urr<&rrr<&rrr<&qrr<&rrr<&srr<&orr<&srr<%Ms.]Pmm/bd$J,~>
+!BU8[l.c77!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&r
+rr<&trr<&srr<&srr<&urr<&nrr<&prr<&qrr<&srr<&urr<&rrr<&trr<&srr<&jrr<&srr<&s
+rr<&urr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&srr<&urr<&trr<&r
+rr<&urr<&rrr<&rrr<&qrr<&rrr<&srr<&orr<&srr<%Ms.]PmklK'jJ,~>
+!B:&Xj4jV1!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&rrr<&urr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&r
+rr<&trr<&srr<&srr<&urr<&nrr<&prr<&qrr<&srr<&urr<&rrr<&trr<&srr<&jrr<&srr<&s
+rr<&urr<&rrr<&prr<&rrr<&qrr<&rrr<&rrr<&urr<&rrr<&trr<&srr<&srr<&urr<&trr<&r
+rr<&urr<&rrr<&rrr<&qrr<&rrr<&srr<&orr<&srr<%Ms.]PmirR%VJ,~>
+!BpJ^mG%X@!;uis!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZjs7lZkrr<&rrr<&rrr<&us7lZnrr<&srr<&s
+rr<&urr<&ss8)flrr<&qrr<&srr<&us7lZms8E#ks8)forr<&srr<&urr<&rrr<&ps7lZkrr<&r
+rr<&rrr<&us7lZnrr<&srr<&srr<&urr<&ts7lZorr<&krr<&qrr<&rrr<&srr<&ns8E"Ls.B>j
+m/bd$J,~>
+!BU8[l.c4<!;uis!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZjs7lZkrr<&rrr<&rrr<&us7lZnrr<&srr<&s
+rr<&urr<&ss8)flrr<&qrr<&srr<&us7lZms8E#ks8)forr<&srr<&urr<&rrr<&ps7lZkrr<&r
+rr<&rrr<&us7lZnrr<&srr<&srr<&urr<&ts7lZorr<&krr<&qrr<&rrr<&srr<&ns8E"Ls.B>j
+klK'jJ,~>
+!B:&Xj4jS6!;uis!<2uu!;lcr!<)p%!<<'!s8N)mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qs7lZjs7lZkrr<&rrr<&rrr<&us7lZnrr<&srr<&s
+rr<&urr<&ss8)flrr<&qrr<&srr<&us7lZms8E#ks8)forr<&srr<&urr<&rrr<&ps7lZkrr<&r
+rr<&rrr<&us7lZnrr<&srr<&srr<&urr<&ts7lZorr<&krr<&qrr<&rrr<&srr<&ns8E"Ls.B>j
+irR%VJ,~>
+!BpJ^mG%X@!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!:p0i!;QQo!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&ks8N(M
+s.TJlm/bd$J,~>
+!BU8[l.c4<!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!:p0i!;QQo!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&ks8N(M
+s.TJlklK'jJ,~>
+!B:&Xj4jS6!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!:p0i!;QQo!;uis!;uis!;uis!<2uu!;lcr!;ZWp
+!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&ks8N(M
+s.TJlirR%VJ,~>
+!BpJ^mG%X@!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;?Em!;uis!;ZWp!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&o
+rr<&srr<%Ms.]Pmm/bd$J,~>
+!BU8[l.c4<!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;?Em!;uis!;ZWp!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&o
+rr<&srr<%Ms.]PmklK'jJ,~>
+!B:&Xj4jS6!;uis!<2uu!;lcr!<)p%!<3'!!<3&mrr<&qrr<&rrr<&prr<&nrr<&rrr<&urr<&u
+rr<&urr<&urr<&rrr<&urr<&srr<&rrr<&qrr<&irr<&jrr<&rrr<&rrr<&urr<&mrr<&srr<&r
+rrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;?Em!;uis!;ZWp!;uis!;uis!;uis!<2uu!;lcr
+!;ZWp!;$3j!;lcr!;lcr!<2uu!;?Em!;uis!;lct!<3&srr<&nrr<&krr<&qrr<&rrr<&srr<&o
+rr<&srr<%Ms.]PmirR%VJ,~>
+!BpJ^mG%X@!;uis!<)ot!<)ot!;lcr!<2uu!;6?l!<)ot!<2uu!<)ot!;HKn!<)rt!<)ot!<)ot
+!<)ot!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;QQo!<)rt!;c]q!;c]q
+!<)rt!<)ot!<)rt!<)ot!;uis!;c]q!;lcr!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot
+!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QQo!<)rt!;c]q!;c]q!<)rt!<)ot!<)rt!<)ot!;uis
+!;c]q!;c]q!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)ot!;lcr!;QTo!<)ot!;lfr!.k0Ms8MBd
+eieN~>
+!BU8[l.c4<!;uis!<)ot!<)ot!;lcr!<2uu!;6?l!<)ot!<2uu!<)ot!;HKn!<)rt!<)ot!<)ot
+!<)ot!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;QQo!<)rt!;c]q!;c]q
+!<)rt!<)ot!<)rt!<)ot!;uis!;c]q!;lcr!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot
+!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QQo!<)rt!;c]q!;c]q!<)rt!<)ot!<)rt!<)ot!;uis
+!;c]q!;c]q!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)ot!;lcr!;QTo!<)ot!;lfr!.k0Ms8M6`
+c8pI~>
+!B:&Xj4jS6!;uis!<)ot!<)ot!;lcr!<2uu!;6?l!<)ot!<2uu!<)ot!;HKn!<)rt!<)ot!<)ot
+!<)ot!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;lcr!<)ot!<2uu!<)rt!;QQo!<)rt!;c]q!;c]q
+!<)rt!<)ot!<)rt!<)ot!;uis!;c]q!;lcr!<)rt!;ZWp!;c]q!<)rt!<)ot!<)rt!<)rt!<)ot
+!;ZWp!<)rt!;uis!;uis!<)ot!<)rt!;QQo!<)rt!;c]q!;c]q!<)rt!<)ot!<)rt!<)ot!;uis
+!;c]q!;c]q!<)rt!<)ot!<)rt!;lcr!<)ot!<2uu!<)ot!;lcr!;QTo!<)ot!;lfr!.k0Ms8M$Z
+_`*)~>
+!BpJ^mG.a@!<3#t!<)rr!;c]q!<2uu!;-<i!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;ut
+qu?Tp!ri6#qu?Tpr;Z]qp&Fsjqu?Kmr;Z]q!WN/ts8;rqs8E#ts8E#qrr<&qs8;ots8E#ts7u`n
+s8;p!rr<&ts8;rprrE-"r;cTlr;ZitrW)uurW)rtrW)osr;Zp!!!)for;c`pq>gHnr;Zlu!;ulq
+!;ulr!<3#t!;lcr!;ZZn!;c`o!;QTm!;ulq!;uln!;uit!<;utqZ$QqJcDbMrp9a;4b*~>
+!BU8[l.l=<!<3#t!<)rr!;c]q!<2uu!;-<i!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;ut
+qu?Tp!ri6#qu?Tpr;Z]qp&Fsjqu?Kmr;Z]q!WN/ts8;rqs8E#ts8E#qrr<&qs8;ots8E#ts7u`n
+s8;p!rr<&ts8;rprrE-"r;cTlr;ZitrW)uurW)rtrW)osr;Zp!!!)for;c`pq>gHnr;Zlu!;ulq
+!;ulr!<3#t!;lcr!;ZZn!;c`o!;QTm!;ulq!;uln!;uit!<;utqZ$QqJcDbMrojI/3e.~>
+!B:&Xj4s\6!<3#t!<)rr!;c]q!<2uu!;-<i!;ulq!;6Bj!;c`o!<)rs!<<*!!<<*!!<<'"!<;ut
+qu?Tp!ri6#qu?Tpr;Z]qp&Fsjqu?Kmr;Z]q!WN/ts8;rqs8E#ts8E#qrr<&qs8;ots8E#ts7u`n
+s8;p!rr<&ts8;rprrE-"r;cTlr;ZitrW)uurW)rtrW)osr;Zp!!!)for;c`pq>gHnr;Zlu!;ulq
+!;ulr!<3#t!;lcr!;ZZn!;c`o!;QTm!;ulq!;uln!;uit!<;utqZ$QqJcDbMro4$s2h1~>
+!BpJ^m=G<5rr<&,rr<%Ms5*bU!.k0$s1eU5m/bd$J,~>
+!BU8[l%/m1rr<&,rr<%Ms5*bU!.k0$s1eU5klK'jJ,~>
+!B:&Xj+77+rr<&,rr<%Ms5*bU!.k0$s1eU5irR%VJ,~>
+!BpJ^m=G<5rr<&,rr<%Ms5*bU!.k0$s1eU5m/bd$J,~>
+!BU8[l%/m1rr<&,rr<%Ms5*bU!.k0$s1eU5klK'jJ,~>
+!B:&Xj+77+rr<&,rr<%Ms5*bU!.k0$s1eU5irR%VJ,~>
+!BpJ^m=G<5rr<&-rr<%Ms5*bU!.k0$s1\O4m/bd$J,~>
+!BU8[l%/m1rr<&-rr<%Ms5*bU!.k0$s1\O4klK'jJ,~>
+!B:&Xj+77+rr<&-rr<%Ms5*bU!.k0$s1\O4irR%VJ,~>
+!BpJ^m=G<6s8;r2s82kJs5O(V!.k0$s1SI3m/bd$J,~>
+!BU8[l%/m2s8;r2s82kJs5O(V!.k0$s1SI3klK'jJ,~>
+!B:&Xj+77,s8;r2s82kJs5O(V!.k0$s1SI3irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG%[@!;QTo!5&:0!.k0$s+13$s2+g8m/bd$J,~>
+!BU8[l.c7<!;QTo!5&:0!.k0$s+13$s2+g8klK'jJ,~>
+!B:&Xj4jV6!;QTo!5&:0!.k0$s+13$s2+g8irR%VJ,~>
+!BpJ^mHafN!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9im/bd$J,~>
+!BU8[l0JBJ!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iklK'jJ,~>
+!B:&Xj6QaD!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iirR%VJ,~>
+!BpJ^mHFQM!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+m/bd$J,~>
+!BU8[l0/-I!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+klK'jJ,~>
+!B:&Xj66LC!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+irR%VJ,~>
+!BpJ^mHOWP!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8MBdeieN~>
+!BU8[l083L!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M6`c8pI~>
+!B:&Xj6?RF!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M$Z_`*)~>
+!BpJ^mHOWP!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`m/bd$J,~>
+!BU8[l083L!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`klK'jJ,~>
+!B:&Xj6?RF!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN/rs8N(Ms+13$s-<W`irR%VJ,~>
+!BpJ^mHX]O!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8MBdeieN~>
+!BU8[l0A9K!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!;c`q!.k0$s+138
+s8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8MBdeieN~>
+!BU8[l0A9K!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M$Z_`*)~>
+!BpJ^mHacP!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8MBdeieN~>
+!BU8[l0J?L!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M6`c8pI~>
+!B:&Xj6Q^F!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M$Z_`*)~>
+!BpJ^mHafK!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8MBdeieN~>
+!BU8[l0JBG!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M6`c8pI~>
+!B:&Xj6QaA!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M$Z_`*)~>
+!BpJ^mHjiQ!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rp9a;4b*~>
+!BU8[l0SEM!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rojI/3e.~>
+!B:&Xj6ZdG!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/ro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!;c`q!.k0$
+s+138s8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`m/bd$J,~>
+!BU8[l0\NL!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`klK'jJ,~>
+!B:&Xj6cmF!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;rns8N(Ms+13$s-<W`irR%VJ,~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;ts8;qKs+13$s+145s8MBdeieN~>
+!BU8[l%/lps8;qKs+13$s+145s8M6`c8pI~>
+!B:&Xj+76js8;qKs+13$s+145s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA9j\!6P9@!7h,L!87DP!9X=Y!8RVS!;lfo!;ulr!9*tX!8[\T!:0[b!.k0$s7?9im/bd$
+J,~>
+!BU8[l)"FX!6P9@!7h,L!87DP!9X=Y!8RVS!;lfo!;ulr!9*tX!8[\T!:0[b!.k0$s7?9iklK'j
+J,~>
+!B:&Xj/)eR!6P9@!7h,L!87DP!9X=Y!8RVS!;lfo!;ulr!9*tX!8[\T!:0[b!.k0$s7?9iirR%V
+J,~>
+!BpJ^mG7g:!7UuG!9*tS!:^$g!7h,L!87DP!9aCY!:0[`!<<)t!;uls!;lfo!;ulr!9*tX!;6Bk
+!;ulr!;-<k!:0[b!.k0$s7?9im/bd$J,~>
+!BU8[l.uC6!7UuG!9*tS!:^$g!7h,L!87DP!9aCY!:0[`!<<)t!;uls!;lfo!;ulr!9*tX!;6Bk
+!;ulr!;-<k!:0[b!.k0$s7?9iklK'jJ,~>
+!B:&Xj5'b0!7UuG!9*tS!:^$g!7h,L!87DP!9aCY!:0[`!<<)t!;uls!;lfo!;ulr!9*tX!;6Bk
+!;ulr!;-<k!:0[b!.k0$s7?9iirR%VJ,~>
+!BpJ^mHsrH!<)rl!7:cG!9*tQ!:p0i!3?/"!9aC^!9X=[!<<)t!:g*h!;lfr!9*tX!;6Bk!;ulr
+!;-<k!.k0$s4dSQm/bd$J,~>
+!BU8[l0\ND!<)rl!7:cG!9*tQ!:p0i!3?/"!9aC^!9X=[!<<)t!:g*h!;lfr!9*tX!;6Bk!;ulr
+!;-<k!.k0$s4dSQklK'jJ,~>
+!B:&Xj6cm>!<)rl!7:cG!9*tQ!:p0i!3?/"!9aC^!9X=[!<<)t!:g*h!;lfr!9*tX!;6Bk!;ulr
+!;-<k!.k0$s4dSQirR%VJ,~>
+!BpJ^mHsrH!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnm/R(c
+rVultr;Z]qrVuZnqu?TprVufrs8W&u!<<#u"9/?$s8E#ts82lps8Duus8;rqs8)fqs8Duus8;rs
+s7lZgs8;rqs7lZis8)fks8N)ts8N)us82lls8N)rs8N'!s8;rps8;rrs8;rts8E#us7lZis8E#t
+s8E#ts8)fqs7lZos8;rts8E#ts82lps82iss82kJs+C@Nm/bd$J,~>
+!BU8[l0\ND!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnm/R(c
+rVultr;Z]qrVuZnqu?TprVufrs8W&u!<<#u"9/?$s8E#ts82lps8Duus8;rqs8)fqs8Duus8;rs
+s7lZgs8;rqs7lZis8)fks8N)ts8N)us82lls8N)rs8N'!s8;rps8;rrs8;rts8E#us7lZis8E#t
+s8E#ts8)fqs7lZos8;rts8E#ts82lps82iss82kJs+C@NklK'jJ,~>
+!B:&Xj6cm>!;lfr!<)rt!!*&s!!*&s!<<)r!<<)u!!E6$!<<#us8W&u!<;utqZ$Qqq>^Bnm/R(c
+rVultr;Z]qrVuZnqu?TprVufrs8W&u!<<#u"9/?$s8E#ts82lps8Duus8;rqs8)fqs8Duus8;rs
+s7lZgs8;rqs7lZis8)fks8N)ts8N)us82lls8N)rs8N'!s8;rps8;rrs8;rts8E#us7lZis8E#t
+s8E#ts8)fqs7lZos8;rts8E#ts82lps82iss82kJs+C@NirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!;lfr
+!;?Hm!;uls!<<)p!<<)p!<)rn!<<)c!<<)s!;ull!<3#o!<<)o!<<)p!;QTi!<3#o!;ZZj!;ZZp
+!<)rt!<3#r!;QTo!;lfl!<3#o!<<)n!!*&p!;QTn!<3#t!<<)p!<<)p!<3#m!<<)s!;ulp!!*&s
+!.k0&s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!;lfr
+!;?Hm!;uls!<<)p!<<)p!<)rn!<<)c!<<)s!;ull!<3#o!<<)o!<<)p!;QTi!<3#o!;ZZj!;ZZp
+!<)rt!<3#r!;QTo!;lfl!<3#o!<<)n!!*&p!;QTn!<3#t!<<)p!<<)p!<3#m!<<)s!;ulp!!*&s
+!.k0&s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&s!!*&p!!*&m!!*&o!;lfr!;lfl!;lfr
+!;?Hm!;uls!<<)p!<<)p!<)rn!<<)c!<<)s!;ull!<3#o!<<)o!<<)p!;QTi!<3#o!;ZZj!;ZZp
+!<)rt!<3#r!;QTo!;lfl!<3#o!<<)n!!*&p!;QTn!<3#t!<<)p!<<)p!<3#m!<<)s!;ulp!!*&s
+!.k0&s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#rs8N)ms8N)ss8N'!s8E#ss8E#ts8N)qs8E#ss8E#ts8;rts8N'!s8Duus8E!"
+rr<&ss8N)rs8E#ts8N)us8N)ts8N)us8E#ts8N)ts8N)ls8E#ss8E#ss8N)ls8N)ts8N)ps7lZl
+s8N)os8N)rs8E#ts8Duus8E#ss8E#ts8;rts8N)us8N)ks8;ots8;rts8N)ts8N)ts8N)os8;rt
+s8N)ss8N)qs8N)us8N(Ms+14Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#rs8N)ms8N)ss8N'!s8E#ss8E#ts8N)qs8E#ss8E#ts8;rts8N'!s8Duus8E!"
+rr<&ss8N)rs8E#ts8N)us8N)ts8N)us8E#ts8N)ts8N)ls8E#ss8E#ss8N)ls8N)ts8N)ps7lZl
+s8N)os8N)rs8E#ts8Duus8E#ss8E#ts8;rts8N)us8N)ks8;ots8;rts8N)ts8N)ts8N)os8;rt
+s8N)ss8N)qs8N)us8N(Ms+14LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82los8N)us8N)us8N)ts8N*!s8Duus8E!$rr<'!s8E#ts8E#r
+s8N)ss8E#ss8E#rs8N)ms8N)ss8N'!s8E#ss8E#ts8N)qs8E#ss8E#ts8;rts8N'!s8Duus8E!"
+rr<&ss8N)rs8E#ts8N)us8N)ts8N)us8E#ts8N)ts8N)ls8E#ss8E#ss8N)ls8N)ts8N)ps7lZl
+s8N)os8N)rs8E#ts8Duus8E#ss8E#ts8;rts8N)us8N)ks8;ots8;rts8N)ts8N)ts8N)os8;rt
+s8N)ss8N)qs8N)us8N(Ms+14LirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N)fs8N)ss8N'#rr<&rs8N)us8N)qs8N)rs8N)us8E#qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N)os8N)us8N)ts8N)ts8N)ls8N)rs8N)ts8N)fs8N)ps7lZls8N)os8N)rs8N)ss8N'#rr<&r
+s8N)us8E#os8N)ks7cTis8N)ts8N)os8E#ms8N)ps8N'#rr<%Ms+11Ms8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N)fs8N)ss8N'#rr<&rs8N)us8N)qs8N)rs8N)us8E#qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N)os8N)us8N)ts8N)ts8N)ls8N)rs8N)ts8N)fs8N)ps7lZls8N)os8N)rs8N)ss8N'#rr<&r
+s8N)us8E#os8N)ks7cTis8N)ts8N)os8E#ms8N)ps8N'#rr<%Ms+11Ms8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lns8N'#rr<&ns8N*!s8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s8N)rs8N)fs8N)ss8N'#rr<&rs8N)us8N)qs8N)rs8N)us8E#qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N)os8N)us8N)ts8N)ts8N)ls8N)rs8N)ts8N)fs8N)ps7lZls8N)os8N)rs8N)ss8N'#rr<&r
+s8N)us8E#os8N)ks7cTis8N)ts8N)os8E#ms8N)ps8N'#rr<%Ms+11Ms8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N)us7lZos8N)t
+s8N)ts8N)ls8N)rs8N)ts8N)ls7lZjs8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)os8N)k
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)os8E"Ls+14Ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N)us7lZos8N)t
+s8N)ts8N)ls8N)rs8N)ts8N)ls7lZjs8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)os8N)k
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)os8E"Ls+14Ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs7lZps8N*!s8N*!s8N*!s8N)ss8N)ss8N)s
+s7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N)us7lZos8N)t
+s8N)ts8N)ls8N)rs8N)ts8N)ls7lZjs8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)os8N)k
+s8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)os8E"Ls+14Ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N*!s7cTn
+s8N)ts8N)ts8N)ls8N)rs8N)ts8N)ms7cTis8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)o
+s8N)ks8N*!rriE&rr<'!p]19mrrDiorrDcmrrDlprr<-#!!%TMJc>`Mrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N*!s7cTn
+s8N)ts8N)ts8N)ls8N)rs8N)ts8N)ms7cTis8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)o
+s8N)ks8N*!rriE&rr<'!p]19mrrDiorrDcmrrDlprr<-#!!%TMJc>`MrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&us7cTos8N*!s8N*!s8N*!s8N)ss8N)s
+s8N)ss7ZN^s8N)ss8N'!s7ZNms8N)qs7ZNms8N)qs8N*!s8N*!s8N)ss8N)rs8N)ts8N*!s7cTn
+s8N)ts8N)ts8N)ls8N)rs8N)ts8N)ms7cTis8N)ts8N)rs8N)os8N)rs8N)ss8N'!s7ZNms8N)o
+s8N)ks8N*!rriE&rr<'!p]19mrrDiorrDcmrrDlprr<-#!!%TMJc>`Mro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#^s8N)ts8N*!s8E#ms8N)ts8N'!s8E#ms8N)qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N*!s8N)ss8N)us8N)ts8N)ts8N)ts8N)rs8E#ss8E#ss8N)ms8N)ss8N)ps8N)ts8N)rs8N)o
+s8N)rs8E#ts8Duus8E#ms8N)os8N)ts8N)qs8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)q
+s8N)us8N(Ms+14Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#^s8N)ts8N*!s8E#ms8N)ts8N'!s8E#ms8N)qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N*!s8N)ss8N)us8N)ts8N)ts8N)ts8N)rs8E#ss8E#ss8N)ms8N)ss8N)ps8N)ts8N)rs8N)o
+s8N)rs8E#ts8Duus8E#ms8N)os8N)ts8N)qs8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)q
+s8N)us8N(Ms+14LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N*!s8N)ss8N*!s8N*!s8N*!s8N*!s8E#t
+s8E#rs8N)ss8E#^s8N)ts8N*!s8E#ms8N)ts8N'!s8E#ms8N)qs8N*!s8N*!s8N)ss8N)rs8N)t
+s8N*!s8N)ss8N)us8N)ts8N)ts8N)ts8N)rs8E#ss8E#ss8N)ms8N)ss8N)ps8N)ts8N)rs8N)o
+s8N)rs8E#ts8Duus8E#ms8N)os8N)ts8N)qs8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)q
+s8N)us8N(Ms+14LirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZls8N)ns7cTn
+s7lZns7lZps7lZps7lZps8;ots8Duus8Duus7lZps8;rts8;ots7ZKns8;rts8;rss7lZks7lZo
+s7lZks7ZNjs8;rts8;rts7lZos7lZps7cTns7lZps7lZms7lZls82iss7-0hs7lWps7lZns7lZp
+s82iss82kJs+C@Nm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZls8N)ns7cTn
+s7lZns7lZps7lZps7lZps8;ots8Duus8Duus7lZps8;rts8;ots7ZKns8;rts8;rss7lZks7lZo
+s7lZks7ZNjs8;rts8;rts7lZos7lZps7cTns7lZps7lZms7lZls82iss7-0hs7lWps7lZns7lZp
+s82iss82kJs+C@NklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZKns82iss6]jes8Duus8Duus7lZos7lZos7lZls8N)ns7cTn
+s7lZns7lZps7lZps7lZps8;ots8Duus8Duus7lZps8;rts8;ots7ZKns8;rts8;rss7lZks7lZo
+s7lZks7ZNjs8;rts8;rts7lZos7lZps7cTns7lZps7lZms7lZls82iss7-0hs7lWps7lZns7lZp
+s82iss82kJs+C@NirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-NnrrDfnq>gBlqZ-QoquHWoqZ-Zrq#LHpr;ZitrVururVuruq#LHpr;cltr;cltqu?`srVuru
+r;cltr;cfrquHHjr;ccqq#L6jqu?`srW)iqr;cltr;cltq#LEoq#LHprVurur;c`pqZ-Zrq#L<l
+quHQmqu?`squ?`squ?`srW)osquH`rq#LBnq#LHpqu?`squD<JKE(r<!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-NnrrDfnq>gBlqZ-QoquHWoqZ-Zrq#LHpr;ZitrVururVuruq#LHpr;cltr;cltqu?`srVuru
+r;cltr;cfrquHHjr;ccqq#L6jqu?`srW)iqr;cltr;cltq#LEoq#LHprVurur;c`pqZ-Zrq#L<l
+quHQmqu?`squ?`squ?`srW)osquH`rq#LBnq#LHpqu?`squD<JKE(r8!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZKns82iss82iss82iss7u]qs8Duus8E!#rr<'!r;cfrq#L?m
+qZ-NnrrDfnq>gBlqZ-QoquHWoqZ-Zrq#LHpr;ZitrVururVuruq#LHpr;cltr;cltqu?`srVuru
+r;cltr;cfrquHHjr;ccqq#L6jqu?`srW)iqr;cltr;cltq#LEoq#LHprVurur;c`pqZ-Zrq#L<l
+quHQmqu?`squ?`squ?`srW)osquH`rq#LBnq#LHpqu?`squD<JKE(r2!Q-jH~>
+!BpJ^mHsrH!7:cG!.k0$s+13$s-Wicm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0$s+13$s-WicklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0$s+13$s-WicirR%VJ,~>
+!BpJ^mHsrH!7:cG!.k0$s+13$s-Wicm/bd$J,~>
+!BU8[l0\ND!7:cG!.k0$s+13$s-WicklK'jJ,~>
+!B:&Xj6cm>!7:cG!.k0$s+13$s-WicirR%VJ,~>
+!BpJ^mBQ]h!.k0$s+13$s-iuem/bd$J,~>
+!BU8[l*:9d!.k0$s+13$s-iueklK'jJ,~>
+!B:&Xj0AX^!.k0$s+13$s-iueirR%VJ,~>
+!BpJ^mBQ]h!.k0$s+13$s-iuem/bd$J,~>
+!BU8[l*:9d!.k0$s+13$s-iueklK'jJ,~>
+!B:&Xj0AX^!.k0$s+13$s-iueirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!;?Hm!8mhV!;c`p!0@0[!.k0$s+14!s8MBdeieN~>
+!BU8[l(n@Z!;?Hm!8mhV!;c`p!0@0[!.k0$s+14!s8M6`c8pI~>
+!B:&Xj.u_T!;?Hm!8mhV!;c`p!0@0[!.k0$s+14!s8M$Z_`*)~>
+!BpJ^mFqU=!!<0#!7LoI!;?Hm!8mhV!;c`p!9sOZ!3cG&!.k0$s+14!s8MBdeieN~>
+!BU8[l.Z19!!<0#!7LoI!;?Hm!8mhV!;c`p!9sOZ!3cG&!.k0$s+14!s8M6`c8pI~>
+!B:&Xj4aP3!!<0#!7LoI!;?Hm!8mhV!;c`p!9sOZ!3cG&!.k0$s+14!s8M$Z_`*)~>
+!BpJ^mHsrH!;ull!7LoI!7LoI!;ZZp!9sOY!3lM'!.k0$s+14!s8MBdeieN~>
+!BU8[l0\ND!;ull!7LoI!7LoI!;ZZp!9sOY!3lM'!.k0$s+14!s8M6`c8pI~>
+!B:&Xj6cm>!;ull!7LoI!7LoI!;ZZp!9sOY!3lM'!.k0$s+14!s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utrr;rts8W#ts8VlprVucqr;Z`r
+!<;utr;Z]q!<<#uqu?HlrVult!<;utqu?Tpp](6nrVuisrVufrrVufrs8W&u!<<#u"9/?$s8E#s
+s8)fqs8Duus8;rps8;rrs8Duus8;rss7lYGs+13$s4@;Mm/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utrr;rts8W#ts8VlprVucqr;Z`r
+!<;utr;Z]q!<<#uqu?HlrVult!<;utqu?Tpp](6nrVuisrVufrrVufrs8W&u!<<#u"9/?$s8E#s
+s8)fqs8Duus8;rps8;rrs8Duus8;rss7lYGs+13$s4@;MklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utrr;rts8W#ts8VlprVucqr;Z`r
+!<;utr;Z]q!<<#uqu?HlrVult!<;utqu?Tpp](6nrVuisrVufrrVufrs8W&u!<<#u"9/?$s8E#s
+s8)fqs8Duus8;rps8;rrs8Duus8;rss7lYGs+13$s4@;MirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTos8E#us8;rts7lZns82lps7cTn
+s7cTks7lZns7lZos7lZjs8N)ss8N*!s7lZps6Kacs7lZps7cTns7lZps7cTos7lYGs+13$s4@;M
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTos8E#us8;rts7lZns82lps7cTn
+s7cTks7lZns7lZos7lZjs8N)ss8N*!s7lZps6Kacs7lZps7cTns7lZps7cTos7lYGs+13$s4@;M
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTos8E#us8;rts7lZns82lps7cTn
+s7cTks7lZns7lZos7lZjs8N)ss8N*!s7lZps6Kacs7lZps7cTns7lZps7cTos7lYGs+13$s4@;M
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8N)ps8E#ts8N*!s8E#ss8E#ps8N)ts8Duus8E#ss8E#t
+s8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)us8E#ts8N*!s8E#ss8E#us8E#ts8N)ts8N(Ms+13$
+s3q#Im/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8N)ps8E#ts8N*!s8E#ss8E#ps8N)ts8Duus8E#ss8E#t
+s8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)us8E#ts8N*!s8E#ss8E#us8E#ts8N)ts8N(Ms+13$
+s3q#IklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8N)ps8E#ts8N*!s8E#ss8E#ps8N)ts8Duus8E#ss8E#t
+s8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)us8E#ts8N*!s8E#ss8E#us8E#ts8N)ts8N(Ms+13$
+s3q#IirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s8N)rs8N)qs7lZps8N)rs8N)us8E#q
+s8N*!s8N*!s8N)ps8N)us8N)ts8N*!s8N)rs8N*!s8N)ts8N)ts8N(Ms+13$s3q#Im/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s8N)rs8N)qs7lZps8N)rs8N)us8E#q
+s8N*!s8N*!s8N)ps8N)us8N)ts8N*!s8N)rs8N*!s8N)ts8N)ts8N(Ms+13$s3q#IklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s8N)rs8N)qs7lZps8N)rs8N)us8E#q
+s8N*!s8N*!s8N)ps8N)us8N)ts8N*!s8N)rs8N*!s8N)ts8N)ts8N(Ms+13$s3q#IirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis7u`ps7ZNms8N)qs8N*!s8N*!
+s8N*!s7lZos8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#Im/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis7u`ps7ZNms8N)qs8N*!s8N*!
+s8N*!s7lZos8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#IklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis7u`ps7ZNms8N)qs8N*!s8N*!
+s8N*!s7lZos8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#IirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis8N)ps7ZNms8N)qs8N*!s8N*!
+s8N'!s7cTns8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#Im/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis8N)ps7ZNms8N)qs8N*!s8N*!
+s8N'!s7cTns8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#IklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N*!s8N)ts8N)t
+s8N)ms8N)rs8N)ts8N*!s8N)ss8N)os8N)ps8N)ts8N*!s7ZNis8N)ps7ZNms8N)qs8N*!s8N*!
+s8N'!s7cTns8N)ts8N*!s7ZNns8N)ts8N)ts8N(Ms+13$s3q#IirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#us8N)u
+s8E#ss8N)ts8N)ss8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N*!s8N)ts8N*!s8E#is8N)ps8E#m
+s8N)qs8N*!s8N*!s8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N)ts8N)ts8N(Ms+13$s4RGO
+m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#us8N)u
+s8E#ss8N)ts8N)ss8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N*!s8N)ts8N*!s8E#is8N)ps8E#m
+s8N)qs8N*!s8N*!s8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N)ts8N)ts8N(Ms+13$s4RGO
+klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#us8N)u
+s8E#ss8N)ts8N)ss8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N*!s8N)ts8N*!s8E#is8N)ps8E#m
+s8N)qs8N*!s8N*!s8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N)ts8N)ts8N(Ms+13$s4RGO
+irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7cTns7lZps7lZps8;rt
+s8;rts7lZis7lWps8;rts8;rts7lZks8)fns7lZps7lZps8;ots8Duus7?9ks8;rts8;rts7lZp
+s8;rts8;rss7lYGs+13$s4RGOm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7cTns7lZps7lZps8;rt
+s8;rts7lZis7lWps8;rts8;rts7lZks8)fns7lZps7lZps8;ots8Duus7?9ks8;rts8;rts7lZp
+s8;rts8;rss7lYGs+13$s4RGOklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7cTns7lZps7lZps8;rt
+s8;rts7lZis7lWps8;rts8;rts7lZks8)fns7lZps7lZps8;ots8Duus7?9ks8;rts8;rts7lZp
+s8;rts8;rss7lYGs+13$s4RGOirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;ccqr;ZitrW)osquH]q
+q#LHpr;cltr;cisr;Zp!!!)cnquH`rr;cltr;cfrqZ-KmqZ-HlqZ-Zrq#LHpr;ZitrVururVuru
+qu?`srVurur;cltr;cfrqZ-Zrr;cltr;cfrquD<JJcC<$fDkj;!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;ccqr;ZitrW)osquH]q
+q#LHpr;cltr;cisr;Zp!!!)cnquH`rr;cltr;cfrqZ-KmqZ-HlqZ-Zrq#LHpr;ZitrVururVuru
+qu?`srVurur;cltr;cfrqZ-Zrr;cltr;cfrquD<JJcC<$fDkj7!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;ccqr;ZitrW)osquH]q
+q#LHpr;cltr;cisr;Zp!!!)cnquH`rr;cltr;cfrqZ-KmqZ-HlqZ-Zrq#LHpr;ZitrVururVuru
+qu?`srVurur;cltr;cfrqZ-Zrr;cltr;cfrquD<JJcC<$fDkj1!Q-jH~>
+!BpJ^mHsrH!8IPR!65'=!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l0\ND!8IPR!65'=!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj6cm>!8IPR!65'=!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mHsrH!8IPR!6>-=!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l0\ND!8IPR!6>-=!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj6cm>!8IPR!6>-=!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mC`Js!6tQ@!.k0$s+13$s2k<?m/bd$J,~>
+!BU8[l+I&o!6tQ@!.k0$s+13$s2k<?klK'jJ,~>
+!B:&Xj1PEi!6tQ@!.k0$s+13$s2k<?irR%VJ,~>
+!BpJ^mC`Js!6tQA!.k0$s+13$s2b6>m/bd$J,~>
+!BU8[l+I&o!6tQA!.k0$s+13$s2b6>klK'jJ,~>
+!B:&Xj1PEi!6tQA!.k0$s+13$s2b6>irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!7LoI!;c`q!;c`p!7CiH!.k0$s+134s8MBdeieN~>
+!BU8[l+I&q!;6Bl!7LoI!;c`q!;c`p!7CiH!.k0$s+134s8M6`c8pI~>
+!B:&Xj1PEk!;6Bl!7LoI!;c`q!;c`p!7CiH!.k0$s+134s8M$Z_`*)~>
+!BpJ^mG7g?!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<h!<<)s!:'Ua!.k0$s+134s8MBdeieN~>
+!BU8[l.uC;!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<h!<<)s!:'Ua!.k0$s+134s8M6`c8pI~>
+!B:&Xj5'b5!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<h!<<)s!:'Ua!.k0$s+134s8M$Z_`*)~>
+!BpJ^mHsrH!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<h!<<)s!:'Ua!.k0$s+134s8MBdeieN~>
+!BU8[l0\ND!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<h!<<)s!:'Ua!.k0$s+134s8M6`c8pI~>
+!B:&Xj6cm>!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<h!<<)s!:'Ua!.k0$s+134s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!;lfr!<3#s!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro
+!.k0$s+13Zs8MBdeieN~>
+!BU8[l0\ND!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!;lfr!<3#s!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro
+!.k0$s+13Zs8M6`c8pI~>
+!B:&Xj6cm>!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!;lfr!<3#s!;lfp!!N<%!<<)p!;lfp!<)rr!<<)u!<)ro
+!.k0$s+13Zs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)rs8N'!s7lZos7lZps7lZns7lZps7ZNns7lYGs+13$s0r%-
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)rs8N'!s7lZos7lZps7lZns7lZps7ZNns7lYGs+13$s0r%-
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)rs8N'!s7lZos7lZps7lZns7lZps7ZNns7lYGs+13$s0r%-
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)os8N)ts8N'!s8E#ss8Duus8E#t
+s8E#ss8N)qs8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s0r%-m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)os8N)ts8N'!s8E#ss8Duus8E#t
+s8E#ss8N)qs8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s0r%-klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)os8N)ts8N'!s8E#ss8Duus8E#t
+s8E#ss8N)qs8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s0r%-irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os8N)ts8N'#rr<&rs8N'#rr<&ss8N)ts8N)q
+s8N)rs8N)us8E#ps8;qKs+13$s0Mb)m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os8N)ts8N'#rr<&rs8N'#rr<&ss8N)ts8N)q
+s8N)rs8N)us8E#ps8;qKs+13$s0Mb)klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os8N)ts8N'#rr<&rs8N'#rr<&ss8N)ts8N)q
+s8N)rs8N)us8E#ps8;qKs+13$s0Mb)irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)os8)eIs+13$s0ht,m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)os8)eIs+13$s0ht,klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)os8)eIs+13$s0ht,irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)ms82kJs+13$s0r%-m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)ms82kJs+13$s0r%-klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ns8N*!s8N*!s7ZKprr<&ms8N)qs8N)rs8N)u
+s8N)ms82kJs+13$s0r%-irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8;rss8E#os8E#ss8E#ts8N)ts8N'!
+s8E#ss8E#ts8N)ps8N)ts8N(Ms+13$s0r%-m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8;rss8E#os8E#ss8E#ts8N)ts8N'!
+s8E#ss8E#ts8N)ps8N)ts8N(Ms+13$s0r%-klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8;rss8E#os8E#ss8E#ts8N)ts8N'!
+s8E#ss8E#ts8N)ps8N)ts8N(Ms+13$s0r%-irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rls8;rrs7lZos7cTns7lZps7lZps7lZns7lYGs+13$s0r%-
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rls8;rrs7lZos7cTns7lZps7lZps7lZns7lYGs+13$s0r%-
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rls8;rrs7lZos7cTns7lZps7lZps7lZns7lYGs+13$s0r%-
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rks8N)qs8)fps8)fns82los8;rrs7lZns7u_Hs+13$
+s0ht,m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rks8N)qs8)fps8)fns82los8;rrs7lZns7u_Hs+13$
+s0ht,klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rks8N)qs8)fps8)fns82los8;rrs7lZns7u_Hs+13$
+s0ht,irR%VJ,~>
+!BpJ^mHsrH!4;e+!.k0$s+13$s0Vh*m/bd$J,~>
+!BU8[l0\ND!4;e+!.k0$s+13$s0Vh*klK'jJ,~>
+!B:&Xj6cm>!4;e+!.k0$s+13$s0Vh*irR%VJ,~>
+!BpJ^mHsrH!4Dk+!.k0$s+13$s0Vh*m/bd$J,~>
+!BU8[l0\ND!4Dk+!.k0$s+13$s0Vh*klK'jJ,~>
+!B:&Xj6cm>!4Dk+!.k0$s+13$s0Vh*irR%VJ,~>
+!BpJ^m@""O!.k0$s+13$s0Mb)m/bd$J,~>
+!BU8[l'_SK!.k0$s+13$s0Mb)klK'jJ,~>
+!B:&Xj-frE!.k0$s+13$s0Mb)irR%VJ,~>
+!BpJ^m@""P!.k0$s+13$s0D\(m/bd$J,~>
+!BU8[l'_SL!.k0$s+13$s0D\(klK'jJ,~>
+!B:&Xj-frF!.k0$s+13$s0D\(irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!7LoI!;c`q!;c`p!1!Ta!:0[b!.k0$s+143s8MBdeieN~>
+!BU8[l+I&q!;6Bl!7LoI!;c`q!;c`p!1!Ta!:0[b!.k0$s+143s8M6`c8pI~>
+!B:&Xj1PEk!;6Bl!7LoI!;c`q!;c`p!1!Ta!:0[b!.k0$s+143s8M$Z_`*)~>
+!BpJ^mG7g?!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!!<0#!6"p:!;ulr!;-<k!:0[b!.k0$
+s+143s8MBdeieN~>
+!BU8[l.uC;!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!!<0#!6"p:!;ulr!;-<k!:0[b!.k0$
+s+143s8M6`c8pI~>
+!B:&Xj5'b5!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!!<0#!6"p:!;ulr!;-<k!:0[b!.k0$
+s+143s8M$Z_`*)~>
+!BpJ^mHsrH!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6c!6"p:!;ulr!;-<k!.k0$s+13ps8MBdeieN~>
+!BU8[l0\ND!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6c!6"p:!;ulr!;-<k!.k0$s+13ps8M6`c8pI~>
+!B:&Xj6cm>!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6c!6"p:!;ulr!;-<k!.k0$s+13ps8M$Z_`*)~>
+!BpJ^mHsrH!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rs!<3#s!!*&u!!*&u!<<)t!<)rp!<3#s!<<)u!;ulq
+!;HNm!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s,$dTm/bd$J,~>
+!BU8[l0\ND!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rs!<3#s!!*&u!!*&u!<<)t!<)rp!<3#s!<<)u!;ulq
+!;HNm!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s,$dTklK'jJ,~>
+!B:&Xj6cm>!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rs!<3#s!!*&u!!*&u!<<)t!<)rp!<3#s!<<)u!;ulq
+!;HNm!<3#t!<3#q!<3#o!<3#s!<<)u!<3#r!;c`o!!<0#!;ulq!;lfm!.k0$s,$dTirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)ss8N*!s7cQos8E#us8;rss7lZps7ZNns7lZjs8E#ts8E#u
+s7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13,s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)ss8N*!s7cQos8E#us8;rss7lZps7ZNns7lZjs8E#ts8E#u
+s7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13,s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZjs8N)ss8N*!s7cQos8E#us8;rss7lZps7ZNns7lZjs8E#ts8E#u
+s7lZps7lZos7ZNns82los7lZos7lZos7lYGs+13,s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)ps82lps8E#ts8E#ts8N)ts8N)u
+s8N)ts8N)ts8;rts8N'!s8E#ss8E#ps8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#t
+s8E#us8E#ss8E#us8N)ts8N(Ms+13,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)ps82lps8E#ts8E#ts8N)ts8N)u
+s8N)ts8N)ts8;rts8N'!s8E#ss8E#ps8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#t
+s8E#us8E#ss8E#us8N)ts8N(Ms+13,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)ps82lps8E#ts8E#ts8N)ts8N)u
+s8N)ts8N)ts8;rts8N'!s8E#ss8E#ps8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#t
+s8E#us8E#ss8E#us8N)ts8N(Ms+13,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os7u`qs8N)ss8N)us8N)ts8N)os8N)ts8E#q
+s8N)rs8N)qs7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13(s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os7u`qs8N)ss8N)us8N)ts8N)os8N)ts8E#q
+s8N)rs8N)qs7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13(s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)os7u`qs8N)ss8N)us8N)ts8N)os8N)ts8E#q
+s8N)rs8N)qs7cTis8N)ts8N)os8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;qKs+13(s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ls82iurr<&ss8N)us8N)ts8N)us7lZns8N)q
+s7ZNis8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ls82iurr<&ss8N)us8N)ts8N)us7lZns8N)q
+s7ZNis8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ls82iurr<&ss8N)us8N)ts8N)us7lZns8N)q
+s7ZNis8N'!s8E!$rr<'!s7lZns8N)os8N)ms8N)ss8N)os7ZNms8)eIs+13+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ps8N)ss8N'#rr<&ss8N)us8N)ts8N*!s7cTm
+s8N)qs7ZNis8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcCT,rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ps8N)ss8N'#rr<&ss8N)us8N)ts8N*!s7cTm
+s8N)qs7ZNis8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcCT,rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ps8N)ss8N'#rr<&ss8N)us8N)ts8N*!s7cTm
+s8N)qs7ZNis8N*!rriE&rr<'!p]19mrrDiorrDcmrrDusrrDiopAk-kquD<JJcCT,ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8;rss8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)qs8E#is8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#n
+s8N)ts8N(Ms+13,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8;rss8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)qs8E#is8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#n
+s8N)ts8N(Ms+13,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8;rss8N'!s8E#ts8E#ts8N)us8E#u
+s8N)ss8N)ts8N)qs8E#is8N)ss8N'#rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#n
+s8N)ts8N(Ms+13,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZos7lZos7cQos7ZKns7lZns7lZks82iss7-0hs7lWp
+s7lZns7lZos7cTos7lZos7lYGs+13,s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZos7lZos7cQos7ZKns7lZns7lZks82iss7-0hs7lWp
+s7lZns7lZos7cTos7lZos7lYGs+13,s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZos7lZos7cQos7ZKns7lZns7lZks82iss7-0hs7lWp
+s7lZns7lZos7cTos7lZos7lYGs+13,s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;ros8N'!s8;rqs8;p!rr<&ts8;ots8E#us82iss8Duu
+s7lZls8)fms82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;ros8N'!s8;rqs8;p!rr<&ts8;ots8E#us82iss8Duu
+s7lZls8)fms82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;ros8N'!s8;rqs8;p!rr<&ts8;ots8E#us82iss8Duu
+s7lZls8)fms82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u_Hs+13+s8M$Z_`*)~>
+!BpJ^mHsrH!4;e+!4W".!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l0\ND!4;e+!4W".!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6cm>!4;e+!4W".!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^mHsrH!4Dk+!4W".!.k0$s+13$rrE)um/bd$J,~>
+!BU8[l0\ND!4Dk+!4W".!.k0$s+13$rrE)uklK'jJ,~>
+!B:&Xj6cm>!4Dk+!4W".!.k0$s+13$rrE)uirR%VJ,~>
+!BpJ^m@""O!4`(,!.k0$s+13$s8MBdeieN~>
+!BU8[l'_SK!4`(,!.k0$s+13$s8M6`c8pI~>
+!B:&Xj-frE!4`(,!.k0$s+13$s8M$Z_`*)~>
+!BpJ^m@""P!4W"+!.k0$s+13$s8MBdeieN~>
+!BU8[l'_SL!4W"+!.k0$s+13$s8M6`c8pI~>
+!B:&Xj-frF!4W"+!.k0$s+13$s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!Wm/bd$J,~>
+!BU8[l+I&q!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!WklK'jJ,~>
+!B:&Xj1PEk!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!WirR%VJ,~>
+!BpJ^mG7g?!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!8RVN!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',gm/bd$J,~>
+!BU8[l.uC;!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!8RVN!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',gklK'jJ,~>
+!B:&Xj5'b5!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!:g*f!8RVN!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',girR%VJ,~>
+!BpJ^mHsrH!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6d!8dbN!1<fd!;?Hi!.k0$s.02hm/bd$J,~>
+!BU8[l0\ND!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6d!8dbN!1<fd!;?Hi!.k0$s.02hklK'jJ,~>
+!B:&Xj6cm>!<)rq!<<)s!:0[b!5&:2!;ZZp!;$6d!8dbN!1<fd!;?Hi!.k0$s.02hirR%VJ,~>
+!BpJ^mHsrH!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rt!<<)u!!*&t!;lfp!:g*h!<)rt!<3#r!<)rs!!E6$
+!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&us8W#t
+s8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa:!S0Da~>
+!BU8[l0\ND!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rt!<<)u!!*&t!;lfp!:g*h!<)rt!<3#r!<)rs!!E6$
+!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&us8W#t
+s8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa6!R<`V~>
+!B:&Xj6cm>!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;QTo!<)rt!<<)u!!*&t!;lfp!:g*h!<)rt!<3#r!<)rs!!E6$
+!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&us8W#t
+s8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa0!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N)rs8N'!s7cTns7lZds8N)ss8N*!s82lqs7QHms7lZps7cTn
+s7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYGs+14$s8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N)rs8N'!s7cTns7lZds8N)ss8N*!s82lqs7QHms7lZps7cTn
+s7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYGs+14$s8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N)rs8N'!s7cTns7lZds8N)ss8N*!s82lqs7QHms7lZps7cTn
+s7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYGs+14$s8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N)rs8N*!s8E#ts8N*!s8E#s
+s8E#js8N)ss8N)ss8N)ss8Duus8E!#rr<'!rW)osrW)uurW)rtrrE&urrE#trrDrrrrDusrW)os
+rW)uurW)rtrrE&urrE#trrDrrrrD`lrrE*!rrDusr;cltrrE&ur;cltrrE*!rrE#trrE&urrE#t
+rrE&urrE#trr@WMJcF=$rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N)rs8N*!s8E#ts8N*!s8E#s
+s8E#js8N)ss8N)ss8N)ss8Duus8E!#rr<'!rW)osrW)uurW)rtrrE&urrE#trrDrrrrDusrW)os
+rW)uurW)rtrrE&urrE#trrDrrrrD`lrrE*!rrDusr;cltrrE&ur;cltrrE*!rrE#trrE&urrE#t
+rrE&urrE#trr@WMJcF=$rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N)rs8N*!s8E#ts8N*!s8E#s
+s8E#js8N)ss8N)ss8N)ss8Duus8E!#rr<'!rW)osrW)uurW)rtrrE&urrE#trrDrrrrDusrW)os
+rW)uurW)rtrrE&urrE#trrDrrrrD`lrrE*!rrDusr;cltrrE&ur;cltrrE*!rrE#trrE&urrE#t
+rrE&urrE#trr@WMJcF=$ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s8N)rs8N*!s7cTo
+s8N)ss8N)ss8N)ss8N*!s8N*!s8N'#rr<&rs8N*!s8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)t
+s8N)os8N)rs8N)ls8N*!s8N)ss8E#os8E#js8N)us8N)ts8N)us8;qKs+13us8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s8N)rs8N*!s7cTo
+s8N)ss8N)ss8N)ss8N*!s8N*!s8N'#rr<&rs8N*!s8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)t
+s8N)os8N)rs8N)ls8N*!s8N)ss8E#os8E#js8N)us8N)ts8N)us8;qKs+13us8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s8N)rs8N*!s7cTo
+s8N)ss8N)ss8N)ss8N*!s8N*!s8N'#rr<&rs8N*!s8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)t
+s8N)os8N)rs8N)ls8N*!s8N)ss8E#os8E#js8N)us8N)ts8N)us8;qKs+13us8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNns7cTos8N)s
+s8N)ss8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)us7lZl
+s8N)ms7lZns8N)os8N)ps7lZns8N*!s8N)ss8)eIs+14#s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNns7cTos8N)s
+s8N)ss8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)us7lZl
+s8N)ms7lZns8N)os8N)ps7lZns8N*!s8N)ss8)eIs+14#s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNns7cTos8N)s
+s8N)ss8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)us7lZl
+s8N)ms7lZns8N)os8N)ps7lZns8N*!s8N)ss8)eIs+14#s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNcs8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNcs8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)qs8N)rs8N*!s8N)ts8N*!s7ZNcs8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8N)ts8N)us8N)ts8N*!s8E#cs8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8N)ts8N)us8N)ts8N*!s8E#cs8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ps8N)ts8N)us8N)ts8N*!s8E#cs8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZps8;rts8;rts7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZps8;rts8;rts7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;ros7lZps8;rts8;rts7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rms8;rrs8;rts8;rrs8)fgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rms8;rrs8;rts8;rrs8)fgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rms8;rrs8;rts8;rrs8)fgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8M$Z_`*)~>
+!BpJ^mHsrH!4;e+!.k0$s7$'g!.k0$s2Y0=m/bd$J,~>
+!BU8[l0\ND!4;e+!.k0$s7$'g!.k0$s2Y0=klK'jJ,~>
+!B:&Xj6cm>!4;e+!.k0$s7$'g!.k0$s2Y0=irR%VJ,~>
+!BpJ^mHsrH!4Dk+!.k0$s7--h!.k0$s2P*<m/bd$J,~>
+!BU8[l0\ND!4Dk+!.k0$s7--h!.k0$s2P*<klK'jJ,~>
+!B:&Xj6cm>!4Dk+!.k0$s7--h!.k0$s2P*<irR%VJ,~>
+!BpJ^m@""O!.k0$s763e!.k0$s2b6>m/bd$J,~>
+!BU8[l'_SK!.k0$s763e!.k0$s2b6>klK'jJ,~>
+!B:&Xj-frE!.k0$s763e!.k0$s2b6>irR%VJ,~>
+!BpJ^m@""P!.k0$s7--d!.k0$s2b6>m/bd$J,~>
+!BU8[l'_SL!.k0$s7--d!.k0$s2b6>klK'jJ,~>
+!B:&Xj-frF!.k0$s7--d!.k0$s2b6>irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!Wm/bd$J,~>
+!BU8[l+I&q!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!WklK'jJ,~>
+!B:&Xj1PEk!;6Bl!7LoI!;c`q!;c`p!4i.0!6kKC!8@JN!.k0$s,@!WirR%VJ,~>
+!BpJ^mG7g?!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<c!8mhQ!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',gm/bd$J,~>
+!BU8[l.uC;!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<c!8mhQ!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',gklK'jJ,~>
+!B:&Xj5'b5!<<)s!:9ab!;6Bl!7LoI!;c`q!;c`p!;-<c!8mhQ!;ZZp!6kKC!8@JN!;?Hj!.k0$
+s.',girR%VJ,~>
+!BpJ^mHsrH!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<c!8mhO!1<fd!;?Hi!.k0$s.02hm/bd$J,~>
+!BU8[l0\ND!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<c!8mhO!1<fd!;?Hi!.k0$s.02hklK'jJ,~>
+!B:&Xj6cm>!<)rq!<<)s!:0[b!5&:2!;ZZp!;-<c!8mhO!1<fd!;?Hi!.k0$s.02hirR%VJ,~>
+!BpJ^mHsrH!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;ZZp!<<*!!<<*!!!*&t!<3#s!<3#s!:g*h!<)rt!<3#r!<)rs
+!!E6$!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&u
+s8W#ts8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa:!S0Da~>
+!BU8[l0\ND!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;ZZp!<<*!!<<*!!!*&t!<3#s!<3#s!:g*h!<)rt!<3#r!<)rs
+!!E6$!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&u
+s8W#ts8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa6!R<`V~>
+!B:&Xj6cm>!;uls!;lfr!<3#s!<)rr!<<)u!<3#u!<<)t!<3#r!;ulr!!*&t!;ulq!!*&u!;lfp
+!<3#s!!*&s!;ulm!<)rt!!*&t!;ZZp!<<*!!<<*!!!*&t!<3#s!<3#s!:g*h!<)rt!<3#r!<)rs
+!!E6$!<<#ur;Z]qrVuis!<;utr;ZTnrr;lrq>^BnrVuis!<;utr;ZWoqZ$Qqo`+jirVufrs8W&u
+s8W#ts8W&urVu`prr;oss8W#trr;fpJcC<$f)Pa0!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N*!s8N*!s8N'!s8;rss8;ots7lZds8N)ss8N*!s82lqs7QHm
+s7lZps7cTns7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYG
+s+14$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N*!s8N*!s8N'!s8;rss8;ots7lZds8N)ss8N*!s82lqs7QHm
+s7lZps7cTns7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYG
+s+14$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8N*!s8N'!s7lZps7ZNns8N*!s8;rss82lps7cTns7cTk
+s8;rss8;ots82lps7lZns7lZks8N*!s8N*!s8N'!s8;rss8;ots7lZds8N)ss8N*!s82lqs7QHm
+s7lZps7cTns7lZos82los7lZps7cTns7lZls8N)ks8;rrs7ZKns7ZNns7lZps8;rts8;rts7lYG
+s+14$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N*!s8N*!s8N*!s8N*!rriE&
+rr<'!rW)osrW)TjrrDusrrDusrrDusrVururW!'#!!*&u!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr
+!;ulr!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr!;6Bl!<<*!!;ulq!<<*!!<3#s!<<*!!<<*!!<)rt
+!<3#u!<)rt!<3#u!<)rt!.k0$s475Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N*!s8N*!s8N*!s8N*!rriE&
+rr<'!rW)osrW)TjrrDusrrDusrrDusrVururW!'#!!*&u!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr
+!;ulr!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr!;6Bl!<<*!!;ulq!<<*!!<3#s!<<*!!<<*!!<)rt
+!<3#u!<)rt!<3#u!<)rt!.k0$s475LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!s8N*!s82lqs8E#ts8;rts8N*!s8N'!s8E#os8N)rs8E#t
+s8N*!s8E#ts8E#os8N*!rr`?%rr<&ss8N)qs8N)ps8E#ts8N)qs8N*!s8N*!s8N*!s8N*!rriE&
+rr<'!rW)osrW)TjrrDusrrDusrrDusrVururW!'#!!*&u!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr
+!;ulr!<)rs!<<)u!<3#u!<3#u!<)rt!;lfr!;6Bl!<<*!!;ulq!<<*!!<3#s!<<*!!<<*!!<)rt
+!<3#u!<)rt!<3#u!<)rt!.k0$s475LirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<-#!!)orrrE*!rrE#trrE&ur;cTlrrDusrrDrrrrE*!rrE#t
+rrDiorrDrrrrD`lrrE*!rrDusrW)corW)TjrrE&urrE#trrE&ur;_EKJcF0urp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<-#!!)orrrE*!rrE#trrE&ur;cTlrrDusrrDrrrrE*!rrE#t
+rrDiorrDrrrrD`lrrE*!rrDusrW)corW)TjrrE&urrE#trrE&ur;_EKJcF0urojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'!s8;ots8;rps8N)us8E#ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<-#!!)orrrE*!rrE#trrE&ur;cTlrrDusrrDrrrrE*!rrE#t
+rrDiorrDrrrrD`lrrE*!rrDusrW)corW)TjrrE&urrE#trrE&ur;_EKJcF0uro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<'!pAk6nrrE#trrE#tqZ-KmrrDusrrDrrrrE*!rrE#trrE&u
+q#L<lrrDcmq#LBnrrDiorrDlpq#LBnrrE*!rrDusqZ)3IJcF:#rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<'!pAk6nrrE#trrE#tqZ-KmrrDusrrDrrrrE*!rrE#trrE&u
+q#L<lrrDcmq#LBnrrDiorrDlpq#LBnrrE*!rrDusqZ)3IJcF:#rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;ots8;rps8N)us8N)ps82lls8N)rs8N)ts8N*!s8N)s
+s8N)ps8N'!s8E!"rr<&ss8N)qs8N)ps8N)ts8N)ms8N)rs8N'!s8E!%rr<'!!!)orrrE*!p]1?o
+rrDusrrDusrrDusrrE*!rrE*!rr<'!pAk6nrrE#trrE#tqZ-KmrrDusrrDrrrrE*!rrE#trrE&u
+q#L<lrrDcmq#LBnrrDiorrDlpq#LBnrrE*!rrDusqZ)3IJcF:#ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ms8N)qs8Duus8E#us8N)rs8N)ks8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ms8N)qs8Duus8E#us8N)rs8N)ks8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8E#us8E!"rr<&rs8N)us8N)ps8N'!s8E#os8N)rs8N)ts8N*!
+s8N)ss8N)os8Duus8E#qs8N)qs8N)ps8N)ts8N)ms8N)qs8Duus8E#us8N)rs8N)ks8N)ss8N)s
+s8N)ss8N*!s8N*!s8N'!s7ZNns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N*!s7cTks8N)m
+s7lZns8N)os8N)qs7cTms8N'#rr<&ps82kJs+14$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8N)qs8Duus8E#us8E#ss8E#js8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8N)qs8Duus8E#us8E#ss8E#js8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8E#us8Duus8E#ss8E#ts8N)ps8N*!s8E#ps8N)rs8N)ts8N*!
+s8E#ts8E#ns8Duus8E#qs8N)qs8N)ts8N*!s8N)ts8N)ms8N)qs8Duus8E#us8E#ss8E#js8N)t
+s8N)rs8N)ss8N*!s8N*!s8N'!s8E#ns8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)ts8N)ts8N)os8N)qs8N)ss8N)ss8;rqs8N)ts8N(Ms+14$s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rns8)fos8N)us8N)us7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rns8)fos8N)us8N)us7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N*!s7lZps7lZos8E#ts8;rts7lZps8;rts8;rts7lZi
+s8N)us8N)us7lZns7lWps8;rts8;rns8)fos8N)us8N)us7lZes7cTns7lWps8;ots8Duus8Duu
+s7lZps8;rts8;rts7lZos7lZos7lZps8;rts8;ots7ZNns7lZls82lss7?<js7lZos7ZNls8E#q
+s7lYGs+14$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rns8)fos8N)us8N)ss8;rgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rns8)fos8N)us8N)ss8;rgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)ts8;rrs7lZos8E#ts8;rts7lZps8;rts8;rss8;p!
+rr<&os8N)us8N)us7lZms82lrs8;rts8;rns8)fos8N)us8N)ss8;rgs7u`ns7lWps8;ots8Duu
+s8E#ts8)frs8;rts8;rts7u`os7lZms8;rrs8;rts8;rts82iss8E#us7lZls82lss7?<js7lZn
+s82iss8E#ss8N)qs7u_Hs+14#s8M$Z_`*)~>
+!BpJ^mHsrH!4;e+!.k0$s7$'g!.k0$s2Y0=m/bd$J,~>
+!BU8[l0\ND!4;e+!.k0$s7$'g!.k0$s2Y0=klK'jJ,~>
+!B:&Xj6cm>!4;e+!.k0$s7$'g!.k0$s2Y0=irR%VJ,~>
+!BpJ^mHsrH!4Dk+!.k0$s7--h!.k0$s2P*<m/bd$J,~>
+!BU8[l0\ND!4Dk+!.k0$s7--h!.k0$s2P*<klK'jJ,~>
+!B:&Xj6cm>!4Dk+!.k0$s7--h!.k0$s2P*<irR%VJ,~>
+!BpJ^m@""O!.k0$s763e!.k0$s2b6>m/bd$J,~>
+!BU8[l'_SK!.k0$s763e!.k0$s2b6>klK'jJ,~>
+!B:&Xj-frE!.k0$s763e!.k0$s2b6>irR%VJ,~>
+!BpJ^m@""P!.k0$s7--d!.k0$s2b6>m/bd$J,~>
+!BU8[l'_SL!.k0$s7--d!.k0$s2b6>klK'jJ,~>
+!B:&Xj-frF!.k0$s7--d!.k0$s2b6>irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m>V)F!8IPR!9aC[!6kKC!:^$d!8[\P!9=+Z!:0[b!87DP!.k0$s4mYRm/bd$J,~>
+!BU8[l&>ZB!8IPR!9aC[!6kKC!:^$d!8[\P!9=+Z!:0[b!87DP!.k0$s4mYRklK'jJ,~>
+!B:&Xj,F$<!8IPR!9aC[!6kKC!:^$d!8[\P!9=+Z!:0[b!87DP!.k0$s4mYRirR%VJ,~>
+!BpJ^mFqU=!!<0#!4r41!8IPR!<3#o!:p0f!6kKC!:^$d!8dbP!;lfq!;ulr!;-<k!:0[b!87DP
+!.k0$s4mYRm/bd$J,~>
+!BU8[l.Z19!!<0#!4r41!8IPR!<3#o!:p0f!6kKC!:^$d!8dbP!;lfq!;ulr!;-<k!:0[b!87DP
+!.k0$s4mYRklK'jJ,~>
+!B:&Xj4aP3!!<0#!4r41!8IPR!<3#o!:p0f!6kKC!:^$d!8dbP!;lfq!;ulr!;-<k!:0[b!87DP
+!.k0$s4mYRirR%VJ,~>
+!BpJ^mHsrH!;ull!0dH_!<)rm!:^$g!4Mq-!8dbU!;?Hl!;ulr!;-<k!5SX7!.k0$s5!_Sm/bd$
+J,~>
+!BU8[l0\ND!;ull!0dH_!<)rm!:^$g!4Mq-!8dbU!;?Hl!;ulr!;-<k!5SX7!.k0$s5!_SklK'j
+J,~>
+!B:&Xj6cm>!;ull!0dH_!<)rm!:^$g!4Mq-!8dbU!;?Hl!;ulr!;-<k!5SX7!.k0$s5!_SirR%V
+J,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!<3#s!<<)t!<)rr!<)rr!<<)u!<)ro!<3#r!;ZZn
+!<)rs!!*&t!;-<k!;uls!<)rs!<)rr!;ZZp!;ulq!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#u
+rr;lrqZ$EmqZ$QqqZ$Blp](0lr;ZQmq>^Eorr;rtrr;iqrr;corr;oss8W&urr;lrqZ$Ko!ri6#
+r;Z]qqu?Kmr;ZcsJcC<$h>dKA!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!<3#s!<<)t!<)rr!<)rr!<<)u!<)ro!<3#r!;ZZn
+!<)rs!!*&t!;-<k!;uls!<)rs!<)rr!;ZZp!;ulq!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#u
+rr;lrqZ$EmqZ$QqqZ$Blp](0lr;ZQmq>^Eorr;rtrr;iqrr;corr;oss8W&urr;lrqZ$Ko!ri6#
+r;Z]qqu?Kmr;ZcsJcC<$h>dK=!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!<3#s!<<)t!<)rr!<)rr!<<)u!<)ro!<3#r!;ZZn
+!<)rs!!*&t!;-<k!;uls!<)rs!<)rr!;ZZp!;ulq!<<)t!!*&u!!*&t!;lfp!<3#t!!E6$!<<#u
+rr;lrqZ$EmqZ$QqqZ$Blp](0lr;ZQmq>^Eorr;rtrr;iqrr;corr;oss8W&urr;lrqZ$Ko!ri6#
+r;Z]qqu?Kmr;ZcsJcC<$h>dK7!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos8;rts8;rts7lZps7ZNns7lZos82lo
+s7lZps7cTfs8N)rs8N)ss8N*!s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)r
+s7lZjs7lZos7lZjs8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lZls8N(Ms+14,s8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos8;rts8;rts7lZps7ZNns7lZos82lo
+s7lZps7cTfs8N)rs8N)ss8N*!s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)r
+s7lZjs7lZos7lZjs8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lZls8N(Ms+14,s8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos8;rts8;rts7lZps7ZNns7lZos82lo
+s7lZps7cTfs8N)rs8N)ss8N*!s7lZls8N)ss8;rts8;ots7cTns7lWps7QHms82los7lZls8N)r
+s7lZjs7lZos7lZjs8E#ts8E#us7lZps7lZos7ZNns82los7lZos7lZos7lZls8N(Ms+14,s8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)ms8N)rs8N)ts8Duus8E#ss8E#rs8N)rs8N)t
+s8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)rs8N)ts8N)qs8E#s
+s8E#ss8N)ls8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)t
+s8N)rs8N(Ms+14,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)ms8N)rs8N)ts8Duus8E#ss8E#rs8N)rs8N)t
+s8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)rs8N)ts8N)qs8E#s
+s8E#ss8N)ls8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)t
+s8N)rs8N(Ms+14,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)us8N)ts8N*!s8E#ss8E#ts8;rt
+s8N*!s8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)ms8N)rs8N)ts8Duus8E#ss8E#rs8N)rs8N)t
+s8N)us8E#ts8N*!s8E#ss8Duus8Duus8E!"rr<&ss8N)rs8N)ts8N)rs8N)rs8N)ts8N)qs8E#s
+s8E#ss8N)ls8;ots8;rts8N)ts8N)ts8N)os8;rts8N)ss8N)ss8E#ts8E#us8E#ss8E#us8N)t
+s8N)rs8N(Ms+14,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N)us8E#p
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!
+s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)rs8N)rs8;rks8N)rs8N)ts8N)ls7cTis8N)ts8N)o
+s8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;rls8N(Ms+14,s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N)us8E#p
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!
+s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)rs8N)rs8;rks8N)rs8N)ts8N)ls7cTis8N)ts8N)o
+s8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;rls8N(Ms+14,s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)us8N)ts8N*!s8N)rs8N)us8E#p
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7lZps8N)rs8N)ss8N)rs8N)ts8N)us8N)ts8N*!
+s8N)rs8N'+rr<'!rr<'!rr<&ss8N)ls8N)rs8N)rs8;rks8N)rs8N)ts8N)ls7cTis8N)ts8N)o
+s8E#ms8N)ss8N)ss8N*!s8N)rs8N*!s8;rls8N(Ms+14,s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)os8)fm
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)qs8)fls8N)rs8N)ts8N)ls8N'!s8E!$rr<'!s7lZn
+s8N)os8N)ms8N)ss8N)os7ZNms8)fms8N(Ms+14,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)os8)fm
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)qs8)fls8N)rs8N)ts8N)ls8N'!s8E!$rr<'!s7lZn
+s8N)os8N)ms8N)ss8N)os7ZNms8)fms8N(Ms+14,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)os8)fm
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs7u`ps8N)rs8N)ss8N)qs8N*!s8N)ts8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)rs7lZls8N)qs8)fls8N)rs8N)ts8N)ls8N'!s8E!$rr<'!s7lZn
+s8N)os8N)ms8N)ss8N)os7ZNms8)fms8N(Ms+14,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)ms82lo
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)ss7cTks8N)os82lns8N)rs8N)ts8N)ls8N*!rriE&rr<'!p]19m
+rrDiorrDcmrrDusrrDiopAk-kquHWorr@WMJcFU,rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)ms82lo
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)ss7cTks8N)os82lns8N)rs8N)ts8N)ls8N*!rriE&rr<'!p]19m
+rrDiorrDcmrrDusrrDiopAk-kquHWorr@WMJcFU,rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N*!s8N)us7ZNms8N)ms82lo
+s8N)ss8N)rs8N*!s8N)ts8N)ms8N)rs8N)ps8N)rs8N)ss8N)qs8N'#rr<&ss8N)ts8N*!s8N)r
+s8N'+rr<'!rr<'!rr<&ss8N)ss7cTks8N)os82lns8N)rs8N)ts8N)ls8N*!rriE&rr<'!p]19m
+rrDiorrDcmrrDusrrDiopAk-kquHWorr@WMJcFU,ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ss8;rrs8E#ms8N)ps8N)t
+s8N)rs8N)ss8E#ss8E#us8N)ts8N)ms8N)rs8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#s
+s8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)rs8N)ts8N)qs8E#ss8E#ss8N)ls8N)ss8N'#
+rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N)rs8N(Ms+14,s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ss8;rrs8E#ms8N)ps8N)t
+s8N)rs8N)ss8E#ss8E#us8N)ts8N)ms8N)rs8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#s
+s8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)rs8N)ts8N)qs8E#ss8E#ss8N)ls8N)ss8N'#
+rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N)rs8N(Ms+14,s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ss8;rrs8E#ms8N)ps8N)t
+s8N)rs8N)ss8E#ss8E#us8N)ts8N)ms8N)rs8N)ps8E#ss8E#rs8N)ps8;rqs8N)ts8N*!s8E#s
+s8E!*rr<'!rr<'!rr<&ss8N)ss8N)ss8N)rs8N)rs8N)ts8N)qs8E#ss8E#ss8N)ls8N)ss8N'#
+rr<&ss8N)ts8N)ts8N)us8N)ms8N)ss8E#ss8Duus8E#ns8N)ts8N)rs8N(Ms+14,s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rrs8;rqs7lZps7lZns7lZos7lZos7lZp
+s8;rts8;rls8N)ss8)fns7lZos7lZms8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNn
+s7lZos7lZjs7lZos7lZks82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lZls8N(Ms+14,s8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rrs8;rqs7lZps7lZns7lZos7lZos7lZp
+s8;rts8;rls8N)ss8)fns7lZos7lZms8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNn
+s7lZos7lZjs7lZos7lZks82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lZls8N(Ms+14,s8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rrs8;rqs7lZps7lZns7lZos7lZos7lZp
+s8;rts8;rls8N)ss8)fns7lZos7lZms8E#rs8;rts8;rts7lWps8;ots8Duus8Duus7lZps7ZNn
+s7lZos7lZjs7lZos7lZks82iss7-0hs7lWps7lZns7lZos7cTos7lZos7lZls8N(Ms+14,s8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rqs8N)ps8)frs7lZns7u`os7lZms8;rr
+s8;rts8;rks8N)ts8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82is
+s8E#us7lZos7u`hs8;rqs7lZks82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u`m
+s8N(Ms+14+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rqs8N)ps8)frs7lZns7u`os7lZms8;rr
+s8;rts8;rks8N)ts8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82is
+s8E#us7lZos7u`hs8;rqs7lZks82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u`m
+s8N(Ms+14+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rqs8N)ps8)frs7lZns7u`os7lZms8;rr
+s8;rts8;rks8N)ts8)fls8;rqs7lZms8N)rs8;rts8;rrs8;rss8;ots8Duus8Duus7lZos82is
+s8E#us7lZos7u`hs8;rqs7lZks82iss82iss82iss8E#ss82lrs7lZns7lZns8)fns8)fqs7u`m
+s8N(Ms+14+s8M$Z_`*)~>
+!BpJ^mHsrH!/:IQ!87DP!.k0Vs8N(Ms+14+s8MBdeieN~>
+!BU8[l0\ND!/:IQ!87DP!.k0Vs8N(Ms+14+s8M6`c8pI~>
+!B:&Xj6cm>!/:IQ!87DP!.k0Vs8N(Ms+14+s8M$Z_`*)~>
+!BpJ^mHsrH!/1CP!8IPR!.k0Vs8N(Ms+14*s8MBdeieN~>
+!BU8[l0\ND!/1CP!8IPR!.k0Vs8N(Ms+14*s8M6`c8pI~>
+!B:&Xj6cm>!/1CP!8IPR!.k0Vs8N(Ms+14*s8M$Z_`*)~>
+!BpJ^m=G;us8N)Ts8)eIs0_n,!.k0$s4mYRm/bd$J,~>
+!BU8[l%/lqs8N)Ts8)eIs0_n,!.k0$s4mYRklK'jJ,~>
+!B:&Xj+76ks8N)Ts8)eIs0_n,!.k0$s4mYRirR%VJ,~>
+!BpJ^m=G;Os8)eIs+13$s,R-Ym/bd$J,~>
+!BU8[l%/lKs8)eIs+13$s,R-YklK'jJ,~>
+!B:&Xj+76Es8)eIs+13$s,R-YirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71numberpage.eps b/books/ps/v71numberpage.eps
new file mode 100644
index 0000000..5cf97ff
--- /dev/null
+++ b/books/ps/v71numberpage.eps
@@ -0,0 +1,3689 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: numberspage.eps
+%%CreationDate: Sat Jun 21 11:08:08 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 597
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 582.71192192525223 translate
+681.59055118110246 -582.71192192525223 scale
+% Image geometry
+710 607 8
+% Transformation matrix
+[ 710 0 0 607 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       208343 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+m/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+klK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls-s&g!.k0B
+rriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+irR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGNF
+r;c3a!!(sWrW)uur;c']!!(jTp],mFc2RbDrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGNF
+r;c3a!!(sWrW)uur;c']!!(jTp],mFc2RbDrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcGNF
+r;c3a!!(sWrW)uur;c']!!(jTp],mFc2RbDrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&crr<&Vs8N)trr<&^rr<&Trr<&urr<&urr<%Ms31KH!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&crr<&Vs8N)trr<&^rr<&Trr<&urr<&urr<%Ms31KH!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1B
+rr<&crr<&Vs8N)trr<&^rr<&Trr<&urr<&urr<%Ms31KH!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGHD!W`6#b5VMCrrE&u!!)3^!!(jT!!*#u!!*#u!!%TMc2RbDrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGHD!W`6#b5VMCrrE&u!!)3^!!(jT!!*#u!!*#u!!%TMc2RbDrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGHD!W`6#b5VMCrrE&u!!)3^!!(jT!!*#u!!*#u!!%TMc2RbDrr3'#rrE)u!!<0#s8E!F
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<;lq(B4C7!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1C
+rrN3#!;ulr!<<)u!;ulr!;ZZn!<)rt!!`H'!<<'!!;QQq!<3&urr<&us8N)ts8N*!s8N''rr<'!
+rr<&trrE-"r;c`pr;ccqrVururW)`n!!*#u!!*#u!W`9#rW)rtrW)uurr<'!r;c`pr;c]or;Zlu
+!.k1ErriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr3]5rrE'!rrE'!rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBd
+eieN~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1C
+rrN3#!;ulr!<<)u!;ulr!;ZZn!<)rt!!`H'!<<'!!;QQq!<3&urr<&us8N)ts8N*!s8N''rr<'!
+rr<&trrE-"r;c`pr;ccqrVururW)`n!!*#u!!*#u!W`9#rW)rtrW)uurr<'!r;c`pr;c]or;Zlu
+!.k1ErriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr3]5rrE'!rrE'!rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`
+c8pI~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1C
+rrN3#!;ulr!<<)u!;ulr!;ZZn!<)rt!!`H'!<<'!!;QQq!<3&urr<&us8N)ts8N*!s8N''rr<'!
+rr<&trrE-"r;c`pr;ccqrVururW)`n!!*#u!!*#u!W`9#rW)rtrW)uurr<'!r;c`pr;c]or;Zlu
+!.k1ErriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr3]5rrE'!rrE'!rrE'!rrE'!rrE'!s7cR.rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z
+_`*)~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGKE!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)utrrE*!rrE*!!!)ip"p"]'!<<'!rVlit
+r;Q`srr;uus8W*!s8N'!rr;uurVlitrVlitrVlitqu?Zrrr2rup&>!lqYpNqr;Q`srVultrVlit
+rVlitrVlitr;Q`srVultJcGNF!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGKE!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)utrrE*!rrE*!!!)ip"p"]'!<<'!rVlit
+r;Q`srr;uus8W*!s8N'!rr;uurVlitrVlitrVlitqu?Zrrr2rup&>!lqYpNqr;Q`srVultrVlit
+rVlitrVlitr;Q`srVultJcGNF!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcGKE!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)utrrE*!rrE*!!!)ip"p"]'!<<'!rVlit
+r;Q`srr;uus8W*!s8N'!rr;uurVlitrVlitrVlitqu?Zrrr2rup&>!lqYpNqr;Q`srVultrVlit
+rVlitrVlitr;Q`srVultJcGNF!!*#u!s&?$s8E!"rrE)u!%.^GrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8E#srtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!
+!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7ZHm!<2uu!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruq>UX!s8N*!rrE#t!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;uis!:^!g!;c]q!;uis!<)ot!;lcu!<<'!qu6WrrVlitr;Q`sJcGKE"T\Q&rrE)s!!*&s
+!!<0#s7u]srrE)u!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!
+n,O%"!<3'!!<3'!!<3'!!<3'!rVururp9a;4b*~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7ZHm!<2uu!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruq>UX!s8N*!rrE#t!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;uis!:^!g!;c]q!;uis!<)ot!;lcu!<<'!qu6WrrVlitr;Q`sJcGKE"T\Q&rrE)s!!*&s
+!!<0#s7u]srrE)u!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!
+n,O%"!<3'!!<3'!!<3'!!<3'!rVururojI/3e.~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls7ZHm!<2uu!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruq>UX!s8N*!rrE#t!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$
+!;lcr!;uis!:^!g!;c]q!;uis!<)ot!;lcu!<<'!qu6WrrVlitr;Q`sJcGKE"T\Q&rrE)s!!*&s
+!!<0#s7u]srrE)u!!*&u!!*&u!!<0#s7u]urrE'!s8E#urr<&urt,82!<3'!!<3'!!<3'!!<3'!
+n,O%"!<3'!!<3'!!<3'!!<3'!rVururo4$s2h1~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!!)rs!!)orrrDfn!!)or!!)or!!*#u
+!!*#u!!*#u!!)ip!!*#u!W`6#rVlitr;Q`srr2rurr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Ig
+q>UEprr2rur;Q`squ6]ts8Vlpr;Z`rJcGEC!!*#u!s&?$s7cQqrrE)o!!*&k!!*&o!!<0#s8E#s
+rt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!!)rs!!)orrrDfn!!)or!!)or!!*#u
+!!*#u!!*#u!!)ip!!*#u!W`6#rVlitr;Q`srr2rurr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Ig
+q>UEprr2rur;Q`squ6]ts8Vlpr;Z`rJcGEC!!*#u!s&?$s7cQqrrE)o!!*&k!!*&o!!<0#s8E#s
+rt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcGNF!!)rs!!)orrrDfn!!)or!!)or!!*#u
+!!*#u!!*#u!!)ip!!*#u!W`6#rVlitr;Q`srr2rurr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Ig
+q>UEprr2rur;Q`squ6]ts8Vlpr;Z`rJcGEC!!*#u!s&?$s7cQqrrE)o!!*&k!!*&o!!<0#s8E#s
+rt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cQi!;lfr!;HKn!;lcr!;lcr
+!<2uu!<2uu!<2uu!;ZWp!<3!"!<3&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)Ng
+!!)ip!!*#u!!)rs!!)or!s&B$!:p0i!.k1DrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$
+J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cQi!;lfr!;HKn!;lcr!;lcr
+!<2uu!<2uu!<2uu!;ZWp!<3!"!<3&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)Ng
+!!)ip!!*#u!!)rs!!)or!s&B$!:p0i!.k1DrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'j
+J,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls7cQi!;lfr!;HKn!;lcr!;lcr
+!<2uu!<2uu!<2uu!;ZWp!<3!"!<3&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)Ng
+!!)ip!!*#u!!)rs!!)or!s&B$!:p0i!.k1DrriE&!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u
+!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%V
+J,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>UEp
+qYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<&prr<&ts8N)trr<&srr<&urr<&urr<&u
+rr<&urr<&rrrW9$rrD`l!!)Ng!!)fo!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms7lTo!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>UEp
+qYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<&prr<&ts8N)trr<&srr<&urr<&urr<&u
+rr<&urr<&rrrW9$rrD`l!!)Ng!!)fo!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms7lTo!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLq>UEp
+qYpNqrVls"s8N)orr<&rrr<&rrr<&urr<&urr<&urr<&prr<&ts8N)trr<&srr<&urr<&urr<&u
+rr<&urr<&rrrW9$rrD`l!!)Ng!!)fo!W`6#qu6Wrqu6`us8N)mrr<&srr<%Ms7lTo!<3!#!<3'!
+rW!$"!<<#u!<;rs!ri9#rVurun,NOi!<<#u!ri9#rW)os'`e76rrE'!rrE'!rrE'!rrE'!rrE)i
+!##;3rrE'!rrE'!rrE'!rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Frr<&qrr<&urr<&t
+rr<&prr<&qrr<&trr<&trr<&urr<&urr<&prr<&ts8N)trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&grr<&orrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!.k1ErriE&!<3'!
+qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!
+rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Frr<&qrr<&urr<&t
+rr<&prr<&qrr<&trr<&trr<&urr<&urr<&prr<&ts8N)trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&grr<&orrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!.k1ErriE&!<3'!
+qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!
+rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1Frr<&qrr<&urr<&t
+rr<&prr<&qrr<&trr<&trr<&urr<&urr<&prr<&ts8N)trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&grr<&orrN3#!;lfr!<)ot!<)ot!<)rt!<)rt!<)ot!.k1ErriE&!<3'!
+qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!
+rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLqZ$Korr;os
+!<<#us8W&urVu]or;Z]qrVuiss8W*!s8W*!qu?Tprr2rur;Z]q"9/?$s8E#us8N*!s8N'$rr<'!
+r;c`pr;ccqq>g6hquHQm!!)lq!<E/u!;lfp!;lcs!<;utJcGKE!!*#u!s&?$s8E!"rrE)u!!*&s
+!!<0#s8Duus69RcrrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!
+!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLqZ$Korr;os
+!<<#us8W&urVu]or;Z]qrVuiss8W*!s8W*!qu?Tprr2rur;Z]q"9/?$s8E#us8N*!s8N'$rr<'!
+r;c`pr;ccqq>g6hquHQm!!)lq!<E/u!;lfp!;lcs!<;utJcGKE!!*#u!s&?$s8E!"rrE)u!!*&s
+!!<0#s8Duus69RcrrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!
+!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLqZ$Korr;os
+!<<#us8W&urVu]or;Z]qrVuiss8W*!s8W*!qu?Tprr2rur;Z]q"9/?$s8E#us8N*!s8N'$rr<'!
+r;c`pr;ccqq>g6hquHQm!!)lq!<E/u!;lfp!;lcs!<;utJcGKE!!*#u!s&?$s8E!"rrE)u!!*&s
+!!<0#s8Duus69RcrrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!
+!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s5s=]
+!;c]q!.k1)rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!
+rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s5s=]
+!;c]q!.k1)rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!
+rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s5s=]
+!;c]q!.k1)rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<<#u$NC,+!<3'!!<3'!
+rW)uu!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcFs6
+!!)ip!!%TMh#@?Srr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!
+!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcFs6
+!!)ip!!%TMh#@?Srr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!
+!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcFs6
+!!)ip!!%TMh#@?Srr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!rT)rrE'!rrE)u!<)p4!<3'!
+!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s6'C^!;ZWp
+!.k1)rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+m/bd$J,~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s6'C^!;ZWp
+!.k1)rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+klK'jJ,~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s6'C^!;ZWp
+!.k1)rriE&!<3'!qu?`squ?`squ?`srW!$"!<<#u!<<#u!<<#u!<;rs!ri9#rW!$"!<<#us8N'!
+rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u
+irR%VJ,~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG'9quHWor;_EKhZ!QUrr3'#
+rrE)u!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG'9quHWor;_EKhZ!QUrr3'#
+rrE)u!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcG'9quHWor;_EKhZ!QUrr3'#
+rrE)u!!<0#s8E!"rrE)o!!*&k!!*&o!!<0#s8E#ss#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG\*F!9=+X!;$6h!;c`o!.k1As8;rNs8N(Ms5j:\!2]_o!:^$g!;HNl!.k1Lm/bd$J,~>
+!BU8[l/D[B!9=+X!;$6h!;c`o!.k1As8;rNs8N(Ms5j:\!2]_o!:^$g!;HNl!.k1LklK'jJ,~>
+!B:&Xj5L%<!9=+X!;$6h!;c`o!.k1As8;rNs8N(Ms5j:\!2]_o!:^$g!;HNl!.k1LirR%VJ,~>
+!BpJ^mHjlJ!<2uu!9F.[!:9^c!;HKn!9*qX!8[YT!4r11!7_#K!.k1;rr<&prr<&$rr<&nrr<&f
+rr<&krr<&^rr<%hs8MBdeieN~>
+!BU8[l0SHF!<2uu!9F.[!:9^c!;HKn!9*qX!8[YT!4r11!7_#K!.k1;rr<&prr<&$rr<&nrr<&f
+rr<&krr<&^rr<%hs8M6`c8pI~>
+!B:&Xj6Zg@!<2uu!9F.[!:9^c!;HKn!9*qX!8[YT!4r11!7_#K!.k1;rr<&prr<&$rr<&nrr<&f
+rr<&krr<&^rr<%hs8M$Z_`*)~>
+!BpJ^mHjiQ!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!9*qX!8[YT!5&72!7UrJ!.k1;rr<&prr<&$
+rr<&nrr<&frr<&krr<&^rr<%hs8MBdeieN~>
+!BU8[l0SEM!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!9*qX!8[YT!5&72!7UrJ!.k1;rr<&prr<&$
+rr<&nrr<&frr<&krr<&^rr<%hs8M6`c8pI~>
+!B:&Xj6ZdG!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!9*qX!8[YT!5&72!7UrJ!.k1;rr<&prr<&$
+rr<&nrr<&frr<&krr<&^rr<%hs8M$Z_`*)~>
+!BpJ^mHjiQ!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!5/=3!5&72!7UrJ!.k1;rr<&prr<%nrr<&f
+rr<&krr<%Ms8MBdeieN~>
+!BU8[l0SEM!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!5/=3!5&72!7UrJ!.k1;rr<&prr<%nrr<&f
+rr<&krr<%Ms8M6`c8pI~>
+!B:&Xj6ZdG!<2uu!<2uu!<2uu!9O4\!:0Xb!;HKn!5/=3!5&72!7UrJ!.k1;rr<&prr<%nrr<&f
+rr<&krr<%Ms8M$Z_`*)~>
+!BpJ^mHjiQ!<2uu!<2uu!<3!!!<;utqu?TppAashr;Z]qq#:<op\t3nq>^Bnr;Z`rrr;rtrVuis
+qu?Zr!<;utqu?Tp!ri6#q>^9krr;rtrr;rts8W*!!<;utqu?TpqZ$Ko!WN/os8;rps7u`ks8N'!
+s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVururW)iqr;Zlu!;HNl!;ulr!!*&u
+!;lfp!;6Bj!<)rt!!`H'!<<'!!;ulq!;uls!!*&t!;lfp!!<0#!;ZZk!<)ou!<;utqu?TpqZ$Ko
+!WN/ts8;rjs8;rqs8E#ts8E#ss8;ros8E#mrr<&ps8;rprrE-"r;cZn!!)ipr;cNjrW)iqrr<'!
+r;`hsrp9a;4b*~>
+!BU8[l0SEM!<2uu!<2uu!<3!!!<;utqu?TppAashr;Z]qq#:<op\t3nq>^Bnr;Z`rrr;rtrVuis
+qu?Zr!<;utqu?Tp!ri6#q>^9krr;rtrr;rts8W*!!<;utqu?TpqZ$Ko!WN/os8;rps7u`ks8N'!
+s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVururW)iqr;Zlu!;HNl!;ulr!!*&u
+!;lfp!;6Bj!<)rt!!`H'!<<'!!;ulq!;uls!!*&t!;lfp!!<0#!;ZZk!<)ou!<;utqu?TpqZ$Ko
+!WN/ts8;rjs8;rqs8E#ts8E#ss8;ros8E#mrr<&ps8;rprrE-"r;cZn!!)ipr;cNjrW)iqrr<'!
+r;`hsrojI/3e.~>
+!B:&Xj6ZdG!<2uu!<2uu!<3!!!<;utqu?TppAashr;Z]qq#:<op\t3nq>^Bnr;Z`rrr;rtrVuis
+qu?Zr!<;utqu?Tp!ri6#q>^9krr;rtrr;rts8W*!!<;utqu?TpqZ$Ko!WN/os8;rps7u`ks8N'!
+s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVururW)iqr;Zlu!;HNl!;ulr!!*&u
+!;lfp!;6Bj!<)rt!!`H'!<<'!!;ulq!;uls!!*&t!;lfp!!<0#!;ZZk!<)ou!<;utqu?TpqZ$Ko
+!WN/ts8;rjs8;rqs8E#ts8E#ss8;ros8E#mrr<&ps8;rprrE-"r;cZn!!)ipr;cNjrW)iqrr<'!
+r;`hsro4$s2h1~>
+!BpJ^mHFQM!;c`q!<)ot!<)ot!<)ot!;6?l!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;uis!;uis
+!;c]q!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;c]q!;-<k!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu
+!<)ot!<)rt!;QQo!<)ot!;lfr!<2uu!<)ot!<)ot!;HKn!<)ot!<)rt!<<*!!<<'!!<2uu!<)ot
+!;uls!<)ot!<)ot!<)rt!;?Em!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot
+!;uis!;uis!<)ot!<)ot!;ZWp!;HKn!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot!;-9k!;c`q
+!<)ot!36(um/bd$J,~>
+!BU8[l0/-I!;c`q!<)ot!<)ot!<)ot!;6?l!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;uis!;uis
+!;c]q!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;c]q!;-<k!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu
+!<)ot!<)rt!;QQo!<)ot!;lfr!<2uu!<)ot!<)ot!;HKn!<)ot!<)rt!<<*!!<<'!!<2uu!<)ot
+!;uls!<)ot!<)ot!<)rt!;?Em!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot
+!;uis!;uis!<)ot!<)ot!;ZWp!;HKn!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot!;-9k!;c`q
+!<)ot!36(uklK'jJ,~>
+!B:&Xj66LC!;c`q!<)ot!<)ot!<)ot!;6?l!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;uis!;uis
+!;c]q!;c`q!<)ot!<)ot!<)rt!;?Em!;ZWp!;uis!<)rt!<)ot!<)ot!<)ot!;uis!<)rt!;QQo
+!<)ot!;c]q!;-<k!<)ot!<)ot!;uis!<3#u!<<*!!<<'!!<3#u!<)ot!<)ot!<)ot!;lfr!<2uu
+!<)ot!<)rt!;QQo!<)ot!;lfr!<2uu!<)ot!<)ot!;HKn!<)ot!<)rt!<<*!!<<'!!<2uu!<)ot
+!;uls!<)ot!<)ot!<)rt!;?Em!;ZZp!<)ot!<)ot!<)ot!;uis!<)rt!<)ot!<)ot!;HKn!<)ot
+!;uis!;uis!<)ot!<)ot!;ZWp!;HKn!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)ot!;-9k!;c`q
+!<)ot!36(uirR%VJ,~>
+!BpJ^mHFQM!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!
+s8N)qrr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs!!)ip
+!!)or!!)or!!)Zk!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;uis!;QQo
+!;uis!;$3j!;lcr!;ZWp!;lcr!;$3j!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6Wr
+pAY*mq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6WroD\djqu6Wrrr2rup\t3nq>UEpp\t3n
+p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrp&>!lqYpNqr;Q`sWrN(c!S0Da~>
+!BU8[l0/-I!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!
+s8N)qrr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs!!)ip
+!!)or!!)or!!)Zk!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;uis!;QQo
+!;uis!;$3j!;lcr!;ZWp!;lcr!;$3j!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6Wr
+pAY*mq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6WroD\djqu6Wrrr2rup\t3nq>UEpp\t3n
+p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrp&>!lqYpNqr;Q`sWrN(_!R<`V~>
+!B:&Xj66LC!;c]q!;uis!<2uu!;lcr!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!
+s8N)qrr<&qrr<&srr<&urr<&rrr<&mrr<&prr<&srr<&trr<&rrrW9$rrDrr!!)ut!!)rs!!)ip
+!!)or!!)or!!)Zk!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;lcr!;uis!;QQo
+!;uis!;$3j!;lcr!;ZWp!;lcr!;$3j!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6Wr
+pAY*mq>UEpr;Q`srr2ruqu6WrrVlitr;Q`srr2ruqu6WroD\djqu6Wrrr2rup\t3nq>UEpp\t3n
+p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrp&>!lqYpNqr;Q`sWrN(Y!Q-jH~>
+!BpJ^mHFQM!;c]q!;uis!<3#o!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!s8N)q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrN3#s7lZms8E#lrr<&rrr<&rrr<&k
+rr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)fnrr<&ps7lZi
+s8)fprr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs!!*#u!!)or!!)rs
+rW)iqq#L3iqZ-Nn!!*#u!!)rsqZ-Hl!!)cn!!)lqqZ-Qo!!)or!!)or!!)orq#L*f!!)lq!!)rs
+!!'&!rp9a;4b*~>
+!BU8[l0/-I!;c]q!;uis!<3#o!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!s8N)q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrN3#s7lZms8E#lrr<&rrr<&rrr<&k
+rr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)fnrr<&ps7lZi
+s8)fprr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs!!*#u!!)or!!)rs
+rW)iqq#L3iqZ-Nn!!*#u!!)rsqZ-Hl!!)cn!!)lqqZ-Qo!!)or!!)or!!)orq#L*f!!)lq!!)rs
+!!'&!rojI/3e.~>
+!B:&Xj66LC!;c]q!;uis!<3#o!;?Em!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<<'!s8N)q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrN3#s7lZms8E#lrr<&rrr<&rrr<&k
+rr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)fnrr<&ps7lZi
+s8)fprr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs!!*#u!!)or!!)rs
+rW)iqq#L3iqZ-Nn!!*#u!!)rsqZ-Hl!!)cn!!)lqqZ-Qo!!)or!!)or!!)orq#L*f!!)lq!!)rs
+!!'&!ro4$s2h1~>
+!BpJ^mHFQM!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrW9$rrDWirrDio!!)or!!)or!!)Zk
+!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!;-<k!;QQo!;uis!;lcr!;ZWp
+!:p-i!;uis!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ru
+qu6Wrq>^HprVlito)A[ir;Q`sqYpTsrrDus!!)rs!!)ip!!)cn!!)or!!)rs!!)rs!!)or!!)or
+!!)or!!)He!!)lq!!)rs!!'&!rp9a;4b*~>
+!BU8[l0/-I!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrW9$rrDWirrDio!!)or!!)or!!)Zk
+!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!;-<k!;QQo!;uis!;lcr!;ZWp
+!:p-i!;uis!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ru
+qu6Wrq>^HprVlito)A[ir;Q`sqYpTsrrDus!!)rs!!)ip!!)cn!!)or!!)rs!!)rs!!)or!!)or
+!!)or!!)He!!)lq!!)rs!!'&!rojI/3e.~>
+!B:&Xj66LC!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&orr<&urr<&srr<&rrrW9$rrDWirrDio!!)or!!)or!!)Zk
+!!)rs!!)ut!!)rs!!*#u!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!;-<k!;QQo!;uis!;lcr!;ZWp
+!:p-i!;uis!<)ot!<2uu!<3!#!<<'!qu6WrrVlitr;Q`srr2ruqu6WrpAY*mq>UEpr;Q`srr2ru
+qu6Wrq>^HprVlito)A[ir;Q`sqYpTsrrDus!!)rs!!)ip!!)cn!!)or!!)rs!!)rs!!)or!!)or
+!!)or!!)He!!)lq!!)rs!!'&!ro4$s2h1~>
+!BpJ^mHFQM!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&nrrN3#!;lcr!;lcu!<<'!pAY*mr;Q`sq>UEpqu6Wrqu6Wr
+o`"mkr;Q`srVlitr;Q`srr2rurr2rurr2rurr2ruqu6`us8N)lrr<&orr<&srr<&prr<&srr<&r
+rr<&prr<&irr<&srr<&trr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs
+!!*#u!!)or!!)ut!!)rs!!*#u!!)Ti!!)rs!!)lq!W`6#r;Q`sr;Q`sq>UEpp\t3nqu6Wrr;Q`s
+r;Q`squ6Wrqu6Wrqu6Wrmf*7eqYpNqr;Q`sWrN(c!S0Da~>
+!BU8[l0/-I!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&nrrN3#!;lcr!;lcu!<<'!pAY*mr;Q`sq>UEpqu6Wrqu6Wr
+o`"mkr;Q`srVlitr;Q`srr2rurr2rurr2rurr2ruqu6`us8N)lrr<&orr<&srr<&prr<&srr<&r
+rr<&prr<&irr<&srr<&trr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs
+!!*#u!!)or!!)ut!!)rs!!*#u!!)Ti!!)rs!!)lq!W`6#r;Q`sr;Q`sq>UEpp\t3nqu6Wrr;Q`s
+r;Q`squ6Wrqu6Wrqu6Wrmf*7eqYpNqr;Q`sWrN(_!R<`V~>
+!B:&Xj66LC!;c]q!;uis!<2uu!:Tpf!;c]q!;lcr!;c]q!;HKn!;lcr!;lcr!<)p%!<3'!!<3&q
+rr<&qrr<&srr<&urr<&rrr<&mrr<&nrrN3#!;lcr!;lcu!<<'!pAY*mr;Q`sq>UEpqu6Wrqu6Wr
+o`"mkr;Q`srVlitr;Q`srr2rurr2rurr2rurr2ruqu6`us8N)lrr<&orr<&srr<&prr<&srr<&r
+rr<&prr<&irr<&srr<&trr<&urr<&urrW9$rrDrr!!)ut!!)rs!!*#u!!)or!!)`m!!)ip!!)rs
+!!*#u!!)or!!)ut!!)rs!!*#u!!)Ti!!)rs!!)lq!W`6#r;Q`sr;Q`sq>UEpp\t3nqu6Wrr;Q`s
+r;Q`squ6Wrqu6Wrqu6Wrmf*7eqYpNqr;Q`sWrN(Y!Q-jH~>
+!BpJ^mHFQM!;c]q!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;lcr!<2uu
+!;ZWp!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&ts8N)ts8N)trr<&o
+rr<&trr<&qrr<&krr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&o
+s8N)trr<&prr<&ts8N)rrr<&orr<&ts8N)prr<&ts8N)trr<&urr<&urr<&urr<&trr<&srr<&s
+rr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&trr<&ss8N)trr<&trr<&ts8N)prr<&ts8N)p
+rr<&rrr<&ts8N)prr<&nrr<&rrr<&ts8N)ss8N)trr<&qrr<&qrr<&ts8N)lrr<&qrr<&srr<&!
+s8MBdeieN~>
+!BU8[l0/-I!;c]q!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;lcr!<2uu
+!;ZWp!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&ts8N)ts8N)trr<&o
+rr<&trr<&qrr<&krr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&o
+s8N)trr<&prr<&ts8N)rrr<&orr<&ts8N)prr<&ts8N)trr<&urr<&urr<&urr<&trr<&srr<&s
+rr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&trr<&ss8N)trr<&trr<&ts8N)prr<&ts8N)p
+rr<&rrr<&ts8N)prr<&nrr<&rrr<&ts8N)ss8N)trr<&qrr<&qrr<&ts8N)lrr<&qrr<&srr<&!
+s8M6`c8pI~>
+!B:&Xj66LC!;c]q!;uis!<)ot!<)rt!;?Em!;ZWp!<)ot!;ZWp!;HKn!;c]q!<)ot!;lcr!<2uu
+!;ZWp!;c]q!;uis!<)ot!<)rt!;?Em!<)ot!;uiu!<3&rs8N)trr<&trr<&ts8N)ts8N)trr<&o
+rr<&trr<&qrr<&krr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&o
+s8N)trr<&prr<&ts8N)rrr<&orr<&ts8N)prr<&ts8N)trr<&urr<&urr<&urr<&trr<&srr<&s
+rr<&trr<&ts8N)mrr<&trr<&urr<&srr<&trr<&trr<&ss8N)trr<&trr<&ts8N)prr<&ts8N)p
+rr<&rrr<&ts8N)prr<&nrr<&rrr<&ts8N)ss8N)trr<&qrr<&qrr<&ts8N)lrr<&qrr<&srr<&!
+s8M$Z_`*)~>
+!BpJ^mHX`L!<)rs!<3#t!<)rr!;?Hh!;ulq!;lfm!<)ro!;ulq!;c]q!<2uu!;uln!<3#t!<3#t
+!<)rr!!3*"p&FsjqYpNqqYpQrs8;rps8;rprrE-"r;cQkr;c`pq>g?krW)rtrW)osr;Zs"!!*&u
+!<<*!!<<*!!!E6$!<;utqu?Tpr;ZTnr;Qcts8;rls8;ots8E#us7u`ms8;rks8;ots8Duus8E#u
+s8N*!s8N)us8;rqs8E#ts8E#ss8;ourrD`lr;cisrW)rtrW)osr;c`p!<E/u!;lfp!;?Hk!!*&u
+!;lcr!;c`o!!*&u!<3#p!<)ro!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;?Hh!<3#t!<3#t!3?/!
+m/bd$J,~>
+!BU8[l0A<H!<)rs!<3#t!<)rr!;?Hh!;ulq!;lfm!<)ro!;ulq!;c]q!<2uu!;uln!<3#t!<3#t
+!<)rr!!3*"p&FsjqYpNqqYpQrs8;rps8;rprrE-"r;cQkr;c`pq>g?krW)rtrW)osr;Zs"!!*&u
+!<<*!!<<*!!!E6$!<;utqu?Tpr;ZTnr;Qcts8;rls8;ots8E#us7u`ms8;rks8;ots8Duus8E#u
+s8N*!s8N)us8;rqs8E#ts8E#ss8;ourrD`lr;cisrW)rtrW)osr;c`p!<E/u!;lfp!;?Hk!!*&u
+!;lcr!;c`o!!*&u!<3#p!<)ro!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;?Hh!<3#t!<3#t!3?/!
+klK'jJ,~>
+!B:&Xj6H[B!<)rs!<3#t!<)rr!;?Hh!;ulq!;lfm!<)ro!;ulq!;c]q!<2uu!;uln!<3#t!<3#t
+!<)rr!!3*"p&FsjqYpNqqYpQrs8;rps8;rprrE-"r;cQkr;c`pq>g?krW)rtrW)osr;Zs"!!*&u
+!<<*!!<<*!!!E6$!<;utqu?Tpr;ZTnr;Qcts8;rls8;ots8E#us7u`ms8;rks8;ots8Duus8E#u
+s8N*!s8N)us8;rqs8E#ts8E#ss8;ourrD`lr;cisrW)rtrW)osr;c`p!<E/u!;lfp!;?Hk!!*&u
+!;lcr!;c`o!!*&u!<3#p!<)ro!<)rr!!*&u!<<*!!!*&t!;uln!;ulq!;?Hh!<3#t!<3#t!3?/!
+irR%VJ,~>
+!BpJ^m=G<#rr<&arr<&qrr<%Ms-N`c!.k0$s6K^am/bd$J,~>
+!BU8[l%/ltrr<&arr<&qrr<%Ms-N`c!.k0$s6K^aklK'jJ,~>
+!B:&Xj+76nrr<&arr<&qrr<%Ms-N`c!.k0$s6K^airR%VJ,~>
+!BpJ^m=G<#rr<&brr<&prr<%Ms-N`c!.k0$s6K^am/bd$J,~>
+!BU8[l%/ltrr<&brr<&prr<%Ms-N`c!.k0$s6K^aklK'jJ,~>
+!B:&Xj+76nrr<&brr<&prr<%Ms-N`c!.k0$s6K^airR%VJ,~>
+!BpJ^m=G<$rr<&arr<&prr<%Ms-Wfd!.k0$s6BX`m/bd$J,~>
+!BU8[l%/lurr<&arr<&prr<%Ms-Wfd!.k0$s6BX`klK'jJ,~>
+!B:&Xj+76orr<&arr<&prr<%Ms-Wfd!.k0$s6BX`irR%VJ,~>
+!BpJ^m=G<)s82l`s82los8;qKs.B>h!.k0$s69R_m/bd$J,~>
+!BU8[l%/m%s82l`s82los8;qKs.B>h!.k0$s69R_klK'jJ,~>
+!B:&Xj+76ts82l`s82los8;qKs.B>h!.k0$s69R_irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mHafN!:9^c!.k0$s+13$s+14Cs8MBdeieN~>
+!BU8[l0JBJ!:9^c!.k0$s+13$s+14Cs8M6`c8pI~>
+!B:&Xj6QaD!:9^c!.k0$s+13$s+14Cs8M$Z_`*)~>
+!BpJ^mHFQM!:9^c!.k0$s+13$s+14Cs8MBdeieN~>
+!BU8[l0/-I!:9^c!.k0$s+13$s+14Cs8M6`c8pI~>
+!B:&Xj66LC!:9^c!.k0$s+13$s+14Cs8M$Z_`*)~>
+!BpJ^mHOWP!<3%Ms+13$s+13$s5<qVm/bd$J,~>
+!BU8[l083L!<3%Ms+13$s+13$s5<qVklK'jJ,~>
+!B:&Xj6?RF!<3%Ms+13$s+13$s5<qVirR%VJ,~>
+!BpJ^mHOWP!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms+13$s+131s8MBdeieN~>
+!BU8[l083L!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms+13$s+131s8M6`c8pI~>
+!B:&Xj6?RF!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Ms+13$s+131s8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!.k0$s+13$s,[3Zm/bd$
+J,~>
+!BU8[l0A9K!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!.k0$s+13$s,[3ZklK'j
+J,~>
+!B:&Xj6HXE!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!.k0$s+13$s,[3ZirR%V
+J,~>
+!BpJ^mHX]O!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4H!S0Da~>
+!BU8[l0A9K!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4D!R<`V~>
+!B:&Xj6HXE!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4>!Q-jH~>
+!BpJ^mHacP!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3Zm/bd$J,~>
+!BU8[l0J?L!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3ZklK'jJ,~>
+!B:&Xj6Q^F!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3ZirR%VJ,~>
+!BpJ^mHafK!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3Zm/bd$J,~>
+!BU8[l0JBG!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3ZklK'jJ,~>
+!B:&Xj6QaA!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!.k0$s+13$s,[3ZirR%VJ,~>
+!BpJ^mHjiQ!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4H!S0Da~>
+!BU8[l0SEM!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4D!R<`V~>
+!B:&Xj6ZdG!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruJcC<$JcC<$O8o4>!Q-jH~>
+!BpJ^mHjiQ!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;uls!.k0$s+13$s-E]a
+m/bd$J,~>
+!BU8[l0SEM!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;uls!.k0$s+13$s-E]a
+klK'jJ,~>
+!B:&Xj6ZdG!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;uls!.k0$s+13$s-E]a
+irR%VJ,~>
+!BpJ^mHsrP!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!<)rt!.k0$s+13$s-E]am/bd$
+J,~>
+!BU8[l0\NL!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!<)rt!.k0$s+13$s-E]aklK'j
+J,~>
+!B:&Xj6cmF!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!<)rt!.k0$s+13$s-E]airR%V
+J,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!.k0as8N(gs8N)Ts8N),s8;r_s8;qKs2"a7m/bd$J,~>
+!BU8[l,E]&!.k0as8N(gs8N)Ts8N),s8;r_s8;qKs2"a7klK'jJ,~>
+!B:&Xj2M&u!.k0as8N(gs8N)Ts8N),s8;r_s8;qKs2"a7irR%VJ,~>
+!BpJ^mG.a;!:p0i!.k17s8;rarr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&krr<&o
+rr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8MBdeieN~>
+!BU8[l.l=7!:p0i!.k17s8;rarr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&krr<&o
+rr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8M6`c8pI~>
+!B:&Xj4s\1!:p0i!.k17s8;rarr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&krr<&o
+rr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8M$Z_`*)~>
+!BpJ^mHsrH!;ulm!:p0i!.k14rr<&crr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&k
+rr<&orr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8MBdeieN~>
+!BU8[l0\ND!;ulm!:p0i!.k14rr<&crr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&k
+rr<&orr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8M6`c8pI~>
+!B:&Xj6cm>!;ulm!:p0i!.k14rr<&crr<&orr<&prr<&Vrr<&mrr<&Srr<&orr<&prr<&Srr<&k
+rr<&orr<&Lrr<&nrr<&^rr<&=rr<&drr<%^s8M$Z_`*)~>
+!BpJ^mHsrH!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro!2KPq!<3&Z
+rr<&prr<&Vrr<&=rr<&prr<&Srr<&arr<&Arr<&^rr<&(rr<%^s8MBdeieN~>
+!BU8[l0\ND!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro!2KPq!<3&Z
+rr<&prr<&Vrr<&=rr<&prr<&Srr<&arr<&Arr<&^rr<&(rr<%^s8M6`c8pI~>
+!B:&Xj6cm>!;ZZp!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro!2KPq!<3&Z
+rr<&prr<&Vrr<&=rr<&prr<&Srr<&arr<&Arr<&^rr<&(rr<%^s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYirrN3#!;ulr
+!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bn!WN/qs8E#ts8E#s
+s8E#ps7u`orrE-"r;cQkr;ccqrVururW)lr!<E/u!;lfq!;c`l!<3#t!!*&u!;lfp!;ulr!!*&u
+!;lfq!;HKn!;lfq!<3#t!;?Em!;ZZn!;ulr!!*&u!;lfp!!<0#!<)rr!;6Bk!;lfr!!*&t!;uln
+!;ulq!;c`o!!<0#!<)rr!;ulr!!*&u!;lfp!!3*"c2[e1!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYirrN3#!;ulr
+!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bn!WN/qs8E#ts8E#s
+s8E#ps7u`orrE-"r;cQkr;ccqrVururW)lr!<E/u!;lfq!;c`l!<3#t!!*&u!;lfp!;ulr!!*&u
+!;lfq!;HKn!;lfq!<3#t!;?Em!;ZZn!;ulr!!*&u!;lfp!!<0#!<)rr!;6Bk!;lfr!!*&t!;uln
+!;ulq!;c`o!!<0#!<)rr!;ulr!!*&u!;lfp!!3*"c2[e-!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYirrN3#!;ulr
+!!*&u!;lfq!;c`l!<)ou!<;utrr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bn!WN/qs8E#ts8E#s
+s8E#ps7u`orrE-"r;cQkr;ccqrVururW)lr!<E/u!;lfq!;c`l!<3#t!!*&u!;lfp!;ulr!!*&u
+!;lfq!;HKn!;lfq!<3#t!;?Em!;ZZn!;ulr!!*&u!;lfp!!<0#!<)rr!;6Bk!;lfr!!*&t!;uln
+!;ulq!;c`o!!<0#!<)rr!;ulr!!*&u!;lfp!!3*"c2[e'!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#t
+s8;rts8N*!s8N)ts8N(prr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&us8N*!s8N*!rr<&u
+rr<&trr<&qrr<&mrr<&qrr<&ts8N)orr<&srr<&qrr<&orr<&ps8N)trr<&orr<&trr<&rs8N)u
+rr<&ts8N)trr<&qrr<&orr<&os8N)urr<&trr<&trr<&rs8N)urr<&qrr<&nrr<&qrr<&srr<&l
+rr<&qrr<&trr<&rs8N)urr<&trr<&ts8N)trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&s
+rr<&ts8N)trr<&trr<&rs8N)urr<&trr<&ts8N)Ds8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#t
+s8;rts8N*!s8N)ts8N(prr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&us8N*!s8N*!rr<&u
+rr<&trr<&qrr<&mrr<&qrr<&ts8N)orr<&srr<&qrr<&orr<&ps8N)trr<&orr<&trr<&rs8N)u
+rr<&ts8N)trr<&qrr<&orr<&os8N)urr<&trr<&trr<&rs8N)urr<&qrr<&nrr<&qrr<&srr<&l
+rr<&qrr<&trr<&rs8N)urr<&trr<&ts8N)trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&s
+rr<&ts8N)trr<&trr<&rs8N)urr<&trr<&ts8N)Ds8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8E#ts8N)ts8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#t
+s8;rts8N*!s8N)ts8N(prr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&us8N*!s8N*!rr<&u
+rr<&trr<&qrr<&mrr<&qrr<&ts8N)orr<&srr<&qrr<&orr<&ps8N)trr<&orr<&trr<&rs8N)u
+rr<&ts8N)trr<&qrr<&orr<&os8N)urr<&trr<&trr<&rs8N)urr<&qrr<&nrr<&qrr<&srr<&l
+rr<&qrr<&trr<&rs8N)urr<&trr<&ts8N)trr<&trr<&krr<&qs8N)trr<&rrr<&prr<&trr<&s
+rr<&ts8N)trr<&trr<&rs8N)urr<&trr<&ts8N)Ds8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N*!s8N)rs8N)u
+s8E#ps8;qjrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m
+!!)or!!)or!!)fo"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djqu6Wrq#:<oqu6Wrqu6Wrq#:<o
+q#:<ooD\djqu6Wrp&>!lp\t3nqYpNqr;Q`sp&>!lp&>!lqu6Wrq>UEpqu6Wrrr2ruqu6Wrp&>!l
+qYpNqr;Q`squ6WrqYpNqqu6Wrrr2ruqu6Wrrr2ruqu6Wrr;Q`sq#:<or;Q`sc2[e1!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N*!s8N)rs8N)u
+s8E#ps8;qjrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m
+!!)or!!)or!!)fo"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djqu6Wrq#:<oqu6Wrqu6Wrq#:<o
+q#:<ooD\djqu6Wrp&>!lp\t3nqYpNqr;Q`sp&>!lp&>!lqu6Wrq>UEpqu6Wrrr2ruqu6Wrp&>!l
+qYpNqr;Q`squ6WrqYpNqqu6Wrrr2ruqu6Wrrr2ruqu6Wrr;Q`sq#:<or;Q`sc2[e-!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs8N)rs8N'#rr<&ss8N*!s8N)rs8N)u
+s8E#ps8;qjrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrDrr!!)or!!)`m
+!!)or!!)or!!)fo"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djqu6Wrq#:<oqu6Wrqu6Wrq#:<o
+q#:<ooD\djqu6Wrp&>!lp\t3nqYpNqr;Q`sp&>!lp&>!lqu6Wrq>UEpqu6Wrrr2ruqu6Wrp&>!l
+qYpNqr;Q`squ6WrqYpNqqu6Wrrr2ruqu6Wrrr2ruqu6Wrr;Q`sq#:<or;Q`sc2[e'!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)os8)el
+rr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrN3#s7lZlrr<&mrr<&rrr<&hrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;lcr!;QQo!;lcr!;lcr!;QQo!;QQo!;QTk!;lcr!;6?l
+!;HKn!;ZWp!<2uu!;-9k!;c`m!;lcr!;ZWp!;lcr!<3#o!;6?l!;c]q!;uis!;lcr!;c`k!<2uu
+!;lcr!<3#o!;uis!;HNm!6Y?@m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)os8)el
+rr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrN3#s7lZlrr<&mrr<&rrr<&hrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;lcr!;QQo!;lcr!;lcr!;QQo!;QQo!;QTk!;lcr!;6?l
+!;HKn!;ZWp!<2uu!;-9k!;c`m!;lcr!;ZWp!;lcr!<3#o!;6?l!;c]q!;uis!;lcr!;c`k!<2uu
+!;lcr!<3#o!;uis!;HNm!6Y?@klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)os8)el
+rr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrN3#s7lZlrr<&mrr<&rrr<&hrrrK'
+rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;lcr!;QQo!;lcr!;lcr!;QQo!;QQo!;QTk!;lcr!;6?l
+!;HKn!;ZWp!<2uu!;-9k!;c`m!;lcr!;ZWp!;lcr!<3#o!;6?l!;c]q!;uis!;lcr!;c`k!<2uu
+!;lcr!<3#o!;uis!;HNm!6Y?@irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)ms82kn
+s7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!)Qh"p"Z'rrE'!
+qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<oq>UEpr;Q`squ6Wr
+p&>!lp\t3nq>UEprr2ruo`"mkqu6Wrr;Q`squ6Wrq>UEpqu6Wrrr2rumf*7eqYpNqr;Q`squ6Wr
+qYpNqp\t3nqu6Wrrr2rup&>!lo`+pkbl@\0!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)ms82kn
+s7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!)Qh"p"Z'rrE'!
+qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<oq>UEpr;Q`squ6Wr
+p&>!lp\t3nq>UEprr2ruo`"mkqu6Wrr;Q`squ6Wrq>UEpqu6Wrrr2rumf*7eqYpNqr;Q`squ6Wr
+qYpNqp\t3nqu6Wrrr2rup&>!lo`+pkbl@\,!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#os8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!s7ZNms8N)ms82kn
+s7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or!!)Qh"p"Z'rrE'!
+qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<oq>UEpr;Q`squ6Wr
+p&>!lp\t3nq>UEprr2ruo`"mkqu6Wrr;Q`squ6Wrq>UEpqu6Wrrr2rumf*7eqYpNqr;Q`squ6Wr
+qYpNqp\t3nqu6Wrrr2rup&>!lo`+pkbl@\&!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#us8E#ms8N)p
+s8N)ts8N(rrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or
+!!)Qh"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<o
+q>UEpr;Q`squ6Wrp&>!lp\t3nq#:BqrrDZj!!)or!!)rs!!)or!!)ip!!)or!!*#u!!)He!!)lq
+!!)rs!!)or!!)lq!!)cn!!)or!!*#u!!)]l!!)fo!!)rs!!(:Drp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#us8E#ms8N)p
+s8N)ts8N(rrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or
+!!)Qh"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<o
+q>UEpr;Q`squ6Wrp&>!lp\t3nq#:BqrrDZj!!)or!!)rs!!)or!!)ip!!)or!!*#u!!)He!!)lq
+!!)rs!!)or!!)lq!!)cn!!)or!!*#u!!)]l!!)fo!!)rs!!(:DrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ps8N)rs8N)ts8N)ts8N)ts8N'!s8E#os8E#ts8E#us8E#ms8N)p
+s8N)ts8N(rrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m!!)or
+!!)Qh"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`squ6Wrq#:<oqu6Wrqu6Wrq#:<oq#:<o
+q>UEpr;Q`squ6Wrp&>!lp\t3nq#:BqrrDZj!!)or!!)rs!!)or!!)ip!!)or!!*#u!!)He!!)lq
+!!)rs!!)or!!)lq!!)cn!!)or!!*#u!!)]l!!)fo!!)rs!!(:Dro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYlrr<&q
+rr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&ts8N)rrr<&trr<&rrr<&q
+rr<&ts8N)nrr<&urr<&prr<&orr<&trr<&urr<&srr<&prr<&ts8N)rrr<&os8N)trr<&qrr<&o
+rr<&trr<&trr<&prr<&ts8N)rrr<&lrr<&nrr<&orrN3#!;$3j!;lcr!<)rt!;lcr!;QQo!<)rt
+!<)ot!<)rt!;6?l!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!<)ot!<)rt!;uis!;QTo
+!<)ot!;lfr!7h,Km/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYlrr<&q
+rr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&ts8N)rrr<&trr<&rrr<&q
+rr<&ts8N)nrr<&urr<&prr<&orr<&trr<&urr<&srr<&prr<&ts8N)rrr<&os8N)trr<&qrr<&o
+rr<&trr<&trr<&prr<&ts8N)rrr<&lrr<&nrr<&orrN3#!;$3j!;lcr!<)rt!;lcr!;QQo!<)rt
+!<)ot!<)rt!;6?l!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!<)ot!<)rt!;uis!;QTo
+!<)ot!;lfr!7h,KklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYlrr<&q
+rr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&ts8N)rrr<&trr<&rrr<&q
+rr<&ts8N)nrr<&urr<&prr<&orr<&trr<&urr<&srr<&prr<&ts8N)rrr<&os8N)trr<&qrr<&o
+rr<&trr<&trr<&prr<&ts8N)rrr<&lrr<&nrr<&orrN3#!;$3j!;lcr!<)rt!;lcr!;QQo!<)rt
+!<)ot!<)rt!;6?l!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!<)ot!<)rt!;uis!;QTo
+!<)ot!;lfr!7h,KirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)frs7lZns7u_m
+s8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rms8;rrs7u`ns8;rjrr<&u
+rr<&ss7u`ls8;rss8E#ts8E#os8;ots8E#us7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ots8E#u
+s7u`ns7u`os7u`lrr<&ls7u`os8;ots8E#us7u`ms8;ourrDusr;cQkq>gNprW)rtrW)iqr;ccq
+r;c]or;Zlu!;ulq!;uln!;uit!<;utqZ$Qqec5X9!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)frs7lZns7u_m
+s8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rms8;rrs7u`ns8;rjrr<&u
+rr<&ss7u`ls8;rss8E#ts8E#os8;ots8E#us7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ots8E#u
+s7u`ns7u`os7u`lrr<&ls7u`os8;ots8E#us7u`ms8;ourrDusr;cQkq>gNprW)rtrW)iqr;ccq
+r;c]or;Zlu!;ulq!;uln!;uit!<;utqZ$Qqec5X5!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)frs7lZns7u_m
+s8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rms8;rrs7u`ns8;rjrr<&u
+rr<&ss7u`ls8;rss8E#ts8E#os8;ots8E#us7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ots8E#u
+s7u`ns7u`os7u`lrr<&ls7u`os8;ots8E#us7u`ms8;ourrDusr;cQkq>gNprW)rtrW)iqr;ccq
+r;c]or;Zlu!;ulq!;uln!;uit!<;utqZ$Qqec5X/!Q-jH~>
+!BpJ^mHsrH!6Y?A!.k0$s+14=rr<&Err<&2rr<&#s8MBdeieN~>
+!BU8[l0\ND!6Y?A!.k0$s+14=rr<&Err<&2rr<&#s8M6`c8pI~>
+!B:&Xj6cm>!6Y?A!.k0$s+14=rr<&Err<&2rr<&#s8M$Z_`*)~>
+!BpJ^mHsrH!6bEA!.k0$s+14>rr<&Drr<&2rr<&#s8MBdeieN~>
+!BU8[l0\ND!6bEA!.k0$s+14>rr<&Drr<&2rr<&#s8M6`c8pI~>
+!B:&Xj6cm>!6bEA!.k0$s+14>rr<&Drr<&2rr<&#s8M$Z_`*)~>
+!BpJ^mB?Qe!.k0$s+14=rr<&Err<&2rr<&"s8MBdeieN~>
+!BU8[l*(-a!.k0$s+14=rr<&Err<&2rr<&"s8M6`c8pI~>
+!B:&Xj0/L[!.k0$s+14=rr<&Err<&2rr<&"s8M$Z_`*)~>
+!BpJ^mB?Qf!.k0$s+14?s82lHs82l3s82kss8MBdeieN~>
+!BU8[l*(-b!.k0$s+14?s82lHs82l3s82kss8M6`c8pI~>
+!B:&Xj0/L\!.k0$s+14?s82lHs82l3s82kss8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mB?Qi!;?Hm!.k0bs8;rJs8N)-s8N)-s8;rfs8;qKs2tB@m/bd$J,~>
+!BU8[l*(-e!;?Hm!.k0bs8;rJs8N)-s8N)-s8;rfs8;qKs2tB@klK'jJ,~>
+!B:&Xj0/L_!;?Hm!.k0bs8;rJs8N)-s8N)-s8;rfs8;qKs2tB@irR%VJ,~>
+!BpJ^mG7g:!8[\T!;?Hm!0.$T!:Tpf!;?Em!7q/M!7_#K!4Dh,!42\*!:p-i!8%5N!;?Em!.k1K
+s8MBdeieN~>
+!BU8[l.uC6!8[\T!;?Hm!0.$T!:Tpf!;?Em!7q/M!7_#K!4Dh,!42\*!:p-i!8%5N!;?Em!.k1K
+s8M6`c8pI~>
+!B:&Xj5'b0!8[\T!;?Hm!0.$T!:Tpf!;?Em!7q/M!7_#K!4Dh,!42\*!:p-i!8%5N!;?Em!.k1K
+s8M$Z_`*)~>
+!BpJ^mHsrH!<)rl!8[\T!.k1Mrr<&srr<&grr<&mrr<&Mrr<&Krr<&,rr<&*rr<&jrr<&Mrr<&m
+rr<%Ms8Dusm/bd$J,~>
+!BU8[l0\ND!<)rl!8[\T!.k1Mrr<&srr<&grr<&mrr<&Mrr<&Krr<&,rr<&*rr<&jrr<&Mrr<&m
+rr<%Ms8DusklK'jJ,~>
+!B:&Xj6cm>!<)rl!8[\T!.k1Mrr<&srr<&grr<&mrr<&Mrr<&Krr<&,rr<&*rr<&jrr<&Mrr<&m
+rr<%Ms8DusirR%VJ,~>
+!BpJ^mHsrH!;lfr!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln
+!3lJ'!;uis!:^!g!6Y<A!7_#K!4Dh,!42\*!;$3j!7q/M!.k1?s8MBdeieN~>
+!BU8[l0\ND!;lfr!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln
+!3lJ'!;uis!:^!g!6Y<A!7_#K!4Dh,!42\*!;$3j!7q/M!.k1?s8M6`c8pI~>
+!B:&Xj6cm>!;lfr!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln
+!3lJ'!;uis!:^!g!6Y<A!7_#K!4Dh,!42\*!;$3j!7q/M!.k1?s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o
+!3lJ'!;uis!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Hm!!*&t!<)rt!<)rt!<<*!
+!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#uqu?Tp!WN/os8;rqs8N'!s8;rps8;ourrDfnr;Zp!
+!!)utr;ccqrr<'!r;c`pr;ccqrVururW)iqr;cWm!!)]lq>gNprVururW)iqr;c]or;Zlu!<)ro
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"U&Y,Z!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o
+!3lJ'!;uis!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Hm!!*&t!<)rt!<)rt!<<*!
+!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#uqu?Tp!WN/os8;rqs8N'!s8;rps8;ourrDfnr;Zp!
+!!)utr;ccqrr<'!r;c`pr;ccqrVururW)iqr;cWm!!)]lq>gNprVururW)iqr;c]or;Zlu!<)ro
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"U&Y,V!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o
+!3lJ'!;uis!;ulq!;lfm!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Hm!!*&t!<)rt!<)rt!<<*!
+!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#uqu?Tp!WN/os8;rqs8N'!s8;rps8;ourrDfnr;Zp!
+!!)utr;ccqrr<'!r;c`pr;ccqrVururW)iqr;cWm!!)]lq>gNprVururW)iqr;c]or;Zlu!<)ro
+!;ulr!;ZZn!;uls!!*&t!;lfp!!3*"U&Y,P!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N)'rr<&trr<&srr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&t
+rr<&trr<&prr<&ls8N)trr<&trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&ts8N)orr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&trr<&ss8N)trr<&t
+rr<&trr<&rs8N)urr<&trr<&trr<&prr<&jrr<&os8N)urr<&trr<&trr<&srr<&ts8N)rrr<&m
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N)'rr<&trr<&srr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&t
+rr<&trr<&prr<&ls8N)trr<&trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&ts8N)orr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&trr<&ss8N)trr<&t
+rr<&trr<&rs8N)urr<&trr<&trr<&prr<&jrr<&os8N)urr<&trr<&trr<&srr<&ts8N)rrr<&m
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N)'rr<&trr<&srr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<&t
+rr<&trr<&prr<&ls8N)trr<&trr<&srr<&us8N*!s8N*!rr<&us8N)trr<&trr<&trr<&rs8N)u
+rr<&trr<&ts8N)orr<&trr<&ss8N)trr<&trr<&ts8N)orr<&ts8N)trr<&trr<&ss8N)trr<&t
+rr<&trr<&rs8N)urr<&trr<&trr<&prr<&jrr<&os8N)urr<&trr<&trr<&srr<&ts8N)rrr<&m
+rr<&qrr<&trr<&ss8N)trr<&trr<&ts8N(ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;r!s82ljrr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&lrr<&srr<&trr<&s
+rr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)fo!!)rs!!)Wj!!)rs!!)rs!!*#u!!)or
+!!)ip!!)or!!*#u!!)or!!)ut!!)rs!!*#u!!)or!!)rs!!)Wj!!)ip!!)Wj!!)fo!!)Wj!!)ut
+!!)or!!)or!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_mrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;r!s82ljrr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&lrr<&srr<&trr<&s
+rr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)fo!!)rs!!)Wj!!)rs!!)rs!!*#u!!)or
+!!)ip!!)or!!*#u!!)or!!)ut!!)rs!!*#u!!)or!!)rs!!)Wj!!)ip!!)Wj!!)fo!!)Wj!!)ut
+!!)or!!)or!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_mrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;r!s82ljrr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&orr<&prr<&lrr<&srr<&trr<&s
+rr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)fo!!)rs!!)Wj!!)rs!!)rs!!*#u!!)or
+!!)ip!!)or!!*#u!!)or!!)ut!!)rs!!*#u!!)or!!)rs!!)Wj!!)ip!!)Wj!!)fo!!)Wj!!)ut
+!!)or!!)or!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_mro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)f"rr<&trr<&ss8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ts8)flrr<&lrr<&srr<&t
+rr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)forr<&srr<&urr<&rrr<&p
+rr<&rrr<&us7lZnrr<&srr<&us7lZmrr<&os8)flrr<&jrr<&orr<&os8)fprr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ss8E"is8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)f"rr<&trr<&ss8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ts8)flrr<&lrr<&srr<&t
+rr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)forr<&srr<&urr<&rrr<&p
+rr<&rrr<&us7lZnrr<&srr<&us7lZmrr<&os8)flrr<&jrr<&orr<&os8)fprr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ss8E"is8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)f"rr<&trr<&ss8)fmrr<&mrr<&rrr<&rrr<&trr<&srr<&ts8)flrr<&lrr<&srr<&t
+rr<&srr<&urr<&urr<&urr<&urr<&rrrN3#s7lZmrr<&ns8E#ks8)forr<&srr<&urr<&rrr<&p
+rr<&rrr<&us7lZnrr<&srr<&us7lZmrr<&os8)flrr<&jrr<&orr<&os8)fprr<&krr<&mrr<&r
+rr<&rrr<&trr<&srr<&ss8E"is8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)r
+s82l$rr<&trr<&trr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&urr<&srr<&prr<&lrr<&s
+rr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrDio!!)rs!!)rs!!)rs!!*#u
+!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs!!)ip!!)Wj!!)fo!!)ip!!)rs
+!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)iprrA_lrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)r
+s82l$rr<&trr<&trr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&urr<&srr<&prr<&lrr<&s
+rr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrDio!!)rs!!)rs!!)rs!!*#u
+!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs!!)ip!!)Wj!!)fo!!)ip!!)rs
+!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)iprrA_lrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)r
+s82l$rr<&trr<&trr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&urr<&srr<&prr<&lrr<&s
+rr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrDio!!)rs!!)rs!!)rs!!*#u
+!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs!!)ip!!)Wj!!)fo!!)ip!!)rs
+!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)iprrA_lro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)'rr<&srr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&u
+rr<&srr<&prr<&lrr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)fo!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs
+!!)ip!!)Wj!!)fo!!)ip!!)rs!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_m
+rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)'rr<&srr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&u
+rr<&srr<&prr<&lrr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)fo!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs
+!!)ip!!)Wj!!)fo!!)ip!!)rs!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_m
+rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#s
+s8E#us8N)ts8N)us8N)ts8N)'rr<&srr<&urr<&srr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&u
+rr<&srr<&prr<&lrr<&srr<&trr<&srr<&urr<&urr<&urr<&urr<&rrrW9$rrD`l!!)fo!!)rs
+!!)ip!!)rs!!)rs!!)rs!!*#u!!)or!!)ip!!)or!!*#u!!)`m!!)rs!!*#u!!)]l!!)ip!!)rs
+!!)ip!!)Wj!!)fo!!)ip!!)rs!!)ut!!)Zk!!)`m!!)or!!)or!!)ut!!)rs!!)ut!!)rs!!&_m
+ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lZ!
+rr<&srr<&urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&s
+rr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&os8N)trr<&prr<&ts8N)s
+rr<&srr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&srr<&trr<&ts8N)srr<&prr<&ts8N)p
+rr<&jrr<&orr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)t
+rr<&rs8N(us8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lZ!
+rr<&srr<&urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&s
+rr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&os8N)trr<&prr<&ts8N)s
+rr<&srr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&srr<&trr<&ts8N)srr<&prr<&ts8N)p
+rr<&jrr<&orr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)t
+rr<&rs8N(us8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lZ!
+rr<&srr<&urr<&ts8N)qrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&urr<&ts8N)prr<&lrr<&s
+rr<&trr<&ts8N)urr<&urr<&urr<&us8N)trr<&trr<&ts8N)srr<&os8N)trr<&prr<&ts8N)s
+rr<&srr<&trr<&ts8N)orr<&ts8N)trr<&ts8N)trr<&srr<&trr<&ts8N)srr<&prr<&ts8N)p
+rr<&jrr<&orr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&rrr<&qrr<&trr<&srr<&srr<&ts8N)t
+rr<&rs8N(us8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`"s8;rrs8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#ts8;ots8E#ts7u`ks8E#ts8E#s
+s8;p"rr<'!rW)uurrE*!rr<0$!!*&t!;lfp!;uln!;uit!<;utp](0l!<<#us8W&urr;rtrVufr
+!ri6#q#C9m!WN/ts8;rqs8E#ts8E#ss8;rqs7u`ns8;ots8E#ts7u`js7u`ps7u`ns8;ots8E#s
+s8;rms8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrB%urp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`"s8;rrs8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#ts8;ots8E#ts7u`ks8E#ts8E#s
+s8;p"rr<'!rW)uurrE*!rr<0$!!*&t!;lfp!;uln!;uit!<;utp](0l!<<#us8W&urr;rtrVufr
+!ri6#q#C9m!WN/ts8;rqs8E#ts8E#ss8;rqs7u`ns8;ots8E#ts7u`js7u`ps7u`ns8;ots8E#s
+s8;rms8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrB%urojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rt
+s7u`"s8;rrs8N*!s8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E#ts8;ots8E#ts7u`ks8E#ts8E#s
+s8;p"rr<'!rW)uurrE*!rr<0$!!*&t!;lfp!;uln!;uit!<;utp](0l!<<#us8W&urr;rtrVufr
+!ri6#q#C9m!WN/ts8;rqs8E#ts8E#ss8;rqs7u`ns8;ots8E#ts7u`js7u`ps7u`ns8;ots8E#s
+s8;rms8;rrs7u`ns8;rqs8E#ts8E#trrE-"r;c]orrB%uro4$s2h1~>
+!BpJ^mHsrH!.k0$s+14>rr<%Ms+14Es8MBdeieN~>
+!BU8[l0\ND!.k0$s+14>rr<%Ms+14Es8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+14>rr<%Ms+14Es8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+14>rr<%Ms+14Es8MBdeieN~>
+!BU8[l0\ND!.k0$s+14>rr<%Ms+14Es8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+14>rr<%Ms+14Es8M$Z_`*)~>
+!BpJ^m=G:gs+13trr<%Ms+14Ds8MBdeieN~>
+!BU8[l%/kcs+13trr<%Ms+14Ds8M6`c8pI~>
+!B:&Xj+75]s+13trr<%Ms+14Ds8M$Z_`*)~>
+!BpJ^m=G:gs+14$s82kJs+14Cs8MBdeieN~>
+!BU8[l%/kcs+14$s82kJs+14Cs8M6`c8pI~>
+!B:&Xj+75]s+14$s82kJs+14Cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!7h,I!9F1[!20Al!.k1>s8N)Ds8;rss8;qKs.KDkm/bd$J,~>
+!BU8[l+I&q!;6Bl!7h,I!9F1[!20Al!.k1>s8N)Ds8;rss8;qKs.KDkklK'jJ,~>
+!B:&Xj1PEk!;6Bl!7h,I!9F1[!20Al!.k1>s8N)Ds8;rss8;qKs.KDkirR%VJ,~>
+!BpJ^mG7gA!;ulr!:0[a!;6Bl!9*tP!<<)s!9F1[!7LoC!;c]q!8d_U!6P6@!:9^c!5AI5!;-9k
+!8RSS!;HKn!94"Y!;?Em!5SU7!:Bdd!2KSnm/bd$J,~>
+!BU8[l.uC=!;ulr!:0[a!;6Bl!9*tP!<<)s!9F1[!7LoC!;c]q!8d_U!6P6@!:9^c!5AI5!;-9k
+!8RSS!;HKn!94"Y!;?Em!5SU7!:Bdd!2KSnklK'jJ,~>
+!B:&Xj5'b7!;ulr!:0[a!;6Bl!9*tP!<<)s!9F1[!7LoC!;c]q!8d_U!6P6@!:9^c!5AI5!;-9k
+!8RSS!;HKn!94"Y!;?Em!5SU7!:Bdd!2KSnirR%VJ,~>
+!BpJ^mHsrH!<)rs!;ulr!:'Ua!7UuB!;uls!9F1[!7CfH!;uis!;c]q!8d_U!6P6@!:9^c!5AI5
+!;-9k!8[YT!;?Em!94"Y!;?Em!5SU7!:Bdd!2KSnm/bd$J,~>
+!BU8[l0\ND!<)rs!;ulr!:'Ua!7UuB!;uls!9F1[!7CfH!;uis!;c]q!8d_U!6P6@!:9^c!5AI5
+!;-9k!8[YT!;?Em!94"Y!;?Em!5SU7!:Bdd!2KSnklK'jJ,~>
+!B:&Xj6cm>!<)rs!;ulr!:'Ua!7UuB!;uls!9F1[!7CfH!;uis!;c]q!8d_U!6P6@!:9^c!5AI5
+!;-9k!8[YT!;?Em!94"Y!;?Em!5SU7!:Bdd!2KSnirR%VJ,~>
+!BpJ^mHsrH!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!;?Hm!<)rt
+!;uls!;ZZn!;lfn!<3#o!;uln!9*qX!;uis!7q/M!.k1=rr<&Frr<&mrr<&Yrr<%krr<%os8MBd
+eieN~>
+!BU8[l0\ND!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!;?Hm!<)rt
+!;uls!;ZZn!;lfn!<3#o!;uln!9*qX!;uis!7q/M!.k1=rr<&Frr<&mrr<&Yrr<%krr<%os8M6`
+c8pI~>
+!B:&Xj6cm>!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!;?Hm!<)rt
+!;uls!;ZZn!;lfn!<3#o!;uln!9*qX!;uis!7q/M!.k1=rr<&Frr<&mrr<&Yrr<%krr<%os8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZis8N*!rrW9$
+!!)rsrrDrrq#LEoq#LHpq#LBnq#KCR!!)rs!!)rsrW)iqrW)uurW)lrr;c]or;Zlu!;ZZp!!*&t
+!<)rs!!*&u!;lfp!;c`o!!3*"r;Z`rq>^Bn!WN/ts8E#os8;rqs8N'!s8;rns8N''rr<'!rr<&s
+s8;ros8;ourrE#t!<E/u!;lfq!;lfr!!*&t!;lfp!;?Hh!;c]q!;ZZn!;c`o!;lfm!;ulr!;lfr
+!!*&t!;lfp!!<0#!;-<k!!*&t!;lfp!;c`p!;lfr!!*&t!;uln!2okrm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZis8N*!rrW9$
+!!)rsrrDrrq#LEoq#LHpq#LBnq#KCR!!)rs!!)rsrW)iqrW)uurW)lrr;c]or;Zlu!;ZZp!!*&t
+!<)rs!!*&u!;lfp!;c`o!!3*"r;Z`rq>^Bn!WN/ts8E#os8;rqs8N'!s8;rns8N''rr<'!rr<&s
+s8;ros8;ourrE#t!<E/u!;lfq!;lfr!!*&t!;lfp!;?Hh!;c]q!;ZZn!;c`o!;lfm!;ulr!;lfr
+!!*&t!;lfp!!<0#!;-<k!!*&t!;lfp!;c`p!;lfr!!*&t!;uln!2okrklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZis8N*!rrW9$
+!!)rsrrDrrq#LEoq#LHpq#LBnq#KCR!!)rs!!)rsrW)iqrW)uurW)lrr;c]or;Zlu!;ZZp!!*&t
+!<)rs!!*&u!;lfp!;c`o!!3*"r;Z`rq>^Bn!WN/ts8E#os8;rqs8N'!s8;rns8N''rr<'!rr<&s
+s8;ros8;ourrE#t!<E/u!;lfq!;lfr!!*&t!;lfp!;?Hh!;c]q!;ZZn!;c`o!;lfm!;ulr!;lfr
+!!*&t!;lfp!!<0#!;-<k!!*&t!;lfp!;c`p!;lfr!!*&t!;uln!2okrirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#os82lms8N)ss8E#ss8E#us8N)ts8N)ts8N)ps8N)ts8N)XrrW9$rrDfn!!)lq
+!!)ut!!)rs!!)ut!!)rs!!)utrrDiorrE#t!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq
+!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)iprrE*!rrE*!!!*#u!!)ut!!)rs!!)utrrE#trrE#t
+!!)lq!!)lqrrE#t!!)ut!!)ut!!)]l!!)`m!!)lq!!)ut!!)rs!!)ut!!)lq!!)`m!!)lqrrE#t
+!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lqrrE#t!!)or!!&eorp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#os82lms8N)ss8E#ss8E#us8N)ts8N)ts8N)ps8N)ts8N)XrrW9$rrDfn!!)lq
+!!)ut!!)rs!!)ut!!)rs!!)utrrDiorrE#t!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq
+!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)iprrE*!rrE*!!!*#u!!)ut!!)rs!!)utrrE#trrE#t
+!!)lq!!)lqrrE#t!!)ut!!)ut!!)]l!!)`m!!)lq!!)ut!!)rs!!)ut!!)lq!!)`m!!)lqrrE#t
+!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lqrrE#t!!)or!!&eorojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#os82lms8N)ss8E#ss8E#us8N)ts8N)ts8N)ps8N)ts8N)XrrW9$rrDfn!!)lq
+!!)ut!!)rs!!)ut!!)rs!!)utrrDiorrE#t!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq
+!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)iprrE*!rrE*!!!*#u!!)ut!!)rs!!)utrrE#trrE#t
+!!)lq!!)lqrrE#t!!)ut!!)ut!!)]l!!)`m!!)lq!!)ut!!)rs!!)ut!!)lq!!)`m!!)lqrrE#t
+!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lqrrE#t!!)or!!&eoro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N)ps82lms8N)ss8N)rs8N)ps8N)ts8N)ps8;rRs8;rlrr<&prrW9$rrDus!!)or!!*#u!!)or
+!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs!!)lq!!)or!!)or!!)ut!!)rs
+!!)ip!!*#u!!*#u!!)ip!!)ut!!)or!!)ut!!)rs!!)lq!!)lq!!)rs!!*#u!!)or!!)`m!!)`m
+!!)or!!)or!!)fo!!)lq!!)`m!!)lq!!)rs!!*#u!!)or!!*#uq#LBn!!)or!s&B$!;lcr!;c]q
+!;c]q!;uis!;lcr!2KSnm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N)ps82lms8N)ss8N)rs8N)ps8N)ts8N)ps8;rRs8;rlrr<&prrW9$rrDus!!)or!!*#u!!)or
+!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs!!)lq!!)or!!)or!!)ut!!)rs
+!!)ip!!*#u!!*#u!!)ip!!)ut!!)or!!)ut!!)rs!!)lq!!)lq!!)rs!!*#u!!)or!!)`m!!)`m
+!!)or!!)or!!)fo!!)lq!!)`m!!)lq!!)rs!!*#u!!)or!!*#uq#LBn!!)or!s&B$!;lcr!;c]q
+!;c]q!;uis!;lcr!2KSnklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N)ps82lms8N)ss8N)rs8N)ps8N)ts8N)ps8;rRs8;rlrr<&prrW9$rrDus!!)or!!*#u!!)or
+!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs!!)lq!!)or!!)or!!)ut!!)rs
+!!)ip!!*#u!!*#u!!)ip!!)ut!!)or!!)ut!!)rs!!)lq!!)lq!!)rs!!*#u!!)or!!)`m!!)`m
+!!)or!!)or!!)fo!!)lq!!)`m!!)lq!!)rs!!*#u!!)or!!*#uq#LBn!!)or!s&B$!;lcr!;c]q
+!;c]q!;uis!;lcr!2KSnirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNhs8N*!rr<&ps8N)ss8N)rs8N*!s7lZns8N)os8)fSrrW9$rrDfn!!)forrDrrq#LEo!!)or
+!!)fo!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u
+!!*#uqZ-Tp!!)`m!!)rs!!)lq!!)lq!!)rs!!*#uq#L-g!!)`m!!)or!!)or!!)utqZ-Km!!)`m
+!!)lq!!)rs!!*#u!!)or!!)Ti!!)or!s&B$!;lcr!;c]q!;c]q!;uis!;lcr!2KSnm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNhs8N*!rr<&ps8N)ss8N)rs8N*!s7lZns8N)os8)fSrrW9$rrDfn!!)forrDrrq#LEo!!)or
+!!)fo!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u
+!!*#uqZ-Tp!!)`m!!)rs!!)lq!!)lq!!)rs!!*#uq#L-g!!)`m!!)or!!)or!!)utqZ-Km!!)`m
+!!)lq!!)rs!!*#u!!)or!!)Ti!!)or!s&B$!;lcr!;c]q!;c]q!;uis!;lcr!2KSnklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNhs8N*!rr<&ps8N)ss8N)rs8N*!s7lZns8N)os8)fSrrW9$rrDfn!!)forrDrrq#LEo!!)or
+!!)fo!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u
+!!*#uqZ-Tp!!)`m!!)rs!!)lq!!)lq!!)rs!!*#uq#L-g!!)`m!!)or!!)or!!)utqZ-Km!!)`m
+!!)lq!!)rs!!*#u!!)or!!)Ti!!)or!s&B$!;lcr!;c]q!;c]q!;uis!;lcr!2KSnirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAk$hrrDcmrrDusrrDrrrr<'!p]19mrrDcmquG^U!!)Zk!!)forrDrr!!)cn!!)or!!)fo!!)or
+!!)ut!!)ip!!)cn!!)Wj!!)`mrrDlp!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u!s&B$!;uis
+!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em!;lcr!;lcr!<2uu!;uis!;c]q!;?Em
+!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`squ6WrU]:>\!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAk$hrrDcmrrDusrrDrrrr<'!p]19mrrDcmquG^U!!)Zk!!)forrDrr!!)cn!!)or!!)fo!!)or
+!!)ut!!)ip!!)cn!!)Wj!!)`mrrDlp!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u!s&B$!;uis
+!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em!;lcr!;lcr!<2uu!;uis!;c]q!;?Em
+!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`squ6WrU]:>X!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAk$hrrDcmrrDusrrDrrrr<'!p]19mrrDcmquG^U!!)Zk!!)forrDrr!!)cn!!)or!!)fo!!)or
+!!)ut!!)ip!!)cn!!)Wj!!)`mrrDlp!!)or!!)or!!)ut!!)rs!!)ip!!*#u!!*#u!s&B$!;uis
+!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em!;lcr!;lcr!<2uu!;uis!;c]q!;?Em
+!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNqqYpNqr;Q`squ6WrU]:>R!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#hs8N)ms8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N*!s8N)ts8N)Xrr<&krr<&prrW9$
+rrDus!!)cn!!)or!!)fo!!)or!!)ut!!)ip!!)cn!!)Wj!!)lq!!)rs!!)lq!!)or!!)or!!)ut
+!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em
+!;lcr!;lcr!<2uu!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNq
+qYpNqr;Q`squ6WrU]:>\!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#hs8N)ms8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N*!s8N)ts8N)Xrr<&krr<&prrW9$
+rrDus!!)cn!!)or!!)fo!!)or!!)ut!!)ip!!)cn!!)Wj!!)lq!!)rs!!)lq!!)or!!)or!!)ut
+!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em
+!;lcr!;lcr!<2uu!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNq
+qYpNqr;Q`squ6WrU]:>X!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#hs8N)ms8N)ss8E#ss8E!"rr<&ss8N)ts8N)ts8N*!s8N)ts8N)Xrr<&krr<&prrW9$
+rrDus!!)cn!!)or!!)fo!!)or!!)ut!!)ip!!)cn!!)Wj!!)lq!!)rs!!)lq!!)or!!)or!!)ut
+!!)rs!!)ip!!*#u!!*#u!s&B$!;uis!<)ot!;?Em!;uis!;c]q!;c]q!;uis!<2uu!:Tpf!;?Em
+!;lcr!;lcr!<2uu!;uis!;c]q!;?Em!;c]q!;uis!<2uu!;lcr!:p-i!;lcu!<<'!qu6WrqYpNq
+qYpNqr;Q`squ6WrU]:>R!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZks7u`n
+s7lZos7lZps7ZNms7lZps7lZRrr<&krr<&qrr<&trr<&srr<&ts8N)trr<&ts8N)os8N)trr<&s
+rr<&orr<&ts8N)trr<&ts8N)qrr<&qs8N)trr<&qrr<&qrr<&trr<&srr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDus!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrrDcm!!)`m!!)lq!!)ut
+!!)ut!!)utrrDoq!!)ut!!)or!!)lq!!)rs!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lq
+!!)rs!!)or!!)ut!!)rsrrB8&rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZks7u`n
+s7lZos7lZps7ZNms7lZps7lZRrr<&krr<&qrr<&trr<&srr<&ts8N)trr<&ts8N)os8N)trr<&s
+rr<&orr<&ts8N)trr<&ts8N)qrr<&qs8N)trr<&qrr<&qrr<&trr<&srr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDus!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrrDcm!!)`m!!)lq!!)ut
+!!)ut!!)utrrDoq!!)ut!!)or!!)lq!!)rs!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lq
+!!)rs!!)or!!)ut!!)rsrrB8&rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZks7u`n
+s7lZos7lZps7ZNms7lZps7lZRrr<&krr<&qrr<&trr<&srr<&ts8N)trr<&ts8N)os8N)trr<&s
+rr<&orr<&ts8N)trr<&ts8N)qrr<&qs8N)trr<&qrr<&qrr<&trr<&srr<&srr<&prr<&urr<&u
+rrW9$rrE#trrDus!!)utrrE#t!!)rs!!)lq!!)lq!!)rs!!)ut!!)utrrDcm!!)`m!!)lq!!)ut
+!!)ut!!)utrrDoq!!)ut!!)or!!)lq!!)rs!!)ut!!)utrrDWirrE#t!!)ut!!)ut!!)ip!!)lq
+!!)rs!!)or!!)ut!!)rsrrB8&ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)fms7u`ns7lZms8;rqs82iss8E#ss82lqs7u`Ss8;rns7u`ps8E#us8E#rs8;ros8;p!rr<&p
+rrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;lfq!<<*!!<<*!!<<)t
+!!*&u!<)rr!;ulr!<3#t!<3#p!<3#t!<3#t!<)rr!;?Hh!<)ro!;ulq!;lfp!!*&u!;lfp!<)ro
+!<3#t!<3#t!<)rr!!3*"o)A^js8;rps8;rps7u`ps8E#ts8E#qs8;rps8N)&s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)fms7u`ns7lZms8;rqs82iss8E#ss82lqs7u`Ss8;rns7u`ps8E#us8E#rs8;ros8;p!rr<&p
+rrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;lfq!<<*!!<<*!!<<)t
+!!*&u!<)rr!;ulr!<3#t!<3#p!<3#t!<3#t!<)rr!;?Hh!<)ro!;ulq!;lfp!!*&u!;lfp!<)ro
+!<3#t!<3#t!<)rr!!3*"o)A^js8;rps8;rps7u`ps8E#ts8E#qs8;rps8N)&s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)fms7u`ns7lZms8;rqs82iss8E#ss82lqs7u`Ss8;rns7u`ps8E#us8E#rs8;ros8;p!rr<&p
+rrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;lfq!<<*!!<<*!!<<)t
+!!*&u!<)rr!;ulr!<3#t!<3#p!<3#t!<3#t!<)rr!;?Hh!<)ro!;ulq!;lfp!!*&u!;lfp!<)ro
+!<3#t!<3#t!<)rr!!3*"o)A^js8;rps8;rps7u`ps8E#ts8E#qs8;rps8N)&s8M$Z_`*)~>
+!BpJ^mHsrH!.k02rr<%Ms+14Crr<&irr<%Ms7QEkm/bd$J,~>
+!BU8[l0\ND!.k02rr<%Ms+14Crr<&irr<%Ms7QEkklK'jJ,~>
+!B:&Xj6cm>!.k02rr<%Ms+14Crr<&irr<%Ms7QEkirR%VJ,~>
+!BpJ^mHsrH!.k02rr<%Ms+14Crr<&irr<%Ms7QEkm/bd$J,~>
+!BU8[l0\ND!.k02rr<%Ms+14Crr<&irr<%Ms7QEkklK'jJ,~>
+!B:&Xj6cm>!.k02rr<%Ms+14Crr<&irr<%Ms7QEkirR%VJ,~>
+!BpJ^m=G:gs6osf!.k0$s7ZHm!:g'h!.k1Cs8MBdeieN~>
+!BU8[l%/kcs6osf!.k0$s7ZHm!:g'h!.k1Cs8M6`c8pI~>
+!B:&Xj+75]s6osf!.k0$s7ZHm!:g'h!.k1Cs8M$Z_`*)~>
+!BpJ^m=G:gs7$'e!.k0$s8Duq!:g*f!.k1Es8MBdeieN~>
+!BU8[l%/kcs7$'e!.k0$s8Duq!:g*f!.k1Es8M6`c8pI~>
+!B:&Xj+75]s7$'e!.k0$s8Duq!:g*f!.k1Es8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCWDr!7q2L!0@0[!.k0fs8N)=s8;r?s8N(Ms6BX`m/bd$J,~>
+!BU8[l+?un!7q2L!0@0[!.k0fs8N)=s8;r?s8N(Ms6BX`klK'jJ,~>
+!B:&Xj1G?h!7q2L!0@0[!.k0fs8N)=s8;r?s8N(Ms6BX`irR%VJ,~>
+!BpJ^mG7g<!9aC[!;HNm!<<)s!:'U`!2TYn!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[!9*qX
+!8RSS!;QQo!;ZWp!8meV!;?Em!1Eldm/bd$J,~>
+!BU8[l.uC8!9aC[!;HNm!<<)s!:'U`!2TYn!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[!9*qX
+!8RSS!;QQo!;ZWp!8meV!;?Em!1EldklK'jJ,~>
+!B:&Xj5'b2!9aC[!;HNm!<<)s!:'U`!2TYn!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[!9*qX
+!8RSS!;QQo!;ZWp!8meV!;?Em!1EldirR%VJ,~>
+!BpJ^mHsrH!<)rm!9O7\!;HNl!!*&s!9sO`!29Dm!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[
+!9*qX!8RSS!;QQo!;ZWp!8meV!;?Em!1Eldm/bd$J,~>
+!BU8[l0\ND!<)rm!9O7\!;HNl!!*&s!9sO`!29Dm!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[
+!9*qX!8RSS!;QQo!;ZWp!8meV!;?Em!1EldklK'jJ,~>
+!B:&Xj6cm>!<)rm!9O7\!;HNl!!*&s!9sO`!29Dm!:Tpf!;-9k!;QQo!1Eie!:9^c!87AP!9F.[
+!9*qX!8RSS!;QQo!;ZWp!8meV!;?Em!1EldirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;lfn!;c`q!;?Hl!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu
+!<;utqu?TprVufrs8W&urVu]oao;DBrrDQg!!)<a!!%TMgA_-Q_uB]:df0:Iq>UEphu<ZVNW9"F
+!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;lfn!;c`q!;?Hl!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu
+!<;utqu?TprVufrs8W&urVu]oao;DBrrDQg!!)<a!!%TMgA_-Q_uB]:df0:Iq>UEphu<ZVNW9"B
+!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;lfn!;c`q!;?Hl!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu
+!<;utqu?TprVufrs8W&urVu]oao;DBrrDQg!!)<a!!%TMgA_-Q_uB]:df0:Iq>UEphu<ZVNW9"<
+!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZls8N)ms8;rts8N*!s8E#us8;ots7QHm
+s7lZos7lZps7ZNns7lZ:rrN3#!;ulr!!*&u!;uit!<;utqu?WqqZ$Blrr;rt!<<#uqu?Tpr;Z`r
+!<<#urVuisrr;rtqZ$Qq!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8E#os8;ourrDusrW)cor;ccq
+rr<'!r;cQkr;Zlu!;ulq!;c`o!!3*"r;Z`rr;Zcs#6+Z's8N'!r;Z]qq#:<oo`+jir;Z`r!<<#u
+qu?WqqZ$BlrVllus8;rss8N''rr<'!rr<&ss8;rps7u`ns8E#os8;ourrAtsrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZls8N)ms8;rts8N*!s8E#us8;ots7QHm
+s7lZos7lZps7ZNns7lZ:rrN3#!;ulr!!*&u!;uit!<;utqu?WqqZ$Blrr;rt!<<#uqu?Tpr;Z`r
+!<<#urVuisrr;rtqZ$Qq!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8E#os8;ourrDusrW)cor;ccq
+rr<'!r;cQkr;Zlu!;ulq!;c`o!!3*"r;Z`rr;Zcs#6+Z's8N'!r;Z]qq#:<oo`+jir;Z`r!<<#u
+qu?WqqZ$BlrVllus8;rss8N''rr<'!rr<&ss8;rps7u`ns8E#os8;ourrAtsrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZls8N)ms8;rts8N*!s8E#us8;ots7QHm
+s7lZos7lZps7ZNns7lZ:rrN3#!;ulr!!*&u!;uit!<;utqu?WqqZ$Blrr;rt!<<#uqu?Tpr;Z`r
+!<<#urVuisrr;rtqZ$Qq!<;utrVuis!<<#uqu?TpqZ$Ko!WN/ts8E#os8;ourrDusrW)cor;ccq
+rr<'!r;cQkr;Zlu!;ulq!;c`o!!3*"r;Z`rr;Zcs#6+Z's8N'!r;Z]qq#:<oo`+jir;Z`r!<<#u
+qu?WqqZ$BlrVllus8;rss8N''rr<'!rr<&ss8;rps7u`ns8E#os8;ourrAtsro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8N)ts8N)rs8N)ms8N'&rrE*!!!*#u
+rrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrE*!rrE#trrC4A!!*#u!!)or
+rrE&u!!)utrrE#t!!)lq!!)fo!!)forrE&u!!)ut!!)ut!!)orrrE&u!!)ut!!)rs!!)forrE#t
+!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)fo
+!!)utrrE#t!!)ut!!)rs!!)utrrDoq!!)orrrE*!rrE*!!!*#u!!)ut!!)ip!!)]l!!)ut!!)or
+rrE&u!!)lq!!)fo!!)iprrE#t!!*#urrE*!rrE*!!!*#u!!)ut!!)lq!!)`m!!)lq!!)utrrAts
+rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8N)ts8N)rs8N)ms8N'&rrE*!!!*#u
+rrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrE*!rrE#trrC4A!!*#u!!)or
+rrE&u!!)utrrE#t!!)lq!!)fo!!)forrE&u!!)ut!!)ut!!)orrrE&u!!)ut!!)rs!!)forrE#t
+!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)fo
+!!)utrrE#t!!)ut!!)rs!!)utrrDoq!!)orrrE*!rrE*!!!*#u!!)ut!!)ip!!)]l!!)ut!!)or
+rrE&u!!)lq!!)fo!!)iprrE#t!!*#urrE*!rrE*!!!*#u!!)ut!!)lq!!)`m!!)lq!!)utrrAts
+rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8N)ts8N)rs8N)ms8N'&rrE*!!!*#u
+rrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrE*!rrE#trrC4A!!*#u!!)or
+rrE&u!!)utrrE#t!!)lq!!)fo!!)forrE&u!!)ut!!)ut!!)orrrE&u!!)ut!!)rs!!)forrE#t
+!!)rsrrE&u!!)ut!!)ut!!)rs!!)utrrDoq!!)lq!!)utrrDoq!!)lq!!)ut!!)rsrrE#t!!)fo
+!!)utrrE#t!!)ut!!)rs!!)utrrDoq!!)orrrE*!rrE*!!!*#u!!)ut!!)ip!!)]l!!)ut!!)or
+rrE&u!!)lq!!)fo!!)iprrE#t!!*#urrE*!rrE*!!!*#u!!)ut!!)lq!!)`m!!)lq!!)utrrAts
+ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N)ps8N)rs8N)ms8N'&rr<'!!!*#urrE#trrE*!
+rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;ak;!!*#u!!)or!!)fo!!)or!!)or!!)fo
+!!)fo!!)Wj!!)or!!)fo!!)rs!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ip!!)or!!*#u!!)or!!*#u!!)or!!)lq!!)or!!*#u!!*#u
+!!)ip!!)ip!!)Ng!!)or!!)]l!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!;lcr!;?Em
+!;lcr!;lcr!2okrm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N)ps8N)rs8N)ms8N'&rr<'!!!*#urrE#trrE*!
+rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;ak;!!*#u!!)or!!)fo!!)or!!)or!!)fo
+!!)fo!!)Wj!!)or!!)fo!!)rs!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ip!!)or!!*#u!!)or!!*#u!!)or!!)lq!!)or!!*#u!!*#u
+!!)ip!!)ip!!)Ng!!)or!!)]l!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!;lcr!;?Em
+!;lcr!;lcr!2okrklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N)ps8N)rs8N)ms8N'&rr<'!!!*#urrE#trrE*!
+rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;ak;!!*#u!!)or!!)fo!!)or!!)or!!)fo
+!!)fo!!)Wj!!)or!!)fo!!)rs!!)fo!!)or!!)ut!!)ip!!)or!!*#u!!)or!!)lq!!)lq!!)rs
+!!)lq!!)or!!)or!!)ut!!)rs!!)ip!!)or!!*#u!!)or!!*#u!!)or!!)lq!!)or!!*#u!!*#u
+!!)ip!!)ip!!)Ng!!)or!!)]l!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!;lcr!;?Em
+!;lcr!;lcr!2okrirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps7ZNns7lZls8N)ms8N*!rrW9$!!*#urrE#trrE*!rrE*!
+rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ+e=!!)rs!!)rs!!)fo!!)or!!)or!!)fo!!)fo!!)fo
+qZ-Nn!!)cn!!*#u!!)cn!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs
+!!)ip!!)or!!*#uq#LEo!!)Wj!!)or!!*#u!!*#u!!*#uqZ-Hl!!)]lqZ-Nn!!)]l!!)fo!!)ip
+!!)rs!!*#u!!*#u!!*#u!W`9#q#L<l!!)`m!!)or!!&\lrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps7ZNns7lZls8N)ms8N*!rrW9$!!*#urrE#trrE*!rrE*!
+rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ+e=!!)rs!!)rs!!)fo!!)or!!)or!!)fo!!)fo!!)fo
+qZ-Nn!!)cn!!*#u!!)cn!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs
+!!)ip!!)or!!*#uq#LEo!!)Wj!!)or!!*#u!!*#u!!*#uqZ-Hl!!)]lqZ-Nn!!)]l!!)fo!!)ip
+!!)rs!!*#u!!*#u!!*#u!W`9#q#L<l!!)`m!!)or!!&\lrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps7ZNns7lZls8N)ms8N*!rrW9$!!*#urrE#trrE*!rrE*!
+rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ+e=!!)rs!!)rs!!)fo!!)or!!)or!!)fo!!)fo!!)fo
+qZ-Nn!!)cn!!*#u!!)cn!!)or!!)ut!!)ipq#LEo!!)Wj!!)iprW)]m!!)or!!)or!!)ut!!)rs
+!!)ip!!)or!!*#uq#LEo!!)Wj!!)or!!*#u!!*#u!!*#uqZ-Hl!!)]lqZ-Nn!!)]l!!)fo!!)ip
+!!)rs!!*#u!!*#u!!*#u!W`9#q#L<l!!)`m!!)or!!&\lro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us7ZKns7cTks8N)ms8N*!s8;rss8N)ts8N*!s8N*!
+s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82l?s7u`nrr<&orr<&rrr<&rrr<&orr<&orr<&prr<&s
+rr<&rrr<&nrr<&urr<&nrr<&rrr<&trr<&prr<&nrr<&jrr<&ms8N)prr<&rrr<&rrr<&trr<&s
+rr<&prr<&rrr<&urr<&nrr<&jrr<&rrr<&urr<&urrW9$rrDus!!)ip!!)`m!!)rs!!)or!!)]l
+!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;-9k!;?Em!;lcr!20Akm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us7ZKns7cTks8N)ms8N*!s8;rss8N)ts8N*!s8N*!
+s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82l?s7u`nrr<&orr<&rrr<&rrr<&orr<&orr<&prr<&s
+rr<&rrr<&nrr<&urr<&nrr<&rrr<&trr<&prr<&nrr<&jrr<&ms8N)prr<&rrr<&rrr<&trr<&s
+rr<&prr<&rrr<&urr<&nrr<&jrr<&rrr<&urr<&urrW9$rrDus!!)ip!!)`m!!)rs!!)or!!)]l
+!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;-9k!;?Em!;lcr!20AkklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us7ZKns7cTks8N)ms8N*!s8;rss8N)ts8N*!s8N*!
+s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82l?s7u`nrr<&orr<&rrr<&rrr<&orr<&orr<&prr<&s
+rr<&rrr<&nrr<&urr<&nrr<&rrr<&trr<&prr<&nrr<&jrr<&ms8N)prr<&rrr<&rrr<&trr<&s
+rr<&prr<&rrr<&urr<&nrr<&jrr<&rrr<&urr<&urrW9$rrDus!!)ip!!)`m!!)rs!!)or!!)]l
+!!)fo!!)ip!!)rs!!*#u!!*#u!!*#u!s&B$!;-9k!;?Em!;lcr!20AkirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#os8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#u
+s8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)ts8N)Crr<&qrr<&trr<&orr<&rrr<&rrr<&o
+rr<&orr<&prr<&srr<&rrr<&mrrN3#!;?Em!;lcr!<)ot!;ZWp!;HKn!;$3j!;c]q!;uis!;c]q
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;HKn!;$3j!;lcr!<2uu!<3!#!<<'!r;Q`sq>UEp
+pAY*mr;Q`squ6Wrp&>!lq#:<oq>UEpr;Q`srr2rurr2rurr3'#s8N)krr<&mrr<&rrr<%ls8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#os8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#u
+s8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)ts8N)Crr<&qrr<&trr<&orr<&rrr<&rrr<&o
+rr<&orr<&prr<&srr<&rrr<&mrrN3#!;?Em!;lcr!<)ot!;ZWp!;HKn!;$3j!;c]q!;uis!;c]q
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;HKn!;$3j!;lcr!<2uu!<3!#!<<'!r;Q`sq>UEp
+pAY*mr;Q`squ6Wrp&>!lq#:<oq>UEpr;Q`srr2rurr2rurr3'#s8N)krr<&mrr<&rrr<%ls8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#os8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#u
+s8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)ts8N)Crr<&qrr<&trr<&orr<&rrr<&rrr<&o
+rr<&orr<&prr<&srr<&rrr<&mrrN3#!;?Em!;lcr!<)ot!;ZWp!;HKn!;$3j!;c]q!;uis!;c]q
+!;lcr!;lcr!<)ot!;uis!;ZWp!;lcr!<2uu!;HKn!;$3j!;lcr!<2uu!<3!#!<<'!r;Q`sq>UEp
+pAY*mr;Q`squ6Wrp&>!lq#:<oq>UEpr;Q`srr2rurr2rurr3'#s8N)krr<&mrr<&rrr<%ls8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lZps7ZNns7lZks82iss8E#ts7?9ks8Duus7HBk
+s7lZps7lZns7lZ=rr<&qrr<&trr<&os8N)trr<&qrr<&orr<&trr<&trr<&prr<&ts8N)rrr<&m
+rrN3#!;?Hm!<)ot!;uis!;QQo!<)rt!<)ot!<)rt!;c]q!;c`q!<)ot!;c]q!;c]q!<)ot!;uis
+!;uis!;QQo!<)rt!<)ot!<)rt!<)ot!<)rt!;c]q!;lcr!<2uu!<3!#!<<'!rVultq>UEppAY*m
+rVultqu6Wrp&>!lq#:<orVlitrr2rur;Q`srr2rurr2rurr2rurr2rurVultqu6WrrVlitqu6Wr
+qYpNqrVultqu?ZrYQ+Uh!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lZps7ZNns7lZks82iss8E#ts7?9ks8Duus7HBk
+s7lZps7lZns7lZ=rr<&qrr<&trr<&os8N)trr<&qrr<&orr<&trr<&trr<&prr<&ts8N)rrr<&m
+rrN3#!;?Hm!<)ot!;uis!;QQo!<)rt!<)ot!<)rt!;c]q!;c`q!<)ot!;c]q!;c]q!<)ot!;uis
+!;uis!;QQo!<)rt!<)ot!<)rt!<)ot!<)rt!;c]q!;lcr!<2uu!<3!#!<<'!rVultq>UEppAY*m
+rVultqu6Wrp&>!lq#:<orVlitrr2rur;Q`srr2rurr2rurr2rurr2rurVultqu6WrrVlitqu6Wr
+qYpNqrVultqu?ZrYQ+Ud!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lZps7ZNns7lZks82iss8E#ts7?9ks8Duus7HBk
+s7lZps7lZns7lZ=rr<&qrr<&trr<&os8N)trr<&qrr<&orr<&trr<&trr<&prr<&ts8N)rrr<&m
+rrN3#!;?Hm!<)ot!;uis!;QQo!<)rt!<)ot!<)rt!;c]q!;c`q!<)ot!;c]q!;c]q!<)ot!;uis
+!;uis!;QQo!<)rt!<)ot!<)rt!<)ot!<)rt!;c]q!;lcr!<2uu!<3!#!<<'!rVultq>UEppAY*m
+rVultqu6Wrp&>!lq#:<orVlitrr2rur;Q`srr2rurr2rurr2rurr2rurVultqu6WrrVlitqu6Wr
+qYpNqrVultqu?ZrYQ+U^!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs82iss8E#us7lZks82lss8N)ts8;ots7u]q
+s8Duus8)crs8;rps8)frs7lZns7u`>s8;rss8;ots7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ot
+s8E#us7u`krr<&lrrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;QTm
+!!<0#!<)rr!;c`o!;lfm!<<)u!<<*!!<<*!!<<)t!!*&u!<3#p!;QTm!!*&u!<<)q!;uln!;c`o
+!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq!;ZZp!3cG%m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs82iss8E#us7lZks82lss8N)ts8;ots7u]q
+s8Duus8)crs8;rps8)frs7lZns7u`>s8;rss8;ots7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ot
+s8E#us7u`krr<&lrrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;QTm
+!!<0#!<)rr!;c`o!;lfm!<<)u!<<*!!<<*!!<<)t!!*&u!<3#p!;QTm!!*&u!<<)q!;uln!;c`o
+!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq!;ZZp!3cG%klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs82iss8E#us7lZks82lss8N)ts8;ots7u]q
+s8Duus8)crs8;rps8)frs7lZns7u`>s8;rss8;ots7u`os8N'!s8;rqs7u`ls8;rss7u`ns8;ot
+s8E#us7u`krr<&lrrE-"r;cfrq>gEmr;c]or;c`pq>gKo!<E/u!;uln!;ulq!;ulr!<3#t!;QTm
+!!<0#!<)rr!;c`o!;lfm!<<)u!<<*!!<<*!!<<)t!!*&u!<3#p!;QTm!!*&u!<<)q!;uln!;c`o
+!<3#t!<3#t!!*&u!<<*!!<<*!!<3#s!;QTm!<)ro!;ulq!;ZZp!3cG%irR%VJ,~>
+!BpJ^mHsrH!.k0$s7$$g!;6?l!.k0$s+LFOm/bd$J,~>
+!BU8[l0\ND!.k0$s7$$g!;6?l!.k0$s+LFOklK'jJ,~>
+!B:&Xj6cm>!.k0$s7$$g!;6?l!.k0$s+LFOirR%VJ,~>
+!BpJ^mHsrH!.k0$s7-*h!;-9k!.k0$s+LFOm/bd$J,~>
+!BU8[l0\ND!.k0$s7-*h!;-9k!.k0$s+LFOklK'jJ,~>
+!B:&Xj6cm>!.k0$s7-*h!;-9k!.k0$s+LFOirR%VJ,~>
+!BpJ^m=G:gs3^iH!;-9k!.k0$s+LFOm/bd$J,~>
+!BU8[l%/kcs3^iH!;-9k!.k0$s+LFOklK'jJ,~>
+!B:&Xj+75]s3^iH!;-9k!.k0$s+LFOirR%VJ,~>
+!BpJ^m=G:gs4%)H!;?Hk!.k0$s+^RQm/bd$J,~>
+!BU8[l%/kcs4%)H!;?Hk!.k0$s+^RQklK'jJ,~>
+!B:&Xj+75]s4%)H!;?Hk!.k0$s+^RQirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mBHWg!5SX6!1Elc!5JR6!.k1Bs8;qKs.KDkm/bd$J,~>
+!BU8[l*13c!5SX6!1Elc!5JR6!.k1Bs8;qKs.KDkklK'jJ,~>
+!B:&Xj08R]!5SX6!1Elc!5JR6!.k1Bs8;qKs.KDkirR%VJ,~>
+!BpJ^mFqU=!!<0#!8dbR!9*tW!<<)s!:'U`!5nj8!!3*"gA_-Q^Ae05cMmkEV>gMqJcDDCrp9a;
+4b*~>
+!BU8[l.Z19!!<0#!8dbR!9*tW!<<)s!:'U`!5nj8!!3*"gA_-Q^Ae05cMmkEV>gMqJcDDCrojI/
+3e.~>
+!B:&Xj4aP3!!<0#!8dbR!9*tW!<<)s!:'U`!5nj8!!3*"gA_-Q^Ae05cMmkEV>gMqJcDDCro4$s
+2h1~>
+!BpJ^mHsrH!;ull!8IPR!9*tV!!*&s!9sO`!6,!<!<)rt!8@GQ!5AI5!7(TE!2]\q!.k0Cs8MBd
+eieN~>
+!BU8[l0\ND!;ull!8IPR!9*tV!!*&s!9sO`!6,!<!<)rt!8@GQ!5AI5!7(TE!2]\q!.k0Cs8M6`
+c8pI~>
+!B:&Xj6cm>!;ull!8IPR!9*tV!!*&s!9sO`!6,!<!<)rt!8@GQ!5AI5!7(TE!2]\q!.k0Cs8M$Z
+_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utqZ$Qqq>^BnrVucq!<;rsqu?Wq
+rr;uus8W&us8W#t!<<#u"9/?$s8E#ts8N'!s8;rps8;rrs8;rts8E#ss7u`^rr<&rrr<&Qrr<&5
+rr<%Ms7-*h!.k0Cs8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utqZ$Qqq>^BnrVucq!<;rsqu?Wq
+rr;uus8W&us8W#t!<<#u"9/?$s8E#ts8N'!s8;rps8;rrs8;rts8E#ss7u`^rr<&rrr<&Qrr<&5
+rr<%Ms7-*h!.k0Cs8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<3#t!!E6$!<<#us8W&u!<;utqZ$Qqq>^BnrVucq!<;rsqu?Wq
+rr;uus8W&us8W#t!<<#u"9/?$s8E#ts8N'!s8;rps8;rrs8;rts8E#ss7u`^rr<&rrr<&Qrr<&5
+rr<%Ms7-*h!.k0Cs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTks8N)rs7lZps82iss82los8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lZ^rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rn
+rr<&ps8;rqs8E#us8E#os8N'!s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVuru
+rW)iqr;Zlu!;HNm!;lfr!!*&t!;?Hk!!<0#!<)rr!;uls!!*&t!;lfp!;ulr!!*&u!;lfp!;QQo
+!.k0Cs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTks8N)rs7lZps82iss82los8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lZ^rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rn
+rr<&ps8;rqs8E#us8E#os8N'!s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVuru
+rW)iqr;Zlu!;HNm!;lfr!!*&t!;?Hk!!<0#!<)rr!;uls!!*&t!;lfp!;ulr!!*&u!;lfp!;QQo
+!.k0Cs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lWps7QEms7cTks8N)rs7lZps82iss82los8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lZ^rr<&ls8;rrs8N''rr<'!rr<&us8N'!s8;rn
+rr<&ps8;rqs8E#us8E#os8N'!s8;rrs8N)ts8N*!s8N''rr<'!rr<&trrE-"r;c`pr;ccqrVuru
+rW)iqr;Zlu!;HNm!;lfr!!*&t!;?Hk!!<0#!<)rr!;uls!!*&t!;lfp!;ulr!!*&u!;lfp!;QQo
+!.k0Cs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#rs8N)ss8E#s
+s8E#ts8N)us8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trrDHd!!)`m!!)ut!!)utrrE*!rrE*!!!*#urrE#t!!)lq!!)lq!!)ut!!)rs
+!!)ut!!)cnrrE#t!!)ut!!)rs!!*#urrE*!rrE*!!!*#urrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)utrrD`l!!)lqrrE#t!!)fo!!)utrrE#t!!)ut!!)rsrrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)ut!!)ip!!%TMT`>#Y!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#rs8N)ss8E#s
+s8E#ts8N)us8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trrDHd!!)`m!!)ut!!)utrrE*!rrE*!!!*#urrE#t!!)lq!!)lq!!)ut!!)rs
+!!)ut!!)cnrrE#t!!)ut!!)rs!!*#urrE*!rrE*!!!*#urrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)utrrD`l!!)lqrrE#t!!)fo!!)utrrE#t!!)ut!!)rsrrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)ut!!)ip!!%TMT`>#U!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8E#ss8Duus8Duus8E!$rr<'!s8E#ts8E#rs8N)ss8E#s
+s8E#ts8N)us8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trrDHd!!)`m!!)ut!!)utrrE*!rrE*!!!*#urrE#t!!)lq!!)lq!!)ut!!)rs
+!!)ut!!)cnrrE#t!!)ut!!)rs!!*#urrE*!rrE*!!!*#urrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)utrrD`l!!)lqrrE#t!!)fo!!)utrrE#t!!)ut!!)rsrrE#t!!)ut!!)ut!!)orrrE&u!!)ut
+!!)ut!!)ip!!%TMT`>#O!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss8N)r
+s8N)ts8N'#rr<&os8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&u
+rW)fpr;c*^!!)cn!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)or!!)rs!s&B$!;?Em
+!;uis!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`sq#:<or;Q`sp&>!lqYpNq
+r;Q`sq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`srr2ruqu6Wrr;Q`soD\djq>UEpJcDDCrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss8N)r
+s8N)ts8N'#rr<&os8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&u
+rW)fpr;c*^!!)cn!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)or!!)rs!s&B$!;?Em
+!;uis!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`sq#:<or;Q`sp&>!lqYpNq
+r;Q`sq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`srr2ruqu6Wrr;Q`soD\djq>UEpJcDDCrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss8N)r
+s8N)ts8N'#rr<&os8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&u
+rW)fpr;c*^!!)cn!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)or!!)rs!s&B$!;?Em
+!;uis!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!qu6Wrr;Q`sq#:<or;Q`sp&>!lqYpNq
+r;Q`sq>UEpqu6Wrrr2ruqu6WrrVlitr;Q`srr2ruqu6Wrr;Q`soD\djq>UEpJcDDCro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNk
+s8E#ms8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ-!_!!)cn
+!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)orq#L<lrrD`l!!)rs!!)ut!!)rs!!*#u!!*#u
+!!*#u!!*#u!!)or!W`9#q#L?m!!)cnrW)Nh!!)lq!!)rs!!)ip!!)or!!*#uq#LBn!!)rs!!*#u
+q#L?m!!)foqZ-Hl!!%TMT`>#Y!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNk
+s8E#ms8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ-!_!!)cn
+!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)orq#L<lrrD`l!!)rs!!)ut!!)rs!!*#u!!*#u
+!!*#u!!*#u!!)or!W`9#q#L?m!!)cnrW)Nh!!)lq!!)rs!!)ip!!)or!!*#uq#LBn!!)rs!!*#u
+q#L?m!!)foqZ-Hl!!%TMT`>#U!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNk
+s8E#ms8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ-!_!!)cn
+!!)or!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)orq#L<lrrD`l!!)rs!!)ut!!)rs!!*#u!!*#u
+!!*#u!!*#u!!)or!W`9#q#L?m!!)cnrW)Nh!!)lq!!)rs!!)ip!!)or!!*#uq#LBn!!)rs!!*#u
+q#L?m!!)foqZ-Hl!!%TMT`>#O!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNl
+s8N'#rr<&os8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82larr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)lrr<&srr<&trr<&srr<&urr<&u
+rr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrD]k!!)lq!!)rs!!)ip!!)or!!*#u!!)`m!!)rs!!*#u
+!!)]l!!)ip!!)rs!!)ip!!%TMT`>#Y!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNl
+s8N'#rr<&os8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82larr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)lrr<&srr<&trr<&srr<&urr<&u
+rr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrD]k!!)lq!!)rs!!)ip!!)or!!*#u!!)`m!!)rs!!*#u
+!!)]l!!)ip!!)rs!!)ip!!%TMT`>#U!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N'/rr<'!rr<'!rr<'!rr<&ss8N)ss8N)ss7ZNl
+s8N'#rr<&os8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82larr<&n
+rr<&rrr<&urr<&urr<&urr<&urr<&rrr<&rrr<&rrr<&ks8N)lrr<&srr<&trr<&srr<&urr<&u
+rr<&urr<&urr<&rrrW9$rrD`l!!)ZkrrD]k!!)lq!!)rs!!)ip!!)or!!*#u!!)`m!!)rs!!*#u
+!!)]l!!)ip!!)rs!!)ip!!%TMT`>#O!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#rs8N)s
+s8E#ms8N)us8N)ps8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N)crr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)]l!s&B$!;?Em!;uis
+!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lq#:<or;Q`sp&>!lqYpNqr;Q`sq>UEp
+qu6Wrrr2rupAY*mr;Q`srr2rup&>!lq>UEpr;Q`sq>UEpJcDDCrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#rs8N)s
+s8E#ms8N)us8N)ps8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N)crr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)]l!s&B$!;?Em!;uis
+!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lq#:<or;Q`sp&>!lqYpNqr;Q`sq>UEp
+qu6Wrrr2rupAY*mr;Q`srr2rup&>!lq>UEpr;Q`sq>UEpJcDDCrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E!,rr<'!rr<'!rr<'!s8E#ts8E#rs8N)s
+s8E#ms8N)us8N)ps8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N)crr<&rrrW9$rrDrr!!*#u!!*#u!!*#u!!*#u!!)or!!)or!!)or!!)]l!s&B$!;?Em!;uis
+!<)ot!;uis!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lq#:<or;Q`sp&>!lqYpNqr;Q`sq>UEp
+qu6Wrrr2rupAY*mr;Q`srr2rup&>!lq>UEpr;Q`sq>UEpJcDDCro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7lZos7lZps82iss82lp
+s82iss8E#ts7?9ks8Duus7HBks7lZps7lZns7lZ]s8N)trr<&trr<&trr<&trr<&urr<&urr<&u
+s8N)trr<&qrr<&qrr<&ts8N)trr<&trr<&nrr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&os8N)trr<&lrr<&qrr<&srr<&orr<&ts8N)trr<&ts8N)trr<&srr<&t
+rr<&ts8N)srr<&prr<&ts8N)prr<&os8N(Ms/Z2!m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7lZos7lZps82iss82lp
+s82iss8E#ts7?9ks8Duus7HBks7lZps7lZns7lZ]s8N)trr<&trr<&trr<&trr<&urr<&urr<&u
+s8N)trr<&qrr<&qrr<&ts8N)trr<&trr<&nrr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&os8N)trr<&lrr<&qrr<&srr<&orr<&ts8N)trr<&ts8N)trr<&srr<&t
+rr<&ts8N)srr<&prr<&ts8N)prr<&os8N(Ms/Z2!klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTos7lWps8;ots8Duus8Duus7lZos7lZos7lZps82iss82lp
+s82iss8E#ts7?9ks8Duus7HBks7lZps7lZns7lZ]s8N)trr<&trr<&trr<&trr<&urr<&urr<&u
+s8N)trr<&qrr<&qrr<&ts8N)trr<&trr<&nrr<&srr<&trr<&ts8N)urr<&urr<&urr<&us8N)t
+rr<&trr<&ts8N)srr<&os8N)trr<&lrr<&qrr<&srr<&orr<&ts8N)trr<&ts8N)trr<&srr<&t
+rr<&ts8N)srr<&prr<&ts8N)prr<&os8N(Ms/Z2!irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;cfrq#L?mqZ-Zrqu?`s
+quHZpquHcsrrE#tr;Zitq>^NqrVuruqZ$Wrr;c`pqZ-Zrq#LBnq>fd[r;c`pr;cfrrW)uurrE*!
+rrE*!!<E/u!;uln!;ulq!;ulr!<<)u!;ZZo!<3#t!<)rr!!E6$!<<#us8W*!s8W*!"9/?$s8;rp
+s8;rqs7u`nrrE-"r;cTlq>gNprW)rtrW)`nr;Zlu!;ulq!;ulr!<3#t!<)rr!;uln!;ulq!!*&u
+!<3#p!;lfr!.k0Ns8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;cfrq#L?mqZ-Zrqu?`s
+quHZpquHcsrrE#tr;Zitq>^NqrVuruqZ$Wrr;c`pqZ-Zrq#LBnq>fd[r;c`pr;cfrrW)uurrE*!
+rrE*!!<E/u!;uln!;ulq!;ulr!<<)u!;ZZo!<3#t!<)rr!!E6$!<<#us8W*!s8W*!"9/?$s8;rp
+s8;rqs7u`nrrE-"r;cTlq>gNprW)rtrW)`nr;Zlu!;ulq!;ulr!<3#t!<)rr!;uln!;ulq!!*&u
+!<3#p!;lfr!.k0Ns8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82los8;rss8;ots8Duus8E!#rr<'!r;cfrq#L?mqZ-Zrqu?`s
+quHZpquHcsrrE#tr;Zitq>^NqrVuruqZ$Wrr;c`pqZ-Zrq#LBnq>fd[r;c`pr;cfrrW)uurrE*!
+rrE*!!<E/u!;uln!;ulq!;ulr!<<)u!;ZZo!<3#t!<)rr!!E6$!<<#us8W*!s8W*!"9/?$s8;rp
+s8;rqs7u`nrrE-"r;cTlq>gNprW)rtrW)`nr;Zlu!;ulq!;ulr!<3#t!<)rr!;uln!;ulq!!*&u
+!<3#p!;lfr!.k0Ns8M$Z_`*)~>
+!BpJ^mHsrH!8IPR!.k0urr<%Ms5*bU!.k0$s5F"Wm/bd$J,~>
+!BU8[l0\ND!8IPR!.k0urr<%Ms5*bU!.k0$s5F"WklK'jJ,~>
+!B:&Xj6cm>!8IPR!.k0urr<%Ms5*bU!.k0$s5F"WirR%VJ,~>
+!BpJ^mHsrH!8IPR!.k0urr<%Ms5*bU!.k0$s5F"Wm/bd$J,~>
+!BU8[l0\ND!8IPR!.k0urr<%Ms5*bU!.k0$s5F"WklK'jJ,~>
+!B:&Xj6cm>!8IPR!.k0urr<%Ms5*bU!.k0$s5F"WirR%VJ,~>
+!BpJ^mC`Js!.k1"rr<%Ms53hV!.k0$s5<qVm/bd$J,~>
+!BU8[l+I&o!.k1"rr<%Ms53hV!.k0$s5<qVklK'jJ,~>
+!B:&Xj1PEi!.k1"rr<%Ms53hV!.k0$s5<qVirR%VJ,~>
+!BpJ^mC`Js!.k1#s8;qKs5s@Z!.k0$s53kUm/bd$J,~>
+!BU8[l+I&o!.k1#s8;qKs5s@Z!.k0$s53kUklK'jJ,~>
+!B:&Xj1PEi!.k1#s8;qKs5s@Z!.k0$s53kUirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mEYb3!:Bgd!;c`q!8IPR!:^$d!;?Hl!20Al!1*Zb!.k0$s0_n+m/bd$J,~>
+!BU8[l-B>/!:Bgd!;c`q!8IPR!:^$d!;?Hl!20Al!1*Zb!.k0$s0_n+klK'jJ,~>
+!B:&Xj3I])!:Bgd!;c`q!8IPR!:^$d!;?Hl!20Al!1*Zb!.k0$s0_n+irR%VJ,~>
+!BpJ^mG7g:!;uls!:Bgd!;c`q!:'UY!;uls!:^$d!;?Hl!6bE@!:9^c!;QQo!;ZWp!8meV!;?Em
+!9a@^!8meV!6P6@!9!kW!:Bdd!;?Em!.k0Ts8MBdeieN~>
+!BU8[l.uC6!;uls!:Bgd!;c`q!:'UY!;uls!:^$d!;?Hl!6bE@!:9^c!;QQo!;ZWp!8meV!;?Em
+!9a@^!8meV!6P6@!9!kW!:Bdd!;?Em!.k0Ts8M6`c8pI~>
+!B:&Xj5'b0!;uls!:Bgd!;c`q!:'UY!;uls!:^$d!;?Hl!6bE@!:9^c!;QQo!;ZWp!8meV!;?Em
+!9a@^!8meV!6P6@!9!kW!:Bdd!;?Em!.k0Ts8M$Z_`*)~>
+!BpJ^mHsrH!<)rl!8[\T!:'UY!9X=]!;6Bl!6G0?!:9^c!;QQo!;ZWp!8meV!;?Em!9a@^!8meV
+!6P6@!9!kW!:Bdd!;?Em!.k0Ts8MBdeieN~>
+!BU8[l0\ND!<)rl!8[\T!:'UY!9X=]!;6Bl!6G0?!:9^c!;QQo!;ZWp!8meV!;?Em!9a@^!8meV
+!6P6@!9!kW!:Bdd!;?Em!.k0Ts8M6`c8pI~>
+!B:&Xj6cm>!<)rl!8[\T!:'UY!9X=]!;6Bl!6G0?!:9^c!;QQo!;ZWp!8meV!;?Em!9a@^!8meV
+!6P6@!9!kW!:Bdd!;?Em!.k0Ts8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<)rt!<<)s!;ulr!!*&t!<)rq!;ulm!;lfp!;?Hm!<)rt!<<)s!;ZZn!;ZZp
+!;c`o!!<0#!<)ro!7_#M!<3&Zrr<&prr<&Vrr<&/rr<&@rr<&Brr<%Ms/#bpm/bd$J,~>
+!BU8[l0\ND!;lfr!<)rt!<<)s!;ulr!!*&t!<)rq!;ulm!;lfp!;?Hm!<)rt!<<)s!;ZZn!;ZZp
+!;c`o!!<0#!<)ro!7_#M!<3&Zrr<&prr<&Vrr<&/rr<&@rr<&Brr<%Ms/#bpklK'jJ,~>
+!B:&Xj6cm>!;lfr!<)rt!<<)s!;ulr!!*&t!<)rq!;ulm!;lfp!;?Hm!<)rt!<<)s!;ZZn!;ZZp
+!;c`o!!<0#!<)ro!7_#M!<3&Zrr<&prr<&Vrr<&/rr<&@rr<&Brr<%Ms/#bpirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nquHZpq#LBnq#L3irrE*!"T\Q&
+!<<)s!;lfl!;lfr!;lfl!<3#o!7_#M!<3&ss8Duus8E#qs8E#ps7u`orrE-"r;cisrr<9'!!*'!
+!!)rsr;c`pq>gHnrW)cor;Zlu!;HNm!;lfr!!*&t!;?Hk!!3*"rVllus8;rps8;rqs8Duus8E#q
+s8;ros8;ourrE#tq>gHnr;ccqrVururW)iqrW)cor;Zlu!<)ro!;ulr!;ZZn!!3*"q>^Hp!<;ut
+JcF$qrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nquHZpq#LBnq#L3irrE*!"T\Q&
+!<<)s!;lfl!;lfr!;lfl!<3#o!7_#M!<3&ss8Duus8E#qs8E#ps7u`orrE-"r;cisrr<9'!!*'!
+!!)rsr;c`pq>gHnrW)cor;Zlu!;HNm!;lfr!!*&t!;?Hk!!3*"rVllus8;rps8;rqs8Duus8E#q
+s8;ros8;ourrE#tq>gHnr;ccqrVururW)iqrW)cor;Zlu!<)ro!;ulr!;ZZn!!3*"q>^Hp!<;ut
+JcF$qrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rriE&!!*'!quHZpp]1<nquHZpq#LBnq#L3irrE*!"T\Q&
+!<<)s!;lfl!;lfr!;lfl!<3#o!7_#M!<3&ss8Duus8E#qs8E#ps7u`orrE-"r;cisrr<9'!!*'!
+!!)rsr;c`pq>gHnrW)cor;Zlu!;HNm!;lfr!!*&t!;?Hk!!3*"rVllus8;rps8;rqs8Duus8E#q
+s8;ros8;ourrE#tq>gHnr;ccqrVururW)iqrW)cor;Zlu!<)ro!;ulr!;ZZn!!3*"q>^Hp!<;ut
+JcF$qro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#os82lms8N)s
+s8E#ss8E#rs8N)ss8E#ts8E#ts8N)ts8N)Lrr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&orr<&ts8N)ts8N)t
+rr<&trr<&trr<&rs8N)urr<&trr<&trr<&srr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&qrr<&q
+rr<&ts8N)rrr<&mrr<&qrr<&ts8N)os8N)trr<%Ms3L`Em/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#os82lms8N)s
+s8E#ss8E#rs8N)ss8E#ts8E#ts8N)ts8N)Lrr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&orr<&ts8N)ts8N)t
+rr<&trr<&trr<&rs8N)urr<&trr<&trr<&srr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&qrr<&q
+rr<&ts8N)rrr<&mrr<&qrr<&ts8N)os8N)trr<%Ms3L`EklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lms8N)rs8E#ts8N)rs8N)qs8N)qs8E#ss8E#os82lms8N)s
+s8E#ss8E#rs8N)ss8E#ts8E#ts8N)ts8N)Lrr<&urr<&rs8N)urr<&qrr<&orr<&ps8N)trr<&u
+s8N*!s8N*!rr<&urr<&trr<&qrr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&orr<&ts8N)ts8N)t
+rr<&trr<&trr<&rs8N)urr<&trr<&trr<&srr<&ts8N)rrr<&prr<&trr<&rs8N)urr<&qrr<&q
+rr<&ts8N)rrr<&mrr<&qrr<&ts8N)os8N)trr<%Ms3L`EirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ps82lms8N)s
+s8N)rs8N)ss8N)ss8N)ss8N)us8;rFrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrDrr!!)or!!)`m!!)or!!)or!!)]l!!)lq!!)rs!!)ip!!)or!!)ut!!)rs!!)fo!!)or
+!!)Wj!!)ut!!)or!!)or!!)lq!!)or!!)rs!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)or!!)fo
+!!)or!!%TMd/X+4!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ps82lms8N)s
+s8N)rs8N)ss8N)ss8N)ss8N)us8;rFrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrDrr!!)or!!)`m!!)or!!)or!!)]l!!)lq!!)rs!!)ip!!)or!!)ut!!)rs!!)fo!!)or
+!!)Wj!!)ut!!)or!!)or!!)lq!!)or!!)rs!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)or!!)fo
+!!)or!!%TMd/X+0!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lms8N)rs8N)ts8N)rs8N)qs8N)qs8N)rs8N)ps82lms8N)s
+s8N)rs8N)ss8N)ss8N)ss8N)us8;rFrr<&urr<&rrr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrDrr!!)or!!)`m!!)or!!)or!!)]l!!)lq!!)rs!!)ip!!)or!!)ut!!)rs!!)fo!!)or
+!!)Wj!!)ut!!)or!!)or!!)lq!!)or!!)rs!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)or!!)fo
+!!)or!!%TMd/X+*!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N*!rr<&p
+s8N)ss7ZNks8N)ss8N)ss8N)ts8)fHrr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrN3#s7lZlrr<&mrr<&rrr<&err<&qrr<&srr<&prr<&mrr<&srr<&ts8)fnrr<&os8)fprr<&k
+rr<&qs7lZmrr<&lrr<&ps8E#nrr<&mrr<&rrr<&hrr<&rrr<%Ms3UfFm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N*!rr<&p
+s8N)ss7ZNks8N)ss8N)ss8N)ts8)fHrr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrN3#s7lZlrr<&mrr<&rrr<&err<&qrr<&srr<&prr<&mrr<&srr<&ts8)fnrr<&os8)fprr<&k
+rr<&qs7lZmrr<&lrr<&ps8E#nrr<&mrr<&rrr<&hrr<&rrr<%Ms3UfFklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N*!rr<&p
+s8N)ss7ZNks8N)ss8N)ss8N)ts8)fHrr<&srr<&srr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrN3#s7lZlrr<&mrr<&rrr<&err<&qrr<&srr<&prr<&mrr<&srr<&ts8)fnrr<&os8)fprr<&k
+rr<&qs7lZmrr<&lrr<&ps8E#nrr<&mrr<&rrr<&hrr<&rrr<%Ms3UfFirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N)ms8N)ss7ZNk
+s8N)ss8N)ss8N)rs82lJs7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m
+!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs!!)ut!!)Zk!!)lq
+!!)]l!!)]l!!)`mrrDoq!!)`m!!)or!!)Qh!!)or!!%TMd/X+4!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N)ms8N)ss7ZNk
+s8N)ss8N)ss8N)rs82lJs7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m
+!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs!!)ut!!)Zk!!)lq
+!!)]l!!)]l!!)`mrrDoq!!)`m!!)or!!)Qh!!)or!!%TMd/X+0!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ms8N)rs8N)ts8N)rs8N)qs8N)qs7ZNhs8N)ms8N)ss7ZNk
+s8N)ss8N)ss8N)rs82lJs7u`nrr<&lrr<&orr<&prr<&srr<&urr<&urr<&urrW9$rrD]k!!)`m
+!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs!!)ut!!)Zk!!)lq
+!!)]l!!)]l!!)`mrrDoq!!)`m!!)or!!)Qh!!)or!!%TMd/X+*!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#hs8N)ms8N)s
+s8E#ks8N)ss8E#ts8E#ts8N)ts8N)Nrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrD]k!!)`m!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs
+!!)ut!!)Zk!!)lq!!)]l!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)Qh!!)or!!%TMd/X+4!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#hs8N)ms8N)s
+s8E#ks8N)ss8E#ts8E#ts8N)ts8N)Nrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrD]k!!)`m!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs
+!!)ut!!)Zk!!)lq!!)]l!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)Qh!!)or!!%TMd/X+0!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ms8N)rs8N)ts8N)rs8N)qs8N)ts8N'!s8E#hs8N)ms8N)s
+s8E#ks8N)ss8E#ts8E#ts8N)ts8N)Nrr<&qrr<&trr<&lrr<&orr<&prr<&srr<&urr<&urr<&u
+rrW9$rrD]k!!)`m!!)or!!)He!!)lq!!)rs!!)ip!!)`m!!)rs!!*#u!!)rs!!)or!!)ip!!)rs
+!!)ut!!)Zk!!)lq!!)]l!!)]l!!)lq!!)rs!!)or!!)`m!!)or!!)Qh!!)or!!%TMd/X+*!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7lZns7lZps7lZks7u`ns7lZos7lZo
+s7lZos7cTos7lZHrr<&qrr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&t
+s8N)rrr<&trr<&rrr<&qrr<&ts8N)lrr<&qrr<&srr<&orr<&ts8N)trr<&srr<&urr<&ts8N)r
+rr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&ts8N)srr<&lrr<&qs8N)trr<&rrr<&trr<&r
+rr<&qrr<&ts8N)os8N)trr<&rs8N(Ms4@;Mm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7lZns7lZps7lZks7u`ns7lZos7lZo
+s7lZos7cTos7lZHrr<&qrr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&t
+s8N)rrr<&trr<&rrr<&qrr<&ts8N)lrr<&qrr<&srr<&orr<&ts8N)trr<&srr<&urr<&ts8N)r
+rr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&ts8N)srr<&lrr<&qs8N)trr<&rrr<&trr<&r
+rr<&qrr<&ts8N)os8N)trr<&rs8N(Ms4@;MklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7u`ns7lZps8;rts8;rts7lZns7lZps7lZks7u`ns7lZos7lZo
+s7lZos7cTos7lZHrr<&qrr<&trr<&lrr<&orr<&trr<&urr<&srr<&urr<&urr<&urr<&urr<&t
+s8N)rrr<&trr<&rrr<&qrr<&ts8N)lrr<&qrr<&srr<&orr<&ts8N)trr<&srr<&urr<&ts8N)r
+rr<&prr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&ts8N)srr<&lrr<&qs8N)trr<&rrr<&trr<&r
+rr<&qrr<&ts8N)os8N)trr<&rs8N(Ms4@;MirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rts7lZms82los8)fms7u`ns7lZms8)fq
+s7lZns8;ots8E#us7u`Is8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rm
+s8;rrs7u`ns8;rks7u`ps8E#ts8E#ns8;rqs8E#ts8E#ts8;ots8E#us7u`ns8;ots8E#ss8;rm
+s8;rqs8;rqs7u`ns7u`orrE-"r;cZnr;cfrq>gHnr;cQk!<E/u!;c`q!.k1%s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rts7lZms82los8)fms7u`ns7lZms8)fq
+s7lZns8;ots8E#us7u`Is8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rm
+s8;rrs7u`ns8;rks7u`ps8E#ts8E#ns8;rqs8E#ts8E#ts8;ots8E#us7u`ns8;ots8E#ss8;rm
+s8;rqs8;rqs7u`ns7u`orrE-"r;cZnr;cfrq>gHnr;cQk!<E/u!;c`q!.k1%s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ns7lZps8;rts8;rts7lZms82los8)fms7u`ns7lZms8)fq
+s7lZns8;ots8E#us7u`Is8;rss8;ots7u`ns7u`ls8;rss8E#ts8Duus8E#us8N*!s8N)us8;rm
+s8;rrs7u`ns8;rks7u`ps8E#ts8E#ns8;rqs8E#ts8E#ts8;ots8E#us7u`ns8;ots8E#ss8;rm
+s8;rqs8;rqs7u`ns7u`orrE-"r;cZnr;cfrq>gHnr;cQk!<E/u!;c`q!.k1%s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13Arr<%Ms2k<?m/bd$J,~>
+!BU8[l0\ND!.k0$s+13Arr<%Ms2k<?klK'jJ,~>
+!B:&Xj6cm>!.k0$s+13Arr<%Ms2k<?irR%VJ,~>
+!BpJ^mHsrH!.k0$s+13Arr<%Ms2k<?m/bd$J,~>
+!BU8[l0\ND!.k0$s+13Arr<%Ms2k<?klK'jJ,~>
+!B:&Xj6cm>!.k0$s+13Arr<%Ms2k<?irR%VJ,~>
+!BpJ^m=G:gs+13$s8N#u!.k0ls8MBdeieN~>
+!BU8[l%/kcs+13$s8N#u!.k0ls8M6`c8pI~>
+!B:&Xj+75]s+13$s8N#u!.k0ls8M$Z_`*)~>
+!BpJ^m=G:gs+13$s8W,t!.k0ns8MBdeieN~>
+!BU8[l%/kcs+13$s8W,t!.k0ns8M6`c8pI~>
+!B:&Xj+75]s+13$s8W,t!.k0ns8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mG%[@!;QTo!5&:0!.k0$s+13$s2+g8m/bd$J,~>
+!BU8[l.c7<!;QTo!5&:0!.k0$s+13$s2+g8klK'jJ,~>
+!B:&Xj4jV6!;QTo!5&:0!.k0$s+13$s2+g8irR%VJ,~>
+!BpJ^mHafN!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9im/bd$J,~>
+!BU8[l0JBJ!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iklK'jJ,~>
+!B:&Xj6QaD!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Hf!9O4\!.k0$s+13$s7?9iirR%VJ,~>
+!BpJ^mHFQM!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+m/bd$J,~>
+!BU8[l0/-I!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+klK'jJ,~>
+!B:&Xj66LC!;-9k!;HKn!;c]q!;QQo!;?Em!7q/M!;?Em!<2uu!<2uu!9O4\!.k0$s+13$s7?9i
+irR%VJ,~>
+!BpJ^mHOWP!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8MBdeieN~>
+!BU8[l083L!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M6`c8pI~>
+!B:&Xj6?RF!<3&lrr<&nrr<&grr<&Arr<&mrr<&urr<&urr<%Ms+13$s+14$s8M$Z_`*)~>
+!BpJ^mHOWP!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN.Ns+13$s,@!Wm/bd$J,~>
+!BU8[l083L!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN.Ns+13$s,@!WklK'jJ,~>
+!B:&Xj6?RF!<3&qs8;ourrDusr;Zlu!;ulr!;c`l!;ulr!;ZZn!;uls!!*&t!;lfp!;QQo!;?Em
+!<2uu!<2uu!<)rr!;uls!!*&t!;lfq!;ZZn!!3*"r;Z]q!WN.Ns+13$s,@!WirR%VJ,~>
+!BpJ^mHX]O!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!.k0$s+13/s8MBd
+eieN~>
+!BU8[l0A9K!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!.k0$s+13/s8M6`
+c8pI~>
+!B:&Xj6HXE!<2uu!;uis!<)rt!<)ot!<)rt!;c]q!;QQo!;?Em!;c]q!<)ot!;uls!<)ot!<)ot
+!<)ot!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)ot!<)rt!.k0$s+13/s8M$Z
+_`*)~>
+!BpJ^mHX]O!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8MBdeieN~>
+!BU8[l0A9K!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M6`c8pI~>
+!B:&Xj6HXE!<2uu!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!;QQo
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;lcr!<)ot!;uis!.k0$s+13/s8M$Z_`*)~>
+!BpJ^mHacP!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8MBdeieN~>
+!BU8[l0J?L!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M6`c8pI~>
+!B:&Xj6Q^F!;uis!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<)rp
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!;6Bk!.k0$s+13,s8M$Z_`*)~>
+!BpJ^mHafK!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8MBdeieN~>
+!BU8[l0JBG!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M6`c8pI~>
+!B:&Xj6QaA!<2uu!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis
+!;ZWp!:p-i!;lcr!;lcr!<)ot!;lcr!;lcr!;lcr!:p0i!.k0$s+13.s8M$Z_`*)~>
+!BpJ^mHjiQ!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rp9a;4b*~>
+!BU8[l0SEM!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/rojI/3e.~>
+!B:&Xj6ZdG!;c]t!<<'!qu6Wrrr2ruqu6WrqYpNqq#:<opAY*mqu6Wrqu6WrrVlitr;Q`srr2ru
+r;Q`sq>UEpo)A[iqu6Wrqu6WrrVlitqu6Wrqu6Wrqu6WrpAY*mr;Q`sJcC<$JcC]/ro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!.k0$s+13/
+s8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!.k0$s+13/
+s8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)rt!<)ot!<)rt!;c]q!;QQo!<)ot!;lcr!;c]q!<)ot!;uis!;uis
+!<2uu!<)rt!;ZWp!:p-i!;c]q!<)ot!;uls!<)ot!;c]q!;c]q!<)rt!<)rt!<)ot!.k0$s+13/
+s8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;qKs+13$s,6pVm/bd$J,~>
+!BU8[l0\NL!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;qKs+13$s,6pVklK'jJ,~>
+!B:&Xj6cmF!<3#s!<3#s!!<0#!<)rr!!<0#!<3#p!;c`o!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u
+!<3#p!;HNk!;lfp!;lcs!<;utr;ZTnr;Z]qqu6Zss8;qKs+13$s,6pVirR%VJ,~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;srr<%Ms+13$s+143s8MBdeieN~>
+!BU8[l%/lorr<%Ms+13$s+143s8M6`c8pI~>
+!B:&Xj+76irr<%Ms+13$s+143s8M$Z_`*)~>
+!BpJ^m=G;ts8;qKs+13$s+145s8MBdeieN~>
+!BU8[l%/lps8;qKs+13$s+145s8M6`c8pI~>
+!B:&Xj+76js8;qKs+13$s+145s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m@sX\!5AL5!;?Hm!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l(\4X!5AL5!;?Hm!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj.cSR!5AL5!;?Hm!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mG7gA!<<)s!7:cG!:9a[!8[\T!;?Hm!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l.uC=!<<)s!7:cG!:9a[!8[\T!;?Hm!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj5'b7!<<)s!7:cG!:9a[!8[\T!;?Hm!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mHsrH!<)rr!!*&s!4i.(!8[\T!.k0$s+13$s6K^am/bd$J,~>
+!BU8[l0\ND!<)rr!!*&s!4i.(!8[\T!.k0$s+13$s6K^aklK'jJ,~>
+!B:&Xj6cm>!<)rr!!*&s!4i.(!8[\T!.k0$s+13$s6K^airR%VJ,~>
+!BpJ^mHsrH!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#ur;Z]qrVufrs8W&urr;lrqZ$Ko!ri6#
+q#C?orVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis!<;utr;ZTnJcC<$
+JcD8?rp9a;4b*~>
+!BU8[l0\ND!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#ur;Z]qrVufrs8W&urr;lrqZ$Ko!ri6#
+q#C?orVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis!<;utr;ZTnJcC<$
+JcD8?rojI/3e.~>
+!B:&Xj6cm>!;ulr!<3#u!<<)u!<<)t!!*&u!!E6$!<<#ur;Z]qrVufrs8W&urr;lrqZ$Ko!ri6#
+q#C?orVult!<<#us8W#ts8W&u!<;utr;Z]q"TJH%s8VlprVucqq>^BnrVuis!<;utr;ZTnJcC<$
+JcD8?ro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZps7ZNns82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZps7ZNns82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8;rts8N*!s8E#us8;ots7QHms7lZps7ZNns82los7lZis8N*!
+rr`?%!!*&u!<<)t!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s
+!<<*!!;uls!;ulr!<3#t!;QTl!;uls!<)rt!<3#t!<3#u!<<)u!<3#t!<)rt!;?Hm!;ulr!<)rs
+!<<)u!<3#u!<3#u!<)rt!.k0$s+13?s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s
+!<<*!!;uls!;ulr!<3#t!;QTl!;uls!<)rt!<3#t!<3#u!<<)u!<3#t!<)rt!;?Hm!;ulr!<)rs
+!<<)u!<3#u!<3#u!<)rt!.k0$s+13?s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s
+!<<*!!;uls!;ulr!<3#t!;QTl!;uls!<)rt!<3#t!<3#u!<<)u!<3#t!<)rt!;?Hm!;ulr!<)rs
+!<<)u!<3#u!<3#u!<)rt!.k0$s+13?s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&u
+rW)]mrrDusrrDusrrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDusrrDrrrrE*!
+rrE#trrE&ur;_EKJcC<$R/d0Q!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&u
+rW)]mrrDusrrDusrrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDusrrDrrrrE*!
+rrE#trrE&ur;_EKJcC<$R/d0M!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&u
+rW)]mrrDusrrDusrrDioquHZprrE#trrE&urrE#trrE*!rrDusrrE#trrDcmrrDusrrDrrrrE*!
+rrE#trrE&ur;_EKJcC<$R/d0G!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDcm
+rrDusrrDThrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!rrE#trrE#t
+qZ)3IJcC<$S,`KT!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDcm
+rrDusrrDThrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!rrE#trrE#t
+qZ)3IJcC<$S,`KP!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDcm
+rrDusrrDThrrE*!!!)rsrrE#trrE&urrE#trrE*!rrDcmrrDcmrrDusrrDrrrrE*!rrE#trrE#t
+qZ)3IJcC<$S,`KJ!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N'!s7ZNms8N)ms8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$
+s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N'!s7ZNms8N)ms8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$
+s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N'!s7ZNms8N)ms8N)s
+s8N)hs8N)ps8N)ts8N)us8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$
+s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N'!s8E#ms8N)ms8N)s
+s8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13$s.',gm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N'!s8E#ms8N)ms8N)s
+s8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13$s.',gklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)us8E#ts8N)us8E#us8N*!s8N*!s8N'!s8E#ms8N)ms8N)s
+s8E#ss8E#os8N)ps8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13$s.',girR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus8Duus7lZps7lZns7lZos7cTks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus8Duus7lZps7lZns7lZos7cTks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss82iss8E#ts7?9ks8Duus8Duus7lZps7lZns7lZos7cTks7u`n
+s7cQos8;rts8;rts7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns7lZns8)fl
+s7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&fm/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns7lZns8)fl
+s7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&fklK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns7lZns8)fl
+s7u`ms8;ots8Duus8;rts8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&firR%V
+J,~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC*&o!;lfr!9O7Y!7q2L!.k0$s+13$s6BX`m/bd$J,~>
+!BU8[l*gWk!;lfr!9O7Y!7q2L!.k0$s+13$s6BX`klK'jJ,~>
+!B:&Xj0o!e!;lfr!9O7Y!7q2L!.k0$s+13$s6BX`irR%VJ,~>
+!BpJ^mFqU=!!<0#!9F1Z!;lfr!9O7Y!;HNm!<<)s!:'U`!.k0$s+13$s6BX`m/bd$J,~>
+!BU8[l.Z19!!<0#!9F1Z!;lfr!9O7Y!;HNm!<<)s!:'U`!.k0$s+13$s6BX`klK'jJ,~>
+!B:&Xj4aP3!!<0#!9F1Z!;lfr!9O7Y!;HNm!<<)s!:'U`!.k0$s+13$s6BX`irR%VJ,~>
+!BpJ^mHsrH!;ull!9=+Z!8@JQ!;HNl!!*&s!9sO`!.k0$s+13$s6BX`m/bd$J,~>
+!BU8[l0\ND!;ull!9=+Z!8@JQ!;HNl!!*&s!9sO`!.k0$s+13$s6BX`klK'jJ,~>
+!B:&Xj6cm>!;ull!9=+Z!8@JQ!;HNl!!*&s!9sO`!.k0$s+13$s6BX`irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<3#q!<3#s!<<)u!<)rr!!<0#!<3#r!;ulr!!*&t!;ulo!;c`q!;?Hl
+!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&urVu]oJcC<$JcCl4rp9a;
+4b*~>
+!BU8[l0\ND!;uls!<)rs!<3#q!<3#s!<<)u!<)rr!!<0#!<3#r!;ulr!!*&t!;ulo!;c`q!;?Hl
+!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&urVu]oJcC<$JcCl4rojI/
+3e.~>
+!B:&Xj6cm>!;uls!<)rs!<3#q!<3#s!<<)u!<)rr!!<0#!<3#r!;ulr!!*&t!;ulo!;c`q!;?Hl
+!<3#u!<<)u!<<)t!!*&u!!E6$!<<#urr;uu!<;utqu?TprVufrs8W&urVu]oJcC<$JcCl4ro4$s
+2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7ZNns7lZos82lps7cTns7lZls8N)ms8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lYGs+13$s,m?\m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7ZNns7lZos82lps7cTns7lZls8N)ms8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lYGs+13$s,m?\klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7ZNns7lZos82lps7cTns7lZls8N)ms8;rt
+s8N*!s8E#us8;ots7QHms7lZos7lZps7ZNns7lYGs+13$s,m?\irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ns8N)ts8N)ts8;rts8N'!s8E#ts8E#qs8N)rs8E#ts8N)u
+s8N)ts8N)rs8N)ms8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trr@WMJcC<$OoPFJ!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ns8N)ts8N)ts8;rts8N'!s8E#ts8E#qs8N)rs8E#ts8N)u
+s8N)ts8N)rs8N)ms8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trr@WMJcC<$OoPFF!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ns8N)ts8N)ts8;rts8N'!s8E#ts8E#qs8N)rs8E#ts8N)u
+s8N)ts8N)rs8N)ms8N'&rrE*!!!*#urrE#trrE*!rVururW!*$!!*'!rW)rtrVururW)osrW)rt
+r;cltrrE*!rrE#trr@WMJcC<$OoPF@!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)hs8N)ts8E#qs8N)ss8N)rs8N)rs8N)ts8N)os8N)rs8N)m
+s8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;_EKJcC<$
+NW9"F!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)hs8N)ts8E#qs8N)ss8N)rs8N)rs8N)ts8N)os8N)rs8N)m
+s8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;_EKJcC<$
+NW9"B!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)hs8N)ts8E#qs8N)ss8N)rs8N)rs8N)ts8N)os8N)rs8N)m
+s8N'&rr<'!!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<-#!!)orrrE&urW)fpr;_EKJcC<$
+NW9"<!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ns7lZns8N)qs8N)ss8N)rs8N)rs8N)ts8N)us7lZls8N)m
+s8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ)3IJcC<$OT5=I
+!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ns7lZns8N)qs8N)ss8N)rs8N)rs8N)ts8N)us7lZls8N)m
+s8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ)3IJcC<$OT5=E
+!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ns7lZns8N)qs8N)ss8N)rs8N)rs8N)ts8N)us7lZls8N)m
+s8N*!rrW9$!!*#urrE#trrE*!rrE*!rrE*!rrE*!rrDusrr<'!pAk3mrrDioqZ)3IJcC<$OT5=?
+!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os7cTms8N)qs8N)ss8N)rs8N)rs8N)ts8N*!s7cTks8N)m
+s8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82kJs+13$s,m?\m/bd$
+J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os7cTms8N)qs8N)ss8N)rs8N)rs8N)ts8N*!s7cTks8N)m
+s8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82kJs+13$s,m?\klK'j
+J,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os7cTms8N)qs8N)ss8N)rs8N)rs8N)ts8N*!s7cTks8N)m
+s8N*!s8;rss8N)ts8N*!s8N*!s8N*!s8N*!s8N)ss8N'!s7ZNms8N)ms82kJs+13$s,m?\irR%V
+J,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N)ts8N)qs8E#ts8E#qs8N)rs8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N(Ms+13$s,m?\m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N)ts8N)qs8E#ts8E#qs8N)rs8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N(Ms+13$s,m?\klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N)ts8N)qs8E#ts8E#qs8N)rs8N)ts8N*!
+s8N)ss8N)rs8N)ms8N)us8E#ts8N)us8E#us8N*!s8N*!s8N*!s8E#ts8Duus8E#ms8N)ps8N)t
+s8N(Ms+13$s,m?\irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cQos7ZKns7lZns7cTos7lZps8;rts8;ots7ZNns7lZks82is
+s8E#ts7?9ks8Duus7HBks7lZps7lZns7lYGs+13$s,m?\m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cQos7ZKns7lZns7cTos7lZps8;rts8;ots7ZNns7lZks82is
+s8E#ts7?9ks8Duus7HBks7lZps7lZns7lYGs+13$s,m?\klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cQos7ZKns7lZns7cTos7lZps8;rts8;ots7ZNns7lZks82is
+s8E#ts7?9ks8Duus7HBks7lZps7lZns7lYGs+13$s,m?\irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82lqs82iss8Duus7lZms8;ots8E#us7lZps8;rts8;rts82is
+s8E#us7lZks82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZns7u_Hs+13$s,d9[m/bd$
+J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82lqs82iss8Duus7lZms8;ots8E#us7lZps8;rts8;rts82is
+s8E#us7lZks82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZns7u_Hs+13$s,d9[klK'j
+J,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82lqs82iss8Duus7lZms8;ots8E#us7lZps8;rts8;rts82is
+s8E#us7lZks82lss8N)ts8;ots7u]qs8Duus8)crs8;rps8)frs7lZns7u_Hs+13$s,d9[irR%V
+J,~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC`Ju!;6Bl!6kKC!9!nV!94%Y!.k0$s+13:s8MBdeieN~>
+!BU8[l+I&q!;6Bl!6kKC!9!nV!94%Y!.k0$s+13:s8M6`c8pI~>
+!B:&Xj1PEk!;6Bl!6kKC!9!nV!94%Y!.k0$s+13:s8M$Z_`*)~>
+!BpJ^mG7gA!;ulr!:0[a!;6Bl!6kKC!9!nV!;ZZj!:p0i!.k0$s+13:s8MBdeieN~>
+!BU8[l.uC=!;ulr!:0[a!;6Bl!6kKC!9!nV!;ZZj!:p0i!.k0$s+13:s8M6`c8pI~>
+!B:&Xj5'b7!;ulr!:0[a!;6Bl!6kKC!9!nV!;ZZj!:p0i!.k0$s+13:s8M$Z_`*)~>
+!BpJ^mHsrH!<)rs!;ulr!:'Ua!1Nrf!;ZZj!:p0i!.k0$s+13:s8MBdeieN~>
+!BU8[l0\ND!<)rs!;ulr!:'Ua!1Nrf!;ZZj!:p0i!.k0$s+13:s8M6`c8pI~>
+!B:&Xj6cm>!<)rs!;ulr!:'Ua!1Nrf!;ZZj!:p0i!.k0$s+13:s8M$Z_`*)~>
+!BpJ^mHsrH!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!:^$b!<3#r
+!;lfl!;ulq!;lfp!!<0#!;?Hm!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro
+!.k0$s+14!s8MBdeieN~>
+!BU8[l0\ND!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!:^$b!<3#r
+!;lfl!;ulq!;lfp!!<0#!;?Hm!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro
+!.k0$s+14!s8M6`c8pI~>
+!B:&Xj6cm>!;ulr!<3#t!<3#q!;ulq!!<0#!<3#u!!*&t!<)rq!;ulr!!*&t!;lfp!:^$b!<3#r
+!;lfl!;ulq!;lfp!!<0#!;?Hm!;ulr!!*&t!<3#o!;lfp!;lfp!!*&u!<)rr!<)rr!<<)u!<)ro
+!.k0$s+14!s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZds7lZos82lo
+s7lZos7lZos7lZgs8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYGs+13$s3q#Im/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZds7lZos82lo
+s7lZos7lZos7lZgs8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYGs+13$s3q#IklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8E#ts8E#us7lZos7lZos7lZos82lps7cTns7lZds7lZos82lo
+s7lZos7lZos7lZgs8N)ss7cTos7lZns7lZos7cTos7lZps7ZNns7lYGs+13$s3q#IirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#js8N)ts8N)rs8N)rs8N)us8N)us8E#ss8Duus8E#ts8E#ls8N)rs8E#ts8N)t
+s8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s3q#Im/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#js8N)ts8N)rs8N)rs8N)us8N)us8E#ss8Duus8E#ts8E#ls8N)rs8E#ts8N)t
+s8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s3q#IklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;ots8;rts8N)ts8N*!s8E#ts8E#ts8E#ts8N)rs8N)rs8E#t
+s8N*!s8E#ss8E#js8N)ts8N)rs8N)rs8N)us8N)us8E#ss8Duus8E#ts8E#ls8N)rs8E#ts8N)t
+s8N)qs8E#ss8Duus8E#ts8E#us8E#ss8E#ts8;rts8N*!s8N)ts8N(Ms+13$s3q#IirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N*!s7cTos8;rls8N)ns8N)ts8N)rs8N'#rr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs8N)rs8N'#
+rr<&ss8N*!s8N)rs8N)us8E#ps8;qKs+13$s3L`Em/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N*!s7cTos8;rls8N)ns8N)ts8N)rs8N'#rr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs8N)rs8N'#
+rr<&ss8N*!s8N)rs8N)us8E#ps8;qKs+13$s3L`EklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTis8N*!s8N)ss8N)us8N)ts8N)rs8N)rs8N)ts8N*!s8N)r
+s8N*!s7cTos8;rls8N)ns8N)ts8N)rs8N'#rr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs8N)rs8N'#
+rr<&ss8N*!s8N)rs8N)us8E#ps8;qKs+13$s3L`EirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNns7cTns8)fms8N)os8N)ss7ZKprr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!
+s7ZNms8N)os8)eIs+13$s3grHm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNns7cTns8)fms8N)os8N)ss7ZKprr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!
+s7ZNms8N)os8)eIs+13$s3grHklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8E!$rr<'!s7lZps8N)ns8N)ts8N)rs8N)rs8N)ts8N*!
+s7ZNns7cTns8)fms8N)os8N)ss7ZKprr<&ss8N)ms8N)rs8N)ts8N)ts8N)qs7ZKprr<&ss8N*!
+s7ZNms8N)os8)eIs+13$s3grHirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAja`quHWorrDlprrDrrpAb9p!!)rsrrDcmrrDrrrrE#trrE#trrDoqpAb9p!!)rsrrE*!pAk3m
+rrDcmquD<JJcC<$e,TF7!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAja`quHWorrDlprrDrrpAb9p!!)rsrrDcmrrDrrrrE#trrE#trrDoqpAb9p!!)rsrrE*!pAk3m
+rrDcmquD<JJcC<$e,TF3!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N*!rriE&rr<'!p]1?orrDfnrrE#trrDrrrrDrrrrE#trrE*!
+pAja`quHWorrDlprrDrrpAb9p!!)rsrrDcmrrDrrrrE#trrE#trrDoqpAb9p!!)rsrrE*!pAk3m
+rrDcmquD<JJcC<$e,TF-!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#cs8N)ts8N)rs8N)qs8N)us8N*!s8E#os8E#ts8E#ls8N)rs8N)ts8N)ts8N)ts8N'!
+s8E#os8E#ts8E#us8E#ms8N)ps8N)ts8N(Ms+13$s3q#Im/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#cs8N)ts8N)rs8N)qs8N)us8N*!s8E#os8E#ts8E#ls8N)rs8N)ts8N)ts8N)ts8N'!
+s8E#os8E#ts8E#us8E#ms8N)ps8N)ts8N(Ms+13$s3q#IklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'#rr<&ss8N*!s8E#ss8E#us8N)ts8N)rs8N)rs8N)t
+s8N*!s8E#cs8N)ts8N)rs8N)qs8N)us8N*!s8E#os8E#ts8E#ls8N)rs8N)ts8N)ts8N)ts8N'!
+s8E#os8E#ts8E#us8E#ms8N)ps8N)ts8N(Ms+13$s3q#IirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZds7lZo
+s7lZos7lZos7lZos7cTjs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYGs+13$s3q#I
+m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZds7lZo
+s7lZos7lZos7lZos7cTjs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYGs+13$s3q#I
+klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss82iss7-0is7cQos8;rts8;rts7lZps8;rts8;rts7lZds7lZo
+s7lZos7lZos7lZos7cTjs7lZps8;rts8;rss7lZps7lZos7lZos7lZps7lZns7lYGs+13$s3q#I
+irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)ffs7u`os7lZos7lZms8)fps8;ots8E#ps7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)fr
+s7lZns7u_Hs+13$s3grHm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)ffs7u`os7lZos7lZms8)fps8;ots8E#ps7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)fr
+s7lZns7u_Hs+13$s3grHklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts82iss82iss82iss8E#ts8)fqs8;rts8;rts7lZps8;rts8;rr
+s8)ffs7u`os7lZos7lZms8)fps8;ots8E#ps7lZps8;rts8;rrs82los8)fps8;p!rr<&ss8)fr
+s7lZns7u_Hs+13$s3grHirR%VJ,~>
+!BpJ^mHsrH!.k0Ys8N(Ms+13$s0D\(m/bd$J,~>
+!BU8[l0\ND!.k0Ys8N(Ms+13$s0D\(klK'jJ,~>
+!B:&Xj6cm>!.k0Ys8N(Ms+13$s0D\(irR%VJ,~>
+!BpJ^mHsrH!.k0Zs8E"Ls+13$s0D\(m/bd$J,~>
+!BU8[l0\ND!.k0Zs8E"Ls+13$s0D\(klK'jJ,~>
+!B:&Xj6cm>!.k0Zs8E"Ls+13$s0D\(irR%VJ,~>
+!BpJ^m=G;,s8)eIs+13$s0;V'm/bd$J,~>
+!BU8[l%/l(s8)eIs+13$s0;V'klK'jJ,~>
+!B:&Xj+76"s8)eIs+13$s0;V'irR%VJ,~>
+!BpJ^m=G;,s82kJs+13$s02P&m/bd$J,~>
+!BU8[l%/l(s82kJs+13$s02P&klK'jJ,~>
+!B:&Xj+76"s82kJs+13$s02P&irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G;os82kJs+13$s+14;s8MBdeieN~>
+!BU8[l%/lks82kJs+13$s+14;s8M6`c8pI~>
+!B:&Xj+76es82kJs+13$s+14;s8M$Z_`*)~>
+!BpJ^mG7g<!6tQC!<<)s!6G3<!.k0$s+13$s6]jcm/bd$J,~>
+!BU8[l.uC8!6tQC!<<)s!6G3<!.k0$s+13$s6]jcklK'jJ,~>
+!B:&Xj5'b2!6tQC!<<)s!6G3<!.k0$s+13$s6]jcirR%VJ,~>
+!BpJ^mHsrH!<)rm!7(WC!!*&s!6,!<!.k0$s+13$s6]jcm/bd$J,~>
+!BU8[l0\ND!<)rm!7(WC!!*&s!6,!<!.k0$s+13$s6]jcklK'jJ,~>
+!B:&Xj6cm>!<)rm!7(WC!!*&s!6,!<!.k0$s+13$s6]jcirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<3#t!!E6$!<<#urVu`prr;rt!<;utq#C<nrr;uus8W&us8W#t
+!<<#u"9/?$s8E#rs8;rrs8;rts8E#ss8)fms8N)qs7u_Hs+13$s+14Is8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<3#t!!E6$!<<#urVu`prr;rt!<;utq#C<nrr;uus8W&us8W#t
+!<<#u"9/?$s8E#rs8;rrs8;rts8E#ss8)fms8N)qs7u_Hs+13$s+14Is8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<3#t!!E6$!<<#urVu`prr;rt!<;utq#C<nrr;uus8W&us8W#t
+!<<#u"9/?$s8E#rs8;rrs8;rts8E#ss8)fms8N)qs7u_Hs+13$s+14Is8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lWps7QHms7lZps7cTis8;rts8N*!s8E#us8;ot
+s7QHms7lZps7ZNns7lZls8N)rs7lYGs+13$s+14Is8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lWps7QHms7lZps7cTis8;rts8N*!s8E#us8;ot
+s7QHms7lZps7ZNns7lZls8N)rs7lYGs+13$s+14Is8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lWps7QHms7lZps7cTis8;rts8N*!s8E#us8;ot
+s7QHms7lZps7ZNns7lZls8N)rs7lYGs+13$s+14Is8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8Duus8E!&rr<'!rr<&ts8N)us8E#t
+s8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s!<<*!!<<*!!<)rt!;lfr
+!;lfr!<)rt!.k0$s+13$s82iqm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8Duus8E!&rr<'!rr<&ts8N)us8E#t
+s8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s!<<*!!<<*!!<)rt!;lfr
+!;lfr!<)rt!.k0$s+13$s82iqklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8Duus8E!&rr<'!rr<&ts8N)us8E#t
+s8N)ps8N'&rrE*!!!*#urrE#trrE*!rVururW!'#!!*&u!<)rs!<3#s!<<*!!<<*!!<)rt!;lfr
+!;lfr!<)rt!.k0$s+13$s82iqirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N'+rr<'!rr<'!rr<&ps8N)us8N)ts8N)ps8N'&
+rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&urW)TjrrDrrrrDrrr;_EKJcC<$JcGKE
+rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N'+rr<'!rr<'!rr<&ps8N)us8N)ts8N)ps8N'&
+rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&urW)TjrrDrrrrDrrr;_EKJcC<$JcGKE
+rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N'+rr<'!rr<'!rr<&ps8N)us8N)ts8N)ps8N'&
+rr<'!!!*#urrE#trrE*!rrE*!rrE*!rr<-#!!)orrrE&urW)TjrrDrrrrDrrr;_EKJcC<$JcGKE
+ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps8N)rs8N'-rr<'!rr<'!rr<'!s7lZos8N)ts8N)ps8N*!
+rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDlpq#L<lrrDoqqZ)3IJcC<$JcGTHrp9a;
+4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps8N)rs8N'-rr<'!rr<'!rr<'!s7lZos8N)ts8N)ps8N*!
+rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDlpq#L<lrrDoqqZ)3IJcC<$JcGTHrojI/
+3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps8N)rs8N'-rr<'!rr<'!rr<'!s7lZos8N)ts8N)ps8N*!
+rrW9$!!*#urrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDlpq#L<lrrDoqqZ)3IJcC<$JcGTHro4$s
+2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N',rr<'!rr<'!rr<'!p]1<nrrE#trrDlp
+rrE*!r;cisrrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDoqp]13krrDioquD<JJcC<$JcGWIrp9a;
+4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N',rr<'!rr<'!rr<'!p]1<nrrE#trrDlp
+rrE*!r;cisrrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDoqp]13krrDioquD<JJcC<$JcGWIrojI/
+3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N',rr<'!rr<'!rr<'!p]1<nrrE#trrDlp
+rrE*!r;cisrrE#trrE*!rrE*!rrE*!rr<'!pAk3mrrDoqp]13krrDioquD<JJcC<$JcGWIro4$s
+2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E!-rr<'!rr<'!rr<'!!!)rsrrE&urrE#t
+rrDlprrE&urW)rtrrE&urW)uurrE*!rrE*!rr<'!rW)]mrrDoqrrDusrrDrrrrDrrrrE#trr@WM
+JcC<$JcGWIrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E!-rr<'!rr<'!rr<'!!!)rsrrE&urrE#t
+rrDlprrE&urW)rtrrE&urW)uurrE*!rrE*!rr<'!rW)]mrrDoqrrDusrrDrrrrDrrrrE#trr@WM
+JcC<$JcGWIrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E!-rr<'!rr<'!rr<'!!!)rsrrE&urrE#t
+rrDlprrE&urW)rtrrE&urW)uurrE*!rrE*!rr<'!rW)]mrrDoqrrDusrrDrrrrDrrrrE#trr@WM
+JcC<$JcGWIro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lWps8;ots8Duus7?9ks8;rts8;rps82iss8E#t
+s7?9ks8Duus8Duus7lZps7lZos7ZNns7lZos7lYGs+13$s+14Is8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lWps8;ots8Duus7?9ks8;rts8;rps82iss8E#t
+s7?9ks8Duus8Duus7lZps7lZos7ZNns7lZos7lYGs+13$s+14Is8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lWps8;ots8Duus7?9ks8;rts8;rps82iss8E#t
+s7?9ks8Duus8Duus7lZps7lZos7ZNns7lZos7lYGs+13$s+14Is8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8;rss8;ots8Duus8Duus82iss8Duus8;rts8;rp
+s82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns82iss8E#us7lZos7u_Hs+13$s+14Hs8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8;rss8;ots8Duus8Duus82iss8Duus8;rts8;rp
+s82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns82iss8E#us7lZos7u_Hs+13$s+14Hs8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8;rss8;ots8Duus8Duus82iss8Duus8;rts8;rp
+s82lss8N)ts8;ots7u]qs8Duus8E#ts8)frs7lZns82iss8E#us7lZos7u_Hs+13$s+14Hs8M$Z
+_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!;?Hm!7h,K!6kKC!;?Hm!.k0$s+131s8MBdeieN~>
+!BU8[l+6op!;?Hm!7h,K!6kKC!;?Hm!.k0$s+131s8M6`c8pI~>
+!B:&Xj1>9j!;?Hm!7h,K!6kKC!;?Hm!.k0$s+131s8M$Z_`*)~>
+!BpJ^mFqU=!!<0#!9jI_!;?Hm!7h,K!;c`i!8[\T!;?Hm!.k0$s+131s8MBdeieN~>
+!BU8[l.Z19!!<0#!9jI_!;?Hm!7h,K!;c`i!8[\T!;?Hm!.k0$s+131s8M6`c8pI~>
+!B:&Xj4aP3!!<0#!9jI_!;?Hm!7h,K!;c`i!8[\T!;?Hm!.k0$s+131s8M$Z_`*)~>
+!BpJ^mHsrH!;ull!9jI_!6>->!;c`i!8[\T!.k0$s+13$s8MBdeieN~>
+!BU8[l0\ND!;ull!9jI_!6>->!;c`i!8[\T!.k0$s+13$s8M6`c8pI~>
+!B:&Xj6cm>!;ull!9jI_!6>->!;c`i!8[\T!.k0$s+13$s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!<)rq!;ulr!!*&t!<3#t!<<)t!;ulq!;lfp
+!!<0#!;QTo!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$
+s+13Us8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!<)rq!;ulr!!*&t!<3#t!<<)t!;ulq!;lfp
+!!<0#!;QTo!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$
+s+13Us8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!<)rq!;ulr!!*&t!<3#t!<<)t!;ulq!;lfp
+!!<0#!;QTo!<)rt!!*&t!<<)u!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$
+s+13Us8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos7lZns82lps7cTos8E#us8;rss7lZo
+s7lZis8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13Us8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos7lZns82lps7cTos8E#us8;rss7lZo
+s7lZis8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13Us8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7cTos7lZns82lps7cTos8E#us8;rss7lZo
+s7lZis8N*!rr`?%!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13Us8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)ts8N)ms8N)rs8E#ts8N)us8N)t
+s8N*!s8E#ss8Duus8E#ts8E#ns82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N(Ms+13$s0D\(m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)ts8N)ms8N)rs8E#ts8N)us8N)t
+s8N*!s8E#ss8Duus8E#ts8E#ns82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N(Ms+13$s0D\(klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8E#ss8E#us8E#ts8N)ts8N)ms8N)rs8E#ts8N)us8N)t
+s8N*!s8E#ss8Duus8E#ts8E#ns82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#s
+s8E#us8E#ts8N)us8N)ts8N(Ms+13$s0D\(irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s8N)rs8N'#rr<&ss8N)os82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;qKs+13$s/uD$m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s8N)rs8N'#rr<&ss8N)os82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;qKs+13$s/uD$klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s8N)rs8N'#rr<&ss8N)os82los8E#js8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)t
+s8N)us8;qKs+13$s/uD$irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)t
+s8)eIs+13$s0;V'm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)t
+s8)eIs+13$s0;V'klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N*!rr<&rs8N)ps7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)t
+s8)eIs+13$s0;V'irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJ
+s+13$s0D\(m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJ
+s+13$s0D\(klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)rs8N*!s8N)ts8N)ts8N)ms8N)rs8N)ts8N)us8N)t
+s8N*!s7ZKprr<&ss8N)os8N)os8N)qs7cTos8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJ
+s+13$s0D\(irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ts8N)ts8N)ss8N)rs8N)t
+s8N)us8N)us8E#us8E#os8E#ts8E#ns8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s0D\(m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ts8N)ts8N)ss8N)rs8N)t
+s8N)us8N)us8E#us8E#os8E#ts8E#ns8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s0D\(klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N'!s8E#ss8E#us8N)ts8N)ts8N)ts8N)ss8N)rs8N)t
+s8N)us8N)us8E#us8E#os8E#ts8E#ns8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)s
+s8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s0D\(irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rss7lZps7lZps8;rts8;rts7cTos7lZo
+s7cTks7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s0D\(m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rss7lZps7lZps8;rts8;rts7cTos7lZo
+s7cTks7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s0D\(klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTos7lZps8;rts8;rss7lZps7lZps8;rts8;rts7cTos7lZo
+s7cTks7u`os7lZos7ZNns7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s0D\(irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rrs82lqs7lZps8;rts8;rss8;ots8E#s
+s8)fps8;ots8E#qs7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$
+s0;V'm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rrs82lqs7lZps8;rts8;rss8;ots8E#s
+s8)fps8;ots8E#qs7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$
+s0;V'klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs82los8;rrs8;rts8;rrs82lqs7lZps8;rts8;rss8;ots8E#s
+s8)fps8;ots8E#qs7u`os7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$
+s0;V'irR%VJ,~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!;?Hm!:^$d!6P9@!;?Hm!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l+6op!;?Hm!:^$d!6P9@!;?Hm!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj1>9j!;?Hm!:^$d!6P9@!;?Hm!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mG7g<!9X=]!;?Hm!:^$d!;HNf!8[\T!;?Hm!.k0$s+13$s7lWnm/bd$J,~>
+!BU8[l.uC8!9X=]!;?Hm!:^$d!;HNf!8[\T!;?Hm!.k0$s+13$s7lWnklK'jJ,~>
+!B:&Xj5'b2!9X=]!;?Hm!:^$d!;HNf!8[\T!;?Hm!.k0$s+13$s7lWnirR%VJ,~>
+!BpJ^mHsrH!<)rm!9aC^!9!nW!;HNf!8[\T!.k0$s+13$s6K^am/bd$J,~>
+!BU8[l0\ND!<)rm!9aC^!9!nW!;HNf!8[\T!.k0$s+13$s6K^aklK'jJ,~>
+!B:&Xj6cm>!<)rm!9aC^!9!nW!;HNf!8[\T!.k0$s+13$s6K^airR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<3#q!<3#s!<<)u!<<)p!<)rq!;c`m!;c`q!;6Bl!<)rt!!*&t!<<)u
+!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s+13?s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<3#q!<3#s!<<)u!<<)p!<)rq!;c`m!;c`q!;6Bl!<)rt!!*&t!<<)u
+!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s+13?s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<3#q!<3#s!<<)u!<<)p!<)rq!;c`m!;c`q!;6Bl!<)rt!!*&t!<<)u
+!<)rp!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!.k0$s+13?s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZKns7lZns82los7lZls8N)ls8N*!rr`?%
+!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZKns7lZns82los7lZls8N)ls8N*!rr`?%
+!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7ZKns7lZns82los7lZls8N)ls8N*!rr`?%
+!!*&n!<<)p!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!.k0$s+13?s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8;rts8N)us8N)ms8N)rs8N)ts8N)r
+s8N)ls82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+13$s.',gm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8;rts8N)us8N)ms8N)rs8N)ts8N)r
+s8N)ls82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+13$s.',gklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8E#us8N)ts8N)ts8;rts8N)us8N)ms8N)rs8N)ts8N)r
+s8N)ls82los8;rts8N*!s8N)ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)t
+s8N(Ms+13$s.',girR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZis8N)ts8E#os8N)ms8N)ls8N)rs8N)ls82los8E#js8N*!
+s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s-Wicm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZis8N)ts8E#os8N)ms8N)ls8N)rs8N)ls82los8E#js8N*!
+s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s-WicklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZis8N)ts8E#os8N)ms8N)ls8N)rs8N)ls82los8E#js8N*!
+s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s-WicirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)ms8N)rs7lZls8N)ls8N*!rr<&rs8N)p
+s7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s-s&fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)ms8N)rs7lZls8N)ls8N*!rr<&rs8N)p
+s7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s-s&fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`os7lZns8N)os8N)ms8N)rs7lZls8N)ls8N*!rr<&rs8N)p
+s7lZps8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s-s&firR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)ms8N)ss7cTks8N)ls8N)os8N)qs7cTo
+s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)ms8N)ss7cTks8N)ls8N)os8N)qs7cTo
+s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ps7cTms8N)os8N)ms8N)ss7cTks8N)ls8N)os8N)qs7cTo
+s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)os8N)ts8N)ss8N)ss8N)ss8N)rs8N)l
+s8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(M
+s+13$s.',gm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)os8N)ts8N)ss8N)ss8N)ss8N)rs8N)l
+s8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(M
+s+13$s.',gklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ps8N)ss8N)ts8N)os8N)ts8N)ss8N)ss8N)ss8N)rs8N)l
+s8N)os8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(M
+s+13$s.',girR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)fos7ZKns7lZms7lZps7lZps7ZNns7lZks7u`os7lZos7ZNn
+s7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',gm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)fos7ZKns7lZms7lZps7lZps7ZNns7lZks7u`os7lZos7ZNn
+s7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',gklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)fos7ZKns7lZms7lZps7lZps7ZNns7lZks7u`os7lZos7ZNn
+s7cTns7lZps7lZos7lZps8;rts8;rts7lYGs+13$s.',girR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)fns82iss8Duus7lZls82lqs7lZos82iss8E#us7lZks7u`o
+s7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&fm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)fns82iss8Duus7lZls82lqs7lZos82iss8E#us7lZks7u`o
+s7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&fklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)fns82iss8Duus7lZls82lqs7lZos82iss8E#us7lZks7u`o
+s7lZns82iss8E#ts8)fns82lqs7lZms8;rrs8;rts8;rts7u_Hs+13$s-s&firR%VJ,~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!7h,L!.k0$s+13$s1JC2m/bd$J,~>
+!BU8[l+6op!7h,L!.k0$s+13$s1JC2klK'jJ,~>
+!B:&Xj1>9j!7h,L!.k0$s+13$s1JC2irR%VJ,~>
+!BpJ^mFqU=!9O7\!7h,L!.k0$s+13$s1JC2m/bd$J,~>
+!BU8[l.Z19!9O7\!7h,L!.k0$s+13$s1JC2klK'jJ,~>
+!B:&Xj4aP3!9O7\!7h,L!.k0$s+13$s1JC2irR%VJ,~>
+!BpJ^mHsrH!;ulm!9aC^!.k0$s+13$s,R-Ym/bd$J,~>
+!BU8[l0\ND!;ulm!9aC^!.k0$s+13$s,R-YklK'jJ,~>
+!B:&Xj6cm>!;ulm!9aC^!.k0$s+13$s,R-YirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rt!<<)u!<<)t!<)rp!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!<)rq!;ZZn
+!<)rs!!*&t!;uln!.k0$s+13$s5<qVm/bd$J,~>
+!BU8[l0\ND!;uls!<)rt!<<)u!<<)t!<)rp!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!<)rq!;ZZn
+!<)rs!!*&t!;uln!.k0$s+13$s5<qVklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rt!<<)u!<<)t!<)rp!<3#o!;lfp!<)rr!<<)u!<<)u!!*&t!<)rq!;ZZn
+!<)rs!!*&t!;uln!.k0$s+13$s5<qVirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'!s8E#us8;rss7lZps7lZns7lZps7ZKns7cTns82lo
+s7lZps7cTns7lYGs+13$s+14.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'!s8E#us8;rss7lZps7lZns7lZps7ZKns7cTns82lo
+s7lZps7cTns7lYGs+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'!s8E#us8;rss7lZps7lZns7lZps7ZKns7cTns82lo
+s7lZps7cTns7lYGs+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8E#ts8;rt
+s8N*!s8E#ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+14.s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8E#ts8;rt
+s8N*!s8E#ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us8N)ts8N)ts8N)qs8E#ss8E#ts8;rt
+s8N*!s8E#ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)os8N)ts8N)qs8N)rs8N)us8E#ps8N)t
+s8N)rs8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s+14*s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)os8N)ts8N)qs8N)rs8N)us8E#ps8N)t
+s8N)rs8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s+14*s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)os8N)ts8N)qs8N)rs8N)us8E#ps8N)t
+s8N)rs8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$s+14*s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us7lZns8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s+14-s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us7lZns8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s+14-s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)us7lZns8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13$s+14-s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N*!s7cTms8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s+14.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N*!s7cTms8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N*!s7cTms8N)qs7ZNms8N)ps8N)ts8N)r
+s8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N)us8N)us8E#us8N)ss8N)ts8N)ts8N'!s8E#ms8N)p
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+14.s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N)us8N)us8E#us8N)ss8N)ts8N)ts8N'!s8E#ms8N)p
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N)us8N)us8E#us8N)ss8N)ts8N)ts8N'!s8E#ms8N)p
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7cQos7ZNms7lZps7lZps7lZos8;rts8;rts7lZos7lZp
+s8;rts8;rts7lYGs+13$s+14.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7cQos7ZNms7lZps7lZps7lZos8;rts8;rts7lZos7lZp
+s8;rts8;rts7lYGs+13$s+14.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7cQos7ZNms7lZps7lZps7lZos8;rts8;rts7lZos7lZp
+s8;rts8;rts7lYGs+13$s+14.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8;rtrr<&us8;ots8E#us82iss8E#ss82los8)frs7lZos8;rt
+s8;rts7lZms8;rrs8;rts8;rts7u_Hs+13$s+14-s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8;rtrr<&us8;ots8E#us82iss8E#ss82los8)frs7lZos8;rt
+s8;rts7lZms8;rrs8;rts8;rts7u_Hs+13$s+14-s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8;rtrr<&us8;ots8E#us82iss8E#ss82los8)frs7lZos8;rt
+s8;rts7lZms8;rrs8;rts8;rts7u_Hs+13$s+14-s8M$Z_`*)~>
+!BpJ^mHsrH!;lfl!.k0$s+13$s+14As8MBdeieN~>
+!BU8[l0\ND!;lfl!.k0$s+13$s+14As8M6`c8pI~>
+!B:&Xj6cm>!;lfl!.k0$s+13$s+14As8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<<)u!.k0$s+13$s+14@s8MBdeieN~>
+!BU8[l0\ND!;lfr!<<)u!.k0$s+13$s+14@s8M6`c8pI~>
+!B:&Xj6cm>!;lfr!<<)u!.k0$s+13$s+14@s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mD],*!9!nW!.k0$s+13$s/,hqm/bd$J,~>
+!BU8[l,E]&!9!nW!.k0$s+13$s/,hqklK'jJ,~>
+!B:&Xj2M&u!9!nW!.k0$s+13$s/,hqirR%VJ,~>
+!BpJ^mFqU=!:^$g!9!nW!.k0$s+13$s/,hqm/bd$J,~>
+!BU8[l.Z19!:^$g!9!nW!.k0$s+13$s/,hqklK'jJ,~>
+!B:&Xj4aP3!:^$g!9!nW!.k0$s+13$s/,hqirR%VJ,~>
+!BpJ^mHsrH!;ulm!:p0i!.k0$s+13$s+C@Nm/bd$J,~>
+!BU8[l0\ND!;ulm!:p0i!.k0$s+13$s+C@NklK'jJ,~>
+!B:&Xj6cm>!;ulm!:p0i!.k0$s+13$s+C@NirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rt!<)rr!!N<%!<<)p!;lfp!<)rs!!*&t!<)rq!;ZZn!<)rs!!*&t!;uln
+!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l0\ND!;uls!<)rt!<)rr!!N<%!<<)p!;lfp!<)rs!!*&t!<)rq!;ZZn!<)rs!!*&t!;uln
+!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj6cm>!;uls!<)rt!<)rr!!N<%!<<)p!;lfp!<)rs!!*&t!<)rq!;ZZn!<)rs!!*&t!;uln
+!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7lZns7lZps7cTns82los7lZps7cTns7lYG
+s+13$s+13ms8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7lZns7lZps7cTns82los7lZps7cTns7lYG
+s+13$s+13ms8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N*!s7lZps7lZns7lZps7cTns82los7lZps7cTns7lYG
+s+13$s+13ms8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N'!s8E#ts8E#ss8N)qs8E#ss8E#us8E#ts8N)rs8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+13ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N'!s8E#ts8E#ss8N)qs8E#ss8E#us8E#ts8N)rs8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+13ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N'!s8E#ts8E#ss8N)qs8E#ss8E#us8E#ts8N)rs8N)s
+s8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13$s+13ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N*!s8N)ts8N)rs8N)s
+s8N)rs8N*!s8N)ts8N)us8;qKs+13$s+13is8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N*!s8N)ts8N)rs8N)s
+s8N)rs8N*!s8N)ts8N)us8;qKs+13$s+13is8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ss8N)ts8N)qs8N)rs8N*!s8N)ts8N)rs8N)s
+s8N)rs8N*!s8N)ts8N)us8;qKs+13$s+13is8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)ts8)eIs+13$s+13ls8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)ts8)eIs+13$s+13ls8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)ts8)eIs+13$s+13ls8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13$s+13ms8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13$s+13ms8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'#rr<&ms8N)qs8N)rs8N*!s8N)ts8N)rs8N)ss8N)r
+s8N*!s8N)ts8N)rs82kJs+13$s+13ms8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#us8N)ts8N)r
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+13ms8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#us8N)ts8N)r
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+13ms8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#us8N)ts8N)r
+s8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13$s+13ms8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7cTns7lZps7lZps8;rts8;rts7lZos7lZps8;rts8;rt
+s7lYGs+13$s+13ms8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7cTns7lZps7lZps8;rts8;rts7lZos7lZps8;rts8;rt
+s7lYGs+13$s+13ms8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7cTns7lZps7lZps8;rts8;rts7lZos7lZps8;rts8;rt
+s7lYGs+13$s+13ms8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8;rps8)fns82los8;rrs8;rts8;rts7lZms8;rrs8;rts8;rt
+s7u_Hs+13$s+13ls8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8;rps8)fns82los8;rrs8;rts8;rts7lZms8;rrs8;rts8;rt
+s7u_Hs+13$s+13ls8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8;rps8)fns82los8;rrs8;rts8;rts7lZms8;rrs8;rts8;rt
+s7u_Hs+13$s+13ls8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!;?Hm!5/@3!9O7Y!.k0$s+13<s8MBdeieN~>
+!BU8[l(n@Z!;?Hm!5/@3!9O7Y!.k0$s+13<s8M6`c8pI~>
+!B:&Xj.u_T!;?Hm!5/@3!9O7Y!.k0$s+13<s8M$Z_`*)~>
+!BpJ^mG7g<!7:cG!;?Hm!9*tS!9=+Z!9O7Y!.k0$s+13<s8MBdeieN~>
+!BU8[l.uC8!7:cG!;?Hm!9*tS!9=+Z!9O7Y!.k0$s+13<s8M6`c8pI~>
+!B:&Xj5'b2!7:cG!;?Hm!9*tS!9=+Z!9O7Y!.k0$s+13<s8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!7CiH!7_&D!6"p;!.k0$s+13<s8MBdeieN~>
+!BU8[l0\ND!<)rm!7CiH!7_&D!6"p;!.k0$s+13<s8M6`c8pI~>
+!B:&Xj6cm>!<)rm!7CiH!7_&D!6"p;!.k0$s+13<s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#urVu`pqZ$QqqZ$BlJcC<$JcDYJrp9a;
+4b*~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#urVu`pqZ$QqqZ$BlJcC<$JcDYJrojI/
+3e.~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#urVu`pqZ$QqqZ$BlJcC<$JcDYJro4$s
+2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ss8N*!s7lZos7lZos82lqs7QHms7lZls8N)rs7lYGs+13$s/5nrm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ss8N*!s7lZos7lZos82lqs7QHms7lZls8N)rs7lYGs+13$s/5nrklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ss8N*!s7lZos7lZos82lqs7QHms7lZls8N)rs7lYGs+13$s/5nrirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os8N)ss8N'!s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&
+rr<'!rr<&ts8N)rs8N)rs8N)ts8N(Ms+13$s/5nrm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os8N)ss8N'!s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&
+rr<'!rr<&ts8N)rs8N)rs8N)ts8N(Ms+13$s/5nrklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os8N)ss8N'!s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&
+rr<'!rr<&ts8N)rs8N)rs8N)ts8N(Ms+13$s/5nrirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ss8N*!s8N*!s8N)ps8N)r
+s8N)rs8;qKs+13$s.fVnm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ss8N*!s8N*!s8N)ps8N)r
+s8N)rs8;qKs+13$s.fVnklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ss8N*!s8N*!s8N)ps8N)r
+s8N)rs8;qKs+13$s.fVnirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!s7lZls8N)qs8)eIs+13$s/,hq
+m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!s7lZls8N)qs8)eIs+13$s/,hq
+klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!s7lZls8N)qs8)eIs+13$s/,hq
+irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N'!s7cTks8N)os82kJs+13$
+s/5nrm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N'!s7cTks8N)os82kJs+13$
+s/5nrklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ss8N'!s7ZKprr<&ks8N)ss8N*!s8N*!s8N'!s7cTks8N)os82kJs+13$
+s/5nrirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#os8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&s
+s8N)rs8N)rs8N)ts8N(Ms+13$s/5nrm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#os8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&s
+s8N)rs8N)rs8N)ts8N(Ms+13$s/5nrklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#os8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&s
+s8N)rs8N)rs8N)ts8N(Ms+13$s/5nrirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZos7cTos7lWps8;ots8Duus7?<ks7lZos7lYGs+13$s/5nrm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZos7cTos7lWps8;ots8Duus7?<ks7lZos7lYGs+13$s/5nrklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZos7cTos7lWps8;ots8Duus7?<ks7lZos7lYGs+13$s/5nrirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7u`ls8)fps8)fps7lWps8;ots8Duus8Duus82iss8E#us7lZos7u_H
+s+13$s/,hqm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7u`ls8)fps8)fps7lWps8;ots8Duus8Duus82iss8E#us7lZos7u_H
+s+13$s/,hqklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7u`ls8)fps8)fps7lWps8;ots8Duus8Duus82iss8E#us7lZos7u_H
+s+13$s/,hqirR%VJ,~>
+!BpJ^mHsrH!9X=]!5&:2!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l0\ND!9X=]!5&:2!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj6cm>!9X=]!5&:2!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mHsrH!9X=]!5/@2!.k0$s+13$s2tB@m/bd$J,~>
+!BU8[l0\ND!9X=]!5/@2!.k0$s+13$s2tB@klK'jJ,~>
+!B:&Xj6cm>!9X=]!5/@2!.k0$s+13$s2tB@irR%VJ,~>
+!BpJ^mDo8)!5ed5!.k0$s+13$s2k<?m/bd$J,~>
+!BU8[l,Wi%!5ed5!.k0$s+13$s2k<?klK'jJ,~>
+!B:&Xj2_2t!5ed5!.k0$s+13$s2k<?irR%VJ,~>
+!BpJ^mDo8)!5ed6!.k0$s+13$s2b6>m/bd$J,~>
+!BU8[l,Wi%!5ed6!.k0$s+13$s2b6>klK'jJ,~>
+!B:&Xj2_2t!5ed6!.k0$s+13$s2b6>irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!;?Hm!7LoI!/:IQ!.k0$s+14.s8MBdeieN~>
+!BU8[l(n@Z!;?Hm!7LoI!/:IQ!.k0$s+14.s8M6`c8pI~>
+!B:&Xj.u_T!;?Hm!7LoI!/:IQ!.k0$s+14.s8M$Z_`*)~>
+!BpJ^mG7g<!7:cG!;?Hm!9*tR!;c`q!6bE:!6,!<!.k0$s+14.s8MBdeieN~>
+!BU8[l.uC8!7:cG!;?Hm!9*tR!;c`q!6bE:!6,!<!.k0$s+14.s8M6`c8pI~>
+!B:&Xj5'b2!7:cG!;?Hm!9*tR!;c`q!6bE:!6,!<!.k0$s+14.s8M$Z_`*)~>
+!BpJ^mHsrH!<)rm!7CiH!7_&D!5nj2!.k0$s+13Es8MBdeieN~>
+!BU8[l0\ND!<)rm!7CiH!7_&D!5nj2!.k0$s+13Es8M6`c8pI~>
+!B:&Xj6cm>!<)rm!7CiH!7_&D!5nj2!.k0$s+13Es8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;ZZp!<3#u!<3#r!;ulr!!*&t!;ulo!<3#s!<<)u!<<)t!<<)t!;ZZp!<)rt!!*&s!!*&p!!*&t
+!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t!;uln!.k0$s+LFOm/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;ZZp!<3#u!<3#r!;ulr!!*&t!;ulo!<3#s!<<)u!<<)t!<<)t!;ZZp!<)rt!!*&s!!*&p!!*&t
+!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t!;uln!.k0$s+LFOklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;ZZp!<3#u!<3#r!;ulr!!*&t!;ulo!<3#s!<<)u!<<)t!<<)t!;ZZp!<)rt!!*&s!!*&p!!*&t
+!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t!;uln!.k0$s+LFOirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTi
+s8N)us8N)us82lps7cTns7lZps7ZKns8;rts8;rns8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o
+!<3#r!;lfl!<<)o!<3#o!.k0$s+LFOm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTi
+s8N)us8N)us82lps7cTns7lZps7ZKns8;rts8;rns8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o
+!<3#r!;lfl!<<)o!<3#o!.k0$s+LFOklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTi
+s8N)us8N)us82lps7cTns7lZps7ZKns8;rts8;rns8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o
+!<3#r!;lfl!<<)o!<3#o!.k0$s+LFOirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8)fms8N)rs8E#ts8N)us8N)ts8N)ts8;rts8N*!s8N)t
+s8N)os82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#u
+s8E#ts8N)us8N)ts8N(Ms+13's8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8)fms8N)rs8E#ts8N)us8N)ts8N)ts8;rts8N*!s8N)t
+s8N)os82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#u
+s8E#ts8N)us8N)ts8N(Ms+13's8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#ns8)fms8N)rs8E#ts8N)us8N)ts8N)ts8;rts8N*!s8N)t
+s8N)os82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#u
+s8E#ts8N)us8N)ts8N(Ms+13's8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)os7u`ms8N)rs8N)ts8N)os8N)ts8E#ps8N)ts8N)os82lns8N'#rr<&t
+s8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$rrE)um/bd$
+J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)os7u`ms8N)rs8N)ts8N)os8N)ts8E#ps8N)ts8N)os82lns8N'#rr<&t
+s8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$rrE)uklK'j
+J,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)os7u`ms8N)rs8N)ts8N)os8N)ts8E#ps8N)ts8N)os82lns8N'#rr<&t
+s8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13$rrE)uirR%V
+J,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N)us7lZns8N)os8N*!s8N)ns8N*!rr<&ps8E#rs8N)s
+s8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13&s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N)us7lZns8N)os8N*!s8N)ns8N*!rr<&ps8E#rs8N)s
+s8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13&s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N)us7lZns8N)os8N*!s8N)ns8N*!rr<&ps8E#rs8N)s
+s8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)ts8N)ts8)eIs+13&s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N*!s7cTms8N)os8N'#rr<&ms8N)ts8N)ts8N'#
+rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13's8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N*!s7cTms8N)os8N'#rr<&ms8N)ts8N)ts8N'#
+rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13's8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)os8N)ts8N)ss8N)rs8N)ts8N*!s7cTms8N)os8N'#rr<&ms8N)ts8N)ts8N'#
+rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)ss8N)rs8N*!s8N)ts8N)rs82kJs+13's8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N)ss8N)rs8N)ts8N*!s8N)ss8N)ts8N)ns8;rks8N)t
+s8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13's8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N)ss8N)rs8N)ts8N*!s8N)ss8N)ts8N)ns8;rks8N)t
+s8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13's8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#ns8N)ts8N)ss8N)rs8N)ts8N*!s8N)ss8N)ts8N)ns8;rks8N)t
+s8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)t
+s8N)us8N)ts8N(Ms+13's8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZps8;rts8;ots7ZKns7lZls8E#ms7ZKns82iss82iss7lZps7ZKns8;rts8;rt
+s7lZos7lZos7lZps8;rts8;rts7lYGs+13's8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZps8;rts8;ots7ZKns7lZls8E#ms7ZKns82iss82iss7lZps7ZKns8;rts8;rt
+s7lZos7lZos7lZps8;rts8;rts7lYGs+13's8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks7cTns7lZps8;rts8;ots7ZKns7lZls8E#ms7ZKns82iss82iss7lZps7ZKns8;rts8;rt
+s7lZos7lZos7lZps8;rts8;rts7lYGs+13's8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7lZns7lZps8;rts8;rts82iss8Duus7lZls8N)ms7ZKns82iss82j!
+rr<'!r;cfrqu?`srVurur;cltr;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcCB&rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7lZns7lZps8;rts8;rts82iss8Duus7lZls8N)ms7ZKns82iss82j!
+rr<'!r;cfrqu?`srVurur;cltr;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcCB&rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs7lZns7lZps8;rts8;rts82iss8Duus7lZls8N)ms7ZKns82iss82j!
+rr<'!r;cfrqu?`srVurur;cltr;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcCB&ro4$s2h1~>
+!BpJ^mHsrH!9X=]!5&:2!5SX7!8mhV!.k0$s+13Ts8MBdeieN~>
+!BU8[l0\ND!9X=]!5&:2!5SX7!8mhV!.k0$s+13Ts8M6`c8pI~>
+!B:&Xj6cm>!9X=]!5&:2!5SX7!8mhV!.k0$s+13Ts8M$Z_`*)~>
+!BpJ^mHsrH!9X=]!5/@2!5\^8!8dbU!.k0$s+13Ts8MBdeieN~>
+!BU8[l0\ND!9X=]!5/@2!5\^8!8dbU!.k0$s+13Ts8M6`c8pI~>
+!B:&Xj6cm>!9X=]!5/@2!5\^8!8dbU!.k0$s+13Ts8M$Z_`*)~>
+!BpJ^mDo8)!5ed5!5ed5!9*tU!.k0$s+13Vs8MBdeieN~>
+!BU8[l,Wi%!5ed5!5ed5!9*tU!.k0$s+13Vs8M6`c8pI~>
+!B:&Xj2_2t!5ed5!5ed5!9*tU!.k0$s+13Vs8M$Z_`*)~>
+!BpJ^mDo8)!5ed6!5\^4!9*tU!.k0$s+13Vs8MBdeieN~>
+!BU8[l,Wi%!5ed6!5\^4!9*tU!.k0$s+13Vs8M6`c8pI~>
+!B:&Xj2_2t!5ed6!5\^4!9*tU!.k0$s+13Vs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mA0d^!;?Hm!3cG%!9O7\!9O7Y!3uS(!.k0$s-Ncbm/bd$J,~>
+!BU8[l(n@Z!;?Hm!3cG%!9O7\!9O7Y!3uS(!.k0$s-NcbklK'jJ,~>
+!B:&Xj.u_T!;?Hm!3cG%!9O7\!9O7Y!3uS(!.k0$s-NcbirR%VJ,~>
+!BpJ^mG7g<!7:cG!;?Hm!9*tV!<<)t!87DO!9O7\!9O7Y!;HNf!6,!<!.k0$s-Ncbm/bd$J,~>
+!BU8[l.uC8!7:cG!;?Hm!9*tV!<<)t!87DO!9O7\!9O7Y!;HNf!6,!<!.k0$s-NcbklK'jJ,~>
+!B:&Xj5'b2!7:cG!;?Hm!9*tV!<<)t!87DO!9O7\!9O7Y!;HNf!6,!<!.k0$s-NcbirR%VJ,~>
+!BpJ^mHsrH!<)rm!7CiH!7_&I!<<)t!8.>O!6"p;!;HNf!.k0$s+14's8MBdeieN~>
+!BU8[l0\ND!<)rm!7CiH!7_&I!<<)t!8.>O!6"p;!;HNf!.k0$s+14's8M6`c8pI~>
+!B:&Xj6cm>!<)rm!7CiH!7_&I!<<)t!8.>O!6"p;!;HNf!.k0$s+14's8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!<)rq!!*&s!<<)r!;ulq!!<0#!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#u
+rVu`pqZ$Qqp&G$lrVult!<;rs!<;ip!<;utr;ZWorr;rt!<;utr;ZTnrr;lrq>^BnrVuis!<;ut
+r;ZTnJcC<$]Dqlt!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!<)rq!!*&s!<<)r!;ulq!!<0#!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#u
+rVu`pqZ$Qqp&G$lrVult!<;rs!<;ip!<;utr;ZWorr;rt!<;utr;ZTnrr;lrq>^BnrVuis!<;ut
+r;ZTnJcC<$]Dqlp!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!;lfp!;lfn!<3#o!<)rq!;ulr!!*&t!;ulq!!*&u
+!;c`q!<)rt!;ulq!<)rq!!*&s!<<)r!;ulq!!<0#!;ulq!;lfp!!<0#!<3#r!<)rs!!E6$!<<#u
+rVu`pqZ$Qqp&G$lrVult!<;rs!<;ip!<;utr;ZWorr;rt!<;utr;ZTnrr;lrq>^BnrVuis!<;ut
+r;ZTnJcC<$]Dqlj!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ts8N)us7lZps82iss82iss7lZos7lZos7lZos7lZos82lqs7QHms7lZls8N)ls8N*!rr`?%
+!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o!<3#o!.k0$s1A=1m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ts8N)us7lZps82iss82iss7lZos7lZos7lZos7lZos82lqs7QHms7lZls8N)ls8N*!rr`?%
+!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o!<3#o!.k0$s1A=1klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTns7lZos7lZps7lZns82lps7cTns7cTj
+s8N)ts8N)us7lZps82iss82iss7lZos7lZos7lZos7lZos82lqs7QHms7lZls8N)ls8N*!rr`?%
+!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o!<3#o!.k0$s1A=1irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os7lZps8E#ss8E#ts8N)us8N)us8N)ts8N*!s8E#ts8E#u
+s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&rr<'!rr<&ts8N)rs8N)ls82los8N)us8N)us8E#t
+s8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13^
+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os7lZps8E#ss8E#ts8N)us8N)us8N)ts8N*!s8E#ts8E#u
+s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&rr<'!rr<&ts8N)rs8N)ls82los8N)us8N)us8E#t
+s8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13^
+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8E#us8E#ts8Duus8E#ss8E#us8N)ts8N)t
+s8N)ms8N)rs8E#ts8N*!s8E#ts8E#os7lZps8E#ss8E#ts8N)us8N)us8N)ts8N*!s8E#ts8E#u
+s8E#ss8Duus8E#ts8E#qs8N)ss8Duus8E!&rr<'!rr<&ts8N)rs8N)ls82los8N)us8N)us8E#t
+s8E#us8N)ts8N)us8E#ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N(Ms+13^
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps7lZps8N)rs8N)ts8N'#rr<&ns8N*!s8N)ss8N*!s8N)rs8N'#rr<&s
+s8N)rs8N)ss8N*!s8N*!s8N)ps8N)rs8N)ls82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)u
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13Zs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps7lZps8N)rs8N)ts8N'#rr<&ns8N*!s8N)ss8N*!s8N)rs8N'#rr<&s
+s8N)rs8N)ss8N*!s8N*!s8N)ps8N)rs8N)ls82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)u
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13Zs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N*!s8N)ss8N'#rr<&rs8N)ps8N)ts8N)ms8N)r
+s8N)ts8N*!s8N)ss8N)ps7lZps8N)rs8N)ts8N'#rr<&ns8N*!s8N)ss8N*!s8N)rs8N'#rr<&s
+s8N)rs8N)ss8N*!s8N*!s8N)ps8N)rs8N)ls82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)u
+s8;rls8N)ss8N)rs8N*!s8N)ts8N)us8;qKs+13Zs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ts8N*!s7ZNks8E#rs7lZps8N)ss8N*!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!
+s7lZls8N)ls8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)eIs+13]s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ts8N*!s7ZNks8E#rs7lZps8N)ss8N*!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!
+s7lZls8N)ls8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)eIs+13]s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps7ZNns8N)ss8N'!s7ZNns7lZns8N)ms8N)rs8N)ts8N*!
+s8N)ss8N)ps8N)ts8N*!s7ZNks8E#rs7lZps8N)ss8N*!s7ZKprr<&ks8N)ss8N*!s8N*!s8N*!
+s7lZls8N)ls8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)ss8N)rs8N*!s8N)t
+s8N)ts8)eIs+13]s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ts8N*!s7ZNls8N'#rr<&us7cTos8N)ss8N*!s7ZKprr<&ks8N)ss8N*!
+s8N*!s8N'!s7cTks8N)ls8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs+13^s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ts8N*!s7ZNls8N'#rr<&us7cTos8N)ss8N*!s7ZKprr<&ks8N)ss8N*!
+s8N*!s8N'!s7cTks8N)ls8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs+13^s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us7ZNns8N)ss8N'!s7ZKns7cTms8N)ms8N)rs8N)t
+s8N*!s8N)ss8N)ps8N)ts8N*!s7ZNls8N'#rr<&us7cTos8N)ss8N*!s7ZKprr<&ks8N)ss8N*!
+s8N*!s8N'!s7cTks8N)ls8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82los8N)s
+s8N)rs8N*!s8N)ts8N)rs82kJs+13^s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#ms8N)us8N*!s8N)ss8N*!s8E#ts8E#us8E#o
+s8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&ss8N)rs8N)ls8N)ts8N)us8N)us8N)us8E#ts8E!"
+rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13^s8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#ms8N)us8N*!s8N)ss8N*!s8E#ts8E#us8E#o
+s8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&ss8N)rs8N)ls8N)ts8N)us8N)us8N)us8E#ts8E!"
+rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13^s8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ns8E#ts8Duus8E#os8N)ss8N)ts8N)ts8N)s
+s8N)rs8N)ts8N*!s8E#ts8E#os8N)ts8N*!s8E#ms8N)us8N*!s8N)ss8N*!s8E#ts8E#us8E#o
+s8E#ss8E#rs8N)ss8N*!s8N*!s8N'#rr<&ss8N)rs8N)ls8N)ts8N)us8N)us8N)us8E#ts8E!"
+rr<&ss8N)us8N)ts8N)us8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N(Ms+13^s8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks8;rts8;rts7lZps82iss7-0is7cTos7lZos7cTos7lWps8;ots8Duus7?<ks7lZks7ZKn
+s82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZps8;rts8;rts7lYGs+13^s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks8;rts8;rts7lZps82iss7-0is7cTos7lZos7cTos7lWps8;ots8Duus7?<ks7lZks7ZKn
+s82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZps8;rts8;rts7lYGs+13^s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZos7lZps7ZNms7lZps7lZps8;rts8;rt
+s7lZks8;rts8;rts7lZps82iss7-0is7cTos7lZos7cTos7lWps8;ots8Duus7?<ks7lZks7ZKn
+s82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZps8;rts8;rts7lYGs+13^s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs8;rts8;rrs8)frs82iss82iss82iss8E#ts8;ots8E#ss8)fps8)fp
+s7lWps8;ots8Duus8Duus82iss8E#us7lZks7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;clt
+r;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcE=]rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs8;rts8;rrs8)frs82iss82iss82iss8E#ts8;ots8E#ss8)fps8)fp
+s7lWps8;ots8Duus8Duus82iss8E#us7lZks7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;clt
+r;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcE=]rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8)fqs8N'!s8;rps8)fqs82iss8E#ss82lqs7lZp
+s8;rts8;rss8;p!rr<&qs8;rts8;rrs8)frs82iss82iss82iss8E#ts8;ots8E#ss8)fps8)fp
+s7lWps8;ots8Duus8Duus82iss8E#us7lZks7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;clt
+r;cltq>gKoq#L?mr;cfrr;cltr;cltq>c*HJcE=]ro4$s2h1~>
+!BpJ^mHsrH!9X=]!5&:2!.k13s8N(Ms+13$s60L^m/bd$J,~>
+!BU8[l0\ND!9X=]!5&:2!.k13s8N(Ms+13$s60L^klK'jJ,~>
+!B:&Xj6cm>!9X=]!5&:2!.k13s8N(Ms+13$s60L^irR%VJ,~>
+!BpJ^mHsrH!9X=]!5/@2!.k13s8N(Ms+13$s60L^m/bd$J,~>
+!BU8[l0\ND!9X=]!5/@2!.k13s8N(Ms+13$s60L^klK'jJ,~>
+!B:&Xj6cm>!9X=]!5/@2!.k13s8N(Ms+13$s60L^irR%VJ,~>
+!BpJ^mDo8)!5ed5!.k13s82kJs+13$s6BX`m/bd$J,~>
+!BU8[l,Wi%!5ed5!.k13s82kJs+13$s6BX`klK'jJ,~>
+!B:&Xj2_2t!5ed5!.k13s82kJs+13$s6BX`irR%VJ,~>
+!BpJ^mDo8)!5ed6!.k12s82kJs+13$s6BX`m/bd$J,~>
+!BU8[l,Wi%!5ed6!.k12s82kJs+13$s6BX`klK'jJ,~>
+!B:&Xj2_2t!5ed6!.k12s82kJs+13$s6BX`irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m?dkQ!7LoI!8mhV!;c`p!.k0$s+133s8MBdeieN~>
+!BU8[l'MGM!7LoI!8mhV!;c`p!.k0$s+133s8M6`c8pI~>
+!B:&Xj-TfG!7LoI!8mhV!;c`p!.k0$s+133s8M$Z_`*)~>
+!BpJ^mG7g:!6,!<!7LoI!8mhV!;c`p!8dbO!.k0$s+13^s8MBdeieN~>
+!BU8[l.uC6!6,!<!7LoI!8mhV!;c`p!8dbO!.k0$s+13^s8M6`c8pI~>
+!B:&Xj5'b0!6,!<!7LoI!8mhV!;c`p!8dbO!.k0$s+13^s8M$Z_`*)~>
+!BpJ^mHsrH!<)rl!.k1>s8N)ps8N)Us7cSFs+13$s1JC2m/bd$J,~>
+!BU8[l0\ND!<)rl!.k1>s8N)ps8N)Us7cSFs+13$s1JC2klK'jJ,~>
+!B:&Xj6cm>!<)rl!.k1>s8N)ps8N)Us7cSFs+13$s1JC2irR%VJ,~>
+!BpJ^mHsrH!;lfr!<)rt!!*&s!!*&p!!*&t!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t
+!;uln!;ZZm!;ulr!!*&t!;?Hk!<)rn!<)rt!!*&t!;lfp!<)rr!<<)u!;QTo!<3#u!<)rp!;uln
+!;ulq!;lfm!.k0$s+146s8MBdeieN~>
+!BU8[l0\ND!;lfr!<)rt!!*&s!!*&p!!*&t!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t
+!;uln!;ZZm!;ulr!!*&t!;?Hk!<)rn!<)rt!!*&t!;lfp!<)rr!<<)u!;QTo!<3#u!<)rp!;uln
+!;ulq!;lfm!.k0$s+146s8M6`c8pI~>
+!B:&Xj6cm>!;lfr!<)rt!!*&s!!*&p!!*&t!;ulo!<3#t!!*&t!;uln!<3#r!;ZZn!<)rs!!*&t
+!;uln!;ZZm!;ulr!!*&t!;?Hk!<)rn!<)rt!!*&t!;lfp!<)rr!<<)u!;QTo!<3#u!<)rp!;uln
+!;ulq!;lfm!.k0$s+146s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o
+!<3#o!;ZZm!;ull!;ZZj!<<)p!<)rn!<3#o!<<)n!;ZZp!<3#u!<3#o!<3#o!<3#o!<3#o!.k0$
+s+146s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o
+!<3#o!;ZZm!;ull!;ZZj!<<)p!<)rn!<3#o!<<)n!;ZZp!<3#u!<3#o!<3#o!<3#o!<3#o!.k0$
+s+146s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rr`?%!!*&s!!*&j!<3#o!<<)o!<3#o!<3#r!;lfl!<<)o
+!<3#o!;ZZm!;ull!;ZZj!<<)p!<)rn!<3#o!<<)n!;ZZp!<3#u!<3#o!<3#o!<3#o!<3#o!.k0$
+s+146s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)t
+s8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)ms8N)rs8E#ts8N)qs8E#ss8E#ts8N)ps8E#t
+s8N*!s8E#ss8E#ts8;rts8N)ps8)fps8N)ts8N)us8N)ts8N*!s8E#ss8E#us8N)ts8N(Ms+13$
+s60L^m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)t
+s8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)ms8N)rs8E#ts8N)qs8E#ss8E#ts8N)ps8E#t
+s8N*!s8E#ss8E#ts8;rts8N)ps8)fps8N)ts8N)us8N)ts8N*!s8E#ss8E#us8N)ts8N(Ms+13$
+s60L^klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82los8N)us8N)us8E#ts8E#us8N)ts8N)us8E#ts8N)us8N)t
+s8N)rs8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)ms8N)rs8E#ts8N)qs8E#ss8E#ts8N)ps8E#t
+s8N*!s8E#ss8E#ts8;rts8N)ps8)fps8N)ts8N)us8N)ts8N*!s8E#ss8E#us8N)ts8N(Ms+13$
+s60L^irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)s
+s8N)rs8N*!s8N)ts8N)us8;rgs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s8N)rs8N)u
+s8E#js7u`js8N)us8;rps8N)rs8N*!s8;qKs+13$s5a4Zm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)s
+s8N)rs8N*!s8N)ts8N)us8;rgs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s8N)rs8N)u
+s8E#js7u`js8N)us8;rps8N)rs8N*!s8;qKs+13$s5a4ZklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82lns8N'#rr<&ts8N)ss8N)ps8N)us8N)ts8N)us8;rls8N)s
+s8N)rs8N*!s8N)ts8N)us8;rgs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s8N)rs8N)u
+s8E#js7u`js8N)us8;rps8N)rs8N*!s8;qKs+13$s5a4ZirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)s
+s8N)rs8N*!s8N)ts8N)ts8)fhs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNms8N)j
+s8N)ts8N*!s7lZns8)fqs7ZNms8)eIs+13$s6'F]m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)s
+s8N)rs8N*!s8N)ts8N)ts8)fhs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNms8N)j
+s8N)ts8N*!s7lZns8)fqs7ZNms8)eIs+13$s6'F]klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ps8E#rs8N)ss8N*!s7lZos8N)ts8N)ts8)fms8N)s
+s8N)rs8N*!s8N)ts8N)ts8)fhs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNms8N)j
+s8N)ts8N*!s7lZns8)fqs7ZNms8)eIs+13$s6'F]irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82lo
+s8N)ss8N)rs8N*!s8N)ts8N)rs82ljs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNm
+s8N)js8N)ts8N'!s7cTks82lss7ZNks82kJs+13$s60L^m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82lo
+s8N)ss8N)rs8N*!s8N)ts8N)rs82ljs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNm
+s8N)js8N)ts8N'!s7cTks82lss7ZNks82kJs+13$s60L^klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N)ts8N'#rr<&ts8N)ss8N'!s7cTns8N)ts8N)rs82lo
+s8N)ss8N)rs8N*!s8N)ts8N)rs82ljs8N)rs8N)ts8N)qs8N)rs8N)us8N)ps8N)ts8N*!s7ZNm
+s8N)js8N)ts8N'!s7cTks82lss7ZNks82kJs+13$s60L^irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)ms8N)rs8N)ts8N)qs8E#ss8E#ts8N)t
+s8N*!s8N)ts8N*!s8E#ms8N)js8N)ts8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N(Ms+13$
+s60L^m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)ms8N)rs8N)ts8N)qs8E#ss8E#ts8N)t
+s8N*!s8N)ts8N*!s8E#ms8N)js8N)ts8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N(Ms+13$
+s60L^klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N)us8N)us8N)us8E#ts8E!"rr<&ss8N)us8N)ts8N)u
+s8N)ts8N)rs8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)ms8N)rs8N)ts8N)qs8E#ss8E#ts8N)t
+s8N*!s8N)ts8N*!s8E#ms8N)js8N)ts8N'#rr<&ss8N)us8N)ts8N*!s8E#ns8N)ts8N(Ms+13$
+s60L^irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7ZKns82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZp
+s8;rts8;rts7lZjs7lZps8;rts8;ros7lZns7lWps8;rts8;rts7lZps7lZjs7cTos7ZNns7lZo
+s7lZos7lYGs+13$s60L^m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7ZKns82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZp
+s8;rts8;rts7lZjs7lZps8;rts8;ros7lZns7lWps8;rts8;rts7lZps7lZjs7cTos7ZNns7lZo
+s7lZos7lYGs+13$s60L^klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7ZKns82iss82iss7lZps7ZKns8;rts8;rts7lZos7lZos7lZp
+s8;rts8;rts7lZjs7lZps8;rts8;ros7lZns7lWps8;rts8;rts7lZps7lZjs7cTos7ZNns7lZo
+s7lZos7lYGs+13$s60L^irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;cltr;cltq>gKo
+q#L?mr;cfrr;cltr;cltq>g<jq#LHpr;cltr;cWmr;c]oquH`rr;cltr;cfrqZ-Zrq#L6jq#LBn
+qu?`srW)uuq>gEmqZ-Wqq>c*HJcC<$kPtPK!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;cltr;cltq>gKo
+q#L?mr;cfrr;cltr;cltq>g<jq#LHpr;cltr;cWmr;c]oquH`rr;cltr;cfrqZ-Zrq#L6jq#LBn
+qu?`srW)uuq>gEmqZ-Wqq>c*HJcC<$kPtPG!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7ZKns82iss82j!rr<'!r;cfrqu?`srVurur;cltr;cltq>gKo
+q#L?mr;cfrr;cltr;cltq>g<jq#LHpr;cltr;cWmr;c]oquH`rr;cltr;cfrqZ-Zrq#L6jq#LBn
+qu?`srW)uuq>gEmqZ-Wqq>c*HJcC<$kPtPA!Q-jH~>
+!BpJ^mHsrH!9X=]!.k0$s+13$s+::Mm/bd$J,~>
+!BU8[l0\ND!9X=]!.k0$s+13$s+::MklK'jJ,~>
+!B:&Xj6cm>!9X=]!.k0$s+13$s+::MirR%VJ,~>
+!BpJ^mHsrH!9X=]!.k0$s+13$s+::Mm/bd$J,~>
+!BU8[l0\ND!9X=]!.k0$s+13$s+::MklK'jJ,~>
+!B:&Xj6cm>!9X=]!.k0$s+13$s+::MirR%VJ,~>
+!BpJ^mDo8)!.k0$s+13$s+LFOm/bd$J,~>
+!BU8[l,Wi%!.k0$s+13$s+LFOklK'jJ,~>
+!B:&Xj2_2t!.k0$s+13$s+LFOirR%VJ,~>
+!BpJ^mDo8)!.k0$s+13$s+LFOm/bd$J,~>
+!BU8[l,Wi%!.k0$s+13$s+LFOklK'jJ,~>
+!B:&Xj2_2t!.k0$s+13$s+LFOirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/books/ps/v71polynomialpage.eps b/books/ps/v71polynomialpage.eps
new file mode 100644
index 0000000..15ee2ea
--- /dev/null
+++ b/books/ps/v71polynomialpage.eps
@@ -0,0 +1,2435 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: polynomialpage.eps
+%%CreationDate: Sat Jun 21 10:51:01 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       121886 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE:\3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rVnnYrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rp9a;4b*~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rojI/3e.~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\,SAerrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<<'\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!ro4$s2h1~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13\rr<&?rr<&trr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13Zs#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls1n[5!4`(-
+!.k0lrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls1n[5!4`(-
+!.k0lrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls1n[5!4`(-
+!.k0lrriE&!<3'!qu?`squA)D!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u
+s8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
+!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFC&
+q>fs`!!(4B!!)Bc!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFC&
+q>fs`!!(4B!!)Bc!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uJcFC&
+q>fs`!!(4B!!)Bc!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&srr<&frr<&Brr<&crr<%Ms2k9E!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&srr<&frr<&Brr<&crr<%Ms2k9E!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&srr<&frr<&Brr<&crr<%Ms2k9E!<3'!!<;rs!<;rs-N=)G!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!)Ng!!'G,!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!)Ng!!'G,!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!)Ng!!'G,!!%TMb5VGArr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p8!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<;lq(B4C7
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&rrr<&ts8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#os8;rmrr<&p
+s8;ourr@WMfDc!SrrE'!s82iss82jDrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u
+!<<&c!S0Da~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&rrr<&ts8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#os8;rmrr<&p
+s8;ourr@WMfDc!SrrE'!s82iss82jDrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u
+!<<&_!R<`V~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!.k1$
+rr<&rrr<&ts8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#os8;rmrr<&p
+s8;ourr@WMfDc!SrrE'!s82iss82jDrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<<'!!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u
+!<<&Y!Q-jH~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!*#u!!)ut!!)ip!!)lq!!)rs!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!
+!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMf`(pOrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3
+!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!*#u!!)ut!!)ip!!)lq!!)rs!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!
+!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMf`(pOrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3
+!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#uJcF@%!!)or!!*#u!!)ut!!)ip!!)lq!!)rs!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!
+!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMf`(pOrr3'#rrE)u!!<0#s8E!FrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<)p4!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3
+!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls472M!;uis!<2uu!;lcr!;c]q
+!;c]q!;uis!<)ot!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;6?l!;ZWp!;c]q!;uis!.k1%
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls472M!;uis!<2uu!;lcr!;c]q
+!;c]q!;uis!<)ot!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;6?l!;ZWp!;c]q!;uis!.k1%
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Ls472M!;uis!<2uu!;lcr!;c]q
+!;c]q!;uis!<)ot!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;6?l!;ZWp!;c]q!;uis!.k1%
+rriE&!<3'!qu?`squ?fu!<;lq!ri9#rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr3Q1rrE'!
+rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcF@%qZ-Tp!!)or!!)lq!!)ip!!*#u!!)rs
+!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%NLec,ULrr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rb
+!S0Da~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcF@%qZ-Tp!!)or!!)lq!!)ip!!*#u!!)rs
+!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%NLec,ULrr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)r^
+!R<`V~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uJcF@%qZ-Tp!!)or!!)lq!!)ip!!*#u!!)rs
+!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%NLec,ULrr3'#rrE)o!!<0#
+s7cQos7?9ks7cQqrrE)u!<)p0!<3'!!<3'!!<3'!!<3'!!<;<a%fZP/!<3'!!<3'!!<3'!rW)rX
+!Q-jH~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls472M!;QQo!;lcr!;c]q!;ZWp
+!<2uu!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!.k1$rriE&
+!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!
+rrE)_!"Al-rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls472M!;QQo!;lcr!;c]q!;ZWp
+!<2uu!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!.k1$rriE&
+!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!
+rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Ls472M!;QQo!;lcr!;c]q!;ZWp
+!<2uu!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!.k1$rriE&
+!<3'!p&G*mqu?`srW!$"!<<#u!<<#u!<<#u!<;rs!<;rs!ri9#rW)uu!!*#u%06D.rrE'!rrE'!
+rrE)_!"Al-rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLfDbgN
+q#:<oqu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip
+!!)lq!!)rs!!%TMf`(pOrr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!<0#s8E!"rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLfDbgN
+q#:<oqu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip
+!!)lq!!)rs!!%TMf`(pOrr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!<0#s8E!"rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLfDbgN
+q#:<oqu6WrqYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip
+!!)lq!!)rs!!%TMf`(pOrr3'#rrE)u!!<0#s8Duus82iurrE)u!!*&g!!<0#s8E!"rrE)u!<)p4
+!<3'!!<3'!!<3'!!<3'!!<3'!!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1$rr<&nrr<&trr<&p
+rr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot
+!.k1%rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2
+rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1$rr<&nrr<&trr<&p
+rr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot
+!.k1%rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2
+rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k1$rr<&nrr<&trr<&p
+rr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot
+!.k1%rriE&!<3'!qu?`squ?`srW!$"!<;rs!<<#u!<<#u!<<#u!<;`m!ri9#rW)uu!!*#u&HMh2
+rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLf`1jLq>^Bn
+qu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!s8W*!s8VoqrVufr!<<#urr;fprVllus8;qKs4@8N
+!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!
+s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLf`1jLq>^Bn
+qu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!s8W*!s8VoqrVufr!<<#urr;fprVllus8;qKs4@8N
+!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!
+s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLf`1jLq>^Bn
+qu?KmqYpNqqu?Wqrr;rtrVufrrVuiss8W*!s8W*!s8VoqrVufr!<<#urr;fprVllus8;qKs4@8N
+!<3!#!<3'!rW!$"!<<#u!<;rs!ri9#rVurul2Unc!<<#urVmT4rrE'!rrE'!rrE'!rrE'!rrE'!
+s7-.&rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Urr<%M
+s+gUX!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Urr<%M
+s+gUX!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0Urr<%M
+s+gUX!<3'!!<;rs!<;rs!<<#u!ri9#qu?`srVururVururVururW!<*!<3'!!<3'!!<<#us8N'!
+rr3Q1rrE'!rrE'!rrE'!rrE'!s6p""rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL[/U++
+JcCN*!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL[/U++
+JcCN*!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NL[/U++
+JcCN*!!*#u!s&?$s8E!"rrE)u!!*&s!!<0#s8Duus6p!orrE'!rrE'!s8E#srtPP6!<3'!!<3'!
+!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Vrr<%Ms+^OW
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Vrr<%Ms+^OW
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0Vrr<%Ms+^OW
+!<3'!!<;rs!<;rs!<;rs!<<#u!ri9#rVururVururVuruqu?fu!<<#u!ri9#rW)uu!!*#u1B@FT
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NL\,Z@+JcCQ+!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NL\,Z@+JcCQ+!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NL\,Z@+JcCQ+!!*#u!s&?$s8E!"
+rrE)u!!<0#s7cQos7?9ks7cQqrrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13ZrriE&!<3'!qu?`squ?fu!<;lq!ri9#
+rVururVururW!$"!<;lq"TJK%!<<#us8N'!rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s0r"e!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)uu!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\c2X0rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<)pV!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8MBdeieN~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M6`c8pI~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\,QI/s2Y3?rrN3#s2b6@s8M$Z_`*)~>
+!BpJ^m/[1+!<<)<!.k0$s+13\s2G';s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13\s2G';s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13\s2G';s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s0r#Q!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mC<2r!5AL5!;?Hm!.k0ss8N)-s8;r3s8;r-s8;qKs7lWnm/bd$J,~>
+!BU8[l+$cn!5AL5!;?Hm!.k0ss8N)-s8;r3s8;r-s8;qKs7lWnklK'jJ,~>
+!B:&Xj1,-h!5AL5!;?Hm!.k0ss8N)-s8;r3s8;r-s8;qKs7lWnirR%VJ,~>
+!BpJ^mG7g<!9F1[!:9a[!8[\T!;?Hm!3lM%!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.dd/O(GbPqPB
+m/I%cJcGNFrp9a;4b*~>
+!BU8[l.uC8!9F1[!:9a[!8[\T!;?Hm!3lM%!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.dd/O(GbPqPB
+m/I%cJcGNFrojI/3e.~>
+!B:&Xj5'b2!9F1[!:9a[!8[\T!;?Hm!3lM%!!3*"g]%6Rc2RbDeGfLKiVrlXmJd.dd/O(GbPqPB
+m/I%cJcGNFro4$s2h1~>
+!BpJ^mHsrH!<)rm!7(W=!8[\T!2]_q!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7:`G!6bBB!:9^c
+!.k1Fs8MBdeieN~>
+!BU8[l0\ND!<)rm!7(W=!8[\T!2]_q!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7:`G!6bBB!:9^c
+!.k1Fs8M6`c8pI~>
+!B:&Xj6cm>!<)rm!7(W=!8[\T!2]_q!<)rt!8IMR!6tND!7_#K!9*qX!:Bdd!7:`G!6bBB!:9^c
+!.k1Fs8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<3#u!<)rp!;uln!<3#r!;c`o!!<0#!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t
+!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!7q/M!;lcr!8IMR!6tND!42\*!:Bdd!7:`G
+!4Dh,!.k1Fs8MBdeieN~>
+!BU8[l0\ND!;lfr!<3#u!<)rp!;uln!<3#r!;c`o!!<0#!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t
+!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!7q/M!;lcr!8IMR!6tND!42\*!:Bdd!7:`G
+!4Dh,!.k1Fs8M6`c8pI~>
+!B:&Xj6cm>!;lfr!<3#u!<)rp!;uln!<3#r!;c`o!!<0#!;QTo!<)rt!!*&u!<<)t!<<)u!!*&t
+!;ulq!!N<%!<<)p!<)rq!;ZZn!<)rs!!*&t!;uln!7q/M!;lcr!8IMR!6tND!42\*!:Bdd!7:`G
+!4Dh,!.k1Fs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)us8N)us7lZos7lZos82los7lZis8N*!rr`?%!!*&u!<<)t
+!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj
+!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z's8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVult
+qYpNqq>^Bnqu?Kmr;Z]qp](6n!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z'
+s8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ss8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)us8N)us7lZos7lZos82los7lZis8N*!rr`?%!!*&u!<<)t
+!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj
+!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z's8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVult
+qYpNqq>^Bnqu?Kmr;Z]qp](6n!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z'
+s8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ss8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)us8N)us7lZos7lZos82los7lZis8N*!rr`?%!!*&u!<<)t
+!<<)o!<3#o!<<)p!<)rq!;lfl!<<)o!<3#o!8%5N!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq!;6Bj
+!;uls!!*&t!;lfp!!3*"qZ$Qq#6+Z's8N'!r;Z]qr;Zcs!<;utqu?Wqqu?Zr!<;utrVultrVult
+qYpNqq>^Bnqu?Kmr;Z]qp](6n!<;utqu?Tpq#:<oqu?Wqrr;rts8W*!!<;utqu?TprVult#6+Z'
+s8N'!r;Z`rq>^Bnq#:<oq>^Bn!WN.Ss8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8)fps8N)ts8N)us8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)t
+s8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)Nrr<&ls8N)u
+rr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&nrr<&trr<&ss8N)trr<&trr<&ts8N)ps8N*!
+s8N*!rr<&urr<&trr<&ss8N)trr<&qrr<&qs8N)trr<&trr<&srr<&qrr<&qrr<&trr<&qrr<&p
+rr<&trr<&ns8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!
+rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Rs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8)fps8N)ts8N)us8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)t
+s8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)Nrr<&ls8N)u
+rr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&nrr<&trr<&ss8N)trr<&trr<&ts8N)ps8N*!
+s8N*!rr<&urr<&trr<&ss8N)trr<&qrr<&qs8N)trr<&trr<&srr<&qrr<&qrr<&trr<&qrr<&p
+rr<&trr<&ns8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!
+rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Rs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8)fps8N)ts8N)us8N)ts8N)rs8N)ss8E#ts8E#ns82lps8N)t
+s8N)us8E#ts8N*!s8E#ts8E#ss8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)Nrr<&ls8N)u
+rr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&nrr<&trr<&ss8N)trr<&trr<&ts8N)ps8N*!
+s8N*!rr<&urr<&trr<&ss8N)trr<&qrr<&qs8N)trr<&trr<&srr<&qrr<&qrr<&trr<&qrr<&p
+rr<&trr<&ns8N)trr<&trr<&trr<&prr<&qrr<&srr<&ts8N)trr<&trr<&trr<&ts8N*!s8N*!
+rr<&rrr<&qrr<&trr<&prr<&qrr<&ts8N(Rs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`js8N)us8;rls8N)ss8N)ss8N)os82lps8N)ts8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;rHrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&jrr<&srr<&srr<&urr<&rrr<&prr<&urr<&urr<&prr<&srr<&srr<&qrr<&q
+rr<&rrr<&urr<&srr<&qrr<&lrr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs
+!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%cRrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`js8N)us8;rls8N)ss8N)ss8N)os82lps8N)ts8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;rHrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&jrr<&srr<&srr<&urr<&rrr<&prr<&urr<&urr<&prr<&srr<&srr<&qrr<&q
+rr<&rrr<&urr<&srr<&qrr<&lrr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs
+!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%cRrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`js8N)us8;rls8N)ss8N)ss8N)os82lps8N)ts8N)us8N)t
+s8N*!s8N)ss8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;rHrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&jrr<&srr<&srr<&urr<&rrr<&prr<&urr<&urr<&prr<&srr<&srr<&qrr<&q
+rr<&rrr<&urr<&srr<&qrr<&lrr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs
+!!)ut!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%cRro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N*!s7lZns8)fms8N)ss8N)hs8N*!rr<&ss8N)ts8N)u
+s8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fIrr<&lrr<&ps7lZns8)fmrr<&q
+s7lZis8)forr<&srr<&urr<&rrr<&prr<&urr<&urr<&us8)forr<&srr<&qrr<&qrr<&rrr<&u
+rr<&srr<&qrr<&qs8)fmrr<&qs7lZirr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%TNrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N*!s7lZns8)fms8N)ss8N)hs8N*!rr<&ss8N)ts8N)u
+s8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fIrr<&lrr<&ps7lZns8)fmrr<&q
+s7lZis8)forr<&srr<&urr<&rrr<&prr<&urr<&urr<&us8)forr<&srr<&qrr<&qrr<&rrr<&u
+rr<&srr<&qrr<&qs8)fmrr<&qs7lZirr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%TNrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N*!s7lZns8)fms8N)ss8N)hs8N*!rr<&ss8N)ts8N)u
+s8N)ts8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)fIrr<&lrr<&ps7lZns8)fmrr<&q
+s7lZis8)forr<&srr<&urr<&rrr<&prr<&urr<&urr<&us8)forr<&srr<&qrr<&qrr<&rrr<&u
+rr<&srr<&qrr<&qs8)fmrr<&qs7lZirr<&rrrW9$rrDrr!!)lq!!)ip!!*#u!!)rs!!)rs!!*#u
+!!)or!!*#u!!*#u!!*#u!!)or!!)lqqZ-Hl!!)iprW%TNro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)ts8N'!s7cTks82los8N)ss8N)hs8N)ps8N)ts8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lKrr<&lrr<&prr<&nrr<&srr<&qrr<&q
+rr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&urr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq
+!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq!!)Qh!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu
+!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!/:IPm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)ts8N'!s7cTks82los8N)ss8N)hs8N)ps8N)ts8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lKrr<&lrr<&prr<&nrr<&srr<&qrr<&q
+rr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&urr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq
+!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq!!)Qh!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu
+!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!/:IPklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)ts8N'!s7cTks82los8N)ss8N)hs8N)ps8N)ts8N)us8N)t
+s8N*!s8N)ms8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82lKrr<&lrr<&prr<&nrr<&srr<&qrr<&q
+rr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&urr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq
+!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq!!)Qh!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu
+!;uis!;uis!<2uu!;lcr!<2uu!<2uu!<2uu!;lcr!;lcr!;uis!;ZWp!;?Hm!/:IPirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8N)ts8N)rs8N)ss8E#ss8E#os8N)p
+s8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)M
+rr<&rrr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&u
+rr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq
+!!)Qh!!)or!s&B$!;lcr!;c]q!;QQq!<3&rrr<&srr<&urr<&rrr<&urr<&urr<&urr<&rrr<&r
+rr<&srr<&prr<&qrr<&srr<%Rs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8N)ts8N)rs8N)ss8E#ss8E#os8N)p
+s8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)M
+rr<&rrr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&u
+rr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq
+!!)Qh!!)or!s&B$!;lcr!;c]q!;QQq!<3&rrr<&srr<&urr<&rrr<&urr<&urr<&urr<&rrr<&r
+rr<&srr<&prr<&qrr<&srr<%Rs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)ts8N'#rr<&ss8N)us8N)ts8N)rs8N)ss8E#ss8E#os8N)p
+s8N)us8E#ts8N)ts8N*!s8E#ss8E#ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)M
+rr<&rrr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&irr<&srr<&srr<&srr<&urr<&rrr<&prr<&u
+rr<&urrW9$rrDus!!)rs!!)rs!!)lq!!)lq!!)or!!*#u!!)rs!!)lq!!)or!!)rs!!)lq!!)lq
+!!)Qh!!)or!s&B$!;lcr!;c]q!;QQq!<3&rrr<&srr<&urr<&rrr<&urr<&urr<&urr<&rrr<&r
+rr<&srr<&prr<&qrr<&srr<%Rs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7cTos7ZNns7lZos7lZos7cTks7u`ns7cQos8;rts8;rts7cTn
+s7lZps7lZos7lZps8;rts8;rts7lZGs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)prr<&ts8N)srr<&srr<&trr<&ts8N)prr<&urr<&urrW9$rrE#trrDus!!)rs!!)lq
+!!)lqrrE#t!!)ut!!)utrrDoq!!)or!!)utrrDoq!!)ut!!*#u!!)utrrDiorrE#t!!)ut!!)ut
+!!)ip!!)fo!W`6#qu6Wrr;Q`srVlitrVlitrVlitrr2rurr2ruqu6Wrqu6WrrVultq>UEpqZ$Qq
+rVlitqu?ZrNrT+G!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7cTos7ZNns7lZos7lZos7cTks7u`ns7cQos8;rts8;rts7cTn
+s7lZps7lZos7lZps8;rts8;rts7lZGs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)prr<&ts8N)srr<&srr<&trr<&ts8N)prr<&urr<&urrW9$rrE#trrDus!!)rs!!)lq
+!!)lqrrE#t!!)ut!!)utrrDoq!!)or!!)utrrDoq!!)ut!!*#u!!)utrrDiorrE#t!!)ut!!)ut
+!!)ip!!)fo!W`6#qu6Wrr;Q`srVlitrVlitrVlitrr2rurr2ruqu6Wrqu6WrrVultq>UEpqZ$Qq
+rVlitqu?ZrNrT+C!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7cTos7ZNns7lZos7lZos7cTks7u`ns7cQos8;rts8;rts7cTn
+s7lZps7lZos7lZps8;rts8;rts7lZGs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)prr<&ts8N)srr<&srr<&trr<&ts8N)prr<&urr<&urrW9$rrE#trrDus!!)rs!!)lq
+!!)lqrrE#t!!)ut!!)utrrDoq!!)or!!)utrrDoq!!)ut!!*#u!!)utrrDiorrE#t!!)ut!!)ut
+!!)ip!!)fo!W`6#qu6Wrr;Q`srVlitrVlitrVlitrr2rurr2ruqu6Wrqu6WrrVultq>UEpqZ$Qq
+rVlitqu?ZrNrT+=!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7lZns82iss8E#us7u`os7lZns8)fls7u`ms8;ots8Duus8;rt
+s8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`Es8;rrs7u`ms8;rps8;ots8E#qs8;rqs8;rk
+s8;ots8E#us8E#ts8E#ss8;p!rr<&rs8E#us8N*!s8N*!s8;ots8E#us8E#ts8E#ts7u`orrE-"
+r;c`pr;Zp!!!*#uq>gKor;ZitrW)iqr;ccqr;cQk!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr
+!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$QqNrT+G!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7lZns82iss8E#us7u`os7lZns8)fls7u`ms8;ots8Duus8;rt
+s8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`Es8;rrs7u`ms8;rps8;ots8E#qs8;rqs8;rk
+s8;ots8E#us8E#ts8E#ss8;p!rr<&rs8E#us8N*!s8N*!s8;ots8E#us8E#ts8E#ts7u`orrE-"
+r;c`pr;Zp!!!*#uq>gKor;ZitrW)iqr;ccqr;cQk!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr
+!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$QqNrT+C!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7lZns82iss8E#us7u`os7lZns8)fls7u`ms8;ots8Duus8;rt
+s8;rss8)fns82lqs7lZms8;rrs8;rts8;rts7u`Es8;rrs7u`ms8;rps8;ots8E#qs8;rqs8;rk
+s8;ots8E#us8E#ts8E#ss8;p!rr<&rs8E#us8N*!s8N*!s8;ots8E#us8E#ts8E#ts7u`orrE-"
+r;c`pr;Zp!!!*#uq>gKor;ZitrW)iqr;ccqr;cQk!<E/u!;lfp!;lfm!;c]q!;lfq!<3#t!<)rr
+!<)rs!<<*!!<<*!!<<)q!<)rr!!*&u!<3#p!<)ou!<;utqZ$QqNrT+=!Q-jH~>
+!BpJ^mHsrH!.k0$s.')h!5&72!8d_U!.k0Ys8MBdeieN~>
+!BU8[l0\ND!.k0$s.')h!5&72!8d_U!.k0Ys8M6`c8pI~>
+!B:&Xj6cm>!.k0$s.')h!5&72!8d_U!.k0Ys8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s.')h!5&72!8meV!.k0Xs8MBdeieN~>
+!BU8[l0\ND!.k0$s.')h!5&72!8meV!.k0Xs8M6`c8pI~>
+!B:&Xj6cm>!.k0$s.')h!5&72!8meV!.k0Xs8M$Z_`*)~>
+!BpJ^m=G:gs+14Jrr<&2rr<&Vrr<%Ms0_n+m/bd$J,~>
+!BU8[l%/kcs+14Jrr<&2rr<&Vrr<%Ms0_n+klK'jJ,~>
+!B:&Xj+75]s+14Jrr<&2rr<&Vrr<%Ms0_n+irR%VJ,~>
+!BpJ^m=G:gs+14Ks8;r3s8;rYs82kJs0ht,m/bd$J,~>
+!BU8[l%/kcs+14Ks8;r3s8;rYs82kJs0ht,klK'jJ,~>
+!B:&Xj+75]s+14Ks8;r3s8;rYs82kJs0ht,irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDo8+!:9ac!;?Hm!;c`q!:Bgd!;?Hm!.k1K!42_(!4`(-!.k0$s7QEkm/bd$J,~>
+!BU8[l,Wi'!:9ac!;?Hm!;c`q!:Bgd!;?Hm!.k1K!42_(!4`(-!.k0$s7QEkklK'jJ,~>
+!B:&Xj2_3!!:9ac!;?Hm!;c`q!:Bgd!;?Hm!.k1K!42_(!4`(-!.k0$s7QEkirR%VJ,~>
+!BpJ^mFqU=!!<0#!;6Bk!:9ac!;?Hm!;c`q!:Bgd!;?Hm!2KSi!9F.[!94"Y!7:`G!6bBB!:9^c
+!.k0$s7QEkm/bd$J,~>
+!BU8[l.Z19!!<0#!;6Bk!:9ac!;?Hm!;c`q!:Bgd!;?Hm!2KSi!9F.[!94"Y!7:`G!6bBB!:9^c
+!.k0$s7QEkklK'jJ,~>
+!B:&Xj4aP3!!<0#!;6Bk!:9ac!;?Hm!;c`q!:Bgd!;?Hm!2KSi!9F.[!94"Y!7:`G!6bBB!:9^c
+!.k0$s7QEkirR%VJ,~>
+!BpJ^mHsrH!;ull!;-<k!:9ac!:Bgd!:Bgd!1!Qa!;uis!9F.[!94"Y!7:`G!6bBB!:9^c!.k0$
+s7QEkm/bd$J,~>
+!BU8[l0\ND!;ull!;-<k!:9ac!:Bgd!:Bgd!1!Qa!;uis!9F.[!94"Y!7:`G!6bBB!:9^c!.k0$
+s7QEkklK'jJ,~>
+!B:&Xj6cm>!;ull!;-<k!:9ac!:Bgd!:Bgd!1!Qa!;uis!9F.[!94"Y!7:`G!6bBB!:9^c!.k0$
+s7QEkirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!!*&u!<<)t!<3#u!!*&t!;uln!<<)p!<)rq!;ulm!<3#t!<<)t!<<)p
+!<)rq!;ZZn!<)rs!!*&t!;uln!65$=!;uis!9F.[!94"Y!7:`G!4Dh,!.k0$s7QEkm/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!!*&u!<<)t!<3#u!!*&t!;uln!<<)p!<)rq!;ulm!<3#t!<<)t!<<)p
+!<)rq!;ZZn!<)rs!!*&t!;uln!65$=!;uis!9F.[!94"Y!7:`G!4Dh,!.k0$s7QEkklK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!!*&u!<<)t!<3#u!!*&t!;uln!<<)p!<)rq!;ulm!<3#t!<<)t!<<)p
+!<)rq!;ZZn!<)rs!!*&t!;uln!65$=!;uis!9F.[!94"Y!7:`G!4Dh,!.k0$s7QEkirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'!s8E#us8;rss7lZos7lZps7lZns82lps7lZos8E#u
+s8;rts7lZns82los7lZps7cTns7lZ7rr<&srr<&us8E#ts8E#ss8;rmrr<&rs8N)ts8N)ss8;rp
+s7u`ns8;rls8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMKE(r<!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'!s8E#us8;rss7lZos7lZps7lZns82lps7lZos8E#u
+s8;rts7lZns82los7lZps7cTns7lZ7rr<&srr<&us8E#ts8E#ss8;rmrr<&rs8N)ts8N)ss8;rp
+s7u`ns8;rls8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMKE(r8!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'!s8E#us8;rss7lZos7lZps7lZns82lps7lZos8E#u
+s8;rts7lZns82los7lZps7cTns7lZ7rr<&srr<&us8E#ts8E#ss8;rmrr<&rs8N)ts8N)ss8;rp
+s7u`ns8;rls8N'!s8;rps8;rmrr<&rs8E#ts8E#us8N'!s8;rps8;rrs8N''rr<'!rr<&ss8E#o
+s8;rmrr<&ps8;ourr@WMKE(r2!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82los8N)ts8N)us8E#ts8E#us8N)ts8N)ts8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)=rrW9$rrDoq!!)rs!!)ut!!)ut
+!!)ip!!)lq!!)rs!!)ut!!)ut!!)lq!!)ip!!)ut!!)cnrrE#t!!)ut!!)ut!!)ip!!)lq!!)rs
+!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMKE(r<
+!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82los8N)ts8N)us8E#ts8E#us8N)ts8N)ts8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)=rrW9$rrDoq!!)rs!!)ut!!)ut
+!!)ip!!)lq!!)rs!!)ut!!)ut!!)lq!!)ip!!)ut!!)cnrrE#t!!)ut!!)ut!!)ip!!)lq!!)rs
+!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMKE(r8
+!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82los8N)ts8N)us8E#ts8E#us8N)ts8N)ts8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)us8N)ts8N)=rrW9$rrDoq!!)rs!!)ut!!)ut
+!!)ip!!)lq!!)rs!!)ut!!)ut!!)lq!!)ip!!)ut!!)cnrrE#t!!)ut!!)ut!!)ip!!)lq!!)rs
+!!)utrrE#t!!)ut!!)ut!!)utrrE*!rrE*!!!)or!!)lq!!)ut!!)ip!!)lq!!)utrr@WMKE(r2
+!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`ps8N)ts8N)us8N)ss8N*!s8;rns8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r7s8;rnrr<&urr<&nrr<&prr<&qrr<&srr<&o
+rr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u
+!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%TMKE(r<!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`ps8N)ts8N)us8N)ss8N*!s8;rns8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r7s8;rnrr<&urr<&nrr<&prr<&qrr<&srr<&o
+rr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u
+!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%TMKE(r8!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`ps8N)ts8N)us8N)ss8N*!s8;rns8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)us8;r7s8;rnrr<&urr<&nrr<&prr<&qrr<&srr<&o
+rr<&qrr<&qrr<&rrr<&orr<&rrrW9$rrDrr!!)lq!!)lq!!)rs!!)ut!!)rs!!*#u!!)or!!*#u
+!!*#u!!*#u!!)or!!)]l!!)ip!!)lq!!)rs!!%TMKE(r2!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82lss8N)ts8N)us8N)ss8N)us8)fos8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f8rrW9$rrDlp!!*#u!!)rsqZ-Hl!!)lq!!)rs
+!!)utqZ-Km!!)lqq#L3i!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu!;lcr!<2uu
+!<2uu!<2uu!;lcr!;c`m!;ZWp!;ZZo!.k0$rrE)um/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82lss8N)ts8N)us8N)ss8N)us8)fos8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f8rrW9$rrDlp!!*#u!!)rsqZ-Hl!!)lq!!)rs
+!!)utqZ-Km!!)lqq#L3i!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu!;lcr!<2uu
+!<2uu!<2uu!;lcr!;c`m!;ZWp!;ZZo!.k0$rrE)uklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82lss8N)ts8N)us8N)ss8N)us8)fos8N)ms8N)qs8N)ps8N)t
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)ts8)f8rrW9$rrDlp!!*#u!!)rsqZ-Hl!!)lq!!)rs
+!!)utqZ-Km!!)lqq#L3i!!)or!s&B$!;lcr!;c]q!;ZWp!<2uu!;uis!;uis!<2uu!;lcr!<2uu
+!<2uu!<2uu!;lcr!;c`m!;ZWp!;ZZo!.k0$rrE)uirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ts8N)us8N)ss8N)ss82lqs8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l:rr<&srr<&rrrN3#!;uis!;uis!;ZWp
+!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC?%rp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ts8N)us8N)ss8N)ss82lqs8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l:rr<&srr<&rrrN3#!;uis!;uis!;ZWp
+!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC?%rojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ts8N)us8N)ss8N)ss82lqs8N)ms8N)qs8N)p
+s8N)ts8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)rs82l:rr<&srr<&rrrN3#!;uis!;uis!;ZWp
+!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6WrqYpNqq>UEprr2rur;Q`sr;Q`s
+rr2ruqu6Wrrr2rurr2rurr2ruqu6Wrqu6Wrr;Q`sq>UEppAb-mJcC?%ro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N*!s8N)us8E#ts8E#ts8E#us8N)ts8N)ts8N)ts8N)s
+s8N)qs8N)ts8N*!s8N)us8E#ss8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)=rr<&s
+rr<&rrrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs
+!!%TMKE(r<!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N*!s8N)us8E#ts8E#ts8E#us8N)ts8N)ts8N)ts8N)s
+s8N)qs8N)ts8N*!s8N)us8E#ss8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)=rr<&s
+rr<&rrrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs
+!!%TMKE(r8!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N*!s8N)us8E#ts8E#ts8E#us8N)ts8N)ts8N)ts8N)s
+s8N)qs8N)ts8N*!s8N)us8E#ss8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)us8N)ts8N)=rr<&s
+rr<&rrrN3#!;uis!;uis!;ZWp!;c]q!;uis!<2uu!;uis!;c]q!;c]q!:g'h!;lcu!<<'!qu6Wr
+qYpNqq#:BqrrDrr!!)rs!!*#u!!)or!!*#u!!*#u!!*#u!!)or!!)or!!)rs!!)ip!!)lq!!)rs
+!!%TMKE(r2!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7cQos7cTns7lZns7lZps7lZns7lZps7cTns7lZps7lZo
+s7lZps8;rts8;rts7lZ7rr<&srr<&qrr<&rrr<&ts8N)prr<&qrr<&ts8N)urr<&ts8N)qrr<&t
+rr<&urr<&ts8N)os8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu
+!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot!;lfr!.k0.s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7cQos7cTns7lZns7lZps7lZns7lZps7cTns7lZps7lZo
+s7lZps8;rts8;rts7lZ7rr<&srr<&qrr<&rrr<&ts8N)prr<&qrr<&ts8N)urr<&ts8N)qrr<&t
+rr<&urr<&ts8N)os8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu
+!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot!;lfr!.k0.s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7cQos7cTns7lZns7lZps7lZns7lZps7cTns7lZps7lZo
+s7lZps8;rts8;rts7lZ7rr<&srr<&qrr<&rrr<&ts8N)prr<&qrr<&ts8N)urr<&ts8N)qrr<&t
+rr<&urr<&ts8N)os8N)trr<&trr<&trr<&prr<&orrN3#!;lcr!;uis!<)ot!<)ot!<)ot!<2uu
+!<2uu!;lcr!;lcr!<)rt!;ZWp!;c`q!<)ot!;lfr!.k0.s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rqs8;ots8Duus8Duus8;rrs7u`ms82lqs7lZms82lp
+s8;ots8E#ss82lqs7lZms8;rrs8;rts8;rts7u`8s7lZkrr<&qs8;ots8E#ts7u`ns8;p!rr<&u
+s8;ots8E#qs8;rqs8;rkrrE-"r;c`pr;c`pq>gBl!!)orrW)rtrW)osr;cfrrW)uurrE*!rrE*!
+q>gKor;ZitrW)rtq>gKo!<E/u!;c`q!.k0.s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rqs8;ots8Duus8Duus8;rrs7u`ms82lqs7lZms82lp
+s8;ots8E#ss82lqs7lZms8;rrs8;rts8;rts7u`8s7lZkrr<&qs8;ots8E#ts7u`ns8;p!rr<&u
+s8;ots8E#qs8;rqs8;rkrrE-"r;c`pr;c`pq>gBl!!)orrW)rtrW)osr;cfrrW)uurrE*!rrE*!
+q>gKor;ZitrW)rtq>gKo!<E/u!;c`q!.k0.s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rqs8;ots8Duus8Duus8;rrs7u`ms82lqs7lZms82lp
+s8;ots8E#ss82lqs7lZms8;rrs8;rts8;rts7u`8s7lZkrr<&qs8;ots8E#ts7u`ns8;p!rr<&u
+s8;ots8E#qs8;rqs8;rkrrE-"r;c`pr;c`pq>gBl!!)orrW)rtrW)osr;cfrrW)uurrE*!rrE*!
+q>gKor;ZitrW)rtq>gKo!<E/u!;c`q!.k0.s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s4I>O!8d_U!.k0$s0Mb)m/bd$J,~>
+!BU8[l0\ND!.k0$s4I>O!8d_U!.k0$s0Mb)klK'jJ,~>
+!B:&Xj6cm>!.k0$s4I>O!8d_U!.k0$s0Mb)irR%VJ,~>
+!BpJ^mHsrH!.k0$s4I>O!8meV!.k0$s0D\(m/bd$J,~>
+!BU8[l0\ND!.k0$s4I>O!8meV!.k0$s0D\(klK'jJ,~>
+!B:&Xj6cm>!.k0$s4I>O!8meV!.k0$s0D\(irR%VJ,~>
+!BpJ^m=G:gs1&(/!8meV!.k0$s0D\(m/bd$J,~>
+!BU8[l%/kcs1&(/!8meV!.k0$s0D\(klK'jJ,~>
+!B:&Xj+75]s1&(/!8meV!.k0$s0D\(irR%VJ,~>
+!BpJ^m=G:gs1/1.!9F1X!.k0$s0Mb)m/bd$J,~>
+!BU8[l%/kcs1/1.!9F1X!.k0$s0Mb)klK'jJ,~>
+!B:&Xj+75]s1/1.!9F1X!.k0$s0Mb)irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!9!nW!9F1[!;?Hm!.k0is8N)es8;ros8;qKs+13_s8MBdeieN~>
+!BU8[l+6op!9!nW!9F1[!;?Hm!.k0is8N)es8;ros8;qKs+13_s8M6`c8pI~>
+!B:&Xj1>9j!9!nW!9F1[!;?Hm!.k0is8N)es8;ros8;qKs+13_s8M$Z_`*)~>
+!BpJ^mG7g:!9jI_!9!nW!9F1[!;?Hm!3Z@t!9O4\!8IMR!9F.[!;c]q!;HKn!;HKn!6kHC!7CfH
+!9*qX!.k0cs8MBdeieN~>
+!BU8[l.uC6!9jI_!9!nW!9F1[!;?Hm!3Z@t!9O4\!8IMR!9F.[!;c]q!;HKn!;HKn!6kHC!7CfH
+!9*qX!.k0cs8M6`c8pI~>
+!B:&Xj5'b0!9jI_!9!nW!9F1[!;?Hm!3Z@t!9O4\!8IMR!9F.[!;c]q!;HKn!;HKn!6kHC!7CfH
+!9*qX!.k0cs8M$Z_`*)~>
+!BpJ^mHsrH!<)rl!9jI_!5\^8!20>l!;uis!9O4\!8IMR!9F.[!;c]q!;QQo!;HKn!6bBB!7CfH
+!9*qX!.k0cs8MBdeieN~>
+!BU8[l0\ND!<)rl!9jI_!5\^8!20>l!;uis!9O4\!8IMR!9F.[!;c]q!;QQo!;HKn!6bBB!7CfH
+!9*qX!.k0cs8M6`c8pI~>
+!B:&Xj6cm>!<)rl!9jI_!5\^8!20>l!;uis!9O4\!8IMR!9F.[!;c]q!;QQo!;HKn!6bBB!7CfH
+!9*qX!.k0cs8M$Z_`*)~>
+!BpJ^mHsrH!;lfr!<)rt!<3#q!;ulq!!N<%!<<)p!;lfp!<)rr!<<)u!<3#r!;lfl!<)rp!<3#o
+!<)rq!;ZZn!<)rs!!*&t!6+s<!;uis!9O4\!58C4!:^!g!;HKn!6bBB!7CfH!9*qX!.k0cs8MBd
+eieN~>
+!BU8[l0\ND!;lfr!<)rt!<3#q!;ulq!!N<%!<<)p!;lfp!<)rr!<<)u!<3#r!;lfl!<)rp!<3#o
+!<)rq!;ZZn!<)rs!!*&t!6+s<!;uis!9O4\!58C4!:^!g!;HKn!6bBB!7CfH!9*qX!.k0cs8M6`
+c8pI~>
+!B:&Xj6cm>!;lfr!<)rt!<3#q!;ulq!!N<%!<<)p!;lfp!<)rr!<<)u!<3#r!;lfl!<)rp!<3#o
+!<)rq!;ZZn!<)rs!!*&t!6+s<!;uis!9O4\!58C4!:^!g!;HKn!6bBB!7CfH!9*qX!.k0cs8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N*!rriE&!!*'!q#LEoq#LHpq#LBnq#LHppAk6nquHWoq#LEo
+q#LHpq#LBnquHWoq#LHpp]/>6!!)rs!!)rsr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;?Hl!;lfr
+!!*&t!;?Hk!!3*"r;Z`rqZ$BlrVu]or;Z]qr;Z`r!<<#uqu?Tpr;Zcs!<;utr;ZTnp](0l!WN/t
+s8;rqs8N'!s8;rqs7u`ns8;rqs8E#us8E#ss7u`ns8;ourr@WMci="3!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N*!rriE&!!*'!q#LEoq#LHpq#LBnq#LHppAk6nquHWoq#LEo
+q#LHpq#LBnquHWoq#LHpp]/>6!!)rs!!)rsr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;?Hl!;lfr
+!!*&t!;?Hk!!3*"r;Z`rqZ$BlrVu]or;Z]qr;Z`r!<<#uqu?Tpr;Zcs!<;utr;ZTnp](0l!WN/t
+s8;rqs8N'!s8;rqs7u`ns8;rqs8E#us8E#ss7u`ns8;ourr@WMci="/!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N*!rriE&!!*'!q#LEoq#LHpq#LBnq#LHppAk6nquHWoq#LEo
+q#LHpq#LBnquHWoq#LHpp]/>6!!)rs!!)rsr;c]or;Zlu!<)ro!;ulq!;ulr!!*&u!;?Hl!;lfr
+!!*&t!;?Hk!!3*"r;Z`rqZ$BlrVu]or;Z]qr;Z`r!<<#uqu?Tpr;Zcs!<;utr;ZTnp](0l!WN/t
+s8;rqs8N'!s8;rqs7u`ns8;rqs8E#us8E#ss7u`ns8;ourr@WMci=")!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs82lps8N)ts8N*!s8E#ts8E#ss8N)qs8E#ss8E#ts8;rts8N)s
+s8N)rs8N)us8N)ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)=rrW9$rrDoq!!)ut!!)rs
+!!)utrrDrr!!)ip!!)ut!!)orrrE&u!!)]l!!)lqrrE#t!!)fo!!)utrrDoq!!)fo!!)cn!!)ip
+!!)ut!!)orrrE&u!!)ut!!)ut!!)rsrrE#t!!)or!!)Zk!!)utrrE#t!!)ut!!)rsrrE#t!!)or
+!!)ip!!)ut!!)rs!!)ut!!)lq!!)ip!!)utrr@WMci="3!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs82lps8N)ts8N*!s8E#ts8E#ss8N)qs8E#ss8E#ts8;rts8N)s
+s8N)rs8N)us8N)ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)=rrW9$rrDoq!!)ut!!)rs
+!!)utrrDrr!!)ip!!)ut!!)orrrE&u!!)]l!!)lqrrE#t!!)fo!!)utrrDoq!!)fo!!)cn!!)ip
+!!)ut!!)orrrE&u!!)ut!!)ut!!)rsrrE#t!!)or!!)Zk!!)utrrE#t!!)ut!!)rsrrE#t!!)or
+!!)ip!!)ut!!)rs!!)ut!!)lq!!)ip!!)utrr@WMci="/!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs82lps8N)ts8N*!s8E#ts8E#ss8N)qs8E#ss8E#ts8;rts8N)s
+s8N)rs8N)us8N)ts8N)ts8N)ts8N)ms8N)ss8E#ss8E#us8E#ts8N)=rrW9$rrDoq!!)ut!!)rs
+!!)utrrDrr!!)ip!!)ut!!)orrrE&u!!)]l!!)lqrrE#t!!)fo!!)utrrDoq!!)fo!!)cn!!)ip
+!!)ut!!)orrrE&u!!)ut!!)ut!!)rsrrE#t!!)or!!)Zk!!)utrrE#t!!)ut!!)rsrrE#t!!)or
+!!)ip!!)ut!!)rs!!)ut!!)lq!!)ip!!)utrr@WMci=")!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs82ljs8N*!s8N)ss8N)ts8N)qs8N)rs8N)us8E#ms8N)ns8N)m
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)=s8;rjrr<&trr<&rrr<&rrr<&qrr<&rrr<&srr<&g
+rr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&trr<&srr<&r
+rr<&lrr<&rrr<&urr<&rrr<&trr<&srr<&rrr<&qrr<&rrr<&srrW9$rrDlp!!)ip!!)rs!!%TM
+ci="3!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs82ljs8N*!s8N)ss8N)ts8N)qs8N)rs8N)us8E#ms8N)ns8N)m
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)=s8;rjrr<&trr<&rrr<&rrr<&qrr<&rrr<&srr<&g
+rr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&trr<&srr<&r
+rr<&lrr<&rrr<&urr<&rrr<&trr<&srr<&rrr<&qrr<&rrr<&srrW9$rrDlp!!)ip!!)rs!!%TM
+ci="/!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs82ljs8N*!s8N)ss8N)ts8N)qs8N)rs8N)us8E#ms8N)ns8N)m
+s8N)ts8N)ms8N)ss8N)rs8N*!s8N)ts8N)=s8;rjrr<&trr<&rrr<&rrr<&qrr<&rrr<&srr<&g
+rr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&rrr<&srr<&prr<&rrr<&trr<&srr<&r
+rr<&lrr<&rrr<&urr<&rrr<&trr<&srr<&rrr<&qrr<&rrr<&srrW9$rrDlp!!)ip!!)rs!!%TM
+ci=")!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N*!rr<&ss7lZps8N)ms8N)qs8N)rs8N)us8N)ms8N)os8N)r
+s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rrW9$rrDoqqZ-Tp!!)Zk!!)lq!!)or!!)rs!!)Ng
+!!)lq!!)rs!!)ip!!)or!!)lq!!)fo!!)cn!!)lqq#L?m!!)ipq#LBn!!)rs!!)or!!)]l!!)cn
+!!)or!!)ut!!)rs!!)or!!)lqq#L<lrrDio!!)forW%NLbl@\0!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N*!rr<&ss7lZps8N)ms8N)qs8N)rs8N)us8N)ms8N)os8N)r
+s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rrW9$rrDoqqZ-Tp!!)Zk!!)lq!!)or!!)rs!!)Ng
+!!)lq!!)rs!!)ip!!)or!!)lq!!)fo!!)cn!!)lqq#L?m!!)ipq#LBn!!)rs!!)or!!)]l!!)cn
+!!)or!!)ut!!)rs!!)or!!)lqq#L<lrrDio!!)forW%NLbl@\,!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N*!rr<&ss7lZps8N)ms8N)qs8N)rs8N)us8N)ms8N)os8N)r
+s7lZns8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rrW9$rrDoqqZ-Tp!!)Zk!!)lq!!)or!!)rs!!)Ng
+!!)lq!!)rs!!)ip!!)or!!)lq!!)fo!!)cn!!)lqq#L?m!!)ipq#LBn!!)rs!!)or!!)]l!!)cn
+!!)or!!)ut!!)rs!!)or!!)lqq#L<lrrDio!!)forW%NLbl@\&!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs8N)qs7cTos8N)ms8N)qs8N)rs8N)us8N)ms8N)ps8N)rs7cTm
+s8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rr<&orr<&srr<&trr<&krr<&qrr<&rrr<&srr<&grr<&q
+rr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&prr<&mrr<&srr<&rrr<&lrr<&nrr<&r
+rr<&trr<&srr<&rrr<&qrr<&ks8N)orr<&ls8N(Ms3CZDm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs8N)qs7cTos8N)ms8N)qs8N)rs8N)us8N)ms8N)ps8N)rs7cTm
+s8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rr<&orr<&srr<&trr<&krr<&qrr<&rrr<&srr<&grr<&q
+rr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&prr<&mrr<&srr<&rrr<&lrr<&nrr<&r
+rr<&trr<&srr<&rrr<&qrr<&ks8N)orr<&ls8N(Ms3CZDklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs8N)qs7cTos8N)ms8N)qs8N)rs8N)us8N)ms8N)ps8N)rs7cTm
+s8N)ms8N)ss8N)rs8N*!s8N)ts8N)=rr<&orr<&srr<&trr<&krr<&qrr<&rrr<&srr<&grr<&q
+rr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&prr<&mrr<&srr<&rrr<&lrr<&nrr<&r
+rr<&trr<&srr<&rrr<&qrr<&ks8N)orr<&ls8N(Ms3CZDirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)m
+s8N)qs8N)us8N*!s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)=rr<&orr<&srr<&t
+rr<&krr<&qrr<&rrr<&srr<&grr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&p
+rr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&trr<&srr<&rrr<&qrr<&lrrW9$rrDlp!!)ip!!)rs
+!!%TMci="3!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)m
+s8N)qs8N)us8N*!s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)=rr<&orr<&srr<&t
+rr<&krr<&qrr<&rrr<&srr<&grr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&p
+rr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&trr<&srr<&rrr<&qrr<&lrrW9$rrDlp!!)ip!!)rs
+!!%TMci="/!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8N)qs8N)ss8N*!s8E#ss8E#ts8N)ts8N'!s8E#ss8E#ts8N)m
+s8N)qs8N)us8N*!s8N)ss8N)ts8N)ts8N)ss8N)ss8E#ss8E#us8N)ts8N)=rr<&orr<&srr<&t
+rr<&krr<&qrr<&rrr<&srr<&grr<&qrr<&srr<&prr<&rrr<&qrr<&orr<&nrr<&qrr<&lrr<&p
+rr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&trr<&srr<&rrr<&qrr<&lrrW9$rrDlp!!)ip!!)rs
+!!%TMci=")!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7u`os7ZNns7cTns7lZps7lZps7lZns7lZos7lZps7ZNms7lZp
+s7lZos7lZps8;rts8;r<rr<&orr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&trr<&rrr<&grr<&q
+rr<&srr<&orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&t
+rr<&prr<&ts8N)trr<&trr<&srr<&srr<&rrr<&trr<&urr<&ts8N)trr<&trr<&qrr<&trr<&u
+s8N)trr<&rs8N(Ms4@;Mm/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7u`os7ZNns7cTns7lZps7lZps7lZns7lZos7lZps7ZNms7lZp
+s7lZos7lZps8;rts8;r<rr<&orr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&trr<&rrr<&grr<&q
+rr<&srr<&orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&t
+rr<&prr<&ts8N)trr<&trr<&srr<&srr<&rrr<&trr<&urr<&ts8N)trr<&trr<&qrr<&trr<&u
+s8N)trr<&rs8N(Ms4@;MklK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7u`os7ZNns7cTns7lZps7lZps7lZns7lZos7lZps7ZNms7lZp
+s7lZos7lZps8;rts8;r<rr<&orr<&ts8N)srr<&ts8N)rrr<&trr<&urr<&trr<&rrr<&grr<&q
+rr<&srr<&orr<&ts8N)qrr<&orr<&nrr<&prr<&ts8N)srr<&orr<&ts8N)trr<&srr<&rrr<&t
+rr<&prr<&ts8N)trr<&trr<&srr<&srr<&rrr<&trr<&urr<&ts8N)trr<&trr<&qrr<&trr<&u
+s8N)trr<&rs8N(Ms4@;MirR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts7u`ns82iss8E#ts8)fns82los8;rrs7lZns7lZos7lZos82is
+s8E#ss82lqs7lZms8;rrs8;rts8;r=s8;rns8;ots8E#ss8;rms8;rqs8;rqs7u`is7u`ps8E#t
+s8E#ns8;p!rr<&us7u`os7u`os7u`ns8;rqs7u`ms8;rqs8E#ts8E#qs8;rls8;ros8;rqs8E#t
+s8E#qs8;rqs8;rqs8E#us8E#ps8;rrrrE-"r;c]orr@WMfDkj;!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts7u`ns82iss8E#ts8)fns82los8;rrs7lZns7lZos7lZos82is
+s8E#ss82lqs7lZms8;rrs8;rts8;r=s8;rns8;ots8E#ss8;rms8;rqs8;rqs7u`is7u`ps8E#t
+s8E#ns8;p!rr<&us7u`os7u`os7u`ns8;rqs7u`ms8;rqs8E#ts8E#qs8;rls8;ros8;rqs8E#t
+s8E#qs8;rqs8;rqs8E#us8E#ps8;rrrrE-"r;c]orr@WMfDkj7!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts7u`ns82iss8E#ts8)fns82los8;rrs7lZns7lZos7lZos82is
+s8E#ss82lqs7lZms8;rrs8;rts8;r=s8;rns8;ots8E#ss8;rms8;rqs8;rqs7u`is7u`ps8E#t
+s8E#ns8;p!rr<&us7u`os7u`os7u`ns8;rqs7u`ms8;rqs8E#ts8E#qs8;rls8;ros8;rqs8E#t
+s8E#qs8;rqs8;rqs8E#us8E#ps8;rrrrE-"r;c]orr@WMfDkj1!Q-jH~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m?%AI!9!nW!9!nV!.k0Js8N(Ms+14*s8MBdeieN~>
+!BU8[l&brE!9!nW!9!nV!.k0Js8N(Ms+14*s8M6`c8pI~>
+!B:&Xj,j<?!9!nW!9!nV!.k0Js8N(Ms+14*s8M$Z_`*)~>
+!BpJ^mFqU=!!<0#!<)rr!!E6$!<;lqdJs1GqZ$9inc/Uhi;`cVcN!hC!WN/Srr<&Xrr<%srr<&q
+rr<&crr<&3rr<%Ms1n[6m/bd$J,~>
+!BU8[l.Z19!!<0#!<)rr!!E6$!<;lqdJs1GqZ$9inc/Uhi;`cVcN!hC!WN/Srr<&Xrr<%srr<&q
+rr<&crr<&3rr<%Ms1n[6klK'jJ,~>
+!B:&Xj4aP3!!<0#!<)rr!!E6$!<;lqdJs1GqZ$9inc/Uhi;`cVcN!hC!WN/Srr<&Xrr<%srr<&q
+rr<&crr<&3rr<%Ms1n[6irR%VJ,~>
+!BpJ^mHsrH!;ull!<<)o!!*&o!7LoI!;c`i!6tQD!7:cG!<)rt!8IMR!9*qX!2ohs!;c]q!:9^c
+!5/=3!.k0cs8MBdeieN~>
+!BU8[l0\ND!;ull!<<)o!!*&o!7LoI!;c`i!6tQD!7:cG!<)rt!8IMR!9*qX!2ohs!;c]q!:9^c
+!5/=3!.k0cs8M6`c8pI~>
+!B:&Xj6cm>!;ull!<<)o!!*&o!7LoI!;c`i!6tQD!7:cG!<)rt!8IMR!9*qX!2ohs!;c]q!:9^c
+!5/=3!.k0cs8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!<<*!!<)rs!<<*!!<)rt!<)ro!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo
+!<)rt!!*&t!<<)u!<3#r!;ZZn!<)rs!!*&t!;ulq!!<0#!<)ro!8IMR!;lcr!8IMR!9*qX!2ohs
+!1s2j!.k0cs8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!<<*!!<)rs!<<*!!<)rt!<)ro!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo
+!<)rt!!*&t!<<)u!<3#r!;ZZn!<)rs!!*&t!;ulq!!<0#!<)ro!8IMR!;lcr!8IMR!9*qX!2ohs
+!1s2j!.k0cs8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!<<*!!<)rs!<<*!!<)rt!<)ro!;QTk!<3#t!!*&t!;ulq!!<0#!;QTo
+!<)rt!!*&t!<<)u!<3#r!;ZZn!<)rs!!*&t!;ulq!!<0#!<)ro!8IMR!;lcr!8IMR!9*qX!2ohs
+!1s2j!.k0cs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)rs8N'#rr<&rs8N*!s8N)ss8N*!s7lZjs7lZps7cTns7lZi
+s8N*!rr`?%!!*&n!<<)s!;lfl!<<)o!<3#o!<3#o!8RSS!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq
+!;c`o!!3*"rVu]op](0l!WN/ts8;rrs8N'2rr<'!rr<'!rr<'!!!*'!!!)rsr;ccqrr<'!r;cQk
+r;Zlu!;ulr!;lfq!<3#t!<)rs!;ZZn!!3*"r;Z]qr;Z`r!<<#uqu?Tp!WN/os8;rps7u`ns8;ou
+rr@WMci="3!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)rs8N'#rr<&rs8N*!s8N)ss8N*!s7lZjs7lZps7cTns7lZi
+s8N*!rr`?%!!*&n!<<)s!;lfl!<<)o!<3#o!<3#o!8RSS!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq
+!;c`o!!3*"rVu]op](0l!WN/ts8;rrs8N'2rr<'!rr<'!rr<'!!!*'!!!)rsr;ccqrr<'!r;cQk
+r;Zlu!;ulr!;lfq!<3#t!<)rs!;ZZn!!3*"r;Z]qr;Z`r!<<#uqu?Tp!WN/os8;rps7u`ns8;ou
+rr@WMci="/!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)rs8N'#rr<&rs8N*!s8N)ss8N*!s7lZjs7lZps7cTns7lZi
+s8N*!rr`?%!!*&n!<<)s!;lfl!<<)o!<3#o!<3#o!8RSS!;HNm!!*&u!;lfp!;c`o!;lfm!;ulq
+!;c`o!!3*"rVu]op](0l!WN/ts8;rrs8N'2rr<'!rr<'!rr<'!!!*'!!!)rsr;ccqrr<'!r;cQk
+r;Zlu!;ulr!;lfq!<3#t!<)rs!;ZZn!!3*"r;Z]qr;Z`r!<<#uqu?Tp!WN/os8;rps7u`ns8;ou
+rr@WMci=")!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)os8N)ns8N)ss8N*!s8N)ts8N)ps8N)ts8N)us8E#ts8N*!
+s8E#ts8E#ns82los8;rts8N)ss8N)ss8E#ss8E#us8E#ts8N*!s8E#ts8E#ts8N)ts8N)Srr<&l
+s8N)urr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&srr<&ts8N)rrr<&krr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rsJi,rr<'!rr<'!rrE&u!!)ut!!)rsrrE#t!!)fo!!)utrrDoq!!)lq!!)rs
+!!)lq!!)lq!!)utrrE#t!!)ut!!)orrrE&u!!)ut!!)utrrDio!!)ut!!)lq!!)ip!!)utrr@WM
+ci="3!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)os8N)ns8N)ss8N*!s8N)ts8N)ps8N)ts8N)us8E#ts8N*!
+s8E#ts8E#ns82los8;rts8N)ss8N)ss8E#ss8E#us8E#ts8N*!s8E#ts8E#ts8N)ts8N)Srr<&l
+s8N)urr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&srr<&ts8N)rrr<&krr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rsJi,rr<'!rr<'!rrE&u!!)ut!!)rsrrE#t!!)fo!!)utrrDoq!!)lq!!)rs
+!!)lq!!)lq!!)utrrE#t!!)ut!!)orrrE&u!!)ut!!)utrrDio!!)ut!!)lq!!)ip!!)utrr@WM
+ci="/!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)os8N)ns8N)ss8N*!s8N)ts8N)ps8N)ts8N)us8E#ts8N*!
+s8E#ts8E#ns82los8;rts8N)ss8N)ss8E#ss8E#us8E#ts8N*!s8E#ts8E#ts8N)ts8N)Srr<&l
+s8N)urr<&trr<&trr<&srr<&trr<&qrr<&prr<&trr<&srr<&ts8N)rrr<&krr<&ts8N)trr<&t
+rr<&ts8N*!s8N*!rsJi,rr<'!rr<'!rrE&u!!)ut!!)rsrrE#t!!)fo!!)utrrDoq!!)lq!!)rs
+!!)lq!!)lq!!)utrrE#t!!)ut!!)orrrE&u!!)ut!!)utrrDio!!)ut!!)lq!!)ip!!)utrr@WM
+ci=")!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)os8N)ns8N)ss8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)o
+s82los8E#ms8N)ss8N)rs8N*!s8N)ts8N*!s8N)ss8N)us8;rMrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&trr<&srr<&rrr<&lrr<&rrr<&urr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u
+!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;uis
+!;QQo!;uis!;ZWp!;lcr!;lcr!;c]q!;lcr!.k0rs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)os8N)ns8N)ss8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)o
+s82los8E#ms8N)ss8N)rs8N*!s8N)ts8N*!s8N)ss8N)us8;rMrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&trr<&srr<&rrr<&lrr<&rrr<&urr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u
+!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;uis
+!;QQo!;uis!;ZWp!;lcr!;lcr!;c]q!;lcr!.k0rs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)os8N)ns8N)ss8N*!s8;rds8N)us8N)ts8N*!s8N)ss8N)o
+s82los8E#ms8N)ss8N)rs8N*!s8N)ts8N*!s8N)ss8N)us8;rMrr<&lrr<&prr<&rrr<&orr<&q
+rr<&qrr<&rrr<&trr<&srr<&rrr<&lrr<&rrr<&urr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u
+!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;c]q!;uis!<2uu!;lcr!;uis
+!;QQo!;uis!;ZWp!;lcr!;lcr!;c]q!;lcr!.k0rs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)us7lZhs8N)ss8N)us8)fks7lZos8N)ts8N*!s8N)ss8N)o
+s8N*!rr<&rs8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)ts8)fNrr<&ss8;rsrr<&ps7lZns8)fm
+rr<&qs7lZms8E#nrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;ZZo!;lcr!;lcr!;uis!;HNm!;?Hg!;lcr!;c]q
+!.k0ks8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)us7lZhs8N)ss8N)us8)fks7lZos8N)ts8N*!s8N)ss8N)o
+s8N*!rr<&rs8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)ts8)fNrr<&ss8;rsrr<&ps7lZns8)fm
+rr<&qs7lZms8E#nrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;ZZo!;lcr!;lcr!;uis!;HNm!;?Hg!;lcr!;c]q
+!.k0ks8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)us7lZhs8N)ss8N)us8)fks7lZos8N)ts8N*!s8N)ss8N)o
+s8N*!rr<&rs8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)ts8)fNrr<&ss8;rsrr<&ps7lZns8)fm
+rr<&qs7lZms8E#nrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;ZWp!<2uu!;ZWp!;ZZo!;lcr!;lcr!;uis!;HNm!;?Hg!;lcr!;c]q
+!.k0ks8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)us7lZhs8N)ss8N)ss82lns7cTns8N)ts8N*!s8N)ss8N)o
+s8N)os8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)rs82lPrr<&qrr<&trr<&prr<&nrr<&srr<&q
+rr<&qrr<&is8N)qrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&ms8N)trr<&rrr<&srr<&ks8N)orr<&krr<&qrr<%M
+s2b6>m/bd$J,~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)us7lZhs8N)ss8N)ss82lns7cTns8N)ts8N*!s8N)ss8N)o
+s8N)os8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)rs82lPrr<&qrr<&trr<&prr<&nrr<&srr<&q
+rr<&qrr<&is8N)qrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&ms8N)trr<&rrr<&srr<&ks8N)orr<&krr<&qrr<%M
+s2b6>klK'jJ,~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)us7lZhs8N)ss8N)ss82lns7cTns8N)ts8N*!s8N)ss8N)o
+s8N)os8N)ms8N)ss7ZNns8N)ts8N*!s8N)ss8N)rs82lPrr<&qrr<&trr<&prr<&nrr<&srr<&q
+rr<&qrr<&is8N)qrr<&lrr<&nrr<&rrr<&urr<&urr<&urrW9$rrE&u!!*#u!s&B$!;lcr!<)ot
+!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&ms8N)trr<&rrr<&srr<&ks8N)orr<&krr<&qrr<%M
+s2b6>irR%VJ,~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ss8N*!s8N)ss8N*!s8N)ts8N)us8N)ts8N)qs8N)ss8N)u
+s8N)ts8N*!s8E#ts8E#ns8N)os8N)ms8N)ss8E#ns8N)ts8N*!s8E#ts8E#ts8N)ts8N)Rrr<&r
+rr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&urr<&urr<&u
+rrW9$rrE&u!!*#u!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&qrr<&srr<&u
+rr<&rrr<&srr<&orr<&srr<&prr<&krr<&qrr<%Ms2b6>m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ss8N*!s8N)ss8N*!s8N)ts8N)us8N)ts8N)qs8N)ss8N)u
+s8N)ts8N*!s8E#ts8E#ns8N)os8N)ms8N)ss8E#ns8N)ts8N*!s8E#ts8E#ts8N)ts8N)Rrr<&r
+rr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&urr<&urr<&u
+rrW9$rrE&u!!*#u!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&qrr<&srr<&u
+rr<&rrr<&srr<&orr<&srr<&prr<&krr<&qrr<%Ms2b6>klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ss8N*!s8N)ss8N*!s8N)ts8N)us8N)ts8N)qs8N)ss8N)u
+s8N)ts8N*!s8E#ts8E#ns8N)os8N)ms8N)ss8E#ns8N)ts8N*!s8E#ts8E#ts8N)ts8N)Rrr<&r
+rr<&trr<&prr<&nrr<&srr<&qrr<&qrr<&mrr<&srr<&rrr<&lrr<&nrr<&rrr<&urr<&urr<&u
+rrW9$rrE&u!!*#u!s&B$!;lcr!<)ot!;uis!;ZWp!;lcr!;c]q!;QQq!<3&orr<&qrr<&srr<&u
+rr<&rrr<&srr<&orr<&srr<&prr<&krr<&qrr<%Ms2b6>irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7cTos7cQos7cTns7lZks7ZKns8;rts8;rts7cTks7u`os7lZn
+s7lZos7lZps8;rts8;rts7cTos7lZLs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)ts8N)trr<&rrr<&trr<&prr<&ts8N)trr<&trr<&trr<&urr<&urrW9$rrE&u!!*#u
+!!*#u!!)ut!!)rs!!)rs!!)fo!!)utrrDoq!!)cn!!)cn!!)lqrrE#t!!)ut!!)ut!!)or!!)fo
+rrE#t!!)fo!!)utrrDrr!!)ut!!*#u!!)utrrDrrrrDiorr@WMirB#F!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7cTos7cQos7cTns7lZks7ZKns8;rts8;rts7cTks7u`os7lZn
+s7lZos7lZps8;rts8;rts7cTos7lZLs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)ts8N)trr<&rrr<&trr<&prr<&ts8N)trr<&trr<&trr<&urr<&urrW9$rrE&u!!*#u
+!!*#u!!)ut!!)rs!!)rs!!)fo!!)utrrDoq!!)cn!!)cn!!)lqrrE#t!!)ut!!)ut!!)or!!)fo
+rrE#t!!)fo!!)utrrDrr!!)ut!!*#u!!)utrrDrrrrDiorr@WMirB#B!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7cTos7cQos7cTns7lZks7ZKns8;rts8;rts7cTks7u`os7lZn
+s7lZos7lZps8;rts8;rts7cTos7lZLs8N)trr<&srr<&orr<&ts8N)urr<&ts8N)qrr<&trr<&u
+rr<&ts8N)ts8N)trr<&rrr<&trr<&prr<&ts8N)trr<&trr<&trr<&urr<&urrW9$rrE&u!!*#u
+!!*#u!!)ut!!)rs!!)rs!!)fo!!)utrrDoq!!)cn!!)cn!!)lqrrE#t!!)ut!!)ut!!)or!!)fo
+rrE#t!!)fo!!)utrrDrr!!)ut!!*#u!!)utrrDrrrrDiorr@WMirB#<!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&qs8)fos82lrs7u`ns7u`js82iss8Duus8;rts8;rss8;ots8E#q
+s7u`os7lZns7lZms8)frs8;rts8;rss8;ots8E#us7u`Js8;rrs7u`ms8;rps8;ots8E#qs8;rq
+s8;rprrE-"r;cZnr;cTlr;c]or;cfrrW)uurrE*!quHcsrrE*!rrE&ur;ccqrW)rtrW)`nr;Zp!
+!!*#uq>gBl!!)lqq>gKo!<E/u!;lfp!;uln!;uit!<;utpAb'kq#C9mr;Z]qq>^Hpq#C?oJcFa0
+rp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&qs8)fos82lrs7u`ns7u`js82iss8Duus8;rts8;rss8;ots8E#q
+s7u`os7lZns7lZms8)frs8;rts8;rss8;ots8E#us7u`Js8;rrs7u`ms8;rps8;ots8E#qs8;rq
+s8;rprrE-"r;cZnr;cTlr;c]or;cfrrW)uurrE*!quHcsrrE*!rrE&ur;ccqrW)rtrW)`nr;Zp!
+!!*#uq>gBl!!)lqq>gKo!<E/u!;lfp!;uln!;uit!<;utpAb'kq#C9mr;Z]qq>^Hpq#C?oJcFa0
+rojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&qs8)fos82lrs7u`ns7u`js82iss8Duus8;rts8;rss8;ots8E#q
+s7u`os7lZns7lZms8)frs8;rts8;rss8;ots8E#us7u`Js8;rrs7u`ms8;rps8;ots8E#qs8;rq
+s8;rprrE-"r;cZnr;cTlr;c]or;cfrrW)uurrE*!quHcsrrE*!rrE&ur;ccqrW)rtrW)`nr;Zp!
+!!*#uq>gBl!!)lqq>gKo!<E/u!;lfp!;uln!;uit!<;utpAb'kq#C9mr;Z]qq>^Hpq#C?oJcFa0
+ro4$s2h1~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!.k0as8N)Is8N)Ns8N)Ys8;rPs8;qKs+14Ks8MBdeieN~>
+!BU8[l+6op!.k0as8N)Is8N)Ns8N)Ys8;rPs8;qKs+14Ks8M6`c8pI~>
+!B:&Xj1>9j!.k0as8N)Is8N)Ns8N)Ys8;rPs8;qKs+14Ks8M$Z_`*)~>
+!BpJ^mG7g<!9X=]!.k1.s8;rss8;r^rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Srr<&3rr<%Ms1eU5
+m/bd$J,~>
+!BU8[l.uC8!9X=]!.k1.s8;rss8;r^rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Srr<&3rr<%Ms1eU5
+klK'jJ,~>
+!B:&Xj5'b2!9X=]!.k1.s8;rss8;r^rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Srr<&3rr<%Ms1eU5
+irR%VJ,~>
+!BpJ^mHsrH!<)rm!9aC^!.k1-rr<&qrr<&_rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Trr<&2rr<%M
+s1eU5m/bd$J,~>
+!BU8[l0\ND!<)rm!9aC^!.k1-rr<&qrr<&_rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Trr<&2rr<%M
+s1eU5klK'jJ,~>
+!B:&Xj6cm>!<)rm!9aC^!.k1-rr<&qrr<&_rr<&[rr<&orr<&prr<&Mrr<&Vrr<&Trr<&2rr<%M
+s1eU5irR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!;c`o!<)rn!;uln!.k1=rr<&urr<&urr<&_rr<&Qrr<&prr<&M
+rr<&Vrr<&Trr<&2rr<%Ms1eU5m/bd$J,~>
+!BU8[l0\ND!;uls!<)rs!<)rr!;c`o!<)rn!;uln!.k1=rr<&urr<&urr<&_rr<&Qrr<&prr<&M
+rr<&Vrr<&Trr<&2rr<%Ms1eU5klK'jJ,~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!;c`o!<)rn!;uln!.k1=rr<&urr<&urr<&_rr<&Qrr<&prr<&M
+rr<&Vrr<&Trr<&2rr<%Ms1eU5irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZps7lZns7lYGs6osf!<2uu!<2uu!<)rr
+!;ulr!!*&u!;uiu!<<)t!;ZZo!<3#t!<)rs!;c`l!<)ou!<;utpAb'kr;Zcs!<;utqu?Tp!WN/o
+s8;ourrDusr;cWm!!)orrW)rtrW)osr;cQkq>gHnr;ccqrVururW)`nrVururW)iqr;c]or;c`p
+q>gHnr;Zlu!.k0qs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZps7lZns7lYGs6osf!<2uu!<2uu!<)rr
+!;ulr!!*&u!;uiu!<<)t!;ZZo!<3#t!<)rs!;c`l!<)ou!<;utpAb'kr;Zcs!<;utqu?Tp!WN/o
+s8;ourrDusr;cWm!!)orrW)rtrW)osr;cQkq>gHnr;ccqrVururW)`nrVururW)iqr;c]or;c`p
+q>gHnr;Zlu!.k0qs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZos7lZps7lZns7lYGs6osf!<2uu!<2uu!<)rr
+!;ulr!!*&u!;uiu!<<)t!;ZZo!<3#t!<)rs!;c`l!<)ou!<;utpAb'kr;Zcs!<;utqu?Tp!WN/o
+s8;ourrDusr;cWm!!)orrW)rtrW)osr;cQkq>gHnr;ccqrVururW)`nrVururW)iqr;c]or;c`p
+q>gHnr;Zlu!.k0qs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ps8N)ts8N(Ms6osf
+!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em!;uis!;c]q!;QQo!;ZZp!<)ot!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;6?l
+!;ZWp!<)ot!;lfr!<2uu!;HNn!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)rt!.k0qs8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ps8N)ts8N(Ms6osf
+!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em!;uis!;c]q!;QQo!;ZZp!<)ot!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;6?l
+!;ZWp!<)ot!;lfr!<2uu!;HNn!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)rt!.k0qs8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ps8N)ts8N(Ms6osf
+!<2uu!<2uu!<2uu!<)ot!;lfr!<2uu!<)ot!<2uu!;?Em!;uis!;c]q!;QQo!;ZZp!<)ot!;QQo
+!<)ot!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;ZWp!;c]q!;uis!<)ot!<)ot!;6?l
+!;ZWp!<)ot!;lfr!<2uu!;HNn!<2uu!<)ot!<)ot!;uis!<)ot!;c]q!;ZWp!<)rt!.k0qs8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZps8N)rs8N'#rr<&rs8N)us8N)ps8;qKs6BUg!<3'!!<3&u
+rr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djr;Q`sr;Q`srr2ru
+qu6Wrq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2rurVlitqu6WrpAY*mqYpNqqu6Wrr;Q`so)A[i
+q>UEpqu6Wrrr2ruqu6Wrqu6Wrq>UEpr;Q`sJcF$qrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZps8N)rs8N'#rr<&rs8N)us8N)ps8;qKs6BUg!<3'!!<3&u
+rr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djr;Q`sr;Q`srr2ru
+qu6Wrq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2rurVlitqu6WrpAY*mqYpNqqu6Wrr;Q`so)A[i
+q>UEpqu6Wrrr2ruqu6Wrqu6Wrq>UEpr;Q`sJcF$qrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZps8N)rs8N'#rr<&rs8N)us8N)ps8;qKs6BUg!<3'!!<3&u
+rr<&rrr<&srr<&orrW9$rrD`l"p"]'!<<'!qYpNqq#:<oq>UEpr;Q`soD\djr;Q`sr;Q`srr2ru
+qu6Wrq#:<or;Q`srr2ruqu6WrqYpNqq>UEprr2rurVlitqu6WrpAY*mqYpNqqu6Wrr;Q`so)A[i
+q>UEpqu6Wrrr2ruqu6Wrqu6Wrq>UEpr;Q`sJcF$qro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss7u`ps8N)rs8N'#rr<&rs8N)us8N)os8)eIs6]gj!<3'!!<3&u
+rr<&rrr<&srr<&os8E#jrrrK'rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;uis!;uis!<2uu!;lcr
+!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;?Em!;c]q!;lcr!;uis!:p-i!;ZWp!;lcr!<2uu
+!;lcr!;lcr!;QTn!.k0ns8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss7u`ps8N)rs8N'#rr<&rs8N)us8N)os8)eIs6]gj!<3'!!<3&u
+rr<&rrr<&srr<&os8E#jrrrK'rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;uis!;uis!<2uu!;lcr
+!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;?Em!;c]q!;lcr!;uis!:p-i!;ZWp!;lcr!<2uu
+!;lcr!;lcr!;QTn!.k0ns8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss7u`ps8N)rs8N'#rr<&rs8N)us8N)os8)eIs6]gj!<3'!!<3&u
+rr<&rrr<&srr<&os8E#jrrrK'rrE*!!;c]q!;QQo!;ZWp!;uis!;QTk!;uis!;uis!<2uu!;lcr
+!;HNm!;lcr!;lcr!;c]q!;ZWp!<2uu!<)rn!;?Em!;c]q!;lcr!;uis!:p-i!;ZWp!;lcr!<2uu
+!;lcr!;lcr!;QTn!.k0ns8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N'#rr<&rs8N)us8N)ms82kJs6fmk!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`sr;Q`s
+r;Q`srr2ruqu6Wro`+pkrVlitqu6WrqYpNqq#:BqrrDus!!)Kf!!)lq!!)or!!)rs!!)Ti!!)ip
+!!)or!!*#u!!)or!!)or!!)]lrr@WMc2[e1!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N'#rr<&rs8N)us8N)ms82kJs6fmk!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`sr;Q`s
+r;Q`srr2ruqu6Wro`+pkrVlitqu6WrqYpNqq#:BqrrDus!!)Kf!!)lq!!)or!!)rs!!)Ti!!)ip
+!!)or!!*#u!!)or!!)or!!)]lrr@WMc2[e-!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)us8E#us8N)rs8N'#rr<&rs8N)us8N)ms82kJs6fmk!<3'!
+!<3&urr<&rrr<&srr<&orrW9$rrD`l"p"Z'rrE'!qYpNqq#:<oq>UEpr;Q`sq>UEpr;Q`sr;Q`s
+r;Q`srr2ruqu6Wro`+pkrVlitqu6WrqYpNqq#:BqrrDus!!)Kf!!)lq!!)or!!)rs!!)Ti!!)ip
+!!)or!!*#u!!)or!!)or!!)]lrr@WMc2[e'!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ts8N*!s8N)ts8N(M
+s6fmk!<3'!!<3&urr<&rrr<&srr<&orr<&urr<&mrrrK'!<3'!!;c]q!;QQo!;ZWp!;uis!;ZWp
+!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;c]q!;QQq!<3&srr<&frr<&qrr<&r
+rr<&srr<&irr<&prr<&rrr<&urr<&rrr<&rrr<&prr<&srr<%Ms3CZDm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ts8N*!s8N)ts8N(M
+s6fmk!<3'!!<3&urr<&rrr<&srr<&orr<&urr<&mrrrK'!<3'!!;c]q!;QQo!;ZWp!;uis!;ZWp
+!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;c]q!;QQq!<3&srr<&frr<&qrr<&r
+rr<&srr<&irr<&prr<&rrr<&urr<&rrr<&rrr<&prr<&srr<%Ms3CZDklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N)ts8Duus8E#ss8Duus8E#ss8E#ts8N)ts8N*!s8N)ts8N(M
+s6fmk!<3'!!<3&urr<&rrr<&srr<&orr<&urr<&mrrrK'!<3'!!;c]q!;QQo!;ZWp!;uis!;ZWp
+!;uis!;uis!;uis!<2uu!;lcr!;QQo!;uis!<2uu!;lcr!;c]q!;QQq!<3&srr<&frr<&qrr<&r
+rr<&srr<&irr<&prr<&rrr<&urr<&rrr<&rrr<&prr<&srr<%Ms3CZDirR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZns7lZps7lYGs6]gd!<2uu!;uis!<)ot
+!;lcr!;QQo!<)ot!;?Em!<2uu!;ZWp!;QQo!<)ot!<2uu!;uis!;ZWp!<)rt!;uis!;uis!<)ot
+!<)rt!;QTo!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;?Em!;ZWp!<)ot!;lcr!:p-i!;QQo
+!<)ot!;uis!<)ot!;c]q!<)ot!<3#u!<)ot!;lfr!.k1$s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZns7lZps7lYGs6]gd!<2uu!;uis!<)ot
+!;lcr!;QQo!<)ot!;?Em!<2uu!;ZWp!;QQo!<)ot!<2uu!;uis!;ZWp!<)rt!;uis!;uis!<)ot
+!<)rt!;QTo!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;?Em!;ZWp!<)ot!;lcr!:p-i!;QQo
+!<)ot!;uis!<)ot!;c]q!<)ot!<3#u!<)ot!;lfr!.k1$s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8)frs8Duus7lZos7lZns7lZps7lYGs6]gd!<2uu!;uis!<)ot
+!;lcr!;QQo!<)ot!;?Em!<2uu!;ZWp!;QQo!<)ot!<2uu!;uis!;ZWp!<)rt!;uis!;uis!<)ot
+!<)rt!;QTo!<)ot!<)ot!<)ot!;ZWp!;HKn!;c]q!<)rt!;?Em!;ZWp!<)ot!;lcr!:p-i!;QQo
+!<)ot!;uis!<)ot!;c]q!<)ot!<3#u!<)ot!;lfr!.k1$s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8)frs8E#ts8;ros8;ros82lqs7u_Hs6Tac!<2uu!;lfp!;uln
+!<)rt!<3#s!;QQo!<2uu!;uln!;c`o!<3#t!<3#t!;ZZn!!*&u!<<)u!<3#t!<)rr!!<0#!;ZWq
+!<;utqu?Tpqu?KmqYpNqq>^BnpAashr;Z]qr;ZTnq#C0jqu?TpqZ$Koq#C9mrVllus8;ros8N(M
+s475Lm/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8)frs8E#ts8;ros8;ros82lqs7u_Hs6Tac!<2uu!;lfp!;uln
+!<)rt!<3#s!;QQo!<2uu!;uln!;c`o!<3#t!<3#t!;ZZn!!*&u!<<)u!<3#t!<)rr!!<0#!;ZWq
+!<;utqu?Tpqu?KmqYpNqq>^BnpAashr;Z]qr;ZTnq#C0jqu?TpqZ$Koq#C9mrVllus8;ros8N(M
+s475LklK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8)frs8E#ts8;ros8;ros82lqs7u_Hs6Tac!<2uu!;lfp!;uln
+!<)rt!<3#s!;QQo!<2uu!;uln!;c`o!<3#t!<3#t!;ZZn!!*&u!<<)u!<3#t!<)rr!!<0#!;ZWq
+!<;utqu?Tpqu?KmqYpNqq>^BnpAashr;Z]qr;ZTnq#C0jqu?TpqZ$Koq#C9mrVllus8;ros8N(M
+s475LirR%VJ,~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^mHsrH!.k0$s+13$s+143s8MBdeieN~>
+!BU8[l0\ND!.k0$s+13$s+143s8M6`c8pI~>
+!B:&Xj6cm>!.k0$s+13$s+143s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mB-Eg!;QTk!;uls!.k08s8;r>s8;qKs+14+s8MBdeieN~>
+!BU8[l)k!c!;QTk!;uls!.k08s8;r>s8;qKs+14+s8M6`c8pI~>
+!B:&Xj/r@]!;QTk!;uls!.k08s8;r>s8;qKs+14+s8M$Z_`*)~>
+!BpJ^mFqU=!!<0#!8IPR!;ZZk!;uls!:9a[!2BMm!;ulr!36&!!;HKn!;HKn!9a@^!:9^c!6kHC
+!;?Em!.k0>s8MBdeieN~>
+!BU8[l.Z19!!<0#!8IPR!;ZZk!;uls!:9a[!2BMm!;ulr!36&!!;HKn!;HKn!9a@^!:9^c!6kHC
+!;?Em!.k0>s8M6`c8pI~>
+!B:&Xj4aP3!!<0#!8IPR!;ZZk!;uls!:9a[!2BMm!;ulr!36&!!;HKn!;HKn!9a@^!:9^c!6kHC
+!;?Em!.k0>s8M$Z_`*)~>
+!BpJ^mHsrH!;ull!7CiH!9!nO!29Gm!;uls!3,tu!;QQo!;?Em!9a@^!:Bdd!6bBB!;?Em!.k0>
+s8MBdeieN~>
+!BU8[l0\ND!;ull!7CiH!9!nO!29Gm!;uls!3,tu!;QQo!;?Em!9a@^!:Bdd!6bBB!;?Em!.k0>
+s8M6`c8pI~>
+!B:&Xj6cm>!;ull!7CiH!9!nO!29Gm!;uls!3,tu!;QQo!;?Em!9a@^!:Bdd!6bBB!;?Em!.k0>
+s8M$Z_`*)~>
+!BpJ^mHsrH!;uls!<)rs!!*&u!!*&t!;lfp!;lfp!!<0#!<3#r!;lfl!<3#r!;c`o!!<0#!;c`q
+!<<*!!<<*!!!*&t!<<)t!!*&u!!*&t!;lfp!;lfm!6kHE!<3&urrN3#!2'8k!65$=!6bBB!.k02
+s8MBdeieN~>
+!BU8[l0\ND!;uls!<)rs!!*&u!!*&t!;lfp!;lfp!!<0#!<3#r!;lfl!<3#r!;c`o!!<0#!;c`q
+!<<*!!<<*!!!*&t!<<)t!!*&u!!*&t!;lfp!;lfm!6kHE!<3&urrN3#!2'8k!65$=!6bBB!.k02
+s8M6`c8pI~>
+!B:&Xj6cm>!;uls!<)rs!!*&u!!*&t!;lfp!;lfp!!<0#!<3#r!;lfl!<3#r!;c`o!!<0#!;c`q
+!<<*!!<<*!!!*&t!<<)t!!*&u!!*&t!;lfp!;lfm!6kHE!<3&urrN3#!2'8k!65$=!6bBB!.k02
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'!s7cTns7lZos7lZos82los7lZos82los7lZks8N*!
+s8N*!s8N'!s8;rts8;ots7cTns7lZos7lZ=rrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8;ou
+rrE&urr<'!r;c`pr;c]or;Zlu!;ulr!;c`l!;ulr!;ZZn!!3*"p](3mqu?Zr!<;utr;ZTnr;Z]q
+r;Z`r!<<#urr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bnr;Zcs!<;utJcE(Vrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'!s7cTns7lZos7lZos82los7lZos82los7lZks8N*!
+s8N*!s8N'!s8;rts8;ots7cTns7lZos7lZ=rrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8;ou
+rrE&urr<'!r;c`pr;c]or;Zlu!;ulr!;c`l!;ulr!;ZZn!!3*"p](3mqu?Zr!<;utr;ZTnr;Z]q
+r;Z`r!<<#urr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bnr;Zcs!<;utJcE(VrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'!s7cTns7lZos7lZos82los7lZos82los7lZks8N*!
+s8N*!s8N'!s8;rts8;ots7cTns7lZos7lZ=rrN3#!<3!"!<3&ts8;rqs8Duus8E#qs8;rjs8;ou
+rrE&urr<'!r;c`pr;c]or;Zlu!;ulr!;c`l!;ulr!;ZZn!!3*"p](3mqu?Zr!<;utr;ZTnr;Z]q
+r;Z`r!<<#urr;uu#6+Z's8N'!r;Z]qqu?Kmr;Z`rq>^Bnr;Zcs!<;utJcE(Vro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82los8E#ts8Duus8E#ss8Duus8E#ts8E#qs8N)ps8N)ns8N)s
+s8E#ts8E#ps8N*!s8N*!s8N*!s8N)ts8N)us8E#ts8Duus8E#ss8E#us8N)ts8N)Crs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&trr<&srr<&ts8N)q
+rr<&orr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&us8N*!s8N*!
+rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<%Ms0Vh*m/bd$J,~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82los8E#ts8Duus8E#ss8Duus8E#ts8E#qs8N)ps8N)ns8N)s
+s8E#ts8E#ps8N*!s8N*!s8N*!s8N)ts8N)us8E#ts8Duus8E#ss8E#us8N)ts8N)Crs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&trr<&srr<&ts8N)q
+rr<&orr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&us8N*!s8N*!
+rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<%Ms0Vh*klK'jJ,~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82los8E#ts8Duus8E#ss8Duus8E#ts8E#qs8N)ps8N)ns8N)s
+s8E#ts8E#ps8N*!s8N*!s8N*!s8N)ts8N)us8E#ts8Duus8E#ss8E#us8N)ts8N)Crs/W)rrE'!
+s8N)urr<&trr<&rs8N)urr<&trr<&trr<&nrr<&ts8N)ts8N)trr<&trr<&trr<&srr<&ts8N)q
+rr<&orr<&mrr<&qrr<&ts8N)lrr<&qs8N)trr<&rrr<&prr<&trr<&rs8N)urr<&us8N*!s8N*!
+rr<&urr<&trr<&qrr<&mrr<&qrr<&trr<&ss8N)trr<%Ms0Vh*irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ps8N)ns8N)s
+s8N)ss8N)ms8N)rs8N)ts8N)us8N)ss8N'#rr<&rs8N*!s8;r=rsJi,rrE'!s8N*!rrDrr!!)rs
+!!)ip!!)or!!)fo!!)rs!!)ut!!)or!s&B$!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr
+!;6?l!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0Ws8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ps8N)ns8N)s
+s8N)ss8N)ms8N)rs8N)ts8N)us8N)ss8N'#rr<&rs8N*!s8;r=rsJi,rrE'!s8N*!rrDrr!!)rs
+!!)ip!!)or!!)fo!!)rs!!)ut!!)or!s&B$!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr
+!;6?l!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0Ws8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`ps8N)ss8N'#rr<&rs8N'#rr<&ss8N)rs8N)ps8N)ns8N)s
+s8N)ss8N)ms8N)rs8N)ts8N)us8N)ss8N'#rr<&rs8N*!s8;r=rsJi,rrE'!s8N*!rrDrr!!)rs
+!!)ip!!)or!!)fo!!)rs!!)ut!!)or!s&B$!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr!;lcr
+!;6?l!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp!<2uu!<2uu!;ZWp!;c]q!;?Em!;lcr!;lcr
+!<)ot!;uis!.k0Ws8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82lss8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)fs8N)q
+s8N*!s8N)ts8N)ss8N'!s7ZNms8)f>rr<&urr<&urrW9$rrDrr!!)rs!!)ipq#L0hrW)fp!!)or
+!W`9#q#LEo!!)Wj!!)fo!!)`m!!)or!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u
+!!*#u!!*#uqZ-Km!!)`m!!)or!!)or!!)ut!!)rs!!%TM[/^-m!S0Da~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82lss8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)fs8N)q
+s8N*!s8N)ts8N)ss8N'!s7ZNms8)f>rr<&urr<&urrW9$rrDrr!!)rs!!)ipq#L0hrW)fp!!)or
+!W`9#q#LEo!!)Wj!!)fo!!)`m!!)or!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u
+!!*#u!!*#uqZ-Km!!)`m!!)or!!)or!!)ut!!)rs!!%TM[/^-i!R<`V~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82lss8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)fs8N)q
+s8N*!s8N)ts8N)ss8N'!s7ZNms8)f>rr<&urr<&urrW9$rrDrr!!)rs!!)ipq#L0hrW)fp!!)or
+!W`9#q#LEo!!)Wj!!)fo!!)`m!!)or!!)He!!)lq!!)rs!!)or!!)lq!!)or!!)rs!!)ip!!*#u
+!!*#u!!*#uqZ-Km!!)`m!!)or!!)or!!)ut!!)rs!!%TM[/^-c!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)f
+s8N)qs8N'#rr<&ss8N)ss8N'!s7ZNks82l@rr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)EdrrDus
+!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp
+!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+Wrp9a;4b*~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)f
+s8N)qs8N'#rr<&ss8N)ss8N'!s7ZNks82l@rr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)EdrrDus
+!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp
+!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+WrojI/3e.~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s8N)ss8N'!s7ZKprr<&ks8N)ps8N)ns8N)ss8N)f
+s8N)qs8N'#rr<&ss8N)ss8N'!s7ZNks82l@rr<&urr<&urrW9$rrDrr!!)rs!!)ip!!)EdrrDus
+!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr!;uis!;ZWp
+!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+Wro4$s2h1~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N*!s8E#ts8Duus8E#os8E#ss8E#rs8N)ps8N)ns8N)s
+s8E#ss8E#ms8N)ps8;rqs8E#ts8Duus8E#ns8N)ts8N)Crr<&qrrW9$rrDrr!!)rs!!)ip!!)Qh
+!!)rs!!)ut!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr
+!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+Wrp9a;4b*~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N*!s8E#ts8Duus8E#os8E#ss8E#rs8N)ps8N)ns8N)s
+s8E#ss8E#ms8N)ps8;rqs8E#ts8Duus8E#ns8N)ts8N)Crr<&qrrW9$rrDrr!!)rs!!)ip!!)Qh
+!!)rs!!)ut!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr
+!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+WrojI/3e.~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N*!s8E#ts8Duus8E#os8E#ss8E#rs8N)ps8N)ns8N)s
+s8E#ss8E#ms8N)ps8;rqs8E#ts8Duus8E#ns8N)ts8N)Crr<&qrrW9$rrDrr!!)rs!!)ip!!)Qh
+!!)rs!!)ut!!)or!s&B$!;HKn!;$3j!;QQo!;?Em!;lcr!:Kje!;c]q!;uis!;lcr!;c]q!;lcr
+!;uis!;ZWp!<2uu!<3!#!<<'!r;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sJcE+Wro4$s2h1~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTos7lZos7lZos7lZos7cTis8)fns8E#q
+s7lZos7lZos7lZ=rr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)os8N)trr<&ts8N)trr<&trr<&t
+s8N)trr<&ts8N)qrr<&orr<&mrr<&qrr<&ts8N)lrr<&qrr<&srr<&rrr<&prr<&trr<&rrr<&p
+rr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs!!)orrr@WM]`7uu!S0Da~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTos7lZos7lZos7lZos7cTis8)fns8E#q
+s7lZos7lZos7lZ=rr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)os8N)trr<&ts8N)trr<&trr<&t
+s8N)trr<&ts8N)qrr<&orr<&mrr<&qrr<&ts8N)lrr<&qrr<&srr<&rrr<&prr<&trr<&rrr<&p
+rr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs!!)orrr@WM]`7uq!R<`V~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZos7cTos7lZos7lZos7lZos7cTis8)fns8E#q
+s7lZos7lZos7lZ=rr<&qrr<&urr<&trr<&rrr<&orr<&ts8N)os8N)trr<&ts8N)trr<&trr<&t
+s8N)trr<&ts8N)qrr<&orr<&mrr<&qrr<&ts8N)lrr<&qrr<&srr<&rrr<&prr<&trr<&rrr<&p
+rr<&urr<&urrW9$rrE#trrDoq!!)ut!!)or!!)lq!!)ut!!)rs!!)rs!!)orrr@WM]`7uk!Q-jH~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rrs8N'!s8;rps8)fps8)fps7lZos7lZos7lZns8)fj
+s8)fns8N)qs8N'!s8;rps8)fqs7u`>s8;rss8;rss8;rqs7u`ms8;rkrrE-"r;ccq!<E/u!;lfp
+!;c`o!;lfm!<)ro!<)ro!;ulq!;?Hh!<3#t!<3#t!<3#p!;ulq!;uln!<3#t!<<*!!<<*!!<<)t
+!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!;uls!.k0_s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rrs8N'!s8;rps8)fps8)fps7lZos7lZos7lZns8)fj
+s8)fns8N)qs8N'!s8;rps8)fqs7u`>s8;rss8;rss8;rqs7u`ms8;rkrrE-"r;ccq!<E/u!;lfp
+!;c`o!;lfm!<)ro!<)ro!;ulq!;?Hh!<3#t!<3#t!<3#p!;ulq!;uln!<3#t!<<*!!<<*!!<<)t
+!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!;uls!.k0_s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rrs8N'!s8;rps8)fps8)fps7lZos7lZos7lZns8)fj
+s8)fns8N)qs8N'!s8;rps8)fqs7u`>s8;rss8;rss8;rqs7u`ms8;rkrrE-"r;ccq!<E/u!;lfp
+!;c`o!;lfm!<)ro!<)ro!;ulq!;?Hh!<3#t!<3#t!<3#p!;ulq!;uln!<3#t!<<*!!<<*!!<<)t
+!!*&u!;lfp!<)ro!;ulq!;ulr!<3#t!;uls!.k0_s8M$Z_`*)~>
+!BpJ^mHsrH!:g*h!2TYp!;c`q!.k1Arr<%Ms+13$s6fpdm/bd$J,~>
+!BU8[l0\ND!:g*h!2TYp!;c`q!.k1Arr<%Ms+13$s6fpdklK'jJ,~>
+!B:&Xj6cm>!:g*h!2TYp!;c`q!.k1Arr<%Ms+13$s6fpdirR%VJ,~>
+!BpJ^mHsrH!:g*h!2]_q!;ZZp!.k1Arr<%Ms+13$s6fpdm/bd$J,~>
+!BU8[l0\ND!:g*h!2]_q!;ZZp!.k1Arr<%Ms+13$s6fpdklK'jJ,~>
+!B:&Xj6cm>!:g*h!2]_q!;ZZp!.k1Arr<%Ms+13$s6fpdirR%VJ,~>
+!BpJ^mF)%4!3-"q!;ulp!.k1Crr<%Ms+13$s6fpdm/bd$J,~>
+!BU8[l-fV0!3-"q!;ulp!.k1Crr<%Ms+13$s6fpdklK'jJ,~>
+!B:&Xj3mu*!3-"q!;ulp!.k1Crr<%Ms+13$s6fpdirR%VJ,~>
+!BpJ^mF)%4!3-"q!;ulp!.k1Ds8;qKs+13$s7$'fm/bd$J,~>
+!BU8[l-fV0!3-"q!;ulp!.k1Ds8;qKs+13$s7$'fklK'jJ,~>
+!B:&Xj3mu*!3-"q!;ulp!.k1Ds8;qKs+13$s7$'firR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
