Journal/document/acmtrans2m.cls
changeset 372 2c56b20032a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Journal/document/acmtrans2m.cls	Mon Dec 03 08:16:58 2012 +0000
@@ -0,0 +1,1578 @@
+% latex2e by nr 7/3/96
+% acmtrans.cls revised 4/19/96
+%              revised again 31-JAN-1996 (see end of file)
+%              revised 5-14-1997 :
+%                       Don't use sans-serif font in categories and descriptors
+%                       include latexsym by default
+%                       Define longpage and shortpage
+% Adjusted from the acmtrans2e.cls file to the needs of ACM TOCL by
+% Marco Aiello on June 14, 2000.
+% Further changes made by Frederic Goualard on Sep. 27, 2000
+% to take care of the indentation problem in the bibliography 
+% arising without the use of the hyperref package.
+% Modularization to adapt to the needs of ALL Transactions of the ACM, 
+% and the Journal of the ACM, by Marco Aiello on June and October 2001.
+% Here is the basic framework that is needed to convert your paper 
+% into ACM Transactions format and bibliographic format.  For a tutorial
+% introduction, see ``instructions.tex'' (compile it with LaTeX) that
+% accompanies the distribution of this style file.
+%
+%  -> \documentclass{acmtrans2m}
+%  -> \markboth{}{}
+%         takes 2 arguments and it is for the left- and right-page headers:
+%         the first set of braces is assigned for author's name(s) 
+%         and
+%         the second set of braces is assigned for the title 
+%             (if the title is too long, contraction may be needed
+%  -> \title{}
+%         if the title is too long, it can be separated by \\
+%  -> \author{}
+%         author1 \\ author1 affiliation
+%         \and
+%         author2 \\ author2 affiliation
+%  -> \begin{abstract}
+%  -> \end{abstract}
+%
+%  -> \category{}{}{}
+%         takes 3 arguments for the Computing Reviews Classification Scheme.
+%         ex: \category{D.3.3}{Programming Languages}{Language Constructs and 
+%                   Features}[data types and structures]
+%                   the last argument, in square brackets, is optional.
+%  -> \terms{} (ex: \terms{Human Factors, Languages})
+%  -> \keywords{} (in alphabetical order \keywords{document processing, sequences, 
+%                      string searching, subsequences, substrings})
+%  -> \begin{document}
+%
+%  -> \begin{bottomstuff}
+%          similar to \thanks     
+%          for authors' addresses; research/grant statements
+%  -> \end{bottomstuff}
+%  -> \maketitle
+%
+%     Now you can start the body of the paper; your figures, tables and 
+%          use all the latex constructs.
+%
+%  -> \begin{acks}
+%          acknowledgements
+%  -> \end{acks}
+%
+%  -> \bibliographystyle{acmtrans}
+%  -> \bibliography{mybib_file}
+%
+%     ****
+%     If your paper has been accepted with a separate (electronic only)
+%        appendix, you need to add the following control sequence:
+%
+%
+%       body of appendix 
+%!!!!!! \appendixhead has be cut into two: \appendixhead and \elecappendix
+%!!!!!! See end of file. (jtb)
+%
+%  -> \end{document}
+%
+% Do not worry about the other definitions in this style file
+% Remember to compile: latex, bibtex, latex latex
+%
+% Bibliographic cite forms needed:
+%
+%  \cite{key}
+%    which produces citations with author list and year.
+%    eg. [Brown 1978; Jarke, et al. 1985]
+%  \citeA{key}
+%    which produces citations with only the author list.
+%    eg. [Brown; Jarke, et al.]
+%  \citeN{key}
+%    which produces citations with the author list and year, but
+%    can be used as nouns in a sentence; no brackets appear around
+%    the author names, but only around the year.
+%      eg. Shneiderman [1978] states that......
+%    \citeN should only be used for a single citation.
+%    \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
+%    \citeyear{key}
+%        which produces the year information only, within brackets.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% The above are examples of required ACM bibliographic cite formats needed.
+% *******************
+% Here is the complete list of cite forms from the chicago bibliographic style
+%
+%  \cite{key}
+%    which produces citations with abbreviated author list and year.
+%  \citeNP{key}
+%    which produces citations with abbreviated author list and year.
+%  \citeA{key}
+%    which produces only the abbreviated author list.
+%  \citeANP{key}
+%    which produces only the abbreviated author list.
+%  \citeN{key}
+%    which produces the abbreviated author list and year, with only the
+%    year in parentheses. Use with only one citation.
+%  \citeyear{key}
+%    which produces the year information only, within parentheses.
+%  \citeyearNP{key}
+%    which produces the year information only.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% `NP' means `no parentheses' 
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmtrans2m} [1996/07/03 ACM Transactions class based on <23 April 96>]
+\RequirePackage{latexsym}
+%aiellom{
+\RequirePackage{url}
+
+% Do not change the following! Use the appropriate acmtocl, acmtods, ... 
+% options in the .tex file
+\def\@acmVolume{V} %the volume
+\def\@acmNumber{N} %the number
+\def\@acmYear{YY}  %the last two digits of the year, 
+\def\@acmMonth{0}  %the month number
+\def\@journalName{ACM Journal Name} %the name of the ACM journal
+\def\@journalNameShort{jn} %the acronym of the ACM journal
+\def\@permissionCodeOne{0000-0000} %the permission code of the ACM journal
+\def\@permissionCodeTwo{\acmMonthCode} %the permission code of the ACM journal part 2
+\def\@pageCode{\acmPageCode} %the first page of the article in 4 digits
+
+\newif\if@acmnow \newif\if@acmjacm \newif\if@acmcsur
+\newif\if@acmtissec \newif\if@acmtochi \newif\if@acmtocl
+\newif\if@acmtocs \newif\if@acmtodaes \newif\if@acmtods
+\newif\if@acmtogs \newif\if@acmtois \newif\if@acmtoit
+\newif\if@acmtomacs \newif\if@acmtoms \newif\if@acmtoplas
+\newif\if@acmtosem
+
+\DeclareOption{acmnow}{
+  \typeout{Directly generating the Month and Year for footers from the clock.}
+  \def\@acmYear{\yearTwoDigits}  
+  \def\@acmMonth{\the\month}  
+}
+
+\DeclareOption{acmjacm}{
+  \typeout{}
+  \typeout{Using ACM JACM option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  %\global\@acmjacmfalse
+  \global\@acmcsurfalse \global\@acmtissecfalse \global\@acmtochifalse
+  \global\@acmtoclfalse \global\@acmtocsfalse \global\@acmtodaesfalse
+  \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
+  \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse 
+  \global\@acmjacmtrue
+  \def\@journalName{Journal of the ACM} 
+  \def\@journalNameShort{jacm}
+  \def\@permissionCodeOne{0004-5411} 
+}
+
+\DeclareOption{acmcsur}{
+  \typeout{}
+  \typeout{Using ACM CSUR option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse % \global\@acmcsurfalse
+  \global\@acmtissecfalse \global\@acmtochifalse \global\@acmtoclfalse
+  \global\@acmtocsfalse \global\@acmtodaesfalse \global\@acmtodsfalse
+  \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
+  \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmcsurtrue
+  \def\@journalName{ACM Computing Surveys}
+  \def\@journalNameShort{csur}        
+  \def\@permissionCodeOne{0360-0300} 
+}
+
+\DeclareOption{acmtissec}{
+  \typeout{}
+  \typeout{Using ACM TISSEC option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse %\global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtissectrue
+  \def\@journalName{ACM Transactions on Information Systems and Security}
+  \def\@journalNameShort{tissec}        
+  \def\@permissionCodeOne{1094-9224} 
+}
+
+\DeclareOption{acmtochi}{
+  \typeout{}
+  \typeout{Using ACM TOCHI option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  %\global\@acmtochifalse
+  \global\@acmtoclfalse \global\@acmtocsfalse \global\@acmtodaesfalse
+  \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
+  \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtochitrue
+  \def\@journalName{ACM Transactions on Computer-Human Interaction}
+  \def\@journalNameShort{tochi}        
+  \def\@permissionCodeOne{1073-0516} 
+}
+
+\DeclareOption{acmtocl}{ 
+  \typeout{} 
+  \typeout{Using ACM TOCL option: 2001/06/01 by Marco Aiello et al.}  
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse  %\global\@acmtoclfalse
+  \global\@acmtocsfalse \global\@acmtodaesfalse \global\@acmtodsfalse
+  \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
+  \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse 
+  \global\@acmtocltrue
+  \def\@journalName{ACM Transactions on Computational Logic}
+  \def\@journalNameShort{tocl}        
+  \def\@permissionCodeOne{1529-3785} 
+}
+
+\DeclareOption{acmtocs}{
+  \typeout{}
+  \typeout{Using ACM TOCS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse
+  %\global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtocstrue
+  \def\@journalName{ACM Transactions on Computer Systems}
+  \def\@journalNameShort{tocs}        
+  \def\@permissionCodeOne{0734-2071} 
+}
+
+\DeclareOption{acmtodaes}{
+  \typeout{}
+  \typeout{Using ACM TODAES option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  %\global\@acmtodaesfalse
+  \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
+  \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtodaestrue
+  \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}
+  \def\@journalNameShort{todaes}        
+  \def\@permissionCodeOne{1084-4309} 
+}
+
+\DeclareOption{acmtods}{
+  \typeout{}
+  \typeout{Using ACM TODS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse
+  %\global\@acmtodsfalse
+  \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
+  \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtodstrue
+  \def\@journalName{ACM Transactions on Database Systems}
+  \def\@journalNameShort{tods}        
+  \def\@permissionCodeOne{0362-5915} 
+}
+
+\DeclareOption{acmtogs}{
+  \typeout{}
+  \typeout{Using ACM TOGS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse
+  %\global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtogstrue
+  \def\@journalName{ACM Transactions on Graphics}
+  \def\@journalNameShort{togs}        
+  \def\@permissionCodeOne{0730-0301} 
+}
+
+\DeclareOption{acmtois}{
+  \typeout{}
+  \typeout{Using ACM TOIS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  %\global\@acmtoisfalse
+  \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtoistrue
+  \def\@journalName{ACM Transactions on Information Systems}
+  \def\@journalNameShort{tois}        
+  \def\@permissionCodeOne{1046-8188} 
+}
+
+\DeclareOption{acmtoit}{
+  \typeout{}
+  \typeout{Using ACM TOIT option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse
+  %\global\@acmtoitfalse
+  \global\@acmtomacsfalse \global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtoittrue
+  \def\@journalName{ACM Transactions on Internet Technology}
+  \def\@journalNameShort{toit}        
+  \def\@permissionCodeOne{1533-5399} 
+}
+
+\DeclareOption{acmtomacs}{
+  \typeout{}
+  \typeout{Using ACM TOMACS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse
+  %\global\@acmtomacsfalse
+  \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtomacstrue
+  \def\@journalName{ACM Transactions on Modeling and Computer Simulation}
+  \def\@journalNameShort{tomacs}        
+  \def\@permissionCodeOne{1049-3301} 
+}
+
+\DeclareOption{acmtoms}{
+  \typeout{}
+  \typeout{Using ACM TOMS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  %\global\@acmtomsfalse
+  \global\@acmtoplasfalse \global\@acmtosemfalse
+  \global\@acmtomstrue
+  \def\@journalName{ACM Transactions on Mathematical Software}
+  \def\@journalNameShort{toms}        
+  \def\@permissionCodeOne{0098-3500} 
+}
+
+\DeclareOption{acmtoplas}{
+  \typeout{}
+  \typeout{Using ACM TOPLAS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  \global\@acmtomsfalse
+  %\global\@acmtoplasfalse
+  \global\@acmtosemfalse
+  \global\@acmtoplastrue
+  \def\@journalName{ACM Transactions on Programming Languages and Systems}
+  \def\@journalNameShort{toplas}        
+  \def\@permissionCodeOne{0164-0925} 
+}
+
+\DeclareOption{acmtosem}{
+  \typeout{}
+  \typeout{Using ACM, TOSEM option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
+  \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
+  \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
+  \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
+  \global\@acmtomsfalse \global\@acmtoplasfalse
+  %\global\@acmtosemfalse
+  \global\@acmtosemtrue
+  \def\@journalName{ACM Transactions on Software Engineering and Methodology}
+  \def\@journalNameShort{tosem}        
+  \def\@permissionCodeOne{1049-331X} 
+}
+%}aiellom
+
+
+
+\if@compatibility\else
+\DeclareOption{a4paper}
+   {\setlength\paperheight {297mm}%
+    \setlength\paperwidth  {210mm}%
+    \def\special@paper{210mm,297mm}}
+\DeclareOption{a5paper}
+   {\setlength\paperheight {210mm}%
+    \setlength\paperwidth  {148mm}%
+    \def\special@paper{148mm,210mm}}
+\DeclareOption{b5paper}
+   {\setlength\paperheight {250mm}%
+    \setlength\paperwidth  {176mm}%
+    \setlength\voffset     {-15mm}%
+    \setlength\hoffset     {-20mm}%
+    \def\special@paper{176mm,250mm}}
+\DeclareOption{letterpaper}
+   {\setlength\paperheight {11in}%
+    \setlength\paperwidth  {8.5in}%
+    \def\special@paper{8.5in,11in}}
+\DeclareOption{legalpaper}
+   {\setlength\paperheight {14in}%
+    \setlength\paperwidth  {8.5in}%
+    \def\special@paper{8.5in,14in}}
+\DeclareOption{executivepaper}
+   {\setlength\paperheight {10.5in}%
+    \setlength\paperwidth  {7.25in}%
+    \def\special@paper{7.25in,10.5in}}
+\DeclareOption{landscape}
+   {\setlength\@tempdima   {\paperheight}%
+    \setlength\paperheight {\paperwidth}%
+    \setlength\paperwidth  {\@tempdima}}
+\fi
+
+\DeclareOption{checkMargin}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
+
+\DeclareOption{10pt}{\def\@ptsize{0}} %needed for amssymbols.sty 
+\DeclareOption{11pt}{\ClassError{acmtrans}{11pt style not supported}
+                        {ACM transactions documents can be set in 10pt only}}
+\DeclareOption{12pt}{\ClassError{acmtrans}{11pt style not supported}
+                        {ACM transactions documents can be set in 10pt only}}
+\newif\if@hyperref
+\DeclareOption{hyperref}{%
+        \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}%
+        \def\mypage{\thepage}%
+        \def\@getpagenum#1#2#3#4{#2}%
+        \def\pdfinfo#1#2{\pdfmark{pdfmark=/DOCINFO,Title=#1,Author=#2}}
+        \global\@hyperreftrue
+        }
+\DeclareOption{nohyperref}{
+                \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}%
+                \def\@getpagenum#1#2{#2}%
+                \def\mypage{\thepage}%
+                \def\pdfinfo#1#2{}%
+                \def\pdfbookmark#1#2{}%
+                \global\@hyperreffalse
+                }
+\DeclareOption{notfinal}{
+                \def\pages{BD}%
+                \def\mypage{TBD}%
+                \def\@getpagenum#1#2{#2}%
+                \def\pdfinfo#1#2{}%
+                \def\pdfbookmark#1#2{}%
+                }
+\DeclareOption{omitline}{\def\@abstractbottom{\relax}}
+\DeclareOption{dontomitline}{\def\@abstractbottom{\if@acmjacm\else\hbox{\vrule height .2pt width 30pc}\fi}}
+\ExecuteOptions{twoside,notfinal,10pt,dontomitline,nohyperref,letterpaper} % defaults
+
+
+
+\ProcessOptions
+
+%{aiellom to automatize the issue specific data
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\if@acmnow\else
+\def\acmYear#1{\def\@acmYear{#1}}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\fi
+\def\@acmMonthName{\ifnum\@acmMonth=1 January\fi\ifnum\@acmMonth=2 February\fi\ifnum\@acmMonth=3 March\fi\ifnum\@acmMonth=4 April\fi\ifnum\@acmMonth=5 May\fi\ifnum\@acmMonth=6 June\fi\ifnum\@acmMonth=7 July\fi\ifnum\@acmMonth=8 August\fi\ifnum\@acmMonth=9 September\fi\ifnum\@acmMonth=10 October\fi\ifnum\@acmMonth=11 November\fi\ifnum\@acmMonth=12 December\fi}
+
+
+
+% Command to get the year from the system and display the last two digits
+\newcommand{\ignoretwo}[2]{}
+\newcommand{\yearTwoDigits}{\expandafter\ignoretwo\the\year}
+% overright the \@setref definition, so that if a reference is undefined 
+% then it returns a number 0 and then the usual double boldface 
+% question marks ??
+% this is necessary for the \acmPageCode command, otherwise it gives an error 
+% everytime the aux file is not there
+\def\@setref#1#2#3{%
+  \ifx#1\relax
+    \number 0\relax
+    \protect\G@refundefinedtrue
+    \nfss@text{\reset@font\bfseries ??}%
+    \@latex@warning{Reference `#3' on page \thepage \space undefined}%
+  \else
+    \expandafter#2#1\null
+  \fi}
+%make the code a four digits string based on the first page number
+\newcommand{\acmPageCode}{\bgroup
+  \newcount\c@tempo
+  \setcounter{tempo}{\number\pageref{@firstpg}}\ifnum \c@tempo<1000 0\fi\ifnum \c@tempo<100 0\fi\ifnum \c@tempo<10 0\fi\ifnum \c@tempo<1 0\fi\pageref{@firstpg}
+  \egroup
+}
+\newcommand{\acmMonthCode}{\bgroup
+  \newcount\c@tempo
+  \setcounter{tempo}{\number\@acmMonth}\ifnum \c@tempo<10 0\fi\number\@acmMonth00\egroup
+}%}aiellom
+
+
+
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\renewcommand\normalsize{%
+  \@setfontsize\normalsize\@xpt\@xiipt
+  \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 6pt plus0pt minus 3pt
+  \belowdisplayshortskip 6pt plus0pt minus3pt\let\@listi\@listI} 
+
+\newcommand\small{%
+  \@setfontsize\small\@ixpt{11pt}%
+  \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt
+      minus 2pt
+  \def\@listi{\leftmargin\leftmargini \topsep 5pt plus 2pt minus 1pt\parsep 0pt
+    plus .7pt 
+  \itemsep 1.6pt plus .8pt}}
+\newcommand\footnotesize{%
+%   \@setfontsize\footnotesize\@viiipt{10pt}
+ \@setsize\footnotesize{10pt}\viiipt\@viiipt
+  \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus
+       0pt minus 1pt
+  \def\@listi{\leftmargin\leftmargini \topsep 4pt plus 1pt minus
+     0pt\parsep 0pt plus .5pt 
+     \itemsep 1pt plus .7pt}}
+
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{14}}
+\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+
+\normalsize 
+
+ \oddsidemargin .75in \evensidemargin .75in \marginparwidth .5in 
+ \marginparsep .125in 
+ \topmargin .25in \headheight 12pt\headsep 16pt
+  %% not in latex2e  \footheight 10pt
+  \footskip 15pt 
+
+\textheight 47pc \textwidth 30pc \columnsep 10pt \columnseprule 0pt 
+% next five lines added by K.R. Apt, March 20, 01
+\advance\textheight-2.6pt
+\newdimen\normaltextheight
+\setlength\normaltextheight{\textheight}
+%\renewcommand\rmdefault{pnc}
+%\renewcommand\sfdefault{phv}
+
+
+\footnotesep 7pt
+\skip\footins 15pt plus 4pt minus 3pt 
+\floatsep 12pt plus 2pt minus 2pt 
+\textfloatsep \floatsep 
+\intextsep 1pc plus 1pc 
+%%% not in 2e %% \@maxsep 1pc 
+%%% not in 2e %% \@dblmaxsep 20pt 
+\dblfloatsep 12pt plus 2pt minus 2pt 
+\dbltextfloatsep 20pt plus 2pt minus 4pt 
+\@fptop 0pt plus 1fil \@fpsep 1pc plus 2fil \@fpbot 0pt plus 1fil 
+\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil
+\marginparpush 6pt 
+
+\parskip 0pt plus .1pt \parindent 10pt \partopsep 0pt 
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
+-\@lowpenalty 
+
+
+\def\part{\@ucheadtrue
+ \@startsection{part}{9}{\z@}{-10pt plus -4pt minus 
+ -2pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\section{\@ucheadtrue
+ \@startsection{section}{1}{\z@}{-10pt plus -4pt minus 
+ -2pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\subsection{\@ucheadfalse
+ \@startsection{subsection}{2}{\z@}{-8pt plus -2pt minus 
+ -1pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\subsubsection{\@ucheadfalse
+ \@startsection{subsubsection}{3}{\parindent}{6pt plus 
+1pt}{-5pt}{\reset@font\normalsize\itshape}}
+\def\paragraph{\@ucheadfalse
+ \@startsection{paragraph}{3}{\parindent}{6pt plus 
+1pt}{-5pt}{\reset@font\normalsize\itshape}}
+
+\renewcommand{\@seccntformat}[1]{\textup{\csname the#1\endcsname}}
+
+\gdef\@period{.}
+\def\@trivlist{\@topsepadd\topsep
+\if@noskipsec \gdef\@period{}\leavevmode\gdef\@period{.}\fi
+ \ifvmode \advance\@topsepadd\partopsep \else \unskip\par\fi
+ \if@inlabel \@noparitemtrue \@noparlisttrue 
+ \else \@noparlistfalse \@topsep\@topsepadd \fi
+ \advance\@topsep \parskip
+ \leftskip\z@\rightskip\@rightskip \parfillskip\@flushglue
+ \@setpar{\if@newlist\else{\@@par}\fi} \global\@newlisttrue
+\@outerparskip\parskip}
+
+
+\def\@startsection#1#2#3#4#5#6{%
+  \if@noskipsec \leavevmode \fi
+  \par
+  \@tempskipa #4\relax
+  \@afterindenttrue
+  \ifdim \@tempskipa <\z@
+    \@tempskipa -\@tempskipa \@afterindentfalse
+  \fi
+  \if@nobreak
+    \everypar{}%
+  \else
+    \addpenalty\@secpenalty\addvspace\@tempskipa
+  \fi
+  \@ifstar
+    {\@ssect{#3}{#4}{#5}{#6}}%
+    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+      \if@uchead%
+            \protected@edef\@svsec{\@seccntformat{#1}.\quad\relax}%
+        \else%
+            \protected@edef\@svsec{\@seccntformat{#1}\quad\relax}%
+        \fi%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+      #6{%
+        \@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M \if@uchead\MakeUppercase{#8}\else#8\fi \@@par}%
+    \endgroup
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else
+        \protect\numberline{\csname the#1\endcsname}%
+      \fi
+      #7}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec \if@uchead\Makeuppercase{#8}\else#8\fi}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else
+          \protect\numberline{\csname the#1\endcsname}%
+        \fi
+        #7}}%
+  \fi
+  \@xsect{#5}}
+
+\def\@xsect#1{\@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else \global\@nobreakfalse \global\@noskipsectrue
+ \everypar{\if@noskipsec \global\@noskipsecfalse
+ \clubpenalty\@M \hskip -\parindent
+ \begingroup \@svsechd\@period \endgroup \unskip
+ \hskip -#1
+ \else \clubpenalty \@clubpenalty
+ \everypar{}\fi}\fi\ignorespaces}
+\newif\if@uchead\@ucheadfalse
+
+
+\setcounter{secnumdepth}{3}
+\newcounter{secnumbookdepth}
+\setcounter{secnumbookdepth}{3}
+
+\newfont{\apbf}{cmbx9}
+
+\def\@withappendix#1{App--\number #1}
+
+\newcommand{\elecappendix}{
+}
+
+\def\appenheader{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\newfont{\sc}{cmcsc10}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 11pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endappenheader{\end{figure}\gdef\appendixhead{}}
+
+\def\@appsec{}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\@appsec{APPENDIX } 
+        \def\thesection{\Alph{section}}
+        \def\theHsection{\Alph{section}}}
+
+
+
+\labelsep 5pt
+\settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep
+\settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep
+\leftmarginiii \leftmarginii
+\leftmarginiv \leftmarginii 
+\leftmarginv \leftmarginii 
+\leftmarginvi \leftmarginii 
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\def\@listI{\leftmargin\leftmargini \parsep 0pt plus 1pt\topsep 6pt plus 2pt
+minus 2pt\itemsep 2pt plus 1pt minus .5pt}
+\let\@listi\@listI
+\@listi 
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt 
+ \parsep 0pt plus .5pt 
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt 
+ \parsep 0pt plus .5pt 
+ \itemsep \parsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+
+
+
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne 
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\def\makelabel##1{##1\hss}}\fi}
+\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne 
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\labelwidth\z@}\fi}
+%\leftmargin\z@ \itemindent\parindent}\fi} - this indents each item in enumerate
+\let\endlongenum\endlist
+%%--------------------CHANGED: always roman parentheses. dave ---------------%%
+\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}} 
+\def\theenumi{\arabic{enumi}} 
+\def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}} 
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\itemize{\list{---\hskip -\labelsep}{\settowidth
+ {\leftmargin}{---}\labelwidth\leftmargin
+ \addtolength{\labelwidth}{-\labelsep}}}
+\let\enditemize\endlist
+\def\longitem{\list{---}{\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}}
+\let\endlongitem\endlist
+\def\verse{\let\\=\@centercr 
+ \list{}{\leftmargin 2pc 
+ \itemindent -1.5em\listparindent \itemindent 
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\leftmargin 2pc \listparindent .5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\description{\list{}{\listparindent\parindent\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep
+ \def\makelabel##1{\it ##1.}}}
+\let\enddescription\endlist
+
+\def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin
+ \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}}
+\let\enddescribe\endlist
+
+        \def\program{\ifx\@currsize\normalsize\small \else \rm \fi\tabbing}
+        \let\endprogram\endtabbing
+         \def\@begintheorem#1#2{\trivlist \item[\hskip 10pt\hskip 
+         \labelsep{\sc{#1}\hskip 5pt\relax #2.}] \itshape}
+        % aiellom{: this is what makes the theorem environment with names 
+        % ABOVE #1 is the word example, corollary, etc.
+        %            #2 is the number
+        % \def\@opargbegintheorem#1#2#3{\trivlist
+        % \item[\hskip 10pt \hskip \labelsep{\sc #1\savebox\@tempboxa{#3}\ifdim 
+        % \wd\@tempboxa>\z@ \hskip 5pt\relax \box\@tempboxa\fi.}] \itshape}
+        %  is been changed to
+        % #1 is the word theorem, lemma, etc.
+        % #2 is the number
+        % #3 is the name of the theorem, lemma, etc.
+        \def\@opargbegintheorem#1#2#3{\trivlist
+        \item[\hskip 10pt \hskip 
+\labelsep{\sc{#1}\savebox\@tempboxa{\sc{#3}}\ifdim 
+        \wd\@tempboxa>\z@ \hskip 5pt\relax \sc{#2}  \box\@tempboxa\fi.}]
+\itshape}
+        % aiellom} 
+
+
+
+\newif\if@qeded\global\@qededfalse
+\def\proof{\global\@qededfalse\@ifnextchar[{\@xproof}{\@proof}}
+\def\endproof{\if@qeded\else\qed\fi\endtrivlist}
+\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(6,6){}}
+\global\@qededtrue}
+\def\@proof{\trivlist \item[\hskip 10pt\hskip 
+ \labelsep{\sc Proof.}]\ignorespaces}
+\def\@xproof[#1]{\trivlist \item[\hskip 10pt\hskip 
+ \labelsep{\sc Proof #1.}]\ignorespaces}
+
+\def\newdef#1#2{\expandafter\@ifdefinable\csname #1\endcsname
+{\@definecounter{#1}\expandafter\xdef\csname
+the#1\endcsname{\@thmcounter{#1}}\global
+ \@namedef{#1}{\@defthm{#1}{#2}}\global
+ \@namedef{end#1}{\@endtheorem}}}
+\def\@defthm#1#2{\refstepcounter
+ {#1}\@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}}
+\def\@xdefthm#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@ydefthm#1#2[#3]{\trivlist \item[\hskip 10pt\hskip 
+ \labelsep{\it #2\savebox\@tempboxa{#3}\ifdim 
+ \wd\@tempboxa>\z@ \ \box\@tempboxa\fi.}]\ignorespaces}
+\def\@begindef#1#2{\trivlist \item[\hskip 10pt\hskip 
+ \labelsep{\it #1\ \rm #2.}]}
+
+\def\theequation{\arabic{equation}}
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt 
+\tabbingsep \labelsep 
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt 
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+
+\def\thepart{\Roman{part}} 
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth 
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
+\@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth 
+ \parfillskip -\@pnumwidth 
+ \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\listoffigures{\section*{List of Figures\@mkboth
+ {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{List of Tables\@mkboth
+ {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+\def\thebibliography#1{\par\footnotesize 
+\@ucheadfalse
+\@startsection{subsection}{2}{\z@}{16pt plus 2pt minus 
+        1pt}{2pt}{\sf}*{REFERENCES}%
+\list{\arabic{enumi}.}{%
+ \settowidth{\labelwidth}{99.}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep \topsep \z@ \parsep 0pt plus .1pt
+ \itemsep \parsep 
+ \usecounter{enumi}}%
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy
+ \widowpenalty=4500
+ \clubpenalty=4500
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+ 
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule \@height 0.2\p@ \@width 47\p@ 
+  \kern 2.6\p@
+} 
+
+\long\def\@makefntext#1{\parindent 1em\noindent 
+ $^{\@thefnmark}$#1}
+
+
+\setcounter{topnumber}{3}
+\def\topfraction{.99}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.5}
+\setcounter{totalnumber}{3}
+\def\textfraction{.01}
+\def\floatpagefraction{.85}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{\vskip 1pc \setbox\@tempboxa\hbox{#1.\hskip
+1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize #1. #2\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil} 
+ \fi}
+
+\def\nocaption{\refstepcounter\@captype \par
+ \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure
+ \hfil}}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Fig.\ \thefigure}
+\def\figure{\let\normalsize\footnotesize \normalsize \@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+\newcounter{table}
+\def\thetable{\@Roman\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\let\normalsize\footnotesize \normalsize\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+\def\acmtable#1{\@narrowfig #1\relax
+ \let\caption\@atcap \let\nocaption\@atnocap
+ \def\@tmpnf{}\@ifnextchar[{\@xntab}{\@ntab}}
+\def\endacmtable{\hbox to \textwidth{\hfil
+\vbox{\hsize \@narrowfig
+\box\@nfcapbox
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}
+\vskip -1pt
+\box\@nfigbox\vskip -1pt
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil}
+\end@float}
+\def\@xntab[#1]{\def\@tmpnf{[#1]}\@ntab}
+\def\@ntab{\expandafter\table\@tmpnf
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig \@parboxrestore}
+\def\@atmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+\def\@atcap{\par\egroup\refstepcounter\@captype 
+ \@dblarg{\@atcapx\@captype}}
+\long\def\@atcapx#1[#2]#3{\setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
+ \@parboxrestore
+ \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par}}
+\def\@atnocap{\egroup \refstepcounter\@captype 
+ \setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
+ \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}}
+
+%
+%% Narrow figures
+%
+\def\narrowfig#1{\@narrowfig #1\relax
+ \let\caption\@nfcap \let\nocaption\@nfnocap
+ \def\@tmpnf{}\@ifnextchar[{\@xnfig}{\@nfig}}
+\def\endnarrowfig{\hbox to \textwidth{\if@nfeven
+ \box\@nfcapbox\hfil\box\@nfigbox
+ \else \box\@nfigbox\hfil\box\@nfcapbox\fi}\end@float}
+\def\@xnfig[#1]{\def\@tmpnf{[#1]}\@nfig}
+\def\@nfig{\expandafter\figure\@tmpnf
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig \@parboxrestore}
+\def\@nfmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
+to\hsize{\if@nfeven\else\hfil\fi\box\@tempboxa\if@nfeven\hfil\fi}
+ \fi}
+\def\@nfcap{\par\egroup\refstepcounter\@captype 
+ \@dblarg{\@nfcapx\@captype}}
+\long\def\@nfcapx#1[#2]#3{\@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil 
+ \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \vfil}}
+\def\@nfnocap{\egroup \refstepcounter\@captype \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil 
+ \hbox to\hsize{\if@nfeven\else\hfil\fi 
+ \footnotesize Figure \thefigure
+ \if@nfeven\hfil\fi}
+ \vfil}}
+\def\@seteven{\@nfeventrue 
+   \@ifundefined{r@@nf\thefigure}{}{%
+      \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
+      \edef\@tmpnf{\expandafter\@getpagenum\@tmpnf}%
+      \ifodd\@tmpnf\relax\@nfevenfalse\fi}%
+\label{@nf\thefigure}\edef\@tmpnfx{\if@nfeven e\else o\fi}
+\edef\@tmpnf{\write\@unused {\noexpand\ifodd \noexpand\c@page 
+ \noexpand\if \@tmpnfx e\noexpand\@nfmsg{\thefigure} \noexpand\fi
+ \noexpand\else 
+ \noexpand\if \@tmpnfx o\noexpand\@nfmsg{\thefigure}\noexpand\fi 
+ \noexpand\fi }}\@tmpnf}
+\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}
+
+\newdimen\@narrowfig
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven 
+
+\def\and{\\ and\\}
+\def\maketitle{\newpage \thispagestyle{titlepage}\par
+ \begingroup \lineskip = \z@\null \vskip -30pt\relax 
+ \parindent\z@ \LARGE {\raggedright \hyphenpenalty\@M
+ %\sf \@title \par
+  \@title \par
+ \global\firstfoot %aiellom
+ \global\runningfoot %aiellom
+}
+\label{@firstpg}
+{ \vskip 13.5pt\relax \normalsize \sf %vskip 13.5pt between title and author
+ \begingroup \addtolength{\baselineskip}{2pt}
+ \@author\par \vskip -2pt 
+ \endgroup }
+ {\ifx \@categories\@empty 
+ \else 
+ \baselineskip 17pt\relax
+ \if@acmjacm\else\hbox{\vrule height .2pt width 30pc}\fi%to eliminate the lines for jacm
+ }
+ \vskip 8.5pt \footnotesize \box\@abstract \vskip 4pt\relax %vskip8.5 space above abstract
+ {\def\and{\unskip\/{\rm ; }}
+ Categories and Subject Descriptors: \@categories \fi}\par\vskip 4pt\relax
+ \box\@terms \vskip 4pt\relax
+ \box\@keywords \par 
+ {\baselineskip 14pt\relax 
+ \@abstractbottom
+ }
+ \vskip 23pt\relax
+ \endgroup
+\let\maketitle\relax
+ % \gdef\@author{}\gdef\@title{}
+ \gdef\@categories{}}
+
+
+\newbox\@abstract
+\newbox\@terms
+\newbox\@keywords
+\def\abstract{\global\setbox\@abstract=\vbox\bgroup \everypar{}
+ \footnotesize \hsize 30pc \parindent 10pt \noindent 
+ \rule{0pt}{10pt}\ignorespaces}
+\def\endabstract{\egroup}
+
+\def\terms#1{\setbox\@terms=\vbox{\everypar{}
+ \footnotesize \hsize 30pc \parindent 0pt \noindent 
+ General Terms: \ignorespaces #1}}
+\def\keywords#1{\setbox\@keywords=\vbox{\everypar{}
+ \footnotesize \hsize 30pc \parindent 0pt \noindent 
+ Additional Key Words and Phrases: \ignorespaces #1}
+}
+
+\def\category#1#2#3{\@ifnextchar
+ [{\@category{#1}{#2}{#3}}{\@xcategory{#1}{#2}{#3}}}
+\def\@category#1#2#3[#4]{\edef\@tempa{\ifx \@categories\@empty 
+ \else ; \fi}{\def\protect{\noexpand\protect
+ \noexpand}\def\and{\noexpand\and}\xdef\@categories{\@categories\@tempa #1
+[{\bf #2}]: 
+ #3\kern\z@---\hskip\z@{\it #4}}}}
+\def\@xcategory#1#2#3{\edef\@tempa{\ifx \@categories\@empty \else ;
+\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
+ \and}\xdef\@categories{\@categories\@tempa #1 [{\bf #2}]: #3}}}
+\def\@categories{}
+\def\bottomstuff{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 10pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endbottomstuff{\permission\end{figure}\gdef\permission{}}
+
+\newenvironment{ackslike}[1]
+  {\par \footnotesize 
+   \@ucheadfalse
+   \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}*
+   {\uppercase{#1}}\par\normalsize
+   \pdfbookmark{Acknowledgments}{Ack}
+        }
+  {\par}
+\newenvironment{acks}{\begin{ackslike}{ACKNOWLEDGMENTS}}{\end{ackslike}}
+
+\def\received{\par\footnotesize\addvspace{18pt plus 0pt minus
+4pt}\parindent\z@}
+%the line below replaced by the line that follows (K.R. Apt, July 11, 2000
+%\def\endreceived{\label{@lastpg}\hskip-2pt\par}
+\def\endreceived{\label{@lastpg}\hskip-2pt\par\normalsize}
+
+\mark{{}{}} 
+
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\hfill \small\sf \rightmark\hskip
+19pt{\Large$\cdot$}\hskip 17pt\mypage}
+\def\@oddfoot{\hbox{}\hfill\tiny\@runningfoot}
+\def\@evenhead{\small\sf\mypage \hskip 17pt{\Large$\cdot$}\hskip 19pt\leftmark\hfill \hbox{}}
+\def\@evenfoot{\tiny\@runningfoot\hfill\hbox{}}
+\def\sectionmark##1{}\def\subsectionmark##1{}}
+\def\@runningfoot{}
+\def\runningfoot{\def\@runningfoot{\@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear.}}
+\def\@firstfoot{}
+\def\firstfoot{\def\@firstfoot{\@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear, Pages \pages.}}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+\def\@oddhead{}\def\@oddfoot{\hbox{}\hfill
+\tiny\@firstfoot}\def\@evenhead{}\def\@evenfoot{\tiny\@firstfoot\hfill\hbox{}}}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}
+\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum 
+ \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil 
+ \or \hfil$\relax\displaystyle\@sharp$\fi}}
+\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz
+ \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray}
+\def\endmarray{\crcr\egroup\egroup}
+
+
+\ps@myheadings \pagenumbering{arabic} \onecolumn 
+
+%-----------------------BIBLIOGRAPHY STUFF-------------------------
+% this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
+% 
+%%%     filename        = "chicago.sty",
+%%%     version         = "4",  % MODIFIED!
+%%%     date            = "31 August 1992",
+%%%     time            = "09:42:44 199",
+%%%     author          = "Glenn Paulley",
+%%%     address         = "Data Structuring Group
+%%%                        Department of Computer Science
+%%%                        University of Waterloo
+%%%                        Waterloo, Ontario, Canada
+%%%                        N2L 3G1",
+%%%     telephone       = "(519) 885-1211",
+%%%     FAX             = "(519) 885-1208",
+%%%     email           = "gnpaulle@bluebox.uwaterloo.ca",
+
+%%% ====================================================================
+%
+% this file: Modification of chicago.sty for new ACM bibliography
+% style, which is similar (but not identical) to the ``Chicago'' style.
+%
+% chicago.sty: Style file for use with bibtex style chicago.bst, for
+% bibliographies formatted according to the 13th Edition of the Chicago
+% Manual of Style.
+%
+% 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+% newapa.sty formed the basis of this style, chicago.sty. Author-date
+% references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
+% supports annotations.
+%
+% Version 4 (August, 1992):
+% - fixed chicago.bst and chicagoa.bst to handle long author lists in
+%   sorting
+% - fixed chicago.bst and chicagoa.bst so that missing page numbers in
+%   ``article'' entries are handled correctly
+% - modified chicago.sty to format entries with 2nd and subsequent lines
+%   indented.
+%
+%   Citation format: (author-last-name year)
+%             (author-last-name and author-last-name year)
+%             (author-last-name et al. year)
+%             (author-last-name)
+%             author-last-name
+%             author-last-name (year)
+%             (author-last-name and author-last-name)
+%             (author-last-name et al.)
+%             (year) or (year,year)
+%             year or year,year
+%
+%   Reference list ordering: alphabetical by author or whatever passes
+%    for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+%    year-only citations.  This is done by having the citations
+%    actually look like
+%
+%    \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+%     \let\@internalcite\cite
+%     \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+%     \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+%     \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+%     \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+%     \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+%
+% -------------------------------------------------------------------------
+%
+% Citation macros.
+%
+\let\@internalcite\cite
+
+\def\cite{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+    \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeXNP#1#2{%
+  \def\@cite@label{#2}%
+  \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+  \def\citeauthoryear##1##2##3{\@cite@label}\@internalcite{#1}}
+% \def\@citeseppen{-1000}%
+%    \def\@cite@label{#1}
+%    \def\@cite##1##2{\if@tempswa ##2\fi}%
+%    \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeNP{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+    \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeN{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
+    \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
+\def\shortcite#1{\citeyear{#1}}
+\def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
+\def\citeNS#1{\citeANP{#1} \citeyear{#1}}
+\def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
+%testing year,year
+\def\citeNN{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+    \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+\def\citeA{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+    \def\citeauthoryear##1##2##3{##2}\@internalcite}
+\def\citeANP{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+    \def\citeauthoryear##1##2##3{##2}\@internalcite}
+
+\def\citeyear{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+    \def\citeauthoryear##1##2##3{##3}\@citedata}
+\def\citeyearNP{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+    \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+%
+% \@citedata and \@citedatax:
+%
+% Place commas in-between citations in the same \citeyear, \citeyearNP,
+% or \citeN command.
+% Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
+%
+\def\@citedata{%
+        \@ifnextchar [{\@tempswatrue\@citedatax}%
+                                  {\@tempswafalse\@citedatax[]}%
+}
+
+\def\@citedatax[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+  \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+    {\@citea\def\@citea{; }\@ifundefined% by Young
+       {b@\@citeb}{{\bf ?}%
+       \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% don't box citations, separate with ; and a space
+% also, make the penalty between citations negative: a good place to break.
+%
+\def\@citex[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+  \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+    {\@citea\def\@citea{; }\@ifundefined% by Young
+       {b@\@citeb}{{\bf ?}%
+       \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% (from apalike.sty)
+% No labels in the bibliography.
+%
+\def\@biblabel#1{}
+
+% (from apalike.sty)
+% Set length of hanging indentation for bibliography entries.
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{2em}
+
+% Indent second and subsequent lines of bibliographic entries. Stolen
+% from openbib.sty: \newblock is set to {}.
+
+\newdimen\bibindent
+\bibindent=1em
+\@ifundefined{refname}%
+   {\@ifundefined{chapter}%
+     {\newcommand{\refname}{\footnotesize REFERENCES}}%
+     {\newcommand{\refname}{\footnotesize BIBLIOGRAPHY}}%
+   }%
+   {}%
+\@ifundefined{chapter}%
+ {\def\thebibliography#1{\footnotesize \section*{\refname\@mkboth 
+   {\uppercase{\refname}}{\uppercase{\refname}}}\list
+   {[\arabic{enumi}]}{
+   \settowidth\labelwidth{[#1]}
+   \leftmargin\labelwidth
+   \advance\leftmargin\labelsep
+   \advance\leftmargin\bibindent
+   \itemindent -\bibindent
+   \listparindent \itemindent
+   \parsep \z@
+   \usecounter{enumi}}
+   \def\newblock{}
+   \sloppy
+   \sfcode`\.=1000\relax}}
+ {\def\thebibliography#1{\footnotesize \chapter*{\refname\@mkboth 
+   {\uppercase{\refname}}{\uppercase{\refname}}}\list
+   {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}
+   \leftmargin\labelwidth
+   \advance\leftmargin\labelsep
+   \advance\leftmargin\bibindent
+   \itemindent -\bibindent
+   \listparindent \itemindent
+   \parsep \z@
+   \usecounter{enumi}}
+   \def\newblock{}
+   \sloppy
+   \sfcode`\.=1000\relax}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% fixes to acm trans macro package
+% 31-JAN-1996
+% John Tang Boyland
+
+% newdef need to take the optional parameters of newtheorem
+\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}}
+\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}}
+\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}}
+\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}}
+\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}}
+% and now fix up definition, to change body to use roman font:
+\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}}
+%changed by K.R. Apt on Sep. 27, 2000. It was: \def\@xstartdef#1[#2]{\begin{italic@#1}[#2]\rm}
+\def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm}
+\def\@ystartdef#1{\begin{italic@#1}\rm}
+
+% footers produced too small (vpt), when ACM typsets them at 7.5pt (!).
+% A better compromise is viipt.
+\def\@oddfoot{\hbox{}\hfill\scriptsize\@runningfoot}
+\def\@evenfoot{\scriptsize\@runningfoot\hfill\hbox{}}
+
+% first footer was set to (vpt), when ACM typesets them at 6.5pt (!).
+% A better compromise is vipt.
+\def\firstfootsize{\@setsize\firstfootsize{7pt}\vipt\@vipt}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+\def\@oddhead{}\def\@oddfoot{\hbox{}\hfill\firstfootsize\@firstfoot}%
+\def\@evenhead{}\def\@evenfoot{\firstfootsize\@firstfoot\hfill\hbox{}}}
+
+% new permission statement
+\long\def\permission{\par
+% linebreaks added to conform to the current style
+Permission to make digital/hard copy of all or part of this material without
+fee 
+for personal or classroom use
+provided that the copies are not made or distributed for profit
+or commercial advantage, the ACM copyright/server notice, the title of the
+publication, and its date appear, and notice is given that copying is by
+permission of the ACM, Inc.  To copy
+otherwise, to republish, to post on servers, or to redistribute to lists
+requires prior specific 
+permission and/or a fee.\par
+\copyright\ 20\@acmYear\ 
+ACM \@permissionCodeOne/\@acmYear/\@permissionCodeTwo-\@pageCode\$5.00 % aiellom
+}
+
+% make sure \permission doesn't get trashed
+\def\endbottomstuff{\permission\end{figure}}
+
+% alternate way of using citeyear
+%  \def\shortcite#1{\citeyear{#1}
+% enumerations and longenums are wrong
+% 1. the second line in a paragraph of an enumerations in theorems
+%  (or other trivlists) doesn't line up under the first
+% 1. the second line of a longenum doesn't properly wrap around
+%  back to the left margin.
+
+% the original definition of \@listI doesn't set labelwidth
+\def\@listI{\leftmargin\leftmargini
+ \labelwidth\leftmargini\advance\labelwidth-\labelsep
+ \parsep 0pt plus 1pt
+ \topsep 6pt plus 2pt minus 2pt
+ \itemsep 2pt plus 1pt minus .5pt}
+\let\@listi\@listI
+\@listi 
+
+% add set of \labelwidth and \itemindent
+\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne 
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\labelwidth\z@\leftmargin\z@
+ \itemindent\parindent \advance\itemindent\labelsep}\fi}
+
+% split electronic appendix into two parts:
+
+
+%aiellom{
+\def\appendixhead#1{\appendix
+\section*{ELECTRONIC APPENDIX}
+The electronic appendix for this article can be accessed in
+  the ACM Digital Library by visiting the following URL:$\;$ 
+  \url{http://www.acm.org/pubs/citations/journals/}{\tt \@journalNameShort /20\@acmYear-\@acmVolume-\@acmNumber/p\pageref{@firstpg}-#1}.
+% \quad \href{http://www.acm.org/tocl}{{\small http://www.acm.org/tocl} }
+}
+%aiellom}
+
+\long\def\elecappendix{
+\clearpage
+\makeatletter
+\pagenumbering{withappendix}
+\makeatother
+\appendix
+\par\noindent{\sc This document is the online-only appendix to:}\hfill \vskip 1em
+{\vbox{\Large\sf \parindent0pt\@title{}}}\vskip .5em
+\vbox{\sf \parindent0pt\@author{}}\vskip .5em\noindent
+\vskip 10pt\noindent
+{\firstfootsize 
+\@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear, Pages \pages.}
+\vskip 11pt\noindent
+\hrule height .2pt
+\par
+\bottomstuff
+\endbottomstuff
+}
+
+% provide for a single acknowledgment
+\def\ack{ \par \footnotesize 
+\@ucheadfalse
+\@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus 
+ -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize
+\pdfbookmark{Acknowledgment}{Ack}
+}
+\def\endack{\par}
+
+% provide both spellings of Acknowledgment(s)
+\let\acknowledgments\acks
+\let\endacknowledgments\endacks
+\let\acknowledgment\ack
+\let\endacknowledgment\endack
+
+\newcommand{\longpage}{\enlargethispage{\baselineskip}}
+\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
+
+
+% Don't indent bibliography and
+% override \refname (which sets fontsize):
+\def\thebibliography#1{
+  \footnotesize\section*{\footnotesize\sf{REFERENCES}\@mkboth
+  {\uppercase{\refname}}{\uppercase{\refname}}}%
+   \pdfbookmark{References}{Ref}
+   \list
+  {\@biblabel{\arabic{enumiv}}}{%
+   %\settowidth\labelwidth{[#1]}
+   \labelwidth 0pt
+   \leftmargin \bibindent
+   \labelsep 0pt
+   \if@hyperref
+     \itemindent -\bibindent
+   \fi
+   \listparindent -\bibindent
+   \labelsep -\bibindent
+    \usecounter{enumiv}%
+    \let\p@enumiv\@empty
+    \def\theenumiv{\arabic{enumiv}}}%
+    \def\newblock{\hskip .11em plus.33em minus.07em}%
+    \sloppy
+    \clubpenalty=4500
+    \widowpenalty=4500
+    \frenchspacing}
+\def\endthebibliography{%
+  \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+  \endlist}
+\def\@lbibitem[#1]#2{\item[]\if@filesw
+      {\def\protect##1{\string ##1\space}\immediate
+       \write\@auxout{\string\bibcite{#2}{#1}}}\fi\hskip-1em\ignorespaces}
+% Fix cite so it doesn't repeat author lists in citations:
+
+\def\cite{\def\@citeseppen{-1000}%
+    \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+    \let\@lastauthor=\@noauthor
+    \let\citeauthoryear=\citeauthoryear@no@repeats\@internalcite}
+    %\def\citeauthoryear##1##2##3{##2 ##3}\@internalcite
+
+\def\@noauthor={\relax}
+\let\@lastauthor=\@noauthor
+\let\@currauthor=\@noauthor
+
+\def\citeauthoryear@no@repeats#1#2#3{%
+  \def\@currauthor{\csname @author #1\endcsname}%
+  \ifx\@lastauthor\@currauthor{#3}\else{#2 #3}\fi%
+  \let\@lastauthor=\@currauthor}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+
+
+\if@hyperref
+   \let\pdfbookmark=\relax
+   \RequirePackage[pdfmark]{hyperref}
+\fi
+
+% \renewcommand{\thefootnote}{\arabic{footnote}\hspace{-3pt}}
+
+