[Rcpp-commits] r3252 - pkg/RcppEigen/inst/doc

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Mon Oct 31 23:23:28 CET 2011


Author: dmbates
Date: 2011-10-31 23:23:27 +0100 (Mon, 31 Oct 2011)
New Revision: 3252

Modified:
   pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw
   pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf
Log:
More conversion of listings to the highlight style - not yet finished. Fix minor gliches.


Modified: pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw
===================================================================
--- pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw	2011-10-31 22:20:31 UTC (rev 3251)
+++ pkg/RcppEigen/inst/doc/RcppEigen-Intro.Rnw	2011-10-31 22:23:27 UTC (rev 3252)
@@ -24,6 +24,7 @@
 % Highlighting theme definition:
 \newcommand{\hlstd}[1]{\textcolor[rgb]{0,0,0}{#1}}
 \newcommand{\hlnum}[1]{\textcolor[rgb]{0,0,0}{#1}}
+\newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}
 \newcommand{\hlesc}[1]{\textcolor[rgb]{0.74,0.55,0.55}{#1}}
 %\newcommand{\hlstr}[1]{\textcolor[rgb]{0.74,0.55,0.55}{#1}}
 \newcommand{\hlstr}[1]{\textcolor[rgb]{0.90,0.15,0.15}{#1}}
@@ -125,7 +126,7 @@
 eigenvalue / eigenvector computations are used in many estimation and
 analysis routines. As such, libraries supporting linear algebra have long been
 provided by statistical programmers for different programming languages and
-environments. \proglang{C++}, one the central modern languages for numerical
+environments. \proglang{C++}, one of the central modern languages for numerical
 and statistical computing, can be extended particularly well due to its
 object-oriented nature, and numerous class libraries providing linear algebra
 routines have been written over the years.
@@ -231,17 +232,20 @@
 %
 %% Alternatively, use 'highlight --enclose-pre --no-doc --latex --style=emacs --syntax=C++'
 %% as the command invoked from C-u M-|
+%% For version 3.5 of highlight this should be
+%%  highlight --enclose-pre --no-doc --out-format=latex --syntax=C++
 %%
 %% keep one copy to redo later
 %%
 %% using Eigen::MatrixXd;
 %%
 \begin{quote}
-  \noindent
-  \ttfamily
-  \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlsym{::}\hlstd{MatrixXd}\hlsym{;}\hlstd{}\hspace*{\fill}\\
-  \mbox{}
-  \normalfont
+\noindent
+\ttfamily
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXd}\hlopt{;}\hlstd{}\hspace*{\fill}\\
+\mbox{}
+\normalfont
+\normalsize
 \end{quote}
 then one can use these names without the namespace qualifier.
 
@@ -322,7 +326,7 @@
 package \citep*{CRAN:inline} for \proglang{R} and its \pkg{RcppEigen}
 plugin provide a convenient way of developing and debugging the
 \proglang{C++} code.  For actual production code one generally
-incorporate the \proglang{C++} source code files in a package and
+incorporates the \proglang{C++} source code files in a package and
 include the line \code{LinkingTo: Rcpp, RcppEigen} in the package's
 \code{DESCRIPTION} file.  The
 \Sexpr{link("RcppEigen.package.skeleton")} function provides a quick
@@ -425,11 +429,28 @@
                     _["crossprod(B, C)"] = B.adjoint() * C);
 '
 @
-\begin{lstlisting}[frame=tb,caption={prodCpp: Product and cross-product of two matrices},label=prod]
-<<prodCppLst,results=tex,echo=FALSE>>=
-cat(prodCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={prodCpp: Product and cross-product of two matrices},label=prod]
+% <<prodCppLst,results=tex,echo=FALSE>>=
+% cat(prodCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+  \caption{prodCpp: Product and cross-product of two matrices}
+  \label{prod}
+  \begin{quote}
+\noindent
+\ttfamily
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+\hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXi}\hlopt{;}\hspace*{\fill}\\
+\hlstd{}\hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$}\hlstd{\ \ \ \ }\hlopt{}\hlstd{}\hlkwd{B}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{BB}\hlopt{));}\hspace*{\fill}\\
+\hlstd{}\hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$}\hlstd{\ \ \ \ }\hlopt{}\hlstd{}\hlkwd{C}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{CC}\hlopt{));}\hspace*{\fill}\\
+\hlstd{}\hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"B\ \%{*}\%\ C"}\hlstd{}\hlopt{{]}}\hlstd{\ \ \ \ \ \ \ \ \ }\hlopt{=\ }\hlstd{B\ }\hlopt{{*}\ }\hlstd{C}\hlopt{,}\hspace*{\fill}\\
+\hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"crossprod(B,\ C)"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{B}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()\ {*}\ }\hlstd{C}\hlopt{);}\hlstd{}\hspace*{\fill}\\
+\mbox{}
+\normalfont
+\normalsize
+  \end{quote}
+\end{figure}
 <<prod>>=
 fprod <- cxxfunction(signature(BB = "matrix", CC = "matrix"), prodCpp, "RcppEigen")
 B <- matrix(1:4, ncol=2); C <- matrix(6:1, nrow=2)
@@ -492,11 +513,35 @@
                     _["tcrossprod(A)"] = AAt);
 '
 @
-\begin{lstlisting}[frame=tb,caption={crossprodCpp: Cross-product and transposed cross-product of a single matrix},label=crossprod]
-<<crossprodCppLst,results=tex,echo=FALSE>>=
-cat(crossprodCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={crossprodCpp: Cross-product and transposed cross-product of a single matrix},label=crossprod]
+% <<crossprodCppLst,results=tex,echo=FALSE>>=
+% cat(crossprodCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+  \caption{crossprodCpp: Cross-product and transposed cross-product of a single matrix}
+  \label{crossprod}
+  \begin{quote}
+    \noindent
+    \ttfamily
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXi}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Lower}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hspace*{\fill}\\
+    \hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ }\hlstd{}\hlkwd{A}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXi}\hlopt{$>$\ $>$(}\hlstd{AA}\hlopt{));}\hspace*{\fill}\\
+    \hlstd{}\hlkwb{const\ int}\hlstd{\ \ \ \ \ \ \ \ \ \ \ }\hlkwb{}\hlstd{}\hlkwd{m}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{rows}\hlstd{}\hlopt{()),\ }\hlstd{}\hlkwd{n}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{cols}\hlstd{}\hlopt{());}\hspace*{\fill}\\
+    \hlstd{MatrixXi}\hlstd{\ \ \ \ \ \ \ \ \ \ }\hlstd{}\hlkwd{AtA}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXi}\hlstd{}\hlopt{(}\hlstd{n}\hlopt{,\ }\hlstd{n}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+    \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()));}\hspace*{\fill}\\
+    \hlstd{MatrixXi}\hlstd{\ \ \ \ \ \ \ \ \ \ }\hlstd{}\hlkwd{AAt}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXi}\hlstd{}\hlopt{(}\hlstd{m}\hlopt{,\ }\hlstd{m}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+    \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{));}\hspace*{\fill}\\
+    \hlstd{}\hspace*{\fill}\\
+    \hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"crossprod(A)"}\hlstd{}\hlopt{{]}}\hlstd{\ \ }\hlopt{=\ }\hlstd{AtA}\hlopt{,}\hspace*{\fill}\\
+    \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"tcrossprod(A)"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{AAt}\hlopt{);}\hlstd{}\hspace*{\fill}\\
+    \mbox{}
+    \normalfont
+    \normalsize
+  \end{quote}
+\end{figure}
 <<>>=
 fcprd <- cxxfunction(signature(AA = "matrix"), crossprodCpp, "RcppEigen")
 str(crp <- fcprd(A))
@@ -558,11 +603,34 @@
                     _["R"] = MatrixXd(llt.matrixU()));
 '
 @
-\begin{lstlisting}[frame=tb,caption={cholCpp: Cholesky decomposition of a cross-product},label=chol]
-<<cholCppLst,results=tex,echo=FALSE>>=
-cat(cholCpp, "\n")
-@
-\end{lstlisting}
+% \begin{lstlisting}[frame=tb,caption={cholCpp: Cholesky decomposition of a cross-product},label=chol]
+% <<cholCppLst,results=tex,echo=FALSE>>=
+% cat(cholCpp, "\n")
+% @
+% \end{lstlisting}
+\begin{figure}[h]
+  \caption{cholCpp: Cholesky decomposition of a cross-product}
+  \label{chol}
+  \begin{quote}
+    \noindent
+    \ttfamily
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Map}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{MatrixXd}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{LLT}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hlkwa{using\ }\hlstd{Eigen}\hlopt{::}\hlstd{Lower}\hlopt{;}\hspace*{\fill}\\
+    \hlstd{}\hspace*{\fill}\\
+    \hlkwb{const\ }\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$}\hlstd{\ \ \ }\hlopt{}\hlstd{}\hlkwd{A}\hlstd{}\hlopt{(}\hlstd{as}\hlopt{$<$}\hlstd{Map}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$\ $>$(}\hlstd{AA}\hlopt{));}\hspace*{\fill}\\
+    \hlstd{}\hlkwb{const\ int}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ }\hlkwb{}\hlstd{}\hlkwd{n}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{cols}\hlstd{}\hlopt{());}\hspace*{\fill}\\
+    \hlstd{}\hlkwb{const\ }\hlstd{LLT}\hlopt{$<$}\hlstd{MatrixXd}\hlopt{$>$\ }\hlstd{}\hlkwd{llt}\hlstd{}\hlopt{(}\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{n}\hlopt{,\ }\hlstd{n}\hlopt{).}\hlstd{}\hlkwd{setZero}\hlstd{}\hlopt{().}\hspace*{\fill}\\
+    \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{selfadjointView}\hlopt{$<$}\hlstd{Lower}\hlopt{$>$().}\hlstd{}\hlkwd{rankUpdate}\hlstd{}\hlopt{(}\hlstd{A}\hlopt{.}\hlstd{}\hlkwd{adjoint}\hlstd{}\hlopt{()));}\hspace*{\fill}\\
+    \hlstd{}\hspace*{\fill}\\
+    \hlkwa{return\ }\hlstd{List}\hlopt{::}\hlstd{}\hlkwd{create}\hlstd{}\hlopt{(}\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"L"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{llt}\hlopt{.}\hlstd{}\hlkwd{matrixL}\hlstd{}\hlopt{()),}\hspace*{\fill}\\
+    \hlstd{}\hlstd{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\hlstd{\textunderscore }\hlopt{{[}}\hlstd{}\hlstr{"R"}\hlstd{}\hlopt{{]}\ =\ }\hlstd{}\hlkwd{MatrixXd}\hlstd{}\hlopt{(}\hlstd{llt}\hlopt{.}\hlstd{}\hlkwd{matrixU}\hlstd{}\hlopt{()));}\hlstd{}\hspace*{\fill}\\
+    \mbox{}
+    \normalfont
+    \normalsize
+  \end{quote}
+\end{figure}
 <<fchol>>=
 fchol <- cxxfunction(signature(AA = "matrix"), cholCpp, "RcppEigen")
 (ll <- fchol(A))
@@ -635,7 +703,7 @@
   \widehat{\bm\beta}=\arg\min_{\beta}\|\bm y-\bm X\bm\beta\|^2
 \end{displaymath}
 where the model matrix, $\bm X$, is $n\times p$ ($n\ge p$) and $\bm y$
-is an $n$-dimensional response vector.  There are several ways based
+is an $n$-dimensional response vector.  There are several ways, based
 on matrix decompositions, to determine such a solution.  Earlier, two forms
 of the Cholesky decomposition were discussed: ``LLt'' and
 ``LDLt'', which can both be used to solve for $\widehat{\bm\beta}$.  Other
@@ -777,12 +845,12 @@
 One important consideration when determining least squares solutions
 is whether $\rank(\bm X)$ is $p$, a situation described by saying
 that $\bm X$ has ``full column rank''.   When $\bm X$ does not have
-full column rank it is called ``rank deficient''.
+full column rank it is said to be ``rank deficient''.
 
 Although the theoretical rank of a matrix is well-defined, its
 evaluation in practice is not.  At best one can compute an effective
-rank according to some tolerance.  Decompositions that
-allow to estimate the rank of the matrix in this way are referred to as
+rank according to some tolerance.  Decompositions that allow to
+estimation of the rank of the matrix in this way are said to be
 ``rank-revealing''.
 
 Because the \code{model.matrix} function in \proglang{R} does a
@@ -839,7 +907,7 @@
 is considered to be (effectively) zero is a multiple of the largest
 singular value (i.e. the $(1,1)$ element of $\bm D$).
 
-In Listing~\ref{Dplus} utility function, \code{Dplus}, is defined to
+In Listing~\ref{Dplus} a utility function, \code{Dplus}, is defined to
 return the pseudo-inverse as a diagonal matrix, given the singular
 values (the diagonal of $\bm D$) and the apparent rank.  To be able to
 use this function with the eigendecomposition where the eigenvalues
@@ -887,8 +955,8 @@
 The standard errors of the coefficient estimates in the rank-deficient
 case must be interpreted carefully.  The solution with one or more missing
 coefficients, as returned by the \code{lm.fit} function in
-\proglang{R} and the column-pivoted QR decomposition described in
-Section~\ref{sec:colPivQR} does not provide standard errors for the
+\proglang{R} and by the column-pivoted QR decomposition described in
+Section~\ref{sec:colPivQR}, does not provide standard errors for the
 missing coefficients.  That is, both the coefficient and its standard
 error are returned as \code{NA} because the least squares solution is
 performed on a reduced model matrix.  It is also true that the
@@ -908,7 +976,7 @@
 matrix and $\bm\Lambda$ is a $p\times p$ diagonal matrix with
 non-increasing, non-negative diagonal elements, called the eigenvalues
 of $\bm X^\prime\bm X$.  When the eigenvalues are distinct this $\bm
-V$ is the same as that in the SVD.  Also the eigenvalues of $\bm
+V$ is the same as that in the SVD.  Also, the eigenvalues of $\bm
 X^\prime\bm X$ are the squares of the singular values of $\bm X$.
 
 With these definitions one can adapt much of the code from the SVD
@@ -972,7 +1040,7 @@
 const ColPivHouseholderQR<MatrixXd> PQR(X);
 const Permutation                   Pmat(PQR.colsPermutation());
 const int                              r(PQR.rank());
-VectorXd                       betahat, fitted, se;
+VectorXd                               betahat, fitted, se;
 if (r == X.cols()) {	// full rank case
     betahat  = PQR.solve(y);
     fitted   = X * betahat;
@@ -983,12 +1051,14 @@
 				       triangularView<Upper>().
 				       solve(MatrixXd::Identity(r, r)));
     VectorXd                   effects(PQR.householderQ().adjoint() * y);
+    betahat.fill(::NA_REAL);
     betahat.head(r)                    = Rinv * effects.head(r);
     betahat                            = Pmat * betahat;
 			// create fitted values from effects
 			// (cannot use X * betahat when X is rank-deficient)
     effects.tail(X.rows() - r).setZero();
     fitted                             = PQR.householderQ() * effects;
+    se.fill(::NA_REAL);
     se.head(r)                         = Rinv.rowwise().norm();
     se                                 = Pmat * se;
 }
@@ -1093,21 +1163,20 @@
 
 An SVD method using the Lapack SVD subroutine, \code{dgesv}, may be
 faster than the native \pkg{Eigen} implementation of the SVD, which is
-not a particularly fast method.
+not a particularly fast method of evaluating the SVD.
 
 \section{Delayed evaluation}
 \label{sec:delayed}
 
 A form of delayed evaluation is used in \pkg{Eigen}.  That is, many
-operators and methods do not force the evaluation of the object but
-instead return an ``expression object'' that is evaluated when
-needed.  As an example, even though one writes the $\bm X^\prime\bm X$
-evaluation using \code{.rankUpdate(X.adjoint())} the
-\code{X.adjoint()} part is not evaluated immediately.  The
-\code{rankUpdate} method detects that it has been passed a matrix
-that is to be used in its transposed form and evaluates the update
-by taking inner products of columns of $\bm X$ instead of rows of $\bm
-X^\prime$.
+operators and methods do not evaluate the result but instead return an
+``expression object'' that is evaluated when needed.  As an example,
+even though one writes the $\bm X^\prime\bm X$ evaluation using
+\code{.rankUpdate(X.adjoint())} the \code{X.adjoint()} part is not
+evaluated immediately.  The \code{rankUpdate} method detects that it
+has been passed a matrix that is to be used in its transposed form and
+evaluates the update by taking inner products of columns of $\bm X$
+instead of rows of $\bm X^\prime$.
 
 Occasionally the method for \code{Rcpp::wrap} will not force an
 evaluation when it should.  This is at least what Bill Venables calls
@@ -1115,7 +1184,7 @@
 for the transpose of an integer matrix shown in Listing~\ref{trans} we
 assigned the transpose as a \code{MatrixXi} before returning it with
 \code{wrap}.  The assignment forces the evaluation.  If this
-step is skipped, as in Listing~\ref{badtrans} an answer with the correct
+step is skipped, as in Listing~\ref{badtrans}, an answer with the correct
 shape but incorrect contents is obtained.
 
 <<badtransCpp,echo=FALSE>>=
@@ -1189,7 +1258,7 @@
 \pkg{RcppEigen} is based on the modern \proglang{C++} library \pkg{Eigen}
 which combines extended functionality with excellent performance, and
 utilizes \pkg{Rcpp} to interface \proglang{R} with \proglang{C++}.
-Several illustration covered common matrix operations which covered
+Several illustrations covered common matrix operations and
 several approaches to solving a least squares problem---including an extended
 discussion of rank-revealing approaches.  A short example provided
 an empirical illustration  for the excellent run-time performance of the

Modified: pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf
===================================================================
--- pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf	2011-10-31 22:20:31 UTC (rev 3251)
+++ pkg/RcppEigen/inst/doc/RcppEigen-Intro.pdf	2011-10-31 22:23:27 UTC (rev 3252)
@@ -127,458 +127,476 @@
 (Sparse matrices)
 endobj
 85 0 obj
-<< /S /GoTo /D [86 0 R  /Fit ] >>
+<< /S /GoTo /D (section.7) >>
 endobj
-107 0 obj <<
-/Length 4232      
+88 0 obj
+(Summary)
+endobj
+89 0 obj
+<< /S /GoTo /D [90 0 R  /Fit ] >>
+endobj
+113 0 obj <<
+/Length 4477      
 /Filter /FlateDecode
 >>
 stream
-xÚ­[IãƾûW4|’àÍ*7ßÆk$0`4r±sÐHìe¤VƒT{Üùõyk-$µ´a4M±öWoùÞ¢üîñ.¿ûé‹üÌßoï¿øúÇÊÝ™:³¦tw÷w¦­²Æš»ªj2Ó«íݯ‹÷OËU‘ç‹¿/ÍâiiëÅ©?.W¶\l_àÍ>§Ý‘Ú¨Ûé¸üÏý?`æ6™¹¨²ÂÀº4å/8ðþ{þþÛÁç±{âa6¿3&kËÒâ°•ijØQ{·²MÖ´†‡Ž¸ø#|öðYÃg€åmµøŸOðéà…m‹Šzãý'ìQ.~ØÂüt2ú|p¶‡ø-Å}âѸÆNÎSü¸l좗…Ÿàó[^äKW”‹ÍQVÂqŠ&k]‡)²¢-ÞH‹*ÏšºTþ¾´Í¢Ã=;Ù¥l.ÏàÙÀÿL•ˆ@ØóÆ¥ñÐÇpàŠÒs“…Ç>ïxN›ãœ·5ᣯ¬ë;8XUÑM»<+[8cQfMU
-!•¤n¿Vž93Wc£¹àúáÚMeV™†g»ÿH—§ô
-ÝM›•y}“%‹8àÌF=Ë¥n–¶]|Z–5}{¤W.¯©COúÿŽ++
-ÜA¸!¤—Õâ¡g6âÕ“=[¸a`p¿ééÛ¬Ê}‡ßò2ÒÁ¿¬¸ë‘rüøËO_Üýj`ZóûŽyd/ì;?t,Ä-П:}‡-½œí~Ù ¬u§þV`Ùwפ©era=3R^’NÏÞdí²Öx}AøÈ{Ÿ’Ðo8íútúê«*®Š¶ÎÚy)™j¹;iŠÃs¤GNr×m¹ØïD;×ö¯üöáÈbâÚŠIù"¢ëwrïë=6;ž õµçñø¸'ŽòSg³Ì\gyî¦Ü<s6 €iÞÀ!ANõ¿õ;}¢žtš‘=úuÐw a.¯òÞÂ4°DÊ4¸—3Œ}7±¶Tä’}Â`ЮÖ9\zÑÃ3¨¸šu³“Ièzþ§÷ԨȲו(H—ˆ[%U;{•Aë7¥Wàg8o+
-ãEv²‘†]ØÍÜæñ\f[/-ëÐ+YßYî’^žh£ùL“¹ªÒžŸEå­ÏqŸÍ\Р‰ªK8úE{C;ÐÉ.VÊ0+ˆÚï;o»cè ÅN1Á‹èä/¹É‹,)p»Xj7Ÿh³
-\YŽôÑxrUV‹ÿvzhH½ ÓË"³å•žÏ
-qÆ4˜Ìºâ¶²u=½VØ$Ëv°g¢g€UØUŒ±ôåh±MælÍÓ€Èc€¾-7«mxܾl"Žœn(¶€ÚdªŽ•`QØ©„·0åÀ×Oü·£{êÄ`±–Y3>ÃITqíöÂ;¾NûA$±j£öœ†)‚ÇáÉÞnP5°I×Q%GÒú¢½Ÿ„Ù2à«Ò.~~fÕÏ)ZëEïᣜ2´tdBþà—Äç~íqiž²'+µ£rsª(Þ!ŠuD„ñئP©âCôlõ¡6zÒ	Æâ\waÏn§àˆ®èwÅK{µ(¼Ò×,…ÝîQÄRzãì*TÇ°±Yr¯§z¶°ü‚_è5+QlÄŽÖaåWÙý <uÍSº™Ê•,û¤\òªôÇÛ„}U_”
-ž–ÂÈÀ(eÝ.Þ<EÌ´Û‚/+@Ž828+õg…©—ÞŸ¢»}än{åÍN¶‡×8/©ÐÁ>>R?!a–c:ño@»'9§—…>„δñy!›eèXòJ;Ç£Œ´nWÅŽÏ[¡Åo¹)º>ºgfÂOL<赏|ºG¹Dï Èš1'”õañ^)Áì!À»´¶
-hàë°ÕæàCk/d’Òù‹éxCšÐ׍—Gö¶ö¼ÏÑî.©geÞ€É!%¢ÁY4 ãs Àä<îâûkÊTjJΓçz
-º¬nIP ÓZ<^`måLÝýqbÄé¼c×ûqæ=½Â¿òèÏÞe’Ílƒ*ï§#O·S  ïæ0Â,sÝv7:ÁÖÆz]r’åúÎé SŒÁ;ªhže£G»‘³ëBÓŒüªŵ¦Þ‹‰
-w˜–‚ҋ퍬4Ñ1ø2U(¸âgRx§SôêÂM̐5æÀe¯Ú™v=ð!ömŒMǽ—+£õÁ«Ô粺ˆ÷K“•¹˜9ãñÛþ¬^á-$j¥
-JS™N³
-[žªmx‰.KçØÓS'³]õ	ÿ’+}U›?öî8s¸º:sø)ßèâ.ÚrÞdᯘ½|2!Æbð¼L†D#Ö”;ˆõ$°(¼[a|)aþêêyHá§È‡mÛxüz^o"Bt†<žn«¿ yå9FJÞ5ó6é1¬»‰¡&aÈ—Èo¸S>qÖuh›ñDeêƒFðåêª	‘M…gàlœSÁúv*Ø•¬ÏºmCâU59"'î0;n9曡7ª?€7úýQÖÚŽ`“+½Sà*	–‘nêç`'vGRDµ§5>Çþ‡C;$×cÚ<ƒÂqLjufñ¥˜ap¢ÒªÅ5'€O³'Üëò”c^ÐßUvq,;»ƒ
-‚úЀ¦
-Gþèm}ßøÙè«7¶8fñž¼ÚI¿a£ ö9F²Å(Kc>8[ìpL÷2àVw²ÑAÅ\v"WJgS9Å9bmàÝI=Íz?Gjõ8I6µ œJn¾öÇYy_£³cüûR6<„nÈ‚:Rmï£0¾A{B½ê[ɨ­ižY,Ž´&ÛxPnMÌø0íñ!ì¹S*î£À)6MáÕÄjΩ:D2cÛZ¢ˆ¤ŸøT$W¨#E‚¹MXðUm2H4ÿnàïÏ>nÅòŒœ•]	Kü{‰HO¶¥	tQ¼Ð‡¡#Ek]7²ÞÀÁ§9éÔ]Ï8Vؤ܏]^U§G´Øùä”)Å[¶Ö<WÍ\õ¬ì¼nñ{‰¾(rAò}§zö•ßn•_RSµÖ”Û–»}RðFÃÀÁëT8ÜMµu¼õ¿s+n®cO›¬±ƒâÇ(ÃǨ,·c6AÞ½Õ8N.R¼ßr&4Š½5{Ê:ÅR/çðú!7êA_Á» £	‘^ˆ5waØ8±ª×Ð2¾ÐXòÆÙ
-|PMÃQ$ñÝMˆ•™(
-6RÔ:M)¯©Y4Â{~~Ò Çù4É‚M]ê
-
-“í\è ú2p…oAèy^]G虸ËU••n„ï#æC¯f؝¢á‘ô;C7$=	Fùs"üq1!ûºˆ—8v†àe³~õ’ñQDHò,‹|ìYâð<øÔ /É­œT]sö:‰<ÌùcÈRìb¥¦„%ØÊ™ë§àò
-ҍ$íãC´Ef
-s[(=ðÃ$ý‡k¥ÉýˆçÚ̆4í4c9Ê×å•ßNôî¬üSPârzÕ0/rµï8èÿÍAå ïxë݉Û×Z¬vº!}x)Ó«žšÆ¼îZ8µ­èÔu‘¡‚á/‹3ðï7ËU‹^/òò±×ú Ò|T1¥êª1MPü„¦z²ãÅǃ¹l –à>{÷œzã³0~\¥ù›UQìÚmùù$îóstÌ$Ó"³“Xm^§±aÖSœïÃ+ñØßœOŠWuÖ¸ú¶üˆW^þEa©ˆÁ½²K’NŠ`4)üg2Â8ç8#¼že0êJA×GŸ½Æ\ UÉ"Ϥ!ÁÄaç(‹<ss…Jó¡Ù:ä3¿<SÐ’LÜ㲚
-Z€9œ»e›Õ"=¨h“õÝÅ 
-žlãƒEܯj4ÀbŠ»Þã ØÚu<T”ô)<Ý\Í…q *+{)ÇÙĶu”mN窨Rèªr¶™-]œ4ý¨ø.r}ð¸ÞÛ³gý”-÷|[šÝØ6«ê&aŽj~#Ÿsùw” à&µz$œ!ERFòó.’¯àÙbß?• 6¶Ê¬-ÿšõsA|/U €î,Gb8Cék•	ežå.-Qúe#ç(}ž†Xs´ñâ6BÎÝG‰f4¡¡`«¦ÎÚ¢LuÊù"¹&«Û7×È•Y–¿X$WX®±èg+ä°5ö_,Gp½·HŽ•E_Ú8u&¤p1
-‹$Iou.ì$h?ª§rYc‹KÊ€’ö¦ÒS´W*zø@#¼üê2ÕžÚjäD­äzspfŠ:Õ‘ƒ”“(¥ºKSé*›[¤ëœtS•ÅMuD€Xšú¯b¯«bé½ä‚ªnCQҍâ™æÏ8¨,|)ù4ÁlSN«
-à‚æFO €fë_:…Y–3~ænƒ.¿îx”õåãzªŃìÈIû|5Þ‡¢ñG™ajîz¾·Ã:²·Ý;…qêО—÷aÖæ‡!ú;
-³s:Ìa÷H«ˆf
-tˆìe
-šÑMS¶T--Ž4uïøE"¼Œë}ŠCû¤…=¯'£Ùþ'J
-Z|oÛQzZf¢ýS’“ÆxF³&ªƒíEpD4„mm”‚·iüœèN–8ç¢À~]"ZÑÎcòüK)Hƒn‡y8„äò	}Á÷¡mšF|ö¼‘‹ô
-Kô!óÂ÷ijDã+ÇZ]\¸^lBiª­"IßÓ„Q<‘^$ßa%)4%ìzü»IÏ ±sáÂó”O]™›QÇ|õ ©S™TZ©üa÷¨y’ºSèLeT=xUŸµæ
-nîOQüÄÎÆO\•ÏÆOð=ÆO\Á¹ÏÞš!Ç‘öj|Qù`bQ³ó;q—°Ž÷Ée€ó¯‚\f
-Np—ÊCŠêL96Ìæ«máy\w‡Žý!h]‹eɍ™W»MkP*¦ f®‚p&:GOQÈW*Ó©B žS]™ÔÔqü61X¸×±ÀƒÕs"ßÔ!åÝÔšz!Í´ÓŠTi‹÷“¤üÈ^£
-ÂüQÚùbúÝ£%ëâÉÚ‚Möcø®y21×Q˜@Uu©á(ÆFÉq„Ë"„ ¾ôŸ&¿aZÒå¡B*Á÷Én1£(	+­¢ .“äýè&ç’ ¹nräŒq1tšœAÕÉÐ…#5x²Íª Ú5*2”ÐÒª†¿Ç‡Sô6Iã6RÕ%ɲ9weê²{_4͙ÐÖ`SÜò	œÆÄ{`Jpû¬	iÏë–~`Æ[Ìù—KPL,ĨrÜÑØ$§(+ͤķqK|¡ð—V^Fûì%ù€¿X¨š·”=:9W×w!sžÏ"÷ËߢÃ[”DòpÒò|…Mö	G™F†÷G/ÂÏž›/•¶9„˜y*š±&ž©j³à̺›ÌŠkn0+í´ôpà­¼Œ\wW´çë	°‘ŠKÉÑ]ÅiÝ´(8ئæ(ðÞoLyíˆçÆ`:‚
-ýi—#ã¬Í `Õ‚+;v1âª97¤ø>·¦XœfÈ5HS „¨‚§uó¬„×RJz Aa¯3µøû¸X7IɁUÿÛ¤`CœºwsaöÑbu£ÓŠ±À‹?šÖâïOË$6ó*äê¢ßÿ>̬Wج	ÊQèõ0÷…jã;KS^+S6™ÉKüõaf§?®‰GüpÿÅÿ$ZU7
+xÚ­[Io#G–¾ûW¾…6Ó‘kÌÍÝ®2¦ÛƒŒÂÌ¡=ŠL©rÌEȤJ%ÿú~k,Éä"Ã(°DFÆúâ-ß[2¿{ºËï~ú&?ó÷¯Ÿ¾ùþc•ß™&³¦*ï>=ÞWg­5wuÝfÆAÓæî_‹ö÷Ë"Ïÿuoû{Û,ŽÃá~i«ÅæZÖð9özFÝŽ‡ûÿûôw˜¹Jf.ê¬0°.Mù|†ÿž?À=|žº=³°!“¹ª²8liÚväî–¶ÍZgxø0à€‹?ÁgŸ|FXÞÖ‹¿â÷#|:h°®¨©7.1ü†=ªÅ‡
+üÀO'£àƒ³u8ìÈ­<÷‰GÛ὜¦øxßÚÅ ïáók^ä÷eQ-ÖYmTÇ)ÚÌ•-¦È
+W¼“užµM¥$üroÛE‡{{Ù¥l.Ïແþ-˜*°ç#ý'.‡><Àk"ÈÀ
+™ã;žÓæøÛà¶Nøèûuq«kºé2Ï*g,ª¬­+a!¤òˆÔVÊ3çæj£¹àúáÚM
+_ª¬6-Ïöé3]žÒ7t7.3us‰ÉˆJ40Y§¬³¼p:ðY.v}oÝâ·ûª¡_O´è²¨[ê 2 ðgV^B×n¡'\3úöǁY‰–o’}[ Y]‡ŸîÐe~K‡_ó*òÁ¿¬¸züõ—Ÿ¾¹û—9h§?vÌ'[aÜùŽ© g;r§¿á“¡ã]~ºoVºS3°ìwפ©,ŒË…u‰V:JJexYb<ùzöF›&«¥t‘ñ-&d´ìEzþ
+úüå/3„\®É\Ó Kå ZŽ»“ÂØ=GêäÈ×]ºj±íEIóoÜúx`i)]ÍÔ|EÑ
+ؽb=Rº’'@5Atx<='¦òSg³<Ýdy^ž2õÌÙ€ æ=L4á©äV¿Ó=õ¤Ó|DVA큀¬…¿¼æ{ßà·ò
+ö]ÇJÁK÷	ƒAÉZä(Ó‹ŸAÓ5$®ë^&¡ëù]ï=hSž8÷*³Ì¢KĬ	ÿ®jJ{•Aù·•×ãg8oÃ+?¾ÈNÖò [ã
+ÔñÊÌ:odW¡W²¾)²¼Lzy¢Mæ3mVµôJ¼Ë{œå>›•…g¿DÛ%
+ýŠ l/3t™mëeT»nñ¥÷&œÈ$ú@0Š)J…/¢™¿åG^dá"Ÿïíb5ªùÜÓf¸ªªS¶9O.«zñÿ^ªõÒ^PëU‘ÙÊ]Öê¹u1'欃ÉlYÜÂV¶iN¯6ɲLšèèm€ÀeÍP±_Ž†Ûd¥mx9cl)د@.Z¦~YGyº¡Hè ¼ÉT?O•`QØS%­0åÈW{þËV´›ÅZFÔ+N¢Š«ß
+Wô|4öA$!k«&†)‚¯ã1’½~T5°N×Q%GÒú¢½÷ÂlðUeÿ|f(5Ì)ZëEï᳜2<ÛéÈ„|åFâs¿ö’¸4OÙ“•ÚA¹9Uß!˜-‰°YëéoÛBEŠO0°Õ‡°ËƒÐMpæÈX'ŠX{v½‚#ºŸ/Š—¶jNx¥ïY»þIdRzãì*Q‡°±YZ¯N• ma%ø¾P3kP|&¨¿î<`‡•ßd÷£2Ôn2{LæöT¨¬]	Ô£¾÷¸¶`’&Bf
+Y¤t‹¤×(„l7S¼Ñ+¶Ä!/âǘãa['h£°¥ßf*k0ãg:_…#€kËÅ6bÛ'î÷àíf·ç–H{,”y
+Ó–¯ÉÖ,?Ÿ°%#+$Üš*rü¾‘ûû57E7$ØžÎ18|úèpÐk¹rOr+óËšñ巁ÛañAIµóRpäëžÁ¨-øÁµ¹®Íspµò…³þF:ސê/øP	ý\'ûT…‰è&éºfsðÛë¬jLz	D”ó©¢[¨"LNd«Î¶J‰Wç=O ­èËdÐe}KD©g#G¶¥çQÝ}=2)l¸:wƒ_gÞRÉ1~õn“lfÔþ<xº^‘ ´Í„Yu}ðbÍ—Ô	¸6v±„å…Ôœ³´.áÆL=Õ7#ϲÖ#¡íŒVÁG3ÀJ
+®u꾘Ør‡iéÁT÷Yâ|«š– ›±½‚˽’ñ;£¦C4
+w0CÓX •½içÕàE‘okl:î¹?°Z^§Ñ4Ã=^Bû•ÉªÖÜËJãÑÛö¬–á-Ärë{Ý©\L°	[>!)6v¤ÊÉ€³R—Ù®z„‹ÿ–û|S£?õ®… `uuåðS½7„ »D÷Ï᧚÷YòkæíŸLÈÐ#V5	G ‹ª¼g…ŠrÀ»%™ò	âïUñPÏ]
+>E8¬sñ*øó¼Ò$ãoÈß鶱îš7žc—jhhkSõ‚¾ËSXt£LRù/‘Ë8r§w┫ðlÆ	•©wÀÆåUk:#˜
+ÎÀÏ8§|µu‹Ê·¬X“uú)W7䃹Ü'8ò#b¾j9t3l²Ö&½IîÇö´¬%TFŠi˜Ø¥IQÕ–ÖxX‰H¸mèFB‡ž;a‰uj‰¹QCÌ08ÑgõâþçÓl	õ–ùv)YpúJz𠍎~ýì­ý^ûÙè§7³8fñž4õÒo\«'ó¬¨O·xpi¸g‹ÝÓ½Œ¸ÕþQ6:ªŒËNäJél*¤8G¬
+¼s¡ò¨§YÍBSu6I6À6¹9ø9hgé=.t<ÌŽI_ìRÙpº!êHµºOÂø	õÚ©g%£6^¤yf17ò„ÐØÚÃ	ô(cƇiaϝRqÅLñaÐ^M,ç\ª]$3Ö5@$ýħ"¹B)ÌÏ„ßÔÐ)ƒ¸ öû‘?ûË3rVv%"	<ò?÷ˆ!ñdšPà…
+} :²N´Öuë­|Ú3ANÝõTÃÉ•ûákÃVÕé-zŸž2•â×`ÈVšéj˜«è»Ô‰¹àO€—è‹"?tªg߸u£ü’šª•&Ý6Üí7En4|½N…“ñðÈÝT[çÁûÞÁ¦•w“…
+W±ŸM¦ØŠAñc”ácH–Û)†ïƒZ5„“‹o7œÂn-…ò„N±ÔË9¼~ȍzÑWÀ.`hBBto±æ.'VõUÆVAŒoœ­Àƒj ‰ÿn‚›i¢ ØEÑÓ	bJyMÍ¢îØò÷½Æ¶8ħù|ôØ¥~Ðx²Kè_VT7ãó¼¾Ï3q”kp”Ë	Tü1º4cŒ†GÒC¾ݐô$åωð§Œ	9DÐEüé'EÌøÓ'GŽ<ÆU ɧ,ò©O¹‹ƒc8p§fƒNãGr(ñ`‘C) 욧×IÌaÎ@ùf裬”ð/	o]6”»Þ‡@¼»SnpUæÜM¾Z[úÆä|H“¼B³ršÒ(ó˜ÙN²”Ó$]]x‡0ÈøsËþô¢ÁŒ}äs¯„8öŠJkÇf¥ãƒ¶“ŧ‰VTOìRñ†œaš©›3`³Y̪ÍJ[þ
+yx‰±J5.ÑtYÛNbXÄ>¼1ˆ4 -Á^üû?ð".
+¿\j}ž:,ÜáçÞGc¾òìü¦aígn
+Qo*G9œ†ƒƒ[Ö+Í^¡³¨M²‹¸ê#{ªqÔVS•Cç1˜ûÚ	«,©ïï"=…ó‘q9ÑÇ3vçU5Ï_¸"8x®HI¬Õ%Ó$ˆ££QHsň ãKNïŸQŸ<"XömHNr-s<hM™æv)­ŒOͱž~å½°ï"Õ«ˆ#8Îzd$çŽ}Q™@í¸I2xchg›ÇÙÉÒdµ3§.v^½¨ŸL\ˆÆÀûšAÄÕˆA'CÚ…Ó%¢ց®Uƒ¾ÐD·;Ɉ¾j
+
+¦ÖŒì‡¨ÇPÑ·ü\CpÍ4š§L>î—&²ƒ\uîæçLÍõëw>G¯¶=·¡€c›:¾¹Ý«&s¹ZÀfµ½œ®B‡ñM3 +š;$³M”c™
+¦c—[jÐ1yéyV”½ç»­	{j!K¤)Ò}ÔI‘`€ÕM –ze«Ý{c“¨Qo.3Aí+ÇįGåðí#·0Ï÷šû“Ɛq;l%ô×'8q<™þJT;•ÖëxЗ^,T]\d3ë\VWúÌÔƒäY^T·D¨ãµÄÉÀ&õéFùíÕÕ…Õ1Jšcy€iµ7üÿ¡õ+wÓ°ÁL€ùµ•H[Ë6%îÈm+ÿœƒvCïKžö<é"4ÃM!P?ïf<pW/‡¥»|¦ÉÚÊ8Ê̆š‹·›91ÈØ…Èä,^O=jq¢Žï9Û1SuR– ŸÜ%Æ© oùë\Ftì¤,`VMJíM&š¤Yø0+SnìØUGó
+eÑ•ƒtžKÀq1ÐÿâСŸD!ñþÂ>|¥(„Ý W|ñÐõØŽÌõ£„ª¶ýNô\
+.ñ«´¹‚Ëë*-oNTÚêœJƒ¥z©gKØt.ÀéµÛš
+íÐ=vC·¼C…OÀ›Jó­½Oœ”3µ™±·—EÅh÷Òõ›œN_6YÞØKlË5Øy”Š=StÕ¼3M/1›çàF631‚35˶,o­†3aµËUÊMs“k‰ý>ȍq!¨¯õ9XÕ45gµ6ü]J@“â÷¸
+tš8¤uÞí\žgfœÎ«2R}gˆB—î«Æ¯r¥m*
+ì\äÊ"\TÄ•sª˜ÇÝn¨œgÕÓ„Pr‡ LÛ:sE;[)3—º/\Í Eð[_îš™b°óÑr	ñE“	N?&ÁPJø‡‡HV¡ñrŽu¹Í¹ÊÕi¡¹!.dÄÜI2>‘¢¿Þ(FÖ5R™´¼-R¸fZ~ÌKN<µs‚óGk§Q!z¡¹(1è.i¥Þ>Ù>–õ™Æ{i5ù$¨ayEÙ„¢ßoϼü‘L¿4U‘•"? dYÞ²ŠÍš€±®hk[_SÁÏ )…K>cóqÇCÏIÔ*2{Ù×kã(ô´$;™«¦·j®ª›Ù´Æü³fB¢$!×çEñ{HçiÎ…’Nðè}…è`ß³ºiΈ”ÊÊç\…:B
+0¡ßO¢r1ìX³×b*É»P!Œ}ÿP	·±5ÀñêÏ©á.ß'‚à^ªÑmVMdp†Ò×j÷+ð«D%¾“ÐçIˆ/%Ãz¹|½~Ϲ6!¡Q`V´
+Ð*Õ'çY›5î†ÓÉ*0Cö6ˆf%ËËùÅ™wÉlZÃd¹ÎɧU)‚hînøØ:v“Âp_Ï{ÙšWfí…h}
+v€˜ö¦×Lᮼõ"õÏ'‰}…Ñ_דlãRëX›¬˜B¤ÈýŠË®¾–Ç$‹X¸ªöá:§ÆJÀ$UqÓ‹6
+¸ÒÍŸ*ıô^Ž¨|Ÿx¦õ¥Ý…™…÷Q(¹œ“°Yc ´7ÆãMæ\9ñ´
+ð´ÐÌÝèiÁנʯÆóª¹|\OÕݨؐcœc`Ÿ¼®„÷¡A›'™a^JøÞv«ÈÜbº6„»M”}žg¼ò3MÖÝç$:é+FÉ¿—2µÓڏ4yCd¯ÐŒåiI3Zç›x™ŽÛ’¬H‹oáIT.꓾ü²V-x:ÚG’ÉŒtšï8û½
+ã^9³åaуô•šäuŠ±Ÿ{oçt‡I¼
+»\I4ˆªÆCùR˜ø9Â]}睈I±”c6K+¡íሓUÌ°+‰çWôù*½ž&Ú µyø™,ÑÈóŒJÃh²ÃÏjÊäÙŒÕyZñìèÙgµˆ¯úòtWáøó)ú¤Ž^Bœ]Ú
+föûÙÍE½ÎãÐ<MmnŽZ§yõï?¶ ‘Ô¬æÛ¬P±,k²òŠ]<àçoþ
+׳F±
 endstream
 endobj
-86 0 obj <<
+90 0 obj <<
 /Type /Page
-/Contents 107 0 R
-/Resources 106 0 R
+/Contents 113 0 R
+/Resources 112 0 R
 /MediaBox [0 0 612 792]
-/Parent 119 0 R
-/Annots [ 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R ]
+/Parent 127 0 R
+/Annots [ 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 124 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 125 0 R 109 0 R ]
 >> endobj
-87 0 obj <<
+91 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [296.913 561.189 410.159 572.063]
+/Rect [294.528 561.189 406.752 572.063]
 /A << /S /GoTo /D (cite.R:Main) >>
 >> endobj
-88 0 obj <<
+92 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [414.368 561.189 434.759 572.063]
+/Rect [410.62 561.189 436.122 572.063]
 /A << /S /GoTo /D (cite.R:Main) >>
 >> endobj
-89 0 obj <<
+93 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [321.672 550.23 432.07 561.104]
 /A << /S /GoTo /D (cite.JSS:Rcpp) >>
 >> endobj
-90 0 obj <<
+94 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [437.073 550.23 462.575 561.104]
 /A << /S /GoTo /D (cite.JSS:Rcpp) >>
 >> endobj
-91 0 obj <<
+95 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [341.225 400.346 371.694 411.22]
 /A << /S /GoTo /D (cite.Meyers:2005:EffectiveC++) >>
 >> endobj
-92 0 obj <<
+96 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [375.46 400.346 395.852 411.22]
 /A << /S /GoTo /D (cite.Meyers:2005:EffectiveC++) >>
 >> endobj
-93 0 obj <<
+97 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [399.618 400.346 420.009 411.22]
 /A << /S /GoTo /D (cite.Meyers:1995:MoreEffectiveC++) >>
 >> endobj
-94 0 obj <<
+98 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [244.291 345.552 290.012 356.425]
 /A << /S /GoTo /D (cite.Veldhuizen:1998:Blitz) >>
 >> endobj
-95 0 obj <<
+99 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
 /Rect [294.268 345.552 314.659 356.425]
 /A << /S /GoTo /D (cite.Veldhuizen:1998:Blitz) >>
 >> endobj
-96 0 obj <<
+100 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [289.373 301.716 396.88 312.59]
+/Rect [295.092 301.716 404.6 312.59]
 /A << /S /GoTo /D (cite.Eigen:Web) >>
 >> endobj
-97 0 obj <<
+101 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [401.531 301.716 421.922 312.59]
+/Rect [409.823 301.716 430.215 312.59]
 /A << /S /GoTo /D (cite.Eigen:Web) >>
 >> endobj
-98 0 obj <<
+102 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [204.953 290.757 312.602 301.631]
-/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+/Rect [428.846 257.88 516.09 268.754]
+/A << /S /GoTo /D (cite.R:Main) >>
 >> endobj
-99 0 obj <<
+124 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [316.232 290.757 341.223 301.631]
-/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+/Rect [95.91 246.922 120.166 257.795]
+/A << /S /GoTo /D (cite.R:Main) >>
 >> endobj
-100 0 obj <<
+103 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [125.398 143.862 235.877 154.736]
-/A << /S /GoTo /D (cite.Eigen:Web) >>
+/Rect [124.883 246.922 150.385 257.795]
+/A << /S /GoTo /D (cite.R:Main) >>
 >> endobj
-101 0 obj <<
+104 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [240.356 143.862 260.747 154.736]
-/A << /S /GoTo /D (cite.Eigen:Web) >>
+/Rect [343.793 225.004 457.043 235.877]
+/A << /S /GoTo /D (cite.R:Extensions) >>
 >> endobj
-102 0 obj <<
+105 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [409.925 89.068 513.534 99.941]
-/A << /S /GoTo /D (cite.Abrahams+Gurtovoy:2004:TemplateMetaprogramming) >>
+/Rect [461.253 225.004 486.244 235.877]
+/A << /S /GoTo /D (cite.R:Extensions) >>
 >> endobj
-103 0 obj <<
+106 0 obj <<
 /Type /Annot
 /Subtype /Link
 /Border[0 0 0]/H/I/C[0 1 0]
-/Rect [95.91 78.109 116.302 88.982]
-/A << /S /GoTo /D (cite.Abrahams+Gurtovoy:2004:TemplateMetaprogramming) >>
+/Rect [200.764 203.086 309.046 213.96]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
 >> endobj
+107 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [314.013 203.086 339.004 213.96]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+>> endobj
 108 0 obj <<
-/D [86 0 R /XYZ 71 757.862 null]
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [444.449 192.127 516.09 203.001]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
 >> endobj
+125 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [95.91 181.168 131.338 192.042]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
+>> endobj
 109 0 obj <<
-/D [86 0 R /XYZ 72 720 null]
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [134.967 181.168 159.958 192.042]
+/A << /S /GoTo /D (cite.CRAN:Rcpp) >>
 >> endobj
+114 0 obj <<
+/D [90 0 R /XYZ 71 757.862 null]
+>> endobj
+115 0 obj <<
+/D [90 0 R /XYZ 72 720 null]
+>> endobj
 2 0 obj <<
-/D [86 0 R /XYZ 72 516.316 null]
+/D [90 0 R /XYZ 72 516.316 null]
 >> endobj
-6 0 obj <<
-/D [86 0 R /XYZ 72 184.859 null]
->> endobj
-106 0 obj <<
-/Font << /F64 110 0 R /F69 111 0 R /F20 112 0 R /F77 113 0 R /F82 114 0 R /F89 115 0 R /F90 116 0 R /F91 117 0 R /F8 118 0 R >>
+112 0 obj <<
+/Font << /F50 116 0 R /F55 117 0 R /F20 118 0 R /F63 119 0 R /F68 120 0 R /F75 121 0 R /F76 122 0 R /F77 123 0 R /F8 126 0 R >>
 /ProcSet [ /PDF /Text ]
 >> endobj
-131 0 obj <<
-/Length 3361      
+143 0 obj <<
+/Length 3803      
 /Filter /FlateDecode
 >>
 stream
-xÚµZëÛÆÿ~Ñ/å5Ö†û"¹nQÀ5ì‚ ö!
-à¨,ñÎJõ¸Rïî¿ïÌ웤ä3’âpµÏyíÌofYwEU|sUùþÇÍÕ×oÛÂ0S‹º¸¹-Œ`R«¢©$ãB7ëâCysÝÊrùñš—[øï®RÊ’¿¼^(%Ëׇû>†ûë…¨ËÃ~MÃx¹_Åñ©¯;^‹¶|¸MÙÑÛù¿D¹[q­
-|<Ú–åž×vÐq*NZá(Ø–Fq­'h°›wƒŸ¸¶+¤y9 y¾o7Æ•>‘¿Ü|÷õ[cQHÕ2mZIá
-Ùwž9;%ž0L	?)_î:Üù~I‚`8#ˆþÍÍÕoW«‚¼U¬.jc˜æM±Ú]}ø¥*ÖÐõ]Q±Æ4Å
-ÜB	ømày[¼¿ú§U ¯xJo™T¦¨ÛÛ,5ï¦ÔÖ(å©=€~´*uòõ¢mƒh/£:•¬y&¢»sÂiX£k?4Q‹×Äh3Ð;~Ü’Ðæ„Õ
-¦øXV
-vQV)IÜTL7mQ7œU•òzBN;Ü-{³ÊlÓÁ㌽pQ3%‡ß#ƒðŸOãåOdÑñ,üôçÌhm±¦
-ò8:«»ëúÿ=›çÒ³:ìPE[GÍ£Õ¶¥G÷wѲúùœQ–uÞO|–œ;+GÒÁ-÷©ê¤æw*jâB1AScêËZ~éþ×Λ¾†ÿù±Ù´¢|O^Áö÷ä1,MçÖÿ›[i=ÁŒ\¼üû9w¢_ ¿Ä÷æAT-±Väkfª¦Ðµd¢uÒ@im—Ž|ŠEJ‰€àøÐï•—qo#9ÙBšspV`’-9¯˜i‚+öþ>£ŠÂÓ.HŶê¬'ƈ¾Ìw›1`½8šC²^@WÝ–Ë8ip|pôÃÞNuCh•aƒ!ü1Yôw…|÷ÍUñÖäY¼,>ð’]/Ý–ÿÂÅ:»ñn²ÝÚ]N$Z'¥ONåƒîU"QƒnëþPOÎÌ:g>!úŒÄ(kÛ { W	5 Pƒ6qU¤¢÷–x¤dc MŒ`ãÂ!4YûEå¯ÜØ]·GÙâX—¬å"ßñ&3¹yÖšÀ.ž¸¯¾šáM(&"„™3YSQÏ^¿&ªÚ|¹ªu5Q5-´´ÀÒ®O‹·^«S…r]±š›Ï¡µŒÙ†i¡2¼Fr¶PÖþ"à†æÞÔåƒ×Ñ
-™ÿd	£áþÈ „€›p¨­ŠqX šOn.œr´Œ}Œ«XY³Êð\·tRq¡c‡ðUø8†’LVkôÁÏA)©Ì€XMC~yù­5öà+B”é_DÀ}‹£ÉP=ßûÄávéhõg£·?OÁá‡^·TzÀ©aåì-ÀJhZűƒ§ø´
-qR¤/:óÁä{/•ÍÁ¥0d‹œüDz@²išD6üÀßsTøéüþézQ£ÄÏ
-}îéónεH€´"êmaPxƒ£ñ¹£O$†KPßBˆŠ¾š¹ÐxìºF›ƒÏž>7ôùHŸ?ј5Îãå_³#Ž(Œ™V:gz^k
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/rcpp -r 3252


More information about the Rcpp-commits mailing list