slides/slides04.tex
changeset 418 fa7f7144f2bb
parent 416 497f67fd4ae0
child 449 d67c5f7177a6
equal deleted inserted replaced
417:29fc780ca130 418:fa7f7144f2bb
    36 
    36 
    37 \newcommand{\bl}[1]{\textcolor{blue}{#1}}     
    37 \newcommand{\bl}[1]{\textcolor{blue}{#1}}     
    38 
    38 
    39 % beamer stuff 
    39 % beamer stuff 
    40 \renewcommand{\slidecaption}{PEP (Scala) 04, King's College London}
    40 \renewcommand{\slidecaption}{PEP (Scala) 04, King's College London}
       
    41 
       
    42 % Swift, example (a*)*b  
       
    43 \begin{filecontents}{re-swift.data}
       
    44 5   0.001
       
    45 10  0.001
       
    46 15  0.009
       
    47 20  0.178
       
    48 23  1.399
       
    49 24  2.893
       
    50 25  5.671
       
    51 26  11.357
       
    52 27  22.430
       
    53 \end{filecontents}
       
    54 
       
    55 % Dart, example (a*)*b  
       
    56 \begin{filecontents}{re-dart.data}
       
    57 20 0.042
       
    58 21 0.084
       
    59 22 0.190
       
    60 23 0.340
       
    61 24 0.678
       
    62 25 1.369
       
    63 26 2.700
       
    64 27 5.462
       
    65 28 10.908
       
    66 29 21.725
       
    67 30 43.492
       
    68 \end{filecontents}
       
    69 
    41 
    70 
    42 \begin{filecontents}{re3a.data}
    71 \begin{filecontents}{re3a.data}
    43 1 0.00003
    72 1 0.00003
    44 500001 0.22527
    73 500001 0.22527
    45 1000001 0.62752
    74 1000001 0.62752
   148     Email:  & christian.urban at kcl.ac.uk\\
   177     Email:  & christian.urban at kcl.ac.uk\\
   149     %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\
   178     %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\
   150     Slides \& Code: & KEATS\bigskip\\
   179     Slides \& Code: & KEATS\bigskip\\
   151     %Office Hours: &  Thursdays 12:00 -- 14:00\\
   180     %Office Hours: &  Thursdays 12:00 -- 14:00\\
   152     %Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\
   181     %Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\
   153     \multicolumn{2}{c}{\Large\textbf{https://pollev.com/cfltutoratki576}}\\
   182     \multicolumn{2}{c}{\Large\textbf{https://pollev.com/cfltutoratki576}}\\[2cm]
       
   183     \textcolor{red}{Scala Install Clinic:} & \textcolor{red}{This evening at 17:00 (online)}\\
   154   \end{tabular}
   184   \end{tabular}
   155   \end{center}
   185   \end{center}
   156 
   186 
   157 \end{frame}
   187 \end{frame}
   158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   188 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   183 
   213 
   184 \end{frame}
   214 \end{frame}
   185 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   215 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   186 
   216 
   187 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   188 \begin{frame}[c]
   218 % \begin{frame}[c]
   189 \frametitle{Preliminary 7}
   219 % \frametitle{Preliminary 7}
   190 
   220 
   191 Raw marks (261 submissions):\bigskip
   221 % Raw marks (261 submissions):\bigskip
   192 
   222 
   193 \begin{itemize}
   223 % \begin{itemize}
   194 \item 4\%: \hspace{4mm}236
   224 % \item 4\%: \hspace{4mm}236
   195 \item 3\%: \hspace{4mm}10
   225 % \item 3\%: \hspace{4mm}10
   196 \item 2\%: \hspace{4mm}1
   226 % \item 2\%: \hspace{4mm}1
   197 \item 1\%: \hspace{4mm}0
   227 % \item 1\%: \hspace{4mm}0
   198 \item 0\%: \hspace{4mm}15 
   228 % \item 0\%: \hspace{4mm}15 
   199 \end{itemize}\bigskip\bigskip  
   229 % \end{itemize}\bigskip\bigskip  
   200 
   230 
   201 \footnotesize
   231 % \footnotesize
   202 (plagiarism/collusion interviews ongoing!)
   232 % (plagiarism/collusion interviews ongoing!)
   203 
   233 
   204 \end{frame}
   234 % \end{frame}
   205 
   235 
   206 
   236 
   207 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   237 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   208 
   238 
   209 
   239 
   210 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   211 \begin{frame}[c,fragile]
   241 % \begin{frame}[c,fragile]
   212 \small
   242 % \small
   213   
   243   
   214 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   244 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   215 def is_legal(dim: Int, p: Path, x: Pos) = {
   245 % def is_legal(dim: Int, p: Path, x: Pos) = {
   216   if (...some_really_long_condition...) false
   246 %   if (...some_really_long_condition...) false
   217   else true
   247 %   else true
   218 }
   248 % }
   219 \end{lstlisting}
   249 % \end{lstlisting}
   220 
   250 
   221 \pause
   251 % \pause
   222 \bigskip
   252 % \bigskip
   223 \rule{11cm}{0.3mm}
   253 % \rule{11cm}{0.3mm}
   224 \bigskip
   254 % \bigskip
   225 
   255 
   226 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   256 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   227 def is_legal(dim: Int, p: Path, x: Pos) = 
   257 % def is_legal(dim: Int, p: Path, x: Pos) = 
   228   !(...some_really_long_condition...)
   258 %   !(...some_really_long_condition...)
   229 \end{lstlisting}
   259 % \end{lstlisting}
   230 
   260 
   231 \end{frame}
   261 % \end{frame}
   232 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   262 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   233 
   263 
   234 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   264 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   235 \begin{frame}[c,fragile]
   265 % \begin{frame}[c,fragile]
   236 \small
   266 % \small
   237   
   267   
   238 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   268 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   239 def foobar(...) = {
   269 % def foobar(...) = {
   240   val cs = for (c <- str) yield c.toLowerCase
   270 %   val cs = for (c <- str) yield c.toLowerCase
   241   ...
   271 %   ...
   242 }
   272 % }
   243 \end{lstlisting}
   273 % \end{lstlisting}
   244 
   274 
   245 \pause
   275 % \pause
   246 \bigskip
   276 % \bigskip
   247 \rule{11cm}{0.3mm}
   277 % \rule{11cm}{0.3mm}
   248 \bigskip
   278 % \bigskip
   249 
   279 
   250 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   280 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=1mm]
   251 def foobar(...) = {
   281 % def foobar(...) = {
   252   val cs = str.map(_.toLowerCase)
   282 %   val cs = str.map(_.toLowerCase)
   253   ...
   283 %   ...
   254 }
   284 % }
   255 \end{lstlisting}
   285 % \end{lstlisting}
   256 
   286 
   257 \end{frame}
   287 % \end{frame}
   258 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   288 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   259 
   289 
   260 
   290 
   261 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   262 \begin{frame}[c,fragile]
   292 % \begin{frame}[c,fragile]
   263 \small
   293 % \small
   264   
   294   
   265 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-7mm]
   295 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-7mm]
   266 def RomanNumeral2Int(rs: RomanNumeral): Int = 
   296 % def RomanNumeral2Int(rs: RomanNumeral): Int = 
   267  rs match { 
   297 %  rs match { 
   268    case Nil => 0
   298 %    case Nil => 0
   269    case M::r    => 1000 + RomanNumeral2Int(r)  
   299 %    case M::r    => 1000 + RomanNumeral2Int(r)  
   270    case C::M::r => 900 + RomanNumeral2Int(r)
   300 %    case C::M::r => 900 + RomanNumeral2Int(r)
   271    case D::r    => 500 + RomanNumeral2Int(r)
   301 %    case D::r    => 500 + RomanNumeral2Int(r)
   272    case C::D::r => 400 + RomanNumeral2Int(r)
   302 %    case C::D::r => 400 + RomanNumeral2Int(r)
   273    case C::r    => 100 + RomanNumeral2Int(r)
   303 %    case C::r    => 100 + RomanNumeral2Int(r)
   274    case X::C::r => 90 + RomanNumeral2Int(r)
   304 %    case X::C::r => 90 + RomanNumeral2Int(r)
   275    case L::r    => 50 + RomanNumeral2Int(r)
   305 %    case L::r    => 50 + RomanNumeral2Int(r)
   276    case X::L::r => 40 + RomanNumeral2Int(r)
   306 %    case X::L::r => 40 + RomanNumeral2Int(r)
   277    case X::r    => 10 + RomanNumeral2Int(r)
   307 %    case X::r    => 10 + RomanNumeral2Int(r)
   278    case I::X::r => 9 + RomanNumeral2Int(r)
   308 %    case I::X::r => 9 + RomanNumeral2Int(r)
   279    case V::r    => 5 + RomanNumeral2Int(r)
   309 %    case V::r    => 5 + RomanNumeral2Int(r)
   280    case I::V::r => 4 + RomanNumeral2Int(r)
   310 %    case I::V::r => 4 + RomanNumeral2Int(r)
   281    case I::r    => 1 + RomanNumeral2Int(r)
   311 %    case I::r    => 1 + RomanNumeral2Int(r)
   282  }
   312 %  }
   283 \end{lstlisting}
   313 % \end{lstlisting}
   284 
   314 
   285 \end{frame}
   315 % \end{frame}
   286 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   316 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   287 
   317 
   288 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   318 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   289 \begin{frame}[c,fragile]
   319 \begin{frame}[c,fragile]
   290 \frametitle{Last Week: Pattern Matching} 
   320 \frametitle{Last Week: Pattern Matching} 
   329 
   359 
   330 \end{frame}
   360 \end{frame}
   331 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   361 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   332  
   362  
   333 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   363 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   334 \begin{frame}[c,fragile]
   364 % \begin{frame}[c,fragile]
   335 \frametitle{Sudoku}
   365 % \frametitle{Sudoku}
   336 
   366 
   337 A very simple-minded version on 110 problems:\bigskip
   367 % A very simple-minded version on 110 problems:\bigskip
   338 
   368 
   339 \begin{itemize}
   369 % \begin{itemize}
   340 \item 1 core: 800 secs
   370 % \item 1 core: 800 secs
   341 \item 2 cores: 400 secs
   371 % \item 2 cores: 400 secs
   342 \item 8 cores: 290 secs
   372 % \item 8 cores: 290 secs
   343 \item 18 cores: 142 secs
   373 % \item 18 cores: 142 secs
   344 \end{itemize}
   374 % \end{itemize}
   345 
   375 
   346 \end{frame}
   376 % \end{frame}
   347 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   377 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   348  
   378  
   349 
   379 
   350 
   380 
   351 \begin{frame}[t]
   381 % \begin{frame}[t]
   352 
   382 
   353   \begin{center}  
   383 %   \begin{center}  
   354   \includegraphics[scale=0.3]{../pics/blow.png}
   384 %   \includegraphics[scale=0.3]{../pics/blow.png}
   355   \end{center}
   385 %   \end{center}
   356   
   386   
   357   \begin{textblock}{14}(2,11.4)
   387 %   \begin{textblock}{14}(2,11.4)
   358   \large\bf{}Mind-Blowing Regular Expressions:\\ 
   388 %   \large\bf{}Mind-Blowing Regular Expressions:\\ 
   359   \centering in Python, JavaScript, Java
   389 %   \centering in Python, JavaScript, Java
   360   \end{textblock}
   390 %   \end{textblock}
   361 \end{frame}
   391 % \end{frame}
   362 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   392 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   363 
   393 
   364 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   365 \begin{frame}[c,fragile]
   395 \begin{frame}[c,fragile]
   366 \frametitle{Regular Expressions} 
   396 \frametitle{Regular Expressions} 
   385 \end{frame}
   415 \end{frame}
   386 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   416 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   387 
   417 
   388 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   418 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   389 \begin{frame}<1>[c]
   419 \begin{frame}<1>[c]
   390   \frametitle{CW 9: Regexes}
   420   \frametitle{Main 3: Regexes}
   391   
   421   
   392 \begin{center}
   422 \begin{center}
   393   Graphs: \alert{\texttt{(a*)*b}} and strings $\underbrace{\;\texttt{a}\ldots \texttt{a}\;}_{n}$\bigskip
   423   \mbox{Graphs: regex \alert{\texttt{(a*)*b}} and strings $\underbrace{\;\texttt{a}\ldots \texttt{a}\;}_{n}$}\bigskip
   394   
   424 
   395 \begin{tabular}[t]{@{\hspace{-8mm}}c@{\hspace{-4mm}}c@{}}
   425 
       
   426   \small  
       
   427 \begin{tabular}[t]{@{\hspace{-8mm}}c@{\hspace{-0mm}}c@{}}
   396 \only<1>{\raisebox{6mm}{\begin{tikzpicture}
   428 \only<1>{\raisebox{6mm}{\begin{tikzpicture}
   397 \begin{axis}[
   429 \begin{axis}[
   398     xlabel={$n$},
   430     xlabel={$n$},
   399     x label style={at={(1.05,0.0)}},
   431     x label style={at={(1.05,0.0)}},
   400     ylabel={time in secs},
   432     ylabel={time in secs},
   404     ymax=35,
   436     ymax=35,
   405     ytick={0,5,...,30},
   437     ytick={0,5,...,30},
   406     scaled ticks=false,
   438     scaled ticks=false,
   407     axis lines=left,
   439     axis lines=left,
   408     width=5.5cm,
   440     width=5.5cm,
   409     height=5cm, 
   441     height=5cm,
   410     legend entries={\small{}Python,  \small{}Java 8,  \small{}JavaScript},  
   442     legend entries={Java 8,Python,JavaScript,Swift,Dart},
       
   443     %legend entries={\small{}Python,  \small{}Java 8,  \small{}JavaScript},  
   411     legend pos=north west,
   444     legend pos=north west,
   412     legend cell align=left]
   445     legend cell align=left]
   413 \addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data};  
   446 \addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data};  
   414 \addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};
   447 \addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};
   415 \addplot[red,mark=*, mark options={fill=white}] table {re-js.data};
   448 \addplot[red,mark=*, mark options={fill=white}] table {re-js.data};
       
   449 \addplot[magenta,mark=*, mark options={fill=white}] table {re-swift.data};
       
   450 \addplot[brown,mark=*, mark options={fill=white}] table {re-dart.data};
   416 \end{axis}
   451 \end{axis}
   417 \end{tikzpicture}}}%
   452 \end{tikzpicture}}}%
   418 \only<2>{\raisebox{0mm}{\begin{tikzpicture}
   453 \only<2>{\raisebox{0mm}{\begin{tikzpicture}
   419 \begin{axis}[
   454 \begin{axis}[
   420     xlabel={$n$},
   455     xlabel={$n$},
   443     ylabel={time in secs},
   478     ylabel={time in secs},
   444     enlargelimits=false,
   479     enlargelimits=false,
   445     ymax=35,
   480     ymax=35,
   446     ytick={0,5,...,30},
   481     ytick={0,5,...,30},
   447     axis lines=left,
   482     axis lines=left,
       
   483     legend entries={You in M3}, 
   448     %%scaled ticks=false,
   484     %%scaled ticks=false,
   449     width=5.5cm, 
   485     width=5.5cm, 
   450     height=5cm]
   486     height=5cm]
   451 %%\addplot[green,mark=square*,mark options={fill=white}] table {re2a.data};    
   487 %%\addplot[green,mark=square*,mark options={fill=white}] table {re2a.data};    
   452 \addplot[magenta,mark=square*,mark options={fill=white}] table {re3a.data};
   488 \addplot[magenta,mark=square*,mark options={fill=white}] table {re3a.data};
   458 \hfill\small\url{https://vimeo.com/112065252}
   494 \hfill\small\url{https://vimeo.com/112065252}
   459 \end{frame}
   495 \end{frame}
   460 
   496 
   461 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   497 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   462 
   498 
   463 
   499 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   500 \begin{frame}[c,fragile]
       
   501 \small
       
   502 \textcolor{red}{MacOSX}\medskip
       
   503 
       
   504 \begin{minipage}{13cm}
       
   505   \begin{itemize}
       
   506   \item[0)] (if needed) \texttt{brew install java} \;\;or\;\; \texttt{brew reinstall java}
       
   507   \item[1)] \texttt{curl -s "https://get.sdkman.io" | bash}
       
   508   \item[2)] \texttt{sdk install scala 2.13.7}  
       
   509   \end{itemize}
       
   510 \end{minipage}\bigskip
       
   511   
       
   512 \textcolor{red}{Windows / Linux Ubuntu}\medskip
       
   513 
       
   514 \begin{minipage}{13cm}
       
   515   \begin{itemize}
       
   516   \item[0)] (if needed) \texttt{sudo apt-get remove scala-library scala}
       
   517   \item[1)] {\fontsize{8.5}{8.5}\selectfont\texttt{sudo wget https://downloads.lightbend.com/scala/2.13.7/scala-2.13.7.deb}}
       
   518   \item[2)] \texttt{sudo dpkg -i scala-2.13.7.deb}  
       
   519   \end{itemize}
       
   520 \end{minipage}\bigskip
       
   521 
       
   522 \begin{minipage}{13cm}
       
   523 other Linux distros: \texttt{sudo apt-get scala}
       
   524 \end{minipage}
       
   525 
       
   526 \end{frame}
       
   527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   464 
   528 
   465 
   529 
   466 \end{document}
   530 \end{document}
   467 
   531 
   468 %%% Local Variables:  
   532 %%% Local Variables: