% mangletex (11 May 1992) run at 16:59 BST Wednesday 20 August 1997
\message{<Paul Taylor's commutative diagrams, version 3.85, 20 August 1997>}%
%%======================================================================%
%%      TeX  macros for drawing category-theoretic diagrams             %
%%                                                                      %
%%                              Paul  Taylor                            %
%%                                                                      %
%%                       Department of Computer Science,                %
%%                      Queen Mary and Westfield College,               %
%%                              London E1 4NS                           %
%%                            +44 171 975 5241                          %
%%                             pt@dcs.qmw.ac.uk                         %
%%                       http://www.dcs.qmw.ac.uk/~pt                   %
%%                                                                      %
%%                           PLEASE READ THE MANUAL!                    %
%%                                                                      %
%%      The authoritative version is available by anonymous ftp from:   %
%%    ftp://ftp.dcs.qmw.ac.uk/pub/tex/contrib/pt/diagrams/diagrams.tex  %
%%                                                                      %
%%      Also available from the Comprehensive TeX Archive Network as    %
%%              macros/generic/diagrams/taylor/diagrams.tex             %
%%      For example, ftp://ftp.tex.ac.uk/tex-archive/macros/...         %
%%                                                                      %
%%      Please ensure that you are registered with me as a user so that %
%%      you can be informed of future releases.  Any electronic mail    %
%%      message with "commutative" or "diagram" in the subject line     %
%%      (such as your request for the package, a question about it, or  %
%%      even an otherwise blank message) automatically registers you, as%
%%      does fetching it directly by ftp (quoting your email address).  %
%%                                                                      %
%%                                                                      %
%% CONTENTS:                                                            %
%%  (O) corruption-sensitive hacks    (to approx line 354)              %
%%              Arrow components & commands - starts approx line 1212   %
%% (21) auxillary macros for adjustment of components                   %
%% (22) bits of arrows  (\rhvee etc)                                    %
%% (23) arrow commands  (\rTo etc)                                      %
%% (24) miscellaneous                                                   %
%% Apart from these five sections, the rest is intended to be totally   %
%% meaningless in the undocumented version, which is approximately 1861 %
%% lines long. Please do not waste trees by printing it out.            %
%%                                                                      %
%% COPYRIGHT NOTICE:                                                    %
%%      This package may be copied and used freely for any academic     %
%%      (not commercial or military) purpose, on condition that it      %
%%      is not altered in any way, and that an acknowledgement is       %
%%      included in any published work making substantial use of it.    %
%%                                                                      %
%%      IT IS SUPPLIED "AS IS", WITHOUT WARRANTY, EXPRESS OR IMPLIED.   %
%%                                                                      %
%%      If you are doing something where mistakes cost money (or where  %
%%      success brings financial profit) then you must use commercial   %
%%      software, not this package. In any case, please remember to     %
%%      keep several backup copies of all files, and check everything   %
%%      visually before sending final copy to the publishers.           %
%%                                                                      %
%%      You may use this package as a (substantial) aid to writing an   %
%%      academic research or text book on condition that                %
%%       (i) you contact me at a suitable time to ensure that you have  %
%%           an up-to-date version (and any infelicities can be fixed), %
%%      (ii) you send me a copy of the book when it's published.        %
%%                                                                      %
%% HISTORY                                                              %
%% 3.85 Released 20 August 1997                                         %
%%      Mangle \left@label and \right@label (conflict with Elsevier).   %
%%      Moved pullback symbols slightly further away.                   %
%%      Fixed uneven \pile spacing.                                     %
%%      Unknown PostScript translator names recognised.                 %
%%      Parse space in $A\rTo^a _b B$ correctly.                        %
%%      Big \LaTeX arrowheads with [thick] option.                      %
%%      New option [leftflush], like [flushleft] but reckons alignment  %
%%      from multiple verticals, or from text if there's no vertical.   %
%%      New options hug and nohug in PostScript mode: [PS,nohug] uses   %
%%      PS for the arrows without rotating the labels. (This has been   %
%%      done in a lazy way by overprinting empty LaTeX-style diagonals  %
%%      carrying the labels, which may therefore be mis-placed.)        %
%%      New option [crab=distance] shifts horizontals and PS diagonals  %
%%      transversally by the specified distance.                        %
%%      New option [snake=distance] shifts midshaft horizontals and     %
%%      PS diagonals longitudinally by the specified distance.          %
%% 3.84 Released 2 September 1996                                       %
%%      Fixed undefined control sequence in \luOnto[dotted,PS]          %
%%      Use \AtEndDocument to give once only warnings.                  %
%%      Report unknown grid correctly.                                  %
%%      Provided \NWclck etc 2-cell arrows.                             %
%% 3.83 Released 18 May 1995                                            %
%%      "dotted" option (set dot filler on maps)                        %
%%      Fixed bug with interaction with amslatex/equation.              %
%%      Parallel maps (\pile) outside diagrams stretch correctly.       %
%%      Avoid stepped lines in PostScript by restricting the slopes.    %
%%      Rightmost width now calculated correctly.                       %
%%      Fewer "arrow too short" errors (the l> option for eliminating   %
%%      birds' feet arrows is only applied in text, l>.5em in diagrams).%
%%      "midshaft" option now works; "midvshaft" ignored.               %
%%      Option "LaTeXeqno" uses LaTeX's equation number and style       %
%%      for "eqno";  LaTeX's \label command picks this up.              %
%%      Suppress warnings & 2nd pass errors with "silent" option.       %
%%      Recover from square brackets mis-interpreted as options.        %
%% 3.82                                                                 %
%% 3.81 Second alpha release 18 July 1994                               %
%%      Fixed displaced parenthesis instead of hook tails in manual p8. %
%%      Parentheses and braces (not quite right): see end of source.    %
%%      \overprint{text} sets text in maths and overprints it in the    %
%%      current cell, centered in the column irrespective of other stuff%
%%      "repositionpullbacks" option uses this for \SEpbk etc           %
%%      \newdiagramgrid declaration, grid option and pentagon grid.     %
%% 3.80 Alpha release for adjusted diagonals 15 July 1994.              %
%%      Some options can now take (x,y) values.                         %
%%      Name of DVI->PS translator as argument to PostScript option.    %
%%      Improved recovery from missing {} in labels.                    %
%%      Removed error message from \across since this works now.        %
%%      Loading after \begin{document} in LaTeX2e possible.             %
%%      Loading before \documentstyle or \documentclass possible.       %
%%      Equilateral triangle or regular hexagon size options.           %
%%      Introduced landscape and portrait options.                      %
%%      Define PS commands once for each (outermost) diagram needing    %
%%      them; previously they were defined for every map.               %
%%      Don't hide width of vertical middle components.                 %
%%      Parse []-options during label processing.                       %
%%      Made midhshaft work; always set it for single-row diagrams.     %
%%      \diagramstyle may be used within diagrams.                      %
%%      Vertical maps targetted at labels of horizontals avoid them.    %
%%      Wide object on right no longer causes "increase width" warning. %
%%      Make these warnings more accurate and informative.              %
%%      Fixed decapitated arrows (I think!).                            %
%%      Diagonals adjusted to meet their endpoints, at last!!!!         %
%%      Most of the history has been suppressed from the user version.  %
%% 3.29 Released 11 March 1994                                          %
%% 3.28 Released 30 November 1993                                       %
%%      Peter Freyd's \puncture symbol provided.                        %
%% 3.27 Released 26 March 1993                                          %
%% 3.26 Released 11 February 1993                                       %
%% 3.25 Released 30 January 1993                                        %
%%      LaTeX heads made default (unless \tenln undefined, when vee)    %
%%      Circle, cross, little vee, little black triangle heads.         %
%%      First-use warning when defaulted diagonal components are used.  %
%%      Warning if diagonals used & columns stretched significantly.    %
%%      AMSTEX emulation - works at least when amstex not present.      %
%% 3.24 Release 7 Sept 1992 advertised to users.                        %
%%      PostScript option introduced:                                   %
%%      LaTeX, vee, curlyvee, triangle & blacktriangle heads & tails    %
%%      TPIC option introduced as an alternative to \LaTeX@make@line.   %
%%      New reformatting program.                                       %
%%      Optional arguments on \diagram, maps and \diagramstyle.         %
%% 3.20 (29.4.92) early release of version 4                            %
%%      Postscript arrows (basic code).                                 %
%%      Implemented \newarrow \newarrowhead etc.                        %
%%      Corruption-sensitive characters avoided wherever possible.      %
%%      Reloading prevented.                                            %
%%      Horizontal arrows outside diagram can stretch by wordspacing.   %
%%      Added < and > for labels on left and right of arrow;            %
%% 3.16 (20.7.90) as mass mailed; only have mangled version             %
%% -- all following version numbers are post-facto --                   %
%%  3   (Jan 90) stretching vertical arrows                             %
%%  2   (Sept 89) horizontals stretch to objects; "superscript" labels  %
%%  1   (1987) horizontal arrows stretch to edge of cell                %
%%  0   (1986) implementation of Knuth's TeXercise 18.46                %
%%======================================================================%

%%======================================================================%
%%                                                                      %
%%      (1) CORRUPTION-SENSITIVE HACKS                                  %
%%                                                                      %
%%======================================================================%

%%                      CORRUPTION & \catcode WARNING

%% BITNET (IBM) machines may corrupt certain important characters
%% in transmission by electronic mail:
%%        0123456789=digits, abcdefghijklmnopqrstuvwxyz=lowers,
%%        ABCDEFGHIJKLMNOPQRSTUVWXYZ=uppers, @=at (internal names),
%%        {}=curly braces (grouping), \=backslash (keywords),
%%        %=percent (comment), #=hash/sharp (argument), +=plus, -=minus,
%%        <>=angle brackets (relations \ifnum,\ifdim), ==equals,
%%        ,=comma, .=dot, :=colon, ;=semicolon,  =space
%% $=dollar (maths) is only used in the "bits of maps" section

%% The following characters are marked by a comment including the word "ASCII",
%% except in comments and messages:
%%        &=and (alignment), ~=tilde, |=vertical, []=square brackets,
%%        ^=caret (superscript), _=underline (subscript),
%%        `=grave/backquote (catcodes), '=acute/single quote (octal),
%%        "=double quote (hex), ()=round brackets,
%%        /=slash, ?=query, !=pling/bang, 

%% The \catcode's marked * are assumed for reading this file:
%%          \=0* {=1* }=2* $=3 &=4 return=5* #=6 ^=7 _=8 ignored=9*
%%          space=10* letter=11* other=12 active=13 %=14* invalid=15
%% If you want to load this package inside Stallman's "texinfo", you must do
%%% @catcode`@\=0 \catcode`\%=14 \input diagrams \catcode`\%=12 \catcode`\\=13
%% and then use @diagram @rTo @\ @enddiagram etc. (braces {} stay the same).
%% Also need @catcode`@&=4.

%%*** You *MUST NOT* use the internal commands (with names beginning \Cd@)****

%% don't load me twice!
\ifx\diagram\undefined\else\message{WARNING: the \string\diagram\space command
is already defined and will not be loaded again}\expandafter\endinput\fi

%% make @ letter, saving its old code to restore at the end of this file
%%% look for this on the last line of the file if you think something's missing!
%% the other \catcode assignments are to make it work with texinfo.
\edef\cdrestoreat{%%
\noexpand\catcode\lq\noexpand\@=\the\catcode\lq\@%%
\noexpand\catcode\lq\noexpand\#=\the\catcode\lq\#%%
\noexpand\catcode\lq\noexpand\$=\the\catcode\lq\$%%
\noexpand\catcode\lq\noexpand\<=\the\catcode\lq\<%%
\noexpand\catcode\lq\noexpand\>=\the\catcode\lq\>%%
\noexpand\catcode\lq\noexpand\:=\the\catcode\lq\:%% Johannes L. Braams's
\noexpand\catcode\lq\noexpand\;=\the\catcode\lq\;%% Babel languages package
\noexpand\catcode\lq\noexpand\!=\the\catcode\lq\!%% makes these \active.
\noexpand\catcode\lq\noexpand\?=\the\catcode\lq\?%%
\noexpand\catcode\lq\noexpand\+=\the\catcode\rq53%
%% texinfo @+ is @outer@active
}\catcode\lq\@=11 \catcode\lq\#=6 \catcode\lq\<=12 \catcode\lq\>=12 \catcode
\rq53=12 \catcode\lq\:=12 \catcode\lq\;=12 \catcode\lq\!=12 \catcode\lq\?=12

%% Change y to n if pool_size in your implementation of TeX is small.
%% This is reasonable if you have a small ("personal") computer, but if you
%%% have a sun, dec, hp, ... workstation or a mainframe, complain to your local
%% system manager and get him/her to install a version of TeX with bigger
%% parameters. The "hash size" (number of command names) gets you next.
\ifx\diagram@help@messages\undefined\let\diagram@help@messages y\fi

%% The following macro is used to include literal PostScript commands in the
%% DVI file for rotation, etc.  Since this goes beyond standard TeX, it is
%%% dependent on the convention used by your local DVI-to-PostScript translator.
%% Choose whichever line applies to the program used at your site, or, if
%% yours is not listed, consult the manual, experiment with this macro and
%% (please) tell me what is needed to make it work.
%%
%%
%%% dvips (Tomas Rokicki, Radical Eye) labrea.stanford.edu /pub/dvips9999.tar.Z
%% CTAN: dviware/dvips
\def\cdps@Rokicki#1{\special{ps:#1}}\let\cdps@dvips\cdps@Rokicki\let
\cdps@RadicalEye\cdps@Rokicki\let\Cd@KJ\cdps@Rokicki\let\Cd@CB\cdps@Rokicki
%%
%% I'm not sure that the rest work.
%%
%% dvitps (Stephan Bechtolsheim, Integrated Computer Systems)
%% arthur.cs.purdue.edu /pub/TeXPS-9.99.tar.Z
\def\cdps@Bechtolsheim#1{\special{dvitps: Literal "#1"}}%
%% ASCII two dbl quotes
\let\cdps@dvitps\cdps@Bechtolsheim\let\cdps@IntegratedComputerSystems
\cdps@Bechtolsheim%%
%% dvitops (James Clark)
%% CTAN: dviware/dvitops
\def\cdps@Clark#1{\special{dvitops: inline #1}}%%
\let\cdps@dvitops\cdps@Clark%%
%% OzTeX (Andrew Trevorrow) cannot be used
\let\cdps@OzTeX\empty\let\cdps@oztex\empty\let\cdps@Trevorrow\empty%%
%% dvi3ps (Kevin Coombes)
%% CTAN: dviware/dvi2ps/dvi3ps
\def\cdps@Coombes#1{\special{ps-string #1}}%%
%% psprint (Trevorrow) CTAN: dviware/psprint
%% dvi2ps (Senn) CTAN: dviware/dvi2ps
%% psdvi (Elwell) CTAN: dviware/dvi2ps/psdvi

\count@=\year\multiply\count@12 \advance\count@\month%%
\ifnum\count@>23984 %% (August 1998) It's changing very fast at the moment!
\message{***********************************************************}%%ascii
\message{! THIS IS AN EXPERIMENTAL VERSION OF COMMUTATIVE DIAGRAMS *}%%
\message{! it expired in August 1998 and is time-bombed for January *}%%
\message{! You may get an up to date version of this package from *}%%ascii
\message{! ftp://ftp.dcs.qmw.ac.uk/pub/tex/contrib/pt/diagrams/ *}%%
\message{***********************************************************}%%ascii
\ifnum\count@>23987 %% (November 1998)
\errhelp{You may press RETURN and carry on for the time being.}\message{! It
is embarrassing to see papers in conference proceedings}\message{! and
journals containing bugs which I had fixed years before.}\message{! It is easy
to obtain and install a new version, which will}\errmessage{! remain
compatible with your files. Please get it NOW.}\fi\fi

\def\Cd@oD{\global\let}\def\Cd@mG{\outer\def}

%% safe names for braces, tab (&) and maths ($), as commands and for messages
{\escapechar\m@ne\xdef\Cd@k{\string\{}\xdef\Cd@mC{\string\}}%%
%%
%% three ASCII ampersands (ands) (&&&) appear on the next line
\catcode\lq\&=4 \Cd@oD\Cd@N=&\xdef\Cd@P{\string\&}%%ascii three ands
%%
%% ASCII ^ and _ each appear twice on next line
%% six ASCII dollars ($$$$$$) appear on the next two lines.
\catcode\lq\$=3 \Cd@oD\Cd@h=$\Cd@oD\Cd@zC=$%%ascii three dollars
\xdef\Cd@dC{\string\$}\gdef\Cd@mF{$$}%%ascii three dollars
%%
%% two ASCII underlines (__) appear on the next line.
\catcode\lq\_=8 \Cd@oD\Cd@oI=_%%ascii two underlines
%%
%% six ASCII carets (^^^^^^) appear on the next three lines.
\obeylines\catcode\lq\^=7 \Cd@oD\@super=^%%ascii two carets
\ifnum\newlinechar=10 \gdef\Cd@QG{^^J}%%ascii two carets
\else\ifnum\newlinechar=13 \gdef\Cd@QG{^^M}%%ascii two carets
\else\Cd@oD\Cd@QG\space\expandafter\message{! input error: \noexpand
\newlinechar\space is ASCII \the\newlinechar, not LF=10 or CR=13.}%%
\fi\fi}%%

%% avoid using <> (because I personally re-define them to mean \langle\rangle)
\mathchardef\lessthan=\rq30474 \mathchardef\greaterthan=\rq30476

%% LaTeX line and arrowhead font
%% the "hit return" comments show up if the font is missing.
\ifx\tenln\undefined%%
\font\tenln=line10\relax%% Hit return - who needs diagonals?
\fi\ifx\tenlnw\undefined\ifx\tenln\nullfont\let\tenlnw\nullfont\else%%
\font\tenlnw=linew10\relax%% Hit return - who needs diagonals?
\fi\fi%%

%% report line numbers in TeX3 only
\ifx\inputlineno\undefined\csname newcount\endcsname\inputlineno\inputlineno
\m@ne\message{***************************************************}\message{!
Obsolete TeX (version 2). You should upgrade to *}\message{! version 3, which
has been available since 1990. *}\message{***********************************%
****************}\fi

\newif\if@ignore

\def\cd@shouldnt#1{\Cd@FB{* THIS (#1) SHOULD NEVER HAPPEN! *}}

%% turn round- and square-bracketed arguments into curly-bracketed
\def\get@round@pair#1(#2,#3){#1{#2}{#3}}%%ascii round brackets ()
\def\get@square@arg#1[#2]{#1{#2}}%%ascii square brackets []
\def\Cd@lD#1{\Cd@QJ\let\Cd@tJ\Cd@kD\Cd@kD#1,],}%%ascii sq brackets
\def\Cd@j{[}\def\Cd@BD{]}\def\commdiag#1{{\let\enddiagram\relax\diagram[]#1%
\enddiagram}}

%% ASCII open square bracket occurs on next line
\def\Cd@iE{{\ifx\Cd@aG[\aftergroup\get@square@arg\aftergroup\Cd@tG\else
\aftergroup\Cd@eG\fi}}%%
\def\Cd@hE#1#2{\def\Cd@tG{#1}\def\Cd@eG{#2}\futurelet\Cd@aG\Cd@iE}

%% ASCII vertical bar (|) occurs on the next line
\def\Cd@MJ{|}

\def\Cd@KB{%% arguments to maps inside diagrams
\tokcase\Cd@qC:\Cd@u\break@args;\catcase\@super:\upper@label;\catcase\Cd@oI:%
\lower@label;\tokcase{~}:\middle@label;%%ascii tilde
\tokcase<:\left@label;%%ascii less-than
\tokcase>:\right@label;%%ascii greater-than
\tokcase(:\Cd@wB;%%)%ascii open round bracket
\tokcase[:\optional@;%%]%ascii open square bracket
\tokcase.:\Cd@RI;%%ascii dot 12.7.94
\catcase\space:\eat@space;\catcase\bgroup:\positional@;\default:\Cd@w
\break@args;\endswitch}

\def\switch@arg{%% arguments to horizontal maps outside diagrams
\catcase\@super:\upper@label;\catcase\Cd@oI:\lower@label;\tokcase[:\optional@
;%%]%ascii open square bracket
\tokcase.:\Cd@RI;%%ascii dot 12.7.94 % ; was : before 15.6.97
\catcase\space:\eat@space;\catcase\bgroup:\positional@;\tokcase{~}:%
\middle@label;%%ascii tilde (questionable!)
\default:\Cd@u\break@args;\endswitch}

%% That's as much as you get to read "in clear" - the rest is private!

\let\Cd@wI\relax\ifx\protect\undefined\let\protect\relax\fi\ifx\AtEndDocument
\undefined\def\Cd@QK{\Cd@bB}\def\Cd@NK#1#2{}\else\def\Cd@QK#1{\edef\Cd@ZG{#1}%
\expandafter\Cd@HK\Cd@ZG\Cd@KK}\def\Cd@HK#1\Cd@KK{\AtEndDocument{\typeout{%
\Cd@oA: #1}}}\def\Cd@NK#1#2{\gdef#1{#2}\AtEndDocument{#1}}\fi\def\Cd@VA#1#2{%
\def#1{\Cd@QK{#2\Cd@XD\Cd@T}\Cd@oD#1\relax}}\def\Cd@VF#1\repeat{\def\Cd@l{#1}%
\Cd@tE}\def\Cd@tE{\Cd@l\relax\expandafter\Cd@tE\fi}\def\Cd@TF#1\repeat{\def
\Cd@m{#1}\Cd@uE}\def\Cd@uE{\Cd@m\relax\expandafter\Cd@uE\fi}\def\Cd@UF#1%
\repeat{\def\Cd@n{#1}\Cd@vE}\def\Cd@vE{\Cd@n\relax\expandafter\Cd@vE\fi}\def
\Cd@PG#1#2#3{\def#2{\let#1\iftrue}\def#3{\let#1\iffalse}#3}\if y%
\diagram@help@messages\def\Cd@NG#1#2{\csname newtoks\endcsname#1#1=%
\expandafter{\csname#2\endcsname}}\else\csname newtoks\endcsname\no@cd@help
\no@cd@help{See the manual}\def\Cd@NG#1#2{\let#1\no@cd@help}\fi\chardef\Cd@OF
=1 \chardef\Cd@xH=2 \chardef\Cd@hG=5 \chardef\Cd@IH=6 \chardef\Cd@HH=7
\chardef\Cd@GC=9 \dimendef\Cd@uH=2 \dimendef\Cd@LF=3 \dimendef\Cd@PF=4
\dimendef\Cd@yH=5 \dimendef\Cd@zI=6 \dimendef\Cd@EI=8 \dimendef\Cd@DI=9
\skipdef\Cd@oB=1 \skipdef\Cd@sE=2 \skipdef\Cd@nB=3 \skipdef\Cd@IE=4 \skipdef
\Cd@LJ=5 \skipdef\Cd@wH=6 \skipdef\Cd@NF=7 \skipdef\Cd@BI=8 \skipdef\Cd@AI=9
\countdef\Cd@BC=9 \countdef\Cd@QD=8 \countdef\Cd@A=7 \def\sdef#1#2{\def#1{#2}%
}\def\Cd@I#1{\expandafter\aftergroup\csname#1\endcsname}\def\Cd@IC#1{%
\expandafter\def\csname#1\endcsname}\def\Cd@dD#1{\expandafter\gdef\csname#1%
\endcsname}\def\Cd@jC#1{\expandafter\edef\csname#1\endcsname}\def\Cd@QF#1#2{%
\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}\def\Cd@pD
#1#2{\expandafter\Cd@oD\csname#1\expandafter\endcsname\csname#2\endcsname}%
\def\Cd@CJ#1{\csname#1\endcsname}\def\Cd@bI#1{\expandafter\show\csname#1%
\endcsname}\def\Cd@dI#1{\expandafter\showthe\csname#1\endcsname}\def\Cd@aI#1{%
\expandafter\showbox\csname#1\endcsname}\def\Cd@oA{Commutative Diagram}\edef
\Cd@CH{\string\par}\edef\Cd@UC{\string\diagram}\edef\Cd@uC{\string\enddiagram
}\edef\Cd@xB{\string\\}\def\Cd@IF{LaTeX}\def\Cd@d{{\ifnum0=\lq}\fi}\def\Cd@kC
{\ifnum0=\lq{\fi}}\def\catcase#1:{\ifcat\noexpand\Cd@aG#1\Cd@wI\expandafter
\Cd@aC\else\expandafter\Cd@hI\fi}\def\tokcase#1:{\ifx\Cd@aG#1\Cd@wI
\expandafter\Cd@aC\else\expandafter\Cd@hI\fi}\def\Cd@aC#1;#2\endswitch{#1}%
\def\Cd@hI#1;{}\let\endswitch\relax\def\default:#1;#2\endswitch{#1}\ifx\at@
\undefined\def\at@{@}\fi\edef\Cd@M{\Cd@k pt\Cd@mC}\Cd@IC{\Cd@M>}#1>#2>{\Cd@v
\rTo\sp{#1}\sb{#2}\Cd@v}\Cd@IC{\Cd@M<}#1<#2<{\Cd@v\lTo\sp{#1}\sb{#2}\Cd@v}%
\Cd@IC{\Cd@M)}#1)#2){\Cd@v\rTo\sp{#1}\sb{#2}\Cd@v}%%ascii round
\Cd@IC{\Cd@M(}#1(#2({\Cd@v\lTo\sp{#1}\sb{#2}\Cd@v}%%ascii brack
\def\Cd@L{\def\endCD{\enddiagram}\Cd@IC{\Cd@M A}##1A##2A{\uTo<{##1}>{##2}%
\Cd@v\Cd@v}\Cd@IC{\Cd@M V}##1V##2V{\dTo<{##1}>{##2}\Cd@v\Cd@v}\Cd@IC{\Cd@M=}{%
\Cd@v\hEq\Cd@v}\Cd@IC{\Cd@M\Cd@MJ}{\vEq\Cd@v\Cd@v}\Cd@IC{\Cd@M\string\vert}{%
\vEq\Cd@v\Cd@v}\Cd@IC{\Cd@M.}{\Cd@v\Cd@v}\let\Cd@v\Cd@N}\def\Cd@sD{\let\tmp
\Cd@tD\ifcat A\noexpand\Cd@ZG\else\ifcat=\noexpand\Cd@ZG\else\ifcat\relax
\noexpand\Cd@ZG\else\let\tmp\at@\fi\fi\fi\tmp}\def\Cd@tD#1{\Cd@QF{tmp}{\Cd@M
\string#1}\ifx\tmp\relax\def\tmp{\at@#1}\fi\tmp}\def\Cd@v{}\begingroup
\aftergroup\def\aftergroup\Cd@Q\aftergroup{\aftergroup\def\catcode\lq\@%
\active\aftergroup @\endgroup{\futurelet\Cd@ZG\Cd@sD}}\newcount\Cd@pA
\newcount\Cd@qA\newcount\Cd@rA\newcount\Cd@sA\newdimen\Cd@KA\newdimen\Cd@LA
\Cd@PG\Cd@ME\Cd@w\Cd@u\Cd@PG\Cd@NE\Cd@AA\Cd@y\newdimen\Cd@NA\newdimen\Cd@OA
\newcount\Cd@tA\newcount\Cd@uA\newdimen\Cd@MA\newbox\Cd@@A\Cd@PG\Cd@RE\Cd@YA
\Cd@XA\newcount\Cd@gG\newcount\Cd@KC\def\Cd@S#1#2{\ifdim#1<#2\relax#1=#2%
\relax\fi}\def\Cd@U#1#2{\ifdim#1>#2\relax#1=#2\relax\fi}\newdimen\Cd@sG\Cd@sG
=1sp \newdimen\Cd@nC\Cd@nC\z@\def\Cd@gI{\ifdim\Cd@nC=1em\else\Cd@qI\fi}\def
\Cd@qI{\Cd@nC1em\def\Cd@FC{\fontdimen8\textfont3 }\Cd@LI\Cd@zJ\setbox0=\vbox{%
\Cd@p\noindent\Cd@h\null\penalty-9993\null\Cd@zC\null\endgraf\setbox0=%
\lastbox\unskip\unpenalty\setbox1=\lastbox\global\setbox\Cd@jF=\hbox{\unhbox0%
\unskip\unskip\unpenalty\setbox0=\lastbox}\global\setbox\Cd@lF=\hbox{\unhbox1%
\unskip\unpenalty\setbox1=\lastbox}}}\newdimen\Cd@NH\Cd@NH=1true in \divide
\Cd@NH300 \def\Cd@MH#1{\multiply#1\tw@\advance#1\ifnum#1<\z@-\else+\fi\Cd@NH
\divide#1\tw@\divide#1\Cd@NH\multiply#1\Cd@NH}\def\MapBreadth{%
\afterassignment\Cd@tH\Cd@qE}\newdimen\Cd@qE\newdimen\Cd@@I\def\Cd@tH{\Cd@@I
\Cd@qE\Cd@S\Cd@NH{4\Cd@sG}\Cd@U\Cd@NH\p@\Cd@MH\Cd@@I\ifdim\Cd@qE>\z@\Cd@S
\Cd@@I\Cd@NH\fi\Cd@gI}\def\Cd@WI#1{\Cd@jD\count@\Cd@NH#1\ifnum\count@>\z@
\divide\Cd@NH\count@\fi\Cd@tH\Cd@zJ}\def\Cd@zJ{\dimen@\Cd@HC\count@\dimen@
\divide\count@5\divide\count@\Cd@NH\edef\Cd@mJ{\the\count@}}\def\Cd@MI{\Cd@VK
\z@}\def\Cd@VK#1{\Cd@EI\axisheight\advance\Cd@EI#1\relax\advance\Cd@EI-.5%
\Cd@@I\Cd@MH\Cd@EI\Cd@DI-\Cd@EI\advance\Cd@EI\Cd@qE}\newdimen\Cd@GK\Cd@GK\z@
\newdimen\Cd@WK\Cd@WK\z@\def\Cd@UK#1{\Cd@DI#1\relax\Cd@EI\Cd@DI\advance\Cd@EI
\Cd@qE\relax}\def\horizhtdp{height\Cd@EI depth\Cd@DI}\def\axisheight{%
\fontdimen22\the\textfont\tw@}\def\script@axisheight{\fontdimen22\the
\scriptfont\tw@}\def\ss@axisheight{\fontdimen22\the\scriptscriptfont\tw@}\def
\Cd@FC{0.4pt}\def\Cd@WJ{\fontdimen3\textfont\z@}\def\Cd@VJ{\fontdimen3%
\textfont\z@}\newdimen\PileSpacing\newdimen\Cd@hA\Cd@hA\z@\def\Cd@kA{%
\ifincommdiag1.3em\else2em\fi}\newdimen\Cd@TB\def\CellSize{\afterassignment
\Cd@fB\DiagramCellHeight}\newdimen\DiagramCellHeight\DiagramCellHeight-%
\maxdimen\newdimen\DiagramCellWidth\DiagramCellWidth-\maxdimen\def\Cd@fB{%
\DiagramCellWidth\DiagramCellHeight}\def\Cd@HC{3em}\newdimen\MapShortFall\def
\MapsAbut{\MapShortFall\z@\objectheight\z@\objectwidth\z@}\newdimen\Cd@cA
\Cd@cA\z@\def\newarrowhead{\Cd@IG h\Cd@cF\Cd@hF>}\def\newarrowtail{\Cd@IG t%
\Cd@cF\Cd@hF>}\def\newarrowmiddle{\Cd@IG m\Cd@cF\hbox@maths\empty}\def
\newarrowfiller{\Cd@IG f\Cd@KE\Cd@OJ-}\def\Cd@IG#1#2#3#4#5#6#7#8#9{\Cd@IC{r#1%
:#5}{#2{#6}}\Cd@IC{l#1:#5}{#2{#7}}\Cd@IC{d#1:#5}{#3{#8}}\Cd@IC{u#1:#5}{#3{#9}%
}\Cd@jC{-#1:#5}{\expandafter\noexpand\csname-#1:#4\endcsname\noexpand\Cd@EC}%
\Cd@jC{+#1:#5}{\expandafter\noexpand\csname+#1:#4\endcsname\noexpand\Cd@EC}}%
\Cd@VA\Cd@EC{\Cd@IF\space diagonals are used unless PostScript is set}\def
\defaultarrowhead#1{\edef\Cd@vI{#1}\Cd@LI}\def\Cd@LI{\Cd@QI\Cd@vI<>ht\Cd@QI
\Cd@vI<>th}\def\Cd@QI#1#2#3#4#5{\Cd@OI{r#4}{#3}{l#5}{#2}{r#4:#1}\Cd@OI{r#5}{#%
2}{l#4}{#3}{l#4:#1}\Cd@OI{d#4}{#3}{u#5}{#2}{d#4:#1}\Cd@OI{d#5}{#2}{u#4}{#3}{u%
#4:#1}}\def\Cd@OI#1#2#3#4#5{\begingroup\aftergroup\Cd@PI\Cd@I{#1+:#2}\Cd@I{#1%
:#2}\Cd@I{#3:#4}\Cd@I{#5}\endgroup}\def\Cd@PI#1#2#3#4{\csname newbox%
\endcsname#1\def#2{\copy#1}\def#3{\copy#1}\setbox#1=\box\voidb@x}\def\Cd@vI{}%
\Cd@LI\def\Cd@PI#1#2#3#4{\setbox#1=#4}\ifx\tenln\nullfont\def\Cd@vI{vee}\else
\let\Cd@vI\Cd@IF\fi\def\Cd@XF#1#2#3{\begingroup\aftergroup\Cd@YF\Cd@I{#1#2:#3%
#3}\Cd@I{#1#2:#3}\endgroup}\def\Cd@YF#1#2{\def#1{\hbox{\rlap{#2}\kern.4\Cd@nC
#2}}}\Cd@XF rh>\Cd@XF lh>\Cd@XF rt>\Cd@XF lt>\Cd@XF rh<\Cd@XF lh<\Cd@XF rt<%
\Cd@XF lt<\def\Cd@YF#1#2{\def#1{\vbox{\vbox to\z@{#2\vss}\nointerlineskip
\kern.4\Cd@nC#2}}}\Cd@XF dh>\Cd@XF uh>\Cd@XF dt>\Cd@XF ut>\Cd@XF dh<\Cd@XF uh%
<\Cd@XF dt<\Cd@XF ut<\def\Cd@cF#1{\hbox{\mathsurround\z@\offinterlineskip
\Cd@h\mkern-1.5mu{#1}\mkern-1.5mu\Cd@zC}}\def\hbox@maths#1{\hbox{\Cd@h#1%
\Cd@zC}}\def\Cd@hF#1{\hbox to\Cd@qE{\setbox0=\hbox{\offinterlineskip
\mathsurround\z@\Cd@h{#1}\Cd@zC}\dimen0.5\wd0\advance\dimen0-.5\Cd@@I\Cd@MH{%
\dimen0}\kern-\dimen0\unhbox0\hss}}\def\Cd@dJ#1{\hbox to2\Cd@qE{\hss
\offinterlineskip\mathsurround\z@\Cd@h{#1}\Cd@zC\hss}}\def\Cd@WF#1{\hbox{%
\mathsurround\z@\Cd@h{#1}\Cd@zC}}\def\Cd@KE#1{\hbox{\kern-.15\Cd@nC\Cd@h{#1}%
\Cd@zC\kern-.15\Cd@nC}}\def\Cd@OJ#1{\vbox{\offinterlineskip\kern-.2ex\Cd@hF{#%
1}\kern-.2ex}}\def\@fillh{\xleaders\vrule\horizhtdp}\def\@fillv{\xleaders
\hrule width\Cd@qE}\Cd@QF{rf:-}{@fillh}\Cd@QF{lf:-}{@fillh}\Cd@QF{df:-}{%
@fillv}\Cd@QF{uf:-}{@fillv}\Cd@QF{rh:}{null}\Cd@QF{rm:}{null}\Cd@QF{rt:}{null%
}\Cd@QF{lh:}{null}\Cd@QF{lm:}{null}\Cd@QF{lt:}{null}\Cd@QF{dh:}{null}\Cd@QF{%
dm:}{null}\Cd@QF{dt:}{null}\Cd@QF{uh:}{null}\Cd@QF{um:}{null}\Cd@QF{ut:}{null%
}\Cd@QF{+h:}{null}\Cd@QF{+m:}{null}\Cd@QF{+t:}{null}\Cd@QF{-h:}{null}\Cd@QF{-%
m:}{null}\Cd@QF{-t:}{null}\def\Cd@IK{\hbox{\vrule height 1pt depth-1pt width 1%
pt}}\Cd@IC{rf:}{\Cd@IK}\Cd@QF{lf:}{rf:}\Cd@QF{+f:}{rf:}\Cd@IC{df:}{\Cd@IK}%
\Cd@QF{uf:}{df:}\Cd@QF{-f:}{df:}\def\Cd@JK{\Cd@R\null\Cd@IK\null\Cd@IK\null}%
\edef\Cd@HG{\string\newarrow}\def\newarrow#1#2#3#4#5#6{\begingroup\edef\@name
{#1}\edef\Cd@rI{#2}\edef\Cd@SD{#3}\edef\Cd@qF{#4}\edef\Cd@TD{#5}\edef\Cd@vD{#%
6}\let\Cd@rD\Cd@OG\let\Cd@HJ\Cd@YG\let\@x\Cd@XG\ifx\Cd@rI\Cd@SD\let\Cd@rI
\empty\fi\ifx\Cd@vD\Cd@TD\let\Cd@vD\empty\fi\def\Cd@ZH{r}\def\Cd@xE{l}\def
\Cd@AC{d}\def\Cd@AJ{u}\def\Cd@zG{+}\def\@m{-}\ifx\Cd@SD\Cd@TD\ifx\Cd@qF\Cd@SD
\let\Cd@qF\empty\fi\ifx\Cd@vD\empty\ifx\Cd@SD\Cd@JE\let\@x\Cd@UG\else\let\@x
\Cd@VG\fi\fi\else\edef\Cd@X{\Cd@SD\Cd@rI}\ifx\Cd@X\empty\ifx\Cd@qF\Cd@TD\let
\Cd@qF\empty\fi\fi\fi\ifmmode\aftergroup\Cd@GG\else\Cd@w\Cd@jB rh{head\space
\space}\Cd@vD\Cd@jB rf{filler}\Cd@SD\Cd@jB rm{middle}\Cd@qF\ifx\Cd@TD\Cd@SD
\else\Cd@jB rf{filler}\Cd@TD\fi\Cd@jB rt{tail\space\space}\Cd@rI\Cd@ME\Cd@rD
\Cd@HJ\@x\Cd@JG l-2+2{lu}{nw}\NorthWest\Cd@JG r+2+2{ru}{ne}\NorthEast\Cd@JG l%
-2-2{ld}{sw}\SouthWest\Cd@JG r+2-2{rd}{se}\SouthEast\else\aftergroup\Cd@Y
\Cd@I{r\@name}\fi\fi\endgroup}\def\Cd@OG{\Cd@RG\Cd@ZH\Cd@xE rl\Horizontal@Map
}\def\Cd@YG{\Cd@RG\Cd@AC\Cd@AJ du\Vertical@Map}\def\Cd@XG{\Cd@RG\Cd@zG\@m+-%
\Vector@Map}\def\Cd@UG{\Cd@RG\Cd@zG\@m+-\Slant@Map}\def\Cd@VG{\Cd@RG\Cd@zG\@m
+-\Slope@Map}\catcode\lq\/=\active\def\Cd@RG#1#2#3#4#5{\Cd@FG#1#3#5t:\Cd@rI/f%
:\Cd@SD/m:\Cd@qF/f:\Cd@TD/h:\Cd@vD//\Cd@FG#2#4#5h:\Cd@vD/f:\Cd@TD/m:\Cd@qF/f:%
\Cd@SD/t:\Cd@rI//}\def\Cd@FG#1#2#3#4//{\edef\Cd@BG{#2}\aftergroup\sdef\Cd@I{#%
1\@name}\aftergroup{\aftergroup#3\Cd@J#4//\aftergroup}}\def\Cd@J#1/{\edef
\Cd@aG{#1}\ifx\Cd@aG\empty\else\Cd@I{\Cd@BG#1}\expandafter\Cd@J\fi}\catcode
\lq\/=12 \def\Cd@JG#1#2#3#4#5#6#7#8{\aftergroup\sdef\Cd@I{#6\@name}%
\aftergroup{\Cd@I{#2\@name}\if#2#4\aftergroup\Cd@QH\else\aftergroup\Cd@PH\fi
\Cd@I{#1\@name}%% ASCII round brackets and comma (,) appear on the next line
\aftergroup(\aftergroup#3\aftergroup,\aftergroup#5\aftergroup)\aftergroup}}%
\def\Cd@jB#1#2#3#4{\expandafter\ifx\csname#1#2:#4\endcsname\relax\Cd@u\Cd@bB{%
arrow#3 "#4" undefined}\fi}\Cd@NG\Cd@EE{All five components must be defined
before an arrow.}\Cd@NG\Cd@BE{\Cd@HG, unlike \string\HorizontalMap, is a
declaration.}\def\Cd@Y#1{\Cd@UA{Arrows \string#1 etc could not be defined}%
\Cd@EE}\def\Cd@GG{\Cd@UA{misplaced \Cd@HG}\Cd@BE}\def\newdiagramgrid#1#2#3{%
\Cd@IC{cdgh@#1}{#2,],}%% ASCII close square bracket
\Cd@IC{cdgv@#1}{#3,],}}%% ASCII close square bracket
\Cd@PG\ifincommdiag\incommdiagtrue\incommdiagfalse\Cd@PG\Cd@fE\Cd@nE\Cd@mE
\newcount\Cd@RA\Cd@RA=0 \def\Cd@LH{\Cd@RA6 }\def\Cd@JB{\Cd@RA1 \global\Cd@tA1
\Cd@oD\Cd@CF\empty}\def\Cd@CF{}\def\Cd@iB#1{\relax\Cd@xC\edef\Cd@yI{#1}%
\begingroup\Cd@XE\else\ifcase\Cd@RA\ifmmode\else\Cd@wF\Cd@E0\fi\or\Cd@LE5\or
\Cd@wF\Cd@F5\or\Cd@wF\Cd@B5\or\Cd@wF\Cd@B5\or\Cd@wF\Cd@C5\or\Cd@LE7\or\Cd@wF
\Cd@D7\fi\fi\endgroup\xdef\Cd@CF{#1}}\def\Cd@kB#1#2#3#4#5{\relax\Cd@xC\xdef
\Cd@yI{#4}\begingroup\ifnum\Cd@RA<#1 \expandafter\Cd@LE\ifcase\Cd@RA0\or#2\or
#3\else#2\fi\else\ifnum\Cd@RA<6 \Cd@wI\Cd@wF\Cd@B#2\else\Cd@wF\Cd@G#2\fi\fi
\endgroup\Cd@oD\Cd@CF\Cd@yI\ifincommdiag\let\Cd@JD#5\else\let\Cd@JD\Cd@NJ\fi}%
\def\Cd@JI{\global\Cd@tA=\ifnum\Cd@RA<5 1\else2\fi\relax}\def\Cd@cH{\Cd@RA
\Cd@tA}\def\Cd@LE#1{\aftergroup\Cd@RA\aftergroup#1\aftergroup\relax}\def
\Cd@dG{\def\Cd@iB##1{\relax}\let\Cd@kB\Cd@bG\let\Cd@LH\relax\let\Cd@JB\relax
\let\Cd@JI\relax\let\Cd@cH\relax}\def\Cd@bG#1#2#3#4#5{\ifincommdiag\let\Cd@JD
#5\else\xdef\Cd@yI{#4}\let\Cd@JD\Cd@NJ\fi}\def\Cd@wF#1{\aftergroup#1%
\aftergroup\relax\Cd@LE}\def\Cd@B{\Cd@HE\Cd@P\Cd@wD\Cd@N}\def\Cd@G{\Cd@HE{%
\Cd@mC\Cd@P}\Cd@GE\Cd@@D\Cd@N}\def\Cd@F{\Cd@HE{*\Cd@P}\Cd@AE\clubsuit\Cd@N}%
\def\Cd@C{\Cd@HE{\Cd@P*\Cd@P}\Cd@AE\Cd@N\clubsuit\Cd@N}\def\Cd@D{\Cd@HE\Cd@xB
\Cd@CE\\}\def\Cd@E{\Cd@HE\Cd@dC\Cd@@E\Cd@h}\def\Cd@NJ{\Cd@UA{\Cd@yI\space
ignored \Cd@yG}\Cd@FE}\def\Cd@qD{}\def\Cd@a{\Cd@UA{maps must never be enclosed
in braces}\Cd@yD}\def\Cd@yG{outside diagram}\def\Cd@yB{\string\HonV, \string
\VonH\space and \string\HmeetV}\Cd@NG\Cd@wD{The way that horizontal and
vertical arrows are terminated implicitly means\Cd@QG that they cannot be
mixed with each other or with \Cd@yB.}\Cd@NG\Cd@GE{\string\pile\space is for
parallel horizontal arrows; verticals can just be put together in\Cd@QG a cell%
. \Cd@yB\space are not meaningful in a \string\pile.}\Cd@NG\Cd@AE{The
horizontal maps must point to an object, not each other (I've put in\Cd@QG one
which you're unlikely to want). Use \string\pile\space if you want them
parallel.}\Cd@NG\Cd@CE{Parallel horizontal arrows must be in separate layers
of a \string\pile.}\Cd@NG\Cd@@E{Horizontal arrows may be used \Cd@yG s, but
must still be in maths.}\Cd@NG\Cd@FE{Vertical arrows, \Cd@yB\space\Cd@yG s don%
't know where\Cd@QG where to terminate.}\Cd@NG\Cd@yD{This prevents them from
stretching correctly.}\def\Cd@HE#1{\Cd@UA{"#1" inserted \ifx\Cd@CF\empty
before \Cd@yI\else between \Cd@CF\ifx\Cd@CF\Cd@yI s\else\space and \Cd@yI\fi
\fi}}\count@=\year\multiply\count@12 \advance\count@\month\ifnum\count@>23989
\message{because this one expired in August 1998!}\expandafter\endinput\fi
\def\Horizontal@Map{\Cd@iB{horizontal map}\Cd@DC\Cd@YI\Cd@bD}\def\Cd@YI{%
\Cd@BB-9999 \let\Cd@JD\Cd@HD\ifincommdiag\else\Cd@gI\ifinpile\else\skip2\z@
plus 1.5\Cd@WJ minus .5\Cd@VJ\skip4\skip2 \fi\fi\let\Cd@VD\@fillh\let\Cd@UD
\hfdot}\def\Vector@Map{\Cd@JJ4}\def\Slant@Map{\Cd@JJ{\Cd@kE255\else6\fi}}\def
\Slope@Map{\Cd@JJ\Cd@mJ}\def\Cd@JJ#1#2#3#4#5#6{\Cd@DC\def\Cd@XJ{2}\def\Cd@bJ{%
2}\def\Cd@aJ{1}\def\Cd@cJ{1}\let\Horizontal@Map\Cd@zH\def\Cd@pF{#1}\def\Cd@bH
{\Cd@R#2#3#4#5#6}}\def\Cd@zH{\Cd@YI\Cd@EB\let\Cd@JD\Cd@DD\Cd@bD}\Cd@PG\Cd@VE
\Cd@mA\Cd@lA\Cd@mA\def\cds@missives{\Cd@mA}\def\Cd@DD{\Cd@bE\let\Cd@pF\Cd@mJ
\Cd@t\Cd@MK\Cd@AF\fi\setbox\z@\hbox{\incommdiagfalse\Cd@VH}\Cd@VE\Cd@KD\else
\global\Cd@PC\Cd@LD\fi\Cd@MK\else\Cd@JK\global\Cd@PC\let\Cd@dF\Cd@RK\Cd@ID\fi
\else\Cd@bH\Cd@aH\global\Cd@PC\Cd@ID\fi}\def\Cd@DC{\begingroup\dimen1=%
\MapShortFall\dimen2=\Cd@kA\dimen5=\MapShortFall\setbox3=\box\voidb@x\setbox6%
=\box\voidb@x\setbox7=\box\voidb@x\Cd@aD\mathsurround\z@\skip2\z@ plus1fill
minus 1000pt\skip4\skip2 \Cd@OB}\Cd@PG\Cd@ZE\Cd@PB\Cd@OB\def\Cd@R#1#2#3#4#5{%
\let\Cd@rI#1\let\Cd@SD#2\let\Cd@qF#3\let\Cd@TD#4\let\Cd@vD#5\Cd@OB\ifx\Cd@SD
\Cd@TD\Cd@PB\fi}\def\Cd@bD#1#2#3#4#5{\Cd@R#1#2#3#4#5\Cd@eD}\def\Vertical@Map{%
\Cd@kB433{vertical map}\Cd@MD\Cd@DC\Cd@BB-9995 \let\Cd@VD\@fillv\let\Cd@UD
\vfdot\Cd@bD}\def\break@args{\def\Cd@eD{\Cd@JD}\Cd@JD\endgroup\aftergroup
\Cd@qD}\def\Cd@TI{\setbox1=\Cd@rI\setbox5=\Cd@vD\ifvoid3 \ifx\Cd@qF\null\else
\setbox3=\Cd@qF\fi\fi\Cd@aF2\Cd@SD\Cd@aF4\Cd@TD}\def\Cd@PK#1{\ifvoid1\else
\Cd@OK1#1\fi\ifvoid2\else\Cd@OK2#1\fi\ifvoid3\else\Cd@OK3#1\fi\ifvoid4\else
\Cd@OK4#1\fi\ifvoid5\else\Cd@OK5#1\fi} \def\Cd@OK#1#2{\setbox#1\vbox{%
\offinterlineskip\box#1\dimen@\prevdepth\advance\dimen@-#2\relax\setbox0\null
\dp0\dimen@\ht0-\dimen@\box0}}\def\Cd@aF#1#2{\ifx#2\Cd@VD\setbox#1=\box
\voidb@x\else\setbox#1=#2\def#2{\xleaders\box#1}\fi}\Cd@VA\Cd@DJ{\string
\HorizontalMap, \string\VerticalMap\space and \string\DiagonalMap\Cd@QG are
obsolete - use \Cd@HG\space to pre-define maps}\def\HorizontalMap#1#2#3#4#5{%
\Cd@DJ\Cd@iB{old horizontal map}\Cd@DC\Cd@YI\def\Cd@rI{\Cd@pG{#1}}\Cd@nG
\Cd@SD{#2}\def\Cd@qF{\Cd@pG{#3}}\Cd@nG\Cd@TD{#4}\def\Cd@vD{\Cd@pG{#5}}\Cd@eD}%
\def\VerticalMap#1#2#3#4#5{\Cd@DJ\Cd@kB433{vertical map}\Cd@MD\Cd@DC\Cd@BB-%
9995 \let\Cd@VD\@fillv\def\Cd@rI{\Cd@hF{#1}}\Cd@qG\Cd@SD{#2}\def\Cd@qF{\Cd@hF
{#3}}\Cd@qG\Cd@TD{#4}\def\Cd@vD{\Cd@hF{#5}}\Cd@eD}\def\DiagonalMap#1#2#3#4#5{%
\Cd@DJ\Cd@DC\def\Cd@pF{4}\let\Cd@VD\undefined\let\Cd@JD\Cd@ID\def\Cd@XJ{2}%
\def\Cd@bJ{2}\def\Cd@aJ{1}\def\Cd@cJ{1}\def\Cd@qF{\Cd@WF{#3}}%
\ifPositiveGradient\let\mv\raise\def\Cd@rI{\Cd@WF{#5}}\def\Cd@SD{\Cd@WF{#4}}%
\def\Cd@TD{\Cd@WF{#2}}\def\Cd@vD{\Cd@WF{#1}}\else\let\mv\lower\def\Cd@rI{%
\Cd@WF{#1}}\def\Cd@SD{\Cd@WF{#2}}\def\Cd@TD{\Cd@WF{#4}}\def\Cd@vD{\Cd@WF{#5}}%
\fi\Cd@eD}\def\Cd@JE{-}\def\Cd@oC{\empty}\def\Cd@nG{\Cd@fF\Cd@KE\Cd@JE\@fillh
}\def\Cd@qG{\Cd@fF\Cd@OJ\Cd@MJ\@fillv}\def\Cd@fF#1#2#3#4#5{\def\Cd@ZG{#5}\ifx
\Cd@ZG#2\let#4#3\else\let#4\null\ifx\Cd@ZG\empty\else\ifx\Cd@ZG\Cd@oC\else
\let#4\Cd@ZG\fi\fi\fi}\def\Cd@pG#1{\hbox{\mathsurround\z@\offinterlineskip
\def\Cd@ZG{#1}\ifx\Cd@ZG\empty\else\ifx\Cd@ZG\Cd@oC\else\Cd@h\mkern-1.5mu{%
\Cd@ZG}\mkern-1.5mu\Cd@zC\fi\fi}}\def\Cd@hD#1#2{\setbox#1=\hbox\bgroup\setbox
0=\hbox{\Cd@h\labelstyle()\Cd@zC}%% ASCII round brackets
\setbox1=\null\ht1\ht0\dp1\dp0\box1 \kern.1\Cd@nC\Cd@h\bgroup\labelstyle
\aftergroup\Cd@yC\Cd@iD}\def\Cd@yC{\Cd@zC\kern.1\Cd@nC\egroup\Cd@eD}\def
\Cd@iD{\futurelet\Cd@aG\Cd@pI}\def\Cd@pI{%% qualifiers on label arguments
\catcase\bgroup:\Cd@r;\catcase\egroup:\missing@label;\catcase\space:\Cd@yE;%
\tokcase[:\Cd@BF;%%]%ascii close square bracket 
\default:\Cd@BJ;\endswitch}\def\Cd@r{\let\Cd@xC\Cd@Z\let\Cd@ZG}\def\Cd@BJ#1{%
\let\Cd@zE\egroup{\let\actually@braces@missing@around@macro@in@label\Cd@uG
\let\Cd@xC\Cd@lC\let\Cd@zE\Cd@@F#1%
\actually@braces@missing@around@macro@in@label}\Cd@zE}\def
\actually@braces@missing@around@macro@in@label{\let\Cd@ZG=}\def\missing@label
{\egroup\Cd@UA{missing label}\Cd@zD}\def\Cd@lC{\egroup\missing@label}\outer
\def\Cd@uG{}\def\Cd@zE{}\def\Cd@@F{\Cd@kC\Cd@zE}\def\Cd@xC{}\def\Cd@BF{\let
\Cd@K\Cd@iD\get@square@arg\Cd@lD}\Cd@NG\Cd@zD{The text which has just been
read is not allowed within map labels.}\def\Cd@Z{\egroup\Cd@UA{missing \Cd@mC
\space inserted after label}\Cd@zD}\def\upper@label{\Cd@ZD\Cd@hD6}\def
\lower@label{\def\positional@{\Cd@w\break@args}\Cd@hD7}\def\middle@label{%
\Cd@hD3}\Cd@PG\Cd@eE\Cd@aD\Cd@ZD\def\left@label{\ifPositiveGradient\Cd@wI
\expandafter\upper@label\else\expandafter\lower@label\fi}\def\right@label{%
\ifPositiveGradient\Cd@wI\expandafter\lower@label\else\expandafter
\upper@label\fi}\Cd@VA\Cd@lG{labels as positional arguments are obsolete}\def
\positional@{\Cd@lG\Cd@eE\Cd@wI\expandafter\upper@label\else\expandafter
\lower@label\fi-}\def\Cd@eD{\futurelet\Cd@aG\switch@arg}\def\eat@space{%
\afterassignment\Cd@eD\let\Cd@aG= }\def\Cd@yE{\afterassignment\Cd@iD\let
\Cd@aG= }\def\Cd@wB{\get@round@pair\Cd@fD}\def\Cd@fD#1#2{\def\Cd@XJ{#1}\def
\Cd@bJ{#2}\Cd@eD}\def\optional@{\let\Cd@K\Cd@eD\get@square@arg\Cd@lD}\def
\Cd@RI.{\Cd@oJ\Cd@eD}\def\Cd@oJ{\let\Cd@SD\Cd@UD\let\Cd@TD\Cd@UD\def\Cd@aH{%
\let\Cd@SD\dfdot\let\Cd@TD\dfdot}}\def\Cd@aH{}\def\Cd@kD#1,{\Cd@EH#1,%
\begingroup\ifx\@name\Cd@BD\Cd@lE\aftergroup\Cd@b\fi\aftergroup\Cd@nJ\else
\expandafter\def\expandafter\Cd@wE\expandafter{\csname\@name\endcsname}%
\expandafter\Cd@rJ\Cd@wE\Cd@pJ\ifx\Cd@wE\empty\aftergroup\Cd@eC\expandafter
\aftergroup\csname\Cd@AB\@name\endcsname\expandafter\aftergroup\csname\Cd@AB @%
\@name\endcsname\else\gdef\Cd@qJ{#1}\Cd@bB{\string\relax\space inserted before
`[\Cd@qJ'}\message{(I was trying to read this as a \Cd@oA\ option.)}%
\aftergroup\Cd@lJ\fi\fi\endgroup}\def\Cd@rJ#1#2\Cd@pJ{\def\Cd@wE{#2}}\def
\Cd@nJ{\let\Cd@ZG\Cd@K\let\Cd@K\relax\Cd@ZG}\def\Cd@lJ#1],{%
%% ASCII close square bracket
\Cd@nJ\relax\def\Cd@wE{#1}\ifx\Cd@wE\empty\def\Cd@wE{[\Cd@qJ]}%
%% ASCII open and close square bracket
\else\def\Cd@wE{[\Cd@qJ,#1]}%% ASCII open and close square bracket
\fi\Cd@wE}\def\Cd@eC#1#2{\ifx#2\undefined\ifx#1\undefined\Cd@bB{option `%
\@name' undefined}\else#1\fi\else\Cd@lE\expandafter#2\Cd@IJ\Cd@QJ\else\Cd@RJ
\fi\fi\Cd@tJ}\Cd@PG\Cd@lE\Cd@RJ\Cd@QJ\def\Cd@EH#1,{\Cd@lE\ifx\Cd@IJ\undefined
\Cd@b\else\expandafter\Cd@GH\Cd@IJ,#1,(,),(,)[]%
%%ASCII 5commas two pairs round, pair square
\fi\fi\Cd@lE\else\Cd@FH#1==,\fi}\def\Cd@b{\Cd@bB{option `\@name' needs (x,y)
value}\Cd@QJ\let\@name\empty}\def\Cd@FH#1=#2=#3,{\def\@name{#1}\def\Cd@IJ{#2}%
\def\Cd@wE{#3}\ifx\Cd@wE\empty\let\Cd@IJ\undefined\fi}%
%% ASCII 2commas 2pair round, pair square on next line
\def\Cd@GH#1(#2,#3)#4,(#5,#6)#7[]{\def\Cd@IJ{{#2}{#3}}\def\Cd@wE{#1#4#5#6}%
\ifx\Cd@wE\empty\def\Cd@wE{#7}\ifx\Cd@wE\empty\Cd@b\fi\else\Cd@b\fi}\def
\Cd@AB{cds@}\let\Cd@K\relax\def\Cd@jD#1{\ifx\Cd@IJ\undefined\Cd@bB{option `%
\@name' needs a value}\else#1\Cd@IJ\relax\fi}\def\Cd@mD#1#2{\ifx\Cd@IJ
\undefined#1#2\relax\else#1\Cd@IJ\relax\fi}\def\cds@@showpair#1#2{\message{x=%
#1,y=#2}}\def\cds@@diagonalbase#1#2{\edef\Cd@aJ{#1}\edef\Cd@cJ{#2}}\def\Cd@RH
#1{\Cd@QF{@x}{cdps@#1}\ifx\@x\relax\Cd@c{unknown}\else\ifx\@x\empty\Cd@c{%
cannot be used}\else\let\Cd@KJ\@x\fi\fi}\def\Cd@c#1{\Cd@bB{PostScript
translator `\Cd@IJ' #1}\Cd@UB\let\cds@PS\empty\let\cds@noPS\empty}\def\Cd@kG{%
}\def\Cd@VI{\Cd@ZA\edef\Cd@kG{\noexpand\Cd@FB{\@name\space ignored within
maths}}}\def\diagramstyle{\Cd@gI\let\Cd@K\relax\Cd@hE\Cd@lD\Cd@lD}\let
\diagramsstyle\diagramstyle\Cd@PG\Cd@YE\Cd@NB\Cd@MB\Cd@PG\Cd@WE\Cd@@B\Cd@zA
\Cd@PG\Cd@UE\Cd@jA\Cd@iA\Cd@PG\Cd@OE\Cd@DA\Cd@CA\Cd@DA\Cd@PG\Cd@PE\Cd@FA
\Cd@EA\Cd@PG\Cd@QE\Cd@HA\Cd@GA\Cd@PG\Cd@bE\Cd@VB\Cd@UB\Cd@PG\Cd@kE\Cd@FJ
\Cd@EJ\Cd@PG\Cd@XE\Cd@EB\Cd@DB\Cd@PG\Cd@SE\Cd@aA\Cd@ZA\Cd@PG\Cd@TE\Cd@eA
\Cd@dA\Cd@PG\Cd@gE\Cd@EG\Cd@DG\Cd@IC{cds@ }{}\Cd@IC{cds@}{}\Cd@IC{cds@1em}{%
\CellSize1\Cd@nC}\Cd@IC{cds@1.5em}{\CellSize1.5\Cd@nC}\Cd@IC{cds@2em}{%
\CellSize2\Cd@nC}\Cd@IC{cds@2.5em}{\CellSize2.5\Cd@nC}\Cd@IC{cds@3em}{%
\CellSize3\Cd@nC}\Cd@IC{cds@3.5em}{\CellSize3.5\Cd@nC}\Cd@IC{cds@4em}{%
\CellSize4\Cd@nC}\Cd@IC{cds@4.5em}{\CellSize4.5\Cd@nC}\Cd@IC{cds@5em}{%
\CellSize5\Cd@nC}\Cd@IC{cds@6em}{\CellSize6\Cd@nC}\Cd@IC{cds@7em}{\CellSize7%
\Cd@nC}\Cd@IC{cds@8em}{\CellSize8\Cd@nC}\def\cds@abut{\MapsAbut\dimen1\z@
\dimen5\z@}\def\cds@alignlabels{\Cd@EA\Cd@GA}\def\cds@amstex{\ifincommdiag
\Cd@L\else\def\CD{\diagram[amstex]}%%ascii square brackets []
\fi\Cd@Q\catcode\lq\@\active}\def\cds@b{\let\Cd@YB\Cd@WB}\def\cds@balance{%
\let\Cd@bA\Cd@x}\let\cds@bottom\cds@b\def\cds@center{\cds@vcentre
\cds@nobalance}\let\cds@centre\cds@center\def\cds@centerdisplay{\Cd@DA\Cd@VI
\cds@balance}\let\cds@centredisplay\cds@centerdisplay\def\cds@crab{\Cd@mD
\Cd@GK{.5\PileSpacing}}\Cd@IC{cds@crab-}{\Cd@GK-.5\PileSpacing}\Cd@IC{%
cds@crab+}{\Cd@GK.5\PileSpacing}\Cd@IC{cds@crab++}{\Cd@GK1.5\PileSpacing}%
\Cd@IC{cds@crab--}{\Cd@GK-1.5\PileSpacing}\def\cds@defaultsize{\Cd@mD{\let
\Cd@HC}{3em}\Cd@zJ}\def\cds@displayoneliner{\Cd@zA}\let\cds@dotted\Cd@oJ\def
\cds@dpi{\Cd@WI{1truein}}\def\cds@dpm{\Cd@WI{100truecm}}\let\Cd@TA\undefined
\def\cds@eqno{\let\Cd@TA\Cd@IJ\let\Cd@xJ\empty}\def\cds@fixed{\Cd@lA}\Cd@PG
\Cd@LK\Cd@AK\Cd@@K\def\cds@flushleft{\Cd@@K\Cd@CA\Cd@VI\cds@nobalance\Cd@mD
\Cd@hA\z@}\def\cds@grid{\ifx\Cd@IJ\undefined\let\h@grid\relax\let\v@grid
\relax\else\Cd@QF{h@grid}{cdgh@\Cd@IJ}\Cd@QF{v@grid}{cdgv@\Cd@IJ}\ifx\h@grid
\relax\Cd@bB{unknown grid `\Cd@IJ'}\else\Cd@RB\fi\fi}\let\h@grid\relax\let
\v@grid\relax\def\cds@gridx{\ifx\Cd@IJ\undefined\else\cds@grid\fi\let\Cd@ZG
\h@grid\let\h@grid\v@grid\let\v@grid\Cd@ZG}\def\cds@h{\Cd@jD
\DiagramCellHeight}\def\cds@hcenter{\let\Cd@bA\Cd@WA}\let\cds@hcentre
\cds@hcenter\def\cds@heads{\Cd@mD{\let\Cd@vI}\Cd@vI\Cd@LI\Cd@bE\else\ifx
\Cd@vI\Cd@IF\else\Cd@EC\fi\fi}\let\cds@height\cds@h\let\cds@hmiddle
\cds@balance\def\cds@htriangleheight{\Cd@mD\DiagramCellHeight
\DiagramCellHeight\DiagramCellWidth1.73205\DiagramCellHeight}\def
\cds@htrianglewidth{\Cd@mD\DiagramCellWidth\DiagramCellWidth
\DiagramCellHeight.57735\DiagramCellWidth}\Cd@PG\Cd@MK\Cd@CK\Cd@BK\Cd@CK\def
\cds@hug{\Cd@CK} \def\cds@inline{\Cd@aA\let\Cd@kG\empty}\def
\cds@inlineoneliner{\Cd@@B}\Cd@IC{cds@l>}{\Cd@jD{\let\Cd@kA}\dimen2=\Cd@kA}%
\def\cds@labelstyle{\Cd@jD{\let\labelstyle}}\def\cds@landscape{\Cd@eA}\def
\cds@large{\CellSize5\Cd@nC}\let\Cd@xJ\empty\def\Cd@yJ{\refstepcounter{%
equation}\def\Cd@TA{\hbox{\@eqnnum}}}\def\cds@LaTeXeqno{\let\Cd@xJ\Cd@yJ}\def
\cds@lefteqno{\Cd@jA}\def\cds@leftflush{\cds@flushleft\Cd@AK}\def
\cds@leftshortfall{\Cd@jD{\dimen1 }}\def\cds@lowershortfall{%
\ifPositiveGradient\cds@leftshortfall\else\cds@rightshortfall\fi}\def
\cds@loose{\Cd@QB}\def\cds@midhshaft{\Cd@FA}\def\cds@midshaft{\Cd@FA}\def
\cds@midvshaft{\Cd@bB{midvshaft option doesn't work}}\def\cds@moreoptions{%
\Cd@w}\let\cds@nobalance\cds@hcenter\def\cds@nohcheck{\Cd@dG}\def\cds@nohug{%
\Cd@BK} \def\cds@nooptions{\def\Cd@RC{\Cd@FD}}\let\cds@noorigin\cds@nobalance
\def\cds@nopixel{\Cd@NH4\Cd@sG\Cd@gI}\def\cds@noPostScript{\global\let\Cd@DK
\empty\Cd@mD\Cd@RH\empty\Cd@UB\let\cds@PS\empty\let\cds@noPS\empty}\def
\cds@noPS{\Cd@UB\global\let\Cd@DK\empty}\def\cds@notextflow{\Cd@MB}\def
\cds@noTPIC{\Cd@EJ}\def\cds@objectstyle{\Cd@jD{\let\objectstyle}}\def
\cds@origin{\let\Cd@bA\Cd@dB}\def\cds@p{\Cd@jD\PileSpacing}\let
\cds@pilespacing\cds@p\def\cds@pixelsize{\Cd@jD\Cd@NH\Cd@tH}\def\cds@portrait
{\Cd@dA}\def\cds@PostScript{\Cd@VB\global\let\Cd@DK\empty\let\cds@PS\Cd@VB
\let\cds@noPS\Cd@UB\Cd@mD\Cd@RH\empty}\def\cds@PS{\Cd@VB\global\let\Cd@DK
\empty}\Cd@NK\Cd@DK{\typeout{\Cd@oA: try the PostScript option for better
results}}\def\cds@repositionpullbacks{\let\make@pbk\Cd@kJ\let\Cd@vJ\Cd@uJ}%
\def\cds@righteqno{\Cd@iA}\def\cds@rightshortfall{\Cd@jD{\dimen5 }}\def
\cds@ruleaxis{\Cd@jD{\let\axisheight}}\def\cds@cmex{\let\Cd@hF\Cd@dJ\let
\Cd@VK\Cd@UK}\def\cds@s{\cds@height\DiagramCellWidth\DiagramCellHeight}\def
\cds@scriptlabels{\let\labelstyle\scriptstyle}\def\cds@shortfall{\Cd@jD
\MapShortFall\dimen1\MapShortFall\dimen5\MapShortFall}\def\cds@showfirstpass{%
\Cd@mD{\let\Cd@YD}\z@}\def\cds@silent{\def\Cd@FB##1{}\def\Cd@bB##1{}}\let
\cds@size\cds@s\def\cds@small{\CellSize2\Cd@nC}\def\cds@snake{\Cd@mD\Cd@WK\z@
}\def\cds@t{\let\Cd@YB\Cd@aB}\def\cds@textflow{\Cd@NB\Cd@VI}\def\cds@thick{%
\let\Cd@SF\tenlnw\Cd@qE\Cd@FC\Cd@mD\MapBreadth{2\Cd@qE}\Cd@LI}\def\cds@thin{%
\let\Cd@SF\tenln\Cd@mD\MapBreadth{\Cd@FC}\Cd@LI}\def\cds@tight{\Cd@RB}\let
\cds@top\cds@t\def\cds@TPIC{\Cd@FJ}\def\cds@uppershortfall{%
\ifPositiveGradient\cds@rightshortfall\else\cds@leftshortfall\fi}\def
\cds@vcenter{\let\Cd@YB\Cd@XB}\let\cds@vcentre\cds@vcenter\def
\cds@vtriangleheight{\Cd@mD\DiagramCellHeight\DiagramCellHeight
\DiagramCellWidth.577035\DiagramCellHeight}\def\cds@vtrianglewidth{\Cd@mD
\DiagramCellWidth\DiagramCellWidth\DiagramCellHeight1.73205\DiagramCellWidth}%
\def\cds@vmiddle{\let\Cd@YB\Cd@ZB}\def\cds@w{\Cd@jD\DiagramCellWidth}\let
\cds@width\cds@w\def\diagram{\relax\protect\Cd@QC}\def\enddiagram{\protect
\Cd@rF}\def\Cd@QC{\Cd@d\Cd@FI\incommdiagtrue\edef\Cd@HI{\the\Cd@IB}\global
\Cd@IB\z@\boxmaxdepth\maxdimen\everycr{}\Cd@RC}\def\Cd@RC{\Cd@u\let\Cd@K
\Cd@SC\Cd@hE\Cd@lD\Cd@FD}\def\Cd@SC{\Cd@ME\expandafter\Cd@RC\else\expandafter
\Cd@FD\fi}\def\Cd@FD{\let\Cd@aG\relax\Cd@TE\Cd@bE\else\Cd@FB{landscape ignored
without PostScript}\Cd@dA\fi\fi\Cd@xJ\setbox2=\vbox\bgroup\Cd@oE\Cd@GD}\def
\Cd@xG{\Cd@TE\Cd@aB\else\Cd@YB\fi\Cd@bA\nointerlineskip\setbox0=\null\ht0-%
\Cd@AI\dp0\Cd@AI\wd0\Cd@wH\box0 \global\Cd@MA\Cd@NF\global\Cd@tA\Cd@SB\ifx
\Cd@XK\undefined\global\Cd@NA\Cd@NF\else\global\Cd@NA\Cd@XK\fi\egroup\Cd@ZF
\Cd@TE\setbox2=\hbox to\dp2{\dp2=\Cd@MA\global\Cd@MA\ht2\ht2\wd2\global\Cd@EG
\Cd@KJ{0 1 bturn}\box2\Cd@KJ{eturn}\hss}\Cd@zA\fi\ifnum\Cd@tA=1 \else\Cd@zA
\fi\global\@ignorefalse\Cd@SE\leavevmode\fi\ifvmode\Cd@PA\else\ifmmode\Cd@kG
\Cd@UH\else\Cd@WE\Cd@aA\fi\ifinner\Cd@aA\fi\Cd@SE\Cd@UH\else\Cd@YE\Cd@LB\else
\Cd@PA\fi\fi\fi\fi\Cd@ND}\def\Cd@ND{\global\Cd@IB\Cd@HI\relax\Cd@dE\global
\Cd@vC\else\aftergroup\Cd@cC\fi\if@ignore\aftergroup\ignorespaces\fi\Cd@kC
\ignorespaces}\def\Cd@aB{\advance\Cd@AI\dimen1\relax}\def\Cd@ZB{\advance
\Cd@AI.5\dimen1\relax}\def\Cd@WB{}\def\Cd@XB{\Cd@aB\advance\Cd@AI\Cd@TB
\divide\Cd@AI2 \advance\Cd@AI-\axisheight\relax}\def\Cd@WA{}\def\Cd@dB{\Cd@NF
\z@}\def\Cd@x{\ifdim\dimen2>\Cd@NF\Cd@NF\dimen2 \else\dimen2\Cd@NF\Cd@wH
\dimen0 \advance\Cd@wH\dimen2 \fi}\def\Cd@LB{\skip0\z@\relax\loop\skip1%
\lastskip\ifdim\skip1>\z@\unskip\advance\skip0\skip1 \repeat\vadjust{%
\prevdepth\dp\strutbox\penalty\predisplaypenalty\vskip\abovedisplayskip\Cd@QA
\penalty\postdisplaypenalty\vskip\belowdisplayskip}\ifdim\skip0=\z@\else
\hskip\skip0 \global\@ignoretrue\fi}\def\Cd@PA{\Cd@mF\kern-\displayindent
\Cd@QA\Cd@mF\global\@ignoretrue}\def\Cd@QA{\hbox to\hsize{\Cd@LK\ifdim\Cd@NA=%
\z@\else\advance\Cd@MA-\Cd@NA\setbox2=\hbox{\kern\Cd@NA\box2}\fi\fi\setbox1=%
\hbox{\ifx\Cd@TA\undefined\else\Cd@h\Cd@TA\Cd@zC\fi}\Cd@UE\Cd@OE\else\advance
\Cd@MA\wd1 \fi\wd1\z@\box1 \fi\dimen0\wd2 \advance\dimen0\wd1 \advance\dimen0%
-\hsize\ifdim\dimen0>-\Cd@hA\Cd@DA\fi\advance\dimen0\Cd@MA\ifdim\dimen0>\z@
\Cd@FB{wider than the page by \the\dimen0 }\Cd@DA\fi\Cd@OE\hss\else\Cd@S
\Cd@MA\Cd@hA\fi\Cd@UH\hss\kern-\wd1\box1 }}\def\Cd@UH{\Cd@gE\Cd@fE\else\Cd@JC
\global\Cd@DG\fi\fi\kern\Cd@MA\box2 }\Cd@PG\Cd@cE\Cd@PC\Cd@OC\def\Cd@oE{%
\Cd@gI\ifdim\DiagramCellHeight=-\maxdimen\DiagramCellHeight\Cd@HC\fi\ifdim
\DiagramCellWidth=-\maxdimen\DiagramCellWidth\Cd@HC\fi\global\Cd@OC\Cd@nE\let
\Cd@qD\empty\let\Cd@v\Cd@N\let\overprint\Cd@jJ\let\Cd@o\Cd@uI\let\enddiagram
\Cd@rC\let\\\Cd@TC\let\par\Cd@AH\let\Cd@xC\empty\let\switch@arg\Cd@KB\let
\shift\Cd@cA\baselineskip\DiagramCellHeight\lineskip\z@\lineskiplimit\z@
\mathsurround\z@\tabskip\z@\Cd@JB}\def\Cd@GD{\penalty-123 \begingroup\Cd@dA
\aftergroup\Cd@H\halign\bgroup\global\advance\Cd@IB1 \vadjust{\penalty1}%
\global\Cd@BA\z@\Cd@JB\Cd@f##\Cd@qC\Cd@N\Cd@N\Cd@cH\Cd@f##\Cd@qC\cr}\def
\Cd@rC{\Cd@xC\Cd@tC\crcr\egroup\global\Cd@wC\endgroup}\def\Cd@f{\global
\advance\Cd@BA1 \futurelet\Cd@aG\Cd@g}\def\Cd@g{\ifx\Cd@aG\Cd@qC\Cd@wI\hskip1%
sp plus 1fil \relax\let\Cd@qC\relax\Cd@GI\else\hfil\Cd@h\objectstyle\let
\Cd@qD\Cd@a\fi}\def\Cd@qC{\Cd@xC\relax\Cd@JI\Cd@GI\global\Cd@MA\Cd@cA\penalty
-9993 \Cd@zC\hfil\null\kern-2\Cd@MA\null}\def\Cd@TC{\cr}\def\across#1{\span
\omit\mscount=#1 \global\advance\Cd@BA\mscount\global\advance\Cd@BA\m@ne
\Cd@TF\ifnum\mscount>2 \Cd@iI\repeat\ignorespaces}\def\Cd@iI{\relax\span\omit
\advance\mscount\m@ne}\def\Cd@tI{\ifincommdiag\ifx\Cd@SD\@fillh\ifx\Cd@TD
\@fillh\ifdim\dimen3>\z@\else\ifdim\dimen2>93\Cd@NH\ifdim\dimen2>18\p@\ifdim
\Cd@qE>\z@\count@\Cd@fI\advance\count@\m@ne\ifnum\count@<\z@\count@20\let
\Cd@eI\Cd@xI\fi\xdef\Cd@fI{\the\count@}\fi\fi\fi\fi\fi\fi\fi}\def\Cd@@G#1{%
\vrule\horizhtdp width#1\dimen@\kern2\dimen@}\def\Cd@xI{\rlap{\dimen@\Cd@NH
\Cd@S\dimen@{.182\p@}\Cd@MH\dimen@\advance\Cd@EI\dimen@\Cd@@G0\Cd@@G0\Cd@@G2%
\Cd@@G6\Cd@@G6\Cd@@G2\Cd@@G0\Cd@@G0\Cd@@G2\Cd@@G6\Cd@@G0\Cd@@G0\Cd@@G2\Cd@@G2%
\Cd@@G6\Cd@@G0\Cd@@G0\Cd@@G2\Cd@@G6\Cd@@G2\Cd@@G2\Cd@@G0\Cd@@G0}}\def\Cd@fI{%
10}\def\Cd@eI{}\def\Cd@HD{\Cd@ME\Cd@OB\fi\Cd@t\Cd@AF\Cd@VH}\def\Cd@t{\Cd@VK
\Cd@GK\Cd@TI\ifdim\Cd@GK=\z@\else\Cd@PK\Cd@GK\fi\ifvoid3 \setbox3=\null\ht3%
\Cd@EI\dp3\Cd@DI\else\Cd@S{\ht3}\Cd@EI\Cd@S{\dp3}\Cd@DI\fi\dimen3=.5\wd3
\ifdim\dimen3=\z@\Cd@ZE\else\dimen3-\Cd@sG\fi\else\Cd@OB\fi\Cd@S{\dimen2}{\wd
7}\Cd@S{\dimen2}{\wd6}\Cd@tI\advance\dimen2-2\dimen3 \dimen4.5\dimen2 \dimen2%
\dimen4 \advance\dimen2\Cd@WK\advance\dimen4-\Cd@WK\advance\dimen2-\wd1
\advance\dimen4-\wd5 \ifvoid2 \else\Cd@S{\ht3}{\ht2}\Cd@S{\dp3}{\dp2}\Cd@S{%
\dimen2}{\wd2}\fi\ifvoid4 \else\Cd@S{\ht3}{\ht4}\Cd@S{\dp3}{\dp4}\Cd@S{\dimen
4}{\wd4}\fi\advance\skip2\dimen2 \advance\skip4\dimen4 \Cd@ZE\advance\skip2%
\skip4 \dimen0\dimen5 \advance\dimen0\wd5 \skip3-\skip4 \advance\skip3-\dimen
0 \let\Cd@TD\empty\else\skip3\z@\relax\dimen0\z@\fi}\def\Cd@AF{%
\offinterlineskip\lineskip.2\Cd@nC\ifvoid6 \else\setbox3=\vbox{\hbox to2%
\dimen3{\hss\box6\hss}\box3}\fi\ifvoid7 \else\setbox3=\vtop{\box3 \hbox to2%
\dimen3{\hss\box7\hss}}\fi}\def\Cd@VH{\kern\dimen1 \box1 \Cd@eI\Cd@SD\hskip
\skip2 \kern\dimen0 \ifincommdiag\Cd@PE\penalty1\fi\kern\dimen3 \penalty
\Cd@BB\hskip\skip3 \null\kern-\dimen3 \else\hskip\skip3 \fi\box3 \Cd@TD\hskip
\skip4 \box5 \kern\dimen5}\def\Cd@rE{\ifnum\Cd@gG>\Cd@KC\Cd@S{\dimen1}%
\objectheight\Cd@S{\dimen5}\objectheight\else\Cd@S{\dimen1}\objectwidth\Cd@S{%
\dimen5}\objectwidth\fi}\def\Cd@V{\begingroup\ifdim\dimen7=\z@\kern\dimen8
\else\ifdim\dimen6=\z@\kern\dimen9 \else\dimen5\dimen6 \dimen6\dimen9 \Cd@SI
\dimen4\dimen2 \Cd@AG{\dimen4}\dimen6\dimen5 \dimen7\dimen8 \Cd@SI\Cd@ZC{%
\dimen2}\ifdim\dimen2<\dimen4 \kern\dimen2 \else\kern\dimen4 \fi\fi\fi
\endgroup}\def\Cd@mI{\Cd@XH\setbox\z@\hbox{\lower\axisheight\hbox to\dimen2{%
\Cd@jE\ifPositiveGradient\dimen8\ht\Cd@hG\dimen9\Cd@yH\else\dimen8\dp3 \dimen
9\dimen1 \fi\else\dimen8 \ifPositiveGradient\objectheight\else\z@\fi\dimen9%
\objectwidth\fi\advance\dimen8 \ifPositiveGradient-\fi\axisheight\Cd@V\unhbox
\z@\Cd@jE\ifPositiveGradient\dimen8\dp3 \dimen9\dimen0 \else\dimen8\ht\Cd@hG
\dimen9\Cd@PF\fi\else\dimen8 \ifPositiveGradient\z@\else\objectheight\fi
\dimen9\objectwidth\fi\advance\dimen8 \ifPositiveGradient\else-\fi\axisheight
\Cd@V}}}\def\Cd@LD{\dimen6 \Cd@bJ\DiagramCellHeight\dimen7 \Cd@XJ
\DiagramCellWidth\Cd@mI\ifPositiveGradient\advance\dimen7-\Cd@aJ
\DiagramCellWidth\else\dimen7 \Cd@aJ\DiagramCellWidth\dimen6\z@\multiply
\Cd@gG\m@ne\fi\advance\dimen6-\Cd@cJ\DiagramCellHeight\setbox0=\rlap{\global
\Cd@EG\kern-\dimen7 \lower\dimen6\hbox{\Cd@OD{\the\Cd@KC\space\the\Cd@gG
\space bturn}\box0 \Cd@KJ{eturn}}}\ht0\z@\dp0\z@\raise\axisheight\box0 }\def
\Cd@pB{\advance\Cd@LF-\Cd@yH\Cd@zI\Cd@LF\advance\Cd@zI\Cd@uH\ifvoid\Cd@HH
\ifdim\Cd@zI<.1em\ifnum\Cd@QD=\@m\else\Cd@yF h\Cd@zI<.1em:objects overprint:%
\Cd@BA\Cd@QD\fi\fi\else\ifhbox\Cd@HH\Cd@TJ\else\Cd@UJ\fi\advance\Cd@zI\Cd@yH
\Cd@wG{-\Cd@yH}{\box\Cd@HH}{\Cd@zI}\z@\fi\Cd@LF-\Cd@PF\Cd@QD\Cd@BA\Cd@uH\z@}%
\def\Cd@TJ{\setbox\Cd@HH=\hbox{\unhbox\Cd@HH\unskip\unpenalty}\setbox\Cd@IH=%
\hbox{\unhbox\Cd@IH\unskip\unpenalty}\setbox\Cd@HH=\hbox to\Cd@zI{\Cd@KA\wd
\Cd@HH\unhbox\Cd@HH\Cd@LA\lastkern\unkern\ifdim\Cd@LA=\z@\Cd@PB\advance\Cd@KA
-\wd\Cd@IH\else\Cd@OB\fi\ifnum\lastpenalty=\z@\else\Cd@FA\unpenalty\fi\kern
\Cd@LA\ifdim\Cd@LF<\Cd@KA\Cd@FA\fi\ifdim\Cd@uH<\wd\Cd@IH\Cd@FA\fi\Cd@PE\Cd@uH
\Cd@zI\advance\Cd@uH-\Cd@KA\advance\Cd@uH\wd\Cd@IH\ifdim\Cd@uH<2\wd\Cd@IH
\Cd@yF h\Cd@uH<2\wd\Cd@IH:arrow too short:\Cd@BA\Cd@QD\fi\divide\Cd@uH\tw@
\Cd@LF\Cd@zI\advance\Cd@LF-\Cd@uH\fi\Cd@ZE\kern-\Cd@uH\fi\hbox to\Cd@uH{%
\unhbox\Cd@IH}\Cd@iF}}\Cd@PG\ifinpile\inpiletrue\inpilefalse\inpilefalse\def
\pile{\protect\Cd@ZI\protect\Cd@JH}\def\Cd@JH#1{\Cd@i#1\Cd@@D}\def\Cd@ZI{%
\Cd@iB{pile}\setbox0=\vtop\bgroup\aftergroup\Cd@WD\inpiletrue\let\Cd@qD\empty
\let\pile\Cd@pE\let\Cd@@D\Cd@AD\let\Cd@tC\Cd@sC\Cd@LH\baselineskip.5%
\PileSpacing\lineskip.1\Cd@nC\relax\lineskiplimit\lineskip\mathsurround\z@
\tabskip\z@\let\\\Cd@TK}\def\Cd@i{\Cd@oD\Cd@CF\empty\halign\bgroup\hfil\Cd@h
\let\Cd@qD\Cd@a\let\\\Cd@KH##\Cd@xC\Cd@zC\hfil\Cd@N\Cd@O##\cr}\Cd@NG\Cd@xD{%
pile only allows one column.}\Cd@NG\Cd@DE{you left it out!}\def\Cd@O{\Cd@@D
\Cd@N\relax\Cd@UA{missing \Cd@mC\space inserted after \string\pile}\Cd@xD}%
\def\Cd@AD{\Cd@xC\crcr\egroup\egroup}\def\Cd@tC{\Cd@xC}\def\Cd@sC{\Cd@xC
\relax\Cd@@D\Cd@UA{missing \Cd@mC\space inserted between \string\pile\space
and \Cd@uC}\Cd@DE}\def\Cd@@D{\Cd@xC}\def\Cd@WD{\vbox{\dimen1\dp0 \unvbox0
\setbox0=\lastbox\advance\dimen1\dp0 \nointerlineskip\box0 \nointerlineskip
\setbox0=\null\dp0.5\dimen1\ht0-\dp0 \box0}\ifincommdiag\Cd@wI\penalty-9998
\fi\xdef\Cd@CF{pile}}\def\Cd@KH{\cr}\def\Cd@TK{\noalign{\skip@\prevdepth
\advance\skip@-\baselineskip\prevdepth\skip@}}\def\Cd@pE#1{#1}\def\Cd@UJ{%
\setbox\Cd@HH=\vbox{\unvbox\Cd@HH\setbox1=\lastbox\setbox0=\box\voidb@x\Cd@UF
\setbox\Cd@HH=\lastbox\ifhbox\Cd@HH\Cd@gC\repeat\unvbox0 \global\Cd@MA\Cd@IE}%
\Cd@IE\Cd@MA}\def\Cd@gC{\Cd@PE\setbox\Cd@HH=\hbox{\unhbox\Cd@HH\unskip\setbox
\Cd@HH=\lastbox\unskip\unhbox\Cd@HH}\ifdim\Cd@zI<\wd\Cd@HH\Cd@yF h\Cd@zI<\wd
\Cd@HH:arrow in pile too short:\Cd@BA\Cd@QD\else\setbox\Cd@HH=\hbox to\Cd@zI{%
\unhbox\Cd@HH}\fi\else\Cd@jI\fi\setbox0=\vbox{\box\Cd@HH\nointerlineskip
\ifvoid0 \Cd@wI\box1 \else\vskip\skip0 \unvbox0 \fi}\skip0=\lastskip\unskip}%
\def\Cd@jI{\penalty7 \noindent\unhbox\Cd@HH\unskip\setbox\Cd@HH=\lastbox
\unskip\unhbox\Cd@HH\endgraf\setbox\Cd@IH=\lastbox\unskip\setbox\Cd@IH=\hbox{%
\Cd@kF\unhbox\Cd@IH\unskip\unskip\unpenalty}\ifcase\prevgraf\cd@shouldnt P\or
\ifdim\Cd@zI<\wd\Cd@IH\Cd@yF h\Cd@zI<\wd\Cd@HH:object in pile too wide:\Cd@BA
\Cd@QD\setbox\Cd@HH=\hbox to\Cd@zI{\hss\unhbox\Cd@IH\hss}\else\setbox\Cd@HH=%
\hbox to\Cd@zI{\hss\kern\Cd@LF\unhbox\Cd@IH\kern\Cd@uH\hss}\fi\or\setbox
\Cd@HH=\lastbox\unskip\Cd@TJ\else\cd@shouldnt Q\fi\unskip\unpenalty}\def
\Cd@MD{\Cd@TI\ifvoid3 \setbox3=\null\ht3\axisheight\dp3-\ht3 \dimen3.5\Cd@qE
\else\dimen4\dp3 \dimen3.5\wd3 \setbox3=\Cd@hF{\box3}\dp3\dimen4 \ifdim\ht3=-%
\dp3 \else\Cd@OB\fi\fi\setbox0=\null\Cd@ZE\dimen4=\ht\Cd@hG\advance\dimen4\dp
5 \advance\dimen4\dimen1 \let\Cd@TD\empty\else\dimen4\ht3 \fi\ht0\dimen4
\offinterlineskip\setbox8=\vbox spread2ex{\kern\dimen5 \box1 \Cd@SD\vfill\box
0}\ht8=\z@\setbox9=\vtop spread2ex{\kern-\ht3 \box3 \Cd@TD\vfill\box5 \kern
\dimen1}\dp9=\z@\dimen0\dimen3 \advance\dimen0-.5\Cd@qE\hskip\z@ plus.0001fil
\box6 \kern\dimen0 \box9 \kern-\Cd@qE\box8 \Cd@ZE\penalty1 \fi\kern
\PileSpacing\kern-\PileSpacing\kern-.5\Cd@qE\penalty\Cd@BB\null\kern\dimen3
\box7}\def\Cd@qH{\ifhbox\Cd@RA\Cd@FB{clashing verticals}\ht\Cd@hG.5\dp\Cd@RA
\dp\Cd@hG-\ht5 \Cd@rB\ht\Cd@hG\z@\dp\Cd@hG\z@\fi\dimen1\dp\Cd@RA\Cd@sA
\prevgraf\unvbox\Cd@RA\Cd@rA\lastpenalty\unpenalty\setbox\Cd@RA=\null\setbox
\Cd@xH=\hbox{\Cd@kF\unhbox\Cd@xH\unskip\unpenalty\dimen0\lastkern\unkern
\unkern\unkern\kern\dimen0 \Cd@iF}\setbox\Cd@OF=\hbox{\unhbox\Cd@OF\dimen0%
\lastkern\unkern\unkern\global\Cd@MA\lastkern\unkern\kern\dimen0 }\Cd@UF
\ifnum\Cd@sA>4 \Cd@KI\repeat\unskip\unskip\advance\Cd@PF.5\wd\Cd@RA\advance
\Cd@PF\wd\Cd@OF\advance\Cd@yH.5\wd\Cd@RA\advance\Cd@yH\wd\Cd@xH\ifnum\Cd@BA=%
\Cd@fA\Cd@KA.5\wd\Cd@RA\edef\Cd@XK{\the\Cd@KA}\fi\setbox\Cd@RA=\hbox{\kern-%
\Cd@PF\box\Cd@OF\unhbox\Cd@RA\box\Cd@xH\kern-\Cd@yH\penalty\Cd@rA\penalty
\Cd@IB}\ht\Cd@RA\dimen1 \dp\Cd@RA\z@\wd\Cd@RA\Cd@nB\Cd@pB}\def\Cd@KI{\ifdim
\wd\Cd@OF<\Cd@MA\setbox\Cd@OF=\hbox to\Cd@MA{\Cd@kF\unhbox\Cd@OF}\fi\advance
\Cd@sA\m@ne\setbox\Cd@RA=\hbox{\box\Cd@OF\unhbox\Cd@RA}\unskip\setbox\Cd@OF=%
\lastbox\setbox\Cd@OF=\hbox{\unhbox\Cd@OF\unskip\unpenalty\dimen0\lastkern
\unkern\unkern\global\Cd@MA\lastkern\unkern\kern\dimen0 }}\def\Cd@rB{\dimen1%
\dp\Cd@RA\ifhbox\Cd@RA\Cd@sB\else\Cd@tB\fi\setbox\Cd@RA=\vbox{\penalty\Cd@IB}%
\dp\Cd@RA-\dp\Cd@hG\wd\Cd@RA\Cd@nB}\def\Cd@tB{\unvbox\Cd@RA\Cd@rA\lastpenalty
\unpenalty\ifdim\dimen1<\ht\Cd@hG\Cd@yF v\dimen1<\ht\Cd@hG:rows overprint:%
\Cd@IB\Cd@rA\fi}\def\Cd@sB{\dimen0=\ht\Cd@RA\setbox\Cd@RA=\hbox\bgroup
\advance\dimen1-\ht\Cd@hG\unhbox\Cd@RA\Cd@sA\lastpenalty\unpenalty\Cd@rA
\lastpenalty\unpenalty\global\Cd@NA-\lastkern\unkern\setbox0=\lastbox\Cd@UF
\setbox\Cd@RA=\hbox{\box0\unhbox\Cd@RA}\setbox0=\lastbox\ifhbox0 \Cd@nI
\repeat\global\Cd@OA-\lastkern\unkern\global\Cd@MA\Cd@LJ\unhbox\Cd@RA\egroup
\Cd@LJ\Cd@MA\Cd@wG{\Cd@OA}{\box\Cd@RA}{\Cd@NA}{\dimen1}}\def\Cd@nI{\setbox0=%
\hbox to\wd0\bgroup\unhbox0 \unskip\unpenalty\dimen7\lastkern\unkern\ifnum
\lastpenalty=1 \unpenalty\Cd@PB\else\Cd@OB\fi\setbox0=\lastbox\dimen6%
\lastkern\unkern\setbox1=\lastbox\setbox0=\vbox{\unvbox0\Cd@ZE\kern-\dimen1%
\fi}\ifdim\dimen0<\ht0 \Cd@yF v\dimen0<\ht0:upper part of vertical too short:%
{\Cd@ZE\Cd@IB\else\Cd@rA\fi}\Cd@sA\else\setbox0=\vbox to\dimen0{\unvbox0}\fi
\setbox1=\vtop{\unvbox1}\ifdim\dimen1<\dp1 \Cd@yF v\dimen1<\dp1:lower part of
vertical too short:\Cd@IB\Cd@rA\else\setbox1=\vtop to\dimen1{\unvbox1}\fi\box
1 \kern\dimen6 \box0 \kern\dimen7 \Cd@iF\global\Cd@MA\Cd@LJ\egroup\Cd@LJ
\Cd@MA\relax}\countdef\Cd@q=14 \newcount\Cd@z\newcount\Cd@SB\newcount\Cd@IB
\let\Cd@GB\insc@unt\newcount\Cd@BA\newcount\Cd@fA\let\Cd@gA\Cd@SB\newcount
\Cd@HB\Cd@PG\Cd@jE\Cd@pH\Cd@oH\Cd@oH\def\Cd@YD{-1}\def\Cd@H{\ifnum\Cd@YD<\z@
\else\begingroup\scrollmode\showboxdepth\Cd@YD\showboxbreadth\maxdimen
\showlists\endgroup\fi\Cd@pH\Cd@ZF\Cd@z=\Cd@q\advance\Cd@z1 \Cd@SB=\Cd@z
\ifnum\Cd@IB=1 \Cd@FA\fi\advance\Cd@SB\Cd@IB\dimen1\z@\skip0\z@\count@=%
\insc@unt\advance\count@\Cd@q\divide\count@2 \ifnum\Cd@SB>\count@\Cd@FB{The
diagram has too many rows! It can't be reformatted.}\else\Cd@oF\Cd@kH\fi
\Cd@xG}\def\Cd@oF{\Cd@IB\Cd@z\Cd@VF\ifnum\Cd@IB<\Cd@SB\setbox\Cd@IB\box
\voidb@x\advance\Cd@IB1\relax\repeat\Cd@IB\Cd@z\skip\z@\z@\Cd@VF\Cd@BB
\lastpenalty\unpenalty\ifnum\Cd@BB>\z@\Cd@uD\repeat\ifnum\Cd@BB=-123 \Cd@wI
\unpenalty\else\cd@shouldnt D\fi\ifx\v@grid\relax\else\Cd@IB\Cd@SB\advance
\Cd@IB\m@ne\expandafter\Cd@hJ\v@grid\fi\Cd@HB\Cd@gA\Cd@nB\z@\Cd@vF\ifx\h@grid
\relax\else\expandafter\Cd@gJ\h@grid\fi\count@\Cd@SB\advance\count@\m@ne
\Cd@TB\ht\count@}\def\Cd@uD{\ifcase\Cd@BB\or\Cd@nF\else\Cd@pA-\lastpenalty
\unpenalty\Cd@qA\lastpenalty\unpenalty\setbox0=\lastbox\Cd@uF\fi\Cd@gD}\def
\Cd@gD{\skip1\lastskip\unskip\advance\skip0\skip1 \ifdim\skip1=\z@\else
\expandafter\Cd@gD\fi}\def\Cd@nF{\setbox0=\lastbox\Cd@AI\dp0 \advance\Cd@AI
\skip\z@\skip\z@\z@\advance\Cd@sE\Cd@AI\Cd@aE\ifnum\Cd@IB>\Cd@z\Cd@sE
\DiagramCellHeight\Cd@AI\Cd@sE\advance\Cd@AI-\Cd@BI\fi\fi\Cd@BI\ht0 \Cd@sE
\Cd@BI\setbox\Cd@IB\hbox{\unhbox\Cd@IB\unhbox0}\dp\Cd@IB\Cd@AI\ht\Cd@IB\Cd@BI
\advance\Cd@IB1 }\def\Cd@uF{\ifnum\Cd@pA<\z@\advance\Cd@pA\Cd@SB\ifnum\Cd@pA<%
\Cd@z\Cd@sJ\else\Cd@KA\dp\Cd@pA\Cd@LA\ht\Cd@pA\setbox\Cd@pA\hbox{\box\z@
\penalty\Cd@qA\penalty\Cd@BB\unhbox\Cd@pA}\dp\Cd@pA\Cd@KA\ht\Cd@pA\Cd@LA\fi
\else\Cd@sJ\fi}\def\Cd@sJ{\Cd@FB{diagonal goes outside diagram (lost)}}\def
\Cd@eJ{\advance\Cd@pA\Cd@SB\ifnum\Cd@pA<\Cd@z\Cd@sJ\else\ifnum\Cd@pA=\Cd@IB
\Cd@tF\else\ifnum\Cd@pA>\Cd@IB\cd@shouldnt M\else\Cd@KA\dp\Cd@pA\Cd@LA\ht
\Cd@pA\setbox\Cd@pA\hbox{\box\z@\penalty\Cd@qA\penalty\Cd@BB\unhbox\Cd@pA}\dp
\Cd@pA\Cd@KA\ht\Cd@pA\Cd@LA\fi\fi\fi}\def\Cd@kH{\Cd@p\Cd@MI\setbox\Cd@GC=%
\hbox{\Cd@h A\@super f\Cd@oI f\Cd@zC}\Cd@IE\z@\Cd@LJ\z@\Cd@wH\z@\Cd@NF\z@
\Cd@IB=\Cd@SB\Cd@sE\z@\Cd@oB\z@\Cd@VF\ifnum\Cd@IB>\Cd@z\advance\Cd@IB\m@ne
\Cd@BI\ht\Cd@IB\Cd@AI\dp\Cd@IB\advance\Cd@sE\Cd@BI\Cd@CI\advance\Cd@oB\Cd@sE
\Cd@CC\Cd@nH\Cd@s\ht\Cd@IB\Cd@BI\dp\Cd@IB\Cd@AI\nointerlineskip\box\Cd@IB
\Cd@sE\Cd@AI\setbox\Cd@IB\null\ht\Cd@IB\Cd@oB\repeat\Cd@qB\nointerlineskip
\box\Cd@IB\Cd@CG\Cd@IE\DiagramCellWidth{width}\Cd@CG\Cd@LJ\DiagramCellHeight{%
height}\Cd@RA\Cd@GB\advance\Cd@RA-\Cd@fA\advance\Cd@RA\m@ne\advance\Cd@RA
\Cd@gA\dimen0\wd\Cd@RA\Cd@EI\axisheight\dimen1\Cd@oB\advance\dimen1-\Cd@TB
\dimen2\Cd@wH\advance\dimen2-\dimen0 \advance\Cd@SB-\Cd@z\advance\Cd@GB-%
\Cd@fA}\count@\year\multiply\count@12 \advance\count@\month\ifnum\count@>%
23990 \loop\iftrue\message{gone February 1999!}\repeat\fi\def\Cd@qB{\Cd@BI-%
\Cd@sE\Cd@AI\Cd@sE\setbox\Cd@hG=\null\dp\Cd@hG\Cd@sE\ht\Cd@hG-\Cd@sE\Cd@PF\z@
\Cd@yH\z@\Cd@fA\Cd@GB\advance\Cd@fA-\Cd@HB\advance\Cd@fA\Cd@gA\Cd@BA\Cd@GB
\Cd@RA\Cd@HB\Cd@TF\ifnum\Cd@BA>\Cd@fA\advance\Cd@BA\m@ne\advance\Cd@RA\m@ne
\Cd@nB\wd\Cd@RA\setbox\Cd@BA=\box\voidb@x\Cd@rB\repeat\Cd@s\ht\Cd@IB\Cd@BI\dp
\Cd@IB\Cd@AI}\def\Cd@CG#1#2#3{\ifdim#1>.01\Cd@nC\Cd@LA#2\relax\advance\Cd@LA#%
1\relax\advance\Cd@LA.99\Cd@nC\count@\Cd@LA\divide\count@\Cd@nC\Cd@FB{%
increase cell #3 to \the\count@ em}\fi}\def\Cd@CI{\Cd@BA=\Cd@GB\penalty4
\noindent\unhbox\Cd@IB\Cd@TF\unskip\setbox0=\lastbox\ifhbox0 \advance\Cd@BA
\m@ne\setbox\Cd@BA\hbox to\wd0{\null\penalty-9990\null\unhbox0}\repeat\Cd@fA
\Cd@BA\advance\Cd@BA\Cd@HB\advance\Cd@BA-\Cd@gA\ifnum\Cd@BA<\Cd@GB\count@
\Cd@BA\advance\count@\m@ne\dimen0=\wd\count@\count@\Cd@HB\advance\count@\m@ne
\Cd@nB\wd\count@\Cd@TF\ifnum\Cd@BA<\Cd@GB\Cd@NI\Cd@vF\dimen0\wd\Cd@BA\advance
\Cd@BA1 \repeat\fi\Cd@TF\Cd@BB\lastpenalty\unpenalty\ifnum\Cd@BB>\z@\Cd@qA
\lastpenalty\unpenalty\Cd@tF\repeat\endgraf\unskip\ifnum\lastpenalty=4
\unpenalty\else\cd@shouldnt S\fi}\def\Cd@tF{\advance\Cd@qA\Cd@fA\advance
\Cd@qA\m@ne\setbox0=\lastbox\ifnum\Cd@qA<\Cd@GB\setbox\Cd@qA\hbox{\box0%
\penalty\Cd@BB\unhbox\Cd@qA}\else\Cd@sJ\fi}\def\Cd@zF{}\Cd@PG\Cd@aE\Cd@RB
\Cd@QB\def\Cd@NI{\advance\dimen0\wd\Cd@BA\divide\dimen0\tw@\Cd@aE\dimen0%
\DiagramCellWidth\else\Cd@S{\dimen0}\DiagramCellWidth\Cd@sI\fi\advance\Cd@nB
\dimen0 }\def\Cd@vF{\setbox\Cd@HB=\vbox{}\dp\Cd@HB=\Cd@oB\wd\Cd@HB\Cd@nB
\advance\Cd@HB1 }\def\Cd@gJ#1,{\def\Cd@IJ{#1}\ifx\Cd@IJ\Cd@BD\else\advance
\Cd@nB\Cd@IJ\DiagramCellWidth\Cd@vF\expandafter\Cd@gJ\fi}\def\Cd@hJ#1,{\def
\Cd@IJ{#1}\ifx\Cd@IJ\Cd@BD\else\ifnum\Cd@IB>\Cd@z\Cd@sE\Cd@IJ
\DiagramCellHeight\advance\Cd@sE-\dp\Cd@IB\advance\Cd@IB\m@ne\ht\Cd@IB\Cd@sE
\fi\expandafter\Cd@hJ\fi}\def\Cd@sI{\Cd@cE\Cd@KA\dimen0 \advance\Cd@KA-%
\DiagramCellWidth\ifdim\Cd@KA>2\MapShortFall\Cd@FB{badly drawn diagonals (see
manual)}\let\Cd@sI\empty\fi\else\let\Cd@sI\empty\fi}\def\Cd@CC{\Cd@RA\Cd@gA
\Cd@TF\ifnum\Cd@RA<\Cd@HB\dimen0\dp\Cd@RA\advance\dimen0\Cd@sE\dp\Cd@RA\dimen
0 \advance\Cd@RA1 \repeat}\def\Cd@wG#1#2#3#4{\ifnum\Cd@BA<\Cd@GB\Cd@KA=#1%
\relax\setbox\Cd@BA=\hbox{\setbox0=#2\dimen7=#4\relax\dimen8=#3\relax\ifhbox
\Cd@BA\unhbox\Cd@BA\advance\Cd@KA-\lastkern\unkern\fi\ifdim\Cd@KA=\z@\else
\kern-\Cd@KA\fi\raise\dimen7\box0 \kern-\dimen8 }\ifnum\Cd@BA=\Cd@fA\Cd@S
\Cd@NF\Cd@KA\fi\else\cd@shouldnt O\fi}\def\Cd@s{\setbox\Cd@IB=\hbox{\Cd@BA
\Cd@fA\Cd@RA\Cd@gA\Cd@LA\z@\relax\Cd@TF\ifnum\Cd@BA<\Cd@GB\Cd@nB\wd\Cd@RA
\relax\Cd@sH\advance\Cd@BA1 \advance\Cd@RA1 \repeat}\Cd@S\Cd@wH{\wd\Cd@IB}\wd
\Cd@IB\z@}\def\Cd@sH{\ifhbox\Cd@BA\Cd@KA\Cd@nB\relax\advance\Cd@KA-\Cd@LA
\relax\ifdim\Cd@KA=\z@\else\kern\Cd@KA\fi\Cd@LA\Cd@nB\advance\Cd@LA\wd\Cd@BA
\relax\unhbox\Cd@BA\advance\Cd@LA-\lastkern\unkern\fi}\def\Cd@nH{\setbox
\Cd@HH=\box\voidb@x\Cd@RA=\Cd@HB\Cd@BA\Cd@GB\Cd@RA\Cd@gA\advance\Cd@RA\Cd@BA
\advance\Cd@RA-\Cd@fA\advance\Cd@RA\m@ne\Cd@nB\wd\Cd@RA\count@\Cd@GB\advance
\count@\m@ne\Cd@LF.5\wd\count@\advance\Cd@LF\Cd@nB\Cd@A\m@ne\Cd@QD\@m\Cd@TF
\ifnum\Cd@BA>\Cd@fA\advance\Cd@BA\m@ne\advance\Cd@LF-\Cd@nB\Cd@dH\wd\Cd@RA
\Cd@nB\advance\Cd@LF\Cd@nB\advance\Cd@RA\m@ne\Cd@nB\wd\Cd@RA\repeat\Cd@PF
\Cd@NF\Cd@yH-\Cd@PF\Cd@pB}\newcount\Cd@BB\def\Cd@o{}\def\Cd@p{\mathsurround
\z@\hsize\z@\rightskip\z@ plus1fil minus\maxdimen\parfillskip\z@\linepenalty
9000 \looseness0 \hfuzz\maxdimen\hbadness10000 \clubpenalty0 \widowpenalty0
\displaywidowpenalty0 \interlinepenalty0 \predisplaypenalty0
\postdisplaypenalty0 \interdisplaylinepenalty0 \interfootnotelinepenalty0
\floatingpenalty0 \brokenpenalty0 \everypar{}\leftskip\z@\parskip\z@
\parindent\z@\pretolerance10000 \tolerance10000 \hyphenpenalty10000
\exhyphenpenalty10000 \binoppenalty10000 \relpenalty10000 \adjdemerits0
\doublehyphendemerits0 \finalhyphendemerits0 \Cd@EA\prevdepth\z@}\newbox
\Cd@lF\newbox\Cd@jF\def\Cd@kF{\unhcopy\Cd@lF}\def\Cd@iF{\unhcopy\Cd@jF}\def
\Cd@lI{\hbox{}\penalty1\nointerlineskip}\def\Cd@dH{\penalty5 \noindent\setbox
\Cd@hG=\null\Cd@PF\z@\Cd@yH\z@\ifnum\Cd@BA<\Cd@GB\ht\Cd@hG\ht\Cd@BA\dp\Cd@hG
\dp\Cd@BA\unhbox\Cd@BA\skip0=\lastskip\unskip\else\Cd@PJ\skip0=\z@\fi\endgraf
\ifcase\prevgraf\cd@shouldnt Y \or\cd@shouldnt Z \or\Cd@fH\or\Cd@lH\else
\Cd@eH\fi\unskip\setbox0=\lastbox\unskip\unskip\unpenalty\noindent\unhbox0%
\setbox0\lastbox\unpenalty\unskip\unskip\unpenalty\setbox0\lastbox\Cd@UF
\Cd@BB\lastpenalty\unpenalty\ifnum\Cd@BB>\z@\setbox\z@\lastbox\Cd@gB\repeat
\endgraf\unskip\unskip\unpenalty}\def\Cd@cI{\Cd@pA\Cd@SB\advance\Cd@pA-\Cd@IB
\Cd@qA\Cd@BA\advance\Cd@qA-\Cd@fA\advance\Cd@qA1 \expandafter\message{%
prevgraf=\the\prevgraf at (\the\Cd@pA,\the\Cd@qA)}}\def\Cd@lH{\Cd@nD\setbox
\Cd@xH=\lastbox\setbox\Cd@xH=\hbox{\unhbox\Cd@xH\unskip\unpenalty}\unskip
\ifdim\ht\Cd@xH>\ht\Cd@GC\setbox\Cd@hG=\copy\Cd@xH\else\ifdim\dp\Cd@xH>\dp
\Cd@GC\setbox\Cd@hG=\copy\Cd@xH\else\Cd@gF\Cd@xH\fi\fi\advance\Cd@PF.5\wd
\Cd@xH\advance\Cd@yH.5\wd\Cd@xH\setbox\Cd@xH=\hbox{\unhbox\Cd@xH\Cd@iF}\Cd@wG
\Cd@PF{\box\Cd@xH}\Cd@yH\z@\Cd@rB\Cd@pB}\def\Cd@nD{\ifnum\Cd@A>0 \advance
\dimen0-\Cd@nB\Cd@cA-.5\dimen0 \Cd@A-\Cd@A\else\Cd@A0 \Cd@cA\z@\fi\setbox
\Cd@hG=\lastbox\setbox\Cd@hG=\hbox{\unhbox\Cd@hG\unskip\unskip\unpenalty
\setbox0=\lastbox\global\Cd@MA\lastkern\unkern}\advance\Cd@cA-.5\Cd@MA\unskip
\setbox\Cd@hG=\null\Cd@yH\Cd@cA\Cd@PF-\Cd@cA}\def\Cd@W{\ht\Cd@hG\Cd@EI\dp
\Cd@hG\Cd@DI}\def\Cd@gF#1{\setbox\Cd@hG=\hbox{\Cd@S{\ht\Cd@hG}{\ht#1}\Cd@S{%
\dp\Cd@hG}{\dp#1}\Cd@S{\wd\Cd@hG}{\wd#1}\vrule height\ht\Cd@hG depth\dp\Cd@hG
width\wd\Cd@hG}}\def\Cd@eH{\Cd@nD\Cd@W\setbox\Cd@xH=\lastbox\unskip\setbox
\Cd@OF=\lastbox\unskip\setbox\Cd@OF=\hbox{\unhbox\Cd@OF\unskip\global\Cd@tA
\lastpenalty\unpenalty}\advance\Cd@tA9999 \ifcase\Cd@tA\Cd@iH\or\Cd@mH\or
\Cd@hH\or\Cd@rH\or\Cd@qH\or\Cd@gH\else\cd@shouldnt9\fi}\def\Cd@iH{\Cd@gF
\Cd@xH\Cd@jH\setbox\Cd@HH=\box\Cd@OF\setbox\Cd@IH=\box\Cd@xH}\def\Cd@mH{%
\Cd@gF\Cd@OF\setbox\Cd@xH\hbox{\penalty8 \unhbox\Cd@xH\unskip\unpenalty\ifnum
\lastpenalty=8 \else\Cd@wJ\fi}\Cd@jH\setbox\Cd@OF=\hbox{\unhbox\Cd@OF\unskip
\unpenalty\global\setbox\Cd@@A=\lastbox}\ifdim\wd\Cd@OF=\z@\else\Cd@wJ\fi
\setbox\Cd@HH=\box\Cd@@A}\def\Cd@wJ{\Cd@FB{extra material in \string\pile
\space cell (lost)}}\def\Cd@jH{\Cd@rB\ifvoid\Cd@HH\else\Cd@FB{Clashing
horizontal arrows}\Cd@yH.5\Cd@LF\Cd@PF-\Cd@yH\Cd@pB\Cd@yH\z@\Cd@PF\z@\fi
\Cd@uH\Cd@LF\advance\Cd@uH-\Cd@yH\Cd@LF-\Cd@PF\Cd@BC\Cd@BA}\def\Cd@fH{\setbox
0\lastbox\unskip\Cd@cA\z@\Cd@W\ifdim\skip0>\z@\Cd@wI\Cd@A0 \else\ifnum\Cd@A<1
\Cd@A0 \dimen0\Cd@nB\fi\advance\Cd@A1 \fi}\def\VonH{\Cd@IA46\VonH{.5\Cd@qE}}%
\def\HonV{\Cd@IA57\HonV{.5\Cd@qE}}\def\HmeetV{\Cd@IA44\HmeetV{-\MapShortFall}%
}\def\Cd@IA#1#2#3#4{\Cd@kB34#1{\string#3}\Cd@CD\Cd@BB-999#2 \dimen0=#4\Cd@EI
\dimen0\advance\Cd@EI\axisheight\Cd@DI\dimen0\advance\Cd@DI-\axisheight\Cd@hE
\Cd@@C\Cd@JD}\def\Cd@@C#1{\setbox0=\hbox{\Cd@h#1\Cd@zC}\dimen0.5\wd0 \Cd@EI
\ht0 \Cd@DI\dp0 \Cd@JD}\def\Cd@CD{\setbox0=\null\ht0=\Cd@EI\dp0=\Cd@DI\wd0=%
\dimen0 \copy0\penalty\Cd@BB\box0 }\def\Cd@hH{\Cd@zB\Cd@rB}\def\Cd@rH{\Cd@zB
\Cd@pB}\def\Cd@gH{\Cd@zB\Cd@rB\Cd@pB}\def\Cd@zB{\setbox\Cd@xH=\hbox{\unhbox
\Cd@xH}\setbox\Cd@OF=\hbox{\unhbox\Cd@OF\global\setbox\Cd@@A=\lastbox}\ht
\Cd@hG\ht\Cd@@A\dp\Cd@hG\dp\Cd@@A\advance\Cd@PF\wd\Cd@@A\advance\Cd@yH\wd
\Cd@xH}\Cd@PG\ifPositiveGradient\Cd@QH\Cd@PH\Cd@QH\Cd@PG\ifClimbing\Cd@mB
\Cd@lB\Cd@mB\newcount\DiagonalChoice\DiagonalChoice\m@ne\ifx\tenln\nullfont
\Cd@wI\def\Cd@RF{\Cd@fG\ifPositiveGradient/\else\Cd@h\backslash\Cd@zC\fi}%
\else\def\Cd@RF{\Cd@SF\char\count@}\fi\let\Cd@SF\tenln\def\Use@line@char#1{%
\hbox{#1\Cd@SF\ifPositiveGradient\else\advance\count@64 \fi\char\count@}}\def
\Cd@GF{\Use@line@char{\count@\Cd@KC\multiply\count@8\advance\count@-9\advance
\count@\Cd@gG}}\def\Cd@DF{\Use@line@char{\ifcase\DiagonalChoice\Cd@KF\or
\Cd@JF\or\Cd@JF\else\Cd@KF\fi}}\def\Cd@KF{\ifnum\Cd@KC=\z@\count@\rq33 \else
\count@\Cd@KC\multiply\count@\sixt@@n\advance\count@-9\advance\count@\Cd@gG
\advance\count@\Cd@gG\fi}\def\Cd@JF{\count@\rq\ifcase\Cd@gG55\or\ifcase\Cd@KC
66\or22\or52\or61\or72\fi\or\ifcase\Cd@KC66\or25\or22\or63\or52\fi\or\ifcase
\Cd@KC66\or16\or36\or22\or76\fi\or\ifcase\Cd@KC66\or27\or25\or67\or22\fi\fi
\relax}\def\Cd@iC#1{\hbox{#1\setbox0=\Use@line@char{#1}\ifPositiveGradient
\else\raise.3\ht0\fi\copy0 \kern-.7\wd0 \ifPositiveGradient\raise.3\ht0\fi
\box0}}\def\Cd@MF#1{\hbox{\setbox0=#1\kern-.75\wd0 \vbox to.25\ht0{%
\ifPositiveGradient\else\vss\fi\box0 \ifPositiveGradient\vss\fi}}}\def\Cd@vH#%
1{\hbox{\setbox0=#1\dimen0=\wd0 \vbox to.25\ht0{\ifPositiveGradient\vss\fi
\box0 \ifPositiveGradient\else\vss\fi}\kern-.75\dimen0 }}\Cd@IC{+h:>}{%
\Use@line@char\Cd@JF}\Cd@IC{-h:>}{\Use@line@char\Cd@KF}\Cd@QF{+t:<}{-h:>}%
\Cd@QF{-t:<}{+h:>}\Cd@IC{+t:>}{\Cd@MF{\Use@line@char\Cd@JF}}\Cd@IC{-t:>}{%
\Cd@vH{\Use@line@char\Cd@KF}}\Cd@QF{+h:<}{-t:>}\Cd@QF{-h:<}{+t:>}\Cd@IC{+h:>>%
}{\Cd@iC\Cd@JF}\Cd@IC{-h:>>}{\Cd@iC\Cd@KF}\Cd@QF{+t:<<}{-h:>>}\Cd@QF{-t:<<}{+%
h:>>}\Cd@IC{+t:>>}{\Cd@MF{\Cd@iC\Cd@JF}}\Cd@IC{-t:>>}{\Cd@vH{\Cd@iC\Cd@KF}}%
\Cd@QF{+h:<<}{-t:>>}\Cd@QF{-h:<<}{+t:>>}\Cd@IC{+f:-}{\Cd@kE\null\else\Cd@GF
\fi}\Cd@QF{-f:-}{+f:-}\def\Cd@hC#1#2{\vbox to#1{\vss\hbox to#2{\hss.\hss}\vss
}}\def\hfdot{\Cd@hC{2\axisheight}{.7em}}%%
\def\vfdot{\Cd@hC{1.46ex}\z@}\def\Cd@FF{\hbox{\dimen0=.3\Cd@nC\dimen1\dimen0
\ifnum\Cd@gG>\Cd@KC\Cd@ZC{\dimen1}\else\Cd@AG{\dimen0}\fi\Cd@hC{\dimen0}{%
\dimen1}}}\newarrowfiller{.}\hfdot\hfdot\vfdot\vfdot\def\dfdot{\Cd@FF\Cd@EJ}%
\Cd@IC{+f:.}{\dfdot}\Cd@IC{-f:.}{\dfdot}\def\Cd@iJ#1{\hbox\bgroup\def\Cd@ZG{#%
1\egroup}\afterassignment\Cd@ZG%%
\count@=\rq}\def\lnchar{\Cd@iJ\Cd@RF}\let\laf\lnchar\let\lah\lnchar\def\lad{%
\Cd@iJ\xlad}\def\xlad{\setbox2=\hbox{\Cd@RF}\setbox0=\hbox to.3\wd2{\hss.\hss
}\dimen0=\ht0 \advance\dimen0-\dp0 \dimen1=.3\ht2 \advance\dimen1-\dimen0 \dp
0=.5\dimen1 \dimen1=.3\ht2 \advance\dimen1\dimen0 \ht0=.5\dimen1 \raise\dp0%
\box0}\def\lahh{\Cd@iJ\xlahh}\def\lat{\Cd@iJ\xlat}\def\xlat{\setbox0=\hbox{%
\Cd@RF}\dimen0=\ht0 \setbox1=\hbox to.25\wd0{\ifcase\DiagonalChoice\box0\hss
\or\hss\box0 \or\hss\box0 \or\box0\hss\fi}\vbox to.25\dimen0{\ifClimbing\box1%
\vss\else\vss\box1\fi\kern\z@}}\def\xlahh{\setbox0=\hbox{\Cd@RF}%
\ifPositiveGradient\Cd@wI\copy0 \kern-.7\wd0 \mv.3\ht0\box0 \else\ifClimbing
\Cd@wI\copy0 \kern-.7\wd0 \mv.3\ht0\box0 \else\mv-.3\ht0\copy0 \kern-.7\wd0
\box0 \fi\fi}\def\Cd@HF#1{\setbox#1=\hbox{\dimen5\dimen#1 \setbox8=\box#1
\dimen1\wd8 \count@\dimen5 \divide\count@\dimen1 \ifnum\count@=0 \box8 \ifdim
\dimen5<.95\dimen1 \Cd@bB{diagonal line too short}\fi\else\dimen3=\dimen5
\advance\dimen3-\dimen1 \divide\dimen3\count@\dimen4\dimen3 \Cd@AG{\dimen4}%
\ifPositiveGradient\multiply\dimen4\m@ne\fi\dimen6\dimen1 \advance\dimen6-%
\dimen3 \loop\raise\count@\dimen4\copy8 \ifnum\count@>0 \kern-\dimen6 \advance
\count@\m@ne\repeat\fi}}\def\Cd@dF#1{\Cd@kE\Cd@@J{#1}\else\Cd@HF{#1}\fi}\def
\Cd@RK#1{}\newdimen\objectheight\objectheight1.8ex \newdimen\objectwidth
\objectwidth1em \def\Cd@ID{\dimen6=\Cd@bJ\DiagramCellHeight\dimen7=\Cd@XJ
\DiagramCellWidth\Cd@SI\ifnum\Cd@gG>0 \ifnum\Cd@KC>0 \Cd@EF\else\aftergroup
\Cd@MC\fi\else\aftergroup\Cd@LC\fi}\def\Cd@MC{\Cd@UA{diagonal map is nearly
vertical}\Cd@JA}\def\Cd@LC{\Cd@UA{diagonal map is nearly horizontal}\Cd@JA}%
\Cd@NG\Cd@JA{Use an orthogonal map instead}\def\Cd@EF{\Cd@TI\dimen3\dimen7%
\dimen7\dimen6\Cd@ZC{\dimen7}\advance\dimen3-\dimen7 \Cd@rE\ifnum\Cd@gG>%
\Cd@KC\advance\dimen6-\dimen1\advance\dimen6-\dimen5 \Cd@ZC{\dimen1}\Cd@ZC{%
\dimen5}\else\dimen0\dimen1\advance\dimen0\dimen5\Cd@AG{\dimen0}\advance
\dimen6-\dimen0 \fi\dimen2.5\dimen7\advance\dimen2-\dimen1 \dimen4.5\dimen7%
\advance\dimen4-\dimen5 \ifPositiveGradient\dimen0\dimen5 \advance\dimen1-%
\Cd@XJ\DiagramCellWidth\advance\dimen1 \Cd@aJ\DiagramCellWidth\setbox6=\llap{%
\unhbox6\kern.1\ht2}\setbox7=\rlap{\kern.1\ht2\unhbox7}\else\dimen0\dimen1
\advance\dimen1-\Cd@aJ\DiagramCellWidth\setbox7=\llap{\unhbox7\kern.1\ht2}%
\setbox6=\rlap{\kern.1\ht2\unhbox6}\fi\setbox6=\vbox{\box6\kern.1\wd2}\setbox
7=\vtop{\kern.1\wd2\box7}\Cd@AG{\dimen0}\advance\dimen0-\axisheight\advance
\dimen0-\Cd@cJ\DiagramCellHeight\dimen5-\dimen0 \advance\dimen0\dimen6
\advance\dimen1.5\dimen3 \ifdim\wd3>\z@\ifdim\ht3>-\dp3\Cd@OB\fi\fi\dimen3%
\dimen2 \dimen7\dimen2\advance\dimen7\dimen4 \ifvoid3 \else\Cd@ZE\else\dimen8%
\ht3\advance\dimen8-\axisheight\Cd@ZC{\dimen8}\Cd@U{\dimen8}{.5\wd3}\dimen9%
\dp3\advance\dimen9\axisheight\Cd@ZC{\dimen9}\Cd@U{\dimen9}{.5\wd3}%
\ifPositiveGradient\advance\dimen2-\dimen9\advance\dimen4-\dimen8 \else
\advance\dimen4-\dimen9\advance\dimen2-\dimen8 \fi\fi\advance\dimen3-.5\wd3
\fi\dimen9=\Cd@bJ\DiagramCellHeight\advance\dimen9-2\DiagramCellHeight\Cd@ZE
\advance\dimen2\dimen4 \Cd@dF{2}\dimen2-\dimen0\advance\dimen2\dp2 \else
\Cd@dF{2}\Cd@dF{4}\ifPositiveGradient\dimen2-\dimen0\advance\dimen2\dp2 \dimen
4\dimen5\advance\dimen4-\ht4 \else\dimen4-\dimen0\advance\dimen4\dp4 \dimen2%
\dimen5\advance\dimen2-\ht2 \fi\fi\setbox0=\hbox to\z@{\kern\dimen1 \ifvoid1
\else\ifPositiveGradient\advance\dimen0-\dp1 \lower\dimen0 \else\advance
\dimen5-\ht1 \raise\dimen5 \fi\rlap{\unhbox1}\fi\raise\dimen2\rlap{\unhbox2}%
\ifvoid3 \else\lower.5\dimen9\rlap{\kern\dimen3\unhbox3}\fi\kern.5\dimen7
\lower.5\dimen9\box6 \lower.5\dimen9\box7 \kern.5\dimen7 \Cd@ZE\else\raise
\dimen4\llap{\unhbox4}\fi\ifvoid5 \else\ifPositiveGradient\advance\dimen5-\ht
5 \raise\dimen5 \else\advance\dimen0-\dp5 \lower\dimen0 \fi\llap{\unhbox5}\fi
\hss}\ht0=\axisheight\dp0=-\ht0\box0 }\def\NorthWest{\Cd@PH\Cd@mB
\DiagonalChoice0 }\def\NorthEast{\Cd@QH\Cd@mB\DiagonalChoice1 }\def\SouthWest
{\Cd@QH\Cd@lB\DiagonalChoice3 }\def\SouthEast{\Cd@PH\Cd@lB\DiagonalChoice2 }%
\def\Cd@KD{\vadjust{\Cd@pA\Cd@BA\advance\Cd@pA\ifPositiveGradient\else-\fi
\Cd@aJ\relax\Cd@qA\Cd@IB\advance\Cd@qA-\Cd@cJ\relax\hbox{\advance\Cd@pA
\ifPositiveGradient-\fi\Cd@XJ\advance\Cd@qA\Cd@bJ\box\z@\penalty\Cd@pA
\penalty\Cd@qA}\penalty\Cd@pA\penalty\Cd@qA\penalty104}}\def\Cd@jJ#1{\relax
\vadjust{\hbox@maths{#1}\penalty\Cd@BA\penalty\Cd@IB\penalty\tw@}}\def\Cd@gB{%
\ifcase\Cd@BB\or\or\Cd@wG{.5\wd0}{\box0}{.5\wd0}\z@\or\unhbox\z@\setbox\z@
\lastbox\Cd@wG{.5\wd0}{\box0}{.5\wd0}\z@\unpenalty\unpenalty\setbox\z@
\lastbox\or\Cd@sF\else\advance\Cd@BB-100 \ifnum\Cd@BB<\z@\cd@shouldnt B\fi
\setbox\z@\hbox{\kern\Cd@PF\copy\Cd@hG\kern\Cd@yH\Cd@pA\Cd@SB\advance\Cd@pA-%
\Cd@IB\penalty\Cd@pA\Cd@pA\Cd@BA\advance\Cd@pA-\Cd@fA\penalty\Cd@pA\unhbox\z@
\global\Cd@tA\lastpenalty\unpenalty\global\Cd@uA\lastpenalty\unpenalty}\Cd@pA
-\Cd@tA\Cd@qA\Cd@uA\Cd@eJ\fi}\def\Cd@sF{\unhbox\z@\setbox\z@\lastbox\Cd@pA
\lastpenalty\unpenalty\advance\Cd@pA\Cd@gA\Cd@qA\Cd@SB\advance\Cd@qA-%
\lastpenalty\unpenalty\dimen1\lastkern\unkern\setbox3\lastbox\dimen0\lastkern
\unkern\setbox0=\hbox to\z@{\dimen7\Cd@nB\advance\dimen7-\wd\Cd@pA\ifdim
\dimen7<\z@\Cd@QH\multiply\dimen7\m@ne\else\Cd@PH\fi\ifnum\Cd@qA>\Cd@IB\dimen
6\Cd@oB\advance\dimen6-\ht\Cd@qA\else\dimen6\z@\fi\Cd@mI\ifPositiveGradient
\dimen6\z@\else\Cd@gG-\Cd@gG\kern-\dimen7 \fi\global\Cd@EG\raise\dimen6\hbox{%
\Cd@OD{\the\Cd@KC\space\the\Cd@gG\space bturn}\box0 \Cd@KJ{eturn}}\hss}\ht0%
\z@\dp0\z@\Cd@wG{\z@}{\box\z@}{\z@}{\axisheight}}\def\Cd@OD#1{\expandafter
\Cd@KJ{#1}}\Cd@VA\Cd@GJ{output is PostScript dependent}\def\Cd@JC{\Cd@KJ{/%
bturn {gsave currentpoint currentpoint translate 4 2 roll neg exch atan rotate
neg exch neg exch translate } def /eturn {currentpoint grestore moveto} def}}%
\def\Cd@UI#1{\count@#1\relax\multiply\count@7\advance\count@16577\divide
\count@33154 }\def\Cd@PD#1{\expandafter\special{#1}} \def\Cd@@J#1{\setbox#1=%
\hbox{\dimen0\dimen#1\Cd@AG{\dimen0}\Cd@UI{\dimen0}\setbox0=\null
\ifPositiveGradient\count@-\count@\ht0\dimen0 \else\dp0\dimen0 \fi\box0 \Cd@pA
\count@\Cd@UI\Cd@qE\Cd@PD{pn \the\count@}\Cd@PD{pa 0 0}\Cd@UI{\dimen#1}\Cd@PD
{pa \the\count@\space\the\Cd@pA}\Cd@PD{fp}\kern\dimen#1}}\def\Cd@XH{\Cd@SI
\begingroup\ifdim\dimen7<\dimen6 \dimen2=\dimen6 \dimen6=\dimen7 \dimen7=%
\dimen2 \count@\Cd@gG\Cd@gG\Cd@KC\Cd@KC\count@\else\dimen2=\dimen7 \fi\ifdim
\dimen6>.01\p@\Cd@YH\global\Cd@MA\dimen0 \else\global\Cd@MA\dimen7 \fi
\endgroup\dimen2\Cd@MA}\def\Cd@YH{\Cd@kI\ifdim\dimen7>1.73\dimen6 \divide
\dimen2 4 \multiply\Cd@KC2 \else\dimen2=0.353553\dimen2 \advance\Cd@gG-\Cd@KC
\multiply\Cd@KC4 \fi\dimen0=4\dimen2 \Cd@xF4\Cd@xF{-2}\Cd@xF2\Cd@xF{-2.5}}%
\def\Cd@OH{\begingroup\count@\dimen0 \dimen2 45pt \divide\count@\dimen2 \ifdim
\dimen0<\z@\advance\count@\m@ne\fi\ifodd\count@\advance\count@1\Cd@w\else
\Cd@u\fi\advance\dimen0-\count@\dimen2 \Cd@ME\multiply\dimen0\m@ne\fi\ifnum
\count@<0 \multiply\count@-7 \fi\dimen3\dimen1 \dimen6\dimen0 \dimen7 3754936%
sp \ifdim\dimen0<6\p@\def\Cd@pF{4000}\fi\Cd@SI\dimen2\dimen3\Cd@AG{\dimen2}%
\Cd@kI\multiply\Cd@KC-6 \dimen0\dimen2 \Cd@xF1\Cd@xF{0.3}\dimen1\dimen0 \dimen
2\dimen3 \dimen0\dimen3 \Cd@xF3\Cd@xF{1.5}\Cd@xF{0.3}\divide\count@2 \Cd@ME
\multiply\dimen1\m@ne\fi\ifodd\count@\dimen2\dimen1\dimen1\dimen0\dimen0-%
\dimen2 \fi\divide\count@2 \ifodd\count@\multiply\dimen0\m@ne\multiply\dimen1%
\m@ne\fi\global\Cd@MA\dimen0\global\Cd@NA\dimen1\endgroup\dimen6\Cd@MA\dimen7%
\Cd@NA}\def\Cd@mJ{255}\let\Cd@pF\Cd@mJ\def\Cd@SI{\begingroup\ifdim\dimen7<%
\dimen6 \dimen9\dimen7\dimen7\dimen6\dimen6\dimen9\Cd@w\else\Cd@u\fi\dimen2%
\z@\dimen3\Cd@sG\dimen4\Cd@sG\dimen0\z@\dimen8=\Cd@pF\Cd@sG\Cd@bC\global
\Cd@tA\dimen\Cd@ME0\else3\fi\global\Cd@uA\dimen\Cd@ME3\else0\fi\endgroup
\Cd@gG\Cd@tA\Cd@KC\Cd@uA}\def\Cd@bC{\count@\dimen6 \divide\count@\dimen7
\advance\dimen6-\count@\dimen7 \dimen9\dimen4 \advance\dimen9\count@\dimen0
\ifdim\dimen9>\dimen8 \Cd@uB\else\Cd@vB\ifdim\dimen6>\z@\dimen9\dimen6 \dimen
6\dimen7 \dimen7\dimen9 \expandafter\expandafter\expandafter\Cd@bC\fi\fi}\def
\Cd@uB{\ifdim\dimen0=\z@\ifdim\dimen9<2\dimen8 \dimen0\dimen8 \fi\else
\advance\dimen8-\dimen4 \divide\dimen8\dimen0 \ifdim\count@\Cd@sG<2\dimen8
\count@\dimen8 \dimen9\dimen4 \advance\dimen9\count@\dimen0 \Cd@vB\fi\fi}\def
\Cd@vB{\dimen4\dimen0 \dimen0\dimen9 \advance\dimen2\count@\dimen3 \dimen9%
\dimen2 \dimen2\dimen3 \dimen3\dimen9 }\def\Cd@xF#1{\Cd@AG{\dimen2}\advance
\dimen0 #1\dimen2 }\def\Cd@AG#1{\divide#1\Cd@KC\multiply#1\Cd@gG}\def\Cd@ZC#1%
{\divide#1\Cd@gG\multiply#1\Cd@KC}\def\Cd@kI{\dimen6\Cd@gG\Cd@sG\multiply
\dimen6\Cd@gG\dimen7\Cd@KC\Cd@sG\multiply\dimen7\Cd@KC\Cd@SI}\ifx
\errorcontextlines\undefined\Cd@wI\let\Cd@cG\relax\else\def\Cd@cG{%
\errorcontextlines\m@ne}\fi\ifnum\inputlineno<0 \let\Cd@pC\empty\let\Cd@T
\empty\let\Cd@XD\relax\let\Cd@FI\relax\let\Cd@GI\relax\let\Cd@ZF\relax
\message{! Why not upgrade to TeX version 3? (available since 1990)}\else\def
\Cd@T{ at line \number\inputlineno}\def\Cd@XD{ - first occurred}\def\Cd@FI{%
\edef\Cd@e{\the\inputlineno}\global\let\Cd@eB\Cd@e}\def\Cd@e{9999}\def\Cd@GI{%
\xdef\Cd@eB{\the\inputlineno}}\def\Cd@eB{\Cd@e}\def\Cd@ZF{\ifnum\Cd@e<%
\inputlineno\edef\Cd@pC{\space at lines \Cd@e--\the\inputlineno}\else\edef
\Cd@pC{\Cd@T}\fi}\fi\let\Cd@pC\empty\def\Cd@UA#1#2{\Cd@cG\errhelp=#2%
\expandafter\errmessage{\Cd@oA: #1}}\def\Cd@FB#1{{\expandafter\message{!
\Cd@oA: #1\Cd@pC}}}\def\Cd@bB#1{{\expandafter\message{\Cd@oA\space Warning: #%
1\Cd@T}}}\def\Cd@yA#1#2{\Cd@bB{#1 \string#2 is obsolete\Cd@XD}}\def\Cd@wA#1{%
\Cd@yA{Dimension}{#1}\Cd@oD#1\Cd@xA\Cd@xA}\def\Cd@xA{\Cd@KA=}\def\Cd@vA#1{%
\Cd@yA{Count}{#1}\Cd@oD#1\Cd@jG\Cd@jG}\def\Cd@jG{\count@=}\def
\HorizontalMapLength{\Cd@wA\HorizontalMapLength}\def\VerticalMapHeight{\Cd@wA
\VerticalMapHeight}\def\VerticalMapDepth{\Cd@wA\VerticalMapDepth}\def
\VerticalMapExtraHeight{\Cd@wA\VerticalMapExtraHeight}\def
\VerticalMapExtraDepth{\Cd@wA\VerticalMapExtraDepth}\def\DiagonalLineSegments
{\Cd@vA\DiagonalLineSegments}\ifx\tenln\nullfont\Cd@VA\Cd@fG{\Cd@IF\space
diagonal line and arrow font not available}\else\let\Cd@fG\relax\fi\def\Cd@yF
#1#2<#3:#4:#5#6{\begingroup\Cd@LA#3\relax\advance\Cd@LA-#2\relax\ifdim.1em<%
\Cd@LA\Cd@pA#5\relax\Cd@qA#6\relax\ifnum\Cd@pA<\Cd@qA\count@\Cd@qA\advance
\count@-\Cd@pA\Cd@FB{#4 by \the\Cd@LA}\if#1v\let\Cd@ZG\Cd@LJ\else\advance
\count@\count@\if#1l\advance\count@-\Cd@A\else\if#1r\advance\count@\Cd@A\fi
\fi\advance\Cd@LA\Cd@LA\let\Cd@ZG\Cd@IE\fi\divide\Cd@LA\count@\ifdim\Cd@ZG<%
\Cd@LA\global\Cd@ZG\Cd@LA\fi\fi\fi\endgroup}\Cd@PG\Cd@dE\Cd@wC\Cd@vC\Cd@NG
\Cd@II{See the message above.}\Cd@NG\Cd@DH{Perhaps you've forgotten to end the
diagram before resuming the text, in\Cd@QG which case some garbage may be
added to the diagram, but we should be ok now.\Cd@QG Alternatively you've left
a blank line in the middle - TeX will now complain\Cd@QG that the remaining
\Cd@P s are misplaced - so please use comments for layout.}\Cd@NG\Cd@RD{You
have already closed too many brace pairs or environments; an \Cd@uC\Cd@QG
command was (over)due.}\Cd@NG\Cd@@H{\Cd@UC\space and \Cd@uC\space commands
must match.}\def\Cd@AH{\ifnum\inputlineno=0 \else\expandafter\Cd@BH\fi}\def
\Cd@BH{\Cd@xC\Cd@tC\crcr\Cd@UA{missing \Cd@uC\space inserted before \Cd@CH-
type "h"}\Cd@DH\enddiagram\Cd@bF\Cd@CH\par}\def\Cd@bF#1{\edef\enddiagram{%
\noexpand\Cd@cD{#1\Cd@T}}}\def\Cd@cD#1{\Cd@UA{\Cd@uC\space(anticipated by #1)
ignored}\Cd@II\let\enddiagram\Cd@rF}\def\Cd@rF{\Cd@UA{misplaced \Cd@uC\space
ignored}\Cd@@H}\def\Cd@cC{\Cd@UA{missing \Cd@uC\space inserted.}\Cd@RD\Cd@bF{%
closing group}}\ifx\DeclareOption\undefined\else\ifx\DeclareOption\@notprerr
\else\DeclareOption*{\let\Cd@K\relax\let\Cd@tJ\relax\expandafter\Cd@kD
\CurrentOption,}\fi\fi
%%======================================================================%
%%                                                                      %
%%      (21) AUXILLARY MACROS FOR ADJUSTMENT OF COMPONENTS              %
%%                                                                      %
%%======================================================================%

%% NOTE: The recommended way of defining arrow commands is now
%%      \newarrow{Name}{tail}{filler}{middle}{filler}{head}
%% which defines \rName, \lName, \dName and \uName using arrow parts which
%% have themselves previously been defined using the commands
%% \newarrowtail, \newarrowfiller, \newarrowmiddle and \newarrowhead.

%% The components \rhvee etc have been retained for the time being, as an
%% intermediate stage and to continue to support the old \HorizontalMap and
%% \VerticalMap commands, but you should not rely on the continued existence
%% of these macros.

%% The various components usually need some correction
%% - longitudinally, ie to prevent gaps and overprints with the shaft,
%% - transversally,  ie to prevent "steps" in the junction with the shaft.
%% The former can be done safely ad hoc, eg with \mkern1mu.
%% The latter are now done with the macros \scriptaxis, \boldscriptaxis,
%% \shifthook and \raisehook, which include pixel corrections.

%% Please note that these and the other auxillary macros which follow are
%% interim. When it becomes clear exactly what kinds of adjustments are
%% needed for characters, this job will be done by a suitable extension
%% to the language of \newarrowhead, etc. If you have any other ideas for
%% transformations of general use please tell me.

%% By all means experiment with other characters for arrowheads, but
%% please, in your own interests, do not rely on macros like \rhvee,
%% send me a copy of your definitions for distribution to other users
%% in this file, and keep track of where your efforts get copied so
%% that they can be replaced with the "official" version when it is
%% incorporated.

%% ***** DONT use macros with mangled names like \Cd@gH. *****

\catcode\lq\$=3 %% make sure that $ means maths-shift
\def\vboxtoz{\vbox to\z@}%% \z@ is in plain TeX and means 0pt

%% print #1 in \scriptstyle, adjusting for the maths axis height
\def\scriptaxis#1{\@scriptaxis{$\scriptstyle#1$}}%%
\def\ssaxis#1{\@ssaxis{$\scriptscriptstyle#1$}}%%
\def\@scriptaxis#1{\dimen0\axisheight\advance\dimen0-\ss@axisheight\raise
\dimen0\hbox{#1}}\def\@ssaxis#1{\dimen0\axisheight\advance\dimen0-%
\ss@axisheight\raise\dimen0\hbox{#1}}

%% Some of the characters would look better in bold since they're
%% taken from sub/superscript fonts; we use LaTeX's \boldmath to
%% do this, defining this to do nothing if it doesn't exist.
%% With the old LaTeX font selection at other than 10pt you may still
%% get nothing happenning.  Also, PK fonts may be missing.
%% If you have problems, DONT use boldhook or boldlittlevee.
\ifx\boldmath\undefined%%
\let\boldscriptaxis\scriptaxis%%
\def\boldscript#1{\hbox{$\scriptstyle#1$}}%%
\def\boldscriptscript#1{\hbox{$\scriptscriptstyle#1$}}%%
\else\def\boldscriptaxis#1{\@scriptaxis{\boldmath$\scriptstyle#1$}}%%
\def\boldscript#1{\hbox{\boldmath$\scriptstyle#1$}}%%
\def\boldscriptscript#1{\hbox{\boldmath$\scriptscriptstyle#1$}}%%
\fi

%%  #1= {} or \boldmath; #2= + or -; #3=\subset or \supset
\def\raisehook#1#2#3{\hbox{\setbox3=\hbox{#1$\scriptscriptstyle#3$}%
%% the character to use
\dimen0\ss@axisheight%% \scriptscriptstyle axis height
\dimen1\axisheight\advance\dimen1-\dimen0%% difference in axis heights
\dimen2\ht3\advance\dimen2-\dimen0%
%%  height of char above axis (half spread)
\advance\dimen1 #2\dimen2%% shift = axis_difference +/- half_spread
\raise\dimen1\box3}}%% print the character

%% Mark Dawson suggested using the width
\def\shifthook#1#2#3{\setbox0=\hbox{#1$\scriptscriptstyle#3$}\dimen0\wd0%
\divide\dimen0 12\Cd@MH{\dimen0}%%  "u"
\dimen1\wd0\advance\dimen1-2\dimen0\advance\dimen1-\Cd@@I\Cd@MH{\dimen1}\kern
#2\dimen1\box0}%% print

%% use the extension font (cmex) for double vertical arrows
\def\@cmex{\mathchar"03}%%ascii double quote

%%      ************* P U L L B A C K S ************

%% These will probably be replaced by something less ad hoc
%% in a future version.

\def\make@pbk#1{\setbox\tw@\hbox to\z@{#1}\ht\tw@\z@\dp\tw@\z@\box\tw@}\def
\Cd@kJ#1{\overprint{\hbox to\z@{#1}}}\def\Cd@vJ{\kern0.11em}\def\Cd@uJ{\kern0%
.35em}

%% This is a hack for my book ``Practical Foundations of Mathematics''
%% and WILL NOT BE SUPPORTED --- DO NOT USE IT!
\def\dblvert{\def\Cd@SK{\kern.5\PileSpacing}}\def\Cd@SK{}

\def\SEpbk{\make@pbk{\Cd@vJ\Cd@SK\vrule depth 2.87ex height -2.75ex width 0.%
95em \vrule height -0.66ex depth 2.87ex width 0.05em \hss}}

\def\SWpbk{\make@pbk{\hss\vrule height -0.66ex depth 2.87ex width 0.05em
\vrule depth 2.87ex height -2.75ex width 0.95em \Cd@vJ\Cd@SK}}

\def\NEpbk{\make@pbk{\Cd@vJ\Cd@SK\vrule depth -3.81ex height 4.00ex width 0.%
95em \vrule height 4.00ex depth -1.72ex width 0.05em \hss}}

\def\NWpbk{\make@pbk{\hss\vrule height 4.00ex depth -1.72ex width 0.05em
\vrule depth -3.81ex height 4.00ex width 0.95em \Cd@vJ\Cd@SK}}

%%  Freyd & Scedrov puncture symbol for non-commuting polygon
\def\puncture{{\setbox0\hbox{A}\vrule height.53\ht0 depth-.47\ht0 width.35\ht
0 \kern.12\ht0 \vrule height\ht0 depth-.65\ht0 width.06\ht0 \kern-.06\ht0
\vrule height.35\ht0 depth0pt width.06\ht0 \kern.12\ht0 \vrule height.53\ht0
depth-.47\ht0 width.35\ht0 }}

%% 2-cells: (24.11.95)
%%% \NEclck puts a clockwise (ie southeast) arrow to the northwest of cell etc
\def\NEclck{\overprint{\raise2.5ex\rlap{ \Cd@SK$\scriptstyle\searrow$}}}%%
\def\NEanti{\overprint{\raise2.5ex\rlap{ \Cd@SK$\scriptstyle\nwarrow$}}}%%
\def\NWclck{\overprint{\raise2.5ex\llap{$\scriptstyle\nearrow$ \Cd@SK}}}%%
\def\NWanti{\overprint{\raise2.5ex\llap{$\scriptstyle\swarrow$ \Cd@SK}}}%%
\def\SEclck{\overprint{\lower1ex\rlap{ \Cd@SK$\scriptstyle\swarrow$}}}%%
\def\SEanti{\overprint{\lower1ex\rlap{ \Cd@SK$\scriptstyle\nearrow$}}}%%
\def\SWclck{\overprint{\lower1ex\llap{$\scriptstyle\nwarrow$ \Cd@SK}}}%%
\def\SWanti{\overprint{\lower1ex\llap{$\scriptstyle\searrow$ \Cd@SK}}}

%%======================================================================%
%%                                                                      %
%%      (22) BITS OF ARROWS                                             %
%%                                                                      %
%%======================================================================%

%%       **********  H E A D S ***********

%% \diagramstyle[heads=xxx] defines {>} as {xxx} where xxx
%% has been defined by \newarrowhead{xxx} and \newarrowtail{xxx}

%% vee head
\def\rhvee{\mkern-10mu\greaterthan}%%
\def\lhvee{\lessthan\mkern-10mu}%%
\def\dhvee{\vboxtoz{\vss\hbox{$\vee$}\kern0pt}}%%
\def\uhvee{\vboxtoz{\hbox{$\wedge$}\vss}}%%
\newarrowhead{vee}\rhvee\lhvee\dhvee\uhvee

%% little vee head
\def\dhlvee{\vboxtoz{\vss\hbox{$\scriptstyle\vee$}\kern0pt}}%%
\def\uhlvee{\vboxtoz{\hbox{$\scriptstyle\wedge$}\vss}}%%
\newarrowhead{littlevee}{\mkern1mu\scriptaxis\rhvee}{\scriptaxis\lhvee}%
\dhlvee\uhlvee\ifx\boldmath\undefined%%
\newarrowhead{boldlittlevee}{\mkern1mu\scriptaxis\rhvee}{\scriptaxis\lhvee}%
\dhlvee\uhlvee\else%%
\def\dhblvee{\vboxtoz{\vss\boldscript\vee\kern0pt}}%%
\def\uhblvee{\vboxtoz{\boldscript\wedge\vss}}%%
\newarrowhead{boldlittlevee}{\mkern1mu\boldscriptaxis\rhvee}{\boldscriptaxis
\lhvee}\dhblvee\uhblvee%%
\fi

%% curly vee head (uses AMS symbols fonts)
\def\rhcvee{\mkern-10mu\succ}%%
\def\lhcvee{\prec\mkern-10mu}%%
\def\dhcvee{\vboxtoz{\vss\hbox{$\curlyvee$}\kern0pt}}%%
\def\uhcvee{\vboxtoz{\hbox{$\curlywedge$}\vss}}%%
\newarrowhead{curlyvee}\rhcvee\lhcvee\dhcvee\uhcvee

%% double vee head %% will probably be withdrawn later
\def\rhvvee{\mkern-13mu\gg}%% 24.8.92 changed 10mu to 13mu
\def\lhvvee{\ll\mkern-13mu}%% to make rule go through
\def\dhvvee{\vboxtoz{\vss\hbox{$\vee$}\kern-.6ex\hbox{$\vee$}\kern0pt}}%%
\def\uhvvee{\vboxtoz{\hbox{$\wedge$}\kern-.6ex \hbox{$\wedge$}\vss}}%%
\newarrowhead{doublevee}\rhvvee\lhvvee\dhvvee\uhvvee

%% open and closed triangles (uses AMS symbols fonts)
\def\triangleup{{\scriptscriptstyle\bigtriangleup}}%%
\def\littletriangledown{{\scriptscriptstyle\triangledown}}%% AMS
\def\rhtriangle{\triangleright\mkern1.2mu}%% 29.1.93
\def\lhtriangle{\triangleleft\mkern1mu}%%
\def\uhtriangle{\vbox{\kern-.2ex \hbox{$\scriptscriptstyle\bigtriangleup$}%
\kern-.25ex}}%%
%% Changed \scriptstyle\triangledown to \scriptscriptstyle\bigtriangledown
%% at the suggestion of Martin Hofmann (25.11.92) to avoid using AMS symbols
%% and also for compatibility with upward arrow.
\def\dhtriangle{\vbox{\kern-.4ex \hbox{$\scriptscriptstyle\bigtriangledown$}%
\kern-.1ex}}%% 15.1.93 from -.25ex
\def\dhblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\blacktriangledown$}}}%
%% AMS
\def\uhblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\blacktriangle$}}}%
%% AMS
\def\dhlblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\scriptstyle
\blacktriangledown$}}}%% AMS
\def\uhlblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\scriptstyle
\blacktriangle$}}}%% AMS
\newarrowhead{triangle}\rhtriangle\lhtriangle\dhtriangle\uhtriangle
\newarrowhead{blacktriangle}{\mkern-1mu\blacktriangleright\mkern.4mu}{%
\blacktriangleleft}\dhblack\uhblack\newarrowhead{littleblack}{\mkern-1mu%
\scriptaxis\blacktriangleright}{\scriptaxis\blacktriangleleft\mkern-2mu}%
\dhlblack\uhlblack

%% LaTeX arrowheads
\def\rhla{\hbox{\setbox0=\lnchar55\dimen0=\wd0\kern-.6\dimen0\ht0\z@\raise
\axisheight\box0\kern.1\dimen0}}%%
\def\lhla{\hbox{\setbox0=\lnchar33\dimen0=\wd0\kern.05\dimen0\ht0\z@\raise
\axisheight\box0\kern-.5\dimen0}}%%
\def\dhla{\vboxtoz{\vss\rlap{\lnchar77}}}%%
\def\uhla{\vboxtoz{\setbox0=\lnchar66 \wd0\z@\kern-.15\ht0\box0\vss}}%% 1/93
\newarrowhead{LaTeX}\rhla\lhla\dhla\uhla

%% double LaTeX arrowheads %% will probably be withdrawn later
\def\lhlala{\lhla\kern.3em\lhla}%%
\def\rhlala{\rhla\kern.3em\rhla}%%
\def\uhlala{\hbox{\uhla\raise-.6ex\uhla}}%%
\def\dhlala{\hbox{\dhla\lower-.6ex\dhla}}%%
\newarrowhead{doubleLaTeX}\rhlala\lhlala\dhlala\uhlala

%% circles % \rho is a Greek letter!
\def\hhO{\scriptaxis\bigcirc\mkern.4mu} \def\hho{{\circ}\mkern1.2mu}%
\newarrowhead{o}\hho\hho\circ\circ%%
\newarrowhead{O}\hhO\hhO{\scriptstyle\bigcirc}{\scriptstyle\bigcirc}%%

%% crosses
\def\rhtimes{\mkern-5mu{\times}\mkern-.8mu}\def\lhtimes{\mkern-.8mu{\times}%
\mkern-5mu}\def\uhtimes{\setbox0=\hbox{$\times$}\ht0\axisheight\dp0-\ht0%
\lower\ht0\box0 }\def\dhtimes{\setbox0=\hbox{$\times$}\ht0\axisheight\box0 }%
\newarrowhead{X}\rhtimes\lhtimes\dhtimes\uhtimes\newarrowhead+++++

%% empty head {} is also available

%% Y from stmaryrd (vertical ones still need large adjustment)
\newarrowhead{Y}{\mkern-3mu\Yright}{\Yleft\mkern-3mu}\Yup\Ydown

%%       **********  H E A D S  with  S H A F T S  ***********

%% little arrow with shaft
\newarrowhead{->}\rightarrow\leftarrow\downarrow\uparrow

%% arrow with double shaft
%%\newarrowhead{=>}\Rightarrow\Leftarrow\Downarrow\Uparrow
\newarrowhead{=>}\Rightarrow\Leftarrow{\@cmex7F}{\@cmex7E}

%% harpoon with shaft (trailing up/left can be changed to down/right)
\newarrowhead{harpoon}\rightharpoonup\leftharpoonup\downharpoonleft
\upharpoonleft

%% little double-headed arrow with shaft (uses AMS symbols fonts)
\def\twoheaddownarrow{\rlap{$\downarrow$}\raise-.5ex\hbox{$\downarrow$}}%%
\def\twoheaduparrow{\rlap{$\uparrow$}\raise.5ex\hbox{$\uparrow$}}%%
\newarrowhead{->>}\twoheadrightarrow\twoheadleftarrow\twoheaddownarrow
\twoheaduparrow

%%       **********  T A I L S ***********

%% vee tail
\def\rtvee{\greaterthan}%%
\def\ltvee{\mkern-1mu{\lessthan}\mkern.4mu}%% \mkern added 15.1.93
\def\dtvee{\vee}%%
\def\utvee{\wedge}%%
\newarrowtail{vee}\greaterthan\ltvee\vee\wedge

%% little vee tail
\newarrowtail{littlevee}{\scriptaxis\greaterthan}{\mkern-1mu\scriptaxis
\lessthan}{\scriptstyle\vee}{\scriptstyle\wedge}\ifx\boldmath\undefined
\newarrowtail{boldlittlevee}{\scriptaxis\greaterthan}{\mkern-1mu\scriptaxis
\lessthan}{\scriptstyle\vee}{\scriptstyle\wedge}\else\newarrowtail{%
boldlittlevee}{\boldscriptaxis\greaterthan}{\mkern-1mu\boldscriptaxis
\lessthan}{\boldscript\vee}{\boldscript\wedge}\fi

%% curly vee tail (uses AMS symbols fonts)
\newarrowtail{curlyvee}\succ{\mkern-1mu{\prec}\mkern.4mu}\curlyvee\curlywedge

%% open and closed triangle tails (uses AMS symbols fonts)
\def\rttriangle{\mkern1.2mu\triangleright}%% 29.1.93
\newarrowtail{triangle}\rttriangle\lhtriangle\dhtriangle\uhtriangle
\newarrowtail{blacktriangle}\blacktriangleright{\mkern-1mu\blacktriangleleft
\mkern.4mu}\dhblack\uhblack\newarrowtail{littleblack}{\scriptaxis
\blacktriangleright\mkern-2mu}{\mkern-1mu\scriptaxis\blacktriangleleft}%
\dhlblack\uhlblack

%% LaTeX tails
\def\rtla{\hbox{\setbox0=\lnchar55\dimen0=\wd0\kern-.5\dimen0\ht0\z@\raise
\axisheight\box0\kern-.2\dimen0}}%%
\def\ltla{\hbox{\setbox0=\lnchar33\dimen0=\wd0\kern-.15\dimen0\ht0\z@\raise
\axisheight\box0\kern-.5\dimen0}}%%
\def\dtla{\vbox{\setbox0=\rlap{\lnchar77}\dimen0=\ht0\kern-.7\dimen0\box0%
\kern-.1\dimen0}}%% 15.1.93 from -.6
\def\utla{\vbox{\setbox0=\rlap{\lnchar66}\dimen0=\ht0\kern-.1\dimen0\box0%
\kern-.6\dimen0}}%%
\newarrowtail{LaTeX}\rtla\ltla\dtla\utla

%% double vee tail %% will probably be withdrawn later
\def\rtvvee{\gg\mkern-3mu}%%
\def\ltvvee{\mkern-3mu\ll}%%
\def\dtvvee{\vbox{\hbox{$\vee$}\kern-.6ex \hbox{$\vee$}\vss}}%%
\def\utvvee{\vbox{\vss\hbox{$\wedge$}\kern-.6ex \hbox{$\wedge$}\kern\z@}}%%
\newarrowtail{doublevee}\rtvvee\ltvvee\dtvvee\utvvee

%% double LaTeX tails %% will probably be withdrawn later
\def\ltlala{\ltla\kern.3em\ltla}%%
\def\rtlala{\rtla\kern.3em\rtla}%%
\def\utlala{\hbox{\utla\raise-.6ex\utla}}%%
\def\dtlala{\hbox{\dtla\lower-.6ex\dtla}}%%
\newarrowtail{doubleLaTeX}\rtlala\ltlala\dtlala\utlala

%% bar (as in \mapsto)
\def\utbar{\vrule height 0.093ex depth0pt width 0.4em}%%
\let\dtbar\utbar%%
\def\rtbar{\mkern1.5mu\vrule height 1.1ex depth.06ex width .04em\mkern1.5mu}%
%%
\let\ltbar\rtbar%%
\newarrowtail{mapsto}\rtbar\ltbar\dtbar\utbar%%
\newarrowtail{|}\rtbar\ltbar\dtbar\utbar%%ascii vertical bar (|)

%% hooks (as in \into): choice of after/above and before/below

\def\rthooka{\raisehook{}+\subset\mkern-1mu}%%
\def\lthooka{\mkern-1mu\raisehook{}+\supset}%%
\def\rthookb{\raisehook{}-\subset\mkern-2mu}%%
\def\lthookb{\mkern-1mu\raisehook{}-\supset}%%

\def\dthooka{\shifthook{}+\cap}%%
\def\dthookb{\shifthook{}-\cap}%%
\def\uthooka{\shifthook{}+\cup}%%
\def\uthookb{\shifthook{}-\cup}%%

\newarrowtail{hooka}\rthooka\lthooka\dthooka\uthooka\newarrowtail{hookb}%
\rthookb\lthookb\dthookb\uthookb

\ifx\boldmath\undefined\newarrowtail{boldhooka}\rthooka\lthooka\dthooka
\uthooka\newarrowtail{boldhookb}\rthookb\lthookb\dthookb\uthookb\newarrowtail
{boldhook}\rthooka\lthookb\dthooka\uthooka\else\def\rtbhooka{\raisehook
\boldmath+\subset\mkern-1mu}%%
\def\ltbhooka{\mkern-1mu\raisehook\boldmath+\supset}%%
\def\rtbhookb{\raisehook\boldmath-\subset\mkern-2mu}%%
\def\ltbhookb{\mkern-1mu\raisehook\boldmath-\supset}%%
\def\dtbhooka{\shifthook\boldmath+\cap}%%
\def\dtbhookb{\shifthook\boldmath-\cap}%%
\def\utbhooka{\shifthook\boldmath+\cup}%%
\def\utbhookb{\shifthook\boldmath-\cup}%%
\newarrowtail{boldhooka}\rtbhooka\ltbhooka\dtbhooka\utbhooka\newarrowtail{%
boldhookb}\rtbhookb\ltbhookb\dtbhookb\utbhookb\newarrowtail{boldhook}%
\rtbhooka\ltbhookb\dthbooka\utbhooka\fi

%% the following seem the better choices at 10pt & 300dpi
\newarrowtail{hook}\rthooka\lthookb\dthooka\uthooka\newarrowtail{C}\rthooka
\lthookb\dthooka\uthooka

%% circles
\newarrowtail{o}\hho\hho\circ\circ%%
\newarrowtail{O}\hhO\hhO{\scriptstyle\bigcirc}{\scriptstyle\bigcirc}%%

%% crosses
\newarrowtail{X}\lhtimes\rhtimes\uhtimes\dhtimes\newarrowtail+++++

%% empty tail {} is also available

%% Y from stmaryrd (vertical ones still need adjustment)
\newarrowtail{Y}\Yright\Yleft\Yup\Ydown

%% harpoon with shaft (trailing up/left can be changed to down/right)
\newarrowtail{harpoon}\leftharpoondown\rightharpoondown\upharpoonright
\downharpoonright

%%      **********  F I L L E R S ***********

%% shortening is up to 0.15em=2.7mu horiz and 0.35ex vertically at each end.

%% dot {.}, single rule {-} and empty {} fillers are also available

%% double and triple lines
%%\newarrowfiller{=}==\Vert\Vert%%
\newarrowfiller{=}=={\@cmex77}{\@cmex77}%% 16.1.93
\def\vfthree{\mid\!\!\!\mid\!\!\!\mid}%%ascii
\newarrowfiller{3}\equiv\equiv\vfthree\vfthree

%% dashed line
\def\vfdashstrut{\vrule width0pt height1.3ex depth0.7ex}%%
\def\vfthedash{\vrule width\Cd@qE height0.6ex depth 0pt}%%
\def\hfthedash{\Cd@MI\vrule\horizhtdp width 0.26em}%%
\def\hfdash{\mkern5.5mu\hfthedash\mkern5.5mu}%%
\def\vfdash{\vfdashstrut\vfthedash}%%
\newarrowfiller{dash}\hfdash\hfdash\vfdash\vfdash

%%      ************* M I D D L E S ************

%% plus
\newarrowmiddle+++++

%%      ************* D I A G O N A L S ************

%% simple arrow heads
%%\def\nwhTO{\nwarrow\mkern-1mu}%%
%%\def\nehTO{\mkern-.1mu\nearrow}%%
%%\def\sehTO{\searrow\mkern-.02mu}%%
%%\def\swhTO{\mkern-.8mu\swarrow}%%

%%======================================================================%
%%                                                                      %
%%      (22) ARROW COMMANDS                                             %
%%                                                                      %
%%======================================================================%

%% change to \iftrue to get mixed heads
\iffalse%%
\newarrow{To}----{vee}%%
\newarrow{Arr}----{LaTeX}%%
\newarrow{Dotsto}....{vee}%%
\newarrow{Dotsarr}....{LaTeX}%%
\newarrow{Dashto}{}{dash}{}{dash}{vee}%%
\newarrow{Dasharr}{}{dash}{}{dash}{LaTeX}%%
\newarrow{Mapsto}{mapsto}---{vee}%%
\newarrow{Mapsarr}{mapsto}---{LaTeX}%%
\newarrow{IntoA}{hooka}---{vee}%%
\newarrow{IntoB}{hookb}---{vee}%%
\newarrow{Embed}{vee}---{vee}%%
\newarrow{Emarr}{LaTeX}---{LaTeX}%%
\newarrow{Onto}----{doublevee}%%
\newarrow{Dotsonarr}....{doubleLaTeX}%%
\newarrow{Dotsonto}....{doublevee}%%
\newarrow{Dotsonarr}....{doubleLaTeX}%%
\else%%
\newarrow{To}---->%%
\newarrow{Arr}---->%%
\newarrow{Dotsto}....>%%
\newarrow{Dotsarr}....>%%
\newarrow{Dashto}{}{dash}{}{dash}>%%
\newarrow{Dasharr}{}{dash}{}{dash}>%%
\newarrow{Mapsto}{mapsto}--->%%
\newarrow{Mapsarr}{mapsto}--->%%
\newarrow{IntoA}{hooka}--->%%
\newarrow{IntoB}{hookb}--->%%
\newarrow{Embed}>--->%%
\newarrow{Emarr}>--->%%
\newarrow{Onto}----{>>}%%
\newarrow{Dotsonarr}....{>>}%%
\newarrow{Dotsonto}....{>>}%%
\newarrow{Dotsonarr}....{>>}%%
\fi%%

\newarrow{Implies}===={=>}%% minimum cell height 9.5pt
\newarrow{Project}----{triangle}%%
\newarrow{Pto}----{harpoon}%% partial function
\newarrow{Relto}{harpoon}---{harpoon}%% binary relation

\newarrow{Eq}=====%%
\newarrow{Line}-----%%
\newarrow{Dots}.....%%
\newarrow{Dashes}{}{dash}{}{dash}{}%%

%% braces and parentheses
%% \newarrow gives inappropriate directions, so we change the names
%% the vertical filler is too far to the right; horizontal too high
%% the vertical middles are too low with midvshaft
%% maybe we'll add square brackets and the integral sign one day
\newarrowhead{cmexbra}{\@cmex7B}{\@cmex7C}{\@cmex3B}{\@cmex38}%%
\newarrowtail{cmexbra}{\@cmex7A}{\@cmex7D}{\@cmex39}{\@cmex3A}%%
\newarrowmiddle{cmexbra}{\braceru\bracelu}{\bracerd\braceld}{\vcenter{%
\hbox@maths{\@cmex3D\mkern-2mu}}}%% right
{\vcenter{\hbox@maths{\mkern2mu\@cmex3C}}}%% left
\newarrow{@brace}{cmexbra}-{cmexbra}-{cmexbra}%% braces
\newarrow{@parenth}{cmexbra}---{cmexbra}%% straight parentheses
\def\rightBrace{\d@brace[thick,cmex]}%%ASCII square brackets []
\def\leftBrace{\u@brace[thick,cmex]}%%ASCII square brackets []
\def\upperBrace{\r@brace[thick,cmex]}%%ASCII square brackets []
\def\lowerBrace{\l@brace[thick,cmex]}%%ASCII square brackets []
\def\rightParenth{\d@parenth[thick,cmex]}%%ASCII square brackets []
\def\leftParenth{\u@parenth[thick,cmex]}%%ASCII square brackets []
\def\upperParenth{\r@parenth[thick,cmex]}%%ASCII square brackets []
\def\lowerParenth{\l@parenth[thick,cmex]}%%ASCII square brackets []

%% synonyms for reverse compatibility

\let\uFrom\uTo%%
\let\lFrom\lTo%%
\let\uDotsfrom\uDotsto%%
\let\lDotsfrom\lDotsto%%
\let\uDashfrom\uDashto%%
\let\lDashfrom\lDashto%%
\let\uImpliedby\uImplies%%
\let\lImpliedby\lImplies%%
\let\uMapsfrom\uMapsto%%
\let\lMapsfrom\lMapsto%%
\let\lOnfrom\lOnto%%
\let\uOnfrom\uOnto%%
\let\lPfrom\lPto%%
\let\uPfrom\uPto%%

\let\uInfromA\uIntoA%%
\let\uInfromB\uIntoB%%
\let\lInfromA\lIntoA%%
\let\lInfromB\lIntoB%%
\let\rInto\rIntoA%%
\let\lInto\lIntoA%%
\let\dInto\dIntoB%%
\let\uInto\uIntoA%%
\let\ruInto\ruIntoA%%
\let\luInto\luIntoA%%
\let\rdInto\rdIntoA%%
\let\ldInto\ldIntoA%%
%%
\let\hEq\rEq%%
\let\vEq\uEq%%
\let\hLine\rLine%%
\let\vLine\uLine%%
\let\hDots\rDots%%
\let\vDots\uDots%%
\let\hDashes\rDashes%%
\let\vDashes\uDashes%%

%%=========================================================================%
%% The following are included for reverse compatibility only.
%%=========================================================================%
\let\NW\luTo\let\NE\ruTo\let\SW\ldTo\let\SE\rdTo\def\nNW{\luTo(2,3)}\def\nNE{%
\ruTo(2,3)}%%ascii
\def\sSW{\ldTo(2,3)}\def\sSE{\rdTo(2,3)}%%ascii
\def\wNW{\luTo(3,2)}\def\eNE{\ruTo(3,2)}%%ascii
\def\wSW{\ldTo(3,2)}\def\eSE{\rdTo(3,2)}%%ascii
\def\NNW{\luTo(2,4)}\def\NNE{\ruTo(2,4)}%%ascii
\def\SSW{\ldTo(2,4)}\def\SSE{\rdTo(2,4)}%%ascii
\def\WNW{\luTo(4,2)}\def\ENE{\ruTo(4,2)}%%ascii
\def\WSW{\ldTo(4,2)}\def\ESE{\rdTo(4,2)}%%ascii
\def\NNNW{\luTo(2,6)}\def\NNNE{\ruTo(2,6)}%%ascii
\def\SSSW{\ldTo(2,6)}\def\SSSE{\rdTo(2,6)}%%ascii
\def\WWNW{\luTo(6,2)}\def\EENE{\ruTo(6,2)}%%ascii
\def\WWSW{\ldTo(6,2)}\def\EESE{\rdTo(6,2)}%%ascii

\let\NWd\luDotsto\let\NEd\ruDotsto\let\SWd\ldDotsto\let\SEd\rdDotsto\def\nNWd
{\luDotsto(2,3)}\def\nNEd{\ruDotsto(2,3)}%%ascii
\def\sSWd{\ldDotsto(2,3)}\def\sSEd{\rdDotsto(2,3)}%%ascii
\def\wNWd{\luDotsto(3,2)}\def\eNEd{\ruDotsto(3,2)}%%ascii
\def\wSWd{\ldDotsto(3,2)}\def\eSEd{\rdDotsto(3,2)}%%ascii
\def\NNWd{\luDotsto(2,4)}\def\NNEd{\ruDotsto(2,4)}%%ascii
\def\SSWd{\ldDotsto(2,4)}\def\SSEd{\rdDotsto(2,4)}%%ascii
\def\WNWd{\luDotsto(4,2)}\def\ENEd{\ruDotsto(4,2)}%%ascii
\def\WSWd{\ldDotsto(4,2)}\def\ESEd{\rdDotsto(4,2)}%%ascii
\def\NNNWd{\luDotsto(2,6)}\def\NNNEd{\ruDotsto(2,6)}%%ascii
\def\SSSWd{\ldDotsto(2,6)}\def\SSSEd{\rdDotsto(2,6)}%%ascii
\def\WWNWd{\luDotsto(6,2)}\def\EENEd{\ruDotsto(6,2)}%%ascii
\def\WWSWd{\ldDotsto(6,2)}\def\EESEd{\rdDotsto(6,2)}%%ascii

\let\NWl\luLine\let\NEl\ruLine\let\SWl\ldLine\let\SEl\rdLine\def\nNWl{\luLine
(2,3)}\def\nNEl{\ruLine(2,3)}%%ascii
\def\sSWl{\ldLine(2,3)}\def\sSEl{\rdLine(2,3)}%%ascii
\def\wNWl{\luLine(3,2)}\def\eNEl{\ruLine(3,2)}%%ascii
\def\wSWl{\ldLine(3,2)}\def\eSEl{\rdLine(3,2)}%%ascii
\def\NNWl{\luLine(2,4)}\def\NNEl{\ruLine(2,4)}%%ascii
\def\SSWl{\ldLine(2,4)}\def\SSEl{\rdLine(2,4)}%%ascii
\def\WNWl{\luLine(4,2)}\def\ENEl{\ruLine(4,2)}%%ascii
\def\WSWl{\ldLine(4,2)}\def\ESEl{\rdLine(4,2)}%%ascii
\def\NNNWl{\luLine(2,6)}\def\NNNEl{\ruLine(2,6)}%%ascii
\def\SSSWl{\ldLine(2,6)}\def\SSSEl{\rdLine(2,6)}%%ascii
\def\WWNWl{\luLine(6,2)}\def\EENEl{\ruLine(6,2)}%%ascii
\def\WWSWl{\ldLine(6,2)}\def\EESEl{\rdLine(6,2)}%%ascii

\let\NWld\luDots\let\NEld\ruDots\let\SWld\ldDots\let\SEld\rdDots\def\nNWld{%
\luDots(2,3)}\def\nNEld{\ruDots(2,3)}%%ascii
\def\sSWld{\ldDots(2,3)}\def\sSEld{\rdDots(2,3)}%%ascii
\def\wNWld{\luDots(3,2)}\def\eNEld{\ruDots(3,2)}%%ascii
\def\wSWld{\ldDots(3,2)}\def\eSEld{\rdDots(3,2)}%%ascii
\def\NNWld{\luDots(2,4)}\def\NNEld{\ruDots(2,4)}%%ascii
\def\SSWld{\ldDots(2,4)}\def\SSEld{\rdDots(2,4)}%%ascii
\def\WNWld{\luDots(4,2)}\def\ENEld{\ruDots(4,2)}%%ascii
\def\WSWld{\ldDots(4,2)}\def\ESEld{\rdDots(4,2)}%%ascii
\def\NNNWld{\luDots(2,6)}\def\NNNEld{\ruDots(2,6)}%%ascii
\def\SSSWld{\ldDots(2,6)}\def\SSSEld{\rdDots(2,6)}%%ascii
\def\WWNWld{\luDots(6,2)}\def\EENEld{\ruDots(6,2)}%%ascii
\def\WWSWld{\ldDots(6,2)}\def\EESEld{\rdDots(6,2)}%%ascii

\let\NWe\luEmbed\let\NEe\ruEmbed\let\SWe\ldEmbed\let\SEe\rdEmbed\def\nNWe{%
\luEmbed(2,3)}\def\nNEe{\ruEmbed(2,3)}%%ascii
\def\sSWe{\ldEmbed(2,3)}\def\sSEe{\rdEmbed(2,3)}%%ascii
\def\wNWe{\luEmbed(3,2)}\def\eNEe{\ruEmbed(3,2)}%%ascii
\def\wSWe{\ldEmbed(3,2)}\def\eSEe{\rdEmbed(3,2)}%%ascii
\def\NNWe{\luEmbed(2,4)}\def\NNEe{\ruEmbed(2,4)}%%ascii
\def\SSWe{\ldEmbed(2,4)}\def\SSEe{\rdEmbed(2,4)}%%ascii
\def\WNWe{\luEmbed(4,2)}\def\ENEe{\ruEmbed(4,2)}%%ascii
\def\WSWe{\ldEmbed(4,2)}\def\ESEe{\rdEmbed(4,2)}%%ascii
\def\NNNWe{\luEmbed(2,6)}\def\NNNEe{\ruEmbed(2,6)}%%ascii
\def\SSSWe{\ldEmbed(2,6)}\def\SSSEe{\rdEmbed(2,6)}%%ascii
\def\WWNWe{\luEmbed(6,2)}\def\EENEe{\ruEmbed(6,2)}%%ascii
\def\WWSWe{\ldEmbed(6,2)}\def\EESEe{\rdEmbed(6,2)}%%ascii

\let\NWo\luOnto\let\NEo\ruOnto\let\SWo\ldOnto\let\SEo\rdOnto\def\nNWo{\luOnto
(2,3)}\def\nNEo{\ruOnto(2,3)}%%ascii
\def\sSWo{\ldOnto(2,3)}\def\sSEo{\rdOnto(2,3)}%%ascii
\def\wNWo{\luOnto(3,2)}\def\eNEo{\ruOnto(3,2)}%%ascii
\def\wSWo{\ldOnto(3,2)}\def\eSEo{\rdOnto(3,2)}%%ascii
\def\NNWo{\luOnto(2,4)}\def\NNEo{\ruOnto(2,4)}%%ascii
\def\SSWo{\ldOnto(2,4)}\def\SSEo{\rdOnto(2,4)}%%ascii
\def\WNWo{\luOnto(4,2)}\def\ENEo{\ruOnto(4,2)}%%ascii
\def\WSWo{\ldOnto(4,2)}\def\ESEo{\rdOnto(4,2)}%%ascii
\def\NNNWo{\luOnto(2,6)}\def\NNNEo{\ruOnto(2,6)}%%ascii
\def\SSSWo{\ldOnto(2,6)}\def\SSSEo{\rdOnto(2,6)}%%ascii
\def\WWNWo{\luOnto(6,2)}\def\EENEo{\ruOnto(6,2)}%%ascii
\def\WWSWo{\ldOnto(6,2)}\def\EESEo{\rdOnto(6,2)}%%ascii

\let\NWod\luDotsonto\let\NEod\ruDotsonto\let\SWod\ldDotsonto\let\SEod
\rdDotsonto\def\nNWod{\luDotsonto(2,3)}\def\nNEod{\ruDotsonto(2,3)}%%ascii
\def\sSWod{\ldDotsonto(2,3)}\def\sSEod{\rdDotsonto(2,3)}%%ascii
\def\wNWod{\luDotsonto(3,2)}\def\eNEod{\ruDotsonto(3,2)}%%ascii
\def\wSWod{\ldDotsonto(3,2)}\def\eSEod{\rdDotsonto(3,2)}%%ascii
\def\NNWod{\luDotsonto(2,4)}\def\NNEod{\ruDotsonto(2,4)}%%ascii
\def\SSWod{\ldDotsonto(2,4)}\def\SSEod{\rdDotsonto(2,4)}%%ascii
\def\WNWod{\luDotsonto(4,2)}\def\ENEod{\ruDotsonto(4,2)}%%ascii
\def\WSWod{\ldDotsonto(4,2)}\def\ESEod{\rdDotsonto(4,2)}%%ascii
\def\NNNWod{\luDotsonto(2,6)}\def\NNNEod{\ruDotsonto(2,6)}%%ascii
\def\SSSWod{\ldDotsonto(2,6)}\def\SSSEod{\rdDotsonto(2,6)}%%ascii
\def\WWNWod{\luDotsonto(6,2)}\def\EENEod{\ruDotsonto(6,2)}%%ascii
\def\WWSWod{\ldDotsonto(6,2)}\def\EESEod{\rdDotsonto(6,2)}%%ascii

%%======================================================================%
%%                                                                      %
%%      (23) MISCELLANEOUS                                              %
%%                                                                      %
%%======================================================================%

\def\labelstyle{%%
\ifincommdiag%%
\textstyle%%
\else%%
\scriptstyle%%
\fi}%%
\let\objectstyle\displaystyle

\newdiagramgrid{pentagon}{0.618034,0.618034,1,1,1,1,0.618034,0.618034}{1.%
17557,1.17557,1.902113,1.902113}

\newdiagramgrid{perspective}{0.75,0.75,1.1,1.1,0.9,0.9,0.95,0.95,0.75,0.75}{0%
.75,0.75,1.1,1.1,0.9,0.9}

\diagramstyle[%%ascii open square bracket
dpi=300,%%              office laserwriters are usually 300 dots per inch
vmiddle,nobalance,%%    vertical and horizontal positioning
loose,%%                allow rows and columns to stretch
thin,%%                 line10 arrows; default rule thickness (TeXbook p447)
pilespacing=10pt,%
%%     parallel vertical separation (horizontals: half this)
shortfall=4pt,%%        distance between arrowheads and their targets
%% The following are defaulted on entry to the diagram itself.
%% l>=2em               minimum length of horizontal arrow shafts in text
%% l>=1em               ditto in diagrams
%% size=3em             cell size
%% heads=LaTeX          arrowheads
]%%ascii close square bracket

%% process options to LaTeX2e's \usepackage[options]{diagrams}
\ifx\ProcessOptions\undefined\else\Cd@QJ\ProcessOptions\relax\Cd@lE\Cd@b\fi
\fi

\cdrestoreat%% restore old category code for @ etc
%%============================== THE END ==============================

\dimen0 200pt \dimen1 210pt \dimen2 220pt \dimen3 230pt \dimen4 240pt \dimen5
250pt \dimen6 260pt \dimen7 270pt \dimen8 280pt \dimen9 290pt

%%
